From 05a029a4d34138b25cc7b836f26a0d8d8a224858 Mon Sep 17 00:00:00 2001 From: Ben Kerllenevich Date: Sun, 20 Jun 2021 07:23:26 -0400 Subject: [PATCH] MORE MORE MORE --- .../0151-Striders-give-saddle-back.patch | 47 ----------------- .../0152-PlayerBookTooLargeEvent.patch | 34 ------------- ...therite-armor-grants-fire-resistance.patch | 51 ------------------- ...0154-Fix-rotating-UP-DOWN-CW-and-CCW.patch | 36 ------------- .../0155-Add-MC-4-fix-back.patch | 19 ------- patches/server/0143-Implement-TPSBar.patch | 4 +- .../0144-Striders-give-saddle-back.patch | 49 ++++++++++++++++++ .../server/0145-PlayerBookTooLargeEvent.patch | 34 +++++++++++++ ...therite-armor-grants-fire-resistance.patch | 51 +++++++++++++++++++ ...0147-Fix-rotating-UP-DOWN-CW-and-CCW.patch | 36 +++++++++++++ patches/server/0148-Add-MC-4-fix-back.patch | 19 +++++++ 11 files changed, 191 insertions(+), 189 deletions(-) delete mode 100644 patches/server-unmapped/0151-Striders-give-saddle-back.patch delete mode 100644 patches/server-unmapped/0152-PlayerBookTooLargeEvent.patch delete mode 100644 patches/server-unmapped/0153-Full-netherite-armor-grants-fire-resistance.patch delete mode 100644 patches/server-unmapped/0154-Fix-rotating-UP-DOWN-CW-and-CCW.patch delete mode 100644 patches/server-unmapped/0155-Add-MC-4-fix-back.patch create mode 100644 patches/server/0144-Striders-give-saddle-back.patch create mode 100644 patches/server/0145-PlayerBookTooLargeEvent.patch create mode 100644 patches/server/0146-Full-netherite-armor-grants-fire-resistance.patch create mode 100644 patches/server/0147-Fix-rotating-UP-DOWN-CW-and-CCW.patch create mode 100644 patches/server/0148-Add-MC-4-fix-back.patch diff --git a/patches/server-unmapped/0151-Striders-give-saddle-back.patch b/patches/server-unmapped/0151-Striders-give-saddle-back.patch deleted file mode 100644 index 350d49ac6..000000000 --- a/patches/server-unmapped/0151-Striders-give-saddle-back.patch +++ /dev/null @@ -1,47 +0,0 @@ -From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001 -From: Ben Kerllenevich -Date: Sun, 13 Dec 2020 20:40:57 -0500 -Subject: [PATCH] Striders give saddle back - - -diff --git a/src/main/java/net/minecraft/world/entity/monster/EntityStrider.java b/src/main/java/net/minecraft/world/entity/monster/EntityStrider.java -index 892aa844a98ae0d192737c6fc6df0a219256a47b..5e4cc99a746d98231bbb71672fbc02431e4fab48 100644 ---- a/src/main/java/net/minecraft/world/entity/monster/EntityStrider.java -+++ b/src/main/java/net/minecraft/world/entity/monster/EntityStrider.java -@@ -448,6 +448,18 @@ public class EntityStrider extends EntityAnimal implements ISteerable, ISaddleab - - if (!flag && this.hasSaddle() && !this.isVehicle() && !entityhuman.eq()) { - if (!this.world.isClientSide) { -+ // Purpur start -+ if (world.purpurConfig.striderGiveSaddleBack && entityhuman.isSneaking()) { -+ this.saddleStorage.setSaddle(false); -+ if (!entityhuman.abilities.canInstantlyBuild) { -+ ItemStack saddle = new ItemStack(Items.SADDLE); -+ if (!entityhuman.inventory.pickup(saddle)) { -+ entityhuman.drop(saddle, false); -+ } -+ } -+ return EnumInteractionResult.SUCCESS; -+ } -+ // Purpur end - entityhuman.startRiding(this); - } - -diff --git a/src/main/java/net/pl3x/purpur/PurpurWorldConfig.java b/src/main/java/net/pl3x/purpur/PurpurWorldConfig.java -index 3d1cfd550b12c8dd4bd536c518ac169ff6bbfe50..130dc441be74963c272381e992ea39883804f9f7 100644 ---- a/src/main/java/net/pl3x/purpur/PurpurWorldConfig.java -+++ b/src/main/java/net/pl3x/purpur/PurpurWorldConfig.java -@@ -1562,11 +1562,13 @@ public class PurpurWorldConfig { - public boolean striderRidable = false; - public boolean striderRidableInWater = false; - public int striderBreedingTicks = 6000; -+ public boolean striderGiveSaddleBack = false; - public double striderMaxHealth = 20.0D; - private void striderSettings() { - striderRidable = getBoolean("mobs.strider.ridable", striderRidable); - striderRidableInWater = getBoolean("mobs.strider.ridable-in-water", striderRidableInWater); - striderBreedingTicks = getInt("mobs.strider.breeding-delay-ticks", striderBreedingTicks); -+ striderGiveSaddleBack = getBoolean("mobs.strider.give-saddle-back", striderGiveSaddleBack); - if (PurpurConfig.version < 10) { - double oldValue = getDouble("mobs.strider.attributes.max-health", striderMaxHealth); - set("mobs.strider.attributes.max-health", null); diff --git a/patches/server-unmapped/0152-PlayerBookTooLargeEvent.patch b/patches/server-unmapped/0152-PlayerBookTooLargeEvent.patch deleted file mode 100644 index e79c69c48..000000000 --- a/patches/server-unmapped/0152-PlayerBookTooLargeEvent.patch +++ /dev/null @@ -1,34 +0,0 @@ -From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001 -From: William Blake Galbreath -Date: Wed, 23 Dec 2020 00:43:59 -0600 -Subject: [PATCH] PlayerBookTooLargeEvent - - -diff --git a/src/main/java/net/minecraft/server/network/PlayerConnection.java b/src/main/java/net/minecraft/server/network/PlayerConnection.java -index dc830f1e23b6eb81d47e111e3f4d8d19010b4c9f..797e067a08395af491ffdb64d01eed6535ffd1f7 100644 ---- a/src/main/java/net/minecraft/server/network/PlayerConnection.java -+++ b/src/main/java/net/minecraft/server/network/PlayerConnection.java -@@ -1092,6 +1092,7 @@ public class PlayerConnection implements PacketListenerPlayIn { - NBTTagList pageList = testStack.getTag().getList("pages", 8); - if (pageList.size() > 100) { - PlayerConnection.LOGGER.warn(this.player.getName() + " tried to send a book with too many pages"); -+ net.pl3x.purpur.event.player.PlayerBookTooLargeEvent event = new net.pl3x.purpur.event.player.PlayerBookTooLargeEvent(player.getBukkitEntity(), testStack.asBukkitCopy()); if (event.shouldKickPlayer()) // Purpur - minecraftServer.scheduleOnMain(() -> this.disconnect("Book too large!", org.bukkit.event.player.PlayerKickEvent.Cause.ILLEGAL_ACTION)); // Paper - kick event cause - return; - } -@@ -1104,6 +1105,7 @@ public class PlayerConnection implements PacketListenerPlayIn { - int byteLength = testString.getBytes(java.nio.charset.StandardCharsets.UTF_8).length; - if (byteLength > 256 * 4) { - PlayerConnection.LOGGER.warn(this.player.getName() + " tried to send a book with with a page too large!"); -+ net.pl3x.purpur.event.player.PlayerBookTooLargeEvent event = new net.pl3x.purpur.event.player.PlayerBookTooLargeEvent(player.getBukkitEntity(), testStack.asBukkitCopy()); if (event.shouldKickPlayer()) // Purpur - minecraftServer.scheduleOnMain(() -> this.disconnect("Book too large!", org.bukkit.event.player.PlayerKickEvent.Cause.ILLEGAL_ACTION)); // Paper - kick event cause - return; - } -@@ -1127,6 +1129,7 @@ public class PlayerConnection implements PacketListenerPlayIn { - - if (byteTotal > byteAllowed) { - PlayerConnection.LOGGER.warn(this.player.getName() + " tried to send too large of a book. Book Size: " + byteTotal + " - Allowed: "+ byteAllowed + " - Pages: " + pageList.size()); -+ net.pl3x.purpur.event.player.PlayerBookTooLargeEvent event = new net.pl3x.purpur.event.player.PlayerBookTooLargeEvent(player.getBukkitEntity(), testStack.asBukkitCopy()); if (event.shouldKickPlayer()) // Purpur - minecraftServer.scheduleOnMain(() -> this.disconnect("Book too large!", org.bukkit.event.player.PlayerKickEvent.Cause.ILLEGAL_ACTION)); // Paper - kick event cause - return; - } diff --git a/patches/server-unmapped/0153-Full-netherite-armor-grants-fire-resistance.patch b/patches/server-unmapped/0153-Full-netherite-armor-grants-fire-resistance.patch deleted file mode 100644 index f3970392c..000000000 --- a/patches/server-unmapped/0153-Full-netherite-armor-grants-fire-resistance.patch +++ /dev/null @@ -1,51 +0,0 @@ -From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001 -From: William Blake Galbreath -Date: Thu, 24 Dec 2020 11:00:15 -0600 -Subject: [PATCH] Full netherite armor grants fire resistance - - -diff --git a/src/main/java/net/minecraft/world/entity/player/EntityHuman.java b/src/main/java/net/minecraft/world/entity/player/EntityHuman.java -index 4bb40046f1f21bdfeaf10961001e90b1724e00bb..f28553724fa575f62a67f98891b35a896bb4c3b0 100644 ---- a/src/main/java/net/minecraft/world/entity/player/EntityHuman.java -+++ b/src/main/java/net/minecraft/world/entity/player/EntityHuman.java -@@ -339,6 +339,16 @@ public abstract class EntityHuman extends EntityLiving { - this.addEffect(new MobEffect(MobEffects.WATER_BREATHING, 200, 0, false, false, true), org.bukkit.event.entity.EntityPotionEffectEvent.Cause.TURTLE_HELMET); // CraftBukkit - } - -+ // Purpur start -+ if (this.world.purpurConfig.playerNetheriteFireResistanceDuration > 0 && this.world.getTime() % 20 == 0) { -+ if (itemstack.getItem() == Items.NETHERITE_HELMET -+ && this.getEquipment(EnumItemSlot.CHEST).getItem() == Items.NETHERITE_CHESTPLATE -+ && this.getEquipment(EnumItemSlot.LEGS).getItem() == Items.NETHERITE_LEGGINGS -+ && this.getEquipment(EnumItemSlot.FEET).getItem() == Items.NETHERITE_BOOTS) { -+ this.addEffect(new MobEffect(MobEffects.FIRE_RESISTANCE, this.world.purpurConfig.playerNetheriteFireResistanceDuration, this.world.purpurConfig.playerNetheriteFireResistanceAmplifier, this.world.purpurConfig.playerNetheriteFireResistanceAmbient, this.world.purpurConfig.playerNetheriteFireResistanceShowParticles, this.world.purpurConfig.playerNetheriteFireResistanceShowIcon), org.bukkit.event.entity.EntityPotionEffectEvent.Cause.NETHERITE_ARMOR); -+ } -+ } -+ // Purpur end - } - - protected ItemCooldown i() { -diff --git a/src/main/java/net/pl3x/purpur/PurpurWorldConfig.java b/src/main/java/net/pl3x/purpur/PurpurWorldConfig.java -index 130dc441be74963c272381e992ea39883804f9f7..318513f5612a694c2b240840b24a39210457c202 100644 ---- a/src/main/java/net/pl3x/purpur/PurpurWorldConfig.java -+++ b/src/main/java/net/pl3x/purpur/PurpurWorldConfig.java -@@ -356,6 +356,19 @@ public class PurpurWorldConfig { - playerDeathExpDropMax = getInt("gameplay-mechanics.player.exp-dropped-on-death.maximum", playerDeathExpDropMax); - } - -+ public int playerNetheriteFireResistanceDuration = 0; -+ public int playerNetheriteFireResistanceAmplifier = 0; -+ public boolean playerNetheriteFireResistanceAmbient = false; -+ public boolean playerNetheriteFireResistanceShowParticles = false; -+ public boolean playerNetheriteFireResistanceShowIcon = true; -+ private void playerNetheriteFireResistance() { -+ playerNetheriteFireResistanceDuration = getInt("gameplay-mechanics.player.netherite-fire-resistance.duration", playerNetheriteFireResistanceDuration); -+ playerNetheriteFireResistanceAmplifier = getInt("gameplay-mechanics.player.netherite-fire-resistance.amplifier", playerNetheriteFireResistanceAmplifier); -+ playerNetheriteFireResistanceAmbient = getBoolean("gameplay-mechanics.player.netherite-fire-resistance.ambient", playerNetheriteFireResistanceAmbient); -+ playerNetheriteFireResistanceShowParticles = getBoolean("gameplay-mechanics.player.netherite-fire-resistance.show-particles", playerNetheriteFireResistanceShowParticles); -+ playerNetheriteFireResistanceShowIcon = getBoolean("gameplay-mechanics.player.netherite-fire-resistance.show-icon", playerNetheriteFireResistanceShowIcon); -+ } -+ - public int playerSpawnInvulnerableTicks = 60; - public boolean playerInvulnerableWhileAcceptingResourcePack = false; - private void playerInvulnerabilities() { diff --git a/patches/server-unmapped/0154-Fix-rotating-UP-DOWN-CW-and-CCW.patch b/patches/server-unmapped/0154-Fix-rotating-UP-DOWN-CW-and-CCW.patch deleted file mode 100644 index 49c417f48..000000000 --- a/patches/server-unmapped/0154-Fix-rotating-UP-DOWN-CW-and-CCW.patch +++ /dev/null @@ -1,36 +0,0 @@ -From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001 -From: William Blake Galbreath -Date: Wed, 6 Jan 2021 02:19:29 -0600 -Subject: [PATCH] Fix rotating UP/DOWN CW and CCW - - -diff --git a/src/main/java/net/minecraft/core/EnumDirection.java b/src/main/java/net/minecraft/core/EnumDirection.java -index 1a765ece1ad6d691c509a018469aa9ecf4f2f8f3..7dbd6619d50492ca7df4df5a2ee3d408abb229a4 100644 ---- a/src/main/java/net/minecraft/core/EnumDirection.java -+++ b/src/main/java/net/minecraft/core/EnumDirection.java -@@ -127,6 +127,12 @@ public enum EnumDirection implements INamable { - return EnumDirection.NORTH; - case EAST: - return EnumDirection.SOUTH; -+ // Purpur start -+ case UP: -+ return EnumDirection.UP; -+ case DOWN: -+ return EnumDirection.DOWN; -+ // Purpur end - default: - throw new IllegalStateException("Unable to get Y-rotated facing of " + this); - } -@@ -143,6 +149,12 @@ public enum EnumDirection implements INamable { - return EnumDirection.SOUTH; - case EAST: - return EnumDirection.NORTH; -+ // Purpur start -+ case UP: -+ return EnumDirection.UP; -+ case DOWN: -+ return EnumDirection.DOWN; -+ // Purpur end - default: - throw new IllegalStateException("Unable to get CCW facing of " + this); - } diff --git a/patches/server-unmapped/0155-Add-MC-4-fix-back.patch b/patches/server-unmapped/0155-Add-MC-4-fix-back.patch deleted file mode 100644 index 1aeb516d6..000000000 --- a/patches/server-unmapped/0155-Add-MC-4-fix-back.patch +++ /dev/null @@ -1,19 +0,0 @@ -From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001 -From: William Blake Galbreath -Date: Thu, 7 Jan 2021 07:51:25 -0600 -Subject: [PATCH] Add MC-4 fix back - - -diff --git a/src/main/java/net/minecraft/world/entity/item/EntityItem.java b/src/main/java/net/minecraft/world/entity/item/EntityItem.java -index cd711fa6f4d8e98fbfa9e3956d9fb1d36e6bb2d9..dd4997e7ffac4773e01add88efec7c0dcd7b4df0 100644 ---- a/src/main/java/net/minecraft/world/entity/item/EntityItem.java -+++ b/src/main/java/net/minecraft/world/entity/item/EntityItem.java -@@ -583,7 +583,7 @@ public class EntityItem extends Entity { - - // Paper start - fix MC-4 - public void setPositionRaw(double x, double y, double z) { -- if (com.destroystokyo.paper.PaperConfig.fixEntityPositionDesync) { -+ if (com.destroystokyo.paper.PaperConfig.fixEntityPositionDesync) { // Tuinity - revert // Purpur - no - // encode/decode from PacketPlayOutEntity - x = MathHelper.floorLong(x * 4096.0D) * (1 / 4096.0D); - y = MathHelper.floorLong(y * 4096.0D) * (1 / 4096.0D); diff --git a/patches/server/0143-Implement-TPSBar.patch b/patches/server/0143-Implement-TPSBar.patch index 70b06f623..34d59a0a1 100644 --- a/patches/server/0143-Implement-TPSBar.patch +++ b/patches/server/0143-Implement-TPSBar.patch @@ -86,7 +86,7 @@ index 0000000000000000000000000000000000000000..2803a1b95121fbff3066fd2d1abaf872 +} diff --git a/src/main/java/net/pl3x/purpur/task/TPSBarTask.java b/src/main/java/net/pl3x/purpur/task/TPSBarTask.java new file mode 100644 -index 0000000000000000000000000000000000000000..11791bbd4dbe4037f7a5b630be2ff1fa4d599513 +index 0000000000000000000000000000000000000000..a9d71d2b769b8e4e0f5039e997fc5ebc1cc9bfbb --- /dev/null +++ b/src/main/java/net/pl3x/purpur/task/TPSBarTask.java @@ -0,0 +1,116 @@ @@ -137,7 +137,7 @@ index 0000000000000000000000000000000000000000..11791bbd4dbe4037f7a5b630be2ff1fa + return; + } + -+ double tps = Bukkit.getTPS()[0]; ++ double tps = Bukkit.getTPS()[0]; + if (tps > 20.0D) { + tps = 20.0D; + } else if (tps < 0.0D) { diff --git a/patches/server/0144-Striders-give-saddle-back.patch b/patches/server/0144-Striders-give-saddle-back.patch new file mode 100644 index 000000000..f9441e63e --- /dev/null +++ b/patches/server/0144-Striders-give-saddle-back.patch @@ -0,0 +1,49 @@ +From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001 +From: Ben Kerllenevich +Date: Sun, 13 Dec 2020 20:40:57 -0500 +Subject: [PATCH] Striders give saddle back + + +diff --git a/src/main/java/net/minecraft/world/entity/monster/Strider.java b/src/main/java/net/minecraft/world/entity/monster/Strider.java +index 294f276fa8d2d754abde11ebc3d39e5e68996b05..b3928617f732b49cfc124e9bdb879110413defd7 100644 +--- a/src/main/java/net/minecraft/world/entity/monster/Strider.java ++++ b/src/main/java/net/minecraft/world/entity/monster/Strider.java +@@ -450,6 +450,18 @@ public class Strider extends Animal implements ItemSteerable, Saddleable { + + if (!flag && this.isSaddled() && !this.isVehicle() && !player.isSecondaryUseActive()) { + if (!this.level.isClientSide) { ++ // Purpur start ++ if (level.purpurConfig.striderGiveSaddleBack && player.isCrouching()) { ++ this.steering.setSaddle(false); ++ if (!player.getAbilities().instabuild) { ++ ItemStack saddle = new ItemStack(Items.SADDLE); ++ if (!player.getInventory().add(saddle)) { ++ player.drop(saddle, false); ++ } ++ } ++ return InteractionResult.SUCCESS; ++ } ++ // Purpur end + player.startRiding(this); + } + +diff --git a/src/main/java/net/pl3x/purpur/PurpurWorldConfig.java b/src/main/java/net/pl3x/purpur/PurpurWorldConfig.java +index 56010a52b16075e5307e33e02a9fb25b45ff0032..942a6683fb17f12adffefd007e79eecea2ffe0bb 100644 +--- a/src/main/java/net/pl3x/purpur/PurpurWorldConfig.java ++++ b/src/main/java/net/pl3x/purpur/PurpurWorldConfig.java +@@ -1521,6 +1521,7 @@ public class PurpurWorldConfig { + public boolean striderRidableInWater = false; + public double striderMaxHealth = 20.0D; + public int striderBreedingTicks = 6000; ++ public boolean striderGiveSaddleBack = false; + private void striderSettings() { + striderRidable = getBoolean("mobs.strider.ridable", striderRidable); + striderRidableInWater = getBoolean("mobs.strider.ridable-in-water", striderRidableInWater); +@@ -1531,6 +1532,7 @@ public class PurpurWorldConfig { + } + striderMaxHealth = getDouble("mobs.strider.attributes.max_health", striderMaxHealth); + striderBreedingTicks = getInt("mobs.strider.breeding-delay-ticks", striderBreedingTicks); ++ striderGiveSaddleBack = getBoolean("mobs.strider.give-saddle-back", striderGiveSaddleBack); + } + + public boolean traderLlamaRidable = false; diff --git a/patches/server/0145-PlayerBookTooLargeEvent.patch b/patches/server/0145-PlayerBookTooLargeEvent.patch new file mode 100644 index 000000000..db3480689 --- /dev/null +++ b/patches/server/0145-PlayerBookTooLargeEvent.patch @@ -0,0 +1,34 @@ +From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001 +From: William Blake Galbreath +Date: Wed, 23 Dec 2020 00:43:59 -0600 +Subject: [PATCH] PlayerBookTooLargeEvent + + +diff --git a/src/main/java/net/minecraft/server/network/ServerGamePacketListenerImpl.java b/src/main/java/net/minecraft/server/network/ServerGamePacketListenerImpl.java +index 3146734c26aa6e6834cfc91fdd143c01a9c96dc5..53ce3179f61a7cdf1781a1e39a9d96ea92c816fa 100644 +--- a/src/main/java/net/minecraft/server/network/ServerGamePacketListenerImpl.java ++++ b/src/main/java/net/minecraft/server/network/ServerGamePacketListenerImpl.java +@@ -1083,6 +1083,7 @@ public class ServerGamePacketListenerImpl implements ServerPlayerConnection, Ser + ListTag pageList = testStack.getTag().getList("pages", 8); + if (pageList.size() > 100) { + ServerGamePacketListenerImpl.LOGGER.warn(this.player.getScoreboardName() + " tried to send a book with too many pages"); ++ net.pl3x.purpur.event.player.PlayerBookTooLargeEvent event = new net.pl3x.purpur.event.player.PlayerBookTooLargeEvent(player.getBukkitEntity(), testStack.asBukkitCopy()); if (event.shouldKickPlayer()) // Purpur + server.scheduleOnMain(() -> this.disconnect("Book too large!", org.bukkit.event.player.PlayerKickEvent.Cause.ILLEGAL_ACTION)); // Paper - kick event cause + return; + } +@@ -1095,6 +1096,7 @@ public class ServerGamePacketListenerImpl implements ServerPlayerConnection, Ser + int byteLength = testString.getBytes(java.nio.charset.StandardCharsets.UTF_8).length; + if (byteLength > 256 * 4) { + ServerGamePacketListenerImpl.LOGGER.warn(this.player.getScoreboardName() + " tried to send a book with with a page too large!"); ++ net.pl3x.purpur.event.player.PlayerBookTooLargeEvent event = new net.pl3x.purpur.event.player.PlayerBookTooLargeEvent(player.getBukkitEntity(), testStack.asBukkitCopy()); if (event.shouldKickPlayer()) // Purpur + server.scheduleOnMain(() -> this.disconnect("Book too large!", org.bukkit.event.player.PlayerKickEvent.Cause.ILLEGAL_ACTION)); // Paper - kick event cause + return; + } +@@ -1118,6 +1120,7 @@ public class ServerGamePacketListenerImpl implements ServerPlayerConnection, Ser + + if (byteTotal > byteAllowed) { + ServerGamePacketListenerImpl.LOGGER.warn(this.player.getScoreboardName() + " tried to send too large of a book. Book Size: " + byteTotal + " - Allowed: "+ byteAllowed + " - Pages: " + pageList.size()); ++ net.pl3x.purpur.event.player.PlayerBookTooLargeEvent event = new net.pl3x.purpur.event.player.PlayerBookTooLargeEvent(player.getBukkitEntity(), testStack.asBukkitCopy()); if (event.shouldKickPlayer()) // Purpur + server.scheduleOnMain(() -> this.disconnect("Book too large!", org.bukkit.event.player.PlayerKickEvent.Cause.ILLEGAL_ACTION)); // Paper - kick event cause + return; + } diff --git a/patches/server/0146-Full-netherite-armor-grants-fire-resistance.patch b/patches/server/0146-Full-netherite-armor-grants-fire-resistance.patch new file mode 100644 index 000000000..63480a75f --- /dev/null +++ b/patches/server/0146-Full-netherite-armor-grants-fire-resistance.patch @@ -0,0 +1,51 @@ +From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001 +From: William Blake Galbreath +Date: Thu, 24 Dec 2020 11:00:15 -0600 +Subject: [PATCH] Full netherite armor grants fire resistance + + +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 62540f8af27709976e109bd79975a9a5cd11c8d3..ac2235f40571818e6fc82be929bb3662726ba857 100644 +--- a/src/main/java/net/minecraft/world/entity/player/Player.java ++++ b/src/main/java/net/minecraft/world/entity/player/Player.java +@@ -362,6 +362,16 @@ public abstract class Player extends LivingEntity { + this.addEffect(new MobEffectInstance(MobEffects.WATER_BREATHING, 200, 0, false, false, true), org.bukkit.event.entity.EntityPotionEffectEvent.Cause.TURTLE_HELMET); // CraftBukkit + } + ++ // Purpur start ++ if (this.level.purpurConfig.playerNetheriteFireResistanceDuration > 0 && this.level.getGameTime() % 20 == 0) { ++ if (itemstack.is(Items.NETHERITE_HELMET) ++ && this.getItemBySlot(EquipmentSlot.CHEST).is(Items.NETHERITE_CHESTPLATE) ++ && this.getItemBySlot(EquipmentSlot.LEGS).is(Items.NETHERITE_LEGGINGS) ++ && this.getItemBySlot(EquipmentSlot.FEET).is(Items.NETHERITE_BOOTS)) { ++ this.addEffect(new MobEffectInstance(MobEffects.FIRE_RESISTANCE, this.level.purpurConfig.playerNetheriteFireResistanceDuration, this.level.purpurConfig.playerNetheriteFireResistanceAmplifier, this.level.purpurConfig.playerNetheriteFireResistanceAmbient, this.level.purpurConfig.playerNetheriteFireResistanceShowParticles, this.level.purpurConfig.playerNetheriteFireResistanceShowIcon), org.bukkit.event.entity.EntityPotionEffectEvent.Cause.NETHERITE_ARMOR); ++ } ++ } ++ // Purpur end + } + + protected ItemCooldowns createItemCooldowns() { +diff --git a/src/main/java/net/pl3x/purpur/PurpurWorldConfig.java b/src/main/java/net/pl3x/purpur/PurpurWorldConfig.java +index 942a6683fb17f12adffefd007e79eecea2ffe0bb..56c3ea88d89226063e79ec2357354ed2c045eccb 100644 +--- a/src/main/java/net/pl3x/purpur/PurpurWorldConfig.java ++++ b/src/main/java/net/pl3x/purpur/PurpurWorldConfig.java +@@ -251,6 +251,19 @@ public class PurpurWorldConfig { + villageSiegeSpawning = getBoolean("gameplay-mechanics.mob-spawning.village-sieges", predicate); + } + ++ public int playerNetheriteFireResistanceDuration = 0; ++ public int playerNetheriteFireResistanceAmplifier = 0; ++ public boolean playerNetheriteFireResistanceAmbient = false; ++ public boolean playerNetheriteFireResistanceShowParticles = false; ++ public boolean playerNetheriteFireResistanceShowIcon = true; ++ private void playerNetheriteFireResistance() { ++ playerNetheriteFireResistanceDuration = getInt("gameplay-mechanics.player.netherite-fire-resistance.duration", playerNetheriteFireResistanceDuration); ++ playerNetheriteFireResistanceAmplifier = getInt("gameplay-mechanics.player.netherite-fire-resistance.amplifier", playerNetheriteFireResistanceAmplifier); ++ playerNetheriteFireResistanceAmbient = getBoolean("gameplay-mechanics.player.netherite-fire-resistance.ambient", playerNetheriteFireResistanceAmbient); ++ playerNetheriteFireResistanceShowParticles = getBoolean("gameplay-mechanics.player.netherite-fire-resistance.show-particles", playerNetheriteFireResistanceShowParticles); ++ playerNetheriteFireResistanceShowIcon = getBoolean("gameplay-mechanics.player.netherite-fire-resistance.show-icon", playerNetheriteFireResistanceShowIcon); ++ } ++ + public boolean idleTimeoutKick = true; + public boolean idleTimeoutTickNearbyEntities = true; + public boolean idleTimeoutCountAsSleeping = false; diff --git a/patches/server/0147-Fix-rotating-UP-DOWN-CW-and-CCW.patch b/patches/server/0147-Fix-rotating-UP-DOWN-CW-and-CCW.patch new file mode 100644 index 000000000..4f6572695 --- /dev/null +++ b/patches/server/0147-Fix-rotating-UP-DOWN-CW-and-CCW.patch @@ -0,0 +1,36 @@ +From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001 +From: William Blake Galbreath +Date: Wed, 6 Jan 2021 02:19:29 -0600 +Subject: [PATCH] Fix rotating UP/DOWN CW and CCW + + +diff --git a/src/main/java/net/minecraft/core/Direction.java b/src/main/java/net/minecraft/core/Direction.java +index 593d6251c75ec337175d08b85000239ba7da1af2..c040c9ce886f9970a70867344fd0e0b226d3ff9f 100644 +--- a/src/main/java/net/minecraft/core/Direction.java ++++ b/src/main/java/net/minecraft/core/Direction.java +@@ -235,6 +235,12 @@ public enum Direction implements StringRepresentable { + return NORTH; + case EAST: + return SOUTH; ++ // Purpur start ++ case UP: ++ return UP; ++ case DOWN: ++ return DOWN; ++ // Purpur end + default: + throw new IllegalStateException("Unable to get Y-rotated facing of " + this); + } +@@ -314,6 +320,12 @@ public enum Direction implements StringRepresentable { + return SOUTH; + case EAST: + return NORTH; ++ // Purpur start ++ case UP: ++ return UP; ++ case DOWN: ++ return DOWN; ++ // Purpur end + default: + throw new IllegalStateException("Unable to get CCW facing of " + this); + } diff --git a/patches/server/0148-Add-MC-4-fix-back.patch b/patches/server/0148-Add-MC-4-fix-back.patch new file mode 100644 index 000000000..d5c1b6ce9 --- /dev/null +++ b/patches/server/0148-Add-MC-4-fix-back.patch @@ -0,0 +1,19 @@ +From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001 +From: William Blake Galbreath +Date: Thu, 7 Jan 2021 07:51:25 -0600 +Subject: [PATCH] Add MC-4 fix back + + +diff --git a/src/main/java/net/minecraft/world/entity/Entity.java b/src/main/java/net/minecraft/world/entity/Entity.java +index 4717b3292bbbc5c1ee7246668b30e515caf48a80..6460b84214fc517d05e655001f4ef92943a8ca90 100644 +--- a/src/main/java/net/minecraft/world/entity/Entity.java ++++ b/src/main/java/net/minecraft/world/entity/Entity.java +@@ -3836,7 +3836,7 @@ public abstract class Entity implements Nameable, EntityAccess, CommandSource, n + public final void setPosRaw(double x, double y, double z) { + // Paper start - fix MC-4 + if (this instanceof ItemEntity) { +- if (com.destroystokyo.paper.PaperConfig.fixEntityPositionDesync) { ++ if (com.destroystokyo.paper.PaperConfig.fixEntityPositionDesync) { // Tuinity - revert // Purpur - no + // encode/decode from PacketPlayOutEntity + x = Mth.lfloor(x * 4096.0D) * (1 / 4096.0D); + y = Mth.lfloor(y * 4096.0D) * (1 / 4096.0D);