mirror of
https://github.com/PurpurMC/Purpur.git
synced 2026-02-17 08:27:43 +01:00
Upstream has released updates that appear to apply and compile correctly Paper Changes: PaperMC/Paper@862299b "Downgrade" Vineflower to 1.10.1 release (#10423) PaperMC/Paper@9e886c4 Remove dead code (LegacyResult) (#10411) PaperMC/Paper@3b078f8 Add API for ticking fluids (#10435) PaperMC/Paper@908b814 Fix inventory desync with PlayerLeashEntityEvent (#10436) PaperMC/Paper@3af1346 Allow setting player list name early PaperMC/Paper@a033033 Added chunk view API (#10398) PaperMC/Paper@c5f68ff Add CartographyItemEvent and get/setResult for CartographyInventory (#10396) PaperMC/Paper@fc53ff5 Add Configuration for finding Structures outside World Border (#10437) PaperMC/Paper@a6b6ecd More Raid API (#7537)
67 lines
3.5 KiB
Diff
67 lines
3.5 KiB
Diff
From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001
|
|
From: granny <contact@granny.dev>
|
|
Date: Sun, 13 Aug 2023 06:26:08 -0700
|
|
Subject: [PATCH] add an option for piglins to ignore gold-trimmed armor
|
|
|
|
|
|
diff --git a/src/main/java/net/minecraft/world/entity/monster/piglin/PiglinAi.java b/src/main/java/net/minecraft/world/entity/monster/piglin/PiglinAi.java
|
|
index 4f4f557b7f4232ec3b90dda43c6bed30521318ba..dd4313e0507d3adda0ec84c79f1af13ecc2d7ef3 100644
|
|
--- a/src/main/java/net/minecraft/world/entity/monster/piglin/PiglinAi.java
|
|
+++ b/src/main/java/net/minecraft/world/entity/monster/piglin/PiglinAi.java
|
|
@@ -599,20 +599,33 @@ public class PiglinAi {
|
|
Iterator iterator = iterable.iterator();
|
|
|
|
Item item;
|
|
+ ItemStack itemstack; // Purpur
|
|
|
|
do {
|
|
if (!iterator.hasNext()) {
|
|
return false;
|
|
}
|
|
|
|
- ItemStack itemstack = (ItemStack) iterator.next();
|
|
+ itemstack = (ItemStack) iterator.next(); // Purpur
|
|
|
|
item = itemstack.getItem();
|
|
- } while (!(item instanceof ArmorItem) || ((ArmorItem) item).getMaterial() != ArmorMaterials.GOLD);
|
|
+ } while (!(item instanceof ArmorItem) || ((ArmorItem) item).getMaterial() != ArmorMaterials.GOLD && (!entity.level().purpurConfig.piglinIgnoresArmorWithGoldTrim || !isWearingGoldTrim(entity, itemstack))); // Purpur
|
|
|
|
return true;
|
|
}
|
|
|
|
+ // Purpur start
|
|
+ private static boolean isWearingGoldTrim(LivingEntity entity, ItemStack itemstack) {
|
|
+ Optional<net.minecraft.world.item.armortrim.ArmorTrim> optionalArmorTrim = net.minecraft.world.item.armortrim.ArmorTrim.getTrim(entity.level().registryAccess(), itemstack, true);
|
|
+
|
|
+ if (optionalArmorTrim.isEmpty()) return false;
|
|
+
|
|
+ net.minecraft.world.item.armortrim.ArmorTrim armorTrim = optionalArmorTrim.get();
|
|
+
|
|
+ return armorTrim.material().is(net.minecraft.world.item.armortrim.TrimMaterials.GOLD);
|
|
+ }
|
|
+ // Purpur end
|
|
+
|
|
private static void stopWalking(Piglin piglin) {
|
|
piglin.getBrain().eraseMemory(MemoryModuleType.WALK_TARGET);
|
|
piglin.getNavigation().stop();
|
|
diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java
|
|
index 43c6f7bfac08c31e19df70fb92cd611fbbe03b30..2cefa0a09e86e8d344de8b6fff8541d43f662b65 100644
|
|
--- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java
|
|
+++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java
|
|
@@ -2260,6 +2260,7 @@ public class PurpurWorldConfig {
|
|
public int piglinPortalSpawnModifier = 2000;
|
|
public boolean piglinAlwaysDropExp = false;
|
|
public double piglinHeadVisibilityPercent = 0.5D;
|
|
+ public boolean piglinIgnoresArmorWithGoldTrim = false;
|
|
private void piglinSettings() {
|
|
piglinRidable = getBoolean("mobs.piglin.ridable", piglinRidable);
|
|
piglinRidableInWater = getBoolean("mobs.piglin.ridable-in-water", piglinRidableInWater);
|
|
@@ -2275,6 +2276,7 @@ public class PurpurWorldConfig {
|
|
piglinPortalSpawnModifier = getInt("mobs.piglin.portal-spawn-modifier", piglinPortalSpawnModifier);
|
|
piglinAlwaysDropExp = getBoolean("mobs.piglin.always-drop-exp", piglinAlwaysDropExp);
|
|
piglinHeadVisibilityPercent = getDouble("mobs.piglin.head-visibility-percent", piglinHeadVisibilityPercent);
|
|
+ piglinIgnoresArmorWithGoldTrim = getBoolean("mobs.piglin.ignores-armor-with-gold-trim", piglinIgnoresArmorWithGoldTrim);
|
|
}
|
|
|
|
public boolean piglinBruteRidable = false;
|