diff --git a/changelog b/changelog index ce5ce5c44..277ae7279 100644 --- a/changelog +++ b/changelog @@ -9,6 +9,7 @@ * Updated basalt textures * Scaffold blocks can now be placed horizontally * Updated the shredder's textures +* The strand caster will now cast its remaining buffer after 10 seconds of inactivity, even if the buffer is not full enough for a batch of 9 ## Fixed * The conveyor grabber should no longer skip over items when used in long lines diff --git a/gradle.properties b/gradle.properties index d0028d08c..0517f3c81 100644 --- a/gradle.properties +++ b/gradle.properties @@ -48,7 +48,7 @@ credits=HbMinecraft,\ \ Voxelstice (OpenComputers integration, turbine spinup),\ \ BallOfEnergy1 (OpenComputers integration),\ \ sdddddf80 (recipe configs, chinese localization, custom machine holograms),\ - \ Abel1502 (optimization, crate upgrade recipes),\ + \ Abel1502 (optimization, crate upgrade recipes, strand caster improvements),\ \ SuperCraftAlex (tooltips)\ \ Ice-Arrow (research reactor tweaks),\ \ 245tt (anvil GUI improvements),\ diff --git a/src/main/java/com/hbm/crafting/MineralRecipes.java b/src/main/java/com/hbm/crafting/MineralRecipes.java index db125cf8c..6ab5ea10b 100644 --- a/src/main/java/com/hbm/crafting/MineralRecipes.java +++ b/src/main/java/com/hbm/crafting/MineralRecipes.java @@ -2,6 +2,7 @@ package com.hbm.crafting; import com.hbm.blocks.ModBlocks; import com.hbm.blocks.BlockEnums.EnumStoneType; +import com.hbm.inventory.material.MaterialShapes; import com.hbm.items.ItemEnums.EnumCokeType; import com.hbm.items.ModItems; import com.hbm.items.machine.ItemRTGPelletDepleted.DepletedRTGMaterial; @@ -106,31 +107,31 @@ public class MineralRecipes { addBillet(ModItems.billet_cobalt, ModItems.ingot_cobalt, ModItems.nugget_cobalt); addBillet(ModItems.billet_co60, ModItems.ingot_co60, ModItems.nugget_co60); - addBillet(ModItems.billet_sr90, ModItems.ingot_sr90, ModItems.nugget_sr90, SR90.allNuggets()); - addBillet(ModItems.billet_uranium, ModItems.ingot_uranium, ModItems.nugget_uranium, U.allNuggets()); - addBillet(ModItems.billet_u233, ModItems.ingot_u233, ModItems.nugget_u233, U233.allNuggets()); - addBillet(ModItems.billet_u235, ModItems.ingot_u235, ModItems.nugget_u235, U235.allNuggets()); - addBillet(ModItems.billet_u238, ModItems.ingot_u238, ModItems.nugget_u238, U238.allNuggets()); - addBillet(ModItems.billet_th232, ModItems.ingot_th232, ModItems.nugget_th232, TH232.allNuggets()); - addBillet(ModItems.billet_plutonium, ModItems.ingot_plutonium, ModItems.nugget_plutonium, PU.allNuggets()); - addBillet(ModItems.billet_pu238, ModItems.ingot_pu238, ModItems.nugget_pu238, PU238.allNuggets()); - addBillet(ModItems.billet_pu239, ModItems.ingot_pu239, ModItems.nugget_pu239, PU239.allNuggets()); - addBillet(ModItems.billet_pu240, ModItems.ingot_pu240, ModItems.nugget_pu240, PU240.allNuggets()); - addBillet(ModItems.billet_pu241, ModItems.ingot_pu241, ModItems.nugget_pu241, PU241.allNuggets()); + addBillet(ModItems.billet_sr90, ModItems.ingot_sr90, ModItems.nugget_sr90, SR90.all(MaterialShapes.NUGGET)); + addBillet(ModItems.billet_uranium, ModItems.ingot_uranium, ModItems.nugget_uranium, U.all(MaterialShapes.NUGGET)); + addBillet(ModItems.billet_u233, ModItems.ingot_u233, ModItems.nugget_u233, U233.all(MaterialShapes.NUGGET)); + addBillet(ModItems.billet_u235, ModItems.ingot_u235, ModItems.nugget_u235, U235.all(MaterialShapes.NUGGET)); + addBillet(ModItems.billet_u238, ModItems.ingot_u238, ModItems.nugget_u238, U238.all(MaterialShapes.NUGGET)); + addBillet(ModItems.billet_th232, ModItems.ingot_th232, ModItems.nugget_th232, TH232.all(MaterialShapes.NUGGET)); + addBillet(ModItems.billet_plutonium, ModItems.ingot_plutonium, ModItems.nugget_plutonium, PU.all(MaterialShapes.NUGGET)); + addBillet(ModItems.billet_pu238, ModItems.ingot_pu238, ModItems.nugget_pu238, PU238.all(MaterialShapes.NUGGET)); + addBillet(ModItems.billet_pu239, ModItems.ingot_pu239, ModItems.nugget_pu239, PU239.all(MaterialShapes.NUGGET)); + addBillet(ModItems.billet_pu240, ModItems.ingot_pu240, ModItems.nugget_pu240, PU240.all(MaterialShapes.NUGGET)); + addBillet(ModItems.billet_pu241, ModItems.ingot_pu241, ModItems.nugget_pu241, PU241.all(MaterialShapes.NUGGET)); addBillet(ModItems.billet_pu_mix, ModItems.ingot_pu_mix, ModItems.nugget_pu_mix); - addBillet(ModItems.billet_am241, ModItems.ingot_am241, ModItems.nugget_am241, AM241.allNuggets()); - addBillet(ModItems.billet_am242, ModItems.ingot_am242, ModItems.nugget_am242, AM242.allNuggets()); + addBillet(ModItems.billet_am241, ModItems.ingot_am241, ModItems.nugget_am241, AM241.all(MaterialShapes.NUGGET)); + addBillet(ModItems.billet_am242, ModItems.ingot_am242, ModItems.nugget_am242, AM242.all(MaterialShapes.NUGGET)); addBillet(ModItems.billet_am_mix, ModItems.ingot_am_mix, ModItems.nugget_am_mix); - addBillet(ModItems.billet_neptunium, ModItems.ingot_neptunium, ModItems.nugget_neptunium, NP237.allNuggets()); - addBillet(ModItems.billet_polonium, ModItems.ingot_polonium, ModItems.nugget_polonium, PO210.allNuggets()); - addBillet(ModItems.billet_technetium, ModItems.ingot_technetium, ModItems.nugget_technetium, TC99.allNuggets()); - addBillet(ModItems.billet_au198, ModItems.ingot_au198, ModItems.nugget_au198, AU198.allNuggets()); - addBillet(ModItems.billet_pb209, ModItems.ingot_pb209, ModItems.nugget_pb209, PB209.allNuggets()); //and so forth - addBillet(ModItems.billet_ra226, ModItems.ingot_ra226, ModItems.nugget_ra226, RA226.allNuggets()); - addBillet(ModItems.billet_actinium, ModItems.ingot_actinium, ModItems.nugget_actinium, AC227.allNuggets()); + addBillet(ModItems.billet_neptunium, ModItems.ingot_neptunium, ModItems.nugget_neptunium, NP237.all(MaterialShapes.NUGGET)); + addBillet(ModItems.billet_polonium, ModItems.ingot_polonium, ModItems.nugget_polonium, PO210.all(MaterialShapes.NUGGET)); + addBillet(ModItems.billet_technetium, ModItems.ingot_technetium, ModItems.nugget_technetium, TC99.all(MaterialShapes.NUGGET)); + addBillet(ModItems.billet_au198, ModItems.ingot_au198, ModItems.nugget_au198, AU198.all(MaterialShapes.NUGGET)); + addBillet(ModItems.billet_pb209, ModItems.ingot_pb209, ModItems.nugget_pb209, PB209.all(MaterialShapes.NUGGET)); //and so forth + addBillet(ModItems.billet_ra226, ModItems.ingot_ra226, ModItems.nugget_ra226, RA226.all(MaterialShapes.NUGGET)); + addBillet(ModItems.billet_actinium, ModItems.ingot_actinium, ModItems.nugget_actinium, AC227.all(MaterialShapes.NUGGET)); addBillet(ModItems.billet_schrabidium, ModItems.ingot_schrabidium, ModItems.nugget_schrabidium, SA326.nugget()); addBillet(ModItems.billet_solinium, ModItems.ingot_solinium, ModItems.nugget_solinium, SA327.nugget()); - addBillet(ModItems.billet_gh336, ModItems.ingot_gh336, ModItems.nugget_gh336, GH336.allNuggets()); + addBillet(ModItems.billet_gh336, ModItems.ingot_gh336, ModItems.nugget_gh336, GH336.all(MaterialShapes.NUGGET)); addBillet(ModItems.billet_uranium_fuel, ModItems.ingot_uranium_fuel, ModItems.nugget_uranium_fuel); addBillet(ModItems.billet_thorium_fuel, ModItems.ingot_thorium_fuel, ModItems.nugget_thorium_fuel); addBillet(ModItems.billet_plutonium_fuel, ModItems.ingot_plutonium_fuel, ModItems.nugget_plutonium_fuel); diff --git a/src/main/java/com/hbm/hazard/HazardRegistry.java b/src/main/java/com/hbm/hazard/HazardRegistry.java index 0653efe8c..eeb51bcd8 100644 --- a/src/main/java/com/hbm/hazard/HazardRegistry.java +++ b/src/main/java/com/hbm/hazard/HazardRegistry.java @@ -498,8 +498,8 @@ public class HazardRegistry { /* * Blacklist */ - for(String ore : TH232.ores()) HazardSystem.blacklist(ore); - for(String ore : U.ores()) HazardSystem.blacklist(ore); + for(String ore : TH232.all(MaterialShapes.ORE)) HazardSystem.blacklist(ore); + for(String ore : U.all(MaterialShapes.ORE)) HazardSystem.blacklist(ore); /* @@ -523,7 +523,7 @@ public class HazardRegistry { }; for(MaterialShapes shape : MaterialShapes.allShapes) { - for(String prefix : shape.prefixes) { + if(!shape.noAutogen) for(String prefix : shape.prefixes) { for(Object[] o : data) { HazardSystem.register(prefix + o[0], new HazardData().setMutex(0b1).addEntry(new HazardEntry(RADIATION, (float) o[1] * shape.q(1) / MaterialShapes.INGOT.q(1)))); } diff --git a/src/main/java/com/hbm/inventory/OreDictManager.java b/src/main/java/com/hbm/inventory/OreDictManager.java index 973bf8000..ebf747ea7 100644 --- a/src/main/java/com/hbm/inventory/OreDictManager.java +++ b/src/main/java/com/hbm/inventory/OreDictManager.java @@ -9,7 +9,7 @@ import java.util.List; import static com.hbm.items.ModItems.*; import static com.hbm.blocks.ModBlocks.*; import static com.hbm.inventory.OreDictManager.DictFrame.*; -import static com.hbm.inventory.OreNames.*; +import static com.hbm.inventory.material.MaterialShapes.*; import com.hbm.blocks.ModBlocks; import com.hbm.blocks.generic.BlockOreBasalt.EnumBasaltOreType; @@ -205,6 +205,8 @@ public class OreDictManager { public static final DictFrame CMB = new DictFrame("CMBSteel"); public static final DictFrame DESH = new DictFrame("WorkersAlloy"); public static final DictFrame STAR = new DictFrame("Starmetal"); + public static final DictFrame GUNMETAL = new DictFrame("GunMetal"); + public static final DictFrame WEAPONSTEEL = new DictFrame("WeaponSteel"); public static final DictFrame BIGMT = new DictFrame("Saturnite"); public static final DictFrame FERRO = new DictFrame("Ferrouranium"); public static final DictFrame EUPH = new DictFrame("Euphemium"); @@ -409,6 +411,8 @@ public class OreDictManager { CMB .ingot(ingot_combine_steel) .dust(powder_combine_steel) .plate(plate_combine_steel) .block(block_combine_steel); DESH .nugget(nugget_desh) .ingot(ingot_desh) .dust(powder_desh) .block(block_desh); STAR .ingot(ingot_starmetal) .block(block_starmetal); + GUNMETAL .ingot(ingot_gunmetal); + WEAPONSTEEL .ingot(ingot_weaponsteel); BIGMT .ingot(ingot_saturnite) .plate(plate_saturnite); FERRO .ingot(ingot_ferrouranium); EUPH .nugget(nugget_euphemium) .ingot(ingot_euphemium) .dust(powder_euphemium) .block(block_euphemium); @@ -548,6 +552,14 @@ public class OreDictManager { } if(mat.shapes.contains(MaterialShapes.FRAGMENT)) for(String name : mat.names) OreDictionary.registerOre(MaterialShapes.FRAGMENT.name() + name, new ItemStack(ModItems.bedrock_ore_fragment, 1, mat.id)); if(mat.shapes.contains(MaterialShapes.WIRE)) for(String name : mat.names) OreDictionary.registerOre(MaterialShapes.WIRE.name() + name, new ItemStack(ModItems.wire_fine, 1, mat.id)); + + if(mat.shapes.contains(MaterialShapes.LIGHTBARREL)) for(String name : mat.names) OreDictionary.registerOre(MaterialShapes.LIGHTBARREL.name() + name, new ItemStack(ModItems.part_barrel_light, 1, mat.id)); + if(mat.shapes.contains(MaterialShapes.HEAVYBARREL)) for(String name : mat.names) OreDictionary.registerOre(MaterialShapes.HEAVYBARREL.name() + name, new ItemStack(ModItems.part_barrel_heavy, 1, mat.id)); + if(mat.shapes.contains(MaterialShapes.LIGHTRECEIVER)) for(String name : mat.names) OreDictionary.registerOre(MaterialShapes.LIGHTRECEIVER.name() + name, new ItemStack(ModItems.part_receiver_light, 1, mat.id)); + if(mat.shapes.contains(MaterialShapes.HEAVYRECEIVER)) for(String name : mat.names) OreDictionary.registerOre(MaterialShapes.HEAVYRECEIVER.name() + name, new ItemStack(ModItems.part_receiver_heavy, 1, mat.id)); + if(mat.shapes.contains(MaterialShapes.MECHANISM)) for(String name : mat.names) OreDictionary.registerOre(MaterialShapes.MECHANISM.name() + name, new ItemStack(ModItems.part_mechanism, 1, mat.id)); + if(mat.shapes.contains(MaterialShapes.STOCK)) for(String name : mat.names) OreDictionary.registerOre(MaterialShapes.STOCK.name() + name, new ItemStack(ModItems.part_stock, 1, mat.id)); + if(mat.shapes.contains(MaterialShapes.GRIP)) for(String name : mat.names) OreDictionary.registerOre(MaterialShapes.GRIP.name() + name, new ItemStack(ModItems.part_grip, 1, mat.id)); } for(EnumBedrockOre ore : EnumBedrockOre.values()) { @@ -669,8 +681,8 @@ public class OreDictManager { ANY_RUBBER.addPrefix(INGOT, true); ANY_PLASTIC.addPrefix(INGOT, true).addPrefix(DUST, true).addPrefix(BLOCK, true); ANY_HARDPLASTIC.addPrefix(INGOT, true); - ANY_RESISTANTALLOY.addPrefix(INGOT, true).addPrefix(DUST, true).addPrefix(PLATECAST, true).addPrefix(PLATEWELDED, true).addPrefix(HEAVY_COMPONENT, true).addPrefix(BLOCK, true); - ANY_BISMOIDBRONZE.addPrefix(INGOT, true).addPrefix(PLATECAST, true); + ANY_RESISTANTALLOY.addPrefix(INGOT, true).addPrefix(DUST, true).addPrefix(CASTPLATE, true).addPrefix(WELDEDPLATE, true).addPrefix(HEAVY_COMPONENT, true).addPrefix(BLOCK, true); + ANY_BISMOIDBRONZE.addPrefix(INGOT, true).addPrefix(CASTPLATE, true); ANY_TAR.addPrefix(ANY, false); } @@ -737,44 +749,28 @@ public class OreDictManager { /* * Quick access methods to grab ore names for recipes. */ - public String any() { return ANY + mats[0]; } - public String nugget() { return NUGGET + mats[0]; } - public String tiny() { return TINY + mats[0]; } - public String bolt() { return BOLT + mats[0]; } - public String ingot() { return INGOT + mats[0]; } - public String dustTiny() { return DUSTTINY + mats[0]; } - public String dust() { return DUST + mats[0]; } - public String gem() { return GEM + mats[0]; } - public String crystal() { return CRYSTAL + mats[0]; } - public String plate() { return PLATE + mats[0]; } - public String plateCast() { return PLATECAST + mats[0]; } - public String plateWelded() { return PLATEWELDED + mats[0]; } - public String heavyComp() { return HEAVY_COMPONENT + mats[0]; } - public String wireFine() { return WIRE + mats[0]; } - public String wireDense() { return WIREDENSE + mats[0]; } - public String shell() { return SHELL + mats[0]; } - public String pipe() { return PIPE + mats[0]; } - public String billet() { return BILLET + mats[0]; } - public String block() { return BLOCK + mats[0]; } - public String ore() { return ORE + mats[0]; } - public String fragment() { return FRAGMENT + mats[0]; } - public String[] anys() { return appendToAll(ANY); } - public String[] nuggets() { return appendToAll(NUGGET); } - public String[] tinys() { return appendToAll(TINY); } - public String[] allNuggets() { return appendToAll(NUGGET, TINY); } - public String[] ingots() { return appendToAll(INGOT); } - public String[] dustTinys() { return appendToAll(DUSTTINY); } - public String[] dusts() { return appendToAll(DUST); } - public String[] gems() { return appendToAll(GEM); } - public String[] crystals() { return appendToAll(CRYSTAL); } - public String[] plates() { return appendToAll(PLATE); } - public String[] plateCasts() { return appendToAll(PLATECAST); } - public String[] shells() { return appendToAll(SHELL); } - public String[] pipes() { return appendToAll(PIPE); } - public String[] billets() { return appendToAll(BILLET); } - public String[] blocks() { return appendToAll(BLOCK); } - public String[] ores() { return appendToAll(ORE); } - public String[] fragments() { return appendToAll(FRAGMENT); } + public String any() { return ANY.name() + mats[0]; } + public String nugget() { return NUGGET.name() + mats[0]; } + public String tiny() { return TINY.name() + mats[0]; } + public String bolt() { return BOLT.name() + mats[0]; } + public String ingot() { return INGOT.name() + mats[0]; } + public String dustTiny() { return DUSTTINY.name() + mats[0]; } + public String dust() { return DUST.name() + mats[0]; } + public String gem() { return GEM.name() + mats[0]; } + public String crystal() { return CRYSTAL.name() + mats[0]; } + public String plate() { return PLATE.name() + mats[0]; } + public String plateCast() { return CASTPLATE.name() + mats[0]; } + public String plateWelded() { return WELDEDPLATE.name() + mats[0]; } + public String heavyComp() { return HEAVY_COMPONENT.name() + mats[0]; } + public String wireFine() { return WIRE.name() + mats[0]; } + public String wireDense() { return DENSEWIRE.name() + mats[0]; } + public String shell() { return SHELL.name() + mats[0]; } + public String pipe() { return PIPE.name() + mats[0]; } + public String billet() { return BILLET.name() + mats[0]; } + public String block() { return BLOCK.name() + mats[0]; } + public String ore() { return ORE.name() + mats[0]; } + public String fragment() { return FRAGMENT.name() + mats[0]; } + public String[] all(MaterialShapes shape) { return appendToAll(shape.prefixes); } /** Returns cast (triple) plates if 528 mode is enabled or normal plates if not */ public String plate528() { return GeneralConfig.enable528 ? plateCast() : plate(); } @@ -868,7 +864,7 @@ public class OreDictManager { } public DictFrame plateCast(Object... plate) { hazMult = HazardRegistry.plateCast; - return makeObject(PLATECAST, plate); + return makeObject(CASTPLATE, plate); } public DictFrame billet(Object... billet) { hazMult = HazardRegistry.billet; @@ -888,8 +884,9 @@ public class OreDictManager { return makeObject(ORENETHER, oreNether); } - public DictFrame makeObject(String tag, Object... objects) { + public DictFrame makeObject(MaterialShapes shape, Object... objects) { + String tag = shape.name(); for(Object o : objects) { if(o instanceof Item) registerStack(tag, new ItemStack((Item) o)); if(o instanceof Block) registerStack(tag, new ItemStack((Block) o)); @@ -974,8 +971,9 @@ public class OreDictManager { * @param prefix The prefix of both the input and result of the reregistration * @return */ - public DictGroup addPrefix(String prefix, boolean inputPrefix) { + public DictGroup addPrefix(MaterialShapes shape, boolean inputPrefix) { + String prefix = shape.name(); String group = prefix + groupName; for(String name : names) { @@ -998,24 +996,24 @@ public class OreDictManager { return this; } - public String any() { return ANY + groupName; } - public String nugget() { return NUGGET + groupName; } - public String tiny() { return TINY + groupName; } - public String bolt() { return BOLT + groupName; } - public String ingot() { return INGOT + groupName; } - public String dustTiny() { return DUSTTINY + groupName; } - public String dust() { return DUST + groupName; } - public String gem() { return GEM + groupName; } - public String crystal() { return CRYSTAL + groupName; } - public String plate() { return PLATE + groupName; } - public String plateCast() { return PLATECAST + groupName; } - public String plateWelded() { return PLATEWELDED + groupName; } - public String heavyComp() { return HEAVY_COMPONENT + groupName; } - public String wireFine() { return WIRE + groupName; } - public String wireDense() { return WIREDENSE + groupName; } - public String billet() { return BILLET + groupName; } - public String block() { return BLOCK + groupName; } - public String ore() { return ORE + groupName; } + public String any() { return ANY.name() + groupName; } + public String nugget() { return NUGGET.name() + groupName; } + public String tiny() { return TINY.name() + groupName; } + public String bolt() { return BOLT.name() + groupName; } + public String ingot() { return INGOT.name() + groupName; } + public String dustTiny() { return DUSTTINY .name() + groupName; } + public String dust() { return DUST.name() + groupName; } + public String gem() { return GEM.name() + groupName; } + public String crystal() { return CRYSTAL.name() + groupName; } + public String plate() { return PLATE.name() + groupName; } + public String plateCast() { return CASTPLATE.name() + groupName; } + public String plateWelded() { return WELDEDPLATE.name() + groupName; } + public String heavyComp() { return HEAVY_COMPONENT.name() + groupName; } + public String wireFine() { return WIRE.name() + groupName; } + public String wireDense() { return DENSEWIRE.name() + groupName; } + public String billet() { return BILLET.name() + groupName; } + public String block() { return BLOCK.name() + groupName; } + public String ore() { return ORE.name() + groupName; } } private static void addReRegistration(String original, String additional) { diff --git a/src/main/java/com/hbm/inventory/OreNames.java b/src/main/java/com/hbm/inventory/OreNames.java deleted file mode 100644 index 036d82ead..000000000 --- a/src/main/java/com/hbm/inventory/OreNames.java +++ /dev/null @@ -1,34 +0,0 @@ -package com.hbm.inventory; - -public class OreNames { - - /* - * PREFIXES - */ - public static final String ANY = "any"; - public static final String NUGGET = "nugget"; - public static final String TINY = "tiny"; - public static final String FRAGMENT = "bedrockorefragment"; - public static final String BOLT = "bolt"; - public static final String INGOT = "ingot"; - public static final String DUSTTINY = "dustTiny"; - public static final String DUST = "dust"; - public static final String GEM = "gem"; - public static final String CRYSTAL = "crystal"; - public static final String PLATE = "plate"; - public static final String PLATECAST = "plateTriple"; //cast plates are solid plates made from 3 ingots, turns out that's literally just a GT triple plate - public static final String PLATEWELDED = "plateSextuple"; - public static final String SHELL = "shell"; - public static final String PIPE = "ntmpipe"; - public static final String WIRE = "wireFine"; - public static final String WIREDENSE = "wireDense"; - public static final String BILLET = "billet"; - public static final String BLOCK = "block"; - public static final String ORE = "ore"; - public static final String ORENETHER = "oreNether"; - public static final String HEAVY_COMPONENT = "componentHeavy"; - - public static final String[] prefixes = new String[] { - ANY, NUGGET, TINY, FRAGMENT, BOLT, INGOT, DUSTTINY, DUST, GEM, CRYSTAL, PLATE, PLATECAST, BILLET, BLOCK, ORE, ORENETHER, HEAVY_COMPONENT, WIRE, WIREDENSE - }; -} diff --git a/src/main/java/com/hbm/inventory/gui/GUIMachineSolderingStation.java b/src/main/java/com/hbm/inventory/gui/GUIMachineSolderingStation.java index 1a3a3f363..7e718b9f9 100644 --- a/src/main/java/com/hbm/inventory/gui/GUIMachineSolderingStation.java +++ b/src/main/java/com/hbm/inventory/gui/GUIMachineSolderingStation.java @@ -4,11 +4,16 @@ import org.lwjgl.opengl.GL11; import com.hbm.inventory.container.ContainerMachineSolderingStation; import com.hbm.lib.RefStrings; +import com.hbm.packet.PacketDispatcher; +import com.hbm.packet.toserver.NBTControlPacket; import com.hbm.tileentity.machine.TileEntityMachineSolderingStation; import net.minecraft.client.Minecraft; +import net.minecraft.client.audio.PositionedSoundRecord; import net.minecraft.client.resources.I18n; import net.minecraft.entity.player.InventoryPlayer; +import net.minecraft.nbt.NBTTagCompound; +import net.minecraft.util.EnumChatFormatting; import net.minecraft.util.ResourceLocation; public class GUIMachineSolderingStation extends GuiInfoContainer { @@ -32,6 +37,24 @@ public class GUIMachineSolderingStation extends GuiInfoContainer { this.drawElectricityInfo(this, x, y, guiLeft + 152, guiTop + 18, 16, 52, solderer.getPower(), solderer.getMaxPower()); this.drawCustomInfoStat(x, y, guiLeft + 78, guiTop + 67, 8, 8, guiLeft + 78, guiTop + 67, this.getUpgradeInfo(solderer)); + + + this.drawCustomInfoStat(x, y, guiLeft + 5, guiTop + 66, 10, 10, x, y, + "Recipe Collision Prevention: " + (solderer.collisionPrevention ? EnumChatFormatting.GREEN + "ON" : EnumChatFormatting.RED + "OFF"), + "Prevents no-fluid recipes from being processed", + "when fluid is present."); + } + + @Override + protected void mouseClicked(int x, int y, int i) { + super.mouseClicked(x, y, i); + + if(guiLeft + 5 <= x && guiLeft + 5 + 10 > x && guiTop + 66 < y && guiTop + 66 + 10 >= y) { + mc.getSoundHandler().playSound(PositionedSoundRecord.func_147674_a(new ResourceLocation("gui.button.press"), 1.0F)); + NBTTagCompound data = new NBTTagCompound(); + data.setBoolean("collision", true); + PacketDispatcher.wrapper.sendToServer(new NBTControlPacket(data, solderer.xCoord, solderer.yCoord, solderer.zCoord)); + } } @Override diff --git a/src/main/java/com/hbm/inventory/material/MaterialShapes.java b/src/main/java/com/hbm/inventory/material/MaterialShapes.java index a7cd59f3d..7e3f12b07 100644 --- a/src/main/java/com/hbm/inventory/material/MaterialShapes.java +++ b/src/main/java/com/hbm/inventory/material/MaterialShapes.java @@ -9,8 +9,13 @@ public class MaterialShapes { public static final List allShapes = new ArrayList(); + public static final MaterialShapes ANY = new MaterialShapes(0).noAutogen(); + public static final MaterialShapes ORE = new MaterialShapes(0, "ore", "oreNether").noAutogen(); + public static final MaterialShapes ORENETHER = new MaterialShapes(0, "oreNether").noAutogen(); + public static final MaterialShapes QUANTUM = new MaterialShapes(1); // 1/72 of an ingot, allows the ingot to be divisible through 2, 4, 6, 8, 9, 12, 24 and 36 - public static final MaterialShapes NUGGET = new MaterialShapes(8, "nugget"); + public static final MaterialShapes NUGGET = new MaterialShapes(8, "nugget", "tiny"); + public static final MaterialShapes TINY = new MaterialShapes(8, "tiny").noAutogen(); public static final MaterialShapes FRAGMENT = new MaterialShapes(8, "bedrockorefragment"); public static final MaterialShapes DUSTTINY = new MaterialShapes(NUGGET.quantity, "dustTiny"); public static final MaterialShapes WIRE = new MaterialShapes(9, "wireFine"); @@ -29,28 +34,37 @@ public class MaterialShapes { public static final MaterialShapes QUART = new MaterialShapes(162); public static final MaterialShapes BLOCK = new MaterialShapes(INGOT.quantity * 9, "block"); public static final MaterialShapes HEAVY_COMPONENT = new MaterialShapes(CASTPLATE.quantity * 256, "componentHeavy"); + + public static final MaterialShapes LIGHTBARREL = new MaterialShapes(INGOT.quantity * 3, "barrelLight"); + public static final MaterialShapes HEAVYBARREL = new MaterialShapes(INGOT.quantity * 6, "barrelHeavy"); + public static final MaterialShapes LIGHTRECEIVER = new MaterialShapes(INGOT.quantity * 4, "receiverLight"); + public static final MaterialShapes HEAVYRECEIVER = new MaterialShapes(INGOT.quantity * 9, "receiverHeavy"); + public static final MaterialShapes MECHANISM = new MaterialShapes(INGOT.quantity * 4, "gunMechanism"); + public static final MaterialShapes STOCK = new MaterialShapes(INGOT.quantity * 4, "stock"); + public static final MaterialShapes GRIP = new MaterialShapes(INGOT.quantity * 2, "grip"); public static void registerCompatShapes() { if(Compat.isModLoaded(Compat.MOD_GT6)) { - new MaterialShapes(BLOCK.q(1), "blockDust"); - new MaterialShapes(BLOCK.q(1), "blockGem"); - new MaterialShapes(BLOCK.q(1), "blockIngot"); - new MaterialShapes(BLOCK.q(1), "blockSolid"); - new MaterialShapes(INGOT.q(9, 8), "crushed"); - new MaterialShapes(INGOT.q(9, 72), "crushedTiny"); - new MaterialShapes(INGOT.q(10, 8), "crushedPurified"); - new MaterialShapes(INGOT.q(10, 72), "crushedPurifiedTiny"); - new MaterialShapes(INGOT.q(11, 8), "crushedCentrifuged"); - new MaterialShapes(INGOT.q(11, 72), "crushedCentrifugedTiny"); - new MaterialShapes(INGOT.q(1, 4), "dustSmall"); - new MaterialShapes(INGOT.q(1, 72), "dustDiv72"); - new MaterialShapes(INGOT.q(10, 9), "dustImpure"); - new MaterialShapes(INGOT.q(11, 9), "dustPure"); - new MaterialShapes(INGOT.q(12, 9), "dustRefined"); + new MaterialShapes(BLOCK.q(1), "blockDust").noAutogen(); + new MaterialShapes(BLOCK.q(1), "blockGem").noAutogen(); + new MaterialShapes(BLOCK.q(1), "blockIngot").noAutogen(); + new MaterialShapes(BLOCK.q(1), "blockSolid").noAutogen(); + new MaterialShapes(INGOT.q(9, 8), "crushed").noAutogen(); + new MaterialShapes(INGOT.q(9, 72), "crushedTiny").noAutogen(); + new MaterialShapes(INGOT.q(10, 8), "crushedPurified").noAutogen(); + new MaterialShapes(INGOT.q(10, 72), "crushedPurifiedTiny").noAutogen(); + new MaterialShapes(INGOT.q(11, 8), "crushedCentrifuged").noAutogen(); + new MaterialShapes(INGOT.q(11, 72), "crushedCentrifugedTiny").noAutogen(); + new MaterialShapes(INGOT.q(1, 4), "dustSmall").noAutogen(); + new MaterialShapes(INGOT.q(1, 72), "dustDiv72").noAutogen(); + new MaterialShapes(INGOT.q(10, 9), "dustImpure").noAutogen(); + new MaterialShapes(INGOT.q(11, 9), "dustPure").noAutogen(); + new MaterialShapes(INGOT.q(12, 9), "dustRefined").noAutogen(); } } + public boolean noAutogen = false; private int quantity; public final String[] prefixes; @@ -65,6 +79,12 @@ public class MaterialShapes { allShapes.add(this); } + /** Disables recipe autogen for special cases like compatibility prefixes (TINY, ORENETHER), technical prefixes (ANY) or prefixes that have to be handled manually (ORE) */ + public MaterialShapes noAutogen() { + this.noAutogen = true; + return this; + } + public int q(int amount) { return this.quantity * amount; } @@ -76,4 +96,8 @@ public class MaterialShapes { public String name() { return (prefixes != null && prefixes.length > 0) ? prefixes[0] : "unknown"; } + + public String make(NTMMaterial mat) { + return this.name() + mat.names[0]; + } } diff --git a/src/main/java/com/hbm/inventory/material/Mats.java b/src/main/java/com/hbm/inventory/material/Mats.java index 3739f9fd1..dd1bee085 100644 --- a/src/main/java/com/hbm/inventory/material/Mats.java +++ b/src/main/java/com/hbm/inventory/material/Mats.java @@ -131,25 +131,27 @@ public class Mats { public static final NTMMaterial MAT_OSMIRIDIUM = makeSmeltable(7699, OSMIRIDIUM, 0xDBE3EF, 0x7891BE, 0xACBDD9).setShapes(NUGGET, INGOT, CASTPLATE, WELDEDPLATE).m(); //Alloys - public static final NTMMaterial MAT_STEEL = makeSmeltable(_AS + 0, STEEL, 0xAFAFAF, 0x0F0F0F, 0x4A4A4A).setShapes(DUSTTINY, BOLT, WIRE, INGOT, DUST, PLATE, CASTPLATE, WELDEDPLATE, SHELL, PIPE, BLOCK, HEAVY_COMPONENT).m(); - public static final NTMMaterial MAT_MINGRADE = makeSmeltable(_AS + 1, MINGRADE, 0xFFBA7D, 0xAF1700, 0xE44C0F).setShapes(WIRE, INGOT, DUST, BLOCK).m(); - public static final NTMMaterial MAT_ALLOY = makeSmeltable(_AS + 2, ALLOY, 0xFF8330, 0x700000, 0xFF7318).setShapes(WIRE, INGOT, DUST, DENSEWIRE, PLATE, CASTPLATE, BLOCK, HEAVY_COMPONENT).m(); - public static final NTMMaterial MAT_DURA = makeSmeltable(_AS + 3, DURA, 0x183039, 0x030B0B, 0x376373).setShapes(BOLT, INGOT, DUST, PIPE, BLOCK).m(); - public static final NTMMaterial MAT_SATURN = makeSmeltable(_AS + 4, BIGMT, 0x4DA3AF, 0x00000C, 0x4DA3AF).setShapes(INGOT, DUST, PLATE, CASTPLATE, BLOCK).m(); - public static final NTMMaterial MAT_DESH = makeSmeltable(_AS + 12, DESH, 0xFF6D6D, 0x720000, 0xF22929).setShapes(INGOT, DUST, CASTPLATE, BLOCK, HEAVY_COMPONENT).m(); - public static final NTMMaterial MAT_STAR = makeSmeltable(_AS + 5, STAR, 0xCCCCEA, 0x11111A, 0xA5A5D3).setShapes(INGOT, DUST, DENSEWIRE, BLOCK).m(); - public static final NTMMaterial MAT_FERRO = makeSmeltable(_AS + 7, FERRO, 0xB7B7C9, 0x101022, 0x6B6B8B).setShapes(INGOT).m(); - public static final NTMMaterial MAT_TCALLOY = makeSmeltable(_AS + 6, TCALLOY, 0xD4D6D6, 0x323D3D, 0x9CA6A6).setShapes(INGOT, DUST, CASTPLATE, WELDEDPLATE, HEAVY_COMPONENT).m(); - public static final NTMMaterial MAT_CDALLOY = makeSmeltable(_AS + 13, CDALLOY, 0xF7DF8F, 0x604308, 0xFBD368).setShapes(INGOT, CASTPLATE, WELDEDPLATE, HEAVY_COMPONENT).m(); - public static final NTMMaterial MAT_BBRONZE = makeSmeltable(_AS + 16, BBRONZE, 0xE19A69, 0x485353, 0x987D65).setShapes(INGOT, CASTPLATE).m(); - public static final NTMMaterial MAT_ABRONZE = makeSmeltable(_AS + 17, ABRONZE, 0xDB9462, 0x203331, 0x77644D).setShapes(INGOT, CASTPLATE).m(); - public static final NTMMaterial MAT_BSCCO = makeSmeltable(_AS + 18, BSCCO, 0x767BF1, 0x000000, 0x5E62C0).setShapes(INGOT, DENSEWIRE).m(); - public static final NTMMaterial MAT_MAGTUNG = makeSmeltable(_AS + 8, MAGTUNG, 0x22A2A2, 0x0F0F0F, 0x22A2A2).setShapes(WIRE, INGOT, DUST, DENSEWIRE, BLOCK).m(); - public static final NTMMaterial MAT_CMB = makeSmeltable(_AS + 9, CMB, 0x6F6FB4, 0x000011, 0x6F6FB4).setShapes(INGOT, DUST, PLATE, CASTPLATE, WELDEDPLATE, BLOCK).m(); - public static final NTMMaterial MAT_DNT = makeSmeltable(_AS + 15, DNT, 0x7582B9, 0x16000E, 0x455289).setShapes(INGOT, DUST, DENSEWIRE, BLOCK).m(); - public static final NTMMaterial MAT_FLUX = makeAdditive(_AS + 10, df("Flux"), 0xF1E0BB, 0x6F6256, 0xDECCAD).setShapes(DUST).n(); - public static final NTMMaterial MAT_SLAG = makeSmeltable(_AS + 11, SLAG, 0x554940, 0x34281F, 0x6C6562).setShapes(BLOCK).n(); - public static final NTMMaterial MAT_MUD = makeSmeltable(_AS + 14, MUD, 0xBCB5A9, 0x481213, 0x96783B).setShapes(INGOT).n(); + public static final NTMMaterial MAT_STEEL = makeSmeltable(_AS + 0, STEEL, 0xAFAFAF, 0x0F0F0F, 0x4A4A4A).setShapes(DUSTTINY, BOLT, WIRE, INGOT, DUST, PLATE, CASTPLATE, WELDEDPLATE, SHELL, PIPE, BLOCK, HEAVY_COMPONENT).m(); + public static final NTMMaterial MAT_MINGRADE = makeSmeltable(_AS + 1, MINGRADE, 0xFFBA7D, 0xAF1700, 0xE44C0F).setShapes(WIRE, INGOT, DUST, BLOCK).m(); + public static final NTMMaterial MAT_ALLOY = makeSmeltable(_AS + 2, ALLOY, 0xFF8330, 0x700000, 0xFF7318).setShapes(WIRE, INGOT, DUST, DENSEWIRE, PLATE, CASTPLATE, BLOCK, HEAVY_COMPONENT).m(); + public static final NTMMaterial MAT_DURA = makeSmeltable(_AS + 3, DURA, 0x183039, 0x030B0B, 0x376373).setShapes(BOLT, INGOT, DUST, PIPE, BLOCK).m(); + public static final NTMMaterial MAT_DESH = makeSmeltable(_AS + 12, DESH, 0xFF6D6D, 0x720000, 0xF22929).setShapes(INGOT, DUST, CASTPLATE, BLOCK, HEAVY_COMPONENT).m(); + public static final NTMMaterial MAT_STAR = makeSmeltable(_AS + 5, STAR, 0xCCCCEA, 0x11111A, 0xA5A5D3).setShapes(INGOT, DUST, DENSEWIRE, BLOCK).m(); + public static final NTMMaterial MAT_FERRO = makeSmeltable(_AS + 7, FERRO, 0xB7B7C9, 0x101022, 0x6B6B8B).setShapes(INGOT).m(); + public static final NTMMaterial MAT_TCALLOY = makeSmeltable(_AS + 6, TCALLOY, 0xD4D6D6, 0x323D3D, 0x9CA6A6).setShapes(INGOT, DUST, CASTPLATE, WELDEDPLATE, HEAVY_COMPONENT).m(); + public static final NTMMaterial MAT_CDALLOY = makeSmeltable(_AS + 13, CDALLOY, 0xF7DF8F, 0x604308, 0xFBD368).setShapes(INGOT, CASTPLATE, WELDEDPLATE, HEAVY_COMPONENT).m(); + public static final NTMMaterial MAT_BBRONZE = makeSmeltable(_AS + 16, BBRONZE, 0xE19A69, 0x485353, 0x987D65).setShapes(INGOT, CASTPLATE).m(); + public static final NTMMaterial MAT_ABRONZE = makeSmeltable(_AS + 17, ABRONZE, 0xDB9462, 0x203331, 0x77644D).setShapes(INGOT, CASTPLATE).m(); + public static final NTMMaterial MAT_BSCCO = makeSmeltable(_AS + 18, BSCCO, 0x767BF1, 0x000000, 0x5E62C0).setShapes(INGOT, DENSEWIRE).m(); + public static final NTMMaterial MAT_MAGTUNG = makeSmeltable(_AS + 8, MAGTUNG, 0x22A2A2, 0x0F0F0F, 0x22A2A2).setShapes(WIRE, INGOT, DUST, DENSEWIRE, BLOCK).m(); + public static final NTMMaterial MAT_CMB = makeSmeltable(_AS + 9, CMB, 0x6F6FB4, 0x000011, 0x6F6FB4).setShapes(INGOT, DUST, PLATE, CASTPLATE, WELDEDPLATE, BLOCK).m(); + public static final NTMMaterial MAT_DNT = makeSmeltable(_AS + 15, DNT, 0x7582B9, 0x16000E, 0x455289).setShapes(INGOT, DUST, DENSEWIRE, BLOCK).m(); + public static final NTMMaterial MAT_FLUX = makeAdditive(_AS + 10, df("Flux"), 0xF1E0BB, 0x6F6256, 0xDECCAD).setShapes(DUST).n(); + public static final NTMMaterial MAT_SLAG = makeSmeltable(_AS + 11, SLAG, 0x554940, 0x34281F, 0x6C6562).setShapes(BLOCK).n(); + public static final NTMMaterial MAT_MUD = makeSmeltable(_AS + 14, MUD, 0xBCB5A9, 0x481213, 0x96783B).setShapes(INGOT).n(); + public static final NTMMaterial MAT_GUNMETAL = makeSmeltable(_AS + 19, GUNMETAL, 0xFFEF3F, 0xAD3600, 0xF9C62C).setShapes(INGOT, LIGHTBARREL, HEAVYBARREL, LIGHTRECEIVER, HEAVYRECEIVER, MECHANISM, STOCK, GRIP).n(); + public static final NTMMaterial MAT_WEAPONSTEEL = makeSmeltable(_AS + 20, WEAPONSTEEL, 0xA0A0A0, 0x000000, 0x808080).setShapes(INGOT, LIGHTBARREL, HEAVYBARREL, LIGHTRECEIVER, HEAVYRECEIVER, MECHANISM, STOCK, GRIP).n(); + public static final NTMMaterial MAT_SATURN = makeSmeltable(_AS + 4, BIGMT, 0x3AC4DA, 0x09282C, 0x30A4B7).setShapes(INGOT, PLATE, CASTPLATE, BLOCK, LIGHTBARREL, HEAVYBARREL, LIGHTRECEIVER, HEAVYRECEIVER, MECHANISM, STOCK, GRIP).m(); //Extension public static final NTMMaterial MAT_RAREEARTH = makeNonSmeltable(_ES + 00, RAREEARTH, 0xC1BDBD, 0x384646, 0x7B7F7F).setShapes(FRAGMENT, INGOT).n(); diff --git a/src/main/java/com/hbm/inventory/recipes/ArcFurnaceRecipes.java b/src/main/java/com/hbm/inventory/recipes/ArcFurnaceRecipes.java index c32d31a52..800bd9ac6 100644 --- a/src/main/java/com/hbm/inventory/recipes/ArcFurnaceRecipes.java +++ b/src/main/java/com/hbm/inventory/recipes/ArcFurnaceRecipes.java @@ -82,14 +82,16 @@ public class ArcFurnaceRecipes extends SerializableRecipe { NTMMaterial convert = material.smeltsInto; if(convert.smeltable == SmeltingBehavior.SMELTABLE) { for(MaterialShapes shape : MaterialShapes.allShapes) { - String name = shape.name() + material.names[0]; - if(!OreDictionary.getOres(name).isEmpty()) { - OreDictStack dict = new OreDictStack(name); - ArcFurnaceRecipe recipe = recipes.get(dict); - if(recipe == null) recipe = new ArcFurnaceRecipe(); - if(recipe.fluidOutput == null) { - recipe.fluid(new MaterialStack(convert, (int) (shape.q(1) * out / in))); - recipes.put(dict, recipe); + if(!shape.noAutogen) { + String name = shape.name() + material.names[0]; + if(!OreDictionary.getOres(name).isEmpty()) { + OreDictStack dict = new OreDictStack(name); + ArcFurnaceRecipe recipe = recipes.get(dict); + if(recipe == null) recipe = new ArcFurnaceRecipe(); + if(recipe.fluidOutput == null) { + recipe.fluid(new MaterialStack(convert, (int) (shape.q(1) * out / in))); + recipes.put(dict, recipe); + } } } } diff --git a/src/main/java/com/hbm/inventory/recipes/CrucibleRecipes.java b/src/main/java/com/hbm/inventory/recipes/CrucibleRecipes.java index 919efab4f..fe489691e 100644 --- a/src/main/java/com/hbm/inventory/recipes/CrucibleRecipes.java +++ b/src/main/java/com/hbm/inventory/recipes/CrucibleRecipes.java @@ -258,14 +258,15 @@ public class CrucibleRecipes extends SerializableRecipe { NTMMaterial convert = material.smeltsInto; if(convert.smeltable == SmeltingBehavior.SMELTABLE || convert.smeltable == SmeltingBehavior.ADDITIVE) for(MaterialShapes shape : MaterialShapes.allShapes) { //TODO: buffer these - - String name = shape.name() + material.names[0]; - List ores = OreDictionary.getOres(name); - - if(!ores.isEmpty()) { - List stacks = new ArrayList(); - stacks.add(ItemScraps.create(new MaterialStack(convert, (int) (shape.q(1) * out / in)), true)); - map.put(new OreDictStack(name), stacks); + if(!shape.noAutogen) { + String name = shape.make(material); + List ores = OreDictionary.getOres(name); + + if(!ores.isEmpty()) { + List stacks = new ArrayList(); + stacks.add(ItemScraps.create(new MaterialStack(convert, (int) (shape.q(1) * out / in)), true)); + map.put(new OreDictStack(name), stacks); + } } } } diff --git a/src/main/java/com/hbm/inventory/recipes/PressRecipes.java b/src/main/java/com/hbm/inventory/recipes/PressRecipes.java index db090d982..eab661cfc 100644 --- a/src/main/java/com/hbm/inventory/recipes/PressRecipes.java +++ b/src/main/java/com/hbm/inventory/recipes/PressRecipes.java @@ -10,7 +10,6 @@ import static com.hbm.inventory.OreDictManager.*; import com.google.gson.JsonElement; import com.google.gson.JsonObject; import com.google.gson.stream.JsonWriter; -import com.hbm.inventory.OreNames; import com.hbm.inventory.RecipesCommon.AStack; import com.hbm.inventory.RecipesCommon.ComparableStack; import com.hbm.inventory.RecipesCommon.OreDictStack; @@ -88,7 +87,7 @@ public class PressRecipes extends SerializableRecipe { for(NTMMaterial mat : Mats.orderedList) { if(mat.shapes.contains(MaterialShapes.WIRE) && mat.shapes.contains(MaterialShapes.INGOT)) { - makeRecipe(StampType.WIRE, new OreDictStack(OreNames.INGOT + mat.names[0]), new ItemStack(ModItems.wire_fine, 8, mat.id)); + makeRecipe(StampType.WIRE, new OreDictStack(MaterialShapes.INGOT.make(mat)), new ItemStack(ModItems.wire_fine, 8, mat.id)); } } diff --git a/src/main/java/com/hbm/inventory/recipes/anvil/AnvilRecipes.java b/src/main/java/com/hbm/inventory/recipes/anvil/AnvilRecipes.java index 8ca863583..2f52054d6 100644 --- a/src/main/java/com/hbm/inventory/recipes/anvil/AnvilRecipes.java +++ b/src/main/java/com/hbm/inventory/recipes/anvil/AnvilRecipes.java @@ -6,7 +6,6 @@ import java.util.List; import com.hbm.blocks.ModBlocks; import com.hbm.config.GeneralConfig; import com.hbm.inventory.OreDictManager; -import com.hbm.inventory.OreNames; import com.hbm.inventory.OreDictManager.DictFrame; import static com.hbm.inventory.OreDictManager.*; @@ -110,8 +109,8 @@ public class AnvilRecipes { new ItemStack(ModItems.stamp_titanium_flat), new ItemStack(ModItems.stamp_obsidian_flat) })); - smithingRecipes.add(new AnvilSmithingMold(8, new OreDictStack(STEEL.shell()), new OreDictStack(OreNames.SHELL))); - smithingRecipes.add(new AnvilSmithingMold(9, new OreDictStack(STEEL.pipe()), new OreDictStack(OreNames.PIPE))); + smithingRecipes.add(new AnvilSmithingMold(8, new OreDictStack(STEEL.shell()), new OreDictStack(MaterialShapes.SHELL.name()))); + smithingRecipes.add(new AnvilSmithingMold(9, new OreDictStack(STEEL.pipe()), new OreDictStack(MaterialShapes.PIPE.name()))); smithingRecipes.add(new AnvilSmithingMold(10, new OreDictStack(IRON.ingot(), 9), new OreDictStack("ingot", 9))); smithingRecipes.add(new AnvilSmithingMold(11, new OreDictStack(IRON.plate(), 9), new OreDictStack("plate", 9))); smithingRecipes.add(new AnvilSmithingMold(12, new OreDictStack(IRON.block()), new OreDictStack("block"))); @@ -152,7 +151,7 @@ public class AnvilRecipes { for(NTMMaterial mat : Mats.orderedList) { if(mat.shapes.contains(MaterialShapes.WIRE) && mat.shapes.contains(MaterialShapes.INGOT)) { - constructionRecipes.add(new AnvilConstructionRecipe(new OreDictStack(OreNames.INGOT + mat.names[0]), new AnvilOutput(new ItemStack(ModItems.wire_fine, 8, mat.id))).setTier(4)); + constructionRecipes.add(new AnvilConstructionRecipe(new OreDictStack(MaterialShapes.INGOT.name() + mat.names[0]), new AnvilOutput(new ItemStack(ModItems.wire_fine, 8, mat.id))).setTier(4)); } } diff --git a/src/main/java/com/hbm/inventory/recipes/anvil/AnvilSmithingMold.java b/src/main/java/com/hbm/inventory/recipes/anvil/AnvilSmithingMold.java index 5dd1bef82..11a1693a3 100644 --- a/src/main/java/com/hbm/inventory/recipes/anvil/AnvilSmithingMold.java +++ b/src/main/java/com/hbm/inventory/recipes/anvil/AnvilSmithingMold.java @@ -2,10 +2,10 @@ package com.hbm.inventory.recipes.anvil; import java.util.List; -import com.hbm.inventory.OreNames; import com.hbm.inventory.RecipesCommon.AStack; import com.hbm.inventory.RecipesCommon.ComparableStack; import com.hbm.inventory.RecipesCommon.OreDictStack; +import com.hbm.inventory.material.MaterialShapes; import com.hbm.items.ModItems; import com.hbm.util.ItemStackUtil; @@ -34,7 +34,7 @@ public class AnvilSmithingMold extends AnvilSmithingRecipe { for(String name : names) { - for(String otherPrefix : OreNames.prefixes) { + for(MaterialShapes shape : MaterialShapes.allShapes) for(String otherPrefix : shape.prefixes) { if(otherPrefix.length() > matchesPrefix.name.length() && name.startsWith(otherPrefix)) { return false; //ignore if there's a longer prefix that matches (i.e. a more accurate match) } diff --git a/src/main/java/com/hbm/items/ItemCustomLore.java b/src/main/java/com/hbm/items/ItemCustomLore.java index b8598c288..15dab0dd7 100644 --- a/src/main/java/com/hbm/items/ItemCustomLore.java +++ b/src/main/java/com/hbm/items/ItemCustomLore.java @@ -51,23 +51,27 @@ public class ItemCustomLore extends Item { if(this == ModItems.undefined) { - if(player.worldObj.rand.nextInt(10) == 0) { - list.add(EnumChatFormatting.DARK_RED + "UNDEFINED"); - } else { - Random rand = new Random(System.currentTimeMillis() / 500); - - if(setSize == 0) - setSize = Item.itemRegistry.getKeys().size(); - - int r = rand.nextInt(setSize); - - Item item = Item.getItemById(r); - - if(item != null) { - list.add(new ItemStack(item).getDisplayName()); + try { + if(player.worldObj.rand.nextInt(10) == 0) { + list.add(EnumChatFormatting.DARK_RED + "UNDEFINED"); } else { - list.add(EnumChatFormatting.RED + "ERROR #" + r); + Random rand = new Random(System.currentTimeMillis() / 500); + + if(setSize == 0) + setSize = Item.itemRegistry.getKeys().size(); + + int r = rand.nextInt(setSize); + + Item item = Item.getItemById(r); + + if(item != null) { + list.add(new ItemStack(item).getDisplayName()); + } else { + list.add(EnumChatFormatting.RED + "ERROR #" + r); + } } + } catch(Exception ex) { + list.add(EnumChatFormatting.DARK_RED + "UNDEFINED"); } } } diff --git a/src/main/java/com/hbm/items/ModItems.java b/src/main/java/com/hbm/items/ModItems.java index fc268d07a..f30ea49fc 100644 --- a/src/main/java/com/hbm/items/ModItems.java +++ b/src/main/java/com/hbm/items/ModItems.java @@ -768,6 +768,13 @@ public class ModItems { public static Item heavy_component; public static Item wire_fine; public static Item wire_dense; + public static Item part_barrel_light; + public static Item part_barrel_heavy; + public static Item part_receiver_light; + public static Item part_receiver_heavy; + public static Item part_mechanism; + public static Item part_stock; + public static Item part_grip; public static Item part_lithium; public static Item part_beryllium; @@ -3198,6 +3205,14 @@ public class ModItems { .aot(Mats.MAT_CARBON, "wire_carbon").aot(Mats.MAT_SCHRABIDIUM, "wire_schrabidium") .aot(Mats.MAT_MAGTUNG, "wire_magnetized_tungsten").setUnlocalizedName("wire_fine").setCreativeTab(MainRegistry.partsTab).setTextureName(RefStrings.MODID + ":wire_fine"); wire_dense = new ItemAutogen(MaterialShapes.DENSEWIRE).setUnlocalizedName("wire_dense").setCreativeTab(MainRegistry.partsTab).setTextureName(RefStrings.MODID + ":wire_dense"); + + part_barrel_light = new ItemAutogen(MaterialShapes.LIGHTBARREL).setUnlocalizedName("part_barrel_light").setCreativeTab(MainRegistry.partsTab).setTextureName(RefStrings.MODID + ":part_barrel_light"); + part_barrel_heavy = new ItemAutogen(MaterialShapes.HEAVYBARREL).setUnlocalizedName("part_barrel_heavy").setCreativeTab(MainRegistry.partsTab).setTextureName(RefStrings.MODID + ":part_barrel_heavy"); + part_receiver_light = new ItemAutogen(MaterialShapes.LIGHTRECEIVER).setUnlocalizedName("part_receiver_light").setCreativeTab(MainRegistry.partsTab).setTextureName(RefStrings.MODID + ":part_receiver_light"); + part_receiver_heavy = new ItemAutogen(MaterialShapes.HEAVYRECEIVER).setUnlocalizedName("part_receiver_heavy").setCreativeTab(MainRegistry.partsTab).setTextureName(RefStrings.MODID + ":part_receiver_heavy"); + part_mechanism = new ItemAutogen(MaterialShapes.MECHANISM).setUnlocalizedName("part_mechanism").setCreativeTab(MainRegistry.partsTab).setTextureName(RefStrings.MODID + ":part_mechanism"); + part_stock = new ItemAutogen(MaterialShapes.STOCK).setUnlocalizedName("part_stock").setCreativeTab(MainRegistry.partsTab).setTextureName(RefStrings.MODID + ":part_stock"); + part_grip = new ItemAutogen(MaterialShapes.GRIP).setUnlocalizedName("part_grip").setCreativeTab(MainRegistry.partsTab).setTextureName(RefStrings.MODID + ":part_grip"); part_lithium = new Item().setUnlocalizedName("part_lithium").setCreativeTab(MainRegistry.controlTab).setTextureName(RefStrings.MODID + ":part_lithium"); part_beryllium = new Item().setUnlocalizedName("part_beryllium").setCreativeTab(MainRegistry.controlTab).setTextureName(RefStrings.MODID + ":part_beryllium"); @@ -6009,15 +6024,9 @@ public class ModItems { GameRegistry.registerItem(motor_desh, motor_desh.getUnlocalizedName()); GameRegistry.registerItem(motor_bismuth, motor_bismuth.getUnlocalizedName()); GameRegistry.registerItem(centrifuge_element, centrifuge_element.getUnlocalizedName()); - //GameRegistry.registerItem(centrifuge_tower, centrifuge_tower.getUnlocalizedName()); - //GameRegistry.registerItem(magnet_dee, magnet_dee.getUnlocalizedName()); GameRegistry.registerItem(magnet_circular, magnet_circular.getUnlocalizedName()); - //GameRegistry.registerItem(cyclotron_tower, cyclotron_tower.getUnlocalizedName()); GameRegistry.registerItem(reactor_core, reactor_core.getUnlocalizedName()); GameRegistry.registerItem(rtg_unit, rtg_unit.getUnlocalizedName()); - //GameRegistry.registerItem(thermo_unit_empty, thermo_unit_empty.getUnlocalizedName()); - //GameRegistry.registerItem(thermo_unit_endo, thermo_unit_endo.getUnlocalizedName()); - //GameRegistry.registerItem(thermo_unit_exo, thermo_unit_exo.getUnlocalizedName()); GameRegistry.registerItem(levitation_unit, levitation_unit.getUnlocalizedName()); GameRegistry.registerItem(pipes_steel, pipes_steel.getUnlocalizedName()); GameRegistry.registerItem(drill_titanium, drill_titanium.getUnlocalizedName()); @@ -6032,6 +6041,13 @@ public class ModItems { GameRegistry.registerItem(parts_legendary, parts_legendary.getUnlocalizedName()); GameRegistry.registerItem(gear_large, gear_large.getUnlocalizedName()); GameRegistry.registerItem(sawblade, sawblade.getUnlocalizedName()); + GameRegistry.registerItem(part_barrel_light, part_barrel_light.getUnlocalizedName()); + GameRegistry.registerItem(part_barrel_heavy, part_barrel_heavy.getUnlocalizedName()); + GameRegistry.registerItem(part_receiver_light, part_receiver_light.getUnlocalizedName()); + GameRegistry.registerItem(part_receiver_heavy, part_receiver_heavy.getUnlocalizedName()); + GameRegistry.registerItem(part_mechanism, part_mechanism.getUnlocalizedName()); + GameRegistry.registerItem(part_stock, part_stock.getUnlocalizedName()); + GameRegistry.registerItem(part_grip, part_grip.getUnlocalizedName()); //Plant Products GameRegistry.registerItem(plant_item, plant_item.getUnlocalizedName()); diff --git a/src/main/java/com/hbm/tileentity/machine/TileEntityMachineSolderingStation.java b/src/main/java/com/hbm/tileentity/machine/TileEntityMachineSolderingStation.java index 2fb4a1380..be2d34aa9 100644 --- a/src/main/java/com/hbm/tileentity/machine/TileEntityMachineSolderingStation.java +++ b/src/main/java/com/hbm/tileentity/machine/TileEntityMachineSolderingStation.java @@ -3,6 +3,7 @@ package com.hbm.tileentity.machine; import java.util.List; import com.hbm.blocks.ModBlocks; +import com.hbm.interfaces.IControlReceiver; import com.hbm.inventory.UpgradeManager; import com.hbm.inventory.RecipesCommon.AStack; import com.hbm.inventory.container.ContainerMachineSolderingStation; @@ -38,11 +39,12 @@ import net.minecraft.util.EnumChatFormatting; import net.minecraft.world.World; import net.minecraftforge.common.util.ForgeDirection; -public class TileEntityMachineSolderingStation extends TileEntityMachineBase implements IEnergyReceiverMK2, IFluidStandardReceiver, IGUIProvider, IUpgradeInfoProvider, IFluidCopiable { +public class TileEntityMachineSolderingStation extends TileEntityMachineBase implements IEnergyReceiverMK2, IFluidStandardReceiver, IControlReceiver, IGUIProvider, IUpgradeInfoProvider, IFluidCopiable { public long power; public long maxPower = 2_000; public long consumption; + public boolean collisionPrevention = false; public int progress; public int processTime = 1; @@ -140,6 +142,7 @@ public class TileEntityMachineSolderingStation extends TileEntityMachineBase imp data.setLong("consumption", consumption); data.setInteger("progress", progress); data.setInteger("processTime", processTime); + data.setBoolean("collisionPrevention", collisionPrevention); if(recipe != null) { data.setInteger("display", Item.getIdFromItem(recipe.output.getItem())); data.setInteger("displayMeta", recipe.output.getItemDamage()); @@ -158,7 +161,7 @@ public class TileEntityMachineSolderingStation extends TileEntityMachineBase imp if(this.tank.getFill() < recipe.fluid.fill) return false; } - if(recipe.fluid == null && this.tank.getFill() > 0) return false; + if(collisionPrevention && recipe.fluid == null && this.tank.getFill() > 0) return false; if(slots[6] != null) { if(slots[6].getItem() != recipe.output.getItem()) return false; @@ -248,6 +251,7 @@ public class TileEntityMachineSolderingStation extends TileEntityMachineBase imp this.consumption = nbt.getLong("consumption"); this.progress = nbt.getInteger("progress"); this.processTime = nbt.getInteger("processTime"); + this.collisionPrevention = nbt.getBoolean("collisionPrevention"); if(nbt.hasKey("display")) { this.display = new ItemStack(Item.getItemById(nbt.getInteger("display")), 1, nbt.getInteger("displayMeta")); @@ -266,6 +270,7 @@ public class TileEntityMachineSolderingStation extends TileEntityMachineBase imp this.maxPower = nbt.getLong("maxPower"); this.progress = nbt.getInteger("progress"); this.processTime = nbt.getInteger("processTime"); + this.collisionPrevention = nbt.getBoolean("collisionPrevention"); tank.readFromNBT(nbt, "t"); } @@ -277,6 +282,7 @@ public class TileEntityMachineSolderingStation extends TileEntityMachineBase imp nbt.setLong("maxPower", maxPower); nbt.setInteger("progress", progress); nbt.setInteger("processTime", processTime); + nbt.setBoolean("collisionPrevention", collisionPrevention); tank.writeToNBT(nbt, "t"); } @@ -370,4 +376,15 @@ public class TileEntityMachineSolderingStation extends TileEntityMachineBase imp public FluidTank getTankToPaste() { return tank; } + + @Override + public boolean hasPermission(EntityPlayer player) { + return this.isUseableByPlayer(player); + } + + @Override + public void receiveControl(NBTTagCompound data) { + this.collisionPrevention = !this.collisionPrevention; + this.markDirty(); + } } diff --git a/src/main/resources/assets/hbm/lang/de_DE.lang b/src/main/resources/assets/hbm/lang/de_DE.lang index 89177e7b7..0df5c046d 100644 --- a/src/main/resources/assets/hbm/lang/de_DE.lang +++ b/src/main/resources/assets/hbm/lang/de_DE.lang @@ -843,6 +843,7 @@ hbmmat.gold=Gold hbmmat.gold198=Gold-198 hbmmat.graphene=Graphen hbmmat.graphite=Graphit +hbmmat.gunmetal=Maschinenmetall hbmmat.hematite=Hämatit hbmmat.iron=Eisen hbmmat.lanthanum=Lanthan @@ -903,6 +904,7 @@ hbmmat.uranium233=Uran-233 hbmmat.uranium235=Uran-235 hbmmat.uranium238=Uran-238 hbmmat.watzmud=Giftiger Schlamm +hbmmat.weaponsteel=Waffenstahl hbmmat.whitephosphorus=Weißer Phosphor hbmmat.workersalloy=Desh hbmmat.wroughtiron=Schmiedeeisen @@ -2774,6 +2776,8 @@ item.page_of_.page6.name=Seite 6 item.page_of_.page7.name=Seite 7 item.page_of_.page8.name=Seite 8 item.pancake.name=Pfannkuchen aus Altmetall, Nägeln und Edelsteinpulver +item.part_barrel_heavy.name=Schwerer %slauf +item.part_barrel_light.name=Leichter %slauf item.part_beryllium.name=Berylliumstaubkiste item.part_carbon.name=Kohlenstoffstaubkiste item.part_copper.name=Kupferstaubkiste @@ -2782,8 +2786,13 @@ item.part_generic.lde.name=Leichtbauteil item.part_generic.piston_electric.name=Electrischer Kolben item.part_generic.piston_hydraulic.name=Hydraulischer Kolben item.part_generic.piston_pneumatic.name=Pneumatischer Kolben +item.part_grip.name=%sgriff item.part_lithium.name=Lithiumstaubkiste +item.part_mechanism.name=%smechanismus item.part_plutonium.name=Plutoniumstaubkiste +item.part_receiver_heavy.name=Schwerer %sverschluss +item.part_receiver_light.name=Leichter %sverschluss +item.part_stock.name=%sschaft item.particle_aelectron.name=Positronenkapsel item.particle_amat.name=Antimaterienkapsel item.particle_aproton.name=Antiprotonenkapsel diff --git a/src/main/resources/assets/hbm/lang/en_US.lang b/src/main/resources/assets/hbm/lang/en_US.lang index be8bb0358..8c8d24faf 100644 --- a/src/main/resources/assets/hbm/lang/en_US.lang +++ b/src/main/resources/assets/hbm/lang/en_US.lang @@ -1565,6 +1565,7 @@ hbmmat.gold=Gold hbmmat.gold198=Gold-198 hbmmat.graphene=Graphene hbmmat.graphite=Graphite +hbmmat.gunmetal=Gunmetal hbmmat.hematite=Hematite hbmmat.iron=Iron hbmmat.lanthanum=Lanthanium @@ -1625,6 +1626,7 @@ hbmmat.uranium233=Uranium-233 hbmmat.uranium235=Uranium-235 hbmmat.uranium238=Uranium-238 hbmmat.watzmud=Poisonous Mud +hbmmat.weaponsteel=Weapon Steel hbmmat.whitephosphorus=White Phosphorus hbmmat.workersalloy=Desh hbmmat.wroughtiron=Wroght Iron @@ -3626,6 +3628,8 @@ item.page_of_.page6.name=Page 6 item.page_of_.page7.name=Page 7 item.page_of_.page8.name=Page 8 item.pancake.name=Pancake made from Scrap Metal, Nails and Gem Dust +item.part_barrel_heavy.name=Heavy %s Barrel +item.part_barrel_light.name=Light %s Barrel item.part_beryllium.name=Box of Beryllium Dust item.part_carbon.name=Box of Carbon Dust item.part_copper.name=Box of Copper Dust @@ -3634,8 +3638,13 @@ item.part_generic.lde.name=Low-Density Element item.part_generic.piston_electric.name=Electric Piston item.part_generic.piston_hydraulic.name=Hydraulic Piston item.part_generic.piston_pneumatic.name=Pneumatic Piston +item.part_grip.name=%s Grip item.part_lithium.name=Box of Lithium Dust +item.part_mechanism.name=%s Mechanism item.part_plutonium.name=Box of Plutonium Dust +item.part_receiver_heavy.name=Heavy %s Receiver +item.part_receiver_light.name=Light %s Receiver +item.part_stock.name=%s Stock item.particle_aelectron.name=Positron Capsule item.particle_amat.name=Antimatter Capsule item.particle_aproton.name=Antiproton Capsule diff --git a/src/main/resources/assets/hbm/textures/gui/processing/gui_soldering_station.png b/src/main/resources/assets/hbm/textures/gui/processing/gui_soldering_station.png index cb3081743..b99c7f982 100644 Binary files a/src/main/resources/assets/hbm/textures/gui/processing/gui_soldering_station.png and b/src/main/resources/assets/hbm/textures/gui/processing/gui_soldering_station.png differ diff --git a/src/main/resources/assets/hbm/textures/items/ammo.png b/src/main/resources/assets/hbm/textures/items/ammo.png index f386e052c..cd34dcb95 100644 Binary files a/src/main/resources/assets/hbm/textures/items/ammo.png and b/src/main/resources/assets/hbm/textures/items/ammo.png differ diff --git a/src/main/resources/assets/hbm/textures/items/part_barrel_heavy.png b/src/main/resources/assets/hbm/textures/items/part_barrel_heavy.png new file mode 100644 index 000000000..44f07bfcc Binary files /dev/null and b/src/main/resources/assets/hbm/textures/items/part_barrel_heavy.png differ diff --git a/src/main/resources/assets/hbm/textures/items/part_barrel_light.png b/src/main/resources/assets/hbm/textures/items/part_barrel_light.png new file mode 100644 index 000000000..c407b692e Binary files /dev/null and b/src/main/resources/assets/hbm/textures/items/part_barrel_light.png differ diff --git a/src/main/resources/assets/hbm/textures/items/part_grip.png b/src/main/resources/assets/hbm/textures/items/part_grip.png new file mode 100644 index 000000000..cf73e7502 Binary files /dev/null and b/src/main/resources/assets/hbm/textures/items/part_grip.png differ diff --git a/src/main/resources/assets/hbm/textures/items/part_mechanism.png b/src/main/resources/assets/hbm/textures/items/part_mechanism.png new file mode 100644 index 000000000..734659e14 Binary files /dev/null and b/src/main/resources/assets/hbm/textures/items/part_mechanism.png differ diff --git a/src/main/resources/assets/hbm/textures/items/part_receiver_heavy.png b/src/main/resources/assets/hbm/textures/items/part_receiver_heavy.png new file mode 100644 index 000000000..696cf78f4 Binary files /dev/null and b/src/main/resources/assets/hbm/textures/items/part_receiver_heavy.png differ diff --git a/src/main/resources/assets/hbm/textures/items/part_receiver_light.png b/src/main/resources/assets/hbm/textures/items/part_receiver_light.png new file mode 100644 index 000000000..ea2057903 Binary files /dev/null and b/src/main/resources/assets/hbm/textures/items/part_receiver_light.png differ diff --git a/src/main/resources/assets/hbm/textures/items/part_stock.png b/src/main/resources/assets/hbm/textures/items/part_stock.png new file mode 100644 index 000000000..a93b55f67 Binary files /dev/null and b/src/main/resources/assets/hbm/textures/items/part_stock.png differ