Fix horse saddle API broken in 1.21.5 update

This commit is contained in:
md_5 2025-03-30 08:26:12 +11:00
parent 63df70ec06
commit 3f917b07bb
No known key found for this signature in database
GPG Key ID: E8E901AC7C617C11
7 changed files with 28 additions and 24 deletions

View File

@ -37,10 +37,12 @@
public abstract class EntityLiving extends Entity implements Attackable { public abstract class EntityLiving extends Entity implements Attackable {
private static final Logger LOGGER = LogUtils.getLogger(); private static final Logger LOGGER = LogUtils.getLogger();
@@ -246,6 +276,19 @@ @@ -245,7 +275,20 @@
protected BehaviorController<?> brain;
protected boolean skipDropExperience; protected boolean skipDropExperience;
private final EnumMap<EnumItemSlot, Reference2ObjectMap<Enchantment, Set<EnchantmentLocationBasedEffect>>> activeLocationDependentEnchantments; private final EnumMap<EnumItemSlot, Reference2ObjectMap<Enchantment, Set<EnchantmentLocationBasedEffect>>> activeLocationDependentEnchantments;
protected final EntityEquipment equipment; - protected final EntityEquipment equipment;
+ public final EntityEquipment equipment;
+ // CraftBukkit start + // CraftBukkit start
+ public int expToDrop; + public int expToDrop;
+ public ArrayList<org.bukkit.inventory.ItemStack> drops = new ArrayList<org.bukkit.inventory.ItemStack>(); + public ArrayList<org.bukkit.inventory.ItemStack> drops = new ArrayList<org.bukkit.inventory.ItemStack>();

View File

@ -111,6 +111,6 @@ public abstract class CraftAbstractHorse extends CraftAnimals implements Abstrac
@Override @Override
public AbstractHorseInventory getInventory() { public AbstractHorseInventory getInventory() {
return new CraftInventoryAbstractHorse(getHandle().inventory); return new CraftInventoryAbstractHorse(getHandle().inventory, getHandle().equipment);
} }
} }

View File

