From 6ffec2106c78e602734a27479f65fa027012c1e4 Mon Sep 17 00:00:00 2001 From: Timo Ley Date: Fri, 20 Jan 2023 18:43:51 +0100 Subject: [PATCH] fix: arcane workbench fixes #3 --- build.gradle | 2 +- .../container/ContainerWorkbench.java | 2 +- .../auracore/container/SlotWorkbenchWand.java | 23 +++++++++++++++++-- .../dev/tilera/auracore/helper/Utils.java | 1 + 4 files changed, 24 insertions(+), 4 deletions(-) diff --git a/build.gradle b/build.gradle index dda9bec..2123ace 100644 --- a/build.gradle +++ b/build.gradle @@ -24,7 +24,7 @@ apply from: './gradle/scripts/mixins.gradle' sourceCompatibility = JavaVersion.VERSION_1_8 targetCompatibility = JavaVersion.VERSION_1_8 -version = "1.7.4" +version = "1.7.5" group= "dev.tilera" archivesBaseName = "auracore" diff --git a/src/main/java/dev/tilera/auracore/container/ContainerWorkbench.java b/src/main/java/dev/tilera/auracore/container/ContainerWorkbench.java index 525160e..8aeec00 100644 --- a/src/main/java/dev/tilera/auracore/container/ContainerWorkbench.java +++ b/src/main/java/dev/tilera/auracore/container/ContainerWorkbench.java @@ -27,7 +27,7 @@ public class ContainerWorkbench extends Container { this.tileEntity.eventHandler = this; this.ip = par1InventoryPlayer; this.addSlotToContainer((Slot)new SlotCraftingArcaneWorkbench(par1InventoryPlayer.player, this.tileEntity, this.tileEntity, 9, 124, 29)); - this.addSlotToContainer(new SlotWorkbenchWand(this.tileEntity, 10, 124, 61)); + this.addSlotToContainer(new SlotWorkbenchWand(this.tileEntity, 10, 124, 61, par1InventoryPlayer.player)); for (var6 = 0; var6 < 3; ++var6) { for (var7 = 0; var7 < 3; ++var7) { this.addSlotToContainer(new Slot(this.tileEntity, var7 + var6 * 3, 30 + var7 * 18, 17 + var6 * 18)); diff --git a/src/main/java/dev/tilera/auracore/container/SlotWorkbenchWand.java b/src/main/java/dev/tilera/auracore/container/SlotWorkbenchWand.java index d5a0a1f..2fe8b0c 100644 --- a/src/main/java/dev/tilera/auracore/container/SlotWorkbenchWand.java +++ b/src/main/java/dev/tilera/auracore/container/SlotWorkbenchWand.java @@ -1,18 +1,37 @@ package dev.tilera.auracore.container; import dev.tilera.auracore.api.IWand; -import net.minecraft.inventory.IInventory; +import net.minecraft.entity.player.EntityPlayer; import net.minecraft.inventory.Slot; import net.minecraft.item.ItemStack; +import thaumcraft.common.Thaumcraft; import thaumcraft.common.items.wands.ItemWandCasting; +import thaumcraft.common.tiles.TileArcaneWorkbench; class SlotWorkbenchWand extends Slot { - public SlotWorkbenchWand(IInventory par2IInventory, int par3, int par4, int par5) { + TileArcaneWorkbench workbench; + EntityPlayer player; + + public SlotWorkbenchWand(TileArcaneWorkbench par2IInventory, int par3, int par4, int par5, EntityPlayer player) { super(par2IInventory, par3, par4, par5); + this.workbench = par2IInventory; + this.player = player; } @Override public boolean isItemValid(ItemStack par1ItemStack) { return par1ItemStack.getItem() instanceof ItemWandCasting || par1ItemStack.getItem() instanceof IWand; } + + @Override + public void onSlotChanged() { + super.onSlotChanged(); + if ( + !this.workbench.getWorldObj().isRemote && + this.inventory.getStackInSlot(this.getSlotIndex()) != null && + this.inventory.getStackInSlot(this.getSlotIndex()).getItem() instanceof ItemWandCasting) { + player.openGui(Thaumcraft.instance, 13, this.workbench.getWorldObj(), this.workbench.xCoord, this.workbench.yCoord, this.workbench.zCoord); + } + } + } diff --git a/src/main/java/dev/tilera/auracore/helper/Utils.java b/src/main/java/dev/tilera/auracore/helper/Utils.java index ea41e7c..9190431 100644 --- a/src/main/java/dev/tilera/auracore/helper/Utils.java +++ b/src/main/java/dev/tilera/auracore/helper/Utils.java @@ -124,6 +124,7 @@ public class Utils { } public static boolean spendCharge(final ItemStack itemstack, final EntityPlayer player, int amount) { + if (itemstack == null) return false; final int discount = 100 - Math.min(50, getTotalVisDiscount(player)); amount = Math.round(amount * (discount / 100.0f)); return ((IWand) itemstack.getItem()).consumeVis(itemstack, amount);