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@44ee1cd fix recipe packet limiter (#9841) PaperMC/Paper@e57af7d sync netty version with vanilla (#9842) Pufferfish Changes: pufferfish-gg/Pufferfish@0020a8b Port a patch from upstream pufferfish-gg/Pufferfish@979d3a2 Update upstream (last 1.20.1) pufferfish-gg/Pufferfish@06262c1 Initial 1.20.2 update
64 lines
3.0 KiB
Diff
64 lines
3.0 KiB
Diff
From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001
|
|
From: BillyGalbreath <blake.galbreath@gmail.com>
|
|
Date: Tue, 20 Sep 2022 17:56:21 -0500
|
|
Subject: [PATCH] Allay respect item NBT
|
|
|
|
|
|
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 9bf06cf7b3706f8883e1a0ceac8b1aebb52ba475..c783ce59ea766e6c46a3313628b961f27e01ee8b 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
|
|
@@ -406,9 +406,31 @@ public class Allay extends PathfinderMob implements InventoryCarrier, VibrationS
|
|
|
|
@Override
|
|
public boolean wantsToPickUp(ItemStack stack) {
|
|
- ItemStack itemstack1 = this.getItemInHand(InteractionHand.MAIN_HAND);
|
|
-
|
|
- return !itemstack1.isEmpty() && this.level().getGameRules().getBoolean(GameRules.RULE_MOBGRIEFING) && this.inventory.canAddItem(stack) && this.allayConsidersItemEqual(itemstack1, stack);
|
|
+ // Purpur start
|
|
+ if (!this.level().getGameRules().getBoolean(GameRules.RULE_MOBGRIEFING)) {
|
|
+ return false;
|
|
+ }
|
|
+ ItemStack itemStack = this.getItemInHand(InteractionHand.MAIN_HAND);
|
|
+ if (itemStack.isEmpty()) {
|
|
+ return false;
|
|
+ }
|
|
+ if (!allayConsidersItemEqual(itemStack, stack)) {
|
|
+ return false;
|
|
+ }
|
|
+ if (!this.inventory.canAddItem(stack)) {
|
|
+ return false;
|
|
+ }
|
|
+ for (String tag : this.level().purpurConfig.allayRespectNBT) {
|
|
+ if (stack.hasTag() && itemStack.hasTag()) {
|
|
+ Tag tag1 = stack.getTag().get(tag);
|
|
+ Tag tag2 = itemStack.getTag().get(tag);
|
|
+ if (!Objects.equals(tag1, tag2)) {
|
|
+ return false;
|
|
+ }
|
|
+ }
|
|
+ }
|
|
+ return true;
|
|
+ // Purpur end
|
|
}
|
|
|
|
private boolean allayConsidersItemEqual(ItemStack stack, ItemStack stack2) {
|
|
diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java
|
|
index 86340e782bbc125ec672eea855de29f90ac127de..1a8a1a9bca5c2f92b87fb1a21bdff194718caa8e 100644
|
|
--- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java
|
|
+++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java
|
|
@@ -1083,10 +1083,13 @@ public class PurpurWorldConfig {
|
|
public boolean allayRidable = false;
|
|
public boolean allayRidableInWater = true;
|
|
public boolean allayControllable = true;
|
|
+ public List<String> allayRespectNBT = new ArrayList<>();
|
|
private void allaySettings() {
|
|
allayRidable = getBoolean("mobs.allay.ridable", allayRidable);
|
|
allayRidableInWater = getBoolean("mobs.allay.ridable-in-water", allayRidableInWater);
|
|
allayControllable = getBoolean("mobs.allay.controllable", allayControllable);
|
|
+ allayRespectNBT.clear();
|
|
+ getList("mobs.allay.respect-nbt", new ArrayList<>()).forEach(key -> allayRespectNBT.add(key.toString()));
|
|
}
|
|
|
|
public boolean axolotlRidable = false;
|