add an option for piglins to ignore gold-trimmed armor

This commit is contained in:
granny
2025-01-12 17:54:35 -08:00
committed by granny
parent ebcfbeacc5
commit 895a9dfe4c
3 changed files with 34 additions and 50 deletions

View File

@@ -0,0 +1,32 @@
--- a/net/minecraft/world/entity/monster/piglin/PiglinAi.java
+++ b/net/minecraft/world/entity/monster/piglin/PiglinAi.java
@@ -4,6 +_,7 @@
import com.google.common.collect.ImmutableSet;
import com.mojang.datafixers.util.Pair;
import java.util.Collections;
+import java.util.Iterator;
import java.util.List;
import java.util.Optional;
import net.minecraft.server.level.ServerLevel;
@@ -666,13 +_,20 @@
public static boolean isWearingSafeArmor(LivingEntity entity) {
for (ItemStack itemStack : entity.getArmorAndBodyArmorSlots()) {
- if (itemStack.is(ItemTags.PIGLIN_SAFE_ARMOR)) {
+ if (itemStack.is(ItemTags.PIGLIN_SAFE_ARMOR) || (entity.level().purpurConfig.piglinIgnoresArmorWithGoldTrim && isWearingGoldTrim(itemStack.getItem()))) { // Purpur - piglins ignore gold-trimmed armor
return true;
}
}
return false;
}
+
+ // Purpur start - piglins ignore gold-trimmed armor
+ private static boolean isWearingGoldTrim(Item itemstack) {
+ net.minecraft.world.item.equipment.trim.ArmorTrim armorTrim = itemstack.components().get(net.minecraft.core.component.DataComponents.TRIM);
+ return armorTrim != null && armorTrim.material().is(net.minecraft.world.item.equipment.trim.TrimMaterials.GOLD);
+ }
+ // Purpur end - piglins ignore gold-trimmed armor
private static void stopWalking(Piglin piglin) {
piglin.getBrain().eraseMemory(MemoryModuleType.WALK_TARGET);