diff --git a/src/main/java/org/ultramine/mods/bukkit/interfaces/inventory/IMixinAnimalChest.java b/src/main/java/org/ultramine/mods/bukkit/interfaces/inventory/IMixinAnimalChest.java new file mode 100644 index 0000000..511eaa9 --- /dev/null +++ b/src/main/java/org/ultramine/mods/bukkit/interfaces/inventory/IMixinAnimalChest.java @@ -0,0 +1,10 @@ +package org.ultramine.mods.bukkit.interfaces.inventory; + +import net.minecraft.entity.passive.EntityAnimal; + +public interface IMixinAnimalChest +{ + EntityAnimal getAnimal(); + + void setAnimal(EntityAnimal entityAnimal); +} diff --git a/src/main/java/org/ultramine/mods/bukkit/mixin/entity/passive/MixinEntityHorse.java b/src/main/java/org/ultramine/mods/bukkit/mixin/entity/passive/MixinEntityHorse.java index 5e60081..b60b6bc 100644 --- a/src/main/java/org/ultramine/mods/bukkit/mixin/entity/passive/MixinEntityHorse.java +++ b/src/main/java/org/ultramine/mods/bukkit/mixin/entity/passive/MixinEntityHorse.java @@ -1,15 +1,18 @@ package org.ultramine.mods.bukkit.mixin.entity.passive; import net.minecraft.entity.ai.attributes.IAttribute; +import net.minecraft.entity.passive.EntityHorse; import net.minecraft.inventory.AnimalChest; import net.minecraft.nbt.NBTTagCompound; import org.spongepowered.asm.mixin.Mixin; import org.spongepowered.asm.mixin.Overwrite; import org.spongepowered.asm.mixin.Shadow; import org.spongepowered.asm.mixin.injection.At; +import org.spongepowered.asm.mixin.injection.At.Shift; import org.spongepowered.asm.mixin.injection.Inject; import org.spongepowered.asm.mixin.injection.callback.CallbackInfo; import org.ultramine.mods.bukkit.interfaces.entity.passive.IMixinEntityHorse; +import org.ultramine.mods.bukkit.interfaces.inventory.IMixinAnimalChest; @Mixin(net.minecraft.entity.passive.EntityHorse.class) public abstract class MixinEntityHorse implements IMixinEntityHorse @@ -80,4 +83,10 @@ { nbt.setInteger("Bukkit.MaxDomestication", this.maxDomestication); } + + @Inject(method = "func_110226_cD", at = @At(value = "INVOKE", target = "Lnet/minecraft/inventory/AnimalChest;func_110133_a(Ljava/lang/String;)V", shift = Shift.BEFORE)) + private void func_110226_cDInject(CallbackInfo ci) + { + ((IMixinAnimalChest) horseChest).setAnimal((EntityHorse)(Object) this); + } } diff --git a/src/main/java/org/ultramine/mods/bukkit/mixin/inventory/MixinAnimalChest.java b/src/main/java/org/ultramine/mods/bukkit/mixin/inventory/MixinAnimalChest.java new file mode 100644 index 0000000..d197f1c --- /dev/null +++ b/src/main/java/org/ultramine/mods/bukkit/mixin/inventory/MixinAnimalChest.java @@ -0,0 +1,24 @@ +package org.ultramine.mods.bukkit.mixin.inventory; + +import net.minecraft.entity.passive.EntityAnimal; +import net.minecraft.inventory.AnimalChest; +import org.spongepowered.asm.mixin.Mixin; +import org.ultramine.mods.bukkit.interfaces.inventory.IMixinAnimalChest; + +@Mixin(AnimalChest.class) +public class MixinAnimalChest implements IMixinAnimalChest +{ + private EntityAnimal entityAnimal; + + @Override + public EntityAnimal getAnimal() + { + return this.entityAnimal; + } + + @Override + public void setAnimal(EntityAnimal entityAnimal) + { + this.entityAnimal = entityAnimal; + } +} diff --git a/src/main/java/org/ultramine/mods/bukkit/util/BukkitUtil.java b/src/main/java/org/ultramine/mods/bukkit/util/BukkitUtil.java index 8eeebe4..e2b2dc5 100644 --- a/src/main/java/org/ultramine/mods/bukkit/util/BukkitUtil.java +++ b/src/main/java/org/ultramine/mods/bukkit/util/BukkitUtil.java @@ -29,6 +29,7 @@ import org.bukkit.entity.Player; import org.bukkit.inventory.InventoryHolder; import org.ultramine.mods.bukkit.interfaces.entity.IMixinEntity; +import org.ultramine.mods.bukkit.interfaces.inventory.IMixinAnimalChest; import org.ultramine.mods.bukkit.interfaces.inventory.IMixinInventoryCrafting; import org.ultramine.mods.bukkit.interfaces.inventory.IMixinInventoryEnderChest; import org.ultramine.mods.bukkit.interfaces.inventory.IMixinInventoryMerchant; @@ -135,7 +136,7 @@ { InventoryBasic inventoryBasic = (InventoryBasic) inventory; if (inventoryBasic instanceof AnimalChest) - return (InventoryHolder) ((IMixinEntity) inventoryBasic).getBukkitEntity(); + return (InventoryHolder) ((IMixinEntity)((IMixinAnimalChest) inventoryBasic).getAnimal()).getBukkitEntity(); else if (inventoryBasic instanceof InventoryEnderChest) return ((IMixinInventoryEnderChest) inventoryBasic).getOwner(); } diff --git a/src/main/resources/mixin.umbukkitimpl.json b/src/main/resources/mixin.umbukkitimpl.json index af7a338..7ce4758 100644 --- a/src/main/resources/mixin.umbukkitimpl.json +++ b/src/main/resources/mixin.umbukkitimpl.json @@ -64,6 +64,7 @@ "inventory.MixinInventoryCrafting", "inventory.MixinContainerPlayer", "inventory.MixinContainerWorkbench", + "inventory.MixinAnimalChest", "item.MixinItemFlintAndSteel", "item.MixinItemBucket", "item.crafting.MixinShapedRecipes",