aboutsummaryrefslogtreecommitdiff
path: root/src/main/java/com/detrav
diff options
context:
space:
mode:
authorDetrav <witalyezep@gmail.com>2016-10-30 22:18:15 +0300
committerDetrav <witalyezep@gmail.com>2016-10-30 22:18:15 +0300
commit730b02b356739614c1b92107799af26288aebad8 (patch)
tree3ab8e9198ec47a4629dd58c8f6225e84e0a99ebb /src/main/java/com/detrav
parent4c7dc978fd515db743214f6e7d116bb7ee97fa97 (diff)
downloadGT5-Unofficial-730b02b356739614c1b92107799af26288aebad8.tar.gz
GT5-Unofficial-730b02b356739614c1b92107799af26288aebad8.tar.bz2
GT5-Unofficial-730b02b356739614c1b92107799af26288aebad8.zip
Update Repair mechanics
Diffstat (limited to 'src/main/java/com/detrav')
-rw-r--r--src/main/java/com/detrav/DetravScannerMod.java2
-rw-r--r--src/main/java/com/detrav/gui/containers/DetravPortableAnvilContainer.java64
-rw-r--r--src/main/java/com/detrav/items/DetravMetaGeneratedTool01.java32
-rw-r--r--src/main/java/com/detrav/utils/PortableAnvilInventory.java64
4 files changed, 159 insertions, 3 deletions
diff --git a/src/main/java/com/detrav/DetravScannerMod.java b/src/main/java/com/detrav/DetravScannerMod.java
index 94b8af9311..3e68c7128a 100644
--- a/src/main/java/com/detrav/DetravScannerMod.java
+++ b/src/main/java/com/detrav/DetravScannerMod.java
@@ -22,7 +22,7 @@ import net.minecraftforge.common.config.Configuration;
public class DetravScannerMod
{
public static final String MODID = "detravscannermod";
- public static final String VERSION = "0.25";
+ public static final String VERSION = "0.26";
public static final CreativeTabs TAB_DETRAV = new DetravCreativeTab();
diff --git a/src/main/java/com/detrav/gui/containers/DetravPortableAnvilContainer.java b/src/main/java/com/detrav/gui/containers/DetravPortableAnvilContainer.java
index 4136137d97..4f4b73fe4a 100644
--- a/src/main/java/com/detrav/gui/containers/DetravPortableAnvilContainer.java
+++ b/src/main/java/com/detrav/gui/containers/DetravPortableAnvilContainer.java
@@ -1,21 +1,81 @@
package com.detrav.gui.containers;
+import com.detrav.items.DetravMetaGeneratedTool01;
+import com.detrav.utils.PortableAnvilInventory;
+import gregtech.api.gui.GT_Slot_Output;
import net.minecraft.entity.player.EntityPlayer;
import net.minecraft.entity.player.InventoryPlayer;
-import net.minecraft.inventory.Container;
+import net.minecraft.inventory.*;
import net.minecraft.item.ItemStack;
import net.minecraft.world.World;
+import gregtech.common.items.armor.SlotLocked;
/**
* Created by Detrav on 30.10.2016.
*/
public class DetravPortableAnvilContainer extends Container {
+
+ public InventoryPlayer inventoryPlayer;
+ public IInventory slots;
+ ItemStack stack;
+ World worldObj;
+
public DetravPortableAnvilContainer(InventoryPlayer inventory, World world, ItemStack currentEquippedItem) {
+ worldObj = world;
+ inventoryPlayer = inventory;
+ stack = currentEquippedItem;
+ slots = new PortableAnvilInventory("Item", false, 3);
+
+ this.addSlotToContainer(new Slot(this.slots, 0, 27, 47));
+ this.addSlotToContainer(new Slot(this.slots, 1, 76, 47));
+ this.addSlotToContainer(new GT_Slot_Output(this.slots, 2, 134, 47));
+
+ slots.setInventorySlotContents(1, DetravMetaGeneratedTool01.INSTANCE.getItemStackFromDetravData(stack));
+
+
+ for (int i = 0; i < 3; ++i) {
+ for (int j = 0; j < 9; ++j) {
+ this.addSlotToContainer(new Slot(inventory, j + i * 9 + 9, 8 + j * 18, 84 + i * 18));
+ }
+ }
+
+ for (int i = 0; i < 9; ++i) {
+ ItemStack stackInSlot = inventoryPlayer.getStackInSlot(i);
+ if (currentEquippedItem != null && stackInSlot != null && currentEquippedItem == stackInSlot) {
+ addSlotToContainer(new SlotLocked(inventoryPlayer, i, 8 + i * 18, 142));
+ } else {
+ this.addSlotToContainer(new Slot(inventory, i, 8 + i * 18, 142));
+ }
+ }
+ }
+ @Override
+ public ItemStack transferStackInSlot(EntityPlayer par1EntityPlayer, int par2) {
+ return null;
}
+ public void onContainerClosed(EntityPlayer p_75134_1_) {
+ super.onContainerClosed(p_75134_1_);
+ if (!this.worldObj.isRemote) {
+ ItemStack itemstack = this.slots.getStackInSlot(0);
+
+ if (itemstack != null) {
+ p_75134_1_.dropPlayerItemWithRandomChoice(itemstack, false);
+ }
+ itemstack = this.slots.getStackInSlot(1);
+ if (itemstack != null) {
+ if (stack == null || !DetravMetaGeneratedTool01.INSTANCE.setItemStackToDetravData(stack, itemstack)) {
+ p_75134_1_.dropPlayerItemWithRandomChoice(itemstack, false);
+ }
+ }
+ //itemstack.writeToNBT()
+ }
+ }
+
+
+
@Override
public boolean canInteractWith(EntityPlayer p_75145_1_) {
return true;
}
-}
+} \ No newline at end of file
diff --git a/src/main/java/com/detrav/items/DetravMetaGeneratedTool01.java b/src/main/java/com/detrav/items/DetravMetaGeneratedTool01.java
index f42289f205..3bcb293b51 100644
--- a/src/main/java/com/detrav/items/DetravMetaGeneratedTool01.java
+++ b/src/main/java/com/detrav/items/DetravMetaGeneratedTool01.java
@@ -135,6 +135,38 @@ public class DetravMetaGeneratedTool01 extends GT_MetaGenerated_Tool {
return false;
}
+ public boolean setItemStackToDetravData(ItemStack aStack, ItemStack what)
+ {
+ if(what == null || aStack == null) return false;
+ NBTTagCompound aNBT = aStack.getTagCompound();
+ if(aNBT ==null) {
+ aNBT = new NBTTagCompound();
+ NBTTagCompound detravData = new NBTTagCompound();
+ aNBT.setTag("DetravData", detravData);
+ aStack.setTagCompound(aNBT);
+ }
+ {
+ NBTTagCompound detravData = aNBT.getCompoundTag("DetravData");
+ if (detravData == null || detravData.getShort("id") == 0 )
+ {
+ detravData = new NBTTagCompound();
+ aNBT.setTag("DetravData", detravData);
+ }
+ what.writeToNBT(detravData);
+ return true;
+ }
+ }
+
+ public ItemStack getItemStackFromDetravData(ItemStack aStack)
+ {
+ if(aStack == null) return null;
+ NBTTagCompound aNBT = aStack.getTagCompound();
+ if(aNBT ==null) return null;
+ NBTTagCompound detravData = aNBT.getCompoundTag("DetravData");
+ if(detravData == null) return null;
+ return ItemStack.loadItemStackFromNBT(detravData);
+ }
+
public void getDetravSubItems(Item item, CreativeTabs detravCreativeTab, List list) {
ItemStack dStack;
diff --git a/src/main/java/com/detrav/utils/PortableAnvilInventory.java b/src/main/java/com/detrav/utils/PortableAnvilInventory.java
new file mode 100644
index 0000000000..d0a2add486
--- /dev/null
+++ b/src/main/java/com/detrav/utils/PortableAnvilInventory.java
@@ -0,0 +1,64 @@
+package com.detrav.utils;
+
+import gregtech.api.enums.Materials;
+import gregtech.api.items.GT_MetaGenerated_Tool;
+import gregtech.api.util.GT_Recipe;
+import gregtech.common.items.GT_MetaGenerated_Tool_01;
+import net.minecraft.inventory.InventoryBasic;
+import net.minecraft.item.ItemStack;
+import net.minecraftforge.fluids.FluidStack;
+
+/**
+ * Created by Detrav on 30.10.2016.
+ */
+public class PortableAnvilInventory extends InventoryBasic {
+ public PortableAnvilInventory(String p_i1561_1_, boolean p_i1561_2_, int p_i1561_3_) {
+ super(p_i1561_1_, p_i1561_2_, p_i1561_3_);
+ }
+
+
+ public void setInventorySlotContents(int slot, ItemStack stack) {
+ super.setInventorySlotContents(slot, stack);
+ if (super.getStackInSlot(2) != null) return;
+ ItemStack gtTool = super.getStackInSlot(0);
+ if (gtTool != null) {
+ if ((gtTool.getItem() instanceof GT_MetaGenerated_Tool)) {
+ Materials mat = GT_MetaGenerated_Tool_01.getPrimaryMaterial(gtTool);
+ FluidStack fstack = mat.getMolten(1);
+ if (fstack == null) fstack = mat.getFluid(1);
+ if (fstack != null) {
+ int fluidID = fstack.getFluidID();
+ ItemStack gtMaterial = super.getStackInSlot(1);
+ if (gtMaterial != null) {
+ GT_Recipe recipe = GT_Recipe.GT_Recipe_Map.sFluidExtractionRecipes.findRecipe(null, false, 524288L, null, gtMaterial);
+ if (recipe != null) {
+ FluidStack fStack = recipe.getFluidOutput(0);
+ if (fStack.getFluidID() == fluidID) {
+ ItemStack gtCopy = gtTool;
+ float amount = fStack.amount * 2f / 1000f;
+ long maxDamage = GT_MetaGenerated_Tool.getToolMaxDamage(gtCopy);
+ long damage = GT_MetaGenerated_Tool.getToolDamage(gtCopy);
+ if (damage == 0) {
+ super.setInventorySlotContents(2, null);
+ return;
+ }
+ maxDamage = (long) (maxDamage * amount);
+ damage -= maxDamage;
+ if (damage < 0) damage = 0;
+ GT_MetaGenerated_Tool.setToolDamage(gtCopy, damage);
+ if (gtMaterial.stackSize > 1)
+ gtMaterial.stackSize -= 1;
+ else
+ super.setInventorySlotContents(1, null);
+ super.setInventorySlotContents(2, gtCopy);
+ super.setInventorySlotContents(0, null);
+ return;
+ }
+ }
+ }
+ }
+ }
+ }
+ super.setInventorySlotContents(2, null);
+ }
+} \ No newline at end of file