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/src/main/java/net/minecraft/world/entity/animal/allay/Allay.java b/src/main/java/net/minecraft/world/entity/animal/allay/Allay.java index 82a941117edcca155c04afc11a8e018574db9922..ec4b1f58a01677a931cbadd5b5d9cf7779394d60 100644 --- a/src/main/java/net/minecraft/world/entity/animal/allay/Allay.java +++ b/src/main/java/net/minecraft/world/entity/animal/allay/Allay.java @@ -160,6 +160,18 @@ public class Allay extends PathfinderMob implements InventoryCarrier, VibrationS } // Purpur end + // Leaf start - Plazma + @Override + public boolean isSensitiveToWater() { + return level().purpurConfig.allayTakeDamageFromWater; + } + + @Override + public boolean isAlwaysExperienceDropper() { + return level().purpurConfig.allayAlwaysDropExp; + } + // Leaf end - Plazma + @Override protected Brain.Provider brainProvider() { return Brain.provider(Allay.MEMORY_TYPES, Allay.SENSOR_TYPES); diff --git a/src/main/java/net/minecraft/world/entity/animal/camel/Camel.java b/src/main/java/net/minecraft/world/entity/animal/camel/Camel.java index 608a22551c344d8a9e666386f913fa9ad360a18d..267aaf54ead1a0743206f414bd29564a0ff5d334 100644 --- a/src/main/java/net/minecraft/world/entity/animal/camel/Camel.java +++ b/src/main/java/net/minecraft/world/entity/animal/camel/Camel.java @@ -98,6 +98,18 @@ public class Camel extends AbstractHorse implements PlayerRideableJumping, Saddl } // Purpur end + // Leaf start - Plazma + @Override + public boolean isSensitiveToWater() { + return level().purpurConfig.camelTakeDamageFromWater; + } + + @Override + public boolean isAlwaysExperienceDropper() { + return level().purpurConfig.camelAlwaysDropExp; + } + // Leaf start - Plazma + @Override public void addAdditionalSaveData(CompoundTag nbt) { super.addAdditionalSaveData(nbt); @@ -157,7 +169,7 @@ public class Camel extends AbstractHorse implements PlayerRideableJumping, Saddl protected void customServerAiStep() { Brain behaviorcontroller = (Brain) this.getBrain(); // CraftBukkit - decompile error - 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 configurations behaviorcontroller.tick((ServerLevel) this.level(), this); CamelAi.updateActivity(this); super.customServerAiStep(); diff --git a/src/main/java/net/minecraft/world/entity/animal/frog/Frog.java b/src/main/java/net/minecraft/world/entity/animal/frog/Frog.java index da026533b15a1981000e73bba6c5209c13de28dc..96d2077abd0112f2b2b8c4678447afbf899cd290 100644 --- a/src/main/java/net/minecraft/world/entity/animal/frog/Frog.java +++ b/src/main/java/net/minecraft/world/entity/animal/frog/Frog.java @@ -162,6 +162,23 @@ public class Frog extends Animal implements VariantHolder> { } // Purpur end + // Leaf start - Plazma + @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 + public int getPurpurBreedTime() { return this.level().purpurConfig.frogBreedingTicks; } diff --git a/src/main/java/net/minecraft/world/entity/animal/frog/Tadpole.java b/src/main/java/net/minecraft/world/entity/animal/frog/Tadpole.java index 5addd3243dd63041442f2a6bcf92a2128e4242c1..2ebce53c728a67a619255a7e8796dcb1a6f82045 100644 --- a/src/main/java/net/minecraft/world/entity/animal/frog/Tadpole.java +++ b/src/main/java/net/minecraft/world/entity/animal/frog/Tadpole.java @@ -95,6 +95,23 @@ public class Tadpole extends AbstractFish { } // Purpur end + // Leaf start - Plazma + @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 + @Override protected PathNavigation createNavigation(Level world) { return new WaterBoundPathNavigation(this, world); diff --git a/src/main/java/net/minecraft/world/entity/animal/sniffer/Sniffer.java b/src/main/java/net/minecraft/world/entity/animal/sniffer/Sniffer.java index 8c2038e154730b1f796ab34f2555dc88fd542173..f5a7d8b161a896876eccbd4d7e3025f325337042 100644 --- a/src/main/java/net/minecraft/world/entity/animal/sniffer/Sniffer.java +++ b/src/main/java/net/minecraft/world/entity/animal/sniffer/Sniffer.java @@ -122,6 +122,18 @@ public class Sniffer extends Animal { } // Purpur end + // Leaf start - Plazma + @Override + public boolean isSensitiveToWater() { + return level().purpurConfig.snifferTakeDamageFromWater; + } + + @Override + public boolean isAlwaysExperienceDropper() { + return level().purpurConfig.snifferAlwaysDropExp; + } + // Leaf end - Plazma + @Override protected void defineSynchedData(SynchedEntityData.Builder builder) { super.defineSynchedData(builder); @@ -506,7 +518,7 @@ public class Sniffer extends Animal { private int behaviorTick; // Leaf - Plazma - Add missing Pufferfish configurations @Override protected void customServerAiStep() { - 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 configurations this.getBrain().tick((ServerLevel) this.level(), this); SnifferAi.updateActivity(this); super.customServerAiStep(); diff --git a/src/main/java/net/minecraft/world/entity/monster/warden/Warden.java b/src/main/java/net/minecraft/world/entity/monster/warden/Warden.java index 1e31f20da2450e92228d511f060ff9f5a3207005..de11e6b0d997b3bb2403441ab430a894ae8c6e7d 100644 --- a/src/main/java/net/minecraft/world/entity/monster/warden/Warden.java +++ b/src/main/java/net/minecraft/world/entity/monster/warden/Warden.java @@ -150,6 +150,23 @@ public class Warden extends Monster implements VibrationSystem { } // Purpur end + // Leaf start - Plazma + @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 + @Override public Packet getAddEntityPacket(ServerEntity entityTrackerEntry) { return new ClientboundAddEntityPacket(this, entityTrackerEntry, this.hasPose(Pose.EMERGING) ? 1 : 0); @@ -301,7 +318,7 @@ public class Warden extends Monster implements VibrationSystem { protected void customServerAiStep() { ServerLevel worldserver = (ServerLevel) this.level(); - if (this.behaviorTick++ % this.activatedPriority == 0) // Pufferfish + if ((getRider() == null || !this.isControllable()) && this.behaviorTick++ % this.activatedPriority == 0) // Pufferfish // Leaf - Plazma - Add missing purpur configurations this.getBrain().tick(worldserver, this); super.customServerAiStep(); if ((this.tickCount + this.getId()) % 120 == 0) { diff --git a/src/main/java/net/minecraft/world/entity/vehicle/ChestBoat.java b/src/main/java/net/minecraft/world/entity/vehicle/ChestBoat.java index 4cdf3b54187ebcb1f5ddfa6114386127a2846f01..75c1d986216bbd0f02b5ff96a4d856ecd485a113 100644 --- a/src/main/java/net/minecraft/world/entity/vehicle/ChestBoat.java +++ b/src/main/java/net/minecraft/world/entity/vehicle/ChestBoat.java @@ -45,7 +45,7 @@ public class ChestBoat extends Boat implements HasCustomInventoryScreen, Contain public ChestBoat(EntityType type, Level world) { super(type, world); - this.itemStacks = NonNullList.withSize(27, ItemStack.EMPTY); + this.itemStacks = NonNullList.withSize(org.purpurmc.purpur.PurpurConfig.chestBoatRows * 9, ItemStack.EMPTY); // Leaf - Plazma } public ChestBoat(Level world, double d0, double d1, double d2) { @@ -178,7 +178,7 @@ public class ChestBoat extends Boat implements HasCustomInventoryScreen, Contain @Override public int getContainerSize() { - return 27; + return org.purpurmc.purpur.PurpurConfig.chestBoatRows * 9; // Leaf - Plazma } @Override diff --git a/src/main/java/org/purpurmc/purpur/PurpurConfig.java b/src/main/java/org/purpurmc/purpur/PurpurConfig.java index 83fabd290d3c64f2766b3244f5cd695e1c674a2f..69832f436254d975a77e251e6ae5de2e81f92750 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurConfig.java @@ -320,6 +320,7 @@ public class PurpurConfig { } public static int barrelRows = 3; + public static int chestBoatRows = 3; // Leaf - Plazma public static boolean enderChestSixRows = false; public static boolean enderChestPermissionRows = false; public static boolean cryingObsidianValidForPortalFrame = false; @@ -362,6 +363,7 @@ public class PurpurConfig { case 1 -> 9; default -> 27; }); + chestBoatRows = getInt("settings.blocks.chest_boat.rows", chestBoatRows); // Leaf - Plazma 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/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java index 4d438781d264d8a7fbda4d8913b84f27abafe6fc..97fae82daa11ef2002c342a3a337611ec3d80395 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java @@ -1166,12 +1166,20 @@ public class PurpurWorldConfig { public boolean allayControllable = true; public double allayMaxHealth = 20.0D; public double allayScale = 1.0D; + // Leaf start - Plazma - Add missing purpur config options + public boolean allayTakeDamageFromWater = false; + public boolean allayAlwaysDropExp = false; + // Leaf end - Plazma - Add missing purpur config 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 config options + allayTakeDamageFromWater = getBoolean("mobs.allay.take-damage-from-water", allayTakeDamageFromWater); + allayAlwaysDropExp = getBoolean("mobs.allay.always-drop-exp", allayAlwaysDropExp); + // Leaf end - Plazma - Add missing purpur config options } public boolean armadilloRidable = false; @@ -1321,6 +1329,10 @@ public class PurpurWorldConfig { public double camelMovementSpeedMin = 0.09D; public double camelMovementSpeedMax = 0.09D; public int camelBreedingTicks = 6000; + // Leaf start - Plazma - Add missing purpur config options + public boolean camelTakeDamageFromWater = false; + public boolean camelAlwaysDropExp = false; + // Leaf end - Plazma - Add missing purpur config options private void camelSettings() { camelRidableInWater = getBoolean("mobs.camel.ridable-in-water", camelRidableInWater); camelMaxHealthMin = getDouble("mobs.camel.attributes.max_health.min", camelMaxHealthMin); @@ -1330,6 +1342,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 config options + camelTakeDamageFromWater = getBoolean("mobs.camel.takes-damage-from-water", camelTakeDamageFromWater); + camelAlwaysDropExp = getBoolean("mobs.camel.always-drop-exp", camelAlwaysDropExp); + // Leaf end - Plazma - Add missing purpur config options } public boolean catRidable = false; @@ -1777,12 +1793,22 @@ public class PurpurWorldConfig { public boolean frogControllable = true; public float frogRidableJumpHeight = 0.65F; public int frogBreedingTicks = 6000; + // Leaf start - Plazma - Add missing purpur config options + public double frogMaxHealth = 10.0D; + public boolean frogTakeDamageFromWater = false; + public boolean frogAlwaysDropExp = false; + // Leaf end - Plazma - Add missing purpur config 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 config 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 config options } public boolean ghastRidable = false; @@ -2784,6 +2810,10 @@ public class PurpurWorldConfig { public double snifferMaxHealth = 14.0D; public double snifferScale = 1.0D; public int snifferBreedingTicks = 6000; + // Leaf start - Plazma - Add missing purpur config options + public boolean snifferTakeDamageFromWater = false; + public boolean snifferAlwaysDropExp = false; + // Leaf end - Plazma - Add missing purpur config options private void snifferSettings() { snifferRidable = getBoolean("mobs.sniffer.ridable", snifferRidable); snifferRidableInWater = getBoolean("mobs.sniffer.ridable-in-water", snifferRidableInWater); @@ -2791,6 +2821,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 config options + snifferTakeDamageFromWater = getBoolean("mobs.sniffer.takes-damage-from-water", snifferTakeDamageFromWater); + snifferAlwaysDropExp = getBoolean("mobs.sniffer.always-drop-exp", snifferAlwaysDropExp); + // Leaf end - Plazma - Add missing purpur config options } public boolean squidRidable = false; @@ -2892,10 +2926,20 @@ public class PurpurWorldConfig { public boolean tadpoleRidable = false; public boolean tadpoleRidableInWater = true; public boolean tadpoleControllable = true; + // Leaf start - Plazma - Add missing purpur config 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 config 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 config 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 config options } public boolean traderLlamaRidable = false; @@ -3120,10 +3164,20 @@ public class PurpurWorldConfig { public boolean wardenRidable = false; public boolean wardenRidableInWater = true; public boolean wardenControllable = true; + // Leaf start - Plazma - Add missing purpur config options + public double wardenMaxHealth = 500.0D; + public boolean wardenTakeDamageFromWater = false; + public boolean wardenAlwaysDropExp = false; + // Leaf end - Plazma - Add missing purpur config 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 config 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 config options } public boolean witchRidable = false;