diff --git a/patches/api/0001-Add-PlayerShieldDisableEvent.patch b/patches/api/0001-Add-PlayerShieldDisableEvent.patch index 873863d7c..fb6e22dbf 100644 --- a/patches/api/0001-Add-PlayerShieldDisableEvent.patch +++ b/patches/api/0001-Add-PlayerShieldDisableEvent.patch @@ -6,10 +6,10 @@ Subject: [PATCH] Add PlayerShieldDisableEvent diff --git a/src/main/java/io/papermc/paper/event/player/PlayerShieldDisableEvent.java b/src/main/java/io/papermc/paper/event/player/PlayerShieldDisableEvent.java new file mode 100644 -index 0000000000000000000000000000000000000000..f0f3a57a0ce76b4736219c6ece52b8bc47a7a4ec +index 0000000000000000000000000000000000000000..d4bda54582228377c902e4743168e084e1bf8b2d --- /dev/null +++ b/src/main/java/io/papermc/paper/event/player/PlayerShieldDisableEvent.java -@@ -0,0 +1,50 @@ +@@ -0,0 +1,60 @@ +package io.papermc.paper.event.player; + +import org.bukkit.entity.Entity; @@ -27,11 +27,13 @@ index 0000000000000000000000000000000000000000..f0f3a57a0ce76b4736219c6ece52b8bc +public class PlayerShieldDisableEvent extends PlayerEvent implements Cancellable { + private static final HandlerList handlers = new HandlerList(); + private final Entity damager; ++ private int cooldown; + private boolean cancelled = false; + -+ public PlayerShieldDisableEvent(@NotNull final Player player, @Nullable final Entity damager) { ++ public PlayerShieldDisableEvent(@NotNull final Player player, @Nullable final Entity damager, int cooldown) { + super(player); + this.damager = damager; ++ this.cooldown = cooldown; + } + + @Nullable @@ -39,6 +41,14 @@ index 0000000000000000000000000000000000000000..f0f3a57a0ce76b4736219c6ece52b8bc + return damager; + } + ++ public int getCooldown() { ++ return cooldown; ++ } ++ ++ public void setCooldown(int cooldown) { ++ this.cooldown = cooldown; ++ } ++ + @NotNull + @Override + public HandlerList getHandlers() { diff --git a/patches/api/0006-World-Instance-flag.patch b/patches/api/0006-World-Instance-flag.patch index 678d5e7ad..f1ea94d5e 100644 --- a/patches/api/0006-World-Instance-flag.patch +++ b/patches/api/0006-World-Instance-flag.patch @@ -5,10 +5,10 @@ Subject: [PATCH] World Instance flag diff --git a/src/main/java/org/bukkit/World.java b/src/main/java/org/bukkit/World.java -index ba57e09e66b044fb3a99acde8e0a851e3d125d01..b5e21537f803816ee6112ea9368750237835538c 100644 +index 340f3e569a411e7603fba8d38b79446da0ab4a93..dbb8718e7e62135dc05315be3db01d1a037c1f78 100644 --- a/src/main/java/org/bukkit/World.java +++ b/src/main/java/org/bukkit/World.java -@@ -2609,6 +2609,11 @@ public interface World extends RegionAccessor, WorldInfo, PluginMessageRecipient +@@ -2600,6 +2600,11 @@ public interface World extends RegionAccessor, WorldInfo, PluginMessageRecipient */ public void setAutoSave(boolean value); diff --git a/patches/server/0002-Add-PlayerShieldDisableEvent.patch b/patches/server/0002-Add-PlayerShieldDisableEvent.patch index e5a99a831..ed41ddc4e 100644 --- a/patches/server/0002-Add-PlayerShieldDisableEvent.patch +++ b/patches/server/0002-Add-PlayerShieldDisableEvent.patch @@ -5,19 +5,23 @@ Subject: [PATCH] Add PlayerShieldDisableEvent diff --git a/src/main/java/net/minecraft/world/entity/Mob.java b/src/main/java/net/minecraft/world/entity/Mob.java -index b1ae9b0d8b229e2a6797a173cb11ecc0f43e2592..48e933f5d3f35e845bf7b0eed86ce5d9c2114bcf 100644 +index e3227a806d9e19923783122ea94ae19e7dbe71da..61ad475364346efe7cf3f3d8db07753075d6edb9 100644 --- a/src/main/java/net/minecraft/world/entity/Mob.java +++ b/src/main/java/net/minecraft/world/entity/Mob.java -@@ -1609,6 +1609,7 @@ public abstract class Mob extends LivingEntity { +@@ -1608,7 +1608,10 @@ public abstract class Mob extends LivingEntity { float f = 0.25F + (float) EnchantmentHelper.getBlockEfficiency(this) * 0.05F; if (this.random.nextFloat() < f) { -+ if (!new io.papermc.paper.event.player.PlayerShieldDisableEvent((org.bukkit.entity.Player) player.getBukkitEntity(), getBukkitEntity()).callEvent()) return; // Slice - player.getCooldowns().addCooldown(Items.SHIELD, 100); +- player.getCooldowns().addCooldown(Items.SHIELD, 100); ++ //Slice start ++ io.papermc.paper.event.player.PlayerShieldDisableEvent shieldDisableEvent = new io.papermc.paper.event.player.PlayerShieldDisableEvent((org.bukkit.entity.Player) player.getBukkitEntity(), getBukkitEntity(), 100); ++ if (!shieldDisableEvent.callEvent()) return; // Slice ++ player.getCooldowns().addCooldown(Items.SHIELD, shieldDisableEvent.getCooldown()); this.level.broadcastEntityEvent(player, (byte) 30); } + } diff --git a/src/main/java/net/minecraft/world/entity/player/Player.java b/src/main/java/net/minecraft/world/entity/player/Player.java -index 2483d7df7f1bf94344afd38b37602c645a4a2dff..e909d2cc08a5cea3a8b98ad6faf8eb65c33a35ef 100644 +index 2483d7df7f1bf94344afd38b37602c645a4a2dff..0156525637f8aa2e4e639bc493d8617b5af4cc32 100644 --- a/src/main/java/net/minecraft/world/entity/player/Player.java +++ b/src/main/java/net/minecraft/world/entity/player/Player.java @@ -949,7 +949,7 @@ public abstract class Player extends LivingEntity { @@ -42,12 +46,17 @@ index 2483d7df7f1bf94344afd38b37602c645a4a2dff..e909d2cc08a5cea3a8b98ad6faf8eb65 float f = 0.25F + (float) EnchantmentHelper.getBlockEfficiency(this) * 0.05F; if (sprinting) { -@@ -1427,6 +1433,8 @@ public abstract class Player extends LivingEntity { +@@ -1427,7 +1433,12 @@ public abstract class Player extends LivingEntity { } if (this.random.nextFloat() < f) { -+ org.bukkit.entity.Entity finalAttacker = attacker != null ? attacker.getBukkitEntity() : null; // Slice -+ if (!new io.papermc.paper.event.player.PlayerShieldDisableEvent((org.bukkit.entity.Player) getBukkitEntity(), finalAttacker).callEvent()) return; // Slice - this.getCooldowns().addCooldown(Items.SHIELD, 100); +- this.getCooldowns().addCooldown(Items.SHIELD, 100); ++ // Slice start ++ org.bukkit.entity.Entity finalAttacker = attacker != null ? attacker.getBukkitEntity() : null; ++ io.papermc.paper.event.player.PlayerShieldDisableEvent shieldDisableEvent = new io.papermc.paper.event.player.PlayerShieldDisableEvent((org.bukkit.entity.Player) getBukkitEntity(), finalAttacker, 100); ++ if (!shieldDisableEvent.callEvent()) return; ++ this.getCooldowns().addCooldown(Items.SHIELD, shieldDisableEvent.getCooldown()); ++ // Slice end this.stopUsingItem(); this.level.broadcastEntityEvent(this, (byte) 30); + } diff --git a/patches/server/0007-Track-Player-throughout-block-destroy.patch b/patches/server/0007-Track-Player-throughout-block-destroy.patch index a0448fc51..38a9e48ad 100644 --- a/patches/server/0007-Track-Player-throughout-block-destroy.patch +++ b/patches/server/0007-Track-Player-throughout-block-destroy.patch @@ -37,7 +37,7 @@ index 6837c965592d4584cfc958a1008b98791a0fc780..070dab06db870f3c67dffe7637fe1a92 CompoundTag newData = this.getTagClone(); int newCount = this.getCount(); diff --git a/src/main/java/net/minecraft/world/level/Level.java b/src/main/java/net/minecraft/world/level/Level.java -index 8b6ea24dc8d0286c0814c86dcf4c51cacc572854..6764f174d0685c02d5e81aa38228d02a77bf9632 100644 +index b2fd675cfe9301b0cfc42a8e9bba3fb8356b4789..be12155798e5ad6ae8bf47acfbfdb5b20ad45fe5 100644 --- a/src/main/java/net/minecraft/world/level/Level.java +++ b/src/main/java/net/minecraft/world/level/Level.java @@ -172,6 +172,27 @@ public abstract class Level implements LevelAccessor, AutoCloseable { @@ -115,10 +115,10 @@ index e12b76238cb52a1007f2102473b7f892f8521b62..301dfb74fec49b7f6f0452e4c49c8f1d BlockState iblockdata2 = iblockdata1.hasProperty(BlockStateProperties.WATERLOGGED) && (Boolean) iblockdata1.getValue(BlockStateProperties.WATERLOGGED) ? Blocks.WATER.defaultBlockState() : Blocks.AIR.defaultBlockState(); diff --git a/src/main/java/net/minecraft/world/level/block/state/BlockBehaviour.java b/src/main/java/net/minecraft/world/level/block/state/BlockBehaviour.java -index 61590f2f04a797235299f1bd6b78a08f5bfe4a33..9f757e1f0287f9146298ce6c09bb7aa207edbbc2 100644 +index 7f83c9390823b42fc30d04e1d3222e2825eaad50..a099fcaabe26378157c429ad899714fd3227f9ef 100644 --- a/src/main/java/net/minecraft/world/level/block/state/BlockBehaviour.java +++ b/src/main/java/net/minecraft/world/level/block/state/BlockBehaviour.java -@@ -968,6 +968,18 @@ public abstract class BlockBehaviour { +@@ -988,6 +988,18 @@ public abstract class BlockBehaviour { blockposition_mutableblockposition.setWithOffset(pos, enumdirection); BlockState iblockdata = world.getBlockState(blockposition_mutableblockposition); diff --git a/patches/server/0012-Packet-obfuscation-and-reduction.patch b/patches/server/0012-Packet-obfuscation-and-reduction.patch index 80c255f1a..ea9e5978c 100644 --- a/patches/server/0012-Packet-obfuscation-and-reduction.patch +++ b/patches/server/0012-Packet-obfuscation-and-reduction.patch @@ -155,10 +155,10 @@ index f91e1a876ad4c46a7c92cead18947a941b4d9e68..13973b8803afefd491dc05e1df6e9b10 if (this.entity instanceof LivingEntity) { diff --git a/src/main/java/net/minecraft/world/entity/Entity.java b/src/main/java/net/minecraft/world/entity/Entity.java -index 382d32045417174f5ef3fe556762146d07e30e17..d76e8d2030adba305368590158d8767cfe5190e1 100644 +index 5b222edfda19c1446f1fe6ad67b2248f003ff0b0..be293253c6e90c1f109b5e270c527a4e2b0cff2f 100644 --- a/src/main/java/net/minecraft/world/entity/Entity.java +++ b/src/main/java/net/minecraft/world/entity/Entity.java -@@ -2991,7 +2991,7 @@ public abstract class Entity implements Nameable, EntityAccess, CommandSource { +@@ -2986,7 +2986,7 @@ public abstract class Entity implements Nameable, EntityAccess, CommandSource { this.entityData.markDirty(Entity.DATA_AIR_SUPPLY_ID); return; } @@ -168,7 +168,7 @@ index 382d32045417174f5ef3fe556762146d07e30e17..d76e8d2030adba305368590158d8767c } diff --git a/src/main/java/net/minecraft/world/entity/player/Player.java b/src/main/java/net/minecraft/world/entity/player/Player.java -index e909d2cc08a5cea3a8b98ad6faf8eb65c33a35ef..e3725c380839257fa5b08c34b339ce30c8f3143f 100644 +index 0156525637f8aa2e4e639bc493d8617b5af4cc32..1c598a97ed78a744907ae310f3568c447aad0949 100644 --- a/src/main/java/net/minecraft/world/entity/player/Player.java +++ b/src/main/java/net/minecraft/world/entity/player/Player.java @@ -632,7 +632,7 @@ public abstract class Player extends LivingEntity { diff --git a/patches/server/0014-World-Instance-flag.patch b/patches/server/0014-World-Instance-flag.patch index e9951cad4..fed261bd5 100644 --- a/patches/server/0014-World-Instance-flag.patch +++ b/patches/server/0014-World-Instance-flag.patch @@ -5,10 +5,10 @@ Subject: [PATCH] World Instance flag diff --git a/src/main/java/net/minecraft/server/level/ServerLevel.java b/src/main/java/net/minecraft/server/level/ServerLevel.java -index b5b56d4549e97abbbe9e91d881b9bca8428f1eec..b884688d0fb3e46e04a4546c202476df6f94f59b 100644 +index 98209532ad3e692d7e459640123f78bbd9a65889..9b3af8f2a433368d722cd442c07b2a2cfb16dc54 100644 --- a/src/main/java/net/minecraft/server/level/ServerLevel.java +++ b/src/main/java/net/minecraft/server/level/ServerLevel.java -@@ -212,6 +212,7 @@ +@@ -212,6 +212,7 @@ public class ServerLevel extends Level implements WorldGenLevel { public final UUID uuid; public boolean hasPhysicsEvent = true; // Paper public boolean hasEntityMoveEvent = false; // Paper @@ -16,12 +16,11 @@ index b5b56d4549e97abbbe9e91d881b9bca8428f1eec..b884688d0fb3e46e04a4546c202476df private final alternate.current.wire.WireHandler wireHandler = new alternate.current.wire.WireHandler(this); // Paper - optimize redstone (Alternate Current) public static Throwable getAddToWorldStackTrace(Entity entity) { return new Throwable(entity + " Added to world at " + new java.util.Date()); - diff --git a/src/main/java/org/bukkit/craftbukkit/CraftWorld.java b/src/main/java/org/bukkit/craftbukkit/CraftWorld.java -index b2c5fbfcb64f3056d7975db43b2db45bfd5e9890..0bed6e05db5c6170161158fdd520042179491c6b 100644 +index 48825eaba9677a8b1e4fff80738e17d08e3307f8..64e2b9554d7a9911e1eff121d4f56d71e97aca68 100644 --- a/src/main/java/org/bukkit/craftbukkit/CraftWorld.java +++ b/src/main/java/org/bukkit/craftbukkit/CraftWorld.java -@@ -1268,6 +1268,18 @@ public class CraftWorld extends CraftRegionAccessor implements World { +@@ -1274,6 +1274,18 @@ public class CraftWorld extends CraftRegionAccessor implements World { world.noSave = !value; }