add copper golem options

This commit is contained in:
granny
2025-09-30 19:05:41 -07:00
parent 8befb59096
commit 5bb1521a3b
5 changed files with 129 additions and 2 deletions

View File

@@ -2127,10 +2127,39 @@ index 9ad94aca22a100dddaded5833763f9acd2a0ce56..96c98f032b1b3aec32aba38244ee8b45
protected void addAdditionalSaveData(ValueOutput output) {
super.addAdditionalSaveData(output);
diff --git a/net/minecraft/world/entity/animal/coppergolem/CopperGolem.java b/net/minecraft/world/entity/animal/coppergolem/CopperGolem.java
index f9c3a33a7c5efc30a97f1ce74b94f5e6213298fe..82c2ff4ba05921a102d21e8fe547adb82fe9a445 100644
index f9c3a33a7c5efc30a97f1ce74b94f5e6213298fe..20d2f081fa2576ea946489d3e717b389092abaef 100644
--- a/net/minecraft/world/entity/animal/coppergolem/CopperGolem.java
+++ b/net/minecraft/world/entity/animal/coppergolem/CopperGolem.java
@@ -199,6 +199,7 @@ public class CopperGolem extends AbstractGolem implements ContainerUser, Shearab
@@ -109,6 +109,28 @@ public class CopperGolem extends AbstractGolem implements ContainerUser, Shearab
}
// Purpur end - Summoner API
+ // Purpur start - Ridables
+ @Override
+ public boolean isRidable() {
+ return level().purpurConfig.copperGolemRidable;
+ }
+
+ @Override
+ public boolean dismountsUnderwater() {
+ return level().purpurConfig.useDismountsUnderwaterTag ? super.dismountsUnderwater() : !level().purpurConfig.copperGolemRidableInWater;
+ }
+
+ @Override
+ public boolean isControllable() {
+ return level().purpurConfig.copperGolemControllable;
+ }
+
+ @Override
+ protected void registerGoals() {
+ this.goalSelector.addGoal(0, new org.purpurmc.purpur.entity.ai.HasRider(this));
+ }
+ // Purpur end - Ridables
+
public static AttributeSupplier.Builder createAttributes() {
return Mob.createMobAttributes().add(Attributes.MOVEMENT_SPEED, 0.2F).add(Attributes.STEP_HEIGHT, 1.0).add(Attributes.MAX_HEALTH, 12.0);
}
@@ -199,6 +221,7 @@ public class CopperGolem extends AbstractGolem implements ContainerUser, Shearab
protected void customServerAiStep(ServerLevel level) {
ProfilerFiller profilerFiller = Profiler.get();
profilerFiller.push("copperGolemBrain");
@@ -2138,6 +2167,24 @@ index f9c3a33a7c5efc30a97f1ce74b94f5e6213298fe..82c2ff4ba05921a102d21e8fe547adb8
this.getBrain().tick(level, this);
profilerFiller.pop();
profilerFiller.push("copperGolemActivityUpdate");
@@ -238,7 +261,7 @@ public class CopperGolem extends AbstractGolem implements ContainerUser, Shearab
java.util.List<ItemStack> drops = this.generateDefaultDrops(serverLevel, itemInHand);
org.bukkit.event.player.PlayerShearEntityEvent event = org.bukkit.craftbukkit.event.CraftEventFactory.handlePlayerShearEntityEvent(player, this, itemInHand, hand, drops);
if (event != null) {
- if (event.isCancelled()) return InteractionResult.PASS;
+ if (event.isCancelled()) return tryRide(player, hand); // Purpur - Ridables
drops = org.bukkit.craftbukkit.inventory.CraftItemStack.asNMSCopy(event.getDrops());
}
this.shear(serverLevel, SoundSource.PLAYERS, itemInHand, drops);
@@ -274,6 +297,8 @@ public class CopperGolem extends AbstractGolem implements ContainerUser, Shearab
}
}
+ if (level().purpurConfig.villagerRidable && itemInHand.isEmpty()) return tryRide(player, hand); // Purpur - Ridables
+
return super.mobInteract(player, hand);
}
}
diff --git a/net/minecraft/world/entity/animal/frog/Frog.java b/net/minecraft/world/entity/animal/frog/Frog.java
index 7d63881ec187f11544947a487fd0445561228247..e451e604b37f078cb94f3204ebb25dbc153d2551 100644
--- a/net/minecraft/world/entity/animal/frog/Frog.java

