diff --git a/gradle.properties b/gradle.properties index 201de0c72..e920c1362 100644 --- a/gradle.properties +++ b/gradle.properties @@ -2,7 +2,7 @@ group = cn.dreeam.leaf mcVersion = 1.21 version = 1.21-R0.1-SNAPSHOT -galeCommit = 00bcf2aa629587082823da93ca8c446a6112aa30 +galeCommit = a8aff53ed53fbbb183c120bc60aa085c80f00b83 org.gradle.caching = true org.gradle.parallel = true diff --git a/patches/api/0004-Purpur-API-Changes.patch b/patches/api/0004-Purpur-API-Changes.patch index 9e303453a..613c933e6 100644 --- a/patches/api/0004-Purpur-API-Changes.patch +++ b/patches/api/0004-Purpur-API-Changes.patch @@ -6,7 +6,7 @@ Subject: [PATCH] Purpur API Changes Original license: MIT Original project: https://github.com/PurpurMC/Purpur -Commit: b3623faa771db37a2a5f8b58b28d1782c3a22ee0 +Commit: 930003b1d1826c083f3cee4db79621e6a7d726f1 Patches below are removed in this patch: Pufferfish-API-Changes.patch diff --git a/patches/generated-api/0001-Purpur-generated-api-Changes.patch b/patches/generated-api/0001-Purpur-generated-api-Changes.patch index a100dd5b9..385f74980 100644 --- a/patches/generated-api/0001-Purpur-generated-api-Changes.patch +++ b/patches/generated-api/0001-Purpur-generated-api-Changes.patch @@ -6,7 +6,7 @@ Subject: [PATCH] Purpur generated-api Changes Original license: MIT Original project: https://github.com/PurpurMC/Purpur -Commit: b3623faa771db37a2a5f8b58b28d1782c3a22ee0 +Commit: 930003b1d1826c083f3cee4db79621e6a7d726f1 diff --git a/com/destroystokyo/paper/entity/ai/VanillaGoal.java b/com/destroystokyo/paper/entity/ai/VanillaGoal.java index 3add91218dd3f07052aa932f0503d1f10ac3799b..3e41a4141095bce989c75e989293deb3f47e8e6d 100644 diff --git a/patches/server/0011-Purpur-Server-Changes.patch b/patches/server/0011-Purpur-Server-Changes.patch index 76c83ddb6..6f4fea5a6 100644 --- a/patches/server/0011-Purpur-Server-Changes.patch +++ b/patches/server/0011-Purpur-Server-Changes.patch @@ -8,7 +8,7 @@ TODO - Dreeam: Check Fix-pufferfish-issues.patch Original license: MIT Original project: https://github.com/PurpurMC/Purpur -Commit: b3623faa771db37a2a5f8b58b28d1782c3a22ee0 +Commit: 930003b1d1826c083f3cee4db79621e6a7d726f1 Patches below are removed in this patch: Brand changes in Rebrand.patch @@ -970,7 +970,7 @@ index c80be65d190c85e7f0ea8233ebbbdbc1ea67f276..97e793c971614299504605aeb4f99cad public ServerEntity(ServerLevel worldserver, Entity entity, int i, boolean flag, Consumer> consumer, Set trackedPlayers) { this.trackedPlayers = trackedPlayers; diff --git a/src/main/java/net/minecraft/server/level/ServerLevel.java b/src/main/java/net/minecraft/server/level/ServerLevel.java -index d0b8099b8ce299c44bbde9b8dd34ccd9312579e8..3a816a31b9f3ecb02291b8be897db828502eab84 100644 +index 21a910e69bf7b10d11a93793a6854198cc77c4c9..3a0315edfafd18b995b6b614b3b20f17777c4575 100644 --- a/src/main/java/net/minecraft/server/level/ServerLevel.java +++ b/src/main/java/net/minecraft/server/level/ServerLevel.java @@ -220,6 +220,8 @@ public class ServerLevel extends Level implements WorldGenLevel, ca.spottedleaf. @@ -1155,7 +1155,7 @@ index d0b8099b8ce299c44bbde9b8dd34ccd9312579e8..3a816a31b9f3ecb02291b8be897db828 } // Paper end - Fix merchant inventory not closing on entity removal diff --git a/src/main/java/net/minecraft/server/level/ServerPlayer.java b/src/main/java/net/minecraft/server/level/ServerPlayer.java -index 0d92a3918e35217bba6aea00dce05ce386415f65..1d0044693dafce42921af0a44175b164d7321114 100644 +index 0d92a3918e35217bba6aea00dce05ce386415f65..690c3347ff228f7d8e5134221f9a96d7f11cb418 100644 --- a/src/main/java/net/minecraft/server/level/ServerPlayer.java +++ b/src/main/java/net/minecraft/server/level/ServerPlayer.java @@ -303,6 +303,10 @@ public class ServerPlayer extends net.minecraft.world.entity.player.Player imple @@ -1234,7 +1234,7 @@ index 0d92a3918e35217bba6aea00dce05ce386415f65..1d0044693dafce42921af0a44175b164 worldserver1.removePlayerImmediately(this, Entity.RemovalReason.CHANGED_DIMENSION); this.unsetRemoved(); // CraftBukkit end -+ this.portalPos = io.papermc.paper.util.MCUtil.toBlockPosition(exit); // Purpur ++ this.portalPos = io.papermc.paper.util.MCUtil.toBlockPosition(exit); // Purpur - Fix stuck in portals this.setServerLevel(worldserver); this.connection.teleport(exit); // CraftBukkit - use internal teleport without event this.connection.resetPosition(); @@ -2100,7 +2100,7 @@ index f43bf280999ff3860cc702def50cc62b131eb1bd..66d9e99a351f5fc6cf58be3bee4397d9 } diff --git a/src/main/java/net/minecraft/world/entity/Entity.java b/src/main/java/net/minecraft/world/entity/Entity.java -index 815db5b0a24f1628d646893ebad466dcee2ab0bd..c0995861d1987f62f1bf2d37939f57c55f314c24 100644 +index 7c56c3b84809e751e94a2ac4ca27ab81168058c4..2429d9b16cb307d3c9aeb3ec8af677490d3fd3c2 100644 --- a/src/main/java/net/minecraft/world/entity/Entity.java +++ b/src/main/java/net/minecraft/world/entity/Entity.java @@ -169,6 +169,7 @@ import org.bukkit.plugin.PluginManager; @@ -2273,13 +2273,14 @@ index 815db5b0a24f1628d646893ebad466dcee2ab0bd..c0995861d1987f62f1bf2d37939f57c5 + public BlockPos portalPos = BlockPos.ZERO; // Purpur public void setAsInsidePortal(Portal portal, BlockPos pos) { if (this.isOnPortalCooldown()) { -+ if (!(level().purpurConfig.playerFixStuckPortal && this instanceof Player && !pos.equals(portalPos))) // Purpur ++ if (!(level().purpurConfig.playerFixStuckPortal && this instanceof Player && !pos.equals(this.portalPos))) // Purpur - Fix stuck in portals this.setPortalCooldown(); - } else { +- } else { ++ } else if (this.level.purpurConfig.entitiesCanUsePortals || this instanceof ServerPlayer) { // Purpur - Entities can use portals if (this.portalProcess != null && this.portalProcess.isSamePortal(portal)) { this.portalProcess.updateEntryPosition(pos.immutable()); this.portalProcess.setAsInsidePortalThisTick(true); -+ portalPos = BlockPos.ZERO; // Purpur ++ this.portalPos = BlockPos.ZERO; // Purpur - Fix stuck in portals } else { this.portalProcess = new PortalProcessor(portal, pos.immutable()); } @@ -2292,6 +2293,15 @@ index 815db5b0a24f1628d646893ebad466dcee2ab0bd..c0995861d1987f62f1bf2d37939f57c5 } public int getAirSupply() { +@@ -3893,7 +3948,7 @@ public abstract class Entity implements SyncedDataHolder, Nameable, EntityAccess + // CraftBukkit end + + public boolean canUsePortal(boolean allowVehicles) { +- return (allowVehicles || !this.isPassenger()) && this.isAlive(); ++ return (allowVehicles || !this.isPassenger()) && this.isAlive() && (this.level.purpurConfig.entitiesCanUsePortals || this instanceof ServerPlayer); // Purpur - Entities can use portals + } + + public boolean canChangeDimensions(Level from, Level to) { @@ -4215,6 +4270,20 @@ public abstract class Entity implements SyncedDataHolder, Nameable, EntityAccess return SlotAccess.NULL; } @@ -18418,10 +18428,10 @@ index 0000000000000000000000000000000000000000..83fabd290d3c64f2766b3244f5cd695e +} diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java new file mode 100644 -index 0000000000000000000000000000000000000000..b08583d1d5e923dc86378dbd97612aee5c7c43c7 +index 0000000000000000000000000000000000000000..57814f424a91ac5eb5e7c7fa5fe8c23625895c8c --- /dev/null +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -@@ -0,0 +1,3445 @@ +@@ -0,0 +1,3447 @@ +package org.purpurmc.purpur; + +import net.minecraft.core.registries.BuiltInRegistries; @@ -18543,6 +18553,7 @@ index 0000000000000000000000000000000000000000..b08583d1d5e923dc86378dbd97612aee + public boolean boatEjectPlayersOnLand = false; + public boolean boatsDoFallDamage = false; + public boolean disableDropsOnCrammingDeath = false; ++ public boolean entitiesCanUsePortals = true; + public boolean entitiesPickUpLootBypassMobGriefing = false; + public boolean fireballsBypassMobGriefing = false; + public boolean imposeTeleportRestrictionsOnGateways = false; @@ -18573,6 +18584,7 @@ index 0000000000000000000000000000000000000000..b08583d1d5e923dc86378dbd97612aee + boatEjectPlayersOnLand = getBoolean("gameplay-mechanics.boat.eject-players-on-land", boatEjectPlayersOnLand); + boatsDoFallDamage = getBoolean("gameplay-mechanics.boat.do-fall-damage", boatsDoFallDamage); + disableDropsOnCrammingDeath = getBoolean("gameplay-mechanics.disable-drops-on-cramming-death", disableDropsOnCrammingDeath); ++ entitiesCanUsePortals = getBoolean("gameplay-mechanics.entities-can-use-portals", entitiesCanUsePortals); + entitiesPickUpLootBypassMobGriefing = getBoolean("gameplay-mechanics.entities-pick-up-loot-bypass-mob-griefing", entitiesPickUpLootBypassMobGriefing); + fireballsBypassMobGriefing = getBoolean("gameplay-mechanics.fireballs-bypass-mob-griefing", fireballsBypassMobGriefing); + imposeTeleportRestrictionsOnGateways = getBoolean("gameplay-mechanics.impose-teleport-restrictions-on-gateways", imposeTeleportRestrictionsOnGateways); diff --git a/patches/server/0015-Remove-Timings.patch b/patches/server/0015-Remove-Timings.patch index 5ccc249b1..ac90649a8 100644 --- a/patches/server/0015-Remove-Timings.patch +++ b/patches/server/0015-Remove-Timings.patch @@ -1155,7 +1155,7 @@ index 8fded112c6c30070ee6514ef25f1bad1d3fba4c1..42f2961ce975920bb20c73bd3e5b4b78 } diff --git a/src/main/java/net/minecraft/server/level/ServerLevel.java b/src/main/java/net/minecraft/server/level/ServerLevel.java -index 1b759f7ce1d1244982d8eac8b9bce95668e1bb8f..3ca207ead7a034469ab37e5621c6b5cb92979979 100644 +index 2535bc92d0ecebf5f859f13a1c4ffd51709f801f..0dd3f39a8be13a98575c05751a254699f4cdf69d 100644 --- a/src/main/java/net/minecraft/server/level/ServerLevel.java +++ b/src/main/java/net/minecraft/server/level/ServerLevel.java @@ -1,7 +1,6 @@ @@ -1596,10 +1596,10 @@ index cd0e43f4c53a746dd6183a8406269f9b11ad3571..54657ac895fb2fa9c58910d5421f0082 private static final CraftPersistentDataTypeRegistry DATA_TYPE_REGISTRY = new CraftPersistentDataTypeRegistry(); public CraftPersistentDataContainer persistentDataContainer; diff --git a/src/main/java/net/minecraft/world/level/chunk/LevelChunk.java b/src/main/java/net/minecraft/world/level/chunk/LevelChunk.java -index 36540053590c30a902b9986dcf2e74375157822d..fb0ffd302ec87516cd7f28b8b4c6a8e9b1577157 100644 +index f23ed06a943646f45e1291f35ab3025e1dfa6b49..070e7b5db06bd670f97ac7f25767be1d33c5d02e 100644 --- a/src/main/java/net/minecraft/world/level/chunk/LevelChunk.java +++ b/src/main/java/net/minecraft/world/level/chunk/LevelChunk.java -@@ -655,7 +655,6 @@ public class LevelChunk extends ChunkAccess implements ca.spottedleaf.moonrise.p +@@ -669,7 +669,6 @@ public class LevelChunk extends ChunkAccess implements ca.spottedleaf.moonrise.p ((ca.spottedleaf.moonrise.patches.chunk_system.level.ChunkSystemServerLevel)this.level).moonrise$getChunkTaskScheduler().chunkHolderManager.getChunkHolder(this.locX, this.locZ).getEntityChunk().callEntitiesLoadEvent(); // Paper - rewrite chunk system if (this.needsDecoration) { @@ -1607,7 +1607,7 @@ index 36540053590c30a902b9986dcf2e74375157822d..fb0ffd302ec87516cd7f28b8b4c6a8e9 this.needsDecoration = false; java.util.Random random = new java.util.Random(); random.setSeed(this.level.getSeed()); -@@ -675,7 +674,6 @@ public class LevelChunk extends ChunkAccess implements ca.spottedleaf.moonrise.p +@@ -689,7 +688,6 @@ public class LevelChunk extends ChunkAccess implements ca.spottedleaf.moonrise.p } } server.getPluginManager().callEvent(new org.bukkit.event.world.ChunkPopulateEvent(bukkitChunk)); @@ -1615,7 +1615,7 @@ index 36540053590c30a902b9986dcf2e74375157822d..fb0ffd302ec87516cd7f28b8b4c6a8e9 } } } -@@ -1012,7 +1010,6 @@ public class LevelChunk extends ChunkAccess implements ca.spottedleaf.moonrise.p +@@ -1026,7 +1024,6 @@ public class LevelChunk extends ChunkAccess implements ca.spottedleaf.moonrise.p if (LevelChunk.this.isTicking(blockposition)) { try { @@ -1623,7 +1623,7 @@ index 36540053590c30a902b9986dcf2e74375157822d..fb0ffd302ec87516cd7f28b8b4c6a8e9 BlockState iblockdata = LevelChunk.this.getBlockState(blockposition); if (this.blockEntity.getType().isValid(iblockdata)) { -@@ -1035,14 +1032,9 @@ public class LevelChunk extends ChunkAccess implements ca.spottedleaf.moonrise.p +@@ -1049,14 +1046,9 @@ public class LevelChunk extends ChunkAccess implements ca.spottedleaf.moonrise.p net.minecraft.world.level.chunk.LevelChunk.this.level.getCraftServer().getPluginManager().callEvent(new com.destroystokyo.paper.event.server.ServerExceptionEvent(new com.destroystokyo.paper.exception.ServerInternalException(msg, throwable))); // Paper - ServerExceptionEvent LevelChunk.this.removeBlockEntity(this.getPos()); // Paper end - Prevent block entity and entity crashes diff --git a/patches/server/0030-Leaves-Server-Utils.patch b/patches/server/0030-Leaves-Server-Utils.patch index eddfada66..6aafa09c2 100644 --- a/patches/server/0030-Leaves-Server-Utils.patch +++ b/patches/server/0030-Leaves-Server-Utils.patch @@ -9,7 +9,7 @@ and change store way to sql maybe? Original license: GPLv3 Original project: https://github.com/LeavesMC/Leaves -Commit: 86d85530bc3cc448aea134690ae415fabec8e891 +Commit: 248cb933f1a67a50a94352da2c100722e4635575 diff --git a/src/main/java/org/leavesmc/leaves/LeavesLogger.java b/src/main/java/org/leavesmc/leaves/LeavesLogger.java new file mode 100644 diff --git a/patches/server/0031-Leaves-Protocol-Core.patch b/patches/server/0031-Leaves-Protocol-Core.patch index 773fbb501..e134b10f4 100644 --- a/patches/server/0031-Leaves-Protocol-Core.patch +++ b/patches/server/0031-Leaves-Protocol-Core.patch @@ -3,8 +3,6 @@ From: violetc <58360096+s-yh-china@users.noreply.github.com> Date: Tue, 26 Sep 2023 19:00:41 +0800 Subject: [PATCH] Leaves: Protocol Core -TODO - Dreeam: Configurable leaves protocol listening - Original license: GPLv3 Original project: https://github.com/LeavesMC/Leaves @@ -715,13 +713,14 @@ index 0000000000000000000000000000000000000000..9d71f8e6af24301bedf60f5c87e0bb3c +} diff --git a/src/main/java/org/leavesmc/leaves/protocol/core/ProtocolUtils.java b/src/main/java/org/leavesmc/leaves/protocol/core/ProtocolUtils.java new file mode 100644 -index 0000000000000000000000000000000000000000..f54381eec7ec0ffde39e87b39b16e02d3ed1b419 +index 0000000000000000000000000000000000000000..72fb1e6517e266146cb1828875e7b7e6ae9b140d --- /dev/null +++ b/src/main/java/org/leavesmc/leaves/protocol/core/ProtocolUtils.java -@@ -0,0 +1,47 @@ +@@ -0,0 +1,52 @@ +package org.leavesmc.leaves.protocol.core; + +import io.netty.buffer.ByteBuf; ++import io.papermc.paper.ServerBuildInfo; +import net.minecraft.network.FriendlyByteBuf; +import net.minecraft.network.RegistryFriendlyByteBuf; +import net.minecraft.network.protocol.common.ClientboundCustomPayloadPacket; @@ -738,6 +737,10 @@ index 0000000000000000000000000000000000000000..f54381eec7ec0ffde39e87b39b16e02d + + private static final Function bufDecorator = RegistryFriendlyByteBuf.decorator(MinecraftServer.getServer().registryAccess()); + ++ public static String buildProtocolVersion(String protocol) { ++ return protocol + "-leaves-" + ServerBuildInfo.buildInfo().asString(ServerBuildInfo.StringRepresentation.VERSION_SIMPLE); ++ } ++ + public static void sendEmptyPayloadPacket(ServerPlayer player, ResourceLocation id) { + player.connection.send(new ClientboundCustomPayloadPacket(new LeavesProtocolManager.EmptyPayload(id))); + } diff --git a/patches/server/0041-Petal-reduce-work-done-by-game-event-system.patch b/patches/server/0041-Petal-reduce-work-done-by-game-event-system.patch index 22514066d..0ec7afff7 100644 --- a/patches/server/0041-Petal-reduce-work-done-by-game-event-system.patch +++ b/patches/server/0041-Petal-reduce-work-done-by-game-event-system.patch @@ -38,7 +38,7 @@ index a74732902c0494c67e6acf2fc04581ff9c46b832..8b60c922750e71f526976782a1f156e9 LivingEntity entityliving1 = deadEntity.getLastHurtByMob(); diff --git a/src/main/java/net/minecraft/world/level/chunk/LevelChunk.java b/src/main/java/net/minecraft/world/level/chunk/LevelChunk.java -index fb0ffd302ec87516cd7f28b8b4c6a8e9b1577157..a9fd817f42f2ec2e7393e2bd2009ac1fdf60f317 100644 +index 070e7b5db06bd670f97ac7f25767be1d33c5d02e..4e3da128942262a6b0230c0ffaad191112e9ec25 100644 --- a/src/main/java/net/minecraft/world/level/chunk/LevelChunk.java +++ b/src/main/java/net/minecraft/world/level/chunk/LevelChunk.java @@ -81,7 +81,18 @@ public class LevelChunk extends ChunkAccess implements ca.spottedleaf.moonrise.p @@ -61,7 +61,7 @@ index fb0ffd302ec87516cd7f28b8b4c6a8e9b1577157..a9fd817f42f2ec2e7393e2bd2009ac1f private final LevelChunkTicks blockTicks; private final LevelChunkTicks fluidTicks; -@@ -93,7 +104,7 @@ public class LevelChunk extends ChunkAccess implements ca.spottedleaf.moonrise.p +@@ -105,7 +116,7 @@ public class LevelChunk extends ChunkAccess implements ca.spottedleaf.moonrise.p super(pos, upgradeData, world, net.minecraft.server.MinecraftServer.getServer().registryAccess().registryOrThrow(Registries.BIOME), inhabitedTime, sectionArrayInitializer, blendingData); // Paper - Anti-Xray - The world isn't ready yet, use server singleton for registry this.tickersInLevel = Maps.newHashMap(); this.level = (ServerLevel) world; // CraftBukkit - type @@ -70,7 +70,7 @@ index fb0ffd302ec87516cd7f28b8b4c6a8e9b1577157..a9fd817f42f2ec2e7393e2bd2009ac1f Heightmap.Types[] aheightmap_type = Heightmap.Types.values(); int j = aheightmap_type.length; -@@ -230,9 +241,23 @@ public class LevelChunk extends ChunkAccess implements ca.spottedleaf.moonrise.p +@@ -244,9 +255,23 @@ public class LevelChunk extends ChunkAccess implements ca.spottedleaf.moonrise.p Level world = this.level; if (world instanceof ServerLevel worldserver) { @@ -97,7 +97,7 @@ index fb0ffd302ec87516cd7f28b8b4c6a8e9b1577157..a9fd817f42f2ec2e7393e2bd2009ac1f } else { return super.getListenerRegistry(ySectionCoord); } -@@ -616,7 +641,7 @@ public class LevelChunk extends ChunkAccess implements ca.spottedleaf.moonrise.p +@@ -630,7 +655,7 @@ public class LevelChunk extends ChunkAccess implements ca.spottedleaf.moonrise.p } private void removeGameEventListenerRegistry(int ySectionCoord) { diff --git a/patches/server/0046-Configurable-movement-speed-of-more-entities.patch b/patches/server/0046-Configurable-movement-speed-of-more-entities.patch index 97d3fb232..63f5b9809 100644 --- a/patches/server/0046-Configurable-movement-speed-of-more-entities.patch +++ b/patches/server/0046-Configurable-movement-speed-of-more-entities.patch @@ -97,10 +97,10 @@ index 1c04fbea0dce4167a0902b92b95d470f562825c2..4f1f816496f8f8564c1dc53ceae5cfb3 @Override public EntityDimensions getDefaultDimensions(Pose pose) { diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index b08583d1d5e923dc86378dbd97612aee5c7c43c7..33990382600b155ed8afcaa93707d9b7c189ad83 100644 +index 57814f424a91ac5eb5e7c7fa5fe8c23625895c8c..4d438781d264d8a7fbda4d8913b84f27abafe6fc 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -@@ -1577,6 +1577,7 @@ public class PurpurWorldConfig { +@@ -1579,6 +1579,7 @@ public class PurpurWorldConfig { public boolean drownedTakeDamageFromWater = false; public boolean drownedBreakDoors = false; public boolean drownedAlwaysDropExp = false; @@ -108,7 +108,7 @@ index b08583d1d5e923dc86378dbd97612aee5c7c43c7..33990382600b155ed8afcaa93707d9b7 private void drownedSettings() { drownedRidable = getBoolean("mobs.drowned.ridable", drownedRidable); drownedRidableInWater = getBoolean("mobs.drowned.ridable-in-water", drownedRidableInWater); -@@ -1595,6 +1596,7 @@ public class PurpurWorldConfig { +@@ -1597,6 +1598,7 @@ public class PurpurWorldConfig { drownedTakeDamageFromWater = getBoolean("mobs.drowned.takes-damage-from-water", drownedTakeDamageFromWater); drownedBreakDoors = getBoolean("mobs.drowned.can-break-doors", drownedBreakDoors); drownedAlwaysDropExp = getBoolean("mobs.drowned.always-drop-exp", drownedAlwaysDropExp); @@ -116,7 +116,7 @@ index b08583d1d5e923dc86378dbd97612aee5c7c43c7..33990382600b155ed8afcaa93707d9b7 } public boolean elderGuardianRidable = false; -@@ -1964,6 +1966,7 @@ public class PurpurWorldConfig { +@@ -1966,6 +1968,7 @@ public class PurpurWorldConfig { public boolean huskJockeyTryExistingChickens = true; public boolean huskTakeDamageFromWater = false; public boolean huskAlwaysDropExp = false; @@ -124,7 +124,7 @@ index b08583d1d5e923dc86378dbd97612aee5c7c43c7..33990382600b155ed8afcaa93707d9b7 private void huskSettings() { huskRidable = getBoolean("mobs.husk.ridable", huskRidable); huskRidableInWater = getBoolean("mobs.husk.ridable-in-water", huskRidableInWater); -@@ -1981,6 +1984,7 @@ public class PurpurWorldConfig { +@@ -1983,6 +1986,7 @@ public class PurpurWorldConfig { huskJockeyTryExistingChickens = getBoolean("mobs.husk.jockey.try-existing-chickens", huskJockeyTryExistingChickens); huskTakeDamageFromWater = getBoolean("mobs.husk.takes-damage-from-water", huskTakeDamageFromWater); huskAlwaysDropExp = getBoolean("mobs.husk.always-drop-exp", huskAlwaysDropExp); @@ -132,7 +132,7 @@ index b08583d1d5e923dc86378dbd97612aee5c7c43c7..33990382600b155ed8afcaa93707d9b7 } public boolean illusionerRidable = false; -@@ -3274,6 +3278,7 @@ public class PurpurWorldConfig { +@@ -3276,6 +3280,7 @@ public class PurpurWorldConfig { public boolean zombieTakeDamageFromWater = false; public boolean zombieAlwaysDropExp = false; public double zombieHeadVisibilityPercent = 0.5D; @@ -140,7 +140,7 @@ index b08583d1d5e923dc86378dbd97612aee5c7c43c7..33990382600b155ed8afcaa93707d9b7 private void zombieSettings() { zombieRidable = getBoolean("mobs.zombie.ridable", zombieRidable); zombieRidableInWater = getBoolean("mobs.zombie.ridable-in-water", zombieRidableInWater); -@@ -3294,6 +3299,7 @@ public class PurpurWorldConfig { +@@ -3296,6 +3301,7 @@ public class PurpurWorldConfig { zombieTakeDamageFromWater = getBoolean("mobs.zombie.takes-damage-from-water", zombieTakeDamageFromWater); zombieAlwaysDropExp = getBoolean("mobs.zombie.always-drop-exp", zombieAlwaysDropExp); zombieHeadVisibilityPercent = getDouble("mobs.zombie.head-visibility-percent", zombieHeadVisibilityPercent); @@ -148,7 +148,7 @@ index b08583d1d5e923dc86378dbd97612aee5c7c43c7..33990382600b155ed8afcaa93707d9b7 } public boolean zombieHorseRidable = false; -@@ -3343,6 +3349,7 @@ public class PurpurWorldConfig { +@@ -3345,6 +3351,7 @@ public class PurpurWorldConfig { public int zombieVillagerCuringTimeMax = 6000; public boolean zombieVillagerCureEnabled = true; public boolean zombieVillagerAlwaysDropExp = false; @@ -156,7 +156,7 @@ index b08583d1d5e923dc86378dbd97612aee5c7c43c7..33990382600b155ed8afcaa93707d9b7 private void zombieVillagerSettings() { zombieVillagerRidable = getBoolean("mobs.zombie_villager.ridable", zombieVillagerRidable); zombieVillagerRidableInWater = getBoolean("mobs.zombie_villager.ridable-in-water", zombieVillagerRidableInWater); -@@ -3363,6 +3370,7 @@ public class PurpurWorldConfig { +@@ -3365,6 +3372,7 @@ public class PurpurWorldConfig { zombieVillagerCuringTimeMax = getInt("mobs.zombie_villager.curing_time.max", zombieVillagerCuringTimeMax); zombieVillagerCureEnabled = getBoolean("mobs.zombie_villager.cure.enabled", zombieVillagerCureEnabled); zombieVillagerAlwaysDropExp = getBoolean("mobs.zombie_villager.always-drop-exp", zombieVillagerAlwaysDropExp); @@ -164,7 +164,7 @@ index b08583d1d5e923dc86378dbd97612aee5c7c43c7..33990382600b155ed8afcaa93707d9b7 } public boolean zombifiedPiglinRidable = false; -@@ -3377,6 +3385,7 @@ public class PurpurWorldConfig { +@@ -3379,6 +3387,7 @@ public class PurpurWorldConfig { public boolean zombifiedPiglinCountAsPlayerKillWhenAngry = true; public boolean zombifiedPiglinTakeDamageFromWater = false; public boolean zombifiedPiglinAlwaysDropExp = false; @@ -172,7 +172,7 @@ index b08583d1d5e923dc86378dbd97612aee5c7c43c7..33990382600b155ed8afcaa93707d9b7 private void zombifiedPiglinSettings() { zombifiedPiglinRidable = getBoolean("mobs.zombified_piglin.ridable", zombifiedPiglinRidable); zombifiedPiglinRidableInWater = getBoolean("mobs.zombified_piglin.ridable-in-water", zombifiedPiglinRidableInWater); -@@ -3395,6 +3404,7 @@ public class PurpurWorldConfig { +@@ -3397,6 +3406,7 @@ public class PurpurWorldConfig { zombifiedPiglinCountAsPlayerKillWhenAngry = getBoolean("mobs.zombified_piglin.count-as-player-kill-when-angry", zombifiedPiglinCountAsPlayerKillWhenAngry); zombifiedPiglinTakeDamageFromWater = getBoolean("mobs.zombified_piglin.takes-damage-from-water", zombifiedPiglinTakeDamageFromWater); zombifiedPiglinAlwaysDropExp = getBoolean("mobs.zombified_piglin.always-drop-exp", zombifiedPiglinAlwaysDropExp); diff --git a/patches/server/0051-Plazma-Add-missing-purpur-configuration-options.patch b/patches/server/0051-Plazma-Add-missing-purpur-configuration-options.patch index f66aefaaf..2e1838549 100644 --- a/patches/server/0051-Plazma-Add-missing-purpur-configuration-options.patch +++ b/patches/server/0051-Plazma-Add-missing-purpur-configuration-options.patch @@ -231,10 +231,10 @@ index 83fabd290d3c64f2766b3244f5cd695e1c674a2f..69832f436254d975a77e251e6ae5de2e org.bukkit.event.inventory.InventoryType.ENDER_CHEST.setDefaultSize(enderChestSixRows ? 54 : 27); enderChestPermissionRows = getBoolean("settings.blocks.ender_chest.use-permissions-for-rows", enderChestPermissionRows); diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index 33990382600b155ed8afcaa93707d9b7c189ad83..7cae3a982d5c26c4b789630fd571d786c6c7bc07 100644 +index 4d438781d264d8a7fbda4d8913b84f27abafe6fc..97fae82daa11ef2002c342a3a337611ec3d80395 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -@@ -1164,12 +1164,20 @@ public class PurpurWorldConfig { +@@ -1166,12 +1166,20 @@ public class PurpurWorldConfig { public boolean allayControllable = true; public double allayMaxHealth = 20.0D; public double allayScale = 1.0D; @@ -255,7 +255,7 @@ index 33990382600b155ed8afcaa93707d9b7c189ad83..7cae3a982d5c26c4b789630fd571d786 } public boolean armadilloRidable = false; -@@ -1319,6 +1327,10 @@ public class PurpurWorldConfig { +@@ -1321,6 +1329,10 @@ public class PurpurWorldConfig { public double camelMovementSpeedMin = 0.09D; public double camelMovementSpeedMax = 0.09D; public int camelBreedingTicks = 6000; @@ -266,7 +266,7 @@ index 33990382600b155ed8afcaa93707d9b7c189ad83..7cae3a982d5c26c4b789630fd571d786 private void camelSettings() { camelRidableInWater = getBoolean("mobs.camel.ridable-in-water", camelRidableInWater); camelMaxHealthMin = getDouble("mobs.camel.attributes.max_health.min", camelMaxHealthMin); -@@ -1328,6 +1340,10 @@ public class PurpurWorldConfig { +@@ -1330,6 +1342,10 @@ public class PurpurWorldConfig { camelMovementSpeedMin = getDouble("mobs.camel.attributes.movement_speed.min", camelMovementSpeedMin); camelMovementSpeedMax = getDouble("mobs.camel.attributes.movement_speed.max", camelMovementSpeedMax); camelBreedingTicks = getInt("mobs.camel.breeding-delay-ticks", camelBreedingTicks); @@ -277,7 +277,7 @@ index 33990382600b155ed8afcaa93707d9b7c189ad83..7cae3a982d5c26c4b789630fd571d786 } public boolean catRidable = false; -@@ -1775,12 +1791,22 @@ public class PurpurWorldConfig { +@@ -1777,12 +1793,22 @@ public class PurpurWorldConfig { public boolean frogControllable = true; public float frogRidableJumpHeight = 0.65F; public int frogBreedingTicks = 6000; @@ -300,7 +300,7 @@ index 33990382600b155ed8afcaa93707d9b7c189ad83..7cae3a982d5c26c4b789630fd571d786 } public boolean ghastRidable = false; -@@ -2782,6 +2808,10 @@ public class PurpurWorldConfig { +@@ -2784,6 +2810,10 @@ public class PurpurWorldConfig { public double snifferMaxHealth = 14.0D; public double snifferScale = 1.0D; public int snifferBreedingTicks = 6000; @@ -311,7 +311,7 @@ index 33990382600b155ed8afcaa93707d9b7c189ad83..7cae3a982d5c26c4b789630fd571d786 private void snifferSettings() { snifferRidable = getBoolean("mobs.sniffer.ridable", snifferRidable); snifferRidableInWater = getBoolean("mobs.sniffer.ridable-in-water", snifferRidableInWater); -@@ -2789,6 +2819,10 @@ public class PurpurWorldConfig { +@@ -2791,6 +2821,10 @@ public class PurpurWorldConfig { snifferMaxHealth = getDouble("mobs.sniffer.attributes.max_health", snifferMaxHealth); snifferScale = Mth.clamp(getDouble("mobs.sniffer.attributes.scale", snifferScale), 0.0625D, 16.0D); snifferBreedingTicks = getInt("mobs.sniffer.breeding-delay-ticks", snifferBreedingTicks); @@ -322,7 +322,7 @@ index 33990382600b155ed8afcaa93707d9b7c189ad83..7cae3a982d5c26c4b789630fd571d786 } public boolean squidRidable = false; -@@ -2890,10 +2924,20 @@ public class PurpurWorldConfig { +@@ -2892,10 +2926,20 @@ public class PurpurWorldConfig { public boolean tadpoleRidable = false; public boolean tadpoleRidableInWater = true; public boolean tadpoleControllable = true; @@ -343,7 +343,7 @@ index 33990382600b155ed8afcaa93707d9b7c189ad83..7cae3a982d5c26c4b789630fd571d786 } public boolean traderLlamaRidable = false; -@@ -3118,10 +3162,20 @@ public class PurpurWorldConfig { +@@ -3120,10 +3164,20 @@ public class PurpurWorldConfig { public boolean wardenRidable = false; public boolean wardenRidableInWater = true; public boolean wardenControllable = true;