@ -1,7 +1,6 @@
package org.bukkit.craftbukkit.entity; package org.bukkit.craftbukkit.entity;
import com.google.common.base.Preconditions; import com.google.common.base.Preconditions;
import net.minecraft.world.entity.EnumItemSlot;
import net.minecraft.world.entity.animal.horse.EntityHorse; import net.minecraft.world.entity.animal.horse.EntityHorse;
import net.minecraft.world.entity.animal.horse.HorseColor; import net.minecraft.world.entity.animal.horse.HorseColor;
import net.minecraft.world.entity.animal.horse.HorseStyle; import net.minecraft.world.entity.animal.horse.HorseStyle;
@ -60,7 +59,7 @@ public class CraftHorse extends CraftAbstractHorse implements Horse {
@Override @Override
public HorseInventory getInventory() { public HorseInventory getInventory() {
return new CraftInventoryHorse(getHandle().inventory, getHandle().createEquipmentSlotContainer(EnumItemSlot.BODY)); return new CraftInventoryHorse(getHandle().inventory, getHandle().equipment);
} }
@Override @Override

View File

@ -1,7 +1,6 @@
package org.bukkit.craftbukkit.entity; package org.bukkit.craftbukkit.entity;
import com.google.common.base.Preconditions; import com.google.common.base.Preconditions;
import net.minecraft.world.entity.EnumItemSlot;
import net.minecraft.world.entity.animal.horse.EntityLlama; import net.minecraft.world.entity.animal.horse.EntityLlama;
import org.bukkit.craftbukkit.CraftServer; import org.bukkit.craftbukkit.CraftServer;
import org.bukkit.craftbukkit.inventory.CraftInventoryLlama; import org.bukkit.craftbukkit.inventory.CraftInventoryLlama;
@ -35,7 +34,7 @@ public class CraftLlama extends CraftChestedHorse implements Llama {
@Override @Override
public LlamaInventory getInventory() { public LlamaInventory getInventory() {
return new CraftInventoryLlama(getHandle().inventory, getHandle().createEquipmentSlotContainer(EnumItemSlot.BODY)); return new CraftInventoryLlama(getHandle().inventory, getHandle().equipment);
} }
@Override @Override

View File

@ -1,22 +1,28 @@
package org.bukkit.craftbukkit.inventory; package org.bukkit.craftbukkit.inventory;
import net.minecraft.world.IInventory; import net.minecraft.world.IInventory;
import net.minecraft.world.entity.EntityEquipment;
import net.minecraft.world.entity.EnumItemSlot;
import org.bukkit.inventory.AbstractHorseInventory; import org.bukkit.inventory.AbstractHorseInventory;
import org.bukkit.inventory.ItemStack; import org.bukkit.inventory.ItemStack;
public class CraftInventoryAbstractHorse extends CraftInventory implements AbstractHorseInventory { public class CraftInventoryAbstractHorse extends CraftInventory implements AbstractHorseInventory {
public CraftInventoryAbstractHorse(IInventory inventory) { protected final EntityEquipment equipment;
public CraftInventoryAbstractHorse(IInventory inventory, EntityEquipment equipment) {
super(inventory); super(inventory);
this.equipment = equipment;
} }
@Override @Override
public ItemStack getSaddle() { public ItemStack getSaddle() {
return getItem(0); net.minecraft.world.item.ItemStack item = equipment.get(EnumItemSlot.SADDLE);
return item.isEmpty() ? null : CraftItemStack.asCraftMirror(item);
} }
@Override @Override
public void setSaddle(ItemStack stack) { public void setSaddle(ItemStack stack) {
setItem(0, stack); equipment.set(EnumItemSlot.SADDLE, CraftItemStack.asNMSCopy(stack));
} }
} }

View File

@ -1,26 +1,25 @@
package org.bukkit.craftbukkit.inventory; package org.bukkit.craftbukkit.inventory;
import net.minecraft.world.IInventory; import net.minecraft.world.IInventory;
import net.minecraft.world.entity.EntityEquipment;
import net.minecraft.world.entity.EnumItemSlot;
import org.bukkit.inventory.HorseInventory; import org.bukkit.inventory.HorseInventory;
import org.bukkit.inventory.ItemStack; import org.bukkit.inventory.ItemStack;
public class CraftInventoryHorse extends CraftInventoryAbstractHorse implements HorseInventory { public class CraftInventoryHorse extends CraftInventoryAbstractHorse implements HorseInventory {
private final IInventory bodyArmorInventory; public CraftInventoryHorse(IInventory inventory, EntityEquipment equipment) {
super(inventory, equipment);
public CraftInventoryHorse(IInventory inventory, IInventory bodyArmorInventory) {
super(inventory);
this.bodyArmorInventory = bodyArmorInventory;
} }
@Override @Override
public ItemStack getArmor() { public ItemStack getArmor() {
net.minecraft.world.item.ItemStack item = bodyArmorInventory.getItem(0); net.minecraft.world.item.ItemStack item = equipment.get(EnumItemSlot.BODY);
return item.isEmpty() ? null : CraftItemStack.asCraftMirror(item); return item.isEmpty() ? null : CraftItemStack.asCraftMirror(item);
} }
@Override @Override
public void setArmor(ItemStack stack) { public void setArmor(ItemStack stack) {
bodyArmorInventory.setItem(0, CraftItemStack.asNMSCopy(stack)); equipment.set(EnumItemSlot.BODY, CraftItemStack.asNMSCopy(stack));
} }
} }

View File

@ -1,26 +1,25 @@
package org.bukkit.craftbukkit.inventory; package org.bukkit.craftbukkit.inventory;
import net.minecraft.world.IInventory; import net.minecraft.world.IInventory;
import net.minecraft.world.entity.EntityEquipment;
import net.minecraft.world.entity.EnumItemSlot;
import org.bukkit.inventory.ItemStack; import org.bukkit.inventory.ItemStack;
import org.bukkit.inventory.LlamaInventory; import org.bukkit.inventory.LlamaInventory;
public class CraftInventoryLlama extends CraftInventoryAbstractHorse implements LlamaInventory { public class CraftInventoryLlama extends CraftInventoryAbstractHorse implements LlamaInventory {
private final IInventory bodyArmorInventory; public CraftInventoryLlama(IInventory inventory, EntityEquipment equipment) {
super(inventory, equipment);
public CraftInventoryLlama(IInventory inventory, IInventory bodyArmorInventory) {
super(inventory);
this.bodyArmorInventory = bodyArmorInventory;
} }
@Override @Override
public ItemStack getDecor() { public ItemStack getDecor() {
net.minecraft.world.item.ItemStack item = bodyArmorInventory.getItem(0); net.minecraft.world.item.ItemStack item = equipment.get(EnumItemSlot.BODY);
return item.isEmpty() ? null : CraftItemStack.asCraftMirror(item); return item.isEmpty() ? null : CraftItemStack.asCraftMirror(item);
} }
@Override @Override
public void setDecor(ItemStack stack) { public void setDecor(ItemStack stack) {
bodyArmorInventory.setItem(0, CraftItemStack.asNMSCopy(stack)); equipment.set(EnumItemSlot.BODY, CraftItemStack.asNMSCopy(stack));
} }
} }