Update to Minecraft 1.17

By: md_5 <git@md-5.net>
This commit is contained in:
CraftBukkit/Spigot
2021-06-11 15:00:00 +10:00
parent 75faba7fde
commit b3a8254758
619 changed files with 10708 additions and 8451 deletions

View File

@@ -1,6 +1,6 @@
--- a/net/minecraft/world/entity/monster/piglin/EntityPiglin.java
+++ b/net/minecraft/world/entity/monster/piglin/EntityPiglin.java
@@ -53,6 +53,18 @@
@@ -56,6 +56,18 @@
import net.minecraft.world.level.block.Blocks;
import net.minecraft.world.level.block.state.IBlockData;
@@ -16,18 +16,13 @@
+import net.minecraft.world.item.Item;
+// CraftBukkit end
+
public class EntityPiglin extends EntityPiglinAbstract implements ICrossbow {
public class EntityPiglin extends EntityPiglinAbstract implements ICrossbow, InventoryCarrier {
private static final DataWatcherObject<Boolean> bp = DataWatcher.a(EntityPiglin.class, DataWatcherRegistry.i);
@@ -60,10 +72,14 @@
private static final DataWatcherObject<Boolean> br = DataWatcher.a(EntityPiglin.class, DataWatcherRegistry.i);
private static final UUID bs = UUID.fromString("766bfa64-11f3-11ea-8d71-362b9e155667");
private static final AttributeModifier bt = new AttributeModifier(EntityPiglin.bs, "Baby speed boost", 0.20000000298023224D, AttributeModifier.Operation.MULTIPLY_BASE);
- private final InventorySubcontainer bu = new InventorySubcontainer(8);
+ public final InventorySubcontainer bu = new InventorySubcontainer(8); // PAIL private -> public
public boolean cannotHunt = false;
protected static final ImmutableList<SensorType<? extends Sensor<? super EntityPiglin>>> d = ImmutableList.of(SensorType.c, SensorType.d, SensorType.b, SensorType.f, SensorType.k);
protected static final ImmutableList<MemoryModuleType<?>> bo = ImmutableList.of(MemoryModuleType.LOOK_TARGET, MemoryModuleType.DOORS_TO_CLOSE, MemoryModuleType.MOBS, MemoryModuleType.VISIBLE_MOBS, MemoryModuleType.NEAREST_VISIBLE_PLAYER, MemoryModuleType.NEAREST_VISIBLE_TARGETABLE_PLAYER, MemoryModuleType.NEAREST_VISIBLE_ADULT_PIGLINS, MemoryModuleType.NEARBY_ADULT_PIGLINS, MemoryModuleType.NEAREST_VISIBLE_WANTED_ITEM, MemoryModuleType.HURT_BY, MemoryModuleType.HURT_BY_ENTITY, MemoryModuleType.WALK_TARGET, new MemoryModuleType[]{MemoryModuleType.CANT_REACH_WALK_TARGET_SINCE, MemoryModuleType.ATTACK_TARGET, MemoryModuleType.ATTACK_COOLING_DOWN, MemoryModuleType.INTERACTION_TARGET, MemoryModuleType.PATH, MemoryModuleType.ANGRY_AT, MemoryModuleType.UNIVERSAL_ANGER, MemoryModuleType.AVOID_TARGET, MemoryModuleType.ADMIRING_ITEM, MemoryModuleType.TIME_TRYING_TO_REACH_ADMIRE_ITEM, MemoryModuleType.ADMIRING_DISABLED, MemoryModuleType.DISABLE_WALK_TO_ADMIRE_ITEM, MemoryModuleType.CELEBRATE_LOCATION, MemoryModuleType.DANCING, MemoryModuleType.HUNTED_RECENTLY, MemoryModuleType.NEAREST_VISIBLE_BABY_HOGLIN, MemoryModuleType.NEAREST_VISIBLE_NEMSIS, MemoryModuleType.NEAREST_VISIBLE_ZOMBIFIED, MemoryModuleType.RIDE_TARGET, MemoryModuleType.VISIBLE_ADULT_PIGLIN_COUNT, MemoryModuleType.VISIBLE_ADULT_HOGLIN_COUNT, MemoryModuleType.NEAREST_VISIBLE_HUNTABLE_HOGLIN, MemoryModuleType.NEAREST_TARGETABLE_PLAYER_NOT_WEARING_GOLD, MemoryModuleType.NEAREST_PLAYER_HOLDING_WANTED_ITEM, MemoryModuleType.ATE_RECENTLY, MemoryModuleType.NEAREST_REPELLENT});
private static final DataWatcherObject<Boolean> DATA_BABY_ID = DataWatcher.a(EntityPiglin.class, DataWatcherRegistry.BOOLEAN);
@@ -76,6 +88,10 @@
public boolean cannotHunt;
protected static final ImmutableList<SensorType<? extends Sensor<? super EntityPiglin>>> SENSOR_TYPES = ImmutableList.of(SensorType.NEAREST_LIVING_ENTITIES, SensorType.NEAREST_PLAYERS, SensorType.NEAREST_ITEMS, SensorType.HURT_BY, SensorType.PIGLIN_SPECIFIC_SENSOR);
protected static final ImmutableList<MemoryModuleType<?>> MEMORY_TYPES = ImmutableList.of(MemoryModuleType.LOOK_TARGET, MemoryModuleType.DOORS_TO_CLOSE, MemoryModuleType.NEAREST_LIVING_ENTITIES, MemoryModuleType.NEAREST_VISIBLE_LIVING_ENTITIES, MemoryModuleType.NEAREST_VISIBLE_PLAYER, MemoryModuleType.NEAREST_VISIBLE_ATTACKABLE_PLAYER, MemoryModuleType.NEAREST_VISIBLE_ADULT_PIGLINS, MemoryModuleType.NEARBY_ADULT_PIGLINS, MemoryModuleType.NEAREST_VISIBLE_WANTED_ITEM, MemoryModuleType.HURT_BY, MemoryModuleType.HURT_BY_ENTITY, MemoryModuleType.WALK_TARGET, new MemoryModuleType[]{MemoryModuleType.CANT_REACH_WALK_TARGET_SINCE, MemoryModuleType.ATTACK_TARGET, MemoryModuleType.ATTACK_COOLING_DOWN, MemoryModuleType.INTERACTION_TARGET, MemoryModuleType.PATH, MemoryModuleType.ANGRY_AT, MemoryModuleType.UNIVERSAL_ANGER, MemoryModuleType.AVOID_TARGET, MemoryModuleType.ADMIRING_ITEM, MemoryModuleType.TIME_TRYING_TO_REACH_ADMIRE_ITEM, MemoryModuleType.ADMIRING_DISABLED, MemoryModuleType.DISABLE_WALK_TO_ADMIRE_ITEM, MemoryModuleType.CELEBRATE_LOCATION, MemoryModuleType.DANCING, MemoryModuleType.HUNTED_RECENTLY, MemoryModuleType.NEAREST_VISIBLE_BABY_HOGLIN, MemoryModuleType.NEAREST_VISIBLE_NEMESIS, MemoryModuleType.NEAREST_VISIBLE_ZOMBIFIED, MemoryModuleType.RIDE_TARGET, MemoryModuleType.VISIBLE_ADULT_PIGLIN_COUNT, MemoryModuleType.VISIBLE_ADULT_HOGLIN_COUNT, MemoryModuleType.NEAREST_VISIBLE_HUNTABLE_HOGLIN, MemoryModuleType.NEAREST_TARGETABLE_PLAYER_NOT_WEARING_GOLD, MemoryModuleType.NEAREST_PLAYER_HOLDING_WANTED_ITEM, MemoryModuleType.ATE_RECENTLY, MemoryModuleType.NEAREST_REPELLENT});
+ // CraftBukkit start - Custom bartering and interest list
+ public Set<Item> allowedBarterItems = new HashSet<>();
+ public Set<Item> interestItems = new HashSet<>();
@@ -35,10 +30,10 @@
public EntityPiglin(EntityTypes<? extends EntityPiglinAbstract> entitytypes, World world) {
super(entitytypes, world);
@@ -82,6 +98,14 @@
@@ -94,6 +110,14 @@
}
nbttagcompound.set("Inventory", this.bu.g());
nbttagcompound.set("Inventory", this.inventory.g());
+ // CraftBukkit start
+ NBTTagList barterList = new NBTTagList();
+ allowedBarterItems.stream().map(IRegistry.ITEM::getKey).map(MinecraftKey::toString).map(NBTTagString::a).forEach(barterList::add);
@@ -50,18 +45,18 @@
}
@Override
@@ -90,6 +114,10 @@
@@ -102,6 +126,10 @@
this.setBaby(nbttagcompound.getBoolean("IsBaby"));
this.v(nbttagcompound.getBoolean("CannotHunt"));
this.bu.a(nbttagcompound.getList("Inventory", 10));
this.x(nbttagcompound.getBoolean("CannotHunt"));
this.inventory.a(nbttagcompound.getList("Inventory", 10));
+ // CraftBukkit start
+ this.allowedBarterItems = nbttagcompound.getList("Bukkit.BarterList", 8).stream().map(NBTBase::asString).map(MinecraftKey::a).map(IRegistry.ITEM::get).collect(Collectors.toCollection(HashSet::new));
+ this.interestItems = nbttagcompound.getList("Bukkit.InterestList", 8).stream().map(NBTBase::asString).map(MinecraftKey::a).map(IRegistry.ITEM::get).collect(Collectors.toCollection(HashSet::new));
+ // CraftBukkit end
}
@Override
@@ -188,7 +216,7 @@
@VisibleForDebug
@@ -206,7 +234,7 @@
@Override
public BehaviorController<EntityPiglin> getBehaviorController() {
@@ -70,41 +65,41 @@
}
@Override
@@ -247,7 +275,7 @@
@@ -265,7 +293,7 @@
@Override
protected void mobTick() {
this.world.getMethodProfiler().enter("piglinBrain");
- this.getBehaviorController().a((WorldServer) this.world, (EntityLiving) this);
+ this.getBehaviorController().a((WorldServer) this.world, (EntityPiglin) this); // CraftBukkit - decompile error
this.world.getMethodProfiler().exit();
this.level.getMethodProfiler().enter("piglinBrain");
- this.getBehaviorController().a((WorldServer) this.level, (EntityLiving) this);
+ this.getBehaviorController().a((WorldServer) this.level, (EntityPiglin) this); // CraftBukkit - decompile error
this.level.getMethodProfiler().exit();
PiglinAI.b(this);
super.mobTick();
@@ -330,7 +358,7 @@
@@ -349,7 +377,7 @@
}
protected void n(ItemStack itemstack) {
- if (itemstack.getItem() == PiglinAI.a) {
+ if (itemstack.getItem() == PiglinAI.a || allowedBarterItems.contains(itemstack.getItem())) { // CraftBukkit - Changes to accept custom payment items
protected void p(ItemStack itemstack) {
- if (itemstack.a(PiglinAI.BARTERING_ITEM)) {
+ if (itemstack.a(PiglinAI.BARTERING_ITEM) || allowedBarterItems.contains(itemstack.getItem())) { // CraftBukkit - Changes to accept custom payment items
this.setSlot(EnumItemSlot.OFFHAND, itemstack);
this.d(EnumItemSlot.OFFHAND);
} else {
@@ -356,8 +384,8 @@
@@ -375,8 +403,8 @@
if (EnchantmentManager.d(itemstack1)) {
return false;
} else {
- boolean flag = PiglinAI.a(itemstack.getItem()) || itemstack.getItem() == Items.CROSSBOW;
- boolean flag1 = PiglinAI.a(itemstack1.getItem()) || itemstack1.getItem() == Items.CROSSBOW;
+ boolean flag = PiglinAI.isLovedByPiglin(itemstack.getItem(), this) || itemstack.getItem() == Items.CROSSBOW; // CraftBukkit
+ boolean flag1 = PiglinAI.isLovedByPiglin(itemstack1.getItem(), this) || itemstack1.getItem() == Items.CROSSBOW; // CraftBukkit
- boolean flag = PiglinAI.a(itemstack) || itemstack.a(Items.CROSSBOW);
- boolean flag1 = PiglinAI.a(itemstack1) || itemstack1.a(Items.CROSSBOW);
+ boolean flag = PiglinAI.isLovedByPiglin(itemstack, this) || itemstack.a(Items.CROSSBOW); // CraftBukkit
+ boolean flag1 = PiglinAI.isLovedByPiglin(itemstack1, this) || itemstack1.a(Items.CROSSBOW); // CraftBukkit
return flag && !flag1 ? true : (!flag && flag1 ? false : (this.eM() && itemstack.getItem() != Items.CROSSBOW && itemstack1.getItem() == Items.CROSSBOW ? false : super.a(itemstack, itemstack1)));
return flag && !flag1 ? true : (!flag && flag1 ? false : (this.fv() && !itemstack.a(Items.CROSSBOW) && itemstack1.a(Items.CROSSBOW) ? false : super.a(itemstack, itemstack1)));
}
@@ -386,7 +414,7 @@
@@ -405,7 +433,7 @@
@Override
protected SoundEffect getSoundAmbient() {
- return this.world.isClientSide ? null : (SoundEffect) PiglinAI.d(this).orElse((Object) null);
+ return this.world.isClientSide ? null : (SoundEffect) PiglinAI.d(this).orElse(null); // CraftBukkit - Decompile error
- return this.level.isClientSide ? null : (SoundEffect) PiglinAI.d(this).orElse((Object) null);
+ return this.level.isClientSide ? null : (SoundEffect) PiglinAI.d(this).orElse(null); // CraftBukkit - Decompile error
}
@Override

View File

@@ -1,6 +1,6 @@
--- a/net/minecraft/world/entity/monster/piglin/EntityPiglinAbstract.java
+++ b/net/minecraft/world/entity/monster/piglin/EntityPiglinAbstract.java
@@ -99,7 +99,7 @@
@@ -100,7 +100,7 @@
}
protected void c(WorldServer worldserver) {
@@ -9,12 +9,12 @@
if (entitypigzombie != null) {
entitypigzombie.addEffect(new MobEffect(MobEffects.CONFUSION, 200, 0));
@@ -114,7 +114,7 @@
@@ -117,7 +117,7 @@
@Nullable
@Override
public EntityLiving getGoalTarget() {
- return (EntityLiving) this.bg.getMemory(MemoryModuleType.ATTACK_TARGET).orElse((Object) null);
+ return (EntityLiving) this.bg.getMemory(MemoryModuleType.ATTACK_TARGET).orElse(null); // CraftBukkit - decompile error
- return (EntityLiving) this.brain.getMemory(MemoryModuleType.ATTACK_TARGET).orElse((Object) null);
+ return (EntityLiving) this.brain.getMemory(MemoryModuleType.ATTACK_TARGET).orElse(null); // CraftBukkit - decompile error
}
protected boolean eO() {
protected boolean fx() {

View File

@@ -1,6 +1,6 @@
--- a/net/minecraft/world/entity/monster/piglin/PiglinAI.java
+++ b/net/minecraft/world/entity/monster/piglin/PiglinAI.java
@@ -72,6 +72,13 @@
@@ -73,6 +73,13 @@
import net.minecraft.world.level.storage.loot.parameters.LootContextParameters;
import net.minecraft.world.phys.Vec3D;
@@ -13,10 +13,10 @@
+
public class PiglinAI {
public static final Item a = Items.GOLD_INGOT;
@@ -114,7 +121,8 @@
public static final int REPELLENT_DETECTION_RANGE_HORIZONTAL = 8;
@@ -145,7 +152,8 @@
private static void b(EntityPiglin entitypiglin, BehaviorController<EntityPiglin> behaviorcontroller) {
behaviorcontroller.a(Activity.FLIGHT, 10, ImmutableList.of(new BehaviorAttackTargetForget<>((entityliving) -> {
behaviorcontroller.a(Activity.FIGHT, 10, ImmutableList.of(new BehaviorAttackTargetForget<>((entityliving) -> {
return !b(entitypiglin, entityliving);
- }), new BehaviorRunIf<>(PiglinAI::c, new BehaviorRetreat<>(5, 0.75F)), new BehaviorWalkAwayOutOfRange(1.0F), new BehaviorAttack(20), new BehaviorCrossbowAttack<>(), new BehaviorRememberHuntedHoglin<>(), new BehaviorRemoveMemory<>(PiglinAI::j, MemoryModuleType.ATTACK_TARGET)), MemoryModuleType.ATTACK_TARGET);
+ // CraftBukkit - decompile error
@@ -24,7 +24,7 @@
}
private static void c(BehaviorController<EntityPiglin> behaviorcontroller) {
@@ -132,7 +140,8 @@
@@ -163,7 +171,8 @@
}
private static void f(BehaviorController<EntityPiglin> behaviorcontroller) {
@@ -34,36 +34,40 @@
}
private static BehaviorGateSingle<EntityPiglin> a() {
@@ -140,7 +149,8 @@
@@ -171,7 +180,8 @@
}
private static BehaviorGateSingle<EntityPiglin> b() {
- return new BehaviorGateSingle<>(ImmutableList.of(Pair.of(new BehaviorStrollRandomUnconstrained(0.6F), 2), Pair.of(BehaviorInteract.a(EntityTypes.PIGLIN, 8, MemoryModuleType.INTERACTION_TARGET, 0.6F, 2), 2), Pair.of(new BehaviorRunIf<>(PiglinAI::g, new BehaviorLookWalk(0.6F, 3)), 2), Pair.of(new BehaviorNop(30, 60), 1)));
- return new BehaviorGateSingle<>(ImmutableList.of(Pair.of(new BehaviorStrollRandomUnconstrained(0.6F), 2), Pair.of(BehaviorInteract.a(EntityTypes.PIGLIN, 8, MemoryModuleType.INTERACTION_TARGET, 0.6F, 2), 2), Pair.of(new BehaviorRunIf<>(PiglinAI::f, new BehaviorLookWalk(0.6F, 3)), 2), Pair.of(new BehaviorNop(30, 60), 1)));
+ // CraftBukkit - decompile error
+ return new BehaviorGateSingle<>(ImmutableList.of(Pair.of(new BehaviorStrollRandomUnconstrained(0.6F), 2), Pair.of(BehaviorInteract.a(EntityTypes.PIGLIN, 8, MemoryModuleType.INTERACTION_TARGET, 0.6F, 2), 2), Pair.of(new BehaviorRunIf<>((java.util.function.Predicate<EntityLiving>) PiglinAI::g, new BehaviorLookWalk(0.6F, 3)), 2), Pair.of(new BehaviorNop(30, 60), 1)));
+ return new BehaviorGateSingle<>(ImmutableList.of(Pair.of(new BehaviorStrollRandomUnconstrained(0.6F), 2), Pair.of(BehaviorInteract.a(EntityTypes.PIGLIN, 8, MemoryModuleType.INTERACTION_TARGET, 0.6F, 2), 2), Pair.of(new BehaviorRunIf<>((java.util.function.Predicate<EntityLiving>) PiglinAI::f, new BehaviorLookWalk(0.6F, 3)), 2), Pair.of(new BehaviorNop(30, 60), 1)));
}
private static BehaviorWalkAway<BlockPosition> c() {
@@ -157,10 +167,10 @@
@@ -188,13 +198,13 @@
protected static void b(EntityPiglin entitypiglin) {
BehaviorController<EntityPiglin> behaviorcontroller = entitypiglin.getBehaviorController();
- Activity activity = (Activity) behaviorcontroller.f().orElse((Object) null);
+ Activity activity = (Activity) behaviorcontroller.f().orElse(null); // CraftBukkit - decompile error
behaviorcontroller.a((List) ImmutableList.of(Activity.ADMIRE_ITEM, Activity.FLIGHT, Activity.AVOID, Activity.CELEBRATE, Activity.RIDE, Activity.IDLE));
behaviorcontroller.a((List) ImmutableList.of(Activity.ADMIRE_ITEM, Activity.FIGHT, Activity.AVOID, Activity.CELEBRATE, Activity.RIDE, Activity.IDLE));
- Activity activity1 = (Activity) behaviorcontroller.f().orElse((Object) null);
+ Activity activity1 = (Activity) behaviorcontroller.f().orElse(null); // CraftBukkit - decompile error
if (activity != activity1) {
d(entitypiglin).ifPresent(entitypiglin::a);
@@ -192,25 +202,29 @@
- Optional optional = d(entitypiglin);
+ Optional<SoundEffect> optional = d(entitypiglin); // CraftBukkit - decompile error
Objects.requireNonNull(entitypiglin);
optional.ifPresent(entitypiglin::a);
@@ -226,23 +236,27 @@
n(entitypiglin);
ItemStack itemstack;
- if (entityitem.getItemStack().getItem() == Items.GOLD_NUGGET) {
- if (entityitem.getItemStack().a(Items.GOLD_NUGGET)) {
+ // CraftBukkit start
+ if (entityitem.getItemStack().getItem() == Items.GOLD_NUGGET && !org.bukkit.craftbukkit.event.CraftEventFactory.callEntityPickupItemEvent(entitypiglin, entityitem, 0, false).isCancelled()) {
+ if (entityitem.getItemStack().a(Items.GOLD_NUGGET) && !org.bukkit.craftbukkit.event.CraftEventFactory.callEntityPickupItemEvent(entitypiglin, entityitem, 0, false).isCancelled()) {
entitypiglin.receive(entityitem, entityitem.getItemStack().getCount());
itemstack = entityitem.getItemStack();
entityitem.die();
@@ -76,27 +80,25 @@
}
+ // CraftBukkit end
Item item = itemstack.getItem();
- if (a(item)) {
+ if (isLovedByPiglin(item, entitypiglin)) { // CraftBukkit - Changes to allow for custom payment in bartering
- if (a(itemstack)) {
+ if (isLovedByPiglin(itemstack, entitypiglin)) { // CraftBukkit - Changes to allow for custom payment in bartering
entitypiglin.getBehaviorController().removeMemory(MemoryModuleType.TIME_TRYING_TO_REACH_ADMIRE_ITEM);
c(entitypiglin, itemstack);
d((EntityLiving) entitypiglin);
} else if (c(item) && !u(entitypiglin)) {
} else if (c(itemstack) && !u(entitypiglin)) {
s(entitypiglin);
} else {
- boolean flag = entitypiglin.g(itemstack);
+ boolean flag = entitypiglin.g(itemstack, entityitem); // CraftBukkit
- boolean flag = entitypiglin.j(itemstack);
+ boolean flag = entitypiglin.j(itemstack, entityitem); // CraftBukkit
if (!flag) {
d(entitypiglin, itemstack);
@@ -246,9 +260,14 @@
@@ -278,9 +292,14 @@
boolean flag1;
if (entitypiglin.eM()) {
- flag1 = b(itemstack.getItem());
+ flag1 = isBarterItem(itemstack.getItem(), entitypiglin); // CraftBukkit - Changes to allow custom payment for bartering
if (entitypiglin.fv()) {
- flag1 = b(itemstack);
+ flag1 = isBarterItem(itemstack, entitypiglin); // CraftBukkit - Changes to allow custom payment for bartering
if (flag && flag1) {
- a(entitypiglin, i(entitypiglin));
+ // CraftBukkit start
@@ -106,60 +108,58 @@
+ }
+ // CraftBukkit end
} else if (!flag1) {
boolean flag2 = entitypiglin.g(itemstack);
boolean flag2 = entitypiglin.j(itemstack);
@@ -261,7 +280,7 @@
@@ -293,7 +312,7 @@
if (!flag1) {
ItemStack itemstack1 = entitypiglin.getItemInMainHand();
- if (a(itemstack1.getItem())) {
+ if (isLovedByPiglin(itemstack1.getItem(), entitypiglin)) { // CraftBukkit - Changes to allow for custom payment in bartering
- if (a(itemstack1)) {
+ if (isLovedByPiglin(itemstack1, entitypiglin)) { // CraftBukkit - Changes to allow for custom payment in bartering
d(entitypiglin, itemstack1);
} else {
a(entitypiglin, Collections.singletonList(itemstack1));
@@ -338,15 +357,21 @@
@@ -370,7 +389,7 @@
return false;
} else if (x(entitypiglin) && entitypiglin.getBehaviorController().hasMemory(MemoryModuleType.ATTACK_TARGET)) {
return false;
- } else if (b(item)) {
+ } else if (isBarterItem(item, entitypiglin)) { // CraftBukkit
- } else if (b(itemstack)) {
+ } else if (isBarterItem(itemstack, entitypiglin)) { // CraftBukkit
return z(entitypiglin);
} else {
boolean flag = entitypiglin.l(itemstack);
- return item == Items.GOLD_NUGGET ? flag : (c(item) ? !u(entitypiglin) && flag : (!a(item) ? entitypiglin.o(itemstack) : z(entitypiglin) && flag));
+ return item == Items.GOLD_NUGGET ? flag : (c(item) ? !u(entitypiglin) && flag : (!isLovedByPiglin(item, entitypiglin) ? entitypiglin.o(itemstack) : z(entitypiglin) && flag)); //CraftBukkit
boolean flag = entitypiglin.n(itemstack);
@@ -379,6 +398,12 @@
}
}
+ // CraftBukkit start - Added method to allow checking for custom payment items
+ protected static boolean isLovedByPiglin(Item item, EntityPiglin piglin) {
+ return a(item) || (piglin.interestItems.contains(item) || piglin.allowedBarterItems.contains(item));
+ protected static boolean isLovedByPiglin(ItemStack itemstack, EntityPiglin piglin) {
+ return a(itemstack) || (piglin.interestItems.contains(itemstack.getItem()) || piglin.allowedBarterItems.contains(itemstack.getItem()));
+ }
+ // CraftBukkit end
+
protected static boolean a(Item item) {
return item.a((Tag) TagsItem.PIGLIN_LOVED);
protected static boolean a(ItemStack itemstack) {
return itemstack.a((Tag) TagsItem.PIGLIN_LOVED);
}
@@ -412,7 +437,7 @@
@@ -444,7 +469,7 @@
}
public static void a(EntityHuman entityhuman, boolean flag) {
- List<EntityPiglin> list = entityhuman.world.a(EntityPiglin.class, entityhuman.getBoundingBox().g(16.0D));
+ List<EntityPiglinAbstract> list = entityhuman.world.a(EntityPiglin.class, entityhuman.getBoundingBox().g(16.0D)); // CraftBukkit - decompile error
- List<EntityPiglin> list = entityhuman.level.a(EntityPiglin.class, entityhuman.getBoundingBox().g(16.0D));
+ List<EntityPiglinAbstract> list = (List) entityhuman.level.a(EntityPiglin.class, entityhuman.getBoundingBox().g(16.0D)); // CraftBukkit - decompile error
list.stream().filter(PiglinAI::d).filter((entitypiglin) -> {
return !flag || BehaviorUtil.c(entitypiglin, entityhuman);
@@ -442,7 +467,7 @@
return !flag || BehaviorUtil.b((EntityLiving) entitypiglin, entityhuman);
@@ -474,7 +499,7 @@
}
protected static boolean b(EntityPiglin entitypiglin, ItemStack itemstack) {
- return !x(entitypiglin) && !v(entitypiglin) && entitypiglin.eM() && b(itemstack.getItem());
+ return !x(entitypiglin) && !v(entitypiglin) && entitypiglin.eM() && isBarterItem(itemstack.getItem(), entitypiglin); // CraftBukkit
- return !x(entitypiglin) && !v(entitypiglin) && entitypiglin.fv() && b(itemstack);
+ return !x(entitypiglin) && !v(entitypiglin) && entitypiglin.fv() && isBarterItem(itemstack, entitypiglin); // CraftBukkit
}
protected static void a(EntityPiglin entitypiglin, EntityLiving entityliving) {
@@ -648,7 +673,7 @@
@@ -680,7 +705,7 @@
EntityLiving entityliving = (EntityLiving) behaviorcontroller.getMemory(MemoryModuleType.AVOID_TARGET).get();
EntityTypes<?> entitytypes = entityliving.getEntityType();
@@ -168,34 +168,25 @@
}
}
@@ -705,6 +730,12 @@
@@ -741,6 +766,12 @@
return entitypiglin.getBehaviorController().hasMemory(MemoryModuleType.ADMIRING_ITEM);
}
+ // CraftBukkit start - Changes to allow custom payment for bartering
+ private static boolean isBarterItem(Item item, EntityPiglin piglin) {
+ return b(item) || piglin.allowedBarterItems.contains(item);
+ private static boolean isBarterItem(ItemStack itemstack, EntityPiglin piglin) {
+ return b(itemstack) || piglin.allowedBarterItems.contains(itemstack.getItem());
+ }
+ // CraftBukkit end
+
private static boolean b(Item item) {
return item == PiglinAI.a;
private static boolean b(ItemStack itemstack) {
return itemstack.a(PiglinAI.BARTERING_ITEM);
}
@@ -730,7 +761,7 @@
}
public static boolean b(EntityLiving entityliving) {
- return entityliving.getEntityType() == EntityTypes.PLAYER && entityliving.a(PiglinAI::a);
+ return entityliving.getEntityType() == EntityTypes.PLAYER && entityliving.a((java.util.function.Predicate<Item>) PiglinAI::a); // CraftBukkit - decompile error
}
private static boolean x(EntityPiglin entitypiglin) {
@@ -746,7 +777,7 @@
@@ -778,7 +809,7 @@
}
private static boolean z(EntityPiglin entitypiglin) {
- return entitypiglin.getItemInOffHand().isEmpty() || !a(entitypiglin.getItemInOffHand().getItem());
+ return entitypiglin.getItemInOffHand().isEmpty() || !isLovedByPiglin(entitypiglin.getItemInOffHand().getItem(), entitypiglin); // CraftBukkit - Changes to allow custom payment for bartering
- return entitypiglin.getItemInOffHand().isEmpty() || !a(entitypiglin.getItemInOffHand());
+ return entitypiglin.getItemInOffHand().isEmpty() || !isLovedByPiglin(entitypiglin.getItemInOffHand(), entitypiglin); // CraftBukkit - Changes to allow custom payment for bartering
}
public static boolean a(EntityTypes entitytypes) {
public static boolean a(EntityTypes<?> entitytypes) {