1
0
mirror of https://github.com/PaperMC/Folia.git synced 2025-04-22 04:09:18 +08:00

Compare commits

...

3 Commits

Author SHA1 Message Date
M2ke4U
cdd63e77fe
Merge b5fafd61d1c959ff661c1ba89088506f222d1748 into 29867414449cede8010bac42dc9bf31dd21eb278 2025-04-04 07:58:35 +07:00
Spottedleaf
2986741444 Update Paper 2025-04-03 15:34:54 -07:00
MrHua269
b5fafd61d1 Fix incorrect player death check in AbstractContainerMenu 2025-02-11 13:51:11 +08:00
7 changed files with 49 additions and 38 deletions

@ -31,7 +31,7 @@ index 3c768d5ccf490e962d9638e92d4ea7c85670bad8..2dbc9fc268850c85e4e8d38da05586a0
+
}
diff --git a/src/main/java/org/bukkit/plugin/PluginDescriptionFile.java b/src/main/java/org/bukkit/plugin/PluginDescriptionFile.java
index 6dfd51996893ca82b11a540cc18234e0b504f7ba..ff313bf0374c318971860a26f1629f708a5fec26 100644
index 0324ec640d4dd6b1f6287fc2ce9e8a0b3b87d5bf..de5d5399e7f9cf56439ada32f3cc7df3a2e95ef4 100644
--- a/src/main/java/org/bukkit/plugin/PluginDescriptionFile.java
+++ b/src/main/java/org/bukkit/plugin/PluginDescriptionFile.java
@@ -267,6 +267,19 @@ public final class PluginDescriptionFile implements io.papermc.paper.plugin.conf

