From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001 From: AlphaKR93 Date: Sat, 25 Mar 2023 00:52:11 +0900 Subject: [PATCH] Plazma: Add missing purpur configuration options Original license: MIT Original project: https://github.com/PlazmaMC/PlazmaBukkit Add more Purpur configurable options for entities diff --git a/net/minecraft/world/entity/animal/allay/Allay.java b/net/minecraft/world/entity/animal/allay/Allay.java index a25976d6f0dec86b88017cd5f86f3b51c8d7444b..cb88b1afe261f95998a19fcb555f91143834ba3a 100644 --- a/net/minecraft/world/entity/animal/allay/Allay.java +++ b/net/minecraft/world/entity/animal/allay/Allay.java @@ -174,6 +174,18 @@ public class Allay extends PathfinderMob implements InventoryCarrier, VibrationS } // Purpur end - Configurable entity base attributes + // Leaf start - Plazma - Add missing purpur configuration options + @Override + public boolean isSensitiveToWater() { + return level().purpurConfig.allayTakeDamageFromWater; + } + + @Override + public boolean isAlwaysExperienceDropper() { + return level().purpurConfig.allayAlwaysDropExp; + } + // Leaf end - Plazma - Add missing purpur configuration options + @Override protected Brain.Provider brainProvider() { return Brain.provider(MEMORY_TYPES, SENSOR_TYPES); diff --git a/net/minecraft/world/entity/animal/camel/Camel.java b/net/minecraft/world/entity/animal/camel/Camel.java index c2107133d3def5ef5de7837499d33b5dbf5c20b6..04c3fb56a4014025b6a9c01e97f0ffbd678b414a 100644 --- a/net/minecraft/world/entity/animal/camel/Camel.java +++ b/net/minecraft/world/entity/animal/camel/Camel.java @@ -103,6 +103,18 @@ public class Camel extends AbstractHorse { } // Purpur end - Make entity breeding times configurable + // Leaf start - Plazma - Add missing purpur configuration options + @Override + public boolean isSensitiveToWater() { + return level().purpurConfig.camelTakeDamageFromWater; + } + + @Override + public boolean isAlwaysExperienceDropper() { + return level().purpurConfig.camelAlwaysDropExp; + } + // Leaf start - Plazma - Add missing purpur configuration options + @Override protected void addAdditionalSaveData(ValueOutput output) { super.addAdditionalSaveData(output); @@ -173,7 +185,7 @@ public class Camel extends AbstractHorse { @Override protected void customServerAiStep(ServerLevel level) { Brain brain = this.getBrain(); - if (this.behaviorTick++ % this.activatedPriority == 0) // Leaf - Plazma - Add missing Pufferfish configurations + if ((getRider() == null || !this.isControllable()) && this.behaviorTick++ % this.activatedPriority == 0) // Leaf - Plazma - Add missing Pufferfish configurations // Leaf - Plazma - Add missing purpur configuration options ((Brain)brain).tick(level, this); CamelAi.updateActivity(this); super.customServerAiStep(level); diff --git a/net/minecraft/world/entity/animal/frog/Frog.java b/net/minecraft/world/entity/animal/frog/Frog.java index 7d450b6ccde99657a7fac354ae386a80f9f7e879..7143a7b8aae713fd7f2f167a949f98b964e72c78 100644 --- a/net/minecraft/world/entity/animal/frog/Frog.java +++ b/net/minecraft/world/entity/animal/frog/Frog.java @@ -170,6 +170,23 @@ public class Frog extends Animal { } // Purpur end - Make entity breeding times configurable + // Leaf start - Plazma - Add missing purpur configuration options + @Override + public boolean isSensitiveToWater() { + return level().purpurConfig.frogTakeDamageFromWater; + } + + @Override + public boolean isAlwaysExperienceDropper() { + return level().purpurConfig.frogAlwaysDropExp; + } + + @Override + public void initAttributes() { + this.getAttribute(Attributes.MAX_HEALTH).setBaseValue(level().purpurConfig.frogMaxHealth); + } + // Leaf end - Plazma - Add missing purpur configuration options + @Override protected Brain.Provider brainProvider() { return Brain.provider(MEMORY_TYPES, SENSOR_TYPES); diff --git a/net/minecraft/world/entity/animal/frog/Tadpole.java b/net/minecraft/world/entity/animal/frog/Tadpole.java index 5d3479a55a10444e3ad3d9ec16160f9d520a1dc6..0e322f480e0a6302124847e26c4bed06678e78e4 100644 --- a/net/minecraft/world/entity/animal/frog/Tadpole.java +++ b/net/minecraft/world/entity/animal/frog/Tadpole.java @@ -108,6 +108,23 @@ public class Tadpole extends AbstractFish { } // Purpur end - Ridables + // Leaf start - Plazma - Add missing purpur configuration options + @Override + public boolean isSensitiveToWater() { + return level().purpurConfig.tadpoleTakeDamageFromWater; + } + + @Override + public boolean isAlwaysExperienceDropper() { + return level().purpurConfig.tadpoleAlwaysDropExp; + } + + @Override + public void initAttributes() { + this.getAttribute(Attributes.MAX_HEALTH).setBaseValue(level().purpurConfig.tadpoleMaxHealth); + } + // Leaf end - Plazma - Add missing purpur configuration options + @Override protected PathNavigation createNavigation(Level level) { return new WaterBoundPathNavigation(this, level); diff --git a/net/minecraft/world/entity/animal/sniffer/Sniffer.java b/net/minecraft/world/entity/animal/sniffer/Sniffer.java index 08bc21733c08b9df28803b36d3fb17aa3cc29345..1f545d4c9a3de0d6630a92481920ed6c3553ce97 100644 --- a/net/minecraft/world/entity/animal/sniffer/Sniffer.java +++ b/net/minecraft/world/entity/animal/sniffer/Sniffer.java @@ -119,6 +119,18 @@ public class Sniffer extends Animal { } // Purpur end - Make entity breeding times configurable + // Leaf start - Plazma - Add missing purpur configuration options + @Override + public boolean isSensitiveToWater() { + return level().purpurConfig.snifferTakeDamageFromWater; + } + + @Override + public boolean isAlwaysExperienceDropper() { + return level().purpurConfig.snifferAlwaysDropExp; + } + // Leaf end - Plazma - Add missing purpur configuration options + @Override protected void defineSynchedData(SynchedEntityData.Builder builder) { super.defineSynchedData(builder); @@ -496,7 +508,7 @@ public class Sniffer extends Animal { private int behaviorTick; // Leaf - Plazma - Add missing Pufferfish configurations @Override protected void customServerAiStep(ServerLevel level) { - if (this.behaviorTick++ % this.activatedPriority == 0) // Leaf - Plazma - Add missing Pufferfish configurations + if ((getRider() == null || !this.isControllable()) && this.behaviorTick++ % this.activatedPriority == 0) // Leaf - Plazma - Add missing Pufferfish configurations // Leaf - Plazma - Add missing purpur configuration options this.getBrain().tick(level, this); SnifferAi.updateActivity(this); super.customServerAiStep(level); diff --git a/net/minecraft/world/entity/monster/creaking/Creaking.java b/net/minecraft/world/entity/monster/creaking/Creaking.java index 49f962bbbce22dd26555ee2092ceff96e82aa6b2..ef0522feaa1cc9704f778309c1e6cf1d68379376 100644 --- a/net/minecraft/world/entity/monster/creaking/Creaking.java +++ b/net/minecraft/world/entity/monster/creaking/Creaking.java @@ -132,6 +132,18 @@ public class Creaking extends Monster { } // Purpur end - Configurable entity base attributes + // Leaf start - Plazma - Add missing purpur configuration options + @Override + public boolean isSensitiveToWater() { + return level().purpurConfig.wardenTakeDamageFromWater; + } + + @Override + public boolean isAlwaysExperienceDropper() { + return level().purpurConfig.wardenAlwaysDropExp; + } + // Leaf end - Plazma - Add missing purpur configuration options + @Override protected BodyRotationControl createBodyControl() { return new Creaking.CreakingBodyRotationControl(this); @@ -235,7 +247,7 @@ public class Creaking extends Monster { private int behaviorTick; // Leaf - Plazma - Add missing Pufferfish configurations @Override protected void customServerAiStep(ServerLevel level) { - if (this.behaviorTick++ % this.activatedPriority == 0) // Leaf - Plazma - Add missing Pufferfish configurations + if ((getRider() == null || !this.isControllable()) && this.behaviorTick++ % this.activatedPriority == 0) // Leaf - Plazma - Add missing Pufferfish configurations // Leaf - Plazma - Add missing purpur configuration options this.getBrain().tick((ServerLevel)this.level(), this); CreakingAi.updateActivity(this); } diff --git a/net/minecraft/world/entity/monster/warden/Warden.java b/net/minecraft/world/entity/monster/warden/Warden.java index a6109ac9d7f8a9aa4074b3e9504244b1d565a2d4..e0bd1268f77b7234331c9fea0b11b5b04a66a4ad 100644 --- a/net/minecraft/world/entity/monster/warden/Warden.java +++ b/net/minecraft/world/entity/monster/warden/Warden.java @@ -148,6 +148,23 @@ public class Warden extends Monster implements VibrationSystem { } // Purpur end - Ridables + // Leaf start - Plazma - Add missing purpur configuration options + @Override + public boolean isSensitiveToWater() { + return level().purpurConfig.wardenTakeDamageFromWater; + } + + @Override + public boolean isAlwaysExperienceDropper() { + return level().purpurConfig.wardenAlwaysDropExp; + } + + @Override + public void initAttributes() { + this.getAttribute(Attributes.MAX_HEALTH).setBaseValue(level().purpurConfig.wardenMaxHealth); + } + // Leaf end - Plazma - Add missing purpur configuration options + @Override public Packet getAddEntityPacket(ServerEntity entity) { return new ClientboundAddEntityPacket(this, entity, this.hasPose(Pose.EMERGING) ? 1 : 0); @@ -302,7 +319,7 @@ public class Warden extends Monster implements VibrationSystem { private int behaviorTick = 0; // Pufferfish @Override protected void customServerAiStep(ServerLevel level) { - if (this.behaviorTick++ % this.activatedPriority == 0) // Pufferfish + if ((getRider() == null || !this.isControllable()) && this.behaviorTick++ % this.activatedPriority == 0) // Pufferfish // Leaf - Plazma - Add missing purpur configuration options this.getBrain().tick(level, this); super.customServerAiStep(level); if ((this.tickCount + this.getId()) % 120 == 0) { diff --git a/net/minecraft/world/entity/vehicle/AbstractChestBoat.java b/net/minecraft/world/entity/vehicle/AbstractChestBoat.java index 04b8d4be8d7b36585041b5ff69251d4150e54cae..c73840d0a08366b2d2ee3286589ab4e4e03d122d 100644 --- a/net/minecraft/world/entity/vehicle/AbstractChestBoat.java +++ b/net/minecraft/world/entity/vehicle/AbstractChestBoat.java @@ -28,7 +28,7 @@ import net.minecraft.world.level.storage.loot.LootTable; public abstract class AbstractChestBoat extends AbstractBoat implements HasCustomInventoryScreen, ContainerEntity { private static final int CONTAINER_SIZE = 27; - private NonNullList itemStacks = NonNullList.withSize(27, ItemStack.EMPTY); + private NonNullList itemStacks = NonNullList.withSize(org.purpurmc.purpur.PurpurConfig.chestBoatRows * 9, ItemStack.EMPTY); // Leaf - Plazma - Add missing purpur configuration options @Nullable private ResourceKey lootTable; private long lootTableSeed; @@ -108,7 +108,7 @@ public abstract class AbstractChestBoat extends AbstractBoat implements HasCusto @Override public int getContainerSize() { - return 27; + return org.purpurmc.purpur.PurpurConfig.chestBoatRows * 9; // Leaf - Plazma - Add missing purpur configuration options } @Override diff --git a/org/purpurmc/purpur/PurpurConfig.java b/org/purpurmc/purpur/PurpurConfig.java index ed777b003140486fd5d8d1db7af770301e30bec9..31450de492fbfdd83608ae668072bebd525db566 100644 --- a/org/purpurmc/purpur/PurpurConfig.java +++ b/org/purpurmc/purpur/PurpurConfig.java @@ -317,6 +317,7 @@ public class PurpurConfig { } public static int barrelRows = 3; + public static int chestBoatRows = 3; // Leaf - Plazma - Add missing purpur configuration options public static boolean enderChestSixRows = false; public static boolean enderChestPermissionRows = false; public static boolean cryingObsidianValidForPortalFrame = false; @@ -360,6 +361,7 @@ public class PurpurConfig { case 1 -> 9; default -> 27; }); + chestBoatRows = getInt("settings.blocks.chest_boat.rows", chestBoatRows); // Leaf - Plazma - Add missing purpur configuration options enderChestSixRows = getBoolean("settings.blocks.ender_chest.six-rows", enderChestSixRows); org.bukkit.event.inventory.InventoryType.ENDER_CHEST.setDefaultSize(enderChestSixRows ? 54 : 27); enderChestPermissionRows = getBoolean("settings.blocks.ender_chest.use-permissions-for-rows", enderChestPermissionRows); diff --git a/org/purpurmc/purpur/PurpurWorldConfig.java b/org/purpurmc/purpur/PurpurWorldConfig.java index b3dd4862b9fa220f4aeabc3598169852f8b12482..a6370d8b7bb6e07c7e41beb78b1778351b41cde1 100644 --- a/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/org/purpurmc/purpur/PurpurWorldConfig.java @@ -1184,12 +1184,20 @@ public class PurpurWorldConfig { public boolean allayControllable = true; public double allayMaxHealth = 20.0D; public double allayScale = 1.0D; + // Leaf start - Plazma - Add missing purpur configuration options + public boolean allayTakeDamageFromWater = false; + public boolean allayAlwaysDropExp = false; + // Leaf end - Plazma - Add missing purpur configuration options private void allaySettings() { allayRidable = getBoolean("mobs.allay.ridable", allayRidable); allayRidableInWater = getBoolean("mobs.allay.ridable-in-water", allayRidableInWater); allayControllable = getBoolean("mobs.allay.controllable", allayControllable); allayMaxHealth = getDouble("mobs.allay.attributes.max_health", allayMaxHealth); allayScale = Mth.clamp(getDouble("mobs.allay.attributes.scale", allayScale), 0.0625D, 16.0D); + // Leaf start - Plazma - Add missing purpur configuration options + allayTakeDamageFromWater = getBoolean("mobs.allay.take-damage-from-water", allayTakeDamageFromWater); + allayAlwaysDropExp = getBoolean("mobs.allay.always-drop-exp", allayAlwaysDropExp); + // Leaf end - Plazma - Add missing purpur configuration options } public boolean armadilloRidable = false; @@ -1344,6 +1352,10 @@ public class PurpurWorldConfig { public double camelMovementSpeedMin = 0.09D; public double camelMovementSpeedMax = 0.09D; public int camelBreedingTicks = 6000; + // Leaf start - Plazma - Add missing purpur configuration options + public boolean camelTakeDamageFromWater = false; + public boolean camelAlwaysDropExp = false; + // Leaf end - Plazma - Add missing purpur configuration options private void camelSettings() { camelRidableInWater = getBoolean("mobs.camel.ridable-in-water", camelRidableInWater); camelMaxHealthMin = getDouble("mobs.camel.attributes.max_health.min", camelMaxHealthMin); @@ -1353,6 +1365,10 @@ public class PurpurWorldConfig { camelMovementSpeedMin = getDouble("mobs.camel.attributes.movement_speed.min", camelMovementSpeedMin); camelMovementSpeedMax = getDouble("mobs.camel.attributes.movement_speed.max", camelMovementSpeedMax); camelBreedingTicks = getInt("mobs.camel.breeding-delay-ticks", camelBreedingTicks); + // Leaf start - Plazma - Add missing purpur configuration options + camelTakeDamageFromWater = getBoolean("mobs.camel.takes-damage-from-water", camelTakeDamageFromWater); + camelAlwaysDropExp = getBoolean("mobs.camel.always-drop-exp", camelAlwaysDropExp); + // Leaf end - Plazma - Add missing purpur configuration options } public boolean catRidable = false; @@ -1499,12 +1515,20 @@ public class PurpurWorldConfig { public boolean creakingControllable = true; public double creakingMaxHealth = 1.0D; public double creakingScale = 1.0D; + // Leaf start - Plazma - Add missing purpur configuration options + public boolean creakingTakeDamageFromWater = false; + public boolean creakingAlwaysDropExp = false; + // Leaf end - Plazma - Add missing purpur configuration options private void creakingSettings() { creakingRidable = getBoolean("mobs.creaking.ridable", creakingRidable); creakingRidableInWater = getBoolean("mobs.creaking.ridable-in-water", creakingRidableInWater); creakingControllable = getBoolean("mobs.creaking.controllable", creakingControllable); creakingMaxHealth = getDouble("mobs.creaking.attributes.max_health", creakingMaxHealth); creakingScale = Mth.clamp(getDouble("mobs.creaking.attributes.scale", creakingScale), 0.0625D, 16.0D); + // Leaf start - Plazma - Add missing purpur configuration options + creakingTakeDamageFromWater = getBoolean("mobs.creaking.takes-damage-from-water", creakingTakeDamageFromWater); + creakingAlwaysDropExp = getBoolean("mobs.creaking.always-drop-exp", creakingAlwaysDropExp); + // Leaf end - Plazma - Add missing purpur configuration options } public boolean creeperRidable = false; @@ -1836,12 +1860,22 @@ public class PurpurWorldConfig { public boolean frogControllable = true; public float frogRidableJumpHeight = 0.65F; public int frogBreedingTicks = 6000; + // Leaf start - Plazma - Add missing purpur configuration options + public double frogMaxHealth = 10.0D; + public boolean frogTakeDamageFromWater = false; + public boolean frogAlwaysDropExp = false; + // Leaf end - Plazma - Add missing purpur configuration options private void frogSettings() { frogRidable = getBoolean("mobs.frog.ridable", frogRidable); frogRidableInWater = getBoolean("mobs.frog.ridable-in-water", frogRidableInWater); frogControllable = getBoolean("mobs.frog.controllable", frogControllable); frogRidableJumpHeight = (float) getDouble("mobs.frog.ridable-jump-height", frogRidableJumpHeight); frogBreedingTicks = getInt("mobs.frog.breeding-delay-ticks", frogBreedingTicks); + // Leaf start - Plazma - Add missing purpur configuration options + frogMaxHealth = getDouble("mobs.frog.attributes.max_health", frogMaxHealth); + frogTakeDamageFromWater = getBoolean("mobs.frog.takes-damage-from-water", frogTakeDamageFromWater); + frogAlwaysDropExp = getBoolean("mobs.frog.always-drop-exp", frogAlwaysDropExp); + // Leaf end - Plazma - Add missing purpur configuration options } public boolean ghastRidable = false; @@ -2936,6 +2970,10 @@ public class PurpurWorldConfig { public double snifferMaxHealth = 14.0D; public double snifferScale = 1.0D; public int snifferBreedingTicks = 6000; + // Leaf start - Plazma - Add missing purpur configuration options + public boolean snifferTakeDamageFromWater = false; + public boolean snifferAlwaysDropExp = false; + // Leaf end - Plazma - Add missing purpur configuration options private void snifferSettings() { snifferRidable = getBoolean("mobs.sniffer.ridable", snifferRidable); snifferRidableInWater = getBoolean("mobs.sniffer.ridable-in-water", snifferRidableInWater); @@ -2943,6 +2981,10 @@ public class PurpurWorldConfig { snifferMaxHealth = getDouble("mobs.sniffer.attributes.max_health", snifferMaxHealth); snifferScale = Mth.clamp(getDouble("mobs.sniffer.attributes.scale", snifferScale), 0.0625D, 16.0D); snifferBreedingTicks = getInt("mobs.sniffer.breeding-delay-ticks", snifferBreedingTicks); + // Leaf start - Plazma - Add missing purpur configuration options + snifferTakeDamageFromWater = getBoolean("mobs.sniffer.takes-damage-from-water", snifferTakeDamageFromWater); + snifferAlwaysDropExp = getBoolean("mobs.sniffer.always-drop-exp", snifferAlwaysDropExp); + // Leaf end - Plazma - Add missing purpur configuration options } public boolean squidRidable = false; @@ -3044,10 +3086,20 @@ public class PurpurWorldConfig { public boolean tadpoleRidable = false; public boolean tadpoleRidableInWater = true; public boolean tadpoleControllable = true; + // Leaf start - Plazma - Add missing purpur configuration options + public double tadpoleMaxHealth = 6.0D; // Leaf - Tadpole health should be 6 + public boolean tadpoleTakeDamageFromWater = false; + public boolean tadpoleAlwaysDropExp = false; + // Leaf end - Plazma - Add missing purpur configuration options private void tadpoleSettings() { tadpoleRidable = getBoolean("mobs.tadpole.ridable", tadpoleRidable); tadpoleRidableInWater = getBoolean("mobs.tadpole.ridable-in-water", tadpoleRidableInWater); tadpoleControllable = getBoolean("mobs.tadpole.controllable", tadpoleControllable); + // Leaf start - Plazma - Add missing purpur configuration options + tadpoleMaxHealth = getDouble("mobs.tadpole.attributes.max_health", tadpoleMaxHealth); + tadpoleTakeDamageFromWater = getBoolean("mobs.tadpole.takes-damage-from-water", tadpoleTakeDamageFromWater); + tadpoleAlwaysDropExp = getBoolean("mobs.tadpole.always-drop-exp", tadpoleAlwaysDropExp); + // Leaf end - Plazma - Add missing purpur configuration options } public boolean traderLlamaRidable = false; @@ -3281,10 +3333,20 @@ public class PurpurWorldConfig { public boolean wardenRidable = false; public boolean wardenRidableInWater = true; public boolean wardenControllable = true; + // Leaf start - Plazma - Add missing purpur configuration options + public double wardenMaxHealth = 500.0D; + public boolean wardenTakeDamageFromWater = false; + public boolean wardenAlwaysDropExp = false; + // Leaf end - Plazma - Add missing purpur configuration options private void wardenSettings() { wardenRidable = getBoolean("mobs.warden.ridable", wardenRidable); wardenRidableInWater = getBoolean("mobs.warden.ridable-in-water", wardenRidableInWater); wardenControllable = getBoolean("mobs.warden.controllable", wardenControllable); + // Leaf start - Plazma - Add missing purpur configuration options + wardenMaxHealth = getDouble("mobs.warden.attributes.max_health", wardenMaxHealth); + wardenTakeDamageFromWater = getBoolean("mobs.warden.takes-damage-from-water", wardenTakeDamageFromWater); + wardenAlwaysDropExp = getBoolean("mobs.warden.always-drop-exp", wardenAlwaysDropExp); + // Leaf end - Plazma - Add missing purpur configuration options } public boolean witchRidable = false;