From 6ed98c4a5b11380a328070b9d1690a0d68183846 Mon Sep 17 00:00:00 2001 From: Detrav Date: Sat, 29 Apr 2017 11:21:53 +0300 Subject: + Added programmed circuit configurator --- src/main/java/com/detrav/DetravScannerMod.java | 2 +- .../java/com/detrav/enums/DetravToolDictNames.java | 3 +- src/main/java/com/detrav/enums/Textures01.java | 3 +- .../detrav/items/DetravMetaGeneratedItem01.java | 48 ++++++++++--- .../detrav/items/DetravMetaGeneratedTool01.java | 4 ++ .../behaviours/BehaviourDetravConfigurator.java | 78 ++++++++++++++++++++ .../items/tools/DetravToolCircuitConfigurator.java | 71 ++++++++++++++++++ src/main/java/com/detrav/proxies/CommonProxy.java | 8 ++- .../Detrav_MetaTileEntity_AdvMiner2.java | 84 +++++++++++++++++++++- 9 files changed, 284 insertions(+), 17 deletions(-) create mode 100644 src/main/java/com/detrav/items/behaviours/BehaviourDetravConfigurator.java create mode 100644 src/main/java/com/detrav/items/tools/DetravToolCircuitConfigurator.java (limited to 'src/main/java/com/detrav') diff --git a/src/main/java/com/detrav/DetravScannerMod.java b/src/main/java/com/detrav/DetravScannerMod.java index e512c1cbaf..91907caf47 100644 --- a/src/main/java/com/detrav/DetravScannerMod.java +++ b/src/main/java/com/detrav/DetravScannerMod.java @@ -23,7 +23,7 @@ import net.minecraftforge.common.config.Configuration; public class DetravScannerMod { public static final String MODID = "detravscannermod"; - public static final String VERSION = "0.41"; + public static final String VERSION = "0.42"; public static final CreativeTabs TAB_DETRAV = new DetravCreativeTab(); diff --git a/src/main/java/com/detrav/enums/DetravToolDictNames.java b/src/main/java/com/detrav/enums/DetravToolDictNames.java index f72388379d..b058408aa2 100644 --- a/src/main/java/com/detrav/enums/DetravToolDictNames.java +++ b/src/main/java/com/detrav/enums/DetravToolDictNames.java @@ -9,5 +9,6 @@ public enum DetravToolDictNames { craftingToolPortableCharger, craftingToolPortableAnvil, craftingToolSmartPlunger, - craftingToolSmartTreeTap; + craftingToolSmartTreeTap, + craftingToolCictuitConfigurator; } diff --git a/src/main/java/com/detrav/enums/Textures01.java b/src/main/java/com/detrav/enums/Textures01.java index 244c083309..a65f181456 100644 --- a/src/main/java/com/detrav/enums/Textures01.java +++ b/src/main/java/com/detrav/enums/Textures01.java @@ -20,6 +20,7 @@ public class Textures01 { new Textures.ItemIcons.CustomIcon("gt.detrav.metatool.01/PORTABE_CHARGER"), new Textures.ItemIcons.CustomIcon("gt.detrav.metatool.01/PORTABE_CHARGER_BORDER"), new Textures.ItemIcons.CustomIcon("gt.detrav.metatool.01/ANVIL_TOOL"), - new Textures.ItemIcons.CustomIcon("gt.detrav.metatool.01/TOOL_TREE_TAP") + new Textures.ItemIcons.CustomIcon("gt.detrav.metatool.01/TOOL_TREE_TAP"), + new Textures.ItemIcons.CustomIcon("gt.detrav.metatool.01/CONFIGURATOR") }; } \ No newline at end of file diff --git a/src/main/java/com/detrav/items/DetravMetaGeneratedItem01.java b/src/main/java/com/detrav/items/DetravMetaGeneratedItem01.java index 6f0f278726..8edeb87b30 100644 --- a/src/main/java/com/detrav/items/DetravMetaGeneratedItem01.java +++ b/src/main/java/com/detrav/items/DetravMetaGeneratedItem01.java @@ -43,13 +43,11 @@ public class DetravMetaGeneratedItem01 extends DetravMetaGeneratedItem { return aDoShowAllItems || !aPrefix.name().startsWith("toolHead"); } - public boolean isConfiguredCircuit(ItemStack aStack) - { - return aStack.getUnlocalizedName().indexOf("gt.detrav.metaitem.01." + (mOffset+1)) == 0; + public boolean isConfiguredCircuit(ItemStack aStack) { + return aStack.getUnlocalizedName().indexOf("gt.detrav.metaitem.01." + (mOffset + 1)) == 0; } - public void addAdditionalToolTips(List aList, ItemStack aStack, EntityPlayer aPlayer) { int tOffset = aList.size(); String name = aStack.getUnlocalizedName(); @@ -65,11 +63,9 @@ public class DetravMetaGeneratedItem01 extends DetravMetaGeneratedItem { tOffset = addToList(tOffset, aList, detravPosition, "Percent", true); tOffset = addToList(tOffset, aList, detravPosition, "XCurrent", true); tOffset = addToList(tOffset, aList, detravPosition, "ZCurrent", true); - tOffset = addToList(tOffset, aList, detravPosition, "XFrom", true); - tOffset = addToList(tOffset, aList, detravPosition, "XTo", true); - tOffset = addToList(tOffset, aList, detravPosition, "ZFrom", true); - tOffset = addToList(tOffset, aList, detravPosition, "ZTo", true); - tOffset = addToList(tOffset, aList, detravPosition, "Configurated", false); + tOffset = addToList(tOffset, aList, detravPosition, "X", "XFrom", "XTo"); + tOffset = addToList(tOffset, aList, detravPosition, "Z", "ZFrom", "ZTo"); + tOffset = addToList(tOffset, aList, detravPosition, "Y", "YFrom", "YTo"); } } } @@ -77,7 +73,7 @@ public class DetravMetaGeneratedItem01 extends DetravMetaGeneratedItem { } } - public int addToList(int tOffset, List aList, NBTTagCompound tag,String name, boolean integer) { + public int addToList(int tOffset, List aList, NBTTagCompound tag, String name, boolean integer) { if (!tag.hasKey(name)) return tOffset; if (integer) { @@ -88,6 +84,36 @@ public class DetravMetaGeneratedItem01 extends DetravMetaGeneratedItem { aList.add(tOffset, EnumChatFormatting.WHITE + name + EnumChatFormatting.GRAY); } } - return tOffset + 1; + return tOffset + 1; + } + + + public int addToList(int tOffset, List aList, NBTTagCompound tag, String text, String from, String to) { + String i_from = ""; + String i_to = ""; + boolean noFrom = true; + boolean noTo = true; + if (tag.hasKey(from)) { + i_from = "" + tag.getInteger(from); + noFrom = false; + } + + if (tag.hasKey(to)) { + i_to = "" + tag.getInteger(to); + noTo = false; + } + + if (noFrom && noTo) + return tOffset; + + if (!noFrom && !noTo) + aList.add(tOffset, EnumChatFormatting.WHITE + text + " from " + i_from + " to " + i_to + EnumChatFormatting.GRAY); + else if (noFrom) + aList.add(tOffset, EnumChatFormatting.WHITE + text + " to " + i_to + EnumChatFormatting.GRAY); + else + aList.add(tOffset, EnumChatFormatting.WHITE + text + " from " + i_from + EnumChatFormatting.GRAY); + + + return tOffset + 1; } } diff --git a/src/main/java/com/detrav/items/DetravMetaGeneratedTool01.java b/src/main/java/com/detrav/items/DetravMetaGeneratedTool01.java index 7ffd561169..5ae33a60c8 100644 --- a/src/main/java/com/detrav/items/DetravMetaGeneratedTool01.java +++ b/src/main/java/com/detrav/items/DetravMetaGeneratedTool01.java @@ -38,6 +38,7 @@ public class DetravMetaGeneratedTool01 extends GT_MetaGenerated_Tool { addTool(102, "Electric Prospector's Scanner (MV)", "", new DetravToolMVElectricProPick(), new Object[]{DetravToolDictNames.craftingToolElectricProPick, new TC_Aspects.TC_AspectStack(TC_Aspects.INSTRUMENTUM, 2L), new TC_Aspects.TC_AspectStack(TC_Aspects.METALLUM, 4L)}, new TC_Aspects.TC_AspectStack(TC_Aspects.ELECTRUM, 4L)); addTool(104, "Electric Prospector's Scanner (HV)", "", new DetravToolHVElectricProPick(), new Object[]{DetravToolDictNames.craftingToolElectricProPick, new TC_Aspects.TC_AspectStack(TC_Aspects.INSTRUMENTUM, 2L), new TC_Aspects.TC_AspectStack(TC_Aspects.METALLUM, 4L)}, new TC_Aspects.TC_AspectStack(TC_Aspects.ELECTRUM, 4L)); addTool(106, "Portable Battery Charger", "", new DetravToolPortableCharger(), new Object[]{DetravToolDictNames.craftingToolPortableCharger, new TC_Aspects.TC_AspectStack(TC_Aspects.INSTRUMENTUM, 2L), new TC_Aspects.TC_AspectStack(TC_Aspects.AURAM, 4L)}, new TC_Aspects.TC_AspectStack(TC_Aspects.ELECTRUM, 4L)); + addTool(108, "Circuit Confugurator", "", new DetravToolCircuitConfigurator(), new Object[]{DetravToolDictNames.craftingToolCictuitConfigurator, new TC_Aspects.TC_AspectStack(TC_Aspects.COGNITIO,10L) }); setCreativeTab(DetravScannerMod.TAB_DETRAV); } @@ -115,6 +116,9 @@ public class DetravMetaGeneratedTool01 extends GT_MetaGenerated_Tool { aList.add(tOffset + 3, "x4 charge speed for tools"); aList.add(tOffset + 4, "Right click to open GUI"); break; + case 108: + aList.add(tOffset + 0, EnumChatFormatting.WHITE + "It can configure any programmed circuit" + EnumChatFormatting.GRAY); + break; } } } diff --git a/src/main/java/com/detrav/items/behaviours/BehaviourDetravConfigurator.java b/src/main/java/com/detrav/items/behaviours/BehaviourDetravConfigurator.java new file mode 100644 index 0000000000..8ff2f3edec --- /dev/null +++ b/src/main/java/com/detrav/items/behaviours/BehaviourDetravConfigurator.java @@ -0,0 +1,78 @@ +package com.detrav.items.behaviours; + +import com.detrav.enums.DetravItemList; +import gregtech.api.items.GT_MetaBase_Item; +import gregtech.common.items.behaviors.Behaviour_None; +import net.minecraft.entity.player.EntityPlayer; +import net.minecraft.entity.player.InventoryPlayer; +import net.minecraft.item.ItemStack; +import net.minecraft.nbt.NBTTagCompound; +import net.minecraft.world.World; +import net.minecraft.world.chunk.IChunkProvider; + +/** + * Created by Detrav on 29.04.2017. + */ +public class BehaviourDetravConfigurator extends Behaviour_None { + public ItemStack onItemRightClick(GT_MetaBase_Item aItem, ItemStack aStack, World aWorld, EntityPlayer aPlayer) { + + InventoryPlayer inv = aPlayer.inventory; + if (inv != null) { + for (int i = 0; i < inv.mainInventory.length; i++) { + if (inv.mainInventory[i].getUnlocalizedName().startsWith("gt.integrated_circuit") + && inv.mainInventory[i].stackSize == 1) { + + int circuit_config = inv.mainInventory[i].getItemDamage(); + if(circuit_config > 5) + circuit_config = 5; + circuit_config *= 2; + circuit_config++; + inv.mainInventory[i] = DetravItemList.ConfiguredCircuit.get(1); + ItemStack aCircuit = inv.mainInventory[i]; + + //in here if circuit is empty set data to chunk + + + NBTTagCompound aNBT = aCircuit.getTagCompound(); + if (aNBT == null) { + aNBT = new NBTTagCompound(); + NBTTagCompound detravPosition = new NBTTagCompound(); + aNBT.setTag("DetravPosition", detravPosition); + aCircuit.setTagCompound(aNBT); + } + + NBTTagCompound detravPosition = aNBT.getCompoundTag("DetravPosition"); + if (detravPosition == null) { + detravPosition = new NBTTagCompound(); + aNBT.setTag("DetravPosition", detravPosition); + } + + + int x_from = ((((int) aPlayer.posX) >> 4) - circuit_config + 1) * 16; + int x_to = ((((int) aPlayer.posX) >> 4) + circuit_config) * 16; + int x_current = x_from; + int z_from = ((((int) aPlayer.posZ) >> 4) - circuit_config + 1) * 16; + int z_to = ((((int) aPlayer.posZ) >> 4) + circuit_config) * 16; + int z_current = z_from; + + + int y_from = (int) aPlayer.posY + 1; + int y_to = (int) aPlayer.posY - 10; + + detravPosition.setInteger("XFrom", x_from); + detravPosition.setInteger("XTo", x_to); + detravPosition.setInteger("XCurrent", x_current); + detravPosition.setInteger("ZFrom", z_from); + detravPosition.setInteger("ZTo", z_to); + detravPosition.setInteger("ZCurrent", z_current); + detravPosition.setInteger("YFrom", y_from); + detravPosition.setInteger("YTo", y_to); + return super.onItemRightClick(aItem, aStack, aWorld, aPlayer); + } + } + + } + return super.onItemRightClick(aItem, aStack, aWorld, aPlayer); + + } +} diff --git a/src/main/java/com/detrav/items/tools/DetravToolCircuitConfigurator.java b/src/main/java/com/detrav/items/tools/DetravToolCircuitConfigurator.java new file mode 100644 index 0000000000..de95f5bc41 --- /dev/null +++ b/src/main/java/com/detrav/items/tools/DetravToolCircuitConfigurator.java @@ -0,0 +1,71 @@ +package com.detrav.items.tools; + + + +import com.detrav.enums.Textures01; +import com.detrav.items.behaviours.BehaviourDetravConfigurator; +import gregtech.api.GregTech_API; +import gregtech.api.interfaces.IIconContainer; +import gregtech.api.items.GT_MetaGenerated_Tool; +import gregtech.common.tools.GT_Tool; +import net.minecraft.block.Block; +import net.minecraft.entity.EntityLivingBase; +import net.minecraft.item.ItemStack; +import net.minecraft.util.ChatComponentText; +import net.minecraft.util.EnumChatFormatting; +import net.minecraft.util.IChatComponent; + +import java.util.List; + +/** + * Created by Detrav on 29.04.2017. + */ +public class DetravToolCircuitConfigurator extends GT_Tool { + public float getBaseDamage() { + return 0.25F; + } + + public float getSpeedMultiplier() { + return 0.3F; + } + + public float getMaxDurabilityMultiplier() { + return 0.50F; + } + + public String getCraftingSound() { + return (String) GregTech_API.sSoundList.get(Integer.valueOf(101)); + } + + public String getEntityHitSound() { + return (String) GregTech_API.sSoundList.get(Integer.valueOf(101)); + } + + public String getBreakingSound() { + return (String) GregTech_API.sSoundList.get(Integer.valueOf(0)); + } + + public String getMiningSound() { + return (String) GregTech_API.sSoundList.get(Integer.valueOf(101)); + } + + public boolean isMinableBlock(Block aBlock, byte aMetaData) { + return false; + } + + public IIconContainer getIcon(boolean aIsToolHead, ItemStack aStack) { + return aIsToolHead ? Textures01.mTextures[8] : null; + } + + public short[] getRGBa(boolean aIsToolHead, ItemStack aStack) { + return aIsToolHead ? GT_MetaGenerated_Tool.getPrimaryMaterial(aStack).mRGBa : GT_MetaGenerated_Tool.getSecondaryMaterial(aStack).mRGBa; + } + + public void onStatsAddedToTool(GT_MetaGenerated_Tool aItem, int aID) { + aItem.addItemBehavior(aID, new BehaviourDetravConfigurator()); + } + + public IChatComponent getDeathMessage(EntityLivingBase aPlayer, EntityLivingBase aEntity) { + return new ChatComponentText(EnumChatFormatting.RED + aEntity.getCommandSenderName() + EnumChatFormatting.WHITE + " got stuck trying to escape through a Pipe while fighting " + EnumChatFormatting.GREEN + aPlayer.getCommandSenderName() + EnumChatFormatting.WHITE); + } +} diff --git a/src/main/java/com/detrav/proxies/CommonProxy.java b/src/main/java/com/detrav/proxies/CommonProxy.java index a2ee6d47b0..63c1fa0fe1 100644 --- a/src/main/java/com/detrav/proxies/CommonProxy.java +++ b/src/main/java/com/detrav/proxies/CommonProxy.java @@ -1,7 +1,7 @@ package com.detrav.proxies; import com.detrav.DetravScannerMod; -import com.detrav.commands.DetravLevelUpCommand; + import com.detrav.enums.DetravItemList; import com.detrav.enums.DetravSimpleItems; import com.detrav.events.DetravBlockBreakEventHandler; @@ -19,7 +19,6 @@ import gregtech.api.GregTech_API; import gregtech.api.enums.*; import gregtech.api.util.GT_ModHandler; import gregtech.api.util.GT_OreDictUnificator; -import ic2.api.item.IC2Items; import ic2.core.Ic2Items; import net.minecraft.entity.player.EntityPlayer; import net.minecraft.init.Blocks; @@ -60,6 +59,11 @@ public class CommonProxy implements IGuiHandler { GT_ModHandler.addCraftingRecipe(DetravItemList.Solar_Boiler_Medium.get(1L, new Object[0]), GT_ModHandler.RecipeBits.NOT_REMOVABLE | GT_ModHandler.RecipeBits.REVERSIBLE | GT_ModHandler.RecipeBits.BUFFERED, new Object[]{"GGG", "NNN", "PMP", Character.valueOf('M'), ItemList.Machine_Steel_Boiler, Character.valueOf('P'), OrePrefixes.pipeSmall.get(Materials.Steel), Character.valueOf('N'), OrePrefixes.dust.get(Materials.Nickel), Character.valueOf('G'), new ItemStack(Blocks.glass, 1)}); GT_ModHandler.addCraftingRecipe(DetravItemList.Solar_Boiler_High.get(1L, new Object[0]), GT_ModHandler.RecipeBits.NOT_REMOVABLE | GT_ModHandler.RecipeBits.REVERSIBLE | GT_ModHandler.RecipeBits.BUFFERED, new Object[]{"GGG", "RRR", "PMP", Character.valueOf('M'), ItemList.Casing_HV, Character.valueOf('P'), OrePrefixes.pipeSmall.get(Materials.StainlessSteel), Character.valueOf('R'), OrePrefixes.dust.get(Materials.Rutile), Character.valueOf('G'), new ItemStack(Blocks.glass, 1)}); + GT_ModHandler.addCraftingRecipe( + DetravMetaGeneratedTool01.INSTANCE.getToolWithStats(108,1,Materials.Iron, Materials._NULL,null), + GT_ModHandler.RecipeBits.NOT_REMOVABLE | GT_ModHandler.RecipeBits.REVERSIBLE | GT_ModHandler.RecipeBits.BUFFERED, + new Object[]{ "GGG","dCi","GGG", Character.valueOf('G'), new ItemStack(Items.dye,1,2), Character.valueOf('C'), ItemList.Circuit_Basic.get(1) }); + GT_ModHandler.addShapelessCraftingRecipe(DetravItemList.DetravAdvancedMiner2.get(1L, new Object[0]),new Object[]{ItemList.AdvancedMiner2}); //Treetap recipes diff --git a/src/main/java/com/detrav/tileentities/Detrav_MetaTileEntity_AdvMiner2.java b/src/main/java/com/detrav/tileentities/Detrav_MetaTileEntity_AdvMiner2.java index ba668389d4..c7d6ed7608 100644 --- a/src/main/java/com/detrav/tileentities/Detrav_MetaTileEntity_AdvMiner2.java +++ b/src/main/java/com/detrav/tileentities/Detrav_MetaTileEntity_AdvMiner2.java @@ -111,7 +111,8 @@ public class Detrav_MetaTileEntity_AdvMiner2 extends GT_MetaTileEntity_MultiBloc Chunk c = w.getChunkProvider().provideChunk(x>>4,z>>4); x = x & 15; z = z & 15; - for(int yLevel = getBaseMetaTileEntity().getYCoord() - 1; yLevel>1; yLevel --) + int yTo = getYTo(); + for(int yLevel = getYFrom(); yLevel>=yTo; yLevel --) { Block tBlock = c.getBlock(x,yLevel,z); int tMetaID = c.getBlockMetadata(x,yLevel,z); @@ -312,12 +313,17 @@ public class Detrav_MetaTileEntity_AdvMiner2 extends GT_MetaTileEntity_MultiBloc int z_to = ((getBaseMetaTileEntity().getZCoord() >> 4) + circuit_config) * 16; int z_current = z_from; + int y_from = getBaseMetaTileEntity().getYCoord() - 1; + int y_to = 1; + detravPosition.setInteger("XFrom", x_from); detravPosition.setInteger("XTo", x_to); detravPosition.setInteger("XCurrent", x_current); detravPosition.setInteger("ZFrom", z_from); detravPosition.setInteger("ZTo", z_to); detravPosition.setInteger("ZCurrent", z_current); + detravPosition.setInteger("YFrom",y_from); + detravPosition.setInteger("YTo", y_to); } } @@ -355,6 +361,53 @@ public class Detrav_MetaTileEntity_AdvMiner2 extends GT_MetaTileEntity_MultiBloc return detravPosition.getInteger("XCurrent"); } + private int getYFrom() + { + int fakeResult = getBaseMetaTileEntity().getYCoord()-1; + if(mInventory[1] == null) return fakeResult; + ItemStack aCircuit = mInventory[1]; + NBTTagCompound aNBT = aCircuit.getTagCompound(); + if(aNBT == null) return fakeResult; + NBTTagCompound detravPosition = aNBT.getCompoundTag("DetravPosition"); + if (detravPosition == null ) return fakeResult; + + if(detravPosition.hasKey("Finished")) + if(detravPosition.getBoolean("Finished")) + return fakeResult; + + if(!detravPosition.hasKey("YFrom")) + return fakeResult; + + int y_from = detravPosition.getInteger("YFrom");; + if(y_from < 1 || y_from > 254) + return fakeResult; + return y_from; + } + + private int getYTo() { + int fakeResult = getBaseMetaTileEntity().getYCoord() - 1; + if (mInventory[1] == null) return fakeResult; + ItemStack aCircuit = mInventory[1]; + NBTTagCompound aNBT = aCircuit.getTagCompound(); + if (aNBT == null) return fakeResult; + NBTTagCompound detravPosition = aNBT.getCompoundTag("DetravPosition"); + if (detravPosition == null) return fakeResult; + + if (detravPosition.hasKey("Finished")) + if (detravPosition.getBoolean("Finished")) + return fakeResult; + if(!detravPosition.hasKey("YTo")) + return 1; + + int y_to = detravPosition.getInteger("YTo"); + + if (y_to > 254) + return fakeResult; + if (y_to < 1) + return 1; + return y_to; + } + private int getZCurrent() { int fakeResult = getBaseMetaTileEntity().getZCoord(); @@ -391,6 +444,35 @@ public class Detrav_MetaTileEntity_AdvMiner2 extends GT_MetaTileEntity_MultiBloc int z_to = detravPosition.getInteger("ZTo"); int x_current = detravPosition.getInteger("XCurrent"); int z_current = detravPosition.getInteger("ZCurrent"); + int y_from = detravPosition.getInteger("YFrom"); + int y_to = detravPosition.getInteger("YTo"); + + if(x_from > x_to) + { + int temp = x_to; + x_to = x_from; + x_from = temp; + detravPosition.setInteger("XFrom",x_from); + detravPosition.setInteger("XTo",x_to); + } + + if(z_from > z_to) + { + int temp = z_to; + z_to = z_from; + z_from = temp; + detravPosition.setInteger("ZFrom",z_from); + detravPosition.setInteger("ZTo",z_to); + } + + if(y_from < y_to) + { + int temp = y_to; + y_to = y_from; + y_from = temp; + detravPosition.setInteger("YFrom",y_from); + detravPosition.setInteger("YTo",y_to); + } if(z_current < z_to) z_current++; -- cgit