From 1a4ad041b542f8045a3969b545c8251d82362f2e Mon Sep 17 00:00:00 2001 From: Samsuik Date: Fri, 17 Jan 2025 11:47:26 +0000 Subject: [PATCH] It compiles --- ...ice-Packet-obfuscation-and-reduction.patch | 6 ++--- .../0013-Explosion-Durable-Blocks.patch | 10 +++---- .../0015-Configure-cannon-physics.patch | 22 +++++++-------- ...Reduce-entity-tracker-player-updates.patch | 7 +++-- .../0019-Legacy-lava-block-formation.patch | 4 +-- .../0023-Optimise-hopper-ticking.patch | 6 ++--- .../entity/item/FallingBlockEntity.java.patch | 10 +++---- .../world/entity/item/PrimedTnt.java.patch | 17 +++++------- .../0001-Client-Visibility-Settings.patch | 6 ++--- .../features/0002-Merge-Cannon-Entities.patch | 27 +++++++++---------- .../craftbukkit/entity/CraftEntity.java.patch | 10 +++---- .../craftbukkit/entity/CraftPlayer.java.patch | 10 +++---- 12 files changed, 63 insertions(+), 72 deletions(-) diff --git a/sakura-server/minecraft-patches/features/0003-Slice-Packet-obfuscation-and-reduction.patch b/sakura-server/minecraft-patches/features/0003-Slice-Packet-obfuscation-and-reduction.patch index 016bde0..9bced7e 100644 --- a/sakura-server/minecraft-patches/features/0003-Slice-Packet-obfuscation-and-reduction.patch +++ b/sakura-server/minecraft-patches/features/0003-Slice-Packet-obfuscation-and-reduction.patch @@ -166,10 +166,10 @@ index 00b3e16d5465547e7d4f8126664fb7eda3b3c568..7bbc4a982f442fdb9821221442737ae6 } diff --git a/net/minecraft/world/entity/item/FallingBlockEntity.java b/net/minecraft/world/entity/item/FallingBlockEntity.java -index ee5ec7a780488182e30134b29a20cc192609d64b..4836be29ff5e87e4f2b9beb0d4a9943281ab5262 100644 +index 066884516b6c9120433864b043276836e087978d..17e810e201fab2e400ac3685e15fa98dcf4c1978 100644 --- a/net/minecraft/world/entity/item/FallingBlockEntity.java +++ b/net/minecraft/world/entity/item/FallingBlockEntity.java -@@ -120,7 +120,7 @@ public class FallingBlockEntity extends Entity { +@@ -127,7 +127,7 @@ public class FallingBlockEntity extends Entity { } public void setStartPos(BlockPos startPos) { @@ -179,7 +179,7 @@ index ee5ec7a780488182e30134b29a20cc192609d64b..4836be29ff5e87e4f2b9beb0d4a99432 public BlockPos getStartPos() { diff --git a/net/minecraft/world/entity/item/PrimedTnt.java b/net/minecraft/world/entity/item/PrimedTnt.java -index e7b4efe35c20e11f130b5bce5c8c20390c65e0a4..9e9463d62aa1618a4a749bb7e2636c9b090991e9 100644 +index 3c74cb8d4b71fcfa600742c21d6ad8e3942a2ab7..8dd0ae62c489544ba52894cb870e5befccad7aba 100644 --- a/net/minecraft/world/entity/item/PrimedTnt.java +++ b/net/minecraft/world/entity/item/PrimedTnt.java @@ -241,7 +241,7 @@ public class PrimedTnt extends Entity implements TraceableEntity { diff --git a/sakura-server/minecraft-patches/features/0013-Explosion-Durable-Blocks.patch b/sakura-server/minecraft-patches/features/0013-Explosion-Durable-Blocks.patch index 24814cf..f944bdb 100644 --- a/sakura-server/minecraft-patches/features/0013-Explosion-Durable-Blocks.patch +++ b/sakura-server/minecraft-patches/features/0013-Explosion-Durable-Blocks.patch @@ -53,7 +53,7 @@ index b4a8a81f1fa091e45f1f39fdb69c61871d7dc6b9..19aa5010b019e343d0fb085359eac98b protected Level( WritableLevelData levelData, diff --git a/net/minecraft/world/level/ServerExplosion.java b/net/minecraft/world/level/ServerExplosion.java -index 0285e19d6265056fb5ff9855a5dd41bd16bbc082..58c14cc2d041348f42e8466fc93f18736c2618da 100644 +index 0285e19d6265056fb5ff9855a5dd41bd16bbc082..b66a9f646dc853f8b2f86137a668fe692e523e92 100644 --- a/net/minecraft/world/level/ServerExplosion.java +++ b/net/minecraft/world/level/ServerExplosion.java @@ -133,7 +133,7 @@ public class ServerExplosion implements Explosion { @@ -86,16 +86,14 @@ index 0285e19d6265056fb5ff9855a5dd41bd16bbc082..58c14cc2d041348f42e8466fc93f1873 public ServerExplosion( ServerLevel level, -@@ -779,6 +793,16 @@ public class ServerExplosion implements Explosion { +@@ -779,6 +793,14 @@ public class ServerExplosion implements Explosion { } } // CraftBukkit end + // Sakura start - explosion durable blocks + if (this.level.sakuraConfig().cannons.explosion.allowNonTntBreakingDurableBlocks || this.source instanceof net.minecraft.world.entity.item.PrimedTnt) { -+ me.samsuik.sakura.explosion.durable.DurableMaterial material = this.level.localConfig().config(blockposition).durableMaterials.get(block); -+ -+ if (material != null && material.durability() >= 0 && !this.level.durabilityManager.damage(blockposition, material)) { -+ iterator.remove(); ++ final me.samsuik.sakura.explosion.durable.DurableMaterial material = this.level.localConfig().config(blockPos).durableMaterials.get(block); ++ if (material != null && material.durability() >= 0 && !this.level.durabilityManager.damage(blockPos, material)) { + continue; + } + } diff --git a/sakura-server/minecraft-patches/features/0015-Configure-cannon-physics.patch b/sakura-server/minecraft-patches/features/0015-Configure-cannon-physics.patch index 950351f..8807ef2 100644 --- a/sakura-server/minecraft-patches/features/0015-Configure-cannon-physics.patch +++ b/sakura-server/minecraft-patches/features/0015-Configure-cannon-physics.patch @@ -177,7 +177,7 @@ index 8c3e0ca06f89e4d8c08d30272475cdeaca20b3ef..a6a47d9d0d8e475d936ce867cdbb8d59 return; } diff --git a/net/minecraft/world/entity/item/FallingBlockEntity.java b/net/minecraft/world/entity/item/FallingBlockEntity.java -index c6836ab9a2789520931d2119aeebeaf2179f27fa..d82e5184515c14a819b70c4d621cc6d93d120cc9 100644 +index f525262a153919deeeb1e6df20009b78f9e8e601..6a2bb2d4fa2ff76f85648ea39c8f0abd9b4b7e95 100644 --- a/net/minecraft/world/entity/item/FallingBlockEntity.java +++ b/net/minecraft/world/entity/item/FallingBlockEntity.java @@ -119,6 +119,43 @@ public class FallingBlockEntity extends Entity implements me.samsuik.sakura.enti @@ -234,8 +234,8 @@ index c6836ab9a2789520931d2119aeebeaf2179f27fa..d82e5184515c14a819b70c4d621cc6d9 + // Sakura end - configure cannon physics } - public static FallingBlockEntity fall(Level level, BlockPos pos, BlockState blockState) { -@@ -151,7 +192,11 @@ public class FallingBlockEntity extends Entity implements me.samsuik.sakura.enti + // Sakura start - falling block height parity api +@@ -158,7 +199,11 @@ public class FallingBlockEntity extends Entity implements me.samsuik.sakura.enti : blockState ); if (!CraftEventFactory.callEntityChangeBlockEvent(fallingBlockEntity, pos, blockState.getFluidState().createLegacyBlock())) return fallingBlockEntity; // CraftBukkit @@ -315,7 +315,7 @@ index c6836ab9a2789520931d2119aeebeaf2179f27fa..d82e5184515c14a819b70c4d621cc6d9 } diff --git a/net/minecraft/world/entity/item/PrimedTnt.java b/net/minecraft/world/entity/item/PrimedTnt.java -index 2ee04093d7c8b61a48913bd4c929528e357aa971..e8f69371a5a0732974fe084c482c6d6b89f48151 100644 +index 438a8974cc0b8e0ef4e7a2268c61f45f5fd6b959..87c5669d534365d361b177407a0912d0698f19bd 100644 --- a/net/minecraft/world/entity/item/PrimedTnt.java +++ b/net/minecraft/world/entity/item/PrimedTnt.java @@ -80,6 +80,22 @@ public class PrimedTnt extends Entity implements TraceableEntity, me.samsuik.sak @@ -346,7 +346,7 @@ index 2ee04093d7c8b61a48913bd4c929528e357aa971..e8f69371a5a0732974fe084c482c6d6b } // Sakura end - configure cannon mechanics + // Sakura start - configure cannon physics -+ this.physics = world.localConfig().config(this.blockPosition()).physicsVersion; ++ this.physics = level.localConfig().config(this.blockPosition()).physicsVersion; + this.eyeHeight = this.physics.isLegacy() ? 0.49f : this.eyeHeight; + if (this.physics.isLegacy()) { + this.setDeltaMovement(this.getDeltaMovement().multiply(0.0, 1.0, 0.0)); @@ -354,7 +354,7 @@ index 2ee04093d7c8b61a48913bd4c929528e357aa971..e8f69371a5a0732974fe084c482c6d6b + // Sakura end - configure cannon physics } - @Override + // Sakura start - optimise tnt fluid state @@ -140,7 +163,7 @@ public class PrimedTnt extends Entity implements TraceableEntity, me.samsuik.sak @Override @@ -587,7 +587,7 @@ index 19aa5010b019e343d0fb085359eac98bcb5b5efa..eeb37d088cec5b2b8e1ac4bd48b4491e public final me.samsuik.sakura.explosion.density.BlockDensityCache densityCache = new me.samsuik.sakura.explosion.density.BlockDensityCache(); // Sakura - explosion density cache public final me.samsuik.sakura.explosion.durable.DurableBlockManager durabilityManager = new me.samsuik.sakura.explosion.durable.DurableBlockManager(); // Sakura - explosion durable blocks diff --git a/net/minecraft/world/level/ServerExplosion.java b/net/minecraft/world/level/ServerExplosion.java -index f74aee504fa048a43272a3c3e9d1c6f9fa4a5913..040596183eb6c61369e59112fa928e9c129adb34 100644 +index 43203ac9a40106ee4ffbb63d89e2d59b24723642..7e430d476ecd3b0b5c2dc4960a86d74669e0183f 100644 --- a/net/minecraft/world/level/ServerExplosion.java +++ b/net/minecraft/world/level/ServerExplosion.java @@ -412,6 +412,7 @@ public class ServerExplosion implements Explosion { @@ -649,7 +649,7 @@ index f74aee504fa048a43272a3c3e9d1c6f9fa4a5913..040596183eb6c61369e59112fa928e9c if (squareRoot != 0.0) { d1 /= squareRoot; d2 /= squareRoot; -@@ -950,7 +971,7 @@ public class ServerExplosion implements Explosion { +@@ -948,7 +969,7 @@ public class ServerExplosion implements Explosion { // Sakura start - replace density cache float blockDensity = this.level.densityCache.getDensity(vec3d, entity); if (blockDensity == me.samsuik.sakura.explosion.density.BlockDensityCache.UNKNOWN_DENSITY) { @@ -658,7 +658,7 @@ index f74aee504fa048a43272a3c3e9d1c6f9fa4a5913..040596183eb6c61369e59112fa928e9c this.level.densityCache.putDensity(vec3d, entity, blockDensity); // Sakura end - replace density cache } -@@ -958,6 +979,16 @@ public class ServerExplosion implements Explosion { +@@ -956,6 +977,16 @@ public class ServerExplosion implements Explosion { return blockDensity; } @@ -841,7 +841,7 @@ index 78aa0ae9ce937b7232eac1d65fd987c21489979d..e719be50ff73610046696a2105367133 if (org.bukkit.craftbukkit.event.CraftEventFactory.handleBlockFormEvent(level, pos, block.defaultBlockState())) { this.fizz(level, pos); diff --git a/net/minecraft/world/level/block/RedStoneWireBlock.java b/net/minecraft/world/level/block/RedStoneWireBlock.java -index efdcee032174af1f9a14183e9e8af3e7c4694942..c3b72708466bb28a764b0cfc958ffa10863e1a75 100644 +index efdcee032174af1f9a14183e9e8af3e7c4694942..d763a636ecb92a12786f49e2096a95827a3d1717 100644 --- a/net/minecraft/world/level/block/RedStoneWireBlock.java +++ b/net/minecraft/world/level/block/RedStoneWireBlock.java @@ -572,6 +572,10 @@ public class RedStoneWireBlock extends Block { @@ -849,7 +849,7 @@ index efdcee032174af1f9a14183e9e8af3e7c4694942..c3b72708466bb28a764b0cfc958ffa10 if (!player.getAbilities().mayBuild) { return InteractionResult.PASS; + // Sakura start - configure cannon physics -+ } else if (world.localConfig().config(pos).physicsVersion.before(1_16_0)) { ++ } else if (level.localConfig().config(pos).physicsVersion.before(1_16_0)) { + return InteractionResult.PASS; + // Sakura end - configure cannon physics } else { diff --git a/sakura-server/minecraft-patches/features/0018-Reduce-entity-tracker-player-updates.patch b/sakura-server/minecraft-patches/features/0018-Reduce-entity-tracker-player-updates.patch index 1ebe078..5766ffc 100644 --- a/sakura-server/minecraft-patches/features/0018-Reduce-entity-tracker-player-updates.patch +++ b/sakura-server/minecraft-patches/features/0018-Reduce-entity-tracker-player-updates.patch @@ -5,7 +5,7 @@ Subject: [PATCH] Reduce entity tracker player updates diff --git a/net/minecraft/server/level/ChunkMap.java b/net/minecraft/server/level/ChunkMap.java -index e096463443639e9eef5311d7154f6d2ac1517883..ec166e88f0257890eb87efa3ec9c5fd6725d3569 100644 +index e096463443639e9eef5311d7154f6d2ac1517883..4a5a6b6f163faa93c82e018eb9b6554486ea9ac7 100644 --- a/net/minecraft/server/level/ChunkMap.java +++ b/net/minecraft/server/level/ChunkMap.java @@ -953,7 +953,11 @@ public class ChunkMap extends ChunkStorage implements ChunkHolder.PlayerProvider @@ -21,7 +21,7 @@ index e096463443639e9eef5311d7154f6d2ac1517883..ec166e88f0257890eb87efa3ec9c5fd6 if (((ca.spottedleaf.moonrise.patches.entity_tracker.EntityTrackerTrackedEntity)tracker).moonrise$hasPlayers() || ((ca.spottedleaf.moonrise.patches.chunk_system.entity.ChunkSystemEntity)entity).moonrise$getChunkStatus().isOrAfter(FullChunkStatus.ENTITY_TICKING)) { tracker.serverEntity.sendChanges(); -@@ -1197,12 +1201,31 @@ public class ChunkMap extends ChunkStorage implements ChunkHolder.PlayerProvider +@@ -1197,12 +1201,30 @@ public class ChunkMap extends ChunkStorage implements ChunkHolder.PlayerProvider return state != me.samsuik.sakura.player.visibility.VisibilityState.OFF; } // Sakura end - client visibility settings; entity visibility @@ -45,9 +45,8 @@ index e096463443639e9eef5311d7154f6d2ac1517883..ec166e88f0257890eb87efa3ec9c5fd6 this.entity = entity; this.range = range; this.lastSectionPos = SectionPos.of(entity); -+ // Sakura end - client visibility settings; entity visibility + // Sakura start - reduce entity tracker player updates -+ this.playerUpdateInterval = Math.min(j, 20); ++ this.playerUpdateInterval = Math.min(updateInterval, 20); + this.entityPosition = entity.position(); + // Sakura start - reduce entity tracker player updates } diff --git a/sakura-server/minecraft-patches/features/0019-Legacy-lava-block-formation.patch b/sakura-server/minecraft-patches/features/0019-Legacy-lava-block-formation.patch index 854c9b9..5c0a986 100644 --- a/sakura-server/minecraft-patches/features/0019-Legacy-lava-block-formation.patch +++ b/sakura-server/minecraft-patches/features/0019-Legacy-lava-block-formation.patch @@ -5,7 +5,7 @@ Subject: [PATCH] Legacy lava block formation diff --git a/net/minecraft/world/level/block/LiquidBlock.java b/net/minecraft/world/level/block/LiquidBlock.java -index e719be50ff73610046696a21053671332951ca9c..9f8f71c95086b18be4d9254ca8aa7f93674fb598 100644 +index e719be50ff73610046696a21053671332951ca9c..b096ef72d5a2e9b931be85dda4dc41673229d57f 100644 --- a/net/minecraft/world/level/block/LiquidBlock.java +++ b/net/minecraft/world/level/block/LiquidBlock.java @@ -194,7 +194,14 @@ public class LiquidBlock extends Block implements BucketPickup { @@ -15,7 +15,7 @@ index e719be50ff73610046696a21053671332951ca9c..9f8f71c95086b18be4d9254ca8aa7f93 - final me.samsuik.sakura.physics.PhysicsVersion physics = level.localConfig().config(pos).physicsVersion; + // Sakura start - legacy lava block formation + final me.samsuik.sakura.physics.PhysicsVersion physics; -+ if (world.sakuraConfig().environment.blockGeneration.legacyBlockFormation) { ++ if (level.sakuraConfig().environment.blockGeneration.legacyBlockFormation) { + physics = me.samsuik.sakura.physics.PhysicsVersion.v1_12; + } else { + physics = level.localConfig().config(pos).physicsVersion; diff --git a/sakura-server/minecraft-patches/features/0023-Optimise-hopper-ticking.patch b/sakura-server/minecraft-patches/features/0023-Optimise-hopper-ticking.patch index 2ca023b..9d56b30 100644 --- a/sakura-server/minecraft-patches/features/0023-Optimise-hopper-ticking.patch +++ b/sakura-server/minecraft-patches/features/0023-Optimise-hopper-ticking.patch @@ -164,7 +164,7 @@ index 77618757c0e678532dbab814aceed83f7f1cd892..65d359c497b73c821b082a885c063a73 public void clearRemoved() { diff --git a/net/minecraft/world/level/block/entity/HopperBlockEntity.java b/net/minecraft/world/level/block/entity/HopperBlockEntity.java -index 5cd1326ad5d046c88b2b3449d610a78fa880b4cd..900ed60d6294a8afea48800808a7b89a8a8b27ad 100644 +index 5cd1326ad5d046c88b2b3449d610a78fa880b4cd..c5e7040367d7d652e4298a4f8f8e589a2c11183f 100644 --- a/net/minecraft/world/level/block/entity/HopperBlockEntity.java +++ b/net/minecraft/world/level/block/entity/HopperBlockEntity.java @@ -28,7 +28,7 @@ import net.minecraft.world.level.block.HopperBlock; @@ -210,7 +210,7 @@ index 5cd1326ad5d046c88b2b3449d610a78fa880b4cd..900ed60d6294a8afea48800808a7b89a + + private static @Nullable Container sakura_getSourceContainer(Level level, Hopper hopper, BlockPos pos, BlockState state) { + Container container = getSourceContainer(level, hopper, pos, state); -+ if (hopper instanceof HopperBlockEntity hbe && HopperInventorySearchEvent.getHandlerList().getRegisteredListeners().length == 0) { ++ if (hopper instanceof HopperBlockEntity hbe && org.bukkit.event.inventory.HopperInventorySearchEvent.getHandlerList().getRegisteredListeners().length == 0) { + hbe.listenForContainerChanges(container, SOURCE_CONTAINER); + } + return container; @@ -218,7 +218,7 @@ index 5cd1326ad5d046c88b2b3449d610a78fa880b4cd..900ed60d6294a8afea48800808a7b89a + + private static @Nullable Container sakura_getAttachedContainer(Level level, BlockPos pos, HopperBlockEntity hbe) { + Container container = getAttachedContainer(level, pos, hbe); -+ if (HopperInventorySearchEvent.getHandlerList().getRegisteredListeners().length == 0) { ++ if (org.bukkit.event.inventory.HopperInventorySearchEvent.getHandlerList().getRegisteredListeners().length == 0) { + hbe.listenForContainerChanges(container, ATTACHED_CONTAINER); + } + return container; diff --git a/sakura-server/minecraft-patches/sources/net/minecraft/world/entity/item/FallingBlockEntity.java.patch b/sakura-server/minecraft-patches/sources/net/minecraft/world/entity/item/FallingBlockEntity.java.patch index a4dcaa4..db23bb9 100644 --- a/sakura-server/minecraft-patches/sources/net/minecraft/world/entity/item/FallingBlockEntity.java.patch +++ b/sakura-server/minecraft-patches/sources/net/minecraft/world/entity/item/FallingBlockEntity.java.patch @@ -12,8 +12,8 @@ } public FallingBlockEntity(Level level, double x, double y, double z, BlockState state) { -@@ -138,6 +_,13 @@ - return !this.isRemoved(); +@@ -85,6 +_,13 @@ + this.setStartPos(this.blockPosition()); } + // Sakura start - falling block height parity api @@ -23,9 +23,9 @@ + } + // Sakura end - falling block height parity api + - @Override - protected double getDefaultGravity() { - return 0.04; + public static FallingBlockEntity fall(Level level, BlockPos pos, BlockState blockState) { + FallingBlockEntity fallingBlockEntity = new FallingBlockEntity( + level, @@ -165,7 +_,7 @@ this.handlePortal(); if (this.level() instanceof ServerLevel serverLevel && (this.isAlive() || this.forceTickAfterTeleportToDuplicate)) { diff --git a/sakura-server/minecraft-patches/sources/net/minecraft/world/entity/item/PrimedTnt.java.patch b/sakura-server/minecraft-patches/sources/net/minecraft/world/entity/item/PrimedTnt.java.patch index b4afd5c..7d3bb0d 100644 --- a/sakura-server/minecraft-patches/sources/net/minecraft/world/entity/item/PrimedTnt.java.patch +++ b/sakura-server/minecraft-patches/sources/net/minecraft/world/entity/item/PrimedTnt.java.patch @@ -1,22 +1,18 @@ --- a/net/minecraft/world/entity/item/PrimedTnt.java +++ b/net/minecraft/world/entity/item/PrimedTnt.java -@@ -73,6 +_,12 @@ +@@ -73,7 +_,28 @@ this.yo = y; this.zo = z; this.owner = owner; +- } + // Sakura start - configure cannon mechanics + switch (level.sakuraConfig().cannons.mechanics.tntSpread) { + case NONE -> this.setDeltaMovement(0.0, 0.0, 0.0); + case Y -> this.setDeltaMovement(this.getDeltaMovement().multiply(0.0, 1.0, 0.0)); + } + // Sakura end - configure cannon mechanics - } - - @Override -@@ -91,6 +_,21 @@ - return !this.isRemoved(); - } - ++ } ++ + // Sakura start - optimise tnt fluid state + @Override + protected boolean updateInWaterStateAndDoFluidPushing() { @@ -31,10 +27,9 @@ + } + } + // Sakura end - optimise tnt fluid state -+ + @Override - protected double getDefaultGravity() { - return 0.04; + protected void defineSynchedData(SynchedEntityData.Builder builder) { @@ -98,7 +_,7 @@ @Override diff --git a/sakura-server/paper-patches/features/0001-Client-Visibility-Settings.patch b/sakura-server/paper-patches/features/0001-Client-Visibility-Settings.patch index 2d95576..45b5a83 100644 --- a/sakura-server/paper-patches/features/0001-Client-Visibility-Settings.patch +++ b/sakura-server/paper-patches/features/0001-Client-Visibility-Settings.patch @@ -5,10 +5,10 @@ Subject: [PATCH] Client Visibility Settings diff --git a/src/main/java/org/bukkit/craftbukkit/entity/CraftPlayer.java b/src/main/java/org/bukkit/craftbukkit/entity/CraftPlayer.java -index dab4d38a2408af5f8f415e5a916845bf08ec536c..7f8bbddc7b5b0c8d13a2772b91df44d6e99aadf3 100644 +index 65630cd6cf77a3fe21c19968d1e84f781b300f88..62b09cac9e0e6c1bef426b0d3a42753c20c5e739 100644 --- a/src/main/java/org/bukkit/craftbukkit/entity/CraftPlayer.java +++ b/src/main/java/org/bukkit/craftbukkit/entity/CraftPlayer.java -@@ -2385,6 +2385,13 @@ public class CraftPlayer extends CraftHumanEntity implements Player { +@@ -2397,6 +2397,13 @@ public class CraftPlayer extends CraftHumanEntity implements Player { handle.keepLevel = data.getBoolean("keepLevel"); } } @@ -22,7 +22,7 @@ index dab4d38a2408af5f8f415e5a916845bf08ec536c..7f8bbddc7b5b0c8d13a2772b91df44d6 } public void setExtraData(CompoundTag nbttagcompound) { -@@ -2414,6 +2421,11 @@ public class CraftPlayer extends CraftHumanEntity implements Player { +@@ -2426,6 +2433,11 @@ public class CraftPlayer extends CraftHumanEntity implements Player { paper.putLong("LastLogin", handle.loginTime); paper.putLong("LastSeen", System.currentTimeMillis()); // Paper end diff --git a/sakura-server/paper-patches/features/0002-Merge-Cannon-Entities.patch b/sakura-server/paper-patches/features/0002-Merge-Cannon-Entities.patch index 67233a1..704a60c 100644 --- a/sakura-server/paper-patches/features/0002-Merge-Cannon-Entities.patch +++ b/sakura-server/paper-patches/features/0002-Merge-Cannon-Entities.patch @@ -5,40 +5,39 @@ Subject: [PATCH] Merge Cannon Entities diff --git a/src/main/java/org/bukkit/craftbukkit/entity/CraftFallingBlock.java b/src/main/java/org/bukkit/craftbukkit/entity/CraftFallingBlock.java -index 22b6016a8d6828b2b10c028b24fd160b3b9f9f59..ad924326b6bfd01b719096ff53ed4b8e513e25af 100644 +index 22b6016a8d6828b2b10c028b24fd160b3b9f9f59..6e6c47e19610aaa4c0af9e21291800ab6400521b 100644 --- a/src/main/java/org/bukkit/craftbukkit/entity/CraftFallingBlock.java +++ b/src/main/java/org/bukkit/craftbukkit/entity/CraftFallingBlock.java -@@ -26,6 +26,28 @@ public class CraftFallingBlock extends CraftEntity implements FallingBlock { +@@ -25,6 +25,27 @@ public class CraftFallingBlock extends CraftEntity implements FallingBlock { + return this.getHandle().heightParity; } // Sakura end - falling block height parity api - + // Sakura start - merge cannon entities + @Override -+ public @org.jetbrains.annotations.NotNull me.samsuik.sakura.entity.merge.MergeLevel getMergeLevel() { ++ public final @org.jetbrains.annotations.NotNull me.samsuik.sakura.entity.merge.MergeLevel getMergeLevel() { + return this.getHandle().getMergeEntityData().getMergeLevel(); + } + + @Override -+ public void setMergeLevel(@org.jetbrains.annotations.NotNull me.samsuik.sakura.entity.merge.MergeLevel level) { ++ public final void setMergeLevel(@org.jetbrains.annotations.NotNull me.samsuik.sakura.entity.merge.MergeLevel level) { + this.getHandle().getMergeEntityData().setMergeLevel(level); + } + + @Override -+ public int getStacked() { ++ public final int getStacked() { + return this.getHandle().getMergeEntityData().getCount(); + } + + @Override -+ public void setStacked(int stacked) { ++ public final void setStacked(int stacked) { + this.getHandle().getMergeEntityData().setCount(stacked); + } + // Sakura end - merge cannon entities -+ + @Override public FallingBlockEntity getHandle() { - return (FallingBlockEntity) this.entity; diff --git a/src/main/java/org/bukkit/craftbukkit/entity/CraftTNTPrimed.java b/src/main/java/org/bukkit/craftbukkit/entity/CraftTNTPrimed.java -index a61aec087fa7cec27a803668bdc1b9e6eb336755..c6f36ab2368d0e2e4555d5f8edc0132dcb61a53c 100644 +index a61aec087fa7cec27a803668bdc1b9e6eb336755..ec29704adf8a50884bd4c38026c40158c4893a72 100644 --- a/src/main/java/org/bukkit/craftbukkit/entity/CraftTNTPrimed.java +++ b/src/main/java/org/bukkit/craftbukkit/entity/CraftTNTPrimed.java @@ -12,6 +12,28 @@ public class CraftTNTPrimed extends CraftEntity implements TNTPrimed { @@ -47,22 +46,22 @@ index a61aec087fa7cec27a803668bdc1b9e6eb336755..c6f36ab2368d0e2e4555d5f8edc0132d + // Sakura start - merge cannon entities + @Override -+ public @org.jetbrains.annotations.NotNull me.samsuik.sakura.entity.merge.MergeLevel getMergeLevel() { ++ public final @org.jetbrains.annotations.NotNull me.samsuik.sakura.entity.merge.MergeLevel getMergeLevel() { + return this.getHandle().getMergeEntityData().getMergeLevel(); + } + + @Override -+ public void setMergeLevel(@org.jetbrains.annotations.NotNull me.samsuik.sakura.entity.merge.MergeLevel level) { ++ public final void setMergeLevel(@org.jetbrains.annotations.NotNull me.samsuik.sakura.entity.merge.MergeLevel level) { + this.getHandle().getMergeEntityData().setMergeLevel(level); + } + + @Override -+ public int getStacked() { ++ public final int getStacked() { + return this.getHandle().getMergeEntityData().getCount(); + } + + @Override -+ public void setStacked(int stacked) { ++ public final void setStacked(int stacked) { + this.getHandle().getMergeEntityData().setCount(stacked); + } + // Sakura end - merge cannon entities diff --git a/sakura-server/paper-patches/files/src/main/java/org/bukkit/craftbukkit/entity/CraftEntity.java.patch b/sakura-server/paper-patches/files/src/main/java/org/bukkit/craftbukkit/entity/CraftEntity.java.patch index 627c305..db80324 100644 --- a/sakura-server/paper-patches/files/src/main/java/org/bukkit/craftbukkit/entity/CraftEntity.java.patch +++ b/sakura-server/paper-patches/files/src/main/java/org/bukkit/craftbukkit/entity/CraftEntity.java.patch @@ -1,7 +1,7 @@ --- a/src/main/java/org/bukkit/craftbukkit/entity/CraftEntity.java +++ b/src/main/java/org/bukkit/craftbukkit/entity/CraftEntity.java -@@ -116,6 +_,18 @@ - throw new AssertionError("Unknown entity " + (entity == null ? null : entity.getClass())); +@@ -90,6 +_,18 @@ + this.entityType = CraftEntityType.minecraftToBukkit(entity.getType()); } + // Sakura start - entity pushed by fluid api @@ -16,6 +16,6 @@ + } + // Sakura end - entity pushed by fluid api + - @Override - public Location getLocation() { - return CraftLocation.toBukkit(this.entity.position(), this.getWorld(), this.entity.getBukkitYaw(), this.entity.getXRot()); + public static CraftEntity getEntity(CraftServer server, T entity) { + Preconditions.checkArgument(entity != null, "Unknown entity"); + diff --git a/sakura-server/paper-patches/files/src/main/java/org/bukkit/craftbukkit/entity/CraftPlayer.java.patch b/sakura-server/paper-patches/files/src/main/java/org/bukkit/craftbukkit/entity/CraftPlayer.java.patch index a5d8db3..33b821e 100644 --- a/sakura-server/paper-patches/files/src/main/java/org/bukkit/craftbukkit/entity/CraftPlayer.java.patch +++ b/sakura-server/paper-patches/files/src/main/java/org/bukkit/craftbukkit/entity/CraftPlayer.java.patch @@ -1,7 +1,7 @@ --- a/src/main/java/org/bukkit/craftbukkit/entity/CraftPlayer.java +++ b/src/main/java/org/bukkit/craftbukkit/entity/CraftPlayer.java -@@ -3003,6 +_,18 @@ - return (this.getHandle().requestedViewDistance() == 0) ? Bukkit.getViewDistance() : this.getHandle().requestedViewDistance(); +@@ -226,6 +_,18 @@ + this.firstPlayed = System.currentTimeMillis(); } + // Sakura start - entity tracking range modifier @@ -16,6 +16,6 @@ + } + // Sakura end - entity tracking range modifier + - // Paper start - @Override - public java.util.Locale locale() { + public GameProfile getProfile() { + return this.getHandle().getGameProfile(); + }