@ -5,10 +5,10 @@ Subject: [PATCH] Add TPS From Region
diff --git a/src/main/java/org/bukkit/Bukkit.java b/src/main/java/org/bukkit/Bukkit.java
index db47fe6560e1b0c737889698cf52c5c3fb06185f..8fa129f4ddac786fb14bb42fc2a88a9e50020537 100644
index 4eb723afaca049a816d16370b383fa37441eafd4..64694483664c5a7380b1ce7846f2eef59004762f 100644
--- a/src/main/java/org/bukkit/Bukkit.java
+++ b/src/main/java/org/bukkit/Bukkit.java
@@ -2982,6 +2982,42 @@ public final class Bukkit {
@@ -2980,6 +2980,42 @@ public final class Bukkit {
return server.isGlobalTickThread();
}
// Paper end - Folia region threading API
@ -52,10 +52,10 @@ index db47fe6560e1b0c737889698cf52c5c3fb06185f..8fa129f4ddac786fb14bb42fc2a88a9e
/**
* @deprecated All methods on this class have been deprecated, see the individual methods for replacements.
diff --git a/src/main/java/org/bukkit/Server.java b/src/main/java/org/bukkit/Server.java
index 2eb72a31cc36a41694654da15be5a1f4983aa1bd..4830b0e31c970cbd336f4a5296284f5e9c4a94d8 100644
index 0c1f3053ecb415a6dfbbe283bae8c1f6d8477e9c..a0922805fbee8e064a74115fbf93e9e8a98772cb 100644
--- a/src/main/java/org/bukkit/Server.java
+++ b/src/main/java/org/bukkit/Server.java
@@ -2696,4 +2696,34 @@ public interface Server extends PluginMessageRecipient, net.kyori.adventure.audi
@@ -2698,4 +2698,34 @@ public interface Server extends PluginMessageRecipient, net.kyori.adventure.audi
*/
void allowPausing(@NotNull org.bukkit.plugin.Plugin plugin, boolean value);
// Paper end - API to check if the server is sleeping

@ -12928,7 +12928,7 @@ index 7fa41dea184b01891f45d8e404bc1cba19cf1bcf..43de96cc3c2b1259b1edb5feae3f202d
public boolean isOldChunkAround(ChunkPos pos, int radius) {
diff --git a/net/minecraft/server/network/ServerCommonPacketListenerImpl.java b/net/minecraft/server/network/ServerCommonPacketListenerImpl.java
index e71c1a564e5d4ac43460f89879ff709ee685706f..6eca15223b92aedac74233db886e2c1248750e2c 100644
index af75f1ca60dc01045f27cb550ac9e3deacf1a1cf..79fe336adf35f4f007461ed050e6301764fe7fc3 100644
--- a/net/minecraft/server/network/ServerCommonPacketListenerImpl.java
+++ b/net/minecraft/server/network/ServerCommonPacketListenerImpl.java
@@ -96,6 +96,10 @@ public abstract class ServerCommonPacketListenerImpl implements ServerCommonPack
@ -12961,7 +12961,7 @@ index e71c1a564e5d4ac43460f89879ff709ee685706f..6eca15223b92aedac74233db886e2c12
}
@Override
@@ -330,24 +342,8 @@ public abstract class ServerCommonPacketListenerImpl implements ServerCommonPack
@@ -334,24 +346,8 @@ public abstract class ServerCommonPacketListenerImpl implements ServerCommonPack
if (this.processedDisconnect) {
return;
}
@ -12988,7 +12988,7 @@ index e71c1a564e5d4ac43460f89879ff709ee685706f..6eca15223b92aedac74233db886e2c12
return;
}
@@ -378,7 +374,7 @@ public abstract class ServerCommonPacketListenerImpl implements ServerCommonPack
@@ -382,7 +378,7 @@ public abstract class ServerCommonPacketListenerImpl implements ServerCommonPack
this.onDisconnect(disconnectionDetails, leaveMessage); // CraftBukkit - fire quit instantly // Paper - use kick event leave message
this.connection.setReadOnly();
// CraftBukkit - Don't wait
@ -12997,7 +12997,7 @@ index e71c1a564e5d4ac43460f89879ff709ee685706f..6eca15223b92aedac74233db886e2c12
}
// Paper start - add proper async disconnect
@@ -391,19 +387,7 @@ public abstract class ServerCommonPacketListenerImpl implements ServerCommonPack
@@ -395,19 +391,7 @@ public abstract class ServerCommonPacketListenerImpl implements ServerCommonPack
}
public void disconnectAsync(DisconnectionDetails disconnectionInfo, org.bukkit.event.player.PlayerKickEvent.Cause cause) {
@ -13121,7 +13121,7 @@ index bd07e6a5aa1883786d789ea71711a0c0c0a95c26..09469ad131622158fe5579216fc41642
}
// Spigot end
diff --git a/net/minecraft/server/network/ServerGamePacketListenerImpl.java b/net/minecraft/server/network/ServerGamePacketListenerImpl.java
index b4a284a0617167fd12e9d9414b17f86c169ba563..3977d5b52c4473ed04019f8e93d7dbf084070a97 100644
index 876d207996724727ca26b139af759eab2e6f4131..a107d9ee24d0e39ce3e3e09bf27af1ea4ae35b96 100644
--- a/net/minecraft/server/network/ServerGamePacketListenerImpl.java
+++ b/net/minecraft/server/network/ServerGamePacketListenerImpl.java
@@ -292,10 +292,10 @@ public class ServerGamePacketListenerImpl
@ -13430,7 +13430,7 @@ index b4a284a0617167fd12e9d9414b17f86c169ba563..3977d5b52c4473ed04019f8e93d7dbf0
final String conversationInput = rawMessage;
this.server.processQueue.add(() -> ServerGamePacketListenerImpl.this.getCraftPlayer().acceptConversationInput(conversationInput));
} else if (this.player.getChatVisibility() == ChatVisiblity.SYSTEM) { // Re-add "Command Only" flag check
@@ -2718,8 +2774,25 @@ public class ServerGamePacketListenerImpl
@@ -2720,8 +2776,25 @@ public class ServerGamePacketListenerImpl
// Spigot end
public void switchToConfig() {
@ -13457,7 +13457,7 @@ index b4a284a0617167fd12e9d9414b17f86c169ba563..3977d5b52c4473ed04019f8e93d7dbf0
this.send(ClientboundStartConfigurationPacket.INSTANCE);
this.connection.setupOutboundProtocol(ConfigurationProtocols.CLIENTBOUND);
}
@@ -2744,7 +2817,7 @@ public class ServerGamePacketListenerImpl
@@ -2746,7 +2819,7 @@ public class ServerGamePacketListenerImpl
// Spigot end
this.player.resetLastActionTime();
this.player.setShiftKeyDown(packet.isUsingSecondaryAction());
@ -13466,7 +13466,7 @@ index b4a284a0617167fd12e9d9414b17f86c169ba563..3977d5b52c4473ed04019f8e93d7dbf0
if (!serverLevel.getWorldBorder().isWithinBounds(target.blockPosition())) {
return;
}
@@ -2877,6 +2950,12 @@ public class ServerGamePacketListenerImpl
@@ -2879,6 +2952,12 @@ public class ServerGamePacketListenerImpl
switch (action) {
case PERFORM_RESPAWN:
if (this.player.wonGame) {
@ -13479,7 +13479,7 @@ index b4a284a0617167fd12e9d9414b17f86c169ba563..3977d5b52c4473ed04019f8e93d7dbf0
this.player.wonGame = false;
this.player = this.server.getPlayerList().respawn(this.player, true, Entity.RemovalReason.CHANGED_DIMENSION, RespawnReason.END_PORTAL); // CraftBukkit
this.resetPosition();
@@ -2886,6 +2965,17 @@ public class ServerGamePacketListenerImpl
@@ -2888,6 +2967,17 @@ public class ServerGamePacketListenerImpl
return;
}
@ -13497,7 +13497,7 @@ index b4a284a0617167fd12e9d9414b17f86c169ba563..3977d5b52c4473ed04019f8e93d7dbf0
this.player = this.server.getPlayerList().respawn(this.player, false, Entity.RemovalReason.KILLED, RespawnReason.DEATH); // CraftBukkit
this.resetPosition();
if (this.server.isHardcore()) {
@@ -3462,7 +3552,21 @@ public class ServerGamePacketListenerImpl
@@ -3464,7 +3554,21 @@ public class ServerGamePacketListenerImpl
}
List<String> list = Stream.of(lines).map(ChatFormatting::stripFormatting).collect(Collectors.toList());
// Paper end - Limit client sign length
@ -16327,7 +16327,7 @@ index 9a99b813de8b606fab26c87086a21372e5172ba3..4eeb1017576d23d206a7a47b9e9e74b1
this.igniteForSeconds(1.0F);
}
diff --git a/net/minecraft/world/entity/projectile/FireworkRocketEntity.java b/net/minecraft/world/entity/projectile/FireworkRocketEntity.java
index 774ca9e0b56fd175ae246051de762d0c4256ca58..0cfd2c937f93f1acb4afc01251f882710baf2591 100644
index c7ae41b2cbc1eb85a6eb9c16813bd326fb8f49f0..74d600367b0ddba693dcf5afd29a8da1cc202de5 100644
--- a/net/minecraft/world/entity/projectile/FireworkRocketEntity.java
+++ b/net/minecraft/world/entity/projectile/FireworkRocketEntity.java
@@ -130,6 +130,11 @@ public class FireworkRocketEntity extends Projectile implements ItemSupplier {

@ -0,0 +1,11 @@
--- a/net/minecraft/world/inventory/AbstractContainerMenu.java
+++ b/net/minecraft/world/inventory/AbstractContainerMenu.java
@@ -679,7 +_,7 @@
}
private static void dropOrPlaceInInventory(Player player, ItemStack stack) {
- boolean flag = player.isRemoved() && player.getRemovalReason() != Entity.RemovalReason.CHANGED_DIMENSION;
+ boolean flag = !player.isAlive(); // player.isRemoved() && player.getRemovalReason() != Entity.RemovalReason.CHANGED_DIMENSION; // Folia - region threading
boolean flag1 = player instanceof ServerPlayer serverPlayer && serverPlayer.hasDisconnected();
if (flag || flag1) {
player.drop(stack, false);

@ -413,10 +413,10 @@ index bd68139ae635f2ad7ec8e7a21e0056a139c4c62e..48a43341b17247355a531164019d5cc9
}
diff --git a/src/main/java/io/papermc/paper/configuration/GlobalConfiguration.java b/src/main/java/io/papermc/paper/configuration/GlobalConfiguration.java
index e3a7e6937122413bff911fe1188e3bb0297f6ffa..7f4d1637ae8b7730013cf0901cf7882a5a238e63 100644
index 8b70a8e9b0aacbe7964b0441b5bbbaab228962d8..610abaee663b7573a56c0a0a6dd4ab9c0224b173 100644
--- a/src/main/java/io/papermc/paper/configuration/GlobalConfiguration.java
+++ b/src/main/java/io/papermc/paper/configuration/GlobalConfiguration.java
@@ -402,4 +402,17 @@ public class GlobalConfiguration extends ConfigurationPart {
@@ -403,4 +403,17 @@ public class GlobalConfiguration extends ConfigurationPart {
}
}
}
@ -809,7 +809,7 @@ index a4ac34ebb58a404f4fca7e763e61d4ab05ee3af4..4dcec640f5870d713bd3b98389a45dbe
return new BlockPos(loc.getBlockX(), loc.getBlockY(), loc.getBlockZ());
}
diff --git a/src/main/java/org/bukkit/craftbukkit/CraftServer.java b/src/main/java/org/bukkit/craftbukkit/CraftServer.java
index 99beb7ec6e1864426492f4e27e650ab97ce6d4b5..afe2b5a99d831ddc39fe76d19a2a6cea91fb8ee9 100644
index dfce118ec8b91eae219855a0b01392ef20b7d50c..65d3ce8e2d772f00be6bd652866f7ca4f258e26f 100644
--- a/src/main/java/org/bukkit/craftbukkit/CraftServer.java
+++ b/src/main/java/org/bukkit/craftbukkit/CraftServer.java
@@ -317,7 +317,7 @@ public final class CraftServer implements Server {
@ -903,7 +903,7 @@ index 99beb7ec6e1864426492f4e27e650ab97ce6d4b5..afe2b5a99d831ddc39fe76d19a2a6cea
//Preconditions.checkState(!this.console.isIteratingOverLevels, "Cannot unload a world while worlds are being ticked"); // Paper - Cat - Temp disable. We'll see how this goes.
if (world == null) {
return false;
@@ -3085,11 +3124,27 @@ public final class CraftServer implements Server {
@@ -3080,11 +3119,27 @@ public final class CraftServer implements Server {
@Override
public double[] getTPS() {
@ -934,7 +934,7 @@ index 99beb7ec6e1864426492f4e27e650ab97ce6d4b5..afe2b5a99d831ddc39fe76d19a2a6cea
}
// Paper start - adventure sounds
@@ -3260,7 +3315,7 @@ public final class CraftServer implements Server {
@@ -3255,7 +3310,7 @@ public final class CraftServer implements Server {
@Override
public int getCurrentTick() {
@ -944,7 +944,7 @@ index 99beb7ec6e1864426492f4e27e650ab97ce6d4b5..afe2b5a99d831ddc39fe76d19a2a6cea
@Override
diff --git a/src/main/java/org/bukkit/craftbukkit/CraftWorld.java b/src/main/java/org/bukkit/craftbukkit/CraftWorld.java
index 1439d282167dc8a2e66f4896849153b810112988..82d26889661a944e057be0c450fb5a296122ea8e 100644
index a92e0877669a92851c6d7f83de75ffb087c8e651..cd6e46fa68c009deb8dfebcecb88e058dfede0b0 100644
--- a/src/main/java/org/bukkit/craftbukkit/CraftWorld.java
+++ b/src/main/java/org/bukkit/craftbukkit/CraftWorld.java
@@ -227,7 +227,7 @@ public class CraftWorld extends CraftRegionAccessor implements World {
@ -3212,10 +3212,10 @@ index 9b6ff0f64966c78a3233860bb0840182b52f01bc..fb34651a9e4ed0cb05721d15524a26f8
}
diff --git a/src/main/java/org/bukkit/craftbukkit/entity/CraftHumanEntity.java b/src/main/java/org/bukkit/craftbukkit/entity/CraftHumanEntity.java
index a396157548a5b3c3e86206c35789bb40346c701c..6e0290c3bce61465f1938263617ae1c90082852d 100644
index ba3b2a60d0ec088e312fc76e31a757a0495a0043..d91f66eb50dd84fbbf2e3b7a4f7cb50885d92acf 100644
--- a/src/main/java/org/bukkit/craftbukkit/entity/CraftHumanEntity.java
+++ b/src/main/java/org/bukkit/craftbukkit/entity/CraftHumanEntity.java
@@ -306,8 +306,16 @@ public class CraftHumanEntity extends CraftLivingEntity implements HumanEntity {
@@ -309,8 +309,16 @@ public class CraftHumanEntity extends CraftLivingEntity implements HumanEntity {
this.mode = mode;
}
@ -4026,10 +4026,10 @@ index 2638c341bc02f201f7ab17fdebcdbdf3a7ec05bf..074b2919be2b5544b0a46e6cd32f6c57
}
diff --git a/src/main/java/org/bukkit/craftbukkit/entity/CraftPlayer.java b/src/main/java/org/bukkit/craftbukkit/entity/CraftPlayer.java
index 5050f446e75f0ec17daf994ed74cbcd3155664c1..71cb264e399d098f9e40c71258f1412aa0dbafc5 100644
index cc4b2061ae9cbd5a30b297be477cde703203b3f5..ac878520dc4aaa0e6a1ce8de0982d60a8397bc15 100644
--- a/src/main/java/org/bukkit/craftbukkit/entity/CraftPlayer.java
+++ b/src/main/java/org/bukkit/craftbukkit/entity/CraftPlayer.java
@@ -675,7 +675,7 @@ public class CraftPlayer extends CraftHumanEntity implements Player {
@@ -670,7 +670,7 @@ public class CraftPlayer extends CraftHumanEntity implements Player {
@Override
public void kickPlayer(String message) {
@ -4038,7 +4038,7 @@ index 5050f446e75f0ec17daf994ed74cbcd3155664c1..71cb264e399d098f9e40c71258f1412a
this.getHandle().transferCookieConnection.kickPlayer(CraftChatMessage.fromStringOrEmpty(message, true), org.bukkit.event.player.PlayerKickEvent.Cause.PLUGIN); // Paper - kick event cause
}
@@ -693,7 +693,7 @@ public class CraftPlayer extends CraftHumanEntity implements Player {
@@ -688,7 +688,7 @@ public class CraftPlayer extends CraftHumanEntity implements Player {
@Override
public void kick(net.kyori.adventure.text.Component message, org.bukkit.event.player.PlayerKickEvent.Cause cause) {
@ -4047,7 +4047,7 @@ index 5050f446e75f0ec17daf994ed74cbcd3155664c1..71cb264e399d098f9e40c71258f1412a
final ServerGamePacketListenerImpl connection = this.getHandle().connection;
if (connection != null) {
connection.disconnect(message == null ? net.kyori.adventure.text.Component.empty() : message, cause);
@@ -1413,6 +1413,11 @@ public class CraftPlayer extends CraftHumanEntity implements Player {
@@ -1408,6 +1408,11 @@ public class CraftPlayer extends CraftHumanEntity implements Player {
@Override
public boolean teleport(Location location, org.bukkit.event.player.PlayerTeleportEvent.TeleportCause cause, io.papermc.paper.entity.TeleportFlag... flags) {
@ -4059,7 +4059,7 @@ index 5050f446e75f0ec17daf994ed74cbcd3155664c1..71cb264e399d098f9e40c71258f1412a
Set<io.papermc.paper.entity.TeleportFlag.Relative> relativeArguments;
Set<io.papermc.paper.entity.TeleportFlag> allFlags;
if (flags.length == 0) {
@@ -2077,7 +2082,7 @@ public class CraftPlayer extends CraftHumanEntity implements Player {
@@ -2072,7 +2077,7 @@ public class CraftPlayer extends CraftHumanEntity implements Player {
private void unregisterEntity(Entity other) {
// Paper end
ChunkMap tracker = ((ServerLevel) this.getHandle().level()).getChunkSource().chunkMap;
@ -4068,7 +4068,7 @@ index 5050f446e75f0ec17daf994ed74cbcd3155664c1..71cb264e399d098f9e40c71258f1412a
if (entry != null) {
entry.removePlayer(this.getHandle());
}
@@ -2174,7 +2179,7 @@ public class CraftPlayer extends CraftHumanEntity implements Player {
@@ -2169,7 +2174,7 @@ public class CraftPlayer extends CraftHumanEntity implements Player {
if (original != null) otherPlayer.setUUID(original); // Paper - uuid override
}
@ -4077,7 +4077,7 @@ index 5050f446e75f0ec17daf994ed74cbcd3155664c1..71cb264e399d098f9e40c71258f1412a
if (entry != null && !entry.seenBy.contains(this.getHandle().connection)) {
entry.updatePlayer(this.getHandle());
}
@@ -2323,9 +2328,16 @@ public class CraftPlayer extends CraftHumanEntity implements Player {
@@ -2318,9 +2323,16 @@ public class CraftPlayer extends CraftHumanEntity implements Player {
return this;
}
@ -4095,7 +4095,7 @@ index 5050f446e75f0ec17daf994ed74cbcd3155664c1..71cb264e399d098f9e40c71258f1412a
}
public void setHandle(final ServerPlayer entity) {
@@ -3354,7 +3366,7 @@ public class CraftPlayer extends CraftHumanEntity implements Player {
@@ -3349,7 +3361,7 @@ public class CraftPlayer extends CraftHumanEntity implements Player {
{
if ( CraftPlayer.this.getHealth() <= 0 && CraftPlayer.this.isOnline() )
{
@ -5127,7 +5127,7 @@ index dfc2b40e20069705f92d86a6898e3e8348bf4dcd..9e158d32dc13f8890511de1496d9d5b4
}
diff --git a/src/main/java/org/bukkit/craftbukkit/event/CraftEventFactory.java b/src/main/java/org/bukkit/craftbukkit/event/CraftEventFactory.java
index 57c3f8531bf85b53af3a4aad6e9e369d5cff0ce3..b1504bc0f06f930669a8d0787eb420416f7c2671 100644
index bbf44c44c6c3fc4cabad1453ab7aba9ac7ecb1e5..bef7a026676ab59a84fc33c8af50ad2b9447fd8c 100644
--- a/src/main/java/org/bukkit/craftbukkit/event/CraftEventFactory.java
+++ b/src/main/java/org/bukkit/craftbukkit/event/CraftEventFactory.java
@@ -951,7 +951,7 @@ public class CraftEventFactory {
@ -5148,7 +5148,7 @@ index 57c3f8531bf85b53af3a4aad6e9e369d5cff0ce3..b1504bc0f06f930669a8d0787eb42041
Bukkit.getPluginManager().callEvent(event);
if (!event.isCancelled()) {
@@ -2232,7 +2232,7 @@ public class CraftEventFactory {
@@ -2235,7 +2235,7 @@ public class CraftEventFactory {
CraftItemStack craftItem = CraftItemStack.asCraftMirror(itemStack.copyWithCount(1));
org.bukkit.event.block.BlockDispenseEvent event = new org.bukkit.event.block.BlockDispenseEvent(bukkitBlock, craftItem.clone(), CraftVector.toBukkit(to));
@ -5278,7 +5278,7 @@ index 1b60abf5f5951288f6d54f522621472673eada6e..4ea06cb7a9e9db0d7feb0981de900153
return true;
diff --git a/src/main/java/org/spigotmc/SpigotConfig.java b/src/main/java/org/spigotmc/SpigotConfig.java
index e0d4222a99f22d7130d95cf29b034a98f2f3b76e..48432a7c9df33bae8aa72991843ed61545c64814 100644
index d1351ed25c4de3e4989a47a793047b0614e8d0b2..96c33cf170e6aea8d379f4a46e3004bcc4ff74a8 100644
--- a/src/main/java/org/spigotmc/SpigotConfig.java
+++ b/src/main/java/org/spigotmc/SpigotConfig.java
@@ -182,7 +182,7 @@ public class SpigotConfig {

@ -5,10 +5,10 @@ Subject: [PATCH] Add TPS From Region
diff --git a/src/main/java/org/bukkit/craftbukkit/CraftServer.java b/src/main/java/org/bukkit/craftbukkit/CraftServer.java
index afe2b5a99d831ddc39fe76d19a2a6cea91fb8ee9..6c2d9c9621f665412f1a8ccc41083fb0e3a07ed5 100644
index 65d3ce8e2d772f00be6bd652866f7ca4f258e26f..ae7ee8c67a71b0bc319d8079094b1806fc3e305a 100644
--- a/src/main/java/org/bukkit/craftbukkit/CraftServer.java
+++ b/src/main/java/org/bukkit/craftbukkit/CraftServer.java
@@ -3351,4 +3351,68 @@ public final class CraftServer implements Server {
@@ -3346,4 +3346,68 @@ public final class CraftServer implements Server {
this.console.addPluginAllowingSleep(plugin.getName(), value);
}
// Paper end - API to check if the server is sleeping

@ -2,7 +2,7 @@ group=dev.folia
version=1.21.4-R0.1-SNAPSHOT
mcVersion=1.21.4
paperRef=bb1beda67bfd94632815acc8ac5d68f5a8e3e410
paperRef=9b1798d6438107fdf0d5939b79a8cf71f4d16e2c
org.gradle.configuration-cache=true
org.gradle.caching=true