From 12c0d5094f1b1d6b534727c6824ff6897bed8370 Mon Sep 17 00:00:00 2001 From: Alkalus Date: Sat, 11 Nov 2017 05:44:30 +1000 Subject: + More modular work. --- src/Java/gtPlusPlus/core/block/ModBlocks.java | 2 + .../block/machine/Machine_ModularityTable.java | 2 + .../core/container/Container_ModularityTable.java | 3 + .../core/gui/machine/GUI_ModularityTable.java | 13 ++ src/Java/gtPlusPlus/core/handler/GuiHandler.java | 2 - src/Java/gtPlusPlus/core/item/ModItems.java | 4 +- .../gtPlusPlus/core/item/bauble/ModularBauble.java | 116 +++++++++++++++- src/Java/gtPlusPlus/core/slots/SlotDataStick.java | 11 +- .../machines/TileEntityModularityTable.java | 3 +- .../machines/TileEntityProjectTable.java | 149 +++++++++++++++++---- .../core/util/nbt/ModularArmourUtils.java | 7 +- 11 files changed, 278 insertions(+), 34 deletions(-) (limited to 'src/Java') diff --git a/src/Java/gtPlusPlus/core/block/ModBlocks.java b/src/Java/gtPlusPlus/core/block/ModBlocks.java index 386ebf1b3f..a469acfc49 100644 --- a/src/Java/gtPlusPlus/core/block/ModBlocks.java +++ b/src/Java/gtPlusPlus/core/block/ModBlocks.java @@ -44,6 +44,7 @@ public final class ModBlocks { public static Block blockInfiniteFLuidTank; public static Block blockProjectTable; public static Block blockTradeTable; + public static Block blockModularTable; public static void init() { Utils.LOG_INFO("Initializing Blocks."); @@ -72,6 +73,7 @@ public final class ModBlocks { blockHellfire = new HellFire(); blockProjectTable = new Machine_ProjectTable(); blockTradeTable = new Machine_TradeTable(); + blockModularTable = new Machine_ModularityTable(); } diff --git a/src/Java/gtPlusPlus/core/block/machine/Machine_ModularityTable.java b/src/Java/gtPlusPlus/core/block/machine/Machine_ModularityTable.java index d95fc7a985..9ba3e458b6 100644 --- a/src/Java/gtPlusPlus/core/block/machine/Machine_ModularityTable.java +++ b/src/Java/gtPlusPlus/core/block/machine/Machine_ModularityTable.java @@ -8,6 +8,7 @@ import gtPlusPlus.GTplusplus; import gtPlusPlus.core.creative.AddToCreativeTab; import gtPlusPlus.core.lib.CORE; import gtPlusPlus.core.tileentities.machines.TileEntityModularityTable; +import gtPlusPlus.core.util.Utils; import net.minecraft.block.BlockContainer; import net.minecraft.block.material.Material; import net.minecraft.client.renderer.texture.IIconRegister; @@ -67,6 +68,7 @@ public class Machine_ModularityTable extends BlockContainer final TileEntity te = world.getTileEntity(x, y, z); if ((te != null) && (te instanceof TileEntityModularityTable)){ player.openGui(GTplusplus.instance, 1, world, x, y, z); + Utils.LOG_INFO("Player opened GUI"); return true; } return false; diff --git a/src/Java/gtPlusPlus/core/container/Container_ModularityTable.java b/src/Java/gtPlusPlus/core/container/Container_ModularityTable.java index df3ee63f92..68b46d9aca 100644 --- a/src/Java/gtPlusPlus/core/container/Container_ModularityTable.java +++ b/src/Java/gtPlusPlus/core/container/Container_ModularityTable.java @@ -33,6 +33,9 @@ public class Container_ModularityTable extends Container { public Container_ModularityTable(final InventoryPlayer inventory, final TileEntityModularityTable tile){ + + Utils.LOG_INFO("container created"); + this.tile_entity = tile; this.inventoryGrid = tile.inventoryGrid; this.inventoryOutputs = tile.inventoryOutputs; diff --git a/src/Java/gtPlusPlus/core/gui/machine/GUI_ModularityTable.java b/src/Java/gtPlusPlus/core/gui/machine/GUI_ModularityTable.java index d6454cdd03..a89fd8142c 100644 --- a/src/Java/gtPlusPlus/core/gui/machine/GUI_ModularityTable.java +++ b/src/Java/gtPlusPlus/core/gui/machine/GUI_ModularityTable.java @@ -7,6 +7,8 @@ import cpw.mods.fml.relauncher.SideOnly; import gtPlusPlus.core.container.Container_ModularityTable; import gtPlusPlus.core.lib.CORE; import gtPlusPlus.core.tileentities.machines.TileEntityModularityTable; +import gtPlusPlus.core.util.Utils; +import net.minecraft.client.gui.GuiButton; import net.minecraft.client.gui.inventory.GuiContainer; import net.minecraft.entity.player.InventoryPlayer; import net.minecraft.util.ResourceLocation; @@ -18,6 +20,7 @@ public class GUI_ModularityTable extends GuiContainer { public GUI_ModularityTable(final InventoryPlayer player_inventory, final TileEntityModularityTable tile){ super(new Container_ModularityTable(player_inventory, tile)); + Utils.LOG_INFO("valid gui created"); } @@ -35,4 +38,14 @@ public class GUI_ModularityTable extends GuiContainer { this.drawTexturedModalRect(x, y, 0, 0, this.xSize, this.ySize); } + @Override + public void initGui(){ + super.initGui(); + } + + @Override + protected void actionPerformed(final GuiButton B){ + + } + } \ No newline at end of file diff --git a/src/Java/gtPlusPlus/core/handler/GuiHandler.java b/src/Java/gtPlusPlus/core/handler/GuiHandler.java index 0e2528b6ca..70e2934349 100644 --- a/src/Java/gtPlusPlus/core/handler/GuiHandler.java +++ b/src/Java/gtPlusPlus/core/handler/GuiHandler.java @@ -10,10 +10,8 @@ import gtPlusPlus.core.gui.item.GuiBaseBackpack; import gtPlusPlus.core.gui.machine.*; import gtPlusPlus.core.interfaces.IGuiManager; import gtPlusPlus.core.inventories.BaseInventoryBackpack; -import gtPlusPlus.core.lib.CORE; import gtPlusPlus.core.tileentities.base.TileEntityBase; import gtPlusPlus.core.tileentities.general.TileEntityFishTrap; -import gtPlusPlus.core.tileentities.general.TileEntityHeliumGenerator; import gtPlusPlus.core.tileentities.machines.TileEntityModularityTable; import gtPlusPlus.core.tileentities.machines.TileEntityProjectTable; import gtPlusPlus.core.tileentities.machines.TileEntityTradeTable; diff --git a/src/Java/gtPlusPlus/core/item/ModItems.java b/src/Java/gtPlusPlus/core/item/ModItems.java index f60f7e454f..3cea650970 100644 --- a/src/Java/gtPlusPlus/core/item/ModItems.java +++ b/src/Java/gtPlusPlus/core/item/ModItems.java @@ -235,6 +235,8 @@ public final class ModItems { public static Item itemSulfuricPotion; public static Item itemHydrofluoricPotion; + public static Item itemModularBauble; + @@ -632,7 +634,7 @@ public final class ModItems { //Baubles if (LoadedMods.Baubles){ tI = new HealthBoostBauble(); - tI = new ModularBauble(); + itemModularBauble = new ModularBauble(); } //EnderIO Resources diff --git a/src/Java/gtPlusPlus/core/item/bauble/ModularBauble.java b/src/Java/gtPlusPlus/core/item/bauble/ModularBauble.java index 5d5bdce8cf..46f290753b 100644 --- a/src/Java/gtPlusPlus/core/item/bauble/ModularBauble.java +++ b/src/Java/gtPlusPlus/core/item/bauble/ModularBauble.java @@ -5,10 +5,15 @@ import java.util.List; import com.google.common.collect.Multimap; import baubles.api.BaubleType; +import cpw.mods.fml.relauncher.Side; +import cpw.mods.fml.relauncher.SideOnly; import gtPlusPlus.core.lib.CORE; +import gtPlusPlus.core.lib.LoadedMods; import gtPlusPlus.core.util.nbt.ModularArmourUtils; import gtPlusPlus.core.util.nbt.ModularArmourUtils.BT; import gtPlusPlus.core.util.nbt.ModularArmourUtils.Modifiers; +import gtPlusPlus.core.util.nbt.NBTUtils; +import net.minecraft.client.renderer.texture.IIconRegister; import net.minecraft.entity.EntityLivingBase; import net.minecraft.entity.SharedMonsterAttributes; import net.minecraft.entity.ai.attributes.AttributeModifier; @@ -16,6 +21,7 @@ import net.minecraft.entity.player.EntityPlayer; import net.minecraft.item.ItemStack; import net.minecraft.util.DamageSource; import net.minecraft.util.EnumChatFormatting; +import net.minecraft.util.IIcon; public class ModularBauble extends BaseBauble{ @@ -142,13 +148,18 @@ public class ModularBauble extends BaseBauble{ if ((mStatlevel = ModularArmourUtils.getModifierLevel(stack, Modifiers.BOOST_HOLY)) > 0){ list.add(EnumChatFormatting.GRAY+"Holy Boost: "+EnumChatFormatting.GOLD+mStatlevel+EnumChatFormatting.GRAY+"."); } + if (NBTUtils.getBotanicaSoulboundOwner(stack) != null){ + if (!NBTUtils.getBotanicaSoulboundOwner(stack).equals("")){ + list.add(EnumChatFormatting.GRAY+"Relic Owner: "+EnumChatFormatting.GREEN+NBTUtils.getBotanicaSoulboundOwner(stack)+EnumChatFormatting.GRAY+"."); + } + } super.addInformation(stack, player, list, bool); } @Override public boolean addDamageNegation(DamageSource damageSource,ItemStack aStack) { - + this.clearDamageNegation(); int mStatlevel = 0; if ((mStatlevel = ModularArmourUtils.getModifierLevel(aStack, Modifiers.BOOST_HOLY)) > 0){ @@ -186,7 +197,24 @@ public class ModularBauble extends BaseBauble{ else { this.SetBaubleType(BT.TYPE_RING); } - return super.canEquip(arg0, arg1); + + String mOwner; + if (NBTUtils.getBotanicaSoulboundOwner(arg0) == null || NBTUtils.getBotanicaSoulboundOwner(arg0).equals("")){ + return true; + } + else if ((mOwner = NBTUtils.getBotanicaSoulboundOwner(arg0)) != null){ + String mPlayerName = arg1.getCommandSenderName(); + if (mOwner.toLowerCase().equals(mPlayerName.toLowerCase())){ + return true; + } + else { + return false; + } + } + else { + return false; + } + } @Override @@ -196,7 +224,11 @@ public class ModularBauble extends BaseBauble{ @Override public void onEquipped(ItemStack stack, EntityLivingBase entity) { - // TODO Auto-generated method stub + if (entity instanceof EntityPlayer){ + if (NBTUtils.getBotanicaSoulboundOwner(stack) == null || NBTUtils.getBotanicaSoulboundOwner(stack).equals("")){ + NBTUtils.setBotanicaSoulboundOwner(stack, entity.getCommandSenderName()); + } + } super.onEquipped(stack, entity); } @@ -207,6 +239,84 @@ public class ModularBauble extends BaseBauble{ } + @SideOnly(Side.CLIENT) + private IIcon mTextureAmulet; + @SideOnly(Side.CLIENT) + private IIcon mTextureRing; + @SideOnly(Side.CLIENT) + private IIcon mTextureBelt; + + @Override + public IIcon getIconFromDamage(int p_77617_1_) { + // TODO Auto-generated method stub + return super.getIconFromDamage(p_77617_1_); + } + + @Override + public IIcon getIconIndex(ItemStack p_77650_1_) { + // TODO Auto-generated method stub + return super.getIconIndex(p_77650_1_); + } + + @Override + public IIcon getIconFromDamageForRenderPass(int p_77618_1_, int p_77618_2_) { + // TODO Auto-generated method stub + return super.getIconFromDamageForRenderPass(p_77618_1_, p_77618_2_); + } + + @Override + protected String getIconString() { + // TODO Auto-generated method stub + return super.getIconString(); + } + + @Override + public IIcon getIcon(ItemStack stack, int pass) { + // TODO Auto-generated method stub + return super.getIcon(stack, pass); + } + + @Override + @SideOnly(Side.CLIENT) + public IIcon getIcon(ItemStack stack, int renderPass, EntityPlayer player, ItemStack usingItem, int useRemaining) { + if (usingItem == null) { return itemIcon; } + try { + if (ModularArmourUtils.getBaubleType(stack) == BaubleType.AMULET){ + return iconArray[0]; + } + if (ModularArmourUtils.getBaubleType(stack) == BaubleType.RING){ + return iconArray[1]; + } + if (ModularArmourUtils.getBaubleType(stack) == BaubleType.BELT){ + return iconArray[2]; + } + else { + return iconArray[0]; + } + } + catch (Throwable t){ + return itemIcon; + } + } + + + private IIcon iconArray[] = new IIcon[3]; + + @Override + @SideOnly(Side.CLIENT) + public void registerIcons(IIconRegister register) { + // you cannot initialize iconArray when declared nor in the constructor, as it is client-side only, so do it here: + if (LoadedMods.Thaumcraft){ + iconArray[0] = register.registerIcon("thaumcraft" + ":" + "bauble_amulet"); + iconArray[1] = register.registerIcon("thaumcraft" + ":" + "bauble_ring"); + iconArray[2] = register.registerIcon("thaumcraft" + ":" + "bauble_belt"); + } + else { + iconArray[0] = register.registerIcon("miscutils" + ":" + "itemHeavyPlate"); + iconArray[1] = register.registerIcon("baubles" + ":" + "ring"); + iconArray[2] = register.registerIcon("miscutils" + ":" + "itemPineapple"); + } + } } diff --git a/src/Java/gtPlusPlus/core/slots/SlotDataStick.java b/src/Java/gtPlusPlus/core/slots/SlotDataStick.java index dd06493865..1f628f4a9c 100644 --- a/src/Java/gtPlusPlus/core/slots/SlotDataStick.java +++ b/src/Java/gtPlusPlus/core/slots/SlotDataStick.java @@ -6,7 +6,10 @@ import gregtech.api.items.GT_MetaGenerated_Tool; import gregtech.common.items.GT_MetaGenerated_Item_01; import gregtech.common.items.GT_MetaGenerated_Item_02; import gregtech.common.items.behaviors.Behaviour_DataStick; +import gtPlusPlus.core.item.bauble.ModularBauble; import gtPlusPlus.core.util.Utils; +import gtPlusPlus.xmod.gregtech.api.enums.GregtechItemList; +import gtPlusPlus.xmod.gregtech.common.items.MetaGeneratedGregtechItems; import net.minecraft.inventory.IInventory; import net.minecraft.inventory.Slot; import net.minecraft.item.ItemStack; @@ -23,8 +26,12 @@ public class SlotDataStick extends Slot{ boolean isValid = false; if (itemstack != null){ - if ((itemstack.getItem() instanceof GT_MetaGenerated_Item_01 && itemstack.getItemDamage() == 32708) || (itemstack == ItemList.Tool_DataStick.get(1))){ - isValid = true; + if ((itemstack.getItem() instanceof GT_MetaGenerated_Item_01 && itemstack.getItemDamage() == 32708) + || (itemstack == ItemList.Tool_DataStick.get(1)) + || (itemstack == GregtechItemList.Old_Tool_DataStick.get(1)) + || (itemstack.getItem() instanceof MetaGeneratedGregtechItems && itemstack.getItemDamage() == 32208) + || (itemstack.getItem() instanceof ModularBauble)){ + isValid = true; } } //Utils.LOG_INFO("Tried inserting "+itemstack.getDisplayName()+" | "+itemstack.getItemDamage()+" | "); diff --git a/src/Java/gtPlusPlus/core/tileentities/machines/TileEntityModularityTable.java b/src/Java/gtPlusPlus/core/tileentities/machines/TileEntityModularityTable.java index 592ee8a9b6..41e4ac7e45 100644 --- a/src/Java/gtPlusPlus/core/tileentities/machines/TileEntityModularityTable.java +++ b/src/Java/gtPlusPlus/core/tileentities/machines/TileEntityModularityTable.java @@ -22,7 +22,8 @@ public class TileEntityModularityTable extends TileEntity { public IInventory craftResult; private Container_ModularityTable container; - public TileEntityModularityTable(){ + public TileEntityModularityTable(){ + Utils.LOG_INFO("I am created."); this.inventoryGrid = new InventoryProjectMain();//number of slots - without product slot this.inventoryOutputs = new InventoryProjectOutput();//number of slots - without product slot this.canUpdate(); diff --git a/src/Java/gtPlusPlus/core/tileentities/machines/TileEntityProjectTable.java b/src/Java/gtPlusPlus/core/tileentities/machines/TileEntityProjectTable.java index b330aa52d2..644037334d 100644 --- a/src/Java/gtPlusPlus/core/tileentities/machines/TileEntityProjectTable.java +++ b/src/Java/gtPlusPlus/core/tileentities/machines/TileEntityProjectTable.java @@ -3,16 +3,27 @@ package gtPlusPlus.core.tileentities.machines; import java.util.List; import java.util.Vector; +import gregtech.api.enums.ItemList; +import gregtech.common.items.GT_MetaGenerated_Item_01; import gtPlusPlus.core.container.Container_ProjectTable; import gtPlusPlus.core.inventories.projecttable.InventoryProjectMain; import gtPlusPlus.core.inventories.projecttable.InventoryProjectOutput; +import gtPlusPlus.core.item.ModItems; +import gtPlusPlus.core.item.bauble.ModularBauble; import gtPlusPlus.core.util.Utils; +import gtPlusPlus.core.util.item.ItemUtils; +import gtPlusPlus.core.util.nbt.ModularArmourUtils; +import gtPlusPlus.core.util.nbt.ModularArmourUtils.BT; +import gtPlusPlus.core.util.nbt.ModularArmourUtils.Modifiers; +import gtPlusPlus.xmod.gregtech.api.enums.GregtechItemList; +import gtPlusPlus.xmod.gregtech.common.items.MetaGeneratedGregtechItems; import gtPlusPlus.core.util.nbt.NBTUtils; import ic2.api.network.INetworkDataProvider; import ic2.api.network.INetworkUpdateListener; import ic2.api.tile.IWrenchable; import ic2.core.IC2; import net.minecraft.entity.player.EntityPlayer; +import net.minecraft.init.Items; import net.minecraft.inventory.IInventory; import net.minecraft.inventory.InventoryCrafting; import net.minecraft.item.ItemStack; @@ -122,33 +133,123 @@ public class TileEntityProjectTable extends TileEntity implements INetworkDataPr if (!this.worldObj.isRemote){ //Data stick ItemStack dataStick = this.inventoryOutputs.getStackInSlot(0); - if (dataStick != null && this.container != null && container.getOutputContent() != null){ - Utils.LOG_WARNING("Found Data Stick and valid container."); - - - ItemStack outputComponent = container.getOutputContent(); - ItemStack[] craftInputComponent = container.getInputComponents(); - - - ItemStack newStick = NBTUtils.writeItemsToNBT(dataStick, new ItemStack[]{outputComponent}, "Output"); - newStick = NBTUtils.writeItemsToNBT(newStick, craftInputComponent); - NBTUtils.setBookTitle(newStick, "Encrypted Project Data"); - NBTUtils.setBoolean(newStick, "mEncrypted", true); - int slotm=0; - Utils.LOG_WARNING("Uploading to Data Stick."); - for (ItemStack is : NBTUtils.readItemsFromNBT(newStick)){ - if (is != null){ - Utils.LOG_WARNING("Uploaded "+is.getDisplayName()+" into memory slot "+slotm+"."); + if (dataStick != null && this.container != null && container.getOutputContent() != null){ + if ((dataStick.getItem() instanceof GT_MetaGenerated_Item_01 && dataStick.getItemDamage() == 32708) + || (dataStick == ItemList.Tool_DataStick.get(1)) + || (dataStick == GregtechItemList.Old_Tool_DataStick.get(1)) + || (dataStick.getItem() instanceof MetaGeneratedGregtechItems && dataStick.getItemDamage() == 32208)){ + + Utils.LOG_INFO("Found Data Stick and valid container."); + + + ItemStack outputComponent = container.getOutputContent(); + ItemStack[] craftInputComponent = container.getInputComponents(); + + + ItemStack newStick = NBTUtils.writeItemsToNBT(dataStick, new ItemStack[]{outputComponent}, "Output"); + newStick = NBTUtils.writeItemsToNBT(newStick, craftInputComponent); + NBTUtils.setBookTitle(newStick, "Encrypted Project Data"); + NBTUtils.setBoolean(newStick, "mEncrypted", true); + int slotm=0; + Utils.LOG_WARNING("Uploading to Data Stick."); + for (ItemStack is : NBTUtils.readItemsFromNBT(newStick)){ + if (is != null){ + Utils.LOG_WARNING("Uploaded "+is.getDisplayName()+" into memory slot "+slotm+"."); + } + else { + Utils.LOG_WARNING("Left memory slot "+slotm+" blank."); + } + slotm++; } - else { - Utils.LOG_WARNING("Left memory slot "+slotm+" blank."); + Utils.LOG_WARNING("Encrypting Data Stick."); + this.inventoryOutputs.setInventorySlotContents(1, newStick); + this.inventoryOutputs.setInventorySlotContents(0, null); + } + } + + //Utils.LOG_INFO("Doing thing 1"); + if (dataStick != null) + if (dataStick.getItem() instanceof ModularBauble){ + Utils.LOG_INFO("Doing thing 2"); + ItemStack tBauble = dataStick; + dataStick = null; + this.inventoryOutputs.setInventorySlotContents(0, dataStick); + if (this.inventoryGrid != null){ + Utils.LOG_INFO("Doing things"); + ItemStack[] tStack = container.getInputComponents(); + if (tStack != null){ + //Utils.LOG_INFO(""+tStack.length); + if (tBauble != null){ + for (int i=0;i= 0 && i <= 10){ + if (i >= 0 && i <= 5){ return true; } return false; @@ -85,6 +85,11 @@ public class ModularArmourUtils { tNBT.setInteger(aMod.getModifier(), aInt); GT_Utility.ItemNBT.setNBT(aStack, tNBT); } + else { + if (getModifierLevel(aStack, aMod) > 5){ + setModifierLevel(aStack, aMod, 5); + } + } } public static int getModifierLevel(ItemStack aStack, Modifiers aMod) { -- cgit