View File

@@ -595,6 +595,27 @@ index 96c98f032b1b3aec32aba38244ee8b45aca9078c..3a794ff3d68c86b4e5ef93ff8f5cedfa
@Override
public SoundEvent getAmbientSound() {
return SoundEvents.CAMEL_AMBIENT;
diff --git a/net/minecraft/world/entity/animal/coppergolem/CopperGolem.java b/net/minecraft/world/entity/animal/coppergolem/CopperGolem.java
index 20d2f081fa2576ea946489d3e717b389092abaef..0597de19bcb1dc21cc7d07bb9b69dfb6967bba6f 100644
--- a/net/minecraft/world/entity/animal/coppergolem/CopperGolem.java
+++ b/net/minecraft/world/entity/animal/coppergolem/CopperGolem.java
@@ -131,6 +131,16 @@ public class CopperGolem extends AbstractGolem implements ContainerUser, Shearab
}
// Purpur end - Ridables
+ // Purpur start - Configurable entity base attributes
+ @Override
+ public void initAttributes() {
+ this.getAttribute(Attributes.MAX_HEALTH).setBaseValue(this.level().purpurConfig.copperGolemMaxHealth);
+ this.getAttribute(Attributes.STEP_HEIGHT).setBaseValue(this.level().purpurConfig.copperGolemStepHeight);
+ this.getAttribute(Attributes.MOVEMENT_SPEED).setBaseValue(this.level().purpurConfig.copperGolemMovementSpeed);
+ this.getAttribute(Attributes.SCALE).setBaseValue(this.level().purpurConfig.copperGolemScale);
+ }
+ // Purpur end - Configurable entity base attributes
+
public static AttributeSupplier.Builder createAttributes() {
return Mob.createMobAttributes().add(Attributes.MOVEMENT_SPEED, 0.2F).add(Attributes.STEP_HEIGHT, 1.0).add(Attributes.MAX_HEALTH, 12.0);
}
diff --git a/net/minecraft/world/entity/animal/horse/AbstractHorse.java b/net/minecraft/world/entity/animal/horse/AbstractHorse.java
index b528bd7cc2001a3c0ec1cf615a4c306a9cd7e9f1..387f6bb134a766ce7b72cf2d4a56509f51687308 100644
--- a/net/minecraft/world/entity/animal/horse/AbstractHorse.java

View File

@@ -458,6 +458,24 @@ index a6145a24bffc1f56406cb9e57b15631ba82afe6a..4932668448a7346758983b647f4e5080
@Override
public float getWalkTargetValue(BlockPos pos, LevelReader level) {
return 0.0F;
diff --git a/net/minecraft/world/entity/animal/coppergolem/CopperGolem.java b/net/minecraft/world/entity/animal/coppergolem/CopperGolem.java
index 0597de19bcb1dc21cc7d07bb9b69dfb6967bba6f..19d02efdd82f370d0edc62abdbb7be3a062f8706 100644
--- a/net/minecraft/world/entity/animal/coppergolem/CopperGolem.java
+++ b/net/minecraft/world/entity/animal/coppergolem/CopperGolem.java
@@ -141,6 +141,13 @@ public class CopperGolem extends AbstractGolem implements ContainerUser, Shearab
}
// Purpur end - Configurable entity base attributes
+ // Purpur start - Toggle for water sensitive mob damage
+ @Override
+ public boolean isSensitiveToWater() {
+ return this.level().purpurConfig.copperGolemTakeDamageFromWater;
+ }
+ // Purpur end - Toggle for water sensitive mob damage
+
public static AttributeSupplier.Builder createAttributes() {
return Mob.createMobAttributes().add(Attributes.MOVEMENT_SPEED, 0.2F).add(Attributes.STEP_HEIGHT, 1.0).add(Attributes.MAX_HEALTH, 12.0);
}
diff --git a/net/minecraft/world/entity/animal/goat/Goat.java b/net/minecraft/world/entity/animal/goat/Goat.java
index 0ec325f198d877057a9b497e667d1f3be40e683e..4e93554170d9c91a7d704b161b91ca28b19be73b 100644
--- a/net/minecraft/world/entity/animal/goat/Goat.java

