mirror of
https://github.com/PurpurMC/Purpur.git
synced 2026-02-17 16:37:43 +01:00
Adds #1127
This commit is contained in:
71
patches/server/0298-Allay-respect-item-NBT.patch
Normal file
71
patches/server/0298-Allay-respect-item-NBT.patch
Normal file
@@ -0,0 +1,71 @@
|
|||||||
|
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 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;
|
||||||
Reference in New Issue
Block a user