From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001 From: William Blake Galbreath Date: Thu, 13 Aug 2020 04:00:26 -0500 Subject: [PATCH] |FEAT| |FIX| Stop squids floating on top of water diff --git a/src/main/java/net/minecraft/world/entity/Entity.java b/src/main/java/net/minecraft/world/entity/Entity.java index 33f26475b314f8480130ffa9ef091cb6ec37249e..f6f9d2f5c2dfc26359974e77e0cd398d4fbf8536 100644 --- a/src/main/java/net/minecraft/world/entity/Entity.java +++ b/src/main/java/net/minecraft/world/entity/Entity.java @@ -3875,11 +3875,17 @@ public abstract class Entity implements Nameable, EntityAccess, CommandSource, n this.yRotO = this.getYRot(); } + // Purpur start + public AABB getAxisForFluidCheck() { + return this.getBoundingBox().deflate(0.001D); + } + // Purpur end + public boolean updateFluidHeightAndDoFluidPushing(Tag tag, double d0) { if (this.touchingUnloadedChunk()) { return false; } else { - AABB axisalignedbb = this.getBoundingBox().deflate(0.001D); + AABB axisalignedbb = getAxisForFluidCheck(); // Purpur // Airplane start - rename int minBlockX = Mth.floor(axisalignedbb.minX); int maxBlockX = Mth.ceil(axisalignedbb.maxX); diff --git a/src/main/java/net/minecraft/world/entity/animal/Squid.java b/src/main/java/net/minecraft/world/entity/animal/Squid.java index f96def2ebdf114823c322c2d4318d039e20eab97..8b3dfce6c890a44f9bc485bec016c922375fadfb 100644 --- a/src/main/java/net/minecraft/world/entity/animal/Squid.java +++ b/src/main/java/net/minecraft/world/entity/animal/Squid.java @@ -79,6 +79,12 @@ public class Squid extends WaterAnimal { public void initAttributes() { this.getAttribute(Attributes.MAX_HEALTH).setBaseValue(this.level.purpurConfig.squidMaxHealth); } + + @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 @Override diff --git a/src/main/java/net/minecraft/world/phys/AABB.java b/src/main/java/net/minecraft/world/phys/AABB.java index 68cc6f2a78a06293a29317fda72ab3ee79b3533a..cfb2e46b34b2982d6724f18214557fc80cf4adfa 100644 --- a/src/main/java/net/minecraft/world/phys/AABB.java +++ b/src/main/java/net/minecraft/world/phys/AABB.java @@ -367,4 +367,10 @@ public class AABB { public static AABB ofSize(Vec3 center, double dx, double dy, double dz) { return new AABB(center.x - dx / 2.0D, center.y - dy / 2.0D, center.z - dz / 2.0D, center.x + dx / 2.0D, center.y + dy / 2.0D, center.z + dz / 2.0D); } + + // 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/net/pl3x/purpur/PurpurWorldConfig.java b/src/main/java/net/pl3x/purpur/PurpurWorldConfig.java index 27e60c75eda476f45c7aac8a199bb45e76174e22..7e8044adbd1a3847059ae7eadd89df7b0b7b6bbd 100644 --- a/src/main/java/net/pl3x/purpur/PurpurWorldConfig.java +++ b/src/main/java/net/pl3x/purpur/PurpurWorldConfig.java @@ -1327,6 +1327,7 @@ public class PurpurWorldConfig { public boolean squidRidable = false; public double squidMaxHealth = 10.0D; public boolean squidImmuneToEAR = true; + public double squidOffsetWaterCheck = 0.0D; private void squidSettings() { squidRidable = getBoolean("mobs.squid.ridable", squidRidable); if (PurpurConfig.version < 10) { @@ -1336,6 +1337,7 @@ public class PurpurWorldConfig { } squidMaxHealth = getDouble("mobs.squid.attributes.max_health", squidMaxHealth); squidImmuneToEAR = getBoolean("mobs.squid.immune-to-EAR", squidImmuneToEAR); + squidOffsetWaterCheck = getDouble("mobs.squid.water-offset-check", squidOffsetWaterCheck); } public boolean spiderRidable = false;