From e975a558eae451f4e342df86ba7eee56ec06a298 Mon Sep 17 00:00:00 2001 From: Boblet Date: Fri, 17 May 2024 15:19:47 +0200 Subject: [PATCH] arc furnace stuff --- .../com/hbm/inventory/OreDictManager.java | 7 + .../java/com/hbm/inventory/material/Mats.java | 168 +++++++++--------- .../hbm/inventory/material/NTMMaterial.java | 15 ++ .../inventory/recipes/ArcFurnaceRecipes.java | 74 ++++++++ .../recipes/loader/SerializableRecipe.java | 1 + .../TileEntityMachineArcFurnaceLarge.java | 17 +- .../gui/processing/gui_arc_furnace.png | Bin 4765 -> 4900 bytes .../hbm/textures/items/ingot_silicon.png | Bin 247 -> 255 bytes 8 files changed, 196 insertions(+), 86 deletions(-) create mode 100644 src/main/java/com/hbm/inventory/recipes/ArcFurnaceRecipes.java diff --git a/src/main/java/com/hbm/inventory/OreDictManager.java b/src/main/java/com/hbm/inventory/OreDictManager.java index e7159dd8c..8a66a671f 100644 --- a/src/main/java/com/hbm/inventory/OreDictManager.java +++ b/src/main/java/com/hbm/inventory/OreDictManager.java @@ -662,7 +662,14 @@ public class OreDictManager { } recursionBrake = false; + + if(event.Name.startsWith("ingot")) { ingots.add(event.Name); names.add(event.Name.substring(5)); } + if(event.Name.startsWith("ore")) { ores.add(event.Name); names.add(event.Name.substring(3)); } } + + public static final HashSet ores = new HashSet(); + public static final HashSet ingots = new HashSet(); + public static final HashSet names = new HashSet(); public static class DictFrame { public String[] mats; diff --git a/src/main/java/com/hbm/inventory/material/Mats.java b/src/main/java/com/hbm/inventory/material/Mats.java index 67427e03e..ce1620a29 100644 --- a/src/main/java/com/hbm/inventory/material/Mats.java +++ b/src/main/java/com/hbm/inventory/material/Mats.java @@ -46,96 +46,96 @@ public class Mats { public static final int _AS = 30; //Vanilla and vanilla-like - public static final NTMMaterial MAT_STONE = makeSmeltable(_VS + 00, df("Stone"), 0x7F7F7F, 0x353535, 0x4D2F23); - public static final NTMMaterial MAT_CARBON = makeAdditive( 1499, df("Carbon"), 0x363636, 0x030303, 0x404040); - public static final NTMMaterial MAT_COAL = make( 1400, COAL) .setConversion(MAT_CARBON, 2, 1); - public static final NTMMaterial MAT_LIGNITE = make( 1401, LIGNITE) .setConversion(MAT_CARBON, 3, 1); - public static final NTMMaterial MAT_COALCOKE = make( 1410, COALCOKE) .setConversion(MAT_CARBON, 4, 3); - public static final NTMMaterial MAT_PETCOKE = make( 1411, PETCOKE) .setConversion(MAT_CARBON, 4, 3); - public static final NTMMaterial MAT_LIGCOKE = make( 1412, LIGCOKE) .setConversion(MAT_CARBON, 4, 3); - public static final NTMMaterial MAT_GRAPHITE = make( 1420, GRAPHITE) .setConversion(MAT_CARBON, 1, 1); - public static final NTMMaterial MAT_DIAMOND = make( 1430, DIAMOND) .setConversion(MAT_CARBON, 1, 1); - public static final NTMMaterial MAT_IRON = makeSmeltable(2600, IRON, 0xFFFFFF, 0x353535, 0xFFA259).setShapes(PIPE, CASTPLATE, WELDEDPLATE); - public static final NTMMaterial MAT_GOLD = makeSmeltable(7900, GOLD, 0xFFFF8B, 0xC26E00, 0xE8D754).setShapes(DENSEWIRE, CASTPLATE); - public static final NTMMaterial MAT_REDSTONE = makeSmeltable(_VS + 01, REDSTONE, 0xE3260C, 0x700E06, 0xFF1000); - public static final NTMMaterial MAT_OBSIDIAN = makeSmeltable(_VS + 02, df("Obsidian"), 0x3D234D); - public static final NTMMaterial MAT_HEMATITE = makeAdditive( 2601, HEMATITE, 0xDFB7AE, 0x5F372E, 0x6E463D); - public static final NTMMaterial MAT_WROUGHTIRON = makeSmeltable(2602, df("WroughtIron"), 0xFAAB89); - public static final NTMMaterial MAT_PIGIRON = makeSmeltable(2603, df("PigIron"), 0xFF8B59); - public static final NTMMaterial MAT_METEORICIRON = makeSmeltable(2604, df("MeteoricIron"), 0x715347); - public static final NTMMaterial MAT_MALACHITE = makeAdditive( 2901, MALACHITE, 0xA2F0C8, 0x227048, 0x61AF87); + public static final NTMMaterial MAT_STONE = makeSmeltable(_VS + 00, df("Stone"), 0x7F7F7F, 0x353535, 0x4D2F23).n(); + public static final NTMMaterial MAT_CARBON = makeAdditive( 1499, df("Carbon"), 0x363636, 0x030303, 0x404040).n(); + public static final NTMMaterial MAT_COAL = make( 1400, COAL) .setConversion(MAT_CARBON, 2, 1).n(); + public static final NTMMaterial MAT_LIGNITE = make( 1401, LIGNITE) .setConversion(MAT_CARBON, 3, 1).n(); + public static final NTMMaterial MAT_COALCOKE = make( 1410, COALCOKE) .setConversion(MAT_CARBON, 4, 3).n(); + public static final NTMMaterial MAT_PETCOKE = make( 1411, PETCOKE) .setConversion(MAT_CARBON, 4, 3).n(); + public static final NTMMaterial MAT_LIGCOKE = make( 1412, LIGCOKE) .setConversion(MAT_CARBON, 4, 3).n(); + public static final NTMMaterial MAT_GRAPHITE = make( 1420, GRAPHITE) .setConversion(MAT_CARBON, 1, 1).n(); + public static final NTMMaterial MAT_DIAMOND = make( 1430, DIAMOND) .setConversion(MAT_CARBON, 1, 1).n(); + public static final NTMMaterial MAT_IRON = makeSmeltable(2600, IRON, 0xFFFFFF, 0x353535, 0xFFA259).setShapes(PIPE, CASTPLATE, WELDEDPLATE).m(); + public static final NTMMaterial MAT_GOLD = makeSmeltable(7900, GOLD, 0xFFFF8B, 0xC26E00, 0xE8D754).setShapes(DENSEWIRE, CASTPLATE).m(); + public static final NTMMaterial MAT_REDSTONE = makeSmeltable(_VS + 01, REDSTONE, 0xE3260C, 0x700E06, 0xFF1000).n(); + public static final NTMMaterial MAT_OBSIDIAN = makeSmeltable(_VS + 02, df("Obsidian"), 0x3D234D).n(); + public static final NTMMaterial MAT_HEMATITE = makeAdditive( 2601, HEMATITE, 0xDFB7AE, 0x5F372E, 0x6E463D).m(); + public static final NTMMaterial MAT_WROUGHTIRON = makeSmeltable(2602, df("WroughtIron"), 0xFAAB89).m(); + public static final NTMMaterial MAT_PIGIRON = makeSmeltable(2603, df("PigIron"), 0xFF8B59).m(); + public static final NTMMaterial MAT_METEORICIRON = makeSmeltable(2604, df("MeteoricIron"), 0x715347).m(); + public static final NTMMaterial MAT_MALACHITE = makeAdditive( 2901, MALACHITE, 0xA2F0C8, 0x227048, 0x61AF87).m(); //Radioactive - public static final NTMMaterial MAT_URANIUM = makeSmeltable(9200, U, 0xC1C7BD, 0x2B3227, 0x9AA196).setShapes(NUGGET, BILLET, INGOT, DUST, BLOCK); - public static final NTMMaterial MAT_U233 = makeSmeltable(9233, U233, 0xC1C7BD, 0x2B3227, 0x9AA196).setShapes(NUGGET, BILLET, INGOT, DUST, BLOCK); - public static final NTMMaterial MAT_U235 = makeSmeltable(9235, U235, 0xC1C7BD, 0x2B3227, 0x9AA196).setShapes(NUGGET, BILLET, INGOT, DUST, BLOCK); - public static final NTMMaterial MAT_U238 = makeSmeltable(9238, U238, 0xC1C7BD, 0x2B3227, 0x9AA196).setShapes(NUGGET, BILLET, INGOT, DUST, BLOCK); - public static final NTMMaterial MAT_THORIUM = makeSmeltable(9032, TH232, 0xBF825F, 0x1C0000, 0xBF825F).setShapes(NUGGET, BILLET, INGOT, DUST, BLOCK); - public static final NTMMaterial MAT_PLUTONIUM = makeSmeltable(9400, PU, 0x9AA3A0, 0x111A17, 0x78817E).setShapes(NUGGET, BILLET, INGOT, DUST, BLOCK); - public static final NTMMaterial MAT_RGP = makeSmeltable(9401, PURG, 0x9AA3A0, 0x111A17, 0x78817E).setShapes(NUGGET, BILLET, INGOT, BLOCK); - public static final NTMMaterial MAT_PU238 = makeSmeltable(9438, PU238, 0xFFBC59, 0xFF8E2B, 0x78817E).setShapes(NUGGET, BILLET, INGOT, BLOCK); - public static final NTMMaterial MAT_PU239 = makeSmeltable(9439, PU239, 0x9AA3A0, 0x111A17, 0x78817E).setShapes(NUGGET, BILLET, INGOT, BLOCK); - public static final NTMMaterial MAT_PU240 = makeSmeltable(9440, PU240, 0x9AA3A0, 0x111A17, 0x78817E).setShapes(NUGGET, BILLET, INGOT, BLOCK); - public static final NTMMaterial MAT_PU241 = makeSmeltable(9441, PU241, 0x9AA3A0, 0x111A17, 0x78817E).setShapes(NUGGET, BILLET, INGOT, BLOCK); - public static final NTMMaterial MAT_RGA = makeSmeltable(9501, AMRG, 0x93767B).setShapes(NUGGET, BILLET, INGOT, BLOCK); - public static final NTMMaterial MAT_AM241 = makeSmeltable(9541, AM241, 0x93767B).setShapes(NUGGET, BILLET, INGOT, BLOCK); - public static final NTMMaterial MAT_AM242 = makeSmeltable(9542, AM242, 0x93767B).setShapes(NUGGET, BILLET, INGOT, BLOCK); - public static final NTMMaterial MAT_NEPTUNIUM = makeSmeltable(9337, NP237, 0x647064).setShapes(NUGGET, BILLET, INGOT, DUST, BLOCK); - public static final NTMMaterial MAT_POLONIUM = makeSmeltable(8410, PO210, 0x563A26).setShapes(NUGGET, BILLET, INGOT, DUST, BLOCK); - public static final NTMMaterial MAT_TECHNIETIUM = makeSmeltable(4399, TC99, 0xFAFFFF, 0x576C6C, 0xCADFDF).setShapes(NUGGET, BILLET, INGOT, BLOCK); - public static final NTMMaterial MAT_RADIUM = makeSmeltable(8826, RA226, 0xE9FAF6).setShapes(NUGGET, BILLET, INGOT, DUST, BLOCK); - public static final NTMMaterial MAT_ACTINIUM = makeSmeltable(8927, AC227, 0x958989).setShapes(NUGGET, BILLET, INGOT); - public static final NTMMaterial MAT_CO60 = makeSmeltable(2760, CO60, 0xC2D1EE, 0x353554, 0x8F72AE).setShapes(NUGGET, BILLET, INGOT, DUST); - public static final NTMMaterial MAT_AU198 = makeSmeltable(7998, AU198, 0xFFFF8B, 0xC26E00, 0xE8D754).setShapes(NUGGET, BILLET, INGOT, DUST); - public static final NTMMaterial MAT_PB209 = makeSmeltable(8209, PB209, 0x7B535D).setShapes(NUGGET, BILLET, INGOT, DUST); - public static final NTMMaterial MAT_SCHRABIDIUM = makeSmeltable(12626, SA326, 0x32FFFF, 0x005C5C, 0x32FFFF).setShapes(NUGGET, WIRE, BILLET, INGOT, DUST, DENSEWIRE, PLATE, CASTPLATE, BLOCK); - public static final NTMMaterial MAT_SOLINIUM = makeSmeltable(12627, SA327, 0xA2E6E0, 0x00433D, 0x72B6B0).setShapes(NUGGET, BILLET, INGOT, BLOCK); - public static final NTMMaterial MAT_SCHRABIDATE = makeSmeltable(12600, SBD, 0x77C0D7, 0x39005E, 0x6589B4).setShapes(INGOT, DUST, DENSEWIRE, BLOCK); - public static final NTMMaterial MAT_SCHRARANIUM = makeSmeltable(12601, SRN, 0x2B3227, 0x2B3227, 0x24AFAC).setShapes(INGOT, BLOCK); - public static final NTMMaterial MAT_GHIORSIUM = makeSmeltable(12836, GH336, 0xF4EFE1, 0x2A3306, 0xC6C6A1).setShapes(NUGGET, BILLET, INGOT, BLOCK); + public static final NTMMaterial MAT_URANIUM = makeSmeltable(9200, U, 0xC1C7BD, 0x2B3227, 0x9AA196).setShapes(NUGGET, BILLET, INGOT, DUST, BLOCK).m(); + public static final NTMMaterial MAT_U233 = makeSmeltable(9233, U233, 0xC1C7BD, 0x2B3227, 0x9AA196).setShapes(NUGGET, BILLET, INGOT, DUST, BLOCK).m(); + public static final NTMMaterial MAT_U235 = makeSmeltable(9235, U235, 0xC1C7BD, 0x2B3227, 0x9AA196).setShapes(NUGGET, BILLET, INGOT, DUST, BLOCK).m(); + public static final NTMMaterial MAT_U238 = makeSmeltable(9238, U238, 0xC1C7BD, 0x2B3227, 0x9AA196).setShapes(NUGGET, BILLET, INGOT, DUST, BLOCK).m(); + public static final NTMMaterial MAT_THORIUM = makeSmeltable(9032, TH232, 0xBF825F, 0x1C0000, 0xBF825F).setShapes(NUGGET, BILLET, INGOT, DUST, BLOCK).m(); + public static final NTMMaterial MAT_PLUTONIUM = makeSmeltable(9400, PU, 0x9AA3A0, 0x111A17, 0x78817E).setShapes(NUGGET, BILLET, INGOT, DUST, BLOCK).m(); + public static final NTMMaterial MAT_RGP = makeSmeltable(9401, PURG, 0x9AA3A0, 0x111A17, 0x78817E).setShapes(NUGGET, BILLET, INGOT, BLOCK).m(); + public static final NTMMaterial MAT_PU238 = makeSmeltable(9438, PU238, 0xFFBC59, 0xFF8E2B, 0x78817E).setShapes(NUGGET, BILLET, INGOT, BLOCK).m(); + public static final NTMMaterial MAT_PU239 = makeSmeltable(9439, PU239, 0x9AA3A0, 0x111A17, 0x78817E).setShapes(NUGGET, BILLET, INGOT, BLOCK).m(); + public static final NTMMaterial MAT_PU240 = makeSmeltable(9440, PU240, 0x9AA3A0, 0x111A17, 0x78817E).setShapes(NUGGET, BILLET, INGOT, BLOCK).m(); + public static final NTMMaterial MAT_PU241 = makeSmeltable(9441, PU241, 0x9AA3A0, 0x111A17, 0x78817E).setShapes(NUGGET, BILLET, INGOT, BLOCK).m(); + public static final NTMMaterial MAT_RGA = makeSmeltable(9501, AMRG, 0x93767B).setShapes(NUGGET, BILLET, INGOT, BLOCK).m(); + public static final NTMMaterial MAT_AM241 = makeSmeltable(9541, AM241, 0x93767B).setShapes(NUGGET, BILLET, INGOT, BLOCK).m(); + public static final NTMMaterial MAT_AM242 = makeSmeltable(9542, AM242, 0x93767B).setShapes(NUGGET, BILLET, INGOT, BLOCK).m(); + public static final NTMMaterial MAT_NEPTUNIUM = makeSmeltable(9337, NP237, 0x647064).setShapes(NUGGET, BILLET, INGOT, DUST, BLOCK).m(); + public static final NTMMaterial MAT_POLONIUM = makeSmeltable(8410, PO210, 0x563A26).setShapes(NUGGET, BILLET, INGOT, DUST, BLOCK).m(); + public static final NTMMaterial MAT_TECHNIETIUM = makeSmeltable(4399, TC99, 0xFAFFFF, 0x576C6C, 0xCADFDF).setShapes(NUGGET, BILLET, INGOT, BLOCK).m(); + public static final NTMMaterial MAT_RADIUM = makeSmeltable(8826, RA226, 0xE9FAF6).setShapes(NUGGET, BILLET, INGOT, DUST, BLOCK).m(); + public static final NTMMaterial MAT_ACTINIUM = makeSmeltable(8927, AC227, 0x958989).setShapes(NUGGET, BILLET, INGOT).m(); + public static final NTMMaterial MAT_CO60 = makeSmeltable(2760, CO60, 0xC2D1EE, 0x353554, 0x8F72AE).setShapes(NUGGET, BILLET, INGOT, DUST).m(); + public static final NTMMaterial MAT_AU198 = makeSmeltable(7998, AU198, 0xFFFF8B, 0xC26E00, 0xE8D754).setShapes(NUGGET, BILLET, INGOT, DUST).m(); + public static final NTMMaterial MAT_PB209 = makeSmeltable(8209, PB209, 0x7B535D).setShapes(NUGGET, BILLET, INGOT, DUST).m(); + public static final NTMMaterial MAT_SCHRABIDIUM = makeSmeltable(12626, SA326, 0x32FFFF, 0x005C5C, 0x32FFFF).setShapes(NUGGET, WIRE, BILLET, INGOT, DUST, DENSEWIRE, PLATE, CASTPLATE, BLOCK).m(); + public static final NTMMaterial MAT_SOLINIUM = makeSmeltable(12627, SA327, 0xA2E6E0, 0x00433D, 0x72B6B0).setShapes(NUGGET, BILLET, INGOT, BLOCK).m(); + public static final NTMMaterial MAT_SCHRABIDATE = makeSmeltable(12600, SBD, 0x77C0D7, 0x39005E, 0x6589B4).setShapes(INGOT, DUST, DENSEWIRE, BLOCK).m(); + public static final NTMMaterial MAT_SCHRARANIUM = makeSmeltable(12601, SRN, 0x2B3227, 0x2B3227, 0x24AFAC).setShapes(INGOT, BLOCK).m(); + public static final NTMMaterial MAT_GHIORSIUM = makeSmeltable(12836, GH336, 0xF4EFE1, 0x2A3306, 0xC6C6A1).setShapes(NUGGET, BILLET, INGOT, BLOCK).m(); //Base metals - public static final NTMMaterial MAT_TITANIUM = makeSmeltable(2200, TI, 0xF7F3F2, 0x4F4C4B, 0xA99E79).setShapes(INGOT, DUST, PLATE, CASTPLATE, WELDEDPLATE, SHELL, BLOCK, HEAVY_COMPONENT); - public static final NTMMaterial MAT_COPPER = makeSmeltable(2900, CU, 0xFDCA88, 0x601E0D, 0xC18336).setShapes(WIRE, INGOT, DUST, PLATE, CASTPLATE, WELDEDPLATE, SHELL, PIPE, BLOCK, HEAVY_COMPONENT); - public static final NTMMaterial MAT_TUNGSTEN = makeSmeltable(7400, W, 0x868686, 0x000000, 0x977474).setShapes(WIRE, BOLT, INGOT, DUST, DENSEWIRE, CASTPLATE, WELDEDPLATE, BLOCK, HEAVY_COMPONENT); - public static final NTMMaterial MAT_ALUMINIUM = makeSmeltable(1300, AL, 0xFFFFFF, 0x344550, 0xD0B8EB).setShapes(WIRE, INGOT, DUST, PLATE, CASTPLATE, WELDEDPLATE, SHELL, PIPE, BLOCK, HEAVY_COMPONENT); - public static final NTMMaterial MAT_LEAD = makeSmeltable(8200, PB, 0xA6A6B2, 0x03030F, 0x646470).setShapes(NUGGET, INGOT, DUST, PLATE, CASTPLATE, PIPE, BLOCK, HEAVY_COMPONENT); - public static final NTMMaterial MAT_BISMUTH = makeSmeltable(8300, BI, 0xB200FF).setShapes(NUGGET, BILLET, INGOT, DUST, BLOCK); - public static final NTMMaterial MAT_ARSENIC = makeSmeltable(3300, AS, 0x6CBABA, 0x242525, 0x558080).setShapes(NUGGET, INGOT); - public static final NTMMaterial MAT_TANTALIUM = makeSmeltable(7300, TA, 0xFFFFFF, 0x1D1D36, 0xA89B74).setShapes(NUGGET, INGOT, DUST, BLOCK); - public static final NTMMaterial MAT_NEODYMIUM = makeSmeltable(6000, ND, 0xE6E6B6, 0x1C1C00, 0x8F8F5F).setShapes(NUGGET, DUSTTINY, INGOT, DUST, DENSEWIRE, BLOCK); - public static final NTMMaterial MAT_NIOBIUM = makeSmeltable(4100, NB, 0xB76EC9, 0x2F2D42, 0xD576B1).setShapes(NUGGET, DUSTTINY, INGOT, DUST, BLOCK); - public static final NTMMaterial MAT_BERYLLIUM = makeSmeltable(400, BE, 0xB2B2A6, 0x0F0F03, 0xAE9572).setShapes(NUGGET, INGOT, DUST, BLOCK); - public static final NTMMaterial MAT_EMERALD = make( 401, EMERALD) .setConversion(MAT_BERYLLIUM, 4, 3); - public static final NTMMaterial MAT_COBALT = makeSmeltable(2700, CO, 0xC2D1EE, 0x353554, 0x8F72AE).setShapes(NUGGET, DUSTTINY, BILLET, INGOT, DUST, BLOCK); - public static final NTMMaterial MAT_BORON = makeSmeltable(500, B, 0xBDC8D2, 0x29343E, 0xAD72AE).setShapes(DUSTTINY, INGOT, DUST, BLOCK); - public static final NTMMaterial MAT_ZIRCONIUM = makeSmeltable(4000, ZR, 0xE3DCBE, 0x3E3719, 0xADA688).setShapes(NUGGET, DUSTTINY, BILLET, INGOT, DUST, CASTPLATE, WELDEDPLATE, BLOCK); - public static final NTMMaterial MAT_SODIUM = makeSmeltable(1100, NA, 0xD3BF9E, 0x3A5A6B, 0x7E9493).setShapes(DUST); - public static final NTMMaterial MAT_CALCIUM = makeSmeltable(2000, CA, 0xCFCFA6, 0x747F6E, 0xB7B784).setShapes(INGOT, DUST); - public static final NTMMaterial MAT_LITHIUM = makeSmeltable(300, LI, 0xFFFFFF, 0x818181, 0xD6D6D6).setShapes(INGOT, DUST, BLOCK); - public static final NTMMaterial MAT_CADMIUM = makeSmeltable(4800, CD, 0xFFFADE, 0x350000, 0xA85600).setShapes(INGOT, DUST); - public static final NTMMaterial MAT_SILICON = makeSmeltable(1400, SI, 0xD1D7DF, 0x1A1A3D, 0x878B9E).setShapes(NUGGET, BILLET, INGOT); - public static final NTMMaterial MAT_OSMIRIDIUM = makeSmeltable(7699, OSMIRIDIUM, 0xDBE3EF, 0x7891BE, 0xACBDD9).setShapes(NUGGET, INGOT, CASTPLATE, WELDEDPLATE); + public static final NTMMaterial MAT_TITANIUM = makeSmeltable(2200, TI, 0xF7F3F2, 0x4F4C4B, 0xA99E79).setShapes(INGOT, DUST, PLATE, CASTPLATE, WELDEDPLATE, SHELL, BLOCK, HEAVY_COMPONENT).m(); + public static final NTMMaterial MAT_COPPER = makeSmeltable(2900, CU, 0xFDCA88, 0x601E0D, 0xC18336).setShapes(WIRE, INGOT, DUST, PLATE, CASTPLATE, WELDEDPLATE, SHELL, PIPE, BLOCK, HEAVY_COMPONENT).m(); + public static final NTMMaterial MAT_TUNGSTEN = makeSmeltable(7400, W, 0x868686, 0x000000, 0x977474).setShapes(WIRE, BOLT, INGOT, DUST, DENSEWIRE, CASTPLATE, WELDEDPLATE, BLOCK, HEAVY_COMPONENT).m(); + public static final NTMMaterial MAT_ALUMINIUM = makeSmeltable(1300, AL, 0xFFFFFF, 0x344550, 0xD0B8EB).setShapes(WIRE, INGOT, DUST, PLATE, CASTPLATE, WELDEDPLATE, SHELL, PIPE, BLOCK, HEAVY_COMPONENT).m(); + public static final NTMMaterial MAT_LEAD = makeSmeltable(8200, PB, 0xA6A6B2, 0x03030F, 0x646470).setShapes(NUGGET, INGOT, DUST, PLATE, CASTPLATE, PIPE, BLOCK, HEAVY_COMPONENT).m(); + public static final NTMMaterial MAT_BISMUTH = makeSmeltable(8300, BI, 0xB200FF).setShapes(NUGGET, BILLET, INGOT, DUST, BLOCK).m(); + public static final NTMMaterial MAT_ARSENIC = makeSmeltable(3300, AS, 0x6CBABA, 0x242525, 0x558080).setShapes(NUGGET, INGOT).m(); + public static final NTMMaterial MAT_TANTALIUM = makeSmeltable(7300, TA, 0xFFFFFF, 0x1D1D36, 0xA89B74).setShapes(NUGGET, INGOT, DUST, BLOCK).m(); + public static final NTMMaterial MAT_NEODYMIUM = makeSmeltable(6000, ND, 0xE6E6B6, 0x1C1C00, 0x8F8F5F).setShapes(NUGGET, DUSTTINY, INGOT, DUST, DENSEWIRE, BLOCK).m(); + public static final NTMMaterial MAT_NIOBIUM = makeSmeltable(4100, NB, 0xB76EC9, 0x2F2D42, 0xD576B1).setShapes(NUGGET, DUSTTINY, INGOT, DUST, BLOCK).m(); + public static final NTMMaterial MAT_BERYLLIUM = makeSmeltable(400, BE, 0xB2B2A6, 0x0F0F03, 0xAE9572).setShapes(NUGGET, INGOT, DUST, BLOCK).m(); + public static final NTMMaterial MAT_EMERALD = make( 401, EMERALD) .setConversion(MAT_BERYLLIUM, 4, 3).n(); + public static final NTMMaterial MAT_COBALT = makeSmeltable(2700, CO, 0xC2D1EE, 0x353554, 0x8F72AE).setShapes(NUGGET, DUSTTINY, BILLET, INGOT, DUST, BLOCK).m(); + public static final NTMMaterial MAT_BORON = makeSmeltable(500, B, 0xBDC8D2, 0x29343E, 0xAD72AE).setShapes(DUSTTINY, INGOT, DUST, BLOCK).m(); + public static final NTMMaterial MAT_ZIRCONIUM = makeSmeltable(4000, ZR, 0xE3DCBE, 0x3E3719, 0xADA688).setShapes(NUGGET, DUSTTINY, BILLET, INGOT, DUST, CASTPLATE, WELDEDPLATE, BLOCK).m(); + public static final NTMMaterial MAT_SODIUM = makeSmeltable(1100, NA, 0xD3BF9E, 0x3A5A6B, 0x7E9493).setShapes(DUST).m(); + public static final NTMMaterial MAT_CALCIUM = makeSmeltable(2000, CA, 0xCFCFA6, 0x747F6E, 0xB7B784).setShapes(INGOT, DUST).m(); + public static final NTMMaterial MAT_LITHIUM = makeSmeltable(300, LI, 0xFFFFFF, 0x818181, 0xD6D6D6).setShapes(INGOT, DUST, BLOCK).m(); + public static final NTMMaterial MAT_CADMIUM = makeSmeltable(4800, CD, 0xFFFADE, 0x350000, 0xA85600).setShapes(INGOT, DUST).m(); + public static final NTMMaterial MAT_SILICON = makeSmeltable(1400, SI, 0xD1D7DF, 0x1A1A3D, 0x878B9E).setShapes(NUGGET, BILLET, INGOT).m(); + public static final NTMMaterial MAT_OSMIRIDIUM = makeSmeltable(7699, OSMIRIDIUM, 0xDBE3EF, 0x7891BE, 0xACBDD9).setShapes(NUGGET, INGOT, CASTPLATE, WELDEDPLATE).m(); //Alloys - public static final NTMMaterial MAT_STEEL = makeSmeltable(_AS + 0, STEEL, 0xAFAFAF, 0x0F0F0F, 0x4A4A4A).setShapes(DUSTTINY, BOLT, INGOT, DUST, PLATE, CASTPLATE, WELDEDPLATE, SHELL, PIPE, BLOCK, HEAVY_COMPONENT); - public static final NTMMaterial MAT_MINGRADE = makeSmeltable(_AS + 1, MINGRADE, 0xFFBA7D, 0xAF1700, 0xE44C0F).setShapes(WIRE, INGOT, DUST, BLOCK); - public static final NTMMaterial MAT_ALLOY = makeSmeltable(_AS + 2, ALLOY, 0xFF8330, 0x700000, 0xFF7318).setShapes(WIRE, INGOT, DUST, DENSEWIRE, PLATE, CASTPLATE, BLOCK, HEAVY_COMPONENT); - public static final NTMMaterial MAT_DURA = makeSmeltable(_AS + 3, DURA, 0x183039, 0x030B0B, 0x376373).setShapes(BOLT, INGOT, DUST, PIPE, BLOCK); - public static final NTMMaterial MAT_SATURN = makeSmeltable(_AS + 4, BIGMT, 0x4DA3AF, 0x00000C, 0x4DA3AF).setShapes(INGOT, DUST, PLATE, CASTPLATE, BLOCK); - public static final NTMMaterial MAT_DESH = makeSmeltable(_AS + 12, DESH, 0xFF6D6D, 0x720000, 0xF22929).setShapes(INGOT, DUST, CASTPLATE, BLOCK, HEAVY_COMPONENT); - public static final NTMMaterial MAT_STAR = makeSmeltable(_AS + 5, STAR, 0xCCCCEA, 0x11111A, 0xA5A5D3).setShapes(INGOT, DUST, DENSEWIRE, BLOCK); - public static final NTMMaterial MAT_FERRO = makeSmeltable(_AS + 7, FERRO, 0xB7B7C9, 0x101022, 0x6B6B8B).setShapes(INGOT); - public static final NTMMaterial MAT_TCALLOY = makeSmeltable(_AS + 6, TCALLOY, 0xD4D6D6, 0x323D3D, 0x9CA6A6).setShapes(INGOT, DUST, CASTPLATE, WELDEDPLATE, HEAVY_COMPONENT); - public static final NTMMaterial MAT_CDALLOY = makeSmeltable(_AS + 13, CDALLOY, 0xF7DF8F, 0x604308, 0xFBD368).setShapes(INGOT, CASTPLATE, WELDEDPLATE, HEAVY_COMPONENT); - public static final NTMMaterial MAT_BBRONZE = makeSmeltable(_AS + 16, BBRONZE, 0xE19A69, 0x485353, 0x987D65).setShapes(INGOT, CASTPLATE); - public static final NTMMaterial MAT_ABRONZE = makeSmeltable(_AS + 17, ABRONZE, 0xDB9462, 0x203331, 0x77644D).setShapes(INGOT, CASTPLATE); - public static final NTMMaterial MAT_MAGTUNG = makeSmeltable(_AS + 8, MAGTUNG, 0x22A2A2, 0x0F0F0F, 0x22A2A2).setShapes(INGOT, DUST, DENSEWIRE, BLOCK); - public static final NTMMaterial MAT_CMB = makeSmeltable(_AS + 9, CMB, 0x6F6FB4, 0x000011, 0x6F6FB4).setShapes(INGOT, DUST, PLATE, CASTPLATE, WELDEDPLATE, BLOCK); - public static final NTMMaterial MAT_DNT = makeSmeltable(_AS + 15, DNT, 0x7582B9, 0x16000E, 0x455289).setShapes(INGOT, DUST, DENSEWIRE, BLOCK); - public static final NTMMaterial MAT_FLUX = makeAdditive(_AS + 10, df("Flux"), 0xF1E0BB, 0x6F6256, 0xDECCAD).setShapes(DUST); - public static final NTMMaterial MAT_SLAG = makeSmeltable(_AS + 11, SLAG, 0x554940, 0x34281F, 0x6C6562).setShapes(BLOCK); - public static final NTMMaterial MAT_MUD = makeSmeltable(_AS + 14, MUD, 0xBCB5A9, 0x481213, 0x96783B).setShapes(INGOT); + public static final NTMMaterial MAT_STEEL = makeSmeltable(_AS + 0, STEEL, 0xAFAFAF, 0x0F0F0F, 0x4A4A4A).setShapes(DUSTTINY, BOLT, INGOT, DUST, PLATE, CASTPLATE, WELDEDPLATE, SHELL, PIPE, BLOCK, HEAVY_COMPONENT).m(); + public static final NTMMaterial MAT_MINGRADE = makeSmeltable(_AS + 1, MINGRADE, 0xFFBA7D, 0xAF1700, 0xE44C0F).setShapes(WIRE, INGOT, DUST, BLOCK).m(); + public static final NTMMaterial MAT_ALLOY = makeSmeltable(_AS + 2, ALLOY, 0xFF8330, 0x700000, 0xFF7318).setShapes(WIRE, INGOT, DUST, DENSEWIRE, PLATE, CASTPLATE, BLOCK, HEAVY_COMPONENT).m(); + public static final NTMMaterial MAT_DURA = makeSmeltable(_AS + 3, DURA, 0x183039, 0x030B0B, 0x376373).setShapes(BOLT, INGOT, DUST, PIPE, BLOCK).m(); + public static final NTMMaterial MAT_SATURN = makeSmeltable(_AS + 4, BIGMT, 0x4DA3AF, 0x00000C, 0x4DA3AF).setShapes(INGOT, DUST, PLATE, CASTPLATE, BLOCK).m(); + public static final NTMMaterial MAT_DESH = makeSmeltable(_AS + 12, DESH, 0xFF6D6D, 0x720000, 0xF22929).setShapes(INGOT, DUST, CASTPLATE, BLOCK, HEAVY_COMPONENT).m(); + public static final NTMMaterial MAT_STAR = makeSmeltable(_AS + 5, STAR, 0xCCCCEA, 0x11111A, 0xA5A5D3).setShapes(INGOT, DUST, DENSEWIRE, BLOCK).m(); + public static final NTMMaterial MAT_FERRO = makeSmeltable(_AS + 7, FERRO, 0xB7B7C9, 0x101022, 0x6B6B8B).setShapes(INGOT).m(); + public static final NTMMaterial MAT_TCALLOY = makeSmeltable(_AS + 6, TCALLOY, 0xD4D6D6, 0x323D3D, 0x9CA6A6).setShapes(INGOT, DUST, CASTPLATE, WELDEDPLATE, HEAVY_COMPONENT).m(); + public static final NTMMaterial MAT_CDALLOY = makeSmeltable(_AS + 13, CDALLOY, 0xF7DF8F, 0x604308, 0xFBD368).setShapes(INGOT, CASTPLATE, WELDEDPLATE, HEAVY_COMPONENT).m(); + public static final NTMMaterial MAT_BBRONZE = makeSmeltable(_AS + 16, BBRONZE, 0xE19A69, 0x485353, 0x987D65).setShapes(INGOT, CASTPLATE).m(); + public static final NTMMaterial MAT_ABRONZE = makeSmeltable(_AS + 17, ABRONZE, 0xDB9462, 0x203331, 0x77644D).setShapes(INGOT, CASTPLATE).m(); + public static final NTMMaterial MAT_MAGTUNG = makeSmeltable(_AS + 8, MAGTUNG, 0x22A2A2, 0x0F0F0F, 0x22A2A2).setShapes(INGOT, DUST, DENSEWIRE, BLOCK).m(); + public static final NTMMaterial MAT_CMB = makeSmeltable(_AS + 9, CMB, 0x6F6FB4, 0x000011, 0x6F6FB4).setShapes(INGOT, DUST, PLATE, CASTPLATE, WELDEDPLATE, BLOCK).m(); + public static final NTMMaterial MAT_DNT = makeSmeltable(_AS + 15, DNT, 0x7582B9, 0x16000E, 0x455289).setShapes(INGOT, DUST, DENSEWIRE, BLOCK).m(); + public static final NTMMaterial MAT_FLUX = makeAdditive(_AS + 10, df("Flux"), 0xF1E0BB, 0x6F6256, 0xDECCAD).setShapes(DUST).n(); + public static final NTMMaterial MAT_SLAG = makeSmeltable(_AS + 11, SLAG, 0x554940, 0x34281F, 0x6C6562).setShapes(BLOCK).n(); + public static final NTMMaterial MAT_MUD = makeSmeltable(_AS + 14, MUD, 0xBCB5A9, 0x481213, 0x96783B).setShapes(INGOT).n(); @Deprecated public static NTMMaterial makeSmeltable(int id, DictFrame dict, int color) { return makeSmeltable(id, dict, color, color, color); } @Deprecated public static NTMMaterial makeAdditive(int id, DictFrame dict, int color) { return makeAdditive(id, dict, color, color, color); } diff --git a/src/main/java/com/hbm/inventory/material/NTMMaterial.java b/src/main/java/com/hbm/inventory/material/NTMMaterial.java index 0f953871b..193ad939a 100644 --- a/src/main/java/com/hbm/inventory/material/NTMMaterial.java +++ b/src/main/java/com/hbm/inventory/material/NTMMaterial.java @@ -19,6 +19,7 @@ public class NTMMaterial { public final int id; public String[] names; public Set shapes = new HashSet(); + public Set traits = new HashSet(); public SmeltingBehavior smeltable = SmeltingBehavior.NOT_SMELTABLE; public int solidColorLight = 0xFF4A00; public int solidColorDark = 0x802000; @@ -62,6 +63,15 @@ public class NTMMaterial { return this; } + /** Traits for recipe detection */ + public NTMMaterial setTraits(MatTraits... traits) { + for(MatTraits trait : traits) this.traits.add(trait); + return this; + } + + public NTMMaterial m() { this.traits.add(MatTraits.METAL); return this; } + public NTMMaterial n() { this.traits.add(MatTraits.NONMETAL); return this; } + /** Defines smelting behavior */ public NTMMaterial smeltable(SmeltingBehavior behavior) { this.smeltable = behavior; @@ -94,4 +104,9 @@ public class NTMMaterial { SMELTABLE, //mostly metal ADDITIVE //stuff like coal which isn't smeltable but can be put in a crucible anyway } + + public static enum MatTraits { + METAL, //metal(like), smeltable by arc furnaces + NONMETAL; //non-metal(like), for gems, non-alloy compounds and similar + } } diff --git a/src/main/java/com/hbm/inventory/recipes/ArcFurnaceRecipes.java b/src/main/java/com/hbm/inventory/recipes/ArcFurnaceRecipes.java new file mode 100644 index 000000000..6ece17a5e --- /dev/null +++ b/src/main/java/com/hbm/inventory/recipes/ArcFurnaceRecipes.java @@ -0,0 +1,74 @@ +package com.hbm.inventory.recipes; + +import java.io.IOException; +import java.util.HashMap; + +import static com.hbm.inventory.OreDictManager.*; +import com.google.gson.JsonElement; +import com.google.gson.stream.JsonWriter; +import com.hbm.inventory.RecipesCommon.AStack; +import com.hbm.inventory.RecipesCommon.OreDictStack; +import com.hbm.inventory.material.MaterialShapes; +import com.hbm.inventory.material.Mats; +import com.hbm.inventory.material.Mats.MaterialStack; +import com.hbm.inventory.recipes.loader.SerializableRecipe; +import com.hbm.items.ModItems; + +import net.minecraft.item.ItemStack; + +public class ArcFurnaceRecipes extends SerializableRecipe { + + public static HashMap recipes = new HashMap(); + + @Override + public void registerDefaults() { + + recipes.put(new OreDictStack(KEY_SAND), new ArcFurnaceRecipe().solid(new ItemStack(ModItems.nugget_silicon)) .fluid(new MaterialStack(Mats.MAT_SILICON, MaterialShapes.NUGGET.q(1)))); + recipes.put(new OreDictStack(NETHERQUARTZ.gem()), new ArcFurnaceRecipe().solid(new ItemStack(ModItems.nugget_silicon, 3)) .fluid(new MaterialStack(Mats.MAT_SILICON, MaterialShapes.NUGGET.q(3)))); + recipes.put(new OreDictStack(NETHERQUARTZ.dust()), new ArcFurnaceRecipe().solid(new ItemStack(ModItems.nugget_silicon, 3)) .fluid(new MaterialStack(Mats.MAT_SILICON, MaterialShapes.NUGGET.q(3)))); + recipes.put(new OreDictStack(NETHERQUARTZ.block()), new ArcFurnaceRecipe().solid(new ItemStack(ModItems.nugget_silicon, 12)) .fluid(new MaterialStack(Mats.MAT_SILICON, MaterialShapes.NUGGET.q(12)))); + recipes.put(new OreDictStack(FIBER.ingot()), new ArcFurnaceRecipe().solid(new ItemStack(ModItems.nugget_silicon, 4)) .fluid(new MaterialStack(Mats.MAT_SILICON, MaterialShapes.INGOT.q(1, 2)))); + recipes.put(new OreDictStack(FIBER.block()), new ArcFurnaceRecipe().solid(new ItemStack(ModItems.nugget_silicon, 40)) .fluid(new MaterialStack(Mats.MAT_SILICON, MaterialShapes.INGOT.q(9, 2)))); + } + + @Override + public String getFileName() { + return "hbmArcFurnace.json"; + } + + @Override + public Object getRecipeObject() { + return recipes; + } + + @Override + public void deleteRecipes() { + recipes.clear(); + } + + @Override + public void readRecipe(JsonElement recipe) { + + } + + @Override + public void writeRecipe(Object recipe, JsonWriter writer) throws IOException { + + } + + public static class ArcFurnaceRecipe { + + public MaterialStack[] fluidOutput; + public ItemStack solidOutput; + + public ArcFurnaceRecipe fluid(MaterialStack... outputs) { + this.fluidOutput = outputs; + return this; + } + + public ArcFurnaceRecipe solid(ItemStack output) { + this.solidOutput = output; + return this; + } + } +} diff --git a/src/main/java/com/hbm/inventory/recipes/loader/SerializableRecipe.java b/src/main/java/com/hbm/inventory/recipes/loader/SerializableRecipe.java index c187fd17a..0929823da 100644 --- a/src/main/java/com/hbm/inventory/recipes/loader/SerializableRecipe.java +++ b/src/main/java/com/hbm/inventory/recipes/loader/SerializableRecipe.java @@ -68,6 +68,7 @@ public abstract class SerializableRecipe { recipeHandlers.add(new ArcWelderRecipes()); recipeHandlers.add(new ExposureChamberRecipes()); recipeHandlers.add(new AssemblerRecipes()); + recipeHandlers.add(new ArcFurnaceRecipes()); recipeHandlers.add(new MatDistribution()); recipeHandlers.add(new CustomMachineRecipes()); diff --git a/src/main/java/com/hbm/tileentity/machine/TileEntityMachineArcFurnaceLarge.java b/src/main/java/com/hbm/tileentity/machine/TileEntityMachineArcFurnaceLarge.java index 2339ee8c0..b51aecd66 100644 --- a/src/main/java/com/hbm/tileentity/machine/TileEntityMachineArcFurnaceLarge.java +++ b/src/main/java/com/hbm/tileentity/machine/TileEntityMachineArcFurnaceLarge.java @@ -1,16 +1,29 @@ package com.hbm.tileentity.machine; +import java.util.ArrayList; +import java.util.List; + +import com.hbm.inventory.material.Mats.MaterialStack; import com.hbm.tileentity.TileEntityMachineBase; public class TileEntityMachineArcFurnaceLarge extends TileEntityMachineBase { + + public long power; + public static final long maxPower = 10_000_000; + public boolean liquidMode = false; + public float progress; + public float lid; + public float prevLid; + + public List liquids = new ArrayList(); public TileEntityMachineArcFurnaceLarge() { - super(30); + super(25); } @Override public String getName() { - return null; + return "container.machineArcFurnaceLarge"; } @Override diff --git a/src/main/resources/assets/hbm/textures/gui/processing/gui_arc_furnace.png b/src/main/resources/assets/hbm/textures/gui/processing/gui_arc_furnace.png index e40997e293de0c2b291f4a4881fe4dcb00d76808..1030991e2e71ef91e55ef12c6a2cc75703e843a8 100644 GIT binary patch literal 4900 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 literal 4765 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 N002ovPDHLkV1f>%Wd8sF delta 203 zcmV;+05t#q0rvrrG=Hv1L_t(Ijn&e-4Z|Q51<*^BDX1LD_7=94Hp&XF5MwY+R>-H! zZwo*&mDhMF5+V@!;4XO$65?FlCjtD`2&qU&Md95%2LV7?FR)rKVe|l_9bL{F_BB9A zMIqd8kFa`xHSYOlmWz#cu#a;buk7Or9#?e{;lu8fyiFQ}7(_sX%c@8M*c5C{Tt8~i zcKu}ha)l{4S)uKE@(pru5&!_4H}{W|f!_}24f&wopBs$OhK1hlgz^9Y002ovPDHLk FV1mSoTUh`A