View File

@@ -454,6 +454,24 @@ index 4932668448a7346758983b647f4e508061297ba2..08fb591e860b7b2b93b42bfc7a91d639
@Override
public float getWalkTargetValue(BlockPos pos, LevelReader level) {
return 0.0F;
diff --git a/net/minecraft/world/entity/animal/coppergolem/CopperGolem.java b/net/minecraft/world/entity/animal/coppergolem/CopperGolem.java
index 19d02efdd82f370d0edc62abdbb7be3a062f8706..eb1074a39d7d1ec8ecf7f2345e5402ef092cf9b1 100644
--- a/net/minecraft/world/entity/animal/coppergolem/CopperGolem.java
+++ b/net/minecraft/world/entity/animal/coppergolem/CopperGolem.java
@@ -148,6 +148,13 @@ public class CopperGolem extends AbstractGolem implements ContainerUser, Shearab
}
// Purpur end - Toggle for water sensitive mob damage
+ // Purpur start - Mobs always drop experience
+ @Override
+ protected boolean isAlwaysExperienceDropper() {
+ return this.level().purpurConfig.copperGolemAlwaysDropExp;
+ }
+ // Purpur end - Mobs always drop experience
+
public static AttributeSupplier.Builder createAttributes() {
return Mob.createMobAttributes().add(Attributes.MOVEMENT_SPEED, 0.2F).add(Attributes.STEP_HEIGHT, 1.0).add(Attributes.MAX_HEALTH, 12.0);
}
diff --git a/net/minecraft/world/entity/animal/goat/Goat.java b/net/minecraft/world/entity/animal/goat/Goat.java
index 4e93554170d9c91a7d704b161b91ca28b19be73b..99980c9a69b51f81a9cd4429d59fab9497d79656 100644
--- a/net/minecraft/world/entity/animal/goat/Goat.java

View File

@@ -1459,6 +1459,29 @@ public class PurpurWorldConfig {
codAlwaysDropExp = getBoolean("mobs.cod.always-drop-exp", codAlwaysDropExp);
}
public boolean copperGolemRidable = false;
public boolean copperGolemRidableInWater = true;
public boolean copperGolemControllable = true;
public boolean copperGolemCanSwim = false;
public double copperGolemMaxHealth = 12.0D;
public double copperGolemStepHeight = 1.0D;
public double copperGolemMovementSpeed = 0.2D;
public double copperGolemScale = 1.0D;
public boolean copperGolemTakeDamageFromWater = false;
public boolean copperGolemAlwaysDropExp = false;
private void copperGolemSettings() {
copperGolemRidable = getBoolean("mobs.copper_golem.ridable", copperGolemRidable);
copperGolemRidableInWater = getBoolean("mobs.copper_golem.ridable-in-water", copperGolemRidableInWater);
copperGolemControllable = getBoolean("mobs.copper_golem.controllable", copperGolemControllable);
copperGolemCanSwim = getBoolean("mobs.copper_golem.can-swim", copperGolemCanSwim);
copperGolemMaxHealth = getDouble("mobs.copper_golem.attributes.max_health", copperGolemMaxHealth);
copperGolemStepHeight = getDouble("mobs.copper_golem.attributes.step_height", copperGolemStepHeight);
copperGolemMovementSpeed = getDouble("mobs.copper_golem.attributes.movement_speed", copperGolemMovementSpeed);
copperGolemScale = Mth.clamp(getDouble("mobs.copper_golem.attributes.scale", copperGolemScale), 0.0625D, 16.0D);
copperGolemTakeDamageFromWater = getBoolean("mobs.copper_golem.takes-damage-from-water", copperGolemTakeDamageFromWater);
copperGolemAlwaysDropExp = getBoolean("mobs.copper_golem.always-drop-exp", copperGolemAlwaysDropExp);
}
public boolean cowRidable = false;
public boolean cowRidableInWater = true;
public boolean cowControllable = true;