diff --git a/patches/server/0082-Stop-squids-floating-on-top-of-water.patch b/patches/server/0082-Stop-squids-floating-on-top-of-water.patch deleted file mode 100644 index b4fbfd859..000000000 --- a/patches/server/0082-Stop-squids-floating-on-top-of-water.patch +++ /dev/null @@ -1,75 +0,0 @@ -From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001 -From: William Blake Galbreath -Date: Thu, 13 Aug 2020 04:00:26 -0500 -Subject: [PATCH] Stop squids floating on top of water - - -diff --git a/net/minecraft/world/entity/Entity.java b/net/minecraft/world/entity/Entity.java -index eea1053e0ec1446e117d3ac4732deaba191db8f2..2cf83678a2a37ff9082eae1a8b6cbf5be60a065f 100644 ---- a/net/minecraft/world/entity/Entity.java -+++ b/net/minecraft/world/entity/Entity.java -@@ -4775,6 +4775,12 @@ public abstract class Entity implements SyncedDataHolder, Nameable, EntityAccess - return Mth.lerp(delta, this.yRotO, this.yRot); - } - -+ // Purpur start -+ public AABB getAxisForFluidCheck() { -+ return this.getBoundingBox().deflate(0.001D); -+ } -+ // Purpur end -+ - // Paper start - optimise collisions - public boolean updateFluidHeightAndDoFluidPushing(final TagKey fluid, final double flowScale) { - if (this.touchingUnloadedChunk()) { -diff --git a/net/minecraft/world/entity/animal/Squid.java b/net/minecraft/world/entity/animal/Squid.java -index bb63ad576731df34a90ab9b1b6165731a826ad7b..490fa58d09d58cefb1adef1ba11823ba14fa2855 100644 ---- a/net/minecraft/world/entity/animal/Squid.java -+++ b/net/minecraft/world/entity/animal/Squid.java -@@ -79,6 +79,12 @@ public class Squid extends AgeableWaterCreature { - this.getAttribute(Attributes.SCALE).setBaseValue(this.level().purpurConfig.squidScale); - } - // Purpur end - Configurable entity base attributes -+ @Override -+ public net.minecraft.world.phys.AABB getAxisForFluidCheck() { -+ // Stops squids from floating just over the water -+ return super.getAxisForFluidCheck().offsetY(level().purpurConfig.squidOffsetWaterCheck); -+ } -+ - @Override - protected void registerGoals() { - this.goalSelector.addGoal(0, new Squid.SquidRandomMovementGoal(this)); -diff --git a/net/minecraft/world/phys/AABB.java b/net/minecraft/world/phys/AABB.java -index 6cf6d4ec7b9e43c7b2b4c0e2fb080964ff588130..e74866e5195a5eeae7666ad7be750edac5947094 100644 ---- a/net/minecraft/world/phys/AABB.java -+++ b/net/minecraft/world/phys/AABB.java -@@ -551,4 +551,10 @@ public class AABB { - public static AABB ofSize(Vec3 center, double dx, double dy, double dz) { - return new AABB(center.x - dx / 2.0, center.y - dy / 2.0, center.z - dz / 2.0, center.x + dx / 2.0, center.y + dy / 2.0, center.z + dz / 2.0); - } -+ -+ // Purpur - tuinity added method -+ public final AABB offsetY(double dy) { -+ return new AABB(this.minX, this.minY + dy, this.minZ, this.maxX, this.maxY + dy, this.maxZ); -+ } -+ // Purpur - } -diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index 109c2d5ba677eee65f44cd93b0fdcee22d04d17b..b04c1c2534bec8f2eee873b43969843f54644dca 100644 ---- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -+++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -@@ -1611,6 +1611,7 @@ public class PurpurWorldConfig { - public double squidMaxHealth = 10.0D; - public double squidScale = 1.0D; - public boolean squidImmuneToEAR = true; -+ public double squidOffsetWaterCheck = 0.0D; - private void squidSettings() { - squidRidable = getBoolean("mobs.squid.ridable", squidRidable); - squidControllable = getBoolean("mobs.squid.controllable", squidControllable); -@@ -1622,6 +1623,7 @@ public class PurpurWorldConfig { - squidMaxHealth = getDouble("mobs.squid.attributes.max_health", squidMaxHealth); - squidScale = Mth.clamp(getDouble("mobs.squid.attributes.scale", squidScale), 0.0625D, 16.0D); - squidImmuneToEAR = getBoolean("mobs.squid.immune-to-EAR", squidImmuneToEAR); -+ squidOffsetWaterCheck = getDouble("mobs.squid.water-offset-check", squidOffsetWaterCheck); - } - - public boolean spiderRidable = false; diff --git a/purpur-server/minecraft-patches/features/0001-Ridables.patch b/purpur-server/minecraft-patches/features/0001-Ridables.patch index 9ae73ec6a..9c6f3ed23 100644 --- a/purpur-server/minecraft-patches/features/0001-Ridables.patch +++ b/purpur-server/minecraft-patches/features/0001-Ridables.patch @@ -75,7 +75,7 @@ index db9860c44faacdf4b24979c2ffa84515e3883299..1fc37692c7ddfc7b7e0961cd9f060233 if ((target instanceof Bucketable && target instanceof LivingEntity && origItem != null && origItem.asItem() == Items.WATER_BUCKET) && (event.isCancelled() || ServerGamePacketListenerImpl.this.player.getInventory().getSelected() == null || ServerGamePacketListenerImpl.this.player.getInventory().getSelected().getItem() != origItem)) { target.resendPossiblyDesyncedEntityData(ServerGamePacketListenerImpl.this.player); // Paper - The entire mob gets deleted, so resend it diff --git a/net/minecraft/world/entity/Entity.java b/net/minecraft/world/entity/Entity.java -index 539741e6fcc2a9d987e6db4df7a886d739c3cf10..605cb383f4749135f61d330dc2e3e198edd00213 100644 +index d7ebfa3a9951922780e079b9767ce8854c555dd1..7cea12d1c0e28f5d08963009c9c37f324a52d4fe 100644 --- a/net/minecraft/world/entity/Entity.java +++ b/net/minecraft/world/entity/Entity.java @@ -3136,6 +3136,13 @@ public abstract class Entity implements SyncedDataHolder, Nameable, EntityAccess @@ -107,7 +107,7 @@ index 539741e6fcc2a9d987e6db4df7a886d739c3cf10..605cb383f4749135f61d330dc2e3e198 if (this.passengers.size() == 1 && this.passengers.get(0) == passenger) { this.passengers = ImmutableList.of(); } else { -@@ -5091,4 +5106,44 @@ public abstract class Entity implements SyncedDataHolder, Nameable, EntityAccess +@@ -5097,4 +5112,44 @@ public abstract class Entity implements SyncedDataHolder, Nameable, EntityAccess return ((ServerLevel) this.level).isPositionEntityTicking(this.blockPosition()); } // Paper end - Expose entity id counter @@ -1761,12 +1761,12 @@ index ac07260c01513fae5a8b9f1fe0f7f2bf113c6c3c..7bd5d82a11dda36389913925406a8a2c } diff --git a/net/minecraft/world/entity/animal/Squid.java b/net/minecraft/world/entity/animal/Squid.java -index 687ac3f50ed517a0b4df70c0c0a01215691ac718..28d67a8e3cbc668badc76bd68ea851654bebcb76 100644 +index 9800f8e3627b37cb655a41aada876bceed313291..33c5831272e92802299ed817f4d5d8abfdd412fb 100644 --- a/net/minecraft/world/entity/animal/Squid.java +++ b/net/minecraft/world/entity/animal/Squid.java -@@ -50,9 +50,32 @@ public class Squid extends AgeableWaterCreature { - this.tentacleSpeed = 1.0F / (this.random.nextFloat() + 1.0F) * 0.2F; +@@ -58,9 +58,32 @@ public class Squid extends AgeableWaterCreature { } + // Purpur end - Stop squids floating on top of water + // Purpur start - Ridables + @Override @@ -1797,7 +1797,7 @@ index 687ac3f50ed517a0b4df70c0c0a01215691ac718..28d67a8e3cbc668badc76bd68ea85165 this.goalSelector.addGoal(1, new Squid.SquidFleeGoal()); } -@@ -307,6 +330,37 @@ public class Squid extends AgeableWaterCreature { +@@ -315,6 +338,37 @@ public class Squid extends AgeableWaterCreature { @Override public void tick() { diff --git a/purpur-server/minecraft-patches/features/0002-Configurable-entity-base-attributes.patch b/purpur-server/minecraft-patches/features/0002-Configurable-entity-base-attributes.patch index 6b63e620e..4ed8c2fe8 100644 --- a/purpur-server/minecraft-patches/features/0002-Configurable-entity-base-attributes.patch +++ b/purpur-server/minecraft-patches/features/0002-Configurable-entity-base-attributes.patch @@ -23,7 +23,7 @@ index 666455fff2b391b637cf1c07091e88100c5e1308..a53d662e2c78b002320956b9c7e39ccb protected ParticleOptions getInkParticle() { return ParticleTypes.GLOW_SQUID_INK; diff --git a/net/minecraft/world/entity/LivingEntity.java b/net/minecraft/world/entity/LivingEntity.java -index b8f38aefd15fda2ff4326c0ea1a06af4189edc60..3a8285490998dc39d6f175b88ad8cb1369b3a7ea 100644 +index d7d147c5afa566db3fe9f843ee3f0e69b8a8cd12..d076e9f26af543fadd062e4dca5ccaafabe71cb2 100644 --- a/net/minecraft/world/entity/LivingEntity.java +++ b/net/minecraft/world/entity/LivingEntity.java @@ -311,6 +311,7 @@ public abstract class LivingEntity extends Entity implements Attackable { @@ -164,7 +164,7 @@ index 656babc0c8810a85eb9f78ced1f3ad9551fdc286..d2a4bfa5334f7361067e4adac36ba5a4 protected void registerGoals() { this.goalSelector.addGoal(0, new FloatGoal(this)); diff --git a/net/minecraft/world/entity/animal/Dolphin.java b/net/minecraft/world/entity/animal/Dolphin.java -index 0e4112793dddc0d75f4bed35bb880c03b2d1318f..bb5e9256f9eec523dadeaa80879a44e2374a667a 100644 +index f6aa8c23afdccb093bcfb0643683614dad49caac..2dc6af7adcf3b62f02725bbeca47fe163f360d04 100644 --- a/net/minecraft/world/entity/animal/Dolphin.java +++ b/net/minecraft/world/entity/animal/Dolphin.java @@ -147,6 +147,14 @@ public class Dolphin extends AgeableWaterCreature { @@ -441,10 +441,10 @@ index 7bd5d82a11dda36389913925406a8a2c8e86abf6..d52082d991f6a2ce9d6909610785643d protected void registerGoals() { this.goalSelector.addGoal(0, new org.purpurmc.purpur.entity.ai.HasRider(this)); // Purpur - Ridables diff --git a/net/minecraft/world/entity/animal/Squid.java b/net/minecraft/world/entity/animal/Squid.java -index 28d67a8e3cbc668badc76bd68ea851654bebcb76..e7adb3579dd2b76b161304911327ad28ae26ca84 100644 +index 33c5831272e92802299ed817f4d5d8abfdd412fb..f45fa36679a93374d5d0c29ca0f75b74e949020d 100644 --- a/net/minecraft/world/entity/animal/Squid.java +++ b/net/minecraft/world/entity/animal/Squid.java -@@ -72,6 +72,14 @@ public class Squid extends AgeableWaterCreature { +@@ -80,6 +80,14 @@ public class Squid extends AgeableWaterCreature { } // Purpur end - Ridables @@ -1049,7 +1049,7 @@ index c6eeaf7b460408acfdf89d988b47b08eab7df4c5..148ae4bca77874545a2a05fb7f29f9ac return Guardian.createAttributes().add(Attributes.MOVEMENT_SPEED, 0.3F).add(Attributes.ATTACK_DAMAGE, 8.0).add(Attributes.MAX_HEALTH, 80.0); } diff --git a/net/minecraft/world/entity/monster/EnderMan.java b/net/minecraft/world/entity/monster/EnderMan.java -index 1f1e86dcdc6ded664a4562c0a3de45162c4fd6ac..d20ac3dcb2324a9df0f290cb118f3522c7999d70 100644 +index 7340fcd9e07d8839845db506d6c51878e01cc6d9..809caddf1446d909803bd2c87369596fcee40e9d 100644 --- a/net/minecraft/world/entity/monster/EnderMan.java +++ b/net/minecraft/world/entity/monster/EnderMan.java @@ -107,6 +107,14 @@ public class EnderMan extends Monster implements NeutralMob { @@ -1748,7 +1748,7 @@ index 97241682311797faa93927e0477a7646ce53b2c8..eb82252cd87797927e153974b9280b5e return Monster.createMonsterAttributes() .add(Attributes.MAX_HEALTH, 50.0) diff --git a/net/minecraft/world/entity/npc/Villager.java b/net/minecraft/world/entity/npc/Villager.java -index 975680c50e999fe6d4694f04d49baabf88bf8d8d..557140401074dec60cf862a29570b2f0a5de64a1 100644 +index 2c195e6aabc10d6c8f06fdcb3d9b361d1feeecc2..1a4e9326da640fd5472e0b989483b8467f449d40 100644 --- a/net/minecraft/world/entity/npc/Villager.java +++ b/net/minecraft/world/entity/npc/Villager.java @@ -222,6 +222,14 @@ public class Villager extends AbstractVillager implements ReputationEventHandler diff --git a/purpur-server/minecraft-patches/sources/net/minecraft/world/entity/Entity.java.patch b/purpur-server/minecraft-patches/sources/net/minecraft/world/entity/Entity.java.patch index 7219e38fb..58dceb997 100644 --- a/purpur-server/minecraft-patches/sources/net/minecraft/world/entity/Entity.java.patch +++ b/purpur-server/minecraft-patches/sources/net/minecraft/world/entity/Entity.java.patch @@ -38,6 +38,19 @@ // CraftBukkit start - fire PlayerUnleashEntityEvent // Paper start - Expand EntityUnleashEvent org.bukkit.event.player.PlayerUnleashEntityEvent event = org.bukkit.craftbukkit.event.CraftEventFactory.callPlayerUnleashEntityEvent(this, player, hand, !player.hasInfiniteMaterials()); +@@ -4487,6 +_,12 @@ + return Mth.lerp(partialTick, this.yRotO, this.yRot); + } + ++ // Purpur start - Stop squids floating on top of water ++ public AABB getAxisForFluidCheck() { ++ return this.getBoundingBox().deflate(0.001D); ++ } ++ // Purpur end - Stop squids floating on top of water ++ + // Paper start - optimise collisions + public boolean updateFluidHeightAndDoFluidPushing(final TagKey fluid, final double flowScale) { + if (this.touchingUnloadedChunk()) { @@ -4885,7 +_,7 @@ } diff --git a/purpur-server/minecraft-patches/sources/net/minecraft/world/entity/animal/Squid.java.patch b/purpur-server/minecraft-patches/sources/net/minecraft/world/entity/animal/Squid.java.patch new file mode 100644 index 000000000..6167e2ac8 --- /dev/null +++ b/purpur-server/minecraft-patches/sources/net/minecraft/world/entity/animal/Squid.java.patch @@ -0,0 +1,17 @@ +--- a/net/minecraft/world/entity/animal/Squid.java ++++ b/net/minecraft/world/entity/animal/Squid.java +@@ -50,6 +_,14 @@ + this.tentacleSpeed = 1.0F / (this.random.nextFloat() + 1.0F) * 0.2F; + } + ++ // Purpur start - Stop squids floating on top of water ++ @Override ++ public net.minecraft.world.phys.AABB getAxisForFluidCheck() { ++ // Stops squids from floating just over the water ++ return super.getAxisForFluidCheck().offsetY(level().purpurConfig.squidOffsetWaterCheck); ++ } ++ // Purpur end - Stop squids floating on top of water ++ + @Override + protected void registerGoals() { + this.goalSelector.addGoal(0, new Squid.SquidRandomMovementGoal(this)); diff --git a/purpur-server/minecraft-patches/sources/net/minecraft/world/phys/AABB.java.patch b/purpur-server/minecraft-patches/sources/net/minecraft/world/phys/AABB.java.patch new file mode 100644 index 000000000..db94aa724 --- /dev/null +++ b/purpur-server/minecraft-patches/sources/net/minecraft/world/phys/AABB.java.patch @@ -0,0 +1,13 @@ +--- a/net/minecraft/world/phys/AABB.java ++++ b/net/minecraft/world/phys/AABB.java +@@ -442,4 +_,10 @@ + center.x - xSize / 2.0, center.y - ySize / 2.0, center.z - zSize / 2.0, center.x + xSize / 2.0, center.y + ySize / 2.0, center.z + zSize / 2.0 + ); + } ++ ++ // Purpur start - Stop squids floating on top of water - tuinity added method ++ public final AABB offsetY(double dy) { ++ return new AABB(this.minX, this.minY + dy, this.minZ, this.maxX, this.maxY + dy, this.maxZ); ++ } ++ // Purpur end - Stop squids floating on top of water + } diff --git a/purpur-server/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/purpur-server/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java index 3dd472942..9d66f1bfb 100644 --- a/purpur-server/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/purpur-server/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java @@ -1600,6 +1600,7 @@ public class PurpurWorldConfig { public double squidMaxHealth = 10.0D; public double squidScale = 1.0D; public boolean squidImmuneToEAR = true; + public double squidOffsetWaterCheck = 0.0D; private void squidSettings() { squidRidable = getBoolean("mobs.squid.ridable", squidRidable); squidControllable = getBoolean("mobs.squid.controllable", squidControllable); @@ -1611,6 +1612,7 @@ public class PurpurWorldConfig { squidMaxHealth = getDouble("mobs.squid.attributes.max_health", squidMaxHealth); squidScale = Mth.clamp(getDouble("mobs.squid.attributes.scale", squidScale), 0.0625D, 16.0D); squidImmuneToEAR = getBoolean("mobs.squid.immune-to-EAR", squidImmuneToEAR); + squidOffsetWaterCheck = getDouble("mobs.squid.water-offset-check", squidOffsetWaterCheck); } public boolean spiderRidable = false;