-
-
Notifications
You must be signed in to change notification settings - Fork 359
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
- Loading branch information
1 parent
aa349b9
commit eca2c70
Showing
1 changed file
with
71 additions
and
0 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,71 @@ | ||
From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001 | ||
From: BillyGalbreath <[email protected]> | ||
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 c233533fdacb4f5e635267b5fc9fe21bc8b3c51a..4e77bb2be5a35bc6b002e2eae4af41937187ba0d 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 | ||
@@ -15,6 +15,7 @@ import net.minecraft.core.Vec3i; | ||
import net.minecraft.core.particles.ParticleTypes; | ||
import net.minecraft.nbt.CompoundTag; | ||
import net.minecraft.nbt.NbtOps; | ||
+import net.minecraft.nbt.Tag; | ||
import net.minecraft.network.protocol.game.DebugPackets; | ||
import net.minecraft.network.syncher.EntityDataAccessor; | ||
import net.minecraft.network.syncher.EntityDataSerializers; | ||
@@ -411,9 +412,31 @@ public class Allay extends PathfinderMob implements InventoryCarrier { | ||
|
||
@Override | ||
public boolean wantsToPickUp(ItemStack stack) { | ||
- ItemStack itemstack1 = this.getItemInHand(InteractionHand.MAIN_HAND); | ||
- | ||
- return !itemstack1.isEmpty() && itemstack1.sameItemStackIgnoreDurability(stack) && this.inventory.canAddItem(stack) && this.level.getGameRules().getBoolean(GameRules.RULE_MOBGRIEFING); | ||
+ // 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 (!itemStack.sameItemStackIgnoreDurability(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 | ||
} | ||
|
||
@Override | ||
diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java | ||
index 3cf1451569128640fe5d6d9fc0fdc550de75c091..c622cbe7104d0d107116d711de06b3653e3bfd1a 100644 | ||
--- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java | ||
+++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java | ||
@@ -1073,10 +1073,13 @@ public class PurpurWorldConfig { | ||
public boolean allayRidable = false; | ||
public boolean allayRidableInWater = false; | ||
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; |