From 6b665e57bb57c2be34e61c74ce90ec95fec6b745 Mon Sep 17 00:00:00 2001 From: HbmMods Date: Sat, 11 Nov 2017 22:35:32 +0100 Subject: [PATCH] Steam Press --- assets/hbm/lang/de_DE.lang | 29 + assets/hbm/lang/en_US.lang | 29 + assets/hbm/models/press_body.obj | 512 ++++++++++++++++++ assets/hbm/models/press_head.obj | 94 ++++ assets/hbm/sounds.json | 1 + assets/hbm/sounds/block/pressOperate.ogg | Bin 0 -> 14539 bytes assets/hbm/textures/blocks/machine_press.png | Bin 0 -> 321 bytes assets/hbm/textures/gui/gui_nei_nuke.png | Bin 7692 -> 1053 bytes assets/hbm/textures/gui/gui_nei_press.png | Bin 0 -> 897 bytes assets/hbm/textures/gui/gui_press.png | Bin 0 -> 4797 bytes assets/hbm/textures/items/circuit_raw.png | Bin 0 -> 470 bytes .../hbm/textures/items/entanglement_kit.jpg | Bin 998 -> 0 bytes assets/hbm/textures/items/pellet_coal.png | Bin 0 -> 151 bytes .../hbm/textures/items/stamp_iron_circuit.png | Bin 0 -> 297 bytes assets/hbm/textures/items/stamp_iron_flat.png | Bin 0 -> 226 bytes .../hbm/textures/items/stamp_iron_plate.png | Bin 0 -> 245 bytes assets/hbm/textures/items/stamp_iron_wire.png | Bin 0 -> 250 bytes .../textures/items/stamp_obsidian_circuit.png | Bin 0 -> 278 bytes .../textures/items/stamp_obsidian_flat.png | Bin 0 -> 220 bytes .../textures/items/stamp_obsidian_plate.png | Bin 0 -> 239 bytes .../textures/items/stamp_obsidian_wire.png | Bin 0 -> 239 bytes .../items/stamp_schrabidium_circuit.png | Bin 0 -> 297 bytes .../textures/items/stamp_schrabidium_flat.png | Bin 0 -> 231 bytes .../items/stamp_schrabidium_plate.png | Bin 0 -> 252 bytes .../textures/items/stamp_schrabidium_wire.png | Bin 0 -> 261 bytes .../textures/items/stamp_steel_circuit.png | Bin 0 -> 299 bytes .../hbm/textures/items/stamp_steel_flat.png | Bin 0 -> 225 bytes .../hbm/textures/items/stamp_steel_plate.png | Bin 0 -> 242 bytes .../hbm/textures/items/stamp_steel_wire.png | Bin 0 -> 251 bytes .../textures/items/stamp_stone_circuit.png | Bin 0 -> 267 bytes .../hbm/textures/items/stamp_stone_flat.png | Bin 0 -> 212 bytes .../hbm/textures/items/stamp_stone_plate.png | Bin 0 -> 223 bytes .../hbm/textures/items/stamp_stone_wire.png | Bin 0 -> 223 bytes .../textures/items/stamp_titanium_circuit.png | Bin 0 -> 286 bytes .../textures/items/stamp_titanium_flat.png | Bin 0 -> 224 bytes .../textures/items/stamp_titanium_plate.png | Bin 0 -> 242 bytes .../textures/items/stamp_titanium_wire.png | Bin 0 -> 244 bytes assets/hbm/textures/models/ModelRubble.png | Bin 462 -> 0 bytes assets/hbm/textures/models/press_base.png | Bin 0 -> 200 bytes assets/hbm/textures/models/press_body.png | Bin 0 -> 3068 bytes assets/hbm/textures/models/press_body_wf.png | Bin 0 -> 35007 bytes assets/hbm/textures/models/press_head.png | Bin 0 -> 348 bytes assets/hbm/textures/models/press_head_wf.png | Bin 0 -> 27344 bytes com/hbm/blocks/ModBlocks.java | 7 +- ...MachineInserter.java => MachinePress.java} | 63 ++- .../entity/effect/EntityNukeCloudSmall.java | 20 +- com/hbm/handler/GUIHandler.java | 13 +- .../handler/nei/CMBFurnaceRecipeHandler.java | 4 +- com/hbm/handler/nei/PressRecipeHandler.java | 169 ++++++ com/hbm/inventory/MachineRecipes.java | 169 ++++++ .../container/ContainerMachinePress.java | 144 +++++ .../inventory/gui/GUIMachineCMBFactory.java | 2 +- com/hbm/inventory/gui/GUIMachinePress.java | 53 ++ .../gui/GUIScreenTemplateFolder.java | 10 +- com/hbm/items/ModItems.java | 87 ++- com/hbm/items/special/ItemStarterKit.java | 35 +- com/hbm/items/tool/ItemTemplateFolder.java | 1 + com/hbm/main/ClientProxy.java | 3 + com/hbm/main/CraftingManager.java | 63 ++- com/hbm/main/MainRegistry.java | 3 +- com/hbm/main/NEIConfig.java | 14 +- com/hbm/main/ResourceManager.java | 8 + com/hbm/packet/ItemFolderPacket.java | 54 ++ com/hbm/packet/PacketDispatcher.java | 2 + com/hbm/packet/TEPressPacket.java | 80 +++ com/hbm/render/entity/RenderSmallNukeAlt.java | 14 +- com/hbm/render/tileentity/RenderDecoItem.java | 3 +- com/hbm/render/tileentity/RenderPress.java | 90 +++ .../machine/TileEntityMachinePress.java | 310 +++++++++++ 69 files changed, 1972 insertions(+), 114 deletions(-) create mode 100644 assets/hbm/models/press_body.obj create mode 100644 assets/hbm/models/press_head.obj create mode 100644 assets/hbm/sounds/block/pressOperate.ogg create mode 100644 assets/hbm/textures/blocks/machine_press.png create mode 100644 assets/hbm/textures/gui/gui_nei_press.png create mode 100644 assets/hbm/textures/gui/gui_press.png create mode 100644 assets/hbm/textures/items/circuit_raw.png delete mode 100644 assets/hbm/textures/items/entanglement_kit.jpg create mode 100644 assets/hbm/textures/items/pellet_coal.png create mode 100644 assets/hbm/textures/items/stamp_iron_circuit.png create mode 100644 assets/hbm/textures/items/stamp_iron_flat.png create mode 100644 assets/hbm/textures/items/stamp_iron_plate.png create mode 100644 assets/hbm/textures/items/stamp_iron_wire.png create mode 100644 assets/hbm/textures/items/stamp_obsidian_circuit.png create mode 100644 assets/hbm/textures/items/stamp_obsidian_flat.png create mode 100644 assets/hbm/textures/items/stamp_obsidian_plate.png create mode 100644 assets/hbm/textures/items/stamp_obsidian_wire.png create mode 100644 assets/hbm/textures/items/stamp_schrabidium_circuit.png create mode 100644 assets/hbm/textures/items/stamp_schrabidium_flat.png create mode 100644 assets/hbm/textures/items/stamp_schrabidium_plate.png create mode 100644 assets/hbm/textures/items/stamp_schrabidium_wire.png create mode 100644 assets/hbm/textures/items/stamp_steel_circuit.png create mode 100644 assets/hbm/textures/items/stamp_steel_flat.png create mode 100644 assets/hbm/textures/items/stamp_steel_plate.png create mode 100644 assets/hbm/textures/items/stamp_steel_wire.png create mode 100644 assets/hbm/textures/items/stamp_stone_circuit.png create mode 100644 assets/hbm/textures/items/stamp_stone_flat.png create mode 100644 assets/hbm/textures/items/stamp_stone_plate.png create mode 100644 assets/hbm/textures/items/stamp_stone_wire.png create mode 100644 assets/hbm/textures/items/stamp_titanium_circuit.png create mode 100644 assets/hbm/textures/items/stamp_titanium_flat.png create mode 100644 assets/hbm/textures/items/stamp_titanium_plate.png create mode 100644 assets/hbm/textures/items/stamp_titanium_wire.png delete mode 100644 assets/hbm/textures/models/ModelRubble.png create mode 100644 assets/hbm/textures/models/press_base.png create mode 100644 assets/hbm/textures/models/press_body.png create mode 100644 assets/hbm/textures/models/press_body_wf.png create mode 100644 assets/hbm/textures/models/press_head.png create mode 100644 assets/hbm/textures/models/press_head_wf.png rename com/hbm/blocks/machine/{MachineInserter.java => MachinePress.java} (73%) create mode 100644 com/hbm/handler/nei/PressRecipeHandler.java create mode 100644 com/hbm/inventory/container/ContainerMachinePress.java create mode 100644 com/hbm/inventory/gui/GUIMachinePress.java create mode 100644 com/hbm/packet/TEPressPacket.java create mode 100644 com/hbm/render/tileentity/RenderPress.java create mode 100644 com/hbm/tileentity/machine/TileEntityMachinePress.java diff --git a/assets/hbm/lang/de_DE.lang b/assets/hbm/lang/de_DE.lang index 07c9b8b26..757673c91 100644 --- a/assets/hbm/lang/de_DE.lang +++ b/assets/hbm/lang/de_DE.lang @@ -271,6 +271,8 @@ tile.crate_iron.name=Eisenkiste container.crateIron=Eisenkiste tile.crate_steel.name=Stahlkiste container.crateSteel=Stahlkiste +tile.machine_press.name=Dampfpresse +container.press=Dampfpresse tile.red_pylon.name=Strommasten item.wiring_red_copper.name=Kabeltrommel @@ -428,6 +430,7 @@ item.wire_copper.name=Kupferdraht item.wire_gold.name=Golddraht item.wire_schrabidium.name=Schrabidiumdraht +item.circuit_raw.name=Schaltkreisrohling item.circuit_aluminium.name=Einfacher Schaltkreis item.circuit_copper.name=Erweiterter Schaltkreis item.circuit_red_copper.name=Forgeschrittener Schaltkreis @@ -1223,6 +1226,7 @@ item.shimmer_handle.name=Verstärketer Polymergriff item.redcoil_capacitor.name=Rotspulenkondensator item.detonator.name=Fernzünder item.crate_caller.name=Nachschub-Requester +item.meteor_remote.name=Meteoritenkontroller item.ingot_hes.name=Stark angereicherter Schrabidiumkernbrennstoffbarren item.ingot_les.name=Schwach angereicherter Schrabidiumkernbrennstoffbarren @@ -1292,6 +1296,31 @@ item.blades_advanced_alloy.name=Fortgeschrittenes Sägeblatt item.blades_combine_steel.name=CMB-Sägeblatt item.blades_schrabidium.name=Schrabidiumsägeblatt +item.stamp_stone_flat.name=Flacher Stempel (Stein) +item.stamp_stone_plate.name=Plattenstempel (Stein) +item.stamp_stone_wire.name=Kabelstempel (Stein) +item.stamp_stone_circuit.name=Schaltkreisstempel (Stein) +item.stamp_iron_flat.name=Flacher Stempel (Eisen) +item.stamp_iron_plate.name=Plattenstempel (Eisen) +item.stamp_iron_wire.name=Kabelstempel (Eisen) +item.stamp_iron_circuit.name=Schaltkreisstempel (Eisen) +item.stamp_steel_flat.name=Flacher Stempel (Stahl) +item.stamp_steel_plate.name=Plattenstempel (Stahl) +item.stamp_steel_wire.name=Kabelstempel (Stahl) +item.stamp_steel_circuit.name=Schaltkreisstempel (Stahl) +item.stamp_titanium_flat.name=Flacher Stempel (Titan) +item.stamp_titanium_plate.name=Plattenstempel (Titan) +item.stamp_titanium_wire.name=Kabelstempel (Titan) +item.stamp_titanium_circuit.name=Schaltkreisstempel (Titan) +item.stamp_obsidian_flat.name=Flacher Stempel (Obsidian) +item.stamp_obsidian_plate.name=Plattenstempel (Obsidian) +item.stamp_obsidian_wire.name=Kabelstempel (Obsidian) +item.stamp_obsidian_circuit.name=Schaltkreisstempel (Obsidian) +item.stamp_schrabidium_flat.name=Flacher Stempel (Schrabidium) +item.stamp_schrabidium_plate.name=Plattenstempel (Schrabidium) +item.stamp_schrabidium_wire.name=Kabelstempel (Schrabidium) +item.stamp_schrabidium_circuit.name=Schaltkreisstempel (Schrabidium) + item.part_lithium.name=Lithiumstaubkiste item.part_beryllium.name=Berylliumstaubkiste item.part_carbon.name=Kohlenstoffstaubkiste diff --git a/assets/hbm/lang/en_US.lang b/assets/hbm/lang/en_US.lang index 092384775..fbe901f2e 100644 --- a/assets/hbm/lang/en_US.lang +++ b/assets/hbm/lang/en_US.lang @@ -271,6 +271,8 @@ tile.crate_iron.name=Iron Crate container.crateIron=Iron Crate tile.crate_steel.name=Steel Crate container.crateSteel=Steel Crate +tile.machine_press.name=Steam Press +container.press=Steam Press tile.red_pylon.name=Electricity Pole item.wiring_red_copper.name=Cable Drum @@ -428,6 +430,7 @@ item.wire_copper.name=Copper Wire item.wire_gold.name=Gold Wire item.wire_schrabidium.name=Schrabidium Wire +item.circuit_raw.name=Basic Circuit Assembly item.circuit_aluminium.name=Basic Circuit item.circuit_copper.name=Enhanced Circuit item.circuit_red_copper.name=Advanved Circuit @@ -1223,6 +1226,7 @@ item.shimmer_handle.name=Reinforced Polymer Handle item.redcoil_capacitor.name=Redcoil Capacitor item.detonator.name=Detonator item.crate_caller.name=Supply Drop Requester +item.meteor_remote.name=Meteorite Remote item.ingot_hes.name=Highly Enriched Schrabidium Fuel Ingot item.ingot_les.name=Low Enriched Schrabidium Fuel Ingot @@ -1292,6 +1296,31 @@ item.blades_advanced_alloy.name=Advanced Shredder Blades item.blades_combine_steel.name=CMB Shredder Blades item.blades_schrabidium.name=Schrabidium Shredder Blades +item.stamp_stone_flat.name=Flat Stamp (Stone) +item.stamp_stone_plate.name=Plate Stamp (Stone) +item.stamp_stone_wire.name=Wire Stamp (Stone) +item.stamp_stone_circuit.name=Circuit Stamp (Stone) +item.stamp_iron_flat.name=Flat Stamp (Iron) +item.stamp_iron_plate.name=Plate Stamp (Iron) +item.stamp_iron_wire.name=Wire Stamp (Iron) +item.stamp_iron_circuit.name=Circuit Stamp (Iron) +item.stamp_steel_flat.name=Flat Stamp (Steel) +item.stamp_steel_plate.name=Plate Stamp (Steel) +item.stamp_steel_wire.name=Wire Stamp (Steel) +item.stamp_steel_circuit.name=Circuit Stamp (Steel) +item.stamp_titanium_flat.name=Flat Stamp (Titanium) +item.stamp_titanium_plate.name=Plate Stamp (Titanium) +item.stamp_titanium_wire.name=Wire Stamp (Titanium) +item.stamp_titanium_circuit.name=Circuit Stamp (Titanium) +item.stamp_obsidian_flat.name=Flat Stamp (Obsidian) +item.stamp_obsidian_plate.name=Plate Stamp (Obsidian) +item.stamp_obsidian_wire.name=Wire Stamp (Obsidian) +item.stamp_obsidian_circuit.name=Circuit Stamp (Obsidian) +item.stamp_schrabidium_flat.name=Flat Stamp (Schrabidium) +item.stamp_schrabidium_plate.name=Plate Stamp (Schrabidium) +item.stamp_schrabidium_wire.name=Wire Stamp (Schrabidium) +item.stamp_schrabidium_circuit.name=Circuit Stamp (Schrabidium) + item.part_lithium.name=Box of Lithium Dust item.part_beryllium.name=Box of Beryllium Dust item.part_carbon.name=Box of Carbon Dust diff --git a/assets/hbm/models/press_body.obj b/assets/hbm/models/press_body.obj new file mode 100644 index 000000000..5ab4c76bf --- /dev/null +++ b/assets/hbm/models/press_body.obj @@ -0,0 +1,512 @@ +# Blender v2.76 (sub 0) OBJ File: 'press_body.blend' +# www.blender.org +o Cube_Cube.001 +v -0.500000 0.000000 0.500000 +v -0.500000 0.000000 -0.500000 +v 0.500000 0.000000 0.500000 +v 0.500000 0.000000 -0.500000 +v -0.500000 1.000000 0.375000 +v -0.500000 1.000000 -0.375000 +v -0.500000 0.000000 -0.375000 +v -0.500000 0.000000 0.375000 +v -0.375000 1.000000 -0.500000 +v 0.375000 1.000000 -0.500000 +v 0.375000 0.000000 -0.500000 +v -0.375000 0.000000 -0.500000 +v 0.500000 1.000000 -0.375000 +v 0.500000 1.000000 0.375000 +v 0.500000 0.000000 0.375000 +v 0.500000 0.000000 -0.375000 +v 0.375000 1.000000 0.500000 +v -0.375000 1.000000 0.500000 +v -0.375000 0.000000 0.500000 +v 0.375000 0.000000 0.500000 +v 0.375000 1.000000 0.375000 +v -0.375000 1.000000 0.375000 +v 0.375000 1.000000 -0.375000 +v -0.375000 1.000000 -0.375000 +v -0.375000 0.000000 0.375000 +v 0.375000 0.000000 0.375000 +v -0.375000 0.000000 -0.375000 +v 0.375000 0.000000 -0.375000 +v 0.375000 0.875000 0.500000 +v -0.375000 0.875000 0.500000 +v 0.500000 0.875000 -0.375000 +v 0.500000 0.875000 0.375000 +v -0.375000 0.875000 -0.500000 +v 0.375000 0.875000 -0.500000 +v -0.500000 0.875000 0.375000 +v -0.500000 0.875000 -0.375000 +v -0.500000 2.000000 -0.375000 +v 0.375000 2.000000 -0.375000 +v 0.375000 2.000000 -0.500000 +v 0.500000 2.000000 0.375000 +v -0.375000 2.000000 0.500000 +v -0.500000 2.000000 0.375000 +v -0.375000 2.000000 -0.500000 +v 0.500000 2.000000 -0.375000 +v 0.375000 2.000000 0.500000 +v -0.375000 0.875000 0.375000 +v 0.375000 0.875000 0.375000 +v -0.375000 0.875000 -0.375000 +v 0.375000 0.875000 -0.375000 +v -0.500000 2.500000 0.375000 +v -0.500000 2.500000 -0.375000 +v -0.375000 2.500000 -0.500000 +v 0.375000 2.500000 -0.500000 +v 0.500000 2.500000 -0.375000 +v 0.500000 2.500000 0.375000 +v 0.375000 2.500000 0.500000 +v -0.375000 2.500000 0.500000 +v 0.375000 2.500000 0.375000 +v -0.375000 2.500000 0.375000 +v 0.375000 2.500000 -0.375000 +v -0.375000 2.500000 -0.375000 +v -0.375000 2.000000 0.375000 +v -0.375000 2.000000 -0.375000 +v 0.375000 2.000000 0.375000 +v -0.500000 2.500000 0.500000 +v -0.500000 2.500000 -0.500000 +v 0.500000 2.500000 0.500000 +v 0.500000 2.500000 -0.500000 +v 0.375000 3.000000 0.375000 +v 0.375000 3.000000 -0.375000 +v -0.375000 3.000000 -0.375000 +v -0.375000 3.000000 0.375000 +v -0.500000 1.000000 0.500000 +v -0.500000 0.875000 0.500000 +v 0.500000 1.000000 0.500000 +v 0.500000 0.875000 0.500000 +v 0.500000 1.000000 -0.500000 +v 0.500000 0.875000 -0.500000 +v -0.500000 1.000000 -0.500000 +v -0.500000 0.875000 -0.500000 +v -0.500000 2.000000 0.500000 +v -0.500000 2.000000 -0.500000 +v 0.500000 2.000000 0.500000 +v 0.500000 2.000000 -0.500000 +v -0.375000 0.000000 0.375000 +v 0.375000 0.000000 0.375000 +v -0.375000 0.000000 -0.375000 +v 0.375000 0.000000 -0.375000 +vt 0.687301 0.558256 +vt 0.710163 0.558256 +vt 0.710163 0.581118 +vt 0.745557 0.558256 +vt 0.768419 0.558256 +vt 0.768419 0.581118 +vt 0.774343 0.017697 +vt 0.797205 0.017697 +vt 0.797205 0.040559 +vt 0.629045 0.558256 +vt 0.651906 0.558256 +vt 0.651906 0.581118 +vt 0.086283 0.545724 +vt 0.086283 0.408552 +vt 0.223454 0.408552 +vt 0.246316 0.408552 +vt 0.246316 0.545724 +vt 0.223454 0.545724 +vt 0.223454 0.568586 +vt 0.086283 0.568586 +vt 0.063421 0.545724 +vt 0.086283 0.385691 +vt 0.705757 0.500000 +vt 0.568586 0.500000 +vt 0.568586 0.362829 +vt 0.728619 0.362829 +vt 0.728619 0.500000 +vt 0.223454 0.385691 +vt 0.086283 0.362829 +vt 0.269178 0.408552 +vt 0.223454 0.591448 +vt 0.063421 0.408552 +vt 0.040559 0.545724 +vt 0.489670 0.936579 +vt 0.466808 0.936579 +vt 0.466808 0.776546 +vt 0.429212 0.177731 +vt 0.429212 0.017697 +vt 0.566383 0.017697 +vt 0.292040 0.177731 +vt 0.292040 0.017697 +vt 0.913717 0.500000 +vt 0.890855 0.500000 +vt 0.890855 0.339967 +vt 0.154869 0.017697 +vt 0.738949 0.649704 +vt 0.738949 0.786875 +vt 0.601777 0.786875 +vt 0.959441 0.339967 +vt 0.982303 0.339967 +vt 0.982303 0.500000 +vt 0.292040 0.408552 +vt 0.292040 0.545724 +vt 0.269178 0.545724 +vt 0.223454 0.614310 +vt 0.086283 0.614310 +vt 0.086283 0.591448 +vt 0.017697 0.545724 +vt 0.017697 0.408552 +vt 0.040559 0.408552 +vt 0.086283 0.339967 +vt 0.223454 0.339967 +vt 0.223454 0.362829 +vt 0.350296 0.362829 +vt 0.350296 0.500000 +vt 0.327434 0.500000 +vt 0.487468 0.362829 +vt 0.350296 0.339967 +vt 0.487468 0.500000 +vt 0.510330 0.362829 +vt 0.487468 0.522862 +vt 0.421085 0.936579 +vt 0.398223 0.936579 +vt 0.398223 0.776546 +vt 0.017697 0.017697 +vt 0.154869 0.177731 +vt 0.568586 0.339967 +vt 0.705757 0.339967 +vt 0.705757 0.362829 +vt 0.545724 0.500000 +vt 0.705757 0.522862 +vt 0.568586 0.522862 +vt 0.327434 0.339967 +vt 0.593650 0.581118 +vt 0.570788 0.581118 +vt 0.570788 0.558256 +vt 0.487468 0.339967 +vt 0.510330 0.339967 +vt 0.350296 0.522862 +vt 0.327434 0.522862 +vt 0.510330 0.500000 +vt 0.510330 0.522862 +vt 0.566383 0.649704 +vt 0.566383 0.741152 +vt 0.429212 0.741152 +vt 0.601777 0.154869 +vt 0.601777 0.017697 +vt 0.738949 0.017697 +vt 0.429212 0.649704 +vt 0.292040 0.741152 +vt 0.154869 0.649704 +vt 0.154869 0.741152 +vt 0.017697 0.741152 +vt 0.292040 0.649704 +vt 0.223454 0.304572 +vt 0.223454 0.213125 +vt 0.360626 0.213125 +vt 0.177731 0.213125 +vt 0.177731 0.304572 +vt 0.040559 0.304572 +vt 0.726417 0.213125 +vt 0.726417 0.304572 +vt 0.589245 0.304572 +vt 0.543521 0.213125 +vt 0.543521 0.304572 +vt 0.406350 0.304572 +vt 0.547926 0.581118 +vt 0.431414 0.581118 +vt 0.408552 0.581118 +vt 0.408552 0.558256 +vt 0.385690 0.581118 +vt 0.466808 0.558256 +vt 0.489670 0.558256 +vt 0.489670 0.581118 +vt 0.512532 0.558256 +vt 0.350296 0.581118 +vt 0.327434 0.581118 +vt 0.327434 0.558256 +vt 0.040559 0.959441 +vt 0.017697 0.959441 +vt 0.017697 0.776546 +vt 0.109145 0.959441 +vt 0.086283 0.959441 +vt 0.086283 0.776546 +vt 0.327434 0.603980 +vt 0.807535 0.304572 +vt 0.784673 0.304572 +vt 0.784673 0.121677 +vt 0.876120 0.121677 +vt 0.876120 0.304572 +vt 0.853259 0.304572 +vt 0.786875 0.522862 +vt 0.764013 0.522862 +vt 0.764013 0.339967 +vt 0.855461 0.339967 +vt 0.855461 0.522862 +vt 0.832599 0.522862 +vt 0.865791 0.649704 +vt 0.865791 0.832599 +vt 0.842929 0.832599 +vt 0.797205 0.649704 +vt 0.797205 0.832599 +vt 0.774343 0.832599 +vt 0.317105 0.936579 +vt 0.294243 0.936579 +vt 0.294243 0.776546 +vt 0.339967 0.776546 +vt 0.339967 0.936579 +vt 0.190263 0.936579 +vt 0.167401 0.936579 +vt 0.167401 0.776546 +vt 0.213125 0.776546 +vt 0.213125 0.936579 +vt 0.936579 0.500000 +vt 0.913717 0.339967 +vt 0.959441 0.500000 +vt 0.443947 0.936579 +vt 0.421085 0.776546 +vt 0.200592 0.304572 +vt 0.200592 0.213125 +vt 0.749279 0.304572 +vt 0.017697 0.304572 +vt 0.017697 0.213125 +vt 0.040559 0.213125 +vt 0.566383 0.304572 +vt 0.566383 0.213125 +vt 0.589245 0.213125 +vt 0.360626 0.304572 +vt 0.383488 0.213125 +vt 0.406350 0.213125 +vt 0.383488 0.304572 +vt 0.040559 0.776546 +vt 0.063421 0.776546 +vt 0.063421 0.959441 +vt 0.820067 0.649704 +vt 0.820067 0.832599 +vt 0.842929 0.649704 +vt 0.807535 0.121677 +vt 0.830397 0.121677 +vt 0.830397 0.304572 +vt 0.853259 0.121677 +vt 0.786875 0.339967 +vt 0.809737 0.339967 +vt 0.809737 0.522862 +vt 0.832599 0.339967 +vt 0.362829 0.936579 +vt 0.271381 0.936579 +vt 0.271381 0.776546 +vt 0.235987 0.776546 +vt 0.235987 0.936579 +vt 0.144539 0.936579 +vt 0.687301 0.581118 +vt 0.745557 0.581118 +vt 0.774343 0.040559 +vt 0.629045 0.581118 +vt 0.489670 0.776546 +vt 0.566383 0.177731 +vt 0.601777 0.649704 +vt 0.327434 0.362829 +vt 0.017697 0.177731 +vt 0.545724 0.362829 +vt 0.593650 0.558256 +vt 0.738949 0.154869 +vt 0.017697 0.649704 +vt 0.547926 0.558256 +vt 0.431414 0.558256 +vt 0.385690 0.558256 +vt 0.466808 0.581118 +vt 0.512532 0.581118 +vt 0.350296 0.558256 +vt 0.109145 0.776546 +vt 0.350296 0.603980 +vt 0.774343 0.649704 +vt 0.317105 0.776546 +vt 0.190263 0.776546 +vt 0.936579 0.339967 +vt 0.443947 0.776546 +vt 0.749279 0.213125 +vt 0.362829 0.776546 +vt 0.144539 0.776546 +vn 0.000000 -1.000000 0.000000 +vn 0.000000 1.000000 0.000000 +vn 0.000000 0.000000 1.000000 +vn 1.000000 0.000000 0.000000 +vn 0.000000 0.000000 -1.000000 +vn -1.000000 0.000000 0.000000 +s off +f 11/1/1 4/2/1 16/3/1 +f 26/4/1 15/5/1 3/6/1 +f 8/7/1 25/8/1 19/9/1 +f 2/10/1 12/11/1 27/12/1 +f 24/13/2 22/14/2 21/15/2 +f 14/16/2 13/17/2 23/18/2 +f 10/19/2 9/20/2 24/13/2 +f 22/14/2 24/13/2 6/21/2 +f 21/15/2 22/14/2 18/22/2 +f 64/23/1 62/24/1 63/25/1 +f 44/26/1 40/27/1 64/23/1 +f 17/28/3 18/22/3 30/29/3 +f 13/17/4 14/16/4 32/30/4 +f 9/20/5 10/19/5 34/31/5 +f 5/32/6 6/21/6 36/33/6 +f 46/34/4 30/35/4 19/36/4 +f 46/37/3 85/38/3 86/39/3 +f 48/40/6 87/41/6 85/38/6 +f 33/42/4 48/43/4 27/44/4 +f 88/45/5 87/41/5 48/40/5 +f 85/46/1 87/47/1 88/48/1 +f 7/49/3 27/50/3 48/51/3 +f 47/52/1 49/53/1 31/54/1 +f 49/55/1 48/56/1 33/57/1 +f 48/58/1 46/59/1 35/60/1 +f 46/61/1 47/62/1 29/63/1 +f 59/64/2 61/65/2 51/66/2 +f 58/67/2 59/64/2 57/68/2 +f 60/69/2 58/67/2 55/70/2 +f 61/65/2 60/69/2 53/71/2 +f 35/72/5 46/73/5 25/74/5 +f 86/75/4 88/45/4 49/76/4 +f 43/77/1 39/78/1 38/79/1 +f 63/25/1 62/24/1 42/80/1 +f 45/81/1 41/82/1 62/24/1 +f 65/83/2 57/68/2 59/64/2 +f 10/84/5 77/85/5 78/86/5 +f 58/67/2 56/87/2 67/88/2 +f 61/65/2 52/89/2 66/90/2 +f 60/69/2 54/91/2 68/92/2 +f 58/93/3 69/94/3 72/95/3 +f 71/96/2 72/97/2 69/98/2 +f 59/99/6 72/95/6 71/100/6 +f 60/101/4 70/102/4 69/103/4 +f 61/104/5 71/100/5 70/102/5 +f 42/105/6 50/106/6 51/107/6 +f 57/108/3 41/109/3 45/110/3 +f 55/111/4 40/112/4 44/113/4 +f 53/114/5 39/115/5 43/116/5 +f 78/86/4 77/85/4 13/117/4 +f 14/118/4 75/119/4 76/120/4 +f 76/120/3 75/119/3 17/121/3 +f 18/122/3 73/123/3 74/124/3 +f 74/124/6 73/123/6 5/125/6 +f 80/126/5 79/127/5 9/128/5 +f 43/129/4 63/130/4 24/131/4 +f 63/132/3 37/133/3 6/134/3 +f 6/135/6 79/127/6 80/126/6 +f 45/136/6 64/137/6 21/138/6 +f 21/139/5 64/140/5 40/141/5 +f 44/142/3 38/143/3 23/144/3 +f 23/145/6 38/146/6 39/147/6 +f 22/148/4 62/149/4 41/150/4 +f 5/151/5 42/152/5 62/153/5 +f 76/154/3 29/155/3 20/156/3 +f 15/157/4 32/158/4 76/154/4 +f 78/159/4 31/160/4 16/161/4 +f 11/162/5 34/163/5 78/159/5 +f 80/164/5 33/42/5 12/165/5 +f 7/49/6 36/166/6 80/164/6 +f 74/167/6 35/72/6 8/168/6 +f 19/36/3 30/35/3 74/167/3 +f 50/106/6 42/105/6 81/169/6 +f 57/108/3 65/170/3 81/169/3 +f 83/171/4 40/112/4 55/111/4 +f 83/172/3 67/173/3 56/174/3 +f 84/175/5 39/115/5 53/114/5 +f 84/175/4 68/176/4 54/177/4 +f 37/178/6 51/107/6 66/179/6 +f 52/180/5 43/116/5 82/181/5 +f 9/182/5 79/183/5 82/184/5 +f 82/184/6 79/183/6 6/134/6 +f 5/151/6 73/185/6 81/186/6 +f 81/186/3 73/185/3 18/187/3 +f 17/188/3 75/189/3 83/190/3 +f 83/190/4 75/189/4 14/191/4 +f 13/192/4 77/193/4 84/194/4 +f 84/194/5 77/193/5 10/195/5 +f 47/196/5 32/158/5 15/157/5 +f 29/155/6 47/197/6 26/198/6 +f 28/199/6 49/200/6 34/163/6 +f 16/161/3 31/160/3 49/201/3 +f 28/202/1 11/1/1 16/3/1 +f 20/203/1 26/4/1 3/6/1 +f 1/204/1 8/7/1 19/9/1 +f 7/205/1 2/10/1 27/12/1 +f 23/18/2 24/13/2 21/15/2 +f 21/15/2 14/16/2 23/18/2 +f 23/18/2 10/19/2 24/13/2 +f 5/32/2 22/14/2 6/21/2 +f 17/28/2 21/15/2 18/22/2 +f 38/79/1 64/23/1 63/25/1 +f 38/79/1 44/26/1 64/23/1 +f 29/63/3 17/28/3 30/29/3 +f 31/54/4 13/17/4 32/30/4 +f 33/57/5 9/20/5 34/31/5 +f 35/60/6 5/32/6 36/33/6 +f 25/206/4 46/34/4 19/36/4 +f 47/207/3 46/37/3 86/39/3 +f 46/37/6 48/40/6 85/38/6 +f 12/165/4 33/42/4 27/44/4 +f 49/76/5 88/45/5 48/40/5 +f 86/208/1 85/46/1 88/48/1 +f 36/166/3 7/49/3 48/51/3 +f 32/30/1 47/52/1 31/54/1 +f 34/31/1 49/55/1 33/57/1 +f 36/33/1 48/58/1 35/60/1 +f 30/29/1 46/61/1 29/63/1 +f 50/209/2 59/64/2 51/66/2 +f 56/87/2 58/67/2 57/68/2 +f 54/91/2 60/69/2 55/70/2 +f 52/89/2 61/65/2 53/71/2 +f 8/168/5 35/72/5 25/74/5 +f 47/210/4 86/75/4 49/76/4 +f 63/25/1 43/77/1 38/79/1 +f 37/211/1 63/25/1 42/80/1 +f 64/23/1 45/81/1 62/24/1 +f 50/209/2 65/83/2 59/64/2 +f 34/212/5 10/84/5 78/86/5 +f 55/70/2 58/67/2 67/88/2 +f 51/66/2 61/65/2 66/90/2 +f 53/71/2 60/69/2 68/92/2 +f 59/99/3 58/93/3 72/95/3 +f 70/213/2 71/96/2 69/98/2 +f 61/104/6 59/99/6 71/100/6 +f 58/214/4 60/101/4 69/103/4 +f 60/101/5 61/104/5 70/102/5 +f 37/178/6 42/105/6 51/107/6 +f 56/174/3 57/108/3 45/110/3 +f 54/177/4 55/111/4 44/113/4 +f 52/180/5 53/114/5 43/116/5 +f 31/215/4 78/86/4 13/117/4 +f 32/216/4 14/118/4 76/120/4 +f 29/217/3 76/120/3 17/121/3 +f 30/218/3 18/122/3 74/124/3 +f 35/219/6 74/124/6 5/125/6 +f 33/220/5 80/126/5 9/128/5 +f 9/182/4 43/129/4 24/131/4 +f 24/221/3 63/132/3 6/134/3 +f 36/222/6 6/135/6 80/126/6 +f 17/188/6 45/136/6 21/138/6 +f 14/191/5 21/139/5 40/141/5 +f 13/192/3 44/142/3 23/144/3 +f 10/195/6 23/145/6 39/147/6 +f 18/187/4 22/148/4 41/150/4 +f 22/223/5 5/151/5 62/153/5 +f 3/224/3 76/154/3 20/156/3 +f 3/224/4 15/157/4 76/154/4 +f 4/225/4 78/159/4 16/161/4 +f 4/225/5 11/162/5 78/159/5 +f 2/226/5 80/164/5 12/165/5 +f 2/226/6 7/49/6 80/164/6 +f 1/227/6 74/167/6 8/168/6 +f 1/227/3 19/36/3 74/167/3 +f 65/170/6 50/106/6 81/169/6 +f 41/109/3 57/108/3 81/169/3 +f 67/228/4 83/171/4 55/111/4 +f 45/110/3 83/172/3 56/174/3 +f 68/176/5 84/175/5 53/114/5 +f 44/113/4 84/175/4 54/177/4 +f 82/181/6 37/178/6 66/179/6 +f 66/179/5 52/180/5 82/181/5 +f 43/129/5 9/182/5 82/184/5 +f 37/133/6 82/184/6 6/134/6 +f 42/152/6 5/151/6 81/186/6 +f 41/150/3 81/186/3 18/187/3 +f 45/136/3 17/188/3 83/190/3 +f 40/141/4 83/190/4 14/191/4 +f 44/142/4 13/192/4 84/194/4 +f 39/147/5 84/194/5 10/195/5 +f 26/229/5 47/196/5 15/157/5 +f 20/156/6 29/155/6 26/198/6 +f 11/162/6 28/199/6 34/163/6 +f 28/230/3 16/161/3 49/201/3 diff --git a/assets/hbm/models/press_head.obj b/assets/hbm/models/press_head.obj new file mode 100644 index 000000000..0a7191985 --- /dev/null +++ b/assets/hbm/models/press_head.obj @@ -0,0 +1,94 @@ +# Blender v2.76 (sub 0) OBJ File: 'press_head.blend' +# www.blender.org +o Cube.001_Cube.002 +v -0.375000 1.005685 -0.375000 +v 0.375000 1.005685 -0.375000 +v -0.375000 1.005685 0.375000 +v 0.375000 1.005685 0.375000 +v 0.250000 2.005685 0.250000 +v 0.250000 2.005685 -0.250000 +v -0.250000 2.005685 0.250000 +v -0.250000 2.005685 -0.250000 +v 0.250000 1.130685 -0.250000 +v 0.250000 1.130685 0.250000 +v -0.250000 1.130685 0.250000 +v -0.250000 1.130685 -0.250000 +v 0.375000 1.130685 0.375000 +v -0.375000 1.130685 0.375000 +v 0.375000 1.130685 -0.375000 +v -0.375000 1.130685 -0.375000 +vt 0.229633 0.395056 +vt 0.229633 0.688899 +vt 0.061723 0.688899 +vt 0.646922 0.103700 +vt 0.646922 0.397543 +vt 0.479011 0.397543 +vt 0.313588 0.229633 +vt 0.019745 0.229633 +vt 0.019745 0.061723 +vt 0.187655 0.728389 +vt 0.187655 0.896300 +vt 0.019745 0.896300 +vt 0.355566 0.271610 +vt 0.313588 0.061723 +vt 0.646922 0.520989 +vt 0.479011 0.520989 +vt 0.437034 0.479011 +vt 0.479011 0.103700 +vt 0.437034 0.061723 +vt 0.061723 0.395056 +vt 0.019745 0.353078 +vt 0.271611 0.311101 +vt 0.271611 0.353078 +vt 0.688899 0.437034 +vt 0.688899 0.479011 +vt 0.688899 0.019745 +vt 0.688899 0.061723 +vt 0.397543 0.271611 +vt 0.355566 0.019745 +vt 0.646922 0.814832 +vt 0.479011 0.814832 +vt 0.980255 0.019745 +vt 0.980255 0.271611 +vt 0.728389 0.271611 +vt 0.019745 0.728389 +vt 0.019745 0.311101 +vt 0.437034 0.437034 +vt 0.437034 0.019745 +vt 0.397543 0.019745 +vt 0.728389 0.019745 +vn -1.000000 0.000000 0.000000 +vn 0.000000 0.000000 1.000000 +vn 0.000000 0.000000 -1.000000 +vn 0.000000 1.000000 0.000000 +vn 1.000000 0.000000 0.000000 +vn 0.000000 -1.000000 0.000000 +s off +f 11/1/1 7/2/1 8/3/1 +f 10/4/2 5/5/2 7/6/2 +f 12/7/3 8/8/3 6/9/3 +f 5/10/4 6/11/4 8/12/4 +f 16/13/4 12/7/4 9/14/4 +f 9/15/4 10/16/4 13/17/4 +f 10/4/4 11/18/4 14/19/4 +f 11/1/4 12/20/4 16/21/4 +f 3/22/1 14/23/1 16/21/1 +f 2/24/5 15/25/5 13/17/5 +f 4/26/2 13/27/2 14/19/2 +f 1/28/3 16/13/3 15/29/3 +f 9/15/5 6/30/5 5/31/5 +f 3/32/6 1/33/6 2/34/6 +f 12/20/1 11/1/1 8/3/1 +f 11/18/2 10/4/2 7/6/2 +f 9/14/3 12/7/3 6/9/3 +f 7/35/4 5/10/4 8/12/4 +f 15/29/4 16/13/4 9/14/4 +f 15/25/4 9/15/4 13/17/4 +f 13/27/4 10/4/4 14/19/4 +f 14/23/4 11/1/4 16/21/4 +f 1/36/1 3/22/1 16/21/1 +f 4/37/5 2/24/5 13/17/5 +f 3/38/2 4/26/2 14/19/2 +f 2/39/3 1/28/3 15/29/3 +f 10/16/5 9/15/5 5/31/5 +f 4/40/6 3/32/6 2/34/6 diff --git a/assets/hbm/sounds.json b/assets/hbm/sounds.json index 38ebb50a2..dae0311b6 100644 --- a/assets/hbm/sounds.json +++ b/assets/hbm/sounds.json @@ -12,6 +12,7 @@ "block.dieselOperate": {"category": "block", "sounds": [{"name": "block/dieselOperate", "stream": false}]}, "block.igeneratorOperate": {"category": "block", "sounds": [{"name": "block/igeneratorOperate", "stream": false}]}, "block.turbofanOperate": {"category": "block", "sounds": [{"name": "block/turbofanOperate", "stream": false}]}, + "block.pressOperate": {"category": "block", "sounds": [{"name": "block/pressOperate", "stream": false}]}, "item.techBleep": {"category": "player", "sounds": [{"name": "tool/techBleep", "stream": false}]}, "item.techBoop": {"category": "player", "sounds": [{"name": "tool/techBoop", "stream": false}]}, diff --git a/assets/hbm/sounds/block/pressOperate.ogg b/assets/hbm/sounds/block/pressOperate.ogg new file mode 100644 index 0000000000000000000000000000000000000000..a8f957f05aabaa2fb33ccef87cfff1484179cc7c GIT binary patch literal 14539 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 E0lo2PXaE2J literal 0 HcmV?d00001 diff --git a/assets/hbm/textures/blocks/machine_press.png b/assets/hbm/textures/blocks/machine_press.png new file mode 100644 index 0000000000000000000000000000000000000000..7b5dc8a4c2d7f819b219b984a18148410df7be6f GIT binary patch literal 321 zcmV-H0lxl;P)$+@=f%hIngud@p?WP1sDItUaYb}g1MF%&3 z0f-1^7o}2dJv}~TClll}VYg*SPH;Zr`SpFFR~<-Bkkf>g4V+8>fZdi=2kH#!itu7@ zVK)}3N?>N}zuwjZBqt2R@XPM~;Vx@hwS^Ft+LrZAr~qr1v#l#y575MtlL}C0@cHd8 zNsKYhp^}gFfR@cAiA~eYXSE*M;u@J5F-DBz2qOAl3r;4CX?}SA3+@7JE100000NkvXXu0mjfwg-nC literal 0 HcmV?d00001 diff --git a/assets/hbm/textures/gui/gui_nei_nuke.png b/assets/hbm/textures/gui/gui_nei_nuke.png index 4b16759fe8fcb36494f164305c44faec5d838f76..ffe7b7e0166e5998c9f2d0fea85e40b5dda22945 100644 GIT binary patch literal 1053 zcmeAS@N?(olHy`uVBq!ia0y~yU<5K5893O0R7}x|G$6%N?Bp530R%N1DIE+9%vU^J z978JRyuBNkH`_sg?SbN{m5;K2C{3&3=X+Fq!&0oaBjY98YTwiEoSyxj_h<%ti;cbU znm4kKrfWWsXuGHWA@+=T(JZyE=M8xd3n;RfeH7}N-&|=UCunuemnV?r!0+GH`!_f4 zH|R@tak-PXon!8S`pU?C0e>c(K0TkGai2CLLnkMLhYy285)*@vFvEly3=KzE7*y04 z6b#X%=Jr1R@%i=I3$qw9R_J^ylzCjV^T^YppI_=1I&iPw>#xwg^TzZ2^JRqv_sg39 z=QVx7U^Sz=YTsvl?%0EuCoyC!$@#22ub<)c_XTRo4$i3y_2cz-H~uuevWz)nP0s)H zV+>USAlox?_Pw5N{BM);1{M$Pd5k6@daUbod83$?sLDDhXS43z#uKrR-ITL|@06j# zZ-0Ha2DekH`#a7b{g)%t5LI_u`ogt@x0>J9Z#I8WR>Ck>v!?134}*|(2>XVkcR$tG z9e-JJ>p{*w{p*(f&a4hcjp9JW3F+^?SHBNd5Mp(a=?$1 zF-m~JT8(9eFTh@1b;_b`4@0LATv8#UMU)BmKpCvZ*(vtiCy5yKS|EwzQk!`rIC?HX5AuH=Rq z{wyH|*(u2l-{!~lF!WCGt`nT!{r9E?!&V+aL*L6Hf)BM9$ZC9BKYRVnw`JWwe(-$m zM+7FVdQ&MBb@0NrnC+yDRo literal 7692 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 diff --git a/assets/hbm/textures/gui/gui_nei_press.png b/assets/hbm/textures/gui/gui_nei_press.png new file mode 100644 index 0000000000000000000000000000000000000000..7cfd05a9c40a85c1de3d686868ce96a150f938e3 GIT binary patch literal 897 zcmeAS@N?(olHy`uVBq!ia0y~yU<5K5893O0R7}x|G$6%N?Bp530R%N1DIE+9%od(5 zjv*Cu-rl*G`^Z70?c!?be#0X7>C<2K!~BtP|NaXs2xnqA$imRX$-pAaz@f$<;KQIWgTcXou^|B> zv3K3xhMl!FH8y{w+7B=M_WLi->c(xQ;ti|rGymy${P9J1pi2QKek0J#-tg`mvxN*_ zsg2zAIJO+8a>g6)zi(`>wBYTm2AZ2a{q)mi$G?7Ze{Z7l?xCE6avrbf8BYc&B_MospK`_(MOu7!PT67&Ei|tpg0Zw* zt|7SaLD^l_11l{GtfylJG#0JvLrr-O8}vSoSbjP4?Nz(r-&L>D5|G0i(eSQ7@mz~$|@4WxEtWI%*VIGqc!WmdBVPZIW ztZEBwW1nD>6*xzt{)vE2=x3|X~@pJ;F*TD%cbjANoIv^+!QN9S|Ku=dcmvv4F FO#qJ%7I^>w literal 0 HcmV?d00001 diff --git a/assets/hbm/textures/gui/gui_press.png b/assets/hbm/textures/gui/gui_press.png new file mode 100644 index 0000000000000000000000000000000000000000..5b1efed2bf11096b34e0a303b6652c9f00b4ba0f GIT binary patch literal 4797 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 diff --git a/assets/hbm/textures/items/pellet_coal.png b/assets/hbm/textures/items/pellet_coal.png new file mode 100644 index 0000000000000000000000000000000000000000..0672275f859dbe13ace7e9ab3fed9288815b92ec GIT binary patch literal 151 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!61|;P_|4#%`EX7WqAsj$Z!;#VfFVdQ&MBb@0C){D3jhEB literal 0 HcmV?d00001 diff --git a/assets/hbm/textures/items/stamp_iron_circuit.png b/assets/hbm/textures/items/stamp_iron_circuit.png new file mode 100644 index 0000000000000000000000000000000000000000..6dcef43854674b4261d4ccbd6b9fdee1b1c96b23 GIT binary patch literal 297 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!61|;P_|4#%`EX7WqAsj$Z!;#VfxhCtYrNR|N1SUeKj9Pm)_CQS<`F%C30o{ZZiQ^KZ1cT!H!0BUqdIqGg7KN( z&w4X1m)@1;cVS47Ii5ASSTB11^Pk*1yf^|`^-c>djC9D*Qe80RP!#w3TFD8<&%W#u zYY_bP0l+XkKL;-Y< literal 0 HcmV?d00001 diff --git a/assets/hbm/textures/items/stamp_iron_flat.png b/assets/hbm/textures/items/stamp_iron_flat.png new file mode 100644 index 0000000000000000000000000000000000000000..e9cee205e8cfe799a705fb98b6c3842678d1b7b1 GIT binary patch literal 226 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!61|;P_|4#%`EX7WqAsj$Z!;#VfbP0l+XkK3H(&l literal 0 HcmV?d00001 diff --git a/assets/hbm/textures/items/stamp_iron_plate.png b/assets/hbm/textures/items/stamp_iron_plate.png new file mode 100644 index 0000000000000000000000000000000000000000..23ff1d4a07d40f4d8ba9c605b8e1617f8ea7401c GIT binary patch literal 245 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!61|;P_|4#%`EX7WqAsj$Z!;#VfJ1*K2w{*-_-)!?$4dLqsK7cW&#t# z`@h>XpX=N^F0r41q2QeC?qyT*R!DKHb9QhjvP=o8WBfnq%Q;`+gy}6E=NJ~>5)kw? zy=va`gC$i-6P3 z7%Sc{chy|_?&rSu@(c~d@7}L8JjNCJy!+;p#}*71qJ*6kp5I||TkVzXFDj7il6_Zq z)3twWcg`+gJn^c?@RQ!JdnL0Dp83ss;dH{Yzf3!3J8CXvWyraGO=O;~$7NM!O_|DR x$L58c+qurPirqMrTe0Q#Wk#{&GmGE+iJ|Nn;zXnCm$3teK*G?*=Fl`r|O$f+oMR{K$TXNC(`53lq{ z^nSPWiLJsM-}B2Gb-(JFNPZA~%F!Z_u=7yVRDKW1;NX^S-}4HqHa*)dvEjtYxv~eR znq~WLS*-nRilGt%!&=dfRckh`cIUU}vXI(c#lm1a3P3a@rdeV@q(Nb$?a|Berz5;e+xf- Z#{85$!>mS8N)hNW22WQ%mvv4FO#n4+YLWl| literal 0 HcmV?d00001 diff --git a/assets/hbm/textures/items/stamp_obsidian_flat.png b/assets/hbm/textures/items/stamp_obsidian_flat.png new file mode 100644 index 0000000000000000000000000000000000000000..bd35e1d27965810dcb01bbe0bf9239fcbc770e3a GIT binary patch literal 220 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!61|;P_|4#%`EX7WqAsj$Z!;#VfX)&!PC{xWt~$(695F>Q6&HX literal 0 HcmV?d00001 diff --git a/assets/hbm/textures/items/stamp_obsidian_plate.png b/assets/hbm/textures/items/stamp_obsidian_plate.png new file mode 100644 index 0000000000000000000000000000000000000000..57b37bd522dba0f98feb62665bd15fcaadb79365 GIT binary patch literal 239 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!61|;P_|4#%`EX7WqAsj$Z!;#Vf>y0Ha&J!jjjvtrumETK2T%6$@d1XvqpxH{DN*$FVPM03{Z kvfPfI&35nm|J`BvL4SO2r(R7B2D+HR)78&qol`;+0DBExT>t<8 literal 0 HcmV?d00001 diff --git a/assets/hbm/textures/items/stamp_obsidian_wire.png b/assets/hbm/textures/items/stamp_obsidian_wire.png new file mode 100644 index 0000000000000000000000000000000000000000..144bb8fb9e0e83985c4df7039656be4a2b737130 GIT binary patch literal 239 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!61|;P_|4#%`EX7WqAsj$Z!;#Vf5r_Vl2{@f#WpH_S^T9qRm6cgWliwz+EmoPPkjAZWz1-mT mlzGdp+HzLJ|2w4ngMt5FxXSK1w@iU9X7F_Nb6Mw<&;$Svb6`*a literal 0 HcmV?d00001 diff --git a/assets/hbm/textures/items/stamp_schrabidium_circuit.png b/assets/hbm/textures/items/stamp_schrabidium_circuit.png new file mode 100644 index 0000000000000000000000000000000000000000..de537a58644bbacb19daf9a88dad598582fc3ccc GIT binary patch literal 297 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!61|;P_|4#%`EX7WqAsj$Z!;#VfwaZ?l1ji@sng*Aq^S3D#0vw|EY6<+x5|T#(2uZc-w~%3PzUywjhnrB(K})5+4B zclTBq^UZ!00TKG&x|2*sN-D}&EvTwWJFk|?A tR$I?C=D^B}*I&-N$$jDQ2j}nW_^*FUe)Q5aPX*{#22WQ%mvv4FO#lh;cWVFu literal 0 HcmV?d00001 diff --git a/assets/hbm/textures/items/stamp_schrabidium_flat.png b/assets/hbm/textures/items/stamp_schrabidium_flat.png new file mode 100644 index 0000000000000000000000000000000000000000..7a6e25e7644186fe7691e8856962d021893c964b GIT binary patch literal 231 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!61|;P_|4#%`EX7WqAsj$Z!;#VfwaZ?l1bYrKm80XY*9pCe&s1f;etIKi+^;z3Gcr=6xwqlex%#_+i{b?^77+Q0a1 zZhnf!B zENj|^DGzvNh(u cmj7Znn&h$J_J^~|K$kLjy85}Sb4q9e0MXb}Hvj+t literal 0 HcmV?d00001 diff --git a/assets/hbm/textures/items/stamp_schrabidium_plate.png b/assets/hbm/textures/items/stamp_schrabidium_plate.png new file mode 100644 index 0000000000000000000000000000000000000000..847e870ea8895fd8c3b64ce0c41717778c3daf16 GIT binary patch literal 252 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!61|;P_|4#%`EX7WqAsj$Z!;#Vf|uZ?l0w>wXWP19B!J^E%efP&Dyz@SeyRliD!3RrS{rhlm8e+ktVF_U~)c?O*)n zuV2BGv0Kmb$(-QV?-OtEFvNY1nR81@*k|>QK&J}~{(>L= literal 0 HcmV?d00001 diff --git a/assets/hbm/textures/items/stamp_schrabidium_wire.png b/assets/hbm/textures/items/stamp_schrabidium_wire.png new file mode 100644 index 0000000000000000000000000000000000000000..e2447983c56332a26973d2883b2f426beff9dc2a GIT binary patch literal 261 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!61|;P_|4#%`EX7WqAsj$Z!;#Vfwm?_mXzmi-<+4>*H%EG<0fa_^M!k>2eK5*SwTH0UVr^ylJEl2Pz0QoXZ#KD&6^ z!-Mhy46*maJwMx|pMU>&2PcEXTL0Z;Uao2bJ5dc+-eyaeMnBDz z&Z{Q#S$nR{P|`iRZ&gG1mx91oate&qJ_Tt8?Z5c6?%rqFclY2fos|p+w&n^y+UO)P zN#N{}c@eK<*op-zfZGpg$NqUHx3v IIVCg!023Eu7ytkO literal 0 HcmV?d00001 diff --git a/assets/hbm/textures/items/stamp_steel_circuit.png b/assets/hbm/textures/items/stamp_steel_circuit.png new file mode 100644 index 0000000000000000000000000000000000000000..0340daed7232c397b0be6bb5781249d2c8af0875 GIT binary patch literal 299 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!61|;P_|4#%`EX7WqAsj$Z!;#Vf}ZM}-w^E-|9o0uJX z0{3327XMy+E|`H~smSM$_kT6-+Vku1c5rB_8hj4jz_hf3iCcp!EFs%h>%<{y8aa64{l)T+kwrr=OvlwKn)e#hd6j`SqUb Ug@sm|0^P{q>FVdQ&MBb@06aWQ+yDRo literal 0 HcmV?d00001 diff --git a/assets/hbm/textures/items/stamp_steel_plate.png b/assets/hbm/textures/items/stamp_steel_plate.png new file mode 100644 index 0000000000000000000000000000000000000000..b991eb76d52f0d1af0a6d8537b31321d38f19df9 GIT binary patch literal 242 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!61|;P_|4#%`EX7WqAsj$Z!;#Vfd%z1zF>8xuoAah`Q3N1=11^^HsimkUwK&;PKjnRVr)YkWhbuu_v@8gGW_uOrd{ zJZlTLS>#^OYZKV@TrnZ#UfzbyGlE_*w+JXKQhji7fnSf|A&JdbnHVC@{apTJ5%U4f nr7}{dqN_jMi*LBTajMgTe~DWM4fz295X literal 0 HcmV?d00001 diff --git a/assets/hbm/textures/items/stamp_steel_wire.png b/assets/hbm/textures/items/stamp_steel_wire.png new file mode 100644 index 0000000000000000000000000000000000000000..462d6d44e5e1be4b92047ffa4618923e40b9841c GIT binary patch literal 251 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!61|;P_|4#%`EX7WqAsj$Z!;#VfWGi37XD%@!5cxXk_gt9@^8)3!gr zz;n33yUS4Q{_@OQJPdP+`-9hR-Mw;W-5u5QpLrTO4EmHcm)=*BKAPUa`1Yy_u$*v~sH^&~IDu63t7t_z2#D76UiF{@t73rplw xTe{`?ue4^ih~N9x3%$Fv_xtRF$2Y3)VW|BS_ri8grWerl44$rjF6*2UngEyeV`%^Y literal 0 HcmV?d00001 diff --git a/assets/hbm/textures/items/stamp_stone_circuit.png b/assets/hbm/textures/items/stamp_stone_circuit.png new file mode 100644 index 0000000000000000000000000000000000000000..4234e4e8787c1a995733aef4e37dc8da0b2eb3f2 GIT binary patch literal 267 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!61|;P_|4#%`EX7WqAsj$Z!;#VfTp0Gquw#^$pB>wzwD8$VZp~3T3;HcKh&J|U{H_D$s{upunYpcBhW5f4< z(?YUCUn{m8cF4YS&{BQbs)L@dR1JGPc>z$G&k-Y2T(FIeO9{i|OW->i!8F={XnNPxelF{r5}E*_>1|*D literal 0 HcmV?d00001 diff --git a/assets/hbm/textures/items/stamp_stone_flat.png b/assets/hbm/textures/items/stamp_stone_flat.png new file mode 100644 index 0000000000000000000000000000000000000000..72d2f52feac8241f44551558704b28030cfe5d05 GIT binary patch literal 212 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!61|;P_|4#%`EX7WqAsj$Z!;#Vf;k%==MjMq)78&q Iol`;+0Q=}o0RR91 literal 0 HcmV?d00001 diff --git a/assets/hbm/textures/items/stamp_stone_plate.png b/assets/hbm/textures/items/stamp_stone_plate.png new file mode 100644 index 0000000000000000000000000000000000000000..e70463b464c74fdb476cb804d21e645ff074604a GIT binary patch literal 223 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!61|;P_|4#%`EX7WqAsj$Z!;#Vf$k6Dq2#aytiNm}mMe{Yql(}!GxTwDqY4#aNaJv8IyR(Zu1@wy4j4DbJLIeDh- z>y%6E0eZWWp6Oqal`j(#5OiT#b&Dy?Gwb;xJ_Bzj7ug4uS>Y$o_=&&ta<085A1>8r zz?}Q`!Fx`(Q_HhR05ybIqT2BBDRX S<*F;NpocQ+LF~IBQznlujhRwmQ UjGP++fi7h5boFyt=akR{0LJH5-T(jq literal 0 HcmV?d00001 diff --git a/assets/hbm/textures/items/stamp_titanium_circuit.png b/assets/hbm/textures/items/stamp_titanium_circuit.png new file mode 100644 index 0000000000000000000000000000000000000000..5725e422af485cba1bc6ee08dc093041358fcfe4 GIT binary patch literal 286 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!61|;P_|4#%`EX7WqAsj$Z!;#Vf^OvK-XD(`Ze=H`u>UqwA fUF+=4<9{&JKF+EX3}4_5^dN($tDnm{r-UW|fwOPG literal 0 HcmV?d00001 diff --git a/assets/hbm/textures/items/stamp_titanium_flat.png b/assets/hbm/textures/items/stamp_titanium_flat.png new file mode 100644 index 0000000000000000000000000000000000000000..1d7024abcc6549075d2b11ea580b4609bc035caf GIT binary patch literal 224 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!61|;P_|4#%`EX7WqAsj$Z!;#VfaSXBO zT{`I?FS8;Ki@DI-AKtEeUh>$LIC8FIRE%-_WbtBz@`{Q?G?yN@Uz`*EbVkU_v{ zM%=5ttAATQcV=MN8dkjO`@bo>-ZOhMD>->_Dt*$7XuP$8iF*ZCSVFe1_#fs~yk!Sg z9$;G4Bx-SN$C~B-7aX=8T>nI}g3E>Fz(?-R6G1O-F)+-KJhSKSAw~zyRO_F%`Y%8E V$Xk{kVFx;q!PC{xWt~$(698%xQSJZ$ literal 0 HcmV?d00001 diff --git a/assets/hbm/textures/items/stamp_titanium_plate.png b/assets/hbm/textures/items/stamp_titanium_plate.png new file mode 100644 index 0000000000000000000000000000000000000000..96d17620861fd9dc005d9d5b4c0d5ace4263f867 GIT binary patch literal 242 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!61|;P_|4#%`EX7WqAsj$Z!;#VfYS?_mW2*Lsy}JEwK7xXB}>wqu&$3`WHn3Ytnf&4v%2XtDgiSO3jB`|mM%Wd;XL zQ{JUh+P+`ArO&{y=lkuoL8q9teznUoD>WIiEuA8^!N}75`c8&4H5Zn&IObnFe|NGk zVEgqTr!eb+{xOO6=g|jZD{d#G8$P#T^U!p3@pecq$n()`oVi_x!C^{JT~;0sgF;J# nz#-Lu{iR$5=WO%VeP;Zq(pzW6UC4Gd>h;FF py9!IM>`%MCm%Bxvu1stXgL!6xreJK;BA~MwJYD@<);T3K0RWowSG@oL literal 0 HcmV?d00001 diff --git a/assets/hbm/textures/models/ModelRubble.png b/assets/hbm/textures/models/ModelRubble.png deleted file mode 100644 index 1235578b87fff69657f973a388103d9912646c82..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 462 zcmV;<0WtoGP)Px#1ZP1_K>z@;j|==^1poj532;bRa{vGi!vFvd!vV){sAK>D0b@x-K~!i%?bp3d z!!QsB@N=F52_)VDv1D!Epb{e+TUMCK4r8OdMc=@znUOkWVxW)F9FB68>aWy*)4J;Y zq$-JHsm=MHvns&!1W0GP8#FB#3ss#JD96?6Mf0K_A@f9Jz&fNt}RI~!@G@Irm zEBRN^3sBq_XO#f)2Kqby0&2to)t!C9(<-103_$6tlQ?REtOQ8;fQZkK=U1aEDP^bT zftuHi&P$z@fIInxv)Qc>;+;kYW&%FsR?W-QJQ^TqG;?oKf=!zUD*>xjtG-fy_%TJH zC!niq?K<_OSOuu6&!CFW=fmn(Ri@8hujxeBG{(F{MBfEqv7i&3nUqvS-v!RT2V9!T z3sBcX6YO7sz9G`EL%-6l&$OZ!pv&F=1(wT9v@KmE#OeViUr*REdxI&w2TZ@(E*IYe z4kln<=ngT)pNP{Wz*&IbJZNeU#290YF~%5Uj2!~-1JqJ-{^*&OQ2+n{07*qoM6N<$ Ef`g*T6aWAK diff --git a/assets/hbm/textures/models/press_base.png b/assets/hbm/textures/models/press_base.png new file mode 100644 index 0000000000000000000000000000000000000000..1f12b4717cefbe3ef8ffe9ed9b43f6d9cd6d909f GIT binary patch literal 200 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!61|;P_|4#%`EX7WqAsj$Z!;#VfFsNLtb{9%JHfQqbcX!TzUh=(fw{oYY`qr?h>=}{=)<&lVc_|t*7L@lrb`Y9* wa`Nr3LV{PK>K~^@?&IhGXI3Ho$FrG#?^SN&veQYgfKFlXboFyt=akR{0QL(^M*si- literal 0 HcmV?d00001 diff --git a/assets/hbm/textures/models/press_body.png b/assets/hbm/textures/models/press_body.png new file mode 100644 index 0000000000000000000000000000000000000000..62c11e6d3ff1197b02e3910163a9f18567dda11c GIT binary patch literal 3068 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 Cb>ABR literal 0 HcmV?d00001 diff --git a/assets/hbm/textures/models/press_body_wf.png b/assets/hbm/textures/models/press_body_wf.png new file mode 100644 index 0000000000000000000000000000000000000000..e15a02ea2c55af6bd9abb4db79a13f8420c5ca57 GIT binary patch literal 35007 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 literal 0 HcmV?d00001 diff --git a/com/hbm/blocks/ModBlocks.java b/com/hbm/blocks/ModBlocks.java index b30d92fc4..a8071aa23 100644 --- a/com/hbm/blocks/ModBlocks.java +++ b/com/hbm/blocks/ModBlocks.java @@ -375,8 +375,8 @@ public class ModBlocks { public static Block machine_turbofan; public static final int guiID_machine_turbofan = 52; - public static Block machine_inserter; - public static final int guiID_machine_inserter = 53; + public static Block machine_press; + public static final int guiID_machine_press = 53; public static Block turret_light; public static Block turret_heavy; @@ -719,7 +719,7 @@ public class ModBlocks { machine_chemplant = new MachineChemplant(Material.iron).setBlockName("machine_chemplant").setHardness(5.0F).setResistance(100.0F).setCreativeTab(MainRegistry.tabBlock).setBlockTextureName(RefStrings.MODID + ":machine_chemplant"); machine_fluidtank = new MachineFluidTank(Material.iron).setBlockName("machine_fluidtank").setHardness(5.0F).setResistance(100.0F).setCreativeTab(MainRegistry.tabBlock).setBlockTextureName(RefStrings.MODID + ":machine_fluidtank"); machine_turbofan = new MachineTurbofan(Material.iron).setBlockName("machine_turbofan").setHardness(5.0F).setResistance(10.0F).setCreativeTab(MainRegistry.tabBlock).setBlockTextureName(RefStrings.MODID + ":machine_turbofan"); - machine_inserter = new BombRejuvinator(Material.iron).setBlockName("machine_inserter").setHardness(5.0F).setResistance(10.0F).setCreativeTab(MainRegistry.tabBlock).setBlockTextureName(RefStrings.MODID + ":inserter_side"); + machine_press = new MachinePress(Material.iron).setBlockName("machine_press").setHardness(5.0F).setResistance(10.0F).setCreativeTab(MainRegistry.tabBlock).setBlockTextureName(RefStrings.MODID + ":machine_press"); machine_schrabidium_transmutator = new MachineSchrabidiumTransmutator(Material.iron).setBlockName("machine_schrabidium_transmutator").setHardness(5.0F).setResistance(100.0F).setCreativeTab(MainRegistry.tabBlock); @@ -944,6 +944,7 @@ public class ModBlocks { GameRegistry.registerBlock(crate_steel, crate_steel.getUnlocalizedName()); //Machines + GameRegistry.registerBlock(machine_press, machine_press.getUnlocalizedName()); GameRegistry.registerBlock(machine_difurnace_off, machine_difurnace_off.getUnlocalizedName()); GameRegistry.registerBlock(machine_difurnace_on, machine_difurnace_on.getUnlocalizedName()); GameRegistry.registerBlock(machine_centrifuge, machine_centrifuge.getUnlocalizedName()); diff --git a/com/hbm/blocks/machine/MachineInserter.java b/com/hbm/blocks/machine/MachinePress.java similarity index 73% rename from com/hbm/blocks/machine/MachineInserter.java rename to com/hbm/blocks/machine/MachinePress.java index 918a146a2..fada7df4c 100644 --- a/com/hbm/blocks/machine/MachineInserter.java +++ b/com/hbm/blocks/machine/MachinePress.java @@ -3,64 +3,63 @@ package com.hbm.blocks.machine; import java.util.Random; import com.hbm.blocks.ModBlocks; -import com.hbm.lib.RefStrings; import com.hbm.main.MainRegistry; -import com.hbm.tileentity.machine.TileEntityMachineInserter; -import com.hbm.tileentity.machine.TileEntityNukeFurnace; +import com.hbm.tileentity.machine.TileEntityMachinePress; +import com.hbm.tileentity.machine.TileEntityMachinePuF6Tank; import cpw.mods.fml.common.network.internal.FMLNetworkHandler; -import cpw.mods.fml.relauncher.Side; -import cpw.mods.fml.relauncher.SideOnly; import net.minecraft.block.Block; import net.minecraft.block.BlockContainer; import net.minecraft.block.material.Material; -import net.minecraft.client.renderer.texture.IIconRegister; import net.minecraft.entity.item.EntityItem; import net.minecraft.entity.player.EntityPlayer; +import net.minecraft.item.Item; import net.minecraft.item.ItemStack; import net.minecraft.nbt.NBTTagCompound; import net.minecraft.tileentity.TileEntity; -import net.minecraft.util.IIcon; import net.minecraft.world.World; -public class MachineInserter extends BlockContainer { - +public class MachinePress extends BlockContainer { + private final Random field_149933_a = new Random(); - private Random rand; private static boolean keepInventory; - - @SideOnly(Side.CLIENT) - private IIcon iconTop; - public MachineInserter(Material p_i45394_1_) { - super(p_i45394_1_); + public MachinePress(Material p_i45386_1_) { + super(p_i45386_1_); } @Override - @SideOnly(Side.CLIENT) - public void registerBlockIcons(IIconRegister iconRegister) { - - this.iconTop = iconRegister.registerIcon(RefStrings.MODID + ":inserter_top"); - this.blockIcon = iconRegister.registerIcon(RefStrings.MODID + ":inserter_side"); - } - - @Override - @SideOnly(Side.CLIENT) - public IIcon getIcon(int side, int metadata) { - return side == 1 ? this.iconTop : (side == 0 ? this.iconTop : this.blockIcon); - } + public Item getItemDropped(int p_149650_1_, Random p_149650_2_, int p_149650_3_) + { + return Item.getItemFromBlock(ModBlocks.machine_press); + } @Override public TileEntity createNewTileEntity(World p_149915_1_, int p_149915_2_) { - return new TileEntityMachineInserter(); + return new TileEntityMachinePress(); + } + + @Override + public int getRenderType() { + return -1; + } + + @Override + public boolean isOpaqueCube() { + return false; + } + + @Override + public boolean renderAsNormalBlock() { + return false; } @Override public void breakBlock(World p_149749_1_, int p_149749_2_, int p_149749_3_, int p_149749_4_, Block p_149749_5_, int p_149749_6_) - { + { if (!keepInventory) { - TileEntityMachineInserter tileentityfurnace = (TileEntityMachineInserter)p_149749_1_.getTileEntity(p_149749_2_, p_149749_3_, p_149749_4_); + TileEntityMachinePress tileentityfurnace = (TileEntityMachinePress)p_149749_1_.getTileEntity(p_149749_2_, p_149749_3_, p_149749_4_); if (tileentityfurnace != null) { @@ -114,10 +113,10 @@ public class MachineInserter extends BlockContainer { return true; } else if(!player.isSneaking()) { - TileEntityMachineInserter entity = (TileEntityMachineInserter) world.getTileEntity(x, y, z); + TileEntityMachinePress entity = (TileEntityMachinePress) world.getTileEntity(x, y, z); if(entity != null) { - FMLNetworkHandler.openGui(player, MainRegistry.instance, ModBlocks.guiID_machine_inserter, world, x, y, z); + FMLNetworkHandler.openGui(player, MainRegistry.instance, ModBlocks.guiID_machine_press, world, x, y, z); } return true; } else { diff --git a/com/hbm/entity/effect/EntityNukeCloudSmall.java b/com/hbm/entity/effect/EntityNukeCloudSmall.java index 675421796..4f4bcf21b 100644 --- a/com/hbm/entity/effect/EntityNukeCloudSmall.java +++ b/com/hbm/entity/effect/EntityNukeCloudSmall.java @@ -77,21 +77,39 @@ public class EntityNukeCloudSmall extends Entity { } else { scale = 0; } + + this.dataWatcher.updateObject(16, (short)maxAge); + this.dataWatcher.updateObject(17, (short)age); + this.dataWatcher.updateObject(18, (short)scale); + this.dataWatcher.updateObject(19, (short)ring); + this.dataWatcher.updateObject(20, (short)height); } @Override protected void entityInit() { - + this.dataWatcher.addObject(16, (short)maxAge); + this.dataWatcher.addObject(17, (short)age); + this.dataWatcher.addObject(18, (short)scale); + this.dataWatcher.addObject(19, (short)ring); + this.dataWatcher.addObject(20, (short)height); } @Override protected void readEntityFromNBT(NBTTagCompound p_70037_1_) { + maxAge = p_70037_1_.getShort("maxAge"); age = p_70037_1_.getShort("age"); + scale = p_70037_1_.getShort("scale"); + ring = p_70037_1_.getShort("ring"); + height = p_70037_1_.getShort("height"); } @Override protected void writeEntityToNBT(NBTTagCompound p_70014_1_) { + p_70014_1_.setShort("maxAge", (short)maxAge); p_70014_1_.setShort("age", (short)age); + p_70014_1_.setShort("scale", (short)scale); + p_70014_1_.setShort("ring", (short)ring); + p_70014_1_.setShort("height", (short)height); } diff --git a/com/hbm/handler/GUIHandler.java b/com/hbm/handler/GUIHandler.java index e82eb2211..6345e8a3c 100644 --- a/com/hbm/handler/GUIHandler.java +++ b/com/hbm/handler/GUIHandler.java @@ -42,6 +42,7 @@ import com.hbm.tileentity.machine.TileEntityMachineIGenerator; import com.hbm.tileentity.machine.TileEntityMachineInserter; import com.hbm.tileentity.machine.TileEntityMachineMiningDrill; import com.hbm.tileentity.machine.TileEntityMachineOilWell; +import com.hbm.tileentity.machine.TileEntityMachinePress; import com.hbm.tileentity.machine.TileEntityMachinePuF6Tank; import com.hbm.tileentity.machine.TileEntityMachinePumpjack; import com.hbm.tileentity.machine.TileEntityMachineRTG; @@ -480,11 +481,11 @@ public class GUIHandler implements IGuiHandler { } } - case ModBlocks.guiID_machine_inserter: + case ModBlocks.guiID_machine_press: { - if(entity instanceof TileEntityMachineInserter) + if(entity instanceof TileEntityMachinePress) { - return new ContainerMachineInserter(player.inventory, (TileEntityMachineInserter) entity); + return new ContainerMachinePress(player.inventory, (TileEntityMachinePress) entity); } } } @@ -908,11 +909,11 @@ public class GUIHandler implements IGuiHandler { } } - case ModBlocks.guiID_machine_inserter: + case ModBlocks.guiID_machine_press: { - if(entity instanceof TileEntityMachineInserter) + if(entity instanceof TileEntityMachinePress) { - return new GUIMachineInserter(player.inventory, (TileEntityMachineInserter) entity); + return new GUIMachinePress(player.inventory, (TileEntityMachinePress) entity); } } } diff --git a/com/hbm/handler/nei/CMBFurnaceRecipeHandler.java b/com/hbm/handler/nei/CMBFurnaceRecipeHandler.java index e8ad974a7..f085de149 100644 --- a/com/hbm/handler/nei/CMBFurnaceRecipeHandler.java +++ b/com/hbm/handler/nei/CMBFurnaceRecipeHandler.java @@ -107,8 +107,8 @@ public class CMBFurnaceRecipeHandler extends TemplateRecipeHandler { transferRectsGui = new LinkedList(); guiGui = new LinkedList>(); - transferRects.add(new RecipeTransferRect(new Rectangle(74 + 6, 23, 24, 18), "cmbsmelting")); - transferRectsGui.add(new RecipeTransferRect(new Rectangle(63 - 7 + 4, 89 - 11, 34, 18), "cmbsmelting")); + transferRects.add(new RecipeTransferRect(new Rectangle(74 + 6 + 18, 23 + 9, 24, 18), "cmbsmelting")); + transferRectsGui.add(new RecipeTransferRect(new Rectangle(74 + 6 + 18, 23, 24, 18), "cmbsmelting")); guiGui.add(GUIMachineCMBFactory.class); RecipeTransferRectHandler.registerRectsToGuis(getRecipeTransferRectGuis(), transferRects); RecipeTransferRectHandler.registerRectsToGuis(guiGui, transferRectsGui); diff --git a/com/hbm/handler/nei/PressRecipeHandler.java b/com/hbm/handler/nei/PressRecipeHandler.java new file mode 100644 index 000000000..2bec5d550 --- /dev/null +++ b/com/hbm/handler/nei/PressRecipeHandler.java @@ -0,0 +1,169 @@ +package com.hbm.handler.nei; + +import java.awt.Rectangle; +import java.util.ArrayList; +import java.util.Arrays; +import java.util.LinkedList; +import java.util.List; +import java.util.Map; + +import com.hbm.handler.nei.ShredderRecipeHandler.Fuel; +import com.hbm.inventory.MachineRecipes; +import com.hbm.inventory.gui.GUIMachinePress; +import com.hbm.inventory.gui.GUIMachineShredder; +import com.hbm.items.ModItems; +import com.hbm.lib.RefStrings; + +import codechicken.nei.NEIServerUtils; +import codechicken.nei.PositionedStack; +import codechicken.nei.recipe.TemplateRecipeHandler; +import net.minecraft.client.gui.inventory.GuiContainer; +import net.minecraft.item.ItemStack; + +public class PressRecipeHandler extends TemplateRecipeHandler { + + public LinkedList transferRectsRec = new LinkedList(); + public LinkedList transferRectsGui = new LinkedList(); + public LinkedList> guiRec = new LinkedList>(); + public LinkedList> guiGui = new LinkedList>(); + + public class SmeltingSet extends TemplateRecipeHandler.CachedRecipe + { + PositionedStack input; + PositionedStack result; + + public ArrayList fuels = new ArrayList(); + + public SmeltingSet(List stamp, ItemStack input, ItemStack result) { + input.stackSize = 1; + this.input = new PositionedStack(input, 83 - 35, 5 + 36 + 1); + this.result = new PositionedStack(result, 83 + 28, 5 + 18 + 1); + + if(stamp.isEmpty()) + fuels.add(new Fuel(new ItemStack(ModItems.nothing))); + else + for(ItemStack sta : stamp) + fuels.add(new Fuel(sta)); + } + + @Override + public List getIngredients() { + return getCycledIngredients(cycleticks / 48, Arrays.asList(new PositionedStack[] {input})); + } + + @Override + public List getOtherStacks() { + List stacks = new ArrayList(); + stacks.add(fuels.get((cycleticks / 24) % fuels.size()).stack); + return stacks; + } + + @Override + public PositionedStack getResult() { + return result; + } + } + + public static class Fuel + { + public Fuel(ItemStack ingred) { + + this.stack = new PositionedStack(ingred, 83 - 35, 6, false); + } + + public PositionedStack stack; + } + + @Override + public String getRecipeName() { + return "Steam Press"; + } + + @Override + public String getGuiTexture() { + return RefStrings.MODID + ":textures/gui/gui_nei_press.png"; + } + + @Override + public void loadCraftingRecipes(String outputId, Object... results) { + if ((outputId.equals("pressing")) && getClass() == PressRecipeHandler.class) { + Map recipes = MachineRecipes.instance().getPressRecipes(); + for (Map.Entry recipe : recipes.entrySet()) { + this.arecipes.add(new SmeltingSet((List)recipe.getKey()[0], (ItemStack)recipe.getKey()[1], (ItemStack)recipe.getValue())); + } + } else { + super.loadCraftingRecipes(outputId, results); + } + } + + @Override + public void loadCraftingRecipes(ItemStack result) { + Map recipes = MachineRecipes.instance().getPressRecipes(); + for (Map.Entry recipe : recipes.entrySet()) { + if (NEIServerUtils.areStacksSameType((ItemStack)recipe.getValue(), result)) + this.arecipes.add(new SmeltingSet((List)recipe.getKey()[0], (ItemStack)recipe.getKey()[1], (ItemStack)recipe.getValue())); + } + } + + @Override + public void loadUsageRecipes(String inputId, Object... ingredients) { + if ((inputId.equals("pressing")) && getClass() == PressRecipeHandler.class) { + loadCraftingRecipes("pressing", new Object[0]); + } else { + super.loadUsageRecipes(inputId, ingredients); + } + } + + @Override + public void loadUsageRecipes(ItemStack ingredient) { + Map recipes = MachineRecipes.instance().getPressRecipes(); + for (Map.Entry recipe : recipes.entrySet()) { + + boolean b = false; + for(int i = 0; i < ((List)recipe.getKey()[0]).size(); i++) { + if(NEIServerUtils.areStacksSameType(((List)recipe.getKey()[0]).get(i), ingredient)) { + b = true; + break; + } + } + + if (b || NEIServerUtils.areStacksSameType(ingredient, (ItemStack)recipe.getKey()[1])) + this.arecipes.add(new SmeltingSet((List)recipe.getKey()[0], (ItemStack)recipe.getKey()[1], (ItemStack)recipe.getValue())); + } + } + + @Override + public Class getGuiClass() { + //return GUIMachineShredder.class; + return null; + } + + @Override + public void loadTransferRects() { + //transferRectsRec = new LinkedList(); + transferRectsGui = new LinkedList(); + //guiRec = new LinkedList>(); + guiGui = new LinkedList>(); + + transferRects.add(new RecipeTransferRect(new Rectangle(74 + 6, 23, 24, 18), "pressing")); + transferRectsGui.add(new RecipeTransferRect(new Rectangle(74 + 6 + 18, 23, 24, 18), "pressing")); + //guiRec.add(GuiRecipe.class); + guiGui.add(GUIMachinePress.class); + RecipeTransferRectHandler.registerRectsToGuis(getRecipeTransferRectGuis(), transferRects); + //RecipeTransferRectHandler.registerRectsToGuis(guiRec, transferRectsRec); + RecipeTransferRectHandler.registerRectsToGuis(guiGui, transferRectsGui); + + //for(Class r : getRecipeTransferRectGuis()) + // System.out.println(r.toString()); + } + + @Override + public void drawExtras(int recipe) { + drawProgressBar(47, 24, 0, 86, 18, 18, 20, 1); + } + + @Override + public TemplateRecipeHandler newInstance() { + return super.newInstance(); + } +} diff --git a/com/hbm/inventory/MachineRecipes.java b/com/hbm/inventory/MachineRecipes.java index 6e6f4630a..dc6019e76 100644 --- a/com/hbm/inventory/MachineRecipes.java +++ b/com/hbm/inventory/MachineRecipes.java @@ -227,7 +227,176 @@ public class MachineRecipes { return null; } + + public static List stamps_flat = new ArrayList() {{ + add(ModItems.stamp_stone_flat); + add(ModItems.stamp_iron_flat); + add(ModItems.stamp_steel_flat); + add(ModItems.stamp_titanium_flat); + add(ModItems.stamp_obsidian_flat); + add(ModItems.stamp_schrabidium_flat); + }}; + + public static List stamps_plate = new ArrayList() {{ + add(ModItems.stamp_stone_plate); + add(ModItems.stamp_iron_plate); + add(ModItems.stamp_steel_plate); + add(ModItems.stamp_titanium_plate); + add(ModItems.stamp_obsidian_plate); + add(ModItems.stamp_schrabidium_plate); + }}; + + public static List stamps_wire = new ArrayList() {{ + add(ModItems.stamp_stone_wire); + add(ModItems.stamp_iron_wire); + add(ModItems.stamp_steel_wire); + add(ModItems.stamp_titanium_wire); + add(ModItems.stamp_obsidian_wire); + add(ModItems.stamp_schrabidium_wire); + }}; + + public static List stamps_circuit = new ArrayList() {{ + add(ModItems.stamp_stone_circuit); + add(ModItems.stamp_iron_circuit); + add(ModItems.stamp_steel_circuit); + add(ModItems.stamp_titanium_circuit); + add(ModItems.stamp_obsidian_circuit); + add(ModItems.stamp_schrabidium_circuit); + }}; + + public static ItemStack getPressResultNN(Item stamp, Item input) { + return getPressResult(input, stamp) == null ? new ItemStack(ModItems.nothing) : getPressResult(input, stamp); + } + + public static ItemStack getPressResult(Item input, Item stamp) { + + if(stamps_flat.contains(stamp)) { + + if(mODE(input, "dustCoal")) + return new ItemStack(Items.coal); + if(mODE(input, "dustQuartz")) + return new ItemStack(Items.quartz); + if(mODE(input, "dustNetherQuartz")) + return new ItemStack(Items.quartz); + if(mODE(input, "dustLapis")) + return new ItemStack(Items.dye, 1, 4); + if(mODE(input, "dustDiamond")) + return new ItemStack(Items.diamond); + if(mODE(input, "dustEmerald")) + return new ItemStack(Items.emerald); + if(input == ModItems.pellet_coal) + return new ItemStack(Items.diamond); + } + + if(stamps_plate.contains(stamp)) { + + if(mODE(input, "ingotIron")) + return new ItemStack(ModItems.plate_iron); + if(mODE(input, "ingotGold")) + return new ItemStack(ModItems.plate_gold); + if(mODE(input, "ingotTitanium")) + return new ItemStack(ModItems.plate_titanium); + if(mODE(input, "ingotAluminum")) + return new ItemStack(ModItems.plate_aluminium); + if(mODE(input, "ingotSteel")) + return new ItemStack(ModItems.plate_steel); + if(mODE(input, "ingotLead")) + return new ItemStack(ModItems.plate_lead); + if(mODE(input, "ingotCopper")) + return new ItemStack(ModItems.plate_copper); + if(mODE(input, "ingotAdvanced")) + return new ItemStack(ModItems.plate_advanced_alloy); + if(mODE(input, "ingotAdvancedAlloy")) + return new ItemStack(ModItems.plate_advanced_alloy); + if(mODE(input, "ingotSchrabidium")) + return new ItemStack(ModItems.plate_schrabidium); + if(mODE(input, "ingotCMBSteel")) + return new ItemStack(ModItems.plate_combine_steel); + + } + + if(stamps_wire.contains(stamp)) { + + if(mODE(input, "ingotAluminum")) + return new ItemStack(ModItems.wire_aluminium, 3); + if(mODE(input, "ingotCopper")) + return new ItemStack(ModItems.wire_copper, 3); + if(mODE(input, "ingotTungsten")) + return new ItemStack(ModItems.wire_tungsten, 3); + if(mODE(input, "ingotRedAlloy")) + return new ItemStack(ModItems.wire_red_copper, 3); + if(mODE(input, "ingotRedstoneAlloy")) + return new ItemStack(ModItems.wire_red_copper, 3); + if(mODE(input, "ingotGold")) + return new ItemStack(ModItems.wire_gold, 3); + if(mODE(input, "ingotSchrabidium")) + return new ItemStack(ModItems.wire_schrabidium, 3); + if(mODE(input, "ingotAdvanced")) + return new ItemStack(ModItems.wire_advanced_alloy, 3); + if(mODE(input, "ingotAdvancedAlloy")) + return new ItemStack(ModItems.wire_advanced_alloy, 3); + if(mODE(input, "ingotMagnetizedTungsten")) + return new ItemStack(ModItems.wire_magnetized_tungsten, 3); + } + + if(stamps_circuit.contains(stamp)) { + + if(input == ModItems.circuit_raw) + return new ItemStack(ModItems.circuit_aluminium); + } + + return null; + } + + public static Map getPressRecipes() { + Map recipes = new HashMap(); + + List i_stamps_flat = new ArrayList(); + for(Item i : stamps_flat) + i_stamps_flat.add(new ItemStack(i)); + List i_stamps_plate = new ArrayList(); + for(Item i : stamps_plate) + i_stamps_plate.add(new ItemStack(i)); + List i_stamps_wire = new ArrayList(); + for(Item i : stamps_wire) + i_stamps_wire.add(new ItemStack(i)); + List i_stamps_circuit = new ArrayList(); + for(Item i : stamps_circuit) + i_stamps_circuit.add(new ItemStack(i)); + + recipes.put(new Object[] { i_stamps_flat, new ItemStack(ModItems.powder_coal) }, getPressResultNN(stamps_flat.get(0), ModItems.powder_coal)); + recipes.put(new Object[] { i_stamps_flat, new ItemStack(ModItems.powder_quartz) }, getPressResultNN(stamps_flat.get(0), ModItems.powder_quartz)); + recipes.put(new Object[] { i_stamps_flat, new ItemStack(ModItems.powder_lapis) }, getPressResultNN(stamps_flat.get(0), ModItems.powder_lapis)); + recipes.put(new Object[] { i_stamps_flat, new ItemStack(ModItems.powder_diamond) }, getPressResultNN(stamps_flat.get(0), ModItems.powder_diamond)); + recipes.put(new Object[] { i_stamps_flat, new ItemStack(ModItems.powder_emerald) }, getPressResultNN(stamps_flat.get(0), ModItems.powder_emerald)); + recipes.put(new Object[] { i_stamps_flat, new ItemStack(ModItems.pellet_coal) }, getPressResultNN(stamps_flat.get(0), ModItems.pellet_coal)); + + recipes.put(new Object[] { i_stamps_plate, new ItemStack(Items.iron_ingot) }, getPressResultNN(stamps_plate.get(0), Items.iron_ingot)); + recipes.put(new Object[] { i_stamps_plate, new ItemStack(Items.gold_ingot) }, getPressResultNN(stamps_plate.get(0), Items.gold_ingot)); + recipes.put(new Object[] { i_stamps_plate, new ItemStack(ModItems.ingot_titanium) }, getPressResultNN(stamps_plate.get(0), ModItems.ingot_titanium)); + recipes.put(new Object[] { i_stamps_plate, new ItemStack(ModItems.ingot_aluminium) }, getPressResultNN(stamps_plate.get(0), ModItems.ingot_aluminium)); + recipes.put(new Object[] { i_stamps_plate, new ItemStack(ModItems.ingot_steel) }, getPressResultNN(stamps_plate.get(0), ModItems.ingot_steel)); + recipes.put(new Object[] { i_stamps_plate, new ItemStack(ModItems.ingot_lead) }, getPressResultNN(stamps_plate.get(0), ModItems.ingot_lead)); + recipes.put(new Object[] { i_stamps_plate, new ItemStack(ModItems.ingot_copper) }, getPressResultNN(stamps_plate.get(0), ModItems.ingot_copper)); + recipes.put(new Object[] { i_stamps_plate, new ItemStack(ModItems.ingot_advanced_alloy) }, getPressResultNN(stamps_plate.get(0), ModItems.ingot_advanced_alloy)); + recipes.put(new Object[] { i_stamps_plate, new ItemStack(ModItems.ingot_schrabidium) }, getPressResultNN(stamps_plate.get(0), ModItems.ingot_schrabidium)); + recipes.put(new Object[] { i_stamps_plate, new ItemStack(ModItems.ingot_combine_steel) }, getPressResultNN(stamps_plate.get(0), ModItems.ingot_combine_steel)); + + recipes.put(new Object[] { i_stamps_wire, new ItemStack(ModItems.ingot_aluminium) }, getPressResultNN(stamps_wire.get(0), ModItems.ingot_aluminium)); + recipes.put(new Object[] { i_stamps_wire, new ItemStack(ModItems.ingot_copper) }, getPressResultNN(stamps_wire.get(0), ModItems.ingot_copper)); + recipes.put(new Object[] { i_stamps_wire, new ItemStack(ModItems.ingot_tungsten) }, getPressResultNN(stamps_wire.get(0), ModItems.ingot_tungsten)); + recipes.put(new Object[] { i_stamps_wire, new ItemStack(ModItems.ingot_red_copper) }, getPressResultNN(stamps_wire.get(0), ModItems.ingot_red_copper)); + recipes.put(new Object[] { i_stamps_wire, new ItemStack(Items.gold_ingot) }, getPressResultNN(stamps_wire.get(0), Items.gold_ingot)); + recipes.put(new Object[] { i_stamps_wire, new ItemStack(ModItems.ingot_schrabidium) }, getPressResultNN(stamps_wire.get(0), ModItems.ingot_schrabidium)); + recipes.put(new Object[] { i_stamps_wire, new ItemStack(ModItems.ingot_advanced_alloy) }, getPressResultNN(stamps_wire.get(0), ModItems.ingot_advanced_alloy)); + recipes.put(new Object[] { i_stamps_wire, new ItemStack(ModItems.ingot_magnetized_tungsten) }, getPressResultNN(stamps_wire.get(0), ModItems.ingot_magnetized_tungsten)); + + recipes.put(new Object[] { i_stamps_circuit, new ItemStack(ModItems.circuit_raw) }, getPressResultNN(stamps_circuit.get(0), ModItems.circuit_raw)); + + return recipes; + } + public static ItemStack getReactorProcessingResult(Item item) { return getReactorOutput(item); } diff --git a/com/hbm/inventory/container/ContainerMachinePress.java b/com/hbm/inventory/container/ContainerMachinePress.java new file mode 100644 index 000000000..5cd223b37 --- /dev/null +++ b/com/hbm/inventory/container/ContainerMachinePress.java @@ -0,0 +1,144 @@ +package com.hbm.inventory.container; + +import com.hbm.inventory.SlotMachineOutput; +import com.hbm.tileentity.machine.TileEntityMachineAssembler; +import com.hbm.tileentity.machine.TileEntityMachinePress; + +import net.minecraft.entity.player.EntityPlayer; +import net.minecraft.entity.player.InventoryPlayer; +import net.minecraft.inventory.Container; +import net.minecraft.inventory.ICrafting; +import net.minecraft.inventory.Slot; +import net.minecraft.item.ItemStack; + +public class ContainerMachinePress extends Container { + +private TileEntityMachinePress nukeBoy; + + private int power; + private int progress; + private int burnTime; + private int maxBurn; + + public ContainerMachinePress(InventoryPlayer invPlayer, TileEntityMachinePress tedf) { + + nukeBoy = tedf; + + //Coal + this.addSlotToContainer(new Slot(tedf, 0, 26, 53)); + //Stamp + this.addSlotToContainer(new Slot(tedf, 1, 80, 17)); + //Input + this.addSlotToContainer(new Slot(tedf, 2, 80, 53)); + //Output + this.addSlotToContainer(new SlotMachineOutput(invPlayer.player, tedf, 3, 140, 35)); + + for(int i = 0; i < 3; i++) + { + for(int j = 0; j < 9; j++) + { + this.addSlotToContainer(new Slot(invPlayer, j + i * 9 + 9, 8 + j * 18, 84 + i * 18)); + } + } + + for(int i = 0; i < 9; i++) + { + this.addSlotToContainer(new Slot(invPlayer, i, 8 + i * 18, 142)); + } + } + + @Override + public ItemStack transferStackInSlot(EntityPlayer p_82846_1_, int par2) + { + ItemStack var3 = null; + Slot var4 = (Slot) this.inventorySlots.get(par2); + + if (var4 != null && var4.getHasStack()) + { + ItemStack var5 = var4.getStack(); + var3 = var5.copy(); + + if (par2 <= 3) { + if (!this.mergeItemStack(var5, 4, this.inventorySlots.size(), true)) + { + return null; + } + } + else if (!this.mergeItemStack(var5, 2, 3, false)) + if (!this.mergeItemStack(var5, 0, 1, false)) + if (!this.mergeItemStack(var5, 1, 2, false)) + return null; + + if (var5.stackSize == 0) + { + var4.putStack((ItemStack) null); + } + else + { + var4.onSlotChanged(); + } + } + + return var3; + } + + @Override + public boolean canInteractWith(EntityPlayer player) { + return nukeBoy.isUseableByPlayer(player); + } + + @Override + public void detectAndSendChanges() { + super.detectAndSendChanges(); + + for(int i = 0; i < this.crafters.size(); i++) + { + ICrafting par1 = (ICrafting)this.crafters.get(i); + + if(this.power != this.nukeBoy.power) + { + par1.sendProgressBarUpdate(this, 0, this.nukeBoy.power); + } + + if(this.progress != this.nukeBoy.progress) + { + par1.sendProgressBarUpdate(this, 1, this.nukeBoy.progress); + } + + if(this.burnTime != this.nukeBoy.burnTime) + { + par1.sendProgressBarUpdate(this, 2, this.nukeBoy.burnTime); + } + + if(this.maxBurn != this.nukeBoy.maxBurn) + { + par1.sendProgressBarUpdate(this, 3, this.nukeBoy.maxBurn); + } + } + + this.power = this.nukeBoy.power; + this.progress = this.nukeBoy.progress; + this.burnTime = this.nukeBoy.burnTime; + this.maxBurn = this.nukeBoy.maxBurn; + } + + @Override + public void updateProgressBar(int i, int j) { + if(i == 0) + { + nukeBoy.power = j; + } + if(i == 1) + { + nukeBoy.progress = j; + } + if(i == 2) + { + nukeBoy.burnTime = j; + } + if(i == 3) + { + nukeBoy.maxBurn = j; + } + } +} diff --git a/com/hbm/inventory/gui/GUIMachineCMBFactory.java b/com/hbm/inventory/gui/GUIMachineCMBFactory.java index f1f31ba5f..7aee0c75d 100644 --- a/com/hbm/inventory/gui/GUIMachineCMBFactory.java +++ b/com/hbm/inventory/gui/GUIMachineCMBFactory.java @@ -53,7 +53,7 @@ public class GUIMachineCMBFactory extends GuiFluidContainer { } int j1 = diFurnace.getProgressScaled(24); - drawTexturedModalRect(guiLeft + 101, guiTop + 34, 208, 0, j1 + 1, 16); + drawTexturedModalRect(guiLeft + 101 + 9, guiTop + 34, 208, 0, j1 + 1, 16); Minecraft.getMinecraft().getTextureManager().bindTexture(FluidTank.fluidTextures); diff --git a/com/hbm/inventory/gui/GUIMachinePress.java b/com/hbm/inventory/gui/GUIMachinePress.java new file mode 100644 index 000000000..21fbf964e --- /dev/null +++ b/com/hbm/inventory/gui/GUIMachinePress.java @@ -0,0 +1,53 @@ +package com.hbm.inventory.gui; + +import org.lwjgl.opengl.GL11; + +import com.hbm.inventory.container.ContainerMachineAssembler; +import com.hbm.inventory.container.ContainerMachinePress; +import com.hbm.lib.RefStrings; +import com.hbm.tileentity.machine.TileEntityMachineAssembler; +import com.hbm.tileentity.machine.TileEntityMachinePress; + +import net.minecraft.client.Minecraft; +import net.minecraft.client.gui.inventory.GuiContainer; +import net.minecraft.client.resources.I18n; +import net.minecraft.entity.player.InventoryPlayer; +import net.minecraft.util.ResourceLocation; + +public class GUIMachinePress extends GuiContainer { + + private static ResourceLocation texture = new ResourceLocation(RefStrings.MODID + ":textures/gui/gui_press.png"); + private TileEntityMachinePress assembler; + + public GUIMachinePress(InventoryPlayer invPlayer, TileEntityMachinePress tedf) { + super(new ContainerMachinePress(invPlayer, tedf)); + assembler = tedf; + + this.xSize = 176; + this.ySize = 166; + } + + @Override + protected void drawGuiContainerForegroundLayer( int i, int j) { + String name = this.assembler.hasCustomInventoryName() ? this.assembler.getInventoryName() : I18n.format(this.assembler.getInventoryName()); + + this.fontRendererObj.drawString(name, this.xSize / 2 - this.fontRendererObj.getStringWidth(name) / 2, 6, 4210752); + this.fontRendererObj.drawString(I18n.format("container.inventory"), 8, this.ySize - 96 + 2, 4210752); + } + + @Override + protected void drawGuiContainerBackgroundLayer(float p_146976_1_, int p_146976_2_, int p_146976_3_) { + GL11.glColor4f(1.0F, 1.0F, 1.0F, 1.0F); + Minecraft.getMinecraft().getTextureManager().bindTexture(texture); + drawTexturedModalRect(guiLeft, guiTop, 0, 0, xSize, ySize); + + int i = assembler.getPowerScaled(12); + drawTexturedModalRect(guiLeft + 25, guiTop + 16, 176, 14 + 18 * i, 18, 18); + + int l = assembler.getBurnScaled(13); + this.drawTexturedModalRect(guiLeft + 27, guiTop + 49 - l, 176, 13 - l, 13, l); + + int k = assembler.getProgressScaled(16); + this.drawTexturedModalRect(guiLeft + 79, guiTop + 35, 194, 0, 18, k); + } +} diff --git a/com/hbm/inventory/gui/GUIScreenTemplateFolder.java b/com/hbm/inventory/gui/GUIScreenTemplateFolder.java index 767c05807..b314b44c5 100644 --- a/com/hbm/inventory/gui/GUIScreenTemplateFolder.java +++ b/com/hbm/inventory/gui/GUIScreenTemplateFolder.java @@ -24,6 +24,7 @@ import net.minecraft.client.gui.GuiScreen; import net.minecraft.client.resources.I18n; import net.minecraft.entity.player.EntityPlayer; import net.minecraft.init.Items; +import net.minecraft.item.Item; import net.minecraft.item.ItemStack; import net.minecraft.util.ResourceLocation; @@ -42,7 +43,14 @@ public class GUIScreenTemplateFolder extends GuiScreen { public GUIScreenTemplateFolder(EntityPlayer player) { this.player = player; - + + //Stamps + for(Item i : MachineRecipes.stamps_plate) + stacks.add(new ItemStack(i)); + for(Item i : MachineRecipes.stamps_wire) + stacks.add(new ItemStack(i)); + for(Item i : MachineRecipes.stamps_circuit) + stacks.add(new ItemStack(i)); //Fluid IDs for(int i = 1; i < FluidType.values().length; i++) stacks.add(new ItemStack(ModItems.fluid_identifier, 1, i)); diff --git a/com/hbm/items/ModItems.java b/com/hbm/items/ModItems.java index 07c5bc34e..153527cd8 100644 --- a/com/hbm/items/ModItems.java +++ b/com/hbm/items/ModItems.java @@ -241,6 +241,7 @@ public class ModItems { public static Item magnet_circular; public static Item cyclotron_tower; + public static Item circuit_raw; public static Item circuit_aluminium; public static Item circuit_copper; public static Item circuit_red_copper; @@ -270,6 +271,7 @@ public class ModItems { public static Item generator_front; public static Item blade_tungsten; public static Item turbine_tungsten; + public static Item pellet_coal; public static Item toothpicks; public static Item ducttape; @@ -314,6 +316,31 @@ public class ModItems { public static Item telepad; public static Item entanglement_kit; + public static Item stamp_stone_flat; + public static Item stamp_stone_plate; + public static Item stamp_stone_wire; + public static Item stamp_stone_circuit; + public static Item stamp_iron_flat; + public static Item stamp_iron_plate; + public static Item stamp_iron_wire; + public static Item stamp_iron_circuit; + public static Item stamp_steel_flat; + public static Item stamp_steel_plate; + public static Item stamp_steel_wire; + public static Item stamp_steel_circuit; + public static Item stamp_titanium_flat; + public static Item stamp_titanium_plate; + public static Item stamp_titanium_wire; + public static Item stamp_titanium_circuit; + public static Item stamp_obsidian_flat; + public static Item stamp_obsidian_plate; + public static Item stamp_obsidian_wire; + public static Item stamp_obsidian_circuit; + public static Item stamp_schrabidium_flat; + public static Item stamp_schrabidium_plate; + public static Item stamp_schrabidium_wire; + public static Item stamp_schrabidium_circuit; + public static Item blades_gold; public static Item blades_aluminium; public static Item blades_iron; @@ -1248,6 +1275,7 @@ public class ModItems { magnet_dee = new Item().setUnlocalizedName("magnet_dee").setCreativeTab(MainRegistry.tabParts).setTextureName(RefStrings.MODID + ":magnet_dee"); magnet_circular = new Item().setUnlocalizedName("magnet_circular").setCreativeTab(MainRegistry.tabParts).setTextureName(RefStrings.MODID + ":magnet_circular"); cyclotron_tower = new Item().setUnlocalizedName("cyclotron_tower").setCreativeTab(MainRegistry.tabParts).setTextureName(RefStrings.MODID + ":cyclotron_tower"); + pellet_coal = new Item().setUnlocalizedName("pellet_coal").setCreativeTab(MainRegistry.tabParts).setTextureName(RefStrings.MODID + ":pellet_coal"); cap_aluminium = new Item().setUnlocalizedName("cap_aluminium").setCreativeTab(MainRegistry.tabParts).setTextureName(RefStrings.MODID + ":cap_aluminium"); hull_small_steel = new Item().setUnlocalizedName("hull_small_steel").setCreativeTab(MainRegistry.tabParts).setTextureName(RefStrings.MODID + ":hull_small_steel"); @@ -1314,6 +1342,7 @@ public class ModItems { telepad = new Item().setUnlocalizedName("telepad").setCreativeTab(MainRegistry.tabParts).setTextureName(RefStrings.MODID + ":telepad"); entanglement_kit = new Item().setUnlocalizedName("entanglement_kit").setCreativeTab(MainRegistry.tabParts).setTextureName(RefStrings.MODID + ":entanglement_kit"); + circuit_raw = new Item().setUnlocalizedName("circuit_raw").setCreativeTab(MainRegistry.tabParts).setTextureName(RefStrings.MODID + ":circuit_raw"); circuit_aluminium = new Item().setUnlocalizedName("circuit_aluminium").setCreativeTab(MainRegistry.tabParts).setTextureName(RefStrings.MODID + ":circuit_aluminium"); circuit_copper = new Item().setUnlocalizedName("circuit_copper").setCreativeTab(MainRegistry.tabParts).setTextureName(RefStrings.MODID + ":circuit_copper"); circuit_red_copper = new Item().setUnlocalizedName("circuit_red_copper").setCreativeTab(MainRegistry.tabParts).setTextureName(RefStrings.MODID + ":circuit_red_copper"); @@ -1352,6 +1381,31 @@ public class ModItems { inf_antimatter = new Item().setUnlocalizedName("inf_antimatter").setMaxStackSize(1).setCreativeTab(MainRegistry.tabParts).setTextureName(RefStrings.MODID + ":inf_antimatter"); inf_antischrabidium = new Item().setUnlocalizedName("inf_antischrabidium").setMaxStackSize(1).setCreativeTab(MainRegistry.tabParts).setTextureName(RefStrings.MODID + ":inf_antischrabidium"); + stamp_stone_flat = new ItemBlades(5).setUnlocalizedName("stamp_stone_flat").setMaxStackSize(1).setCreativeTab(MainRegistry.tabMachine).setTextureName(RefStrings.MODID + ":stamp_stone_flat"); + stamp_stone_plate = new ItemBlades(5).setUnlocalizedName("stamp_stone_plate").setMaxStackSize(1).setCreativeTab(MainRegistry.tabMachine).setTextureName(RefStrings.MODID + ":stamp_stone_plate"); + stamp_stone_wire = new ItemBlades(5).setUnlocalizedName("stamp_stone_wire").setMaxStackSize(1).setCreativeTab(MainRegistry.tabMachine).setTextureName(RefStrings.MODID + ":stamp_stone_wire"); + stamp_stone_circuit = new ItemBlades(5).setUnlocalizedName("stamp_stone_circuit").setMaxStackSize(1).setCreativeTab(MainRegistry.tabMachine).setTextureName(RefStrings.MODID + ":stamp_stone_circuit"); + stamp_iron_flat = new ItemBlades(25).setUnlocalizedName("stamp_iron_flat").setMaxStackSize(1).setCreativeTab(MainRegistry.tabMachine).setTextureName(RefStrings.MODID + ":stamp_iron_flat"); + stamp_iron_plate = new ItemBlades(25).setUnlocalizedName("stamp_iron_plate").setMaxStackSize(1).setCreativeTab(MainRegistry.tabMachine).setTextureName(RefStrings.MODID + ":stamp_iron_plate"); + stamp_iron_wire = new ItemBlades(25).setUnlocalizedName("stamp_iron_wire").setMaxStackSize(1).setCreativeTab(MainRegistry.tabMachine).setTextureName(RefStrings.MODID + ":stamp_iron_wire"); + stamp_iron_circuit = new ItemBlades(25).setUnlocalizedName("stamp_iron_circuit").setMaxStackSize(1).setCreativeTab(MainRegistry.tabMachine).setTextureName(RefStrings.MODID + ":stamp_iron_circuit"); + stamp_steel_flat = new ItemBlades(50).setUnlocalizedName("stamp_steel_flat").setMaxStackSize(1).setCreativeTab(MainRegistry.tabMachine).setTextureName(RefStrings.MODID + ":stamp_steel_flat"); + stamp_steel_plate = new ItemBlades(50).setUnlocalizedName("stamp_steel_plate").setMaxStackSize(1).setCreativeTab(MainRegistry.tabMachine).setTextureName(RefStrings.MODID + ":stamp_steel_plate"); + stamp_steel_wire = new ItemBlades(50).setUnlocalizedName("stamp_steel_wire").setMaxStackSize(1).setCreativeTab(MainRegistry.tabMachine).setTextureName(RefStrings.MODID + ":stamp_steel_wire"); + stamp_steel_circuit = new ItemBlades(50).setUnlocalizedName("stamp_steel_circuit").setMaxStackSize(1).setCreativeTab(MainRegistry.tabMachine).setTextureName(RefStrings.MODID + ":stamp_steel_circuit"); + stamp_titanium_flat = new ItemBlades(65).setUnlocalizedName("stamp_titanium_flat").setMaxStackSize(1).setCreativeTab(MainRegistry.tabMachine).setTextureName(RefStrings.MODID + ":stamp_titanium_flat"); + stamp_titanium_plate = new ItemBlades(65).setUnlocalizedName("stamp_titanium_plate").setMaxStackSize(1).setCreativeTab(MainRegistry.tabMachine).setTextureName(RefStrings.MODID + ":stamp_titanium_plate"); + stamp_titanium_wire = new ItemBlades(65).setUnlocalizedName("stamp_titanium_wire").setMaxStackSize(1).setCreativeTab(MainRegistry.tabMachine).setTextureName(RefStrings.MODID + ":stamp_titanium_wire"); + stamp_titanium_circuit = new ItemBlades(65).setUnlocalizedName("stamp_titanium_circuit").setMaxStackSize(1).setCreativeTab(MainRegistry.tabMachine).setTextureName(RefStrings.MODID + ":stamp_titanium_circuit"); + stamp_obsidian_flat = new ItemBlades(100).setUnlocalizedName("stamp_obsidian_flat").setMaxStackSize(1).setCreativeTab(MainRegistry.tabMachine).setTextureName(RefStrings.MODID + ":stamp_obsidian_flat"); + stamp_obsidian_plate = new ItemBlades(100).setUnlocalizedName("stamp_obsidian_plate").setMaxStackSize(1).setCreativeTab(MainRegistry.tabMachine).setTextureName(RefStrings.MODID + ":stamp_obsidian_plate"); + stamp_obsidian_wire = new ItemBlades(100).setUnlocalizedName("stamp_obsidian_wire").setMaxStackSize(1).setCreativeTab(MainRegistry.tabMachine).setTextureName(RefStrings.MODID + ":stamp_obsidian_wire"); + stamp_obsidian_circuit = new ItemBlades(100).setUnlocalizedName("stamp_obsidian_circuit").setMaxStackSize(1).setCreativeTab(MainRegistry.tabMachine).setTextureName(RefStrings.MODID + ":stamp_obsidian_circuit"); + stamp_schrabidium_flat = new ItemBlades(1024).setUnlocalizedName("stamp_schrabidium_flat").setMaxStackSize(1).setCreativeTab(MainRegistry.tabMachine).setTextureName(RefStrings.MODID + ":stamp_schrabidium_flat"); + stamp_schrabidium_plate = new ItemBlades(1024).setUnlocalizedName("stamp_schrabidium_plate").setMaxStackSize(1).setCreativeTab(MainRegistry.tabMachine).setTextureName(RefStrings.MODID + ":stamp_schrabidium_plate"); + stamp_schrabidium_wire = new ItemBlades(1024).setUnlocalizedName("stamp_schrabidium_wire").setMaxStackSize(1).setCreativeTab(MainRegistry.tabMachine).setTextureName(RefStrings.MODID + ":stamp_schrabidium_wire"); + stamp_schrabidium_circuit = new ItemBlades(1024).setUnlocalizedName("stamp_schrabidium_circuit").setMaxStackSize(1).setCreativeTab(MainRegistry.tabMachine).setTextureName(RefStrings.MODID + ":stamp_schrabidium_circuit"); + blades_aluminium = new ItemBlades(1 * 1200).setUnlocalizedName("blades_aluminium").setMaxStackSize(1).setCreativeTab(MainRegistry.tabParts).setTextureName(RefStrings.MODID + ":blades_aluminium"); blades_gold = new ItemBlades(5 * 1200).setUnlocalizedName("blades_gold").setMaxStackSize(1).setCreativeTab(MainRegistry.tabParts).setTextureName(RefStrings.MODID + ":blades_gold"); blades_iron = new ItemBlades(10 * 1200).setUnlocalizedName("blades_iron").setMaxStackSize(1).setCreativeTab(MainRegistry.tabParts).setTextureName(RefStrings.MODID + ":blades_iron"); @@ -2334,6 +2388,7 @@ public class ModItems { GameRegistry.registerItem(shimmer_handle, shimmer_handle.getUnlocalizedName()); //Circuits + GameRegistry.registerItem(circuit_raw, circuit_raw.getUnlocalizedName()); GameRegistry.registerItem(circuit_aluminium, circuit_aluminium.getUnlocalizedName()); GameRegistry.registerItem(circuit_copper, circuit_copper.getUnlocalizedName()); GameRegistry.registerItem(circuit_red_copper, circuit_red_copper.getUnlocalizedName()); @@ -2358,6 +2413,8 @@ public class ModItems { GameRegistry.registerItem(pellet_gas, pellet_gas.getUnlocalizedName()); GameRegistry.registerItem(magnetron, magnetron.getUnlocalizedName()); + + GameRegistry.registerItem(pellet_coal, pellet_coal.getUnlocalizedName()); //Watz Pellets GameRegistry.registerItem(pellet_schrabidium, pellet_schrabidium.getUnlocalizedName()); @@ -2455,6 +2512,35 @@ public class ModItems { GameRegistry.registerItem(factory_core_titanium, factory_core_titanium.getUnlocalizedName()); GameRegistry.registerItem(factory_core_advanced, factory_core_advanced.getUnlocalizedName()); + //Template Folder + GameRegistry.registerItem(template_folder, template_folder.getUnlocalizedName()); + + //Hydraulic Press Stamps + GameRegistry.registerItem(stamp_stone_flat, stamp_stone_flat.getUnlocalizedName()); + GameRegistry.registerItem(stamp_stone_plate, stamp_stone_plate.getUnlocalizedName()); + GameRegistry.registerItem(stamp_stone_wire, stamp_stone_wire.getUnlocalizedName()); + GameRegistry.registerItem(stamp_stone_circuit, stamp_stone_circuit.getUnlocalizedName()); + GameRegistry.registerItem(stamp_iron_flat, stamp_iron_flat.getUnlocalizedName()); + GameRegistry.registerItem(stamp_iron_plate, stamp_iron_plate.getUnlocalizedName()); + GameRegistry.registerItem(stamp_iron_wire, stamp_iron_wire.getUnlocalizedName()); + GameRegistry.registerItem(stamp_iron_circuit, stamp_iron_circuit.getUnlocalizedName()); + GameRegistry.registerItem(stamp_steel_flat, stamp_steel_flat.getUnlocalizedName()); + GameRegistry.registerItem(stamp_steel_plate, stamp_steel_plate.getUnlocalizedName()); + GameRegistry.registerItem(stamp_steel_wire, stamp_steel_wire.getUnlocalizedName()); + GameRegistry.registerItem(stamp_steel_circuit, stamp_steel_circuit.getUnlocalizedName()); + GameRegistry.registerItem(stamp_titanium_flat, stamp_titanium_flat.getUnlocalizedName()); + GameRegistry.registerItem(stamp_titanium_plate, stamp_titanium_plate.getUnlocalizedName()); + GameRegistry.registerItem(stamp_titanium_wire, stamp_titanium_wire.getUnlocalizedName()); + GameRegistry.registerItem(stamp_titanium_circuit, stamp_titanium_circuit.getUnlocalizedName()); + GameRegistry.registerItem(stamp_obsidian_flat, stamp_obsidian_flat.getUnlocalizedName()); + GameRegistry.registerItem(stamp_obsidian_plate, stamp_obsidian_plate.getUnlocalizedName()); + GameRegistry.registerItem(stamp_obsidian_wire, stamp_obsidian_wire.getUnlocalizedName()); + GameRegistry.registerItem(stamp_obsidian_circuit, stamp_obsidian_circuit.getUnlocalizedName()); + GameRegistry.registerItem(stamp_schrabidium_flat, stamp_schrabidium_flat.getUnlocalizedName()); + GameRegistry.registerItem(stamp_schrabidium_plate, stamp_schrabidium_plate.getUnlocalizedName()); + GameRegistry.registerItem(stamp_schrabidium_wire, stamp_schrabidium_wire.getUnlocalizedName()); + GameRegistry.registerItem(stamp_schrabidium_circuit, stamp_schrabidium_circuit.getUnlocalizedName()); + //Machine Upgrades GameRegistry.registerItem(upgrade_template, upgrade_template.getUnlocalizedName()); GameRegistry.registerItem(upgrade_speed_1, upgrade_speed_1.getUnlocalizedName()); @@ -2474,7 +2560,6 @@ public class ModItems { GameRegistry.registerItem(upgrade_afterburn_3, upgrade_afterburn_3.getUnlocalizedName()); //Machine Templates - GameRegistry.registerItem(template_folder, template_folder.getUnlocalizedName()); GameRegistry.registerItem(fluid_identifier, fluid_identifier.getUnlocalizedName()); GameRegistry.registerItem(fluid_icon, fluid_icon.getUnlocalizedName()); GameRegistry.registerItem(assembly_template, assembly_template.getUnlocalizedName()); diff --git a/com/hbm/items/special/ItemStarterKit.java b/com/hbm/items/special/ItemStarterKit.java index 9a6172ca5..5ed6b066f 100644 --- a/com/hbm/items/special/ItemStarterKit.java +++ b/com/hbm/items/special/ItemStarterKit.java @@ -29,12 +29,15 @@ public class ItemStarterKit extends Item { if(this == ModItems.nuke_starter_kit) { - player.inventory.addItemStackToInventory(new ItemStack(Item.getItemFromBlock(ModBlocks.machine_difurnace_off), 1)); - player.inventory.addItemStackToInventory(new ItemStack(Item.getItemFromBlock(ModBlocks.machine_centrifuge), 1)); - player.inventory.addItemStackToInventory(new ItemStack(Item.getItemFromBlock(ModBlocks.machine_reactor), 1)); - player.inventory.addItemStackToInventory(new ItemStack(Item.getItemFromBlock(ModBlocks.machine_uf6_tank), 1)); - player.inventory.addItemStackToInventory(new ItemStack(Item.getItemFromBlock(ModBlocks.machine_assembler), 1)); + player.inventory.addItemStackToInventory(new ItemStack(ModBlocks.machine_difurnace_off, 1)); + player.inventory.addItemStackToInventory(new ItemStack(ModBlocks.machine_centrifuge, 1)); + player.inventory.addItemStackToInventory(new ItemStack(ModBlocks.machine_reactor, 1)); + player.inventory.addItemStackToInventory(new ItemStack(ModBlocks.machine_uf6_tank, 1)); + player.inventory.addItemStackToInventory(new ItemStack(ModBlocks.machine_assembler, 1)); + player.inventory.addItemStackToInventory(new ItemStack(ModBlocks.machine_press, 1)); + player.inventory.addItemStackToInventory(new ItemStack(ModItems.template_folder, 1)); + player.inventory.addItemStackToInventory(new ItemStack(ModItems.ingot_uranium, 6)); player.inventory.addItemStackToInventory(new ItemStack(ModItems.ingot_red_copper, 16)); player.inventory.addItemStackToInventory(new ItemStack(ModItems.ingot_tungsten, 4)); @@ -68,7 +71,9 @@ public class ItemStarterKit extends Item { player.inventory.addItemStackToInventory(new ItemStack(Item.getItemFromBlock(ModBlocks.machine_reactor), 3)); player.inventory.addItemStackToInventory(new ItemStack(Item.getItemFromBlock(ModBlocks.machine_uf6_tank), 2)); player.inventory.addItemStackToInventory(new ItemStack(Item.getItemFromBlock(ModBlocks.machine_puf6_tank), 2)); - //player.inventory.addItemStackToInventory(new ItemStack(Item.getItemFromBlock(ModBlocks.machine_deuterium), 1)); + player.inventory.addItemStackToInventory(new ItemStack(ModBlocks.machine_assembler, 1)); + player.inventory.addItemStackToInventory(new ItemStack(ModBlocks.machine_chemplant, 1)); + player.inventory.addItemStackToInventory(new ItemStack(ModBlocks.machine_press, 1)); player.inventory.addItemStackToInventory(new ItemStack(ModItems.ingot_uranium, 16)); player.inventory.addItemStackToInventory(new ItemStack(ModItems.ingot_u235, 16)); @@ -79,14 +84,7 @@ public class ItemStarterKit extends Item { player.inventory.addItemStackToInventory(new ItemStack(ModItems.ingot_pu240, 16)); player.inventory.addItemStackToInventory(new ItemStack(ModItems.ingot_neptunium, 16)); - player.inventory.addItemStackToInventory(new ItemStack(ModItems.ingot_copper, 32)); - player.inventory.addItemStackToInventory(new ItemStack(ModItems.ingot_red_copper, 64)); - player.inventory.addItemStackToInventory(new ItemStack(ModItems.ingot_steel, 64)); - player.inventory.addItemStackToInventory(new ItemStack(ModItems.ingot_tungsten, 32)); - player.inventory.addItemStackToInventory(new ItemStack(ModItems.ingot_lead, 32)); - player.inventory.addItemStackToInventory(new ItemStack(ModItems.wire_red_copper, 32)); - player.inventory.addItemStackToInventory(new ItemStack(ModItems.wire_tungsten, 32)); player.inventory.addItemStackToInventory(new ItemStack(ModItems.coil_copper, 16)); player.inventory.addItemStackToInventory(new ItemStack(ModItems.coil_tungsten, 16)); player.inventory.addItemStackToInventory(new ItemStack(ModItems.coil_copper_torus, 8)); @@ -103,7 +101,11 @@ public class ItemStarterKit extends Item { player.inventory.addItemStackToInventory(new ItemStack(ModItems.cell_empty, 64)); player.inventory.addItemStackToInventory(new ItemStack(ModItems.rod_empty, 64)); - player.inventory.addItemStackToInventory(new ItemStack(ModItems.pellet_rtg, 16)); + player.inventory.addItemStackToInventory(new ItemStack(ModItems.pellet_rtg, 1)); + player.inventory.addItemStackToInventory(new ItemStack(ModItems.pellet_rtg, 1)); + player.inventory.addItemStackToInventory(new ItemStack(ModItems.pellet_rtg, 1)); + player.inventory.addItemStackToInventory(new ItemStack(ModItems.pellet_rtg, 1)); + player.inventory.addItemStackToInventory(new ItemStack(ModItems.pellet_rtg, 1)); } if(this == ModItems.nuke_commercially_kit) @@ -352,10 +354,5 @@ public class ItemStarterKit extends Item { return stack; } - - @Override - public void onPlayerStoppedUsing(ItemStack stack, World world, EntityPlayer player, int i) { - - } } diff --git a/com/hbm/items/tool/ItemTemplateFolder.java b/com/hbm/items/tool/ItemTemplateFolder.java index 69c21e9d1..838a9240c 100644 --- a/com/hbm/items/tool/ItemTemplateFolder.java +++ b/com/hbm/items/tool/ItemTemplateFolder.java @@ -28,6 +28,7 @@ public class ItemTemplateFolder extends Item { { list.add("Machine Templates: Paper + Dye"); list.add("Fluid IDs: Iron Plate + Dye"); + list.add("Press Stamps: Flat Stamp"); } } diff --git a/com/hbm/main/ClientProxy.java b/com/hbm/main/ClientProxy.java index c92b45701..2cd7b5eb8 100644 --- a/com/hbm/main/ClientProxy.java +++ b/com/hbm/main/ClientProxy.java @@ -210,6 +210,7 @@ import com.hbm.render.tileentity.RenderNukeTsar; import com.hbm.render.tileentity.RenderOilDuct; import com.hbm.render.tileentity.RenderPoleSatelliteReceiver; import com.hbm.render.tileentity.RenderPoleTop; +import com.hbm.render.tileentity.RenderPress; import com.hbm.render.tileentity.RenderPuF6Tank; import com.hbm.render.tileentity.RenderPumpjack; import com.hbm.render.tileentity.RenderPylon; @@ -275,6 +276,7 @@ import com.hbm.tileentity.machine.TileEntityMachineGasFlare; import com.hbm.tileentity.machine.TileEntityMachineIGenerator; import com.hbm.tileentity.machine.TileEntityMachineMiningDrill; import com.hbm.tileentity.machine.TileEntityMachineOilWell; +import com.hbm.tileentity.machine.TileEntityMachinePress; import com.hbm.tileentity.machine.TileEntityMachinePuF6Tank; import com.hbm.tileentity.machine.TileEntityMachinePumpjack; import com.hbm.tileentity.machine.TileEntityMachineRefinery; @@ -330,6 +332,7 @@ public class ClientProxy extends ServerProxy ClientRegistry.bindTileEntitySpecialRenderer(TileEntityTurretTau.class, new RenderTauTurret()); ClientRegistry.bindTileEntitySpecialRenderer(TileEntityMachinePumpjack.class, new RenderPumpjack()); ClientRegistry.bindTileEntitySpecialRenderer(TileEntityMachineTurbofan.class, new RenderTurbofan()); + ClientRegistry.bindTileEntitySpecialRenderer(TileEntityMachinePress.class, new RenderPress()); //RenderingRegistry.registerEntityRenderingHandler(EntityRocket.class, new RenderRocket()); RenderingRegistry.registerEntityRenderingHandler(EntityRocket.class, new RenderSnowball(ModItems.man_core)); diff --git a/com/hbm/main/CraftingManager.java b/com/hbm/main/CraftingManager.java index e6b03c288..63810d6fb 100644 --- a/com/hbm/main/CraftingManager.java +++ b/com/hbm/main/CraftingManager.java @@ -26,25 +26,25 @@ public class CraftingManager { GameRegistry.addRecipe(new ItemStack(ModItems.redstone_sword, 1), new Object[] { "R", "R", "S", 'R', Blocks.redstone_block, 'S', Items.stick }); GameRegistry.addRecipe(new ItemStack(ModItems.big_sword, 1), new Object[] { "QIQ", "QIQ", "GSG", 'G', Items.gold_ingot, 'S', Items.stick, 'I', Items.iron_ingot, 'Q', Items.quartz}); - GameRegistry.addRecipe(new ShapedOreRecipe(new ItemStack(ModItems.plate_titanium, 16), true, new Object[] { "TT", "TT", 'T', "ingotTitanium" })); - GameRegistry.addRecipe(new ShapedOreRecipe(new ItemStack(ModItems.plate_aluminium, 16), new Object[] { "TT", "TT", 'T', "ingotAluminum" })); - GameRegistry.addRecipe(new ShapedOreRecipe(new ItemStack(ModItems.plate_steel, 16), new Object[] { "TT", "TT", 'T', "ingotSteel" })); - GameRegistry.addRecipe(new ShapedOreRecipe(new ItemStack(ModItems.plate_iron, 16), new Object[] { "TT", "TT", 'T', "ingotIron" })); - GameRegistry.addRecipe(new ShapedOreRecipe(new ItemStack(ModItems.plate_lead, 16), new Object[] { "TT", "TT", 'T', "ingotLead" })); - GameRegistry.addRecipe(new ShapedOreRecipe(new ItemStack(ModItems.plate_copper, 16), new Object[] { "TT", "TT", 'T', "ingotCopper" })); + //GameRegistry.addRecipe(new ShapedOreRecipe(new ItemStack(ModItems.plate_titanium, 16), true, new Object[] { "TT", "TT", 'T', "ingotTitanium" })); + //GameRegistry.addRecipe(new ShapedOreRecipe(new ItemStack(ModItems.plate_aluminium, 16), new Object[] { "TT", "TT", 'T', "ingotAluminum" })); + //GameRegistry.addRecipe(new ShapedOreRecipe(new ItemStack(ModItems.plate_steel, 16), new Object[] { "TT", "TT", 'T', "ingotSteel" })); + //GameRegistry.addRecipe(new ShapedOreRecipe(new ItemStack(ModItems.plate_iron, 16), new Object[] { "TT", "TT", 'T', "ingotIron" })); + //GameRegistry.addRecipe(new ShapedOreRecipe(new ItemStack(ModItems.plate_lead, 16), new Object[] { "TT", "TT", 'T', "ingotLead" })); + //GameRegistry.addRecipe(new ShapedOreRecipe(new ItemStack(ModItems.plate_copper, 16), new Object[] { "TT", "TT", 'T', "ingotCopper" })); GameRegistry.addRecipe(new ShapedOreRecipe(new ItemStack(ModItems.board_copper, 1), new Object[] { "TTT", "TTT", 'T', "plateCopper" })); - GameRegistry.addRecipe(new ItemStack(ModItems.plate_schrabidium, 16), new Object[] { "TT", "TT", 'T', ModItems.ingot_schrabidium}); - GameRegistry.addRecipe(new ShapedOreRecipe(new ItemStack(ModItems.plate_gold, 16), new Object[] { "TT", "TT", 'T', "ingotGold" })); - GameRegistry.addRecipe(new ItemStack(ModItems.plate_advanced_alloy, 16), new Object[] { "TT", "TT", 'T', ModItems.ingot_advanced_alloy}); - GameRegistry.addRecipe(new ItemStack(ModItems.plate_combine_steel, 16), new Object[] { "TT", "TT", 'T', ModItems.ingot_combine_steel}); - GameRegistry.addRecipe(new ShapedOreRecipe(new ItemStack(ModItems.wire_red_copper, 6), new Object[] { "CCC", 'S', Items.string, 'C', "ingotRedstoneAlloy" })); - GameRegistry.addRecipe(new ShapedOreRecipe(new ItemStack(ModItems.wire_tungsten, 6), new Object[] { "CCC", 'S', Items.string, 'C', "ingotTungsten" })); - GameRegistry.addRecipe(new ShapedOreRecipe(new ItemStack(ModItems.wire_aluminium, 6), new Object[] { "CCC", 'S', Items.string, 'C', "ingotAluminum" })); - GameRegistry.addRecipe(new ShapedOreRecipe(new ItemStack(ModItems.wire_copper, 6), new Object[] { "CCC", 'S', Items.string, 'C', "ingotCopper" })); - GameRegistry.addRecipe(new ShapedOreRecipe(new ItemStack(ModItems.wire_gold, 6), new Object[] { "CCC", 'S', Items.string, 'C', "ingotGold" })); - GameRegistry.addRecipe(new ItemStack(ModItems.wire_schrabidium, 6), new Object[] { "CCC", 'S', Items.string, 'C', ModItems.ingot_schrabidium }); - GameRegistry.addRecipe(new ItemStack(ModItems.wire_advanced_alloy, 6), new Object[] { "CCC", 'S', Items.string, 'C', ModItems.ingot_advanced_alloy }); - GameRegistry.addRecipe(new ItemStack(ModItems.wire_magnetized_tungsten, 6), new Object[] { "CCC", 'S', Items.string, 'C', ModItems.ingot_magnetized_tungsten }); + //GameRegistry.addRecipe(new ItemStack(ModItems.plate_schrabidium, 16), new Object[] { "TT", "TT", 'T', ModItems.ingot_schrabidium}); + //GameRegistry.addRecipe(new ShapedOreRecipe(new ItemStack(ModItems.plate_gold, 16), new Object[] { "TT", "TT", 'T', "ingotGold" })); + //GameRegistry.addRecipe(new ItemStack(ModItems.plate_advanced_alloy, 16), new Object[] { "TT", "TT", 'T', ModItems.ingot_advanced_alloy}); + //GameRegistry.addRecipe(new ItemStack(ModItems.plate_combine_steel, 16), new Object[] { "TT", "TT", 'T', ModItems.ingot_combine_steel}); + //GameRegistry.addRecipe(new ShapedOreRecipe(new ItemStack(ModItems.wire_red_copper, 6), new Object[] { "CCC", 'S', Items.string, 'C', "ingotRedstoneAlloy" })); + //GameRegistry.addRecipe(new ShapedOreRecipe(new ItemStack(ModItems.wire_tungsten, 6), new Object[] { "CCC", 'S', Items.string, 'C', "ingotTungsten" })); + //GameRegistry.addRecipe(new ShapedOreRecipe(new ItemStack(ModItems.wire_aluminium, 6), new Object[] { "CCC", 'S', Items.string, 'C', "ingotAluminum" })); + //GameRegistry.addRecipe(new ShapedOreRecipe(new ItemStack(ModItems.wire_copper, 6), new Object[] { "CCC", 'S', Items.string, 'C', "ingotCopper" })); + //GameRegistry.addRecipe(new ShapedOreRecipe(new ItemStack(ModItems.wire_gold, 6), new Object[] { "CCC", 'S', Items.string, 'C', "ingotGold" })); + //GameRegistry.addRecipe(new ItemStack(ModItems.wire_schrabidium, 6), new Object[] { "CCC", 'S', Items.string, 'C', ModItems.ingot_schrabidium }); + //GameRegistry.addRecipe(new ItemStack(ModItems.wire_advanced_alloy, 6), new Object[] { "CCC", 'S', Items.string, 'C', ModItems.ingot_advanced_alloy }); + //GameRegistry.addRecipe(new ItemStack(ModItems.wire_magnetized_tungsten, 6), new Object[] { "CCC", 'S', Items.string, 'C', ModItems.ingot_magnetized_tungsten }); //GameRegistry.addRecipe(new ShapedOreRecipe(new ItemStack(ModItems.hazmat_cloth, 4), new Object[] { "LN", "LN", 'L', Items.leather, 'N', "nuggetLead" })); //GameRegistry.addRecipe(new ShapedOreRecipe(new ItemStack(ModItems.hazmat_cloth, 4), new Object[] { "SCS", "CPC", "SCS", 'S', Items.string, 'P', Items.leather, 'C', "dustLead" })); //GameRegistry.addRecipe(new ShapedOreRecipe(new ItemStack(ModItems.asbestos_cloth, 4), new Object[] { "SCS", "CPC", "SCS", 'S', Items.string, 'P', Blocks.wool, 'C', "dustNetherQuartz" })); @@ -63,7 +63,8 @@ public class CraftingManager { GameRegistry.addRecipe(new ShapedOreRecipe(new ItemStack(ModBlocks.marker_structure, 1), new Object[] { "L", "G", "R", 'L', "dustLapis", 'G', Items.glowstone_dust, 'R', Blocks.redstone_torch })); - GameRegistry.addRecipe(new ShapedOreRecipe(new ItemStack(ModItems.circuit_aluminium, 1), new Object[] { "RAR", "ASA", "RAR", 'S', "plateSteel", 'R', "dustRedstone", 'A', ModItems.wire_aluminium })); + GameRegistry.addRecipe(new ShapedOreRecipe(new ItemStack(ModItems.circuit_raw, 1), new Object[] { "A", "R", "S", 'S', "plateSteel", 'R', "dustRedstone", 'A', ModItems.wire_aluminium })); + //GameRegistry.addRecipe(new ShapedOreRecipe(new ItemStack(ModItems.circuit_aluminium, 1), new Object[] { "RAR", "ASA", "RAR", 'S', "plateSteel", 'R', "dustRedstone", 'A', ModItems.wire_aluminium })); //GameRegistry.addRecipe(new ShapedOreRecipe(new ItemStack(ModItems.circuit_copper, 1), new Object[] { "RAR", "ASA", "RAR", 'S', ModItems.circuit_aluminium, 'R', "dustNetherQuartz", 'A', ModItems.wire_copper })); //GameRegistry.addRecipe(new ShapedOreRecipe(new ItemStack(ModItems.circuit_red_copper, 1), new Object[] { "RAR", "ASA", "RAR", 'S', ModItems.circuit_copper, 'R', "dustGold", 'A', ModItems.wire_red_copper })); //GameRegistry.addRecipe(new ShapedOreRecipe(new ItemStack(ModItems.circuit_gold, 1), new Object[] { "RAR", "ASA", "RAR", 'S', ModItems.circuit_red_copper, 'R', "dustLapis", 'A', ModItems.wire_gold })); @@ -281,9 +282,6 @@ public class CraftingManager { GameRegistry.addShapelessRecipe(new ItemStack(ModItems.rod_water, 1), new Object[] { ModItems.rod_empty, Items.water_bucket }); GameRegistry.addShapelessRecipe(new ItemStack(ModItems.rod_dual_water, 1), new Object[] { ModItems.rod_dual_empty, Items.water_bucket, Items.water_bucket }); GameRegistry.addShapelessRecipe(new ItemStack(ModItems.rod_quad_water, 1), new Object[] { ModItems.rod_quad_empty, Items.water_bucket, Items.water_bucket, Items.water_bucket, Items.water_bucket }); - GameRegistry.addShapelessRecipe(new ItemStack(ModItems.rod_coolant, 1), new Object[] { ModItems.rod_empty, Items.water_bucket, ModItems.powder_ice }); - GameRegistry.addShapelessRecipe(new ItemStack(ModItems.rod_dual_coolant, 1), new Object[] { ModItems.rod_dual_empty, Items.water_bucket, Items.water_bucket, ModItems.powder_ice, ModItems.powder_ice }); - GameRegistry.addShapelessRecipe(new ItemStack(ModItems.rod_quad_coolant, 1), new Object[] { ModItems.rod_quad_empty, Items.water_bucket, Items.water_bucket, Items.water_bucket, Items.water_bucket, ModItems.powder_ice, ModItems.powder_ice, ModItems.powder_ice, ModItems.powder_ice }); GameRegistry.addShapelessRecipe(new ItemStack(ModItems.nugget_uranium, 6), new Object[] { ModItems.rod_uranium }); GameRegistry.addShapelessRecipe(new ItemStack(ModItems.nugget_u235, 6), new Object[] { ModItems.rod_u235 }); @@ -525,6 +523,7 @@ public class CraftingManager { //GameRegistry.addRecipe(new ShapedOreRecipe(new ItemStack(Item.getItemFromBlock(ModBlocks.machine_refinery), 1), new Object[] { "PTP", "CTC", "WFW", 'P', "plateTitanium", 'T', ModItems.tank_steel, 'C', ModItems.coil_tungsten, 'W', ModBlocks.red_wire_coated, 'F', ModBlocks.machine_electric_furnace_off })); GameRegistry.addRecipe(new ShapedOreRecipe(new ItemStack(Item.getItemFromBlock(ModBlocks.crate_iron), 1), new Object[] { "PPP", "I I", "III", 'P', "plateIron", 'I', "ingotIron" })); GameRegistry.addRecipe(new ShapedOreRecipe(new ItemStack(Item.getItemFromBlock(ModBlocks.crate_steel), 1), new Object[] { "PPP", "I I", "III", 'P', "plateSteel", 'I', "ingotSteel" })); + GameRegistry.addRecipe(new ShapedOreRecipe(new ItemStack(ModBlocks.machine_press, 1), new Object[] { "IRI", "IPI", "IBI", 'I', "ingotIron", 'R', "dustRedstone", 'B', "blockIron", 'P', Blocks.piston })); GameRegistry.addRecipe(new ShapedOreRecipe(new ItemStack(Item.getItemFromBlock(ModBlocks.factory_titanium_hull), 1), new Object[] { "PIP", "I I", "PIP", 'P', "plateTitanium", 'I', "ingotTitanium" })); GameRegistry.addRecipe(new ItemStack(Item.getItemFromBlock(ModBlocks.factory_titanium_furnace), 1), new Object[] { "HMH", "MFM", "HMH", 'H', Item.getItemFromBlock(ModBlocks.factory_titanium_hull), 'M', ModItems.motor, 'F', Item.getItemFromBlock(Blocks.furnace) }); @@ -567,6 +566,13 @@ public class CraftingManager { GameRegistry.addRecipe(new ShapedOreRecipe(new ItemStack(ModItems.blades_combine_steel, 1), new Object[] { " P ", "PIP", " P ", 'P', "plateCMBSteel", 'I', "ingotCMBSteel" })); GameRegistry.addRecipe(new ShapedOreRecipe(new ItemStack(ModItems.blades_schrabidium, 1), new Object[] { " P ", "PIP", " P ", 'P', "plateSchrabidium", 'I', "ingotSchrabidium" })); + GameRegistry.addRecipe(new ShapedOreRecipe(new ItemStack(ModItems.stamp_stone_flat, 1), new Object[] { " R ", "III", "SSS", 'R', "dustRedstone", 'I', "ingotBrick", 'S', "stone" })); + GameRegistry.addRecipe(new ShapedOreRecipe(new ItemStack(ModItems.stamp_iron_flat, 1), new Object[] { " R ", "III", "SSS", 'R', "dustRedstone", 'I', "ingotBrick", 'S', "ingotIron" })); + GameRegistry.addRecipe(new ShapedOreRecipe(new ItemStack(ModItems.stamp_steel_flat, 1), new Object[] { " R ", "III", "SSS", 'R', "dustRedstone", 'I', "ingotBrick", 'S', "ingotSteel" })); + GameRegistry.addRecipe(new ShapedOreRecipe(new ItemStack(ModItems.stamp_titanium_flat, 1), new Object[] { " R ", "III", "SSS", 'R', "dustRedstone", 'I', "ingotBrick", 'S', "ingotTitanium" })); + GameRegistry.addRecipe(new ShapedOreRecipe(new ItemStack(ModItems.stamp_obsidian_flat, 1), new Object[] { " R ", "III", "SSS", 'R', "dustRedstone", 'I', "ingotBrick", 'S', Blocks.obsidian })); + GameRegistry.addRecipe(new ShapedOreRecipe(new ItemStack(ModItems.stamp_schrabidium_flat, 1), new Object[] { " R ", "III", "SSS", 'R', "dustRedstone", 'I', "ingotBrick", 'S', "ingotSchrabidium" })); + //GameRegistry.addRecipe(new ShapedOreRecipe(new ItemStack(Item.getItemFromBlock(ModBlocks.reactor_element), 1), new Object[] { "SCS", "CSC", "SCS", 'S', "ingotSteel", 'C', ModItems.rod_quad_empty })); //GameRegistry.addRecipe(new ShapedOreRecipe(new ItemStack(Item.getItemFromBlock(ModBlocks.reactor_control), 1), new Object[] { "SLS", "SLS", "SLS", 'S', "ingotSteel", 'L', "ingotLead" })); //GameRegistry.addRecipe(new ShapedOreRecipe(new ItemStack(Item.getItemFromBlock(ModBlocks.reactor_conductor), 1), new Object[] { "SWS", "FFF", "SWS", 'S', "ingotSteel", 'W', Item.getItemFromBlock(ModBlocks.red_wire_coated), 'F', ModItems.fuse })); @@ -965,12 +971,13 @@ public class CraftingManager { GameRegistry.addRecipe(new ShapedOreRecipe(new ItemStack(ModItems.crowbar, 1), new Object[] { "II", " I", " I", 'I', "ingotSteel" })); GameRegistry.addRecipe(new ShapelessOreRecipe(new ItemStack(ModItems.powder_power, 5), new Object[] { "dustRedstone", "dustGlowstone", "dustDiamond", "dustNeptunium", "dustMagnetizedTungsten" })); - GameRegistry.addRecipe(new ShapedOreRecipe(new ItemStack(Items.coal, 1), new Object[] { "#", '#', "dustCoal" })); - GameRegistry.addRecipe(new ShapedOreRecipe(new ItemStack(Items.quartz, 1), new Object[] { "#", '#', "dustQuartz" })); - GameRegistry.addRecipe(new ShapedOreRecipe(new ItemStack(Items.quartz, 1), new Object[] { "#", '#', "dustNetherQuartz" })); - GameRegistry.addRecipe(new ShapedOreRecipe(new ItemStack(Items.dye, 1, 4), new Object[] { "#", '#', "dustLapis" })); - GameRegistry.addRecipe(new ShapedOreRecipe(new ItemStack(Items.diamond, 1), new Object[] { "#", '#', "dustDiamond" })); - GameRegistry.addRecipe(new ShapedOreRecipe(new ItemStack(Items.emerald, 1), new Object[] { "#", '#', "dustEmerald" })); + //GameRegistry.addRecipe(new ShapedOreRecipe(new ItemStack(Items.coal, 1), new Object[] { "#", '#', "dustCoal" })); + //GameRegistry.addRecipe(new ShapedOreRecipe(new ItemStack(Items.quartz, 1), new Object[] { "#", '#', "dustQuartz" })); + //GameRegistry.addRecipe(new ShapedOreRecipe(new ItemStack(Items.quartz, 1), new Object[] { "#", '#', "dustNetherQuartz" })); + //GameRegistry.addRecipe(new ShapedOreRecipe(new ItemStack(Items.dye, 1, 4), new Object[] { "#", '#', "dustLapis" })); + //GameRegistry.addRecipe(new ShapedOreRecipe(new ItemStack(Items.diamond, 1), new Object[] { "#", '#', "dustDiamond" })); + //GameRegistry.addRecipe(new ShapedOreRecipe(new ItemStack(Items.emerald, 1), new Object[] { "#", '#', "dustEmerald" })); + //if(MainRegistry.enableNITAN) { //GameRegistry.addShapelessRecipe(new ItemStack(ModItems.canister_NITAN, 1), new Object[] { ModItems.canister_empty, ModItems.canister_napalm, ModItems.powder_neptunium, ModItems.powder_iodine, ModItems.powder_thorium, ModItems.powder_astatine, ModItems.powder_neodymium, ModItems.powder_caesium }); //GameRegistry.addShapelessRecipe(new ItemStack(ModItems.canister_NITAN, 1), new Object[] { ModItems.canister_empty, ModItems.canister_napalm, ModItems.powder_strontium, ModItems.powder_cobalt, ModItems.powder_bromine, ModItems.powder_tennessine, ModItems.powder_niobium, ModItems.powder_cerium }); diff --git a/com/hbm/main/MainRegistry.java b/com/hbm/main/MainRegistry.java index 361063544..9dc9e7d0a 100644 --- a/com/hbm/main/MainRegistry.java +++ b/com/hbm/main/MainRegistry.java @@ -202,6 +202,7 @@ import com.hbm.tileentity.machine.TileEntityMachineIGenerator; import com.hbm.tileentity.machine.TileEntityMachineInserter; import com.hbm.tileentity.machine.TileEntityMachineMiningDrill; import com.hbm.tileentity.machine.TileEntityMachineOilWell; +import com.hbm.tileentity.machine.TileEntityMachinePress; import com.hbm.tileentity.machine.TileEntityMachinePuF6Tank; import com.hbm.tileentity.machine.TileEntityMachinePumpjack; import com.hbm.tileentity.machine.TileEntityMachineRTG; @@ -515,7 +516,7 @@ public class MainRegistry GameRegistry.registerTileEntity(TileEntityMachineTurbofan.class, "tileentity_machine_turbofan"); GameRegistry.registerTileEntity(TileEntityCrateIron.class, "tileentity_crate_iron"); GameRegistry.registerTileEntity(TileEntityCrateSteel.class, "tileentity_crate_steel"); - GameRegistry.registerTileEntity(TileEntityMachineInserter.class, "tileentity_inserter"); + GameRegistry.registerTileEntity(TileEntityMachinePress.class, "tileentity_press"); EntityRegistry.registerModEntity(EntityRocket.class, "entity_rocket", 0, this, 250, 1, true); EntityRegistry.registerModEntity(EntityNukeExplosion.class, "entity_nuke_explosion", 1, this, 250, 1, true); diff --git a/com/hbm/main/NEIConfig.java b/com/hbm/main/NEIConfig.java index 466477220..8934de124 100644 --- a/com/hbm/main/NEIConfig.java +++ b/com/hbm/main/NEIConfig.java @@ -1,17 +1,7 @@ package com.hbm.main; import com.hbm.blocks.ModBlocks; -import com.hbm.handler.nei.AlloyFurnaceRecipeHandler; -import com.hbm.handler.nei.AssemblerRecipeHandler; -import com.hbm.handler.nei.CMBFurnaceRecipeHandler; -import com.hbm.handler.nei.CentrifugeRecipeHandler; -import com.hbm.handler.nei.ChemplantRecipeHandler; -import com.hbm.handler.nei.CyclotronRecipeHandler; -import com.hbm.handler.nei.FluidRecipeHandler; -import com.hbm.handler.nei.ModInfoHandler; -import com.hbm.handler.nei.ReactorRecipeHandler; -import com.hbm.handler.nei.RefineryRecipeHandler; -import com.hbm.handler.nei.ShredderRecipeHandler; +import com.hbm.handler.nei.*; import com.hbm.items.ModItems; import com.hbm.lib.RefStrings; @@ -46,6 +36,8 @@ public class NEIConfig implements IConfigureNEI { API.registerUsageHandler(new ChemplantRecipeHandler()); API.registerRecipeHandler(new FluidRecipeHandler()); API.registerUsageHandler(new FluidRecipeHandler()); + API.registerRecipeHandler(new PressRecipeHandler()); + API.registerUsageHandler(new PressRecipeHandler()); //Some things are even beyond my control...or are they? API.hideItem(new ItemStack(Item.getItemFromBlock(ModBlocks.machine_coal_on))); diff --git a/com/hbm/main/ResourceManager.java b/com/hbm/main/ResourceManager.java index 168523b8a..b59991182 100644 --- a/com/hbm/main/ResourceManager.java +++ b/com/hbm/main/ResourceManager.java @@ -29,6 +29,10 @@ public class ResourceManager { public static final IModelCustom turbofan_body = AdvancedModelLoader.loadModel(new ResourceLocation(RefStrings.MODID, "models/turbofan_body.obj")); public static final IModelCustom turbofan_blades = AdvancedModelLoader.loadModel(new ResourceLocation(RefStrings.MODID, "models/turbofan_blades.obj")); + //Press + public static final IModelCustom press_body = AdvancedModelLoader.loadModel(new ResourceLocation(RefStrings.MODID, "models/press_body.obj")); + public static final IModelCustom press_head = AdvancedModelLoader.loadModel(new ResourceLocation(RefStrings.MODID, "models/press_head.obj")); + ////Textures TEs public static final ResourceLocation universal = new ResourceLocation(RefStrings.MODID, "textures/models/TheGadget3_.png"); @@ -54,6 +58,10 @@ public class ResourceManager { //Pumpjack public static final ResourceLocation turbofan_body_tex = new ResourceLocation(RefStrings.MODID, "textures/models/turbofan_body.png"); public static final ResourceLocation turbofan_blades_tex = new ResourceLocation(RefStrings.MODID, "textures/models/turbofan_blades.png"); + + //Press + public static final ResourceLocation press_body_tex = new ResourceLocation(RefStrings.MODID, "textures/models/press_body.png"); + public static final ResourceLocation press_head_tex = new ResourceLocation(RefStrings.MODID, "textures/models/press_head.png"); ////Obj Items diff --git a/com/hbm/packet/ItemFolderPacket.java b/com/hbm/packet/ItemFolderPacket.java index 62aee93df..ec9b41680 100644 --- a/com/hbm/packet/ItemFolderPacket.java +++ b/com/hbm/packet/ItemFolderPacket.java @@ -85,6 +85,60 @@ public class ItemFolderPacket implements IMessage { p.dropPlayerItemWithRandomChoice(stack, true); } } + if(stack.getItem() == ModItems.stamp_stone_plate || + stack.getItem() == ModItems.stamp_stone_wire || + stack.getItem() == ModItems.stamp_stone_circuit) { + if(p.inventory.hasItem(ModItems.stamp_stone_flat)) { + p.inventory.consumeInventoryItem(ModItems.stamp_stone_flat); + if(!p.inventory.addItemStackToInventory(stack.copy())) + p.dropPlayerItemWithRandomChoice(stack, true); + } + } + if(stack.getItem() == ModItems.stamp_iron_plate || + stack.getItem() == ModItems.stamp_iron_wire || + stack.getItem() == ModItems.stamp_iron_circuit) { + if(p.inventory.hasItem(ModItems.stamp_iron_flat)) { + p.inventory.consumeInventoryItem(ModItems.stamp_iron_flat); + if(!p.inventory.addItemStackToInventory(stack.copy())) + p.dropPlayerItemWithRandomChoice(stack, true); + } + } + if(stack.getItem() == ModItems.stamp_steel_plate || + stack.getItem() == ModItems.stamp_steel_wire || + stack.getItem() == ModItems.stamp_steel_circuit) { + if(p.inventory.hasItem(ModItems.stamp_steel_flat)) { + p.inventory.consumeInventoryItem(ModItems.stamp_steel_flat); + if(!p.inventory.addItemStackToInventory(stack.copy())) + p.dropPlayerItemWithRandomChoice(stack, true); + } + } + if(stack.getItem() == ModItems.stamp_titanium_plate || + stack.getItem() == ModItems.stamp_titanium_wire || + stack.getItem() == ModItems.stamp_titanium_circuit) { + if(p.inventory.hasItem(ModItems.stamp_titanium_flat)) { + p.inventory.consumeInventoryItem(ModItems.stamp_titanium_flat); + if(!p.inventory.addItemStackToInventory(stack.copy())) + p.dropPlayerItemWithRandomChoice(stack, true); + } + } + if(stack.getItem() == ModItems.stamp_obsidian_plate || + stack.getItem() == ModItems.stamp_obsidian_wire || + stack.getItem() == ModItems.stamp_obsidian_circuit) { + if(p.inventory.hasItem(ModItems.stamp_obsidian_flat)) { + p.inventory.consumeInventoryItem(ModItems.stamp_obsidian_flat); + if(!p.inventory.addItemStackToInventory(stack.copy())) + p.dropPlayerItemWithRandomChoice(stack, true); + } + } + if(stack.getItem() == ModItems.stamp_schrabidium_plate || + stack.getItem() == ModItems.stamp_schrabidium_wire || + stack.getItem() == ModItems.stamp_schrabidium_circuit) { + if(p.inventory.hasItem(ModItems.stamp_schrabidium_flat)) { + p.inventory.consumeInventoryItem(ModItems.stamp_schrabidium_flat); + if(!p.inventory.addItemStackToInventory(stack.copy())) + p.dropPlayerItemWithRandomChoice(stack, true); + } + } //} return null; diff --git a/com/hbm/packet/PacketDispatcher.java b/com/hbm/packet/PacketDispatcher.java index ca43b11fd..898e6bb88 100644 --- a/com/hbm/packet/PacketDispatcher.java +++ b/com/hbm/packet/PacketDispatcher.java @@ -47,6 +47,8 @@ public class PacketDispatcher { wrapper.registerMessage(TEPumpjackPacket.Handler.class, TEPumpjackPacket.class, i++, Side.CLIENT); //Turbofan spin for rendering wrapper.registerMessage(TETurbofanPacket.Handler.class, TETurbofanPacket.class, i++, Side.CLIENT); + //Press item for rendering + wrapper.registerMessage(TEPressPacket.Handler.class, TEPressPacket.class, i++, Side.CLIENT); } } diff --git a/com/hbm/packet/TEPressPacket.java b/com/hbm/packet/TEPressPacket.java new file mode 100644 index 000000000..08f4038f5 --- /dev/null +++ b/com/hbm/packet/TEPressPacket.java @@ -0,0 +1,80 @@ +package com.hbm.packet; + +import com.hbm.main.MainRegistry; +import com.hbm.tileentity.machine.TileEntityMachinePress; +import com.hbm.tileentity.machine.TileEntityMachineTurbofan; + +import cpw.mods.fml.common.network.simpleimpl.IMessage; +import cpw.mods.fml.common.network.simpleimpl.IMessageHandler; +import cpw.mods.fml.common.network.simpleimpl.MessageContext; +import io.netty.buffer.ByteBuf; +import net.minecraft.client.Minecraft; +import net.minecraft.item.Item; +import net.minecraft.item.ItemStack; +import net.minecraft.tileentity.TileEntity; + +public class TEPressPacket implements IMessage { + + int x; + int y; + int z; + int item; + int meta; + int progress; + + public TEPressPacket() + { + + } + + public TEPressPacket(int x, int y, int z, ItemStack stack, int progress) + { + this.x = x; + this.y = y; + this.z = z; + this.item = 0; + this.meta = 0; + if(stack != null) { + this.item = Item.getIdFromItem(stack.getItem()); + this.meta = stack.getItemDamage(); + } + this.progress = progress; + } + + @Override + public void fromBytes(ByteBuf buf) { + x = buf.readInt(); + y = buf.readInt(); + z = buf.readInt(); + item = buf.readInt(); + meta = buf.readInt(); + progress = buf.readInt(); + } + + @Override + public void toBytes(ByteBuf buf) { + buf.writeInt(x); + buf.writeInt(y); + buf.writeInt(z); + buf.writeInt(item); + buf.writeInt(meta); + buf.writeInt(progress); + } + + public static class Handler implements IMessageHandler { + + @Override + public IMessage onMessage(TEPressPacket m, MessageContext ctx) { + TileEntity te = Minecraft.getMinecraft().theWorld.getTileEntity(m.x, m.y, m.z); + + if (te != null && te instanceof TileEntityMachinePress) { + + TileEntityMachinePress gen = (TileEntityMachinePress) te; + gen.item = m.item; + gen.meta = m.meta; + gen.progress = m.progress; + } + return null; + } + } +} diff --git a/com/hbm/render/entity/RenderSmallNukeAlt.java b/com/hbm/render/entity/RenderSmallNukeAlt.java index 14f40471c..be49604b7 100644 --- a/com/hbm/render/entity/RenderSmallNukeAlt.java +++ b/com/hbm/render/entity/RenderSmallNukeAlt.java @@ -42,7 +42,7 @@ public class RenderSmallNukeAlt extends Render { @Override public void doRender(Entity p_76986_1_, double p_76986_2_, double p_76986_4_, double p_76986_6_, float p_76986_8_, float p_76986_9_) { - if(((EntityNukeCloudSmall)p_76986_1_).age > 100) + if(((EntityNukeCloudSmall)p_76986_1_).getDataWatcher().getWatchableObjectShort(17) > 100) { this.renderMush((EntityNukeCloudSmall)p_76986_1_, p_76986_2_, p_76986_4_, p_76986_6_, p_76986_8_, p_76986_9_); this.renderCloud((EntityNukeCloudSmall)p_76986_1_, p_76986_2_, p_76986_4_, p_76986_6_, p_76986_8_, p_76986_9_); @@ -58,7 +58,7 @@ public class RenderSmallNukeAlt extends Render { GL11.glTranslatef((float)p_76986_2_, (float)p_76986_4_, (float)p_76986_6_); GL11.glDisable(GL11.GL_LIGHTING); GL11.glDisable(GL11.GL_CULL_FACE); - if(p_76986_1_.age < 150) + if(p_76986_1_.getDataWatcher().getWatchableObjectShort(17) < 150) { //GL11.glTranslatef(0.0F, -60F + ((p_76986_1_.age - 100) * 60 / 50), 0.0F); GL11.glTranslatef(0.0F, p_76986_1_.height, 0.0F); @@ -81,7 +81,7 @@ public class RenderSmallNukeAlt extends Render { { scale += 0.02; }*/ - GL11.glScalef(p_76986_1_.scale, 1.0F, p_76986_1_.scale); + GL11.glScalef(p_76986_1_.getDataWatcher().getWatchableObjectShort(18), 1.0F, p_76986_1_.getDataWatcher().getWatchableObjectShort(18)); GL11.glScalef(50F, 25.0F, 50F); bindTexture(ringBigTexture); @@ -97,7 +97,7 @@ public class RenderSmallNukeAlt extends Render { GL11.glDisable(GL11.GL_CULL_FACE); GL11.glTranslatef(0.0F, 18F, 0.0F); //ring += 0.1F; - GL11.glScalef(p_76986_1_.ring * 10, 30F, p_76986_1_.ring * 10); + GL11.glScalef(p_76986_1_.getDataWatcher().getWatchableObjectShort(19) * 10, 30F, p_76986_1_.getDataWatcher().getWatchableObjectShort(19) * 10); bindTexture(ringTexture); ringModel.renderAll(); @@ -108,13 +108,13 @@ public class RenderSmallNukeAlt extends Render { Tessellator tessellator = Tessellator.instance; RenderHelper.disableStandardItemLighting(); - float f1 = (p_76986_1_.ticksExisted + 2.0F) / 200.0F; + float f1 = (p_76986_1_.getDataWatcher().getWatchableObjectShort(17) + 2.0F) / 200.0F; float f2 = 0.0F; int count = 250; - if(p_76986_1_.ticksExisted < 250) + if(p_76986_1_.getDataWatcher().getWatchableObjectShort(17) < 250) { - count = p_76986_1_.ticksExisted * 3; + count = p_76986_1_.getDataWatcher().getWatchableObjectShort(17) * 3; } if (f1 > 0.8F) diff --git a/com/hbm/render/tileentity/RenderDecoItem.java b/com/hbm/render/tileentity/RenderDecoItem.java index 85a5cc103..c5b331b92 100644 --- a/com/hbm/render/tileentity/RenderDecoItem.java +++ b/com/hbm/render/tileentity/RenderDecoItem.java @@ -1,10 +1,11 @@ package com.hbm.render.tileentity; import net.minecraft.client.renderer.entity.RenderItem; +import net.minecraft.client.renderer.tileentity.TileEntitySpecialRenderer; import net.minecraft.item.ItemStack; public class RenderDecoItem extends RenderItem { - RenderDecoItem(RenderDecoBlockAlt render) {} + RenderDecoItem(TileEntitySpecialRenderer render) {} @Override public byte getMiniBlockCount(ItemStack stack, byte original) diff --git a/com/hbm/render/tileentity/RenderPress.java b/com/hbm/render/tileentity/RenderPress.java new file mode 100644 index 000000000..9e3f6335b --- /dev/null +++ b/com/hbm/render/tileentity/RenderPress.java @@ -0,0 +1,90 @@ +package com.hbm.render.tileentity; + +import org.lwjgl.opengl.GL11; + +import com.hbm.items.ModItems; +import com.hbm.lib.RefStrings; +import com.hbm.main.MainRegistry; +import com.hbm.main.ResourceManager; +import com.hbm.render.model.ModelRotationTester; +import com.hbm.tileentity.deco.TileEntityDecoBlockAltF; +import com.hbm.tileentity.deco.TileEntityDecoBlockAltW; +import com.hbm.tileentity.machine.TileEntityMachinePress; + +import net.minecraft.block.Block; +import net.minecraft.client.renderer.entity.RenderItem; +import net.minecraft.client.renderer.entity.RenderManager; +import net.minecraft.client.renderer.tileentity.TileEntitySpecialRenderer; +import net.minecraft.entity.item.EntityItem; +import net.minecraft.item.Item; +import net.minecraft.item.ItemBlock; +import net.minecraft.item.ItemStack; +import net.minecraft.tileentity.TileEntity; +import net.minecraft.util.ResourceLocation; + +public class RenderPress extends TileEntitySpecialRenderer { + + private RenderItem itemRenderer; + private RenderManager renderManager = RenderManager.instance; + + public RenderPress() { } + + @Override + public void renderTileEntityAt(TileEntity tileentity, double x, double y, double z, float f) { + GL11.glPushMatrix(); + GL11.glTranslated(x + 0.5D, y, z + 0.5D); + GL11.glEnable(GL11.GL_LIGHTING); + GL11.glRotatef(180, 0F, 1F, 0F); + + this.bindTexture(ResourceManager.press_body_tex); + + ResourceManager.press_body.renderAll(); + + GL11.glPopMatrix(); + + renderTileEntityAt2(tileentity, x, y, z, f); + } + + public void renderTileEntityAt2(TileEntity tileEntity, double x, double y, double z, float f) { + GL11.glPushMatrix(); + GL11.glTranslated(x + 0.5D, y + 1 - 0.125D, z + 0.5D); + GL11.glEnable(GL11.GL_LIGHTING); + GL11.glRotatef(180, 0F, 1F, 0F); + + TileEntityMachinePress press = (TileEntityMachinePress)tileEntity; + float f1 = press.progress * (1 - 0.125F) / press.maxProgress; + GL11.glTranslated(0, -f1, 0); + + this.bindTexture(ResourceManager.press_head_tex); + + ResourceManager.press_head.renderAll(); + + GL11.glPopMatrix(); + + renderTileEntityAt3(tileEntity, x, y, z, f); + } + + public void renderTileEntityAt3(TileEntity tileEntity, double x, double y, double z, float f) { + itemRenderer = new RenderDecoItem(this); + itemRenderer.setRenderManager(renderManager); + GL11.glPushMatrix(); + GL11.glTranslated(x + 0.5D, y + 1, z - 0.5); + GL11.glEnable(GL11.GL_LIGHTING); + GL11.glRotatef(180, 0F, 1F, 0F); + GL11.glRotatef(-90, 1F, 0F, 0F); + + TileEntityMachinePress press = (TileEntityMachinePress)tileEntity; + ItemStack stack = new ItemStack(Item.getItemById(press.item), 1, press.meta); + + if(!(stack.getItem() instanceof ItemBlock)) { + EntityItem item = new EntityItem(null, 0.0D, 0.0D, 0.0D, stack); + + RenderItem.renderInFrame = true; + GL11.glTranslatef(0.0F, 1.0F - 0.0625F * 165/100, 0.0F); + this.itemRenderer.doRender(item, 0.0D, 0.0D, 0.0D, 0.0F, 0.0F); + RenderItem.renderInFrame = false; + } + + GL11.glPopMatrix(); + } +} diff --git a/com/hbm/tileentity/machine/TileEntityMachinePress.java b/com/hbm/tileentity/machine/TileEntityMachinePress.java new file mode 100644 index 000000000..c401bfd5a --- /dev/null +++ b/com/hbm/tileentity/machine/TileEntityMachinePress.java @@ -0,0 +1,310 @@ +package com.hbm.tileentity.machine; + +import com.hbm.handler.FluidTypeHandler.FluidType; +import com.hbm.interfaces.IFluidContainer; +import com.hbm.inventory.FluidTank; +import com.hbm.inventory.MachineRecipes; +import com.hbm.items.ModItems; +import com.hbm.items.special.ItemBattery; +import com.hbm.main.MainRegistry; +import com.hbm.packet.PacketDispatcher; +import com.hbm.packet.TEPressPacket; + +import cpw.mods.fml.common.registry.GameRegistry; +import cpw.mods.fml.relauncher.Side; +import cpw.mods.fml.relauncher.SideOnly; +import net.minecraft.block.Block; +import net.minecraft.block.material.Material; +import net.minecraft.entity.player.EntityPlayer; +import net.minecraft.init.Blocks; +import net.minecraft.init.Items; +import net.minecraft.inventory.ISidedInventory; +import net.minecraft.item.Item; +import net.minecraft.item.ItemBlock; +import net.minecraft.item.ItemHoe; +import net.minecraft.item.ItemStack; +import net.minecraft.item.ItemSword; +import net.minecraft.item.ItemTool; +import net.minecraft.nbt.NBTTagCompound; +import net.minecraft.nbt.NBTTagList; +import net.minecraft.tileentity.TileEntity; +import net.minecraft.tileentity.TileEntityFurnace; +import net.minecraft.util.AxisAlignedBB; + +public class TileEntityMachinePress extends TileEntity implements ISidedInventory { + + private ItemStack slots[]; + + public int progress = 0; + public int power = 0; + public int burnTime = 0; + public final static int maxProgress = 200; + public final static int maxPower = 700; + public int maxBurn = 160; + public int item; + public int meta; + boolean isRetracting = false; + + private String customName; + + public TileEntityMachinePress() { + slots = new ItemStack[4]; + } + + @Override + public int getSizeInventory() { + return slots.length; + } + + @Override + public ItemStack getStackInSlot(int i) { + return slots[i]; + } + + @Override + public ItemStack getStackInSlotOnClosing(int i) { + if(slots[i] != null) + { + ItemStack itemStack = slots[i]; + slots[i] = null; + return itemStack; + } else { + return null; + } + } + + @Override + public void setInventorySlotContents(int i, ItemStack itemStack) { + slots[i] = itemStack; + if(itemStack != null && itemStack.stackSize > getInventoryStackLimit()) + { + itemStack.stackSize = getInventoryStackLimit(); + } + } + + @Override + public String getInventoryName() { + return this.hasCustomInventoryName() ? this.customName : "container.press"; + } + + @Override + public boolean hasCustomInventoryName() { + return this.customName != null && this.customName.length() > 0; + } + + public void setCustomName(String name) { + this.customName = name; + } + + @Override + public int getInventoryStackLimit() { + return 64; + } + + @Override + public boolean isUseableByPlayer(EntityPlayer player) { + if(worldObj.getTileEntity(xCoord, yCoord, zCoord) != this) + { + return false; + }else{ + return player.getDistanceSq(xCoord + 0.5D, yCoord + 0.5D, zCoord + 0.5D) <=64; + } + } + + @Override + public void openInventory() {} + @Override + public void closeInventory() {} + + @Override + public boolean isItemValidForSlot(int i, ItemStack stack) { + return false; + } + + @Override + public ItemStack decrStackSize(int i, int j) { + if(slots[i] != null) + { + if(slots[i].stackSize <= j) + { + ItemStack itemStack = slots[i]; + slots[i] = null; + return itemStack; + } + ItemStack itemStack1 = slots[i].splitStack(j); + if (slots[i].stackSize == 0) + { + slots[i] = null; + } + + return itemStack1; + } else { + return null; + } + } + + @Override + public void readFromNBT(NBTTagCompound nbt) { + super.readFromNBT(nbt); + NBTTagList list = nbt.getTagList("items", 10); + + progress = nbt.getInteger("progress"); + power = nbt.getInteger("power"); + burnTime = nbt.getInteger("burnTime"); + maxBurn = nbt.getInteger("maxBurn"); + isRetracting = nbt.getBoolean("ret"); + + slots = new ItemStack[getSizeInventory()]; + + for(int i = 0; i < list.tagCount(); i++) + { + NBTTagCompound nbt1 = list.getCompoundTagAt(i); + byte b0 = nbt1.getByte("slot"); + if(b0 >= 0 && b0 < slots.length) + { + slots[b0] = ItemStack.loadItemStackFromNBT(nbt1); + } + } + } + + @Override + public void writeToNBT(NBTTagCompound nbt) { + super.writeToNBT(nbt); + NBTTagList list = new NBTTagList(); + + nbt.setInteger("progress", progress); + nbt.setInteger("power", power); + nbt.setInteger("burnTime", burnTime); + nbt.setInteger("maxBurn", maxBurn); + nbt.setBoolean("ret", isRetracting); + + for(int i = 0; i < slots.length; i++) + { + if(slots[i] != null) + { + NBTTagCompound nbt1 = new NBTTagCompound(); + nbt1.setByte("slot", (byte)i); + slots[i].writeToNBT(nbt1); + list.appendTag(nbt1); + } + } + nbt.setTag("items", list); + } + + @Override + public int[] getAccessibleSlotsFromSide(int p_94128_1_) + { + return new int[] {0, 1, 2, 3}; + } + + @Override + public boolean canInsertItem(int i, ItemStack itemStack, int j) { + return this.isItemValidForSlot(i, itemStack); + } + + @Override + public boolean canExtractItem(int i, ItemStack itemStack, int j) { + return false; + } + + @Override + public void updateEntity() { + if(!worldObj.isRemote) + { + if(burnTime > 0) { + this.burnTime--; + this.power++; + if(power > maxPower) + power = maxPower; + } else { + if(power > 0) + power--; + } + + if(slots[0] != null && this.burnTime == 0 && TileEntityFurnace.getItemBurnTime(slots[0]) > 0) { + this.maxBurn = this.burnTime = TileEntityFurnace.getItemBurnTime(slots[0]) / 8; + slots[0].stackSize--; + if(slots[0].stackSize <= 0) + slots[0] = null; + } + + if(power >= maxPower / 3) { + + int speed = power * 25 / maxPower; + + if(slots[1] != null && slots[2] != null) { + ItemStack stack = MachineRecipes.getPressResult(slots[2].getItem(), slots[1].getItem()); + if(stack != null && + (slots[3] == null || + (slots[3].getItem() == stack.getItem() && + slots[3].stackSize + stack.stackSize <= slots[3].getMaxStackSize()))) { + + if(progress >= maxProgress) { + + isRetracting = true; + + if(slots[3] == null) + slots[3] = stack.copy(); + else + slots[3].stackSize += stack.stackSize; + + slots[2].stackSize--; + if(slots[2].stackSize <= 0) + slots[2] = null; + + slots[1].setItemDamage(slots[1].getItemDamage() + 1); + if(slots[1].getItemDamage() >= slots[1].getMaxDamage()) + slots[1] = null; + + this.worldObj.playSoundEffect(this.xCoord, this.yCoord, this.zCoord, "hbm:block.pressOperate", 1.5F, 1.0F); + } + + if(!isRetracting) + progress += speed; + + } else { + isRetracting = true; + } + } else { + isRetracting = true; + } + + if(isRetracting) + progress -= speed; + } else { + isRetracting = true; + } + + if(progress <= 0) { + isRetracting = false; + progress = 0; + } + + PacketDispatcher.wrapper.sendToAll(new TEPressPacket(xCoord, yCoord, zCoord, slots[2], progress)); + } + } + + public int getPowerScaled(int i) { + return (power * i) / maxPower; + } + + public int getProgressScaled(int i) { + return (progress * i) / maxProgress; + } + + public int getBurnScaled(int i) { + return (burnTime * i) / maxBurn; + } + + @Override + public AxisAlignedBB getRenderBoundingBox() { + return TileEntity.INFINITE_EXTENT_AABB; + } + + @Override + @SideOnly(Side.CLIENT) + public double getMaxRenderDistanceSquared() + { + return 65536.0D; + } +}