diff --git a/current-paper b/current-paper index c63ae7315..a27dee55b 100644 --- a/current-paper +++ b/current-paper @@ -1 +1 @@ -1.16.4--3489b4ed8e37a9805e25679a998065df8b249622 +1.16.4--b294b7890a3a5b0285fd69dd2695acc73c9a74d5 diff --git a/patches/server/0003-Purpur-config-files.patch b/patches/server/0003-Purpur-config-files.patch index ce7d2598d..c6ad10c05 100644 --- a/patches/server/0003-Purpur-config-files.patch +++ b/patches/server/0003-Purpur-config-files.patch @@ -5,7 +5,7 @@ Subject: [PATCH] Purpur config files diff --git a/src/main/java/com/destroystokyo/paper/Metrics.java b/src/main/java/com/destroystokyo/paper/Metrics.java -index 03c95b30d8..3b9b44851c 100644 +index 03c95b30d..3b9b44851 100644 --- a/src/main/java/com/destroystokyo/paper/Metrics.java +++ b/src/main/java/com/destroystokyo/paper/Metrics.java @@ -585,7 +585,7 @@ public class Metrics { @@ -29,7 +29,7 @@ index 03c95b30d8..3b9b44851c 100644 metrics.addCustomChart(new Metrics.DrilldownPie("java_version", () -> { Map> map = new HashMap<>(); diff --git a/src/main/java/com/destroystokyo/paper/PaperConfig.java b/src/main/java/com/destroystokyo/paper/PaperConfig.java -index 6ab0a51b42..e21ef1bdc6 100644 +index 6ab0a51b4..e21ef1bdc 100644 --- a/src/main/java/com/destroystokyo/paper/PaperConfig.java +++ b/src/main/java/com/destroystokyo/paper/PaperConfig.java @@ -118,6 +118,11 @@ public class PaperConfig { @@ -45,7 +45,7 @@ index 6ab0a51b42..e21ef1bdc6 100644 config.save(CONFIG_FILE); } catch (IOException ex) { diff --git a/src/main/java/net/minecraft/server/DedicatedServer.java b/src/main/java/net/minecraft/server/DedicatedServer.java -index fcba187bbd..c1eb8e8679 100644 +index fcba187bb..c1eb8e867 100644 --- a/src/main/java/net/minecraft/server/DedicatedServer.java +++ b/src/main/java/net/minecraft/server/DedicatedServer.java @@ -167,6 +167,15 @@ public class DedicatedServer extends MinecraftServer implements IMinecraftServer @@ -65,7 +65,7 @@ index fcba187bbd..c1eb8e8679 100644 // Paper end com.tuinity.tuinity.config.TuinityConfig.init((java.io.File) options.valueOf("tuinity-settings")); // Tuinity - Server Config diff --git a/src/main/java/net/minecraft/server/EntityVillager.java b/src/main/java/net/minecraft/server/EntityVillager.java -index 0388d1099f..3c20a4e1c4 100644 +index 9b35c8ad9..2c4c13b30 100644 --- a/src/main/java/net/minecraft/server/EntityVillager.java +++ b/src/main/java/net/minecraft/server/EntityVillager.java @@ -166,7 +166,7 @@ public class EntityVillager extends EntityVillagerAbstract implements Reputation @@ -78,7 +78,7 @@ index 0388d1099f..3c20a4e1c4 100644 if (this.bF) { this.bF = false; diff --git a/src/main/java/net/minecraft/server/World.java b/src/main/java/net/minecraft/server/World.java -index 59abca0fd2..ca4d260e8f 100644 +index 59abca0fd..ca4d260e8 100644 --- a/src/main/java/net/minecraft/server/World.java +++ b/src/main/java/net/minecraft/server/World.java @@ -95,6 +95,7 @@ public abstract class World implements GeneratorAccess, AutoCloseable { @@ -102,7 +102,7 @@ index 59abca0fd2..ca4d260e8f 100644 this.ticksPerAnimalSpawns = this.getServer().getTicksPerAnimalSpawns(); // CraftBukkit diff --git a/src/main/java/net/pl3x/purpur/PurpurConfig.java b/src/main/java/net/pl3x/purpur/PurpurConfig.java new file mode 100644 -index 0000000000..0dbd665043 +index 000000000..b807f8aa8 --- /dev/null +++ b/src/main/java/net/pl3x/purpur/PurpurConfig.java @@ -0,0 +1,130 @@ @@ -161,8 +161,8 @@ index 0000000000..0dbd665043 + commands = new HashMap<>(); + commands.put("purpur", new PurpurCommand("purpur")); + -+ version = getInt("config-version", 7); -+ set("config-version", 7); ++ version = getInt("config-version", 8); ++ set("config-version", 8); + + readConfig(PurpurConfig.class, null); + } @@ -238,7 +238,7 @@ index 0000000000..0dbd665043 +} diff --git a/src/main/java/net/pl3x/purpur/PurpurWorldConfig.java b/src/main/java/net/pl3x/purpur/PurpurWorldConfig.java new file mode 100644 -index 0000000000..361f7857e4 +index 000000000..361f7857e --- /dev/null +++ b/src/main/java/net/pl3x/purpur/PurpurWorldConfig.java @@ -0,0 +1,59 @@ @@ -303,7 +303,7 @@ index 0000000000..361f7857e4 +} diff --git a/src/main/java/net/pl3x/purpur/command/PurpurCommand.java b/src/main/java/net/pl3x/purpur/command/PurpurCommand.java new file mode 100644 -index 0000000000..4904be939c +index 000000000..4904be939 --- /dev/null +++ b/src/main/java/net/pl3x/purpur/command/PurpurCommand.java @@ -0,0 +1,65 @@ @@ -373,7 +373,7 @@ index 0000000000..4904be939c + } +} diff --git a/src/main/java/org/bukkit/craftbukkit/CraftServer.java b/src/main/java/org/bukkit/craftbukkit/CraftServer.java -index 991a799148..53ed0465a9 100644 +index 991a79914..53ed0465a 100644 --- a/src/main/java/org/bukkit/craftbukkit/CraftServer.java +++ b/src/main/java/org/bukkit/craftbukkit/CraftServer.java @@ -857,6 +857,7 @@ public final class CraftServer implements Server { @@ -420,7 +420,7 @@ index 991a799148..53ed0465a9 100644 public void restart() { org.spigotmc.RestartCommand.restart(); diff --git a/src/main/java/org/bukkit/craftbukkit/Main.java b/src/main/java/org/bukkit/craftbukkit/Main.java -index d2ec9f7f10..b3c0ba202d 100644 +index d2ec9f7f1..b3c0ba202 100644 --- a/src/main/java/org/bukkit/craftbukkit/Main.java +++ b/src/main/java/org/bukkit/craftbukkit/Main.java @@ -146,6 +146,14 @@ public class Main { diff --git a/patches/server/0028-Giants-AI-settings.patch b/patches/server/0028-Giants-AI-settings.patch index 10a8a3358..ad18554ac 100644 --- a/patches/server/0028-Giants-AI-settings.patch +++ b/patches/server/0028-Giants-AI-settings.patch @@ -5,7 +5,7 @@ Subject: [PATCH] Giants AI settings diff --git a/src/main/java/net/minecraft/server/AttributeMapBase.java b/src/main/java/net/minecraft/server/AttributeMapBase.java -index c57e23e16b..92aa104dc5 100644 +index c57e23e16..92aa104dc 100644 --- a/src/main/java/net/minecraft/server/AttributeMapBase.java +++ b/src/main/java/net/minecraft/server/AttributeMapBase.java @@ -41,6 +41,7 @@ public class AttributeMapBase { @@ -17,7 +17,7 @@ index c57e23e16b..92aa104dc5 100644 public AttributeModifiable a(AttributeBase attributebase) { return (AttributeModifiable) this.b.computeIfAbsent(attributebase, (attributebase1) -> { diff --git a/src/main/java/net/minecraft/server/Entity.java b/src/main/java/net/minecraft/server/Entity.java -index 8fdfec3b8e..c90a767c78 100644 +index 8fdfec3b8..c90a767c7 100644 --- a/src/main/java/net/minecraft/server/Entity.java +++ b/src/main/java/net/minecraft/server/Entity.java @@ -136,7 +136,7 @@ public abstract class Entity implements INamableTileEntity, ICommandListener, Ke @@ -30,10 +30,10 @@ index 8fdfec3b8e..c90a767c78 100644 public float I; protected final Random random; diff --git a/src/main/java/net/minecraft/server/EntityGiantZombie.java b/src/main/java/net/minecraft/server/EntityGiantZombie.java -index 9f4f56c47e..8dce2aad77 100644 +index 9f4f56c47..cf899bb6a 100644 --- a/src/main/java/net/minecraft/server/EntityGiantZombie.java +++ b/src/main/java/net/minecraft/server/EntityGiantZombie.java -@@ -4,9 +4,68 @@ public class EntityGiantZombie extends EntityMonster { +@@ -4,9 +4,69 @@ public class EntityGiantZombie extends EntityMonster { public EntityGiantZombie(EntityTypes entitytypes, World world) { super(entitytypes, world); @@ -70,6 +70,7 @@ index 9f4f56c47e..8dce2aad77 100644 + getAttributeMap().getAttribute(GenericAttributes.MAX_HEALTH).setValue(world.purpurConfig.giantMaxHealth); + getAttributeMap().getAttribute(GenericAttributes.MOVEMENT_SPEED).setValue(world.purpurConfig.giantMovementSpeed); + getAttributeMap().getAttribute(GenericAttributes.ATTACK_DAMAGE).setValue(world.purpurConfig.giantAttackDamage); ++ setHealth(getMaxHealth()); + } + } + @@ -103,7 +104,7 @@ index 9f4f56c47e..8dce2aad77 100644 @Override protected float b(EntityPose entitypose, EntitySize entitysize) { return 10.440001F; -@@ -18,6 +77,6 @@ public class EntityGiantZombie extends EntityMonster { +@@ -18,6 +78,6 @@ public class EntityGiantZombie extends EntityMonster { @Override public float a(BlockPosition blockposition, IWorldReader iworldreader) { @@ -112,7 +113,7 @@ index 9f4f56c47e..8dce2aad77 100644 } } diff --git a/src/main/java/net/minecraft/server/EntityInsentient.java b/src/main/java/net/minecraft/server/EntityInsentient.java -index 7b32a1fb79..b281ca841b 100644 +index 7b32a1fb7..b281ca841 100644 --- a/src/main/java/net/minecraft/server/EntityInsentient.java +++ b/src/main/java/net/minecraft/server/EntityInsentient.java @@ -948,6 +948,7 @@ public abstract class EntityInsentient extends EntityLiving { @@ -146,7 +147,7 @@ index 7b32a1fb79..b281ca841b 100644 return false; } diff --git a/src/main/java/net/minecraft/server/EntityLiving.java b/src/main/java/net/minecraft/server/EntityLiving.java -index 21b5b7d2c4..bc88db73b7 100644 +index 21b5b7d2c..bc88db73b 100644 --- a/src/main/java/net/minecraft/server/EntityLiving.java +++ b/src/main/java/net/minecraft/server/EntityLiving.java @@ -2159,7 +2159,7 @@ public abstract class EntityLiving extends Entity { @@ -159,28 +160,33 @@ index 21b5b7d2c4..bc88db73b7 100644 } diff --git a/src/main/java/net/pl3x/purpur/PurpurWorldConfig.java b/src/main/java/net/pl3x/purpur/PurpurWorldConfig.java -index f403f9dc6c..f5004f221e 100644 +index f403f9dc6..3207b8b61 100644 --- a/src/main/java/net/pl3x/purpur/PurpurWorldConfig.java +++ b/src/main/java/net/pl3x/purpur/PurpurWorldConfig.java -@@ -113,6 +113,23 @@ public class PurpurWorldConfig { +@@ -113,6 +113,28 @@ public class PurpurWorldConfig { turtleEggsBreakFromMinecarts = getBoolean("blocks.turtle_egg.break-from-minecarts", turtleEggsBreakFromMinecarts); } + public float giantStepHeight = 2.0F; + public float giantJumpHeight = 1.0F; -+ public double giantMaxHealth = 100.0D; + public double giantMovementSpeed = 0.5D; + public double giantAttackDamage = 50.0D; + public boolean giantHaveAI = false; + public boolean giantHaveHostileAI = false; ++ public double giantMaxHealth = 100.0D; + private void giantSettings() { + giantStepHeight = (float) getDouble("mobs.giant.step-height", giantStepHeight); + giantJumpHeight = (float) getDouble("mobs.giant.jump-height", giantJumpHeight); -+ giantMaxHealth = getDouble("mobs.giant.max-health", giantMaxHealth); + giantMovementSpeed = getDouble("mobs.giant.movement-speed", giantMovementSpeed); + giantAttackDamage = getDouble("mobs.giant.attack-damage", giantAttackDamage); + giantHaveAI = getBoolean("mobs.giant.have-ai", giantHaveAI); + giantHaveHostileAI = getBoolean("mobs.giant.have-hostile-ai", giantHaveHostileAI); ++ if (PurpurConfig.version < 8) { ++ double oldValue = getDouble("mobs.giant.max-health", giantMaxHealth); ++ set("mobs.giant.attributes.max-health", oldValue); ++ set("mobs.giant.max-health", null); ++ } ++ giantMaxHealth = getDouble("mobs.giant.attributes.max-health", giantMaxHealth); + } + public int villagerBrainTicks = 1; diff --git a/patches/server/0029-Illusioners-AI-settings.patch b/patches/server/0029-Illusioners-AI-settings.patch index 19ad11aee..e21e6ef6d 100644 --- a/patches/server/0029-Illusioners-AI-settings.patch +++ b/patches/server/0029-Illusioners-AI-settings.patch @@ -5,10 +5,10 @@ Subject: [PATCH] Illusioners AI settings diff --git a/src/main/java/net/minecraft/server/EntityIllagerIllusioner.java b/src/main/java/net/minecraft/server/EntityIllagerIllusioner.java -index 50442b3a49..b6c6b4d54e 100644 +index 50442b3a4..a9dcf6875 100644 --- a/src/main/java/net/minecraft/server/EntityIllagerIllusioner.java +++ b/src/main/java/net/minecraft/server/EntityIllagerIllusioner.java -@@ -19,6 +19,17 @@ public class EntityIllagerIllusioner extends EntityIllagerWizard implements IRan +@@ -19,6 +19,18 @@ public class EntityIllagerIllusioner extends EntityIllagerWizard implements IRan } @@ -19,6 +19,7 @@ index 50442b3a49..b6c6b4d54e 100644 + getAttributeMap().getAttribute(GenericAttributes.MOVEMENT_SPEED).setValue(world.purpurConfig.illusionerMovementSpeed); + getAttributeMap().getAttribute(GenericAttributes.FOLLOW_RANGE).setValue(world.purpurConfig.illusionerFollowRange); + getAttributeMap().getAttribute(GenericAttributes.MAX_HEALTH).setValue(world.purpurConfig.illusionerMaxHealth); ++ setHealth(getMaxHealth()); + } + } + // Purpur end @@ -27,20 +28,25 @@ index 50442b3a49..b6c6b4d54e 100644 protected void initPathfinder() { super.initPathfinder(); diff --git a/src/main/java/net/pl3x/purpur/PurpurWorldConfig.java b/src/main/java/net/pl3x/purpur/PurpurWorldConfig.java -index f5004f221e..0073e3b85a 100644 +index 3207b8b61..5c716a6b4 100644 --- a/src/main/java/net/pl3x/purpur/PurpurWorldConfig.java +++ b/src/main/java/net/pl3x/purpur/PurpurWorldConfig.java -@@ -130,6 +130,15 @@ public class PurpurWorldConfig { - giantHaveHostileAI = getBoolean("mobs.giant.have-hostile-ai", giantHaveHostileAI); +@@ -135,6 +135,20 @@ public class PurpurWorldConfig { + giantMaxHealth = getDouble("mobs.giant.attributes.max-health", giantMaxHealth); } -+ public double illusionerMaxHealth = 32.0D; + public double illusionerMovementSpeed = 0.5D; + public double illusionerFollowRange = 18.0D; ++ public double illusionerMaxHealth = 32.0D; + private void illusionerSettings() { -+ illusionerMaxHealth = getDouble("mobs.illusioner.max-health", illusionerMaxHealth); + illusionerMovementSpeed = getDouble("mobs.illusioner.movement-speed", illusionerMovementSpeed); + illusionerFollowRange = getDouble("mobs.illusioner.follow-range", illusionerFollowRange); ++ if (PurpurConfig.version < 8) { ++ double oldValue = getDouble("mobs.illusioner.max-health", illusionerMaxHealth); ++ set("mobs.illusioner.attributes.max-health", oldValue); ++ set("mobs.illusioner.max-health", null); ++ } ++ illusionerMaxHealth = getDouble("mobs.illusioner.attributes.max-health", illusionerMaxHealth); + } + public int villagerBrainTicks = 1; diff --git a/patches/server/0030-Zombie-horse-naturally-spawn.patch b/patches/server/0030-Zombie-horse-naturally-spawn.patch index 6f31de95d..eabf4b1c6 100644 --- a/patches/server/0030-Zombie-horse-naturally-spawn.patch +++ b/patches/server/0030-Zombie-horse-naturally-spawn.patch @@ -5,7 +5,7 @@ Subject: [PATCH] Zombie horse naturally spawn diff --git a/src/main/java/net/minecraft/server/WorldServer.java b/src/main/java/net/minecraft/server/WorldServer.java -index 63b6a06737..c7a43dccee 100644 +index 63b6a0673..c7a43dcce 100644 --- a/src/main/java/net/minecraft/server/WorldServer.java +++ b/src/main/java/net/minecraft/server/WorldServer.java @@ -1049,12 +1049,18 @@ public class WorldServer extends World implements GeneratorAccessSeed { @@ -34,10 +34,10 @@ index 63b6a06737..c7a43dccee 100644 EntityLightning entitylightning = (EntityLightning) EntityTypes.LIGHTNING_BOLT.a((World) this); diff --git a/src/main/java/net/pl3x/purpur/PurpurWorldConfig.java b/src/main/java/net/pl3x/purpur/PurpurWorldConfig.java -index 0073e3b85a..b652bfbdc3 100644 +index 5c716a6b4..04dfb8200 100644 --- a/src/main/java/net/pl3x/purpur/PurpurWorldConfig.java +++ b/src/main/java/net/pl3x/purpur/PurpurWorldConfig.java -@@ -145,4 +145,9 @@ public class PurpurWorldConfig { +@@ -155,4 +155,9 @@ public class PurpurWorldConfig { villagerBrainTicks = getInt("mobs.villager.brain-ticks", villagerBrainTicks); villagerUseBrainTicksOnlyWhenLagging = getBoolean("mobs.villager.use-brain-ticks-only-when-lagging", villagerUseBrainTicksOnlyWhenLagging); } diff --git a/patches/server/0032-Rabbit-naturally-spawn-toast-and-killer.patch b/patches/server/0032-Rabbit-naturally-spawn-toast-and-killer.patch index dc96e55f9..1c1adc3b0 100644 --- a/patches/server/0032-Rabbit-naturally-spawn-toast-and-killer.patch +++ b/patches/server/0032-Rabbit-naturally-spawn-toast-and-killer.patch @@ -5,7 +5,7 @@ Subject: [PATCH] Rabbit naturally spawn toast and killer diff --git a/src/main/java/net/minecraft/server/EntityRabbit.java b/src/main/java/net/minecraft/server/EntityRabbit.java -index 80a4a71753..25a9b7906b 100644 +index 80a4a7175..25a9b7906 100644 --- a/src/main/java/net/minecraft/server/EntityRabbit.java +++ b/src/main/java/net/minecraft/server/EntityRabbit.java @@ -297,6 +297,10 @@ public class EntityRabbit extends EntityAnimal { @@ -37,11 +37,11 @@ index 80a4a71753..25a9b7906b 100644 int i = this.random.nextInt(100); diff --git a/src/main/java/net/pl3x/purpur/PurpurWorldConfig.java b/src/main/java/net/pl3x/purpur/PurpurWorldConfig.java -index a1c0dc687a..fe82dc392b 100644 +index 5b8961a06..f51f60110 100644 --- a/src/main/java/net/pl3x/purpur/PurpurWorldConfig.java +++ b/src/main/java/net/pl3x/purpur/PurpurWorldConfig.java -@@ -144,6 +144,13 @@ public class PurpurWorldConfig { - illusionerFollowRange = getDouble("mobs.illusioner.follow-range", illusionerFollowRange); +@@ -154,6 +154,13 @@ public class PurpurWorldConfig { + illusionerMaxHealth = getDouble("mobs.illusioner.attributes.max-health", illusionerMaxHealth); } + public double rabbitNaturalToast = 0.0D; diff --git a/patches/server/0034-Make-Iron-Golems-Swim.patch b/patches/server/0034-Make-Iron-Golems-Swim.patch index 94f03dc20..af90c2013 100644 --- a/patches/server/0034-Make-Iron-Golems-Swim.patch +++ b/patches/server/0034-Make-Iron-Golems-Swim.patch @@ -5,7 +5,7 @@ Subject: [PATCH] Make Iron Golems Swim diff --git a/src/main/java/net/minecraft/server/EntityIronGolem.java b/src/main/java/net/minecraft/server/EntityIronGolem.java -index 0a5c27e732..bdff236883 100644 +index 0a5c27e73..bdff23688 100644 --- a/src/main/java/net/minecraft/server/EntityIronGolem.java +++ b/src/main/java/net/minecraft/server/EntityIronGolem.java @@ -24,6 +24,7 @@ public class EntityIronGolem extends EntityGolem implements IEntityAngerable { @@ -17,11 +17,11 @@ index 0a5c27e732..bdff236883 100644 this.goalSelector.a(2, new PathfinderGoalMoveTowardsTarget(this, 0.9D, 32.0F)); this.goalSelector.a(2, new PathfinderGoalStrollVillage(this, 0.6D, false)); diff --git a/src/main/java/net/pl3x/purpur/PurpurWorldConfig.java b/src/main/java/net/pl3x/purpur/PurpurWorldConfig.java -index fe82dc392b..fd552adb95 100644 +index f51f60110..3ec33a963 100644 --- a/src/main/java/net/pl3x/purpur/PurpurWorldConfig.java +++ b/src/main/java/net/pl3x/purpur/PurpurWorldConfig.java -@@ -144,6 +144,11 @@ public class PurpurWorldConfig { - illusionerFollowRange = getDouble("mobs.illusioner.follow-range", illusionerFollowRange); +@@ -154,6 +154,11 @@ public class PurpurWorldConfig { + illusionerMaxHealth = getDouble("mobs.illusioner.attributes.max-health", illusionerMaxHealth); } + public boolean ironGolemCanSwim = false; diff --git a/patches/server/0037-Breedable-Polar-Bears.patch b/patches/server/0037-Breedable-Polar-Bears.patch index c8bb75f68..b48e15d75 100644 --- a/patches/server/0037-Breedable-Polar-Bears.patch +++ b/patches/server/0037-Breedable-Polar-Bears.patch @@ -5,7 +5,7 @@ Subject: [PATCH] Breedable Polar Bears diff --git a/src/main/java/net/minecraft/server/EntityPolarBear.java b/src/main/java/net/minecraft/server/EntityPolarBear.java -index 914c6e48d6..99f0bd8f82 100644 +index 914c6e48d..99f0bd8f8 100644 --- a/src/main/java/net/minecraft/server/EntityPolarBear.java +++ b/src/main/java/net/minecraft/server/EntityPolarBear.java @@ -23,6 +23,30 @@ public class EntityPolarBear extends EntityAnimal implements IEntityAngerable { @@ -75,10 +75,10 @@ index 914c6e48d6..99f0bd8f82 100644 this.datawatcher.set(EntityPolarBear.bo, flag); } diff --git a/src/main/java/net/pl3x/purpur/PurpurWorldConfig.java b/src/main/java/net/pl3x/purpur/PurpurWorldConfig.java -index 40bc4cc77b..882ac4c1f6 100644 +index 459ff8ffe..09b66b9ca 100644 --- a/src/main/java/net/pl3x/purpur/PurpurWorldConfig.java +++ b/src/main/java/net/pl3x/purpur/PurpurWorldConfig.java -@@ -154,6 +154,14 @@ public class PurpurWorldConfig { +@@ -164,6 +164,14 @@ public class PurpurWorldConfig { ironGolemCanSwim = getBoolean("mobs.iron_golem.can-swim", ironGolemCanSwim); } diff --git a/patches/server/0044-Pigs-give-saddle-back.patch b/patches/server/0044-Pigs-give-saddle-back.patch index 1f9c2b29d..412f1778c 100644 --- a/patches/server/0044-Pigs-give-saddle-back.patch +++ b/patches/server/0044-Pigs-give-saddle-back.patch @@ -5,7 +5,7 @@ Subject: [PATCH] Pigs give saddle back diff --git a/src/main/java/net/minecraft/server/EntityPig.java b/src/main/java/net/minecraft/server/EntityPig.java -index ee94c2827c..7f52c39234 100644 +index ee94c2827..7f52c3923 100644 --- a/src/main/java/net/minecraft/server/EntityPig.java +++ b/src/main/java/net/minecraft/server/EntityPig.java @@ -109,6 +109,18 @@ public class EntityPig extends EntityAnimal implements ISteerable, ISaddleable { @@ -28,10 +28,10 @@ index ee94c2827c..7f52c39234 100644 } diff --git a/src/main/java/net/pl3x/purpur/PurpurWorldConfig.java b/src/main/java/net/pl3x/purpur/PurpurWorldConfig.java -index d8bd7ffd5f..7d6c624ac2 100644 +index 0c841b824..24ef91788 100644 --- a/src/main/java/net/pl3x/purpur/PurpurWorldConfig.java +++ b/src/main/java/net/pl3x/purpur/PurpurWorldConfig.java -@@ -178,6 +178,11 @@ public class PurpurWorldConfig { +@@ -188,6 +188,11 @@ public class PurpurWorldConfig { ironGolemCanSwim = getBoolean("mobs.iron_golem.can-swim", ironGolemCanSwim); } diff --git a/patches/server/0045-Snowman-drop-and-put-back-pumpkin.patch b/patches/server/0045-Snowman-drop-and-put-back-pumpkin.patch index 1c4724b83..0a2272a79 100644 --- a/patches/server/0045-Snowman-drop-and-put-back-pumpkin.patch +++ b/patches/server/0045-Snowman-drop-and-put-back-pumpkin.patch @@ -5,7 +5,7 @@ Subject: [PATCH] Snowman drop and put back pumpkin diff --git a/src/main/java/net/minecraft/server/EntitySnowman.java b/src/main/java/net/minecraft/server/EntitySnowman.java -index 48997367a6..95ee716fc9 100644 +index 48997367a..95ee716fc 100644 --- a/src/main/java/net/minecraft/server/EntitySnowman.java +++ b/src/main/java/net/minecraft/server/EntitySnowman.java @@ -7,6 +7,7 @@ import org.bukkit.craftbukkit.event.CraftEventFactory; @@ -43,10 +43,10 @@ index 48997367a6..95ee716fc9 100644 return EnumInteractionResult.PASS; } diff --git a/src/main/java/net/pl3x/purpur/PurpurWorldConfig.java b/src/main/java/net/pl3x/purpur/PurpurWorldConfig.java -index 7d6c624ac2..c91f007044 100644 +index 24ef91788..6d93ff4b0 100644 --- a/src/main/java/net/pl3x/purpur/PurpurWorldConfig.java +++ b/src/main/java/net/pl3x/purpur/PurpurWorldConfig.java -@@ -198,6 +198,13 @@ public class PurpurWorldConfig { +@@ -208,6 +208,13 @@ public class PurpurWorldConfig { rabbitNaturalKiller = getDouble("mobs.rabbit.spawn-killer-rabbit-chance", rabbitNaturalKiller); } diff --git a/patches/server/0060-Add-wither-skeleton-takes-wither-damage-option.patch b/patches/server/0060-Add-wither-skeleton-takes-wither-damage-option.patch index 1d2d5133c..58c653e79 100644 --- a/patches/server/0060-Add-wither-skeleton-takes-wither-damage-option.patch +++ b/patches/server/0060-Add-wither-skeleton-takes-wither-damage-option.patch @@ -5,7 +5,7 @@ Subject: [PATCH] Add wither skeleton takes wither damage option diff --git a/src/main/java/net/minecraft/server/EntitySkeletonWither.java b/src/main/java/net/minecraft/server/EntitySkeletonWither.java -index 1ae9910fef..c872be77a6 100644 +index 1ae9910fe..c872be77a 100644 --- a/src/main/java/net/minecraft/server/EntitySkeletonWither.java +++ b/src/main/java/net/minecraft/server/EntitySkeletonWither.java @@ -97,6 +97,6 @@ public class EntitySkeletonWither extends EntitySkeletonAbstract { @@ -17,10 +17,10 @@ index 1ae9910fef..c872be77a6 100644 } } diff --git a/src/main/java/net/pl3x/purpur/PurpurWorldConfig.java b/src/main/java/net/pl3x/purpur/PurpurWorldConfig.java -index 11af56df60..79a87a1a16 100644 +index c60a3d7d9..0db9da068 100644 --- a/src/main/java/net/pl3x/purpur/PurpurWorldConfig.java +++ b/src/main/java/net/pl3x/purpur/PurpurWorldConfig.java -@@ -271,6 +271,11 @@ public class PurpurWorldConfig { +@@ -281,6 +281,11 @@ public class PurpurWorldConfig { villagerUseBrainTicksOnlyWhenLagging = getBoolean("mobs.villager.use-brain-ticks-only-when-lagging", villagerUseBrainTicksOnlyWhenLagging); } diff --git a/patches/server/0065-Villagers-farming-can-bypass-mob-griefing-gamerule.patch b/patches/server/0065-Villagers-farming-can-bypass-mob-griefing-gamerule.patch index 4387f9ce0..65c95705a 100644 --- a/patches/server/0065-Villagers-farming-can-bypass-mob-griefing-gamerule.patch +++ b/patches/server/0065-Villagers-farming-can-bypass-mob-griefing-gamerule.patch @@ -5,7 +5,7 @@ Subject: [PATCH] Villagers farming can bypass mob-griefing gamerule diff --git a/src/main/java/net/minecraft/server/BehaviorFarm.java b/src/main/java/net/minecraft/server/BehaviorFarm.java -index 54a555509e..0ff202c0d7 100644 +index 54a555509..0ff202c0d 100644 --- a/src/main/java/net/minecraft/server/BehaviorFarm.java +++ b/src/main/java/net/minecraft/server/BehaviorFarm.java @@ -18,7 +18,7 @@ public class BehaviorFarm extends Behavior { @@ -18,10 +18,10 @@ index 54a555509e..0ff202c0d7 100644 } else if (entityvillager.getVillagerData().getProfession() != VillagerProfession.FARMER) { return false; diff --git a/src/main/java/net/pl3x/purpur/PurpurWorldConfig.java b/src/main/java/net/pl3x/purpur/PurpurWorldConfig.java -index ef7ca798ab..e31094bd17 100644 +index 8677230d4..79109fd94 100644 --- a/src/main/java/net/pl3x/purpur/PurpurWorldConfig.java +++ b/src/main/java/net/pl3x/purpur/PurpurWorldConfig.java -@@ -277,9 +277,11 @@ public class PurpurWorldConfig { +@@ -287,9 +287,11 @@ public class PurpurWorldConfig { public int villagerBrainTicks = 1; public boolean villagerUseBrainTicksOnlyWhenLagging = true; diff --git a/patches/server/0066-Villagers-follow-emerald-blocks.patch b/patches/server/0066-Villagers-follow-emerald-blocks.patch index ebe5bcace..9814dee20 100644 --- a/patches/server/0066-Villagers-follow-emerald-blocks.patch +++ b/patches/server/0066-Villagers-follow-emerald-blocks.patch @@ -5,7 +5,7 @@ Subject: [PATCH] Villagers follow emerald blocks diff --git a/src/main/java/net/minecraft/server/EntityVillager.java b/src/main/java/net/minecraft/server/EntityVillager.java -index a02f54ab3a..3c222a6a30 100644 +index 171e8553a..0ab7d3441 100644 --- a/src/main/java/net/minecraft/server/EntityVillager.java +++ b/src/main/java/net/minecraft/server/EntityVillager.java @@ -74,6 +74,13 @@ public class EntityVillager extends EntityVillagerAbstract implements Reputation @@ -23,7 +23,7 @@ index a02f54ab3a..3c222a6a30 100644 public BehaviorController getBehaviorController() { return (BehaviorController) super.getBehaviorController(); // CraftBukkit - decompile error diff --git a/src/main/java/net/minecraft/server/EntityVillagerAbstract.java b/src/main/java/net/minecraft/server/EntityVillagerAbstract.java -index 1fddf7c774..488a6891d8 100644 +index 1fddf7c77..488a6891d 100644 --- a/src/main/java/net/minecraft/server/EntityVillagerAbstract.java +++ b/src/main/java/net/minecraft/server/EntityVillagerAbstract.java @@ -14,6 +14,8 @@ import org.bukkit.event.entity.VillagerAcquireTradeEvent; @@ -36,7 +36,7 @@ index 1fddf7c774..488a6891d8 100644 private CraftMerchant craftMerchant; diff --git a/src/main/java/net/minecraft/server/EntityVillagerTrader.java b/src/main/java/net/minecraft/server/EntityVillagerTrader.java -index f1a509063c..74c2d89af5 100644 +index f1a509063..74c2d89af 100644 --- a/src/main/java/net/minecraft/server/EntityVillagerTrader.java +++ b/src/main/java/net/minecraft/server/EntityVillagerTrader.java @@ -40,6 +40,7 @@ public class EntityVillagerTrader extends EntityVillagerAbstract { @@ -48,10 +48,10 @@ index f1a509063c..74c2d89af5 100644 this.goalSelector.a(8, new PathfinderGoalRandomStrollLand(this, 0.35D)); this.goalSelector.a(9, new PathfinderGoalInteract(this, EntityHuman.class, 3.0F, 1.0F)); diff --git a/src/main/java/net/pl3x/purpur/PurpurWorldConfig.java b/src/main/java/net/pl3x/purpur/PurpurWorldConfig.java -index e31094bd17..2c334ecb60 100644 +index 79109fd94..7b3df3fa4 100644 --- a/src/main/java/net/pl3x/purpur/PurpurWorldConfig.java +++ b/src/main/java/net/pl3x/purpur/PurpurWorldConfig.java -@@ -278,10 +278,17 @@ public class PurpurWorldConfig { +@@ -288,10 +288,17 @@ public class PurpurWorldConfig { public int villagerBrainTicks = 1; public boolean villagerUseBrainTicksOnlyWhenLagging = true; public boolean villagerFarmingBypassMobGriefing = false; diff --git a/patches/server/0067-Allow-leashing-villagers.patch b/patches/server/0067-Allow-leashing-villagers.patch index 7888235ce..8a969b628 100644 --- a/patches/server/0067-Allow-leashing-villagers.patch +++ b/patches/server/0067-Allow-leashing-villagers.patch @@ -5,10 +5,10 @@ Subject: [PATCH] Allow leashing villagers diff --git a/src/main/java/net/minecraft/server/EntityInsentient.java b/src/main/java/net/minecraft/server/EntityInsentient.java -index b71dea314c..84ac5112a2 100644 +index 23d5d1f0a..23eb697f3 100644 --- a/src/main/java/net/minecraft/server/EntityInsentient.java +++ b/src/main/java/net/minecraft/server/EntityInsentient.java -@@ -1145,6 +1145,7 @@ public abstract class EntityInsentient extends EntityLiving { +@@ -1147,6 +1147,7 @@ public abstract class EntityInsentient extends EntityLiving { if (!this.isAlive()) { return EnumInteractionResult.PASS; } else if (this.getLeashHolder() == entityhuman) { @@ -17,7 +17,7 @@ index b71dea314c..84ac5112a2 100644 if (CraftEventFactory.callPlayerUnleashEntityEvent(this, entityhuman).isCancelled()) { ((EntityPlayer) entityhuman).playerConnection.sendPacket(new PacketPlayOutAttachEntity(this, this.getLeashHolder())); diff --git a/src/main/java/net/minecraft/server/EntityVillager.java b/src/main/java/net/minecraft/server/EntityVillager.java -index 3c222a6a30..563dfc3daa 100644 +index 0ab7d3441..3c457c896 100644 --- a/src/main/java/net/minecraft/server/EntityVillager.java +++ b/src/main/java/net/minecraft/server/EntityVillager.java @@ -79,6 +79,11 @@ public class EntityVillager extends EntityVillagerAbstract implements Reputation @@ -33,7 +33,7 @@ index 3c222a6a30..563dfc3daa 100644 @Override diff --git a/src/main/java/net/minecraft/server/EntityVillagerTrader.java b/src/main/java/net/minecraft/server/EntityVillagerTrader.java -index 74c2d89af5..96dda6a14f 100644 +index 74c2d89af..96dda6a14 100644 --- a/src/main/java/net/minecraft/server/EntityVillagerTrader.java +++ b/src/main/java/net/minecraft/server/EntityVillagerTrader.java @@ -47,6 +47,13 @@ public class EntityVillagerTrader extends EntityVillagerAbstract { @@ -51,10 +51,10 @@ index 74c2d89af5..96dda6a14f 100644 @Override public EntityAgeable createChild(WorldServer worldserver, EntityAgeable entityageable) { diff --git a/src/main/java/net/pl3x/purpur/PurpurWorldConfig.java b/src/main/java/net/pl3x/purpur/PurpurWorldConfig.java -index 2c334ecb60..0ca84d650e 100644 +index 7b3df3fa4..585e4aef1 100644 --- a/src/main/java/net/pl3x/purpur/PurpurWorldConfig.java +++ b/src/main/java/net/pl3x/purpur/PurpurWorldConfig.java -@@ -277,17 +277,21 @@ public class PurpurWorldConfig { +@@ -287,17 +287,21 @@ public class PurpurWorldConfig { public int villagerBrainTicks = 1; public boolean villagerUseBrainTicksOnlyWhenLagging = true; diff --git a/patches/server/0068-Implement-configurable-search-radius-for-villagers-t.patch b/patches/server/0068-Implement-configurable-search-radius-for-villagers-t.patch index fb538229f..54e0eb589 100644 --- a/patches/server/0068-Implement-configurable-search-radius-for-villagers-t.patch +++ b/patches/server/0068-Implement-configurable-search-radius-for-villagers-t.patch @@ -6,7 +6,7 @@ Subject: [PATCH] Implement configurable search radius for villagers to spawn diff --git a/src/main/java/net/minecraft/server/EntityVillager.java b/src/main/java/net/minecraft/server/EntityVillager.java -index 563dfc3daa..33b7bc39fb 100644 +index 3c457c896..894089d66 100644 --- a/src/main/java/net/minecraft/server/EntityVillager.java +++ b/src/main/java/net/minecraft/server/EntityVillager.java @@ -894,6 +894,7 @@ public class EntityVillager extends EntityVillagerAbstract implements Reputation @@ -18,10 +18,10 @@ index 563dfc3daa..33b7bc39fb 100644 for (int i = 0; i < 10; ++i) { diff --git a/src/main/java/net/pl3x/purpur/PurpurWorldConfig.java b/src/main/java/net/pl3x/purpur/PurpurWorldConfig.java -index 0ca84d650e..13fc46d441 100644 +index 585e4aef1..db6fb004b 100644 --- a/src/main/java/net/pl3x/purpur/PurpurWorldConfig.java +++ b/src/main/java/net/pl3x/purpur/PurpurWorldConfig.java -@@ -280,12 +280,16 @@ public class PurpurWorldConfig { +@@ -290,12 +290,16 @@ public class PurpurWorldConfig { public boolean villagerCanBeLeashed = false; public boolean villagerFarmingBypassMobGriefing = false; public boolean villagerFollowEmeraldBlock = false; diff --git a/patches/server/0084-Configurable-jockey-options.patch b/patches/server/0084-Configurable-jockey-options.patch index 2cd6bc035..8c32c0aa1 100644 --- a/patches/server/0084-Configurable-jockey-options.patch +++ b/patches/server/0084-Configurable-jockey-options.patch @@ -5,7 +5,7 @@ Subject: [PATCH] Configurable jockey options diff --git a/src/main/java/net/minecraft/server/EntityDrowned.java b/src/main/java/net/minecraft/server/EntityDrowned.java -index 9ae0897bfd..1a10281692 100644 +index 9ae0897bf..1a1028169 100644 --- a/src/main/java/net/minecraft/server/EntityDrowned.java +++ b/src/main/java/net/minecraft/server/EntityDrowned.java @@ -21,6 +21,23 @@ public class EntityDrowned extends EntityZombie implements IRangedEntity { @@ -33,7 +33,7 @@ index 9ae0897bfd..1a10281692 100644 protected void m() { this.goalSelector.a(1, new EntityDrowned.c(this, 1.0D)); diff --git a/src/main/java/net/minecraft/server/EntityPigZombie.java b/src/main/java/net/minecraft/server/EntityPigZombie.java -index 65bae8c9f2..32b75f710b 100644 +index 65bae8c9f..32b75f710 100644 --- a/src/main/java/net/minecraft/server/EntityPigZombie.java +++ b/src/main/java/net/minecraft/server/EntityPigZombie.java @@ -21,6 +21,23 @@ public class EntityPigZombie extends EntityZombie implements IEntityAngerable { @@ -61,7 +61,7 @@ index 65bae8c9f2..32b75f710b 100644 public void setAngerTarget(@Nullable UUID uuid) { this.br = uuid; diff --git a/src/main/java/net/minecraft/server/EntityZombie.java b/src/main/java/net/minecraft/server/EntityZombie.java -index e3606722cb..b90ea31440 100644 +index e3606722c..b90ea3144 100644 --- a/src/main/java/net/minecraft/server/EntityZombie.java +++ b/src/main/java/net/minecraft/server/EntityZombie.java @@ -3,6 +3,7 @@ package net.minecraft.server; @@ -137,7 +137,7 @@ index e3606722cb..b90ea31440 100644 public GroupDataZombie(boolean flag, boolean flag1) { diff --git a/src/main/java/net/minecraft/server/EntityZombieHusk.java b/src/main/java/net/minecraft/server/EntityZombieHusk.java -index 2d2830adc5..ce6d797801 100644 +index 2d2830adc..ce6d79780 100644 --- a/src/main/java/net/minecraft/server/EntityZombieHusk.java +++ b/src/main/java/net/minecraft/server/EntityZombieHusk.java @@ -8,6 +8,23 @@ public class EntityZombieHusk extends EntityZombie { @@ -165,7 +165,7 @@ index 2d2830adc5..ce6d797801 100644 return b(entitytypes, worldaccess, enummobspawn, blockposition, random) && (enummobspawn == EnumMobSpawn.SPAWNER || worldaccess.e(blockposition)); } diff --git a/src/main/java/net/minecraft/server/EntityZombieVillager.java b/src/main/java/net/minecraft/server/EntityZombieVillager.java -index a5214914a1..b86816205c 100644 +index e021c43b4..505c83f3e 100644 --- a/src/main/java/net/minecraft/server/EntityZombieVillager.java +++ b/src/main/java/net/minecraft/server/EntityZombieVillager.java @@ -28,6 +28,23 @@ public class EntityZombieVillager extends EntityZombie implements VillagerDataHo @@ -193,7 +193,7 @@ index a5214914a1..b86816205c 100644 protected void initDatawatcher() { super.initDatawatcher(); diff --git a/src/main/java/net/pl3x/purpur/PurpurWorldConfig.java b/src/main/java/net/pl3x/purpur/PurpurWorldConfig.java -index 8773003e6f..1254c3d322 100644 +index 66425f79a..14e05b7a7 100644 --- a/src/main/java/net/pl3x/purpur/PurpurWorldConfig.java +++ b/src/main/java/net/pl3x/purpur/PurpurWorldConfig.java @@ -264,6 +264,15 @@ public class PurpurWorldConfig { @@ -212,8 +212,8 @@ index 8773003e6f..1254c3d322 100644 public boolean enderDragonAlwaysDropsEggBlock = false; public boolean enderDragonAlwaysDropsFullExp = false; private void enderDragonSettings() { -@@ -298,6 +307,15 @@ public class PurpurWorldConfig { - giantHaveHostileAI = getBoolean("mobs.giant.have-hostile-ai", giantHaveHostileAI); +@@ -303,6 +312,15 @@ public class PurpurWorldConfig { + giantMaxHealth = getDouble("mobs.giant.attributes.max-health", giantMaxHealth); } + public boolean huskJockeyOnlyBaby = true; @@ -225,10 +225,10 @@ index 8773003e6f..1254c3d322 100644 + huskJockeyTryExistingChickens = getBoolean("mobs.husk.jockey.try-existing-chickens", huskJockeyTryExistingChickens); + } + - public double illusionerMaxHealth = 32.0D; public double illusionerMovementSpeed = 0.5D; public double illusionerFollowRange = 18.0D; -@@ -368,8 +386,35 @@ public class PurpurWorldConfig { + public double illusionerMaxHealth = 32.0D; +@@ -378,8 +396,35 @@ public class PurpurWorldConfig { witherSkeletonTakesWitherDamage = getBoolean("mobs.wither_skeleton.takes-wither-damage", witherSkeletonTakesWitherDamage); } diff --git a/patches/server/0085-Phantoms-attracted-to-crystals-and-crystals-shoot-ph.patch b/patches/server/0085-Phantoms-attracted-to-crystals-and-crystals-shoot-ph.patch index 1094d1c74..381e3d712 100644 --- a/patches/server/0085-Phantoms-attracted-to-crystals-and-crystals-shoot-ph.patch +++ b/patches/server/0085-Phantoms-attracted-to-crystals-and-crystals-shoot-ph.patch @@ -5,7 +5,7 @@ Subject: [PATCH] Phantoms attracted to crystals and crystals shoot phantoms diff --git a/src/main/java/net/minecraft/server/DamageSource.java b/src/main/java/net/minecraft/server/DamageSource.java -index 6fe5678cff..bd0267ee4b 100644 +index 6fe5678cf..bd0267ee4 100644 --- a/src/main/java/net/minecraft/server/DamageSource.java +++ b/src/main/java/net/minecraft/server/DamageSource.java @@ -88,6 +88,7 @@ public class DamageSource { @@ -17,7 +17,7 @@ index 6fe5678cff..bd0267ee4b 100644 return (new EntityDamageSourceIndirect("indirectMagic", entity, entity1)).setIgnoreArmor().setMagic(); } diff --git a/src/main/java/net/minecraft/server/Entity.java b/src/main/java/net/minecraft/server/Entity.java -index 5ec82345e1..974e75945d 100644 +index 5ec82345e..974e75945 100644 --- a/src/main/java/net/minecraft/server/Entity.java +++ b/src/main/java/net/minecraft/server/Entity.java @@ -2135,8 +2135,8 @@ public abstract class Entity implements INamableTileEntity, ICommandListener, Ke @@ -32,7 +32,7 @@ index 5ec82345e1..974e75945d 100644 } diff --git a/src/main/java/net/minecraft/server/EntityEnderCrystal.java b/src/main/java/net/minecraft/server/EntityEnderCrystal.java -index 362ca695d8..1942fae270 100644 +index 362ca695d..1942fae27 100644 --- a/src/main/java/net/minecraft/server/EntityEnderCrystal.java +++ b/src/main/java/net/minecraft/server/EntityEnderCrystal.java @@ -13,6 +13,12 @@ public class EntityEnderCrystal extends Entity { @@ -100,7 +100,7 @@ index 362ca695d8..1942fae270 100644 @Override protected void saveData(NBTTagCompound nbttagcompound) { diff --git a/src/main/java/net/minecraft/server/EntityPhantom.java b/src/main/java/net/minecraft/server/EntityPhantom.java -index 3a70900c73..dfce36368d 100644 +index 3a70900c7..dfce36368 100644 --- a/src/main/java/net/minecraft/server/EntityPhantom.java +++ b/src/main/java/net/minecraft/server/EntityPhantom.java @@ -9,9 +9,10 @@ import javax.annotation.Nullable; @@ -321,10 +321,10 @@ index 3a70900c73..dfce36368d 100644 return entityliving != null ? EntityPhantom.this.a(EntityPhantom.this.getGoalTarget(), PathfinderTargetCondition.a) : false; diff --git a/src/main/java/net/pl3x/purpur/PurpurWorldConfig.java b/src/main/java/net/pl3x/purpur/PurpurWorldConfig.java -index 1254c3d322..ad055f4241 100644 +index 14e05b7a7..dbeea1ece 100644 --- a/src/main/java/net/pl3x/purpur/PurpurWorldConfig.java +++ b/src/main/java/net/pl3x/purpur/PurpurWorldConfig.java -@@ -330,6 +330,15 @@ public class PurpurWorldConfig { +@@ -340,6 +340,15 @@ public class PurpurWorldConfig { ironGolemCanSwim = getBoolean("mobs.iron_golem.can-swim", ironGolemCanSwim); } diff --git a/patches/server/0087-Add-phantom-spawning-options.patch b/patches/server/0086-Add-phantom-spawning-options.patch similarity index 98% rename from patches/server/0087-Add-phantom-spawning-options.patch rename to patches/server/0086-Add-phantom-spawning-options.patch index 18d656949..25f1cb5e5 100644 --- a/patches/server/0087-Add-phantom-spawning-options.patch +++ b/patches/server/0086-Add-phantom-spawning-options.patch @@ -5,7 +5,7 @@ Subject: [PATCH] Add phantom spawning options diff --git a/src/main/java/net/minecraft/server/DifficultyDamageScaler.java b/src/main/java/net/minecraft/server/DifficultyDamageScaler.java -index 75745af343..84c0ec1b50 100644 +index 75745af34..84c0ec1b5 100644 --- a/src/main/java/net/minecraft/server/DifficultyDamageScaler.java +++ b/src/main/java/net/minecraft/server/DifficultyDamageScaler.java @@ -13,6 +13,7 @@ public class DifficultyDamageScaler { @@ -25,7 +25,7 @@ index 75745af343..84c0ec1b50 100644 return this.b > f; } diff --git a/src/main/java/net/minecraft/server/EnumDifficulty.java b/src/main/java/net/minecraft/server/EnumDifficulty.java -index e0e72779c0..386eae71a1 100644 +index e0e72779c..386eae71a 100644 --- a/src/main/java/net/minecraft/server/EnumDifficulty.java +++ b/src/main/java/net/minecraft/server/EnumDifficulty.java @@ -19,6 +19,7 @@ public enum EnumDifficulty { @@ -37,7 +37,7 @@ index e0e72779c0..386eae71a1 100644 return this.f; } diff --git a/src/main/java/net/minecraft/server/IBlockLightAccess.java b/src/main/java/net/minecraft/server/IBlockLightAccess.java -index 03a89301f2..fa5eb188da 100644 +index 03a89301f..fa5eb188d 100644 --- a/src/main/java/net/minecraft/server/IBlockLightAccess.java +++ b/src/main/java/net/minecraft/server/IBlockLightAccess.java @@ -12,6 +12,7 @@ public interface IBlockLightAccess extends IBlockAccess { @@ -49,7 +49,7 @@ index 03a89301f2..fa5eb188da 100644 return this.getBrightness(EnumSkyBlock.SKY, blockposition) >= this.K(); } diff --git a/src/main/java/net/minecraft/server/MobSpawnerPhantom.java b/src/main/java/net/minecraft/server/MobSpawnerPhantom.java -index 4e3f01bc79..ac1ea2f0c1 100644 +index 4e3f01bc7..ac1ea2f0c 100644 --- a/src/main/java/net/minecraft/server/MobSpawnerPhantom.java +++ b/src/main/java/net/minecraft/server/MobSpawnerPhantom.java @@ -1,85 +1,99 @@ @@ -221,7 +221,7 @@ index 4e3f01bc79..ac1ea2f0c1 100644 } } diff --git a/src/main/java/net/minecraft/server/SpawnerCreature.java b/src/main/java/net/minecraft/server/SpawnerCreature.java -index 661ad8f8e6..ee91c33a7a 100644 +index 661ad8f8e..ee91c33a7 100644 --- a/src/main/java/net/minecraft/server/SpawnerCreature.java +++ b/src/main/java/net/minecraft/server/SpawnerCreature.java @@ -385,6 +385,7 @@ public final class SpawnerCreature { @@ -233,7 +233,7 @@ index 661ad8f8e6..ee91c33a7a 100644 return iblockdata.r(iblockaccess, blockposition) ? false : (iblockdata.isPowerSource() ? false : (!fluid.isEmpty() ? false : (iblockdata.a((Tag) TagsBlock.PREVENT_MOB_SPAWNING_INSIDE) ? false : !entitytypes.a(iblockdata)))); } diff --git a/src/main/java/net/minecraft/server/World.java b/src/main/java/net/minecraft/server/World.java -index ca4d260e8f..a8571dae8d 100644 +index ca4d260e8..a8571dae8 100644 --- a/src/main/java/net/minecraft/server/World.java +++ b/src/main/java/net/minecraft/server/World.java @@ -1564,6 +1564,7 @@ public abstract class World implements GeneratorAccess, AutoCloseable { @@ -245,10 +245,10 @@ index ca4d260e8f..a8571dae8d 100644 public int c() { return this.d; diff --git a/src/main/java/net/pl3x/purpur/PurpurWorldConfig.java b/src/main/java/net/pl3x/purpur/PurpurWorldConfig.java -index f4362093f3..b4e19576ae 100644 +index dbeea1ece..813ce4cec 100644 --- a/src/main/java/net/pl3x/purpur/PurpurWorldConfig.java +++ b/src/main/java/net/pl3x/purpur/PurpurWorldConfig.java -@@ -335,10 +335,34 @@ public class PurpurWorldConfig { +@@ -343,10 +343,34 @@ public class PurpurWorldConfig { public double phantomAttackedByCrystalRadius = 0.0D; public float phantomAttackedByCrystalDamage = 1.0F; public double phantomOrbitCrystalRadius = 0.0D; diff --git a/patches/server/0086-Customizable-EnderDragon-Health.patch b/patches/server/0086-Customizable-EnderDragon-Health.patch deleted file mode 100644 index 1de1cf134..000000000 --- a/patches/server/0086-Customizable-EnderDragon-Health.patch +++ /dev/null @@ -1,43 +0,0 @@ -From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001 -From: Jason Bierque -Date: Wed, 1 Jul 2020 22:36:06 +0200 -Subject: [PATCH] Customizable EnderDragon Health - - -diff --git a/src/main/java/net/minecraft/server/EntityEnderDragon.java b/src/main/java/net/minecraft/server/EntityEnderDragon.java -index a5a2182455..d2fcd0bc16 100644 ---- a/src/main/java/net/minecraft/server/EntityEnderDragon.java -+++ b/src/main/java/net/minecraft/server/EntityEnderDragon.java -@@ -62,6 +62,16 @@ public class EntityEnderDragon extends EntityInsentient implements IMonster { - this.bG = new DragonControllerManager(this); - } - -+ // Purpur start -+ @Override -+ public void initAttributes(World world) { -+ if (world != null) { -+ this.getAttributeInstance(GenericAttributes.MAX_HEALTH).setValue(world.purpurConfig.enderDragonMaxHealth); -+ setHealth(getMaxHealth()); -+ } -+ } -+ // Purpur end -+ - public static AttributeProvider.Builder m() { - return EntityInsentient.p().a(GenericAttributes.MAX_HEALTH, 200.0D); - } -diff --git a/src/main/java/net/pl3x/purpur/PurpurWorldConfig.java b/src/main/java/net/pl3x/purpur/PurpurWorldConfig.java -index ad055f4241..f4362093f3 100644 ---- a/src/main/java/net/pl3x/purpur/PurpurWorldConfig.java -+++ b/src/main/java/net/pl3x/purpur/PurpurWorldConfig.java -@@ -275,9 +275,11 @@ public class PurpurWorldConfig { - - public boolean enderDragonAlwaysDropsEggBlock = false; - public boolean enderDragonAlwaysDropsFullExp = false; -+ public double enderDragonMaxHealth = 200.0D; - private void enderDragonSettings() { - enderDragonAlwaysDropsEggBlock = getBoolean("mobs.ender_dragon.always-drop-egg-block", enderDragonAlwaysDropsEggBlock); - enderDragonAlwaysDropsFullExp = getBoolean("mobs.ender_dragon.always-drop-full-exp", enderDragonAlwaysDropsFullExp); -+ enderDragonMaxHealth = getDouble("mobs.ender_dragon.max-health", enderDragonMaxHealth); - } - - public boolean endermanAllowGriefing = true; diff --git a/patches/server/0088-Implement-bed-explosion-options.patch b/patches/server/0087-Implement-bed-explosion-options.patch similarity index 97% rename from patches/server/0088-Implement-bed-explosion-options.patch rename to patches/server/0087-Implement-bed-explosion-options.patch index 5f8a8312c..f6cc8136b 100644 --- a/patches/server/0088-Implement-bed-explosion-options.patch +++ b/patches/server/0087-Implement-bed-explosion-options.patch @@ -5,7 +5,7 @@ Subject: [PATCH] Implement bed explosion options diff --git a/src/main/java/net/minecraft/server/BlockBed.java b/src/main/java/net/minecraft/server/BlockBed.java -index 24a5c64b65..738535d01a 100644 +index 24a5c64b6..738535d01 100644 --- a/src/main/java/net/minecraft/server/BlockBed.java +++ b/src/main/java/net/minecraft/server/BlockBed.java @@ -88,7 +88,7 @@ public class BlockBed extends BlockFacingHorizontal implements ITileEntity { @@ -18,7 +18,7 @@ index 24a5c64b65..738535d01a 100644 } } diff --git a/src/main/java/net/pl3x/purpur/PurpurWorldConfig.java b/src/main/java/net/pl3x/purpur/PurpurWorldConfig.java -index b4e19576ae..415286b2bd 100644 +index 813ce4cec..7b47c4023 100644 --- a/src/main/java/net/pl3x/purpur/PurpurWorldConfig.java +++ b/src/main/java/net/pl3x/purpur/PurpurWorldConfig.java @@ -2,6 +2,7 @@ package net.pl3x.purpur; diff --git a/patches/server/0089-Implement-respawn-anchor-explosion-options.patch b/patches/server/0088-Implement-respawn-anchor-explosion-options.patch similarity index 98% rename from patches/server/0089-Implement-respawn-anchor-explosion-options.patch rename to patches/server/0088-Implement-respawn-anchor-explosion-options.patch index c57b6c9ba..d41009197 100644 --- a/patches/server/0089-Implement-respawn-anchor-explosion-options.patch +++ b/patches/server/0088-Implement-respawn-anchor-explosion-options.patch @@ -5,7 +5,7 @@ Subject: [PATCH] Implement respawn anchor explosion options diff --git a/src/main/java/net/minecraft/server/BlockRespawnAnchor.java b/src/main/java/net/minecraft/server/BlockRespawnAnchor.java -index 21c5ad83a9..521d161a3d 100644 +index 21c5ad83a..521d161a3 100644 --- a/src/main/java/net/minecraft/server/BlockRespawnAnchor.java +++ b/src/main/java/net/minecraft/server/BlockRespawnAnchor.java @@ -83,10 +83,7 @@ public class BlockRespawnAnchor extends Block { @@ -30,7 +30,7 @@ index 21c5ad83a9..521d161a3d 100644 public static boolean a(World world) { diff --git a/src/main/java/net/pl3x/purpur/PurpurWorldConfig.java b/src/main/java/net/pl3x/purpur/PurpurWorldConfig.java -index 415286b2bd..14996fcaed 100644 +index 7b47c4023..91d7d123b 100644 --- a/src/main/java/net/pl3x/purpur/PurpurWorldConfig.java +++ b/src/main/java/net/pl3x/purpur/PurpurWorldConfig.java @@ -240,6 +240,22 @@ public class PurpurWorldConfig { diff --git a/patches/server/0090-Add-allow-water-in-end-world-option.patch b/patches/server/0089-Add-allow-water-in-end-world-option.patch similarity index 97% rename from patches/server/0090-Add-allow-water-in-end-world-option.patch rename to patches/server/0089-Add-allow-water-in-end-world-option.patch index 0371d64a9..56b6e1467 100644 --- a/patches/server/0090-Add-allow-water-in-end-world-option.patch +++ b/patches/server/0089-Add-allow-water-in-end-world-option.patch @@ -5,7 +5,7 @@ Subject: [PATCH] Add allow water in end world option diff --git a/src/main/java/net/minecraft/server/BlockIce.java b/src/main/java/net/minecraft/server/BlockIce.java -index aba5c6b871..b75f6ded5d 100644 +index aba5c6b87..b75f6ded5 100644 --- a/src/main/java/net/minecraft/server/BlockIce.java +++ b/src/main/java/net/minecraft/server/BlockIce.java @@ -13,7 +13,7 @@ public class BlockIce extends BlockHalfTransparent { @@ -27,7 +27,7 @@ index aba5c6b871..b75f6ded5d 100644 } else { world.setTypeUpdate(blockposition, Blocks.WATER.getBlockData()); diff --git a/src/main/java/net/minecraft/server/ItemBucket.java b/src/main/java/net/minecraft/server/ItemBucket.java -index 120bf8436f..848a185c04 100644 +index 120bf8436..848a185c0 100644 --- a/src/main/java/net/minecraft/server/ItemBucket.java +++ b/src/main/java/net/minecraft/server/ItemBucket.java @@ -122,7 +122,7 @@ public class ItemBucket extends Item { @@ -49,7 +49,7 @@ index 120bf8436f..848a185c04 100644 return true; diff --git a/src/main/java/net/minecraft/server/World.java b/src/main/java/net/minecraft/server/World.java -index a8571dae8d..7a82a894bb 100644 +index a8571dae8..7a82a894b 100644 --- a/src/main/java/net/minecraft/server/World.java +++ b/src/main/java/net/minecraft/server/World.java @@ -1639,4 +1639,14 @@ public abstract class World implements GeneratorAccess, AutoCloseable { @@ -68,7 +68,7 @@ index a8571dae8d..7a82a894bb 100644 + // Purpur end } diff --git a/src/main/java/net/pl3x/purpur/PurpurConfig.java b/src/main/java/net/pl3x/purpur/PurpurConfig.java -index 68b3f1def3..cb7ea33361 100644 +index f137d2a28..35e54a7df 100644 --- a/src/main/java/net/pl3x/purpur/PurpurConfig.java +++ b/src/main/java/net/pl3x/purpur/PurpurConfig.java @@ -1,7 +1,6 @@ diff --git a/patches/server/0091-Allow-color-codes-in-books.patch b/patches/server/0090-Allow-color-codes-in-books.patch similarity index 98% rename from patches/server/0091-Allow-color-codes-in-books.patch rename to patches/server/0090-Allow-color-codes-in-books.patch index 3b1b34266..b8bc50f80 100644 --- a/patches/server/0091-Allow-color-codes-in-books.patch +++ b/patches/server/0090-Allow-color-codes-in-books.patch @@ -5,7 +5,7 @@ Subject: [PATCH] Allow color codes in books diff --git a/src/main/java/net/minecraft/server/PlayerConnection.java b/src/main/java/net/minecraft/server/PlayerConnection.java -index 7676659f44..bd206f1810 100644 +index 7676659f4..bd206f181 100644 --- a/src/main/java/net/minecraft/server/PlayerConnection.java +++ b/src/main/java/net/minecraft/server/PlayerConnection.java @@ -1003,7 +1003,8 @@ public class PlayerConnection implements PacketListenerPlayIn { diff --git a/patches/server/0092-Entity-lifespan.patch b/patches/server/0091-Entity-lifespan.patch similarity index 97% rename from patches/server/0092-Entity-lifespan.patch rename to patches/server/0091-Entity-lifespan.patch index 9a0c730f7..5305d1d21 100644 --- a/patches/server/0092-Entity-lifespan.patch +++ b/patches/server/0091-Entity-lifespan.patch @@ -5,7 +5,7 @@ Subject: [PATCH] Entity lifespan diff --git a/src/main/java/net/minecraft/server/EntityInsentient.java b/src/main/java/net/minecraft/server/EntityInsentient.java -index 7a40f08646..1d5d87e619 100644 +index 7a40f0864..1d5d87e61 100644 --- a/src/main/java/net/minecraft/server/EntityInsentient.java +++ b/src/main/java/net/minecraft/server/EntityInsentient.java @@ -53,7 +53,7 @@ public abstract class EntityInsentient extends EntityLiving { @@ -92,7 +92,7 @@ index 7a40f08646..1d5d87e619 100644 } diff --git a/src/main/java/net/minecraft/server/PlayerConnection.java b/src/main/java/net/minecraft/server/PlayerConnection.java -index bd206f1810..a57588acf0 100644 +index bd206f181..a57588acf 100644 --- a/src/main/java/net/minecraft/server/PlayerConnection.java +++ b/src/main/java/net/minecraft/server/PlayerConnection.java @@ -2214,6 +2214,7 @@ public class PlayerConnection implements PacketListenerPlayIn { @@ -104,7 +104,7 @@ index bd206f1810..a57588acf0 100644 event = new PlayerInteractEntityEvent((Player) this.getPlayer(), entity.getBukkitEntity(), (packetplayinuseentity.c() == EnumHand.OFF_HAND) ? EquipmentSlot.OFF_HAND : EquipmentSlot.HAND); } else { diff --git a/src/main/java/net/pl3x/purpur/PurpurWorldConfig.java b/src/main/java/net/pl3x/purpur/PurpurWorldConfig.java -index 14996fcaed..8126603aab 100644 +index 91d7d123b..2f326f882 100644 --- a/src/main/java/net/pl3x/purpur/PurpurWorldConfig.java +++ b/src/main/java/net/pl3x/purpur/PurpurWorldConfig.java @@ -103,6 +103,11 @@ public class PurpurWorldConfig { diff --git a/patches/server/0093-Add-option-to-teleport-to-spawn-if-outside-world-bor.patch b/patches/server/0092-Add-option-to-teleport-to-spawn-if-outside-world-bor.patch similarity index 96% rename from patches/server/0093-Add-option-to-teleport-to-spawn-if-outside-world-bor.patch rename to patches/server/0092-Add-option-to-teleport-to-spawn-if-outside-world-bor.patch index 32419e171..f28031978 100644 --- a/patches/server/0093-Add-option-to-teleport-to-spawn-if-outside-world-bor.patch +++ b/patches/server/0092-Add-option-to-teleport-to-spawn-if-outside-world-bor.patch @@ -5,7 +5,7 @@ Subject: [PATCH] Add option to teleport to spawn if outside world border diff --git a/src/main/java/net/minecraft/server/EntityLiving.java b/src/main/java/net/minecraft/server/EntityLiving.java -index 27838680a2..0d67c9c6cc 100644 +index 27838680a..0d67c9c6c 100644 --- a/src/main/java/net/minecraft/server/EntityLiving.java +++ b/src/main/java/net/minecraft/server/EntityLiving.java @@ -277,6 +277,7 @@ public abstract class EntityLiving extends Entity { @@ -17,7 +17,7 @@ index 27838680a2..0d67c9c6cc 100644 } } diff --git a/src/main/java/net/minecraft/server/EntityPlayer.java b/src/main/java/net/minecraft/server/EntityPlayer.java -index 36168d0f7c..69be072e76 100644 +index 36168d0f7..69be072e7 100644 --- a/src/main/java/net/minecraft/server/EntityPlayer.java +++ b/src/main/java/net/minecraft/server/EntityPlayer.java @@ -2366,4 +2366,26 @@ public class EntityPlayer extends EntityHuman implements ICrafting { @@ -48,7 +48,7 @@ index 36168d0f7c..69be072e76 100644 + // Purpur end } diff --git a/src/main/java/net/pl3x/purpur/PurpurWorldConfig.java b/src/main/java/net/pl3x/purpur/PurpurWorldConfig.java -index 8126603aab..cc0752f253 100644 +index 2f326f882..73027d6ee 100644 --- a/src/main/java/net/pl3x/purpur/PurpurWorldConfig.java +++ b/src/main/java/net/pl3x/purpur/PurpurWorldConfig.java @@ -178,6 +178,11 @@ public class PurpurWorldConfig { diff --git a/patches/server/0094-Squid-EAR-immunity.patch b/patches/server/0093-Squid-EAR-immunity.patch similarity index 92% rename from patches/server/0094-Squid-EAR-immunity.patch rename to patches/server/0093-Squid-EAR-immunity.patch index 7fa433492..826621851 100644 --- a/patches/server/0094-Squid-EAR-immunity.patch +++ b/patches/server/0093-Squid-EAR-immunity.patch @@ -5,10 +5,10 @@ Subject: [PATCH] Squid EAR immunity diff --git a/src/main/java/net/pl3x/purpur/PurpurWorldConfig.java b/src/main/java/net/pl3x/purpur/PurpurWorldConfig.java -index cc0752f253..47df73beca 100644 +index 73027d6ee..de2d072b2 100644 --- a/src/main/java/net/pl3x/purpur/PurpurWorldConfig.java +++ b/src/main/java/net/pl3x/purpur/PurpurWorldConfig.java -@@ -436,6 +436,11 @@ public class PurpurWorldConfig { +@@ -444,6 +444,11 @@ public class PurpurWorldConfig { snowGolemPutPumpkinBack = getBoolean("mobs.snow_golem.pumpkin-can-be-added-back", snowGolemPutPumpkinBack); } @@ -21,7 +21,7 @@ index cc0752f253..47df73beca 100644 public boolean villagerUseBrainTicksOnlyWhenLagging = true; public boolean villagerCanBeLeashed = false; diff --git a/src/main/java/org/spigotmc/ActivationRange.java b/src/main/java/org/spigotmc/ActivationRange.java -index b47d6fa2de..ff0621e08a 100644 +index b47d6fa2d..ff0621e08 100644 --- a/src/main/java/org/spigotmc/ActivationRange.java +++ b/src/main/java/org/spigotmc/ActivationRange.java @@ -378,6 +378,7 @@ public class ActivationRange diff --git a/patches/server/0095-Configurable-end-spike-seed.patch b/patches/server/0094-Configurable-end-spike-seed.patch similarity index 97% rename from patches/server/0095-Configurable-end-spike-seed.patch rename to patches/server/0094-Configurable-end-spike-seed.patch index 104de5bc9..456110143 100644 --- a/patches/server/0095-Configurable-end-spike-seed.patch +++ b/patches/server/0094-Configurable-end-spike-seed.patch @@ -5,7 +5,7 @@ Subject: [PATCH] Configurable end spike seed diff --git a/src/main/java/net/minecraft/server/WorldGenEnder.java b/src/main/java/net/minecraft/server/WorldGenEnder.java -index 00a1707209..5eb9b3d35e 100644 +index 00a170720..5eb9b3d35 100644 --- a/src/main/java/net/minecraft/server/WorldGenEnder.java +++ b/src/main/java/net/minecraft/server/WorldGenEnder.java @@ -23,12 +23,14 @@ public class WorldGenEnder extends WorldGenerator list = worldgenfeatureendspikeconfiguration.c(); diff --git a/src/main/java/net/pl3x/purpur/PurpurConfig.java b/src/main/java/net/pl3x/purpur/PurpurConfig.java -index cb7ea33361..ac023770ea 100644 +index 35e54a7df..5405928a6 100644 --- a/src/main/java/net/pl3x/purpur/PurpurConfig.java +++ b/src/main/java/net/pl3x/purpur/PurpurConfig.java @@ -1,5 +1,6 @@ diff --git a/patches/server/0096-Configurable-dungeon-seed.patch b/patches/server/0095-Configurable-dungeon-seed.patch similarity index 97% rename from patches/server/0096-Configurable-dungeon-seed.patch rename to patches/server/0095-Configurable-dungeon-seed.patch index e5b197109..1614fc470 100644 --- a/patches/server/0096-Configurable-dungeon-seed.patch +++ b/patches/server/0095-Configurable-dungeon-seed.patch @@ -5,7 +5,7 @@ Subject: [PATCH] Configurable dungeon seed diff --git a/src/main/java/net/minecraft/server/WorldGenDungeons.java b/src/main/java/net/minecraft/server/WorldGenDungeons.java -index 07f7b69fef..6aa1626f38 100644 +index 07f7b69fe..6aa1626f3 100644 --- a/src/main/java/net/minecraft/server/WorldGenDungeons.java +++ b/src/main/java/net/minecraft/server/WorldGenDungeons.java @@ -11,12 +11,21 @@ public class WorldGenDungeons extends WorldGenerator(this, (fluidtype) -> { return fluidtype == null || fluidtype == FluidTypes.EMPTY; diff --git a/src/main/java/net/pl3x/purpur/PurpurWorldConfig.java b/src/main/java/net/pl3x/purpur/PurpurWorldConfig.java -index e957d4f2df..992268620b 100644 +index 876a51801..4b96afcbf 100644 --- a/src/main/java/net/pl3x/purpur/PurpurWorldConfig.java +++ b/src/main/java/net/pl3x/purpur/PurpurWorldConfig.java @@ -11,8 +11,10 @@ import org.bukkit.configuration.ConfigurationSection; diff --git a/patches/server/0110-Add-option-to-disable-dolphin-treasure-searching.patch b/patches/server/0109-Add-option-to-disable-dolphin-treasure-searching.patch similarity index 95% rename from patches/server/0110-Add-option-to-disable-dolphin-treasure-searching.patch rename to patches/server/0109-Add-option-to-disable-dolphin-treasure-searching.patch index b37bdc1b7..19805b113 100644 --- a/patches/server/0110-Add-option-to-disable-dolphin-treasure-searching.patch +++ b/patches/server/0109-Add-option-to-disable-dolphin-treasure-searching.patch @@ -5,7 +5,7 @@ Subject: [PATCH] Add option to disable dolphin treasure searching diff --git a/src/main/java/net/minecraft/server/EntityDolphin.java b/src/main/java/net/minecraft/server/EntityDolphin.java -index 2916ee89ef..664f969336 100644 +index 2916ee89e..664f96933 100644 --- a/src/main/java/net/minecraft/server/EntityDolphin.java +++ b/src/main/java/net/minecraft/server/EntityDolphin.java @@ -329,6 +329,7 @@ public class EntityDolphin extends EntityWaterAnimal { @@ -17,7 +17,7 @@ index 2916ee89ef..664f969336 100644 } diff --git a/src/main/java/net/pl3x/purpur/PurpurWorldConfig.java b/src/main/java/net/pl3x/purpur/PurpurWorldConfig.java -index 992268620b..226d64798f 100644 +index 4b96afcbf..9c7dec1b4 100644 --- a/src/main/java/net/pl3x/purpur/PurpurWorldConfig.java +++ b/src/main/java/net/pl3x/purpur/PurpurWorldConfig.java @@ -342,6 +342,11 @@ public class PurpurWorldConfig { diff --git a/patches/server/0111-Short-enderman-height.patch b/patches/server/0110-Short-enderman-height.patch similarity index 97% rename from patches/server/0111-Short-enderman-height.patch rename to patches/server/0110-Short-enderman-height.patch index 965bc4b25..87fd0ef95 100644 --- a/patches/server/0111-Short-enderman-height.patch +++ b/patches/server/0110-Short-enderman-height.patch @@ -5,7 +5,7 @@ Subject: [PATCH] Short enderman height diff --git a/src/main/java/net/minecraft/server/EntityEnderman.java b/src/main/java/net/minecraft/server/EntityEnderman.java -index 7b175240e4..e336403266 100644 +index 7b175240e..e33640326 100644 --- a/src/main/java/net/minecraft/server/EntityEnderman.java +++ b/src/main/java/net/minecraft/server/EntityEnderman.java @@ -321,6 +321,7 @@ public class EntityEnderman extends EntityMonster implements IEntityAngerable { @@ -17,7 +17,7 @@ index 7b175240e4..e336403266 100644 if (this.tryEscape(EndermanEscapeEvent.Reason.INDIRECT)) { // Paper start for (int i = 0; i < 64; ++i) { diff --git a/src/main/java/net/minecraft/server/EntityTypes.java b/src/main/java/net/minecraft/server/EntityTypes.java -index 37b984a5b6..7a35a367a5 100644 +index 37b984a5b..7a35a367a 100644 --- a/src/main/java/net/minecraft/server/EntityTypes.java +++ b/src/main/java/net/minecraft/server/EntityTypes.java @@ -34,7 +34,7 @@ public class EntityTypes { @@ -30,7 +30,7 @@ index 37b984a5b6..7a35a367a5 100644 public static final EntityTypes EVOKER = a("evoker", EntityTypes.Builder.a(EntityEvoker::new, EnumCreatureType.MONSTER).a(0.6F, 1.95F).trackingRange(8)); public static final EntityTypes EVOKER_FANGS = a("evoker_fangs", EntityTypes.Builder.a(EntityEvokerFangs::new, EnumCreatureType.MISC).a(0.5F, 0.8F).trackingRange(6).updateInterval(2)); diff --git a/src/main/java/net/pl3x/purpur/PurpurConfig.java b/src/main/java/net/pl3x/purpur/PurpurConfig.java -index 4177be0337..79fc12f499 100644 +index 46d99d1e7..f75df9990 100644 --- a/src/main/java/net/pl3x/purpur/PurpurConfig.java +++ b/src/main/java/net/pl3x/purpur/PurpurConfig.java @@ -190,6 +190,11 @@ public class PurpurConfig { diff --git a/patches/server/0112-Stop-squids-floating-on-top-of-water.patch b/patches/server/0111-Stop-squids-floating-on-top-of-water.patch similarity index 93% rename from patches/server/0112-Stop-squids-floating-on-top-of-water.patch rename to patches/server/0111-Stop-squids-floating-on-top-of-water.patch index 254dc9bff..e8c3045ee 100644 --- a/patches/server/0112-Stop-squids-floating-on-top-of-water.patch +++ b/patches/server/0111-Stop-squids-floating-on-top-of-water.patch @@ -5,7 +5,7 @@ Subject: [PATCH] Stop squids floating on top of water diff --git a/src/main/java/net/minecraft/server/Entity.java b/src/main/java/net/minecraft/server/Entity.java -index 974e75945d..9679722a57 100644 +index 974e75945..9679722a5 100644 --- a/src/main/java/net/minecraft/server/Entity.java +++ b/src/main/java/net/minecraft/server/Entity.java @@ -3438,8 +3438,13 @@ public abstract class Entity implements INamableTileEntity, ICommandListener, Ke @@ -24,7 +24,7 @@ index 974e75945d..9679722a57 100644 int j = MathHelper.f(axisalignedbb.maxX); int k = MathHelper.floor(axisalignedbb.minY); diff --git a/src/main/java/net/minecraft/server/EntitySquid.java b/src/main/java/net/minecraft/server/EntitySquid.java -index b21605a623..148e4b1587 100644 +index b21605a62..148e4b158 100644 --- a/src/main/java/net/minecraft/server/EntitySquid.java +++ b/src/main/java/net/minecraft/server/EntitySquid.java @@ -25,6 +25,14 @@ public class EntitySquid extends EntityWaterAnimal { @@ -43,10 +43,10 @@ index b21605a623..148e4b1587 100644 protected void initPathfinder() { this.goalSelector.a(0, new EntitySquid.PathfinderGoalSquid(this)); diff --git a/src/main/java/net/pl3x/purpur/PurpurWorldConfig.java b/src/main/java/net/pl3x/purpur/PurpurWorldConfig.java -index 226d64798f..8d7da9fe0b 100644 +index 9c7dec1b4..5cc717c8d 100644 --- a/src/main/java/net/pl3x/purpur/PurpurWorldConfig.java +++ b/src/main/java/net/pl3x/purpur/PurpurWorldConfig.java -@@ -482,8 +482,10 @@ public class PurpurWorldConfig { +@@ -490,8 +490,10 @@ public class PurpurWorldConfig { } public boolean squidImmuneToEAR = true; diff --git a/patches/server/0113-Ridables.patch b/patches/server/0112-Ridables.patch similarity index 98% rename from patches/server/0113-Ridables.patch rename to patches/server/0112-Ridables.patch index fe110659c..5753e439d 100644 --- a/patches/server/0113-Ridables.patch +++ b/patches/server/0112-Ridables.patch @@ -5,7 +5,7 @@ Subject: [PATCH] Ridables diff --git a/src/main/java/net/minecraft/server/AttributeDefaults.java b/src/main/java/net/minecraft/server/AttributeDefaults.java -index 8f95a4e497..ab05b5e403 100644 +index 8f95a4e49..ab05b5e40 100644 --- a/src/main/java/net/minecraft/server/AttributeDefaults.java +++ b/src/main/java/net/minecraft/server/AttributeDefaults.java @@ -9,7 +9,80 @@ import org.apache.logging.log4j.Logger; @@ -91,7 +91,7 @@ index 8f95a4e497..ab05b5e403 100644 public static AttributeProvider a(EntityTypes entitytypes) { return (AttributeProvider) AttributeDefaults.b.get(entitytypes); diff --git a/src/main/java/net/minecraft/server/AttributeProvider.java b/src/main/java/net/minecraft/server/AttributeProvider.java -index dd235a6fc4..ac902c614d 100644 +index dd235a6fc..ac902c614 100644 --- a/src/main/java/net/minecraft/server/AttributeProvider.java +++ b/src/main/java/net/minecraft/server/AttributeProvider.java @@ -101,6 +101,7 @@ public class AttributeProvider { @@ -103,7 +103,7 @@ index dd235a6fc4..ac902c614d 100644 this.b = true; return new AttributeProvider(this.a); diff --git a/src/main/java/net/minecraft/server/ControllerLookDolphin.java b/src/main/java/net/minecraft/server/ControllerLookDolphin.java -index e5bdddfc14..8200ba60b7 100644 +index e5bdddfc1..8200ba60b 100644 --- a/src/main/java/net/minecraft/server/ControllerLookDolphin.java +++ b/src/main/java/net/minecraft/server/ControllerLookDolphin.java @@ -1,6 +1,6 @@ @@ -124,7 +124,7 @@ index e5bdddfc14..8200ba60b7 100644 this.d = false; this.a.aC = this.a(this.a.aC, this.h() + 20.0F, this.b); diff --git a/src/main/java/net/minecraft/server/ControllerMove.java b/src/main/java/net/minecraft/server/ControllerMove.java -index 8f9fb058c1..eaf4469468 100644 +index 8f9fb058c..eaf446946 100644 --- a/src/main/java/net/minecraft/server/ControllerMove.java +++ b/src/main/java/net/minecraft/server/ControllerMove.java @@ -6,9 +6,9 @@ public class ControllerMove { @@ -141,7 +141,7 @@ index 8f9fb058c1..eaf4469468 100644 public ControllerMove(EntityInsentient entityinsentient) { diff --git a/src/main/java/net/minecraft/server/DamageSource.java b/src/main/java/net/minecraft/server/DamageSource.java -index bd0267ee4b..8b36ac2b09 100644 +index bd0267ee4..8b36ac2b0 100644 --- a/src/main/java/net/minecraft/server/DamageSource.java +++ b/src/main/java/net/minecraft/server/DamageSource.java @@ -56,6 +56,7 @@ public class DamageSource { @@ -161,7 +161,7 @@ index bd0267ee4b..8b36ac2b09 100644 this.B = true; return this; diff --git a/src/main/java/net/minecraft/server/Entity.java b/src/main/java/net/minecraft/server/Entity.java -index 9679722a57..7e379aa144 100644 +index 9679722a5..7e379aa14 100644 --- a/src/main/java/net/minecraft/server/Entity.java +++ b/src/main/java/net/minecraft/server/Entity.java @@ -80,7 +80,7 @@ public abstract class Entity implements INamableTileEntity, ICommandListener, Ke @@ -327,7 +327,7 @@ index 9679722a57..7e379aa144 100644 + // Purpur end } diff --git a/src/main/java/net/minecraft/server/EntityBat.java b/src/main/java/net/minecraft/server/EntityBat.java -index 0a59e02d76..bdf4e798ac 100644 +index 0a59e02d7..bdf4e798a 100644 --- a/src/main/java/net/minecraft/server/EntityBat.java +++ b/src/main/java/net/minecraft/server/EntityBat.java @@ -14,9 +14,48 @@ public class EntityBat extends EntityAmbient { @@ -403,7 +403,7 @@ index 0a59e02d76..bdf4e798ac 100644 BlockPosition blockposition = this.getChunkCoordinates(); BlockPosition blockposition1 = blockposition.up(); diff --git a/src/main/java/net/minecraft/server/EntityBee.java b/src/main/java/net/minecraft/server/EntityBee.java -index f73641ddb3..d8354ec4d1 100644 +index f73641ddb..d8354ec4d 100644 --- a/src/main/java/net/minecraft/server/EntityBee.java +++ b/src/main/java/net/minecraft/server/EntityBee.java @@ -37,6 +37,7 @@ public class EntityBee extends EntityAnimal implements IEntityAngerable, EntityB @@ -534,7 +534,7 @@ index f73641ddb3..d8354ec4d1 100644 } diff --git a/src/main/java/net/minecraft/server/EntityBlaze.java b/src/main/java/net/minecraft/server/EntityBlaze.java -index 74082136b3..dcfad16e06 100644 +index 74082136b..dcfad16e0 100644 --- a/src/main/java/net/minecraft/server/EntityBlaze.java +++ b/src/main/java/net/minecraft/server/EntityBlaze.java @@ -10,6 +10,7 @@ public class EntityBlaze extends EntityMonster { @@ -614,7 +614,7 @@ index 74082136b3..dcfad16e06 100644 if (this.c <= 0) { this.c = 100; diff --git a/src/main/java/net/minecraft/server/EntityCat.java b/src/main/java/net/minecraft/server/EntityCat.java -index 57166a543a..05929d5c53 100644 +index 57166a543..05929d5c5 100644 --- a/src/main/java/net/minecraft/server/EntityCat.java +++ b/src/main/java/net/minecraft/server/EntityCat.java @@ -41,6 +41,25 @@ public class EntityCat extends EntityTameableAnimal { @@ -694,7 +694,7 @@ index 57166a543a..05929d5c53 100644 @Override diff --git a/src/main/java/net/minecraft/server/EntityCaveSpider.java b/src/main/java/net/minecraft/server/EntityCaveSpider.java -index 776f3d25a6..2e1f2dec17 100644 +index 776f3d25a..2e1f2dec1 100644 --- a/src/main/java/net/minecraft/server/EntityCaveSpider.java +++ b/src/main/java/net/minecraft/server/EntityCaveSpider.java @@ -8,6 +8,18 @@ public class EntityCaveSpider extends EntitySpider { @@ -717,7 +717,7 @@ index 776f3d25a6..2e1f2dec17 100644 return EntitySpider.eK().a(GenericAttributes.MAX_HEALTH, 12.0D); } diff --git a/src/main/java/net/minecraft/server/EntityChicken.java b/src/main/java/net/minecraft/server/EntityChicken.java -index 11a612fa39..a16ecd7edc 100644 +index 11a612fa3..a16ecd7ed 100644 --- a/src/main/java/net/minecraft/server/EntityChicken.java +++ b/src/main/java/net/minecraft/server/EntityChicken.java @@ -18,6 +18,16 @@ public class EntityChicken extends EntityAnimal { @@ -754,7 +754,7 @@ index 11a612fa39..a16ecd7edc 100644 } else { this.goalSelector.a(1, new PathfinderGoalPanic(this, 1.4D)); diff --git a/src/main/java/net/minecraft/server/EntityCod.java b/src/main/java/net/minecraft/server/EntityCod.java -index 9a99af6e9c..039fae4c29 100644 +index 9a99af6e9..039fae4c2 100644 --- a/src/main/java/net/minecraft/server/EntityCod.java +++ b/src/main/java/net/minecraft/server/EntityCod.java @@ -6,6 +6,18 @@ public class EntityCod extends EntityFishSchool { @@ -777,7 +777,7 @@ index 9a99af6e9c..039fae4c29 100644 protected ItemStack eK() { return new ItemStack(Items.COD_BUCKET); diff --git a/src/main/java/net/minecraft/server/EntityComplexPart.java b/src/main/java/net/minecraft/server/EntityComplexPart.java -index c1b1bd123e..26ff230ef7 100644 +index c1b1bd123..26ff230ef 100644 --- a/src/main/java/net/minecraft/server/EntityComplexPart.java +++ b/src/main/java/net/minecraft/server/EntityComplexPart.java @@ -47,4 +47,11 @@ public class EntityComplexPart extends Entity { @@ -793,7 +793,7 @@ index c1b1bd123e..26ff230ef7 100644 + // Purpur end } diff --git a/src/main/java/net/minecraft/server/EntityCow.java b/src/main/java/net/minecraft/server/EntityCow.java -index cfb009c811..1219b0aa9c 100644 +index cfb009c81..1219b0aa9 100644 --- a/src/main/java/net/minecraft/server/EntityCow.java +++ b/src/main/java/net/minecraft/server/EntityCow.java @@ -11,9 +11,22 @@ public class EntityCow extends EntityAnimal { @@ -877,7 +877,7 @@ index cfb009c811..1219b0aa9c 100644 this.world.addEntity(mooshroom); this.die(); diff --git a/src/main/java/net/minecraft/server/EntityCreeper.java b/src/main/java/net/minecraft/server/EntityCreeper.java -index 2256b81624..d186f257fa 100644 +index 2256b8162..d186f257f 100644 --- a/src/main/java/net/minecraft/server/EntityCreeper.java +++ b/src/main/java/net/minecraft/server/EntityCreeper.java @@ -18,12 +18,27 @@ public class EntityCreeper extends EntityMonster { @@ -995,7 +995,7 @@ index 2256b81624..d186f257fa 100644 } // Paper end diff --git a/src/main/java/net/minecraft/server/EntityDolphin.java b/src/main/java/net/minecraft/server/EntityDolphin.java -index 664f969336..9d5d143a99 100644 +index 664f96933..9d5d143a9 100644 --- a/src/main/java/net/minecraft/server/EntityDolphin.java +++ b/src/main/java/net/minecraft/server/EntityDolphin.java @@ -17,6 +17,7 @@ public class EntityDolphin extends EntityWaterAnimal { @@ -1128,7 +1128,7 @@ index 664f969336..9d5d143a99 100644 this.i.setMot(this.i.getMot().add(0.0D, 0.005D, 0.0D)); } diff --git a/src/main/java/net/minecraft/server/EntityDrowned.java b/src/main/java/net/minecraft/server/EntityDrowned.java -index 1a10281692..125eab60f2 100644 +index 1a1028169..125eab60f 100644 --- a/src/main/java/net/minecraft/server/EntityDrowned.java +++ b/src/main/java/net/minecraft/server/EntityDrowned.java @@ -22,6 +22,16 @@ public class EntityDrowned extends EntityZombie implements IRangedEntity { @@ -1184,7 +1184,7 @@ index 1a10281692..125eab60f2 100644 @Override diff --git a/src/main/java/net/minecraft/server/EntityEnderDragon.java b/src/main/java/net/minecraft/server/EntityEnderDragon.java -index d2fcd0bc16..fd1e966d1a 100644 +index a5a218245..17a9217ed 100644 --- a/src/main/java/net/minecraft/server/EntityEnderDragon.java +++ b/src/main/java/net/minecraft/server/EntityEnderDragon.java @@ -46,6 +46,7 @@ public class EntityEnderDragon extends EntityInsentient implements IMonster { @@ -1195,7 +1195,7 @@ index d2fcd0bc16..fd1e966d1a 100644 public EntityEnderDragon(EntityTypes entitytypes, World world) { super(EntityTypes.ENDER_DRAGON, world); -@@ -60,9 +61,43 @@ public class EntityEnderDragon extends EntityInsentient implements IMonster { +@@ -60,8 +61,44 @@ public class EntityEnderDragon extends EntityInsentient implements IMonster { } this.bG = new DragonControllerManager(this); @@ -1218,9 +1218,9 @@ index d2fcd0bc16..fd1e966d1a 100644 + } + }; + // Purpur end - } - - // Purpur start ++ } ++ ++ // Purpur start + @Override + public boolean isRidable() { + return world.purpurConfig.enderDragonRidable; @@ -1229,17 +1229,18 @@ index d2fcd0bc16..fd1e966d1a 100644 + @Override + public boolean isRidableInWater() { + return world.purpurConfig.enderDragonRidableInWater; -+ } -+ + } + + @Override + public double getMaxY() { + return world.purpurConfig.enderDragonMaxY; + } ++ // Purpur end + - @Override - public void initAttributes(World world) { - if (world != null) { -@@ -104,6 +139,37 @@ public class EntityEnderDragon extends EntityInsentient implements IMonster { + public static AttributeProvider.Builder m() { + return EntityInsentient.p().a(GenericAttributes.MAX_HEALTH, 200.0D); + } +@@ -94,6 +131,37 @@ public class EntityEnderDragon extends EntityInsentient implements IMonster { @Override public void movementTick() { @@ -1277,7 +1278,7 @@ index d2fcd0bc16..fd1e966d1a 100644 float f; float f1; -@@ -125,6 +191,7 @@ public class EntityEnderDragon extends EntityInsentient implements IMonster { +@@ -115,6 +183,7 @@ public class EntityEnderDragon extends EntityInsentient implements IMonster { this.bp = this.bq; if (this.dl()) { @@ -1285,7 +1286,7 @@ index d2fcd0bc16..fd1e966d1a 100644 f = (this.random.nextFloat() - 0.5F) * 8.0F; f1 = (this.random.nextFloat() - 0.5F) * 4.0F; float f2 = (this.random.nextFloat() - 0.5F) * 8.0F; -@@ -136,9 +203,9 @@ public class EntityEnderDragon extends EntityInsentient implements IMonster { +@@ -126,9 +195,9 @@ public class EntityEnderDragon extends EntityInsentient implements IMonster { f1 = 0.2F / (MathHelper.sqrt(c(vec3d)) * 10.0F + 1.0F); f1 *= (float) Math.pow(2.0D, vec3d.y); @@ -1297,7 +1298,7 @@ index d2fcd0bc16..fd1e966d1a 100644 this.bq += f1 * 0.5F; } else { this.bq += f1; -@@ -182,7 +249,7 @@ public class EntityEnderDragon extends EntityInsentient implements IMonster { +@@ -172,7 +241,7 @@ public class EntityEnderDragon extends EntityInsentient implements IMonster { } this.bG.a().b(); @@ -1306,7 +1307,7 @@ index d2fcd0bc16..fd1e966d1a 100644 IDragonController idragoncontroller = this.bG.a(); idragoncontroller.c(); -@@ -249,7 +316,7 @@ public class EntityEnderDragon extends EntityInsentient implements IMonster { +@@ -239,7 +308,7 @@ public class EntityEnderDragon extends EntityInsentient implements IMonster { this.a(this.bz, (double) (f11 * 0.5F), 0.0D, (double) (-f12 * 0.5F)); this.a(this.bD, (double) (f12 * 4.5F), 2.0D, (double) (f11 * 4.5F)); this.a(this.bE, (double) (f12 * -4.5F), 2.0D, (double) (f11 * -4.5F)); @@ -1315,7 +1316,7 @@ index d2fcd0bc16..fd1e966d1a 100644 this.a(this.world.getEntities(this, this.bD.getBoundingBox().grow(4.0D, 2.0D, 4.0D).d(0.0D, -2.0D, 0.0D), IEntitySelector.e)); this.a(this.world.getEntities(this, this.bE.getBoundingBox().grow(4.0D, 2.0D, 4.0D).d(0.0D, -2.0D, 0.0D), IEntitySelector.e)); this.b(this.world.getEntities(this, this.bo.getBoundingBox().g(1.0D), IEntitySelector.e)); -@@ -292,7 +359,7 @@ public class EntityEnderDragon extends EntityInsentient implements IMonster { +@@ -282,7 +351,7 @@ public class EntityEnderDragon extends EntityInsentient implements IMonster { } if (!this.world.isClientSide) { @@ -1324,7 +1325,7 @@ index d2fcd0bc16..fd1e966d1a 100644 if (this.bF != null) { this.bF.b(this); } -@@ -959,7 +1026,7 @@ public class EntityEnderDragon extends EntityInsentient implements IMonster { +@@ -949,7 +1018,7 @@ public class EntityEnderDragon extends EntityInsentient implements IMonster { @Override protected boolean n(Entity entity) { @@ -1334,7 +1335,7 @@ index d2fcd0bc16..fd1e966d1a 100644 @Override diff --git a/src/main/java/net/minecraft/server/EntityEnderman.java b/src/main/java/net/minecraft/server/EntityEnderman.java -index e336403266..995849212c 100644 +index e33640326..995849212 100644 --- a/src/main/java/net/minecraft/server/EntityEnderman.java +++ b/src/main/java/net/minecraft/server/EntityEnderman.java @@ -30,9 +30,22 @@ public class EntityEnderman extends EntityMonster implements IEntityAngerable { @@ -1402,7 +1403,7 @@ index e336403266..995849212c 100644 @Override diff --git a/src/main/java/net/minecraft/server/EntityEndermite.java b/src/main/java/net/minecraft/server/EntityEndermite.java -index fcebf36312..7eef7f523a 100644 +index fcebf3631..7eef7f523 100644 --- a/src/main/java/net/minecraft/server/EntityEndermite.java +++ b/src/main/java/net/minecraft/server/EntityEndermite.java @@ -12,14 +12,28 @@ public class EntityEndermite extends EntityMonster { @@ -1436,7 +1437,7 @@ index fcebf36312..7eef7f523a 100644 } diff --git a/src/main/java/net/minecraft/server/EntityEvoker.java b/src/main/java/net/minecraft/server/EntityEvoker.java -index f40fbef32f..c75dc75611 100644 +index f40fbef32..c75dc7561 100644 --- a/src/main/java/net/minecraft/server/EntityEvoker.java +++ b/src/main/java/net/minecraft/server/EntityEvoker.java @@ -12,10 +12,23 @@ public class EntityEvoker extends EntityIllagerWizard { @@ -1496,7 +1497,7 @@ index f40fbef32f..c75dc75611 100644 @Override diff --git a/src/main/java/net/minecraft/server/EntityFish.java b/src/main/java/net/minecraft/server/EntityFish.java -index 9b84564401..668f9d61b7 100644 +index 9b8456440..668f9d61b 100644 --- a/src/main/java/net/minecraft/server/EntityFish.java +++ b/src/main/java/net/minecraft/server/EntityFish.java @@ -70,13 +70,12 @@ public abstract class EntityFish extends EntityWaterAnimal { @@ -1558,7 +1559,7 @@ index 9b84564401..668f9d61b7 100644 this.i.setMot(this.i.getMot().add(0.0D, 0.005D, 0.0D)); } diff --git a/src/main/java/net/minecraft/server/EntityFishSchool.java b/src/main/java/net/minecraft/server/EntityFishSchool.java -index 08372b7226..6a8e15f016 100644 +index 08372b722..6a8e15f01 100644 --- a/src/main/java/net/minecraft/server/EntityFishSchool.java +++ b/src/main/java/net/minecraft/server/EntityFishSchool.java @@ -16,7 +16,7 @@ public abstract class EntityFishSchool extends EntityFish { @@ -1571,7 +1572,7 @@ index 08372b7226..6a8e15f016 100644 @Override diff --git a/src/main/java/net/minecraft/server/EntityFox.java b/src/main/java/net/minecraft/server/EntityFox.java -index 8845afd83d..f5defe4713 100644 +index 8845afd83..f5defe471 100644 --- a/src/main/java/net/minecraft/server/EntityFox.java +++ b/src/main/java/net/minecraft/server/EntityFox.java @@ -55,6 +55,39 @@ public class EntityFox extends EntityAnimal { @@ -1695,7 +1696,7 @@ index 8845afd83d..f5defe4713 100644 } diff --git a/src/main/java/net/minecraft/server/EntityGhast.java b/src/main/java/net/minecraft/server/EntityGhast.java -index a67611c4f9..216506a7b1 100644 +index a67611c4f..216506a7b 100644 --- a/src/main/java/net/minecraft/server/EntityGhast.java +++ b/src/main/java/net/minecraft/server/EntityGhast.java @@ -14,11 +14,42 @@ public class EntityGhast extends EntityFlying implements IMonster { @@ -1769,7 +1770,7 @@ index a67611c4f9..216506a7b1 100644 if (this.j-- <= 0) { this.j += this.i.getRandom().nextInt(5) + 2; diff --git a/src/main/java/net/minecraft/server/EntityGiantZombie.java b/src/main/java/net/minecraft/server/EntityGiantZombie.java -index 8dce2aad77..2c0a696b8d 100644 +index cf899bb6a..93fcf801a 100644 --- a/src/main/java/net/minecraft/server/EntityGiantZombie.java +++ b/src/main/java/net/minecraft/server/EntityGiantZombie.java @@ -11,16 +11,28 @@ public class EntityGiantZombie extends EntityMonster { @@ -1802,7 +1803,7 @@ index 8dce2aad77..2c0a696b8d 100644 this.targetSelector.a(2, new PathfinderGoalNearestAttackableTarget<>(this, EntityHuman.class, true)); this.targetSelector.a(3, new PathfinderGoalNearestAttackableTarget<>(this, EntityVillager.class, false)); diff --git a/src/main/java/net/minecraft/server/EntityGuardian.java b/src/main/java/net/minecraft/server/EntityGuardian.java -index 27ec46c0b2..0a7f51a2a1 100644 +index 27ec46c0b..0a7f51a2a 100644 --- a/src/main/java/net/minecraft/server/EntityGuardian.java +++ b/src/main/java/net/minecraft/server/EntityGuardian.java @@ -24,15 +24,36 @@ public class EntityGuardian extends EntityMonster { @@ -1898,7 +1899,7 @@ index 27ec46c0b2..0a7f51a2a1 100644 Vec3D vec3d = new Vec3D(this.b - this.i.locX(), this.c - this.i.locY(), this.d - this.i.locZ()); double d0 = vec3d.f(); diff --git a/src/main/java/net/minecraft/server/EntityGuardianElder.java b/src/main/java/net/minecraft/server/EntityGuardianElder.java -index b691e84495..f6f8827469 100644 +index b691e8449..f6f882746 100644 --- a/src/main/java/net/minecraft/server/EntityGuardianElder.java +++ b/src/main/java/net/minecraft/server/EntityGuardianElder.java @@ -16,6 +16,18 @@ public class EntityGuardianElder extends EntityGuardian { @@ -1921,7 +1922,7 @@ index b691e84495..f6f8827469 100644 return EntityGuardian.eM().a(GenericAttributes.MOVEMENT_SPEED, 0.30000001192092896D).a(GenericAttributes.ATTACK_DAMAGE, 8.0D).a(GenericAttributes.MAX_HEALTH, 80.0D); } diff --git a/src/main/java/net/minecraft/server/EntityHoglin.java b/src/main/java/net/minecraft/server/EntityHoglin.java -index f679792536..548ff4449f 100644 +index f67979253..548ff4449 100644 --- a/src/main/java/net/minecraft/server/EntityHoglin.java +++ b/src/main/java/net/minecraft/server/EntityHoglin.java @@ -13,13 +13,25 @@ public class EntityHoglin extends EntityAnimal implements IMonster, IOglin { @@ -1978,7 +1979,7 @@ index f679792536..548ff4449f 100644 @Override diff --git a/src/main/java/net/minecraft/server/EntityHorse.java b/src/main/java/net/minecraft/server/EntityHorse.java -index e0e60bb6d8..0415a4d1f3 100644 +index e0e60bb6d..0415a4d1f 100644 --- a/src/main/java/net/minecraft/server/EntityHorse.java +++ b/src/main/java/net/minecraft/server/EntityHorse.java @@ -12,6 +12,13 @@ public class EntityHorse extends EntityHorseAbstract { @@ -1996,7 +1997,7 @@ index e0e60bb6d8..0415a4d1f3 100644 protected void eK() { this.getAttributeInstance(GenericAttributes.MAX_HEALTH).setValue((double) this.fp()); diff --git a/src/main/java/net/minecraft/server/EntityHorseAbstract.java b/src/main/java/net/minecraft/server/EntityHorseAbstract.java -index ce26e65aaf..bb3ebf70f4 100644 +index ce26e65aa..bb3ebf70f 100644 --- a/src/main/java/net/minecraft/server/EntityHorseAbstract.java +++ b/src/main/java/net/minecraft/server/EntityHorseAbstract.java @@ -39,12 +39,27 @@ public abstract class EntityHorseAbstract extends EntityAnimal implements IInven @@ -2036,7 +2037,7 @@ index ce26e65aaf..bb3ebf70f4 100644 } diff --git a/src/main/java/net/minecraft/server/EntityHorseDonkey.java b/src/main/java/net/minecraft/server/EntityHorseDonkey.java -index 767d18d5a0..cb8aee5691 100644 +index 767d18d5a..cb8aee569 100644 --- a/src/main/java/net/minecraft/server/EntityHorseDonkey.java +++ b/src/main/java/net/minecraft/server/EntityHorseDonkey.java @@ -8,6 +8,13 @@ public class EntityHorseDonkey extends EntityHorseChestedAbstract { @@ -2054,7 +2055,7 @@ index 767d18d5a0..cb8aee5691 100644 protected SoundEffect getSoundAmbient() { super.getSoundAmbient(); diff --git a/src/main/java/net/minecraft/server/EntityHorseMule.java b/src/main/java/net/minecraft/server/EntityHorseMule.java -index 3dd4d4f0f3..243aeb736e 100644 +index 3dd4d4f0f..243aeb736 100644 --- a/src/main/java/net/minecraft/server/EntityHorseMule.java +++ b/src/main/java/net/minecraft/server/EntityHorseMule.java @@ -8,6 +8,12 @@ public class EntityHorseMule extends EntityHorseChestedAbstract { @@ -2071,7 +2072,7 @@ index 3dd4d4f0f3..243aeb736e 100644 protected SoundEffect getSoundAmbient() { super.getSoundAmbient(); diff --git a/src/main/java/net/minecraft/server/EntityHorseSkeleton.java b/src/main/java/net/minecraft/server/EntityHorseSkeleton.java -index a53d335f3a..e2c6a5807a 100644 +index a53d335f3..e2c6a5807 100644 --- a/src/main/java/net/minecraft/server/EntityHorseSkeleton.java +++ b/src/main/java/net/minecraft/server/EntityHorseSkeleton.java @@ -12,6 +12,18 @@ public class EntityHorseSkeleton extends EntityHorseAbstract { @@ -2112,7 +2113,7 @@ index a53d335f3a..e2c6a5807a 100644 @Override diff --git a/src/main/java/net/minecraft/server/EntityHorseZombie.java b/src/main/java/net/minecraft/server/EntityHorseZombie.java -index 0e98173607..559ba50977 100644 +index 0e9817360..559ba5097 100644 --- a/src/main/java/net/minecraft/server/EntityHorseZombie.java +++ b/src/main/java/net/minecraft/server/EntityHorseZombie.java @@ -8,6 +8,18 @@ public class EntityHorseZombie extends EntityHorseAbstract { @@ -2142,7 +2143,7 @@ index 0e98173607..559ba50977 100644 + protected void eV() { if (world.purpurConfig.zombieHorseCanSwim) goalSelector.a(0, new PathfinderGoalFloat(this)); } // Purpur } diff --git a/src/main/java/net/minecraft/server/EntityHuman.java b/src/main/java/net/minecraft/server/EntityHuman.java -index 75f9874115..deb6c93426 100644 +index 75f987411..deb6c9342 100644 --- a/src/main/java/net/minecraft/server/EntityHuman.java +++ b/src/main/java/net/minecraft/server/EntityHuman.java @@ -2148,4 +2148,15 @@ public abstract class EntityHuman extends EntityLiving { @@ -2162,7 +2163,7 @@ index 75f9874115..deb6c93426 100644 + // Purpur end } diff --git a/src/main/java/net/minecraft/server/EntityIllagerIllusioner.java b/src/main/java/net/minecraft/server/EntityIllagerIllusioner.java -index b6c6b4d54e..f5b6d83f87 100644 +index a9dcf6875..44c006bb1 100644 --- a/src/main/java/net/minecraft/server/EntityIllagerIllusioner.java +++ b/src/main/java/net/minecraft/server/EntityIllagerIllusioner.java @@ -20,6 +20,16 @@ public class EntityIllagerIllusioner extends EntityIllagerWizard implements IRan @@ -2182,7 +2183,7 @@ index b6c6b4d54e..f5b6d83f87 100644 @Override protected void initAttributes(World world) { if (world != null) { -@@ -34,6 +44,7 @@ public class EntityIllagerIllusioner extends EntityIllagerWizard implements IRan +@@ -35,6 +45,7 @@ public class EntityIllagerIllusioner extends EntityIllagerWizard implements IRan protected void initPathfinder() { super.initPathfinder(); this.goalSelector.a(0, new PathfinderGoalFloat(this)); @@ -2190,7 +2191,7 @@ index b6c6b4d54e..f5b6d83f87 100644 this.goalSelector.a(1, new EntityIllagerWizard.b()); this.goalSelector.a(4, new EntityIllagerIllusioner.b()); this.goalSelector.a(5, new EntityIllagerIllusioner.a()); -@@ -41,6 +52,7 @@ public class EntityIllagerIllusioner extends EntityIllagerWizard implements IRan +@@ -42,6 +53,7 @@ public class EntityIllagerIllusioner extends EntityIllagerWizard implements IRan this.goalSelector.a(8, new PathfinderGoalRandomStroll(this, 0.6D)); this.goalSelector.a(9, new PathfinderGoalLookAtPlayer(this, EntityHuman.class, 3.0F, 1.0F)); this.goalSelector.a(10, new PathfinderGoalLookAtPlayer(this, EntityInsentient.class, 8.0F)); @@ -2199,7 +2200,7 @@ index b6c6b4d54e..f5b6d83f87 100644 this.targetSelector.a(2, (new PathfinderGoalNearestAttackableTarget<>(this, EntityHuman.class, true)).a(300)); this.targetSelector.a(3, (new PathfinderGoalNearestAttackableTarget<>(this, EntityVillagerAbstract.class, false)).a(300)); diff --git a/src/main/java/net/minecraft/server/EntityInsentient.java b/src/main/java/net/minecraft/server/EntityInsentient.java -index 1d5d87e619..80589799ab 100644 +index 1d5d87e61..80589799a 100644 --- a/src/main/java/net/minecraft/server/EntityInsentient.java +++ b/src/main/java/net/minecraft/server/EntityInsentient.java @@ -29,7 +29,7 @@ public abstract class EntityInsentient extends EntityLiving { @@ -2320,7 +2321,7 @@ index 1d5d87e619..80589799ab 100644 + // Purpur end } diff --git a/src/main/java/net/minecraft/server/EntityIronGolem.java b/src/main/java/net/minecraft/server/EntityIronGolem.java -index bdff236883..9ee03b233b 100644 +index bdff23688..9ee03b233 100644 --- a/src/main/java/net/minecraft/server/EntityIronGolem.java +++ b/src/main/java/net/minecraft/server/EntityIronGolem.java @@ -22,9 +22,22 @@ public class EntityIronGolem extends EntityGolem implements IEntityAngerable { @@ -2371,7 +2372,7 @@ index bdff236883..9ee03b233b 100644 float f1 = 1.0F + (this.random.nextFloat() - this.random.nextFloat()) * 0.2F; diff --git a/src/main/java/net/minecraft/server/EntityLiving.java b/src/main/java/net/minecraft/server/EntityLiving.java -index 0fe6f90ea6..ce29695c69 100644 +index 0fe6f90ea..ce29695c6 100644 --- a/src/main/java/net/minecraft/server/EntityLiving.java +++ b/src/main/java/net/minecraft/server/EntityLiving.java @@ -459,7 +459,7 @@ public abstract class EntityLiving extends Entity { @@ -2427,7 +2428,7 @@ index 0fe6f90ea6..ce29695c69 100644 this.damageEntity(DamageSource.DROWN, 1.0F); } diff --git a/src/main/java/net/minecraft/server/EntityLlama.java b/src/main/java/net/minecraft/server/EntityLlama.java -index e61f53816c..1099277868 100644 +index e61f53816..109927786 100644 --- a/src/main/java/net/minecraft/server/EntityLlama.java +++ b/src/main/java/net/minecraft/server/EntityLlama.java @@ -18,7 +18,46 @@ public class EntityLlama extends EntityHorseChestedAbstract implements IRangedEn @@ -2503,7 +2504,7 @@ index e61f53816c..1099277868 100644 return i == -1 ? null : EnumColor.fromColorIndex(i); diff --git a/src/main/java/net/minecraft/server/EntityLlamaTrader.java b/src/main/java/net/minecraft/server/EntityLlamaTrader.java -index 7d30e5c237..b6aae5cdee 100644 +index 7d30e5c23..b6aae5cde 100644 --- a/src/main/java/net/minecraft/server/EntityLlamaTrader.java +++ b/src/main/java/net/minecraft/server/EntityLlamaTrader.java @@ -11,6 +11,23 @@ public class EntityLlamaTrader extends EntityLlama { @@ -2531,7 +2532,7 @@ index 7d30e5c237..b6aae5cdee 100644 protected EntityLlama fz() { return (EntityLlama) EntityTypes.TRADER_LLAMA.a(this.world); diff --git a/src/main/java/net/minecraft/server/EntityMagmaCube.java b/src/main/java/net/minecraft/server/EntityMagmaCube.java -index 874dd39825..cd28463e2b 100644 +index 874dd3982..cd28463e2 100644 --- a/src/main/java/net/minecraft/server/EntityMagmaCube.java +++ b/src/main/java/net/minecraft/server/EntityMagmaCube.java @@ -8,6 +8,23 @@ public class EntityMagmaCube extends EntitySlime { @@ -2573,7 +2574,7 @@ index 874dd39825..cd28463e2b 100644 @Override diff --git a/src/main/java/net/minecraft/server/EntityMushroomCow.java b/src/main/java/net/minecraft/server/EntityMushroomCow.java -index 38df17bd20..7966b34f8d 100644 +index 38df17bd2..7966b34f8 100644 --- a/src/main/java/net/minecraft/server/EntityMushroomCow.java +++ b/src/main/java/net/minecraft/server/EntityMushroomCow.java @@ -20,6 +20,18 @@ public class EntityMushroomCow extends EntityCow implements IShearable { @@ -2614,7 +2615,7 @@ index 38df17bd20..7966b34f8d 100644 Pair pair = (Pair) optional.get(); diff --git a/src/main/java/net/minecraft/server/EntityOcelot.java b/src/main/java/net/minecraft/server/EntityOcelot.java -index 7bd3fea6e0..2f8275cd6b 100644 +index 7bd3fea6e..2f8275cd6 100644 --- a/src/main/java/net/minecraft/server/EntityOcelot.java +++ b/src/main/java/net/minecraft/server/EntityOcelot.java @@ -16,6 +16,18 @@ public class EntityOcelot extends EntityAnimal { @@ -2652,7 +2653,7 @@ index 7bd3fea6e0..2f8275cd6b 100644 this.targetSelector.a(1, new PathfinderGoalNearestAttackableTarget<>(this, EntityTurtle.class, 10, false, false, EntityTurtle.bo)); } diff --git a/src/main/java/net/minecraft/server/EntityPanda.java b/src/main/java/net/minecraft/server/EntityPanda.java -index b36cc95168..eafae5516b 100644 +index b36cc9516..eafae5516 100644 --- a/src/main/java/net/minecraft/server/EntityPanda.java +++ b/src/main/java/net/minecraft/server/EntityPanda.java @@ -46,6 +46,27 @@ public class EntityPanda extends EntityAnimal { @@ -2788,7 +2789,7 @@ index b36cc95168..eafae5516b 100644 } } diff --git a/src/main/java/net/minecraft/server/EntityParrot.java b/src/main/java/net/minecraft/server/EntityParrot.java -index 0af6c9395b..e402d4a77b 100644 +index 0af6c9395..e402d4a77 100644 --- a/src/main/java/net/minecraft/server/EntityParrot.java +++ b/src/main/java/net/minecraft/server/EntityParrot.java @@ -65,12 +65,58 @@ public class EntityParrot extends EntityPerchable implements EntityBird { @@ -2864,7 +2865,7 @@ index 0af6c9395b..e402d4a77b 100644 this.goalSelector.a(2, new PathfinderGoalSit(this)); this.goalSelector.a(2, new PathfinderGoalFollowOwner(this, 1.0D, 5.0F, 1.0F, true)); diff --git a/src/main/java/net/minecraft/server/EntityPhantom.java b/src/main/java/net/minecraft/server/EntityPhantom.java -index bdfe073dcd..f8c3480045 100644 +index bdfe073dc..f8c348004 100644 --- a/src/main/java/net/minecraft/server/EntityPhantom.java +++ b/src/main/java/net/minecraft/server/EntityPhantom.java @@ -25,6 +25,58 @@ public class EntityPhantom extends EntityFlying implements IMonster { @@ -3035,7 +3036,7 @@ index bdfe073dcd..f8c3480045 100644 EntityPhantom.this.yaw += 180.0F; this.j = 0.1F; diff --git a/src/main/java/net/minecraft/server/EntityPig.java b/src/main/java/net/minecraft/server/EntityPig.java -index 7f52c39234..dade0bb294 100644 +index 7f52c3923..dade0bb29 100644 --- a/src/main/java/net/minecraft/server/EntityPig.java +++ b/src/main/java/net/minecraft/server/EntityPig.java @@ -19,9 +19,22 @@ public class EntityPig extends EntityAnimal implements ISteerable, ISaddleable { @@ -3062,7 +3063,7 @@ index 7f52c39234..dade0bb294 100644 this.goalSelector.a(3, new PathfinderGoalBreed(this, 1.0D)); this.goalSelector.a(4, new PathfinderGoalTempt(this, 1.2D, RecipeItemStack.a(Items.CARROT_ON_A_STICK), false)); diff --git a/src/main/java/net/minecraft/server/EntityPigZombie.java b/src/main/java/net/minecraft/server/EntityPigZombie.java -index 32b75f710b..3327dbbf87 100644 +index 32b75f710..3327dbbf8 100644 --- a/src/main/java/net/minecraft/server/EntityPigZombie.java +++ b/src/main/java/net/minecraft/server/EntityPigZombie.java @@ -22,6 +22,16 @@ public class EntityPigZombie extends EntityZombie implements IEntityAngerable { @@ -3083,7 +3084,7 @@ index 32b75f710b..3327dbbf87 100644 public boolean jockeyOnlyBaby() { return world.purpurConfig.zombifiedPiglinJockeyOnlyBaby; diff --git a/src/main/java/net/minecraft/server/EntityPiglin.java b/src/main/java/net/minecraft/server/EntityPiglin.java -index ca7f9dc54e..334e0f73e6 100644 +index ca7f9dc54..334e0f73e 100644 --- a/src/main/java/net/minecraft/server/EntityPiglin.java +++ b/src/main/java/net/minecraft/server/EntityPiglin.java @@ -25,6 +25,18 @@ public class EntityPiglin extends EntityPiglinAbstract implements ICrossbow { @@ -3134,7 +3135,7 @@ index ca7f9dc54e..334e0f73e6 100644 @Override diff --git a/src/main/java/net/minecraft/server/EntityPiglinBrute.java b/src/main/java/net/minecraft/server/EntityPiglinBrute.java -index 3e9a4af09d..f6b1708111 100644 +index 3e9a4af09..f6b170811 100644 --- a/src/main/java/net/minecraft/server/EntityPiglinBrute.java +++ b/src/main/java/net/minecraft/server/EntityPiglinBrute.java @@ -15,6 +15,18 @@ public class EntityPiglinBrute extends EntityPiglinAbstract { @@ -3176,7 +3177,7 @@ index 3e9a4af09d..f6b1708111 100644 PiglinBruteAI.b(this); PiglinBruteAI.c(this); diff --git a/src/main/java/net/minecraft/server/EntityPillager.java b/src/main/java/net/minecraft/server/EntityPillager.java -index a3a428da99..cf7de01271 100644 +index a3a428da9..cf7de0127 100644 --- a/src/main/java/net/minecraft/server/EntityPillager.java +++ b/src/main/java/net/minecraft/server/EntityPillager.java @@ -13,15 +13,29 @@ public class EntityPillager extends EntityIllagerAbstract implements ICrossbow { @@ -3210,7 +3211,7 @@ index a3a428da99..cf7de01271 100644 this.targetSelector.a(2, new PathfinderGoalNearestAttackableTarget<>(this, EntityHuman.class, true)); this.targetSelector.a(3, new PathfinderGoalNearestAttackableTarget<>(this, EntityVillagerAbstract.class, false)); diff --git a/src/main/java/net/minecraft/server/EntityPlayer.java b/src/main/java/net/minecraft/server/EntityPlayer.java -index 05f9a81854..b5f6a98fe4 100644 +index 05f9a8185..b5f6a98fe 100644 --- a/src/main/java/net/minecraft/server/EntityPlayer.java +++ b/src/main/java/net/minecraft/server/EntityPlayer.java @@ -506,6 +506,15 @@ public class EntityPlayer extends EntityHuman implements ICrafting { @@ -3230,7 +3231,7 @@ index 05f9a81854..b5f6a98fe4 100644 public void playerTick() { diff --git a/src/main/java/net/minecraft/server/EntityPolarBear.java b/src/main/java/net/minecraft/server/EntityPolarBear.java -index 99f0bd8f82..3d649843f5 100644 +index 99f0bd8f8..3d649843f 100644 --- a/src/main/java/net/minecraft/server/EntityPolarBear.java +++ b/src/main/java/net/minecraft/server/EntityPolarBear.java @@ -18,12 +18,34 @@ public class EntityPolarBear extends EntityAnimal implements IEntityAngerable { @@ -3305,7 +3306,7 @@ index 99f0bd8f82..3d649843f5 100644 @Override diff --git a/src/main/java/net/minecraft/server/EntityPufferFish.java b/src/main/java/net/minecraft/server/EntityPufferFish.java -index 330ec38d09..16a4df27c5 100644 +index 330ec38d0..16a4df27c 100644 --- a/src/main/java/net/minecraft/server/EntityPufferFish.java +++ b/src/main/java/net/minecraft/server/EntityPufferFish.java @@ -17,6 +17,18 @@ public class EntityPufferFish extends EntityFish { @@ -3337,7 +3338,7 @@ index 330ec38d09..16a4df27c5 100644 @Override diff --git a/src/main/java/net/minecraft/server/EntityRabbit.java b/src/main/java/net/minecraft/server/EntityRabbit.java -index 25a9b7906b..b766a27e98 100644 +index 25a9b7906..b766a27e9 100644 --- a/src/main/java/net/minecraft/server/EntityRabbit.java +++ b/src/main/java/net/minecraft/server/EntityRabbit.java @@ -20,6 +20,18 @@ public class EntityRabbit extends EntityAnimal { @@ -3502,7 +3503,7 @@ index 25a9b7906b..b766a27e98 100644 this.d = flag; } diff --git a/src/main/java/net/minecraft/server/EntityRavager.java b/src/main/java/net/minecraft/server/EntityRavager.java -index fd1ac7df68..a902145881 100644 +index fd1ac7df6..a90214588 100644 --- a/src/main/java/net/minecraft/server/EntityRavager.java +++ b/src/main/java/net/minecraft/server/EntityRavager.java @@ -20,14 +20,37 @@ public class EntityRavager extends EntityRaider { @@ -3553,7 +3554,7 @@ index fd1ac7df68..a902145881 100644 this.getAttributeInstance(GenericAttributes.MOVEMENT_SPEED).setValue(0.0D); } else { diff --git a/src/main/java/net/minecraft/server/EntitySalmon.java b/src/main/java/net/minecraft/server/EntitySalmon.java -index 51ec634133..6dfcee2c9b 100644 +index 51ec63413..6dfcee2c9 100644 --- a/src/main/java/net/minecraft/server/EntitySalmon.java +++ b/src/main/java/net/minecraft/server/EntitySalmon.java @@ -6,6 +6,18 @@ public class EntitySalmon extends EntityFishSchool { @@ -3576,7 +3577,7 @@ index 51ec634133..6dfcee2c9b 100644 public int eN() { return 5; diff --git a/src/main/java/net/minecraft/server/EntitySheep.java b/src/main/java/net/minecraft/server/EntitySheep.java -index 2908e9cc47..a151d4295c 100644 +index 2908e9cc4..a151d4295 100644 --- a/src/main/java/net/minecraft/server/EntitySheep.java +++ b/src/main/java/net/minecraft/server/EntitySheep.java @@ -56,10 +56,23 @@ public class EntitySheep extends EntityAnimal implements IShearable { @@ -3604,7 +3605,7 @@ index 2908e9cc47..a151d4295c 100644 this.goalSelector.a(2, new PathfinderGoalBreed(this, 1.0D)); this.goalSelector.a(3, new PathfinderGoalTempt(this, 1.1D, RecipeItemStack.a(Items.WHEAT), false)); diff --git a/src/main/java/net/minecraft/server/EntityShulker.java b/src/main/java/net/minecraft/server/EntityShulker.java -index 7bedaf02c4..30e0e14162 100644 +index 7bedaf02c..30e0e1416 100644 --- a/src/main/java/net/minecraft/server/EntityShulker.java +++ b/src/main/java/net/minecraft/server/EntityShulker.java @@ -29,12 +29,26 @@ public class EntityShulker extends EntityGolem implements IMonster { @@ -3644,7 +3645,7 @@ index 7bedaf02c4..30e0e14162 100644 @Override public boolean a() { diff --git a/src/main/java/net/minecraft/server/EntitySilverfish.java b/src/main/java/net/minecraft/server/EntitySilverfish.java -index 28b490cc14..ad428e0900 100644 +index 28b490cc1..ad428e090 100644 --- a/src/main/java/net/minecraft/server/EntitySilverfish.java +++ b/src/main/java/net/minecraft/server/EntitySilverfish.java @@ -11,13 +11,27 @@ public class EntitySilverfish extends EntityMonster { @@ -3684,7 +3685,7 @@ index 28b490cc14..ad428e0900 100644 public void g() { diff --git a/src/main/java/net/minecraft/server/EntitySkeleton.java b/src/main/java/net/minecraft/server/EntitySkeleton.java -index 7c39bec831..3f130e03bf 100644 +index 7c39bec83..3f130e03b 100644 --- a/src/main/java/net/minecraft/server/EntitySkeleton.java +++ b/src/main/java/net/minecraft/server/EntitySkeleton.java @@ -6,6 +6,18 @@ public class EntitySkeleton extends EntitySkeletonAbstract { @@ -3707,7 +3708,7 @@ index 7c39bec831..3f130e03bf 100644 protected SoundEffect getSoundAmbient() { return SoundEffects.ENTITY_SKELETON_AMBIENT; diff --git a/src/main/java/net/minecraft/server/EntitySkeletonAbstract.java b/src/main/java/net/minecraft/server/EntitySkeletonAbstract.java -index ced89af70c..4d5af11734 100644 +index ced89af70..4d5af1173 100644 --- a/src/main/java/net/minecraft/server/EntitySkeletonAbstract.java +++ b/src/main/java/net/minecraft/server/EntitySkeletonAbstract.java @@ -28,12 +28,14 @@ public abstract class EntitySkeletonAbstract extends EntityMonster implements IR @@ -3726,7 +3727,7 @@ index ced89af70c..4d5af11734 100644 this.targetSelector.a(2, new PathfinderGoalNearestAttackableTarget<>(this, EntityHuman.class, true)); this.targetSelector.a(3, new PathfinderGoalNearestAttackableTarget<>(this, EntityIronGolem.class, true)); diff --git a/src/main/java/net/minecraft/server/EntitySkeletonStray.java b/src/main/java/net/minecraft/server/EntitySkeletonStray.java -index f985caada0..d123fb82b6 100644 +index f985caada..d123fb82b 100644 --- a/src/main/java/net/minecraft/server/EntitySkeletonStray.java +++ b/src/main/java/net/minecraft/server/EntitySkeletonStray.java @@ -8,6 +8,18 @@ public class EntitySkeletonStray extends EntitySkeletonAbstract { @@ -3749,7 +3750,7 @@ index f985caada0..d123fb82b6 100644 return b(entitytypes, worldaccess, enummobspawn, blockposition, random) && (enummobspawn == EnumMobSpawn.SPAWNER || worldaccess.e(blockposition)); } diff --git a/src/main/java/net/minecraft/server/EntitySkeletonWither.java b/src/main/java/net/minecraft/server/EntitySkeletonWither.java -index c872be77a6..96cb080d94 100644 +index c872be77a..96cb080d9 100644 --- a/src/main/java/net/minecraft/server/EntitySkeletonWither.java +++ b/src/main/java/net/minecraft/server/EntitySkeletonWither.java @@ -9,6 +9,18 @@ public class EntitySkeletonWither extends EntitySkeletonAbstract { @@ -3772,7 +3773,7 @@ index c872be77a6..96cb080d94 100644 protected void initPathfinder() { this.targetSelector.a(3, new PathfinderGoalNearestAttackableTarget<>(this, EntityPiglinAbstract.class, true)); diff --git a/src/main/java/net/minecraft/server/EntitySlime.java b/src/main/java/net/minecraft/server/EntitySlime.java -index e99fd88118..4602636298 100644 +index e99fd8811..460263629 100644 --- a/src/main/java/net/minecraft/server/EntitySlime.java +++ b/src/main/java/net/minecraft/server/EntitySlime.java @@ -34,12 +34,45 @@ public class EntitySlime extends EntityInsentient implements IMonster { @@ -3888,7 +3889,7 @@ index e99fd88118..4602636298 100644 } diff --git a/src/main/java/net/minecraft/server/EntitySnowman.java b/src/main/java/net/minecraft/server/EntitySnowman.java -index 95ee716fc9..e980da14cf 100644 +index 95ee716fc..e980da14c 100644 --- a/src/main/java/net/minecraft/server/EntitySnowman.java +++ b/src/main/java/net/minecraft/server/EntitySnowman.java @@ -14,12 +14,26 @@ public class EntitySnowman extends EntityGolem implements IShearable, IRangedEnt @@ -3945,7 +3946,7 @@ index 95ee716fc9..e980da14cf 100644 } diff --git a/src/main/java/net/minecraft/server/EntitySpider.java b/src/main/java/net/minecraft/server/EntitySpider.java -index bf68efd52f..92d7413787 100644 +index bf68efd52..92d741378 100644 --- a/src/main/java/net/minecraft/server/EntitySpider.java +++ b/src/main/java/net/minecraft/server/EntitySpider.java @@ -11,14 +11,28 @@ public class EntitySpider extends EntityMonster { @@ -3978,7 +3979,7 @@ index bf68efd52f..92d7413787 100644 this.targetSelector.a(2, new EntitySpider.PathfinderGoalSpiderNearestAttackableTarget<>(this, EntityHuman.class)); this.targetSelector.a(3, new EntitySpider.PathfinderGoalSpiderNearestAttackableTarget<>(this, EntityIronGolem.class)); diff --git a/src/main/java/net/minecraft/server/EntitySquid.java b/src/main/java/net/minecraft/server/EntitySquid.java -index 148e4b1587..70b952f10a 100644 +index 148e4b158..70b952f10 100644 --- a/src/main/java/net/minecraft/server/EntitySquid.java +++ b/src/main/java/net/minecraft/server/EntitySquid.java @@ -26,17 +26,38 @@ public class EntitySquid extends EntityWaterAnimal { @@ -4078,7 +4079,7 @@ index 148e4b1587..70b952f10a 100644 if (i > 100) { diff --git a/src/main/java/net/minecraft/server/EntityStrider.java b/src/main/java/net/minecraft/server/EntityStrider.java -index 6d4c6a8f1c..172867f50d 100644 +index 6d4c6a8f1..172867f50 100644 --- a/src/main/java/net/minecraft/server/EntityStrider.java +++ b/src/main/java/net/minecraft/server/EntityStrider.java @@ -28,6 +28,18 @@ public class EntityStrider extends EntityAnimal implements ISteerable, ISaddleab @@ -4118,7 +4119,7 @@ index 6d4c6a8f1c..172867f50d 100644 if (flag && !this.isSilent()) { this.world.playSound((EntityHuman) null, this.locX(), this.locY(), this.locZ(), SoundEffects.ENTITY_STRIDER_EAT, this.getSoundCategory(), 1.0F, 1.0F + (this.random.nextFloat() - this.random.nextFloat()) * 0.2F); diff --git a/src/main/java/net/minecraft/server/EntityTameableAnimal.java b/src/main/java/net/minecraft/server/EntityTameableAnimal.java -index 9e008d56bb..8f227678dc 100644 +index 9e008d56b..8f227678d 100644 --- a/src/main/java/net/minecraft/server/EntityTameableAnimal.java +++ b/src/main/java/net/minecraft/server/EntityTameableAnimal.java @@ -130,6 +130,7 @@ public abstract class EntityTameableAnimal extends EntityAnimal { @@ -4130,7 +4131,7 @@ index 9e008d56bb..8f227678dc 100644 return entityliving == this.getOwner(); } diff --git a/src/main/java/net/minecraft/server/EntityTropicalFish.java b/src/main/java/net/minecraft/server/EntityTropicalFish.java -index 495c28ccb8..2c9df356e6 100644 +index 495c28ccb..2c9df356e 100644 --- a/src/main/java/net/minecraft/server/EntityTropicalFish.java +++ b/src/main/java/net/minecraft/server/EntityTropicalFish.java @@ -19,6 +19,18 @@ public class EntityTropicalFish extends EntityFishSchool { @@ -4153,7 +4154,7 @@ index 495c28ccb8..2c9df356e6 100644 protected void initDatawatcher() { super.initDatawatcher(); diff --git a/src/main/java/net/minecraft/server/EntityTurtle.java b/src/main/java/net/minecraft/server/EntityTurtle.java -index 4ad393bc99..2b34e6cf3b 100644 +index 4ad393bc9..2b34e6cf3 100644 --- a/src/main/java/net/minecraft/server/EntityTurtle.java +++ b/src/main/java/net/minecraft/server/EntityTurtle.java @@ -27,6 +27,18 @@ public class EntityTurtle extends EntityAnimal { @@ -4235,7 +4236,7 @@ index 4ad393bc99..2b34e6cf3b 100644 if (this.h == ControllerMove.Operation.MOVE_TO && !this.i.getNavigation().m()) { double d0 = this.b - this.i.locX(); diff --git a/src/main/java/net/minecraft/server/EntityVex.java b/src/main/java/net/minecraft/server/EntityVex.java -index ed6a47ad2f..ac75ed3e2e 100644 +index ed6a47ad2..ac75ed3e2 100644 --- a/src/main/java/net/minecraft/server/EntityVex.java +++ b/src/main/java/net/minecraft/server/EntityVex.java @@ -19,6 +19,45 @@ public class EntityVex extends EntityMonster { @@ -4332,7 +4333,7 @@ index ed6a47ad2f..ac75ed3e2e 100644 Vec3D vec3d = new Vec3D(this.b - EntityVex.this.locX(), this.c - EntityVex.this.locY(), this.d - EntityVex.this.locZ()); double d0 = vec3d.f(); diff --git a/src/main/java/net/minecraft/server/EntityVillager.java b/src/main/java/net/minecraft/server/EntityVillager.java -index 5d37cb14f9..166a8f9a7f 100644 +index 5d37cb14f..166a8f9a7 100644 --- a/src/main/java/net/minecraft/server/EntityVillager.java +++ b/src/main/java/net/minecraft/server/EntityVillager.java @@ -75,8 +75,19 @@ public class EntityVillager extends EntityVillagerAbstract implements Reputation @@ -4376,7 +4377,7 @@ index 5d37cb14f9..166a8f9a7f 100644 this.h(entityhuman); } diff --git a/src/main/java/net/minecraft/server/EntityVillagerTrader.java b/src/main/java/net/minecraft/server/EntityVillagerTrader.java -index 96dda6a14f..3ea66955df 100644 +index 96dda6a14..3ea66955d 100644 --- a/src/main/java/net/minecraft/server/EntityVillagerTrader.java +++ b/src/main/java/net/minecraft/server/EntityVillagerTrader.java @@ -23,6 +23,7 @@ public class EntityVillagerTrader extends EntityVillagerAbstract { @@ -4416,7 +4417,7 @@ index 96dda6a14f..3ea66955df 100644 this.setTradingPlayer(entityhuman); this.openTrade(entityhuman, this.getScoreboardDisplayName(), 1); diff --git a/src/main/java/net/minecraft/server/EntityVindicator.java b/src/main/java/net/minecraft/server/EntityVindicator.java -index 8f812aa913..9950bda50f 100644 +index 8f812aa91..9950bda50 100644 --- a/src/main/java/net/minecraft/server/EntityVindicator.java +++ b/src/main/java/net/minecraft/server/EntityVindicator.java @@ -17,14 +17,28 @@ public class EntityVindicator extends EntityIllagerAbstract { @@ -4449,7 +4450,7 @@ index 8f812aa913..9950bda50f 100644 this.targetSelector.a(2, new PathfinderGoalNearestAttackableTarget<>(this, EntityHuman.class, true)); this.targetSelector.a(3, new PathfinderGoalNearestAttackableTarget<>(this, EntityVillagerAbstract.class, true)); diff --git a/src/main/java/net/minecraft/server/EntityWitch.java b/src/main/java/net/minecraft/server/EntityWitch.java -index ca3c5150bc..323d79a994 100644 +index ca3c5150b..323d79a99 100644 --- a/src/main/java/net/minecraft/server/EntityWitch.java +++ b/src/main/java/net/minecraft/server/EntityWitch.java @@ -24,6 +24,18 @@ public class EntityWitch extends EntityRaider implements IRangedEntity { @@ -4485,7 +4486,7 @@ index ca3c5150bc..323d79a994 100644 this.targetSelector.a(2, this.br); this.targetSelector.a(3, this.bs); diff --git a/src/main/java/net/minecraft/server/EntityWither.java b/src/main/java/net/minecraft/server/EntityWither.java -index 53482a420c..f68cf834aa 100644 +index 53482a420..f68cf834a 100644 --- a/src/main/java/net/minecraft/server/EntityWither.java +++ b/src/main/java/net/minecraft/server/EntityWither.java @@ -32,6 +32,7 @@ public class EntityWither extends EntityMonster implements IRangedEntity { @@ -4693,7 +4694,7 @@ index 53482a420c..f68cf834aa 100644 @Override diff --git a/src/main/java/net/minecraft/server/EntityWolf.java b/src/main/java/net/minecraft/server/EntityWolf.java -index dcbb34313f..9ae7168595 100644 +index dcbb34313..9ae716859 100644 --- a/src/main/java/net/minecraft/server/EntityWolf.java +++ b/src/main/java/net/minecraft/server/EntityWolf.java @@ -33,9 +33,27 @@ public class EntityWolf extends EntityTameableAnimal implements IEntityAngerable @@ -4733,7 +4734,7 @@ index dcbb34313f..9ae7168595 100644 this.targetSelector.a(2, new PathfinderGoalOwnerHurtTarget(this)); this.targetSelector.a(3, (new PathfinderGoalHurtByTarget(this, new Class[0])).a(new Class[0])); // CraftBukkit - decompile error diff --git a/src/main/java/net/minecraft/server/EntityZoglin.java b/src/main/java/net/minecraft/server/EntityZoglin.java -index e76e6ebde7..d92fe8013f 100644 +index e76e6ebde..d92fe8013 100644 --- a/src/main/java/net/minecraft/server/EntityZoglin.java +++ b/src/main/java/net/minecraft/server/EntityZoglin.java @@ -21,6 +21,18 @@ public class EntityZoglin extends EntityMonster implements IMonster, IOglin { @@ -4797,7 +4798,7 @@ index e76e6ebde7..d92fe8013f 100644 this.eL(); } diff --git a/src/main/java/net/minecraft/server/EntityZombie.java b/src/main/java/net/minecraft/server/EntityZombie.java -index b90ea31440..e2f68d843c 100644 +index b90ea3144..e2f68d843 100644 --- a/src/main/java/net/minecraft/server/EntityZombie.java +++ b/src/main/java/net/minecraft/server/EntityZombie.java @@ -46,6 +46,16 @@ public class EntityZombie extends EntityMonster { @@ -4830,7 +4831,7 @@ index b90ea31440..e2f68d843c 100644 } diff --git a/src/main/java/net/minecraft/server/EntityZombieHusk.java b/src/main/java/net/minecraft/server/EntityZombieHusk.java -index ce6d797801..02b0ae550a 100644 +index ce6d79780..02b0ae550 100644 --- a/src/main/java/net/minecraft/server/EntityZombieHusk.java +++ b/src/main/java/net/minecraft/server/EntityZombieHusk.java @@ -9,6 +9,16 @@ public class EntityZombieHusk extends EntityZombie { @@ -4851,7 +4852,7 @@ index ce6d797801..02b0ae550a 100644 public boolean jockeyOnlyBaby() { return world.purpurConfig.huskJockeyOnlyBaby; diff --git a/src/main/java/net/minecraft/server/EntityZombieVillager.java b/src/main/java/net/minecraft/server/EntityZombieVillager.java -index b86816205c..7db942c659 100644 +index 505c83f3e..0c47477b4 100644 --- a/src/main/java/net/minecraft/server/EntityZombieVillager.java +++ b/src/main/java/net/minecraft/server/EntityZombieVillager.java @@ -29,6 +29,16 @@ public class EntityZombieVillager extends EntityZombie implements VillagerDataHo @@ -4872,7 +4873,7 @@ index b86816205c..7db942c659 100644 public boolean jockeyOnlyBaby() { return world.purpurConfig.zombieVillagerJockeyOnlyBaby; diff --git a/src/main/java/net/minecraft/server/GeneratorAccess.java b/src/main/java/net/minecraft/server/GeneratorAccess.java -index cbc0b8bc85..89d64ea0d1 100644 +index cbc0b8bc8..89d64ea0d 100644 --- a/src/main/java/net/minecraft/server/GeneratorAccess.java +++ b/src/main/java/net/minecraft/server/GeneratorAccess.java @@ -37,6 +37,7 @@ public interface GeneratorAccess extends ICombinedAccess, IWorldTime { @@ -4884,7 +4885,7 @@ index cbc0b8bc85..89d64ea0d1 100644 default int getHeight() { diff --git a/src/main/java/net/minecraft/server/IProjectile.java b/src/main/java/net/minecraft/server/IProjectile.java -index 9f5ce64a60..b9f8ed3554 100644 +index 9f5ce64a6..b9f8ed355 100644 --- a/src/main/java/net/minecraft/server/IProjectile.java +++ b/src/main/java/net/minecraft/server/IProjectile.java @@ -12,7 +12,7 @@ public abstract class IProjectile extends Entity { @@ -4914,7 +4915,7 @@ index 9f5ce64a60..b9f8ed3554 100644 Entity entity1 = this.getShooter(); // Paper start - Cancel hit for vanished players diff --git a/src/main/java/net/minecraft/server/MinecraftServer.java b/src/main/java/net/minecraft/server/MinecraftServer.java -index c339c57b07..fd75444cec 100644 +index c339c57b0..fd75444ce 100644 --- a/src/main/java/net/minecraft/server/MinecraftServer.java +++ b/src/main/java/net/minecraft/server/MinecraftServer.java @@ -1411,6 +1411,7 @@ public abstract class MinecraftServer extends IAsyncTaskHandlerReentrant { diff --git a/src/main/java/net/minecraft/server/PathfinderGoalHasRider.java b/src/main/java/net/minecraft/server/PathfinderGoalHasRider.java new file mode 100644 -index 0000000000..da18e1235e +index 000000000..da18e1235 --- /dev/null +++ b/src/main/java/net/minecraft/server/PathfinderGoalHasRider.java @@ -0,0 +1,18 @@ @@ -4951,7 +4952,7 @@ index 0000000000..da18e1235e +} diff --git a/src/main/java/net/minecraft/server/PathfinderGoalHorseHasRider.java b/src/main/java/net/minecraft/server/PathfinderGoalHorseHasRider.java new file mode 100644 -index 0000000000..44929182df +index 000000000..44929182d --- /dev/null +++ b/src/main/java/net/minecraft/server/PathfinderGoalHorseHasRider.java @@ -0,0 +1,16 @@ @@ -4972,7 +4973,7 @@ index 0000000000..44929182df + } +} diff --git a/src/main/java/net/minecraft/server/PlayerConnection.java b/src/main/java/net/minecraft/server/PlayerConnection.java -index 261dbea122..f4f4127b01 100644 +index 261dbea12..f4f4127b0 100644 --- a/src/main/java/net/minecraft/server/PlayerConnection.java +++ b/src/main/java/net/minecraft/server/PlayerConnection.java @@ -2231,6 +2231,8 @@ public class PlayerConnection implements PacketListenerPlayIn { @@ -4985,7 +4986,7 @@ index 261dbea122..f4f4127b01 100644 if ((entity instanceof EntityFish && origItem != null && origItem.getItem() == Items.WATER_BUCKET) && (event.isCancelled() || this.player.inventory.getItemInHand() == null || this.player.inventory.getItemInHand().getItem() != origItem)) { this.sendPacket(new PacketPlayOutSpawnEntityLiving((EntityFish) entity)); diff --git a/src/main/java/net/minecraft/server/ProjectileHelper.java b/src/main/java/net/minecraft/server/ProjectileHelper.java -index b2c64b3144..515ba50aec 100644 +index b2c64b314..515ba50ae 100644 --- a/src/main/java/net/minecraft/server/ProjectileHelper.java +++ b/src/main/java/net/minecraft/server/ProjectileHelper.java @@ -7,6 +7,7 @@ import javax.annotation.Nullable; @@ -4997,7 +4998,7 @@ index b2c64b3144..515ba50aec 100644 Vec3D vec3d = entity.getMot(); World world = entity.world; diff --git a/src/main/java/net/minecraft/server/Vec3D.java b/src/main/java/net/minecraft/server/Vec3D.java -index 5af554870b..c59305ef7d 100644 +index 5af554870..c59305ef7 100644 --- a/src/main/java/net/minecraft/server/Vec3D.java +++ b/src/main/java/net/minecraft/server/Vec3D.java @@ -39,6 +39,7 @@ public class Vec3D implements IPosition { @@ -5025,7 +5026,7 @@ index 5af554870b..c59305ef7d 100644 return new Vec3D(this.x * d0, this.y * d1, this.z * d2); } diff --git a/src/main/java/net/minecraft/server/World.java b/src/main/java/net/minecraft/server/World.java -index 7a82a894bb..bdfdb73bc1 100644 +index 7a82a894b..bdfdb73bc 100644 --- a/src/main/java/net/minecraft/server/World.java +++ b/src/main/java/net/minecraft/server/World.java @@ -1648,5 +1648,10 @@ public abstract class World implements GeneratorAccess, AutoCloseable { @@ -5040,7 +5041,7 @@ index 7a82a894bb..bdfdb73bc1 100644 // Purpur end } diff --git a/src/main/java/net/minecraft/server/WorldServer.java b/src/main/java/net/minecraft/server/WorldServer.java -index 66883ea891..bc35bfd96a 100644 +index 66883ea89..bc35bfd96 100644 --- a/src/main/java/net/minecraft/server/WorldServer.java +++ b/src/main/java/net/minecraft/server/WorldServer.java @@ -102,6 +102,7 @@ public class WorldServer extends World implements GeneratorAccessSeed { @@ -5052,7 +5053,7 @@ index 66883ea891..bc35bfd96a 100644 return new Throwable(entity + " Added to world at " + new java.util.Date()); } diff --git a/src/main/java/net/pl3x/purpur/PurpurConfig.java b/src/main/java/net/pl3x/purpur/PurpurConfig.java -index 79fc12f499..0f981dc160 100644 +index f75df9990..6e22d0cd0 100644 --- a/src/main/java/net/pl3x/purpur/PurpurConfig.java +++ b/src/main/java/net/pl3x/purpur/PurpurConfig.java @@ -134,11 +134,13 @@ public class PurpurConfig { @@ -5070,7 +5071,7 @@ index 79fc12f499..0f981dc160 100644 public static int dungeonSeed = -1; diff --git a/src/main/java/net/pl3x/purpur/PurpurWorldConfig.java b/src/main/java/net/pl3x/purpur/PurpurWorldConfig.java -index 8d7da9fe0b..2921619972 100644 +index 5cc717c8d..a222cd43a 100644 --- a/src/main/java/net/pl3x/purpur/PurpurWorldConfig.java +++ b/src/main/java/net/pl3x/purpur/PurpurWorldConfig.java @@ -42,11 +42,6 @@ public class PurpurWorldConfig { @@ -5085,7 +5086,7 @@ index 8d7da9fe0b..2921619972 100644 private ConfigurationSection getConfigurationSection(String path) { ConfigurationSection section = PurpurConfig.config.getConfigurationSection("world-settings." + worldName + "." + path); return section != null ? section : PurpurConfig.config.getConfigurationSection("world-settings.default." + path); -@@ -316,65 +311,190 @@ public class PurpurWorldConfig { +@@ -316,63 +311,188 @@ public class PurpurWorldConfig { turtleEggsBreakFromMinecarts = getBoolean("blocks.turtle_egg.break-from-minecarts", turtleEggsBreakFromMinecarts); } @@ -5220,14 +5221,12 @@ index 8d7da9fe0b..2921619972 100644 + public double enderDragonMaxY = 256D; public boolean enderDragonAlwaysDropsEggBlock = false; public boolean enderDragonAlwaysDropsFullExp = false; - public double enderDragonMaxHealth = 200.0D; private void enderDragonSettings() { + enderDragonRidable = getBoolean("mobs.ender_dragon.ridable", enderDragonRidable); + enderDragonRidableInWater = getBoolean("mobs.ender_dragon.ridable-in-water", enderDragonRidableInWater); + enderDragonMaxY = getDouble("mobs.ender_dragon.ridable-max-y", enderDragonMaxY); enderDragonAlwaysDropsEggBlock = getBoolean("mobs.ender_dragon.always-drop-egg-block", enderDragonAlwaysDropsEggBlock); enderDragonAlwaysDropsFullExp = getBoolean("mobs.ender_dragon.always-drop-full-exp", enderDragonAlwaysDropsFullExp); - enderDragonMaxHealth = getDouble("mobs.ender_dragon.max-health", enderDragonMaxHealth); } + public boolean endermanRidable = false; @@ -5275,18 +5274,18 @@ index 8d7da9fe0b..2921619972 100644 + public boolean giantRidableInWater = false; public float giantStepHeight = 2.0F; public float giantJumpHeight = 1.0F; - public double giantMaxHealth = 100.0D; -@@ -383,6 +503,8 @@ public class PurpurWorldConfig { - public boolean giantHaveAI = false; + public double giantMovementSpeed = 0.5D; +@@ -381,6 +501,8 @@ public class PurpurWorldConfig { public boolean giantHaveHostileAI = false; + public double giantMaxHealth = 100.0D; private void giantSettings() { + giantRidable = getBoolean("mobs.giant.ridable", giantRidable); + giantRidableInWater = getBoolean("mobs.giant.ridable-in-water", giantRidableInWater); giantStepHeight = (float) getDouble("mobs.giant.step-height", giantStepHeight); giantJumpHeight = (float) getDouble("mobs.giant.jump-height", giantJumpHeight); - giantMaxHealth = getDouble("mobs.giant.max-health", giantMaxHealth); -@@ -392,29 +514,119 @@ public class PurpurWorldConfig { - giantHaveHostileAI = getBoolean("mobs.giant.have-hostile-ai", giantHaveHostileAI); + giantMovementSpeed = getDouble("mobs.giant.movement-speed", giantMovementSpeed); +@@ -395,19 +517,44 @@ public class PurpurWorldConfig { + giantMaxHealth = getDouble("mobs.giant.attributes.max-health", giantMaxHealth); } + public boolean guardianRidable = false; @@ -5321,15 +5320,17 @@ index 8d7da9fe0b..2921619972 100644 + public boolean illusionerRidable = false; + public boolean illusionerRidableInWater = false; - public double illusionerMaxHealth = 32.0D; public double illusionerMovementSpeed = 0.5D; public double illusionerFollowRange = 18.0D; + public double illusionerMaxHealth = 32.0D; private void illusionerSettings() { + illusionerRidable = getBoolean("mobs.illusioner.ridable", illusionerRidable); + illusionerRidableInWater = getBoolean("mobs.illusioner.ridable-in-water", illusionerRidableInWater); - illusionerMaxHealth = getDouble("mobs.illusioner.max-health", illusionerMaxHealth); illusionerMovementSpeed = getDouble("mobs.illusioner.movement-speed", illusionerMovementSpeed); illusionerFollowRange = getDouble("mobs.illusioner.follow-range", illusionerFollowRange); + if (PurpurConfig.version < 8) { +@@ -418,11 +565,76 @@ public class PurpurWorldConfig { + illusionerMaxHealth = getDouble("mobs.illusioner.attributes.max-health", illusionerMaxHealth); } + public boolean ironGolemRidable = false; @@ -5405,7 +5406,7 @@ index 8d7da9fe0b..2921619972 100644 public double phantomAttackedByCrystalRadius = 0.0D; public float phantomAttackedByCrystalDamage = 1.0F; public double phantomOrbitCrystalRadius = 0.0D; -@@ -434,6 +646,11 @@ public class PurpurWorldConfig { +@@ -442,6 +654,11 @@ public class PurpurWorldConfig { public boolean phantomIgnorePlayersWithTorch = false; public boolean phantomBurnInDaylight = true; private void phantomSettings() { @@ -5417,7 +5418,7 @@ index 8d7da9fe0b..2921619972 100644 phantomAttackedByCrystalRadius = getDouble("mobs.phantom.attacked-by-crystal-range", phantomAttackedByCrystalRadius); phantomAttackedByCrystalDamage = (float) getDouble("mobs.phantom.attacked-by-crystal-damage", phantomAttackedByCrystalDamage); phantomOrbitCrystalRadius = getDouble("mobs.phantom.orbit-crystal-radius", phantomOrbitCrystalRadius); -@@ -454,40 +671,184 @@ public class PurpurWorldConfig { +@@ -462,40 +679,184 @@ public class PurpurWorldConfig { phantomIgnorePlayersWithTorch = getBoolean("mobs.phantom.ignore-players-with-torch", phantomIgnorePlayersWithTorch); } @@ -5602,7 +5603,7 @@ index 8d7da9fe0b..2921619972 100644 public int villagerBrainTicks = 1; public boolean villagerUseBrainTicksOnlyWhenLagging = true; public boolean villagerCanBeLeashed = false; -@@ -497,6 +858,8 @@ public class PurpurWorldConfig { +@@ -505,6 +866,8 @@ public class PurpurWorldConfig { public int villagerSpawnIronGolemLimit = 0; public boolean villagerCanBreed = true; private void villagerSettings() { @@ -5611,7 +5612,7 @@ index 8d7da9fe0b..2921619972 100644 villagerBrainTicks = getInt("mobs.villager.brain-ticks", villagerBrainTicks); villagerUseBrainTicksOnlyWhenLagging = getBoolean("mobs.villager.use-brain-ticks-only-when-lagging", villagerUseBrainTicksOnlyWhenLagging); villagerCanBeLeashed = getBoolean("mobs.villager.can-be-leashed", villagerCanBeLeashed); -@@ -507,45 +870,108 @@ public class PurpurWorldConfig { +@@ -515,45 +878,108 @@ public class PurpurWorldConfig { villagerCanBreed = getBoolean("mobs.villager.can-breed", villagerCanBreed); } @@ -5722,7 +5723,7 @@ index 8d7da9fe0b..2921619972 100644 zombieVillagerJockeyTryExistingChickens = getBoolean("mobs.zombie_villager.jockey.try-existing-chickens", zombieVillagerJockeyTryExistingChickens); diff --git a/src/main/java/net/pl3x/purpur/controller/ControllerLookWASD.java b/src/main/java/net/pl3x/purpur/controller/ControllerLookWASD.java new file mode 100644 -index 0000000000..0b16a7b634 +index 000000000..0b16a7b63 --- /dev/null +++ b/src/main/java/net/pl3x/purpur/controller/ControllerLookWASD.java @@ -0,0 +1,76 @@ @@ -5804,7 +5805,7 @@ index 0000000000..0b16a7b634 +} diff --git a/src/main/java/net/pl3x/purpur/controller/ControllerMoveWASD.java b/src/main/java/net/pl3x/purpur/controller/ControllerMoveWASD.java new file mode 100644 -index 0000000000..426688b3a6 +index 000000000..426688b3a --- /dev/null +++ b/src/main/java/net/pl3x/purpur/controller/ControllerMoveWASD.java @@ -0,0 +1,92 @@ @@ -5902,7 +5903,7 @@ index 0000000000..426688b3a6 +} diff --git a/src/main/java/net/pl3x/purpur/controller/ControllerMoveWASDFlying.java b/src/main/java/net/pl3x/purpur/controller/ControllerMoveWASDFlying.java new file mode 100644 -index 0000000000..33c51460ab +index 000000000..33c51460a --- /dev/null +++ b/src/main/java/net/pl3x/purpur/controller/ControllerMoveWASDFlying.java @@ -0,0 +1,61 @@ @@ -5969,7 +5970,7 @@ index 0000000000..33c51460ab +} diff --git a/src/main/java/net/pl3x/purpur/controller/ControllerMoveWASDFlyingWithSpacebar.java b/src/main/java/net/pl3x/purpur/controller/ControllerMoveWASDFlyingWithSpacebar.java new file mode 100644 -index 0000000000..f753759361 +index 000000000..f75375936 --- /dev/null +++ b/src/main/java/net/pl3x/purpur/controller/ControllerMoveWASDFlyingWithSpacebar.java @@ -0,0 +1,61 @@ @@ -6036,7 +6037,7 @@ index 0000000000..f753759361 +} diff --git a/src/main/java/net/pl3x/purpur/controller/ControllerMoveWASDWater.java b/src/main/java/net/pl3x/purpur/controller/ControllerMoveWASDWater.java new file mode 100644 -index 0000000000..1b08a0905b +index 000000000..1b08a0905 --- /dev/null +++ b/src/main/java/net/pl3x/purpur/controller/ControllerMoveWASDWater.java @@ -0,0 +1,50 @@ @@ -6092,7 +6093,7 @@ index 0000000000..1b08a0905b +} diff --git a/src/main/java/net/pl3x/purpur/entity/DolphinSpit.java b/src/main/java/net/pl3x/purpur/entity/DolphinSpit.java new file mode 100644 -index 0000000000..a01524c6ab +index 000000000..a01524c6a --- /dev/null +++ b/src/main/java/net/pl3x/purpur/entity/DolphinSpit.java @@ -0,0 +1,120 @@ @@ -6218,7 +6219,7 @@ index 0000000000..a01524c6ab +} diff --git a/src/main/java/net/pl3x/purpur/entity/PhantomFlames.java b/src/main/java/net/pl3x/purpur/entity/PhantomFlames.java new file mode 100644 -index 0000000000..929e4ff91c +index 000000000..929e4ff91 --- /dev/null +++ b/src/main/java/net/pl3x/purpur/entity/PhantomFlames.java @@ -0,0 +1,125 @@ @@ -6348,7 +6349,7 @@ index 0000000000..929e4ff91c + } +} diff --git a/src/main/java/org/bukkit/craftbukkit/entity/CraftEntity.java b/src/main/java/org/bukkit/craftbukkit/entity/CraftEntity.java -index 1fe253bc72..bf387664c2 100644 +index 1fe253bc7..bf387664c 100644 --- a/src/main/java/org/bukkit/craftbukkit/entity/CraftEntity.java +++ b/src/main/java/org/bukkit/craftbukkit/entity/CraftEntity.java @@ -1159,4 +1159,26 @@ public abstract class CraftEntity implements org.bukkit.entity.Entity { @@ -6379,7 +6380,7 @@ index 1fe253bc72..bf387664c2 100644 + // Purpur end } diff --git a/src/main/java/org/bukkit/craftbukkit/event/CraftEventFactory.java b/src/main/java/org/bukkit/craftbukkit/event/CraftEventFactory.java -index 71306b6ee6..a17f449b54 100644 +index 71306b6ee..a17f449b5 100644 --- a/src/main/java/org/bukkit/craftbukkit/event/CraftEventFactory.java +++ b/src/main/java/org/bukkit/craftbukkit/event/CraftEventFactory.java @@ -502,6 +502,18 @@ public class CraftEventFactory { diff --git a/patches/server/0114-Use-configured-height-for-nether-surface-builders.patch b/patches/server/0113-Use-configured-height-for-nether-surface-builders.patch similarity index 97% rename from patches/server/0114-Use-configured-height-for-nether-surface-builders.patch rename to patches/server/0113-Use-configured-height-for-nether-surface-builders.patch index e384c6093..3557fecd5 100644 --- a/patches/server/0114-Use-configured-height-for-nether-surface-builders.patch +++ b/patches/server/0113-Use-configured-height-for-nether-surface-builders.patch @@ -5,7 +5,7 @@ Subject: [PATCH] Use configured height for nether surface builders diff --git a/src/main/java/net/minecraft/server/WorldGenSurfaceNetherAbstract.java b/src/main/java/net/minecraft/server/WorldGenSurfaceNetherAbstract.java -index 462f0b2bae..f418a71ca8 100644 +index 462f0b2ba..f418a71ca 100644 --- a/src/main/java/net/minecraft/server/WorldGenSurfaceNetherAbstract.java +++ b/src/main/java/net/minecraft/server/WorldGenSurfaceNetherAbstract.java @@ -35,7 +35,7 @@ public abstract class WorldGenSurfaceNetherAbstract extends WorldGenSurface Date: Thu, 20 Aug 2020 17:38:12 -0700 -Subject: [PATCH] Customizable WitherBoss Health and Healing +Subject: [PATCH] Customizable wither health and healing -Adds the ability to customize the health of the Wither Boss, as well as the amount that it heals, and how often in the PurpurWorldConfig. +Adds the ability to customize the health of the wither, as well as the amount that it heals, and how often. diff --git a/src/main/java/net/minecraft/server/EntityWither.java b/src/main/java/net/minecraft/server/EntityWither.java -index f68cf834aa..4cac2bd091 100644 +index f68cf834a..e8cc3af60 100644 --- a/src/main/java/net/minecraft/server/EntityWither.java +++ b/src/main/java/net/minecraft/server/EntityWither.java -@@ -145,6 +145,12 @@ public class EntityWither extends EntityMonster implements IRangedEntity { +@@ -145,6 +145,13 @@ public class EntityWither extends EntityMonster implements IRangedEntity { skull.setPositionRaw(headX, headY, headZ); world.addEntity(skull); } @@ -17,12 +17,13 @@ index f68cf834aa..4cac2bd091 100644 + public void initAttributes(World world) { + if (world != null) { + this.getAttributeInstance(GenericAttributes.MAX_HEALTH).setValue(world.purpurConfig.witherMaxHealth); ++ //setHealth(getMaxHealth()); // do NOT do this for wither! health grows when first spawned + } + } // Purpur end @Override -@@ -348,7 +354,7 @@ public class EntityWither extends EntityMonster implements IRangedEntity { +@@ -348,7 +355,7 @@ public class EntityWither extends EntityMonster implements IRangedEntity { this.setInvul(i); if (this.ticksLived % 10 == 0) { @@ -31,7 +32,7 @@ index f68cf834aa..4cac2bd091 100644 } } else { -@@ -457,8 +463,10 @@ public class EntityWither extends EntityMonster implements IRangedEntity { +@@ -457,8 +464,10 @@ public class EntityWither extends EntityMonster implements IRangedEntity { } } @@ -44,7 +45,7 @@ index f68cf834aa..4cac2bd091 100644 } //this.bossBattle.setProgress(this.getHealth() / this.getMaxHealth()); // Paper - Moved down -@@ -473,6 +481,7 @@ public class EntityWither extends EntityMonster implements IRangedEntity { +@@ -473,6 +482,7 @@ public class EntityWither extends EntityMonster implements IRangedEntity { public void beginSpawnSequence() { this.setInvul(220); this.setHealth(this.getMaxHealth() / 3.0F); @@ -53,23 +54,28 @@ index f68cf834aa..4cac2bd091 100644 @Override diff --git a/src/main/java/net/pl3x/purpur/PurpurWorldConfig.java b/src/main/java/net/pl3x/purpur/PurpurWorldConfig.java -index fb6fad7986..fe35bdd100 100644 +index 1025b5dae..0f2e0e779 100644 --- a/src/main/java/net/pl3x/purpur/PurpurWorldConfig.java +++ b/src/main/java/net/pl3x/purpur/PurpurWorldConfig.java -@@ -902,10 +902,16 @@ public class PurpurWorldConfig { +@@ -910,10 +910,21 @@ public class PurpurWorldConfig { public boolean witherRidable = false; public boolean witherRidableInWater = false; public double witherMaxY = 256D; -+ public double witherMaxHealth = 300.0D; + public float witherHealthRegenAmount = 1.0f; + public int witherHealthRegenDelay = 20; ++ public double witherMaxHealth = 300.0D; private void witherSettings() { witherRidable = getBoolean("mobs.wither.ridable", witherRidable); witherRidableInWater = getBoolean("mobs.wither.ridable-in-water", witherRidableInWater); witherMaxY = getDouble("mobs.wither.ridable-max-y", witherMaxY); -+ witherMaxHealth = getDouble("mobs.wither.max-health", witherMaxHealth); + witherHealthRegenAmount = (float) getDouble("mobs.wither.health-regen-amount", witherHealthRegenAmount); + witherHealthRegenDelay = getInt("mobs.wither.health-regen-delay", witherHealthRegenDelay); ++ if (PurpurConfig.version < 8) { ++ double oldValue = getDouble("mobs.wither.max-health", witherMaxHealth); ++ set("mobs.wither.attributes.max-health", oldValue); ++ set("mobs.wither.max-health", null); ++ } ++ witherMaxHealth = getDouble("mobs.wither.attributes.max-health", witherMaxHealth); } public boolean witherSkeletonRidable = false; diff --git a/patches/server/0119-Allow-toggling-special-MobSpawners-per-world.patch b/patches/server/0118-Allow-toggling-special-MobSpawners-per-world.patch similarity index 98% rename from patches/server/0119-Allow-toggling-special-MobSpawners-per-world.patch rename to patches/server/0118-Allow-toggling-special-MobSpawners-per-world.patch index b92e61bb7..a09d681d2 100644 --- a/patches/server/0119-Allow-toggling-special-MobSpawners-per-world.patch +++ b/patches/server/0118-Allow-toggling-special-MobSpawners-per-world.patch @@ -6,7 +6,7 @@ Subject: [PATCH] Allow toggling special MobSpawners per world In vanilla, these are all hardcoded on for world type 0 (overworld) and hardcoded off for every other world type. Default config behaviour matches this. diff --git a/src/main/java/net/minecraft/server/MobSpawnerTrader.java b/src/main/java/net/minecraft/server/MobSpawnerTrader.java -index 8d89f51182..072ec40f75 100644 +index 8d89f5118..072ec40f7 100644 --- a/src/main/java/net/minecraft/server/MobSpawnerTrader.java +++ b/src/main/java/net/minecraft/server/MobSpawnerTrader.java @@ -132,7 +132,17 @@ public class MobSpawnerTrader implements MobSpawner { @@ -29,7 +29,7 @@ index 8d89f51182..072ec40f75 100644 if (SpawnerCreature.a(EntityPositionTypes.Surface.ON_GROUND, iworldreader, blockposition2, EntityTypes.WANDERING_TRADER)) { blockposition1 = blockposition2; diff --git a/src/main/java/net/minecraft/server/World.java b/src/main/java/net/minecraft/server/World.java -index bdfdb73bc1..ab97d076c9 100644 +index bdfdb73bc..ab97d076c 100644 --- a/src/main/java/net/minecraft/server/World.java +++ b/src/main/java/net/minecraft/server/World.java @@ -156,7 +156,7 @@ public abstract class World implements GeneratorAccess, AutoCloseable { @@ -42,7 +42,7 @@ index bdfdb73bc1..ab97d076c9 100644 this.generator = gen; this.world = new CraftWorld((WorldServer) this, gen, env); diff --git a/src/main/java/net/minecraft/server/WorldServer.java b/src/main/java/net/minecraft/server/WorldServer.java -index bc35bfd96a..644ff68795 100644 +index bc35bfd96..644ff6879 100644 --- a/src/main/java/net/minecraft/server/WorldServer.java +++ b/src/main/java/net/minecraft/server/WorldServer.java @@ -332,7 +332,24 @@ public class WorldServer extends World implements GeneratorAccessSeed { @@ -72,7 +72,7 @@ index bc35bfd96a..644ff68795 100644 this.worldDataServer = (WorldDataServer) iworlddataserver; worldDataServer.world = this; diff --git a/src/main/java/net/pl3x/purpur/PurpurWorldConfig.java b/src/main/java/net/pl3x/purpur/PurpurWorldConfig.java -index fe35bdd100..f0b09ec3ae 100644 +index 0f2e0e779..92a1fb69e 100644 --- a/src/main/java/net/pl3x/purpur/PurpurWorldConfig.java +++ b/src/main/java/net/pl3x/purpur/PurpurWorldConfig.java @@ -7,6 +7,8 @@ import net.minecraft.server.IRegistry; diff --git a/patches/server/0120-Raid-cooldown-setting.patch b/patches/server/0119-Raid-cooldown-setting.patch similarity index 98% rename from patches/server/0120-Raid-cooldown-setting.patch rename to patches/server/0119-Raid-cooldown-setting.patch index f29366a85..6ce0418cb 100644 --- a/patches/server/0120-Raid-cooldown-setting.patch +++ b/patches/server/0119-Raid-cooldown-setting.patch @@ -5,7 +5,7 @@ Subject: [PATCH] Raid cooldown setting diff --git a/src/main/java/net/minecraft/server/PersistentRaid.java b/src/main/java/net/minecraft/server/PersistentRaid.java -index 826dcf9f7e..807910c60e 100644 +index 826dcf9f7..807910c60 100644 --- a/src/main/java/net/minecraft/server/PersistentRaid.java +++ b/src/main/java/net/minecraft/server/PersistentRaid.java @@ -9,6 +9,7 @@ import javax.annotation.Nullable; @@ -52,7 +52,7 @@ index 826dcf9f7e..807910c60e 100644 if (!this.raids.containsKey(raid.getId())) { this.raids.put(raid.getId(), raid); diff --git a/src/main/java/net/pl3x/purpur/PurpurWorldConfig.java b/src/main/java/net/pl3x/purpur/PurpurWorldConfig.java -index f0b09ec3ae..27b9dcfec6 100644 +index 92a1fb69e..19e43dd63 100644 --- a/src/main/java/net/pl3x/purpur/PurpurWorldConfig.java +++ b/src/main/java/net/pl3x/purpur/PurpurWorldConfig.java @@ -155,6 +155,7 @@ public class PurpurWorldConfig { diff --git a/patches/server/0121-Despawn-rate-config-options-per-projectile-type.patch b/patches/server/0120-Despawn-rate-config-options-per-projectile-type.patch similarity index 96% rename from patches/server/0121-Despawn-rate-config-options-per-projectile-type.patch rename to patches/server/0120-Despawn-rate-config-options-per-projectile-type.patch index 6021a5654..a1218fe66 100644 --- a/patches/server/0121-Despawn-rate-config-options-per-projectile-type.patch +++ b/patches/server/0120-Despawn-rate-config-options-per-projectile-type.patch @@ -6,7 +6,7 @@ Subject: [PATCH] Despawn rate config options per projectile type Default values of -1 respect vanilla behaviour. diff --git a/src/main/java/net/minecraft/server/EntityArrow.java b/src/main/java/net/minecraft/server/EntityArrow.java -index 1e7f5957d8..7f89b269e3 100644 +index 1e7f5957d..7f89b269e 100644 --- a/src/main/java/net/minecraft/server/EntityArrow.java +++ b/src/main/java/net/minecraft/server/EntityArrow.java @@ -23,7 +23,7 @@ public abstract class EntityArrow extends IProjectile { @@ -48,7 +48,7 @@ index 1e7f5957d8..7f89b269e3 100644 private void A() { diff --git a/src/main/java/net/minecraft/server/EntityDragonFireball.java b/src/main/java/net/minecraft/server/EntityDragonFireball.java -index 27032abad4..9d2d5be5ee 100644 +index 27032abad..9d2d5be5e 100644 --- a/src/main/java/net/minecraft/server/EntityDragonFireball.java +++ b/src/main/java/net/minecraft/server/EntityDragonFireball.java @@ -75,4 +75,11 @@ public class EntityDragonFireball extends EntityFireball { @@ -64,7 +64,7 @@ index 27032abad4..9d2d5be5ee 100644 + // Purpur end } diff --git a/src/main/java/net/minecraft/server/EntityEgg.java b/src/main/java/net/minecraft/server/EntityEgg.java -index edce89169b..4951abdfa1 100644 +index edce89169..4951abdfa 100644 --- a/src/main/java/net/minecraft/server/EntityEgg.java +++ b/src/main/java/net/minecraft/server/EntityEgg.java @@ -87,4 +87,11 @@ public class EntityEgg extends EntityProjectileThrowable { @@ -80,7 +80,7 @@ index edce89169b..4951abdfa1 100644 + // Purpur end } diff --git a/src/main/java/net/minecraft/server/EntityEnderPearl.java b/src/main/java/net/minecraft/server/EntityEnderPearl.java -index 63b4a449b5..e8650c1bfa 100644 +index 63b4a449b..e8650c1bf 100644 --- a/src/main/java/net/minecraft/server/EntityEnderPearl.java +++ b/src/main/java/net/minecraft/server/EntityEnderPearl.java @@ -106,4 +106,11 @@ public class EntityEnderPearl extends EntityProjectileThrowable { @@ -96,7 +96,7 @@ index 63b4a449b5..e8650c1bfa 100644 + // Purpur end } diff --git a/src/main/java/net/minecraft/server/EntityFireworks.java b/src/main/java/net/minecraft/server/EntityFireworks.java -index a646dc9f03..9789d480ad 100644 +index a646dc9f0..9789d480a 100644 --- a/src/main/java/net/minecraft/server/EntityFireworks.java +++ b/src/main/java/net/minecraft/server/EntityFireworks.java @@ -298,4 +298,11 @@ public class EntityFireworks extends IProjectile { @@ -112,7 +112,7 @@ index a646dc9f03..9789d480ad 100644 + // Purpur end } diff --git a/src/main/java/net/minecraft/server/EntityFishingHook.java b/src/main/java/net/minecraft/server/EntityFishingHook.java -index 519df0002b..6891e61bcf 100644 +index 519df0002..6891e61bc 100644 --- a/src/main/java/net/minecraft/server/EntityFishingHook.java +++ b/src/main/java/net/minecraft/server/EntityFishingHook.java @@ -576,4 +576,11 @@ public class EntityFishingHook extends IProjectile { @@ -128,7 +128,7 @@ index 519df0002b..6891e61bcf 100644 + // Purpur end } diff --git a/src/main/java/net/minecraft/server/EntityLargeFireball.java b/src/main/java/net/minecraft/server/EntityLargeFireball.java -index b4b0dfbc70..d12de20cf4 100644 +index b4b0dfbc7..d12de20cf 100644 --- a/src/main/java/net/minecraft/server/EntityLargeFireball.java +++ b/src/main/java/net/minecraft/server/EntityLargeFireball.java @@ -66,4 +66,11 @@ public class EntityLargeFireball extends EntityFireballFireball { @@ -144,7 +144,7 @@ index b4b0dfbc70..d12de20cf4 100644 + // Purpur end } diff --git a/src/main/java/net/minecraft/server/EntityLlamaSpit.java b/src/main/java/net/minecraft/server/EntityLlamaSpit.java -index 7636a51a7e..3e6438c977 100644 +index 7636a51a7..3e6438c97 100644 --- a/src/main/java/net/minecraft/server/EntityLlamaSpit.java +++ b/src/main/java/net/minecraft/server/EntityLlamaSpit.java @@ -71,4 +71,11 @@ public class EntityLlamaSpit extends IProjectile { @@ -160,7 +160,7 @@ index 7636a51a7e..3e6438c977 100644 + // Purpur end } diff --git a/src/main/java/net/minecraft/server/EntityPotion.java b/src/main/java/net/minecraft/server/EntityPotion.java -index d57da221c1..6d4b1e58df 100644 +index d57da221c..6d4b1e58d 100644 --- a/src/main/java/net/minecraft/server/EntityPotion.java +++ b/src/main/java/net/minecraft/server/EntityPotion.java @@ -240,4 +240,11 @@ public class EntityPotion extends EntityProjectileThrowable { @@ -176,7 +176,7 @@ index d57da221c1..6d4b1e58df 100644 + // Purpur end } diff --git a/src/main/java/net/minecraft/server/EntityShulkerBullet.java b/src/main/java/net/minecraft/server/EntityShulkerBullet.java -index 23017b5486..0b16473aed 100644 +index 23017b548..0b16473ae 100644 --- a/src/main/java/net/minecraft/server/EntityShulkerBullet.java +++ b/src/main/java/net/minecraft/server/EntityShulkerBullet.java @@ -313,4 +313,11 @@ public class EntityShulkerBullet extends IProjectile { @@ -192,7 +192,7 @@ index 23017b5486..0b16473aed 100644 + // Purpur end } diff --git a/src/main/java/net/minecraft/server/EntitySmallFireball.java b/src/main/java/net/minecraft/server/EntitySmallFireball.java -index 350e92ac99..4ed7a20bfe 100644 +index 350e92ac9..4ed7a20bf 100644 --- a/src/main/java/net/minecraft/server/EntitySmallFireball.java +++ b/src/main/java/net/minecraft/server/EntitySmallFireball.java @@ -86,4 +86,11 @@ public class EntitySmallFireball extends EntityFireballFireball { @@ -208,7 +208,7 @@ index 350e92ac99..4ed7a20bfe 100644 + // Purpur end } diff --git a/src/main/java/net/minecraft/server/EntitySnowball.java b/src/main/java/net/minecraft/server/EntitySnowball.java -index e44249f59b..34a5f481e6 100644 +index e44249f59..34a5f481e 100644 --- a/src/main/java/net/minecraft/server/EntitySnowball.java +++ b/src/main/java/net/minecraft/server/EntitySnowball.java @@ -14,6 +14,12 @@ public class EntitySnowball extends EntityProjectileThrowable { @@ -225,7 +225,7 @@ index e44249f59b..34a5f481e6 100644 protected Item getDefaultItem() { return Items.SNOWBALL; diff --git a/src/main/java/net/minecraft/server/EntityThrownExpBottle.java b/src/main/java/net/minecraft/server/EntityThrownExpBottle.java -index 2d3ca8c424..1d32518bd7 100644 +index 2d3ca8c42..1d32518bd 100644 --- a/src/main/java/net/minecraft/server/EntityThrownExpBottle.java +++ b/src/main/java/net/minecraft/server/EntityThrownExpBottle.java @@ -51,4 +51,11 @@ public class EntityThrownExpBottle extends EntityProjectileThrowable { @@ -241,7 +241,7 @@ index 2d3ca8c424..1d32518bd7 100644 + // Purpur end } diff --git a/src/main/java/net/minecraft/server/EntityWitherSkull.java b/src/main/java/net/minecraft/server/EntityWitherSkull.java -index 2c02e114cc..4a97a7517d 100644 +index 2c02e114c..4a97a7517 100644 --- a/src/main/java/net/minecraft/server/EntityWitherSkull.java +++ b/src/main/java/net/minecraft/server/EntityWitherSkull.java @@ -116,4 +116,11 @@ public class EntityWitherSkull extends EntityFireball { @@ -257,7 +257,7 @@ index 2c02e114cc..4a97a7517d 100644 + // Purpur end } diff --git a/src/main/java/net/minecraft/server/IProjectile.java b/src/main/java/net/minecraft/server/IProjectile.java -index b9f8ed3554..58f03f1d2e 100644 +index b9f8ed355..58f03f1d2 100644 --- a/src/main/java/net/minecraft/server/IProjectile.java +++ b/src/main/java/net/minecraft/server/IProjectile.java @@ -13,11 +13,25 @@ public abstract class IProjectile extends Entity { @@ -300,7 +300,7 @@ index b9f8ed3554..58f03f1d2e 100644 public boolean checkIfLeftOwner() { return this.h(); } // Purpur - OBFHELPER diff --git a/src/main/java/net/pl3x/purpur/PurpurWorldConfig.java b/src/main/java/net/pl3x/purpur/PurpurWorldConfig.java -index 27b9dcfec6..6b76469033 100644 +index 19e43dd63..7dcc0211b 100644 --- a/src/main/java/net/pl3x/purpur/PurpurWorldConfig.java +++ b/src/main/java/net/pl3x/purpur/PurpurWorldConfig.java @@ -147,6 +147,35 @@ public class PurpurWorldConfig { diff --git a/patches/server/0122-PaperPR-Add-hex-color-code-support-for-console-loggi.patch b/patches/server/0121-PaperPR-Add-hex-color-code-support-for-console-loggi.patch similarity index 98% rename from patches/server/0122-PaperPR-Add-hex-color-code-support-for-console-loggi.patch rename to patches/server/0121-PaperPR-Add-hex-color-code-support-for-console-loggi.patch index dcfa3fffc..54bea50d3 100644 --- a/patches/server/0122-PaperPR-Add-hex-color-code-support-for-console-loggi.patch +++ b/patches/server/0121-PaperPR-Add-hex-color-code-support-for-console-loggi.patch @@ -5,7 +5,7 @@ Subject: [PATCH] PaperPR - Add hex color code support for console logging diff --git a/src/main/java/com/destroystokyo/paper/console/TerminalConsoleCommandSender.java b/src/main/java/com/destroystokyo/paper/console/TerminalConsoleCommandSender.java -index 685deaa0e5..2a0ada490b 100644 +index 685deaa0e..2a0ada490 100644 --- a/src/main/java/com/destroystokyo/paper/console/TerminalConsoleCommandSender.java +++ b/src/main/java/com/destroystokyo/paper/console/TerminalConsoleCommandSender.java @@ -1,17 +1,52 @@ @@ -63,7 +63,7 @@ index 685deaa0e5..2a0ada490b 100644 + } } diff --git a/src/main/java/net/pl3x/purpur/PurpurConfig.java b/src/main/java/net/pl3x/purpur/PurpurConfig.java -index a6f4642c44..d6408629c4 100644 +index b71d3187e..bcb9857b7 100644 --- a/src/main/java/net/pl3x/purpur/PurpurConfig.java +++ b/src/main/java/net/pl3x/purpur/PurpurConfig.java @@ -221,9 +221,11 @@ public class PurpurConfig { diff --git a/patches/server/0123-Add-option-to-disable-zombie-aggressiveness-towards-.patch b/patches/server/0122-Add-option-to-disable-zombie-aggressiveness-towards-.patch similarity index 96% rename from patches/server/0123-Add-option-to-disable-zombie-aggressiveness-towards-.patch rename to patches/server/0122-Add-option-to-disable-zombie-aggressiveness-towards-.patch index e36cc2794..d63047d62 100644 --- a/patches/server/0123-Add-option-to-disable-zombie-aggressiveness-towards-.patch +++ b/patches/server/0122-Add-option-to-disable-zombie-aggressiveness-towards-.patch @@ -6,7 +6,7 @@ Subject: [PATCH] Add option to disable zombie aggressiveness towards villagers diff --git a/src/main/java/com/destroystokyo/paper/entity/ai/MobGoalHelper.java b/src/main/java/com/destroystokyo/paper/entity/ai/MobGoalHelper.java -index 89b56de756..ded483ace0 100644 +index 89b56de75..ded483ace 100644 --- a/src/main/java/com/destroystokyo/paper/entity/ai/MobGoalHelper.java +++ b/src/main/java/com/destroystokyo/paper/entity/ai/MobGoalHelper.java @@ -131,6 +131,10 @@ public class MobGoalHelper { @@ -21,7 +21,7 @@ index 89b56de756..ded483ace0 100644 ignored.add("selector_1"); ignored.add("selector_2"); diff --git a/src/main/java/net/minecraft/server/EntityDrowned.java b/src/main/java/net/minecraft/server/EntityDrowned.java -index 125eab60f2..638efc67d6 100644 +index 125eab60f..638efc67d 100644 --- a/src/main/java/net/minecraft/server/EntityDrowned.java +++ b/src/main/java/net/minecraft/server/EntityDrowned.java @@ -58,7 +58,18 @@ public class EntityDrowned extends EntityZombie implements IRangedEntity { @@ -45,7 +45,7 @@ index 125eab60f2..638efc67d6 100644 this.targetSelector.a(5, new PathfinderGoalNearestAttackableTarget<>(this, EntityTurtle.class, 10, true, false, EntityTurtle.bo)); } diff --git a/src/main/java/net/minecraft/server/EntityZombie.java b/src/main/java/net/minecraft/server/EntityZombie.java -index e2f68d843c..3ad8bd0847 100644 +index e2f68d843..3ad8bd084 100644 --- a/src/main/java/net/minecraft/server/EntityZombie.java +++ b/src/main/java/net/minecraft/server/EntityZombie.java @@ -85,7 +85,18 @@ public class EntityZombie extends EntityMonster { @@ -69,10 +69,10 @@ index e2f68d843c..3ad8bd0847 100644 this.targetSelector.a(5, new PathfinderGoalNearestAttackableTarget<>(this, EntityTurtle.class, 10, true, false, EntityTurtle.bo)); } diff --git a/src/main/java/net/pl3x/purpur/PurpurWorldConfig.java b/src/main/java/net/pl3x/purpur/PurpurWorldConfig.java -index 6b76469033..b83e32cd16 100644 +index 7dcc0211b..f04e2e562 100644 --- a/src/main/java/net/pl3x/purpur/PurpurWorldConfig.java +++ b/src/main/java/net/pl3x/purpur/PurpurWorldConfig.java -@@ -999,12 +999,14 @@ public class PurpurWorldConfig { +@@ -1012,12 +1012,14 @@ public class PurpurWorldConfig { public boolean zombieJockeyOnlyBaby = true; public double zombieJockeyChance = 0.05D; public boolean zombieJockeyTryExistingChickens = true; diff --git a/patches/server/0124-Persistent-TileEntity-Lore-and-DisplayName.patch b/patches/server/0123-Persistent-TileEntity-Lore-and-DisplayName.patch similarity index 98% rename from patches/server/0124-Persistent-TileEntity-Lore-and-DisplayName.patch rename to patches/server/0123-Persistent-TileEntity-Lore-and-DisplayName.patch index f04b30ea8..6f72047e8 100644 --- a/patches/server/0124-Persistent-TileEntity-Lore-and-DisplayName.patch +++ b/patches/server/0123-Persistent-TileEntity-Lore-and-DisplayName.patch @@ -7,7 +7,7 @@ Makes it so that when a TileEntity is placed in the world and then broken, the dropped ItemStack retains any original custom display name/lore. diff --git a/src/main/java/net/minecraft/server/Block.java b/src/main/java/net/minecraft/server/Block.java -index d621b11ba9..c276a2896b 100644 +index d621b11ba..c276a2896 100644 --- a/src/main/java/net/minecraft/server/Block.java +++ b/src/main/java/net/minecraft/server/Block.java @@ -207,7 +207,7 @@ public class Block extends BlockBase implements IMaterial { @@ -79,7 +79,7 @@ index d621b11ba9..c276a2896b 100644 if (!world.isClientSide && !itemstack.isEmpty() && world.getGameRules().getBoolean(GameRules.DO_TILE_DROPS)) { float f = 0.5F; diff --git a/src/main/java/net/minecraft/server/ItemBlock.java b/src/main/java/net/minecraft/server/ItemBlock.java -index bbb1de7d1a..d97efe3d47 100644 +index bbb1de7d1..d97efe3d4 100644 --- a/src/main/java/net/minecraft/server/ItemBlock.java +++ b/src/main/java/net/minecraft/server/ItemBlock.java @@ -96,7 +96,24 @@ public class ItemBlock extends Item { @@ -109,7 +109,7 @@ index bbb1de7d1a..d97efe3d47 100644 @Nullable diff --git a/src/main/java/net/minecraft/server/TileEntity.java b/src/main/java/net/minecraft/server/TileEntity.java -index 58d958a88a..8e87490954 100644 +index 58d958a88..8e8749095 100644 --- a/src/main/java/net/minecraft/server/TileEntity.java +++ b/src/main/java/net/minecraft/server/TileEntity.java @@ -90,9 +90,25 @@ public abstract class TileEntity implements KeyedObject { // Paper @@ -165,7 +165,7 @@ index 58d958a88a..8e87490954 100644 + // Purpur end } diff --git a/src/main/java/net/pl3x/purpur/PurpurWorldConfig.java b/src/main/java/net/pl3x/purpur/PurpurWorldConfig.java -index b83e32cd16..e49746df3b 100644 +index f04e2e562..4d97a2323 100644 --- a/src/main/java/net/pl3x/purpur/PurpurWorldConfig.java +++ b/src/main/java/net/pl3x/purpur/PurpurWorldConfig.java @@ -182,6 +182,7 @@ public class PurpurWorldConfig { diff --git a/patches/server/0125-Add-predicate-to-recipe-s-ExactChoice-ingredient.patch b/patches/server/0124-Add-predicate-to-recipe-s-ExactChoice-ingredient.patch similarity index 96% rename from patches/server/0125-Add-predicate-to-recipe-s-ExactChoice-ingredient.patch rename to patches/server/0124-Add-predicate-to-recipe-s-ExactChoice-ingredient.patch index 4e803f93d..2c7550330 100644 --- a/patches/server/0125-Add-predicate-to-recipe-s-ExactChoice-ingredient.patch +++ b/patches/server/0124-Add-predicate-to-recipe-s-ExactChoice-ingredient.patch @@ -5,7 +5,7 @@ Subject: [PATCH] Add predicate to recipe's ExactChoice ingredient diff --git a/src/main/java/net/minecraft/server/RecipeItemStack.java b/src/main/java/net/minecraft/server/RecipeItemStack.java -index 0f96abd0ca..f6d9294940 100644 +index 0f96abd0c..f6d929494 100644 --- a/src/main/java/net/minecraft/server/RecipeItemStack.java +++ b/src/main/java/net/minecraft/server/RecipeItemStack.java @@ -26,6 +26,7 @@ public final class RecipeItemStack implements Predicate { @@ -30,7 +30,7 @@ index 0f96abd0ca..f6d9294940 100644 int i = aitemstack.length; diff --git a/src/main/java/org/bukkit/craftbukkit/inventory/CraftRecipe.java b/src/main/java/org/bukkit/craftbukkit/inventory/CraftRecipe.java -index ef29599a89..18413e6327 100644 +index ef29599a8..18413e632 100644 --- a/src/main/java/org/bukkit/craftbukkit/inventory/CraftRecipe.java +++ b/src/main/java/org/bukkit/craftbukkit/inventory/CraftRecipe.java @@ -22,6 +22,7 @@ public interface CraftRecipe extends Recipe { diff --git a/patches/server/0126-Flying-squids-Oh-my.patch b/patches/server/0125-Flying-squids-Oh-my.patch similarity index 95% rename from patches/server/0126-Flying-squids-Oh-my.patch rename to patches/server/0125-Flying-squids-Oh-my.patch index a56a629e2..22d8b91c3 100644 --- a/patches/server/0126-Flying-squids-Oh-my.patch +++ b/patches/server/0125-Flying-squids-Oh-my.patch @@ -5,7 +5,7 @@ Subject: [PATCH] Flying squids! Oh my! diff --git a/src/main/java/net/minecraft/server/EntitySquid.java b/src/main/java/net/minecraft/server/EntitySquid.java -index 70b952f10a..cee2265016 100644 +index 70b952f10..cee226501 100644 --- a/src/main/java/net/minecraft/server/EntitySquid.java +++ b/src/main/java/net/minecraft/server/EntitySquid.java @@ -51,6 +51,11 @@ public class EntitySquid extends EntityWaterAnimal { @@ -38,10 +38,10 @@ index 70b952f10a..cee2265016 100644 float f1 = MathHelper.cos(f) * 0.2F; float f2 = -0.1F + this.b.getRandom().nextFloat() * 0.2F; diff --git a/src/main/java/net/pl3x/purpur/PurpurWorldConfig.java b/src/main/java/net/pl3x/purpur/PurpurWorldConfig.java -index e49746df3b..ba46d21ed7 100644 +index 4d97a2323..70e8092af 100644 --- a/src/main/java/net/pl3x/purpur/PurpurWorldConfig.java +++ b/src/main/java/net/pl3x/purpur/PurpurWorldConfig.java -@@ -860,10 +860,12 @@ public class PurpurWorldConfig { +@@ -868,10 +868,12 @@ public class PurpurWorldConfig { public boolean squidRidable = false; public boolean squidImmuneToEAR = true; public double squidOffsetWaterCheck = 0.0D; diff --git a/patches/server/0127-Infinity-bow-settings.patch b/patches/server/0126-Infinity-bow-settings.patch similarity index 97% rename from patches/server/0127-Infinity-bow-settings.patch rename to patches/server/0126-Infinity-bow-settings.patch index 6c93730c9..3575db89d 100644 --- a/patches/server/0127-Infinity-bow-settings.patch +++ b/patches/server/0126-Infinity-bow-settings.patch @@ -5,7 +5,7 @@ Subject: [PATCH] Infinity bow settings diff --git a/src/main/java/net/minecraft/server/ItemBow.java b/src/main/java/net/minecraft/server/ItemBow.java -index dd6a93dc78..8241f3dafa 100644 +index dd6a93dc7..8241f3daf 100644 --- a/src/main/java/net/minecraft/server/ItemBow.java +++ b/src/main/java/net/minecraft/server/ItemBow.java @@ -24,7 +24,7 @@ public class ItemBow extends ItemProjectileWeapon implements ItemVanishable { @@ -26,7 +26,7 @@ index dd6a93dc78..8241f3dafa 100644 entityhuman.b(StatisticList.ITEM_USED.b(this)); } diff --git a/src/main/java/net/pl3x/purpur/PurpurWorldConfig.java b/src/main/java/net/pl3x/purpur/PurpurWorldConfig.java -index ba46d21ed7..c0ec288c05 100644 +index 70e8092af..5b007f26d 100644 --- a/src/main/java/net/pl3x/purpur/PurpurWorldConfig.java +++ b/src/main/java/net/pl3x/purpur/PurpurWorldConfig.java @@ -147,6 +147,15 @@ public class PurpurWorldConfig { diff --git a/patches/server/0128-Stonecutter-damage.patch b/patches/server/0127-Stonecutter-damage.patch similarity index 96% rename from patches/server/0128-Stonecutter-damage.patch rename to patches/server/0127-Stonecutter-damage.patch index 8d5aac134..4edb15932 100644 --- a/patches/server/0128-Stonecutter-damage.patch +++ b/patches/server/0127-Stonecutter-damage.patch @@ -5,7 +5,7 @@ Subject: [PATCH] Stonecutter damage diff --git a/src/main/java/net/minecraft/server/BlockStonecutter.java b/src/main/java/net/minecraft/server/BlockStonecutter.java -index 3e57abd33e..08ba9e1c4e 100644 +index 3e57abd33..08ba9e1c4 100644 --- a/src/main/java/net/minecraft/server/BlockStonecutter.java +++ b/src/main/java/net/minecraft/server/BlockStonecutter.java @@ -71,4 +71,16 @@ public class BlockStonecutter extends Block { @@ -26,7 +26,7 @@ index 3e57abd33e..08ba9e1c4e 100644 + // Purpur end } diff --git a/src/main/java/net/minecraft/server/PathfinderNormal.java b/src/main/java/net/minecraft/server/PathfinderNormal.java -index 33804e6893..fabadcd7a2 100644 +index 33804e689..fabadcd7a 100644 --- a/src/main/java/net/minecraft/server/PathfinderNormal.java +++ b/src/main/java/net/minecraft/server/PathfinderNormal.java @@ -480,7 +480,7 @@ public class PathfinderNormal extends PathfinderAbstract { @@ -39,7 +39,7 @@ index 33804e6893..fabadcd7a2 100644 } diff --git a/src/main/java/net/pl3x/purpur/PurpurWorldConfig.java b/src/main/java/net/pl3x/purpur/PurpurWorldConfig.java -index c0ec288c05..1254bb5c8f 100644 +index 5b007f26d..403a503bc 100644 --- a/src/main/java/net/pl3x/purpur/PurpurWorldConfig.java +++ b/src/main/java/net/pl3x/purpur/PurpurWorldConfig.java @@ -372,6 +372,11 @@ public class PurpurWorldConfig { diff --git a/patches/server/0129-Configurable-daylight-cycle.patch b/patches/server/0128-Configurable-daylight-cycle.patch similarity index 97% rename from patches/server/0129-Configurable-daylight-cycle.patch rename to patches/server/0128-Configurable-daylight-cycle.patch index 94cdca8b6..d45f3a173 100644 --- a/patches/server/0129-Configurable-daylight-cycle.patch +++ b/patches/server/0128-Configurable-daylight-cycle.patch @@ -5,7 +5,7 @@ Subject: [PATCH] Configurable daylight cycle diff --git a/src/main/java/net/minecraft/server/PacketPlayOutUpdateTime.java b/src/main/java/net/minecraft/server/PacketPlayOutUpdateTime.java -index 88c3d7efaf..fed1ce9503 100644 +index 88c3d7efa..fed1ce950 100644 --- a/src/main/java/net/minecraft/server/PacketPlayOutUpdateTime.java +++ b/src/main/java/net/minecraft/server/PacketPlayOutUpdateTime.java @@ -5,7 +5,7 @@ import java.io.IOException; @@ -18,7 +18,7 @@ index 88c3d7efaf..fed1ce9503 100644 public PacketPlayOutUpdateTime() {} diff --git a/src/main/java/net/minecraft/server/WorldServer.java b/src/main/java/net/minecraft/server/WorldServer.java -index 644ff68795..dd8e284b26 100644 +index 644ff6879..dd8e284b2 100644 --- a/src/main/java/net/minecraft/server/WorldServer.java +++ b/src/main/java/net/minecraft/server/WorldServer.java @@ -94,6 +94,7 @@ public class WorldServer extends World implements GeneratorAccessSeed { @@ -74,7 +74,7 @@ index 644ff68795..dd8e284b26 100644 public void doMobSpawning(boolean flag, boolean flag1) { diff --git a/src/main/java/net/pl3x/purpur/PurpurWorldConfig.java b/src/main/java/net/pl3x/purpur/PurpurWorldConfig.java -index 1254bb5c8f..79e554a05e 100644 +index 403a503bc..213632534 100644 --- a/src/main/java/net/pl3x/purpur/PurpurWorldConfig.java +++ b/src/main/java/net/pl3x/purpur/PurpurWorldConfig.java @@ -116,6 +116,13 @@ public class PurpurWorldConfig { diff --git a/patches/server/0130-Allow-infinite-and-mending-enchantments-together.patch b/patches/server/0129-Allow-infinite-and-mending-enchantments-together.patch similarity index 96% rename from patches/server/0130-Allow-infinite-and-mending-enchantments-together.patch rename to patches/server/0129-Allow-infinite-and-mending-enchantments-together.patch index 7ee57f3fc..96ef80e6c 100644 --- a/patches/server/0130-Allow-infinite-and-mending-enchantments-together.patch +++ b/patches/server/0129-Allow-infinite-and-mending-enchantments-together.patch @@ -5,7 +5,7 @@ Subject: [PATCH] Allow infinite and mending enchantments together diff --git a/src/main/java/net/minecraft/server/EnchantmentInfiniteArrows.java b/src/main/java/net/minecraft/server/EnchantmentInfiniteArrows.java -index 408cfa4609..3d4e34f707 100644 +index 408cfa460..3d4e34f70 100644 --- a/src/main/java/net/minecraft/server/EnchantmentInfiniteArrows.java +++ b/src/main/java/net/minecraft/server/EnchantmentInfiniteArrows.java @@ -23,6 +23,6 @@ public class EnchantmentInfiniteArrows extends Enchantment { @@ -17,7 +17,7 @@ index 408cfa4609..3d4e34f707 100644 } } diff --git a/src/main/java/net/pl3x/purpur/PurpurConfig.java b/src/main/java/net/pl3x/purpur/PurpurConfig.java -index d6408629c4..2ca0707adb 100644 +index bcb9857b7..bcb397b7f 100644 --- a/src/main/java/net/pl3x/purpur/PurpurConfig.java +++ b/src/main/java/net/pl3x/purpur/PurpurConfig.java @@ -194,6 +194,16 @@ public class PurpurConfig { diff --git a/patches/server/0131-Infinite-fuel-furnace.patch b/patches/server/0130-Infinite-fuel-furnace.patch similarity index 97% rename from patches/server/0131-Infinite-fuel-furnace.patch rename to patches/server/0130-Infinite-fuel-furnace.patch index e7e084843..a47c20b4b 100644 --- a/patches/server/0131-Infinite-fuel-furnace.patch +++ b/patches/server/0130-Infinite-fuel-furnace.patch @@ -5,7 +5,7 @@ Subject: [PATCH] Infinite fuel furnace diff --git a/src/main/java/net/minecraft/server/TileEntityFurnace.java b/src/main/java/net/minecraft/server/TileEntityFurnace.java -index 1d3c2dd936..1a47f0ae48 100644 +index 1d3c2dd93..1a47f0ae4 100644 --- a/src/main/java/net/minecraft/server/TileEntityFurnace.java +++ b/src/main/java/net/minecraft/server/TileEntityFurnace.java @@ -266,6 +266,22 @@ public abstract class TileEntityFurnace extends TileEntityContainer implements I @@ -41,7 +41,7 @@ index 1d3c2dd936..1a47f0ae48 100644 if (flag1) { diff --git a/src/main/java/net/pl3x/purpur/PurpurWorldConfig.java b/src/main/java/net/pl3x/purpur/PurpurWorldConfig.java -index 79e554a05e..6adcce6174 100644 +index 213632534..1dea0f8c0 100644 --- a/src/main/java/net/pl3x/purpur/PurpurWorldConfig.java +++ b/src/main/java/net/pl3x/purpur/PurpurWorldConfig.java @@ -340,6 +340,11 @@ public class PurpurWorldConfig { diff --git a/patches/server/0132-Arrows-should-not-reset-despawn-counter.patch b/patches/server/0131-Arrows-should-not-reset-despawn-counter.patch similarity index 96% rename from patches/server/0132-Arrows-should-not-reset-despawn-counter.patch rename to patches/server/0131-Arrows-should-not-reset-despawn-counter.patch index 81423fcfa..ab6d35f99 100644 --- a/patches/server/0132-Arrows-should-not-reset-despawn-counter.patch +++ b/patches/server/0131-Arrows-should-not-reset-despawn-counter.patch @@ -7,7 +7,7 @@ This prevents keeping arrows alive indefinitely (such as when the block the arrow is stuck in gets removed, like a piston head going up/down) diff --git a/src/main/java/net/minecraft/server/EntityArrow.java b/src/main/java/net/minecraft/server/EntityArrow.java -index 7f89b269e3..5ec8c9484d 100644 +index 7f89b269e..5ec8c9484 100644 --- a/src/main/java/net/minecraft/server/EntityArrow.java +++ b/src/main/java/net/minecraft/server/EntityArrow.java @@ -243,7 +243,7 @@ public abstract class EntityArrow extends IProjectile { diff --git a/patches/server/0133-Add-tablist-suffix-option-for-afk.patch b/patches/server/0132-Add-tablist-suffix-option-for-afk.patch similarity index 97% rename from patches/server/0133-Add-tablist-suffix-option-for-afk.patch rename to patches/server/0132-Add-tablist-suffix-option-for-afk.patch index e2cb052c7..dc089c70d 100644 --- a/patches/server/0133-Add-tablist-suffix-option-for-afk.patch +++ b/patches/server/0132-Add-tablist-suffix-option-for-afk.patch @@ -5,7 +5,7 @@ Subject: [PATCH] Add tablist suffix option for afk diff --git a/src/main/java/net/minecraft/server/EntityPlayer.java b/src/main/java/net/minecraft/server/EntityPlayer.java -index b5f6a98fe4..5dd2c4036e 100644 +index b5f6a98fe..5dd2c4036 100644 --- a/src/main/java/net/minecraft/server/EntityPlayer.java +++ b/src/main/java/net/minecraft/server/EntityPlayer.java @@ -1959,7 +1959,11 @@ public class EntityPlayer extends EntityHuman implements ICrafting { @@ -22,7 +22,7 @@ index b5f6a98fe4..5dd2c4036e 100644 ((WorldServer) world).everyoneSleeping(); diff --git a/src/main/java/net/pl3x/purpur/PurpurConfig.java b/src/main/java/net/pl3x/purpur/PurpurConfig.java -index 2ca0707adb..adfd90c5b7 100644 +index bcb397b7f..1b9046f50 100644 --- a/src/main/java/net/pl3x/purpur/PurpurConfig.java +++ b/src/main/java/net/pl3x/purpur/PurpurConfig.java @@ -133,12 +133,14 @@ public class PurpurConfig { diff --git a/patches/server/0134-Ability-to-re-add-farmland-mechanics-from-Alpha.patch b/patches/server/0133-Ability-to-re-add-farmland-mechanics-from-Alpha.patch similarity index 96% rename from patches/server/0134-Ability-to-re-add-farmland-mechanics-from-Alpha.patch rename to patches/server/0133-Ability-to-re-add-farmland-mechanics-from-Alpha.patch index 8ffccef6f..4ab89b719 100644 --- a/patches/server/0134-Ability-to-re-add-farmland-mechanics-from-Alpha.patch +++ b/patches/server/0133-Ability-to-re-add-farmland-mechanics-from-Alpha.patch @@ -5,7 +5,7 @@ Subject: [PATCH] Ability to re-add farmland mechanics from Alpha diff --git a/src/main/java/net/minecraft/server/BlockSoil.java b/src/main/java/net/minecraft/server/BlockSoil.java -index 8dd48669c2..099e0d3df2 100644 +index 8dd48669c..099e0d3df 100644 --- a/src/main/java/net/minecraft/server/BlockSoil.java +++ b/src/main/java/net/minecraft/server/BlockSoil.java @@ -90,6 +90,14 @@ public class BlockSoil extends Block { @@ -24,7 +24,7 @@ index 8dd48669c2..099e0d3df2 100644 return; } diff --git a/src/main/java/net/pl3x/purpur/PurpurWorldConfig.java b/src/main/java/net/pl3x/purpur/PurpurWorldConfig.java -index 6adcce6174..b01c7018ba 100644 +index 1dea0f8c0..90368559d 100644 --- a/src/main/java/net/pl3x/purpur/PurpurWorldConfig.java +++ b/src/main/java/net/pl3x/purpur/PurpurWorldConfig.java @@ -336,8 +336,10 @@ public class PurpurWorldConfig { diff --git a/patches/server/0135-Add-adjustable-breeding-cooldown-to-config.patch b/patches/server/0134-Add-adjustable-breeding-cooldown-to-config.patch similarity index 98% rename from patches/server/0135-Add-adjustable-breeding-cooldown-to-config.patch rename to patches/server/0134-Add-adjustable-breeding-cooldown-to-config.patch index 63d404e27..e4b2cfe57 100644 --- a/patches/server/0135-Add-adjustable-breeding-cooldown-to-config.patch +++ b/patches/server/0134-Add-adjustable-breeding-cooldown-to-config.patch @@ -5,7 +5,7 @@ Subject: [PATCH] Add adjustable breeding cooldown to config diff --git a/src/main/java/net/minecraft/server/EntityAnimal.java b/src/main/java/net/minecraft/server/EntityAnimal.java -index bba343542e..d9f9e2235d 100644 +index bba343542..d9f9e2235 100644 --- a/src/main/java/net/minecraft/server/EntityAnimal.java +++ b/src/main/java/net/minecraft/server/EntityAnimal.java @@ -120,7 +120,7 @@ public abstract class EntityAnimal extends EntityAgeable { @@ -33,7 +33,7 @@ index bba343542e..d9f9e2235d 100644 int experience = this.getRandom().nextInt(7) + 1; org.bukkit.event.entity.EntityBreedEvent entityBreedEvent = org.bukkit.craftbukkit.event.CraftEventFactory.callEntityBreedEvent(entityageable, this, entityanimal, entityplayer, this.breedItem, experience); diff --git a/src/main/java/net/minecraft/server/World.java b/src/main/java/net/minecraft/server/World.java -index ab97d076c9..b4ba9b56a9 100644 +index ab97d076c..b4ba9b56a 100644 --- a/src/main/java/net/minecraft/server/World.java +++ b/src/main/java/net/minecraft/server/World.java @@ -104,6 +104,48 @@ public abstract class World implements GeneratorAccess, AutoCloseable { @@ -94,7 +94,7 @@ index ab97d076c9..b4ba9b56a9 100644 this.generator = gen; this.world = new CraftWorld((WorldServer) this, gen, env); diff --git a/src/main/java/net/pl3x/purpur/PurpurWorldConfig.java b/src/main/java/net/pl3x/purpur/PurpurWorldConfig.java -index b01c7018ba..6bf867483c 100644 +index 90368559d..a108545c7 100644 --- a/src/main/java/net/pl3x/purpur/PurpurWorldConfig.java +++ b/src/main/java/net/pl3x/purpur/PurpurWorldConfig.java @@ -202,6 +202,7 @@ public class PurpurWorldConfig { @@ -114,7 +114,7 @@ index b01c7018ba..6bf867483c 100644 public boolean catSpawning; diff --git a/src/main/java/net/pl3x/purpur/command/PurpurCommand.java b/src/main/java/net/pl3x/purpur/command/PurpurCommand.java -index 4904be939c..860d07cd68 100644 +index 4904be939..860d07cd6 100644 --- a/src/main/java/net/pl3x/purpur/command/PurpurCommand.java +++ b/src/main/java/net/pl3x/purpur/command/PurpurCommand.java @@ -49,6 +49,7 @@ public class PurpurCommand extends Command { diff --git a/patches/server/0136-Make-animal-breeding-times-configurable.patch b/patches/server/0135-Make-animal-breeding-times-configurable.patch similarity index 94% rename from patches/server/0136-Make-animal-breeding-times-configurable.patch rename to patches/server/0135-Make-animal-breeding-times-configurable.patch index 75983dcde..efd716cfd 100644 --- a/patches/server/0136-Make-animal-breeding-times-configurable.patch +++ b/patches/server/0135-Make-animal-breeding-times-configurable.patch @@ -5,7 +5,7 @@ Subject: [PATCH] Make animal breeding times configurable diff --git a/src/main/java/net/minecraft/server/EntityAnimal.java b/src/main/java/net/minecraft/server/EntityAnimal.java -index d9f9e2235d..dd6725debe 100644 +index d9f9e2235..dd6725deb 100644 --- a/src/main/java/net/minecraft/server/EntityAnimal.java +++ b/src/main/java/net/minecraft/server/EntityAnimal.java @@ -13,6 +13,7 @@ public abstract class EntityAnimal extends EntityAgeable { @@ -30,7 +30,7 @@ index d9f9e2235d..dd6725debe 100644 entityanimal.resetLove(); entityageable.setBaby(true); diff --git a/src/main/java/net/minecraft/server/EntityBee.java b/src/main/java/net/minecraft/server/EntityBee.java -index d8354ec4d1..ded4e10f50 100644 +index d8354ec4d..ded4e10f5 100644 --- a/src/main/java/net/minecraft/server/EntityBee.java +++ b/src/main/java/net/minecraft/server/EntityBee.java @@ -100,6 +100,11 @@ public class EntityBee extends EntityAnimal implements IEntityAngerable, EntityB @@ -46,7 +46,7 @@ index d8354ec4d1..ded4e10f50 100644 @Override diff --git a/src/main/java/net/minecraft/server/EntityCat.java b/src/main/java/net/minecraft/server/EntityCat.java -index 05929d5c53..a6ce4ca27c 100644 +index 05929d5c5..a6ce4ca27 100644 --- a/src/main/java/net/minecraft/server/EntityCat.java +++ b/src/main/java/net/minecraft/server/EntityCat.java @@ -58,6 +58,11 @@ public class EntityCat extends EntityTameableAnimal { @@ -62,7 +62,7 @@ index 05929d5c53..a6ce4ca27c 100644 public MinecraftKey eU() { diff --git a/src/main/java/net/minecraft/server/EntityChicken.java b/src/main/java/net/minecraft/server/EntityChicken.java -index a16ecd7edc..26f7833496 100644 +index a16ecd7ed..26f783349 100644 --- a/src/main/java/net/minecraft/server/EntityChicken.java +++ b/src/main/java/net/minecraft/server/EntityChicken.java @@ -36,6 +36,11 @@ public class EntityChicken extends EntityAnimal { @@ -78,7 +78,7 @@ index a16ecd7edc..26f7833496 100644 @Override diff --git a/src/main/java/net/minecraft/server/EntityCow.java b/src/main/java/net/minecraft/server/EntityCow.java -index 1219b0aa9c..63497ca026 100644 +index 1219b0aa9..63497ca02 100644 --- a/src/main/java/net/minecraft/server/EntityCow.java +++ b/src/main/java/net/minecraft/server/EntityCow.java @@ -21,6 +21,11 @@ public class EntityCow extends EntityAnimal { @@ -94,7 +94,7 @@ index 1219b0aa9c..63497ca026 100644 @Override diff --git a/src/main/java/net/minecraft/server/EntityFox.java b/src/main/java/net/minecraft/server/EntityFox.java -index f5defe4713..e87f5aeb97 100644 +index f5defe471..e87f5aeb9 100644 --- a/src/main/java/net/minecraft/server/EntityFox.java +++ b/src/main/java/net/minecraft/server/EntityFox.java @@ -86,6 +86,11 @@ public class EntityFox extends EntityAnimal { @@ -110,7 +110,7 @@ index f5defe4713..e87f5aeb97 100644 @Override diff --git a/src/main/java/net/minecraft/server/EntityHoglin.java b/src/main/java/net/minecraft/server/EntityHoglin.java -index 548ff4449f..a1578aade4 100644 +index 548ff4449..a1578aade 100644 --- a/src/main/java/net/minecraft/server/EntityHoglin.java +++ b/src/main/java/net/minecraft/server/EntityHoglin.java @@ -30,6 +30,11 @@ public class EntityHoglin extends EntityAnimal implements IMonster, IOglin { @@ -126,7 +126,7 @@ index 548ff4449f..a1578aade4 100644 @Override diff --git a/src/main/java/net/minecraft/server/EntityHorse.java b/src/main/java/net/minecraft/server/EntityHorse.java -index 0415a4d1f3..b19995f962 100644 +index 0415a4d1f..b19995f96 100644 --- a/src/main/java/net/minecraft/server/EntityHorse.java +++ b/src/main/java/net/minecraft/server/EntityHorse.java @@ -17,6 +17,11 @@ public class EntityHorse extends EntityHorseAbstract { @@ -142,7 +142,7 @@ index 0415a4d1f3..b19995f962 100644 @Override diff --git a/src/main/java/net/minecraft/server/EntityHorseDonkey.java b/src/main/java/net/minecraft/server/EntityHorseDonkey.java -index cb8aee5691..f6421bb45c 100644 +index cb8aee569..f6421bb45 100644 --- a/src/main/java/net/minecraft/server/EntityHorseDonkey.java +++ b/src/main/java/net/minecraft/server/EntityHorseDonkey.java @@ -13,6 +13,11 @@ public class EntityHorseDonkey extends EntityHorseChestedAbstract { @@ -158,7 +158,7 @@ index cb8aee5691..f6421bb45c 100644 @Override diff --git a/src/main/java/net/minecraft/server/EntityHorseMule.java b/src/main/java/net/minecraft/server/EntityHorseMule.java -index 243aeb736e..30cbc505d2 100644 +index 243aeb736..30cbc505d 100644 --- a/src/main/java/net/minecraft/server/EntityHorseMule.java +++ b/src/main/java/net/minecraft/server/EntityHorseMule.java @@ -13,6 +13,11 @@ public class EntityHorseMule extends EntityHorseChestedAbstract { @@ -174,7 +174,7 @@ index 243aeb736e..30cbc505d2 100644 @Override protected SoundEffect getSoundAmbient() { diff --git a/src/main/java/net/minecraft/server/EntityHorseSkeleton.java b/src/main/java/net/minecraft/server/EntityHorseSkeleton.java -index e2c6a5807a..408db52cac 100644 +index e2c6a5807..408db52ca 100644 --- a/src/main/java/net/minecraft/server/EntityHorseSkeleton.java +++ b/src/main/java/net/minecraft/server/EntityHorseSkeleton.java @@ -22,6 +22,11 @@ public class EntityHorseSkeleton extends EntityHorseAbstract { @@ -190,7 +190,7 @@ index e2c6a5807a..408db52cac 100644 public static AttributeProvider.Builder eL() { diff --git a/src/main/java/net/minecraft/server/EntityHorseZombie.java b/src/main/java/net/minecraft/server/EntityHorseZombie.java -index 559ba50977..2121a6c979 100644 +index 559ba5097..2121a6c97 100644 --- a/src/main/java/net/minecraft/server/EntityHorseZombie.java +++ b/src/main/java/net/minecraft/server/EntityHorseZombie.java @@ -18,6 +18,11 @@ public class EntityHorseZombie extends EntityHorseAbstract { @@ -206,7 +206,7 @@ index 559ba50977..2121a6c979 100644 public static AttributeProvider.Builder eL() { diff --git a/src/main/java/net/minecraft/server/EntityLlama.java b/src/main/java/net/minecraft/server/EntityLlama.java -index 1099277868..3bc6e6df9e 100644 +index 109927786..3bc6e6df9 100644 --- a/src/main/java/net/minecraft/server/EntityLlama.java +++ b/src/main/java/net/minecraft/server/EntityLlama.java @@ -57,6 +57,11 @@ public class EntityLlama extends EntityHorseChestedAbstract implements IRangedEn @@ -222,7 +222,7 @@ index 1099277868..3bc6e6df9e 100644 public void setStrength(int i) { diff --git a/src/main/java/net/minecraft/server/EntityMushroomCow.java b/src/main/java/net/minecraft/server/EntityMushroomCow.java -index 7966b34f8d..eb1f95d8ba 100644 +index 7966b34f8..eb1f95d8b 100644 --- a/src/main/java/net/minecraft/server/EntityMushroomCow.java +++ b/src/main/java/net/minecraft/server/EntityMushroomCow.java @@ -30,6 +30,11 @@ public class EntityMushroomCow extends EntityCow implements IShearable { @@ -238,7 +238,7 @@ index 7966b34f8d..eb1f95d8ba 100644 @Override diff --git a/src/main/java/net/minecraft/server/EntityOcelot.java b/src/main/java/net/minecraft/server/EntityOcelot.java -index 2f8275cd6b..a5be10dfb0 100644 +index 2f8275cd6..a5be10dfb 100644 --- a/src/main/java/net/minecraft/server/EntityOcelot.java +++ b/src/main/java/net/minecraft/server/EntityOcelot.java @@ -26,6 +26,11 @@ public class EntityOcelot extends EntityAnimal { @@ -254,7 +254,7 @@ index 2f8275cd6b..a5be10dfb0 100644 private boolean isTrusting() { diff --git a/src/main/java/net/minecraft/server/EntityPanda.java b/src/main/java/net/minecraft/server/EntityPanda.java -index eafae5516b..c70180fddb 100644 +index eafae5516..c70180fdd 100644 --- a/src/main/java/net/minecraft/server/EntityPanda.java +++ b/src/main/java/net/minecraft/server/EntityPanda.java @@ -65,6 +65,11 @@ public class EntityPanda extends EntityAnimal { @@ -270,7 +270,7 @@ index eafae5516b..c70180fddb 100644 @Override diff --git a/src/main/java/net/minecraft/server/EntityParrot.java b/src/main/java/net/minecraft/server/EntityParrot.java -index e402d4a77b..398e92bf70 100644 +index e402d4a77..398e92bf7 100644 --- a/src/main/java/net/minecraft/server/EntityParrot.java +++ b/src/main/java/net/minecraft/server/EntityParrot.java @@ -115,6 +115,11 @@ public class EntityParrot extends EntityPerchable implements EntityBird { @@ -286,7 +286,7 @@ index e402d4a77b..398e92bf70 100644 @Nullable diff --git a/src/main/java/net/minecraft/server/EntityPig.java b/src/main/java/net/minecraft/server/EntityPig.java -index dade0bb294..7172e8cabf 100644 +index dade0bb29..7172e8cab 100644 --- a/src/main/java/net/minecraft/server/EntityPig.java +++ b/src/main/java/net/minecraft/server/EntityPig.java @@ -29,6 +29,11 @@ public class EntityPig extends EntityAnimal implements ISteerable, ISaddleable { @@ -302,7 +302,7 @@ index dade0bb294..7172e8cabf 100644 @Override diff --git a/src/main/java/net/minecraft/server/EntityPolarBear.java b/src/main/java/net/minecraft/server/EntityPolarBear.java -index 3d649843f5..40395dd7ea 100644 +index 3d649843f..40395dd7e 100644 --- a/src/main/java/net/minecraft/server/EntityPolarBear.java +++ b/src/main/java/net/minecraft/server/EntityPolarBear.java @@ -67,6 +67,11 @@ public class EntityPolarBear extends EntityAnimal implements IEntityAngerable { @@ -318,7 +318,7 @@ index 3d649843f5..40395dd7ea 100644 @Override diff --git a/src/main/java/net/minecraft/server/EntityRabbit.java b/src/main/java/net/minecraft/server/EntityRabbit.java -index b766a27e98..654cd036a8 100644 +index b766a27e9..654cd036a 100644 --- a/src/main/java/net/minecraft/server/EntityRabbit.java +++ b/src/main/java/net/minecraft/server/EntityRabbit.java @@ -30,6 +30,11 @@ public class EntityRabbit extends EntityAnimal { @@ -334,7 +334,7 @@ index b766a27e98..654cd036a8 100644 // CraftBukkit start - code from constructor diff --git a/src/main/java/net/minecraft/server/EntitySheep.java b/src/main/java/net/minecraft/server/EntitySheep.java -index a151d4295c..32130c0681 100644 +index a151d4295..32130c068 100644 --- a/src/main/java/net/minecraft/server/EntitySheep.java +++ b/src/main/java/net/minecraft/server/EntitySheep.java @@ -66,6 +66,11 @@ public class EntitySheep extends EntityAnimal implements IShearable { @@ -350,7 +350,7 @@ index a151d4295c..32130c0681 100644 @Override diff --git a/src/main/java/net/minecraft/server/EntityStrider.java b/src/main/java/net/minecraft/server/EntityStrider.java -index 172867f50d..9ab1b5af68 100644 +index 172867f50..9ab1b5af6 100644 --- a/src/main/java/net/minecraft/server/EntityStrider.java +++ b/src/main/java/net/minecraft/server/EntityStrider.java @@ -38,6 +38,11 @@ public class EntityStrider extends EntityAnimal implements ISteerable, ISaddleab @@ -366,7 +366,7 @@ index 172867f50d..9ab1b5af68 100644 public static boolean c(EntityTypes entitytypes, GeneratorAccess generatoraccess, EnumMobSpawn enummobspawn, BlockPosition blockposition, Random random) { diff --git a/src/main/java/net/minecraft/server/EntityTurtle.java b/src/main/java/net/minecraft/server/EntityTurtle.java -index 2b34e6cf3b..067f7f28b0 100644 +index 2b34e6cf3..067f7f28b 100644 --- a/src/main/java/net/minecraft/server/EntityTurtle.java +++ b/src/main/java/net/minecraft/server/EntityTurtle.java @@ -37,6 +37,11 @@ public class EntityTurtle extends EntityAnimal { @@ -382,7 +382,7 @@ index 2b34e6cf3b..067f7f28b0 100644 public void setHomePos(BlockPosition blockposition) { diff --git a/src/main/java/net/minecraft/server/EntityWolf.java b/src/main/java/net/minecraft/server/EntityWolf.java -index 9ae7168595..6c25f667ee 100644 +index 9ae716859..6c25f667e 100644 --- a/src/main/java/net/minecraft/server/EntityWolf.java +++ b/src/main/java/net/minecraft/server/EntityWolf.java @@ -48,6 +48,11 @@ public class EntityWolf extends EntityTameableAnimal implements IEntityAngerable @@ -398,7 +398,7 @@ index 9ae7168595..6c25f667ee 100644 @Override diff --git a/src/main/java/net/pl3x/purpur/PurpurWorldConfig.java b/src/main/java/net/pl3x/purpur/PurpurWorldConfig.java -index 6bf867483c..58a880f7cb 100644 +index a108545c7..992a0babb 100644 --- a/src/main/java/net/pl3x/purpur/PurpurWorldConfig.java +++ b/src/main/java/net/pl3x/purpur/PurpurWorldConfig.java @@ -423,10 +423,12 @@ public class PurpurWorldConfig { @@ -466,7 +466,7 @@ index 6bf867483c..58a880f7cb 100644 } public boolean drownedRidable = false; -@@ -569,10 +579,12 @@ public class PurpurWorldConfig { +@@ -567,10 +577,12 @@ public class PurpurWorldConfig { public boolean foxRidable = false; public boolean foxRidableInWater = false; public boolean foxTypeChangesWithTulips = false; @@ -479,7 +479,7 @@ index 6bf867483c..58a880f7cb 100644 } public boolean ghastRidable = false; -@@ -612,14 +624,18 @@ public class PurpurWorldConfig { +@@ -615,14 +627,18 @@ public class PurpurWorldConfig { public boolean hoglinRidable = false; public boolean hoglinRidableInWater = false; @@ -498,7 +498,7 @@ index 6bf867483c..58a880f7cb 100644 } public boolean huskRidable = false; -@@ -659,9 +675,11 @@ public class PurpurWorldConfig { +@@ -667,9 +683,11 @@ public class PurpurWorldConfig { public boolean llamaRidable = false; public boolean llamaRidableInWater = false; @@ -510,7 +510,7 @@ index 6bf867483c..58a880f7cb 100644 } public boolean llamaTraderRidable = false; -@@ -680,28 +698,36 @@ public class PurpurWorldConfig { +@@ -688,28 +706,36 @@ public class PurpurWorldConfig { public boolean mooshroomRidable = false; public boolean mooshroomRidableInWater = false; @@ -547,7 +547,7 @@ index 6bf867483c..58a880f7cb 100644 } public boolean parrotRidable = false; -@@ -765,10 +791,12 @@ public class PurpurWorldConfig { +@@ -773,10 +799,12 @@ public class PurpurWorldConfig { public boolean pigRidable = false; public boolean pigRidableInWater = false; public boolean pigGiveSaddleBack = false; @@ -560,7 +560,7 @@ index 6bf867483c..58a880f7cb 100644 } public boolean piglinRidable = false; -@@ -796,12 +824,14 @@ public class PurpurWorldConfig { +@@ -804,12 +832,14 @@ public class PurpurWorldConfig { public boolean polarBearRidableInWater = false; public String polarBearBreedableItemString = ""; public Item polarBearBreedableItem = null; @@ -575,7 +575,7 @@ index 6bf867483c..58a880f7cb 100644 } public boolean pufferfishRidable = false; -@@ -813,11 +843,13 @@ public class PurpurWorldConfig { +@@ -821,11 +851,13 @@ public class PurpurWorldConfig { public boolean rabbitRidableInWater = false; public double rabbitNaturalToast = 0.0D; public double rabbitNaturalKiller = 0.0D; @@ -589,7 +589,7 @@ index 6bf867483c..58a880f7cb 100644 } public boolean ravagerRidable = false; -@@ -834,9 +866,11 @@ public class PurpurWorldConfig { +@@ -842,9 +874,11 @@ public class PurpurWorldConfig { public boolean sheepRidable = false; public boolean sheepRidableInWater = false; @@ -601,7 +601,7 @@ index 6bf867483c..58a880f7cb 100644 } public boolean shulkerRidable = false; -@@ -914,9 +948,11 @@ public class PurpurWorldConfig { +@@ -922,9 +956,11 @@ public class PurpurWorldConfig { public boolean striderRidable = false; public boolean striderRidableInWater = false; @@ -613,7 +613,7 @@ index 6bf867483c..58a880f7cb 100644 } public boolean tropicalFishRidable = false; -@@ -926,9 +962,11 @@ public class PurpurWorldConfig { +@@ -934,9 +970,11 @@ public class PurpurWorldConfig { public boolean turtleRidable = false; public boolean turtleRidableInWater = false; @@ -625,7 +625,7 @@ index 6bf867483c..58a880f7cb 100644 } public boolean vexRidable = false; -@@ -1016,9 +1054,11 @@ public class PurpurWorldConfig { +@@ -1029,9 +1067,11 @@ public class PurpurWorldConfig { public boolean wolfRidable = false; public boolean wolfRidableInWater = false; diff --git a/patches/server/0137-Apply-display-names-from-item-forms-of-entities-to-e.patch b/patches/server/0136-Apply-display-names-from-item-forms-of-entities-to-e.patch similarity index 97% rename from patches/server/0137-Apply-display-names-from-item-forms-of-entities-to-e.patch rename to patches/server/0136-Apply-display-names-from-item-forms-of-entities-to-e.patch index 5f149decc..17a176e77 100644 --- a/patches/server/0137-Apply-display-names-from-item-forms-of-entities-to-e.patch +++ b/patches/server/0136-Apply-display-names-from-item-forms-of-entities-to-e.patch @@ -6,7 +6,7 @@ Subject: [PATCH] Apply display names from item forms of entities to entities diff --git a/src/main/java/net/minecraft/server/EntityArmorStand.java b/src/main/java/net/minecraft/server/EntityArmorStand.java -index df3fc83029..a75de169fe 100644 +index df3fc8302..a75de169f 100644 --- a/src/main/java/net/minecraft/server/EntityArmorStand.java +++ b/src/main/java/net/minecraft/server/EntityArmorStand.java @@ -546,7 +546,13 @@ public class EntityArmorStand extends EntityLiving { @@ -25,7 +25,7 @@ index df3fc83029..a75de169fe 100644 } diff --git a/src/main/java/net/minecraft/server/EntityBoat.java b/src/main/java/net/minecraft/server/EntityBoat.java -index d53bbe3169..bc558c54c9 100644 +index d53bbe316..bc558c54c 100644 --- a/src/main/java/net/minecraft/server/EntityBoat.java +++ b/src/main/java/net/minecraft/server/EntityBoat.java @@ -155,7 +155,13 @@ public class EntityBoat extends Entity { @@ -52,7 +52,7 @@ index d53bbe3169..bc558c54c9 100644 switch (this.getType()) { case OAK: diff --git a/src/main/java/net/minecraft/server/EntityInsentient.java b/src/main/java/net/minecraft/server/EntityInsentient.java -index 80589799ab..2fef696732 100644 +index 80589799a..2fef69673 100644 --- a/src/main/java/net/minecraft/server/EntityInsentient.java +++ b/src/main/java/net/minecraft/server/EntityInsentient.java @@ -1368,7 +1368,13 @@ public abstract class EntityInsentient extends EntityLiving { @@ -86,7 +86,7 @@ index 80589799ab..2fef696732 100644 } } diff --git a/src/main/java/net/minecraft/server/EntityItemFrame.java b/src/main/java/net/minecraft/server/EntityItemFrame.java -index 16c8f2cdf7..19460d8856 100644 +index 16c8f2cdf..19460d885 100644 --- a/src/main/java/net/minecraft/server/EntityItemFrame.java +++ b/src/main/java/net/minecraft/server/EntityItemFrame.java @@ -199,7 +199,13 @@ public class EntityItemFrame extends EntityHanging { @@ -105,7 +105,7 @@ index 16c8f2cdf7..19460d8856 100644 if (!itemstack.isEmpty()) { diff --git a/src/main/java/net/minecraft/server/EntityPainting.java b/src/main/java/net/minecraft/server/EntityPainting.java -index 4b7cd7c59f..d01fc8b110 100644 +index 4b7cd7c59..d01fc8b11 100644 --- a/src/main/java/net/minecraft/server/EntityPainting.java +++ b/src/main/java/net/minecraft/server/EntityPainting.java @@ -92,7 +92,13 @@ public class EntityPainting extends EntityHanging { @@ -124,7 +124,7 @@ index 4b7cd7c59f..d01fc8b110 100644 } diff --git a/src/main/java/net/minecraft/server/ItemArmorStand.java b/src/main/java/net/minecraft/server/ItemArmorStand.java -index c9a5d3b583..315faee9e3 100644 +index c9a5d3b58..315faee9e 100644 --- a/src/main/java/net/minecraft/server/ItemArmorStand.java +++ b/src/main/java/net/minecraft/server/ItemArmorStand.java @@ -43,6 +43,14 @@ public class ItemArmorStand extends Item { @@ -143,7 +143,7 @@ index c9a5d3b583..315faee9e3 100644 world.playSound((EntityHuman) null, entityarmorstand.locX(), entityarmorstand.locY(), entityarmorstand.locZ(), SoundEffects.ENTITY_ARMOR_STAND_PLACE, SoundCategory.BLOCKS, 0.75F, 0.8F); } diff --git a/src/main/java/net/minecraft/server/ItemBoat.java b/src/main/java/net/minecraft/server/ItemBoat.java -index 0580ce55ec..6183da7ad2 100644 +index 0580ce55e..6183da7ad 100644 --- a/src/main/java/net/minecraft/server/ItemBoat.java +++ b/src/main/java/net/minecraft/server/ItemBoat.java @@ -52,6 +52,11 @@ public class ItemBoat extends Item { @@ -159,7 +159,7 @@ index 0580ce55ec..6183da7ad2 100644 return InteractionResultWrapper.fail(itemstack); } else { diff --git a/src/main/java/net/minecraft/server/ItemHanging.java b/src/main/java/net/minecraft/server/ItemHanging.java -index a3eaeeda87..f2f800087a 100644 +index a3eaeeda8..f2f800087 100644 --- a/src/main/java/net/minecraft/server/ItemHanging.java +++ b/src/main/java/net/minecraft/server/ItemHanging.java @@ -26,7 +26,7 @@ public class ItemHanging extends Item { @@ -184,7 +184,7 @@ index a3eaeeda87..f2f800087a 100644 if (((EntityHanging) object).survives()) { diff --git a/src/main/java/net/minecraft/server/ItemStack.java b/src/main/java/net/minecraft/server/ItemStack.java -index 40f553e395..7161eba52e 100644 +index 40f553e39..7161eba52 100644 --- a/src/main/java/net/minecraft/server/ItemStack.java +++ b/src/main/java/net/minecraft/server/ItemStack.java @@ -738,6 +738,7 @@ public final class ItemStack { @@ -196,7 +196,7 @@ index 40f553e395..7161eba52e 100644 NBTTagCompound nbttagcompound = this.a("display"); diff --git a/src/main/java/net/pl3x/purpur/PurpurWorldConfig.java b/src/main/java/net/pl3x/purpur/PurpurWorldConfig.java -index 58a880f7cb..8525741575 100644 +index 992a0babb..af3f910e6 100644 --- a/src/main/java/net/pl3x/purpur/PurpurWorldConfig.java +++ b/src/main/java/net/pl3x/purpur/PurpurWorldConfig.java @@ -83,8 +83,10 @@ public class PurpurWorldConfig { diff --git a/patches/server/0138-Set-name-visible-when-using-a-Name-Tag-on-an-Armor-S.patch b/patches/server/0137-Set-name-visible-when-using-a-Name-Tag-on-an-Armor-S.patch similarity index 96% rename from patches/server/0138-Set-name-visible-when-using-a-Name-Tag-on-an-Armor-S.patch rename to patches/server/0137-Set-name-visible-when-using-a-Name-Tag-on-an-Armor-S.patch index a503a9fab..5ae4ead76 100644 --- a/patches/server/0138-Set-name-visible-when-using-a-Name-Tag-on-an-Armor-S.patch +++ b/patches/server/0137-Set-name-visible-when-using-a-Name-Tag-on-an-Armor-S.patch @@ -5,7 +5,7 @@ Subject: [PATCH] Set name visible when using a Name Tag on an Armor Stand diff --git a/src/main/java/net/minecraft/server/ItemNameTag.java b/src/main/java/net/minecraft/server/ItemNameTag.java -index 01163ce386..a7efce9731 100644 +index 01163ce38..a7efce973 100644 --- a/src/main/java/net/minecraft/server/ItemNameTag.java +++ b/src/main/java/net/minecraft/server/ItemNameTag.java @@ -11,6 +11,11 @@ public class ItemNameTag extends Item { @@ -21,7 +21,7 @@ index 01163ce386..a7efce9731 100644 ((EntityInsentient) entityliving).setPersistent(); } diff --git a/src/main/java/net/pl3x/purpur/PurpurWorldConfig.java b/src/main/java/net/pl3x/purpur/PurpurWorldConfig.java -index 8525741575..b7fe9865d5 100644 +index af3f910e6..a77debc7a 100644 --- a/src/main/java/net/pl3x/purpur/PurpurWorldConfig.java +++ b/src/main/java/net/pl3x/purpur/PurpurWorldConfig.java @@ -84,9 +84,11 @@ public class PurpurWorldConfig { diff --git a/patches/server/0139-Add-twisting-and-weeping-vines-growth-rates.patch b/patches/server/0138-Add-twisting-and-weeping-vines-growth-rates.patch similarity index 95% rename from patches/server/0139-Add-twisting-and-weeping-vines-growth-rates.patch rename to patches/server/0138-Add-twisting-and-weeping-vines-growth-rates.patch index bf10cdcf4..c0d4a64c0 100644 --- a/patches/server/0139-Add-twisting-and-weeping-vines-growth-rates.patch +++ b/patches/server/0138-Add-twisting-and-weeping-vines-growth-rates.patch @@ -5,7 +5,7 @@ Subject: [PATCH] Add twisting and weeping vines growth rates diff --git a/src/main/java/net/minecraft/server/BlockGrowingTop.java b/src/main/java/net/minecraft/server/BlockGrowingTop.java -index 7963411be9..6c084ad5cd 100644 +index 7963411be..6c084ad5c 100644 --- a/src/main/java/net/minecraft/server/BlockGrowingTop.java +++ b/src/main/java/net/minecraft/server/BlockGrowingTop.java @@ -23,9 +23,11 @@ public abstract class BlockGrowingTop extends BlockGrowingAbstract implements IB @@ -22,7 +22,7 @@ index 7963411be9..6c084ad5cd 100644 if (this.h(worldserver.getType(blockposition1))) { diff --git a/src/main/java/net/minecraft/server/BlockKelp.java b/src/main/java/net/minecraft/server/BlockKelp.java -index a243aaed58..2a7a6e5943 100644 +index a243aaed5..2a7a6e594 100644 --- a/src/main/java/net/minecraft/server/BlockKelp.java +++ b/src/main/java/net/minecraft/server/BlockKelp.java @@ -53,4 +53,10 @@ public class BlockKelp extends BlockGrowingTop implements IFluidContainer { @@ -37,7 +37,7 @@ index a243aaed58..2a7a6e5943 100644 + // Purpur end } diff --git a/src/main/java/net/minecraft/server/BlockTwistingVines.java b/src/main/java/net/minecraft/server/BlockTwistingVines.java -index be38167463..146638111c 100644 +index be3816746..146638111 100644 --- a/src/main/java/net/minecraft/server/BlockTwistingVines.java +++ b/src/main/java/net/minecraft/server/BlockTwistingVines.java @@ -24,4 +24,10 @@ public class BlockTwistingVines extends BlockGrowingTop { @@ -52,7 +52,7 @@ index be38167463..146638111c 100644 + // Purpur end } diff --git a/src/main/java/net/minecraft/server/BlockWeepingVines.java b/src/main/java/net/minecraft/server/BlockWeepingVines.java -index 23dca19403..94ffadb91f 100644 +index 23dca1940..94ffadb91 100644 --- a/src/main/java/net/minecraft/server/BlockWeepingVines.java +++ b/src/main/java/net/minecraft/server/BlockWeepingVines.java @@ -24,4 +24,10 @@ public class BlockWeepingVines extends BlockGrowingTop { @@ -67,7 +67,7 @@ index 23dca19403..94ffadb91f 100644 + // Purpur end } diff --git a/src/main/java/net/pl3x/purpur/PurpurWorldConfig.java b/src/main/java/net/pl3x/purpur/PurpurWorldConfig.java -index b7fe9865d5..7d4e84bb85 100644 +index a77debc7a..a7eb31a3e 100644 --- a/src/main/java/net/pl3x/purpur/PurpurWorldConfig.java +++ b/src/main/java/net/pl3x/purpur/PurpurWorldConfig.java @@ -408,6 +408,16 @@ public class PurpurWorldConfig { diff --git a/patches/server/0140-Kelp-weeping-and-twisting-vines-configurable-max-gro.patch b/patches/server/0139-Kelp-weeping-and-twisting-vines-configurable-max-gro.patch similarity index 97% rename from patches/server/0140-Kelp-weeping-and-twisting-vines-configurable-max-gro.patch rename to patches/server/0139-Kelp-weeping-and-twisting-vines-configurable-max-gro.patch index 68809e7dc..0aecb06c8 100644 --- a/patches/server/0140-Kelp-weeping-and-twisting-vines-configurable-max-gro.patch +++ b/patches/server/0139-Kelp-weeping-and-twisting-vines-configurable-max-gro.patch @@ -5,7 +5,7 @@ Subject: [PATCH] Kelp weeping and twisting vines configurable max growth age diff --git a/src/main/java/net/minecraft/server/BlockGrowingTop.java b/src/main/java/net/minecraft/server/BlockGrowingTop.java -index 6c084ad5cd..6d49422c33 100644 +index 6c084ad5c..6d49422c3 100644 --- a/src/main/java/net/minecraft/server/BlockGrowingTop.java +++ b/src/main/java/net/minecraft/server/BlockGrowingTop.java @@ -15,7 +15,7 @@ public abstract class BlockGrowingTop extends BlockGrowingAbstract implements IB @@ -47,7 +47,7 @@ index 6c084ad5cd..6d49422c33 100644 } diff --git a/src/main/java/net/minecraft/server/BlockKelp.java b/src/main/java/net/minecraft/server/BlockKelp.java -index 2a7a6e5943..b35c115e34 100644 +index 2a7a6e594..b35c115e3 100644 --- a/src/main/java/net/minecraft/server/BlockKelp.java +++ b/src/main/java/net/minecraft/server/BlockKelp.java @@ -58,5 +58,9 @@ public class BlockKelp extends BlockGrowingTop implements IFluidContainer { @@ -61,7 +61,7 @@ index 2a7a6e5943..b35c115e34 100644 // Purpur end } diff --git a/src/main/java/net/minecraft/server/BlockTwistingVines.java b/src/main/java/net/minecraft/server/BlockTwistingVines.java -index 146638111c..71b9b7183d 100644 +index 146638111..71b9b7183 100644 --- a/src/main/java/net/minecraft/server/BlockTwistingVines.java +++ b/src/main/java/net/minecraft/server/BlockTwistingVines.java @@ -29,5 +29,9 @@ public class BlockTwistingVines extends BlockGrowingTop { @@ -75,7 +75,7 @@ index 146638111c..71b9b7183d 100644 // Purpur end } diff --git a/src/main/java/net/minecraft/server/BlockWeepingVines.java b/src/main/java/net/minecraft/server/BlockWeepingVines.java -index 94ffadb91f..067df63ab2 100644 +index 94ffadb91..067df63ab 100644 --- a/src/main/java/net/minecraft/server/BlockWeepingVines.java +++ b/src/main/java/net/minecraft/server/BlockWeepingVines.java @@ -29,5 +29,9 @@ public class BlockWeepingVines extends BlockGrowingTop { @@ -89,7 +89,7 @@ index 94ffadb91f..067df63ab2 100644 // Purpur end } diff --git a/src/main/java/net/pl3x/purpur/PurpurWorldConfig.java b/src/main/java/net/pl3x/purpur/PurpurWorldConfig.java -index 7d4e84bb85..3ed6fbed70 100644 +index a7eb31a3e..9b91ae118 100644 --- a/src/main/java/net/pl3x/purpur/PurpurWorldConfig.java +++ b/src/main/java/net/pl3x/purpur/PurpurWorldConfig.java @@ -355,6 +355,11 @@ public class PurpurWorldConfig { diff --git a/patches/server/0141-Add-config-for-allowing-Endermen-to-despawn-even-whi.patch b/patches/server/0140-Add-config-for-allowing-Endermen-to-despawn-even-whi.patch similarity index 94% rename from patches/server/0141-Add-config-for-allowing-Endermen-to-despawn-even-whi.patch rename to patches/server/0140-Add-config-for-allowing-Endermen-to-despawn-even-whi.patch index 8289d7a55..16d582a79 100644 --- a/patches/server/0141-Add-config-for-allowing-Endermen-to-despawn-even-whi.patch +++ b/patches/server/0140-Add-config-for-allowing-Endermen-to-despawn-even-whi.patch @@ -8,7 +8,7 @@ This should help to reduce the amount of dirt, gravel, grass, and etc. that Endermen like to randomly place all over the world. diff --git a/src/main/java/net/minecraft/server/EntityEnderman.java b/src/main/java/net/minecraft/server/EntityEnderman.java -index 995849212c..acb2b3ed04 100644 +index 995849212..acb2b3ed0 100644 --- a/src/main/java/net/minecraft/server/EntityEnderman.java +++ b/src/main/java/net/minecraft/server/EntityEnderman.java @@ -372,7 +372,7 @@ public class EntityEnderman extends EntityMonster implements IEntityAngerable { @@ -21,10 +21,10 @@ index 995849212c..acb2b3ed04 100644 static class PathfinderGoalEndermanPickupBlock extends PathfinderGoal { diff --git a/src/main/java/net/pl3x/purpur/PurpurWorldConfig.java b/src/main/java/net/pl3x/purpur/PurpurWorldConfig.java -index 3ed6fbed70..8f0be34937 100644 +index 9b91ae118..d14a4955e 100644 --- a/src/main/java/net/pl3x/purpur/PurpurWorldConfig.java +++ b/src/main/java/net/pl3x/purpur/PurpurWorldConfig.java -@@ -581,10 +581,12 @@ public class PurpurWorldConfig { +@@ -579,10 +579,12 @@ public class PurpurWorldConfig { public boolean endermanRidable = false; public boolean endermanRidableInWater = false; public boolean endermanAllowGriefing = true; diff --git a/patches/server/0142-Add-critical-hit-check-to-EntityDamagedByEntityEvent.patch b/patches/server/0141-Add-critical-hit-check-to-EntityDamagedByEntityEvent.patch similarity index 97% rename from patches/server/0142-Add-critical-hit-check-to-EntityDamagedByEntityEvent.patch rename to patches/server/0141-Add-critical-hit-check-to-EntityDamagedByEntityEvent.patch index f86c0d085..68ba192d5 100644 --- a/patches/server/0142-Add-critical-hit-check-to-EntityDamagedByEntityEvent.patch +++ b/patches/server/0141-Add-critical-hit-check-to-EntityDamagedByEntityEvent.patch @@ -5,7 +5,7 @@ Subject: [PATCH] Add critical hit check to EntityDamagedByEntityEvent diff --git a/src/main/java/net/minecraft/server/EntityHuman.java b/src/main/java/net/minecraft/server/EntityHuman.java -index deb6c93426..84e500fa7f 100644 +index deb6c9342..84e500fa7 100644 --- a/src/main/java/net/minecraft/server/EntityHuman.java +++ b/src/main/java/net/minecraft/server/EntityHuman.java @@ -73,6 +73,7 @@ public abstract class EntityHuman extends EntityLiving { @@ -33,7 +33,7 @@ index deb6c93426..84e500fa7f 100644 if (flag5) { if (i > 0) { diff --git a/src/main/java/org/bukkit/craftbukkit/event/CraftEventFactory.java b/src/main/java/org/bukkit/craftbukkit/event/CraftEventFactory.java -index a17f449b54..110db570c8 100644 +index a17f449b5..110db570c 100644 --- a/src/main/java/org/bukkit/craftbukkit/event/CraftEventFactory.java +++ b/src/main/java/org/bukkit/craftbukkit/event/CraftEventFactory.java @@ -1048,7 +1048,7 @@ public class CraftEventFactory { diff --git a/patches/server/0143-Add-configurable-snowball-damage.patch b/patches/server/0142-Add-configurable-snowball-damage.patch similarity index 96% rename from patches/server/0143-Add-configurable-snowball-damage.patch rename to patches/server/0142-Add-configurable-snowball-damage.patch index 4de090aa7..9b2932b90 100644 --- a/patches/server/0143-Add-configurable-snowball-damage.patch +++ b/patches/server/0142-Add-configurable-snowball-damage.patch @@ -5,7 +5,7 @@ Subject: [PATCH] Add configurable snowball damage diff --git a/src/main/java/net/minecraft/server/EntitySnowball.java b/src/main/java/net/minecraft/server/EntitySnowball.java -index 34a5f481e6..d7bab4446a 100644 +index 34a5f481e..d7bab4446 100644 --- a/src/main/java/net/minecraft/server/EntitySnowball.java +++ b/src/main/java/net/minecraft/server/EntitySnowball.java @@ -29,7 +29,7 @@ public class EntitySnowball extends EntityProjectileThrowable { @@ -18,7 +18,7 @@ index 34a5f481e6..d7bab4446a 100644 entity.damageEntity(DamageSource.projectile(this, this.getShooter()), (float) i); } diff --git a/src/main/java/net/pl3x/purpur/PurpurWorldConfig.java b/src/main/java/net/pl3x/purpur/PurpurWorldConfig.java -index 8f0be34937..8d4fc335b8 100644 +index d14a4955e..effcabfd6 100644 --- a/src/main/java/net/pl3x/purpur/PurpurWorldConfig.java +++ b/src/main/java/net/pl3x/purpur/PurpurWorldConfig.java @@ -196,6 +196,11 @@ public class PurpurWorldConfig { diff --git a/patches/server/0144-Zombie-break-door-minimum-difficulty-option.patch b/patches/server/0143-Zombie-break-door-minimum-difficulty-option.patch similarity index 95% rename from patches/server/0144-Zombie-break-door-minimum-difficulty-option.patch rename to patches/server/0143-Zombie-break-door-minimum-difficulty-option.patch index 1cde4efd4..d2d6d21ad 100644 --- a/patches/server/0144-Zombie-break-door-minimum-difficulty-option.patch +++ b/patches/server/0143-Zombie-break-door-minimum-difficulty-option.patch @@ -5,7 +5,7 @@ Subject: [PATCH] Zombie break door minimum difficulty option diff --git a/src/main/java/net/minecraft/server/PathfinderGoalBreakDoor.java b/src/main/java/net/minecraft/server/PathfinderGoalBreakDoor.java -index 7488a12926..23870a271b 100644 +index 7488a1292..23870a271 100644 --- a/src/main/java/net/minecraft/server/PathfinderGoalBreakDoor.java +++ b/src/main/java/net/minecraft/server/PathfinderGoalBreakDoor.java @@ -13,7 +13,7 @@ public class PathfinderGoalBreakDoor extends PathfinderGoalDoorInteract { @@ -40,7 +40,7 @@ index 7488a12926..23870a271b 100644 + // Purpur end } diff --git a/src/main/java/net/pl3x/purpur/PurpurWorldConfig.java b/src/main/java/net/pl3x/purpur/PurpurWorldConfig.java -index 8d4fc335b8..841f744395 100644 +index effcabfd6..ee7b5efcf 100644 --- a/src/main/java/net/pl3x/purpur/PurpurWorldConfig.java +++ b/src/main/java/net/pl3x/purpur/PurpurWorldConfig.java @@ -2,6 +2,7 @@ package net.pl3x.purpur; @@ -51,7 +51,7 @@ index 8d4fc335b8..841f744395 100644 import net.minecraft.server.Explosion; import net.minecraft.server.IRegistry; import net.minecraft.server.Item; -@@ -1106,6 +1107,7 @@ public class PurpurWorldConfig { +@@ -1119,6 +1120,7 @@ public class PurpurWorldConfig { public double zombieJockeyChance = 0.05D; public boolean zombieJockeyTryExistingChickens = true; public boolean zombieAggressiveTowardsVillagerWhenLagging = true; @@ -59,7 +59,7 @@ index 8d4fc335b8..841f744395 100644 private void zombieSettings() { zombieRidable = getBoolean("mobs.zombie.ridable", zombieRidable); zombieRidableInWater = getBoolean("mobs.zombie.ridable-in-water", zombieRidableInWater); -@@ -1113,6 +1115,11 @@ public class PurpurWorldConfig { +@@ -1126,6 +1128,11 @@ public class PurpurWorldConfig { zombieJockeyChance = getDouble("mobs.zombie.jockey.chance", zombieJockeyChance); zombieJockeyTryExistingChickens = getBoolean("mobs.zombie.jockey.try-existing-chickens", zombieJockeyTryExistingChickens); zombieAggressiveTowardsVillagerWhenLagging = getBoolean("mobs.zombie.aggressive-towards-villager-when-lagging", zombieAggressiveTowardsVillagerWhenLagging); diff --git a/patches/server/0145-Add-demo-command.patch b/patches/server/0144-Add-demo-command.patch similarity index 97% rename from patches/server/0145-Add-demo-command.patch rename to patches/server/0144-Add-demo-command.patch index 41d6144cb..420dc7c7c 100644 --- a/patches/server/0145-Add-demo-command.patch +++ b/patches/server/0144-Add-demo-command.patch @@ -5,7 +5,7 @@ Subject: [PATCH] Add demo command diff --git a/src/main/java/net/minecraft/server/CommandDispatcher.java b/src/main/java/net/minecraft/server/CommandDispatcher.java -index 1a13eb47e0..ccd0be059f 100644 +index 1a13eb47e..ccd0be059 100644 --- a/src/main/java/net/minecraft/server/CommandDispatcher.java +++ b/src/main/java/net/minecraft/server/CommandDispatcher.java @@ -107,6 +107,7 @@ public class CommandDispatcher { @@ -17,7 +17,7 @@ index 1a13eb47e0..ccd0be059f 100644 } diff --git a/src/main/java/net/minecraft/server/PacketPlayOutGameStateChange.java b/src/main/java/net/minecraft/server/PacketPlayOutGameStateChange.java -index 08cbc787e2..57d39ed441 100644 +index 08cbc787e..57d39ed44 100644 --- a/src/main/java/net/minecraft/server/PacketPlayOutGameStateChange.java +++ b/src/main/java/net/minecraft/server/PacketPlayOutGameStateChange.java @@ -11,7 +11,7 @@ public class PacketPlayOutGameStateChange implements Packet> { diff --git a/patches/server/0148-Changeable-Mob-Left-Handed-Chance.patch b/patches/server/0147-Changeable-Mob-Left-Handed-Chance.patch similarity index 96% rename from patches/server/0148-Changeable-Mob-Left-Handed-Chance.patch rename to patches/server/0147-Changeable-Mob-Left-Handed-Chance.patch index 00d9b1fae..bc2442022 100644 --- a/patches/server/0148-Changeable-Mob-Left-Handed-Chance.patch +++ b/patches/server/0147-Changeable-Mob-Left-Handed-Chance.patch @@ -5,7 +5,7 @@ Subject: [PATCH] Changeable Mob Left Handed Chance diff --git a/src/main/java/net/minecraft/server/EntityInsentient.java b/src/main/java/net/minecraft/server/EntityInsentient.java -index 2fef696732..e2d7c20e66 100644 +index 2fef69673..e2d7c20e6 100644 --- a/src/main/java/net/minecraft/server/EntityInsentient.java +++ b/src/main/java/net/minecraft/server/EntityInsentient.java @@ -1135,7 +1135,7 @@ public abstract class EntityInsentient extends EntityLiving { @@ -18,7 +18,7 @@ index 2fef696732..e2d7c20e66 100644 } else { this.setLeftHanded(false); diff --git a/src/main/java/net/pl3x/purpur/PurpurWorldConfig.java b/src/main/java/net/pl3x/purpur/PurpurWorldConfig.java -index 841f744395..673c2e5f18 100644 +index ee7b5efcf..090a8c681 100644 --- a/src/main/java/net/pl3x/purpur/PurpurWorldConfig.java +++ b/src/main/java/net/pl3x/purpur/PurpurWorldConfig.java @@ -129,8 +129,10 @@ public class PurpurWorldConfig { diff --git a/patches/server/0149-Add-boat-fall-damage-config.patch b/patches/server/0148-Add-boat-fall-damage-config.patch similarity index 97% rename from patches/server/0149-Add-boat-fall-damage-config.patch rename to patches/server/0148-Add-boat-fall-damage-config.patch index 53e74f7a0..48887253e 100644 --- a/patches/server/0149-Add-boat-fall-damage-config.patch +++ b/patches/server/0148-Add-boat-fall-damage-config.patch @@ -5,7 +5,7 @@ Subject: [PATCH] Add boat fall damage config diff --git a/src/main/java/net/minecraft/server/EntityPlayer.java b/src/main/java/net/minecraft/server/EntityPlayer.java -index 5dd2c4036e..50ea875a3b 100644 +index 5dd2c4036..50ea875a3 100644 --- a/src/main/java/net/minecraft/server/EntityPlayer.java +++ b/src/main/java/net/minecraft/server/EntityPlayer.java @@ -1017,7 +1017,16 @@ public class EntityPlayer extends EntityHuman implements ICrafting { @@ -27,7 +27,7 @@ index 5dd2c4036e..50ea875a3b 100644 if (!flag && isSpawnInvulnerable() && damagesource != DamageSource.OUT_OF_WORLD) { // Purpur diff --git a/src/main/java/net/pl3x/purpur/PurpurWorldConfig.java b/src/main/java/net/pl3x/purpur/PurpurWorldConfig.java -index 673c2e5f18..d1f6c05924 100644 +index 090a8c681..1e5dc4366 100644 --- a/src/main/java/net/pl3x/purpur/PurpurWorldConfig.java +++ b/src/main/java/net/pl3x/purpur/PurpurWorldConfig.java @@ -206,6 +206,7 @@ public class PurpurWorldConfig { diff --git a/patches/server/0150-Config-migration-disable-saving-projectiles-to-disk-.patch b/patches/server/0149-Config-migration-disable-saving-projectiles-to-disk-.patch similarity index 97% rename from patches/server/0150-Config-migration-disable-saving-projectiles-to-disk-.patch rename to patches/server/0149-Config-migration-disable-saving-projectiles-to-disk-.patch index b16c3981c..5c6057474 100644 --- a/patches/server/0150-Config-migration-disable-saving-projectiles-to-disk-.patch +++ b/patches/server/0149-Config-migration-disable-saving-projectiles-to-disk-.patch @@ -6,7 +6,7 @@ Subject: [PATCH] Config migration: disable saving projectiles to disk -> diff --git a/src/main/java/net/pl3x/purpur/PurpurConfig.java b/src/main/java/net/pl3x/purpur/PurpurConfig.java -index 06e40ffed1..3c4c099beb 100644 +index deb82f76a..d01982330 100644 --- a/src/main/java/net/pl3x/purpur/PurpurConfig.java +++ b/src/main/java/net/pl3x/purpur/PurpurConfig.java @@ -1,6 +1,7 @@ @@ -36,7 +36,7 @@ index 06e40ffed1..3c4c099beb 100644 public static String afkBroadcastBack = "§e§o%s is no longer AFK"; public static String afkTabListPrefix = "[AFK] "; diff --git a/src/main/java/net/pl3x/purpur/PurpurWorldConfig.java b/src/main/java/net/pl3x/purpur/PurpurWorldConfig.java -index d1f6c05924..1f8d05672a 100644 +index 1e5dc4366..d2c07bd07 100644 --- a/src/main/java/net/pl3x/purpur/PurpurWorldConfig.java +++ b/src/main/java/net/pl3x/purpur/PurpurWorldConfig.java @@ -1,5 +1,6 @@ diff --git a/patches/server/0151-Snow-Golem-rate-of-fire-config.patch b/patches/server/0150-Snow-Golem-rate-of-fire-config.patch similarity index 96% rename from patches/server/0151-Snow-Golem-rate-of-fire-config.patch rename to patches/server/0150-Snow-Golem-rate-of-fire-config.patch index fd7e370d9..44c46fa26 100644 --- a/patches/server/0151-Snow-Golem-rate-of-fire-config.patch +++ b/patches/server/0150-Snow-Golem-rate-of-fire-config.patch @@ -10,7 +10,7 @@ If min-shoot-interval-ticks and max-shoot-interval-ticks are both set to 0, snow golems won't shoot any snowballs. diff --git a/src/main/java/net/minecraft/server/EntitySnowman.java b/src/main/java/net/minecraft/server/EntitySnowman.java -index e980da14cf..e5b3d298f5 100644 +index e980da14c..e5b3d298f 100644 --- a/src/main/java/net/minecraft/server/EntitySnowman.java +++ b/src/main/java/net/minecraft/server/EntitySnowman.java @@ -29,7 +29,7 @@ public class EntitySnowman extends EntityGolem implements IShearable, IRangedEnt @@ -23,10 +23,10 @@ index e980da14cf..e5b3d298f5 100644 this.goalSelector.a(3, new PathfinderGoalLookAtPlayer(this, EntityHuman.class, 6.0F)); this.goalSelector.a(4, new PathfinderGoalRandomLookaround(this)); diff --git a/src/main/java/net/pl3x/purpur/PurpurWorldConfig.java b/src/main/java/net/pl3x/purpur/PurpurWorldConfig.java -index 1f8d05672a..301f32f8b0 100644 +index d2c07bd07..7f40f1187 100644 --- a/src/main/java/net/pl3x/purpur/PurpurWorldConfig.java +++ b/src/main/java/net/pl3x/purpur/PurpurWorldConfig.java -@@ -962,12 +962,20 @@ public class PurpurWorldConfig { +@@ -970,12 +970,20 @@ public class PurpurWorldConfig { public boolean snowGolemLeaveTrailWhenRidden = false; public boolean snowGolemDropsPumpkin = false; public boolean snowGolemPutPumpkinBack = false; diff --git a/patches/server/0152-PaperPR-Apply-advancements-async.patch b/patches/server/0151-PaperPR-Apply-advancements-async.patch similarity index 97% rename from patches/server/0152-PaperPR-Apply-advancements-async.patch rename to patches/server/0151-PaperPR-Apply-advancements-async.patch index acfa01340..f9b6be80f 100644 --- a/patches/server/0152-PaperPR-Apply-advancements-async.patch +++ b/patches/server/0151-PaperPR-Apply-advancements-async.patch @@ -5,7 +5,7 @@ Subject: [PATCH] PaperPR - Apply advancements async diff --git a/src/main/java/net/minecraft/server/AdvancementDataPlayer.java b/src/main/java/net/minecraft/server/AdvancementDataPlayer.java -index eaa1063ff2..a3b89a4f2a 100644 +index eaa1063ff..a3b89a4f2 100644 --- a/src/main/java/net/minecraft/server/AdvancementDataPlayer.java +++ b/src/main/java/net/minecraft/server/AdvancementDataPlayer.java @@ -63,6 +63,7 @@ public class AdvancementDataPlayer { @@ -17,7 +17,7 @@ index eaa1063ff2..a3b89a4f2a 100644 this.player = entityplayer; } diff --git a/src/main/java/net/minecraft/server/CriterionProgress.java b/src/main/java/net/minecraft/server/CriterionProgress.java -index 98c3884f47..244b58a7c4 100644 +index 98c3884f4..244b58a7c 100644 --- a/src/main/java/net/minecraft/server/CriterionProgress.java +++ b/src/main/java/net/minecraft/server/CriterionProgress.java @@ -10,8 +10,9 @@ import java.util.Date; @@ -51,7 +51,7 @@ index 98c3884f47..244b58a7c4 100644 } catch (ParseException parseexception) { throw new JsonSyntaxException("Invalid datetime: " + s, parseexception); diff --git a/src/main/java/net/minecraft/server/EntityPlayer.java b/src/main/java/net/minecraft/server/EntityPlayer.java -index 50ea875a3b..cc6a54e06a 100644 +index 50ea875a3..cc6a54e06 100644 --- a/src/main/java/net/minecraft/server/EntityPlayer.java +++ b/src/main/java/net/minecraft/server/EntityPlayer.java @@ -49,7 +49,8 @@ public class EntityPlayer extends EntityHuman implements ICrafting { @@ -111,7 +111,7 @@ index 50ea875a3b..cc6a54e06a 100644 } diff --git a/src/main/java/net/minecraft/server/MinecraftServer.java b/src/main/java/net/minecraft/server/MinecraftServer.java -index fd75444cec..95d93cd8e5 100644 +index fd75444ce..95d93cd8e 100644 --- a/src/main/java/net/minecraft/server/MinecraftServer.java +++ b/src/main/java/net/minecraft/server/MinecraftServer.java @@ -2315,6 +2315,7 @@ public abstract class MinecraftServer extends IAsyncTaskHandlerReentrant { @@ -88,7 +88,7 @@ index 0ff202c0d7..b9c6011c8d 100644 if (itemstack.isEmpty()) { inventorysubcontainer.setItem(j, ItemStack.b); diff --git a/src/main/java/net/minecraft/server/BehaviorTradeVillager.java b/src/main/java/net/minecraft/server/BehaviorTradeVillager.java -index ad26ecd7fe..6d8b6951c3 100644 +index ad26ecd7f..6d8b6951c 100644 --- a/src/main/java/net/minecraft/server/BehaviorTradeVillager.java +++ b/src/main/java/net/minecraft/server/BehaviorTradeVillager.java @@ -41,6 +41,11 @@ public class BehaviorTradeVillager extends Behavior { @@ -112,7 +112,7 @@ index ad26ecd7fe..6d8b6951c3 100644 InventorySubcontainer inventorysubcontainer = entityvillager.getInventory(); ItemStack itemstack = ItemStack.b; diff --git a/src/main/java/net/minecraft/server/Behaviors.java b/src/main/java/net/minecraft/server/Behaviors.java -index 2d91869660..e376306bc2 100644 +index 2d9186966..e376306bc 100644 --- a/src/main/java/net/minecraft/server/Behaviors.java +++ b/src/main/java/net/minecraft/server/Behaviors.java @@ -12,10 +12,13 @@ public class Behaviors { @@ -133,7 +133,7 @@ index 2d91869660..e376306bc2 100644 } else { object = new BehaviorWork(); diff --git a/src/main/java/net/minecraft/server/EntityVillager.java b/src/main/java/net/minecraft/server/EntityVillager.java -index 96cfc0c5c3..f0a5708f01 100644 +index 96cfc0c5c..f0a5708f0 100644 --- a/src/main/java/net/minecraft/server/EntityVillager.java +++ b/src/main/java/net/minecraft/server/EntityVillager.java @@ -131,7 +131,7 @@ public class EntityVillager extends EntityVillagerAbstract implements Reputation @@ -170,7 +170,7 @@ index 96cfc0c5c3..f0a5708f01 100644 } diff --git a/src/main/java/net/minecraft/server/IInventory.java b/src/main/java/net/minecraft/server/IInventory.java -index 46b88056b8..64f1767f66 100644 +index 46b88056b..64f1767f6 100644 --- a/src/main/java/net/minecraft/server/IInventory.java +++ b/src/main/java/net/minecraft/server/IInventory.java @@ -31,6 +31,7 @@ public interface IInventory extends Clearable { @@ -190,7 +190,7 @@ index 46b88056b8..64f1767f66 100644 for (int i = 0; i < this.getSize(); ++i) { ItemStack itemstack = this.getItem(i); diff --git a/src/main/java/net/minecraft/server/SensorSecondaryPlaces.java b/src/main/java/net/minecraft/server/SensorSecondaryPlaces.java -index 24173f0d3a..2d8e3e7771 100644 +index 24173f0d3..2d8e3e777 100644 --- a/src/main/java/net/minecraft/server/SensorSecondaryPlaces.java +++ b/src/main/java/net/minecraft/server/SensorSecondaryPlaces.java @@ -12,6 +12,13 @@ public class SensorSecondaryPlaces extends Sensor { @@ -221,7 +221,7 @@ index 24173f0d3a..2d8e3e7771 100644 behaviorcontroller.removeMemory(MemoryModuleType.SECONDARY_JOB_SITE); } diff --git a/src/main/java/net/minecraft/server/VillagerProfession.java b/src/main/java/net/minecraft/server/VillagerProfession.java -index 3c60da7ac6..6493f220a0 100644 +index 3c60da7ac..6493f220a 100644 --- a/src/main/java/net/minecraft/server/VillagerProfession.java +++ b/src/main/java/net/minecraft/server/VillagerProfession.java @@ -9,7 +9,7 @@ public class VillagerProfession { @@ -234,10 +234,10 @@ index 3c60da7ac6..6493f220a0 100644 public static final VillagerProfession FISHERMAN = a("fisherman", VillagePlaceType.i, SoundEffects.ENTITY_VILLAGER_WORK_FISHERMAN); public static final VillagerProfession FLETCHER = a("fletcher", VillagePlaceType.j, SoundEffects.ENTITY_VILLAGER_WORK_FLETCHER); diff --git a/src/main/java/net/pl3x/purpur/PurpurWorldConfig.java b/src/main/java/net/pl3x/purpur/PurpurWorldConfig.java -index 092edac7d3..130c973f60 100644 +index bd7123842..7c740f643 100644 --- a/src/main/java/net/pl3x/purpur/PurpurWorldConfig.java +++ b/src/main/java/net/pl3x/purpur/PurpurWorldConfig.java -@@ -1057,6 +1057,8 @@ public class PurpurWorldConfig { +@@ -1065,6 +1065,8 @@ public class PurpurWorldConfig { public int villagerSpawnIronGolemLimit = 0; public boolean villagerCanBreed = true; public boolean villagerLobotomize1x1 = false; @@ -246,7 +246,7 @@ index 092edac7d3..130c973f60 100644 private void villagerSettings() { villagerRidable = getBoolean("mobs.villager.ridable", villagerRidable); villagerRidableInWater = getBoolean("mobs.villager.ridable-in-water", villagerRidableInWater); -@@ -1069,6 +1071,8 @@ public class PurpurWorldConfig { +@@ -1077,6 +1079,8 @@ public class PurpurWorldConfig { villagerSpawnIronGolemLimit = getInt("mobs.villager.spawn-iron-golem.limit", villagerSpawnIronGolemLimit); villagerCanBreed = getBoolean("mobs.villager.can-breed", villagerCanBreed); villagerLobotomize1x1 = getBoolean("mobs.villager.lobotomize-1x1", villagerLobotomize1x1); diff --git a/patches/server/0158-Toggle-for-Zombified-Piglin-death-always-counting-as.patch b/patches/server/0157-Toggle-for-Zombified-Piglin-death-always-counting-as.patch similarity index 95% rename from patches/server/0158-Toggle-for-Zombified-Piglin-death-always-counting-as.patch rename to patches/server/0157-Toggle-for-Zombified-Piglin-death-always-counting-as.patch index 8c49473e6..31234d1f0 100644 --- a/patches/server/0158-Toggle-for-Zombified-Piglin-death-always-counting-as.patch +++ b/patches/server/0157-Toggle-for-Zombified-Piglin-death-always-counting-as.patch @@ -13,7 +13,7 @@ to the Piglin being angry, even though the player never hit them. This patch adds a toggle to disable this behavior. diff --git a/src/main/java/net/minecraft/server/EntityPigZombie.java b/src/main/java/net/minecraft/server/EntityPigZombie.java -index 3327dbbf87..57f3358b8d 100644 +index 3327dbbf8..57f3358b8 100644 --- a/src/main/java/net/minecraft/server/EntityPigZombie.java +++ b/src/main/java/net/minecraft/server/EntityPigZombie.java @@ -95,7 +95,7 @@ public class EntityPigZombie extends EntityZombie implements IEntityAngerable { @@ -35,10 +35,10 @@ index 3327dbbf87..57f3358b8d 100644 } diff --git a/src/main/java/net/pl3x/purpur/PurpurWorldConfig.java b/src/main/java/net/pl3x/purpur/PurpurWorldConfig.java -index 130c973f60..4264d9d1ec 100644 +index 7c740f643..f24e12718 100644 --- a/src/main/java/net/pl3x/purpur/PurpurWorldConfig.java +++ b/src/main/java/net/pl3x/purpur/PurpurWorldConfig.java -@@ -1177,12 +1177,14 @@ public class PurpurWorldConfig { +@@ -1190,12 +1190,14 @@ public class PurpurWorldConfig { public boolean zombifiedPiglinJockeyOnlyBaby = true; public double zombifiedPiglinJockeyChance = 0.05D; public boolean zombifiedPiglinJockeyTryExistingChickens = true; diff --git a/patches/server/0159-Spread-out-and-optimise-player-list-ticks.patch b/patches/server/0158-Spread-out-and-optimise-player-list-ticks.patch similarity index 97% rename from patches/server/0159-Spread-out-and-optimise-player-list-ticks.patch rename to patches/server/0158-Spread-out-and-optimise-player-list-ticks.patch index b35c508c0..050517715 100644 --- a/patches/server/0159-Spread-out-and-optimise-player-list-ticks.patch +++ b/patches/server/0158-Spread-out-and-optimise-player-list-ticks.patch @@ -5,7 +5,7 @@ Subject: [PATCH] Spread out and optimise player list ticks diff --git a/src/main/java/net/minecraft/server/PlayerList.java b/src/main/java/net/minecraft/server/PlayerList.java -index eae19141e3..881db63d6f 100644 +index eae19141e..881db63d6 100644 --- a/src/main/java/net/minecraft/server/PlayerList.java +++ b/src/main/java/net/minecraft/server/PlayerList.java @@ -71,7 +71,7 @@ public abstract class PlayerList { @@ -56,7 +56,7 @@ index eae19141e3..881db63d6f 100644 public void sendAll(Packet packet) { diff --git a/src/main/java/org/bukkit/craftbukkit/entity/CraftPlayer.java b/src/main/java/org/bukkit/craftbukkit/entity/CraftPlayer.java -index e781ae267d..4f42bc2183 100644 +index e781ae267..4f42bc218 100644 --- a/src/main/java/org/bukkit/craftbukkit/entity/CraftPlayer.java +++ b/src/main/java/org/bukkit/craftbukkit/entity/CraftPlayer.java @@ -1382,7 +1382,13 @@ public class CraftPlayer extends CraftHumanEntity implements Player { diff --git a/patches/server/0160-Configurable-chance-for-Wolves-to-spawn-rabid.patch b/patches/server/0159-Configurable-chance-for-Wolves-to-spawn-rabid.patch similarity index 98% rename from patches/server/0160-Configurable-chance-for-Wolves-to-spawn-rabid.patch rename to patches/server/0159-Configurable-chance-for-Wolves-to-spawn-rabid.patch index dc9be48d8..49e5a53ce 100644 --- a/patches/server/0160-Configurable-chance-for-Wolves-to-spawn-rabid.patch +++ b/patches/server/0159-Configurable-chance-for-Wolves-to-spawn-rabid.patch @@ -7,7 +7,7 @@ Configurable chance to spawn a wolf that is rabid. Rabid wolves attack all players, mobs, and animals. diff --git a/src/main/java/net/minecraft/server/EntityLiving.java b/src/main/java/net/minecraft/server/EntityLiving.java -index ce29695c69..a5a7b426eb 100644 +index ce29695c6..a5a7b426e 100644 --- a/src/main/java/net/minecraft/server/EntityLiving.java +++ b/src/main/java/net/minecraft/server/EntityLiving.java @@ -2085,6 +2085,7 @@ public abstract class EntityLiving extends Entity { @@ -19,7 +19,7 @@ index ce29695c69..a5a7b426eb 100644 if (enumhand == EnumHand.MAIN_HAND) { this.setSlot(EnumItemSlot.MAINHAND, itemstack); diff --git a/src/main/java/net/minecraft/server/EntityWolf.java b/src/main/java/net/minecraft/server/EntityWolf.java -index 6c25f667ee..fa7f47fef9 100644 +index 6c25f667e..fa7f47fef 100644 --- a/src/main/java/net/minecraft/server/EntityWolf.java +++ b/src/main/java/net/minecraft/server/EntityWolf.java @@ -14,11 +14,42 @@ public class EntityWolf extends EntityTameableAnimal implements IEntityAngerable @@ -170,7 +170,7 @@ index 6c25f667ee..fa7f47fef9 100644 return super.b(entityhuman, enumhand); } diff --git a/src/main/java/net/minecraft/server/PathfinderGoalAvoidTarget.java b/src/main/java/net/minecraft/server/PathfinderGoalAvoidTarget.java -index 9a4819815c..da29898574 100644 +index 9a4819815..da2989857 100644 --- a/src/main/java/net/minecraft/server/PathfinderGoalAvoidTarget.java +++ b/src/main/java/net/minecraft/server/PathfinderGoalAvoidTarget.java @@ -8,7 +8,7 @@ public class PathfinderGoalAvoidTarget extends Pathfinde @@ -197,10 +197,10 @@ index 9a4819815c..da29898574 100644 public PathfinderGoalAvoidTarget(EntityCreature entitycreature, Class oclass, Predicate predicate, float f, double d0, double d1, Predicate predicate1) { diff --git a/src/main/java/net/pl3x/purpur/PurpurWorldConfig.java b/src/main/java/net/pl3x/purpur/PurpurWorldConfig.java -index 4264d9d1ec..a39efcdbdc 100644 +index f24e12718..417a4b364 100644 --- a/src/main/java/net/pl3x/purpur/PurpurWorldConfig.java +++ b/src/main/java/net/pl3x/purpur/PurpurWorldConfig.java -@@ -1128,10 +1128,14 @@ public class PurpurWorldConfig { +@@ -1141,10 +1141,14 @@ public class PurpurWorldConfig { public boolean wolfRidable = false; public boolean wolfRidableInWater = false; @@ -216,7 +216,7 @@ index 4264d9d1ec..a39efcdbdc 100644 } diff --git a/src/main/java/org/bukkit/craftbukkit/entity/CraftWolf.java b/src/main/java/org/bukkit/craftbukkit/entity/CraftWolf.java -index 5f3314febb..507857ba24 100644 +index 5f3314feb..507857ba2 100644 --- a/src/main/java/org/bukkit/craftbukkit/entity/CraftWolf.java +++ b/src/main/java/org/bukkit/craftbukkit/entity/CraftWolf.java @@ -45,4 +45,16 @@ public class CraftWolf extends CraftTameableAnimal implements Wolf { diff --git a/patches/server/0161-Configurable-default-wolf-collar-color.patch b/patches/server/0160-Configurable-default-wolf-collar-color.patch similarity index 95% rename from patches/server/0161-Configurable-default-wolf-collar-color.patch rename to patches/server/0160-Configurable-default-wolf-collar-color.patch index 3cfe7c274..d57f70896 100644 --- a/patches/server/0161-Configurable-default-wolf-collar-color.patch +++ b/patches/server/0160-Configurable-default-wolf-collar-color.patch @@ -7,7 +7,7 @@ This allows for the server to set a default collar color when a wolf is tamed. Resets to RED when the value is invalid. diff --git a/src/main/java/net/minecraft/server/EntityWolf.java b/src/main/java/net/minecraft/server/EntityWolf.java -index fa7f47fef9..ca38c22241 100644 +index fa7f47fef..ca38c2224 100644 --- a/src/main/java/net/minecraft/server/EntityWolf.java +++ b/src/main/java/net/minecraft/server/EntityWolf.java @@ -114,6 +114,12 @@ public class EntityWolf extends EntityTameableAnimal implements IEntityAngerable @@ -24,7 +24,7 @@ index fa7f47fef9..ca38c22241 100644 @Override diff --git a/src/main/java/net/pl3x/purpur/PurpurWorldConfig.java b/src/main/java/net/pl3x/purpur/PurpurWorldConfig.java -index a39efcdbdc..83849136ed 100644 +index 417a4b364..26ce1e69a 100644 --- a/src/main/java/net/pl3x/purpur/PurpurWorldConfig.java +++ b/src/main/java/net/pl3x/purpur/PurpurWorldConfig.java @@ -3,6 +3,7 @@ package net.pl3x.purpur; @@ -35,7 +35,7 @@ index a39efcdbdc..83849136ed 100644 import net.minecraft.server.EnumDifficulty; import net.minecraft.server.Explosion; import net.minecraft.server.IRegistry; -@@ -1128,12 +1129,18 @@ public class PurpurWorldConfig { +@@ -1141,12 +1142,18 @@ public class PurpurWorldConfig { public boolean wolfRidable = false; public boolean wolfRidableInWater = false; diff --git a/patches/server/0161-Configurable-entity-base-attributes.patch b/patches/server/0161-Configurable-entity-base-attributes.patch new file mode 100644 index 000000000..8b4ad5b52 --- /dev/null +++ b/patches/server/0161-Configurable-entity-base-attributes.patch @@ -0,0 +1,2135 @@ +From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001 +From: BillyGalbreath +Date: Thu, 10 Dec 2020 16:44:54 -0600 +Subject: [PATCH] Configurable entity base attributes + + +diff --git a/src/main/java/net/minecraft/server/EntityBat.java b/src/main/java/net/minecraft/server/EntityBat.java +index bdf4e798a..65313c267 100644 +--- a/src/main/java/net/minecraft/server/EntityBat.java ++++ b/src/main/java/net/minecraft/server/EntityBat.java +@@ -54,6 +54,14 @@ public class EntityBat extends EntityAmbient { + setMot(mot.a(0.9D)); + } + } ++ ++ @Override ++ public void initAttributes(World world) { ++ if (world != null) { ++ this.getAttributeInstance(GenericAttributes.MAX_HEALTH).setValue(world.purpurConfig.batMaxHealth); ++ setHealth(getMaxHealth()); ++ } ++ } + // Purpur end + + @Override +diff --git a/src/main/java/net/minecraft/server/EntityBee.java b/src/main/java/net/minecraft/server/EntityBee.java +index ded4e10f5..5ea6430ae 100644 +--- a/src/main/java/net/minecraft/server/EntityBee.java ++++ b/src/main/java/net/minecraft/server/EntityBee.java +@@ -105,6 +105,14 @@ public class EntityBee extends EntityAnimal implements IEntityAngerable, EntityB + int getPurpurBreedTime() { + return this.world.purpurConfig.beeBreedingTicks; + } ++ ++ @Override ++ public void initAttributes(World world) { ++ if (world != null) { ++ this.getAttributeInstance(GenericAttributes.MAX_HEALTH).setValue(world.purpurConfig.beeMaxHealth); ++ setHealth(getMaxHealth()); ++ } ++ } + // Purpur end + + @Override +diff --git a/src/main/java/net/minecraft/server/EntityBlaze.java b/src/main/java/net/minecraft/server/EntityBlaze.java +index dcfad16e0..ec4a790e4 100644 +--- a/src/main/java/net/minecraft/server/EntityBlaze.java ++++ b/src/main/java/net/minecraft/server/EntityBlaze.java +@@ -45,6 +45,14 @@ public class EntityBlaze extends EntityMonster { + setMot(mot.a(0.9D)); + } + } ++ ++ @Override ++ public void initAttributes(World world) { ++ if (world != null) { ++ this.getAttributeInstance(GenericAttributes.MAX_HEALTH).setValue(world.purpurConfig.blazeMaxHealth); ++ setHealth(getMaxHealth()); ++ } ++ } + // Purpur end + + @Override +diff --git a/src/main/java/net/minecraft/server/EntityCat.java b/src/main/java/net/minecraft/server/EntityCat.java +index a6ce4ca27..a30e6a456 100644 +--- a/src/main/java/net/minecraft/server/EntityCat.java ++++ b/src/main/java/net/minecraft/server/EntityCat.java +@@ -63,6 +63,14 @@ public class EntityCat extends EntityTameableAnimal { + int getPurpurBreedTime() { + return this.world.purpurConfig.catBreedingTicks; + } ++ ++ @Override ++ public void initAttributes(World world) { ++ if (world != null) { ++ this.getAttributeInstance(GenericAttributes.MAX_HEALTH).setValue(world.purpurConfig.catMaxHealth); ++ setHealth(getMaxHealth()); ++ } ++ } + // Purpur end + + public MinecraftKey eU() { +diff --git a/src/main/java/net/minecraft/server/EntityCaveSpider.java b/src/main/java/net/minecraft/server/EntityCaveSpider.java +index 2e1f2dec1..75a6ca346 100644 +--- a/src/main/java/net/minecraft/server/EntityCaveSpider.java ++++ b/src/main/java/net/minecraft/server/EntityCaveSpider.java +@@ -18,6 +18,14 @@ public class EntityCaveSpider extends EntitySpider { + public boolean isRidableInWater() { + return world.purpurConfig.caveSpiderRidableInWater; + } ++ ++ @Override ++ public void initAttributes(World world) { ++ if (world != null) { ++ this.getAttributeInstance(GenericAttributes.MAX_HEALTH).setValue(world.purpurConfig.caveSpiderMaxHealth); ++ setHealth(getMaxHealth()); ++ } ++ } + // Purpur end + + public static AttributeProvider.Builder m() { +diff --git a/src/main/java/net/minecraft/server/EntityChicken.java b/src/main/java/net/minecraft/server/EntityChicken.java +index 26f783349..23c9bb43e 100644 +--- a/src/main/java/net/minecraft/server/EntityChicken.java ++++ b/src/main/java/net/minecraft/server/EntityChicken.java +@@ -34,6 +34,8 @@ public class EntityChicken extends EntityAnimal { + if (world.purpurConfig.chickenRetaliate) { + this.getAttributeInstance(GenericAttributes.ATTACK_DAMAGE).setValue(2.0D); + } ++ this.getAttributeInstance(GenericAttributes.MAX_HEALTH).setValue(world.purpurConfig.chickenMaxHealth); ++ setHealth(getMaxHealth()); + } + } + +diff --git a/src/main/java/net/minecraft/server/EntityCod.java b/src/main/java/net/minecraft/server/EntityCod.java +index 039fae4c2..2cf4faff8 100644 +--- a/src/main/java/net/minecraft/server/EntityCod.java ++++ b/src/main/java/net/minecraft/server/EntityCod.java +@@ -16,6 +16,14 @@ public class EntityCod extends EntityFishSchool { + public boolean isRidableInWater() { + return true; + } ++ ++ @Override ++ public void initAttributes(World world) { ++ if (world != null) { ++ this.getAttributeInstance(GenericAttributes.MAX_HEALTH).setValue(world.purpurConfig.codMaxHealth); ++ setHealth(getMaxHealth()); ++ } ++ } + // Purpur end + + @Override +diff --git a/src/main/java/net/minecraft/server/EntityCow.java b/src/main/java/net/minecraft/server/EntityCow.java +index 63497ca02..5924886db 100644 +--- a/src/main/java/net/minecraft/server/EntityCow.java ++++ b/src/main/java/net/minecraft/server/EntityCow.java +@@ -26,6 +26,14 @@ public class EntityCow extends EntityAnimal { + int getPurpurBreedTime() { + return this.world.purpurConfig.cowBreedingTicks; + } ++ ++ @Override ++ public void initAttributes(World world) { ++ if (world != null) { ++ this.getAttributeInstance(GenericAttributes.MAX_HEALTH).setValue(world.purpurConfig.cowMaxHealth); ++ setHealth(getMaxHealth()); ++ } ++ } + // Purpur end + + @Override +diff --git a/src/main/java/net/minecraft/server/EntityCreeper.java b/src/main/java/net/minecraft/server/EntityCreeper.java +index d186f257f..a2448718d 100644 +--- a/src/main/java/net/minecraft/server/EntityCreeper.java ++++ b/src/main/java/net/minecraft/server/EntityCreeper.java +@@ -96,6 +96,14 @@ public class EntityCreeper extends EntityMonster { + } + return getForward() == 0 && getStrafe() == 0; // do not jump if standing still + } ++ ++ @Override ++ public void initAttributes(World world) { ++ if (world != null) { ++ this.getAttributeInstance(GenericAttributes.MAX_HEALTH).setValue(world.purpurConfig.creeperMaxHealth); ++ setHealth(getMaxHealth()); ++ } ++ } + // Purpur end + + @Override +diff --git a/src/main/java/net/minecraft/server/EntityDolphin.java b/src/main/java/net/minecraft/server/EntityDolphin.java +index 9d5d143a9..ff8f4ddfb 100644 +--- a/src/main/java/net/minecraft/server/EntityDolphin.java ++++ b/src/main/java/net/minecraft/server/EntityDolphin.java +@@ -63,6 +63,14 @@ public class EntityDolphin extends EntityWaterAnimal { + } + return false; + } ++ ++ @Override ++ public void initAttributes(World world) { ++ if (world != null) { ++ this.getAttributeInstance(GenericAttributes.MAX_HEALTH).setValue(world.purpurConfig.dolphinMaxHealth); ++ setHealth(getMaxHealth()); ++ } ++ } + // Purpur end + + @Nullable +diff --git a/src/main/java/net/minecraft/server/EntityDrowned.java b/src/main/java/net/minecraft/server/EntityDrowned.java +index 638efc67d..816c15650 100644 +--- a/src/main/java/net/minecraft/server/EntityDrowned.java ++++ b/src/main/java/net/minecraft/server/EntityDrowned.java +@@ -46,6 +46,14 @@ public class EntityDrowned extends EntityZombie implements IRangedEntity { + public boolean jockeyTryExistingChickens() { + return world.purpurConfig.drownedJockeyTryExistingChickens; + } ++ ++ @Override ++ public void initAttributes(World world) { ++ if (world != null) { ++ this.getAttributeInstance(GenericAttributes.MAX_HEALTH).setValue(world.purpurConfig.drownedMaxHealth); ++ setHealth(getMaxHealth()); ++ } ++ } + // Purpur end + + @Override +diff --git a/src/main/java/net/minecraft/server/EntityEnderDragon.java b/src/main/java/net/minecraft/server/EntityEnderDragon.java +index 17a9217ed..fd1e966d1 100644 +--- a/src/main/java/net/minecraft/server/EntityEnderDragon.java ++++ b/src/main/java/net/minecraft/server/EntityEnderDragon.java +@@ -97,6 +97,14 @@ public class EntityEnderDragon extends EntityInsentient implements IMonster { + public double getMaxY() { + return world.purpurConfig.enderDragonMaxY; + } ++ ++ @Override ++ public void initAttributes(World world) { ++ if (world != null) { ++ this.getAttributeInstance(GenericAttributes.MAX_HEALTH).setValue(world.purpurConfig.enderDragonMaxHealth); ++ setHealth(getMaxHealth()); ++ } ++ } + // Purpur end + + public static AttributeProvider.Builder m() { +diff --git a/src/main/java/net/minecraft/server/EntityEnderman.java b/src/main/java/net/minecraft/server/EntityEnderman.java +index acb2b3ed0..cf3a607ac 100644 +--- a/src/main/java/net/minecraft/server/EntityEnderman.java ++++ b/src/main/java/net/minecraft/server/EntityEnderman.java +@@ -40,6 +40,14 @@ public class EntityEnderman extends EntityMonster implements IEntityAngerable { + public boolean isRidableInWater() { + return world.purpurConfig.endermanRidableInWater; + } ++ ++ @Override ++ public void initAttributes(World world) { ++ if (world != null) { ++ this.getAttributeInstance(GenericAttributes.MAX_HEALTH).setValue(world.purpurConfig.endermanMaxHealth); ++ setHealth(getMaxHealth()); ++ } ++ } + // Purpur end + + @Override +diff --git a/src/main/java/net/minecraft/server/EntityEndermite.java b/src/main/java/net/minecraft/server/EntityEndermite.java +index 7eef7f523..389ed1cc1 100644 +--- a/src/main/java/net/minecraft/server/EntityEndermite.java ++++ b/src/main/java/net/minecraft/server/EntityEndermite.java +@@ -22,6 +22,14 @@ public class EntityEndermite extends EntityMonster { + public boolean isRidableInWater() { + return world.purpurConfig.endermiteRidableInWater; + } ++ ++ @Override ++ public void initAttributes(World world) { ++ if (world != null) { ++ this.getAttributeInstance(GenericAttributes.MAX_HEALTH).setValue(world.purpurConfig.endermiteMaxHealth); ++ setHealth(getMaxHealth()); ++ } ++ } + // Purpur end + + @Override +diff --git a/src/main/java/net/minecraft/server/EntityEvoker.java b/src/main/java/net/minecraft/server/EntityEvoker.java +index c75dc7561..194ed8fc1 100644 +--- a/src/main/java/net/minecraft/server/EntityEvoker.java ++++ b/src/main/java/net/minecraft/server/EntityEvoker.java +@@ -22,6 +22,14 @@ public class EntityEvoker extends EntityIllagerWizard { + public boolean isRidableInWater() { + return world.purpurConfig.evokerRidableInWater; + } ++ ++ @Override ++ public void initAttributes(World world) { ++ if (world != null) { ++ this.getAttributeInstance(GenericAttributes.MAX_HEALTH).setValue(world.purpurConfig.evokerMaxHealth); ++ setHealth(getMaxHealth()); ++ } ++ } + // Purpur end + + @Override +diff --git a/src/main/java/net/minecraft/server/EntityFox.java b/src/main/java/net/minecraft/server/EntityFox.java +index e87f5aeb9..2f924721f 100644 +--- a/src/main/java/net/minecraft/server/EntityFox.java ++++ b/src/main/java/net/minecraft/server/EntityFox.java +@@ -91,6 +91,14 @@ public class EntityFox extends EntityAnimal { + int getPurpurBreedTime() { + return this.world.purpurConfig.foxBreedingTicks; + } ++ ++ @Override ++ public void initAttributes(World world) { ++ if (world != null) { ++ this.getAttributeInstance(GenericAttributes.MAX_HEALTH).setValue(world.purpurConfig.foxMaxHealth); ++ setHealth(getMaxHealth()); ++ } ++ } + // Purpur end + + @Override +diff --git a/src/main/java/net/minecraft/server/EntityGhast.java b/src/main/java/net/minecraft/server/EntityGhast.java +index 216506a7b..a6a0d1ffe 100644 +--- a/src/main/java/net/minecraft/server/EntityGhast.java ++++ b/src/main/java/net/minecraft/server/EntityGhast.java +@@ -41,6 +41,14 @@ public class EntityGhast extends EntityFlying implements IMonster { + setMot(mot.a(0.9D)); + } + } ++ ++ @Override ++ public void initAttributes(World world) { ++ if (world != null) { ++ this.getAttributeInstance(GenericAttributes.MAX_HEALTH).setValue(world.purpurConfig.ghastMaxHealth); ++ setHealth(getMaxHealth()); ++ } ++ } + // Purpur end + + @Override +diff --git a/src/main/java/net/minecraft/server/EntityGuardian.java b/src/main/java/net/minecraft/server/EntityGuardian.java +index 0a7f51a2a..01a49898a 100644 +--- a/src/main/java/net/minecraft/server/EntityGuardian.java ++++ b/src/main/java/net/minecraft/server/EntityGuardian.java +@@ -46,6 +46,14 @@ public class EntityGuardian extends EntityMonster { + public boolean isRidableInWater() { + return true; + } ++ ++ @Override ++ public void initAttributes(World world) { ++ if (world != null) { ++ this.getAttributeInstance(GenericAttributes.MAX_HEALTH).setValue(world.purpurConfig.guardianMaxHealth); ++ setHealth(getMaxHealth()); ++ } ++ } + // Purpur end + + @Override +diff --git a/src/main/java/net/minecraft/server/EntityGuardianElder.java b/src/main/java/net/minecraft/server/EntityGuardianElder.java +index f6f882746..07f6baebb 100644 +--- a/src/main/java/net/minecraft/server/EntityGuardianElder.java ++++ b/src/main/java/net/minecraft/server/EntityGuardianElder.java +@@ -26,6 +26,14 @@ public class EntityGuardianElder extends EntityGuardian { + public boolean isRidableInWater() { + return true; + } ++ ++ @Override ++ public void initAttributes(World world) { ++ if (world != null) { ++ this.getAttributeInstance(GenericAttributes.MAX_HEALTH).setValue(world.purpurConfig.elderGuardianMaxHealth); ++ setHealth(getMaxHealth()); ++ } ++ } + // Purpur end + + public static AttributeProvider.Builder m() { +diff --git a/src/main/java/net/minecraft/server/EntityHoglin.java b/src/main/java/net/minecraft/server/EntityHoglin.java +index a1578aade..2fa388776 100644 +--- a/src/main/java/net/minecraft/server/EntityHoglin.java ++++ b/src/main/java/net/minecraft/server/EntityHoglin.java +@@ -35,6 +35,14 @@ public class EntityHoglin extends EntityAnimal implements IMonster, IOglin { + int getPurpurBreedTime() { + return this.world.purpurConfig.hoglinBreedingTicks; + } ++ ++ @Override ++ public void initAttributes(World world) { ++ if (world != null) { ++ this.getAttributeInstance(GenericAttributes.MAX_HEALTH).setValue(world.purpurConfig.hoglinMaxHealth); ++ setHealth(getMaxHealth()); ++ } ++ } + // Purpur end + + @Override +diff --git a/src/main/java/net/minecraft/server/EntityHorse.java b/src/main/java/net/minecraft/server/EntityHorse.java +index b19995f96..0225f57f9 100644 +--- a/src/main/java/net/minecraft/server/EntityHorse.java ++++ b/src/main/java/net/minecraft/server/EntityHorse.java +@@ -22,6 +22,14 @@ public class EntityHorse extends EntityHorseAbstract { + int getPurpurBreedTime() { + return this.world.purpurConfig.horseBreedingTicks; + } ++ ++ @Override ++ public void initAttributes(World world) { ++ if (world != null) { ++ this.getAttributeInstance(GenericAttributes.MAX_HEALTH).setValue(generateMaxHealth(world.purpurConfig.horseMaxHealthMin, world.purpurConfig.horseMaxHealthMax)); ++ setHealth(getMaxHealth()); ++ } ++ } + // Purpur end + + @Override +diff --git a/src/main/java/net/minecraft/server/EntityHorseAbstract.java b/src/main/java/net/minecraft/server/EntityHorseAbstract.java +index bb3ebf70f..dd9befece 100644 +--- a/src/main/java/net/minecraft/server/EntityHorseAbstract.java ++++ b/src/main/java/net/minecraft/server/EntityHorseAbstract.java +@@ -863,6 +863,15 @@ public abstract class EntityHorseAbstract extends EntityAnimal implements IInven + + } + ++ // Purpur start ++ protected double generateMaxHealth(double min, double max) { ++ double d0 = max - min; ++ double d1 = MathHelper.floor(d0); ++ double d2 = d0 - d1; ++ return min + (random.nextDouble() * d1) + (random.nextDouble() * d2); ++ } ++ // Purpur end ++ + protected float fp() { + return 15.0F + (float) this.random.nextInt(8) + (float) this.random.nextInt(9); + } +diff --git a/src/main/java/net/minecraft/server/EntityHorseDonkey.java b/src/main/java/net/minecraft/server/EntityHorseDonkey.java +index f6421bb45..44a9cc76d 100644 +--- a/src/main/java/net/minecraft/server/EntityHorseDonkey.java ++++ b/src/main/java/net/minecraft/server/EntityHorseDonkey.java +@@ -18,6 +18,14 @@ public class EntityHorseDonkey extends EntityHorseChestedAbstract { + int getPurpurBreedTime() { + return this.world.purpurConfig.donkeyBreedingTicks; + } ++ ++ @Override ++ public void initAttributes(World world) { ++ if (world != null) { ++ this.getAttributeInstance(GenericAttributes.MAX_HEALTH).setValue(generateMaxHealth(world.purpurConfig.donkeyMaxHealthMin, world.purpurConfig.donkeyMaxHealthMax)); ++ setHealth(getMaxHealth()); ++ } ++ } + // Purpur end + + @Override +diff --git a/src/main/java/net/minecraft/server/EntityHorseMule.java b/src/main/java/net/minecraft/server/EntityHorseMule.java +index 30cbc505d..d57ed7a96 100644 +--- a/src/main/java/net/minecraft/server/EntityHorseMule.java ++++ b/src/main/java/net/minecraft/server/EntityHorseMule.java +@@ -18,7 +18,16 @@ public class EntityHorseMule extends EntityHorseChestedAbstract { + int getPurpurBreedTime() { + return this.world.purpurConfig.muleBreedingTicks; + } ++ ++ @Override ++ public void initAttributes(World world) { ++ if (world != null) { ++ this.getAttributeInstance(GenericAttributes.MAX_HEALTH).setValue(generateMaxHealth(world.purpurConfig.muleMaxHealthMin, world.purpurConfig.muleMaxHealthMax)); ++ setHealth(getMaxHealth()); ++ } ++ } + // Purpur end ++ + @Override + protected SoundEffect getSoundAmbient() { + super.getSoundAmbient(); +diff --git a/src/main/java/net/minecraft/server/EntityHorseSkeleton.java b/src/main/java/net/minecraft/server/EntityHorseSkeleton.java +index 408db52ca..b4d01a17a 100644 +--- a/src/main/java/net/minecraft/server/EntityHorseSkeleton.java ++++ b/src/main/java/net/minecraft/server/EntityHorseSkeleton.java +@@ -27,6 +27,14 @@ public class EntityHorseSkeleton extends EntityHorseAbstract { + int getPurpurBreedTime() { + return 6000; + } ++ ++ @Override ++ public void initAttributes(World world) { ++ if (world != null) { ++ this.getAttributeInstance(GenericAttributes.MAX_HEALTH).setValue(world.purpurConfig.skeletonHorseMaxHealth); ++ setHealth(getMaxHealth()); ++ } ++ } + // Purpur end + + public static AttributeProvider.Builder eL() { +diff --git a/src/main/java/net/minecraft/server/EntityHorseZombie.java b/src/main/java/net/minecraft/server/EntityHorseZombie.java +index 2121a6c97..5a89a37e7 100644 +--- a/src/main/java/net/minecraft/server/EntityHorseZombie.java ++++ b/src/main/java/net/minecraft/server/EntityHorseZombie.java +@@ -23,6 +23,14 @@ public class EntityHorseZombie extends EntityHorseAbstract { + int getPurpurBreedTime() { + return 6000; + } ++ ++ @Override ++ public void initAttributes(World world) { ++ if (world != null) { ++ this.getAttributeInstance(GenericAttributes.MAX_HEALTH).setValue(world.purpurConfig.zombieHorseMaxHealth); ++ setHealth(getMaxHealth()); ++ } ++ } + // Purpur end + + public static AttributeProvider.Builder eL() { +diff --git a/src/main/java/net/minecraft/server/EntityIronGolem.java b/src/main/java/net/minecraft/server/EntityIronGolem.java +index 9ee03b233..de4a4f4d6 100644 +--- a/src/main/java/net/minecraft/server/EntityIronGolem.java ++++ b/src/main/java/net/minecraft/server/EntityIronGolem.java +@@ -32,6 +32,14 @@ public class EntityIronGolem extends EntityGolem implements IEntityAngerable { + public boolean isRidableInWater() { + return world.purpurConfig.ironGolemRidableInWater; + } ++ ++ @Override ++ public void initAttributes(World world) { ++ if (world != null) { ++ this.getAttributeInstance(GenericAttributes.MAX_HEALTH).setValue(world.purpurConfig.ironGolemMaxHealth); ++ setHealth(getMaxHealth()); ++ } ++ } + // Purpur end + + @Override +diff --git a/src/main/java/net/minecraft/server/EntityLlama.java b/src/main/java/net/minecraft/server/EntityLlama.java +index 3bc6e6df9..1f85da762 100644 +--- a/src/main/java/net/minecraft/server/EntityLlama.java ++++ b/src/main/java/net/minecraft/server/EntityLlama.java +@@ -62,6 +62,14 @@ public class EntityLlama extends EntityHorseChestedAbstract implements IRangedEn + int getPurpurBreedTime() { + return this.world.purpurConfig.llamaBreedingTicks; + } ++ ++ @Override ++ public void initAttributes(World world) { ++ if (world != null) { ++ this.getAttributeInstance(GenericAttributes.MAX_HEALTH).setValue(generateMaxHealth(world.purpurConfig.llamaMaxHealthMin, world.purpurConfig.llamaMaxHealthMax)); ++ setHealth(getMaxHealth()); ++ } ++ } + // Purpur end + + public void setStrength(int i) { +diff --git a/src/main/java/net/minecraft/server/EntityLlamaTrader.java b/src/main/java/net/minecraft/server/EntityLlamaTrader.java +index b6aae5cde..592c3cbcf 100644 +--- a/src/main/java/net/minecraft/server/EntityLlamaTrader.java ++++ b/src/main/java/net/minecraft/server/EntityLlamaTrader.java +@@ -26,6 +26,14 @@ public class EntityLlamaTrader extends EntityLlama { + public boolean hasSaddle() { + return super.hasSaddle() || isTamed(); + } ++ ++ @Override ++ public void initAttributes(World world) { ++ if (world != null) { ++ this.getAttributeInstance(GenericAttributes.MAX_HEALTH).setValue(generateMaxHealth(world.purpurConfig.llamaTraderMaxHealthMin, world.purpurConfig.llamaTraderMaxHealthMax)); ++ setHealth(getMaxHealth()); ++ } ++ } + // Purpur end + + @Override +diff --git a/src/main/java/net/minecraft/server/EntityMagmaCube.java b/src/main/java/net/minecraft/server/EntityMagmaCube.java +index cd28463e2..df8f1ee0f 100644 +--- a/src/main/java/net/minecraft/server/EntityMagmaCube.java ++++ b/src/main/java/net/minecraft/server/EntityMagmaCube.java +@@ -23,6 +23,18 @@ public class EntityMagmaCube extends EntitySlime { + public float getJumpHeight() { + return 0.42F * this.getBlockJumpFactor(); // from EntityLiving + } ++ ++ @Override ++ public void initAttributes(World world) { ++ if (world != null) { ++ this.getAttributeInstance(GenericAttributes.MAX_HEALTH).setValue(generateMaxHealth()); ++ setHealth(getMaxHealth()); ++ } ++ } ++ ++ public String getMaxHealthEquation() { ++ return world.purpurConfig.magmaCubeMaxHealth; ++ } + // Purpur end + + public static AttributeProvider.Builder m() { +diff --git a/src/main/java/net/minecraft/server/EntityMushroomCow.java b/src/main/java/net/minecraft/server/EntityMushroomCow.java +index eb1f95d8b..aea40b479 100644 +--- a/src/main/java/net/minecraft/server/EntityMushroomCow.java ++++ b/src/main/java/net/minecraft/server/EntityMushroomCow.java +@@ -35,6 +35,14 @@ public class EntityMushroomCow extends EntityCow implements IShearable { + int getPurpurBreedTime() { + return this.world.purpurConfig.mooshroomBreedingTicks; + } ++ ++ @Override ++ public void initAttributes(World world) { ++ if (world != null) { ++ this.getAttributeInstance(GenericAttributes.MAX_HEALTH).setValue(world.purpurConfig.mooshroomMaxHealth); ++ setHealth(getMaxHealth()); ++ } ++ } + // Purpur end + + @Override +diff --git a/src/main/java/net/minecraft/server/EntityOcelot.java b/src/main/java/net/minecraft/server/EntityOcelot.java +index a5be10dfb..2ff3472ac 100644 +--- a/src/main/java/net/minecraft/server/EntityOcelot.java ++++ b/src/main/java/net/minecraft/server/EntityOcelot.java +@@ -31,6 +31,14 @@ public class EntityOcelot extends EntityAnimal { + int getPurpurBreedTime() { + return this.world.purpurConfig.ocelotBreedingTicks; + } ++ ++ @Override ++ public void initAttributes(World world) { ++ if (world != null) { ++ this.getAttributeInstance(GenericAttributes.MAX_HEALTH).setValue(world.purpurConfig.ocelotMaxHealth); ++ setHealth(getMaxHealth()); ++ } ++ } + // Purpur end + + private boolean isTrusting() { +diff --git a/src/main/java/net/minecraft/server/EntityPanda.java b/src/main/java/net/minecraft/server/EntityPanda.java +index c70180fdd..3f09d2068 100644 +--- a/src/main/java/net/minecraft/server/EntityPanda.java ++++ b/src/main/java/net/minecraft/server/EntityPanda.java +@@ -70,6 +70,15 @@ public class EntityPanda extends EntityAnimal { + int getPurpurBreedTime() { + return this.world.purpurConfig.pandaBreedingTicks; + } ++ ++ @Override ++ public void initAttributes(World world) { ++ if (world != null) { ++ this.getAttributeInstance(GenericAttributes.MAX_HEALTH).setValue(world.purpurConfig.pandaMaxHealth); ++ setHealth(getMaxHealth()); ++ } ++ updateAttributes(); ++ } + // Purpur end + + @Override +@@ -542,9 +551,12 @@ public class EntityPanda extends EntityAnimal { + return this.random.nextBoolean() ? this.getMainGene() : this.getHiddenGene(); + } + +- public void fg() { ++ public void fg() { updateAttributes(); } public void updateAttributes() { // Purpur - OBFHELPER + if (this.isWeak()) { +- this.getAttributeInstance(GenericAttributes.MAX_HEALTH).setValue(10.0D); ++ // Purpur start ++ AttributeModifiable maxHealth = this.getAttributeInstance(GenericAttributes.MAX_HEALTH); ++ maxHealth.setValue(maxHealth.getValue() / 2); ++ // Purpur end + } + + if (this.isLazy()) { +diff --git a/src/main/java/net/minecraft/server/EntityParrot.java b/src/main/java/net/minecraft/server/EntityParrot.java +index 398e92bf7..256129844 100644 +--- a/src/main/java/net/minecraft/server/EntityParrot.java ++++ b/src/main/java/net/minecraft/server/EntityParrot.java +@@ -120,6 +120,14 @@ public class EntityParrot extends EntityPerchable implements EntityBird { + int getPurpurBreedTime() { + return 6000; + } ++ ++ @Override ++ public void initAttributes(World world) { ++ if (world != null) { ++ this.getAttributeInstance(GenericAttributes.MAX_HEALTH).setValue(world.purpurConfig.parrotMaxHealth); ++ setHealth(getMaxHealth()); ++ } ++ } + // Purpur end + + @Nullable +diff --git a/src/main/java/net/minecraft/server/EntityPhantom.java b/src/main/java/net/minecraft/server/EntityPhantom.java +index f8c348004..889e388cf 100644 +--- a/src/main/java/net/minecraft/server/EntityPhantom.java ++++ b/src/main/java/net/minecraft/server/EntityPhantom.java +@@ -75,6 +75,14 @@ public class EntityPhantom extends EntityFlying implements IMonster { + world.addEntity(flames); + return true; + } ++ ++ @Override ++ public void initAttributes(World world) { ++ if (world != null) { ++ this.getAttributeInstance(GenericAttributes.MAX_HEALTH).setValue(world.purpurConfig.phantomMaxHealth); ++ setHealth(getMaxHealth()); ++ } ++ } + // Purpur end + + @Override +diff --git a/src/main/java/net/minecraft/server/EntityPig.java b/src/main/java/net/minecraft/server/EntityPig.java +index 7172e8cab..5152a5e40 100644 +--- a/src/main/java/net/minecraft/server/EntityPig.java ++++ b/src/main/java/net/minecraft/server/EntityPig.java +@@ -34,6 +34,14 @@ public class EntityPig extends EntityAnimal implements ISteerable, ISaddleable { + int getPurpurBreedTime() { + return this.world.purpurConfig.pigBreedingTicks; + } ++ ++ @Override ++ public void initAttributes(World world) { ++ if (world != null) { ++ this.getAttributeInstance(GenericAttributes.MAX_HEALTH).setValue(world.purpurConfig.pigMaxHealth); ++ setHealth(getMaxHealth()); ++ } ++ } + // Purpur end + + @Override +diff --git a/src/main/java/net/minecraft/server/EntityPigZombie.java b/src/main/java/net/minecraft/server/EntityPigZombie.java +index 57f3358b8..a00e56d1f 100644 +--- a/src/main/java/net/minecraft/server/EntityPigZombie.java ++++ b/src/main/java/net/minecraft/server/EntityPigZombie.java +@@ -46,6 +46,14 @@ public class EntityPigZombie extends EntityZombie implements IEntityAngerable { + public boolean jockeyTryExistingChickens() { + return world.purpurConfig.zombifiedPiglinJockeyTryExistingChickens; + } ++ ++ @Override ++ public void initAttributes(World world) { ++ if (world != null) { ++ this.getAttributeInstance(GenericAttributes.MAX_HEALTH).setValue(world.purpurConfig.zombifiedPiglinMaxHealth); ++ setHealth(getMaxHealth()); ++ } ++ } + // Purpur end + + @Override +diff --git a/src/main/java/net/minecraft/server/EntityPiglin.java b/src/main/java/net/minecraft/server/EntityPiglin.java +index 334e0f73e..16208564e 100644 +--- a/src/main/java/net/minecraft/server/EntityPiglin.java ++++ b/src/main/java/net/minecraft/server/EntityPiglin.java +@@ -35,6 +35,14 @@ public class EntityPiglin extends EntityPiglinAbstract implements ICrossbow { + public boolean isRidableInWater() { + return world.purpurConfig.piglinRidableInWater; + } ++ ++ @Override ++ public void initAttributes(World world) { ++ if (world != null) { ++ this.getAttributeInstance(GenericAttributes.MAX_HEALTH).setValue(world.purpurConfig.piglinMaxHealth); ++ setHealth(getMaxHealth()); ++ } ++ } + // Purpur end + + @Override +diff --git a/src/main/java/net/minecraft/server/EntityPiglinBrute.java b/src/main/java/net/minecraft/server/EntityPiglinBrute.java +index f6b170811..b9e965661 100644 +--- a/src/main/java/net/minecraft/server/EntityPiglinBrute.java ++++ b/src/main/java/net/minecraft/server/EntityPiglinBrute.java +@@ -25,6 +25,14 @@ public class EntityPiglinBrute extends EntityPiglinAbstract { + public boolean isRidableInWater() { + return world.purpurConfig.piglinBruteRidableInWater; + } ++ ++ @Override ++ public void initAttributes(World world) { ++ if (world != null) { ++ this.getAttributeInstance(GenericAttributes.MAX_HEALTH).setValue(world.purpurConfig.piglinBruteMaxHealth); ++ setHealth(getMaxHealth()); ++ } ++ } + // Purpur end + + public static AttributeProvider.Builder eS() { +diff --git a/src/main/java/net/minecraft/server/EntityPillager.java b/src/main/java/net/minecraft/server/EntityPillager.java +index cf7de0127..7c19f0a00 100644 +--- a/src/main/java/net/minecraft/server/EntityPillager.java ++++ b/src/main/java/net/minecraft/server/EntityPillager.java +@@ -23,6 +23,14 @@ public class EntityPillager extends EntityIllagerAbstract implements ICrossbow { + public boolean isRidableInWater() { + return world.purpurConfig.pillagerRidableInWater; + } ++ ++ @Override ++ public void initAttributes(World world) { ++ if (world != null) { ++ this.getAttributeInstance(GenericAttributes.MAX_HEALTH).setValue(world.purpurConfig.pillagerMaxHealth); ++ setHealth(getMaxHealth()); ++ } ++ } + // Purpur end + + @Override +diff --git a/src/main/java/net/minecraft/server/EntityPolarBear.java b/src/main/java/net/minecraft/server/EntityPolarBear.java +index 40395dd7e..9c72c8f46 100644 +--- a/src/main/java/net/minecraft/server/EntityPolarBear.java ++++ b/src/main/java/net/minecraft/server/EntityPolarBear.java +@@ -72,6 +72,14 @@ public class EntityPolarBear extends EntityAnimal implements IEntityAngerable { + int getPurpurBreedTime() { + return this.world.purpurConfig.polarBearBreedingTicks; + } ++ ++ @Override ++ public void initAttributes(World world) { ++ if (world != null) { ++ this.getAttributeInstance(GenericAttributes.MAX_HEALTH).setValue(world.purpurConfig.polarBearMaxHealth); ++ setHealth(getMaxHealth()); ++ } ++ } + // Purpur end + + @Override +diff --git a/src/main/java/net/minecraft/server/EntityPufferFish.java b/src/main/java/net/minecraft/server/EntityPufferFish.java +index 16a4df27c..8c8a4b0d0 100644 +--- a/src/main/java/net/minecraft/server/EntityPufferFish.java ++++ b/src/main/java/net/minecraft/server/EntityPufferFish.java +@@ -27,6 +27,14 @@ public class EntityPufferFish extends EntityFish { + public boolean isRidableInWater() { + return true; + } ++ ++ @Override ++ public void initAttributes(World world) { ++ if (world != null) { ++ this.getAttributeInstance(GenericAttributes.MAX_HEALTH).setValue(world.purpurConfig.pufferfishMaxHealth); ++ setHealth(getMaxHealth()); ++ } ++ } + // Purpur end + + @Override +diff --git a/src/main/java/net/minecraft/server/EntityRabbit.java b/src/main/java/net/minecraft/server/EntityRabbit.java +index 654cd036a..d13ad3e77 100644 +--- a/src/main/java/net/minecraft/server/EntityRabbit.java ++++ b/src/main/java/net/minecraft/server/EntityRabbit.java +@@ -35,6 +35,14 @@ public class EntityRabbit extends EntityAnimal { + int getPurpurBreedTime() { + return this.world.purpurConfig.rabbitBreedingTicks; + } ++ ++ @Override ++ public void initAttributes(World world) { ++ if (world != null) { ++ this.getAttributeInstance(GenericAttributes.MAX_HEALTH).setValue(world.purpurConfig.rabbitMaxHealth); ++ setHealth(getMaxHealth()); ++ } ++ } + // Purpur end + + // CraftBukkit start - code from constructor +diff --git a/src/main/java/net/minecraft/server/EntityRavager.java b/src/main/java/net/minecraft/server/EntityRavager.java +index a90214588..787b39b8b 100644 +--- a/src/main/java/net/minecraft/server/EntityRavager.java ++++ b/src/main/java/net/minecraft/server/EntityRavager.java +@@ -39,6 +39,14 @@ public class EntityRavager extends EntityRaider { + double speed = this.getAttributeInstance(GenericAttributes.MOVEMENT_SPEED).getBaseValue(); + getAttributeInstance(GenericAttributes.MOVEMENT_SPEED).setValue(speed); + } ++ ++ @Override ++ public void initAttributes(World world) { ++ if (world != null) { ++ this.getAttributeInstance(GenericAttributes.MAX_HEALTH).setValue(world.purpurConfig.ravagerMaxHealth); ++ setHealth(getMaxHealth()); ++ } ++ } + // Purpur end + + @Override +diff --git a/src/main/java/net/minecraft/server/EntitySalmon.java b/src/main/java/net/minecraft/server/EntitySalmon.java +index 6dfcee2c9..67635a40b 100644 +--- a/src/main/java/net/minecraft/server/EntitySalmon.java ++++ b/src/main/java/net/minecraft/server/EntitySalmon.java +@@ -16,6 +16,14 @@ public class EntitySalmon extends EntityFishSchool { + public boolean isRidableInWater() { + return true; + } ++ ++ @Override ++ public void initAttributes(World world) { ++ if (world != null) { ++ this.getAttributeInstance(GenericAttributes.MAX_HEALTH).setValue(world.purpurConfig.salmonMaxHealth); ++ setHealth(getMaxHealth()); ++ } ++ } + // Purpur end + + @Override +diff --git a/src/main/java/net/minecraft/server/EntitySheep.java b/src/main/java/net/minecraft/server/EntitySheep.java +index 32130c068..6593d171f 100644 +--- a/src/main/java/net/minecraft/server/EntitySheep.java ++++ b/src/main/java/net/minecraft/server/EntitySheep.java +@@ -71,6 +71,14 @@ public class EntitySheep extends EntityAnimal implements IShearable { + int getPurpurBreedTime() { + return this.world.purpurConfig.sheepBreedingTicks; + } ++ ++ @Override ++ public void initAttributes(World world) { ++ if (world != null) { ++ this.getAttributeInstance(GenericAttributes.MAX_HEALTH).setValue(world.purpurConfig.sheepMaxHealth); ++ setHealth(getMaxHealth()); ++ } ++ } + // Purpur end + + @Override +diff --git a/src/main/java/net/minecraft/server/EntityShulker.java b/src/main/java/net/minecraft/server/EntityShulker.java +index 30e0e1416..5c0e95a46 100644 +--- a/src/main/java/net/minecraft/server/EntityShulker.java ++++ b/src/main/java/net/minecraft/server/EntityShulker.java +@@ -39,6 +39,14 @@ public class EntityShulker extends EntityGolem implements IMonster { + public boolean isRidableInWater() { + return world.purpurConfig.shulkerRidableInWater; + } ++ ++ @Override ++ public void initAttributes(World world) { ++ if (world != null) { ++ this.getAttributeInstance(GenericAttributes.MAX_HEALTH).setValue(world.purpurConfig.shulkerMaxHealth); ++ setHealth(getMaxHealth()); ++ } ++ } + // Purpur end + + @Override +diff --git a/src/main/java/net/minecraft/server/EntitySilverfish.java b/src/main/java/net/minecraft/server/EntitySilverfish.java +index ad428e090..dfbd0bff3 100644 +--- a/src/main/java/net/minecraft/server/EntitySilverfish.java ++++ b/src/main/java/net/minecraft/server/EntitySilverfish.java +@@ -21,6 +21,14 @@ public class EntitySilverfish extends EntityMonster { + public boolean isRidableInWater() { + return world.purpurConfig.silverfishRidableInWater; + } ++ ++ @Override ++ public void initAttributes(World world) { ++ if (world != null) { ++ this.getAttributeInstance(GenericAttributes.MAX_HEALTH).setValue(world.purpurConfig.silverfishMaxHealth); ++ setHealth(getMaxHealth()); ++ } ++ } + // Purpur end + + @Override +diff --git a/src/main/java/net/minecraft/server/EntitySkeleton.java b/src/main/java/net/minecraft/server/EntitySkeleton.java +index 3f130e03b..a1fddbdf1 100644 +--- a/src/main/java/net/minecraft/server/EntitySkeleton.java ++++ b/src/main/java/net/minecraft/server/EntitySkeleton.java +@@ -16,6 +16,14 @@ public class EntitySkeleton extends EntitySkeletonAbstract { + public boolean isRidableInWater() { + return world.purpurConfig.skeletonRidableInWater; + } ++ ++ @Override ++ public void initAttributes(World world) { ++ if (world != null) { ++ this.getAttributeInstance(GenericAttributes.MAX_HEALTH).setValue(world.purpurConfig.skeletonMaxHealth); ++ setHealth(getMaxHealth()); ++ } ++ } + // Purpur end + + @Override +diff --git a/src/main/java/net/minecraft/server/EntitySkeletonStray.java b/src/main/java/net/minecraft/server/EntitySkeletonStray.java +index d123fb82b..bd807058b 100644 +--- a/src/main/java/net/minecraft/server/EntitySkeletonStray.java ++++ b/src/main/java/net/minecraft/server/EntitySkeletonStray.java +@@ -18,6 +18,14 @@ public class EntitySkeletonStray extends EntitySkeletonAbstract { + public boolean isRidableInWater() { + return world.purpurConfig.strayRidableInWater; + } ++ ++ @Override ++ public void initAttributes(World world) { ++ if (world != null) { ++ this.getAttributeInstance(GenericAttributes.MAX_HEALTH).setValue(world.purpurConfig.strayMaxHealth); ++ setHealth(getMaxHealth()); ++ } ++ } + // Purpur end + + public static boolean a(EntityTypes entitytypes, WorldAccess worldaccess, EnumMobSpawn enummobspawn, BlockPosition blockposition, Random random) { +diff --git a/src/main/java/net/minecraft/server/EntitySkeletonWither.java b/src/main/java/net/minecraft/server/EntitySkeletonWither.java +index 96cb080d9..aea8a191c 100644 +--- a/src/main/java/net/minecraft/server/EntitySkeletonWither.java ++++ b/src/main/java/net/minecraft/server/EntitySkeletonWither.java +@@ -19,6 +19,14 @@ public class EntitySkeletonWither extends EntitySkeletonAbstract { + public boolean isRidableInWater() { + return world.purpurConfig.witherSkeletonRidableInWater; + } ++ ++ @Override ++ public void initAttributes(World world) { ++ if (world != null) { ++ this.getAttributeInstance(GenericAttributes.MAX_HEALTH).setValue(world.purpurConfig.witherSkeletonMaxHealth); ++ setHealth(getMaxHealth()); ++ } ++ } + // Purpur end + + @Override +diff --git a/src/main/java/net/minecraft/server/EntitySlime.java b/src/main/java/net/minecraft/server/EntitySlime.java +index 460263629..12acdc284 100644 +--- a/src/main/java/net/minecraft/server/EntitySlime.java ++++ b/src/main/java/net/minecraft/server/EntitySlime.java +@@ -10,6 +10,7 @@ import com.destroystokyo.paper.event.entity.SlimeChangeDirectionEvent; + import com.destroystokyo.paper.event.entity.SlimeSwimEvent; + import com.destroystokyo.paper.event.entity.SlimeTargetLivingEntityEvent; + import com.destroystokyo.paper.event.entity.SlimeWanderEvent; ++import javax.script.ScriptException; + import org.bukkit.entity.LivingEntity; + import org.bukkit.entity.Slime; + // Paper end +@@ -24,6 +25,7 @@ import org.bukkit.event.entity.SlimeSplitEvent; + public class EntitySlime extends EntityInsentient implements IMonster { + + private static final DataWatcherObject bo = DataWatcher.a(EntitySlime.class, DataWatcherRegistry.b); ++ private static javax.script.ScriptEngine scriptEngine = new javax.script.ScriptEngineManager().getEngineByName("rhino"); // Purpur + public float b; + public float c; + public float d; +@@ -63,6 +65,28 @@ public class EntitySlime extends EntityInsentient implements IMonster { + } + return true; // do not jump() in wasd controller, let vanilla controller handle + } ++ ++ @Override ++ public void initAttributes(World world) { ++ if (world != null) { ++ this.getAttributeInstance(GenericAttributes.MAX_HEALTH).setValue(generateMaxHealth()); ++ setHealth(getMaxHealth()); ++ } ++ } ++ ++ public String getMaxHealthEquation() { ++ return world.purpurConfig.slimeMaxHealth; ++ } ++ ++ public double generateMaxHealth() { ++ int size = getSize(); ++ try { ++ scriptEngine.eval("size = " + size); ++ return (double) scriptEngine.eval(getMaxHealthEquation()); ++ } catch (Exception e) { ++ return size * size; ++ } ++ } + // Purpur end + + @Override +@@ -89,7 +113,7 @@ public class EntitySlime extends EntityInsentient implements IMonster { + this.datawatcher.set(EntitySlime.bo, i); + this.af(); + this.updateSize(); +- this.getAttributeInstance(GenericAttributes.MAX_HEALTH).setValue((double) (i * i)); ++ this.getAttributeInstance(GenericAttributes.MAX_HEALTH).setValue(generateMaxHealth()); // Purpur + this.getAttributeInstance(GenericAttributes.MOVEMENT_SPEED).setValue((double) (0.2F + 0.1F * (float) i)); + this.getAttributeInstance(GenericAttributes.ATTACK_DAMAGE).setValue((double) i); + if (flag) { +diff --git a/src/main/java/net/minecraft/server/EntitySnowman.java b/src/main/java/net/minecraft/server/EntitySnowman.java +index e5b3d298f..c773c3a9f 100644 +--- a/src/main/java/net/minecraft/server/EntitySnowman.java ++++ b/src/main/java/net/minecraft/server/EntitySnowman.java +@@ -24,6 +24,14 @@ public class EntitySnowman extends EntityGolem implements IShearable, IRangedEnt + public boolean isRidableInWater() { + return world.purpurConfig.snowGolemRidableInWater; + } ++ ++ @Override ++ public void initAttributes(World world) { ++ if (world != null) { ++ this.getAttributeInstance(GenericAttributes.MAX_HEALTH).setValue(world.purpurConfig.snowGolemMaxHealth); ++ setHealth(getMaxHealth()); ++ } ++ } + // Purpur end + + @Override +diff --git a/src/main/java/net/minecraft/server/EntitySpider.java b/src/main/java/net/minecraft/server/EntitySpider.java +index 92d741378..541b31521 100644 +--- a/src/main/java/net/minecraft/server/EntitySpider.java ++++ b/src/main/java/net/minecraft/server/EntitySpider.java +@@ -21,6 +21,14 @@ public class EntitySpider extends EntityMonster { + public boolean isRidableInWater() { + return world.purpurConfig.spiderRidableInWater; + } ++ ++ @Override ++ public void initAttributes(World world) { ++ if (world != null) { ++ this.getAttributeInstance(GenericAttributes.MAX_HEALTH).setValue(world.purpurConfig.spiderMaxHealth); ++ setHealth(getMaxHealth()); ++ } ++ } + // Purpur end + + @Override +diff --git a/src/main/java/net/minecraft/server/EntitySquid.java b/src/main/java/net/minecraft/server/EntitySquid.java +index cee226501..d25e28692 100644 +--- a/src/main/java/net/minecraft/server/EntitySquid.java ++++ b/src/main/java/net/minecraft/server/EntitySquid.java +@@ -56,6 +56,14 @@ public class EntitySquid extends EntityWaterAnimal { + public boolean isInWater() { + return this.inWater || world.purpurConfig.squidsCanFly; + } ++ ++ @Override ++ public void initAttributes(World world) { ++ if (world != null) { ++ this.getAttributeInstance(GenericAttributes.MAX_HEALTH).setValue(world.purpurConfig.squidMaxHealth); ++ setHealth(getMaxHealth()); ++ } ++ } + // Purpur end + + @Override +diff --git a/src/main/java/net/minecraft/server/EntityStrider.java b/src/main/java/net/minecraft/server/EntityStrider.java +index 9ab1b5af6..1bb33c416 100644 +--- a/src/main/java/net/minecraft/server/EntityStrider.java ++++ b/src/main/java/net/minecraft/server/EntityStrider.java +@@ -43,6 +43,14 @@ public class EntityStrider extends EntityAnimal implements ISteerable, ISaddleab + int getPurpurBreedTime() { + return this.world.purpurConfig.striderBreedingTicks; + } ++ ++ @Override ++ public void initAttributes(World world) { ++ if (world != null) { ++ this.getAttributeInstance(GenericAttributes.MAX_HEALTH).setValue(world.purpurConfig.striderMaxHealth); ++ setHealth(getMaxHealth()); ++ } ++ } + // Purpur end + + public static boolean c(EntityTypes entitytypes, GeneratorAccess generatoraccess, EnumMobSpawn enummobspawn, BlockPosition blockposition, Random random) { +diff --git a/src/main/java/net/minecraft/server/EntityTropicalFish.java b/src/main/java/net/minecraft/server/EntityTropicalFish.java +index 2c9df356e..e52408c5f 100644 +--- a/src/main/java/net/minecraft/server/EntityTropicalFish.java ++++ b/src/main/java/net/minecraft/server/EntityTropicalFish.java +@@ -29,6 +29,14 @@ public class EntityTropicalFish extends EntityFishSchool { + public boolean isRidableInWater() { + return true; + } ++ ++ @Override ++ public void initAttributes(World world) { ++ if (world != null) { ++ this.getAttributeInstance(GenericAttributes.MAX_HEALTH).setValue(world.purpurConfig.tropicalFishMaxHealth); ++ setHealth(getMaxHealth()); ++ } ++ } + // Purpur end + + @Override +diff --git a/src/main/java/net/minecraft/server/EntityTurtle.java b/src/main/java/net/minecraft/server/EntityTurtle.java +index 067f7f28b..dbbf213a4 100644 +--- a/src/main/java/net/minecraft/server/EntityTurtle.java ++++ b/src/main/java/net/minecraft/server/EntityTurtle.java +@@ -42,6 +42,14 @@ public class EntityTurtle extends EntityAnimal { + int getPurpurBreedTime() { + return this.world.purpurConfig.turtleBreedingTicks; + } ++ ++ @Override ++ public void initAttributes(World world) { ++ if (world != null) { ++ this.getAttributeInstance(GenericAttributes.MAX_HEALTH).setValue(world.purpurConfig.turtleMaxHealth); ++ setHealth(getMaxHealth()); ++ } ++ } + // Purpur end + + public void setHomePos(BlockPosition blockposition) { +diff --git a/src/main/java/net/minecraft/server/EntityVex.java b/src/main/java/net/minecraft/server/EntityVex.java +index ac75ed3e2..6870d175c 100644 +--- a/src/main/java/net/minecraft/server/EntityVex.java ++++ b/src/main/java/net/minecraft/server/EntityVex.java +@@ -56,6 +56,14 @@ public class EntityVex extends EntityMonster { + public boolean b(float f, float f1) { + return false; // no fall damage please + } ++ ++ @Override ++ public void initAttributes(World world) { ++ if (world != null) { ++ this.getAttributeInstance(GenericAttributes.MAX_HEALTH).setValue(world.purpurConfig.vexMaxHealth); ++ setHealth(getMaxHealth()); ++ } ++ } + // Purpur end + + @Override +diff --git a/src/main/java/net/minecraft/server/EntityVillager.java b/src/main/java/net/minecraft/server/EntityVillager.java +index f0a5708f0..00504af85 100644 +--- a/src/main/java/net/minecraft/server/EntityVillager.java ++++ b/src/main/java/net/minecraft/server/EntityVillager.java +@@ -95,6 +95,14 @@ public class EntityVillager extends EntityVillagerAbstract implements Reputation + public boolean a(EntityHuman entityhuman) { + return world.purpurConfig.villagerCanBeLeashed && !this.isLeashed(); + } ++ ++ @Override ++ public void initAttributes(World world) { ++ if (world != null) { ++ this.getAttributeInstance(GenericAttributes.MAX_HEALTH).setValue(world.purpurConfig.villagerMaxHealth); ++ setHealth(getMaxHealth()); ++ } ++ } + // Purpur end + + @Override +diff --git a/src/main/java/net/minecraft/server/EntityVillagerTrader.java b/src/main/java/net/minecraft/server/EntityVillagerTrader.java +index 3ea66955d..63b888716 100644 +--- a/src/main/java/net/minecraft/server/EntityVillagerTrader.java ++++ b/src/main/java/net/minecraft/server/EntityVillagerTrader.java +@@ -63,6 +63,14 @@ public class EntityVillagerTrader extends EntityVillagerAbstract { + public boolean a(EntityHuman entityhuman) { + return world.purpurConfig.villagerTraderCanBeLeashed && !this.isLeashed(); + } ++ ++ @Override ++ public void initAttributes(World world) { ++ if (world != null) { ++ this.getAttributeInstance(GenericAttributes.MAX_HEALTH).setValue(world.purpurConfig.villagerTraderMaxHealth); ++ setHealth(getMaxHealth()); ++ } ++ } + // Purpur - end + + @Nullable +diff --git a/src/main/java/net/minecraft/server/EntityVindicator.java b/src/main/java/net/minecraft/server/EntityVindicator.java +index 9950bda50..3c906f423 100644 +--- a/src/main/java/net/minecraft/server/EntityVindicator.java ++++ b/src/main/java/net/minecraft/server/EntityVindicator.java +@@ -27,6 +27,14 @@ public class EntityVindicator extends EntityIllagerAbstract { + public boolean isRidableInWater() { + return world.purpurConfig.vindicatorRidableInWater; + } ++ ++ @Override ++ public void initAttributes(World world) { ++ if (world != null) { ++ this.getAttributeInstance(GenericAttributes.MAX_HEALTH).setValue(world.purpurConfig.vindicatorMaxHealth); ++ setHealth(getMaxHealth()); ++ } ++ } + // Purpur end + + @Override +diff --git a/src/main/java/net/minecraft/server/EntityWitch.java b/src/main/java/net/minecraft/server/EntityWitch.java +index 323d79a99..1809f2ba3 100644 +--- a/src/main/java/net/minecraft/server/EntityWitch.java ++++ b/src/main/java/net/minecraft/server/EntityWitch.java +@@ -34,6 +34,14 @@ public class EntityWitch extends EntityRaider implements IRangedEntity { + public boolean isRidableInWater() { + return world.purpurConfig.witchRidableInWater; + } ++ ++ @Override ++ public void initAttributes(World world) { ++ if (world != null) { ++ this.getAttributeInstance(GenericAttributes.MAX_HEALTH).setValue(world.purpurConfig.witchMaxHealth); ++ setHealth(getMaxHealth()); ++ } ++ } + // Purpur end + + @Override +diff --git a/src/main/java/net/minecraft/server/EntityWolf.java b/src/main/java/net/minecraft/server/EntityWolf.java +index ca38c2224..f60dc96fc 100644 +--- a/src/main/java/net/minecraft/server/EntityWolf.java ++++ b/src/main/java/net/minecraft/server/EntityWolf.java +@@ -120,6 +120,14 @@ public class EntityWolf extends EntityTameableAnimal implements IEntityAngerable + setCollarColor(world.purpurConfig.wolfDefaultCollarColor); + super.tame(entityhuman); + } ++ ++ @Override ++ public void initAttributes(World world) { ++ if (world != null) { ++ this.getAttributeInstance(GenericAttributes.MAX_HEALTH).setValue(world.purpurConfig.wolfMaxHealth); ++ setHealth(getMaxHealth()); ++ } ++ } + // Purpur end + + @Override +diff --git a/src/main/java/net/minecraft/server/EntityZoglin.java b/src/main/java/net/minecraft/server/EntityZoglin.java +index d92fe8013..067c99f13 100644 +--- a/src/main/java/net/minecraft/server/EntityZoglin.java ++++ b/src/main/java/net/minecraft/server/EntityZoglin.java +@@ -31,6 +31,14 @@ public class EntityZoglin extends EntityMonster implements IMonster, IOglin { + public boolean isRidableInWater() { + return world.purpurConfig.zoglinRidableInWater; + } ++ ++ @Override ++ public void initAttributes(World world) { ++ if (world != null) { ++ this.getAttributeInstance(GenericAttributes.MAX_HEALTH).setValue(world.purpurConfig.zoglinMaxHealth); ++ setHealth(getMaxHealth()); ++ } ++ } + // Purpur end + + @Override +diff --git a/src/main/java/net/minecraft/server/EntityZombie.java b/src/main/java/net/minecraft/server/EntityZombie.java +index 3ad8bd084..23c1a6e69 100644 +--- a/src/main/java/net/minecraft/server/EntityZombie.java ++++ b/src/main/java/net/minecraft/server/EntityZombie.java +@@ -67,6 +67,14 @@ public class EntityZombie extends EntityMonster { + public boolean jockeyTryExistingChickens() { + return world.purpurConfig.zombieJockeyTryExistingChickens; + } ++ ++ @Override ++ public void initAttributes(World world) { ++ if (world != null) { ++ this.getAttributeInstance(GenericAttributes.MAX_HEALTH).setValue(world.purpurConfig.zombieMaxHealth); ++ setHealth(getMaxHealth()); ++ } ++ } + // Purpur end + + @Override +diff --git a/src/main/java/net/minecraft/server/EntityZombieHusk.java b/src/main/java/net/minecraft/server/EntityZombieHusk.java +index 02b0ae550..f22419837 100644 +--- a/src/main/java/net/minecraft/server/EntityZombieHusk.java ++++ b/src/main/java/net/minecraft/server/EntityZombieHusk.java +@@ -33,6 +33,14 @@ public class EntityZombieHusk extends EntityZombie { + public boolean jockeyTryExistingChickens() { + return world.purpurConfig.huskJockeyTryExistingChickens; + } ++ ++ @Override ++ public void initAttributes(World world) { ++ if (world != null) { ++ this.getAttributeInstance(GenericAttributes.MAX_HEALTH).setValue(world.purpurConfig.huskMaxHealth); ++ setHealth(getMaxHealth()); ++ } ++ } + // Purpur end + + public static boolean a(EntityTypes entitytypes, WorldAccess worldaccess, EnumMobSpawn enummobspawn, BlockPosition blockposition, Random random) { +diff --git a/src/main/java/net/minecraft/server/EntityZombieVillager.java b/src/main/java/net/minecraft/server/EntityZombieVillager.java +index 0c47477b4..d6352539a 100644 +--- a/src/main/java/net/minecraft/server/EntityZombieVillager.java ++++ b/src/main/java/net/minecraft/server/EntityZombieVillager.java +@@ -53,6 +53,14 @@ public class EntityZombieVillager extends EntityZombie implements VillagerDataHo + public boolean jockeyTryExistingChickens() { + return world.purpurConfig.zombieVillagerJockeyTryExistingChickens; + } ++ ++ @Override ++ public void initAttributes(World world) { ++ if (world != null) { ++ this.getAttributeInstance(GenericAttributes.MAX_HEALTH).setValue(world.purpurConfig.zombieVillagerMaxHealth); ++ setHealth(getMaxHealth()); ++ } ++ } + // Purpur end + + @Override +diff --git a/src/main/java/net/pl3x/purpur/PurpurWorldConfig.java b/src/main/java/net/pl3x/purpur/PurpurWorldConfig.java +index 26ce1e69a..7e3c97347 100644 +--- a/src/main/java/net/pl3x/purpur/PurpurWorldConfig.java ++++ b/src/main/java/net/pl3x/purpur/PurpurWorldConfig.java +@@ -473,30 +473,36 @@ public class PurpurWorldConfig { + public boolean batRidable = false; + public boolean batRidableInWater = false; + public double batMaxY = 256D; ++ public double batMaxHealth = 6.0D; + private void batSettings() { + batRidable = getBoolean("mobs.bat.ridable", batRidable); + batRidableInWater = getBoolean("mobs.bat.ridable-in-water", batRidableInWater); + batMaxY = getDouble("mobs.bat.ridable-max-y", batMaxY); ++ batMaxHealth = getDouble("mobs.bat.attributes.max-health", batMaxHealth); + } + + public boolean beeRidable = false; + public boolean beeRidableInWater = false; + public double beeMaxY = 256D; + public int beeBreedingTicks = 6000; ++ public double beeMaxHealth = 10.0D; + private void beeSettings() { + beeRidable = getBoolean("mobs.bee.ridable", beeRidable); + beeRidableInWater = getBoolean("mobs.bee.ridable-in-water", beeRidableInWater); + beeMaxY = getDouble("mobs.bee.ridable-max-y", beeMaxY); + beeBreedingTicks = getInt("mobs.bee.breeding-delay-ticks", beeBreedingTicks); ++ beeMaxHealth = getDouble("mobs.bee.attributes.max-health", beeMaxHealth); + } + + public boolean blazeRidable = false; + public boolean blazeRidableInWater = false; + public double blazeMaxY = 256D; ++ public double blazeMaxHealth = 20.0D; + private void blazeSettings() { + blazeRidable = getBoolean("mobs.blaze.ridable", blazeRidable); + blazeRidableInWater = getBoolean("mobs.blaze.ridable-in-water", blazeRidableInWater); + blazeMaxY = getDouble("mobs.blaze.ridable-max-y", blazeMaxY); ++ blazeMaxHealth = getDouble("mobs.blaze.attributes.max-health", blazeMaxHealth); + } + + public boolean catRidable = false; +@@ -505,6 +511,7 @@ public class PurpurWorldConfig { + public int catSpawnSwampHutScanRange = 16; + public int catSpawnVillageScanRange = 48; + public int catBreedingTicks = 6000; ++ public double catMaxHealth = 10.0D; + private void catSettings() { + catRidable = getBoolean("mobs.cat.ridable", catRidable); + catRidableInWater = getBoolean("mobs.cat.ridable-in-water", catRidableInWater); +@@ -512,51 +519,62 @@ public class PurpurWorldConfig { + catSpawnSwampHutScanRange = getInt("mobs.cat.scan-range-for-other-cats.swamp-hut", catSpawnSwampHutScanRange); + catSpawnVillageScanRange = getInt("mobs.cat.scan-range-for-other-cats.village", catSpawnVillageScanRange); + catBreedingTicks = getInt("mobs.cat.breeding-delay-ticks", catBreedingTicks); ++ catMaxHealth = getDouble("mobs.cat.attributes.max-health", catMaxHealth); + } + + public boolean caveSpiderRidable = false; + public boolean caveSpiderRidableInWater = false; ++ public double caveSpiderMaxHealth = 12.0D; + private void caveSpiderSettings() { + caveSpiderRidable = getBoolean("mobs.cave_spider.ridable", caveSpiderRidable); + caveSpiderRidableInWater = getBoolean("mobs.cave_spider.ridable-in-water", caveSpiderRidableInWater); ++ caveSpiderMaxHealth = getDouble("mobs.cave_spider.attributes.max-health", caveSpiderMaxHealth); + } + + public boolean chickenRidable = false; + public boolean chickenRidableInWater = false; + public boolean chickenRetaliate = false; + public int chickenBreedingTicks = 6000; ++ public double chickenMaxHealth = 4.0D; + private void chickenSettings() { + chickenRidable = getBoolean("mobs.chicken.ridable", chickenRidable); + chickenRidableInWater = getBoolean("mobs.chicken.ridable-in-water", chickenRidableInWater); + chickenRetaliate = getBoolean("mobs.chicken.retaliate", chickenRetaliate); + chickenBreedingTicks = getInt("mobs.chicken.breeding-delay-ticks", chickenBreedingTicks); ++ chickenMaxHealth = getDouble("mobs.chicken.attributes.max-health", chickenMaxHealth); + } + + public boolean codRidable = false; ++ public double codMaxHealth = 3.0D; + private void codSettings() { + codRidable = getBoolean("mobs.cod.ridable", codRidable); ++ codMaxHealth = getDouble("mobs.cod.attributes.max-health", codMaxHealth); + } + + public boolean cowRidable = false; + public boolean cowRidableInWater = false; + public int cowFeedMushrooms = 0; + public int cowBreedingTicks = 6000; ++ public double cowMaxHealth = 10.0D; + private void cowSettings() { + cowRidable = getBoolean("mobs.cow.ridable", cowRidable); + cowRidableInWater = getBoolean("mobs.cow.ridable-in-water", cowRidableInWater); + cowFeedMushrooms = getInt("mobs.cow.feed-mushrooms-for-mooshroom", cowFeedMushrooms); + cowBreedingTicks = getInt("mobs.cow.breeding-delay-ticks", cowBreedingTicks); ++ cowMaxHealth = getDouble("mobs.cow.attributes.max-health", cowMaxHealth); + } + + public boolean creeperRidable = false; + public boolean creeperRidableInWater = false; + public boolean creeperAllowGriefing = true; + public double creeperChargedChance = 0.0D; ++ public double creeperMaxHealth = 20.0D; + private void creeperSettings() { + creeperRidable = getBoolean("mobs.creeper.ridable", creeperRidable); + creeperRidableInWater = getBoolean("mobs.creeper.ridable-in-water", creeperRidableInWater); + creeperAllowGriefing = getBoolean("mobs.creeper.allow-griefing", creeperAllowGriefing); + creeperChargedChance = getDouble("mobs.creeper.naturally-charged-chance", creeperChargedChance); ++ creeperMaxHealth = getDouble("mobs.creeper.attributes.max-health", creeperMaxHealth); + } + + public boolean dolphinRidable = false; +@@ -564,19 +582,25 @@ public class PurpurWorldConfig { + public float dolphinSpitSpeed = 1.0F; + public float dolphinSpitDamage = 2.0F; + public boolean dolphinDisableTreasureSearching = false; ++ public double dolphinMaxHealth = 10.0D; + private void dolphinSettings() { + dolphinRidable = getBoolean("mobs.dolphin.ridable", dolphinRidable); + dolphinSpitCooldown = getInt("mobs.dolphin.spit.cooldown", dolphinSpitCooldown); + dolphinSpitSpeed = (float) getDouble("mobs.dolphin.spit.speed", dolphinSpitSpeed); + dolphinSpitDamage = (float) getDouble("mobs.dolphin.spit.damage", dolphinSpitDamage); + dolphinDisableTreasureSearching = getBoolean("mobs.dolphin.disable-treasure-searching", dolphinDisableTreasureSearching); ++ dolphinMaxHealth = getDouble("mobs.dolphin.attributes.max-health", dolphinMaxHealth); + } + + public boolean donkeyRidableInWater = false; + public int donkeyBreedingTicks = 6000; ++ public double donkeyMaxHealthMin = 15.0D; ++ public double donkeyMaxHealthMax = 30.0D; + private void donkeySettings() { + donkeyRidableInWater = getBoolean("mobs.donkey.ridable-in-water", donkeyRidableInWater); + donkeyBreedingTicks = getInt("mobs.donkey.breeding-delay-ticks", donkeyBreedingTicks); ++ donkeyMaxHealthMin = getDouble("mobs.donkey.attributes.max-health.min", donkeyMaxHealthMin); ++ donkeyMaxHealthMax = getDouble("mobs.donkey.attributes.max-health.max", donkeyMaxHealthMax); + } + + public boolean drownedRidable = false; +@@ -584,17 +608,21 @@ public class PurpurWorldConfig { + public boolean drownedJockeyOnlyBaby = true; + public double drownedJockeyChance = 0.05D; + public boolean drownedJockeyTryExistingChickens = true; ++ public double drownedMaxHealth = 20.0D; + private void drownedSettings() { + drownedRidable = getBoolean("mobs.drowned.ridable", drownedRidable); + drownedRidableInWater = getBoolean("mobs.drowned.ridable-in-water", drownedRidableInWater); + drownedJockeyOnlyBaby = getBoolean("mobs.drowned.jockey.only-babies", drownedJockeyOnlyBaby); + drownedJockeyChance = getDouble("mobs.drowned.jockey.chance", drownedJockeyChance); + drownedJockeyTryExistingChickens = getBoolean("mobs.drowned.jockey.try-existing-chickens", drownedJockeyTryExistingChickens); ++ drownedMaxHealth = getDouble("mobs.drowned.attributes.max-health", drownedMaxHealth); + } + + public boolean elderGuardianRidable = false; ++ public double elderGuardianMaxHealth = 80.0D; + private void elderGuardianSettings() { + elderGuardianRidable = getBoolean("mobs.elder_guardian.ridable", elderGuardianRidable); ++ elderGuardianMaxHealth = getDouble("mobs.elder_guardian.attributes.max-health", elderGuardianMaxHealth); + } + + public boolean enderDragonRidable = false; +@@ -602,57 +630,74 @@ public class PurpurWorldConfig { + public double enderDragonMaxY = 256D; + public boolean enderDragonAlwaysDropsEggBlock = false; + public boolean enderDragonAlwaysDropsFullExp = false; ++ public double enderDragonMaxHealth = 200.0D; + private void enderDragonSettings() { + enderDragonRidable = getBoolean("mobs.ender_dragon.ridable", enderDragonRidable); + enderDragonRidableInWater = getBoolean("mobs.ender_dragon.ridable-in-water", enderDragonRidableInWater); + enderDragonMaxY = getDouble("mobs.ender_dragon.ridable-max-y", enderDragonMaxY); + enderDragonAlwaysDropsEggBlock = getBoolean("mobs.ender_dragon.always-drop-egg-block", enderDragonAlwaysDropsEggBlock); + enderDragonAlwaysDropsFullExp = getBoolean("mobs.ender_dragon.always-drop-full-exp", enderDragonAlwaysDropsFullExp); ++ if (PurpurConfig.version < 8) { ++ double oldValue = getDouble("mobs.ender_dragon.max-health", enderDragonMaxHealth); ++ set("mobs.ender_dragon.attributes.max-health", oldValue); ++ set("mobs.ender_dragon.max-health", null); ++ } ++ enderDragonMaxHealth = getDouble("mobs.ender_dragon.attributes.max-health", enderDragonMaxHealth); + } + + public boolean endermanRidable = false; + public boolean endermanRidableInWater = false; + public boolean endermanAllowGriefing = true; + public boolean endermanDespawnEvenWithBlock = false; ++ public double endermanMaxHealth = 40.0D; + private void endermanSettings() { + endermanRidable = getBoolean("mobs.enderman.ridable", endermanRidable); + endermanRidableInWater = getBoolean("mobs.enderman.ridable-in-water", endermanRidableInWater); + endermanAllowGriefing = getBoolean("mobs.enderman.allow-griefing", endermanAllowGriefing); + endermanDespawnEvenWithBlock = getBoolean("mobs.enderman.can-despawn-with-held-block", endermanDespawnEvenWithBlock); ++ endermanMaxHealth = getDouble("mobs.enderman.attributes.max-health", endermanMaxHealth); + } + + public boolean endermiteRidable = false; + public boolean endermiteRidableInWater = false; ++ public double endermiteMaxHealth = 8.0D; + private void endermiteSettings() { + endermiteRidable = getBoolean("mobs.endermite.ridable", endermiteRidable); + endermiteRidableInWater = getBoolean("mobs.endermite.ridable-in-water", endermiteRidableInWater); ++ endermiteMaxHealth = getDouble("mobs.endermite.attributes.max-health", endermiteMaxHealth); + } + + public boolean evokerRidable = false; + public boolean evokerRidableInWater = false; ++ public double evokerMaxHealth = 24.0D; + private void evokerSettings() { + evokerRidable = getBoolean("mobs.evoker.ridable", evokerRidable); + evokerRidableInWater = getBoolean("mobs.evoker.ridable-in-water", evokerRidableInWater); ++ evokerMaxHealth = getDouble("mobs.evoker.attributes.max-health", evokerMaxHealth); + } + + public boolean foxRidable = false; + public boolean foxRidableInWater = false; + public boolean foxTypeChangesWithTulips = false; + public int foxBreedingTicks = 6000; ++ public double foxMaxHealth = 10.0D; + private void foxSettings() { + foxRidable = getBoolean("mobs.fox.ridable", foxRidable); + foxRidableInWater = getBoolean("mobs.fox.ridable-in-water", foxRidableInWater); + foxTypeChangesWithTulips = getBoolean("mobs.fox.tulips-change-type", foxTypeChangesWithTulips); + foxBreedingTicks = getInt("mobs.fox.breeding-delay-ticks", foxBreedingTicks); ++ foxMaxHealth = getDouble("mobs.fox.attributes.max-health", foxMaxHealth); + } + + public boolean ghastRidable = false; + public boolean ghastRidableInWater = false; + public double ghastMaxY = 256D; ++ public double ghastMaxHealth = 10.0D; + private void ghastSettings() { + ghastRidable = getBoolean("mobs.ghast.ridable", ghastRidable); + ghastRidableInWater = getBoolean("mobs.ghast.ridable-in-water", ghastRidableInWater); + ghastMaxY = getDouble("mobs.ghast.ridable-max-y", ghastMaxY); ++ ghastMaxHealth = getDouble("mobs.ghast.attributes.max-health", ghastMaxHealth); + } + + public boolean giantRidable = false; +@@ -682,24 +727,32 @@ public class PurpurWorldConfig { + } + + public boolean guardianRidable = false; ++ public double guardianMaxHealth = 30.0D; + private void guardianSettings() { + guardianRidable = getBoolean("mobs.guardian.ridable", guardianRidable); ++ guardianMaxHealth = getDouble("mobs.guardian.attributes.max-health", guardianMaxHealth); + } + + public boolean hoglinRidable = false; + public boolean hoglinRidableInWater = false; + public int hoglinBreedingTicks = 6000; ++ public double hoglinMaxHealth = 40.0D; + private void hoglinSettings() { + hoglinRidable = getBoolean("mobs.hoglin.ridable", hoglinRidable); + hoglinRidableInWater = getBoolean("mobs.hoglin.ridable-in-water", hoglinRidableInWater); + hoglinBreedingTicks = getInt("mobs.hoglin.breeding-delay-ticks", hoglinBreedingTicks); ++ hoglinMaxHealth = getDouble("mobs.hoglin.attributes.max-health", hoglinMaxHealth); + } + + public boolean horseRidableInWater = false; + public int horseBreedingTicks = 6000; ++ public double horseMaxHealthMin = 15.0D; ++ public double horseMaxHealthMax = 30.0D; + private void horseSettings() { + horseRidableInWater = getBoolean("mobs.horse.ridable-in-water", horseRidableInWater); + horseBreedingTicks = getInt("mobs.horse.breeding-delay-ticks", horseBreedingTicks); ++ horseMaxHealthMin = getDouble("mobs.horse.attributes.max-health.min", horseMaxHealthMin); ++ horseMaxHealthMax = getDouble("mobs.horse.attributes.max-health.max", horseMaxHealthMax); + } + + public boolean huskRidable = false; +@@ -707,12 +760,14 @@ public class PurpurWorldConfig { + public boolean huskJockeyOnlyBaby = true; + public double huskJockeyChance = 0.05D; + public boolean huskJockeyTryExistingChickens = true; ++ public double huskMaxHealth = 20.0D; + private void huskSettings() { + huskRidable = getBoolean("mobs.husk.ridable", huskRidable); + huskRidableInWater = getBoolean("mobs.husk.ridable-in-water", huskRidableInWater); + huskJockeyOnlyBaby = getBoolean("mobs.husk.jockey.only-babies", huskJockeyOnlyBaby); + huskJockeyChance = getDouble("mobs.husk.jockey.chance", huskJockeyChance); + huskJockeyTryExistingChickens = getBoolean("mobs.husk.jockey.try-existing-chickens", huskJockeyTryExistingChickens); ++ huskMaxHealth = getDouble("mobs.husk.attributes.max-health", huskMaxHealth); + } + + public boolean illusionerRidable = false; +@@ -736,76 +791,100 @@ public class PurpurWorldConfig { + public boolean ironGolemRidable = false; + public boolean ironGolemRidableInWater = false; + public boolean ironGolemCanSwim = false; ++ public double ironGolemMaxHealth = 100.0D; + private void ironGolemSettings() { + ironGolemRidable = getBoolean("mobs.iron_golem.ridable", ironGolemRidable); + ironGolemRidableInWater = getBoolean("mobs.iron_golem.ridable-in-water", ironGolemRidableInWater); + ironGolemCanSwim = getBoolean("mobs.iron_golem.can-swim", ironGolemCanSwim); ++ ironGolemMaxHealth = getDouble("mobs.iron_golem.attributes.max-health", ironGolemMaxHealth); + } + + public boolean llamaRidable = false; + public boolean llamaRidableInWater = false; + public int llamaBreedingTicks = 6000; ++ public double llamaMaxHealthMin = 15.0D; ++ public double llamaMaxHealthMax = 30.0D; + private void llamaSettings() { + llamaRidable = getBoolean("mobs.llama.ridable", llamaRidable); + llamaRidableInWater = getBoolean("mobs.llama.ridable-in-water", llamaRidableInWater); + llamaBreedingTicks = getInt("mobs.llama.breeding-delay-ticks", llamaBreedingTicks); ++ llamaMaxHealthMin = getDouble("mobs.llama.attributes.max-health.min", llamaMaxHealthMin); ++ llamaMaxHealthMax = getDouble("mobs.llama.attributes.max-health.max", llamaMaxHealthMax); + } + + public boolean llamaTraderRidable = false; + public boolean llamaTraderRidableInWater = false; ++ public double llamaTraderMaxHealthMin = 15.0D; ++ public double llamaTraderMaxHealthMax = 30.0D; + private void llamaTraderSettings() { + llamaTraderRidable = getBoolean("mobs.trader_llama.ridable", llamaTraderRidable); + llamaTraderRidableInWater = getBoolean("mobs.trader_llama.ridable-in-water", llamaTraderRidableInWater); ++ llamaTraderMaxHealthMin = getDouble("mobs.trader_llama.attributes.max-health.min", llamaTraderMaxHealthMin); ++ llamaTraderMaxHealthMax = getDouble("mobs.trader_llama.attributes.max-health.max", llamaTraderMaxHealthMax); + } + + public boolean magmaCubeRidable = false; + public boolean magmaCubeRidableInWater = false; ++ public String magmaCubeMaxHealth = "size * size"; + private void magmaCubeSettings() { + magmaCubeRidable = getBoolean("mobs.magma_cube.ridable", magmaCubeRidable); + magmaCubeRidableInWater = getBoolean("mobs.magma_cube.ridable-in-water", magmaCubeRidableInWater); ++ magmaCubeMaxHealth = getString("mobs.magma_cube.attributes.max-health", magmaCubeMaxHealth); + } + + public boolean mooshroomRidable = false; + public boolean mooshroomRidableInWater = false; + public int mooshroomBreedingTicks = 6000; ++ public double mooshroomMaxHealth = 10.0D; + private void mooshroomSettings() { + mooshroomRidable = getBoolean("mobs.mooshroom.ridable", mooshroomRidable); + mooshroomRidableInWater = getBoolean("mobs.mooshroom.ridable-in-water", mooshroomRidableInWater); + mooshroomBreedingTicks = getInt("mobs.mooshroom.breeding-delay-ticks", mooshroomBreedingTicks); ++ mooshroomMaxHealth = getDouble("mobs.mooshroom.attributes.max-health", mooshroomMaxHealth); + } + + public boolean muleRidableInWater = false; + public int muleBreedingTicks = 6000; ++ public double muleMaxHealthMin = 15.0D; ++ public double muleMaxHealthMax = 30.0D; + private void muleSettings() { + muleRidableInWater = getBoolean("mobs.mule.ridable-in-water", muleRidableInWater); + muleBreedingTicks = getInt("mobs.mule.breeding-delay-ticks", muleBreedingTicks); ++ muleMaxHealthMin = getDouble("mobs.mule.attributes.max-health.min", muleMaxHealthMin); ++ muleMaxHealthMax = getDouble("mobs.mule.attributes.max-health.max", muleMaxHealthMax); + } + + public boolean ocelotRidable = false; + public boolean ocelotRidableInWater = false; + public int ocelotBreedingTicks = 6000; ++ public double ocelotMaxHealth = 10.0D; + private void ocelotSettings() { + ocelotRidable = getBoolean("mobs.ocelot.ridable", ocelotRidable); + ocelotRidableInWater = getBoolean("mobs.ocelot.ridable-in-water", ocelotRidableInWater); + ocelotBreedingTicks = getInt("mobs.ocelot.breeding-delay-ticks", ocelotBreedingTicks); ++ ocelotMaxHealth = getDouble("mobs.ocelot.attributes.max-health", ocelotMaxHealth); + } + + public boolean pandaRidable = false; + public boolean pandaRidableInWater = false; + public int pandaBreedingTicks = 6000; ++ public double pandaMaxHealth = 20.0D; + private void pandaSettings() { + pandaRidable = getBoolean("mobs.panda.ridable", pandaRidable); + pandaRidableInWater = getBoolean("mobs.panda.ridable-in-water", pandaRidableInWater); + pandaBreedingTicks = getInt("mobs.panda.breeding-delay-ticks", pandaBreedingTicks); ++ pandaMaxHealth = getDouble("mobs.panda.attributes.max-health", pandaMaxHealth); + } + + public boolean parrotRidable = false; + public boolean parrotRidableInWater = false; + public double parrotMaxY = 256D; ++ public double parrotMaxHealth = 6.0D; + private void parrotSettings() { + parrotRidable = getBoolean("mobs.parrot.ridable", parrotRidable); + parrotRidableInWater = getBoolean("mobs.parrot.ridable-in-water", parrotRidableInWater); + parrotMaxY = getDouble("mobs.parrot.ridable-max-y", parrotMaxY); ++ parrotMaxHealth = getDouble("mobs.parrot.attributes.max-health", parrotMaxHealth); + } + + public boolean phantomRidable = false; +@@ -831,6 +910,7 @@ public class PurpurWorldConfig { + public int phantomBurnInLight = 0; + public boolean phantomIgnorePlayersWithTorch = false; + public boolean phantomBurnInDaylight = true; ++ public double phantomMaxHealth = 20.0D; + private void phantomSettings() { + phantomRidable = getBoolean("mobs.phantom.ridable", phantomRidable); + phantomRidableInWater = getBoolean("mobs.phantom.ridable-in-water", phantomRidableInWater); +@@ -855,38 +935,47 @@ public class PurpurWorldConfig { + phantomBurnInLight = getInt("mobs.phantom.burn-in-light", phantomBurnInLight); + phantomBurnInDaylight = getBoolean("mobs.phantom.burn-in-daylight", phantomBurnInDaylight); + phantomIgnorePlayersWithTorch = getBoolean("mobs.phantom.ignore-players-with-torch", phantomIgnorePlayersWithTorch); ++ phantomMaxHealth = getDouble("mobs.phantom.attributes.max-health", phantomMaxHealth); + } + + public boolean pigRidable = false; + public boolean pigRidableInWater = false; + public boolean pigGiveSaddleBack = false; + public int pigBreedingTicks = 6000; ++ public double pigMaxHealth = 10.0D; + private void pigSettings() { + pigRidable = getBoolean("mobs.pig.ridable", pigRidable); + pigRidableInWater = getBoolean("mobs.pig.ridable-in-water", pigRidableInWater); + pigGiveSaddleBack = getBoolean("mobs.pig.give-saddle-back", pigGiveSaddleBack); + pigBreedingTicks = getInt("mobs.pig.breeding-delay-ticks", pigBreedingTicks); ++ pigMaxHealth = getDouble("mobs.pig.attributes.max-health", pigMaxHealth); + } + + public boolean piglinRidable = false; + public boolean piglinRidableInWater = false; ++ public double piglinMaxHealth = 16.0D; + private void piglinSettings() { + piglinRidable = getBoolean("mobs.piglin.ridable", piglinRidable); + piglinRidableInWater = getBoolean("mobs.piglin.ridable-in-water", piglinRidableInWater); ++ piglinMaxHealth = getDouble("mobs.piglin.attributes.max-health", piglinMaxHealth); + } + + public boolean piglinBruteRidable = false; + public boolean piglinBruteRidableInWater = false; ++ public double piglinBruteMaxHealth = 50.0D; + private void piglinBruteSettings() { + piglinBruteRidable = getBoolean("mobs.piglin_brute.ridable", piglinBruteRidable); + piglinBruteRidableInWater = getBoolean("mobs.piglin_brute.ridable-in-water", piglinBruteRidableInWater); ++ piglinBruteMaxHealth = getDouble("mobs.piglin_brute.attributes.max-health", piglinBruteMaxHealth); + } + + public boolean pillagerRidable = false; + public boolean pillagerRidableInWater = false; ++ public double pillagerMaxHealth = 24.0D; + private void pillagerSettings() { + pillagerRidable = getBoolean("mobs.pillager.ridable", pillagerRidable); + pillagerRidableInWater = getBoolean("mobs.pillager.ridable-in-water", pillagerRidableInWater); ++ pillagerMaxHealth = getDouble("mobs.pillager.attributes.max-health", pillagerMaxHealth); + } + + public boolean polarBearRidable = false; +@@ -894,6 +983,7 @@ public class PurpurWorldConfig { + public String polarBearBreedableItemString = ""; + public Item polarBearBreedableItem = null; + public int polarBearBreedingTicks = 6000; ++ public double polarBearMaxHealth = 30.0D; + private void polarBearSettings() { + polarBearRidable = getBoolean("mobs.polar_bear.ridable", polarBearRidable); + polarBearRidableInWater = getBoolean("mobs.polar_bear.ridable-in-water", polarBearRidableInWater); +@@ -901,11 +991,14 @@ public class PurpurWorldConfig { + Item item = IRegistry.ITEM.get(new MinecraftKey(polarBearBreedableItemString)); + if (item != Items.AIR) polarBearBreedableItem = item; + polarBearBreedingTicks = getInt("mobs.polar_bear.breeding-delay-ticks", polarBearBreedingTicks); ++ polarBearMaxHealth = getDouble("mobs.polar_bear.attributes.max-health", polarBearMaxHealth); + } + + public boolean pufferfishRidable = false; ++ public double pufferfishMaxHealth = 3.0D; + private void pufferfishSettings() { + pufferfishRidable = getBoolean("mobs.pufferfish.ridable", pufferfishRidable); ++ pufferfishMaxHealth = getDouble("mobs.pufferfish.attributes.max-health", pufferfishMaxHealth); + } + + public boolean rabbitRidable = false; +@@ -913,68 +1006,86 @@ public class PurpurWorldConfig { + public double rabbitNaturalToast = 0.0D; + public double rabbitNaturalKiller = 0.0D; + public int rabbitBreedingTicks = 6000; ++ public double rabbitMaxHealth = 3.0D; + private void rabbitSettings() { + rabbitRidable = getBoolean("mobs.rabbit.ridable", rabbitRidable); + rabbitRidableInWater = getBoolean("mobs.rabbit.ridable-in-water", rabbitRidableInWater); + rabbitNaturalToast = getDouble("mobs.rabbit.spawn-toast-chance", rabbitNaturalToast); + rabbitNaturalKiller = getDouble("mobs.rabbit.spawn-killer-rabbit-chance", rabbitNaturalKiller); + rabbitBreedingTicks = getInt("mobs.rabbit.breeding-delay-ticks", rabbitBreedingTicks); ++ rabbitMaxHealth = getDouble("mobs.rabbit.attributes.max-health", rabbitMaxHealth); + } + + public boolean ravagerRidable = false; + public boolean ravagerRidableInWater = false; ++ public double ravagerMaxHealth = 100.0D; + private void ravagerSettings() { + ravagerRidable = getBoolean("mobs.ravager.ridable", ravagerRidable); + ravagerRidableInWater = getBoolean("mobs.ravager.ridable-in-water", ravagerRidableInWater); ++ ravagerMaxHealth = getDouble("mobs.ravager.attributes.max-health", ravagerMaxHealth); + } + + public boolean salmonRidable = false; ++ public double salmonMaxHealth = 3.0D; + private void salmonSettings() { + salmonRidable = getBoolean("mobs.salmon.ridable", salmonRidable); ++ salmonMaxHealth = getDouble("mobs.salmon.attributes.max-health", salmonMaxHealth); + } + + public boolean sheepRidable = false; + public boolean sheepRidableInWater = false; + public int sheepBreedingTicks = 6000; ++ public double sheepMaxHealth = 8.0D; + private void sheepSettings() { + sheepRidable = getBoolean("mobs.sheep.ridable", sheepRidable); + sheepRidableInWater = getBoolean("mobs.sheep.ridable-in-water", sheepRidableInWater); + sheepBreedingTicks = getInt("mobs.sheep.breeding-delay-ticks", sheepBreedingTicks); ++ sheepMaxHealth = getDouble("mobs.sheep.attributes.max-health", sheepMaxHealth); + } + + public boolean shulkerRidable = false; + public boolean shulkerRidableInWater = false; ++ public double shulkerMaxHealth = 30.0D; + private void shulkerSettings() { + shulkerRidable = getBoolean("mobs.shulker.ridable", shulkerRidable); + shulkerRidableInWater = getBoolean("mobs.shulker.ridable-in-water", shulkerRidableInWater); ++ shulkerMaxHealth = getDouble("mobs.shulker.attributes.max-health", shulkerMaxHealth); + } + + public boolean silverfishRidable = false; + public boolean silverfishRidableInWater = false; ++ public double silverfishMaxHealth = 8.0D; + private void silverfishSettings() { + silverfishRidable = getBoolean("mobs.silverfish.ridable", silverfishRidable); + silverfishRidableInWater = getBoolean("mobs.silverfish.ridable-in-water", silverfishRidableInWater); ++ silverfishMaxHealth = getDouble("mobs.silverfish.attributes.max-health", silverfishMaxHealth); + } + + public boolean skeletonRidable = false; + public boolean skeletonRidableInWater = false; ++ public double skeletonMaxHealth = 20.0D; + private void skeletonSettings() { + skeletonRidable = getBoolean("mobs.skeleton.ridable", skeletonRidable); + skeletonRidableInWater = getBoolean("mobs.skeleton.ridable-in-water", skeletonRidableInWater); ++ skeletonMaxHealth = getDouble("mobs.skeleton.attributes.max-health", skeletonMaxHealth); + } + + public boolean skeletonHorseCanSwim = false; + public boolean skeletonHorseRidableInWater = true; ++ public double skeletonHorseMaxHealth = 15.0D; + private void skeletonHorseSettings() { + skeletonHorseCanSwim = getBoolean("mobs.skeleton_horse.can-swim", skeletonHorseCanSwim); + skeletonHorseRidableInWater = getBoolean("mobs.skeleton_horse.ridable-in-water", skeletonHorseRidableInWater); ++ skeletonHorseMaxHealth = getDouble("mobs.skeleton_horse.attributes.max-health", skeletonHorseMaxHealth); + } + + public boolean slimeRidable = false; + public boolean slimeRidableInWater = false; ++ public String slimeMaxHealth = "size * size"; + private void slimeSettings() { + slimeRidable = getBoolean("mobs.slime.ridable", slimeRidable); + slimeRidableInWater = getBoolean("mobs.slime.ridable-in-water", slimeRidableInWater); ++ slimeMaxHealth = getString("mobs.slime.attributes.max-health", slimeMaxHealth); + } + + public boolean snowGolemRidable = false; +@@ -986,6 +1097,7 @@ public class PurpurWorldConfig { + public int snowGolemSnowBallMax = 20; + public float snowGolemSnowBallModifier = 10.0F; + public double snowGolemAttackDistance = 1.25D; ++ public double snowGolemMaxHealth = 4.0D; + private void snowGolemSettings() { + snowGolemRidable = getBoolean("mobs.snow_golem.ridable", snowGolemRidable); + snowGolemRidableInWater = getBoolean("mobs.snow_golem.ridable-in-water", snowGolemRidableInWater); +@@ -996,63 +1108,78 @@ public class PurpurWorldConfig { + snowGolemSnowBallMax = getInt("mobs.snow_golem.max-shoot-interval-ticks", snowGolemSnowBallMax); + snowGolemSnowBallModifier = (float) getDouble("mobs.snow_golem.snow-ball-modifier", snowGolemSnowBallModifier); + snowGolemAttackDistance = getDouble("mobs.snow_golem.attack-distance", snowGolemAttackDistance); ++ snowGolemMaxHealth = getDouble("mobs.snow_golem.attributes.max-health", snowGolemMaxHealth); + } + + public boolean squidRidable = false; + public boolean squidImmuneToEAR = true; + public double squidOffsetWaterCheck = 0.0D; + public boolean squidsCanFly = false; ++ public double squidMaxHealth = 10.0D; + private void squidSettings() { + squidRidable = getBoolean("mobs.squid.ridable", squidRidable); + squidImmuneToEAR = getBoolean("mobs.squid.immune-to-EAR", squidImmuneToEAR); + squidOffsetWaterCheck = getDouble("mobs.squid.water-offset-check", squidOffsetWaterCheck); + squidsCanFly = getBoolean("mobs.squid.can-fly", squidsCanFly); ++ squidMaxHealth = getDouble("mobs.squid.attributes.max-health", squidMaxHealth); + } + + public boolean spiderRidable = false; + public boolean spiderRidableInWater = false; ++ public double spiderMaxHealth = 16.0D; + private void spiderSettings() { + spiderRidable = getBoolean("mobs.spider.ridable", spiderRidable); + spiderRidableInWater = getBoolean("mobs.spider.ridable-in-water", spiderRidableInWater); ++ spiderMaxHealth = getDouble("mobs.spider.attributes.max-health", spiderMaxHealth); + } + + public boolean strayRidable = false; + public boolean strayRidableInWater = false; ++ public double strayMaxHealth = 20.0D; + private void straySettings() { + strayRidable = getBoolean("mobs.stray.ridable", strayRidable); + strayRidableInWater = getBoolean("mobs.stray.ridable-in-water", strayRidableInWater); ++ strayMaxHealth = getDouble("mobs.stray.attributes.max-health", strayMaxHealth); + } + + public boolean striderRidable = false; + public boolean striderRidableInWater = false; + public int striderBreedingTicks = 6000; ++ 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); ++ striderMaxHealth = getDouble("mobs.strider.attributes.max-health", striderMaxHealth); + } + + public boolean tropicalFishRidable = false; ++ public double tropicalFishMaxHealth = 3.0D; + private void tropicalFishSettings() { + tropicalFishRidable = getBoolean("mobs.tropical_fish.ridable", tropicalFishRidable); ++ tropicalFishMaxHealth = getDouble("mobs.tropical_fish.attributes.max-health", tropicalFishMaxHealth); + } + + public boolean turtleRidable = false; + public boolean turtleRidableInWater = false; + public int turtleBreedingTicks = 6000; ++ public double turtleMaxHealth = 30.0D; + private void turtleSettings() { + turtleRidable = getBoolean("mobs.turtle.ridable", turtleRidable); + turtleRidableInWater = getBoolean("mobs.turtle.ridable-in-water", turtleRidableInWater); + turtleBreedingTicks = getInt("mobs.turtle.breeding-delay-ticks", turtleBreedingTicks); ++ turtleMaxHealth = getDouble("mobs.turtle.attributes.max-health", turtleMaxHealth); + } + + public boolean vexRidable = false; + public boolean vexRidableInWater = false; + public double vexMaxY = 256D; ++ public double vexMaxHealth = 14.0D; + private void vexSettings() { + vexRidable = getBoolean("mobs.vex.ridable", vexRidable); + vexRidableInWater = getBoolean("mobs.vex.ridable-in-water", vexRidableInWater); + vexMaxY = getDouble("mobs.vex.ridable-max-y", vexMaxY); ++ vexMaxHealth = getDouble("mobs.vex.attributes.max-health", vexMaxHealth); + } + + public boolean villagerRidable = false; +@@ -1068,6 +1195,7 @@ public class PurpurWorldConfig { + public boolean villagerLobotomize1x1 = false; + public boolean villagerClericsFarmWarts = false; + public boolean villagerClericFarmersThrowWarts = true; ++ public double villagerMaxHealth = 20.0D; + private void villagerSettings() { + villagerRidable = getBoolean("mobs.villager.ridable", villagerRidable); + villagerRidableInWater = getBoolean("mobs.villager.ridable-in-water", villagerRidableInWater); +@@ -1082,33 +1210,40 @@ public class PurpurWorldConfig { + villagerLobotomize1x1 = getBoolean("mobs.villager.lobotomize-1x1", villagerLobotomize1x1); + villagerClericsFarmWarts = getBoolean("mobs.villager.clerics-farm-warts", villagerClericsFarmWarts); + villagerClericFarmersThrowWarts = getBoolean("mobs.villager.cleric-wart-farmers-throw-warts-at-villagers", villagerClericFarmersThrowWarts); ++ villagerMaxHealth = getDouble("mobs.villager.attributes.max-health", villagerMaxHealth); + } + + public boolean villagerTraderRidable = false; + public boolean villagerTraderRidableInWater = false; + public boolean villagerTraderCanBeLeashed = false; + public boolean villagerTraderFollowEmeraldBlock = false; ++ public double villagerTraderMaxHealth = 20.0D; + private void villagerTraderSettings() { + villagerTraderRidable = getBoolean("mobs.wandering_trader.ridable", villagerTraderRidable); + villagerTraderRidableInWater = getBoolean("mobs.wandering_trader.ridable-in-water", villagerTraderRidableInWater); + villagerTraderCanBeLeashed = getBoolean("mobs.wandering_trader.can-be-leashed", villagerTraderCanBeLeashed); + villagerTraderFollowEmeraldBlock = getBoolean("mobs.wandering_trader.follow-emerald-blocks", villagerTraderFollowEmeraldBlock); ++ villagerTraderMaxHealth = getDouble("mobs.wandering_trader.attributes.max-health", villagerTraderMaxHealth); + } + + public boolean vindicatorRidable = false; + public boolean vindicatorRidableInWater = false; + public double vindicatorJohnnySpawnChance = 0D; ++ public double vindicatorMaxHealth = 24.0D; + private void vindicatorSettings() { + vindicatorRidable = getBoolean("mobs.vindicator.ridable", vindicatorRidable); + vindicatorRidableInWater = getBoolean("mobs.vindicator.ridable-in-water", vindicatorRidableInWater); + vindicatorJohnnySpawnChance = getDouble("mobs.vindicator.johnny.spawn-chance", vindicatorJohnnySpawnChance); ++ vindicatorMaxHealth = getDouble("mobs.vindicator.attributes.max-health", vindicatorMaxHealth); + } + + public boolean witchRidable = false; + public boolean witchRidableInWater = false; ++ public double witchMaxHealth = 26.0D; + private void witchSettings() { + witchRidable = getBoolean("mobs.witch.ridable", witchRidable); + witchRidableInWater = getBoolean("mobs.witch.ridable-in-water", witchRidableInWater); ++ witchMaxHealth = getDouble("mobs.witch.attributes.max-health", witchMaxHealth); + } + + public boolean witherRidable = false; +@@ -1134,10 +1269,12 @@ public class PurpurWorldConfig { + public boolean witherSkeletonRidable = false; + public boolean witherSkeletonRidableInWater = false; + public boolean witherSkeletonTakesWitherDamage = false; ++ public double witherSkeletonMaxHealth = 20.0D; + private void witherSkeletonSettings() { + witherSkeletonRidable = getBoolean("mobs.wither_skeleton.ridable", witherSkeletonRidable); + witherSkeletonRidableInWater = getBoolean("mobs.wither_skeleton.ridable-in-water", witherSkeletonRidableInWater); + witherSkeletonTakesWitherDamage = getBoolean("mobs.wither_skeleton.takes-wither-damage", witherSkeletonTakesWitherDamage); ++ witherSkeletonMaxHealth = getDouble("mobs.wither_skeleton.attributes.max-health", witherSkeletonMaxHealth); + } + + public boolean wolfRidable = false; +@@ -1146,6 +1283,7 @@ public class PurpurWorldConfig { + public boolean wolfMilkCuresRabies = true; + public double wolfNaturalRabid = 0.0D; + public int wolfBreedingTicks = 6000; ++ public double wolfMaxHealth = 8.0D; + private void wolfSettings() { + wolfRidable = getBoolean("mobs.wolf.ridable", wolfRidable); + wolfRidableInWater = getBoolean("mobs.wolf.ridable-in-water", wolfRidableInWater); +@@ -1157,13 +1295,16 @@ public class PurpurWorldConfig { + wolfMilkCuresRabies = getBoolean("mobs.wolf.milk-cures-rabid-wolves", wolfMilkCuresRabies); + wolfNaturalRabid = getDouble("mobs.wolf.spawn-rabid-chance", wolfNaturalRabid); + wolfBreedingTicks = getInt("mobs.wolf.breeding-delay-ticks", wolfBreedingTicks); ++ wolfMaxHealth = getDouble("mobs.wolf.attributes.max-health", wolfMaxHealth); + } + + public boolean zoglinRidable = false; + public boolean zoglinRidableInWater = false; ++ public double zoglinMaxHealth = 40.0D; + private void zoglinSettings() { + zoglinRidable = getBoolean("mobs.zoglin.ridable", zoglinRidable); + zoglinRidableInWater = getBoolean("mobs.zoglin.ridable-in-water", zoglinRidableInWater); ++ zoglinMaxHealth = getDouble("mobs.zoglin.attributes.max-health", zoglinMaxHealth); + } + + public boolean zombieRidable = false; +@@ -1173,6 +1314,7 @@ public class PurpurWorldConfig { + public boolean zombieJockeyTryExistingChickens = true; + public boolean zombieAggressiveTowardsVillagerWhenLagging = true; + public EnumDifficulty zombieBreakDoorMinDifficulty = EnumDifficulty.HARD; ++ public double zombieMaxHealth = 20.0D; + private void zombieSettings() { + zombieRidable = getBoolean("mobs.zombie.ridable", zombieRidable); + zombieRidableInWater = getBoolean("mobs.zombie.ridable-in-water", zombieRidableInWater); +@@ -1185,15 +1327,18 @@ public class PurpurWorldConfig { + } catch (IllegalArgumentException ignore) { + zombieBreakDoorMinDifficulty = EnumDifficulty.HARD; + } ++ zombieMaxHealth = getDouble("mobs.zombie.attributes.max-health", zombieMaxHealth); + } + + public boolean zombieHorseCanSwim = false; + public boolean zombieHorseRidableInWater = false; + public double zombieHorseSpawnChance = 0.0D; ++ public double zombieHorseMaxHealth = 15.0D; + private void zombieHorseSettings() { + zombieHorseCanSwim = getBoolean("mobs.zombie_horse.can-swim", zombieHorseCanSwim); + zombieHorseRidableInWater = getBoolean("mobs.zombie_horse.ridable-in-water", zombieHorseRidableInWater); + zombieHorseSpawnChance = getDouble("mobs.zombie_horse.spawn-chance", zombieHorseSpawnChance); ++ zombieHorseMaxHealth = getDouble("mobs.zombie_horse.attributes.max-health", zombieHorseMaxHealth); + } + + public boolean zombifiedPiglinRidable = false; +@@ -1202,6 +1347,7 @@ public class PurpurWorldConfig { + public double zombifiedPiglinJockeyChance = 0.05D; + public boolean zombifiedPiglinJockeyTryExistingChickens = true; + public boolean zombifiedPiglinCountAsPlayerKillWhenAngry = true; ++ public double zombifiedPiglinMaxHealth = 20.0D; + private void zombifiedPiglinSettings() { + zombifiedPiglinRidable = getBoolean("mobs.zombified_piglin.ridable", zombifiedPiglinRidable); + zombifiedPiglinRidableInWater = getBoolean("mobs.zombified_piglin.ridable-in-water", zombifiedPiglinRidableInWater); +@@ -1209,6 +1355,7 @@ public class PurpurWorldConfig { + zombifiedPiglinJockeyChance = getDouble("mobs.zombified_piglin.jockey.chance", zombifiedPiglinJockeyChance); + zombifiedPiglinJockeyTryExistingChickens = getBoolean("mobs.zombified_piglin.jockey.try-existing-chickens", zombifiedPiglinJockeyTryExistingChickens); + zombifiedPiglinCountAsPlayerKillWhenAngry = getBoolean("mobs.zombified_piglin.count-as-player-kill-when-angry", zombifiedPiglinCountAsPlayerKillWhenAngry); ++ zombifiedPiglinMaxHealth = getDouble("mobs.zombified_piglin.attributes.max-health", zombifiedPiglinMaxHealth); + } + + public boolean zombieVillagerRidable = false; +@@ -1216,11 +1363,13 @@ public class PurpurWorldConfig { + public boolean zombieVillagerJockeyOnlyBaby = true; + public double zombieVillagerJockeyChance = 0.05D; + public boolean zombieVillagerJockeyTryExistingChickens = true; ++ public double zombieVillagerMaxHealth = 20.0D; + private void zombieVillagerSettings() { + zombieVillagerRidable = getBoolean("mobs.zombie_villager.ridable", zombieVillagerRidable); + zombieVillagerRidableInWater = getBoolean("mobs.zombie_villager.ridable-in-water", zombieVillagerRidableInWater); + zombieVillagerJockeyOnlyBaby = getBoolean("mobs.zombie_villager.jockey.only-babies", zombieVillagerJockeyOnlyBaby); + zombieVillagerJockeyChance = getDouble("mobs.zombie_villager.jockey.chance", zombieVillagerJockeyChance); + zombieVillagerJockeyTryExistingChickens = getBoolean("mobs.zombie_villager.jockey.try-existing-chickens", zombieVillagerJockeyTryExistingChickens); ++ zombieVillagerMaxHealth = getDouble("mobs.zombie_villager.attributes.max-health", zombieVillagerMaxHealth); + } + }