From 548ede7f89393c76cad23a08d79e67ed8ab103c1 Mon Sep 17 00:00:00 2001 From: Raaaaaaaaaay Date: Mon, 1 Dec 2025 10:34:42 +0200 Subject: [PATCH 01/22] =?UTF-8?q?=D1=80=D1=8B=D0=B1=D0=BA=D0=B8?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/main/resources/assets/hbm/lang/ru_RU.lang | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/src/main/resources/assets/hbm/lang/ru_RU.lang b/src/main/resources/assets/hbm/lang/ru_RU.lang index 6075ffabb..b96212342 100644 --- a/src/main/resources/assets/hbm/lang/ru_RU.lang +++ b/src/main/resources/assets/hbm/lang/ru_RU.lang @@ -2471,7 +2471,7 @@ item.canned_bark.desc=Очень хрустящие! item.canned_beef.name=Консервированная говядина item.canned_beef.desc=Несколько веков назад для этого умерла корова. item.canned_bhole.name=Консервированная чёрная дыра -item.canned_bhole.desc=Сингулярность это ням ням в моём там там +item.canned_bhole.desc=Сделано из настоящих сингулярностей. Нет, правда. item.canned_cheese.name=Консервированный плавленый сыр item.canned_cheese.desc=Это сыр? Это резиновый цемент? Кто знает. Кого волнует. item.canned_chinese.name=Консервированная китайская еда @@ -2479,7 +2479,7 @@ item.canned_chinese.desc=В Китае китайскую еду называю item.canned_diesel.name=Консервированное дизельное топливо item.canned_diesel.desc=У меня постепенно заканчиваются шутки для этого. item.canned_fist.name=Консервированный кулак -item.canned_fist.desc=Yowser! +item.canned_fist.desc=ow item.canned_fried.name=Консервированная жареная курица item.canned_fried.desc=Даже банка глубокой прожарки! item.canned_hotdogs.name=Консервированные хот-доги @@ -3504,6 +3504,7 @@ item.item_expensive.computer.name=Мейнфрейм item.item_expensive.ferro_plating.name=Армированные ферроурановые панели item.item_expensive.heavy_frame.name=Тяжёлый каркас item.item_expensive.lead_plating.name=Радиационно-стойкое покрытие +item.item_expensive.plastic.name=Пластиковые панели item.item_expensive.steel_plating.name=Стальная обшивка с болтовым соединением item.item_secret.aberrator.name=Часть Аберратора item.item_secret.canister.name=Композит SB-26 @@ -6781,3 +6782,4 @@ desc.gui.upgrade.speed= * §4Скорость§r: Стакается до 3-х + From 6cf88c673f03fdea60dc988972c8ace2a317162f Mon Sep 17 00:00:00 2001 From: Raaaaaaaaaay Date: Thu, 4 Dec 2025 11:05:32 +0200 Subject: [PATCH 02/22] =?UTF-8?q?=D0=BE=D0=B9?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/main/resources/assets/hbm/lang/ru_RU.lang | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/src/main/resources/assets/hbm/lang/ru_RU.lang b/src/main/resources/assets/hbm/lang/ru_RU.lang index b96212342..de0a7607b 100644 --- a/src/main/resources/assets/hbm/lang/ru_RU.lang +++ b/src/main/resources/assets/hbm/lang/ru_RU.lang @@ -814,7 +814,7 @@ container.machineLiquefactor=Разжижитель container.machineMixer=Промышленный смеситель container.machinePUREX=Пьюрекс container.machineOreSlopper=П.Б.Р. -container.machinePrecAss=Прецизионная сборочная машина +container.machinePrecAss=Прецизионная машина container.machinePyroOven=Пиролизная печь container.machineRefinery=Нефтеперерабатывающий завод container.machineRotaryFurnace=Роторная печь @@ -1619,7 +1619,7 @@ hbmfluid.solvent=Растворитель hbmfluid.sourgas=Кислый газ hbmfluid.spentsteam=Пар низкого давления hbmfluid.steam=Пар -hbmfluid.stellar_flux=Звёздный поток +hbmfluid.stellar_flux=Звёздная материя hbmfluid.sulfuric_acid=Серная кислота hbmfluid.sunfloweroil=Подсолнечное масло hbmfluid.superhotsteam=Перегретый пар @@ -6783,3 +6783,4 @@ desc.gui.upgrade.speed= * §4Скорость§r: Стакается до 3-х + From 7867d6c6bd0c0c8ee6f26cdd5d13080ba28f41a5 Mon Sep 17 00:00:00 2001 From: Raaaaaaaaaay Date: Sat, 6 Dec 2025 12:12:23 +0200 Subject: [PATCH 03/22] fix --- src/main/resources/assets/hbm/lang/ru_RU.lang | 7 ++++--- 1 file changed, 4 insertions(+), 3 deletions(-) diff --git a/src/main/resources/assets/hbm/lang/ru_RU.lang b/src/main/resources/assets/hbm/lang/ru_RU.lang index de0a7607b..c4e9e55d1 100644 --- a/src/main/resources/assets/hbm/lang/ru_RU.lang +++ b/src/main/resources/assets/hbm/lang/ru_RU.lang @@ -142,7 +142,7 @@ analyze.noInfo=Нет информации. armor.blastProtection=Модификатор урона %s от взрывов armor.cap=Максимальное значение урона %s armor.damageModifier=Модификатор урона %s против %s -armor.dash=Даёт %s рывков +armor.dash=Дополнительных рывков: %s armor.electricJetpack=Ионный реактивный ранец armor.explosionImmune=Не может получить никакого урона, кроме как от взрывов armor.fasterReload=Быстрая перезарядка @@ -6493,8 +6493,8 @@ tile.sat_radar.name=Спутник с радиолокационным зонд tile.sat_resonator.name=Спутник с Зен-Резонатором (Декор) tile.sat_scanner.name=Спутник с модулем глубинно-ресурсного сканирования (Декор) tile.schrabidic_block.name=Шрабидиевая кислота -tile.seal_controller.name=Открыватель люка пусковой щахты -tile.seal_frame.name=Рама люка пусковой щахты +tile.seal_controller.name=Открыватель люка пусковой шахты +tile.seal_frame.name=Рама люка пусковой шахты tile.seal_hatch.name=Люк пусковой шахты tile.sellafield.0.name=Селлафит tile.sellafield.1.name=Горячий селлафит @@ -6784,3 +6784,4 @@ desc.gui.upgrade.speed= * §4Скорость§r: Стакается до 3-х + From bd17238c1c17dfd2cc0176a122c135a054e83fef Mon Sep 17 00:00:00 2001 From: Raaaaaaaaaay Date: Sat, 6 Dec 2025 20:22:24 +0200 Subject: [PATCH 04/22] fix recipe --- src/main/resources/assets/hbm/lang/ru_RU.lang | 12 ++++++++++++ 1 file changed, 12 insertions(+) diff --git a/src/main/resources/assets/hbm/lang/ru_RU.lang b/src/main/resources/assets/hbm/lang/ru_RU.lang index c4e9e55d1..aa277f918 100644 --- a/src/main/resources/assets/hbm/lang/ru_RU.lang +++ b/src/main/resources/assets/hbm/lang/ru_RU.lang @@ -1262,6 +1262,17 @@ foundry.inverted=Инвертирован редстоуном foundry.invertFilter=Инвертированный фильтр foundry.noCast=Литейная форма не установлена! +fus.bf=Плазма (жар-пламя) +fus.cl=Плазма (хлор) +fus.dd=Плазма (дейтерий) +fus.dhc=Плазма (дейтерированный углеводород) +fus.do=Плазма (дейтерий + кислород) +fus.dt=Плазма (дейтерий + тритий) +fus.h3=Плазма (гелий-3) +fus.stellar=Плазма (звёздная) +fus.tcl=Плазма (хлор + тритий) +fus.th4=Плазма (гелий-4 + тритий) + geiger.chunkRad=Текущий уровень радиации в чанке: geiger.envRad=Общее радиационное заражение среды: geiger.playerRad=Уровень радиоактивного заражения игрока: @@ -6785,3 +6796,4 @@ desc.gui.upgrade.speed= * §4Скорость§r: Стакается до 3-х + From 510923d14ac8295b580dee62ea4d7c4c139dd28a Mon Sep 17 00:00:00 2001 From: Raaaaaaaaaay Date: Mon, 8 Dec 2025 17:31:43 +0200 Subject: [PATCH 05/22] beton --- src/main/resources/assets/hbm/lang/ru_RU.lang | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/src/main/resources/assets/hbm/lang/ru_RU.lang b/src/main/resources/assets/hbm/lang/ru_RU.lang index aa277f918..000bd1116 100644 --- a/src/main/resources/assets/hbm/lang/ru_RU.lang +++ b/src/main/resources/assets/hbm/lang/ru_RU.lang @@ -1522,7 +1522,7 @@ hbmfluid.coalgas=Угольный газ hbmfluid.coalgas_leaded=Этилированный угольный газ hbmfluid.coaloil=Фотоген hbmfluid.colloid=Коллоидный раствор -hbmfluid.concrete=Жидкий бетон +hbmfluid.concrete=Цементный раствор hbmfluid.coolant=Хладагент hbmfluid.coolant_hot=Горячий хладагент hbmfluid.crackoil=Крекированная нефть @@ -6797,3 +6797,4 @@ desc.gui.upgrade.speed= * §4Скорость§r: Стакается до 3-х + From 540900d0f545f260feb8f1ccc60d689f2ff4678c Mon Sep 17 00:00:00 2001 From: Raaaaaaaaaay Date: Mon, 8 Dec 2025 22:58:56 +0200 Subject: [PATCH 06/22] up amogus --- src/main/resources/assets/hbm/lang/ru_RU.lang | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/src/main/resources/assets/hbm/lang/ru_RU.lang b/src/main/resources/assets/hbm/lang/ru_RU.lang index 000bd1116..c3564e019 100644 --- a/src/main/resources/assets/hbm/lang/ru_RU.lang +++ b/src/main/resources/assets/hbm/lang/ru_RU.lang @@ -714,10 +714,8 @@ commands.satellite.should_be_run_as_player=Команда должна быть container.ammoBag=Сумка для боеприпасов -container.amsBase=Основание АМС [Декор] -container.amsEmitter=Излучатель АМС [Декор] -container.amsLimiter=Стабилизатор АМС [Декор] container.anvil=Наковальня %s уровня +container.annihilator=Аннигилятор container.arcFurnace=Дуговая печь container.armorTable=Стол модификации брони container.ashpit=Зольник @@ -5971,6 +5969,7 @@ tile.lightstone_bricks_stairs.name=Ступеньки из светлокаме tile.lox_barrel.name=Бочка с жидким кислородом tile.machine_amgen.name=Генератор на фоновой радиации tile.machine_ammo_press.name=Пресс для патронов +tile.machine_annihilator.name=Аннигилятор tile.machine_arc_furnace.name=Электрическая дуговая печь tile.machine_arc_furnace_off.name=Дуговая печь tile.machine_arc_furnace_on.name=Дуговая печь @@ -6798,3 +6797,4 @@ desc.gui.upgrade.speed= * §4Скорость§r: Стакается до 3-х + From 7129d5ee7c69c4f02bf9ff494387a445066262d3 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E9=81=93=E7=A5=9E=20=E9=A6=B4=E5=AD=90?= Date: Tue, 9 Dec 2025 21:24:17 +0800 Subject: [PATCH 07/22] =?UTF-8?q?=E6=B2=89=E8=BF=B7=E5=8B=92=E5=B8=83?= =?UTF-8?q?=E6=9C=97?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/main/resources/assets/hbm/lang/zh_CN.lang | 21 ++++++++++++------- 1 file changed, 13 insertions(+), 8 deletions(-) diff --git a/src/main/resources/assets/hbm/lang/zh_CN.lang b/src/main/resources/assets/hbm/lang/zh_CN.lang index 074c86ed9..6d3d6f8b3 100644 --- a/src/main/resources/assets/hbm/lang/zh_CN.lang +++ b/src/main/resources/assets/hbm/lang/zh_CN.lang @@ -606,9 +606,6 @@ commands.satellite.not_a_satellite=持有的物品不是卫星! commands.satellite.satellite_descended=卫星成功降落。 commands.satellite.satellite_orbited=卫星发射。 commands.satellite.should_be_run_as_player=此命令应该由玩家运行! -container.amsBase=AMS基座(装饰) -container.amsEmitter=AMS发射极(装饰) -container.amsLimiter=AMS稳能器(装饰) container.anvil=%s级砧 container.arcFurnace=电弧炉 container.armorTable=装甲改装台 @@ -2063,7 +2060,7 @@ item.canned_bark.desc=更加的“松”脆! item.canned_beef.name=牛肉罐头 item.canned_beef.desc=几个世纪前,一头牛为此而死。 item.canned_bhole.name=黑洞罐头 -item.canned_bhole.desc=奇点是我肚肚里的美味! +item.canned_bhole.desc=“甄选自100%天然奇点” item.canned_cheese.name=融化奶酪罐头 item.canned_cheese.desc=是奶酪吗?是橡胶水泥吗?谁知道,谁在乎。 item.canned_chinese.name=中餐罐头 @@ -6342,7 +6339,7 @@ item.broken_item.prefix=破损 %s item.circuit.numitron.name=七段式白炽灯显示器 tile.red_cable_box.name=紫铜盒式电缆 container.fusionBreeder=聚变反应堆增殖舱 -container.fusionKlystron=调速管 +container.fusionKlystron=速调管 container.fusionTorus=聚变反应堆容器 fus.bf=野火等离子体 fus.cl=氯等离子体 @@ -6355,9 +6352,10 @@ fus.stellar=星流浆等离子体 fus.tcl=氚-氯等离子体 fus.th4=氚-氦4等离子体 gui.recipe.fusionFlux=中子通量输出 -gui.recipe.fusionIn=调速管能量输出 +gui.recipe.fusionIn=速调管能量输入 gui.recipe.fusionOut=等离子体能量输出 hbmfluid.dhc=氘代烃 +precass.recycle=回收率 %s tile.fusion_boiler.name=聚变反应堆锅炉 tile.fusion_boiler.desc=使用来自聚变反应堆的等离子体能量$将水加热成密度极高的蒸汽。 tile.fusion_breeder.name=聚变反应堆增殖舱 @@ -6366,11 +6364,11 @@ tile.fusion_collector.name=聚变反应堆收集室 tile.fusion_collector.desc=可通过与主机连接提升副产物产量 tile.fusion_component.name=BSCCO超导线圈 tile.fusion_component.blanket.name=聚变反应堆内部覆层 -tile.fusion_component.bscco_welded.name=BSCCO超导线圈(焊接) +tile.fusion_component.bscco_welded.name=BSCCO超导线圈 (焊接) tile.fusion_component.motor.name=聚变反应堆线路管道 tile.fusion_coupler.name=聚变反应堆等离子体耦合器 tile.fusion_coupler.desc=将等离子体输出的能量转化为调速管能量。$可以用于点燃第二个等离子体容器中的等离子体。 -tile.fusion_klystron.name=调速管 +tile.fusion_klystron.name=速调管 tile.fusion_klystron.desc=聚变反应堆的动力源。$使用压缩空气进行冷却。 tile.fusion_mhdt.name=磁流体涡轮发电机 tile.fusion_mhdt.desc=直接将等离子体能量转化成电力。$效率要比传统锅炉高。$需要冷却! @@ -6379,3 +6377,10 @@ tile.fusion_torus.desc=聚变反应堆主要部件。$需要调速管输入能 tile.struct_torus_core.name=聚变反应堆容器核心组件 turret.arty.artillery_rocket=§e火炮模式$最低射程: 250m$最大射程: 5,000m turret.arty.manual_rocket=§e手动模式$射程: 5,000m +container.annihilator=歼灭者 +container.machinePrecAss=精密装配机 +item.item_expensive.plastic.name=塑料板 +tile.machine_annihilator.name=歼灭者 +tile.machine_precass.name=精密装配机 +tile.wand_structure.load.name=结构加载方块 +tile.wand_structure.save.name=结构保存方块 From c916ad73e178a725975b75e222779e218e639bcb Mon Sep 17 00:00:00 2001 From: Boblet Date: Tue, 9 Dec 2025 15:27:24 +0100 Subject: [PATCH 08/22] let the carnage begin --- .../java/com/hbm/config/GeneralConfig.java | 4 ++ .../inventory/recipes/AnnihilatorRecipes.java | 21 ++++-- .../recipes/AssemblyMachineRecipes.java | 39 ++++++---- .../hbm/inventory/recipes/PrecAssRecipes.java | 72 +++++++++++++++++-- .../inventory/recipes/SolderingRecipes.java | 25 ++++--- .../recipes/loader/GenericRecipe.java | 1 + .../hbm/saveddata/AnnihilatorSavedData.java | 12 ++-- 7 files changed, 131 insertions(+), 43 deletions(-) diff --git a/src/main/java/com/hbm/config/GeneralConfig.java b/src/main/java/com/hbm/config/GeneralConfig.java index 9dc23a824..fd3892280 100644 --- a/src/main/java/com/hbm/config/GeneralConfig.java +++ b/src/main/java/com/hbm/config/GeneralConfig.java @@ -156,6 +156,10 @@ public class GeneralConfig { enableLBSMSafeMEDrives = CommonConfig.createConfigBool(config, CATEGORY_LBSM, "LBSM_safeMEDrives", "When enabled, prevents ME Drives and Portable Cells from becoming radioactive", true); schrabRate = CommonConfig.createConfigInt(config, CATEGORY_LBSM, "LBSM_schrabOreRate", "Changes the amount of uranium ore needed on average to create one schrabidium ore using nukes. Standard mode value is 100", 20); + /// ! ! ! /// + enable528 = true; + /// ! ! ! /// + if(enable528) enableLBSM = false; if(!enable528) { diff --git a/src/main/java/com/hbm/inventory/recipes/AnnihilatorRecipes.java b/src/main/java/com/hbm/inventory/recipes/AnnihilatorRecipes.java index 98b7f205d..8cc057e0b 100644 --- a/src/main/java/com/hbm/inventory/recipes/AnnihilatorRecipes.java +++ b/src/main/java/com/hbm/inventory/recipes/AnnihilatorRecipes.java @@ -7,6 +7,8 @@ import java.util.HashMap; import java.util.List; import java.util.Map.Entry; +import static com.hbm.inventory.OreDictManager.*; + import com.google.gson.JsonArray; import com.google.gson.JsonElement; import com.google.gson.JsonObject; @@ -14,12 +16,14 @@ import com.google.gson.stream.JsonWriter; import com.hbm.inventory.RecipesCommon.ComparableStack; import com.hbm.inventory.fluid.FluidType; import com.hbm.inventory.fluid.Fluids; +import com.hbm.inventory.recipes.loader.GenericRecipes; import com.hbm.inventory.recipes.loader.SerializableRecipe; +import com.hbm.items.ModItems; import com.hbm.items.machine.IItemFluidIdentifier; +import com.hbm.items.machine.ItemBlueprints; import com.hbm.util.ItemStackUtil; import com.hbm.util.Tuple.Pair; -import net.minecraft.init.Items; import net.minecraft.item.Item; import net.minecraft.item.ItemStack; @@ -29,12 +33,15 @@ public class AnnihilatorRecipes extends SerializableRecipe { @Override public void registerDefaults() { - - recipes.put(Items.iron_ingot, new AnnihilatorRecipe( - new Pair(new BigInteger("128"), new ItemStack(Items.gold_ingot)), - new Pair(new BigInteger("256"), new ItemStack(Items.gold_ingot, 3)), - new Pair(new BigInteger("512"), new ItemStack(Items.gold_ingot, 5)) - )); + + recipes.put(SI.billet(), new AnnihilatorRecipe(new Pair(new BigInteger("256"), ItemBlueprints.make(GenericRecipes.POOL_PREFIX_528 + "chip")))); + recipes.put(BI.nugget(), new AnnihilatorRecipe(new Pair(new BigInteger("128"), ItemBlueprints.make(GenericRecipes.POOL_PREFIX_528 + "chip_bismoid")))); + recipes.put(ModItems.pellet_charged, new AnnihilatorRecipe(new Pair(new BigInteger("1025"), ItemBlueprints.make(GenericRecipes.POOL_PREFIX_528 + "chip_quantum")))); + + recipes.put(U.billet(), new AnnihilatorRecipe(new Pair(new BigInteger("256"), ItemBlueprints.make(GenericRecipes.POOL_PREFIX_528 + "gascent")))); + recipes.put(RUBBER.ingot(), new AnnihilatorRecipe(new Pair(new BigInteger("512"), ItemBlueprints.make(GenericRecipes.POOL_PREFIX_528 + "fracker")))); + recipes.put(FERRO.ingot(), new AnnihilatorRecipe(new Pair(new BigInteger("1024"), ItemBlueprints.make(GenericRecipes.POOL_PREFIX_528 + "ferrouranium")))); + recipes.put(ANY_HARDPLASTIC.ingot(), new AnnihilatorRecipe(new Pair(new BigInteger("1024"), ItemBlueprints.make(GenericRecipes.POOL_PREFIX_528 + "hardplastic")))); } @Override public String getFileName() { return "hbmAnnihilator.json"; } diff --git a/src/main/java/com/hbm/inventory/recipes/AssemblyMachineRecipes.java b/src/main/java/com/hbm/inventory/recipes/AssemblyMachineRecipes.java index 2daebaf5f..1c5f8b038 100644 --- a/src/main/java/com/hbm/inventory/recipes/AssemblyMachineRecipes.java +++ b/src/main/java/com/hbm/inventory/recipes/AssemblyMachineRecipes.java @@ -55,6 +55,7 @@ public class AssemblyMachineRecipes extends GenericRecipes { @Override public void registerDefaults() { + boolean no528 = !GeneralConfig.enable528; // NBTStack test // this.register(new GenericRecipe("demo1").setup(20, 100).outputItems(BrokenItem.make(ModItems.plate_iron)).inputItems(new OreDictStack(IRON.ingot()))); @@ -233,13 +234,15 @@ public class AssemblyMachineRecipes extends GenericRecipes { .inputItems(new OreDictStack(STEEL.shell(), 4), new OreDictStack(RUBBER.pipe(), 8), new OreDictStack(PB.plateCast(), 4), new ComparableStack(ModItems.motor_desh, 1), new ComparableStack(ModItems.circuit, 4, EnumCircuitType.BASIC)) .inputItemsEx(new ComparableStack(ModItems.item_expensive, 2, EnumExpensiveType.LEAD_PLATING), new OreDictStack(STEEL.shell(), 4), new OreDictStack(RUBBER.pipe(), 12), new ComparableStack(ModItems.motor_desh, 3), new ComparableStack(ModItems.item_expensive, 2, EnumExpensiveType.CIRCUIT))); this.register(new GenericRecipe("ass.precass").setup(1_200, 100).outputItems(new ItemStack(ModBlocks.machine_precass, 1)) - .inputItems(new OreDictStack(STEEL.plateCast(), 8), new OreDictStack(ZR.ingot(), 8), new ComparableStack(ModItems.motor, 4), new ComparableStack(ModItems.circuit, 4, EnumCircuitType.BASIC), new ComparableStack(ModItems.circuit, 4, EnumCircuitType.CAPACITOR_BOARD))); + .inputItems(new OreDictStack(STEEL.plateCast(), 8), new OreDictStack(ZR.ingot(), 8), new ComparableStack(ModItems.motor, 4), new ComparableStack(ModItems.circuit, 4, EnumCircuitType.CAPACITOR_BOARD)) + .inputItemsEx(new ComparableStack(ModItems.item_expensive, 4, EnumExpensiveType.STEEL_PLATING), new OreDictStack(ZR.ingot(), 8), new ComparableStack(ModItems.motor, 4), new ComparableStack(ModItems.circuit, 8, EnumCircuitType.CAPACITOR_BOARD))); this.register(new GenericRecipe("ass.centrifuge").setup(200, 100).outputItems(new ItemStack(ModBlocks.machine_centrifuge, 1)) .inputItems(new ComparableStack(ModItems.centrifuge_element, 1), new OreDictStack(ANY_PLASTIC.ingot(), 4), new OreDictStack(STEEL.plate(), 8), new OreDictStack(CU.plate(), 4), new ComparableStack(ModItems.circuit, 1, EnumCircuitType.ANALOG)) .inputItemsEx(new ComparableStack(ModItems.centrifuge_element, 1), new OreDictStack(ANY_PLASTIC.ingot(), 4), new ComparableStack(ModItems.item_expensive, 3, EnumExpensiveType.STEEL_PLATING), new OreDictStack(CU.plateCast(), 4), new ComparableStack(ModItems.circuit, 1, EnumCircuitType.ANALOG))); this.register(new GenericRecipe("ass.gascent").setup(400, 100).outputItems(new ItemStack(ModBlocks.machine_gascent, 1)) .inputItems(new ComparableStack(ModItems.centrifuge_element, 4), new OreDictStack(ANY_PLASTIC.ingot(), 8), new OreDictStack(DESH.ingot(), 2), new OreDictStack(STEEL.plate(), 8), new ComparableStack(ModItems.circuit, 1, EnumCircuitType.ADVANCED.ordinal())) - .inputItemsEx(new ComparableStack(ModItems.centrifuge_element, 4), new OreDictStack(STEEL.plateWelded(), 4), new ComparableStack(ModItems.item_expensive, 1, EnumExpensiveType.HEAVY_FRAME), new ComparableStack(ModItems.item_expensive, 1, EnumExpensiveType.CIRCUIT))); + .inputItemsEx(new ComparableStack(ModItems.centrifuge_element, 4), new OreDictStack(STEEL.plateWelded(), 4), new ComparableStack(ModItems.item_expensive, 1, EnumExpensiveType.HEAVY_FRAME), new ComparableStack(ModItems.item_expensive, 1, EnumExpensiveType.CIRCUIT)) + .setPools528(GenericRecipes.POOL_PREFIX_528 + "gascent")); this.register(new GenericRecipe("ass.arcfurnace").setup(200, 100).outputItems(new ItemStack(ModBlocks.machine_arc_furnace, 1)) .inputItems(new OreDictStack(ANY_CONCRETE.any(), 12), new OreDictStack(ANY_PLASTIC.ingot(), 8), new ComparableStack(ModItems.ingot_firebrick, 16),new OreDictStack(STEEL.plateCast(), 8), new ComparableStack(ModBlocks.machine_transformer, 1), new ComparableStack(ModItems.circuit, 1, EnumCircuitType.ANALOG.ordinal())) .inputItemsEx(new OreDictStack(ANY_CONCRETE.any(), 12), new ComparableStack(ModItems.item_expensive, 4, EnumExpensiveType.HEAVY_FRAME), new ComparableStack(ModItems.ingot_firebrick, 16), new ComparableStack(ModBlocks.machine_transformer, 1), new ComparableStack(ModItems.circuit, 3, EnumCircuitType.ANALOG.ordinal()))); @@ -259,7 +262,8 @@ public class AssemblyMachineRecipes extends GenericRecipes { .inputItemsEx(new ComparableStack(ModItems.item_expensive, 1, EnumExpensiveType.HEAVY_FRAME), new OreDictStack(STEEL.pipe(), 12), new ComparableStack(ModItems.motor_desh, 3), new ComparableStack(ModItems.drill_titanium, 1))); this.register(new GenericRecipe("ass.fracker").setup(600, 100).outputItems(new ItemStack(ModBlocks.machine_fracking_tower, 1)) .inputItems(new OreDictStack(STEEL.shell(), 24), new OreDictStack(STEEL.pipe(), 12), new ComparableStack(ModBlocks.concrete_smooth, 64), new ComparableStack(ModItems.drill_titanium), new ComparableStack(ModItems.motor_desh, 2), new ComparableStack(ModItems.plate_desh, 24), new ComparableStack(ModItems.circuit, 16, EnumCircuitType.CAPACITOR)) - .inputItemsEx(new ComparableStack(ModItems.item_expensive, 4, EnumExpensiveType.HEAVY_FRAME), new ComparableStack(ModItems.item_expensive, 2, EnumExpensiveType.FERRO_PLATING), new OreDictStack(STEEL.pipe(), 12), new ComparableStack(ModBlocks.concrete_smooth, 64), new ComparableStack(ModItems.drill_titanium), new ComparableStack(ModItems.motor_desh, 5), new ComparableStack(ModItems.item_expensive, 4, EnumExpensiveType.CIRCUIT))); + .inputItemsEx(new ComparableStack(ModItems.item_expensive, 4, EnumExpensiveType.HEAVY_FRAME), new ComparableStack(ModItems.item_expensive, 2, EnumExpensiveType.FERRO_PLATING), new OreDictStack(STEEL.pipe(), 12), new ComparableStack(ModBlocks.concrete_smooth, 64), new ComparableStack(ModItems.drill_titanium), new ComparableStack(ModItems.motor_desh, 5), new ComparableStack(ModItems.item_expensive, 4, EnumExpensiveType.CIRCUIT)) + .setPools528(GenericRecipes.POOL_PREFIX_528 + "fracker")); this.register(new GenericRecipe("ass.flarestack").setup(100, 100).outputItems(new ItemStack(ModBlocks.machine_flare, 1)) .inputItems(new OreDictStack(STEEL.plate(), 12), new OreDictStack(CU.plate(), 4), new OreDictStack(STEEL.shell(), 4), new ComparableStack(ModItems.thermo_element, 3)) .inputItemsEx(new ComparableStack(ModItems.item_expensive, 8, EnumExpensiveType.STEEL_PLATING), new OreDictStack(CU.plate(), 4), new ComparableStack(ModItems.thermo_element, 3))); @@ -274,19 +278,23 @@ public class AssemblyMachineRecipes extends GenericRecipes { .inputItemsEx(new ComparableStack(ModItems.item_expensive, 2, EnumExpensiveType.HEAVY_FRAME), new ComparableStack(ModItems.item_expensive, 4, EnumExpensiveType.LEAD_PLATING), new OreDictStack(CU.plateCast(), 4), new OreDictStack(RUBBER.ingot(), 16), new ComparableStack(ModItems.thermo_element, 8))); this.register(new GenericRecipe("ass.coker").setup(200, 100).outputItems(new ItemStack(ModBlocks.machine_coker, 1)) .inputItems(new OreDictStack(STEEL.plateWelded(), 8), new OreDictStack(STEEL.shell(), 4), new OreDictStack(CU.plate(), 8), new OreDictStack(RUBBER.ingot(), 4), new OreDictStack(NB.ingot(), 4)) - .inputItemsEx(new ComparableStack(ModItems.item_expensive, 4, EnumExpensiveType.HEAVY_FRAME), new ComparableStack(ModItems.item_expensive, 8, EnumExpensiveType.STEEL_PLATING), new OreDictStack(RUBBER.ingot(), 16), new OreDictStack(NB.ingot(), 4))); + .inputItemsEx(new ComparableStack(ModItems.item_expensive, 4, EnumExpensiveType.HEAVY_FRAME), new ComparableStack(ModItems.item_expensive, 8, EnumExpensiveType.STEEL_PLATING), new OreDictStack(RUBBER.ingot(), 16), new OreDictStack(NB.ingot(), 4)) + .setPools528(GenericRecipes.POOL_PREFIX_528 + "fracker")); this.register(new GenericRecipe("ass.vaccumrefinery").setup(200, 100).outputItems(new ItemStack(ModBlocks.machine_vacuum_distill, 1)) .inputItems(new OreDictStack(STEEL.plateCast(), 16), new OreDictStack(CU.plate(), 16), new OreDictStack(ANY_RESISTANTALLOY.ingot(), 4), new ComparableStack(ModItems.sphere_steel, 1), new OreDictStack(STEEL.pipe(), 12), new ComparableStack(ModItems.motor_desh, 3), new ComparableStack(ModItems.circuit, 4, EnumCircuitType.CHIP_BISMOID)) .inputItemsEx(new ComparableStack(ModItems.item_expensive, 2, EnumExpensiveType.BRONZE_TUBES), new ComparableStack(ModItems.item_expensive, 2, EnumExpensiveType.FERRO_PLATING), new OreDictStack(DURA.pipe(), 16), new ComparableStack(ModItems.motor_desh, 3), new ComparableStack(ModItems.circuit, 16, EnumCircuitType.CHIP_BISMOID), new ComparableStack(ModItems.item_expensive, 1, EnumExpensiveType.COMPUTER))); this.register(new GenericRecipe("ass.reformer").setup(200, 100).outputItems(new ItemStack(ModBlocks.machine_catalytic_reformer, 1)) .inputItems(new OreDictStack(STEEL.plateCast(), 12), new OreDictStack(CU.plate(), 8), new OreDictStack(NB.ingot(), 8), new OreDictStack(ANY_RESISTANTALLOY.ingot(), 4), new OreDictStack(STEEL.shell(), 3), new OreDictStack(STEEL.pipe(), 8), new ComparableStack(ModItems.motor, 1), new ComparableStack(ModItems.circuit, 1, EnumCircuitType.BISMOID)) - .inputItemsEx(new ComparableStack(ModItems.item_expensive, 2, EnumExpensiveType.BRONZE_TUBES), new OreDictStack(NB.ingot(), 8), new OreDictStack(ANY_RESISTANTALLOY.ingot(), 4), new OreDictStack(DURA.pipe(), 16), new ComparableStack(ModItems.motor, 8), new ComparableStack(ModItems.circuit, 4, EnumCircuitType.BISMOID), new ComparableStack(ModItems.item_expensive, 1, EnumExpensiveType.COMPUTER))); + .inputItemsEx(new ComparableStack(ModItems.item_expensive, 2, EnumExpensiveType.BRONZE_TUBES), new OreDictStack(NB.ingot(), 8), new OreDictStack(ANY_RESISTANTALLOY.ingot(), 4), new OreDictStack(DURA.pipe(), 16), new ComparableStack(ModItems.motor, 8), new ComparableStack(ModItems.circuit, 4, EnumCircuitType.BISMOID), new ComparableStack(ModItems.item_expensive, 1, EnumExpensiveType.COMPUTER)) + .setPools528(GenericRecipes.POOL_PREFIX_528 + "hardplastic")); this.register(new GenericRecipe("ass.hydrotreater").setup(200, 100).outputItems(new ItemStack(ModBlocks.machine_hydrotreater, 1)) .inputItems(new OreDictStack(STEEL.plateWelded(), 8), new OreDictStack(CU.plateCast(), 4), new OreDictStack(NB.ingot(), 8), new OreDictStack(ANY_RESISTANTALLOY.ingot(), 4), new OreDictStack(STEEL.shell(), 2), new OreDictStack(STEEL.pipe(), 8), new ComparableStack(ModItems.motor_desh, 2), new ComparableStack(ModItems.circuit, 1, EnumCircuitType.BISMOID)) - .inputItemsEx(new ComparableStack(ModItems.item_expensive, 2, EnumExpensiveType.BRONZE_TUBES), new OreDictStack(NB.ingot(), 8), new OreDictStack(ANY_RESISTANTALLOY.ingot(), 4), new OreDictStack(DURA.pipe(), 16), new ComparableStack(ModItems.motor_desh, 8), new ComparableStack(ModItems.circuit, 4, EnumCircuitType.BISMOID), new ComparableStack(ModItems.item_expensive, 1, EnumExpensiveType.COMPUTER))); + .inputItemsEx(new ComparableStack(ModItems.item_expensive, 2, EnumExpensiveType.BRONZE_TUBES), new OreDictStack(NB.ingot(), 8), new OreDictStack(ANY_RESISTANTALLOY.ingot(), 4), new OreDictStack(DURA.pipe(), 16), new ComparableStack(ModItems.motor_desh, 8), new ComparableStack(ModItems.circuit, 4, EnumCircuitType.BISMOID), new ComparableStack(ModItems.item_expensive, 1, EnumExpensiveType.COMPUTER)) + .setPools528(GenericRecipes.POOL_PREFIX_528 + "hardplastic")); this.register(new GenericRecipe("ass.pyrooven").setup(300, 100).outputItems(new ItemStack(ModBlocks.machine_pyrooven, 1)) .inputItems(new OreDictStack(STEEL.plateWelded(), 16), new OreDictStack(ANY_HARDPLASTIC.ingot(), 16), new ComparableStack(ModItems.ingot_cft, 4), new OreDictStack(CU.pipe(), 12), new ComparableStack(ModItems.motor_desh, 1), new ComparableStack(ModItems.circuit, 1, EnumCircuitType.BISMOID)) - .inputItemsEx(new ComparableStack(ModItems.item_expensive, 6, EnumExpensiveType.BRONZE_TUBES), new OreDictStack(ANY_HARDPLASTIC.ingot(), 32), new ComparableStack(ModItems.ingot_cft, 4), new ComparableStack(ModItems.motor_bismuth, 4), new ComparableStack(ModItems.circuit, 4, EnumCircuitType.BISMOID), new ComparableStack(ModItems.item_expensive, 2, EnumExpensiveType.COMPUTER))); + .inputItemsEx(new ComparableStack(ModItems.item_expensive, 6, EnumExpensiveType.BRONZE_TUBES), new OreDictStack(ANY_HARDPLASTIC.ingot(), 32), new ComparableStack(ModItems.ingot_cft, 4), new ComparableStack(ModItems.motor_bismuth, 4), new ComparableStack(ModItems.circuit, 4, EnumCircuitType.BISMOID), new ComparableStack(ModItems.item_expensive, 2, EnumExpensiveType.COMPUTER)) + .setPools528(GenericRecipes.POOL_PREFIX_528 + "hardplastic")); this.register(new GenericRecipe("ass.liquefactor").setup(200, 100).outputItems(new ItemStack(ModBlocks.machine_liquefactor, 1)) .inputItems(new OreDictStack(STEEL.shell(), 4), new OreDictStack(CU.plate(), 12), new OreDictStack(ANY_TAR.any(), 4), new ComparableStack(ModItems.circuit, 12, EnumCircuitType.CAPACITOR), new ComparableStack(ModItems.coil_tungsten, 8)) .inputItemsEx(new ComparableStack(ModItems.item_expensive, 1, EnumExpensiveType.HEAVY_FRAME), new OreDictStack(ANY_TAR.any(), 16), new ComparableStack(ModItems.circuit, 16, EnumCircuitType.CAPACITOR))); @@ -484,7 +492,8 @@ public class AssemblyMachineRecipes extends GenericRecipes { .inputItemsEx(new ComparableStack(ModItems.item_expensive, 4, EnumExpensiveType.LEAD_PLATING), new OreDictStack(GRAPHITE.ingot(), 16), new OreDictStack(RUBBER.ingot(), 16), new OreDictStack(ANY_CONCRETE.any(), 16), new ComparableStack(ModItems.item_expensive, 2, EnumExpensiveType.CIRCUIT))); this.register(new GenericRecipe("ass.rbmk").setup(100, 100).outputItems(new ItemStack(ModBlocks.rbmk_blank, 1)) .inputItems(new ComparableStack(ModBlocks.concrete_asbestos, 4), new OreDictStack(STEEL.plateCast(), 4), new OreDictStack(CU.plate(), 8), new ComparableStack(ModItems.plate_polymer, 4)) - .inputItemsEx(new ComparableStack(ModBlocks.concrete_asbestos, 4), new ComparableStack(ModItems.item_expensive, 1, EnumExpensiveType.FERRO_PLATING), new OreDictStack(CU.plate(), 16))); + .inputItemsEx(new ComparableStack(ModBlocks.concrete_asbestos, 4), new ComparableStack(ModItems.item_expensive, 1, EnumExpensiveType.FERRO_PLATING), new OreDictStack(CU.plate(), 16)) + .setPools528(GenericRecipes.POOL_PREFIX_528 + "ferrouranium")); this.register(new GenericRecipe("ass.rbmkautoloader").setup(100, 100).outputItems(new ItemStack(ModBlocks.rbmk_autoloader, 1)) .inputItems(new OreDictStack(STEEL.plateWelded(), 4), new OreDictStack(PB.plateCast(), 4), new OreDictStack(B.ingot(), 4), new ComparableStack(ModItems.motor, 3)) .inputItemsEx(new ComparableStack(ModItems.item_expensive, 4, EnumExpensiveType.FERRO_PLATING), new ComparableStack(ModItems.motor_desh, 3))); @@ -607,12 +616,14 @@ public class AssemblyMachineRecipes extends GenericRecipes { .inputItems(new OreDictStack(GOLD.plateCast(), 8), new ComparableStack(ModItems.motor, 4), new ComparableStack(ModItems.circuit, 1, EnumCircuitType.BISMOID))); // upgrades - this.register(new GenericRecipe("ass.overdrive1").setup(200, 100).outputItems(new ItemStack(ModItems.upgrade_overdrive_1, 1)) - .inputItems(new ComparableStack(ModItems.upgrade_speed_3, 1), new ComparableStack(ModItems.upgrade_effect_3, 1), new OreDictStack(BIGMT.ingot(), 16), new OreDictStack(ANY_HARDPLASTIC.ingot(), 16), new ComparableStack(ModItems.circuit, 16, EnumCircuitType.ADVANCED))); - this.register(new GenericRecipe("ass.overdrive2").setup(600, 100).outputItems(new ItemStack(ModItems.upgrade_overdrive_2, 1)) - .inputItems(new ComparableStack(ModItems.upgrade_overdrive_1, 1), new ComparableStack(ModItems.upgrade_speed_3, 1), new ComparableStack(ModItems.upgrade_effect_3, 1), new OreDictStack(BIGMT.ingot(), 16), new ComparableStack(ModItems.ingot_cft, 8), new ComparableStack(ModItems.circuit, 16, EnumCircuitType.CAPACITOR_BOARD))); - this.register(new GenericRecipe("ass.overdrive3").setup(1_200, 100).outputItems(new ItemStack(ModItems.upgrade_overdrive_3, 1)) - .inputItems(new ComparableStack(ModItems.upgrade_overdrive_2, 1), new ComparableStack(ModItems.upgrade_speed_3, 1), new ComparableStack(ModItems.upgrade_effect_3, 1), new OreDictStack(ANY_BISMOIDBRONZE.ingot(), 16), new ComparableStack(ModItems.ingot_cft, 16), new ComparableStack(ModItems.circuit, 16, EnumCircuitType.BISMOID))); + if(no528) { + this.register(new GenericRecipe("ass.overdrive1").setup(200, 100).outputItems(new ItemStack(ModItems.upgrade_overdrive_1, 1)) + .inputItems(new ComparableStack(ModItems.upgrade_speed_3, 1), new ComparableStack(ModItems.upgrade_effect_3, 1), new OreDictStack(BIGMT.ingot(), 16), new OreDictStack(ANY_HARDPLASTIC.ingot(), 16), new ComparableStack(ModItems.circuit, 16, EnumCircuitType.ADVANCED))); + this.register(new GenericRecipe("ass.overdrive2").setup(600, 100).outputItems(new ItemStack(ModItems.upgrade_overdrive_2, 1)) + .inputItems(new ComparableStack(ModItems.upgrade_overdrive_1, 1), new ComparableStack(ModItems.upgrade_speed_3, 1), new ComparableStack(ModItems.upgrade_effect_3, 1), new OreDictStack(BIGMT.ingot(), 16), new ComparableStack(ModItems.ingot_cft, 8), new ComparableStack(ModItems.circuit, 16, EnumCircuitType.CAPACITOR_BOARD))); + this.register(new GenericRecipe("ass.overdrive3").setup(1_200, 100).outputItems(new ItemStack(ModItems.upgrade_overdrive_3, 1)) + .inputItems(new ComparableStack(ModItems.upgrade_overdrive_2, 1), new ComparableStack(ModItems.upgrade_speed_3, 1), new ComparableStack(ModItems.upgrade_effect_3, 1), new OreDictStack(ANY_BISMOIDBRONZE.ingot(), 16), new ComparableStack(ModItems.ingot_cft, 16), new ComparableStack(ModItems.circuit, 16, EnumCircuitType.BISMOID))); + } /* this.register(new GenericRecipe("ass.").setup(, 100).outputItems(new ItemStack(ModBlocks., 1)) .inputItems()); diff --git a/src/main/java/com/hbm/inventory/recipes/PrecAssRecipes.java b/src/main/java/com/hbm/inventory/recipes/PrecAssRecipes.java index dde88894e..3c096002b 100644 --- a/src/main/java/com/hbm/inventory/recipes/PrecAssRecipes.java +++ b/src/main/java/com/hbm/inventory/recipes/PrecAssRecipes.java @@ -16,6 +16,7 @@ import com.hbm.items.ModItems; import com.hbm.items.machine.ItemCircuit.EnumCircuitType; import net.minecraft.init.Items; +import net.minecraft.item.Item; import net.minecraft.item.ItemFishFood.FishType; import net.minecraft.item.ItemStack; @@ -51,7 +52,8 @@ public class PrecAssRecipes extends GenericRecipes { .inputItems(new ComparableStack(ModItems.circuit, 4, EnumCircuitType.SILICON), new ComparableStack(ModItems.plate_polymer, 8), new OreDictStack(ANY_BISMOID.nugget(), 2), - new OreDictStack(GOLD.wireFine(), 4)).setPools(POOL_PREFIX_528 + "chip_bismoid"), + new OreDictStack(GOLD.wireFine(), 4)) + .inputFluids(new FluidStack(Fluids.PERFLUOROMETHYL, 1_000)).setPools(POOL_PREFIX_528 + "chip_bismoid"), DictFrame.fromOne(ModItems.circuit, EnumCircuitType.CHIP_BISMOID), 50, GeneralConfig.enableExpensiveMode ? 10 : 75); registerPair(new GenericRecipe("precass.chip_quantum").setup(300, 20_000L) @@ -59,7 +61,8 @@ public class PrecAssRecipes extends GenericRecipes { new OreDictStack(BSCCO.wireDense(), 2), new OreDictStack(ANY_HARDPLASTIC.ingot(), 8), new ComparableStack(ModItems.pellet_charged, 4), - new OreDictStack(GOLD.wireFine(), 8)).setPools(POOL_PREFIX_528 + "chip_quantum"), + new OreDictStack(GOLD.wireFine(), 8)) + .inputFluids(new FluidStack(Fluids.HELIUM4, 4_000)).setPools(POOL_PREFIX_528 + "chip_quantum"), DictFrame.fromOne(ModItems.circuit, EnumCircuitType.CHIP_QUANTUM), 50, GeneralConfig.enableExpensiveMode ? 10 : 50); registerPair(new GenericRecipe("precass.controller").setup(400, 15_000L) @@ -79,7 +82,7 @@ public class PrecAssRecipes extends GenericRecipes { new ComparableStack(ModItems.circuit, 1, EnumCircuitType.CONTROLLER_CHASSIS), new ComparableStack(ModItems.upgrade_speed_3), new OreDictStack(PB.wireFine(), 24)) - .inputFluids(new FluidStack(Fluids.PERFLUOROMETHYL, 1_000)), + .inputFluids(new FluidStack(Fluids.PERFLUOROMETHYL, 4_000)), DictFrame.fromOne(ModItems.circuit, EnumCircuitType.CONTROLLER_ADVANCED), 10, GeneralConfig.enableExpensiveMode ? 33 : 75); registerPair(new GenericRecipe("precass.controller_quantum").setup(600, 250_000) @@ -89,8 +92,50 @@ public class PrecAssRecipes extends GenericRecipes { new ComparableStack(ModItems.circuit, 2, EnumCircuitType.CONTROLLER_ADVANCED), new ComparableStack(ModItems.upgrade_overdrive_1), new OreDictStack(PB.wireFine(), 32)) - .inputFluids(new FluidStack(Fluids.PERFLUOROMETHYL, 1_000)), + .inputFluids(new FluidStack(Fluids.PERFLUOROMETHYL_COLD, 6_000)), DictFrame.fromOne(ModItems.circuit, EnumCircuitType.CONTROLLER_QUANTUM), 5, GeneralConfig.enableExpensiveMode ? 10 : 50); + + addFirstUpgrade(ModItems.upgrade_speed_1, ModItems.upgrade_speed_2, "precass.upgrade_speed_ii"); + addSecondUpgrade(ModItems.upgrade_speed_2, ModItems.upgrade_speed_3, "precass.upgrade_speed_iii"); + addFirstUpgrade(ModItems.upgrade_effect_1, ModItems.upgrade_effect_2, "precass.upgrade_effect_ii"); + addSecondUpgrade(ModItems.upgrade_effect_2, ModItems.upgrade_effect_3, "precass.upgrade_effect_iii"); + addFirstUpgrade(ModItems.upgrade_power_1, ModItems.upgrade_power_2, "precass.upgrade_power_ii"); + addSecondUpgrade(ModItems.upgrade_power_2, ModItems.upgrade_power_3, "precass.upgrade_power_iii"); + addFirstUpgrade(ModItems.upgrade_fortune_1, ModItems.upgrade_fortune_2, "precass.upgrade_fortune_ii"); + addSecondUpgrade(ModItems.upgrade_fortune_2, ModItems.upgrade_fortune_3, "precass.upgrade_fortune_iii"); + addFirstUpgrade(ModItems.upgrade_afterburn_1, ModItems.upgrade_afterburn_2, "precass.upgrade_ab_ii"); + addSecondUpgrade(ModItems.upgrade_afterburn_2, ModItems.upgrade_afterburn_3, "precass.upgrade_ab_iii"); + + registerPair(new GenericRecipe("precass.upgrade_overdive_i").setup(200, 1_000) + .inputItems(new ComparableStack(ModItems.upgrade_speed_3, 1), + new ComparableStack(ModItems.upgrade_effect_3, 1), + new OreDictStack(BIGMT.ingot(), 16), + new OreDictStack(ANY_HARDPLASTIC.ingot(), 16), + new ComparableStack(ModItems.circuit, 16, EnumCircuitType.ADVANCED)), + new ItemStack(ModItems.upgrade_overdrive_1), 10, GeneralConfig.enableExpensiveMode ? 10 : 50); + registerPair(new GenericRecipe("precass.upgrade_overdive_ii").setup(600, 5_000) + .inputItems(new ComparableStack(ModItems.upgrade_overdrive_1, 1), + new ComparableStack(ModItems.upgrade_speed_3, 1), + new ComparableStack(ModItems.upgrade_effect_3, 1), + new OreDictStack(BIGMT.ingot(), 16), + new ComparableStack(ModItems.ingot_cft, 8), + new ComparableStack(ModItems.circuit, 16, EnumCircuitType.CAPACITOR_BOARD)), + new ItemStack(ModItems.upgrade_overdrive_1), 10, GeneralConfig.enableExpensiveMode ? 10 : 50); + registerPair(new GenericRecipe("precass.upgrade_overdive_iii").setup(1_200, 100_000) + .inputItems(new ComparableStack(ModItems.upgrade_overdrive_2, 1), + new ComparableStack(ModItems.upgrade_speed_3, 1), + new ComparableStack(ModItems.upgrade_effect_3, 1), + new OreDictStack(ANY_BISMOIDBRONZE.ingot(), 16), + new ComparableStack(ModItems.ingot_cft, 16), + new ComparableStack(ModItems.circuit, 16, EnumCircuitType.BISMOID)), + new ItemStack(ModItems.upgrade_overdrive_1), 5, GeneralConfig.enableExpensiveMode ? 10 : 50); + + this.register(new GenericRecipe("ass.overdrive1").setup(200, 100).outputItems(new ItemStack(ModItems.upgrade_overdrive_1, 1)) + .inputItems(new ComparableStack(ModItems.upgrade_speed_3, 1), new ComparableStack(ModItems.upgrade_effect_3, 1), new OreDictStack(BIGMT.ingot(), 16), new OreDictStack(ANY_HARDPLASTIC.ingot(), 16), new ComparableStack(ModItems.circuit, 16, EnumCircuitType.ADVANCED))); + this.register(new GenericRecipe("ass.overdrive2").setup(600, 100).outputItems(new ItemStack(ModItems.upgrade_overdrive_2, 1)) + .inputItems(new ComparableStack(ModItems.upgrade_overdrive_1, 1), new ComparableStack(ModItems.upgrade_speed_3, 1), new ComparableStack(ModItems.upgrade_effect_3, 1), new OreDictStack(BIGMT.ingot(), 16), new ComparableStack(ModItems.ingot_cft, 8), new ComparableStack(ModItems.circuit, 16, EnumCircuitType.CAPACITOR_BOARD))); + this.register(new GenericRecipe("ass.overdrive3").setup(1_200, 100).outputItems(new ItemStack(ModItems.upgrade_overdrive_3, 1)) + .inputItems(new ComparableStack(ModItems.upgrade_overdrive_2, 1), new ComparableStack(ModItems.upgrade_speed_3, 1), new ComparableStack(ModItems.upgrade_effect_3, 1), new OreDictStack(ANY_BISMOIDBRONZE.ingot(), 16), new ComparableStack(ModItems.ingot_cft, 16), new ComparableStack(ModItems.circuit, 16, EnumCircuitType.BISMOID))); } int min = 1_200; @@ -114,6 +159,25 @@ public class PrecAssRecipes extends GenericRecipes { )); } + public void addFirstUpgrade(Item lower, Item higher, String name) { + + registerPair(new GenericRecipe(name).setup(300, 10_000) + .inputItems(new ComparableStack(ModItems.circuit, 8, EnumCircuitType.CHIP), + new ComparableStack(ModItems.circuit, 4, EnumCircuitType.CAPACITOR_TANTALIUM), + new ComparableStack(lower), new OreDictStack(ANY_PLASTIC.ingot(), 4)), + new ItemStack(higher), 15, 25); // upgrades are now actually valuable + } + + public void addSecondUpgrade(Item lower, Item higher, String name) { + + registerPair(new GenericRecipe(name).setup(400, 25_000) + .inputItems(new ComparableStack(ModItems.circuit, 16, EnumCircuitType.CHIP), + new ComparableStack(ModItems.circuit, 16, EnumCircuitType.CAPACITOR_TANTALIUM), + new ComparableStack(lower), new OreDictStack(RUBBER.ingot(), 4)) + .inputFluids(new FluidStack(Fluids.SOLVENT, 500)), + new ItemStack(higher), 5, 10); // admittedly this one's just me being a dick + } + /** Registers a generic pair of faulty product and recycling of broken items. */ public void registerPair(GenericRecipe recipe, ItemStack output, int chance, int reclaim) { recipe.outputItems(new ChanceOutputMulti( diff --git a/src/main/java/com/hbm/inventory/recipes/SolderingRecipes.java b/src/main/java/com/hbm/inventory/recipes/SolderingRecipes.java index 65c17f845..5f03dcd54 100644 --- a/src/main/java/com/hbm/inventory/recipes/SolderingRecipes.java +++ b/src/main/java/com/hbm/inventory/recipes/SolderingRecipes.java @@ -32,6 +32,7 @@ public class SolderingRecipes extends SerializableRecipe { public void registerDefaults() { boolean lbsm = GeneralConfig.enableLBSM && GeneralConfig.enableLBSMSimpleCrafting; + boolean no528 = !GeneralConfig.enable528; /* * CIRCUITS @@ -108,7 +109,7 @@ public class SolderingRecipes extends SerializableRecipe { * COMPUTERS */ - if(!GeneralConfig.enable528) { + if(no528) { recipes.add(new SolderingRecipe(new ItemStack(ModItems.circuit, 1, EnumCircuitType.CONTROLLER.ordinal()), 400, 15_000, new FluidStack(Fluids.PERFLUOROMETHYL, 1_000), new AStack[] { @@ -187,16 +188,18 @@ public class SolderingRecipes extends SerializableRecipe { new AStack[] {} )); - addFirstUpgrade(ModItems.upgrade_speed_1, ModItems.upgrade_speed_2); - addSecondUpgrade(ModItems.upgrade_speed_2, ModItems.upgrade_speed_3); - addFirstUpgrade(ModItems.upgrade_effect_1, ModItems.upgrade_effect_2); - addSecondUpgrade(ModItems.upgrade_effect_2, ModItems.upgrade_effect_3); - addFirstUpgrade(ModItems.upgrade_power_1, ModItems.upgrade_power_2); - addSecondUpgrade(ModItems.upgrade_power_2, ModItems.upgrade_power_3); - addFirstUpgrade(ModItems.upgrade_fortune_1, ModItems.upgrade_fortune_2); - addSecondUpgrade(ModItems.upgrade_fortune_2, ModItems.upgrade_fortune_3); - addFirstUpgrade(ModItems.upgrade_afterburn_1, ModItems.upgrade_afterburn_2); - addSecondUpgrade(ModItems.upgrade_afterburn_2, ModItems.upgrade_afterburn_3); + if(no528) { + addFirstUpgrade(ModItems.upgrade_speed_1, ModItems.upgrade_speed_2); + addSecondUpgrade(ModItems.upgrade_speed_2, ModItems.upgrade_speed_3); + addFirstUpgrade(ModItems.upgrade_effect_1, ModItems.upgrade_effect_2); + addSecondUpgrade(ModItems.upgrade_effect_2, ModItems.upgrade_effect_3); + addFirstUpgrade(ModItems.upgrade_power_1, ModItems.upgrade_power_2); + addSecondUpgrade(ModItems.upgrade_power_2, ModItems.upgrade_power_3); + addFirstUpgrade(ModItems.upgrade_fortune_1, ModItems.upgrade_fortune_2); + addSecondUpgrade(ModItems.upgrade_fortune_2, ModItems.upgrade_fortune_3); + addFirstUpgrade(ModItems.upgrade_afterburn_1, ModItems.upgrade_afterburn_2); + addSecondUpgrade(ModItems.upgrade_afterburn_2, ModItems.upgrade_afterburn_3); + } } public static void addFirstUpgrade(Item lower, Item higher) { diff --git a/src/main/java/com/hbm/inventory/recipes/loader/GenericRecipe.java b/src/main/java/com/hbm/inventory/recipes/loader/GenericRecipe.java index 159d987b0..9c84edf0e 100644 --- a/src/main/java/com/hbm/inventory/recipes/loader/GenericRecipe.java +++ b/src/main/java/com/hbm/inventory/recipes/loader/GenericRecipe.java @@ -60,6 +60,7 @@ public class GenericRecipe { public GenericRecipe setIcon(Block block) { return this.setIcon(new ItemStack(block)); } public GenericRecipe setNamed() { this.customLocalization = true; return this; } public GenericRecipe setPools(String... pools) { this.blueprintPools = pools; for(String pool : pools) GenericRecipes.addToPool(pool, this); return this; } + public GenericRecipe setPools528(String... pools) { if(GeneralConfig.enable528) { this.blueprintPools = pools; for(String pool : pools) GenericRecipes.addToPool(pool, this); } return this; } public GenericRecipe setGroup(String autoSwitch, GenericRecipes set) { this.autoSwitchGroup = autoSwitch; set.addToGroup(autoSwitch, this); return this; } public GenericRecipe inputItems(AStack... input) { this.inputItem = input; for(AStack stack : this.inputItem) if(stack.stacksize > 64) throw new IllegalArgumentException("AStack in " + this.name + " exceeds stack limit!"); return this; } diff --git a/src/main/java/com/hbm/saveddata/AnnihilatorSavedData.java b/src/main/java/com/hbm/saveddata/AnnihilatorSavedData.java index 303e7f7ce..5dc4cfeb7 100644 --- a/src/main/java/com/hbm/saveddata/AnnihilatorSavedData.java +++ b/src/main/java/com/hbm/saveddata/AnnihilatorSavedData.java @@ -101,8 +101,8 @@ public class AnnihilatorSavedData extends WorldSavedData { ItemStack dictPayout = null; List oreDict = ItemStackUtil.getOreDictNames(stack); - for(String name : oreDict) if(name != null && !name.isEmpty()) { - ItemStack payout = poolInstance.increment(name, stack.stackSize, alwaysPayOut); // because some assholes pollute the ore dict with crap values + for(String name : oreDict) if(name != null && !name.isEmpty()) { // because some assholes pollute the ore dict with crap values + ItemStack payout = poolInstance.increment(name, stack.stackSize, alwaysPayOut); if(payout != null) dictPayout = payout; } @@ -161,10 +161,8 @@ public class AnnihilatorSavedData extends WorldSavedData { } catch(Throwable ex) { } // because world data can be dented to all fucking hell and back } - /** So we want to avoid NBTTagCompounds because the keys are basically useless here and Strings are heavy as shit. - * So what do? Shrimple, we use NBTTagLists. However, Mojang never expected lists to use different types, even though - * implementing a list like that would be really easy, so we just break down absolutely all information we have into - * byte arrays because the NBTTagList can handle those. God I hate this. */ + /** Originally this uses NBTTagLists which broke down everything into byte arrays. It probably worked, but my stupid ass + * defined some NBT crap in the upper levels wrong so nothing worked, and this got rewritten too. Well at least now it does. */ public void serializeKey(NBTTagCompound nbt, Object key) { if(key instanceof Item) { // 0 Item item = (Item) key; @@ -204,7 +202,7 @@ public class AnnihilatorSavedData extends WorldSavedData { if(key == 2) { // fluidtype return Fluids.fromName(nbt.getString("fluid")); } - if(key == 3) { + if(key == 3) { // strong return nbt.getString("dict"); } // i feel filthy From d5ac6fe2391858599ff319d4ae0669e26e6f94fe Mon Sep 17 00:00:00 2001 From: Boblet Date: Tue, 9 Dec 2025 16:29:37 +0100 Subject: [PATCH 09/22] death --- changelog | 4 ++++ src/main/java/com/hbm/blocks/ModBlocks.java | 8 ++++---- .../com/hbm/inventory/recipes/AssemblyMachineRecipes.java | 6 +++--- src/main/java/com/hbm/main/CraftingManager.java | 4 +--- .../machine/oil/TileEntityMachineLiquefactor.java | 2 +- .../machine/oil/TileEntityMachineSolidifier.java | 2 +- 6 files changed, 14 insertions(+), 12 deletions(-) diff --git a/changelog b/changelog index e60e68ce4..fba8e05aa 100644 --- a/changelog +++ b/changelog @@ -29,6 +29,10 @@ * Alt fire is now available for 10ga double barrel shotguns, allowing only a single barrel to be fired at once * The custom mapping function on RoR torches now supports up to 32 characters instead of 15 * Drainage pipes, flare stacks and the annihilator now have the default fluid priority of LOW, meaning that excess removal using those no longer requires flow control pumps +* Halved base energy consumption for the solidifier and liquefactor +* Changed cracking tower recipe to use desh instead of polymer, as well as a little bit more niobium in favor of all the clay catalysts it used to have +* Iron and corroded barrels have been deprecated and are no longer obtainable +* Steel barrels and 256k tanks no longer use tar in their recipes (except in expensive mode) ## Fixed * Fixed gamebreaking issue causing crashes and world corruption where the multi detonator had its tooltip misspelled diff --git a/src/main/java/com/hbm/blocks/ModBlocks.java b/src/main/java/com/hbm/blocks/ModBlocks.java index 0d1dfb832..1d7ab36c9 100644 --- a/src/main/java/com/hbm/blocks/ModBlocks.java +++ b/src/main/java/com/hbm/blocks/ModBlocks.java @@ -853,8 +853,8 @@ public class ModBlocks { public static Block trapdoor_steel; public static Block barrel_plastic; - public static Block barrel_corroded; - public static Block barrel_iron; + @Deprecated public static Block barrel_corroded; + @Deprecated public static Block barrel_iron; public static Block barrel_steel; public static Block barrel_tcalloy; public static Block barrel_antimatter; @@ -1999,8 +1999,8 @@ public class ModBlocks { trapdoor_steel = new BlockNTMTrapdoor(Material.iron).setBlockName("trapdoor_steel").setHardness(3F).setResistance(8.0F).setStepSound(Block.soundTypeMetal).setCreativeTab(MainRegistry.blockTab).setBlockTextureName(RefStrings.MODID + ":trapdoor_steel"); barrel_plastic = new BlockFluidBarrel(Material.iron, 12000).setBlockName("barrel_plastic").setStepSound(Block.soundTypeStone).setHardness(2.0F).setResistance(5.0F).setCreativeTab(MainRegistry.machineTab).setBlockTextureName(RefStrings.MODID + ":barrel_plastic"); - barrel_corroded = new BlockFluidBarrel(Material.iron, 6000).setBlockName("barrel_corroded").setStepSound(Block.soundTypeMetal).setHardness(2.0F).setResistance(5.0F).setCreativeTab(MainRegistry.machineTab).setBlockTextureName(RefStrings.MODID + ":barrel_corroded"); - barrel_iron = new BlockFluidBarrel(Material.iron, 8000).setBlockName("barrel_iron").setStepSound(Block.soundTypeMetal).setHardness(2.0F).setResistance(5.0F).setCreativeTab(MainRegistry.machineTab).setBlockTextureName(RefStrings.MODID + ":barrel_iron"); + barrel_corroded = new BlockFluidBarrel(Material.iron, 6000).setBlockName("barrel_corroded").setStepSound(Block.soundTypeMetal).setHardness(2.0F).setResistance(5.0F).setCreativeTab(null).setBlockTextureName(RefStrings.MODID + ":barrel_corroded"); + barrel_iron = new BlockFluidBarrel(Material.iron, 8000).setBlockName("barrel_iron").setStepSound(Block.soundTypeMetal).setHardness(2.0F).setResistance(5.0F).setCreativeTab(null).setBlockTextureName(RefStrings.MODID + ":barrel_iron"); barrel_steel = new BlockFluidBarrel(Material.iron, 16000).setBlockName("barrel_steel").setStepSound(Block.soundTypeMetal).setHardness(2.0F).setResistance(5.0F).setCreativeTab(MainRegistry.machineTab).setBlockTextureName(RefStrings.MODID + ":barrel_steel"); barrel_tcalloy = new BlockFluidBarrel(Material.iron, 24000).setBlockName("barrel_tcalloy").setStepSound(Block.soundTypeMetal).setHardness(2.0F).setResistance(5.0F).setCreativeTab(MainRegistry.machineTab).setBlockTextureName(RefStrings.MODID + ":barrel_tcalloy"); barrel_antimatter = new BlockFluidBarrel(Material.iron, 16000).setBlockName("barrel_antimatter").setStepSound(Block.soundTypeMetal).setHardness(2.0F).setResistance(5.0F).setCreativeTab(MainRegistry.machineTab).setBlockTextureName(RefStrings.MODID + ":barrel_antimatter"); diff --git a/src/main/java/com/hbm/inventory/recipes/AssemblyMachineRecipes.java b/src/main/java/com/hbm/inventory/recipes/AssemblyMachineRecipes.java index 1c5f8b038..f9c7b2112 100644 --- a/src/main/java/com/hbm/inventory/recipes/AssemblyMachineRecipes.java +++ b/src/main/java/com/hbm/inventory/recipes/AssemblyMachineRecipes.java @@ -271,7 +271,7 @@ public class AssemblyMachineRecipes extends GenericRecipes { .inputItems(new OreDictStack(STEEL.plateWelded(), 3), new OreDictStack(CU.plate(), 8), new OreDictStack(STEEL.shell(), 4), new OreDictStack(STEEL.pipe(), 12), new ComparableStack(ModItems.plate_polymer, 8), new ComparableStack(ModItems.circuit, 3, EnumCircuitType.ANALOG)) .inputItemsEx(new ComparableStack(ModItems.item_expensive, 4, EnumExpensiveType.STEEL_PLATING), new OreDictStack(STEEL.pipe(), 12), new ComparableStack(ModItems.plate_polymer, 8), new ComparableStack(ModItems.circuit, 5, EnumCircuitType.ANALOG))); this.register(new GenericRecipe("ass.crackingtower").setup(200, 100).outputItems(new ItemStack(ModBlocks.machine_catalytic_cracker, 1)) - .inputItems(new ComparableStack(ModBlocks.steel_scaffold, 16), new OreDictStack(STEEL.shell(), 6), new OreDictStack(ANY_PLASTIC.ingot(), 4), new OreDictStack(NB.ingot(), 2), new ComparableStack(ModItems.catalyst_clay, 12)) + .inputItems(new ComparableStack(ModBlocks.steel_scaffold, 16), new OreDictStack(STEEL.shell(), 6), new OreDictStack(DESH.ingot(), 12), new OreDictStack(NB.ingot(), 4)) .inputItemsEx(new ComparableStack(ModItems.item_expensive, 2, EnumExpensiveType.HEAVY_FRAME), new ComparableStack(ModItems.item_expensive, 8, EnumExpensiveType.STEEL_PLATING), new OreDictStack(ANY_PLASTIC.ingot(), 16), new OreDictStack(NB.ingot(), 4))); this.register(new GenericRecipe("ass.radiolysis").setup(200, 100).outputItems(new ItemStack(ModBlocks.machine_radiolysis, 1)) .inputItems(new OreDictStack(STEEL.shell(), 4), new OreDictStack(ANY_RESISTANTALLOY.ingot(), 4), new OreDictStack(PB.plate(), 12), new OreDictStack(CU.plateCast(), 4), new OreDictStack(RUBBER.ingot(), 8), new ComparableStack(ModItems.thermo_element, 8)) @@ -441,8 +441,8 @@ public class AssemblyMachineRecipes extends GenericRecipes { // fluid tanks this.register(new GenericRecipe("ass.tank").setup(200, 100).outputItems(new ItemStack(ModBlocks.machine_fluidtank, 1)) - .inputItems(new OreDictStack(STEEL.plate(), 8), new OreDictStack(STEEL.shell(), 4), new OreDictStack(ANY_TAR.any(), 4)) - .inputItemsEx(new ComparableStack(ModItems.item_expensive, 4, EnumExpensiveType.STEEL_PLATING), new OreDictStack(ANY_TAR.any(), 4))); + .inputItems(new OreDictStack(STEEL.plate(), 8), new OreDictStack(STEEL.shell(), 4)) + .inputItemsEx(new ComparableStack(ModItems.item_expensive, 4, EnumExpensiveType.STEEL_PLATING), new OreDictStack(ANY_TAR.any(), 16))); this.register(new GenericRecipe("ass.bat9k").setup(200, 100).outputItems(new ItemStack(ModBlocks.machine_bat9000, 1)) .inputItems(new OreDictStack(STEEL.plate(), 16), new OreDictStack(ANY_RESISTANTALLOY.plateWelded(), 2), new ComparableStack(ModBlocks.steel_scaffold, 16), new OreDictStack(ANY_TAR.any(), 16)) .inputItemsEx(new ComparableStack(ModItems.item_expensive, 4, EnumExpensiveType.FERRO_PLATING), new ComparableStack(ModBlocks.steel_scaffold, 16), new OreDictStack(ANY_TAR.any(), 16))); diff --git a/src/main/java/com/hbm/main/CraftingManager.java b/src/main/java/com/hbm/main/CraftingManager.java index 1093f9784..298832266 100644 --- a/src/main/java/com/hbm/main/CraftingManager.java +++ b/src/main/java/com/hbm/main/CraftingManager.java @@ -768,9 +768,7 @@ public class CraftingManager { addRecipeAuto(new ItemStack(ModBlocks.dfc_injector, 1), new Object[] { "SDS", "TXL", "SDS", 'S', OSMIRIDIUM.plateWelded(), 'D', CMB.plate(), 'T', ModBlocks.machine_fluidtank, 'X', ModItems.motor, 'L', STEEL.pipe() }); addRecipeAuto(new ItemStack(ModBlocks.dfc_stabilizer, 1), new Object[] { "SDS", "TXL", "SDS", 'S', OSMIRIDIUM.plateWelded(), 'D', ModItems.plate_desh, 'T', ModItems.singularity_spark, 'X', ModBlocks.fusion_conductor, 'L', ModItems.crystal_xen }); addRecipeAuto(new ItemStack(ModBlocks.barrel_plastic, 1), new Object[] { "IPI", "I I", "IPI", 'I', ModItems.plate_polymer, 'P', AL.plate() }); - addRecipeAuto(new ItemStack(ModBlocks.barrel_iron, 1), new Object[] { "IPI", "I I", "IPI", 'I', IRON.plate(), 'P', IRON.ingot() }); - addShapelessAuto(new ItemStack(ModBlocks.barrel_iron, 1), new Object[] { ModBlocks.barrel_corroded, ANY_TAR.any() }); - addRecipeAuto(new ItemStack(ModBlocks.barrel_steel, 1), new Object[] { "IPI", "ITI", "IPI", 'I', STEEL.plate(), 'P', STEEL.ingot(), 'T', ANY_TAR.any() }); + addRecipeAuto(new ItemStack(ModBlocks.barrel_steel, 1), new Object[] { "IPI", "I I", "IPI", 'I', STEEL.plate(), 'P', STEEL.ingot() }); addRecipeAuto(new ItemStack(ModBlocks.barrel_tcalloy, 1), new Object[] { "IPI", "I I", "IPI", 'I', "ingotTcAlloy", 'P', TI.plate() }); addRecipeAuto(new ItemStack(ModBlocks.barrel_antimatter, 1), new Object[] { "IPI", "IBI", "IPI", 'I', BIGMT.plate(), 'P', ModItems.coil_advanced_torus, 'B', ModItems.battery_sc_technetium }); addRecipeAuto(new ItemStack(ModBlocks.tesla, 1), new Object[] { "CCC", "PIP", "WTW", 'C', ModItems.coil_copper, 'I', IRON.ingot(), 'P', ANY_PLASTIC.ingot(), 'T', ModBlocks.machine_transformer, 'W', KEY_PLANKS }); diff --git a/src/main/java/com/hbm/tileentity/machine/oil/TileEntityMachineLiquefactor.java b/src/main/java/com/hbm/tileentity/machine/oil/TileEntityMachineLiquefactor.java index 69cfd4533..e29fa6012 100644 --- a/src/main/java/com/hbm/tileentity/machine/oil/TileEntityMachineLiquefactor.java +++ b/src/main/java/com/hbm/tileentity/machine/oil/TileEntityMachineLiquefactor.java @@ -40,7 +40,7 @@ public class TileEntityMachineLiquefactor extends TileEntityMachineBase implemen public long power; public static final long maxPower = 100000; - public static final int usageBase = 500; + public static final int usageBase = 250; public int usage; public int progress; public static final int processTimeBase = 100; diff --git a/src/main/java/com/hbm/tileentity/machine/oil/TileEntityMachineSolidifier.java b/src/main/java/com/hbm/tileentity/machine/oil/TileEntityMachineSolidifier.java index 5cf61f101..626be09c2 100644 --- a/src/main/java/com/hbm/tileentity/machine/oil/TileEntityMachineSolidifier.java +++ b/src/main/java/com/hbm/tileentity/machine/oil/TileEntityMachineSolidifier.java @@ -39,7 +39,7 @@ public class TileEntityMachineSolidifier extends TileEntityMachineBase implement public long power; public static final long maxPower = 100000; - public static final int usageBase = 500; + public static final int usageBase = 250; public int usage; public int progress; public static final int processTimeBase = 100; From ec0613b9cf5912aed62c83a8c7f6d575de9681cb Mon Sep 17 00:00:00 2001 From: Boblet Date: Wed, 10 Dec 2025 16:32:34 +0100 Subject: [PATCH 10/22] spingus --- changelog | 11 +- src/main/java/com/hbm/blocks/ModBlocks.java | 6 - .../com/hbm/blocks/machine/MachineAmgen.java | 34 ---- .../hbm/commands/CommandReloadRecipes.java | 2 - .../inventory/gui/GUIMachineAnnihilator.java | 49 +++++ .../inventory/recipes/AnnihilatorRecipes.java | 42 +++- .../recipes/AssemblyMachineRecipes.java | 186 +++++++++++------- .../recipes/SolidificationRecipes.java | 2 +- src/main/java/com/hbm/main/MainRegistry.java | 2 + .../java/com/hbm/tileentity/TileMappings.java | 1 - .../machine/TileEntityMachineAmgen.java | 90 --------- .../textures/blocks/machine_amgen_side.png | Bin 346 -> 0 bytes .../hbm/textures/blocks/machine_amgen_top.png | Bin 338 -> 0 bytes .../hbm/textures/blocks/machine_cmb_side.png | Bin 446 -> 0 bytes .../hbm/textures/blocks/machine_cmb_top.png | Bin 474 -> 0 bytes .../hbm/textures/blocks/machine_geo_side.png | Bin 483 -> 0 bytes .../hbm/textures/blocks/machine_geo_top.png | Bin 469 -> 0 bytes 17 files changed, 217 insertions(+), 208 deletions(-) delete mode 100644 src/main/java/com/hbm/blocks/machine/MachineAmgen.java delete mode 100644 src/main/java/com/hbm/tileentity/machine/TileEntityMachineAmgen.java delete mode 100644 src/main/resources/assets/hbm/textures/blocks/machine_amgen_side.png delete mode 100644 src/main/resources/assets/hbm/textures/blocks/machine_amgen_top.png delete mode 100644 src/main/resources/assets/hbm/textures/blocks/machine_cmb_side.png delete mode 100644 src/main/resources/assets/hbm/textures/blocks/machine_cmb_top.png delete mode 100644 src/main/resources/assets/hbm/textures/blocks/machine_geo_side.png delete mode 100644 src/main/resources/assets/hbm/textures/blocks/machine_geo_top.png diff --git a/changelog b/changelog index fba8e05aa..dd9030a64 100644 --- a/changelog +++ b/changelog @@ -1,6 +1,12 @@ ## Added * Precision assembler + * Can create blueprint folders + * Used extensively in 528 mode + * Replaces recipes for micro chips, controllers and upgrades + * All recipes only have a chance to be completed, broken items yielded otherwise need to be recycled * Annihilator + * Destroys items and fluids and keeps track of how much has been destroyed + * In 528 mode, destroying quantities of certain items yield unique progression relevant blueprints ## Changed * New fusion reactor and particle accelerator parts now have OpenComputers compat @@ -33,8 +39,11 @@ * Changed cracking tower recipe to use desh instead of polymer, as well as a little bit more niobium in favor of all the clay catalysts it used to have * Iron and corroded barrels have been deprecated and are no longer obtainable * Steel barrels and 256k tanks no longer use tar in their recipes (except in expensive mode) +* Solidifying biogas into compressed biomass now yields 4x more, making the biogas route twice as efficient as simply compressing biomass +* Finally removed the long deprecated ambience radiation generator and geothermal generator ## Fixed * Fixed gamebreaking issue causing crashes and world corruption where the multi detonator had its tooltip misspelled * Fixed panzerschreck equip animation not speeding up with the sawed off mod -* Fixed FENSU not keeping its charge when broken \ No newline at end of file +* Fixed FENSU not keeping its charge when broken +* Removed skeletonizer reloading from `/ntmreload` as it wasn't usable for end users and just caused error messages on servers \ No newline at end of file diff --git a/src/main/java/com/hbm/blocks/ModBlocks.java b/src/main/java/com/hbm/blocks/ModBlocks.java index 1d7ab36c9..786edf0f4 100644 --- a/src/main/java/com/hbm/blocks/ModBlocks.java +++ b/src/main/java/com/hbm/blocks/ModBlocks.java @@ -958,8 +958,6 @@ public class ModBlocks { public static Block field_disturber; public static Block machine_rtg_grey; - public static Block machine_amgen; - public static Block machine_geo; public static Block machine_minirtg; public static Block machine_powerrtg; public static Block machine_radiolysis; @@ -1912,8 +1910,6 @@ public class ModBlocks { field_disturber = new MachineFieldDisturber().setBlockName("field_disturber").setHardness(5.0F).setResistance(200.0F).setCreativeTab(null).setBlockTextureName(RefStrings.MODID + ":field_disturber"); machine_rtg_grey = new MachineRTG(Material.iron).setBlockName("machine_rtg_grey").setHardness(5.0F).setResistance(10.0F).setCreativeTab(MainRegistry.machineTab).setBlockTextureName(RefStrings.MODID + ":rtg"); - machine_amgen = new MachineAmgen(Material.iron).setBlockName("machine_amgen").setHardness(5.0F).setResistance(10.0F); - machine_geo = new MachineAmgen(Material.iron).setBlockName("machine_geo").setHardness(5.0F).setResistance(10.0F); machine_minirtg = new MachineMiniRTG(Material.iron).setBlockName("machine_minirtg").setHardness(5.0F).setResistance(10.0F).setCreativeTab(MainRegistry.machineTab).setBlockTextureName(RefStrings.MODID + ":rtg_cell"); machine_powerrtg = new MachineMiniRTG(Material.iron).setBlockName("machine_powerrtg").setHardness(5.0F).setResistance(10.0F).setCreativeTab(MainRegistry.machineTab).setBlockTextureName(RefStrings.MODID + ":rtg_polonium"); machine_radiolysis = new MachineRadiolysis(Material.iron).setBlockName("machine_radiolysis").setHardness(10.0F).setResistance(10.0F).setCreativeTab(MainRegistry.machineTab).setBlockTextureName(RefStrings.MODID + ":block_steel_machine"); @@ -3154,8 +3150,6 @@ public class ModBlocks { GameRegistry.registerBlock(machine_cyclotron, machine_cyclotron.getUnlocalizedName()); GameRegistry.registerBlock(machine_exposure_chamber, machine_exposure_chamber.getUnlocalizedName()); GameRegistry.registerBlock(machine_rtg_grey, machine_rtg_grey.getUnlocalizedName()); - GameRegistry.registerBlock(machine_geo, machine_geo.getUnlocalizedName()); - GameRegistry.registerBlock(machine_amgen, machine_amgen.getUnlocalizedName()); GameRegistry.registerBlock(machine_minirtg, machine_minirtg.getUnlocalizedName()); GameRegistry.registerBlock(machine_powerrtg, machine_powerrtg.getUnlocalizedName()); GameRegistry.registerBlock(machine_radiolysis, machine_radiolysis.getUnlocalizedName()); diff --git a/src/main/java/com/hbm/blocks/machine/MachineAmgen.java b/src/main/java/com/hbm/blocks/machine/MachineAmgen.java deleted file mode 100644 index efa23accc..000000000 --- a/src/main/java/com/hbm/blocks/machine/MachineAmgen.java +++ /dev/null @@ -1,34 +0,0 @@ -package com.hbm.blocks.machine; - -import com.hbm.lib.RefStrings; -import com.hbm.tileentity.machine.TileEntityMachineAmgen; - -import cpw.mods.fml.relauncher.Side; -import cpw.mods.fml.relauncher.SideOnly; -import net.minecraft.block.BlockContainer; -import net.minecraft.block.material.Material; -import net.minecraft.client.renderer.texture.IIconRegister; -import net.minecraft.tileentity.TileEntity; -import net.minecraft.util.IIcon; -import net.minecraft.world.World; - -public class MachineAmgen extends BlockContainer { - - @SideOnly(Side.CLIENT) - private IIcon iconTop; - - public MachineAmgen(Material p_i45386_1_) { - super(p_i45386_1_); - } - - @Override - public TileEntity createNewTileEntity(World p_149915_1_, int p_149915_2_) { - return new TileEntityMachineAmgen(); - } - - @Override - @SideOnly(Side.CLIENT) - public void registerBlockIcons(IIconRegister iconRegister) { - this.blockIcon = iconRegister.registerIcon(RefStrings.MODID + ":block_deprecated"); - } -} diff --git a/src/main/java/com/hbm/commands/CommandReloadRecipes.java b/src/main/java/com/hbm/commands/CommandReloadRecipes.java index a07b43848..1c88fa350 100644 --- a/src/main/java/com/hbm/commands/CommandReloadRecipes.java +++ b/src/main/java/com/hbm/commands/CommandReloadRecipes.java @@ -4,7 +4,6 @@ import com.hbm.config.ItemPoolConfigJSON; import com.hbm.inventory.FluidContainerRegistry; import com.hbm.inventory.fluid.Fluids; import com.hbm.inventory.recipes.loader.SerializableRecipe; -import com.hbm.particle.helper.SkeletonCreator; import com.hbm.util.ChatBuilder; import com.hbm.util.DamageResistanceHandler; @@ -34,7 +33,6 @@ public class CommandReloadRecipes extends CommandBase { SerializableRecipe.initialize(); ItemPoolConfigJSON.initialize(); DamageResistanceHandler.init(); - SkeletonCreator.init(); sender.addChatMessage(new ChatComponentText(EnumChatFormatting.YELLOW + "Reload complete :)")); } catch(Exception ex) { diff --git a/src/main/java/com/hbm/inventory/gui/GUIMachineAnnihilator.java b/src/main/java/com/hbm/inventory/gui/GUIMachineAnnihilator.java index f841ae853..b642010c4 100644 --- a/src/main/java/com/hbm/inventory/gui/GUIMachineAnnihilator.java +++ b/src/main/java/com/hbm/inventory/gui/GUIMachineAnnihilator.java @@ -3,23 +3,31 @@ package com.hbm.inventory.gui; import java.util.Arrays; import java.util.Locale; +import org.apache.commons.lang3.math.NumberUtils; +import org.lwjgl.input.Keyboard; import org.lwjgl.opengl.GL11; import com.hbm.inventory.container.ContainerMachineAnnihilator; import com.hbm.inventory.fluid.FluidType; import com.hbm.items.machine.IItemFluidIdentifier; import com.hbm.lib.RefStrings; +import com.hbm.packet.PacketDispatcher; +import com.hbm.packet.toserver.NBTControlPacket; import com.hbm.tileentity.machine.TileEntityMachineAnnihilator; import net.minecraft.client.Minecraft; +import net.minecraft.client.gui.GuiTextField; import net.minecraft.client.resources.I18n; import net.minecraft.entity.player.InventoryPlayer; +import net.minecraft.nbt.NBTTagCompound; import net.minecraft.util.ResourceLocation; public class GUIMachineAnnihilator extends GuiInfoContainer { private static ResourceLocation texture = new ResourceLocation(RefStrings.MODID + ":textures/gui/processing/gui_annihilator.png"); private TileEntityMachineAnnihilator annihilator; + + protected GuiTextField pool; public GUIMachineAnnihilator(InventoryPlayer invPlayer, TileEntityMachineAnnihilator tedf) { super(new ContainerMachineAnnihilator(invPlayer, tedf)); @@ -28,6 +36,26 @@ public class GUIMachineAnnihilator extends GuiInfoContainer { this.xSize = 176; this.ySize = 208; } + + @Override + public void initGui() { + super.initGui(); + + Keyboard.enableRepeatEvents(true); + + this.pool = new GuiTextField(this.fontRendererObj, guiLeft + 31, guiTop + 85, 80, 8); + this.pool.setTextColor(0x00ff00); + this.pool.setDisabledTextColour(0x00ff00); + this.pool.setEnableBackgroundDrawing(false); + this.pool.setMaxStringLength(20); + this.pool.setText("" + annihilator.pool); + } + + @Override + protected void mouseClicked(int x, int y, int i) { + super.mouseClicked(x, y, i); + this.pool.mouseClicked(x, y, i); + } @Override public void drawScreen(int x, int y, float interp) { @@ -57,5 +85,26 @@ public class GUIMachineAnnihilator extends GuiInfoContainer { GL11.glColor4f(1.0F, 1.0F, 1.0F, 1.0F); Minecraft.getMinecraft().getTextureManager().bindTexture(texture); drawTexturedModalRect(guiLeft, guiTop, 0, 0, xSize, ySize); + + this.pool.drawTextBox(); + } + + @Override + protected void keyTyped(char c, int i) { + if(this.pool.textboxKeyTyped(c, i)) { + String text = this.pool.getText(); + int num = NumberUtils.toInt(this.pool.getText()); + NBTTagCompound data = new NBTTagCompound(); + data.setInteger("threshold", num); + PacketDispatcher.wrapper.sendToServer(new NBTControlPacket(data, annihilator.xCoord, annihilator.yCoord, annihilator.zCoord)); + return; + } + super.keyTyped(c, i); + } + + @Override + public void onGuiClosed() { + super.onGuiClosed(); + Keyboard.enableRepeatEvents(false); } } diff --git a/src/main/java/com/hbm/inventory/recipes/AnnihilatorRecipes.java b/src/main/java/com/hbm/inventory/recipes/AnnihilatorRecipes.java index 8cc057e0b..3fb46d66b 100644 --- a/src/main/java/com/hbm/inventory/recipes/AnnihilatorRecipes.java +++ b/src/main/java/com/hbm/inventory/recipes/AnnihilatorRecipes.java @@ -21,6 +21,8 @@ import com.hbm.inventory.recipes.loader.SerializableRecipe; import com.hbm.items.ModItems; import com.hbm.items.machine.IItemFluidIdentifier; import com.hbm.items.machine.ItemBlueprints; +import com.hbm.items.machine.ItemCircuit.EnumCircuitType; +import com.hbm.items.weapon.sedna.factory.GunFactory.EnumAmmo; import com.hbm.util.ItemStackUtil; import com.hbm.util.Tuple.Pair; @@ -30,18 +32,44 @@ import net.minecraft.item.ItemStack; public class AnnihilatorRecipes extends SerializableRecipe { public static HashMap recipes = new HashMap(); + + /* + * MILESTONES + * STEEL -> DERRICK (ASSEM) + * SILICON -> CHIPS (PRECASS) + * PLASTIC -> CRACKER, COKER (ASSEM) + * RUBBER -> FRACKER (ASSEM) + * URANIUM -> GASCENT (ASSEM) + * FERRO -> RBMK (ASSEM) + * BISMUTH -> BIS CHIPS (PRECASS) + * HARDPLASTIC -> OIL 3.5 (ASSEM) + * TCALLOY -> FUSION, WATZ (ASSEM) + * IONS -> Q CHIPS (PRECASS) PA (ASSEM) + * CHLOROPHYTE -> MHDT, ICF (ASSEM) + * 50BMG -> TURRETS (ASSEM) + * ARTY -> ARTY (ASSEM) + * CONTROLLER -> NUKES (ASSEM) + */ @Override public void registerDefaults() { - recipes.put(SI.billet(), new AnnihilatorRecipe(new Pair(new BigInteger("256"), ItemBlueprints.make(GenericRecipes.POOL_PREFIX_528 + "chip")))); - recipes.put(BI.nugget(), new AnnihilatorRecipe(new Pair(new BigInteger("128"), ItemBlueprints.make(GenericRecipes.POOL_PREFIX_528 + "chip_bismoid")))); - recipes.put(ModItems.pellet_charged, new AnnihilatorRecipe(new Pair(new BigInteger("1025"), ItemBlueprints.make(GenericRecipes.POOL_PREFIX_528 + "chip_quantum")))); + recipes.put(STEEL.ingot(), new AnnihilatorRecipe(new Pair(new BigInteger("256"), ItemBlueprints.make(GenericRecipes.POOL_PREFIX_528 + "steel")))); + recipes.put(SI.billet(), new AnnihilatorRecipe(new Pair(new BigInteger("256"), ItemBlueprints.make(GenericRecipes.POOL_PREFIX_528 + "chip")))); + recipes.put(BI.nugget(), new AnnihilatorRecipe(new Pair(new BigInteger("128"), ItemBlueprints.make(GenericRecipes.POOL_PREFIX_528 + "chip_bismoid")))); + recipes.put(ModItems.pellet_charged, new AnnihilatorRecipe(new Pair(new BigInteger("1024"), ItemBlueprints.make(GenericRecipes.POOL_PREFIX_528 + "chip_quantum")))); - recipes.put(U.billet(), new AnnihilatorRecipe(new Pair(new BigInteger("256"), ItemBlueprints.make(GenericRecipes.POOL_PREFIX_528 + "gascent")))); - recipes.put(RUBBER.ingot(), new AnnihilatorRecipe(new Pair(new BigInteger("512"), ItemBlueprints.make(GenericRecipes.POOL_PREFIX_528 + "fracker")))); - recipes.put(FERRO.ingot(), new AnnihilatorRecipe(new Pair(new BigInteger("1024"), ItemBlueprints.make(GenericRecipes.POOL_PREFIX_528 + "ferrouranium")))); - recipes.put(ANY_HARDPLASTIC.ingot(), new AnnihilatorRecipe(new Pair(new BigInteger("1024"), ItemBlueprints.make(GenericRecipes.POOL_PREFIX_528 + "hardplastic")))); + recipes.put(U.billet(), new AnnihilatorRecipe(new Pair(new BigInteger("256"), ItemBlueprints.make(GenericRecipes.POOL_PREFIX_528 + "gascent")))); + recipes.put(ANY_PLASTIC.ingot(), new AnnihilatorRecipe(new Pair(new BigInteger("512"), ItemBlueprints.make(GenericRecipes.POOL_PREFIX_528 + "plastic")))); + recipes.put(RUBBER.ingot(), new AnnihilatorRecipe(new Pair(new BigInteger("512"), ItemBlueprints.make(GenericRecipes.POOL_PREFIX_528 + "rubber")))); + recipes.put(FERRO.ingot(), new AnnihilatorRecipe(new Pair(new BigInteger("1024"), ItemBlueprints.make(GenericRecipes.POOL_PREFIX_528 + "ferrouranium")))); + recipes.put(ANY_HARDPLASTIC.ingot(), new AnnihilatorRecipe(new Pair(new BigInteger("1024"), ItemBlueprints.make(GenericRecipes.POOL_PREFIX_528 + "hardplastic")))); + recipes.put(ANY_RESISTANTALLOY.ingot(), new AnnihilatorRecipe(new Pair(new BigInteger("1024"), ItemBlueprints.make(GenericRecipes.POOL_PREFIX_528 + "tcalloy")))); + recipes.put(ModItems.powder_chlorophyte, new AnnihilatorRecipe(new Pair(new BigInteger("1024"), ItemBlueprints.make(GenericRecipes.POOL_PREFIX_528 + "chlorophyte")))); + + recipes.put(new ComparableStack(ModItems.ammo_standard, 1, EnumAmmo.BMG50_FMJ), new AnnihilatorRecipe(new Pair(new BigInteger("256"), ItemBlueprints.make(GenericRecipes.POOL_PREFIX_528 + "bmg")))); + recipes.put(new ComparableStack(ModItems.ammo_arty, 1, 0), new AnnihilatorRecipe(new Pair(new BigInteger("128"), ItemBlueprints.make(GenericRecipes.POOL_PREFIX_528 + "arty")))); + recipes.put(new ComparableStack(ModItems.circuit, 1, EnumCircuitType.CONTROLLER), new AnnihilatorRecipe(new Pair(new BigInteger("128"), ItemBlueprints.make(GenericRecipes.POOL_PREFIX_528 + "controller")))); } @Override public String getFileName() { return "hbmAnnihilator.json"; } diff --git a/src/main/java/com/hbm/inventory/recipes/AssemblyMachineRecipes.java b/src/main/java/com/hbm/inventory/recipes/AssemblyMachineRecipes.java index f9c7b2112..047e10916 100644 --- a/src/main/java/com/hbm/inventory/recipes/AssemblyMachineRecipes.java +++ b/src/main/java/com/hbm/inventory/recipes/AssemblyMachineRecipes.java @@ -256,14 +256,16 @@ public class AssemblyMachineRecipes extends GenericRecipes { .inputItems(new ComparableStack(ModItems.rtg_unit, 3), new OreDictStack(STEEL.plate(), 4), new OreDictStack(MINGRADE.wireFine(), 16), new OreDictStack(ANY_PLASTIC.ingot(), 4))); this.register(new GenericRecipe("ass.derrick").setup(200, 100).outputItems(new ItemStack(ModBlocks.machine_well, 1)) .inputItems(new OreDictStack(STEEL.plate(), 8), new OreDictStack(CU.plateCast(), 2), new OreDictStack(STEEL.pipe(), 4), new ComparableStack(ModItems.motor, 1), new ComparableStack(ModItems.drill_titanium, 1)) - .inputItemsEx(new ComparableStack(ModItems.item_expensive, 2, EnumExpensiveType.STEEL_PLATING), new OreDictStack(STEEL.pipe(), 4), new ComparableStack(ModItems.motor, 3), new ComparableStack(ModItems.drill_titanium, 1))); + .inputItemsEx(new ComparableStack(ModItems.item_expensive, 2, EnumExpensiveType.STEEL_PLATING), new OreDictStack(STEEL.pipe(), 4), new ComparableStack(ModItems.motor, 3), new ComparableStack(ModItems.drill_titanium, 1)) + .setPools528(GenericRecipes.POOL_PREFIX_528 + "steel")); this.register(new GenericRecipe("ass.pumpjack").setup(400, 100).outputItems(new ItemStack(ModBlocks.machine_pumpjack, 1)) .inputItems(new OreDictStack(DURA.plate(), 8), new OreDictStack(STEEL.plateWelded(), 8), new OreDictStack(STEEL.pipe(), 12), new ComparableStack(ModItems.motor_desh), new ComparableStack(ModItems.drill_titanium, 1)) - .inputItemsEx(new ComparableStack(ModItems.item_expensive, 1, EnumExpensiveType.HEAVY_FRAME), new OreDictStack(STEEL.pipe(), 12), new ComparableStack(ModItems.motor_desh, 3), new ComparableStack(ModItems.drill_titanium, 1))); + .inputItemsEx(new ComparableStack(ModItems.item_expensive, 1, EnumExpensiveType.HEAVY_FRAME), new OreDictStack(STEEL.pipe(), 12), new ComparableStack(ModItems.motor_desh, 3), new ComparableStack(ModItems.drill_titanium, 1)) + .setPools528(GenericRecipes.POOL_PREFIX_528 + "steel")); this.register(new GenericRecipe("ass.fracker").setup(600, 100).outputItems(new ItemStack(ModBlocks.machine_fracking_tower, 1)) .inputItems(new OreDictStack(STEEL.shell(), 24), new OreDictStack(STEEL.pipe(), 12), new ComparableStack(ModBlocks.concrete_smooth, 64), new ComparableStack(ModItems.drill_titanium), new ComparableStack(ModItems.motor_desh, 2), new ComparableStack(ModItems.plate_desh, 24), new ComparableStack(ModItems.circuit, 16, EnumCircuitType.CAPACITOR)) .inputItemsEx(new ComparableStack(ModItems.item_expensive, 4, EnumExpensiveType.HEAVY_FRAME), new ComparableStack(ModItems.item_expensive, 2, EnumExpensiveType.FERRO_PLATING), new OreDictStack(STEEL.pipe(), 12), new ComparableStack(ModBlocks.concrete_smooth, 64), new ComparableStack(ModItems.drill_titanium), new ComparableStack(ModItems.motor_desh, 5), new ComparableStack(ModItems.item_expensive, 4, EnumExpensiveType.CIRCUIT)) - .setPools528(GenericRecipes.POOL_PREFIX_528 + "fracker")); + .setPools528(GenericRecipes.POOL_PREFIX_528 + "rubber")); this.register(new GenericRecipe("ass.flarestack").setup(100, 100).outputItems(new ItemStack(ModBlocks.machine_flare, 1)) .inputItems(new OreDictStack(STEEL.plate(), 12), new OreDictStack(CU.plate(), 4), new OreDictStack(STEEL.shell(), 4), new ComparableStack(ModItems.thermo_element, 3)) .inputItemsEx(new ComparableStack(ModItems.item_expensive, 8, EnumExpensiveType.STEEL_PLATING), new OreDictStack(CU.plate(), 4), new ComparableStack(ModItems.thermo_element, 3))); @@ -272,14 +274,15 @@ public class AssemblyMachineRecipes extends GenericRecipes { .inputItemsEx(new ComparableStack(ModItems.item_expensive, 4, EnumExpensiveType.STEEL_PLATING), new OreDictStack(STEEL.pipe(), 12), new ComparableStack(ModItems.plate_polymer, 8), new ComparableStack(ModItems.circuit, 5, EnumCircuitType.ANALOG))); this.register(new GenericRecipe("ass.crackingtower").setup(200, 100).outputItems(new ItemStack(ModBlocks.machine_catalytic_cracker, 1)) .inputItems(new ComparableStack(ModBlocks.steel_scaffold, 16), new OreDictStack(STEEL.shell(), 6), new OreDictStack(DESH.ingot(), 12), new OreDictStack(NB.ingot(), 4)) - .inputItemsEx(new ComparableStack(ModItems.item_expensive, 2, EnumExpensiveType.HEAVY_FRAME), new ComparableStack(ModItems.item_expensive, 8, EnumExpensiveType.STEEL_PLATING), new OreDictStack(ANY_PLASTIC.ingot(), 16), new OreDictStack(NB.ingot(), 4))); + .inputItemsEx(new ComparableStack(ModItems.item_expensive, 2, EnumExpensiveType.HEAVY_FRAME), new ComparableStack(ModItems.item_expensive, 8, EnumExpensiveType.STEEL_PLATING), new OreDictStack(ANY_PLASTIC.ingot(), 16), new OreDictStack(NB.ingot(), 4)) + .setPools528(GenericRecipes.POOL_PREFIX_528 + "rubber")); this.register(new GenericRecipe("ass.radiolysis").setup(200, 100).outputItems(new ItemStack(ModBlocks.machine_radiolysis, 1)) .inputItems(new OreDictStack(STEEL.shell(), 4), new OreDictStack(ANY_RESISTANTALLOY.ingot(), 4), new OreDictStack(PB.plate(), 12), new OreDictStack(CU.plateCast(), 4), new OreDictStack(RUBBER.ingot(), 8), new ComparableStack(ModItems.thermo_element, 8)) .inputItemsEx(new ComparableStack(ModItems.item_expensive, 2, EnumExpensiveType.HEAVY_FRAME), new ComparableStack(ModItems.item_expensive, 4, EnumExpensiveType.LEAD_PLATING), new OreDictStack(CU.plateCast(), 4), new OreDictStack(RUBBER.ingot(), 16), new ComparableStack(ModItems.thermo_element, 8))); this.register(new GenericRecipe("ass.coker").setup(200, 100).outputItems(new ItemStack(ModBlocks.machine_coker, 1)) .inputItems(new OreDictStack(STEEL.plateWelded(), 8), new OreDictStack(STEEL.shell(), 4), new OreDictStack(CU.plate(), 8), new OreDictStack(RUBBER.ingot(), 4), new OreDictStack(NB.ingot(), 4)) .inputItemsEx(new ComparableStack(ModItems.item_expensive, 4, EnumExpensiveType.HEAVY_FRAME), new ComparableStack(ModItems.item_expensive, 8, EnumExpensiveType.STEEL_PLATING), new OreDictStack(RUBBER.ingot(), 16), new OreDictStack(NB.ingot(), 4)) - .setPools528(GenericRecipes.POOL_PREFIX_528 + "fracker")); + .setPools528(GenericRecipes.POOL_PREFIX_528 + "rubber")); this.register(new GenericRecipe("ass.vaccumrefinery").setup(200, 100).outputItems(new ItemStack(ModBlocks.machine_vacuum_distill, 1)) .inputItems(new OreDictStack(STEEL.plateCast(), 16), new OreDictStack(CU.plate(), 16), new OreDictStack(ANY_RESISTANTALLOY.ingot(), 4), new ComparableStack(ModItems.sphere_steel, 1), new OreDictStack(STEEL.pipe(), 12), new ComparableStack(ModItems.motor_desh, 3), new ComparableStack(ModItems.circuit, 4, EnumCircuitType.CHIP_BISMOID)) .inputItemsEx(new ComparableStack(ModItems.item_expensive, 2, EnumExpensiveType.BRONZE_TUBES), new ComparableStack(ModItems.item_expensive, 2, EnumExpensiveType.FERRO_PLATING), new OreDictStack(DURA.pipe(), 16), new ComparableStack(ModItems.motor_desh, 3), new ComparableStack(ModItems.circuit, 16, EnumCircuitType.CHIP_BISMOID), new ComparableStack(ModItems.item_expensive, 1, EnumExpensiveType.COMPUTER))); @@ -456,29 +459,36 @@ public class AssemblyMachineRecipes extends GenericRecipes { .inputItemsEx(new ComparableStack(ModItems.item_expensive, 8, EnumExpensiveType.FERRO_PLATING), new OreDictStack(ND.wireDense(), 32), new OreDictStack(AL.plateWelded(), 16), new OreDictStack(RUBBER.ingot(), 32), new ComparableStack(ModItems.item_expensive, 8, EnumExpensiveType.CIRCUIT))); this.register(new GenericRecipe("ass.beamline").setup(200, 100).outputItems(new ItemStack(ModBlocks.pa_beamline, 1)) .inputItems(new OreDictStack(STEEL.plateCast(), 8), new OreDictStack(CU.plate(), 16), new OreDictStack(GOLD.wireDense(), 4)) - .inputItemsEx(new ComparableStack(ModItems.item_expensive, 4, EnumExpensiveType.STEEL_PLATING), new OreDictStack(CU.plate(), 16), new OreDictStack(GOLD.wireDense(), 4))); + .inputItemsEx(new ComparableStack(ModItems.item_expensive, 4, EnumExpensiveType.STEEL_PLATING), new OreDictStack(CU.plate(), 16), new OreDictStack(GOLD.wireDense(), 4)) + .setPools528(GenericRecipes.POOL_PREFIX_528 + "chip_quantum")); this.register(new GenericRecipe("ass.rfc").setup(400, 100).outputItems(new ItemStack(ModBlocks.pa_rfc, 1)) .inputItems(new ComparableStack(ModBlocks.pa_beamline, 3), new OreDictStack(STEEL.plateCast(), 16), new OreDictStack(CU.plate(), 64), new OreDictStack(ANY_HARDPLASTIC.ingot(), 16), new ComparableStack(ModItems.magnetron, 16)) - .inputItemsEx(new ComparableStack(ModBlocks.pa_beamline, 3), new ComparableStack(ModItems.item_expensive, 4, EnumExpensiveType.LEAD_PLATING), new OreDictStack(CU.plate(), 64), new OreDictStack(ANY_HARDPLASTIC.ingot(), 16), new ComparableStack(ModItems.magnetron, 16))); + .inputItemsEx(new ComparableStack(ModBlocks.pa_beamline, 3), new ComparableStack(ModItems.item_expensive, 4, EnumExpensiveType.LEAD_PLATING), new OreDictStack(CU.plate(), 64), new OreDictStack(ANY_HARDPLASTIC.ingot(), 16), new ComparableStack(ModItems.magnetron, 16)) + .setPools528(GenericRecipes.POOL_PREFIX_528 + "chip_quantum")); this.register(new GenericRecipe("ass.quadrupole").setup(400, 100).outputItems(new ItemStack(ModBlocks.pa_quadrupole, 1)) .inputItems(new ComparableStack(ModBlocks.pa_beamline, 1), new OreDictStack(STEEL.plateCast(), 16), new OreDictStack(ANY_HARDPLASTIC.ingot(), 16), new ComparableStack(ModItems.circuit, 1, EnumCircuitType.BISMOID)) - .inputItemsEx(new ComparableStack(ModBlocks.pa_beamline, 1), new ComparableStack(ModItems.item_expensive, 4, EnumExpensiveType.LEAD_PLATING), new OreDictStack(ANY_HARDPLASTIC.ingot(), 16), new ComparableStack(ModItems.circuit, 4, EnumCircuitType.BISMOID), new ComparableStack(ModItems.item_expensive, 1, EnumExpensiveType.COMPUTER))); + .inputItemsEx(new ComparableStack(ModBlocks.pa_beamline, 1), new ComparableStack(ModItems.item_expensive, 4, EnumExpensiveType.LEAD_PLATING), new OreDictStack(ANY_HARDPLASTIC.ingot(), 16), new ComparableStack(ModItems.circuit, 4, EnumCircuitType.BISMOID), new ComparableStack(ModItems.item_expensive, 1, EnumExpensiveType.COMPUTER)) + .setPools528(GenericRecipes.POOL_PREFIX_528 + "chip_quantum")); this.register(new GenericRecipe("ass.dipole").setup(400, 100).outputItems(new ItemStack(ModBlocks.pa_dipole, 1)) .inputItems(new ComparableStack(ModBlocks.pa_beamline, 2), new OreDictStack(STEEL.plateCast(), 16), new OreDictStack(ANY_HARDPLASTIC.ingot(), 32), new ComparableStack(ModItems.circuit, 4, EnumCircuitType.BISMOID)) - .inputItemsEx(new ComparableStack(ModBlocks.pa_beamline, 2), new ComparableStack(ModItems.item_expensive, 4, EnumExpensiveType.LEAD_PLATING), new OreDictStack(ANY_HARDPLASTIC.ingot(), 32), new ComparableStack(ModItems.circuit, 16, EnumCircuitType.BISMOID), new ComparableStack(ModItems.item_expensive, 1, EnumExpensiveType.COMPUTER))); + .inputItemsEx(new ComparableStack(ModBlocks.pa_beamline, 2), new ComparableStack(ModItems.item_expensive, 4, EnumExpensiveType.LEAD_PLATING), new OreDictStack(ANY_HARDPLASTIC.ingot(), 32), new ComparableStack(ModItems.circuit, 16, EnumCircuitType.BISMOID), new ComparableStack(ModItems.item_expensive, 1, EnumExpensiveType.COMPUTER)) + .setPools528(GenericRecipes.POOL_PREFIX_528 + "chip_quantum")); this.register(new GenericRecipe("ass.source").setup(400, 100).outputItems(new ItemStack(ModBlocks.pa_source, 1)) .inputItems(new ComparableStack(ModBlocks.pa_beamline, 3), new OreDictStack(STEEL.plateCast(), 16), new OreDictStack(ANY_HARDPLASTIC.ingot(), 16), new ComparableStack(ModItems.magnetron, 16), new ComparableStack(ModItems.circuit, 1, EnumCircuitType.QUANTUM)) - .inputItemsEx(new ComparableStack(ModBlocks.pa_beamline, 3), new ComparableStack(ModItems.item_expensive, 16, EnumExpensiveType.LEAD_PLATING), new OreDictStack(ANY_HARDPLASTIC.ingot(), 16), new ComparableStack(ModItems.magnetron, 16), new ComparableStack(ModItems.circuit, 4, EnumCircuitType.QUANTUM), new ComparableStack(ModItems.item_expensive, 4, EnumExpensiveType.COMPUTER))); + .inputItemsEx(new ComparableStack(ModBlocks.pa_beamline, 3), new ComparableStack(ModItems.item_expensive, 16, EnumExpensiveType.LEAD_PLATING), new OreDictStack(ANY_HARDPLASTIC.ingot(), 16), new ComparableStack(ModItems.magnetron, 16), new ComparableStack(ModItems.circuit, 4, EnumCircuitType.QUANTUM), new ComparableStack(ModItems.item_expensive, 4, EnumExpensiveType.COMPUTER)) + .setPools528(GenericRecipes.POOL_PREFIX_528 + "chip_quantum")); this.register(new GenericRecipe("ass.detector").setup(400, 100).outputItems(new ItemStack(ModBlocks.pa_detector, 1)) .inputItems(new ComparableStack(ModBlocks.pa_beamline, 3), new OreDictStack(STEEL.plateCast(), 24), new OreDictStack(GOLD.wireDense(), 16), new OreDictStack(ANY_HARDPLASTIC.ingot(), 16), new ComparableStack(ModItems.circuit, 4, EnumCircuitType.QUANTUM)) - .inputItemsEx(new ComparableStack(ModBlocks.pa_beamline, 3), new ComparableStack(ModItems.item_expensive, 32, EnumExpensiveType.LEAD_PLATING), new OreDictStack(GOLD.wireDense(), 64), new OreDictStack(ANY_HARDPLASTIC.ingot(), 16), new ComparableStack(ModItems.circuit, 4, EnumCircuitType.QUANTUM), new ComparableStack(ModItems.item_expensive, 8, EnumExpensiveType.COMPUTER))); + .inputItemsEx(new ComparableStack(ModBlocks.pa_beamline, 3), new ComparableStack(ModItems.item_expensive, 32, EnumExpensiveType.LEAD_PLATING), new OreDictStack(GOLD.wireDense(), 64), new OreDictStack(ANY_HARDPLASTIC.ingot(), 16), new ComparableStack(ModItems.circuit, 4, EnumCircuitType.QUANTUM), new ComparableStack(ModItems.item_expensive, 8, EnumExpensiveType.COMPUTER)) + .setPools528(GenericRecipes.POOL_PREFIX_528 + "chip_quantum")); this.register(new GenericRecipe("ass.pagold").setup(400, 100).outputItems(new ItemStack(ModItems.pa_coil, 1, EnumCoilType.GOLD.ordinal())).inputItems(new OreDictStack(GOLD.wireDense(), 64), new OreDictStack(GOLD.wireDense(), 64))); this.register(new GenericRecipe("ass.panbti").setup(400, 100).outputItems(new ItemStack(ModItems.pa_coil, 1, EnumCoilType.NIOBIUM.ordinal())).inputItems(new OreDictStack(NB.wireDense(), 64), new OreDictStack(TI.wireDense(), 64))); this.register(new GenericRecipe("ass.pabscco").setup(400, 100).outputItems(new ItemStack(ModItems.pa_coil, 1, EnumCoilType.BSCCO.ordinal())).inputItems(new OreDictStack(BSCCO.wireDense(), 64), new OreDictStack(ANY_PLASTIC.ingot(), 64))); this.register(new GenericRecipe("ass.pachlorophyte").setup(400, 100).outputItems(new ItemStack(ModItems.pa_coil, 1, EnumCoilType.CHLOROPHYTE.ordinal())).inputItems(new OreDictStack(CU.wireDense(), 64), new OreDictStack(CU.wireDense(), 64), new ComparableStack(ModItems.powder_chlorophyte, 16))); this.register(new GenericRecipe("ass.exposurechamber").setup(200, 100).outputItems(new ItemStack(ModBlocks.machine_exposure_chamber, 1)) .inputItems(new OreDictStack(AL.plateCast(), 12), new OreDictStack(ANY_RESISTANTALLOY.ingot(), 4), new OreDictStack(ANY_HARDPLASTIC.ingot(), 12), new OreDictStack(ALLOY.wireDense(), 32), new ComparableStack(ModItems.motor_desh, 2), new ComparableStack(ModItems.circuit, 4, EnumCircuitType.BISMOID), new ComparableStack(ModBlocks.capacitor_tantalium, 1), new ComparableStack(ModBlocks.glass_quartz, 16)) - .inputItemsEx(new ComparableStack(ModItems.item_expensive, 8, EnumExpensiveType.LEAD_PLATING), new OreDictStack(ANY_HARDPLASTIC.ingot(), 24), new OreDictStack(ALLOY.wireDense(), 32), new ComparableStack(ModItems.circuit, 4, EnumCircuitType.BISMOID), new ComparableStack(ModItems.item_expensive, 2, EnumExpensiveType.COMPUTER))); + .inputItemsEx(new ComparableStack(ModItems.item_expensive, 8, EnumExpensiveType.LEAD_PLATING), new OreDictStack(ANY_HARDPLASTIC.ingot(), 24), new OreDictStack(ALLOY.wireDense(), 32), new ComparableStack(ModItems.circuit, 4, EnumCircuitType.BISMOID), new ComparableStack(ModItems.item_expensive, 2, EnumExpensiveType.COMPUTER)) + .setPools528(GenericRecipes.POOL_PREFIX_528 + "chip_quantum")); // reactors this.register(new GenericRecipe("ass.breedingreactor").setup(200, 100).outputItems(new ItemStack(ModBlocks.machine_reactor_breeding, 1)) @@ -496,7 +506,8 @@ public class AssemblyMachineRecipes extends GenericRecipes { .setPools528(GenericRecipes.POOL_PREFIX_528 + "ferrouranium")); this.register(new GenericRecipe("ass.rbmkautoloader").setup(100, 100).outputItems(new ItemStack(ModBlocks.rbmk_autoloader, 1)) .inputItems(new OreDictStack(STEEL.plateWelded(), 4), new OreDictStack(PB.plateCast(), 4), new OreDictStack(B.ingot(), 4), new ComparableStack(ModItems.motor, 3)) - .inputItemsEx(new ComparableStack(ModItems.item_expensive, 4, EnumExpensiveType.FERRO_PLATING), new ComparableStack(ModItems.motor_desh, 3))); + .inputItemsEx(new ComparableStack(ModItems.item_expensive, 4, EnumExpensiveType.FERRO_PLATING), new ComparableStack(ModItems.motor_desh, 3)) + .setPools528(GenericRecipes.POOL_PREFIX_528 + "ferrouranium")); // PWR this.register(new GenericRecipe("ass.pwrfuel").setup(200, 500).outputItems(new ItemStack(ModBlocks.pwr_fuel, 4)) @@ -537,16 +548,20 @@ public class AssemblyMachineRecipes extends GenericRecipes { this.register(new GenericRecipe("ass.fusioncore").setup(600, 100).outputItems(new ItemStack(ModBlocks.struct_torus_core, 1)) .inputItems(new OreDictStack(ANY_RESISTANTALLOY.plateWelded(), 8), new OreDictStack(ANY_HARDPLASTIC.ingot(), 32), new ComparableStack(ModItems.circuit, 8, EnumCircuitType.BISMOID)) - .inputItemsEx(new ComparableStack(ModItems.item_expensive, 8, EnumExpensiveType.FERRO_PLATING), new ComparableStack(ModItems.item_expensive, 8, EnumExpensiveType.PLASTIC), new ComparableStack(ModItems.circuit, 16, EnumCircuitType.BISMOID))); + .inputItemsEx(new ComparableStack(ModItems.item_expensive, 8, EnumExpensiveType.FERRO_PLATING), new ComparableStack(ModItems.item_expensive, 8, EnumExpensiveType.PLASTIC), new ComparableStack(ModItems.circuit, 16, EnumCircuitType.BISMOID)) + .setPools528(GenericRecipes.POOL_PREFIX_528 + "tcalloy")); this.register(new GenericRecipe("ass.fusionbscco").setup(100, 100).outputItems(new ItemStack(ModBlocks.fusion_component, 2, 0)) .inputItems(new OreDictStack(BSCCO.wireDense(), 1), new OreDictStack(CU.pipe(), 1), new OreDictStack(ANY_RESISTANTALLOY.ingot(), 1), new OreDictStack(ANY_PLASTIC.ingot(), 4)) - .inputItemsEx(new OreDictStack(BSCCO.wireDense(), 4), new ComparableStack(ModItems.item_expensive, 1, EnumExpensiveType.FERRO_PLATING), new ComparableStack(ModItems.item_expensive, 1, EnumExpensiveType.PLASTIC))); + .inputItemsEx(new OreDictStack(BSCCO.wireDense(), 4), new ComparableStack(ModItems.item_expensive, 1, EnumExpensiveType.FERRO_PLATING), new ComparableStack(ModItems.item_expensive, 1, EnumExpensiveType.PLASTIC)) + .setPools528(GenericRecipes.POOL_PREFIX_528 + "tcalloy")); this.register(new GenericRecipe("ass.fusionblanket").setup(100, 100).outputItems(new ItemStack(ModBlocks.fusion_component, 4, 2)) .inputItems(new OreDictStack(W.plateWelded(), 1), new OreDictStack(STEEL.plateWelded(), 2), new OreDictStack(BE.ingot(), 4)) - .inputItemsEx(new OreDictStack(W.plateWelded(), 4), new ComparableStack(ModItems.item_expensive, 1, EnumExpensiveType.HEAVY_FRAME), new OreDictStack(BE.ingot(), 4))); + .inputItemsEx(new OreDictStack(W.plateWelded(), 4), new ComparableStack(ModItems.item_expensive, 1, EnumExpensiveType.HEAVY_FRAME), new OreDictStack(BE.ingot(), 4)) + .setPools528(GenericRecipes.POOL_PREFIX_528 + "tcalloy")); this.register(new GenericRecipe("ass.fusionpipes").setup(100, 100).outputItems(new ItemStack(ModBlocks.fusion_component, 4, 3)) .inputItems(new OreDictStack(ANY_HARDPLASTIC.ingot(), 4), new OreDictStack(CU.pipe(), 2), new ComparableStack(ModItems.motor, 2), new ComparableStack(ModItems.circuit, 1, EnumCircuitType.BASIC)) - .inputItemsEx(new ComparableStack(ModItems.item_expensive, 1, EnumExpensiveType.PLASTIC), new OreDictStack(CU.pipe(), 4), new ComparableStack(ModItems.item_expensive, 1, EnumExpensiveType.CIRCUIT))); + .inputItemsEx(new ComparableStack(ModItems.item_expensive, 1, EnumExpensiveType.PLASTIC), new OreDictStack(CU.pipe(), 4), new ComparableStack(ModItems.item_expensive, 1, EnumExpensiveType.CIRCUIT)) + .setPools528(GenericRecipes.POOL_PREFIX_528 + "tcalloy")); this.register(new GenericRecipe("ass.fusionklystron").setup(300, 100).outputItems(new ItemStack(ModBlocks.fusion_klystron, 1)) .inputItems(new OreDictStack(W.plateWelded(), 4), new OreDictStack(ANY_RESISTANTALLOY.plateCast(), 16), new OreDictStack(CU.plate(), 32), new OreDictStack(ANY_HARDPLASTIC.ingot(), 16), new OreDictStack(BSCCO.wireDense(), 8), new ComparableStack(ModItems.circuit, 2, EnumCircuitType.BISMOID)) @@ -562,7 +577,8 @@ public class AssemblyMachineRecipes extends GenericRecipes { .inputItemsEx(new ComparableStack(ModItems.item_expensive, 8, EnumExpensiveType.FERRO_PLATING), new ComparableStack(ModItems.item_expensive, 8, EnumExpensiveType.HEAVY_FRAME), new ComparableStack(ModItems.item_expensive, 16, EnumExpensiveType.PLASTIC))); this.register(new GenericRecipe("ass.fusionmhdt").setup(1_200, 100).outputItems(new ItemStack(ModBlocks.fusion_mhdt, 1)) .inputItems(new OreDictStack(ANY_RESISTANTALLOY.plateWelded(), 16), new OreDictStack(CU.plateWelded(), 64), new OreDictStack(ANY_BISMOIDBRONZE.plateCast(), 16), new OreDictStack(SBD.wireDense(), 64), new ComparableStack(ModItems.circuit, 4, EnumCircuitType.QUANTUM)) - .inputItemsEx(new ComparableStack(ModItems.item_expensive, 16, EnumExpensiveType.FERRO_PLATING), new ComparableStack(ModItems.item_expensive, 16, EnumExpensiveType.PLASTIC), new OreDictStack(ANY_BISMOIDBRONZE.plateCast(), 32), new ComparableStack(ModItems.circuit, 8, EnumCircuitType.QUANTUM))); + .inputItemsEx(new ComparableStack(ModItems.item_expensive, 16, EnumExpensiveType.FERRO_PLATING), new ComparableStack(ModItems.item_expensive, 16, EnumExpensiveType.PLASTIC), new OreDictStack(ANY_BISMOIDBRONZE.plateCast(), 32), new ComparableStack(ModItems.circuit, 8, EnumCircuitType.QUANTUM)) + .setPools(GenericRecipes.POOL_PREFIX_528 + "chlorophyte")); this.register(new GenericRecipe("ass.fusioncoupler").setup(300, 100).outputItems(new ItemStack(ModBlocks.fusion_coupler, 1)) .inputItems(new OreDictStack(ANY_RESISTANTALLOY.plateWelded(), 4), new OreDictStack(CU.plate(), 32), new OreDictStack(BSCCO.wireDense(), 16), new ComparableStack(ModItems.circuit, 4, EnumCircuitType.BISMOID)) .inputItemsEx(new ComparableStack(ModItems.item_expensive, 4, EnumExpensiveType.FERRO_PLATING), new OreDictStack(BSCCO.wireDense(), 16), new ComparableStack(ModItems.item_expensive, 2, EnumExpensiveType.COMPUTER))); @@ -570,50 +586,65 @@ public class AssemblyMachineRecipes extends GenericRecipes { // watz this.register(new GenericRecipe("ass.watzrod").setup(200, 100).outputItems(new ItemStack(ModBlocks.watz_element, 3)) .inputItems(new OreDictStack(STEEL.plateCast(), 2), new OreDictStack(ZR.ingot(), 2), new OreDictStack(BIGMT.ingot(), 2), new OreDictStack(ANY_HARDPLASTIC.ingot(), 4)) - .inputItemsEx(new ComparableStack(ModItems.item_expensive, 3, EnumExpensiveType.FERRO_PLATING), new OreDictStack(BIGMT.ingot(), 6), new OreDictStack(ANY_HARDPLASTIC.ingot(), 4))); + .inputItemsEx(new ComparableStack(ModItems.item_expensive, 3, EnumExpensiveType.FERRO_PLATING), new OreDictStack(BIGMT.ingot(), 6), new OreDictStack(ANY_HARDPLASTIC.ingot(), 4)) + .setPools528(GenericRecipes.POOL_PREFIX_528 + "tcalloy")); this.register(new GenericRecipe("ass.watzcooler").setup(200, 100).outputItems(new ItemStack(ModBlocks.watz_cooler, 3)) .inputItems(new OreDictStack(STEEL.plateCast(), 2), new OreDictStack(CU.plateCast(), 4), new OreDictStack(RUBBER.ingot(), 2)) - .inputItemsEx(new ComparableStack(ModItems.item_expensive, 3, EnumExpensiveType.FERRO_PLATING), new OreDictStack(RUBBER.ingot(), 8))); + .inputItemsEx(new ComparableStack(ModItems.item_expensive, 3, EnumExpensiveType.FERRO_PLATING), new OreDictStack(RUBBER.ingot(), 8)) + .setPools528(GenericRecipes.POOL_PREFIX_528 + "tcalloy")); this.register(new GenericRecipe("ass.watzcasing").setup(100, 100).outputItems(new ItemStack(ModBlocks.watz_end, 3)) .inputItems(new OreDictStack(ANY_RESISTANTALLOY.plateWelded()), new OreDictStack(B.ingot(), 3), new OreDictStack(STEEL.plateWelded(), 2)) - .inputItemsEx(new ComparableStack(ModItems.item_expensive, 6, EnumExpensiveType.LEAD_PLATING), new OreDictStack(ANY_RESISTANTALLOY.plateWelded()))); + .inputItemsEx(new ComparableStack(ModItems.item_expensive, 6, EnumExpensiveType.LEAD_PLATING), new OreDictStack(ANY_RESISTANTALLOY.plateWelded())) + .setPools528(GenericRecipes.POOL_PREFIX_528 + "tcalloy")); // ICF this.register(new GenericRecipe("ass.icfcell").setup(200, 100).outputItems(new ItemStack(ModBlocks.icf_laser_component, 1, EnumICFPart.CELL.ordinal())) .inputItems(new ComparableStack(ModItems.ingot_cft, 2), new OreDictStack(ANY_BISMOIDBRONZE.plateCast(), 4), new ComparableStack(ModBlocks.glass_quartz, 16)) - .inputItemsEx(new ComparableStack(ModItems.item_expensive, 2, EnumExpensiveType.BRONZE_TUBES), new ComparableStack(ModItems.ingot_cft, 8), new ComparableStack(ModBlocks.glass_quartz, 16))); + .inputItemsEx(new ComparableStack(ModItems.item_expensive, 2, EnumExpensiveType.BRONZE_TUBES), new ComparableStack(ModItems.ingot_cft, 8), new ComparableStack(ModBlocks.glass_quartz, 16)) + .setPools(GenericRecipes.POOL_PREFIX_528 + "chlorophyte")); this.register(new GenericRecipe("ass.icfemitter").setup(200, 100).outputItems(new ItemStack(ModBlocks.icf_laser_component, 1, EnumICFPart.EMITTER.ordinal())) .inputItems(new OreDictStack(W.plateWelded(), 4), new OreDictStack(MAGTUNG.wireDense(), 16)) .inputItemsEx(new OreDictStack(W.plateWelded(), 8), new OreDictStack(MAGTUNG.wireDense(), 16)) - .inputFluids(new FluidStack(Fluids.XENON, 16_000))); + .inputFluids(new FluidStack(Fluids.XENON, 16_000)) + .setPools(GenericRecipes.POOL_PREFIX_528 + "chlorophyte")); this.register(new GenericRecipe("ass.icfcapacitor").setup(200, 100).outputItems(new ItemStack(ModBlocks.icf_laser_component, 1, EnumICFPart.CAPACITOR.ordinal())) .inputItems(new OreDictStack(ANY_RESISTANTALLOY.plateWelded(), 1), new OreDictStack(ND.wireDense(), 16), new OreDictStack(SBD.wireDense(), 2)) - .inputItemsEx(new ComparableStack(ModItems.item_expensive, 3, EnumExpensiveType.FERRO_PLATING), new OreDictStack(ND.wireDense(), 16), new OreDictStack(SBD.wireDense(), 2))); + .inputItemsEx(new ComparableStack(ModItems.item_expensive, 3, EnumExpensiveType.FERRO_PLATING), new OreDictStack(ND.wireDense(), 16), new OreDictStack(SBD.wireDense(), 2)) + .setPools(GenericRecipes.POOL_PREFIX_528 + "chlorophyte")); this.register(new GenericRecipe("ass.icfturbo").setup(200, 100).outputItems(new ItemStack(ModBlocks.icf_laser_component, 1, EnumICFPart.TURBO.ordinal())) .inputItems(new OreDictStack(ANY_RESISTANTALLOY.plateWelded(), 2), new OreDictStack(DNT.wireDense(), 4), new OreDictStack(SBD.wireDense(), 4)) - .inputItemsEx(new OreDictStack(ANY_RESISTANTALLOY.plateWelded(), 8), new OreDictStack(DNT.wireDense(), 8), new OreDictStack(SBD.wireDense(), 4))); + .inputItemsEx(new OreDictStack(ANY_RESISTANTALLOY.plateWelded(), 8), new OreDictStack(DNT.wireDense(), 8), new OreDictStack(SBD.wireDense(), 4)) + .setPools(GenericRecipes.POOL_PREFIX_528 + "chlorophyte")); this.register(new GenericRecipe("ass.icfcasing").setup(200, 100).outputItems(new ItemStack(ModBlocks.icf_laser_component, 1, EnumICFPart.CASING.ordinal())) .inputItems(new OreDictStack(ANY_BISMOIDBRONZE.plateCast(), 4), new OreDictStack(BIGMT.plateCast(), 4), new OreDictStack(ANY_HARDPLASTIC.ingot(), 16)) - .inputItemsEx(new ComparableStack(ModItems.item_expensive, 4, EnumExpensiveType.BRONZE_TUBES), new OreDictStack(BIGMT.plateCast(), 4), new OreDictStack(ANY_HARDPLASTIC.ingot(), 16))); + .inputItemsEx(new ComparableStack(ModItems.item_expensive, 4, EnumExpensiveType.BRONZE_TUBES), new OreDictStack(BIGMT.plateCast(), 4), new OreDictStack(ANY_HARDPLASTIC.ingot(), 16)) + .setPools(GenericRecipes.POOL_PREFIX_528 + "chlorophyte")); this.register(new GenericRecipe("ass.icfport").setup(200, 100).outputItems(new ItemStack(ModBlocks.icf_laser_component, 1, EnumICFPart.PORT.ordinal())) .inputItems(new OreDictStack(ANY_BISMOIDBRONZE.plateCast(), 4), new OreDictStack(ANY_HARDPLASTIC.ingot(), 16), new OreDictStack(ND.wireDense(), 16)) - .inputItemsEx(new ComparableStack(ModItems.item_expensive, 4, EnumExpensiveType.BRONZE_TUBES), new OreDictStack(ANY_HARDPLASTIC.ingot(), 16), new OreDictStack(ND.wireDense(), 16))); + .inputItemsEx(new ComparableStack(ModItems.item_expensive, 4, EnumExpensiveType.BRONZE_TUBES), new OreDictStack(ANY_HARDPLASTIC.ingot(), 16), new OreDictStack(ND.wireDense(), 16)) + .setPools(GenericRecipes.POOL_PREFIX_528 + "chlorophyte")); this.register(new GenericRecipe("ass.icfcontroller").setup(200, 100).outputItems(new ItemStack(ModBlocks.icf_controller, 1)) .inputItems(new ComparableStack(ModItems.ingot_cft, 16), new OreDictStack(ANY_BISMOIDBRONZE.plateCast(), 4), new OreDictStack(ANY_HARDPLASTIC.ingot(), 16), new ComparableStack(ModItems.circuit, 16, EnumCircuitType.BISMOID)) - .inputItemsEx(new ComparableStack(ModItems.item_expensive, 4, EnumExpensiveType.BRONZE_TUBES), new ComparableStack(ModItems.ingot_cft, 16), new OreDictStack(ANY_HARDPLASTIC.ingot(), 16), new ComparableStack(ModItems.circuit, 32, EnumCircuitType.BISMOID), new ComparableStack(ModItems.item_expensive, 4, EnumExpensiveType.COMPUTER))); + .inputItemsEx(new ComparableStack(ModItems.item_expensive, 4, EnumExpensiveType.BRONZE_TUBES), new ComparableStack(ModItems.ingot_cft, 16), new OreDictStack(ANY_HARDPLASTIC.ingot(), 16), new ComparableStack(ModItems.circuit, 32, EnumCircuitType.BISMOID), new ComparableStack(ModItems.item_expensive, 4, EnumExpensiveType.COMPUTER)) + .setPools(GenericRecipes.POOL_PREFIX_528 + "chlorophyte")); this.register(new GenericRecipe("ass.icfscaffold").setup(200, 100).outputItems(new ItemStack(ModBlocks.icf_component, 1, 0)) .inputItems(new OreDictStack(STEEL.plateWelded(), 4), new OreDictStack(TI.plateWelded(), 2)) - .inputItemsEx(new ComparableStack(ModItems.item_expensive, 8, EnumExpensiveType.STEEL_PLATING))); + .inputItemsEx(new ComparableStack(ModItems.item_expensive, 8, EnumExpensiveType.STEEL_PLATING)) + .setPools(GenericRecipes.POOL_PREFIX_528 + "chlorophyte")); this.register(new GenericRecipe("ass.icfvessel").setup(200, 100).outputItems(new ItemStack(ModBlocks.icf_component, 1, 1)) - .inputItems(new ComparableStack(ModItems.ingot_cft, 1), new OreDictStack(CMB.plateCast(), 1), new OreDictStack(W.plateWelded(), 2))); + .inputItems(new ComparableStack(ModItems.ingot_cft, 1), new OreDictStack(CMB.plateCast(), 1), new OreDictStack(W.plateWelded(), 2)) + .setPools(GenericRecipes.POOL_PREFIX_528 + "chlorophyte")); this.register(new GenericRecipe("ass.icfstructural").setup(200, 100).outputItems(new ItemStack(ModBlocks.icf_component, 1, 3)) .inputItems(new OreDictStack(STEEL.plateWelded(), 2), new OreDictStack(CU.plateWelded(), 2), new OreDictStack(ANY_BISMOIDBRONZE.plateCast(), 1)) - .inputItemsEx(new ComparableStack(ModItems.item_expensive, 1, EnumExpensiveType.BRONZE_TUBES), new OreDictStack(STEEL.plateWelded(), 8))); + .inputItemsEx(new ComparableStack(ModItems.item_expensive, 1, EnumExpensiveType.BRONZE_TUBES), new OreDictStack(STEEL.plateWelded(), 8)) + .setPools(GenericRecipes.POOL_PREFIX_528 + "chlorophyte")); this.register(new GenericRecipe("ass.icfcore").setup(1_200, 100).outputItems(new ItemStack(ModBlocks.struct_icf_core, 1)) .inputItems(new OreDictStack(CMB.plateWelded(), 16), new OreDictStack(ANY_RESISTANTALLOY.plateWelded(), 16), new OreDictStack(ANY_BISMOIDBRONZE.plateCast(), 16), new OreDictStack(SBD.wireDense(), 32), new ComparableStack(ModItems.circuit, 32, EnumCircuitType.BISMOID), new ComparableStack(ModItems.circuit, 16, EnumCircuitType.QUANTUM)) - .inputItemsEx(new ComparableStack(ModItems.item_expensive, 16, EnumExpensiveType.BRONZE_TUBES), new OreDictStack(CMB.plateWelded(), 16), new OreDictStack(SBD.wireDense(), 32), new ComparableStack(ModItems.circuit, 32, EnumCircuitType.QUANTUM), new ComparableStack(ModItems.item_expensive, 16, EnumExpensiveType.COMPUTER))); + .inputItemsEx(new ComparableStack(ModItems.item_expensive, 16, EnumExpensiveType.BRONZE_TUBES), new OreDictStack(CMB.plateWelded(), 16), new OreDictStack(SBD.wireDense(), 32), new ComparableStack(ModItems.circuit, 32, EnumCircuitType.QUANTUM), new ComparableStack(ModItems.item_expensive, 16, EnumExpensiveType.COMPUTER)) + .setPools(GenericRecipes.POOL_PREFIX_528 + "chlorophyte")); this.register(new GenericRecipe("ass.icfpress").setup(200, 100).outputItems(new ItemStack(ModBlocks.machine_icf_press, 1)) - .inputItems(new OreDictStack(GOLD.plateCast(), 8), new ComparableStack(ModItems.motor, 4), new ComparableStack(ModItems.circuit, 1, EnumCircuitType.BISMOID))); + .inputItems(new OreDictStack(GOLD.plateCast(), 8), new ComparableStack(ModItems.motor, 4), new ComparableStack(ModItems.circuit, 1, EnumCircuitType.BISMOID)) + .setPools(GenericRecipes.POOL_PREFIX_528 + "chlorophyte")); // upgrades if(no528) { @@ -645,27 +676,38 @@ public class AssemblyMachineRecipes extends GenericRecipes { this.register(new GenericRecipe("ass.minenaval").setup(300, 100).outputItems(new ItemStack(ModBlocks.mine_naval, 1)) .inputItems(new ComparableStack(ModItems.sphere_steel, 1), new OreDictStack(STEEL.pipe(), 3), new ComparableStack(ModItems.circuit, 1, EnumCircuitType.ADVANCED), new OreDictStack(ANY_PLASTICEXPLOSIVE.ingot(), 24))); this.register(new GenericRecipe("ass.gadget").setup(300, 100).outputItems(new ItemStack(ModBlocks.nuke_gadget, 1)) - .inputItems(new ComparableStack(ModItems.sphere_steel, 1), new ComparableStack(ModItems.fins_flat, 2), new ComparableStack(ModItems.pedestal_steel, 1), new ComparableStack(ModItems.circuit, 3, EnumCircuitType.CONTROLLER), new OreDictStack(KEY_GRAY, 8))); + .inputItems(new ComparableStack(ModItems.sphere_steel, 1), new ComparableStack(ModItems.fins_flat, 2), new ComparableStack(ModItems.pedestal_steel, 1), new ComparableStack(ModItems.circuit, 3, EnumCircuitType.CONTROLLER), new OreDictStack(KEY_GRAY, 8)) + .setPools528(GenericRecipes.POOL_PREFIX_528 + "controller")); this.register(new GenericRecipe("ass.littleboy").setup(300, 100).outputItems(new ItemStack(ModBlocks.nuke_boy, 1)) - .inputItems(new OreDictStack(STEEL.shell(), 2), new ComparableStack(ModItems.fins_small_steel, 1), new ComparableStack(ModItems.circuit, 2, EnumCircuitType.CONTROLLER), new OreDictStack(KEY_BLUE, 4))); + .inputItems(new OreDictStack(STEEL.shell(), 2), new ComparableStack(ModItems.fins_small_steel, 1), new ComparableStack(ModItems.circuit, 2, EnumCircuitType.CONTROLLER), new OreDictStack(KEY_BLUE, 4)) + .setPools528(GenericRecipes.POOL_PREFIX_528 + "controller")); this.register(new GenericRecipe("ass.fatman").setup(300, 100).outputItems(new ItemStack(ModBlocks.nuke_man, 1)) - .inputItems(new ComparableStack(ModItems.sphere_steel, 1), new OreDictStack(STEEL.shell(), 2), new ComparableStack(ModItems.fins_big_steel, 1), new ComparableStack(ModItems.circuit, 3, EnumCircuitType.CONTROLLER), new OreDictStack(KEY_YELLOW, 6))); + .inputItems(new ComparableStack(ModItems.sphere_steel, 1), new OreDictStack(STEEL.shell(), 2), new ComparableStack(ModItems.fins_big_steel, 1), new ComparableStack(ModItems.circuit, 3, EnumCircuitType.CONTROLLER), new OreDictStack(KEY_YELLOW, 6)) + .setPools528(GenericRecipes.POOL_PREFIX_528 + "controller")); this.register(new GenericRecipe("ass.ivymike").setup(600, 100).outputItems(new ItemStack(ModBlocks.nuke_mike, 1)) - .inputItems(new ComparableStack(ModItems.sphere_steel, 1), new OreDictStack(AL.shell(), 4), new ComparableStack(ModItems.circuit, 8, EnumCircuitType.CONTROLLER_ADVANCED), new OreDictStack(KEY_LIGHTGRAY, 16))); + .inputItems(new ComparableStack(ModItems.sphere_steel, 1), new OreDictStack(AL.shell(), 4), new ComparableStack(ModItems.circuit, 8, EnumCircuitType.CONTROLLER_ADVANCED), new OreDictStack(KEY_LIGHTGRAY, 16)) + .setPools528(GenericRecipes.POOL_PREFIX_528 + "controller")); this.register(new GenericRecipe("ass.tsarbomba").setup(1_200, 100).outputItems(new ItemStack(ModBlocks.nuke_tsar, 1)) - .inputItems(new ComparableStack(ModItems.sphere_steel, 1), new OreDictStack(TI.shell(), 6), new OreDictStack(STEEL.shell(), 2), new ComparableStack(ModItems.fins_tri_steel, 1), new ComparableStack(ModItems.circuit, 16, EnumCircuitType.CONTROLLER_ADVANCED), new OreDictStack(KEY_BLACK, 8))); + .inputItems(new ComparableStack(ModItems.sphere_steel, 1), new OreDictStack(TI.shell(), 6), new OreDictStack(STEEL.shell(), 2), new ComparableStack(ModItems.fins_tri_steel, 1), new ComparableStack(ModItems.circuit, 16, EnumCircuitType.CONTROLLER_ADVANCED), new OreDictStack(KEY_BLACK, 8)) + .setPools528(GenericRecipes.POOL_PREFIX_528 + "controller")); this.register(new GenericRecipe("ass.ninadidnothingwrong").setup(300, 100).outputItems(new ItemStack(ModBlocks.nuke_prototype, 1)) - .inputItems(new ComparableStack(ModItems.dysfunctional_reactor, 1), new OreDictStack(STEEL.shell(), 2), new ComparableStack(ModItems.ingot_euphemium, 3), new ComparableStack(ModItems.circuit, 8, EnumCircuitType.CONTROLLER_ADVANCED))); + .inputItems(new ComparableStack(ModItems.dysfunctional_reactor, 1), new OreDictStack(STEEL.shell(), 2), new ComparableStack(ModItems.ingot_euphemium, 3), new ComparableStack(ModItems.circuit, 8, EnumCircuitType.CONTROLLER_ADVANCED)) + .setPools528(GenericRecipes.POOL_PREFIX_528 + "controller")); this.register(new GenericRecipe("ass.fleija").setup(300, 100).outputItems(new ItemStack(ModBlocks.nuke_fleija, 1)) - .inputItems(new OreDictStack(AL.shell(), 1), new ComparableStack(ModItems.fins_quad_titanium, 1), new ComparableStack(ModItems.circuit, 1, EnumCircuitType.CONTROLLER), new OreDictStack(KEY_WHITE, 4))); + .inputItems(new OreDictStack(AL.shell(), 1), new ComparableStack(ModItems.fins_quad_titanium, 1), new ComparableStack(ModItems.circuit, 1, EnumCircuitType.CONTROLLER), new OreDictStack(KEY_WHITE, 4)) + .setPools528(GenericRecipes.POOL_PREFIX_528 + "controller")); this.register(new GenericRecipe("ass.solinium").setup(300, 100).outputItems(new ItemStack(ModBlocks.nuke_solinium, 1)) - .inputItems(new OreDictStack(STEEL.shell(), 2), new ComparableStack(ModItems.fins_quad_titanium, 1), new ComparableStack(ModItems.circuit, 1, EnumCircuitType.CONTROLLER), new OreDictStack(KEY_GRAY, 8))); + .inputItems(new OreDictStack(STEEL.shell(), 2), new ComparableStack(ModItems.fins_quad_titanium, 1), new ComparableStack(ModItems.circuit, 1, EnumCircuitType.CONTROLLER), new OreDictStack(KEY_GRAY, 8)) + .setPools528(GenericRecipes.POOL_PREFIX_528 + "controller")); this.register(new GenericRecipe("ass.n2mine").setup(200, 100).outputItems(new ItemStack(ModBlocks.nuke_n2, 1)) - .inputItems(new OreDictStack(STEEL.shell(), 6), new OreDictStack(MAGTUNG.wireFine(), 12), new ComparableStack(ModItems.circuit, 2, EnumCircuitType.CONTROLLER), new OreDictStack(KEY_GREEN, 8))); + .inputItems(new OreDictStack(STEEL.shell(), 6), new OreDictStack(MAGTUNG.wireFine(), 12), new ComparableStack(ModItems.circuit, 2, EnumCircuitType.CONTROLLER), new OreDictStack(KEY_GREEN, 8)) + .setPools528(GenericRecipes.POOL_PREFIX_528 + "controller")); this.register(new GenericRecipe("ass.balefirebomb").setup(400, 100).outputItems(new ItemStack(ModBlocks.nuke_fstbmb, 1)) - .inputItems(new ComparableStack(ModItems.sphere_steel, 1), new OreDictStack(TI.shell(), 6), new ComparableStack(ModItems.fins_big_steel, 1), new ComparableStack(ModItems.powder_magic, 8), new ComparableStack(ModItems.circuit, 4, EnumCircuitType.CONTROLLER_ADVANCED), new OreDictStack(KEY_GRAY, 8))); + .inputItems(new ComparableStack(ModItems.sphere_steel, 1), new OreDictStack(TI.shell(), 6), new ComparableStack(ModItems.fins_big_steel, 1), new ComparableStack(ModItems.powder_magic, 8), new ComparableStack(ModItems.circuit, 4, EnumCircuitType.CONTROLLER_ADVANCED), new OreDictStack(KEY_GRAY, 8)) + .setPools528(GenericRecipes.POOL_PREFIX_528 + "controller")); this.register(new GenericRecipe("ass.customnuke").setup(300, 100).outputItems(new ItemStack(ModBlocks.nuke_custom, 1)) - .inputItems(new OreDictStack(STEEL.shell(), 2), new ComparableStack(ModItems.fins_small_steel, 1), new ComparableStack(ModItems.circuit, 8, EnumCircuitType.CONTROLLER_ADVANCED), new OreDictStack(KEY_GRAY, 4))); + .inputItems(new OreDictStack(STEEL.shell(), 2), new ComparableStack(ModItems.fins_small_steel, 1), new ComparableStack(ModItems.circuit, 8, EnumCircuitType.CONTROLLER_ADVANCED), new OreDictStack(KEY_GRAY, 4)) + .setPools528(GenericRecipes.POOL_PREFIX_528 + "controller")); this.register(new GenericRecipe("ass.levibomb").setup(200, 100).outputItems(new ItemStack(ModBlocks.float_bomb, 1)) .inputItems(new OreDictStack(TI.plate(), 12), new OreDictStack(SA326.nugget(), 3), new ComparableStack(ModItems.circuit, 4, EnumCircuitType.ADVANCED), new OreDictStack(GOLD.wireDense(), 8))); this.register(new GenericRecipe("ass.endobomb").setup(200, 100).outputItems(new ItemStack(ModBlocks.therm_endo, 1)) @@ -673,11 +715,6 @@ public class AssemblyMachineRecipes extends GenericRecipes { this.register(new GenericRecipe("ass.exobomb").setup(200, 100).outputItems(new ItemStack(ModBlocks.therm_exo, 1)) .inputItems(new OreDictStack(TI.plate(), 12), new OreDictStack(P_RED.dust(), 32), new ComparableStack(ModItems.circuit, 1, EnumCircuitType.ADVANCED), new ComparableStack(ModItems.coil_gold, 4))); - /* - this.register(new GenericRecipe("ass.").setup(, 100).outputItems(new ItemStack(ModItems., 1)) - .inputItems()); - */ - // bomb parts this.register(new GenericRecipe("ass.explosivelenses1").setup(400, 100).outputItems(new ItemStack(ModItems.early_explosive_lenses, 1)) .inputItems(new OreDictStack(AL.plate(), 8), new OreDictStack(GOLD.wireFine(), 16), new ComparableStack(ModBlocks.det_cord, 8), new OreDictStack(CU.plate(), 2), new OreDictStack(ANY_HIGHEXPLOSIVE.ingot(), 20), new OreDictStack(ANY_PLASTIC.ingot(), 4))); @@ -754,25 +791,35 @@ public class AssemblyMachineRecipes extends GenericRecipes { // turrets this.register(new GenericRecipe("ass.turretchekhov").setup(200, 100).outputItems(new ItemStack(ModBlocks.turret_chekhov, 1)) - .inputItems(new ComparableStack(ModBlocks.machine_battery, 1), new OreDictStack(STEEL.ingot(), 16), new ComparableStack(ModItems.motor, 3), new ComparableStack(ModItems.circuit, 1, EnumCircuitType.ADVANCED), new OreDictStack(STEEL.pipe(), 3), new OreDictStack(GUNMETAL.mechanism(), 3), new ComparableStack(ModBlocks.crate_iron, 1), new ComparableStack(ModItems.crt_display, 1))); + .inputItems(new ComparableStack(ModBlocks.machine_battery, 1), new OreDictStack(STEEL.ingot(), 16), new ComparableStack(ModItems.motor, 3), new ComparableStack(ModItems.circuit, 1, EnumCircuitType.ADVANCED), new OreDictStack(STEEL.pipe(), 3), new OreDictStack(GUNMETAL.mechanism(), 3), new ComparableStack(ModBlocks.crate_iron, 1), new ComparableStack(ModItems.crt_display, 1)) + .setPools528(GenericRecipes.POOL_PREFIX_528 + "bmg")); this.register(new GenericRecipe("ass.turretfriendly").setup(200, 100).outputItems(new ItemStack(ModBlocks.turret_friendly, 1)) - .inputItems(new ComparableStack(ModBlocks.machine_battery, 1), new OreDictStack(STEEL.ingot(), 16), new ComparableStack(ModItems.motor, 3), new ComparableStack(ModItems.circuit, 1, EnumCircuitType.BASIC), new OreDictStack(STEEL.pipe(), 3), new OreDictStack(GUNMETAL.mechanism(), 1), new ComparableStack(ModBlocks.crate_iron, 1), new ComparableStack(ModItems.crt_display, 1))); + .inputItems(new ComparableStack(ModBlocks.machine_battery, 1), new OreDictStack(STEEL.ingot(), 16), new ComparableStack(ModItems.motor, 3), new ComparableStack(ModItems.circuit, 1, EnumCircuitType.BASIC), new OreDictStack(STEEL.pipe(), 3), new OreDictStack(GUNMETAL.mechanism(), 1), new ComparableStack(ModBlocks.crate_iron, 1), new ComparableStack(ModItems.crt_display, 1)) + .setPools528(GenericRecipes.POOL_PREFIX_528 + "bmg")); this.register(new GenericRecipe("ass.turretjeremy").setup(200, 100).outputItems(new ItemStack(ModBlocks.turret_jeremy, 1)) - .inputItems(new ComparableStack(ModBlocks.machine_battery, 1), new OreDictStack(STEEL.ingot(), 16), new ComparableStack(ModItems.motor, 2), new ComparableStack(ModItems.circuit, 1, EnumCircuitType.ADVANCED), new ComparableStack(ModItems.motor_desh, 1), new OreDictStack(STEEL.shell(), 3), new OreDictStack(WEAPONSTEEL.mechanism(), 3), new ComparableStack(ModBlocks.crate_steel, 1), new ComparableStack(ModItems.crt_display, 1))); + .inputItems(new ComparableStack(ModBlocks.machine_battery, 1), new OreDictStack(STEEL.ingot(), 16), new ComparableStack(ModItems.motor, 2), new ComparableStack(ModItems.circuit, 1, EnumCircuitType.ADVANCED), new ComparableStack(ModItems.motor_desh, 1), new OreDictStack(STEEL.shell(), 3), new OreDictStack(WEAPONSTEEL.mechanism(), 3), new ComparableStack(ModBlocks.crate_steel, 1), new ComparableStack(ModItems.crt_display, 1)) + .setPools528(GenericRecipes.POOL_PREFIX_528 + "bmg")); this.register(new GenericRecipe("ass.turrettauon").setup(200, 100).outputItems(new ItemStack(ModBlocks.turret_tauon, 1)) - .inputItems(new ComparableStack(ModBlocks.machine_lithium_battery, 1), new OreDictStack(STEEL.ingot(), 16), new OreDictStack(ANY_PLASTIC.ingot(), 4), new ComparableStack(ModItems.motor, 2), new ComparableStack(ModItems.circuit, 1, EnumCircuitType.ADVANCED), new ComparableStack(ModItems.motor_desh, 1), new OreDictStack(CU.ingot(), 32), new OreDictStack(BIGMT.mechanism(), 3), new ComparableStack(ModItems.battery_lithium, 1), new ComparableStack(ModItems.crt_display, 1))); + .inputItems(new ComparableStack(ModBlocks.machine_lithium_battery, 1), new OreDictStack(STEEL.ingot(), 16), new OreDictStack(ANY_PLASTIC.ingot(), 4), new ComparableStack(ModItems.motor, 2), new ComparableStack(ModItems.circuit, 1, EnumCircuitType.ADVANCED), new ComparableStack(ModItems.motor_desh, 1), new OreDictStack(CU.ingot(), 32), new OreDictStack(BIGMT.mechanism(), 3), new ComparableStack(ModItems.battery_lithium, 1), new ComparableStack(ModItems.crt_display, 1)) + .setPools528(GenericRecipes.POOL_PREFIX_528 + "bmg")); this.register(new GenericRecipe("ass.turretrichard").setup(200, 100).outputItems(new ItemStack(ModBlocks.turret_richard, 1)) - .inputItems(new ComparableStack(ModBlocks.machine_battery, 1), new OreDictStack(STEEL.ingot(), 16), new ComparableStack(ModItems.motor, 2), new ComparableStack(ModItems.circuit, 1, EnumCircuitType.ADVANCED), new OreDictStack(ANY_PLASTIC.ingot(), 2), new OreDictStack(STEEL.shell(), 8), new OreDictStack(WEAPONSTEEL.mechanism(), 3), new ComparableStack(ModBlocks.crate_steel, 1), new ComparableStack(ModItems.crt_display, 1))); + .inputItems(new ComparableStack(ModBlocks.machine_battery, 1), new OreDictStack(STEEL.ingot(), 16), new ComparableStack(ModItems.motor, 2), new ComparableStack(ModItems.circuit, 1, EnumCircuitType.ADVANCED), new OreDictStack(ANY_PLASTIC.ingot(), 2), new OreDictStack(STEEL.shell(), 8), new OreDictStack(WEAPONSTEEL.mechanism(), 3), new ComparableStack(ModBlocks.crate_steel, 1), new ComparableStack(ModItems.crt_display, 1)) + .setPools528(GenericRecipes.POOL_PREFIX_528 + "bmg")); this.register(new GenericRecipe("ass.turrethoward").setup(200, 100).outputItems(new ItemStack(ModBlocks.turret_howard, 1)) - .inputItems(new ComparableStack(ModBlocks.machine_battery, 1), new OreDictStack(STEEL.ingot(), 24), new ComparableStack(ModItems.motor, 2), new ComparableStack(ModItems.motor_desh, 2), new ComparableStack(ModItems.circuit, 3, EnumCircuitType.ADVANCED), new OreDictStack(STEEL.pipe(), 10), new OreDictStack(WEAPONSTEEL.mechanism(), 3), new ComparableStack(ModBlocks.crate_steel, 1), new ComparableStack(ModItems.crt_display, 1))); + .inputItems(new ComparableStack(ModBlocks.machine_battery, 1), new OreDictStack(STEEL.ingot(), 24), new ComparableStack(ModItems.motor, 2), new ComparableStack(ModItems.motor_desh, 2), new ComparableStack(ModItems.circuit, 3, EnumCircuitType.ADVANCED), new OreDictStack(STEEL.pipe(), 10), new OreDictStack(WEAPONSTEEL.mechanism(), 3), new ComparableStack(ModBlocks.crate_steel, 1), new ComparableStack(ModItems.crt_display, 1)) + .setPools528(GenericRecipes.POOL_PREFIX_528 + "bmg")); this.register(new GenericRecipe("ass.maxwell").setup(200, 100).outputItems(new ItemStack(ModBlocks.turret_maxwell, 1)) - .inputItems(new ComparableStack(ModBlocks.machine_lithium_battery, 1), new OreDictStack(STEEL.ingot(), 24), new ComparableStack(ModItems.motor, 2), new ComparableStack(ModItems.circuit, 2, EnumCircuitType.ADVANCED), new OreDictStack(STEEL.pipe(), 4), new OreDictStack(BIGMT.mechanism(), 3), new ComparableStack(ModItems.magnetron, 16), new OreDictStack(ANY_RESISTANTALLOY.ingot(), 8), new ComparableStack(ModItems.crt_display, 1))); + .inputItems(new ComparableStack(ModBlocks.machine_lithium_battery, 1), new OreDictStack(STEEL.ingot(), 24), new ComparableStack(ModItems.motor, 2), new ComparableStack(ModItems.circuit, 2, EnumCircuitType.ADVANCED), new OreDictStack(STEEL.pipe(), 4), new OreDictStack(BIGMT.mechanism(), 3), new ComparableStack(ModItems.magnetron, 16), new OreDictStack(ANY_RESISTANTALLOY.ingot(), 8), new ComparableStack(ModItems.crt_display, 1)) + .setPools528(GenericRecipes.POOL_PREFIX_528 + "bmg")); this.register(new GenericRecipe("ass.fritz").setup(200, 100).outputItems(new ItemStack(ModBlocks.turret_fritz, 1)) - .inputItems(new ComparableStack(ModBlocks.machine_battery, 1), new OreDictStack(STEEL.ingot(), 16), new ComparableStack(ModItems.motor, 3), new ComparableStack(ModItems.circuit, 1, EnumCircuitType.ADVANCED), new OreDictStack(STEEL.pipe(), 8), new OreDictStack(GUNMETAL.mechanism(), 3), new ComparableStack(ModBlocks.barrel_steel))); + .inputItems(new ComparableStack(ModBlocks.machine_battery, 1), new OreDictStack(STEEL.ingot(), 16), new ComparableStack(ModItems.motor, 3), new ComparableStack(ModItems.circuit, 1, EnumCircuitType.ADVANCED), new OreDictStack(STEEL.pipe(), 8), new OreDictStack(GUNMETAL.mechanism(), 3), new ComparableStack(ModBlocks.barrel_steel)) + .setPools528(GenericRecipes.POOL_PREFIX_528 + "bmg")); this.register(new GenericRecipe("ass.arty").setup(1_200, 100).outputItems(new ItemStack(ModBlocks.turret_arty, 1)) - .inputItems(new ComparableStack(ModBlocks.machine_battery, 1), new OreDictStack(STEEL.ingot(), 64), new OreDictStack(STEEL.ingot(), 64), new ComparableStack(ModItems.motor_desh, 5), new ComparableStack(ModItems.circuit, 3, EnumCircuitType.ADVANCED), new OreDictStack(STEEL.pipe(), 12), new OreDictStack(WEAPONSTEEL.mechanism(), 16), new ComparableStack(ModBlocks.machine_radar, 1), new ComparableStack(ModItems.crt_display, 1))); + .inputItems(new ComparableStack(ModBlocks.machine_battery, 1), new OreDictStack(STEEL.ingot(), 64), new OreDictStack(STEEL.ingot(), 64), new ComparableStack(ModItems.motor_desh, 5), new ComparableStack(ModItems.circuit, 3, EnumCircuitType.ADVANCED), new OreDictStack(STEEL.pipe(), 12), new OreDictStack(WEAPONSTEEL.mechanism(), 16), new ComparableStack(ModBlocks.machine_radar, 1), new ComparableStack(ModItems.crt_display, 1)) + .setPools528(GenericRecipes.POOL_PREFIX_528 + "arty")); this.register(new GenericRecipe("ass.himars").setup(1_200, 100).outputItems(new ItemStack(ModBlocks.turret_himars, 1)) - .inputItems(new ComparableStack(ModBlocks.machine_battery, 1), new OreDictStack(STEEL.ingot(), 64), new OreDictStack(STEEL.ingot(), 64), new OreDictStack(ANY_PLASTIC.ingot(), 64), new ComparableStack(ModItems.motor_desh, 5), new ComparableStack(ModItems.circuit, 8, EnumCircuitType.ADVANCED), new OreDictStack(BIGMT.mechanism(), 8), new ComparableStack(ModBlocks.machine_radar, 1), new ComparableStack(ModItems.crt_display, 1))); + .inputItems(new ComparableStack(ModBlocks.machine_battery, 1), new OreDictStack(STEEL.ingot(), 64), new OreDictStack(STEEL.ingot(), 64), new OreDictStack(ANY_PLASTIC.ingot(), 64), new ComparableStack(ModItems.motor_desh, 5), new ComparableStack(ModItems.circuit, 8, EnumCircuitType.ADVANCED), new OreDictStack(BIGMT.mechanism(), 8), new ComparableStack(ModBlocks.machine_radar, 1), new ComparableStack(ModItems.crt_display, 1)) + .setPools528(GenericRecipes.POOL_PREFIX_528 + "arty")); this.register(new GenericRecipe("ass.himarssmall").setup(100, 100).outputItems(new ItemStack(ModItems.ammo_himars, 1, ItemAmmoHIMARS.SMALL)) .inputItems(new OreDictStack(STEEL.plate(), 24), new OreDictStack(ANY_PLASTIC.ingot(), 12), new ComparableStack(ModItems.rocket_fuel, 48), new OreDictStack(ANY_HIGHEXPLOSIVE.ingot(), 48), new ComparableStack(ModItems.circuit, 6, EnumCircuitType.BASIC))); this.register(new GenericRecipe("ass.himarssmallhe").setup(100, 100).outputItems(new ItemStack(ModItems.ammo_himars, 1, ItemAmmoHIMARS.SMALL_HE)) @@ -818,10 +865,12 @@ public class AssemblyMachineRecipes extends GenericRecipes { this.register(new GenericRecipe("ass.warheadbb3").setup(400, 100).outputItems(new ItemStack(ModItems.warhead_buster_large, 1)) .inputItems(new ComparableStack(ModItems.warhead_generic_large, 1), new OreDictStack(ANY_HIGHEXPLOSIVE.ingot(), 8))); this.register(new GenericRecipe("ass.warheadnuke").setup(400, 100).outputItems(new ItemStack(ModItems.warhead_nuclear, 1)) - .inputItems(new OreDictStack(TI.plateCast(), 12), new OreDictStack(PB.plateCast(), 6), new OreDictStack(U235.billet(), 6), new ComparableStack(ModItems.cordite, 12), new ComparableStack(ModItems.circuit, 1, EnumCircuitType.CONTROLLER))); + .inputItems(new OreDictStack(TI.plateCast(), 12), new OreDictStack(PB.plateCast(), 6), new OreDictStack(U235.billet(), 6), new ComparableStack(ModItems.cordite, 12), new ComparableStack(ModItems.circuit, 1, EnumCircuitType.CONTROLLER)) + .setPools528(GenericRecipes.POOL_PREFIX_528 + "controller")); this.register(new GenericRecipe("ass.warheadthermonuke").setup(600, 100).outputItems(new ItemStack(ModItems.warhead_mirv, 1)) .inputItems(new OreDictStack(TI.plateCast(), 12), new OreDictStack(PB.plateCast(), 6), new OreDictStack(PU239.billet(), 8), new ComparableStack(ModItems.ball_tatb, 12), new ComparableStack(ModItems.circuit, 2, EnumCircuitType.CONTROLLER_ADVANCED)) - .inputFluids(new FluidStack(Fluids.DEUTERIUM, 4_000))); + .inputFluids(new FluidStack(Fluids.DEUTERIUM, 4_000)) + .setPools528(GenericRecipes.POOL_PREFIX_528 + "controller")); this.register(new GenericRecipe("ass.warheadvolcano").setup(600, 100).outputItems(new ItemStack(ModItems.warhead_volcano, 1)) .inputItems(new OreDictStack(TI.plateCast(), 12), new OreDictStack(STEEL.plateCast(), 6), new ComparableStack(ModBlocks.det_nuke, 3), new OreDictStack(U238.block(), 24), new ComparableStack(ModItems.circuit, 5, EnumCircuitType.CAPACITOR_BOARD.ordinal()))); this.register(new GenericRecipe("ass.thrusternerva").setup(600, 100).outputItems(new ItemStack(ModItems.thruster_nuclear, 1)) @@ -913,9 +962,11 @@ public class AssemblyMachineRecipes extends GenericRecipes { this.register(new GenericRecipe("ass.mpw10bus").setup(100, 100).outputItems(new ItemStack(ModItems.mp_warhead_10_buster, 1)) .inputItems(new ComparableStack(ModItems.seg_10, 1), new OreDictStack(WEAPONSTEEL.plate(), 6), new OreDictStack(ANY_HIGHEXPLOSIVE.ingot(), 6), new ComparableStack(ModItems.circuit, 2, EnumCircuitType.BASIC))); this.register(new GenericRecipe("ass.mpw10nukesmall").setup(200, 100).outputItems(new ItemStack(ModItems.mp_warhead_10_nuclear, 1)) - .inputItems(new ComparableStack(ModItems.seg_10, 1), new OreDictStack(WEAPONSTEEL.plate(), 16), new OreDictStack(PU239.billet(), 2), new OreDictStack(OreDictManager.getReflector(), 4), new OreDictStack(ANY_HIGHEXPLOSIVE.ingot(), 4), new ComparableStack(ModItems.circuit, 1, EnumCircuitType.CONTROLLER))); + .inputItems(new ComparableStack(ModItems.seg_10, 1), new OreDictStack(WEAPONSTEEL.plate(), 16), new OreDictStack(PU239.billet(), 2), new OreDictStack(OreDictManager.getReflector(), 4), new OreDictStack(ANY_HIGHEXPLOSIVE.ingot(), 4), new ComparableStack(ModItems.circuit, 1, EnumCircuitType.CONTROLLER)) + .setPools528(GenericRecipes.POOL_PREFIX_528 + "controller")); this.register(new GenericRecipe("ass.mpw10nukelarge").setup(200, 100).outputItems(new ItemStack(ModItems.mp_warhead_10_nuclear_large, 1)) - .inputItems(new ComparableStack(ModItems.seg_10, 1), new OreDictStack(WEAPONSTEEL.plate(), 16), new OreDictStack(PU239.billet(), 6), new OreDictStack(OreDictManager.getReflector(), 8), new OreDictStack(ANY_HIGHEXPLOSIVE.ingot(), 12), new ComparableStack(ModItems.circuit, 1, EnumCircuitType.CONTROLLER))); + .inputItems(new ComparableStack(ModItems.seg_10, 1), new OreDictStack(WEAPONSTEEL.plate(), 16), new OreDictStack(PU239.billet(), 6), new OreDictStack(OreDictManager.getReflector(), 8), new OreDictStack(ANY_HIGHEXPLOSIVE.ingot(), 12), new ComparableStack(ModItems.circuit, 1, EnumCircuitType.CONTROLLER)) + .setPools528(GenericRecipes.POOL_PREFIX_528 + "controller")); this.register(new GenericRecipe("ass.mpw10taint").setup(100, 100).outputItems(new ItemStack(ModItems.mp_warhead_10_taint, 1)) .inputItems(new ComparableStack(ModItems.seg_10, 1), new OreDictStack(STEEL.plate(), 12), new ComparableStack(ModBlocks.det_cord, 2), new ComparableStack(ModItems.powder_magic, 12), new OreDictStack(Fluids.WATZ.getDict(1_000), 1))); this.register(new GenericRecipe("ass.mpw10cloud").setup(100, 100).outputItems(new ItemStack(ModItems.mp_warhead_10_cloud, 1)) @@ -925,11 +976,14 @@ public class AssemblyMachineRecipes extends GenericRecipes { this.register(new GenericRecipe("ass.mpw15inc").setup(200, 100).outputItems(new ItemStack(ModItems.mp_warhead_15_incendiary, 1)) .inputItems(new ComparableStack(ModItems.seg_15, 1), new OreDictStack(STEEL.plate(), 12), new OreDictStack(ANY_HIGHEXPLOSIVE.ingot(), 8), new OreDictStack(P_RED.dust(), 16), new ComparableStack(ModItems.circuit, 3, EnumCircuitType.BASIC))); this.register(new GenericRecipe("ass.mpw15nuke").setup(400, 100).outputItems(new ItemStack(ModItems.mp_warhead_15_nuclear, 1)) - .inputItems(new ComparableStack(ModItems.seg_15, 1), new OreDictStack(WEAPONSTEEL.plate(), 32), new OreDictStack(PU239.billet(), 12), new OreDictStack(OreDictManager.getReflector(), 12), new ComparableStack(ModItems.ball_tatb, 24), new ComparableStack(ModItems.circuit, 3, EnumCircuitType.CONTROLLER))); + .inputItems(new ComparableStack(ModItems.seg_15, 1), new OreDictStack(WEAPONSTEEL.plate(), 32), new OreDictStack(PU239.billet(), 12), new OreDictStack(OreDictManager.getReflector(), 12), new ComparableStack(ModItems.ball_tatb, 24), new ComparableStack(ModItems.circuit, 3, EnumCircuitType.CONTROLLER)) + .setPools528(GenericRecipes.POOL_PREFIX_528 + "controller")); this.register(new GenericRecipe("ass.mpw15n2").setup(400, 100).outputItems(new ItemStack(ModItems.mp_warhead_15_n2, 1)) - .inputItems(new ComparableStack(ModItems.seg_15, 1), new OreDictStack(WEAPONSTEEL.plate(), 32), new ComparableStack(ModItems.ball_tatb, 32), new ComparableStack(ModItems.circuit, 8, EnumCircuitType.ADVANCED))); + .inputItems(new ComparableStack(ModItems.seg_15, 1), new OreDictStack(WEAPONSTEEL.plate(), 32), new ComparableStack(ModItems.ball_tatb, 32), new ComparableStack(ModItems.circuit, 8, EnumCircuitType.ADVANCED)) + .setPools528(GenericRecipes.POOL_PREFIX_528 + "controller")); this.register(new GenericRecipe("ass.mpw15bf").setup(400, 100).outputItems(new ItemStack(ModItems.mp_warhead_15_balefire, 1)) - .inputItems(new ComparableStack(ModItems.seg_15, 1), new OreDictStack(WEAPONSTEEL.plate(), 32), new OreDictStack(OreDictManager.getReflector(), 16), new ComparableStack(ModItems.powder_magic, 8), new ComparableStack(ModItems.egg_balefire_shard, 4), new OreDictStack(ANY_HIGHEXPLOSIVE.ingot(), 16), new ComparableStack(ModItems.circuit, 2, EnumCircuitType.CONTROLLER))); + .inputItems(new ComparableStack(ModItems.seg_15, 1), new OreDictStack(WEAPONSTEEL.plate(), 32), new OreDictStack(OreDictManager.getReflector(), 16), new ComparableStack(ModItems.powder_magic, 8), new ComparableStack(ModItems.egg_balefire_shard, 4), new OreDictStack(ANY_HIGHEXPLOSIVE.ingot(), 16), new ComparableStack(ModItems.circuit, 2, EnumCircuitType.CONTROLLER)) + .setPools528(GenericRecipes.POOL_PREFIX_528 + "controller")); /* this.register(new GenericRecipe("ass.").setup(, 100).outputItems(new ItemStack(ModItems., 1)) diff --git a/src/main/java/com/hbm/inventory/recipes/SolidificationRecipes.java b/src/main/java/com/hbm/inventory/recipes/SolidificationRecipes.java index 4e7aed3ad..8013d1003 100644 --- a/src/main/java/com/hbm/inventory/recipes/SolidificationRecipes.java +++ b/src/main/java/com/hbm/inventory/recipes/SolidificationRecipes.java @@ -64,7 +64,7 @@ public class SolidificationRecipes extends SerializableRecipe { registerRecipe(WATER, 1000, Blocks.ice); registerRecipe(LAVA, 1000, Blocks.obsidian); registerRecipe(MERCURY, 125, ModItems.ingot_mercury); - registerRecipe(BIOGAS, 250, ModItems.biomass_compressed); + registerRecipe(BIOGAS, 250, new ItemStack(ModItems.biomass_compressed, 4)); registerRecipe(SALIENT, 1280, new ItemStack(ModItems.bio_wafer, 8)); //4 (food val) * 2 (sat mod) * 2 (constant) * 10 (quanta) * 8 (batch size) registerRecipe(ENDERJUICE, 100, Items.ender_pearl); registerRecipe(WATZ, 1000, ModItems.ingot_mud); diff --git a/src/main/java/com/hbm/main/MainRegistry.java b/src/main/java/com/hbm/main/MainRegistry.java index ca2a7fcc8..16a3e1e4e 100644 --- a/src/main/java/com/hbm/main/MainRegistry.java +++ b/src/main/java/com/hbm/main/MainRegistry.java @@ -1456,6 +1456,8 @@ public class MainRegistry { ignoreMappings.add("hbm:item.multitool_decon"); ignoreMappings.add("hbm:tile.struct_iter_core"); ignoreMappings.add("hbm:tile.struct_plasma_core"); + ignoreMappings.add("hbm:tile.machine_amgen"); + ignoreMappings.add("hbm:tile.machine_geo"); /// REMAP /// remapItems.put("hbm:item.gadget_explosive8", ModItems.early_explosive_lenses); diff --git a/src/main/java/com/hbm/tileentity/TileMappings.java b/src/main/java/com/hbm/tileentity/TileMappings.java index 8da9a1a55..fe38832fb 100644 --- a/src/main/java/com/hbm/tileentity/TileMappings.java +++ b/src/main/java/com/hbm/tileentity/TileMappings.java @@ -154,7 +154,6 @@ public class TileMappings { put(TileEntityCoreInjector.class, "tileentity_v0_injector"); put(TileEntityCoreStabilizer.class, "tileentity_v0_stabilizer"); put(TileEntityCore.class, "tileentity_v0"); - put(TileEntityMachineAmgen.class, "tileentity_amgen"); put(TileEntityMachineHephaestus.class, "tileentity_hephaestus"); put(TileEntityGeysir.class, "tileentity_geysir"); put(TileEntityMachineMissileAssembly.class, "tileentity_missile_assembly"); diff --git a/src/main/java/com/hbm/tileentity/machine/TileEntityMachineAmgen.java b/src/main/java/com/hbm/tileentity/machine/TileEntityMachineAmgen.java deleted file mode 100644 index 7777ac492..000000000 --- a/src/main/java/com/hbm/tileentity/machine/TileEntityMachineAmgen.java +++ /dev/null @@ -1,90 +0,0 @@ -package com.hbm.tileentity.machine; - -import com.hbm.blocks.ModBlocks; -import com.hbm.tileentity.TileEntityLoadedBase; -import com.hbm.util.CompatEnergyControl; - -import api.hbm.energymk2.IEnergyProviderMK2; -import api.hbm.tile.IInfoProviderEC; -import net.minecraft.block.Block; -import net.minecraft.init.Blocks; -import net.minecraft.nbt.NBTTagCompound; -import net.minecraftforge.common.util.ForgeDirection; - -public class TileEntityMachineAmgen extends TileEntityLoadedBase implements IEnergyProviderMK2, IInfoProviderEC { - - public long power; - public long maxPower = 500; - protected long output = 0; - - @Override - public void updateEntity() { - - if(!worldObj.isRemote) { - - this.output = 0; - - Block block = worldObj.getBlock(xCoord, yCoord, zCoord); - - if(block == ModBlocks.machine_geo) { - this.checkGeoInteraction(xCoord, yCoord + 1, zCoord); - this.checkGeoInteraction(xCoord, yCoord - 1, zCoord); - } - - this.power += this.output; - if(power > maxPower) - power = maxPower; - - for(ForgeDirection dir : ForgeDirection.VALID_DIRECTIONS) - this.tryProvide(worldObj, xCoord + dir.offsetX, yCoord + dir.offsetY, zCoord + dir.offsetZ, dir); - } - } - - private void checkGeoInteraction(int x, int y, int z) { - - Block b = worldObj.getBlock(x, y, z); - - if(b == ModBlocks.geysir_water) { - this.output += 75; - } else if(b == ModBlocks.geysir_chlorine) { - this.output += 100; - } else if(b == ModBlocks.geysir_vapor) { - this.output += 50; - } else if(b == ModBlocks.geysir_nether) { - this.output += 500; - } else if(b == Blocks.lava) { - this.output += 100; - - if(worldObj.rand.nextInt(6000) == 0) { - worldObj.setBlock(xCoord, yCoord - 1, zCoord, Blocks.obsidian); - } - } else if(b == Blocks.flowing_lava) { - this.output += 25; - - if(worldObj.rand.nextInt(3000) == 0) { - worldObj.setBlock(xCoord, yCoord - 1, zCoord, Blocks.cobblestone); - } - } - } - - @Override - public long getPower() { - return power; - } - - @Override - public void setPower(long i) { - power = i; - } - - @Override - public long getMaxPower() { - return this.maxPower; - } - - @Override - public void provideExtraInfo(NBTTagCompound data) { - data.setBoolean(CompatEnergyControl.B_ACTIVE, this.output > 0); - data.setDouble(CompatEnergyControl.D_OUTPUT_HE, this.output); - } -} diff --git a/src/main/resources/assets/hbm/textures/blocks/machine_amgen_side.png b/src/main/resources/assets/hbm/textures/blocks/machine_amgen_side.png deleted file mode 100644 index 374d34705f5fa20bacff0ac77e51dfa172fa2536..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 346 zcmV-g0j2(lP)l>K6;$&>0YFNL@p!yf zSXI?7-P*OCg6(+w`eeNZGsrUdcz6atMNbR1CyhohpI;LZESIa@oX5UE%yL8z1t~#9 zyJ^#ayZ0BkJ9Q0<#frLauh1pve1rGUtP)fC`NaEBa& zik1t|AkiTNtyu(x6J*bt!b1{L`4yq6WBEnyci=yOhHbqnj7FN=^ zHDc#tibBb<45)ypm1){TRqF)746{JDyGfhpy~nIXL=fj>wHq2UVWuWLZX%B&aABY^nbFi8Sruocp>&?|thj&zHF9px@uZ%uvN2bZe?^J zG%heMF)*zP3cvsW0Xs=VK~y+Tjgs3+LO~RU2i$np3lA4QfGCRSji{)2fFS8y7acBo zfG85Fn@FkX@Y;RDAIoq@1s}t|W@gR$*V@}cN&dFy*}rxP&mic zkD^?@0+M}&(dZQ?>~fY$9h%_Sc2t3e*Ou57{+ST#1bWAhQLEiHn|DUFdLt^8YgV63 zh4J`J!|8UHhMwHOH%(g#$o^ArPKg%f#56Xf84-89C9)@z_v!S5W*7(>r2G9RkX8jh zx?=Id0?vNd$>f2zr1?;n>WEhBUK&dbM;c3CQ=$SM_;z?BmL+Mu`d#~<&nEC6@aCvU o9uNrrXMAFvA+iGhzX*caC(A6IrT^t~Q2+n{07*qoM6N<$g49R5)c^nh diff --git a/src/main/resources/assets/hbm/textures/blocks/machine_cmb_top.png b/src/main/resources/assets/hbm/textures/blocks/machine_cmb_top.png deleted file mode 100644 index 4fc11aecca702b178253b0a5efe07e8e272a2e07..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 474 zcmV<00VV#4P)N2bZe?^J zG%heMF)*zP3cvsW0ar;xK~y+TjgresLQxck7bxB}@B%p~sE|xCN220g2(s)x=rZU5 zq9~$KRCMokYEV#(n)D#igY<1yZ1V^bd@TNR*k`TJwUuyq-Q}8hyE}gWawM`5jc&$b zTU3SY^>%%}C51DROzswoXHYI*RI69D+BFplh0{Sop*5k0Rh;6LF{OEXmTOSgM9St8d!f9ZLz6k_YH1utW zkk6mM`;?Kv>M7Y%Vnv)WN=#_A?%VALCJ>ZL<ZWE>7Evbp#msQfe*$Ecf^|tgMm@Ezx;9rC%N-UAu=jQJG0Ly!|O#=Hs QfdBvi07*qoM6N<$g3fcr^Z)<= diff --git a/src/main/resources/assets/hbm/textures/blocks/machine_geo_side.png b/src/main/resources/assets/hbm/textures/blocks/machine_geo_side.png deleted file mode 100644 index f386be03eeaec5c86657211e3efb294703e48b97..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 483 zcmV<90UZ8`P)QL50!YOfm6l8rklHng Z{})8E$iYNH{%HUJ002ovPDHLkV1fvL+Fk$v diff --git a/src/main/resources/assets/hbm/textures/blocks/machine_geo_top.png b/src/main/resources/assets/hbm/textures/blocks/machine_geo_top.png deleted file mode 100644 index 3c72964a02f5191bc70e544a1a239e73e5eb1567..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 469 zcmV;`0V@89P)1HxI>T7J9LYB z5H0``LIG8vh`^L?ihwlDjN>;fI`Pz`k%~9JpJo5=f1l*e{@z}FF}nnyYb`djSetRv z`ZJk8rxR--YJTMpcVm1?`)WSj)Ih;Vd&n?e4PqtW_}%J+8|)51+gP*pDP zJm&ZC%}VtRbP*w3u}KN9|N6q=?CVPXcgX^V_Z1>?I|g;#GFT*V&H>ztL1>x+i0QN= z{11bez=wG(w(^{N(=iMN=ww824m%y=uW16kRx)eSk8^rj#JyWv<6=4mu0D=)j#*h^ zt!)#8S~)xW!ROIviSQC}NyiPUWMx_LemDe3;4Dbn%qAwYs!Zy?UeN3`#5_@V00000 LNkvXXu0mjfHh9;u From 1e3e5f38d407dd05138fbf5ca8aa2f4a96fd6203 Mon Sep 17 00:00:00 2001 From: Boblet Date: Thu, 11 Dec 2025 16:34:57 +0100 Subject: [PATCH 11/22] all our food keeps blowing up --- build.gradle | 2 +- changelog | 13 ++++++- .../java/com/hbm/config/GeneralConfig.java | 3 ++ .../hbm/handler/nei/AnnihilatorHandler.java | 16 +++++++++ .../inventory/gui/GUIMachineAnnihilator.java | 4 +-- .../inventory/recipes/AnnihilatorRecipes.java | 36 +++++++++++++++++++ .../hbm/inventory/recipes/PrecAssRecipes.java | 11 ++---- .../com/hbm/items/machine/ItemFluidIcon.java | 1 + .../java/com/hbm/main/ModEventHandler.java | 28 +++++++++++++-- src/main/java/com/hbm/main/NEIRegistry.java | 1 + .../machine/TileEntityMachineAnnihilator.java | 19 +++++++++- .../com/hbm/util/DamageResistanceHandler.java | 4 +-- 12 files changed, 118 insertions(+), 20 deletions(-) create mode 100644 src/main/java/com/hbm/handler/nei/AnnihilatorHandler.java diff --git a/build.gradle b/build.gradle index 4e7e8f7f4..430634ede 100644 --- a/build.gradle +++ b/build.gradle @@ -107,7 +107,7 @@ dependencies { implementation "li.cil.oc:OpenComputers:MC1.7.10-1.5.+:api" - compileOnly "com.github.GTNewHorizons:Applied-Energistics-2-Unofficial:rv3-beta.56-GTNH:dev" + implementation "com.github.GTNewHorizons:Applied-Energistics-2-Unofficial:rv3-beta.56-GTNH:dev" } processResources { diff --git a/changelog b/changelog index dd9030a64..abd9b1e81 100644 --- a/changelog +++ b/changelog @@ -4,11 +4,21 @@ * Used extensively in 528 mode * Replaces recipes for micro chips, controllers and upgrades * All recipes only have a chance to be completed, broken items yielded otherwise need to be recycled + * Can do precise recipes, but it very unreliable. Many recipes have a high chance of outputting a broken version of the made item + * Broken items can be recycled in the precision assembler, returning some of the ingredients * Annihilator * Destroys items and fluids and keeps track of how much has been destroyed * In 528 mode, destroying quantities of certain items yield unique progression relevant blueprints ## Changed +* Changed the way 528 mode works + * May of the old tantalium requirements no longer exist since the assembler rework + * Some important recipes have been moved to the precision assembler + * Many key "milestone" recipes now require 528 mode exclusive blueprints + * 528 exclusive blueprints are obtained from annihilating large quantities of certain items + * AE2 blocks, by default, will detonate when interacted with + * Synergizes with expensive mode, many recycling probabilities of the precision assembler are massively lowered with expensive mode enabled, increasing effective cost massively + * :) * New fusion reactor and particle accelerator parts now have OpenComputers compat * Irradiation recipe config now has the `fusionOnly` flag, preventing the recipe from being done in the RBMK irradiation channel * Removed legacy fusion reactor parts from the creative inventory @@ -41,9 +51,10 @@ * Steel barrels and 256k tanks no longer use tar in their recipes (except in expensive mode) * Solidifying biogas into compressed biomass now yields 4x more, making the biogas route twice as efficient as simply compressing biomass * Finally removed the long deprecated ambience radiation generator and geothermal generator +* Nerfed the ballistic jackets, as they are comically cheap and made some zombies impossible to kill in early game ## Fixed * Fixed gamebreaking issue causing crashes and world corruption where the multi detonator had its tooltip misspelled * Fixed panzerschreck equip animation not speeding up with the sawed off mod * Fixed FENSU not keeping its charge when broken -* Removed skeletonizer reloading from `/ntmreload` as it wasn't usable for end users and just caused error messages on servers \ No newline at end of file +* Removed skeletonizer reloading from `/ntmreload` as it wasn't usable for end users and just caused error messages on servers diff --git a/src/main/java/com/hbm/config/GeneralConfig.java b/src/main/java/com/hbm/config/GeneralConfig.java index fd3892280..8dce4f139 100644 --- a/src/main/java/com/hbm/config/GeneralConfig.java +++ b/src/main/java/com/hbm/config/GeneralConfig.java @@ -50,6 +50,7 @@ public class GeneralConfig { public static boolean enable528BosniaSimulator = true; public static boolean enable528NetherBurn = true; public static boolean enable528PressurizedRecipes = true; + public static boolean enable528ExplosiveEnergistics = true; public static int coltanRate = 2; public static boolean enableLBSM = false; @@ -132,6 +133,7 @@ public class GeneralConfig { enable528BosniaSimulator = CommonConfig.createConfigBool(config, CATEGORY_528, "X528_enableBosniaSimulator", "Enables anti tank mines spawning all over the world.", true); enable528NetherBurn = CommonConfig.createConfigBool(config, CATEGORY_528, "X528_enable528NetherBurn", "Whether players burn in the nether", true); enable528PressurizedRecipes = CommonConfig.createConfigBool(config, CATEGORY_528, "X528_enable528PressurizedRecipes", "Sets some recipes to require pressurized input fluid", true); + enable528ExplosiveEnergistics = CommonConfig.createConfigBool(config, CATEGORY_528, "X528_enable528ExplosiveEnergistics", "Renders AE2 unusable.", true); coltanRate = CommonConfig.createConfigInt(config, CATEGORY_528, "X528_oreColtanFrequency", "Determines how many coltan ore veins are to be expected in a chunk. These values do not affect the frequency in deposits, and only apply if random coltan spanwing is enabled.", 2); final String CATEGORY_LBSM = CommonConfig.CATEGORY_LBSM; @@ -167,6 +169,7 @@ public class GeneralConfig { enable528BosniaSimulator = false; enable528NetherBurn = false; enable528PressurizedRecipes = false; + enable528ExplosiveEnergistics = false; } } } diff --git a/src/main/java/com/hbm/handler/nei/AnnihilatorHandler.java b/src/main/java/com/hbm/handler/nei/AnnihilatorHandler.java new file mode 100644 index 000000000..3a8e6e770 --- /dev/null +++ b/src/main/java/com/hbm/handler/nei/AnnihilatorHandler.java @@ -0,0 +1,16 @@ +package com.hbm.handler.nei; + +import com.hbm.blocks.ModBlocks; +import com.hbm.inventory.recipes.AnnihilatorRecipes; + +public class AnnihilatorHandler extends NEIUniversalHandler { + + public AnnihilatorHandler() { + super("Annihilator", ModBlocks.machine_annihilator, AnnihilatorRecipes.getRecipes()); + } + + @Override + public String getKey() { + return "ntmAnnihilating"; + } +} diff --git a/src/main/java/com/hbm/inventory/gui/GUIMachineAnnihilator.java b/src/main/java/com/hbm/inventory/gui/GUIMachineAnnihilator.java index b642010c4..375c35359 100644 --- a/src/main/java/com/hbm/inventory/gui/GUIMachineAnnihilator.java +++ b/src/main/java/com/hbm/inventory/gui/GUIMachineAnnihilator.java @@ -3,7 +3,6 @@ package com.hbm.inventory.gui; import java.util.Arrays; import java.util.Locale; -import org.apache.commons.lang3.math.NumberUtils; import org.lwjgl.input.Keyboard; import org.lwjgl.opengl.GL11; @@ -93,9 +92,8 @@ public class GUIMachineAnnihilator extends GuiInfoContainer { protected void keyTyped(char c, int i) { if(this.pool.textboxKeyTyped(c, i)) { String text = this.pool.getText(); - int num = NumberUtils.toInt(this.pool.getText()); NBTTagCompound data = new NBTTagCompound(); - data.setInteger("threshold", num); + data.setString("pool", text); PacketDispatcher.wrapper.sendToServer(new NBTControlPacket(data, annihilator.xCoord, annihilator.yCoord, annihilator.zCoord)); return; } diff --git a/src/main/java/com/hbm/inventory/recipes/AnnihilatorRecipes.java b/src/main/java/com/hbm/inventory/recipes/AnnihilatorRecipes.java index 3fb46d66b..154676b56 100644 --- a/src/main/java/com/hbm/inventory/recipes/AnnihilatorRecipes.java +++ b/src/main/java/com/hbm/inventory/recipes/AnnihilatorRecipes.java @@ -5,6 +5,7 @@ import java.math.BigInteger; import java.util.ArrayList; import java.util.HashMap; import java.util.List; +import java.util.Locale; import java.util.Map.Entry; import static com.hbm.inventory.OreDictManager.*; @@ -14,6 +15,7 @@ import com.google.gson.JsonElement; import com.google.gson.JsonObject; import com.google.gson.stream.JsonWriter; import com.hbm.inventory.RecipesCommon.ComparableStack; +import com.hbm.inventory.RecipesCommon.OreDictStack; import com.hbm.inventory.fluid.FluidType; import com.hbm.inventory.fluid.Fluids; import com.hbm.inventory.recipes.loader.GenericRecipes; @@ -21,6 +23,7 @@ import com.hbm.inventory.recipes.loader.SerializableRecipe; import com.hbm.items.ModItems; import com.hbm.items.machine.IItemFluidIdentifier; import com.hbm.items.machine.ItemBlueprints; +import com.hbm.items.machine.ItemFluidIcon; import com.hbm.items.machine.ItemCircuit.EnumCircuitType; import com.hbm.items.weapon.sedna.factory.GunFactory.EnumAmmo; import com.hbm.util.ItemStackUtil; @@ -28,6 +31,7 @@ import com.hbm.util.Tuple.Pair; import net.minecraft.item.Item; import net.minecraft.item.ItemStack; +import net.minecraft.util.EnumChatFormatting; public class AnnihilatorRecipes extends SerializableRecipe { @@ -75,6 +79,38 @@ public class AnnihilatorRecipes extends SerializableRecipe { @Override public String getFileName() { return "hbmAnnihilator.json"; } @Override public Object getRecipeObject() { return recipes; } @Override public void deleteRecipes() { recipes.clear(); } + + public static HashMap getRecipes() { + + HashMap recipes = new HashMap(); + + for(Entry entry : AnnihilatorRecipes.recipes.entrySet()) { + for(Pair milestone : entry.getValue().milestones) { + + Object input = new ItemStack[1]; + + if(entry.getKey() instanceof Item) input = new ItemStack((Item) entry.getKey()); + if(entry.getKey() instanceof ComparableStack) input = ((ComparableStack) entry.getKey()).toStack(); + if(entry.getKey() instanceof FluidType) input = ItemFluidIcon.make((FluidType) entry.getKey(), 0); + if(entry.getKey() instanceof String) input = new OreDictStack((String) entry.getKey()).extractForNEI(); + + if(input == null) continue; + + if(input instanceof ItemStack) { + ItemStackUtil.addTooltipToStack((ItemStack) input, EnumChatFormatting.RED + String.format(Locale.US, "%,d", milestone.getKey())); + } + if(input instanceof List) { + List list = (List) input; + for(ItemStack stack : list) ItemStackUtil.addTooltipToStack(stack, EnumChatFormatting.RED + String.format(Locale.US, "%,d", milestone.getKey())); + input = list.toArray(new ItemStack[0]); + } + + recipes.put(input, milestone.getValue()); + } + } + + return recipes; + } /** * If prevAmount is null, a payout is guaranteed if the currentAmount matches or exceeds the requirement. diff --git a/src/main/java/com/hbm/inventory/recipes/PrecAssRecipes.java b/src/main/java/com/hbm/inventory/recipes/PrecAssRecipes.java index 3c096002b..ee47ebc85 100644 --- a/src/main/java/com/hbm/inventory/recipes/PrecAssRecipes.java +++ b/src/main/java/com/hbm/inventory/recipes/PrecAssRecipes.java @@ -120,7 +120,7 @@ public class PrecAssRecipes extends GenericRecipes { new OreDictStack(BIGMT.ingot(), 16), new ComparableStack(ModItems.ingot_cft, 8), new ComparableStack(ModItems.circuit, 16, EnumCircuitType.CAPACITOR_BOARD)), - new ItemStack(ModItems.upgrade_overdrive_1), 10, GeneralConfig.enableExpensiveMode ? 10 : 50); + new ItemStack(ModItems.upgrade_overdrive_2), 10, GeneralConfig.enableExpensiveMode ? 10 : 50); registerPair(new GenericRecipe("precass.upgrade_overdive_iii").setup(1_200, 100_000) .inputItems(new ComparableStack(ModItems.upgrade_overdrive_2, 1), new ComparableStack(ModItems.upgrade_speed_3, 1), @@ -128,14 +128,7 @@ public class PrecAssRecipes extends GenericRecipes { new OreDictStack(ANY_BISMOIDBRONZE.ingot(), 16), new ComparableStack(ModItems.ingot_cft, 16), new ComparableStack(ModItems.circuit, 16, EnumCircuitType.BISMOID)), - new ItemStack(ModItems.upgrade_overdrive_1), 5, GeneralConfig.enableExpensiveMode ? 10 : 50); - - this.register(new GenericRecipe("ass.overdrive1").setup(200, 100).outputItems(new ItemStack(ModItems.upgrade_overdrive_1, 1)) - .inputItems(new ComparableStack(ModItems.upgrade_speed_3, 1), new ComparableStack(ModItems.upgrade_effect_3, 1), new OreDictStack(BIGMT.ingot(), 16), new OreDictStack(ANY_HARDPLASTIC.ingot(), 16), new ComparableStack(ModItems.circuit, 16, EnumCircuitType.ADVANCED))); - this.register(new GenericRecipe("ass.overdrive2").setup(600, 100).outputItems(new ItemStack(ModItems.upgrade_overdrive_2, 1)) - .inputItems(new ComparableStack(ModItems.upgrade_overdrive_1, 1), new ComparableStack(ModItems.upgrade_speed_3, 1), new ComparableStack(ModItems.upgrade_effect_3, 1), new OreDictStack(BIGMT.ingot(), 16), new ComparableStack(ModItems.ingot_cft, 8), new ComparableStack(ModItems.circuit, 16, EnumCircuitType.CAPACITOR_BOARD))); - this.register(new GenericRecipe("ass.overdrive3").setup(1_200, 100).outputItems(new ItemStack(ModItems.upgrade_overdrive_3, 1)) - .inputItems(new ComparableStack(ModItems.upgrade_overdrive_2, 1), new ComparableStack(ModItems.upgrade_speed_3, 1), new ComparableStack(ModItems.upgrade_effect_3, 1), new OreDictStack(ANY_BISMOIDBRONZE.ingot(), 16), new ComparableStack(ModItems.ingot_cft, 16), new ComparableStack(ModItems.circuit, 16, EnumCircuitType.BISMOID))); + new ItemStack(ModItems.upgrade_overdrive_3), 5, GeneralConfig.enableExpensiveMode ? 10 : 50); } int min = 1_200; diff --git a/src/main/java/com/hbm/items/machine/ItemFluidIcon.java b/src/main/java/com/hbm/items/machine/ItemFluidIcon.java index f41ec69eb..bbeb85104 100644 --- a/src/main/java/com/hbm/items/machine/ItemFluidIcon.java +++ b/src/main/java/com/hbm/items/machine/ItemFluidIcon.java @@ -51,6 +51,7 @@ public class ItemFluidIcon extends Item { } public static ItemStack addQuantity(ItemStack stack, int i) { + if(i <= 0) return stack; if(!stack.hasTagCompound()) stack.stackTagCompound = new NBTTagCompound(); stack.getTagCompound().setInteger("fill", i); return stack; diff --git a/src/main/java/com/hbm/main/ModEventHandler.java b/src/main/java/com/hbm/main/ModEventHandler.java index 39027aaa8..18cc855fb 100644 --- a/src/main/java/com/hbm/main/ModEventHandler.java +++ b/src/main/java/com/hbm/main/ModEventHandler.java @@ -13,6 +13,10 @@ import com.hbm.entity.mob.*; import com.hbm.entity.projectile.EntityBulletBaseMK4; import com.hbm.entity.projectile.EntityBurningFOEQ; import com.hbm.entity.train.EntityRailCarBase; +import com.hbm.explosion.vanillant.ExplosionVNT; +import com.hbm.explosion.vanillant.standard.EntityProcessorCrossSmooth; +import com.hbm.explosion.vanillant.standard.ExplosionEffectWeapon; +import com.hbm.explosion.vanillant.standard.PlayerProcessorStandard; import com.hbm.extprop.HbmLivingProps; import com.hbm.extprop.HbmPlayerProps; import com.hbm.handler.ArmorModHandler; @@ -1177,12 +1181,30 @@ public class ModEventHandler { } @SubscribeEvent - public void onClickSign(PlayerInteractEvent event) { + public void onClickBlock(PlayerInteractEvent event) { int x = event.x; - int y = event.z; - int z = event.y; + int y = event.y; + int z = event.z; World world = event.world; + + if(GeneralConfig.enable528ExplosiveEnergistics && !world.isRemote && event.action == Action.RIGHT_CLICK_BLOCK) { + Block b = world.getBlock(x, y, z); + String name = Block.blockRegistry.getNameForObject(b); + if(name != null && name.startsWith("appliedenergistics2")) { + world.func_147480_a(x, y, z, false); + ExplosionVNT vnt = new ExplosionVNT(world, x + 0.5, y + 0.5, z + 0.5, 5, null); + vnt.setEntityProcessor(new EntityProcessorCrossSmooth(1, 20).setupPiercing(5, 0.2F)); + vnt.setPlayerProcessor(new PlayerProcessorStandard()); + vnt.setSFX(new ExplosionEffectWeapon(10, 2.5F, 1F)); + vnt.explode(); + event.setCanceled(true); + } + } + + x = event.x; + y = event.z; + z = event.y; if(!world.isRemote && event.action == Action.RIGHT_CLICK_BLOCK && world.getTileEntity(x, y, z) instanceof TileEntitySign) { diff --git a/src/main/java/com/hbm/main/NEIRegistry.java b/src/main/java/com/hbm/main/NEIRegistry.java index 682d83f00..755dda1fd 100644 --- a/src/main/java/com/hbm/main/NEIRegistry.java +++ b/src/main/java/com/hbm/main/NEIRegistry.java @@ -15,6 +15,7 @@ public class NEIRegistry { if(!handlers.isEmpty()) return handlers; + handlers.add(new AnnihilatorHandler()); handlers.add(new AnvilRecipeHandler()); handlers.add(new SmithingRecipeHandler()); handlers.add(new PressRecipeHandler()); diff --git a/src/main/java/com/hbm/tileentity/machine/TileEntityMachineAnnihilator.java b/src/main/java/com/hbm/tileentity/machine/TileEntityMachineAnnihilator.java index dd6a92d1d..e90183afb 100644 --- a/src/main/java/com/hbm/tileentity/machine/TileEntityMachineAnnihilator.java +++ b/src/main/java/com/hbm/tileentity/machine/TileEntityMachineAnnihilator.java @@ -2,6 +2,7 @@ package com.hbm.tileentity.machine; import java.math.BigInteger; +import com.hbm.interfaces.IControlReceiver; import com.hbm.inventory.RecipesCommon.ComparableStack; import com.hbm.inventory.container.ContainerMachineAnnihilator; import com.hbm.inventory.fluid.FluidType; @@ -30,7 +31,7 @@ import net.minecraft.util.AxisAlignedBB; import net.minecraft.world.World; import net.minecraftforge.common.util.ForgeDirection; -public class TileEntityMachineAnnihilator extends TileEntityMachineBase implements IFluidStandardReceiverMK2, IGUIProvider { +public class TileEntityMachineAnnihilator extends TileEntityMachineBase implements IFluidStandardReceiverMK2, IControlReceiver, IGUIProvider { public String pool = "Recycling"; public int timer; @@ -214,6 +215,22 @@ public class TileEntityMachineAnnihilator extends TileEntityMachineBase implemen @Override public Container provideContainer(int ID, EntityPlayer player, World world, int x, int y, int z) { return new ContainerMachineAnnihilator(player.inventory, this); } @Override @SideOnly(Side.CLIENT) public Object provideGUI(int ID, EntityPlayer player, World world, int x, int y, int z) { return new GUIMachineAnnihilator(player.inventory, this); } + @Override + public boolean hasPermission(EntityPlayer player) { + return this.isUseableByPlayer(player); + } + + @Override + public void receiveControl(NBTTagCompound data) { + if(data.hasKey("pool")) { + String pool = data.getString("pool"); + if(pool != null && !pool.isEmpty()) { + this.pool = pool; + this.markChanged(); + } + } + } + AxisAlignedBB bb = null; @Override diff --git a/src/main/java/com/hbm/util/DamageResistanceHandler.java b/src/main/java/com/hbm/util/DamageResistanceHandler.java index 2c059c5b0..adb9973d2 100644 --- a/src/main/java/com/hbm/util/DamageResistanceHandler.java +++ b/src/main/java/com/hbm/util/DamageResistanceHandler.java @@ -122,9 +122,9 @@ public class DamageResistanceHandler { entityStats.put(EntityCreeper.class, new ResistanceStats().addCategory(CATEGORY_EXPLOSION, 2F, 0.25F)); itemStats.put(ModItems.jackt, new ResistanceStats() - .addCategory(CATEGORY_PHYSICAL, 5F, 0.5F)); + .addCategory(CATEGORY_PHYSICAL, 1F, 0.25F)); itemStats.put(ModItems.jackt2, new ResistanceStats() - .addCategory(CATEGORY_PHYSICAL, 5F, 0.5F)); + .addCategory(CATEGORY_PHYSICAL, 3F, 0.35F)); registerSet(ModItems.steel_helmet, ModItems.steel_plate, ModItems.steel_legs, ModItems.steel_boots, new ResistanceStats()); registerSet(ModItems.titanium_helmet, ModItems.titanium_plate, ModItems.titanium_legs, ModItems.titanium_boots, new ResistanceStats()); From 1f5fc1926cf8d5158add2f5109bd0134638a8cb2 Mon Sep 17 00:00:00 2001 From: Boblet Date: Fri, 12 Dec 2025 13:34:32 +0100 Subject: [PATCH 12/22] spoingus --- build.gradle | 2 +- .../hbm/handler/nei/AnnihilatorHandler.java | 29 +++++++++++++++++++ .../inventory/recipes/AnnihilatorRecipes.java | 4 +-- .../recipes/AssemblyMachineRecipes.java | 5 ++-- .../machine/TileEntityMachineAnnihilator.java | 2 ++ 5 files changed, 37 insertions(+), 5 deletions(-) diff --git a/build.gradle b/build.gradle index 430634ede..4e7e8f7f4 100644 --- a/build.gradle +++ b/build.gradle @@ -107,7 +107,7 @@ dependencies { implementation "li.cil.oc:OpenComputers:MC1.7.10-1.5.+:api" - implementation "com.github.GTNewHorizons:Applied-Energistics-2-Unofficial:rv3-beta.56-GTNH:dev" + compileOnly "com.github.GTNewHorizons:Applied-Energistics-2-Unofficial:rv3-beta.56-GTNH:dev" } processResources { diff --git a/src/main/java/com/hbm/handler/nei/AnnihilatorHandler.java b/src/main/java/com/hbm/handler/nei/AnnihilatorHandler.java index 3a8e6e770..bd7bda01a 100644 --- a/src/main/java/com/hbm/handler/nei/AnnihilatorHandler.java +++ b/src/main/java/com/hbm/handler/nei/AnnihilatorHandler.java @@ -1,7 +1,14 @@ package com.hbm.handler.nei; +import java.util.Map.Entry; + import com.hbm.blocks.ModBlocks; import com.hbm.inventory.recipes.AnnihilatorRecipes; +import com.hbm.items.ModItems; +import com.hbm.util.InventoryUtil; + +import codechicken.nei.NEIServerUtils; +import net.minecraft.item.ItemStack; public class AnnihilatorHandler extends NEIUniversalHandler { @@ -13,4 +20,26 @@ public class AnnihilatorHandler extends NEIUniversalHandler { public String getKey() { return "ntmAnnihilating"; } + + @Override + public void loadCraftingRecipes(ItemStack result) { + + outer: for(Entry recipe : recipes.entrySet()) { + ItemStack[][] ins = InventoryUtil.extractObject(recipe.getKey()); + ItemStack[][] outs = InventoryUtil.extractObject(recipe.getValue()); + + for(ItemStack[] array : ins) for(ItemStack stack : array) if(stack.getItem() == ModItems.item_secret) continue outer; + for(ItemStack[] array : outs) for(ItemStack stack : array) if(stack.getItem() == ModItems.item_secret) continue outer; + + match: + for(ItemStack[] array : outs) { + for(ItemStack stack : array) { + if(NEIServerUtils.areStacksSameTypeCrafting(stack, result) && ItemStack.areItemStackTagsEqual(stack, result)) { + this.arecipes.add(new RecipeSet(ins, outs, recipe.getKey())); + break match; + } + } + } + } + } } diff --git a/src/main/java/com/hbm/inventory/recipes/AnnihilatorRecipes.java b/src/main/java/com/hbm/inventory/recipes/AnnihilatorRecipes.java index 154676b56..d184a28b8 100644 --- a/src/main/java/com/hbm/inventory/recipes/AnnihilatorRecipes.java +++ b/src/main/java/com/hbm/inventory/recipes/AnnihilatorRecipes.java @@ -102,10 +102,10 @@ public class AnnihilatorRecipes extends SerializableRecipe { if(input instanceof List) { List list = (List) input; for(ItemStack stack : list) ItemStackUtil.addTooltipToStack(stack, EnumChatFormatting.RED + String.format(Locale.US, "%,d", milestone.getKey())); - input = list.toArray(new ItemStack[0]); + input = new ItemStack[][] { list.toArray(new ItemStack[0]) }; } - recipes.put(input, milestone.getValue()); + recipes.put(input, milestone.getValue().copy()); } } diff --git a/src/main/java/com/hbm/inventory/recipes/AssemblyMachineRecipes.java b/src/main/java/com/hbm/inventory/recipes/AssemblyMachineRecipes.java index 047e10916..34633620f 100644 --- a/src/main/java/com/hbm/inventory/recipes/AssemblyMachineRecipes.java +++ b/src/main/java/com/hbm/inventory/recipes/AssemblyMachineRecipes.java @@ -265,10 +265,11 @@ public class AssemblyMachineRecipes extends GenericRecipes { this.register(new GenericRecipe("ass.fracker").setup(600, 100).outputItems(new ItemStack(ModBlocks.machine_fracking_tower, 1)) .inputItems(new OreDictStack(STEEL.shell(), 24), new OreDictStack(STEEL.pipe(), 12), new ComparableStack(ModBlocks.concrete_smooth, 64), new ComparableStack(ModItems.drill_titanium), new ComparableStack(ModItems.motor_desh, 2), new ComparableStack(ModItems.plate_desh, 24), new ComparableStack(ModItems.circuit, 16, EnumCircuitType.CAPACITOR)) .inputItemsEx(new ComparableStack(ModItems.item_expensive, 4, EnumExpensiveType.HEAVY_FRAME), new ComparableStack(ModItems.item_expensive, 2, EnumExpensiveType.FERRO_PLATING), new OreDictStack(STEEL.pipe(), 12), new ComparableStack(ModBlocks.concrete_smooth, 64), new ComparableStack(ModItems.drill_titanium), new ComparableStack(ModItems.motor_desh, 5), new ComparableStack(ModItems.item_expensive, 4, EnumExpensiveType.CIRCUIT)) - .setPools528(GenericRecipes.POOL_PREFIX_528 + "rubber")); + .setPools528(GenericRecipes.POOL_PREFIX_528 + "plastic")); this.register(new GenericRecipe("ass.flarestack").setup(100, 100).outputItems(new ItemStack(ModBlocks.machine_flare, 1)) .inputItems(new OreDictStack(STEEL.plate(), 12), new OreDictStack(CU.plate(), 4), new OreDictStack(STEEL.shell(), 4), new ComparableStack(ModItems.thermo_element, 3)) - .inputItemsEx(new ComparableStack(ModItems.item_expensive, 8, EnumExpensiveType.STEEL_PLATING), new OreDictStack(CU.plate(), 4), new ComparableStack(ModItems.thermo_element, 3))); + .inputItemsEx(new ComparableStack(ModItems.item_expensive, 8, EnumExpensiveType.STEEL_PLATING), new OreDictStack(CU.plate(), 4), new ComparableStack(ModItems.thermo_element, 3)) + .setPools528(GenericRecipes.POOL_PREFIX_528 + "plastic")); this.register(new GenericRecipe("ass.refinery").setup(200, 100).outputItems(new ItemStack(ModBlocks.machine_refinery, 1)) .inputItems(new OreDictStack(STEEL.plateWelded(), 3), new OreDictStack(CU.plate(), 8), new OreDictStack(STEEL.shell(), 4), new OreDictStack(STEEL.pipe(), 12), new ComparableStack(ModItems.plate_polymer, 8), new ComparableStack(ModItems.circuit, 3, EnumCircuitType.ANALOG)) .inputItemsEx(new ComparableStack(ModItems.item_expensive, 4, EnumExpensiveType.STEEL_PLATING), new OreDictStack(STEEL.pipe(), 12), new ComparableStack(ModItems.plate_polymer, 8), new ComparableStack(ModItems.circuit, 5, EnumCircuitType.ANALOG))); diff --git a/src/main/java/com/hbm/tileentity/machine/TileEntityMachineAnnihilator.java b/src/main/java/com/hbm/tileentity/machine/TileEntityMachineAnnihilator.java index e90183afb..4fbcf5282 100644 --- a/src/main/java/com/hbm/tileentity/machine/TileEntityMachineAnnihilator.java +++ b/src/main/java/com/hbm/tileentity/machine/TileEntityMachineAnnihilator.java @@ -133,6 +133,8 @@ public class TileEntityMachineAnnihilator extends TileEntityMachineBase implemen if(pool != null) { this.monitorBigInt = pool.items.get(type); if(this.monitorBigInt == null) this.monitorBigInt = BigInteger.ZERO; + } else { + this.monitorBigInt = BigInteger.ZERO; } } From 54cbb495cc5519cb42c9f6cf5239acb6c09a86d1 Mon Sep 17 00:00:00 2001 From: Raaaaaaaaaay Date: Sat, 13 Dec 2025 00:04:23 +0200 Subject: [PATCH 13/22] =?UTF-8?q?=D1=80=D1=8B=D0=B1=D0=BA=D0=B0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/main/resources/assets/hbm/lang/ru_RU.lang | 15 ++++++++------- 1 file changed, 8 insertions(+), 7 deletions(-) diff --git a/src/main/resources/assets/hbm/lang/ru_RU.lang b/src/main/resources/assets/hbm/lang/ru_RU.lang index c3564e019..d146f8996 100644 --- a/src/main/resources/assets/hbm/lang/ru_RU.lang +++ b/src/main/resources/assets/hbm/lang/ru_RU.lang @@ -715,7 +715,7 @@ commands.satellite.should_be_run_as_player=Команда должна быть container.ammoBag=Сумка для боеприпасов container.anvil=Наковальня %s уровня -container.annihilator=Аннигилятор +container.annihilator=Переработчик container.arcFurnace=Дуговая печь container.armorTable=Стол модификации брони container.ashpit=Зольник @@ -2299,7 +2299,7 @@ item.bedrock_ore.type.light.name=Лёгкая металлическая item.bedrock_ore.type.nonmetal.name=Неметаллическая item.bedrock_ore.type.rare.name=Редкоземельная item.bedrock_ore_base.name=Необработанная бедроковая руда -item.bedrock_ore_fragment.name=Фрагмент от %s руда +item.bedrock_ore_fragment.name=Фрагмент руды (%s) item.beta.name=БЕТА-ФУНКЦИИ item.big_sword.name=Большой меч item.billet_actinium.name=Заготовка актиния-227 @@ -4157,7 +4157,7 @@ item.pile_rod_source.name=Радий-226-Бериллевый источник item.pile_rod_source.desc=§d[Источник нейтронов] item.pile_rod_uranium.name=Урановый стержень "Чикагской поленницы" item.pile_rod_uranium.desc=§a[Активное топливо]$§eПКМ ручной дрелью, чтобы взять образец ядра стержня -item.pill_iodine.name=Таблетка иода +item.pill_iodine.name=Таблетка йода item.pill_iodine.desc=Убирает негативные эффекты item.pill_herbal.name=Травяная паста item.pill_herbal.desc=Эффективное средство против болезни лёгких $и небольшого радиационного отравления.$Имеет побочные эффекты. @@ -4278,11 +4278,11 @@ item.powder_fire.name=Красный фосфор item.powder_fire.desc=Используется в многоцелевых бомбах:$Зажигательные бомбы - это весело! item.powder_flux.name=Флюс item.powder_gold.name=Золотой порошок -item.powder_i131.name=Порошок иода-131 -item.powder_i131_tiny.name=Кучка порошка иода-131 +item.powder_i131.name=Порошок йода-131 +item.powder_i131_tiny.name=Кучка порошка йода-131 item.powder_ice.name=Крио-порошок item.powder_impure_osmiridium.name=Порошок загрязнённого осмиридия -item.powder_iodine.name=Порошок иода +item.powder_iodine.name=Порошок йода item.powder_iron.name=Железный порошок item.powder_lanthanium.name=Лантановый порошок item.powder_lanthanium_tiny.name=Кучка лантанового порошка @@ -5969,7 +5969,7 @@ tile.lightstone_bricks_stairs.name=Ступеньки из светлокаме tile.lox_barrel.name=Бочка с жидким кислородом tile.machine_amgen.name=Генератор на фоновой радиации tile.machine_ammo_press.name=Пресс для патронов -tile.machine_annihilator.name=Аннигилятор +tile.machine_annihilator.name=Переработчик tile.machine_arc_furnace.name=Электрическая дуговая печь tile.machine_arc_furnace_off.name=Дуговая печь tile.machine_arc_furnace_on.name=Дуговая печь @@ -6798,3 +6798,4 @@ desc.gui.upgrade.speed= * §4Скорость§r: Стакается до 3-х + From 154503a95d43f29670648a71950c50386001fd54 Mon Sep 17 00:00:00 2001 From: Raaaaaaaaaay Date: Sat, 13 Dec 2025 00:04:57 +0200 Subject: [PATCH 14/22] =?UTF-8?q?=D1=80=D1=83=D0=B4=D0=B0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/main/resources/assets/hbm/lang/ru_RU.lang | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/src/main/resources/assets/hbm/lang/ru_RU.lang b/src/main/resources/assets/hbm/lang/ru_RU.lang index d146f8996..66931abd2 100644 --- a/src/main/resources/assets/hbm/lang/ru_RU.lang +++ b/src/main/resources/assets/hbm/lang/ru_RU.lang @@ -2299,7 +2299,7 @@ item.bedrock_ore.type.light.name=Лёгкая металлическая item.bedrock_ore.type.nonmetal.name=Неметаллическая item.bedrock_ore.type.rare.name=Редкоземельная item.bedrock_ore_base.name=Необработанная бедроковая руда -item.bedrock_ore_fragment.name=Фрагмент руды (%s) +item.bedrock_ore_fragment.name=Фрагмент (%s) item.beta.name=БЕТА-ФУНКЦИИ item.big_sword.name=Большой меч item.billet_actinium.name=Заготовка актиния-227 @@ -6799,3 +6799,4 @@ desc.gui.upgrade.speed= * §4Скорость§r: Стакается до 3-х + From 5bcfd368fc17b5bee31e4ae28c70dfd8a9c00662 Mon Sep 17 00:00:00 2001 From: Bob Date: Sun, 14 Dec 2025 21:17:34 +0100 Subject: [PATCH 15/22] yeag --- changelog | 5 ++ gradle.properties | 2 +- .../com/hbm/blocks/machine/rbmk/RBMKRod.java | 33 +++++++- .../java/com/hbm/creativetabs/WeaponTab.java | 5 +- .../hbm/inventory/fluid/tank/FluidTank.java | 8 +- .../inventory/recipes/PedestalRecipes.java | 10 +++ src/main/java/com/hbm/lib/HbmWorldGen.java | 82 +++++++++++-------- src/main/java/com/hbm/lib/RefStrings.java | 2 +- .../java/com/hbm/main/CraftingManager.java | 2 +- .../hbm/saveddata/AnnihilatorSavedData.java | 4 +- 10 files changed, 105 insertions(+), 48 deletions(-) diff --git a/changelog b/changelog index abd9b1e81..0ed93ec83 100644 --- a/changelog +++ b/changelog @@ -11,6 +11,7 @@ * In 528 mode, destroying quantities of certain items yield unique progression relevant blueprints ## Changed +* Updated chinese localization * Changed the way 528 mode works * May of the old tantalium requirements no longer exist since the assembler rework * Some important recipes have been moved to the precision assembler @@ -52,9 +53,13 @@ * Solidifying biogas into compressed biomass now yields 4x more, making the biogas route twice as efficient as simply compressing biomass * Finally removed the long deprecated ambience radiation generator and geothermal generator * Nerfed the ballistic jackets, as they are comically cheap and made some zombies impossible to kill in early game +* RBMK fuel rod items can now be inserted directly into fuel rods via right click, instead of having to open the GUI +* Containment boxes now use ferrouranium instead of raw U-238 +* Added missing recipes to two legendary weapons ## Fixed * Fixed gamebreaking issue causing crashes and world corruption where the multi detonator had its tooltip misspelled * Fixed panzerschreck equip animation not speeding up with the sawed off mod * Fixed FENSU not keeping its charge when broken * Removed skeletonizer reloading from `/ntmreload` as it wasn't usable for end users and just caused error messages on servers +* Added more null checks to world generation, hopefully preventing weird one-off crashes diff --git a/gradle.properties b/gradle.properties index 4c3fe0d0e..812f67c85 100644 --- a/gradle.properties +++ b/gradle.properties @@ -1,6 +1,6 @@ mod_version=1.0.27 # Empty build number makes a release type -mod_build_number=5526 +mod_build_number=5544 credits=HbMinecraft,\ \ rodolphito (explosion algorithms),\ diff --git a/src/main/java/com/hbm/blocks/machine/rbmk/RBMKRod.java b/src/main/java/com/hbm/blocks/machine/rbmk/RBMKRod.java index de5ef940d..ba5865e82 100644 --- a/src/main/java/com/hbm/blocks/machine/rbmk/RBMKRod.java +++ b/src/main/java/com/hbm/blocks/machine/rbmk/RBMKRod.java @@ -1,9 +1,13 @@ package com.hbm.blocks.machine.rbmk; import com.hbm.handler.BossSpawnHandler; +import com.hbm.items.machine.ItemRBMKLid; +import com.hbm.items.machine.ItemRBMKRod; +import com.hbm.main.MainRegistry; import com.hbm.tileentity.TileEntityProxyInventory; import com.hbm.tileentity.machine.rbmk.TileEntityRBMKRod; +import cpw.mods.fml.common.network.internal.FMLNetworkHandler; import net.minecraft.entity.player.EntityPlayer; import net.minecraft.tileentity.TileEntity; import net.minecraft.world.World; @@ -32,7 +36,34 @@ public class RBMKRod extends RBMKBase { @Override public boolean onBlockActivated(World world, int x, int y, int z, EntityPlayer player, int side, float hitX, float hitY, float hitZ) { BossSpawnHandler.markFBI(player); - return openInv(world, x, y, z, player); + + if(world.isRemote) return true; + + int[] pos = this.findCore(world, x, y, z); + if(pos == null) return false; + + TileEntity te = world.getTileEntity(pos[0], pos[1], pos[2]); + if(!(te instanceof TileEntityRBMKRod)) return false; + TileEntityRBMKRod rbmk = (TileEntityRBMKRod) te; + + if(player.getHeldItem() != null && player.getHeldItem().getItem() instanceof ItemRBMKLid) { + if(!rbmk.hasLid()) return false; + } + + if(player.getHeldItem() != null && player.getHeldItem().getItem() instanceof ItemRBMKRod && rbmk.slots[0] == null) { + rbmk.slots[0] = player.getHeldItem().copy(); + rbmk.slots[0].stackSize = 1; + player.getHeldItem().stackSize--; + world.playSoundEffect(x + 0.5, y + 0.5, z + 0.5, "hbm:item.upgradePlug", 1.0F, 1.0F); + return false; + } + + if(!player.isSneaking()) { + FMLNetworkHandler.openGui(player, MainRegistry.instance, 0, world, pos[0], pos[1], pos[2]); + return true; + } else { + return true; + } } @Override diff --git a/src/main/java/com/hbm/creativetabs/WeaponTab.java b/src/main/java/com/hbm/creativetabs/WeaponTab.java index 28801e152..c5179a53e 100644 --- a/src/main/java/com/hbm/creativetabs/WeaponTab.java +++ b/src/main/java/com/hbm/creativetabs/WeaponTab.java @@ -14,10 +14,7 @@ public class WeaponTab extends CreativeTabs { @Override public Item getTabIconItem() { - - if(ModItems.gun_maresleg != null) { - return ModItems.gun_maresleg; - } + if(ModItems.gun_greasegun != null) return ModItems.gun_greasegun; return Items.iron_pickaxe; } } diff --git a/src/main/java/com/hbm/inventory/fluid/tank/FluidTank.java b/src/main/java/com/hbm/inventory/fluid/tank/FluidTank.java index 9d60e8a2a..c968699a0 100644 --- a/src/main/java/com/hbm/inventory/fluid/tank/FluidTank.java +++ b/src/main/java/com/hbm/inventory/fluid/tank/FluidTank.java @@ -39,10 +39,10 @@ public class FluidTank implements Cloneable { loadingHandlers.add(new FluidLoaderInfinite()); } - FluidType type; - int fluid; - int maxFluid; - int pressure = 0; + protected FluidType type; + protected int fluid; + protected int maxFluid; + protected int pressure = 0; public FluidTank(FluidType type, int maxFluid) { this.type = type; diff --git a/src/main/java/com/hbm/inventory/recipes/PedestalRecipes.java b/src/main/java/com/hbm/inventory/recipes/PedestalRecipes.java index b643ac3b7..76dcbcd1a 100644 --- a/src/main/java/com/hbm/inventory/recipes/PedestalRecipes.java +++ b/src/main/java/com/hbm/inventory/recipes/PedestalRecipes.java @@ -56,6 +56,16 @@ public class PedestalRecipes extends SerializableRecipe { new ComparableStack(ModItems.scrap_nuclear), new ComparableStack(ModItems.gun_heavy_revolver), new ComparableStack(ModItems.scrap_nuclear), new ComparableStack(ModBlocks.chain, 16), new OreDictStack(CINNABAR.gem()), new ComparableStack(ModBlocks.chain, 16))); + register(new PedestalRecipe(new ItemStack(ModItems.gun_amat_subtlety), + new OreDictStack(STAR.ingot()), new OreDictStack(AL.plateCast()), new OreDictStack(STAR.ingot()), + new OreDictStack(AL.plateCast()), new ComparableStack(ModItems.gun_amat), new OreDictStack(AL.plateCast()), + new OreDictStack(STAR.ingot()), new OreDictStack(AL.plateCast()), new OreDictStack(STAR.ingot()))); + + register(new PedestalRecipe(new ItemStack(ModItems.gun_amat_penance), + new OreDictStack(STAR.ingot()), new OreDictStack(DURA.plateCast()), new OreDictStack(STAR.ingot()), + new ComparableStack(ModItems.weapon_mod_special, 1, EnumModSpecial.SILENCER), new ComparableStack(ModItems.gun_amat), new ComparableStack(ModItems.weapon_mod_special, 1, EnumModSpecial.FURNITURE_BLACK), + new OreDictStack(STAR.ingot()), new OreDictStack(DURA.plateCast()), new OreDictStack(STAR.ingot()))); + register(new PedestalRecipe(new ItemStack(ModItems.gun_flamer_daybreaker), new OreDictStack(GOLD.plateCast()), new ComparableStack(ModItems.canned_conserve, 1, EnumFoodType.JIZZ), new OreDictStack(GOLD.plateCast()), new OreDictStack(P_WHITE.ingot()), new ComparableStack(ModItems.gun_flamer), new OreDictStack(P_WHITE.ingot()), diff --git a/src/main/java/com/hbm/lib/HbmWorldGen.java b/src/main/java/com/hbm/lib/HbmWorldGen.java index 9f0510e48..d6071cefc 100644 --- a/src/main/java/com/hbm/lib/HbmWorldGen.java +++ b/src/main/java/com/hbm/lib/HbmWorldGen.java @@ -305,8 +305,11 @@ public class HbmWorldGen implements IWorldGenerator { if(world.getBlock(x, g - 1, z).canPlaceTorchOnTop(world, x, g - 1, z)) { world.setBlock(x, g, z, ModBlocks.mine_ap); - TileEntityLandmine landmine = (TileEntityLandmine) world.getTileEntity(x, g, z); - landmine.waitingForPlayer = true; + TileEntity tile = world.getTileEntity(x, g, z); + if(tile instanceof TileEntityLandmine) { + TileEntityLandmine landmine = (TileEntityLandmine) tile; + landmine.waitingForPlayer = true; + } if(GeneralConfig.enableDebugMode) MainRegistry.logger.info("[Debug] Successfully spawned landmine at " + x + " " + g + " " + z); break; } @@ -323,8 +326,11 @@ public class HbmWorldGen implements IWorldGenerator { world.setBlock(x, y, z, ModBlocks.lantern_behemoth, 12, 3); MultiblockHandlerXR.fillSpace(world, x, y, z, new int[] {4, 0, 0, 0, 0, 0}, ModBlocks.lantern_behemoth, ForgeDirection.NORTH); - TileEntityLanternBehemoth lantern = (TileEntityLanternBehemoth) world.getTileEntity(x, y, z); - lantern.isBroken = true; + TileEntity tile = world.getTileEntity(x, y, z); + if(tile instanceof TileEntityLanternBehemoth) { + TileEntityLanternBehemoth lantern = (TileEntityLanternBehemoth) tile; + lantern.isBroken = true; + } if(rand.nextInt(2) == 0) { LootGenerator.setBlock(world, x, y, z - 2); @@ -342,8 +348,11 @@ public class HbmWorldGen implements IWorldGenerator { int y = world.getHeightValue(x, z); if(world.getBlock(x, y - 1, z).canPlaceTorchOnTop(world, x, y - 1, z)) { world.setBlock(x, y, z, ModBlocks.mine_he); - TileEntityLandmine landmine = (TileEntityLandmine) world.getTileEntity(x, y, z); - landmine.waitingForPlayer = true; + TileEntity tile = world.getTileEntity(x, y, z); + if(tile instanceof TileEntityLandmine) { + TileEntityLandmine landmine = (TileEntityLandmine) tile; + landmine.waitingForPlayer = true; + } } } @@ -373,10 +382,10 @@ public class HbmWorldGen implements IWorldGenerator { if(world.getBlock(x, y + 1, z).canPlaceTorchOnTop(world, x, y + 1, z)) { world.setBlock(x, y, z, ModBlocks.soyuz_capsule, 3, 2); - - TileEntitySoyuzCapsule cap = (TileEntitySoyuzCapsule)world.getTileEntity(x, y, z); - - if(cap != null) { + TileEntity tile = world.getTileEntity(x, y, z); + + if(tile instanceof TileEntitySoyuzCapsule) { + TileEntitySoyuzCapsule cap = (TileEntitySoyuzCapsule) tile; cap.setInventorySlotContents(rand.nextInt(cap.getSizeInventory()), new ItemStack(ModItems.record_glass)); } @@ -420,33 +429,36 @@ public class HbmWorldGen implements IWorldGenerator { if(world.getBlock(x, y - 1, z).canPlaceTorchOnTop(world, x, y - 1, z)) { world.setBlock(x, y, z, ModBlocks.safe, rand.nextInt(4) + 2, 2); - TileEntitySafe safe = (TileEntitySafe) world.getTileEntity(x, y, z); - - switch(rand.nextInt(10)) { - case 0: case 1: case 2: case 3: - safe.setMod(1); - WeightedRandomChestContent.generateChestContents(rand, ItemPool.getPool(ItemPoolsSingle.POOL_VAULT_RUSTY), safe, rand.nextInt(4) + 3); - break; - case 4: case 5: case 6: - safe.setMod(0.1); - WeightedRandomChestContent.generateChestContents(rand, ItemPool.getPool(ItemPoolsSingle.POOL_VAULT_STANDARD), safe, rand.nextInt(3) + 2); - break; - case 7: case 8: - safe.setMod(0.02); - WeightedRandomChestContent.generateChestContents(rand, ItemPool.getPool(ItemPoolsSingle.POOL_VAULT_REINFORCED), safe, rand.nextInt(3) + 1); - break; - case 9: - safe.setMod(0.0); - WeightedRandomChestContent.generateChestContents(rand, ItemPool.getPool(ItemPoolsSingle.POOL_VAULT_UNBREAKABLE), safe, rand.nextInt(2) + 1); - break; + + TileEntity tile = world.getTileEntity(x, y, z); + if(tile instanceof TileEntitySafe) { + TileEntitySafe safe = (TileEntitySafe) tile; + + switch(rand.nextInt(10)) { + case 0: case 1: case 2: case 3: + safe.setMod(1); + WeightedRandomChestContent.generateChestContents(rand, ItemPool.getPool(ItemPoolsSingle.POOL_VAULT_RUSTY), safe, rand.nextInt(4) + 3); + break; + case 4: case 5: case 6: + safe.setMod(0.1); + WeightedRandomChestContent.generateChestContents(rand, ItemPool.getPool(ItemPoolsSingle.POOL_VAULT_STANDARD), safe, rand.nextInt(3) + 2); + break; + case 7: case 8: + safe.setMod(0.02); + WeightedRandomChestContent.generateChestContents(rand, ItemPool.getPool(ItemPoolsSingle.POOL_VAULT_REINFORCED), safe, rand.nextInt(3) + 1); + break; + case 9: + safe.setMod(0.0); + WeightedRandomChestContent.generateChestContents(rand, ItemPool.getPool(ItemPoolsSingle.POOL_VAULT_UNBREAKABLE), safe, rand.nextInt(2) + 1); + break; + } + + safe.setPins(rand.nextInt(999) + 1); + safe.lock(); + + if(rand.nextInt(10) < 3) safe.fillWithSpiders(); // 30% chance; those safes have been sitting there for ages, they gotta have some spiders in them } - safe.setPins(rand.nextInt(999) + 1); - safe.lock(); - - if(rand.nextInt(10) < 3) // 30% chance; those safes have been sitting there for ages, they gotta have some spiders in them - safe.fillWithSpiders(); - if(GeneralConfig.enableDebugMode) MainRegistry.logger.info("[Debug] Successfully spawned safe at " + x + " " + (y + 1) +" " + z); } diff --git a/src/main/java/com/hbm/lib/RefStrings.java b/src/main/java/com/hbm/lib/RefStrings.java index 93c6325d8..41e0e1fdf 100644 --- a/src/main/java/com/hbm/lib/RefStrings.java +++ b/src/main/java/com/hbm/lib/RefStrings.java @@ -3,7 +3,7 @@ package com.hbm.lib; public class RefStrings { public static final String MODID = "hbm"; public static final String NAME = "Hbm's Nuclear Tech Mod"; - public static final String VERSION = "1.0.27 BETA (5526)"; + public static final String VERSION = "1.0.27 BETA (5544)"; //HBM's Beta Naming Convention: //V T (X) //V -> next release version diff --git a/src/main/java/com/hbm/main/CraftingManager.java b/src/main/java/com/hbm/main/CraftingManager.java index 298832266..d45980a8b 100644 --- a/src/main/java/com/hbm/main/CraftingManager.java +++ b/src/main/java/com/hbm/main/CraftingManager.java @@ -665,7 +665,7 @@ public class CraftingManager { addRecipeAuto(new ItemStack(ModBlocks.spikes, 4), new Object[] { "BBB", "BBB", "TTT", 'B', STEEL.bolt(), 'T', STEEL.ingot() }); addRecipeAuto(new ItemStack(ModItems.custom_fall, 1), new Object[] { "IIP", "CHW", "IIP", 'I', ANY_RUBBER.ingot(), 'P', BIGMT.plate(), 'C', DictFrame.fromOne(ModItems.circuit, EnumCircuitType.ADVANCED), 'H', STEEL.shell(), 'W', ModItems.coil_copper }); addRecipeAuto(new ItemStack(ModBlocks.machine_controller, 1), new Object[] { "TDT", "DCD", "TDT", 'T', ANY_RESISTANTALLOY.ingot(), 'D', ModItems.crt_display, 'C', DictFrame.fromOne(ModItems.circuit, EnumCircuitType.ADVANCED) }); - addRecipeAuto(new ItemStack(ModItems.containment_box, 1), new Object[] { "LUL", "UCU", "LUL", 'L', PB.plate(), 'U', U238.billet(), 'C', ModBlocks.crate_steel }); + addRecipeAuto(new ItemStack(ModItems.containment_box, 1), new Object[] { "LUL", "UCU", "LUL", 'L', PB.plate(), 'U', FERRO.ingot(), 'C', ModBlocks.crate_steel }); addRecipeAuto(new ItemStack(ModItems.casing_bag, 1), new Object[] { " L ", "LGL", " L ", 'L', Items.leather, 'G', GUNMETAL.plate() }); addRecipeAuto(new ItemStack(ModItems.casing_bag, 1), new Object[] { " L ", "LGL", " L ", 'L', ANY_RUBBER.ingot(), 'G', GUNMETAL.plate() }); addRecipeAuto(new ItemStack(ModItems.ammo_bag, 1), new Object[] { "LLL", "MGM", "LLL", 'L', Items.leather, 'G', WEAPONSTEEL.plate(), 'M', WEAPONSTEEL.mechanism() }); diff --git a/src/main/java/com/hbm/saveddata/AnnihilatorSavedData.java b/src/main/java/com/hbm/saveddata/AnnihilatorSavedData.java index 5dc4cfeb7..618867431 100644 --- a/src/main/java/com/hbm/saveddata/AnnihilatorSavedData.java +++ b/src/main/java/com/hbm/saveddata/AnnihilatorSavedData.java @@ -148,6 +148,7 @@ public class AnnihilatorSavedData extends WorldSavedData { serializeKey(compound, entry.getKey()); compound.setByteArray("amount", entry.getValue().toByteArray()); nbt.appendTag(compound); + System.out.println("Serializing " + entry.getValue().toString() + " of " + entry.getKey()); } } @@ -157,6 +158,7 @@ public class AnnihilatorSavedData extends WorldSavedData { NBTTagCompound compound = (NBTTagCompound) nbt.tagList.get(i); Object key = deserializeKey(compound); if(key != null) this.items.put(key, new BigInteger(compound.getByteArray("amount"))); + System.out.println("Deserializing " + new BigInteger(compound.getByteArray("amount")).toString() + " of " + key); } } catch(Throwable ex) { } // because world data can be dented to all fucking hell and back } @@ -180,7 +182,7 @@ public class AnnihilatorSavedData extends WorldSavedData { if(key instanceof FluidType) { // 2 FluidType type = (FluidType) key; nbt.setByte("key", (byte) 2); - nbt.setString("fluid", type.getUnlocalizedName()); + nbt.setString("fluid", type.getName()); } if(key instanceof String) { // 3 From 0fe125251b416f1fc9a4f44a2b536f54ea038173 Mon Sep 17 00:00:00 2001 From: Bob Date: Sun, 14 Dec 2025 21:34:33 +0100 Subject: [PATCH 16/22] nobody saw a thing --- src/main/java/com/hbm/config/GeneralConfig.java | 4 ---- 1 file changed, 4 deletions(-) diff --git a/src/main/java/com/hbm/config/GeneralConfig.java b/src/main/java/com/hbm/config/GeneralConfig.java index 8dce4f139..ef9f3dd06 100644 --- a/src/main/java/com/hbm/config/GeneralConfig.java +++ b/src/main/java/com/hbm/config/GeneralConfig.java @@ -157,10 +157,6 @@ public class GeneralConfig { enableLBSMSafeCrates = CommonConfig.createConfigBool(config, CATEGORY_LBSM, "LBSM_safeCrates", "When enabled, prevents crates from becoming radioactive", true); enableLBSMSafeMEDrives = CommonConfig.createConfigBool(config, CATEGORY_LBSM, "LBSM_safeMEDrives", "When enabled, prevents ME Drives and Portable Cells from becoming radioactive", true); schrabRate = CommonConfig.createConfigInt(config, CATEGORY_LBSM, "LBSM_schrabOreRate", "Changes the amount of uranium ore needed on average to create one schrabidium ore using nukes. Standard mode value is 100", 20); - - /// ! ! ! /// - enable528 = true; - /// ! ! ! /// if(enable528) enableLBSM = false; From fa12cfeec162c52bd403b01d49970f015bb2b305 Mon Sep 17 00:00:00 2001 From: Boblet Date: Mon, 15 Dec 2025 11:03:05 +0100 Subject: [PATCH 17/22] ow --- changelog | 64 +---------- .../hbm/handler/nei/VacuumRecipeHandler.java | 4 +- .../inventory/recipes/AnnihilatorRecipes.java | 2 + .../recipes/AssemblyMachineRecipes.java | 24 ++-- .../hbm/inventory/recipes/PrecAssRecipes.java | 7 ++ .../inventory/recipes/RefineryRecipes.java | 43 ------- .../recipes/VacuumRefineryRecipes.java | 108 ++++++++++++++++++ .../recipes/loader/SerializableRecipe.java | 1 + .../oil/TileEntityMachineVacuumDistill.java | 8 +- .../hbm/textures/gui/processing/gui_mixer.png | Bin 3194 -> 3236 bytes 10 files changed, 138 insertions(+), 123 deletions(-) create mode 100644 src/main/java/com/hbm/inventory/recipes/VacuumRefineryRecipes.java diff --git a/changelog b/changelog index 0ed93ec83..a75b72d1f 100644 --- a/changelog +++ b/changelog @@ -1,65 +1,5 @@ -## Added -* Precision assembler - * Can create blueprint folders - * Used extensively in 528 mode - * Replaces recipes for micro chips, controllers and upgrades - * All recipes only have a chance to be completed, broken items yielded otherwise need to be recycled - * Can do precise recipes, but it very unreliable. Many recipes have a high chance of outputting a broken version of the made item - * Broken items can be recycled in the precision assembler, returning some of the ingredients -* Annihilator - * Destroys items and fluids and keeps track of how much has been destroyed - * In 528 mode, destroying quantities of certain items yield unique progression relevant blueprints - ## Changed -* Updated chinese localization -* Changed the way 528 mode works - * May of the old tantalium requirements no longer exist since the assembler rework - * Some important recipes have been moved to the precision assembler - * Many key "milestone" recipes now require 528 mode exclusive blueprints - * 528 exclusive blueprints are obtained from annihilating large quantities of certain items - * AE2 blocks, by default, will detonate when interacted with - * Synergizes with expensive mode, many recycling probabilities of the precision assembler are massively lowered with expensive mode enabled, increasing effective cost massively - * :) -* New fusion reactor and particle accelerator parts now have OpenComputers compat -* Irradiation recipe config now has the `fusionOnly` flag, preventing the recipe from being done in the RBMK irradiation channel -* Removed legacy fusion reactor parts from the creative inventory -* Removed the legacy fusion reactor core components -* If a legacy fusion reactor explodes, it is now destroyed forever and cannot be reassembled -* Legacy fusion reactors no longer disassemble when being mined, rather they drop as one block -* Legacy templates are no longer listed in the creative tab -* Removed the old meltdown achievement -* Eating canned fists now hurts -* Due to repeated incidents regarding canned black holes, the mechanics have changed - * Vortices spawned now have a flag set that prevents them from breaking blocks entirely - * Vortices decay 4x faster than those spawned by singularity items, it should last about 2.5 seconds in total - * It will still very much kill you instantly and destroy your items -* Storage crates can no longer be placed into containment boxes -* Expensive mode now has a new microcrafting item, being made from multiple types of plastic -* Fusion reactor parts now have expensive mode recipes -* Both types of blueprint booklets are now obtainable via precision assembler - * The recipes are lengthy, require a lot of power and have a low chance of succeeding - * Recipes require the divine pufferfish, driver of all innovation - * Where can you get this much pufferfish? Go figure it out -* Chance output stacks no longer do an RNG call to determine if the whole stack is provided or none, rather, each single item of the stack has its own RNG call -* Hiperf bedrock ore processing of heavy metals now yields tantalium -* Bedrock coltan is no longer a dedicated bedrock ore type -* Alt fire is now available for 10ga double barrel shotguns, allowing only a single barrel to be fired at once -* The custom mapping function on RoR torches now supports up to 32 characters instead of 15 -* Drainage pipes, flare stacks and the annihilator now have the default fluid priority of LOW, meaning that excess removal using those no longer requires flow control pumps -* Halved base energy consumption for the solidifier and liquefactor -* Changed cracking tower recipe to use desh instead of polymer, as well as a little bit more niobium in favor of all the clay catalysts it used to have -* Iron and corroded barrels have been deprecated and are no longer obtainable -* Steel barrels and 256k tanks no longer use tar in their recipes (except in expensive mode) -* Solidifying biogas into compressed biomass now yields 4x more, making the biogas route twice as efficient as simply compressing biomass -* Finally removed the long deprecated ambience radiation generator and geothermal generator -* Nerfed the ballistic jackets, as they are comically cheap and made some zombies impossible to kill in early game -* RBMK fuel rod items can now be inserted directly into fuel rods via right click, instead of having to open the GUI -* Containment boxes now use ferrouranium instead of raw U-238 -* Added missing recipes to two legendary weapons +* Changed the recipe change button on the mixer to be bright red with arrows on it (since the "C" looked too much like it meant "clear") ## Fixed -* Fixed gamebreaking issue causing crashes and world corruption where the multi detonator had its tooltip misspelled -* Fixed panzerschreck equip animation not speeding up with the sawed off mod -* Fixed FENSU not keeping its charge when broken -* Removed skeletonizer reloading from `/ntmreload` as it wasn't usable for end users and just caused error messages on servers -* Added more null checks to world generation, hopefully preventing weird one-off crashes +* Fixed atomic clock precision assembler recipe not working \ No newline at end of file diff --git a/src/main/java/com/hbm/handler/nei/VacuumRecipeHandler.java b/src/main/java/com/hbm/handler/nei/VacuumRecipeHandler.java index 527bcc7b5..ff7118dc3 100644 --- a/src/main/java/com/hbm/handler/nei/VacuumRecipeHandler.java +++ b/src/main/java/com/hbm/handler/nei/VacuumRecipeHandler.java @@ -1,12 +1,12 @@ package com.hbm.handler.nei; import com.hbm.blocks.ModBlocks; -import com.hbm.inventory.recipes.RefineryRecipes; +import com.hbm.inventory.recipes.VacuumRefineryRecipes; public class VacuumRecipeHandler extends NEIUniversalHandler { public VacuumRecipeHandler() { - super("Vacuum Refinery", ModBlocks.machine_vacuum_distill, RefineryRecipes.getVacuumRecipe()); + super("Vacuum Refinery", ModBlocks.machine_vacuum_distill, VacuumRefineryRecipes.getVacuumRecipe()); } @Override diff --git a/src/main/java/com/hbm/inventory/recipes/AnnihilatorRecipes.java b/src/main/java/com/hbm/inventory/recipes/AnnihilatorRecipes.java index d184a28b8..2a1ae355d 100644 --- a/src/main/java/com/hbm/inventory/recipes/AnnihilatorRecipes.java +++ b/src/main/java/com/hbm/inventory/recipes/AnnihilatorRecipes.java @@ -45,6 +45,7 @@ public class AnnihilatorRecipes extends SerializableRecipe { * RUBBER -> FRACKER (ASSEM) * URANIUM -> GASCENT (ASSEM) * FERRO -> RBMK (ASSEM) + * STRONTIUM -> ATOMIC CLOCK (PRECASS) * BISMUTH -> BIS CHIPS (PRECASS) * HARDPLASTIC -> OIL 3.5 (ASSEM) * TCALLOY -> FUSION, WATZ (ASSEM) @@ -67,6 +68,7 @@ public class AnnihilatorRecipes extends SerializableRecipe { recipes.put(ANY_PLASTIC.ingot(), new AnnihilatorRecipe(new Pair(new BigInteger("512"), ItemBlueprints.make(GenericRecipes.POOL_PREFIX_528 + "plastic")))); recipes.put(RUBBER.ingot(), new AnnihilatorRecipe(new Pair(new BigInteger("512"), ItemBlueprints.make(GenericRecipes.POOL_PREFIX_528 + "rubber")))); recipes.put(FERRO.ingot(), new AnnihilatorRecipe(new Pair(new BigInteger("1024"), ItemBlueprints.make(GenericRecipes.POOL_PREFIX_528 + "ferrouranium")))); + recipes.put(SR.dust(), new AnnihilatorRecipe(new Pair(new BigInteger("256"), ItemBlueprints.make(GenericRecipes.POOL_PREFIX_528 + "strontium")))); recipes.put(ANY_HARDPLASTIC.ingot(), new AnnihilatorRecipe(new Pair(new BigInteger("1024"), ItemBlueprints.make(GenericRecipes.POOL_PREFIX_528 + "hardplastic")))); recipes.put(ANY_RESISTANTALLOY.ingot(), new AnnihilatorRecipe(new Pair(new BigInteger("1024"), ItemBlueprints.make(GenericRecipes.POOL_PREFIX_528 + "tcalloy")))); recipes.put(ModItems.powder_chlorophyte, new AnnihilatorRecipe(new Pair(new BigInteger("1024"), ItemBlueprints.make(GenericRecipes.POOL_PREFIX_528 + "chlorophyte")))); diff --git a/src/main/java/com/hbm/inventory/recipes/AssemblyMachineRecipes.java b/src/main/java/com/hbm/inventory/recipes/AssemblyMachineRecipes.java index 34633620f..74bc229d0 100644 --- a/src/main/java/com/hbm/inventory/recipes/AssemblyMachineRecipes.java +++ b/src/main/java/com/hbm/inventory/recipes/AssemblyMachineRecipes.java @@ -602,50 +602,50 @@ public class AssemblyMachineRecipes extends GenericRecipes { this.register(new GenericRecipe("ass.icfcell").setup(200, 100).outputItems(new ItemStack(ModBlocks.icf_laser_component, 1, EnumICFPart.CELL.ordinal())) .inputItems(new ComparableStack(ModItems.ingot_cft, 2), new OreDictStack(ANY_BISMOIDBRONZE.plateCast(), 4), new ComparableStack(ModBlocks.glass_quartz, 16)) .inputItemsEx(new ComparableStack(ModItems.item_expensive, 2, EnumExpensiveType.BRONZE_TUBES), new ComparableStack(ModItems.ingot_cft, 8), new ComparableStack(ModBlocks.glass_quartz, 16)) - .setPools(GenericRecipes.POOL_PREFIX_528 + "chlorophyte")); + .setPools528(GenericRecipes.POOL_PREFIX_528 + "chlorophyte")); this.register(new GenericRecipe("ass.icfemitter").setup(200, 100).outputItems(new ItemStack(ModBlocks.icf_laser_component, 1, EnumICFPart.EMITTER.ordinal())) .inputItems(new OreDictStack(W.plateWelded(), 4), new OreDictStack(MAGTUNG.wireDense(), 16)) .inputItemsEx(new OreDictStack(W.plateWelded(), 8), new OreDictStack(MAGTUNG.wireDense(), 16)) .inputFluids(new FluidStack(Fluids.XENON, 16_000)) - .setPools(GenericRecipes.POOL_PREFIX_528 + "chlorophyte")); + .setPools528(GenericRecipes.POOL_PREFIX_528 + "chlorophyte")); this.register(new GenericRecipe("ass.icfcapacitor").setup(200, 100).outputItems(new ItemStack(ModBlocks.icf_laser_component, 1, EnumICFPart.CAPACITOR.ordinal())) .inputItems(new OreDictStack(ANY_RESISTANTALLOY.plateWelded(), 1), new OreDictStack(ND.wireDense(), 16), new OreDictStack(SBD.wireDense(), 2)) .inputItemsEx(new ComparableStack(ModItems.item_expensive, 3, EnumExpensiveType.FERRO_PLATING), new OreDictStack(ND.wireDense(), 16), new OreDictStack(SBD.wireDense(), 2)) - .setPools(GenericRecipes.POOL_PREFIX_528 + "chlorophyte")); + .setPools528(GenericRecipes.POOL_PREFIX_528 + "chlorophyte")); this.register(new GenericRecipe("ass.icfturbo").setup(200, 100).outputItems(new ItemStack(ModBlocks.icf_laser_component, 1, EnumICFPart.TURBO.ordinal())) .inputItems(new OreDictStack(ANY_RESISTANTALLOY.plateWelded(), 2), new OreDictStack(DNT.wireDense(), 4), new OreDictStack(SBD.wireDense(), 4)) .inputItemsEx(new OreDictStack(ANY_RESISTANTALLOY.plateWelded(), 8), new OreDictStack(DNT.wireDense(), 8), new OreDictStack(SBD.wireDense(), 4)) - .setPools(GenericRecipes.POOL_PREFIX_528 + "chlorophyte")); + .setPools528(GenericRecipes.POOL_PREFIX_528 + "chlorophyte")); this.register(new GenericRecipe("ass.icfcasing").setup(200, 100).outputItems(new ItemStack(ModBlocks.icf_laser_component, 1, EnumICFPart.CASING.ordinal())) .inputItems(new OreDictStack(ANY_BISMOIDBRONZE.plateCast(), 4), new OreDictStack(BIGMT.plateCast(), 4), new OreDictStack(ANY_HARDPLASTIC.ingot(), 16)) .inputItemsEx(new ComparableStack(ModItems.item_expensive, 4, EnumExpensiveType.BRONZE_TUBES), new OreDictStack(BIGMT.plateCast(), 4), new OreDictStack(ANY_HARDPLASTIC.ingot(), 16)) - .setPools(GenericRecipes.POOL_PREFIX_528 + "chlorophyte")); + .setPools528(GenericRecipes.POOL_PREFIX_528 + "chlorophyte")); this.register(new GenericRecipe("ass.icfport").setup(200, 100).outputItems(new ItemStack(ModBlocks.icf_laser_component, 1, EnumICFPart.PORT.ordinal())) .inputItems(new OreDictStack(ANY_BISMOIDBRONZE.plateCast(), 4), new OreDictStack(ANY_HARDPLASTIC.ingot(), 16), new OreDictStack(ND.wireDense(), 16)) .inputItemsEx(new ComparableStack(ModItems.item_expensive, 4, EnumExpensiveType.BRONZE_TUBES), new OreDictStack(ANY_HARDPLASTIC.ingot(), 16), new OreDictStack(ND.wireDense(), 16)) - .setPools(GenericRecipes.POOL_PREFIX_528 + "chlorophyte")); + .setPools528(GenericRecipes.POOL_PREFIX_528 + "chlorophyte")); this.register(new GenericRecipe("ass.icfcontroller").setup(200, 100).outputItems(new ItemStack(ModBlocks.icf_controller, 1)) .inputItems(new ComparableStack(ModItems.ingot_cft, 16), new OreDictStack(ANY_BISMOIDBRONZE.plateCast(), 4), new OreDictStack(ANY_HARDPLASTIC.ingot(), 16), new ComparableStack(ModItems.circuit, 16, EnumCircuitType.BISMOID)) .inputItemsEx(new ComparableStack(ModItems.item_expensive, 4, EnumExpensiveType.BRONZE_TUBES), new ComparableStack(ModItems.ingot_cft, 16), new OreDictStack(ANY_HARDPLASTIC.ingot(), 16), new ComparableStack(ModItems.circuit, 32, EnumCircuitType.BISMOID), new ComparableStack(ModItems.item_expensive, 4, EnumExpensiveType.COMPUTER)) - .setPools(GenericRecipes.POOL_PREFIX_528 + "chlorophyte")); + .setPools528(GenericRecipes.POOL_PREFIX_528 + "chlorophyte")); this.register(new GenericRecipe("ass.icfscaffold").setup(200, 100).outputItems(new ItemStack(ModBlocks.icf_component, 1, 0)) .inputItems(new OreDictStack(STEEL.plateWelded(), 4), new OreDictStack(TI.plateWelded(), 2)) .inputItemsEx(new ComparableStack(ModItems.item_expensive, 8, EnumExpensiveType.STEEL_PLATING)) - .setPools(GenericRecipes.POOL_PREFIX_528 + "chlorophyte")); + .setPools528(GenericRecipes.POOL_PREFIX_528 + "chlorophyte")); this.register(new GenericRecipe("ass.icfvessel").setup(200, 100).outputItems(new ItemStack(ModBlocks.icf_component, 1, 1)) .inputItems(new ComparableStack(ModItems.ingot_cft, 1), new OreDictStack(CMB.plateCast(), 1), new OreDictStack(W.plateWelded(), 2)) - .setPools(GenericRecipes.POOL_PREFIX_528 + "chlorophyte")); + .setPools528(GenericRecipes.POOL_PREFIX_528 + "chlorophyte")); this.register(new GenericRecipe("ass.icfstructural").setup(200, 100).outputItems(new ItemStack(ModBlocks.icf_component, 1, 3)) .inputItems(new OreDictStack(STEEL.plateWelded(), 2), new OreDictStack(CU.plateWelded(), 2), new OreDictStack(ANY_BISMOIDBRONZE.plateCast(), 1)) .inputItemsEx(new ComparableStack(ModItems.item_expensive, 1, EnumExpensiveType.BRONZE_TUBES), new OreDictStack(STEEL.plateWelded(), 8)) - .setPools(GenericRecipes.POOL_PREFIX_528 + "chlorophyte")); + .setPools528(GenericRecipes.POOL_PREFIX_528 + "chlorophyte")); this.register(new GenericRecipe("ass.icfcore").setup(1_200, 100).outputItems(new ItemStack(ModBlocks.struct_icf_core, 1)) .inputItems(new OreDictStack(CMB.plateWelded(), 16), new OreDictStack(ANY_RESISTANTALLOY.plateWelded(), 16), new OreDictStack(ANY_BISMOIDBRONZE.plateCast(), 16), new OreDictStack(SBD.wireDense(), 32), new ComparableStack(ModItems.circuit, 32, EnumCircuitType.BISMOID), new ComparableStack(ModItems.circuit, 16, EnumCircuitType.QUANTUM)) .inputItemsEx(new ComparableStack(ModItems.item_expensive, 16, EnumExpensiveType.BRONZE_TUBES), new OreDictStack(CMB.plateWelded(), 16), new OreDictStack(SBD.wireDense(), 32), new ComparableStack(ModItems.circuit, 32, EnumCircuitType.QUANTUM), new ComparableStack(ModItems.item_expensive, 16, EnumExpensiveType.COMPUTER)) - .setPools(GenericRecipes.POOL_PREFIX_528 + "chlorophyte")); + .setPools528(GenericRecipes.POOL_PREFIX_528 + "chlorophyte")); this.register(new GenericRecipe("ass.icfpress").setup(200, 100).outputItems(new ItemStack(ModBlocks.machine_icf_press, 1)) .inputItems(new OreDictStack(GOLD.plateCast(), 8), new ComparableStack(ModItems.motor, 4), new ComparableStack(ModItems.circuit, 1, EnumCircuitType.BISMOID)) - .setPools(GenericRecipes.POOL_PREFIX_528 + "chlorophyte")); + .setPools528(GenericRecipes.POOL_PREFIX_528 + "chlorophyte")); // upgrades if(no528) { diff --git a/src/main/java/com/hbm/inventory/recipes/PrecAssRecipes.java b/src/main/java/com/hbm/inventory/recipes/PrecAssRecipes.java index ee47ebc85..6c06125da 100644 --- a/src/main/java/com/hbm/inventory/recipes/PrecAssRecipes.java +++ b/src/main/java/com/hbm/inventory/recipes/PrecAssRecipes.java @@ -65,6 +65,13 @@ public class PrecAssRecipes extends GenericRecipes { .inputFluids(new FluidStack(Fluids.HELIUM4, 4_000)).setPools(POOL_PREFIX_528 + "chip_quantum"), DictFrame.fromOne(ModItems.circuit, EnumCircuitType.CHIP_QUANTUM), 50, GeneralConfig.enableExpensiveMode ? 10 : 50); + registerPair(new GenericRecipe("precass.atomic_clock").setup(200, 2_000L) + .inputItems(new ComparableStack(ModItems.circuit, 8, EnumCircuitType.CHIP), + new OreDictStack(ANY_PLASTIC.ingot(), 4), + new OreDictStack(ZR.wireFine(), 8), + new OreDictStack(SR.dust(), 1)).setPools(POOL_PREFIX_528 + "strontium"), + DictFrame.fromOne(ModItems.circuit, EnumCircuitType.ATOMIC_CLOCK), 50, GeneralConfig.enableExpensiveMode ? 10 : 50); + registerPair(new GenericRecipe("precass.controller").setup(400, 15_000L) .inputItems(new ComparableStack(ModItems.circuit, 32, EnumCircuitType.CHIP), new ComparableStack(ModItems.circuit, 32, EnumCircuitType.CAPACITOR), diff --git a/src/main/java/com/hbm/inventory/recipes/RefineryRecipes.java b/src/main/java/com/hbm/inventory/recipes/RefineryRecipes.java index edf2d005b..7b913597c 100644 --- a/src/main/java/com/hbm/inventory/recipes/RefineryRecipes.java +++ b/src/main/java/com/hbm/inventory/recipes/RefineryRecipes.java @@ -12,7 +12,6 @@ import com.hbm.items.ItemEnums.EnumTarType; import com.hbm.items.ModItems; import com.hbm.items.machine.ItemFluidIcon; import com.hbm.util.ItemStackUtil; -import com.hbm.util.Tuple.Quartet; import com.hbm.util.Tuple.Quintet; import net.minecraft.item.ItemStack; @@ -38,13 +37,7 @@ public class RefineryRecipes { public static final int crackds_frac_aroma = 15; public static final int crackds_frac_unsat = 15; - public static final int vac_frac_heavy = 40; - public static final int vac_frac_reform = 25; - public static final int vac_frac_light = 20; - public static final int vac_frac_sour = 15; - private static Map> refinery = new HashMap(); - private static Map> vacuum = new HashMap(); public static HashMap getRefineryRecipe() { @@ -66,25 +59,6 @@ public class RefineryRecipes { return recipes; } - public static HashMap getVacuumRecipe() { - - HashMap recipes = new HashMap(); - - for(Entry> recipe : vacuum.entrySet()) { - - Quartet fluids = recipe.getValue(); - - recipes.put(ItemFluidIcon.make(recipe.getKey(), 1000, 2), - new ItemStack[] { - ItemFluidIcon.make(fluids.getW().type, fluids.getW().fill * 10), - ItemFluidIcon.make(fluids.getX().type, fluids.getX().fill * 10), - ItemFluidIcon.make(fluids.getY().type, fluids.getY().fill * 10), - ItemFluidIcon.make(fluids.getZ().type, fluids.getZ().fill * 10) }); - } - - return recipes; - } - public static void registerRefinery() { refinery.put(Fluids.HOTOIL, new Quintet( new FluidStack(Fluids.HEAVYOIL, oil_frac_heavy), @@ -114,26 +88,9 @@ public class RefineryRecipes { new FluidStack(Fluids.UNSATURATEDS, crackds_frac_unsat), DictFrame.fromOne(ModItems.oil_tar, EnumTarType.PARAFFIN) )); - - vacuum.put(Fluids.OIL, new Quartet( - new FluidStack(Fluids.HEAVYOIL_VACUUM, vac_frac_heavy), - new FluidStack(Fluids.REFORMATE, vac_frac_reform), - new FluidStack(Fluids.LIGHTOIL_VACUUM, vac_frac_light), - new FluidStack(Fluids.SOURGAS, vac_frac_sour) - )); - vacuum.put(Fluids.OIL_DS, new Quartet( - new FluidStack(Fluids.HEAVYOIL_VACUUM, vac_frac_heavy), - new FluidStack(Fluids.REFORMATE, vac_frac_reform), - new FluidStack(Fluids.LIGHTOIL_VACUUM, vac_frac_light), - new FluidStack(Fluids.REFORMGAS, vac_frac_sour) - )); } public static Quintet getRefinery(FluidType oil) { return refinery.get(oil); } - - public static Quartet getVacuum(FluidType oil) { - return vacuum.get(oil); - } } diff --git a/src/main/java/com/hbm/inventory/recipes/VacuumRefineryRecipes.java b/src/main/java/com/hbm/inventory/recipes/VacuumRefineryRecipes.java new file mode 100644 index 000000000..74e8c64d5 --- /dev/null +++ b/src/main/java/com/hbm/inventory/recipes/VacuumRefineryRecipes.java @@ -0,0 +1,108 @@ +package com.hbm.inventory.recipes; + +import java.io.IOException; +import java.util.HashMap; +import java.util.Map.Entry; + +import com.google.gson.JsonElement; +import com.google.gson.JsonObject; +import com.google.gson.stream.JsonWriter; +import com.hbm.inventory.FluidStack; +import com.hbm.inventory.fluid.FluidType; +import com.hbm.inventory.fluid.Fluids; +import com.hbm.inventory.recipes.loader.SerializableRecipe; +import com.hbm.items.machine.ItemFluidIcon; + +import net.minecraft.item.ItemStack; + +public class VacuumRefineryRecipes extends SerializableRecipe { + + public static final int vac_frac_heavy = 40; + public static final int vac_frac_reform = 25; + public static final int vac_frac_light = 20; + public static final int vac_frac_sour = 15; + + public static HashMap recipes = new HashMap(); + + @Override + public void registerDefaults() { + + recipes.put(Fluids.OIL, new VacuumRefineryRecipe( + new FluidStack(Fluids.HEAVYOIL_VACUUM, vac_frac_heavy), + new FluidStack(Fluids.REFORMATE, vac_frac_reform), + new FluidStack(Fluids.LIGHTOIL_VACUUM, vac_frac_light), + new FluidStack(Fluids.SOURGAS, vac_frac_sour) + )); + recipes.put(Fluids.OIL_DS, new VacuumRefineryRecipe( + new FluidStack(Fluids.HEAVYOIL_VACUUM, vac_frac_heavy), + new FluidStack(Fluids.REFORMATE, vac_frac_reform), + new FluidStack(Fluids.LIGHTOIL_VACUUM, vac_frac_light), + new FluidStack(Fluids.REFORMGAS, vac_frac_sour) + )); + } + + public static VacuumRefineryRecipe getVacuum(FluidType oil) { + return recipes.get(oil); + } + + @Override public String getFileName() { return "hbmVacRefinery.json"; } + @Override public Object getRecipeObject() { return recipes; } + @Override public void deleteRecipes() { recipes.clear(); } + + @Override public String getComment() { + return "Inputs always assume 100mB, input ammount cannot be changed."; + } + + @Override + public void readRecipe(JsonElement recipe) { + JsonObject obj = recipe.getAsJsonObject(); + + FluidType type = Fluids.fromName(obj.get("input").getAsString()); + FluidStack o0 = this.readFluidStack(obj.get("output0").getAsJsonArray()); + FluidStack o1 = this.readFluidStack(obj.get("output1").getAsJsonArray()); + FluidStack o2 = this.readFluidStack(obj.get("output2").getAsJsonArray()); + FluidStack o3 = this.readFluidStack(obj.get("output3").getAsJsonArray()); + + recipes.put(type, new VacuumRefineryRecipe(o0, o1, o2, o3)); + } + + @Override + public void writeRecipe(Object recipe, JsonWriter writer) throws IOException { + Entry rec = (Entry) recipe; + + writer.name("input").value(rec.getKey().getName()); + + for(int i = 0; i < 4; i++) { + writer.name("output" + i); + this.writeFluidStack(rec.getValue().outputs[i], writer); + } + } + + public static HashMap getVacuumRecipe() { + + HashMap recipes = new HashMap(); + + for(Entry recipe : VacuumRefineryRecipes.recipes.entrySet()) { + + VacuumRefineryRecipe fluids = recipe.getValue(); + + recipes.put(ItemFluidIcon.make(recipe.getKey(), 1000, 2), + new ItemStack[] { + ItemFluidIcon.make(fluids.outputs[0].type, fluids.outputs[0].fill * 10), + ItemFluidIcon.make(fluids.outputs[1].type, fluids.outputs[1].fill * 10), + ItemFluidIcon.make(fluids.outputs[2].type, fluids.outputs[2].fill * 10), + ItemFluidIcon.make(fluids.outputs[3].type, fluids.outputs[3].fill * 10) }); + } + + return recipes; + } + + public static class VacuumRefineryRecipe { + + public FluidStack[] outputs; + + public VacuumRefineryRecipe(FluidStack f0, FluidStack f1, FluidStack f2, FluidStack f3) { + this.outputs = new FluidStack[] {f0, f1, f2, f3}; + } + } +} 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 0dd33edd2..5cff196be 100644 --- a/src/main/java/com/hbm/inventory/recipes/loader/SerializableRecipe.java +++ b/src/main/java/com/hbm/inventory/recipes/loader/SerializableRecipe.java @@ -59,6 +59,7 @@ public abstract class SerializableRecipe { recipeHandlers.add(new CrucibleRecipes()); recipeHandlers.add(new CentrifugeRecipes()); recipeHandlers.add(new CrystallizerRecipes()); + recipeHandlers.add(new VacuumRefineryRecipes()); recipeHandlers.add(new FractionRecipes()); recipeHandlers.add(new CrackingRecipes()); recipeHandlers.add(new ReformingRecipes()); diff --git a/src/main/java/com/hbm/tileentity/machine/oil/TileEntityMachineVacuumDistill.java b/src/main/java/com/hbm/tileentity/machine/oil/TileEntityMachineVacuumDistill.java index 3653b2138..97689217e 100644 --- a/src/main/java/com/hbm/tileentity/machine/oil/TileEntityMachineVacuumDistill.java +++ b/src/main/java/com/hbm/tileentity/machine/oil/TileEntityMachineVacuumDistill.java @@ -6,7 +6,8 @@ import com.hbm.inventory.fluid.FluidType; import com.hbm.inventory.fluid.Fluids; import com.hbm.inventory.fluid.tank.FluidTank; import com.hbm.inventory.gui.GUIMachineVacuumDistill; -import com.hbm.inventory.recipes.RefineryRecipes; +import com.hbm.inventory.recipes.VacuumRefineryRecipes; +import com.hbm.inventory.recipes.VacuumRefineryRecipes.VacuumRefineryRecipe; import com.hbm.lib.Library; import com.hbm.main.MainRegistry; import com.hbm.sound.AudioWrapper; @@ -14,7 +15,6 @@ import com.hbm.tileentity.IFluidCopiable; import com.hbm.tileentity.IGUIProvider; import com.hbm.tileentity.IPersistentNBT; import com.hbm.tileentity.TileEntityMachineBase; -import com.hbm.util.Tuple.Quartet; import com.hbm.util.fauxpointtwelve.DirPos; import api.hbm.energymk2.IEnergyReceiverMK2; @@ -155,13 +155,13 @@ public class TileEntityMachineVacuumDistill extends TileEntityMachineBase implem } private void refine() { - Quartet refinery = RefineryRecipes.getVacuum(tanks[0].getTankType()); + VacuumRefineryRecipe refinery = VacuumRefineryRecipes.getVacuum(tanks[0].getTankType()); if(refinery == null) { for(int i = 1; i < 5; i++) tanks[i].setTankType(Fluids.NONE); return; } - FluidStack[] stacks = new FluidStack[] {refinery.getW(), refinery.getX(), refinery.getY(), refinery.getZ()}; + FluidStack[] stacks = refinery.outputs; for(int i = 0; i < stacks.length; i++) tanks[i + 1].setTankType(stacks[i].type); if(power < 10_000) return; diff --git a/src/main/resources/assets/hbm/textures/gui/processing/gui_mixer.png b/src/main/resources/assets/hbm/textures/gui/processing/gui_mixer.png index a04e3e7a7aa6e466705f4cae7b27c2ba3b8cc458..871440cc4f80f6397e63912c17032efb0948361f 100644 GIT binary patch literal 3236 zcmb_fdpMNa9$xd!GzQ}uCAUz=C2bU2LSu62O1X8A+oXhCOD-ETJ}FHKsrEMRQ$!{A za!DAKC<#SwF+{F2ZsX2yKK|HeKj)vb&-0x1&-&K-*6;nT_xG;#KF_*ke(IV@m)~$R`Tmut?`{<;g{)!}uE>x5gnY40nMF0N(z%@nP%W6n2k+ueFV2-LxB& zLk%LH<3R3v3zBIHXLet=?Y!Y=GODcd?cQT?6Xko5_fN40^(rMV`1hKK)cPDgFBumv z_00NK|F5h)^2N1dw1M%J_0{U81*^mw|Dh{1PQ@_6e3 z_)e$s_Vyi&8`kUK!T8*?dQoNNFFZUv14eXTK*jK)GF0#^kJsGbxr0xGd12`_dGkxh zkRJl5x3WTQ9$`M`YrFB_n2S50>fB`bR&)0#dqeb`%S%;Fs*JoR5o7Cf+99LhLUv}0$KzPYv2dS%3oE+_5eW~iXsEh$0 zwY7n9iW_7WSvC0&m@BP^H?&#vM&^e^!LE+4i&=-6Ht8C;7zA5^2R;1M$<#$D9H&&^DoRzu%DPP@&^0`P{@Wj8t4(d;32o+qH>XHTt`5d+Gb#4 zE3iyXuk!qUlWtZ3B>Xkb%t!G$vU78L;_u%tO|34z%88;bDLyc`a_I8h3)59XB{Q=si4%PgSgBG81+hgx&r9 zaMKA-_iCY0B|Q?0?jEAAQ)@!(Zb*-H<@CQ=9cSkA9Ln!F39qkleVr)7+%?KLbA7Sj zX!87?GwGC~M7T4!;H*@0TV3Q8JUpiDNPf2$`e&SPfa~bT@uV7qBZVlELrSHrmaj$c zoSt5L9-`~QbVliURWo~oHpjElT>bn?*8aGoiM%>k#>`A^4f^0kk%Ex0HoL-xzU_%b zu$aV49g$sC=;2xid9++DFDwaE`fSQr5~Y7%_iwLJxAX(n`S#T7>;+ThGv`gl`~N`*|YY2zcaX;h!TqMX7dp6X*{gG9~6mL^UO z+gsmu?y@cWL60EIz7W+{fhD;o&Ube$dyEbVB&JtYym6+@Ubp^UlEf$W`thO7> z=xGiBb{}>FTV7gyha`wxfA)%U#qO-b`)n}q^M$D2^B-su%d~HHJU{wuuauFM^Nb3^ zmBmYoF#i?AL{BJ1!>6JJ0JCjfZQi=0-L1eZ-=efvFSCU5!wU9L)dqOxIOw9~`_1pb z2HIzF8)H_ceXTi!eT-h(>&eCMv#x`IDfCAH$LbqdsF;nqglDYAi5U zExo{?C3<8lw(Ug7sYs_xXM?szj4>g#KUr2NR)K!s1ua*bSbh6YK~AankoJhT(ej5+ zm}P>jLzD?4EACXz!u)|o2^C0CxEM=XJD(&P;y*xP59FwxOjyes4P{z6@<@`GM+XPl zkM-6*4X>ER@gy72(l-ekfi4Oo^4j?#t(T zk(WK5=|KXnrw7P_t@2WR%hq1tT^?%FDhx7zLEOwmGGu5nqB+eLz->7JjAn6knYkixLWIEvl4C$pVXa==hkl`o8Fl!)?Z`Ay* z8DjDko(xqdis(TiP^H)=t|NcMdt4zlj8$D)pBm9c!0yKAic0~NOW92%$ z3i0wxehuSo8)3Q80_B+G*fD%H}Q-Dhox-BL*Kbbby9> zVu2h7eNMJAl#~SAD2s^d5(mlZ3<Pj10IelWR(aTVcM-U_l{ z%9orDQ2%(@;KuK8%F^5(W{DHMY#&cR~sn zA7TKjh@k{7fn`KM$psAlMj}k8ffx%|5pq{|SefkXa`|-yIVpb4)&3x72 ztlUysS<`}g-aOn(sURl^b9yFeCG-T4#}u>Y8uBvPOC%vyR!PqI;>z`i z+tMq%zwN2Q-Ze}=%v8K6q4o5$=%eu514VatgA-w#&ac7gZgp82Q@OcKj_Nzi^F~ml zk~nQ&U5@{RyzoGvLpnP_qKK+~31|t-S{l-|0=OPL>Qi>C?Jt<{kXgN$)-Rz)u#S(M zq1MXIVD$TQ3;Q(HsJr(-Gw=E18urYJa7BSfYhwW|AOgTtza3fPD7x|2Z1v_CKr0xt z>ye$pQ>X=Ewy9$bx2}BqR^a~3)G9ajruel2*J44?ujPmZ&(SoUWl3*EVnOBX9e70HA(MqwI@0s#4}P_3rAROCf1B17F-} zdR=(xhvvDd42`8T`5genb^%a}1H^q0 z_%Flf0XBW9sWQXcJG#2=y?txc^)R)C{klfJ}tD(n_GP;J=|*IAgue(zmh1 zeslEyP_4fL2Vx$jvbqoJ4vUW^^rr;yBig9JYMGisai>>_4uO#6k8=HlCzVuHrOgsy ud1bI{!Dg7;%K%a5r_jjr;Q!V%&aI>GVJ5k#F|Fwh(BmejjPndh*Zu{B%#G*( literal 3194 zcmb_eXH-+!7Ctu#A(TicN|O>4L=gdz5)l$0AWdMz2UyS`DuOiWqd*cxaR323N>`*y zk!onM0SZzC1VKoY8Kg)XN+2QdF7wt~Gwc0%Wxey~>~q&$-`@K>-~R6X#nJvCR#;9L z0D!f&A|D0-fxfjM&n08t%lvgwiV)Ttq&zm&CH^PK0B zVOqE#N?(hHqNf!J>04mlZTb$_-ghkcMbMVJ{^K*Ke#i&>xgmWZsh@&BdrL!*A zU32+L7zsiW&&l*uR@SZVH3Zj%g#em(rOqS*-@!R`?HaRjy?=(I5<_cQG$pEu2DYg& zqT4~S-J%%nq*8m-z504%!v6hoN{C1#X}dMX@Q^#(VT3=@+ia(51Mbd>(SI^WkhXha z4A;W*>_=?nHM-6L=JxAonpFU1b!m`DCd-v{I1H!vDiI^KT3fYTsKY-qdIzF5p+K;_ zBv3KMv(XJiM?RfD-|Fc?%t&o$XeDY@UH+yfw|_9BaB1<#vvSV6QMVq z7rxp9r_eVA*(T=Iny5gIX31EJ2Qq9S2Tn(HGQ)-M*`~F=ztx-4lQ83qUCmcWjRC?L=m+MQsq^RGK zO=7V*BkyGQAh`C!>F?URHCF~%MA1vB1GY3Oe4Vh5^1eHxn(uk5_8}7os?7B+Oy)9dMGTC* z_ots#!^wcj$uL2&UsElZ6O)DQvF7N;7Ey$9lO41Eh1f^fjoo~Vu3$V0_kPAac3p-|d%JgRkx%rny!#pDlW(U_&Vf3wFJ^uH- zfzpsiT4oQLR3rzQ(pGpjCX(9Ds9-(1>yDk35c^F5v|R82<-9PS>n#(^ClEZUk%{?7 zD}GV}I_D5Z4%NlQJif=Lp2a&xS2G%pZ}Ri!y|ave(A(ZW#VpIm()#s49CFxeGPlyG z`s~X1e5Kx&$So%bzez*BPVzvfef5x%$I&MY=fhT@R3bpd;{p&}OPS#AJmXcC-~csg zc&V~oCyQ1uD?=3V6S$P;iw{(q#owf&=DDP|q`t zeg3nIWhu&V51Mx8v;s+zv$QlcKb!((gGy>InNYv76~@ zVJ{Met};wdUCGjg)WdNdPv$7k6O_KjI^7oCReNWV_XHjIY{N7| zHI1QDGmjcLkp+{aTnA!W#;FsvBOQ?qaLyNI-XL<1K;h)Ft?Q*?6A;*rn#hS-8@@tZ zTNs_ZSaQ1&R)1@236=B5@bk)1eQQa4VULMHhoAv*b@CYSW7xIHqP>xn_j07c%&>xc z5$iLn&CBjd^8+1yxf!F3ZJmy5`%Fej3eO=wJ8z_N7#5y;11uNsOE~17)ZM8|?b8W6 z&}zr#99JoPI~GHP{gV6A+Hhz-6De}dwVGIe?%C#sd#!Y_>-@&$&3 zKFBZ&S>yHDvq-zx!K4W0mrg!IDBUu7qk#0$Btq4S;p$IJ=W`Yg`vH9GD*0x zY<-ZE2W6)h!yaSv!f7sPMnLBA4Fx)e?(B`sybF7cJg4t=gvYIk8G+>)C7G`fT)(ab zmieF-le`N>{T6B_^^-iv(xc(~s{H8o@VNF(#>pbg8>KVz z6zDjzFL+}(&vE-)UCwvC|G@vbG*o-?R1t2h`vJ^Bw6Zsn`H+FuuDr>+V4$xgTlg#^ zc1Rp!+9Sy9$w0Tct7ht+QS0OwzR!URual-ssAOt2-847nzWadUDjxg{i*4*-Bjb>Z z5+RNjStTA9(#QVt$u^S+k74{XsHlXca3DNz3shL*|MSYzkmf9z(Gwb`#*2`42$mw8 zza)};oS2m|0MySCXL*=>o*Fa=H@If(c!PAFSPFD@$& z>VE=ruzZqsq#{BKjGDuDb{LtAbWg^olY}?+A%7b=2)iUB1F09z&w&H)DK(pX@6W- zZhczraqE%{Jt^pOGSYmz2yK2ouDv8_;u|%K%vu`I?-u1>i7lqHDjG={mwEgpbFkDoO~8VR8Ln+UnQ2N3=|iS%t)f~Ha~XUwT^@dh(t%Gq`G%z@3(DPs~lE; zwH?Zw`|ussYPv$oE9I&x6S4X;w3DBaOkbs`;o#}-AI+7Ur)qQt`(&QCXk7sNu)&)6 z%tLNe?n{w~J3Jx2LFQ%2y#i_XiQBGfe%68}hJEUw`B`4FtTb6|7vlFO+r-vg3%B?Z zpgS+cU1t&j0r9VU+jb$CH*y?KQRE?QkKS?ykuAH5bKhA?=%sg5u&Ron&Lapv>K5XVka8Sxm%O6!^mNV&BC1Oi+a2Q+sSpvXW##uEI8N7uR%ZMMLkaYHfXy4PpHyuxG5>tCL_dCbL@Y?)?b19#czbh`U{R%Ok+@YVJrLg zRpL*iV{x<}!ghc3vsq@YR6~0s+uQNr8r1*VfECRqxCh!$*ai;;HRHr@ zHL5CcZ%>!)H!^w>1bKWBrIb}x>Wzy)*E504!AhjdojPHP;fA*Uk4txnXnTBY$oKV` Qmm8?o7WU*~Gs=~}1EiZ{`v3p{ From 82f175105cd4b41f9236c8f3e4d345d6817c17f3 Mon Sep 17 00:00:00 2001 From: Boblet Date: Mon, 15 Dec 2025 15:33:10 +0100 Subject: [PATCH 18/22] bap --- changelog | 7 +- gradle.properties | 2 +- .../hbm/inventory/gui/GUIMachineRefinery.java | 16 ++- .../inventory/recipes/RefineryRecipes.java | 113 +++++++++++++----- .../recipes/loader/SerializableRecipe.java | 1 + .../java/com/hbm/items/machine/ItemMold.java | 4 +- src/main/java/com/hbm/lib/RefStrings.java | 2 +- src/main/java/com/hbm/main/MainRegistry.java | 1 - .../TileEntityMachineArcFurnaceLarge.java | 5 +- .../oil/TileEntityMachineRefinery.java | 8 +- 10 files changed, 109 insertions(+), 50 deletions(-) diff --git a/changelog b/changelog index a75b72d1f..fafea5825 100644 --- a/changelog +++ b/changelog @@ -1,5 +1,10 @@ ## Changed +* Updated russian localization * Changed the recipe change button on the mixer to be bright red with arrows on it (since the "C" looked too much like it meant "clear") +* The refinery and the vacuum refinery now have working recipe configs +* Recipe autogen for foundry casting now deprioritizes fragments, preventing them from being casted when nuggets of that material are available ## Fixed -* Fixed atomic clock precision assembler recipe not working \ No newline at end of file +* Fixed atomic clock precision assembler recipe not working +* Fixed ICF parts using 528 mode templates in normal mode +* Fixed arc furnace queue slots inserting too many items, causing the output to exceed max stack size \ No newline at end of file diff --git a/gradle.properties b/gradle.properties index 812f67c85..191e2b38d 100644 --- a/gradle.properties +++ b/gradle.properties @@ -1,6 +1,6 @@ mod_version=1.0.27 # Empty build number makes a release type -mod_build_number=5544 +mod_build_number=5545 credits=HbMinecraft,\ \ rodolphito (explosion algorithms),\ diff --git a/src/main/java/com/hbm/inventory/gui/GUIMachineRefinery.java b/src/main/java/com/hbm/inventory/gui/GUIMachineRefinery.java index f30dd2edf..b3aae3272 100644 --- a/src/main/java/com/hbm/inventory/gui/GUIMachineRefinery.java +++ b/src/main/java/com/hbm/inventory/gui/GUIMachineRefinery.java @@ -1,11 +1,9 @@ package com.hbm.inventory.gui; -import com.hbm.inventory.FluidStack; import com.hbm.inventory.fluid.tank.FluidTank; import com.hbm.inventory.recipes.RefineryRecipes; -import com.hbm.util.Tuple; +import com.hbm.inventory.recipes.RefineryRecipes.RefineryRecipe; import net.minecraft.client.renderer.OpenGlHelper; -import net.minecraft.item.ItemStack; import org.lwjgl.opengl.GL11; import com.hbm.inventory.container.ContainerMachineRefinery; @@ -83,7 +81,7 @@ public class GUIMachineRefinery extends GuiInfoContainer { // pipes - Tuple.Quintet recipe = RefineryRecipes.getRefinery(inputOil.getTankType()); + RefineryRecipe recipe = RefineryRecipes.getRefinery(inputOil.getTankType()); if(recipe == null) { func_146110_a(guiLeft + 52, guiTop + 63, 247, 1, 33, 48, 350, 256); @@ -93,27 +91,27 @@ public class GUIMachineRefinery extends GuiInfoContainer { } else { // Heavy Oil Products - Color color = new Color(recipe.getV().type.getColor()); + Color color = new Color(recipe.outputs[0].type.getColor()); GL11.glEnable(GL11.GL_BLEND); GL11.glColor4f(color.getRed() / 255F, color.getGreen() / 255F, color.getBlue() / 255F, 1F); func_146110_a(guiLeft + 52, guiTop + 63, 247, 1, 33, 48, 350, 256); // Naphtha Oil Products - color = new Color(recipe.getW().type.getColor()); + color = new Color(recipe.outputs[1].type.getColor()); GL11.glColor4f(color.getRed() / 255F, color.getGreen() / 255F, color.getBlue() / 255F, 1F); func_146110_a(guiLeft + 52, guiTop + 32, 247, 50, 66, 52, 350, 256); // Light Oil Products - color = new Color(recipe.getX().type.getColor()); + color = new Color(recipe.outputs[2].type.getColor()); GL11.glColor4f(color.getRed() / 255F, color.getGreen() / 255F, color.getBlue() / 255F, 1F); func_146110_a(guiLeft + 52, guiTop + 24, 247, 145, 86, 35, 350, 256); // Gaseous Products - color = new Color(recipe.getY().type.getColor()); + color = new Color(recipe.outputs[3].type.getColor()); GL11.glColor4f(color.getRed() / 255F, color.getGreen() / 255F, color.getBlue() / 255F, 1F); func_146110_a(guiLeft + 36, guiTop + 16, 211, 119, 122, 25, 350, 256); - + GL11.glDisable(GL11.GL_BLEND); GL11.glColor4f(1F, 1F, 1F, 1F); } diff --git a/src/main/java/com/hbm/inventory/recipes/RefineryRecipes.java b/src/main/java/com/hbm/inventory/recipes/RefineryRecipes.java index 7b913597c..411902bb4 100644 --- a/src/main/java/com/hbm/inventory/recipes/RefineryRecipes.java +++ b/src/main/java/com/hbm/inventory/recipes/RefineryRecipes.java @@ -1,22 +1,26 @@ package com.hbm.inventory.recipes; +import java.io.IOException; import java.util.HashMap; import java.util.Map; import java.util.Map.Entry; +import com.google.gson.JsonElement; +import com.google.gson.JsonObject; +import com.google.gson.stream.JsonWriter; import com.hbm.inventory.FluidStack; import com.hbm.inventory.OreDictManager.DictFrame; import com.hbm.inventory.fluid.FluidType; import com.hbm.inventory.fluid.Fluids; +import com.hbm.inventory.recipes.loader.SerializableRecipe; import com.hbm.items.ItemEnums.EnumTarType; import com.hbm.items.ModItems; import com.hbm.items.machine.ItemFluidIcon; import com.hbm.util.ItemStackUtil; -import com.hbm.util.Tuple.Quintet; import net.minecraft.item.ItemStack; -public class RefineryRecipes { +public class RefineryRecipes extends SerializableRecipe { /// fractions in percent /// public static final int oil_frac_heavy = 50; @@ -37,51 +41,32 @@ public class RefineryRecipes { public static final int crackds_frac_aroma = 15; public static final int crackds_frac_unsat = 15; - private static Map> refinery = new HashMap(); - - public static HashMap getRefineryRecipe() { + private static Map recipes = new HashMap(); - HashMap recipes = new HashMap(); - - for(Entry> recipe : refinery.entrySet()) { - - Quintet fluids = recipe.getValue(); - - recipes.put(ItemFluidIcon.make(recipe.getKey(), 1000), - new ItemStack[] { - ItemFluidIcon.make(fluids.getV().type, fluids.getV().fill * 10), - ItemFluidIcon.make(fluids.getW().type, fluids.getW().fill * 10), - ItemFluidIcon.make(fluids.getX().type, fluids.getX().fill * 10), - ItemFluidIcon.make(fluids.getY().type, fluids.getY().fill * 10), - ItemStackUtil.carefulCopy(fluids.getZ()) }); - } - - return recipes; - } - - public static void registerRefinery() { - refinery.put(Fluids.HOTOIL, new Quintet( + @Override + public void registerDefaults() { + recipes.put(Fluids.HOTOIL, new RefineryRecipe( new FluidStack(Fluids.HEAVYOIL, oil_frac_heavy), new FluidStack(Fluids.NAPHTHA, oil_frac_naph), new FluidStack(Fluids.LIGHTOIL, oil_frac_light), new FluidStack(Fluids.PETROLEUM, oil_frac_petro), new ItemStack(ModItems.sulfur) )); - refinery.put(Fluids.HOTCRACKOIL, new Quintet( + recipes.put(Fluids.HOTCRACKOIL, new RefineryRecipe( new FluidStack(Fluids.NAPHTHA_CRACK, crack_frac_naph), new FluidStack(Fluids.LIGHTOIL_CRACK, crack_frac_light), new FluidStack(Fluids.AROMATICS, crack_frac_aroma), new FluidStack(Fluids.UNSATURATEDS, crack_frac_unsat), DictFrame.fromOne(ModItems.oil_tar, EnumTarType.CRACK) )); - refinery.put(Fluids.HOTOIL_DS, new Quintet( + recipes.put(Fluids.HOTOIL_DS, new RefineryRecipe( new FluidStack(Fluids.HEAVYOIL, oilds_frac_heavy), new FluidStack(Fluids.NAPHTHA_DS, oilds_frac_naph), new FluidStack(Fluids.LIGHTOIL_DS, oilds_frac_light), new FluidStack(Fluids.UNSATURATEDS, oilds_frac_unsat), DictFrame.fromOne(ModItems.oil_tar, EnumTarType.PARAFFIN) )); - refinery.put(Fluids.HOTCRACKOIL_DS, new Quintet( + recipes.put(Fluids.HOTCRACKOIL_DS, new RefineryRecipe( new FluidStack(Fluids.NAPHTHA_DS, crackds_frac_naph), new FluidStack(Fluids.LIGHTOIL_DS, crackds_frac_light), new FluidStack(Fluids.AROMATICS, crackds_frac_aroma), @@ -90,7 +75,75 @@ public class RefineryRecipes { )); } - public static Quintet getRefinery(FluidType oil) { - return refinery.get(oil); + public static RefineryRecipe getRefinery(FluidType oil) { + return recipes.get(oil); + } + + @Override public String getFileName() { return "hbmRefinery.json"; } + @Override public Object getRecipeObject() { return recipes; } + @Override public void deleteRecipes() { recipes.clear(); } + + @Override public String getComment() { + return "Inputs always assume 100mB, input ammount cannot be changed."; + } + + @Override + public void readRecipe(JsonElement recipe) { + JsonObject obj = recipe.getAsJsonObject(); + + FluidType type = Fluids.fromName(obj.get("input").getAsString()); + FluidStack o0 = this.readFluidStack(obj.get("output0").getAsJsonArray()); + FluidStack o1 = this.readFluidStack(obj.get("output1").getAsJsonArray()); + FluidStack o2 = this.readFluidStack(obj.get("output2").getAsJsonArray()); + FluidStack o3 = this.readFluidStack(obj.get("output3").getAsJsonArray()); + ItemStack solid = this.readItemStack(obj.get("solid").getAsJsonArray()); + + recipes.put(type, new RefineryRecipe(o0, o1, o2, o3, solid)); + } + + @Override + public void writeRecipe(Object recipe, JsonWriter writer) throws IOException { + Entry rec = (Entry) recipe; + + writer.name("input").value(rec.getKey().getName()); + + for(int i = 0; i < 4; i++) { + writer.name("output" + i); + this.writeFluidStack(rec.getValue().outputs[i], writer); + } + + writer.name("solid"); + this.writeItemStack(rec.getValue().solid, writer); + } + + public static HashMap getRefineryRecipe() { + + HashMap recipes = new HashMap(); + + for(Entry recipe : RefineryRecipes.recipes.entrySet()) { + + RefineryRecipe fluids = recipe.getValue(); + + recipes.put(ItemFluidIcon.make(recipe.getKey(), 1000), + new ItemStack[] { + ItemFluidIcon.make(fluids.outputs[0].type, fluids.outputs[0].fill * 10), + ItemFluidIcon.make(fluids.outputs[1].type, fluids.outputs[1].fill * 10), + ItemFluidIcon.make(fluids.outputs[2].type, fluids.outputs[2].fill * 10), + ItemFluidIcon.make(fluids.outputs[3].type, fluids.outputs[3].fill * 10), + ItemStackUtil.carefulCopy(fluids.solid) }); + } + + return recipes; + } + + public static class RefineryRecipe { + + public FluidStack[] outputs; + public ItemStack solid; + + public RefineryRecipe(FluidStack f0, FluidStack f1, FluidStack f2, FluidStack f3, ItemStack f4) { + this.outputs = new FluidStack[] {f0, f1, f2, f3}; + this.solid = f4; + } } } 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 5cff196be..dd7279516 100644 --- a/src/main/java/com/hbm/inventory/recipes/loader/SerializableRecipe.java +++ b/src/main/java/com/hbm/inventory/recipes/loader/SerializableRecipe.java @@ -59,6 +59,7 @@ public abstract class SerializableRecipe { recipeHandlers.add(new CrucibleRecipes()); recipeHandlers.add(new CentrifugeRecipes()); recipeHandlers.add(new CrystallizerRecipes()); + recipeHandlers.add(new RefineryRecipes()); recipeHandlers.add(new VacuumRefineryRecipes()); recipeHandlers.add(new FractionRecipes()); recipeHandlers.add(new CrackingRecipes()); diff --git a/src/main/java/com/hbm/items/machine/ItemMold.java b/src/main/java/com/hbm/items/machine/ItemMold.java index 7d6b0a092..b9b9cc43c 100644 --- a/src/main/java/com/hbm/items/machine/ItemMold.java +++ b/src/main/java/com/hbm/items/machine/ItemMold.java @@ -187,7 +187,9 @@ public class ItemMold extends Item { if(!ores.isEmpty()) { //prioritize NTM items for(ItemStack ore : ores) { - if(Item.itemRegistry.getNameForObject(ore.getItem()).startsWith(RefStrings.MODID)) { + String registry = Item.itemRegistry.getNameForObject(ore.getItem()); + if(registry.startsWith(RefStrings.MODID)) { + if(registry.contains("fragment")) continue; // deprioritize fragments ItemStack copy = ore.copy(); copy.stackSize = this.amount; return copy; diff --git a/src/main/java/com/hbm/lib/RefStrings.java b/src/main/java/com/hbm/lib/RefStrings.java index 41e0e1fdf..0137745be 100644 --- a/src/main/java/com/hbm/lib/RefStrings.java +++ b/src/main/java/com/hbm/lib/RefStrings.java @@ -3,7 +3,7 @@ package com.hbm.lib; public class RefStrings { public static final String MODID = "hbm"; public static final String NAME = "Hbm's Nuclear Tech Mod"; - public static final String VERSION = "1.0.27 BETA (5544)"; + public static final String VERSION = "1.0.27 BETA (5545)"; //HBM's Beta Naming Convention: //V T (X) //V -> next release version diff --git a/src/main/java/com/hbm/main/MainRegistry.java b/src/main/java/com/hbm/main/MainRegistry.java index 16a3e1e4e..8db6b3c17 100644 --- a/src/main/java/com/hbm/main/MainRegistry.java +++ b/src/main/java/com/hbm/main/MainRegistry.java @@ -552,7 +552,6 @@ public class MainRegistry { MagicRecipes.register(); LemegetonRecipes.register(); SILEXRecipes.register(); - RefineryRecipes.registerRefinery(); GasCentrifugeRecipes.register(); CustomMachineConfigJSON.initialize(); diff --git a/src/main/java/com/hbm/tileentity/machine/TileEntityMachineArcFurnaceLarge.java b/src/main/java/com/hbm/tileentity/machine/TileEntityMachineArcFurnaceLarge.java index 3ae1e58a6..a650d536b 100644 --- a/src/main/java/com/hbm/tileentity/machine/TileEntityMachineArcFurnaceLarge.java +++ b/src/main/java/com/hbm/tileentity/machine/TileEntityMachineArcFurnaceLarge.java @@ -279,11 +279,13 @@ public class TileEntityMachineArcFurnaceLarge extends TileEntityMachineBase impl if(slots[q] == null) continue; ArcFurnaceRecipe recipe = ArcFurnaceRecipes.getOutput(slots[q], this.liquidMode); if(recipe == null) continue; + int max = this.getMaxInputSize(); + int recipeMax = this.liquidMode ? max : slots[q].getMaxStackSize() / recipe.solidOutput.stackSize; + max = Math.min(max, recipeMax); // add to existing stacks for(int i /* ingredient */ = 5; i < 25; i++) { if(slots[i] == null) continue; - int max = this.getMaxInputSize(); if(!slots[q].isItemEqual(slots[i])) continue; int toMove = BobMathUtil.min(slots[i].getMaxStackSize() - slots[i].stackSize, slots[q].stackSize, max - slots[i].stackSize); if(toMove > 0) { @@ -297,7 +299,6 @@ public class TileEntityMachineArcFurnaceLarge extends TileEntityMachineBase impl // add to empty slot if(slots[q] != null) for(int i /* ingredient */ = 5; i < 25; i++) { if(slots[i] != null) continue; - int max = this.getMaxInputSize(); int toMove = Math.min(max, slots[q].stackSize); slots[i] = slots[q].copy(); slots[i].stackSize = toMove; diff --git a/src/main/java/com/hbm/tileentity/machine/oil/TileEntityMachineRefinery.java b/src/main/java/com/hbm/tileentity/machine/oil/TileEntityMachineRefinery.java index e7ce296c2..770183b46 100644 --- a/src/main/java/com/hbm/tileentity/machine/oil/TileEntityMachineRefinery.java +++ b/src/main/java/com/hbm/tileentity/machine/oil/TileEntityMachineRefinery.java @@ -20,13 +20,13 @@ import com.hbm.inventory.fluid.Fluids; import com.hbm.inventory.fluid.tank.FluidTank; import com.hbm.inventory.gui.GUIMachineRefinery; import com.hbm.inventory.recipes.RefineryRecipes; +import com.hbm.inventory.recipes.RefineryRecipes.RefineryRecipe; import com.hbm.items.ModItems; import com.hbm.lib.Library; import com.hbm.main.MainRegistry; import com.hbm.sound.AudioWrapper; import com.hbm.tileentity.*; import com.hbm.util.ParticleUtil; -import com.hbm.util.Tuple.Quintet; import com.hbm.util.fauxpointtwelve.DirPos; import api.hbm.energymk2.IEnergyReceiverMK2; @@ -266,13 +266,13 @@ public class TileEntityMachineRefinery extends TileEntityMachineBase implements } private void refine() { - Quintet refinery = RefineryRecipes.getRefinery(tanks[0].getTankType()); + RefineryRecipe refinery = RefineryRecipes.getRefinery(tanks[0].getTankType()); if(refinery == null) { for(int i = 1; i < 5; i++) tanks[i].setTankType(Fluids.NONE); return; } - FluidStack[] stacks = new FluidStack[] {refinery.getV(), refinery.getW(), refinery.getX(), refinery.getY()}; + FluidStack[] stacks = refinery.outputs; for(int i = 0; i < stacks.length; i++) tanks[i + 1].setTankType(stacks[i].type); @@ -294,7 +294,7 @@ public class TileEntityMachineRefinery extends TileEntityMachineBase implements if(this.sulfur >= maxSulfur) { this.sulfur -= maxSulfur; - ItemStack out = refinery.getZ(); + ItemStack out = refinery.solid; if(out != null) { From c639be142947402ce259d88751779b89430f6a64 Mon Sep 17 00:00:00 2001 From: Boblet Date: Tue, 16 Dec 2025 15:22:51 +0100 Subject: [PATCH 19/22] 67 mango mustard kendrick still water dubai labubu chocolate tralalero please someone euthanize me --- changelog | 14 +++++----- gradle.properties | 2 +- .../java/com/hbm/inventory/material/Mats.java | 2 +- .../recipes/AssemblyMachineRecipes.java | 27 ++----------------- .../recipes/loader/GenericRecipe.java | 12 ++++++++- .../recipes/loader/GenericRecipes.java | 2 +- src/main/java/com/hbm/lib/RefStrings.java | 2 +- .../com/hbm/main/ModEventHandlerClient.java | 2 +- src/main/resources/assets/hbm/lang/en_US.lang | 18 ++++++------- 9 files changed, 33 insertions(+), 48 deletions(-) diff --git a/changelog b/changelog index fafea5825..6c9cef3c8 100644 --- a/changelog +++ b/changelog @@ -1,10 +1,10 @@ ## Changed -* Updated russian localization -* Changed the recipe change button on the mixer to be bright red with arrows on it (since the "C" looked too much like it meant "clear") -* The refinery and the vacuum refinery now have working recipe configs -* Recipe autogen for foundry casting now deprioritizes fragments, preventing them from being casted when nuggets of that material are available +* For consistency with the crucible material, all tantalium *items* now go by "tantalum" ## Fixed -* Fixed atomic clock precision assembler recipe not working -* Fixed ICF parts using 528 mode templates in normal mode -* Fixed arc furnace queue slots inserting too many items, causing the output to exceed max stack size \ No newline at end of file +* Fixed MHD turbines requiring a 528 blueprint in normal mode + * The game will now crash when the default pool list has a 528 blueprint entry, preventing this from happening again + * Configured recipes do not have this check, you can use 528 mode templates in normal mode if you really want for some reason +* Fixed ancient misspelling of "ketamine" on the splash screens +* Fixed tantalum fragments not using autogen correctly, becoming unusable +* Fixed 528 mode cracking tower requiring rubber instead of plasic for the blueprint, rendering it unobtainable \ No newline at end of file diff --git a/gradle.properties b/gradle.properties index 191e2b38d..1d866b3e4 100644 --- a/gradle.properties +++ b/gradle.properties @@ -1,6 +1,6 @@ mod_version=1.0.27 # Empty build number makes a release type -mod_build_number=5545 +mod_build_number=5546 credits=HbMinecraft,\ \ rodolphito (explosion algorithms),\ diff --git a/src/main/java/com/hbm/inventory/material/Mats.java b/src/main/java/com/hbm/inventory/material/Mats.java index 7ee7b6990..09c243cb5 100644 --- a/src/main/java/com/hbm/inventory/material/Mats.java +++ b/src/main/java/com/hbm/inventory/material/Mats.java @@ -107,7 +107,7 @@ public class Mats { public static final NTMMaterial MAT_LEAD = makeSmeltable(8200, PB, 0xA6A6B2, 0x03030F, 0x646470).setAutogen(FRAGMENT, NUGGET, WIRE, BOLT, DUST, PLATE, CASTPLATE, PIPE, BLOCK).m(); public static final NTMMaterial MAT_BISMUTH = makeSmeltable(8300, BI, 0xB200FF, 0xB200FF, 0xB200FF).setAutogen(FRAGMENT, NUGGET, BILLET, DUST, BLOCK).m(); public static final NTMMaterial MAT_ARSENIC = makeSmeltable(3300, AS, 0x6CBABA, 0x242525, 0x558080).setAutogen(NUGGET).m(); - public static final NTMMaterial MAT_TANTALIUM = makeSmeltable(7300, TA, 0xFFFFFF, 0x1D1D36, 0xA89B74).setAutogen(NUGGET, DUST, BLOCK).m(); + public static final NTMMaterial MAT_TANTALIUM = makeSmeltable(7300, TA, 0xFFFFFF, 0x1D1D36, 0xA89B74).setAutogen(FRAGMENT, NUGGET, DUST, BLOCK).m(); public static final NTMMaterial MAT_NEODYMIUM = makeSmeltable(6000, ND, 0xE6E6B6, 0x1C1C00, 0x8F8F5F).setAutogen(FRAGMENT, NUGGET, DUSTTINY, INGOT, DUST, DENSEWIRE, BLOCK).m(); public static final NTMMaterial MAT_NIOBIUM = makeSmeltable(4100, NB, 0xB76EC9, 0x2F2D42, 0xD576B1).setAutogen(FRAGMENT, NUGGET, DUSTTINY, DUST, DENSEWIRE, BLOCK).m(); public static final NTMMaterial MAT_BERYLLIUM = makeSmeltable(400, BE, 0xB2B2A6, 0x0F0F03, 0xAE9572).setAutogen(FRAGMENT, NUGGET, DUST, BLOCK).m(); diff --git a/src/main/java/com/hbm/inventory/recipes/AssemblyMachineRecipes.java b/src/main/java/com/hbm/inventory/recipes/AssemblyMachineRecipes.java index 74bc229d0..7ace5cd11 100644 --- a/src/main/java/com/hbm/inventory/recipes/AssemblyMachineRecipes.java +++ b/src/main/java/com/hbm/inventory/recipes/AssemblyMachineRecipes.java @@ -56,11 +56,6 @@ public class AssemblyMachineRecipes extends GenericRecipes { @Override public void registerDefaults() { boolean no528 = !GeneralConfig.enable528; - - // NBTStack test - // this.register(new GenericRecipe("demo1").setup(20, 100).outputItems(BrokenItem.make(ModItems.plate_iron)).inputItems(new OreDictStack(IRON.ingot()))); - // this.register(new GenericRecipe("demo2").setup(20, 100).outputItems(BrokenItem.make(ModItems.plate_gold)).inputItems(new OreDictStack(IRON.ingot()))); - // this.register(new GenericRecipe("demo3").setup(20, 100).outputItems(new ItemStack(Items.iron_ingot)).inputItems(new NBTStack(BrokenItem.make(ModItems.plate_iron)))); // plates and ingots String autoPlate = "autoswitch.plates"; @@ -216,10 +211,6 @@ public class AssemblyMachineRecipes extends GenericRecipes { .inputItems(new ComparableStack(ModItems.cap_fritz, 64), new ComparableStack(ModItems.cap_fritz, 64))); this.register(new GenericRecipe("ass.capkorl").setup(10, 100).outputItems(DictFrame.fromOne(ModBlocks.block_cap, EnumCapBlock.KORL)) .inputItems(new ComparableStack(ModItems.cap_korl, 64), new ComparableStack(ModItems.cap_korl, 64))); - /* - this.register(new GenericRecipe("ass.").setup(, 100).outputItems(new ItemStack(ModBlocks., 1)) - .inputItems()); - */ // machines this.register(new GenericRecipe("ass.shredder").setup(100, 100).outputItems(new ItemStack(ModBlocks.machine_shredder, 1)) @@ -276,7 +267,7 @@ public class AssemblyMachineRecipes extends GenericRecipes { this.register(new GenericRecipe("ass.crackingtower").setup(200, 100).outputItems(new ItemStack(ModBlocks.machine_catalytic_cracker, 1)) .inputItems(new ComparableStack(ModBlocks.steel_scaffold, 16), new OreDictStack(STEEL.shell(), 6), new OreDictStack(DESH.ingot(), 12), new OreDictStack(NB.ingot(), 4)) .inputItemsEx(new ComparableStack(ModItems.item_expensive, 2, EnumExpensiveType.HEAVY_FRAME), new ComparableStack(ModItems.item_expensive, 8, EnumExpensiveType.STEEL_PLATING), new OreDictStack(ANY_PLASTIC.ingot(), 16), new OreDictStack(NB.ingot(), 4)) - .setPools528(GenericRecipes.POOL_PREFIX_528 + "rubber")); + .setPools528(GenericRecipes.POOL_PREFIX_528 + "plastic")); this.register(new GenericRecipe("ass.radiolysis").setup(200, 100).outputItems(new ItemStack(ModBlocks.machine_radiolysis, 1)) .inputItems(new OreDictStack(STEEL.shell(), 4), new OreDictStack(ANY_RESISTANTALLOY.ingot(), 4), new OreDictStack(PB.plate(), 12), new OreDictStack(CU.plateCast(), 4), new OreDictStack(RUBBER.ingot(), 8), new ComparableStack(ModItems.thermo_element, 8)) .inputItemsEx(new ComparableStack(ModItems.item_expensive, 2, EnumExpensiveType.HEAVY_FRAME), new ComparableStack(ModItems.item_expensive, 4, EnumExpensiveType.LEAD_PLATING), new OreDictStack(CU.plateCast(), 4), new OreDictStack(RUBBER.ingot(), 16), new ComparableStack(ModItems.thermo_element, 8))); @@ -579,7 +570,7 @@ public class AssemblyMachineRecipes extends GenericRecipes { this.register(new GenericRecipe("ass.fusionmhdt").setup(1_200, 100).outputItems(new ItemStack(ModBlocks.fusion_mhdt, 1)) .inputItems(new OreDictStack(ANY_RESISTANTALLOY.plateWelded(), 16), new OreDictStack(CU.plateWelded(), 64), new OreDictStack(ANY_BISMOIDBRONZE.plateCast(), 16), new OreDictStack(SBD.wireDense(), 64), new ComparableStack(ModItems.circuit, 4, EnumCircuitType.QUANTUM)) .inputItemsEx(new ComparableStack(ModItems.item_expensive, 16, EnumExpensiveType.FERRO_PLATING), new ComparableStack(ModItems.item_expensive, 16, EnumExpensiveType.PLASTIC), new OreDictStack(ANY_BISMOIDBRONZE.plateCast(), 32), new ComparableStack(ModItems.circuit, 8, EnumCircuitType.QUANTUM)) - .setPools(GenericRecipes.POOL_PREFIX_528 + "chlorophyte")); + .setPools528(GenericRecipes.POOL_PREFIX_528 + "chlorophyte")); this.register(new GenericRecipe("ass.fusioncoupler").setup(300, 100).outputItems(new ItemStack(ModBlocks.fusion_coupler, 1)) .inputItems(new OreDictStack(ANY_RESISTANTALLOY.plateWelded(), 4), new OreDictStack(CU.plate(), 32), new OreDictStack(BSCCO.wireDense(), 16), new ComparableStack(ModItems.circuit, 4, EnumCircuitType.BISMOID)) .inputItemsEx(new ComparableStack(ModItems.item_expensive, 4, EnumExpensiveType.FERRO_PLATING), new OreDictStack(BSCCO.wireDense(), 16), new ComparableStack(ModItems.item_expensive, 2, EnumExpensiveType.COMPUTER))); @@ -656,10 +647,6 @@ public class AssemblyMachineRecipes extends GenericRecipes { this.register(new GenericRecipe("ass.overdrive3").setup(1_200, 100).outputItems(new ItemStack(ModItems.upgrade_overdrive_3, 1)) .inputItems(new ComparableStack(ModItems.upgrade_overdrive_2, 1), new ComparableStack(ModItems.upgrade_speed_3, 1), new ComparableStack(ModItems.upgrade_effect_3, 1), new OreDictStack(ANY_BISMOIDBRONZE.ingot(), 16), new ComparableStack(ModItems.ingot_cft, 16), new ComparableStack(ModItems.circuit, 16, EnumCircuitType.BISMOID))); } - /* - this.register(new GenericRecipe("ass.").setup(, 100).outputItems(new ItemStack(ModBlocks., 1)) - .inputItems()); - */ // rancid shit mob spawners this.register(new GenericRecipe("ass.chopper").setup(1_200, 100).outputItems(new ItemStack(ModItems.spawn_chopper, 8)) @@ -785,11 +772,6 @@ public class AssemblyMachineRecipes extends GenericRecipes { this.register(new GenericRecipe("ass.bholegrenade").setup(1_200, 100).outputItems(new ItemStack(ModItems.grenade_black_hole, 1)) .inputItems(new OreDictStack(ANY_PLASTIC.ingot(), 6), new OreDictStack(OreDictManager.getReflector(), 3), new ComparableStack(ModItems.coil_magnetized_tungsten, 2), new ComparableStack(ModItems.black_hole, 1))); - /* - this.register(new GenericRecipe("ass.").setup(, 100).outputItems(new ItemStack(ModBlocks., 1)) - .inputItems()); - */ - // turrets this.register(new GenericRecipe("ass.turretchekhov").setup(200, 100).outputItems(new ItemStack(ModBlocks.turret_chekhov, 1)) .inputItems(new ComparableStack(ModBlocks.machine_battery, 1), new OreDictStack(STEEL.ingot(), 16), new ComparableStack(ModItems.motor, 3), new ComparableStack(ModItems.circuit, 1, EnumCircuitType.ADVANCED), new OreDictStack(STEEL.pipe(), 3), new OreDictStack(GUNMETAL.mechanism(), 3), new ComparableStack(ModBlocks.crate_iron, 1), new ComparableStack(ModItems.crt_display, 1)) @@ -986,11 +968,6 @@ public class AssemblyMachineRecipes extends GenericRecipes { .inputItems(new ComparableStack(ModItems.seg_15, 1), new OreDictStack(WEAPONSTEEL.plate(), 32), new OreDictStack(OreDictManager.getReflector(), 16), new ComparableStack(ModItems.powder_magic, 8), new ComparableStack(ModItems.egg_balefire_shard, 4), new OreDictStack(ANY_HIGHEXPLOSIVE.ingot(), 16), new ComparableStack(ModItems.circuit, 2, EnumCircuitType.CONTROLLER)) .setPools528(GenericRecipes.POOL_PREFIX_528 + "controller")); - /* - this.register(new GenericRecipe("ass.").setup(, 100).outputItems(new ItemStack(ModItems., 1)) - .inputItems()); - */ - // weapons this.register(new GenericRecipe("ass.schrabhammer").setup(6_000, 100).outputItems(new ItemStack(ModItems.schrabidium_hammer, 1)) .inputItems( diff --git a/src/main/java/com/hbm/inventory/recipes/loader/GenericRecipe.java b/src/main/java/com/hbm/inventory/recipes/loader/GenericRecipe.java index 9c84edf0e..4ca05b163 100644 --- a/src/main/java/com/hbm/inventory/recipes/loader/GenericRecipe.java +++ b/src/main/java/com/hbm/inventory/recipes/loader/GenericRecipe.java @@ -59,7 +59,17 @@ public class GenericRecipe { public GenericRecipe setIcon(Item item) { return this.setIcon(new ItemStack(item)); } public GenericRecipe setIcon(Block block) { return this.setIcon(new ItemStack(block)); } public GenericRecipe setNamed() { this.customLocalization = true; return this; } - public GenericRecipe setPools(String... pools) { this.blueprintPools = pools; for(String pool : pools) GenericRecipes.addToPool(pool, this); return this; } + + public GenericRecipe setPools(String... pools) { + this.blueprintPools = pools; + for(String pool : pools) { + if(pool.startsWith(GenericRecipes.POOL_PREFIX_528)) throw new IllegalArgumentException("Tried initializing a recipe's default blueprint pool with a 528 blueprint - this is not allowed."); + GenericRecipes.addToPool(pool, this); + } + return this; + } + /** Only for recipe configs - same as regular except the anti 528 check doesn't exist */ + public GenericRecipe setPoolsAllow528(String... pools) { this.blueprintPools = pools; for(String pool : pools) GenericRecipes.addToPool(pool, this); return this; } public GenericRecipe setPools528(String... pools) { if(GeneralConfig.enable528) { this.blueprintPools = pools; for(String pool : pools) GenericRecipes.addToPool(pool, this); } return this; } public GenericRecipe setGroup(String autoSwitch, GenericRecipes set) { this.autoSwitchGroup = autoSwitch; set.addToGroup(autoSwitch, this); return this; } diff --git a/src/main/java/com/hbm/inventory/recipes/loader/GenericRecipes.java b/src/main/java/com/hbm/inventory/recipes/loader/GenericRecipes.java index 288da9a29..0394807eb 100644 --- a/src/main/java/com/hbm/inventory/recipes/loader/GenericRecipes.java +++ b/src/main/java/com/hbm/inventory/recipes/loader/GenericRecipes.java @@ -118,7 +118,7 @@ public abstract class GenericRecipes extends Serializab if(obj.has("icon")) recipe.setIcon(this.readItemStack(obj.get("icon").getAsJsonArray())); if(obj.has("named") && obj.get("named").getAsBoolean()) recipe.setNamed(); - if(obj.has("blueprintpool")) recipe.setPools(obj.get("blueprintpool").getAsString().split(":")); + if(obj.has("blueprintpool")) recipe.setPoolsAllow528(obj.get("blueprintpool").getAsString().split(":")); if(obj.has("nameWrapper")) recipe.setNameWrapper(obj.get("nameWrapper").getAsString()); if(obj.has("autoSwitchGroup")) recipe.setGroup(obj.get("autoSwitchGroup").getAsString(), this); diff --git a/src/main/java/com/hbm/lib/RefStrings.java b/src/main/java/com/hbm/lib/RefStrings.java index 0137745be..e12427a86 100644 --- a/src/main/java/com/hbm/lib/RefStrings.java +++ b/src/main/java/com/hbm/lib/RefStrings.java @@ -3,7 +3,7 @@ package com.hbm.lib; public class RefStrings { public static final String MODID = "hbm"; public static final String NAME = "Hbm's Nuclear Tech Mod"; - public static final String VERSION = "1.0.27 BETA (5545)"; + public static final String VERSION = "1.0.27 BETA (5546)"; //HBM's Beta Naming Convention: //V T (X) //V -> next release version diff --git a/src/main/java/com/hbm/main/ModEventHandlerClient.java b/src/main/java/com/hbm/main/ModEventHandlerClient.java index daa28d1b3..375110439 100644 --- a/src/main/java/com/hbm/main/ModEventHandlerClient.java +++ b/src/main/java/com/hbm/main/ModEventHandlerClient.java @@ -1408,7 +1408,7 @@ public class ModEventHandlerClient { case 2: main.splashText = "All answers are popbob!"; break; case 3: main.splashText = "None may enter The Orb!"; break; case 4: main.splashText = "Wacarb was here"; break; - case 5: main.splashText = "SpongeBoy me Bob I am overdosing on keramine agagagagaga"; break; + case 5: main.splashText = "SpongeBoy me Bob I am overdosing on ketamine agagagagaga"; break; case 6: main.splashText = EnumChatFormatting.RED + "I know where you live, " + System.getProperty("user.name"); break; case 7: main.splashText = "Nice toes, now hand them over."; break; case 8: main.splashText = "I smell burnt toast!"; break; diff --git a/src/main/resources/assets/hbm/lang/en_US.lang b/src/main/resources/assets/hbm/lang/en_US.lang index d653844d7..567bd333d 100644 --- a/src/main/resources/assets/hbm/lang/en_US.lang +++ b/src/main/resources/assets/hbm/lang/en_US.lang @@ -615,7 +615,7 @@ chem.CIRCUIT_5=High Performance Circuit Production chem.CO2=Carbon Dioxide Production chem.COALGAS_LEADED=Leaded Coal Gasoline Mixing chem.COLTAN_CLEANING=Coltan Purifying -chem.COLTAN_CRYSTAL=Tantalium Crystallizing +chem.COLTAN_CRYSTAL=Tantalum Crystallizing chem.COLTAN_PAIN=Pandemonium(III)tantalite Production chem.CONCRETE=Concrete Production chem.CONCRETE_ASBESTOS=Asbestos Concrete Production @@ -2474,7 +2474,7 @@ item.circuit.basic.name=Integrated Circuit Board item.circuit.bismoid.name=Versatile Circuit Board item.circuit.capacitor.name=Capacitor item.circuit.capacitor_board.name=Capacitor Board -item.circuit.capacitor_tantalium.name=Tantalium Capacitor +item.circuit.capacitor_tantalium.name=Tantalum Capacitor item.circuit.chip.name=Microchip item.circuit.chip_bismoid.name=Versatile Integrated Circuit item.circuit.chip_quantum.name=Solid State Quantum Processor @@ -2916,7 +2916,7 @@ item.geiger_counter.name=Handheld Geiger Counter item.gem_alexandrite.name=Alexandrite item.gem_rad.name=Radioactive Gem item.gem_sodalite.name=Sodalite -item.gem_tantalium.name=Tantalium Polycrystal +item.gem_tantalium.name=Tantalum Polycrystal item.gem_tantalium.desc='Tantalum' item.gem_tantalium.desc.P11=AKA Tantalum. item.gem_volcanic.name=Volcanic Gem @@ -3216,7 +3216,7 @@ item.ingot_sr90.name=Strontium-90 Ingot item.ingot_starmetal.name=§9Starmetal Ingot§r item.ingot_steel.name=Steel Ingot item.ingot_steel_dusted.name=Dusted Steel Ingot -item.ingot_tantalium.name=Tantalium Ingot +item.ingot_tantalium.name=Tantalum Ingot item.ingot_tantalium.desc='Tantalum' item.ingot_tantalium.desc.P11=AKA Tantalum. item.ingot_tcalloy.name=Technetium Steel Ingot @@ -3688,9 +3688,7 @@ item.nugget_schrabidium_fuel.name=Nugget of Schrabidium Fuel item.nugget_silicon.name=Silicon Nugget item.nugget_solinium.name=Solinium Nugget item.nugget_sr90.name=Strontium-90 Nugget -item.nugget_tantalium.name=Tantalium Nugget -item.nugget_tantalium.desc='Tantalum' -item.nugget_tantalium.desc.P11=AKA Tantalum. +item.nugget_tantalium.name=Tantalum Nugget item.nugget_technetium.name=Technetium-99 Nugget item.nugget_th232.name=Thorium-232 Nugget item.nugget_thorium_fuel.name=Nugget of Thorium Fuel @@ -4067,7 +4065,7 @@ item.powder_sr90_tiny.name=Tiny Pile of Strontium-90 Powder item.powder_steel.name=Steel Powder item.powder_steel_tiny.name=Tiny Pile of Steel Powder item.powder_strontium.name=Strontium Powder -item.powder_tantalium.name=Tantalium Powder +item.powder_tantalium.name=Tantalum Powder item.powder_tantalium.desc='Tantalum' item.powder_tantalium.desc.P11=AKA Tantalum. item.powder_tcalloy.name=Technetium Steel Powder @@ -5185,7 +5183,7 @@ tile.block_solinium.name=Block of Solinium tile.block_starmetal.name=§9Block of Starmetal§r tile.block_steel.name=Block of Steel tile.block_sulfur.name=Block of Sulfur -tile.block_tantalium.name=Block of Tantalium +tile.block_tantalium.name=Block of Tantalum tile.block_tcalloy.name=Block of Technetium Steel tile.block_thorium.name=Block of Thorium-232 tile.block_thorium_fuel.name=Block of Thorium Fuel @@ -5267,7 +5265,7 @@ tile.capacitor_copper.name=Copper Capacitor tile.capacitor_gold.name=Golden Capacitor tile.capacitor_niobium.name=Niobium Capacitor tile.capacitor_schrabidate.name=Schrabidate Capacitor -tile.capacitor_tantalium.name=Tantalium Capacitor +tile.capacitor_tantalium.name=Tantalum Capacitor tile.capacitor.desc=Input: Top$Output: Bottom, via Capacitor Bus tile.charge_c4.name=Demolition Charge tile.charge_dynamite.name=Time Bomb From f82a606b66eacfbfe5e9c06291c482d78ec1b08f Mon Sep 17 00:00:00 2001 From: Boblet Date: Tue, 16 Dec 2025 16:16:19 +0100 Subject: [PATCH 20/22] shit yourself --- .../java/com/hbm/inventory/recipes/loader/GenericRecipe.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/main/java/com/hbm/inventory/recipes/loader/GenericRecipe.java b/src/main/java/com/hbm/inventory/recipes/loader/GenericRecipe.java index 4ca05b163..eab7c3543 100644 --- a/src/main/java/com/hbm/inventory/recipes/loader/GenericRecipe.java +++ b/src/main/java/com/hbm/inventory/recipes/loader/GenericRecipe.java @@ -63,7 +63,7 @@ public class GenericRecipe { public GenericRecipe setPools(String... pools) { this.blueprintPools = pools; for(String pool : pools) { - if(pool.startsWith(GenericRecipes.POOL_PREFIX_528)) throw new IllegalArgumentException("Tried initializing a recipe's default blueprint pool with a 528 blueprint - this is not allowed."); + if(!GeneralConfig.enable528 && pool.startsWith(GenericRecipes.POOL_PREFIX_528)) throw new IllegalArgumentException("Tried initializing a recipe's default blueprint pool with a 528 blueprint - this is not allowed."); GenericRecipes.addToPool(pool, this); } return this; From ef2b20d357ce159f7c3861cfecf8169796023a83 Mon Sep 17 00:00:00 2001 From: Boblet Date: Wed, 17 Dec 2025 14:55:50 +0100 Subject: [PATCH 21/22] succumb --- changelog | 14 +- src/main/java/com/hbm/blocks/ModBlocks.java | 41 --- .../hbm/blocks/generic/BlockCoalBurning.java | 78 ------ .../com/hbm/blocks/generic/BlockCoalOil.java | 33 --- .../com/hbm/blocks/generic/BlockOutgas.java | 2 +- .../blocks/generic/BlockToolConversion.java | 1 - .../com/hbm/blocks/machine/MachineITER.java | 1 + .../MachineSchrabidiumTransmutator.java | 133 --------- .../java/com/hbm/config/GeneralConfig.java | 2 +- .../com/hbm/crafting/ConsumableRecipes.java | 2 +- .../hbm/entity/projectile/EntityMeteor.java | 6 +- .../hbm/explosion/ExplosionNukeGeneric.java | 2 - .../com/hbm/inventory/OreDictManager.java | 10 - ...ntainerMachineSchrabidiumTransmutator.java | 88 ------ .../GUIMachineSchrabidiumTransmutator.java | 60 ---- .../inventory/recipes/AssemblerRecipes.java | 54 ---- .../recipes/AssemblyMachineRecipes.java | 3 - .../com/hbm/itempool/ItemPoolsLegacy.java | 4 +- .../java/com/hbm/main/CraftingManager.java | 2 +- src/main/java/com/hbm/main/MainRegistry.java | 11 + .../java/com/hbm/tileentity/TileMappings.java | 1 - .../tileentity/machine/TileEntityITER.java | 104 +------ .../machine/TileEntityITERStruct.java | 76 +---- ...eEntityMachineSchrabidiumTransmutator.java | 264 ------------------ .../java/com/hbm/world/dungeon/Spaceship.java | 4 +- .../com/hbm/world/dungeon/Spaceship2.java | 2 +- .../world/gen/component/SiloComponent.java | 2 +- .../blocks/fusion_center_side_alt.png | Bin 153 -> 0 bytes .../textures/blocks/fusion_center_top_alt.png | Bin 426 -> 0 bytes .../textures/blocks/fusion_conductor_side.png | Bin 164 -> 0 bytes .../blocks/fusion_conductor_side_welded.png | Bin 469 -> 0 bytes .../textures/blocks/fusion_conductor_top.png | Bin 581 -> 0 bytes .../blocks/fusion_conductor_top_welded.png | Bin 708 -> 0 bytes .../textures/blocks/fusion_motor_side_alt.png | Bin 251 -> 0 bytes .../textures/blocks/fusion_motor_top_alt.png | Bin 608 -> 0 bytes .../hbm/textures/blocks/struct_iter_core.png | Bin 539 -> 0 bytes .../textures/blocks/struct_plasma_core.png | Bin 555 -> 0 bytes .../assets/hbm/textures/blocks/test_ct.1.png | Bin 122 -> 0 bytes .../hbm/textures/blocks/test_ct.1_ct.png | Bin 277 -> 0 bytes .../assets/hbm/textures/blocks/test_ct.png | Bin 122 -> 0 bytes .../assets/hbm/textures/blocks/test_ct_ct.png | Bin 248 -> 0 bytes .../assets/hbm/textures/blocks/test_rail.png | Bin 133 -> 0 bytes .../textures/blocks/transmutator_bottom.png | Bin 437 -> 0 bytes .../hbm/textures/blocks/transmutator_side.png | Bin 542 -> 0 bytes .../hbm/textures/blocks/transmutator_top.png | Bin 404 -> 0 bytes 45 files changed, 36 insertions(+), 964 deletions(-) delete mode 100644 src/main/java/com/hbm/blocks/generic/BlockCoalBurning.java delete mode 100644 src/main/java/com/hbm/blocks/generic/BlockCoalOil.java delete mode 100644 src/main/java/com/hbm/blocks/machine/MachineSchrabidiumTransmutator.java delete mode 100644 src/main/java/com/hbm/inventory/container/ContainerMachineSchrabidiumTransmutator.java delete mode 100644 src/main/java/com/hbm/inventory/gui/GUIMachineSchrabidiumTransmutator.java delete mode 100644 src/main/java/com/hbm/tileentity/machine/TileEntityMachineSchrabidiumTransmutator.java delete mode 100644 src/main/resources/assets/hbm/textures/blocks/fusion_center_side_alt.png delete mode 100644 src/main/resources/assets/hbm/textures/blocks/fusion_center_top_alt.png delete mode 100644 src/main/resources/assets/hbm/textures/blocks/fusion_conductor_side.png delete mode 100644 src/main/resources/assets/hbm/textures/blocks/fusion_conductor_side_welded.png delete mode 100644 src/main/resources/assets/hbm/textures/blocks/fusion_conductor_top.png delete mode 100644 src/main/resources/assets/hbm/textures/blocks/fusion_conductor_top_welded.png delete mode 100644 src/main/resources/assets/hbm/textures/blocks/fusion_motor_side_alt.png delete mode 100644 src/main/resources/assets/hbm/textures/blocks/fusion_motor_top_alt.png delete mode 100644 src/main/resources/assets/hbm/textures/blocks/struct_iter_core.png delete mode 100644 src/main/resources/assets/hbm/textures/blocks/struct_plasma_core.png delete mode 100644 src/main/resources/assets/hbm/textures/blocks/test_ct.1.png delete mode 100644 src/main/resources/assets/hbm/textures/blocks/test_ct.1_ct.png delete mode 100644 src/main/resources/assets/hbm/textures/blocks/test_ct.png delete mode 100644 src/main/resources/assets/hbm/textures/blocks/test_ct_ct.png delete mode 100644 src/main/resources/assets/hbm/textures/blocks/test_rail.png delete mode 100644 src/main/resources/assets/hbm/textures/blocks/transmutator_bottom.png delete mode 100644 src/main/resources/assets/hbm/textures/blocks/transmutator_side.png delete mode 100644 src/main/resources/assets/hbm/textures/blocks/transmutator_top.png diff --git a/changelog b/changelog index 6c9cef3c8..53a3e52b4 100644 --- a/changelog +++ b/changelog @@ -1,10 +1,10 @@ ## Changed -* For consistency with the crucible material, all tantalium *items* now go by "tantalum" +* After not being part of worldgen for a long time, oily coal is finally being removed +* The rare metal blocks that had been unobtainable and unused for the longest time have been removed +* The schrabidium transmutator's grace period is over, it is finally being destroyed +* Most of the legacy fusion reactor components, which were unobtainable and unusable, have been removed + * The block ID economy is looking better than ever ## Fixed -* Fixed MHD turbines requiring a 528 blueprint in normal mode - * The game will now crash when the default pool list has a 528 blueprint entry, preventing this from happening again - * Configured recipes do not have this check, you can use 528 mode templates in normal mode if you really want for some reason -* Fixed ancient misspelling of "ketamine" on the splash screens -* Fixed tantalum fragments not using autogen correctly, becoming unusable -* Fixed 528 mode cracking tower requiring rubber instead of plasic for the blueprint, rendering it unobtainable \ No newline at end of file +* Fixed meteors using a nonexistant keepalive timer, causing potential audio flickering in certain cases +* Fixed 528 coltan deposit config misspelling \ No newline at end of file diff --git a/src/main/java/com/hbm/blocks/ModBlocks.java b/src/main/java/com/hbm/blocks/ModBlocks.java index 786edf0f4..a84634f56 100644 --- a/src/main/java/com/hbm/blocks/ModBlocks.java +++ b/src/main/java/com/hbm/blocks/ModBlocks.java @@ -154,8 +154,6 @@ public class ModBlocks { public static Block ore_bedrock_oil; public static Block ore_lignite; public static Block ore_asbestos; - @Deprecated public static Block ore_coal_oil; - @Deprecated public static Block ore_coal_oil_burning; public static Block ore_tikite; @@ -252,11 +250,6 @@ public class ModBlocks { public static Block block_slag; public static Block block_australium; - public static Block block_weidanium; - public static Block block_reiium; - public static Block block_unobtainium; - public static Block block_daffergon; - public static Block block_verticium; public static Block block_cap; @@ -750,8 +743,6 @@ public class ModBlocks { public static Block machine_microwave; - //public static Block machine_deuterium; - public static Block machine_battery_potato; public static Block machine_battery; public static Block machine_lithium_battery; @@ -809,7 +800,6 @@ public class ModBlocks { public static Block conveyor; public static Block conveyor_express; - //public static Block conveyor_classic; public static Block conveyor_double; public static Block conveyor_triple; public static Block conveyor_chute; @@ -834,7 +824,6 @@ public class ModBlocks { public static Block pneumatic_tube_paintable; public static Block fan; - public static Block piston_inserter; public static Block chain; @@ -900,9 +889,6 @@ public class ModBlocks { public static Block pwr_controller; public static Block pwr_block; - @Deprecated public static Block fusion_conductor; - @Deprecated public static Block fusion_center; - @Deprecated public static Block fusion_motor; @Deprecated public static Block fusion_heater; @Deprecated public static Block fusion_hatch; @Deprecated public static Block plasma; // only actually used by the old plasma grenade, will die with the grenade rework @@ -946,8 +932,6 @@ public class ModBlocks { public static Block machine_converter_he_rf; public static Block machine_converter_rf_he; - public static Block machine_schrabidium_transmutator; - public static Block machine_diesel; public static Block machine_combustion_engine; @@ -1290,8 +1274,6 @@ public class ModBlocks { ore_beryllium = new BlockGeneric(Material.rock).setBlockName("ore_beryllium").setCreativeTab(MainRegistry.blockTab).setHardness(5.0F).setResistance(15.0F).setBlockTextureName(RefStrings.MODID + ":ore_beryllium"); ore_lignite = new BlockOre(Material.rock).setBlockName("ore_lignite").setCreativeTab(MainRegistry.blockTab).setHardness(5.0F).setResistance(15.0F).setBlockTextureName(RefStrings.MODID + ":ore_lignite"); ore_asbestos = new BlockOutgas(Material.rock, true, 5, true).setBlockName("ore_asbestos").setCreativeTab(MainRegistry.blockTab).setHardness(5.0F).setResistance(15.0F).setBlockTextureName(RefStrings.MODID + ":ore_asbestos"); - ore_coal_oil = new BlockCoalOil(Material.rock).setBlockName("ore_coal_oil").setCreativeTab(MainRegistry.blockTab).setHardness(5.0F).setResistance(15.0F).setBlockTextureName(RefStrings.MODID + ":ore_coal_oil"); - ore_coal_oil_burning = new BlockCoalBurning(Material.rock).setBlockName("ore_coal_oil_burning").setCreativeTab(MainRegistry.blockTab).setLightLevel(10F/15F).setHardness(5.0F).setResistance(15.0F).setBlockTextureName(RefStrings.MODID + ":ore_coal_oil_burning"); cluster_iron = new BlockCluster(Material.rock).setBlockName("cluster_iron").setCreativeTab(MainRegistry.blockTab).setHardness(5.0F).setResistance(15.0F).setBlockTextureName(RefStrings.MODID + ":cluster_iron"); cluster_titanium = new BlockCluster(Material.rock).setBlockName("cluster_titanium").setCreativeTab(MainRegistry.blockTab).setHardness(5.0F).setResistance(15.0F).setBlockTextureName(RefStrings.MODID + ":cluster_titanium"); @@ -1470,11 +1452,6 @@ public class ModBlocks { block_slag = new BlockSlag(Material.rock).setBlockName("block_slag").setCreativeTab(MainRegistry.blockTab).setStepSound(Block.soundTypeStone).setHardness(2.0F).setBlockTextureName(RefStrings.MODID + ":block_slag"); block_australium = new BlockBeaconable(Material.iron).setBlockName("block_australium").setCreativeTab(MainRegistry.blockTab).setHardness(5.0F).setResistance(10.0F).setBlockTextureName(RefStrings.MODID + ":block_australium"); - block_weidanium = new BlockBeaconable(Material.iron).setBlockName("block_weidanium").setCreativeTab(MainRegistry.blockTab).setHardness(5.0F).setResistance(10.0F).setBlockTextureName(RefStrings.MODID + ":block_deprecated"); - block_reiium = new BlockBeaconable(Material.iron).setBlockName("block_reiium").setCreativeTab(MainRegistry.blockTab).setHardness(5.0F).setResistance(10.0F).setBlockTextureName(RefStrings.MODID + ":block_deprecated"); - block_unobtainium = new BlockBeaconable(Material.iron).setBlockName("block_unobtainium").setCreativeTab(MainRegistry.blockTab).setHardness(5.0F).setResistance(10.0F).setBlockTextureName(RefStrings.MODID + ":block_deprecated"); - block_daffergon = new BlockBeaconable(Material.iron).setBlockName("block_daffergon").setCreativeTab(MainRegistry.blockTab).setHardness(5.0F).setResistance(10.0F).setBlockTextureName(RefStrings.MODID + ":block_deprecated"); - block_verticium = new BlockBeaconable(Material.iron).setBlockName("block_verticium").setCreativeTab(MainRegistry.blockTab).setHardness(5.0F).setResistance(10.0F).setBlockTextureName(RefStrings.MODID + ":block_deprecated"); block_cap = new BlockCap().setBlockName("block_cap").setCreativeTab(MainRegistry.blockTab).setHardness(5.0F).setResistance(10.0F); @@ -2047,9 +2024,6 @@ public class ModBlocks { pwr_controller = new MachinePWRController(Material.iron).setBlockName("pwr_controller").setHardness(5.0F).setResistance(10.0F).setCreativeTab(MainRegistry.machineTab).setBlockTextureName(RefStrings.MODID + ":pwr_casing_blank"); pwr_block = new BlockPWR(Material.iron).setBlockName("pwr_block").setHardness(5.0F).setResistance(10.0F).setCreativeTab(null).setBlockTextureName(RefStrings.MODID + ":pwr_block"); - fusion_conductor = new BlockToolConversionPillar(Material.iron).addVariant("_welded").setBlockName("fusion_conductor").setHardness(5.0F).setResistance(10.0F).setCreativeTab(null).setBlockTextureName(RefStrings.MODID + ":fusion_conductor"); - fusion_center = new BlockPillar(Material.iron, RefStrings.MODID + ":fusion_center_top_alt").setBlockName("fusion_center").setHardness(5.0F).setResistance(10.0F).setCreativeTab(null).setBlockTextureName(RefStrings.MODID + ":fusion_center_side_alt"); - fusion_motor = new BlockPillar(Material.iron, RefStrings.MODID + ":fusion_motor_top_alt").setBlockName("fusion_motor").setHardness(5.0F).setResistance(10.0F).setCreativeTab(null).setBlockTextureName(RefStrings.MODID + ":fusion_motor_side_alt"); fusion_heater = new BlockPillar(Material.iron, RefStrings.MODID + ":fusion_heater_top").setBlockName("fusion_heater").setHardness(5.0F).setResistance(10.0F).setCreativeTab(null).setBlockTextureName(RefStrings.MODID + ":fusion_heater_side"); fusion_hatch = new FusionHatch(Material.iron).setBlockName("fusion_hatch").setHardness(5.0F).setResistance(10.0F).setCreativeTab(null).setBlockTextureName(RefStrings.MODID + ":fusion_hatch"); plasma = new BlockPlasma(Material.iron).setBlockName("plasma").setHardness(5.0F).setResistance(6000.0F).setLightLevel(1.0F).setCreativeTab(null).setBlockTextureName(RefStrings.MODID + ":plasma"); @@ -2322,8 +2296,6 @@ public class ModBlocks { machine_waste_drum = new WasteDrum(Material.iron).setBlockName("machine_waste_drum").setHardness(5.0F).setResistance(10.0F).setCreativeTab(MainRegistry.machineTab).setBlockTextureName(RefStrings.MODID + ":waste_drum"); machine_storage_drum = new StorageDrum(Material.iron).setBlockName("machine_storage_drum").setHardness(5.0F).setResistance(10.0F).setCreativeTab(MainRegistry.machineTab).setBlockTextureName(RefStrings.MODID + ":machine_storage_drum"); - machine_schrabidium_transmutator = new MachineSchrabidiumTransmutator(Material.iron).setBlockName("machine_schrabidium_transmutator").setHardness(5.0F).setResistance(100.0F).setCreativeTab(MainRegistry.machineTab); - machine_siren = new MachineSiren(Material.iron).setBlockName("machine_siren").setHardness(5.0F).setResistance(10.0F).setCreativeTab(MainRegistry.machineTab).setBlockTextureName(RefStrings.MODID + ":machine_siren"); machine_spp_bottom = new SPPBottom(Material.iron).setBlockName("machine_spp_bottom").setHardness(5.0F).setResistance(10.0F); @@ -2479,10 +2451,6 @@ public class ModBlocks { //Bedrock ores GameRegistry.registerBlock(ore_bedrock_oil, ore_bedrock_oil.getUnlocalizedName()); - //Nice Meme - GameRegistry.registerBlock(ore_coal_oil, ore_coal_oil.getUnlocalizedName()); - GameRegistry.registerBlock(ore_coal_oil_burning, ore_coal_oil_burning.getUnlocalizedName()); - //Nether Ores GameRegistry.registerBlock(ore_nether_coal, ore_nether_coal.getUnlocalizedName()); GameRegistry.registerBlock(ore_nether_smoldering, ore_nether_smoldering.getUnlocalizedName()); @@ -2647,11 +2615,6 @@ public class ModBlocks { GameRegistry.registerBlock(block_bakelite, block_bakelite.getUnlocalizedName()); GameRegistry.registerBlock(block_rubber, block_rubber.getUnlocalizedName()); GameRegistry.registerBlock(block_australium, ItemOreBlock.class, block_australium.getUnlocalizedName()); - GameRegistry.registerBlock(block_weidanium, ItemOreBlock.class, block_weidanium.getUnlocalizedName()); - GameRegistry.registerBlock(block_reiium, ItemOreBlock.class, block_reiium.getUnlocalizedName()); - GameRegistry.registerBlock(block_unobtainium, ItemOreBlock.class, block_unobtainium.getUnlocalizedName()); - GameRegistry.registerBlock(block_daffergon, ItemOreBlock.class, block_daffergon.getUnlocalizedName()); - GameRegistry.registerBlock(block_verticium, ItemOreBlock.class, block_verticium.getUnlocalizedName()); register(block_cap); GameRegistry.registerBlock(block_lanthanium, block_lanthanium.getUnlocalizedName()); GameRegistry.registerBlock(block_ra226, block_ra226.getUnlocalizedName()); @@ -3376,7 +3339,6 @@ public class ModBlocks { register(machine_turbofan); register(machine_turbinegas); register(machine_lpw2); - GameRegistry.registerBlock(machine_schrabidium_transmutator, machine_schrabidium_transmutator.getUnlocalizedName()); GameRegistry.registerBlock(machine_teleporter, machine_teleporter.getUnlocalizedName()); GameRegistry.registerBlock(teleanchor, teleanchor.getUnlocalizedName()); GameRegistry.registerBlock(field_disturber, field_disturber.getUnlocalizedName()); @@ -3439,9 +3401,6 @@ public class ModBlocks { register(pwr_block); //Multiblock Generators - register(fusion_conductor); - GameRegistry.registerBlock(fusion_center, fusion_center.getUnlocalizedName()); - GameRegistry.registerBlock(fusion_motor, fusion_motor.getUnlocalizedName()); GameRegistry.registerBlock(fusion_heater, fusion_heater.getUnlocalizedName()); GameRegistry.registerBlock(fusion_hatch, fusion_hatch.getUnlocalizedName()); GameRegistry.registerBlock(plasma, ItemBlockLore.class, plasma.getUnlocalizedName()); diff --git a/src/main/java/com/hbm/blocks/generic/BlockCoalBurning.java b/src/main/java/com/hbm/blocks/generic/BlockCoalBurning.java deleted file mode 100644 index 312c9c310..000000000 --- a/src/main/java/com/hbm/blocks/generic/BlockCoalBurning.java +++ /dev/null @@ -1,78 +0,0 @@ -package com.hbm.blocks.generic; - -import java.util.Random; - -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.Entity; -import net.minecraft.init.Blocks; -import net.minecraft.item.Item; -import net.minecraft.world.World; -import net.minecraftforge.common.util.ForgeDirection; - -public class BlockCoalBurning extends BlockOutgas { - - public BlockCoalBurning(Material mat) { - super(mat, false, 1, false); - this.setTickRandomly(true); - } - - @Override - @SideOnly(Side.CLIENT) - public void randomDisplayTick(World world, int x, int y, int z, Random rand) { - super.randomDisplayTick(world, x, y, z, rand); - - for(ForgeDirection dir : ForgeDirection.VALID_DIRECTIONS) { - - if(dir == ForgeDirection.DOWN) - continue; - - if(world.getBlock(x + dir.offsetX, y + dir.offsetY, z + dir.offsetZ).getMaterial() == Material.air) { - - double ix = x + 0.5F + dir.offsetX + rand.nextDouble() - 0.5D; - double iy = y + 0.5F + dir.offsetY + rand.nextDouble() - 0.5D; - double iz = z + 0.5F + dir.offsetZ + rand.nextDouble() - 0.5D; - - if(dir.offsetX != 0) - ix = x + 0.5F + dir.offsetX * 0.5 + rand.nextDouble() * 0.125 * dir.offsetX; - if(dir.offsetY != 0) - iy = y + 0.5F + dir.offsetY * 0.5 + rand.nextDouble() * 0.125 * dir.offsetY; - if(dir.offsetZ != 0) - iz = z + 0.5F + dir.offsetZ * 0.5 + rand.nextDouble() * 0.125 * dir.offsetZ; - - world.spawnParticle("flame", ix, iy, iz, 0.0, 0.0, 0.0); - world.spawnParticle("smoke", ix, iy, iz, 0.0, 0.0, 0.0); - world.spawnParticle("smoke", ix, iy, iz, 0.0, 0.1, 0.0); - } - } - } - - @Override - public Item getItemDropped(int i, Random rand, int j) { - return null; - } - - public void breakBlock(World world, int x, int y, int z, Block block, int i) { - super.breakBlock(world, x, y, z, block, i); - - world.setBlock(x, y, z, Blocks.fire); - - for(int ix = -2; ix <= 2; ix++) { - for(int iy = -2; iy <= 2; iy++) { - for(int iz = -2; iz <= 2; iz++) { - - if(Math.abs(ix + iy + iz) < 5 && world.getBlock(x + ix, y + iy, z + iz) == Blocks.air) { - world.setBlock(x + ix, y + iy, z + iz, this.getGas()); - } - } - } - } - } - - @Override - public void onEntityWalking(World world, int x, int y, int z, Entity entity) { - entity.setFire(3); - } -} diff --git a/src/main/java/com/hbm/blocks/generic/BlockCoalOil.java b/src/main/java/com/hbm/blocks/generic/BlockCoalOil.java deleted file mode 100644 index cb6f4ea7e..000000000 --- a/src/main/java/com/hbm/blocks/generic/BlockCoalOil.java +++ /dev/null @@ -1,33 +0,0 @@ -package com.hbm.blocks.generic; - -import java.util.Random; - -import com.hbm.blocks.ModBlocks; - -import net.minecraft.block.Block; -import net.minecraft.block.material.Material; -import net.minecraft.init.Items; -import net.minecraft.item.Item; -import net.minecraft.world.World; - -public class BlockCoalOil extends Block { - - public BlockCoalOil(Material mat) { - super(mat); - } - - @Override - public void updateTick(World world, int x, int y, int z, Random rand) { - world.setBlock(x, y, z, ModBlocks.ore_coal_oil_burning); - } - - @Override - public Item getItemDropped(int i, Random rand, int j) { - return Items.coal; - } - - @Override - public int quantityDropped(Random rand) { - return 2 + rand.nextInt(2); - } -} diff --git a/src/main/java/com/hbm/blocks/generic/BlockOutgas.java b/src/main/java/com/hbm/blocks/generic/BlockOutgas.java index 9fe92c1b9..c5361d9b2 100644 --- a/src/main/java/com/hbm/blocks/generic/BlockOutgas.java +++ b/src/main/java/com/hbm/blocks/generic/BlockOutgas.java @@ -50,7 +50,7 @@ public class BlockOutgas extends BlockOre { if(this == ModBlocks.ancient_scrap) return ModBlocks.gas_radon_tomb; - if(this == ModBlocks.ore_coal_oil_burning || this == ModBlocks.ore_nether_coal) { + if(this == ModBlocks.ore_nether_coal) { return ModBlocks.gas_monoxide; } diff --git a/src/main/java/com/hbm/blocks/generic/BlockToolConversion.java b/src/main/java/com/hbm/blocks/generic/BlockToolConversion.java index f018659c3..e3945fbad 100644 --- a/src/main/java/com/hbm/blocks/generic/BlockToolConversion.java +++ b/src/main/java/com/hbm/blocks/generic/BlockToolConversion.java @@ -152,7 +152,6 @@ public class BlockToolConversion extends BlockMulti implements IToolable, ILookO public static void registerRecipes() { conversions.put(new Pair(ToolType.BOLT, new MetaBlock(ModBlocks.watz_end, 0)), new Pair(new AStack[] {new OreDictStack(OreDictManager.DURA.bolt(), 4)}, new MetaBlock(ModBlocks.watz_end, 1))); - conversions.put(new Pair(ToolType.TORCH, new MetaBlock(ModBlocks.fusion_conductor, 0)), new Pair(new AStack[] {new OreDictStack(OreDictManager.STEEL.plateCast())}, new MetaBlock(ModBlocks.fusion_conductor, 1))); conversions.put(new Pair(ToolType.TORCH, new MetaBlock(ModBlocks.fusion_component, 0)), new Pair(new AStack[] {new OreDictStack(OreDictManager.STEEL.plateCast())}, new MetaBlock(ModBlocks.fusion_component, 1))); conversions.put(new Pair(ToolType.TORCH, new MetaBlock(ModBlocks.icf_component, 1)), new Pair(new AStack[] {new OreDictStack(OreDictManager.ANY_BISMOIDBRONZE.plateCast())}, new MetaBlock(ModBlocks.icf_component, 2))); conversions.put(new Pair(ToolType.BOLT, new MetaBlock(ModBlocks.icf_component, 3)), new Pair(new AStack[] {new OreDictStack(OreDictManager.STEEL.plateCast()), new OreDictStack(OreDictManager.DURA.bolt(), 4)}, new MetaBlock(ModBlocks.icf_component, 4))); diff --git a/src/main/java/com/hbm/blocks/machine/MachineITER.java b/src/main/java/com/hbm/blocks/machine/MachineITER.java index 3a4aaba1d..02fbb5749 100644 --- a/src/main/java/com/hbm/blocks/machine/MachineITER.java +++ b/src/main/java/com/hbm/blocks/machine/MachineITER.java @@ -18,6 +18,7 @@ import net.minecraft.util.Vec3; import net.minecraft.world.World; import net.minecraftforge.common.util.ForgeDirection; +@Deprecated public class MachineITER extends BlockDummyable { public MachineITER() { diff --git a/src/main/java/com/hbm/blocks/machine/MachineSchrabidiumTransmutator.java b/src/main/java/com/hbm/blocks/machine/MachineSchrabidiumTransmutator.java deleted file mode 100644 index 04bc79818..000000000 --- a/src/main/java/com/hbm/blocks/machine/MachineSchrabidiumTransmutator.java +++ /dev/null @@ -1,133 +0,0 @@ -package com.hbm.blocks.machine; - -import com.hbm.blocks.ModBlocks; -import com.hbm.lib.RefStrings; -import com.hbm.main.MainRegistry; -import com.hbm.tileentity.machine.TileEntityMachineSchrabidiumTransmutator; -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; - -import java.util.Random; - -public class MachineSchrabidiumTransmutator extends BlockContainer { - - private final Random field_149933_a = new Random(); - private static boolean keepInventory; - - @SideOnly(Side.CLIENT) - //private IIcon iconFront; - private IIcon iconTop; - private IIcon iconBottom; - - @Override - @SideOnly(Side.CLIENT) - public void registerBlockIcons(IIconRegister iconRegister) { - this.iconTop = iconRegister.registerIcon(RefStrings.MODID + (":transmutator_top")); - this.iconBottom = iconRegister.registerIcon(RefStrings.MODID + (":transmutator_bottom")); - this.blockIcon = iconRegister.registerIcon(RefStrings.MODID + ":transmutator_side"); - } - - @Override - @SideOnly(Side.CLIENT) - public IIcon getIcon(int side, int metadata) { - return side == 1 ? this.iconTop : (side == 0 ? this.iconBottom : this.blockIcon); - } - - public MachineSchrabidiumTransmutator(Material p_i45386_1_) { - super(p_i45386_1_); - } - - @Override - public Item getItemDropped(int p_149650_1_, Random p_149650_2_, int p_149650_3_) - { - return Item.getItemFromBlock(ModBlocks.machine_schrabidium_transmutator); - } - - @Override - public boolean onBlockActivated(World world, int x, int y, int z, EntityPlayer player, int side, float hitX, float hitY, float hitZ) { - if(world.isRemote) - { - return true; - } else if(!player.isSneaking()) - { - TileEntityMachineSchrabidiumTransmutator entity = (TileEntityMachineSchrabidiumTransmutator) world.getTileEntity(x, y, z); - if(entity != null) - { - FMLNetworkHandler.openGui(player, MainRegistry.instance, 0, world, x, y, z); - } - return true; - } else { - return false; - } - } - - @Override - public TileEntity createNewTileEntity(World p_149915_1_, int p_149915_2_) { - return new TileEntityMachineSchrabidiumTransmutator(); - } - - @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) - { - TileEntityMachineSchrabidiumTransmutator tileentityfurnace = (TileEntityMachineSchrabidiumTransmutator)p_149749_1_.getTileEntity(p_149749_2_, p_149749_3_, p_149749_4_); - - if (tileentityfurnace != null) - { - for (int i1 = 0; i1 < tileentityfurnace.getSizeInventory(); ++i1) - { - ItemStack itemstack = tileentityfurnace.getStackInSlot(i1); - - if (itemstack != null) - { - float f = this.field_149933_a.nextFloat() * 0.8F + 0.1F; - float f1 = this.field_149933_a.nextFloat() * 0.8F + 0.1F; - float f2 = this.field_149933_a.nextFloat() * 0.8F + 0.1F; - - while (itemstack.stackSize > 0) - { - int j1 = this.field_149933_a.nextInt(21) + 10; - - if (j1 > itemstack.stackSize) - { - j1 = itemstack.stackSize; - } - - itemstack.stackSize -= j1; - EntityItem entityitem = new EntityItem(p_149749_1_, p_149749_2_ + f, p_149749_3_ + f1, p_149749_4_ + f2, new ItemStack(itemstack.getItem(), j1, itemstack.getItemDamage())); - - if (itemstack.hasTagCompound()) - { - entityitem.getEntityItem().setTagCompound((NBTTagCompound)itemstack.getTagCompound().copy()); - } - - float f3 = 0.05F; - entityitem.motionX = (float)this.field_149933_a.nextGaussian() * f3; - entityitem.motionY = (float)this.field_149933_a.nextGaussian() * f3 + 0.2F; - entityitem.motionZ = (float)this.field_149933_a.nextGaussian() * f3; - p_149749_1_.spawnEntityInWorld(entityitem); - } - } - } - - p_149749_1_.func_147453_f(p_149749_2_, p_149749_3_, p_149749_4_, p_149749_5_); - } - } - - super.breakBlock(p_149749_1_, p_149749_2_, p_149749_3_, p_149749_4_, p_149749_5_, p_149749_6_); - } -} diff --git a/src/main/java/com/hbm/config/GeneralConfig.java b/src/main/java/com/hbm/config/GeneralConfig.java index ef9f3dd06..bf32acb72 100644 --- a/src/main/java/com/hbm/config/GeneralConfig.java +++ b/src/main/java/com/hbm/config/GeneralConfig.java @@ -128,7 +128,7 @@ public class GeneralConfig { enable528 = CommonConfig.createConfigBool(config, CATEGORY_528, "enable528Mode", "The central toggle for 528 mode, required TRUE for most subsequent toggles to work.", false); enable528ReasimBoilers = CommonConfig.createConfigBool(config, CATEGORY_528, "X528_forceReasimBoilers", "Keeps the RBMK dial for ReaSim boilers on, preventing use of non-ReaSim boiler columns and forcing the use of steam in-/outlets", true); - enable528ColtanDeposit = CommonConfig.createConfigBool(config, CATEGORY_528, "X528_enableColtanDepsoit", "Enables the coltan deposit. A large amount of coltan will spawn around a single random location in the world.", true); + enable528ColtanDeposit = CommonConfig.createConfigBool(config, CATEGORY_528, "X528_enableColtanDeposit", "Enables the coltan deposit. A large amount of coltan will spawn around a single random location in the world.", true); enable528ColtanSpawn = CommonConfig.createConfigBool(config, CATEGORY_528, "X528_enableColtanSpawning", "Enables coltan ore as a random spawn in the world. Unlike the deposit option, coltan will not just spawn in one central location.", false); enable528BosniaSimulator = CommonConfig.createConfigBool(config, CATEGORY_528, "X528_enableBosniaSimulator", "Enables anti tank mines spawning all over the world.", true); enable528NetherBurn = CommonConfig.createConfigBool(config, CATEGORY_528, "X528_enable528NetherBurn", "Whether players burn in the nether", true); diff --git a/src/main/java/com/hbm/crafting/ConsumableRecipes.java b/src/main/java/com/hbm/crafting/ConsumableRecipes.java index 6c3e6f3b3..07500552b 100644 --- a/src/main/java/com/hbm/crafting/ConsumableRecipes.java +++ b/src/main/java/com/hbm/crafting/ConsumableRecipes.java @@ -187,7 +187,7 @@ public class ConsumableRecipes { //Special Mods CraftingManager.addRecipeAuto(new ItemStack(ModItems.horseshoe_magnet, 1), new Object[] { "L L", "I I", "ILI", 'L', ModItems.lodestone, 'I', IRON.ingot() }); - CraftingManager.addRecipeAuto(new ItemStack(ModItems.industrial_magnet, 1), new Object[] { "SMS", " B ", "SMS", 'S', STEEL.ingot(), 'M', ModItems.horseshoe_magnet, 'B', ModBlocks.fusion_conductor }); + CraftingManager.addRecipeAuto(new ItemStack(ModItems.industrial_magnet, 1), new Object[] { "SMS", " B ", "SMS", 'S', STEEL.ingot(), 'M', ModItems.horseshoe_magnet, 'B', ModBlocks.hadron_coil_alloy }); CraftingManager.addRecipeAuto(new ItemStack(ModItems.heart_container, 1), new Object[] { "HAH", "ACA", "HAH", 'H', ModItems.heart_piece, 'A', AL.ingot(), 'C', ModItems.coin_creeper }); CraftingManager.addRecipeAuto(new ItemStack(ModItems.heart_booster, 1), new Object[] { "GHG", "MCM", "GHG", 'G', GOLD.ingot(), 'H', ModItems.heart_container, 'M', ModItems.morning_glory, 'C', ModItems.coin_maskman }); CraftingManager.addRecipeAuto(new ItemStack(ModItems.heart_fab, 1), new Object[] { "GHG", "MCM", "GHG", 'G', PO210.billet(), 'H', ModItems.heart_booster, 'M', ANY_COKE.gem(), 'C', ModItems.coin_worm }); diff --git a/src/main/java/com/hbm/entity/projectile/EntityMeteor.java b/src/main/java/com/hbm/entity/projectile/EntityMeteor.java index 155c1e696..89e38718d 100644 --- a/src/main/java/com/hbm/entity/projectile/EntityMeteor.java +++ b/src/main/java/com/hbm/entity/projectile/EntityMeteor.java @@ -30,8 +30,6 @@ public class EntityMeteor extends Entity { this.ignoreFrustumCheck = true; this.isImmuneToFire = true; this.setSize(4F, 4F); - if(worldObj.isRemote) - this.audioFly = MainRegistry.proxy.getLoopedSound("hbm:entity.meteoriteFallingLoop", 0, 0, 0, 1F, 200F, 0.9F + this.rand.nextFloat() * 0.2F, 0); } public List getBlocksInRadius(World world, int x, int y, int z, int radius) { @@ -144,12 +142,14 @@ public class EntityMeteor extends Entity { if(this.audioFly != null) this.audioFly.stopSound(); } else { + + if(this.audioFly == null) this.audioFly = MainRegistry.proxy.getLoopedSound("hbm:entity.meteoriteFallingLoop", 0, 0, 0, 1F, 200F, 0.9F + this.rand.nextFloat() * 0.2F, 10); if(this.audioFly.isPlaying()) { // Update sound this.audioFly.keepAlive(); this.audioFly.updateVolume(1F); - this.audioFly.updatePosition((int) this.posX, (int) this.posY, (int) this.posZ); + this.audioFly.updatePosition((float) this.posX, (float) (this.posY + this.height / 2), (float) this.posZ); } else { // Start playing the sound EntityPlayer player = MainRegistry.proxy.me(); diff --git a/src/main/java/com/hbm/explosion/ExplosionNukeGeneric.java b/src/main/java/com/hbm/explosion/ExplosionNukeGeneric.java index fa8d40dba..fd1926d2a 100644 --- a/src/main/java/com/hbm/explosion/ExplosionNukeGeneric.java +++ b/src/main/java/com/hbm/explosion/ExplosionNukeGeneric.java @@ -440,8 +440,6 @@ public class ExplosionNukeGeneric { if(random.nextInt(5) <= 1) world.setBlock(x, y, z, ModBlocks.block_electrical_scrap); } - if((b == ModBlocks.fusion_conductor || b == ModBlocks.fusion_motor || b == ModBlocks.fusion_heater) && random.nextInt(10) == 0) - world.setBlock(x, y, z, ModBlocks.block_electrical_scrap); } } diff --git a/src/main/java/com/hbm/inventory/OreDictManager.java b/src/main/java/com/hbm/inventory/OreDictManager.java index cb9ceba78..d579b6d56 100644 --- a/src/main/java/com/hbm/inventory/OreDictManager.java +++ b/src/main/java/com/hbm/inventory/OreDictManager.java @@ -259,11 +259,6 @@ public class OreDictManager { * RARE METALS */ public static final DictFrame AUSTRALIUM = new DictFrame("Australium"); - public static final DictFrame REIIUM = new DictFrame("Reiium"); - public static final DictFrame WEIDANIUM = new DictFrame("Weidanium"); - public static final DictFrame UNOBTAINIUM = new DictFrame("Unobtainium"); - public static final DictFrame VERTICIUM = new DictFrame("Verticium"); - public static final DictFrame DAFFERGON = new DictFrame("Daffergon"); /* * RARE EARTHS */ @@ -466,11 +461,6 @@ public class OreDictManager { * RARE METALS */ AUSTRALIUM .nugget(nugget_australium) .billet(billet_australium) .ingot(ingot_australium) .dust(powder_australium) .block(block_australium) .ore(ore_australium); - REIIUM .block(block_reiium); - WEIDANIUM .block(block_weidanium); - UNOBTAINIUM .block(block_unobtainium); - VERTICIUM .block(block_verticium); - DAFFERGON .block(block_daffergon); /* * RARE EARTHS diff --git a/src/main/java/com/hbm/inventory/container/ContainerMachineSchrabidiumTransmutator.java b/src/main/java/com/hbm/inventory/container/ContainerMachineSchrabidiumTransmutator.java deleted file mode 100644 index 1d93a0b8c..000000000 --- a/src/main/java/com/hbm/inventory/container/ContainerMachineSchrabidiumTransmutator.java +++ /dev/null @@ -1,88 +0,0 @@ -package com.hbm.inventory.container; - -import com.hbm.inventory.SlotCraftingOutput; -import com.hbm.tileentity.machine.TileEntityMachineSchrabidiumTransmutator; - -import net.minecraft.entity.player.EntityPlayer; -import net.minecraft.entity.player.InventoryPlayer; -import net.minecraft.inventory.Container; -import net.minecraft.inventory.Slot; -import net.minecraft.item.ItemStack; - -public class ContainerMachineSchrabidiumTransmutator extends Container { - -private TileEntityMachineSchrabidiumTransmutator nukeBoy; - - public ContainerMachineSchrabidiumTransmutator(InventoryPlayer invPlayer, TileEntityMachineSchrabidiumTransmutator tedf) { - - nukeBoy = tedf; - - this.addSlotToContainer(new Slot(tedf, 0, 44, 63)); - this.addSlotToContainer(new SlotCraftingOutput(invPlayer.player, tedf, 1, 134, 63)); - this.addSlotToContainer(new Slot(tedf, 2, 26, 18)); - this.addSlotToContainer(new Slot(tedf, 3, 8, 108)); - - 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 + 56)); - } - } - - for(int i = 0; i < 9; i++) - { - this.addSlotToContainer(new Slot(invPlayer, i, 8 + i * 18, 142 + 56)); - } - } - - @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, 0, 1, false)) - { - if (!this.mergeItemStack(var5, 3, 4, false)) - if (!this.mergeItemStack(var5, 2, 3, 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 updateProgressBar(int i, int j) { - if(i == 1) - { - nukeBoy.power = j; - } - } -} diff --git a/src/main/java/com/hbm/inventory/gui/GUIMachineSchrabidiumTransmutator.java b/src/main/java/com/hbm/inventory/gui/GUIMachineSchrabidiumTransmutator.java deleted file mode 100644 index aa5c186c0..000000000 --- a/src/main/java/com/hbm/inventory/gui/GUIMachineSchrabidiumTransmutator.java +++ /dev/null @@ -1,60 +0,0 @@ -package com.hbm.inventory.gui; - -import org.lwjgl.opengl.GL11; - -import com.hbm.inventory.container.ContainerMachineSchrabidiumTransmutator; -import com.hbm.lib.RefStrings; -import com.hbm.tileentity.machine.TileEntityMachineSchrabidiumTransmutator; - -import net.minecraft.client.Minecraft; -import net.minecraft.client.resources.I18n; -import net.minecraft.entity.player.InventoryPlayer; -import net.minecraft.util.ResourceLocation; - -public class GUIMachineSchrabidiumTransmutator extends GuiInfoContainer { - - private static ResourceLocation texture = new ResourceLocation(RefStrings.MODID + ":textures/gui/gui_transmutator.png"); - private TileEntityMachineSchrabidiumTransmutator diFurnace; - - public GUIMachineSchrabidiumTransmutator(InventoryPlayer invPlayer, TileEntityMachineSchrabidiumTransmutator tedf) { - super(new ContainerMachineSchrabidiumTransmutator(invPlayer, tedf)); - diFurnace = tedf; - - this.xSize = 176; - this.ySize = 222; - } - - @Override - public void drawScreen(int mouseX, int mouseY, float f) { - super.drawScreen(mouseX, mouseY, f); - - this.drawElectricityInfo(this, mouseX, mouseY, guiLeft + 8, guiTop + 106 - 88, 16, 88, diFurnace.power, diFurnace.maxPower); - } - - @Override - protected void drawGuiContainerForegroundLayer(int i, int j) { - String name = this.diFurnace.hasCustomInventoryName() ? this.diFurnace.getInventoryName() : I18n.format(this.diFurnace.getInventoryName()); - - this.fontRendererObj.drawString(name, this.xSize / 2 - this.fontRendererObj.getStringWidth(name) / 2, 6, 4210752); - this.fontRendererObj.drawString(I18n.format(String.valueOf(diFurnace.getPower()) + " HE"), this.xSize / 2 - this.fontRendererObj.getStringWidth(String.valueOf(diFurnace.getPower()) + " HE") / 2, 16, 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); - - if(diFurnace.getPower() > 0) { - int i = (int)diFurnace.getPowerScaled(88); - drawTexturedModalRect(guiLeft + 8, guiTop + 106 - i, 176, 88 - i, 16, i); - } - - if(diFurnace.isProcessing()) - { - int j1 = diFurnace.getProgressScaled(66); - drawTexturedModalRect(guiLeft + 64, guiTop + 55, 176, 88, j1, 66); - } - } -} diff --git a/src/main/java/com/hbm/inventory/recipes/AssemblerRecipes.java b/src/main/java/com/hbm/inventory/recipes/AssemblerRecipes.java index 99f5fec56..c6a7bf0cf 100644 --- a/src/main/java/com/hbm/inventory/recipes/AssemblerRecipes.java +++ b/src/main/java/com/hbm/inventory/recipes/AssemblerRecipes.java @@ -135,11 +135,6 @@ import net.minecraft.item.ItemStack; makeRecipe(new ComparableStack(ModBlocks.machine_turbofan, 1), new AStack[] {!exp ? new OreDictStack(TI.shell(), 8) : new OreDictStack(TI.heavyComp(), 1), new OreDictStack(DURA.pipe(), 4), new OreDictStack(ANY_PLASTIC.ingot(), 12), new ComparableStack(ModItems.turbine_tungsten, 1), new OreDictStack(GOLD.wireDense(), 12), new ComparableStack(ModItems.circuit, 3, EnumCircuitType.BASIC.ordinal()) }, 300); makeRecipe(new ComparableStack(ModBlocks.machine_turbinegas, 1), new AStack[] {!exp ? new OreDictStack(STEEL.shell(), 10) : new OreDictStack(STEEL.heavyComp(), 2), new OreDictStack(GOLD.wireDense(), 12), new OreDictStack(DURA.pipe(), 4), new ComparableStack(ModBlocks.steel_scaffold, 8), new OreDictStack(STEEL.pipe(), 4), new ComparableStack(ModItems.turbine_tungsten, 3), new ComparableStack(ModItems.motor, 2), new ComparableStack(ModItems.ingot_rubber, 4), new ComparableStack(ModItems.circuit, 3, EnumCircuitType.BASIC.ordinal())}, 600); makeRecipe(new ComparableStack(ModBlocks.machine_teleporter, 1), new AStack[] {new OreDictStack(TI.ingot(), 8), new OreDictStack(ALLOY.plate(), 12), new OreDictStack(GOLD.wireFine(), 32), new ComparableStack(ModItems.entanglement_kit, 1), new ComparableStack(ModBlocks.machine_battery, 1) },300); - makeRecipe(new ComparableStack(ModBlocks.machine_schrabidium_transmutator, 1), new AStack[] {new OreDictStack(MAGTUNG.ingot(), 1), !exp ? new OreDictStack(TI.ingot(), 24) : new OreDictStack(TI.heavyComp(), 2), !exp ? new OreDictStack(ALLOY.plate(), 18) : new OreDictStack(ALLOY.heavyComp(), 1), new OreDictStack(STEEL.plateWelded(), 12), new ComparableStack(ModItems.plate_desh, 6), new OreDictStack(RUBBER.ingot(), 8), new ComparableStack(ModBlocks.machine_battery, 5), new ComparableStack(ModItems.circuit, 2, EnumCircuitType.ADVANCED.ordinal()), },500); - makeRecipe(new ComparableStack(ModBlocks.fusion_conductor, 1), new AStack[] {new ComparableStack(ModItems.coil_advanced_alloy, 5), }, 100); - makeRecipe(new ComparableStack(ModBlocks.fusion_center, 1), new AStack[] {new OreDictStack(ANY_HARDPLASTIC.ingot(), 4), new OreDictStack(STEEL.plate(), 6), new OreDictStack(ALLOY.wireFine(), 24), },200); - makeRecipe(new ComparableStack(ModBlocks.fusion_motor, 1), new AStack[] {new OreDictStack(TI.ingot(), 4), new OreDictStack(STEEL.ingot(), 2), new ComparableStack(ModItems.motor, 4), },250); - makeRecipe(new ComparableStack(ModBlocks.fusion_heater, 4), new AStack[] {new OreDictStack(W.plateWelded(), 2), new OreDictStack(STEEL.plateWelded(), 2), new OreDictStack(OreDictManager.getReflector(), 2), new ComparableStack(ModItems.magnetron, 2) }, 200); makeRecipe(new ComparableStack(ModBlocks.watz_element, 3), new AStack[] {new OreDictStack(STEEL.plateCast(), 2), new OreDictStack(ZR.ingot(), 2), new OreDictStack(BIGMT.ingot(), 2), new OreDictStack(ANY_HARDPLASTIC.ingot(), 4)},200); makeRecipe(new ComparableStack(ModBlocks.watz_cooler, 3), new AStack[] {new OreDictStack(STEEL.plateCast(), 2), new OreDictStack(CU.plateCast(), 4), new OreDictStack(RUBBER.ingot(), 2), }, 200); makeRecipe(new ComparableStack(ModBlocks.watz_end, 3), new AStack[] {new OreDictStack(ANY_RESISTANTALLOY.plateWelded()), new OreDictStack(B.ingot(), 3), new OreDictStack(STEEL.plateWelded(), 2), }, 100); @@ -193,55 +188,6 @@ import net.minecraft.item.ItemStack; makeRecipe(new ComparableStack(ModBlocks.machine_radar, 1), new AStack[] {new OreDictStack(STEEL.plate(), 8), new OreDictStack(ANY_PLASTIC.ingot(), 8), new OreDictStack(ANY_RUBBER.ingot(), 8), new ComparableStack(ModItems.magnetron, 3), new ComparableStack(ModItems.motor, 1), new ComparableStack(ModItems.circuit, 8, EnumCircuitType.BASIC.ordinal()), new ComparableStack(ModItems.coil_copper, 12), new ComparableStack(ModItems.crt_display, 4), },300); makeRecipe(new ComparableStack(ModBlocks.machine_radar_large, 1), new AStack[] {new OreDictStack(STEEL.plateWelded(), 6), new OreDictStack(ANY_RESISTANTALLOY.ingot(), 4), new OreDictStack(ANY_PLASTIC.ingot(), 16), new OreDictStack(ANY_RUBBER.ingot(), 16), new ComparableStack(ModItems.magnetron, 12), new ComparableStack(ModItems.motor_desh, 1), new ComparableStack(ModItems.circuit, 4, EnumCircuitType.ADVANCED), new ComparableStack(ModItems.coil_copper, 32), new ComparableStack(ModItems.crt_display, 4), },600); makeRecipe(new ComparableStack(ModBlocks.machine_forcefield, 1), new AStack[] {new OreDictStack(ALLOY.plate(), 8), new ComparableStack(ModItems.plate_desh, 4), new ComparableStack(ModItems.coil_gold_torus, 6), new ComparableStack(ModItems.coil_magnetized_tungsten, 12), new ComparableStack(ModItems.motor, 1), new ComparableStack(ModItems.upgrade_radius, 1), new ComparableStack(ModItems.upgrade_health, 1), new ComparableStack(ModItems.circuit, 4, EnumCircuitType.ADVANCED), new ComparableStack(ModBlocks.machine_transformer, 1), },1000); - makeRecipe(new ComparableStack(ModItems.mp_thruster_10_kerosene, 1), new AStack[] {new ComparableStack(ModItems.seg_10, 1), new OreDictStack(STEEL.pipe(), 1), new OreDictStack(W.ingot(), 4), new OreDictStack(STEEL.plate(), 4), },100); - makeRecipe(new ComparableStack(ModItems.mp_thruster_10_solid, 1), new AStack[] {new ComparableStack(ModItems.seg_10, 1), new ComparableStack(ModItems.coil_tungsten, 1), new OreDictStack(DURA.ingot(), 4), new OreDictStack(STEEL.plate(), 4), },100); - makeRecipe(new ComparableStack(ModItems.mp_thruster_10_xenon, 1), new AStack[] {new ComparableStack(ModItems.seg_10, 1), new OreDictStack(STEEL.plate(), 4), new OreDictStack(STEEL.pipe(), 12), new ComparableStack(ModItems.arc_electrode, 4), },100); - makeRecipe(new ComparableStack(ModItems.mp_thruster_15_kerosene, 1), new AStack[] {new ComparableStack(ModItems.seg_15, 1), new OreDictStack(STEEL.pipe(), 1), new OreDictStack(W.ingot(), 8), new OreDictStack(STEEL.plate(), 6), new OreDictStack(DESH.ingot(), 4), },500); - makeRecipe(new ComparableStack(ModItems.mp_thruster_15_kerosene_dual, 1), new AStack[] {new ComparableStack(ModItems.seg_15, 1), new OreDictStack(STEEL.pipe(), 1), new OreDictStack(W.ingot(), 4), new OreDictStack(STEEL.plate(), 6), new OreDictStack(DESH.ingot(), 1), },500); - makeRecipe(new ComparableStack(ModItems.mp_thruster_15_kerosene_triple, 1), new AStack[] {new ComparableStack(ModItems.seg_15, 1), new OreDictStack(STEEL.pipe(), 1), new OreDictStack(W.ingot(), 6), new OreDictStack(STEEL.plate(), 6), new OreDictStack(DESH.ingot(), 2), },500); - makeRecipe(new ComparableStack(ModItems.mp_thruster_15_solid, 1), new AStack[] {new ComparableStack(ModItems.seg_15, 1), new OreDictStack(STEEL.plate(), 6), new OreDictStack(DURA.ingot(), 6), new ComparableStack(ModItems.coil_tungsten, 3), },500); - makeRecipe(new ComparableStack(ModItems.mp_thruster_15_solid_hexdecuple, 1), new AStack[] {new ComparableStack(ModItems.seg_15, 1), new OreDictStack(STEEL.plate(), 6), new OreDictStack(DURA.ingot(), 12), new ComparableStack(ModItems.coil_tungsten, 6), },500); - makeRecipe(new ComparableStack(ModItems.mp_thruster_15_hydrogen, 1), new AStack[] {new ComparableStack(ModItems.seg_15, 1), new OreDictStack(STEEL.pipe(), 1), new OreDictStack(W.ingot(), 8), new OreDictStack(STEEL.plate(), 6), new ComparableStack(ModItems.tank_steel, 1), new OreDictStack(DESH.ingot(), 4), },500); - makeRecipe(new ComparableStack(ModItems.mp_thruster_15_hydrogen_dual, 1), new AStack[] {new ComparableStack(ModItems.seg_15, 1), new OreDictStack(STEEL.pipe(), 1), new OreDictStack(W.ingot(), 4), new OreDictStack(STEEL.plate(), 6), new ComparableStack(ModItems.tank_steel, 1), new OreDictStack(DESH.ingot(), 1), },500); - makeRecipe(new ComparableStack(ModItems.mp_thruster_15_balefire_short, 1), new AStack[] {new ComparableStack(ModItems.seg_15, 1), new ComparableStack(ModItems.plate_polymer, 8), new ComparableStack(ModBlocks.pwr_fuel, 1), new OreDictStack(DESH.ingot(), 8), new OreDictStack(BIGMT.plate(), 12), new OreDictStack(CU.plateCast(), 2), new ComparableStack(ModItems.ingot_uranium_fuel, 4), new ComparableStack(ModItems.pipes_steel, 2), },500); - makeRecipe(new ComparableStack(ModItems.mp_thruster_15_balefire, 1), new AStack[] {new ComparableStack(ModItems.seg_15, 1), new ComparableStack(ModItems.plate_polymer, 16), new ComparableStack(ModBlocks.pwr_fuel, 2), new OreDictStack(DESH.ingot(), 16), new OreDictStack(BIGMT.plate(), 24), new OreDictStack(CU.plateCast(), 4), new ComparableStack(ModItems.ingot_uranium_fuel, 8), new ComparableStack(ModItems.pipes_steel, 2), },500); - makeRecipe(new ComparableStack(ModItems.mp_thruster_15_balefire_large, 1), new AStack[] {new ComparableStack(ModItems.seg_15, 1), new ComparableStack(ModItems.plate_polymer, 16), new ComparableStack(ModBlocks.pwr_fuel, 2), new OreDictStack(DESH.ingot(), 24), new OreDictStack(BIGMT.plate(), 32), new OreDictStack(CU.plateCast(), 4), new ComparableStack(ModItems.ingot_uranium_fuel, 8), new ComparableStack(ModItems.pipes_steel, 2), },500); - makeRecipe(new ComparableStack(ModItems.mp_thruster_20_kerosene, 1), new AStack[] {new ComparableStack(ModItems.seg_20, 1), new OreDictStack(STEEL.pipe(), 1), new OreDictStack(W.ingot(), 16), new OreDictStack(STEEL.plate(), 12), new OreDictStack(DESH.ingot(), 8), },500); - makeRecipe(new ComparableStack(ModItems.mp_thruster_20_kerosene_dual, 1), new AStack[] {new ComparableStack(ModItems.seg_20, 1), new OreDictStack(STEEL.pipe(), 1), new OreDictStack(W.ingot(), 8), new OreDictStack(STEEL.plate(), 6), new OreDictStack(DESH.ingot(), 4), },500); - makeRecipe(new ComparableStack(ModItems.mp_thruster_20_kerosene_triple, 1), new AStack[] {new ComparableStack(ModItems.seg_20, 1), new OreDictStack(STEEL.pipe(), 1), new OreDictStack(W.ingot(), 12), new OreDictStack(STEEL.plate(), 8), new OreDictStack(DESH.ingot(), 6), },500); - makeRecipe(new ComparableStack(ModItems.mp_thruster_20_solid, 1), new AStack[] {new ComparableStack(ModItems.seg_20, 1), new ComparableStack(ModItems.coil_tungsten, 8), new OreDictStack(DURA.ingot(), 16), new OreDictStack(STEEL.plate(), 12), },500); - makeRecipe(new ComparableStack(ModItems.mp_thruster_20_solid_multi, 1), new AStack[] {new ComparableStack(ModItems.seg_20, 1), new ComparableStack(ModItems.coil_tungsten, 12), new OreDictStack(DURA.ingot(), 18), new OreDictStack(STEEL.plate(), 12), },500); - makeRecipe(new ComparableStack(ModItems.mp_thruster_20_solid_multier, 1), new AStack[] {new ComparableStack(ModItems.seg_20, 1), new ComparableStack(ModItems.coil_tungsten, 16), new OreDictStack(DURA.ingot(), 20), new OreDictStack(STEEL.plate(), 12), },500); - makeRecipe(new ComparableStack(ModItems.mp_fuselage_10_kerosene, 1), new AStack[] {new ComparableStack(ModItems.seg_10, 2), new ComparableStack(ModBlocks.steel_scaffold, 3), new OreDictStack(TI.plate(), 12), new OreDictStack(STEEL.plate(), 3), },100); - makeRecipe(new ComparableStack(ModItems.mp_fuselage_10_solid, 1), new AStack[] {new ComparableStack(ModItems.seg_10, 2), new ComparableStack(ModBlocks.steel_scaffold, 3), new OreDictStack(TI.plate(), 12), new OreDictStack(AL.plate(), 3), },100); - makeRecipe(new ComparableStack(ModItems.mp_fuselage_10_xenon, 1), new AStack[] {new ComparableStack(ModItems.seg_10, 2), new ComparableStack(ModBlocks.steel_scaffold, 3), new OreDictStack(TI.plate(), 12), new OreDictStack(CU.plateCast(), 3), },100); - makeRecipe(new ComparableStack(ModItems.mp_fuselage_10_long_kerosene, 1), new AStack[] {new ComparableStack(ModItems.seg_10, 2), new ComparableStack(ModBlocks.steel_scaffold, 6), new OreDictStack(TI.plate(), 24), new OreDictStack(STEEL.plate(), 6), },200); - makeRecipe(new ComparableStack(ModItems.mp_fuselage_10_long_solid, 1), new AStack[] {new ComparableStack(ModItems.seg_10, 2), new ComparableStack(ModBlocks.steel_scaffold, 6), new OreDictStack(TI.plate(), 24), new OreDictStack(AL.plate(), 6), },200); - makeRecipe(new ComparableStack(ModItems.mp_fuselage_10_15_kerosene, 1), new AStack[] {new ComparableStack(ModItems.seg_10, 1), new ComparableStack(ModItems.seg_15, 1), new ComparableStack(ModBlocks.steel_scaffold, 9), new OreDictStack(TI.plate(), 36), new OreDictStack(STEEL.plate(), 9), },300); - makeRecipe(new ComparableStack(ModItems.mp_fuselage_10_15_solid, 1), new AStack[] {new ComparableStack(ModItems.seg_10, 1), new ComparableStack(ModItems.seg_15, 1), new ComparableStack(ModBlocks.steel_scaffold, 9), new OreDictStack(TI.plate(), 36), new OreDictStack(AL.plate(), 9), },300); - makeRecipe(new ComparableStack(ModItems.mp_fuselage_10_15_hydrogen, 1), new AStack[] {new ComparableStack(ModItems.seg_10, 1), new ComparableStack(ModItems.seg_15, 1), new ComparableStack(ModBlocks.steel_scaffold, 9), new OreDictStack(TI.plate(), 36), new OreDictStack(IRON.plate(), 9), },300); - makeRecipe(new ComparableStack(ModItems.mp_fuselage_10_15_balefire, 1), new AStack[] {new ComparableStack(ModItems.seg_10, 1), new ComparableStack(ModItems.seg_15, 1), new ComparableStack(ModBlocks.steel_scaffold, 9), new OreDictStack(TI.plate(), 36), new OreDictStack(BIGMT.plate(), 9), },300); - makeRecipe(new ComparableStack(ModItems.mp_fuselage_15_kerosene, 1), new AStack[] {new ComparableStack(ModItems.seg_15, 2), new ComparableStack(ModBlocks.steel_scaffold, 12), new OreDictStack(TI.plate(), 48), new OreDictStack(STEEL.plate(), 12), },500); - makeRecipe(new ComparableStack(ModItems.mp_fuselage_15_solid, 1), new AStack[] {new ComparableStack(ModItems.seg_15, 2), new ComparableStack(ModBlocks.steel_scaffold, 12), new OreDictStack(TI.plate(), 48), new OreDictStack(AL.plate(), 12), },500); - makeRecipe(new ComparableStack(ModItems.mp_fuselage_15_hydrogen, 1), new AStack[] {new ComparableStack(ModItems.seg_15, 2), new ComparableStack(ModBlocks.steel_scaffold, 12), new OreDictStack(TI.plate(), 48), new OreDictStack(IRON.plate(), 12), },500); - makeRecipe(new ComparableStack(ModItems.mp_fuselage_10_15_balefire, 1), new AStack[] {new ComparableStack(ModItems.seg_10, 1), new ComparableStack(ModItems.seg_15, 1), new ComparableStack(ModBlocks.steel_scaffold, 9), new OreDictStack(TI.plate(), 36), new OreDictStack(BIGMT.plate(), 9), },500); - makeRecipe(new ComparableStack(ModItems.mp_fuselage_15_20_kerosene, 1), new AStack[] {new ComparableStack(ModItems.seg_15, 1), new ComparableStack(ModItems.seg_20, 1), new ComparableStack(ModBlocks.steel_scaffold, 16), new OreDictStack(TI.plate(), 64), new OreDictStack(STEEL.plate(), 16), },600); - makeRecipe(new ComparableStack(ModItems.mp_fuselage_15_20_solid, 1), new AStack[] {new ComparableStack(ModItems.seg_15, 1), new ComparableStack(ModItems.seg_20, 1), new ComparableStack(ModBlocks.steel_scaffold, 16), new OreDictStack(TI.plate(), 64), new OreDictStack(AL.plate(), 16), },600); - makeRecipe(new ComparableStack(ModItems.mp_warhead_10_he, 1), new AStack[] {new ComparableStack(ModItems.seg_10, 1), new OreDictStack(STEEL.plate(), 6), new OreDictStack(ANY_HIGHEXPLOSIVE.ingot(), 3), new ComparableStack(ModItems.circuit, 1, EnumCircuitType.BASIC), },100); - makeRecipe(new ComparableStack(ModItems.mp_warhead_10_incendiary, 1), new AStack[] {new ComparableStack(ModItems.seg_10, 1), new OreDictStack(TI.plate(), 4), new OreDictStack(P_RED.dust(), 3), new OreDictStack(ANY_HIGHEXPLOSIVE.ingot(), 2), new ComparableStack(ModItems.circuit, 1, EnumCircuitType.BASIC), },100); - makeRecipe(new ComparableStack(ModItems.mp_warhead_10_buster, 1), new AStack[] {new ComparableStack(ModItems.seg_10, 1), new OreDictStack(TI.plate(), 4), new ComparableStack(ModBlocks.det_charge, 1), new ComparableStack(ModBlocks.det_cord, 4), new OreDictStack(CU.plateCast(), 4), new ComparableStack(ModItems.circuit, 1, EnumCircuitType.BASIC), },100); - makeRecipe(new ComparableStack(ModItems.mp_warhead_10_nuclear, 1), new AStack[] {new ComparableStack(ModItems.seg_10, 1), new OreDictStack(STEEL.plate(), 6), new OreDictStack(PU239.ingot(), 1), new OreDictStack(OreDictManager.getReflector(), 2), new OreDictStack(ANY_HIGHEXPLOSIVE.ingot(), 4), new ComparableStack(ModItems.circuit, 1, EnumCircuitType.ADVANCED), },200); - makeRecipe(new ComparableStack(ModItems.mp_warhead_10_nuclear_large, 1), new AStack[] {new ComparableStack(ModItems.seg_10, 1), new OreDictStack(STEEL.plate(), 8), new OreDictStack(AL.plate(), 4), new OreDictStack(PU239.ingot(), 2), new ComparableStack(ModBlocks.det_charge, 4), new ComparableStack(ModItems.circuit,3, EnumCircuitType.ADVANCED), },300); - makeRecipe(new ComparableStack(ModItems.mp_warhead_10_taint, 1), new AStack[] {new ComparableStack(ModItems.seg_10, 1), new OreDictStack(STEEL.plate(), 12), new ComparableStack(ModBlocks.det_cord, 2), new ComparableStack(ModItems.powder_magic, 12), new ComparableStack(ModItems.bucket_mud, 1), },100); - makeRecipe(new ComparableStack(ModItems.mp_warhead_10_cloud, 1), new AStack[] {new ComparableStack(ModItems.seg_10, 1), new OreDictStack(STEEL.plate(), 12), new ComparableStack(ModBlocks.det_cord, 2), new ComparableStack(ModItems.grenade_pink_cloud, 2), },100); - makeRecipe(new ComparableStack(ModItems.mp_warhead_15_he, 1), new AStack[] {new ComparableStack(ModItems.seg_15, 1), new OreDictStack(STEEL.plate(), 16), new ComparableStack(ModBlocks.det_charge, 4), new ComparableStack(ModItems.circuit, 3, EnumCircuitType.BASIC), },200); - makeRecipe(new ComparableStack(ModItems.mp_warhead_15_incendiary, 1), new AStack[] {new ComparableStack(ModItems.seg_15, 1), new OreDictStack(STEEL.plate(), 16), new ComparableStack(ModBlocks.det_charge, 2), new OreDictStack(P_RED.dust(), 8), new ComparableStack(ModItems.circuit, 3, EnumCircuitType.BASIC), },200); - makeRecipe(new ComparableStack(ModItems.mp_warhead_15_nuclear, 1), new AStack[] {new ComparableStack(ModItems.seg_15, 1), new OreDictStack(STEEL.plate(), 24), new OreDictStack(TI.plate(), 12), new OreDictStack(PU239.ingot(), 3), new ComparableStack(ModBlocks.det_charge, 6), new ComparableStack(ModItems.circuit, 5, EnumCircuitType.ADVANCED), },500); - makeRecipe(new ComparableStack(ModItems.mp_warhead_15_n2, 1), new AStack[] {new ComparableStack(ModItems.seg_15, 1), new OreDictStack(STEEL.plate(), 8), new OreDictStack(TI.plate(), 20), new ComparableStack(ModBlocks.det_charge, 24), new ComparableStack(Blocks.redstone_block, 12), new OreDictStack(MAGTUNG.dust(), 6), new ComparableStack(ModItems.circuit, 4, EnumCircuitType.ADVANCED), },400); - makeRecipe(new ComparableStack(ModItems.mp_warhead_15_balefire, 1), new AStack[] {new ComparableStack(ModItems.seg_15, 1), new OreDictStack(OreDictManager.getReflector(), 16), new ComparableStack(ModItems.powder_magic, 6), new ComparableStack(ModItems.egg_balefire_shard, 4), new OreDictStack(ANY_HIGHEXPLOSIVE.ingot(), 8), new ComparableStack(ModItems.circuit, 8, EnumCircuitType.ADVANCED), }, 60); - makeRecipe(new ComparableStack(ModItems.fusion_shield_tungsten, 1), new AStack[] {new OreDictStack(W.block(), 32), new OreDictStack(OreDictManager.getReflector(), 96)}, 600); - makeRecipe(new ComparableStack(ModItems.fusion_shield_desh, 1), new AStack[] {new OreDictStack(DESH.block(), 16), new OreDictStack(CO.block(), 16), new OreDictStack(BIGMT.plate(), 96)}, 600); - makeRecipe(new ComparableStack(ModItems.fusion_shield_chlorophyte, 1), new AStack[] {new OreDictStack(W.block(), 16), new OreDictStack(DURA.block(), 16), new OreDictStack(OreDictManager.getReflector(), 48), new ComparableStack(ModItems.powder_chlorophyte, 48)}, 600); makeRecipe(new ComparableStack(ModItems.missile_soyuz, 1), new AStack[] { new OreDictStack(TI.shell(), 32), diff --git a/src/main/java/com/hbm/inventory/recipes/AssemblyMachineRecipes.java b/src/main/java/com/hbm/inventory/recipes/AssemblyMachineRecipes.java index 7ace5cd11..d399ba1bd 100644 --- a/src/main/java/com/hbm/inventory/recipes/AssemblyMachineRecipes.java +++ b/src/main/java/com/hbm/inventory/recipes/AssemblyMachineRecipes.java @@ -535,9 +535,6 @@ public class AssemblyMachineRecipes extends GenericRecipes { .inputItemsEx(new ComparableStack(ModItems.item_expensive, 1, EnumExpensiveType.LEAD_PLATING), new OreDictStack(ZR.plateWelded(), 1), new ComparableStack(ModItems.billet_ra226be, 3))); // fusion reactor - this.register(new GenericRecipe("ass.fusionconductor").setup(100, 100).outputItems(new ItemStack(ModBlocks.fusion_conductor, 1)) - .inputItems(new ComparableStack(ModItems.coil_advanced_alloy, 5))); - this.register(new GenericRecipe("ass.fusioncore").setup(600, 100).outputItems(new ItemStack(ModBlocks.struct_torus_core, 1)) .inputItems(new OreDictStack(ANY_RESISTANTALLOY.plateWelded(), 8), new OreDictStack(ANY_HARDPLASTIC.ingot(), 32), new ComparableStack(ModItems.circuit, 8, EnumCircuitType.BISMOID)) .inputItemsEx(new ComparableStack(ModItems.item_expensive, 8, EnumExpensiveType.FERRO_PLATING), new ComparableStack(ModItems.item_expensive, 8, EnumExpensiveType.PLASTIC), new ComparableStack(ModItems.circuit, 16, EnumCircuitType.BISMOID)) diff --git a/src/main/java/com/hbm/itempool/ItemPoolsLegacy.java b/src/main/java/com/hbm/itempool/ItemPoolsLegacy.java index a59094921..706fe43b1 100644 --- a/src/main/java/com/hbm/itempool/ItemPoolsLegacy.java +++ b/src/main/java/com/hbm/itempool/ItemPoolsLegacy.java @@ -224,8 +224,8 @@ public class ItemPoolsLegacy { weighted(ModItems.cell_antimatter, 0, 1, 1, 1), weighted(ModItems.powder_neodymium, 0, 1, 1, 1), weighted(ModItems.powder_niobium, 0, 1, 1, 1), - weighted(ModBlocks.fusion_conductor, 0, 2, 4, 5), - weighted(ModBlocks.fusion_heater, 0, 1, 3, 5), + weighted(ModItems.wire_dense, Mats.MAT_ALLOY.id, 2, 4, 5), + weighted(ModItems.wire_dense, Mats.MAT_GOLD.id, 1, 3, 5), weighted(ModBlocks.pwr_fuel, 0, 1, 2, 5), weighted(ModBlocks.block_tungsten, 0, 3, 8, 5), weighted(ModBlocks.red_wire_coated, 0, 4, 8, 5), diff --git a/src/main/java/com/hbm/main/CraftingManager.java b/src/main/java/com/hbm/main/CraftingManager.java index d45980a8b..4146f92a5 100644 --- a/src/main/java/com/hbm/main/CraftingManager.java +++ b/src/main/java/com/hbm/main/CraftingManager.java @@ -766,7 +766,7 @@ public class CraftingManager { addRecipeAuto(new ItemStack(ModBlocks.dfc_emitter, 1), new Object[] { "SDS", "TXL", "SDS", 'S', OSMIRIDIUM.plateWelded(), 'D', ModItems.plate_desh, 'T', ModBlocks.machine_transformer_dnt, 'X', ModItems.crystal_xen, 'L', ModItems.sat_head_laser }); addRecipeAuto(new ItemStack(ModBlocks.dfc_receiver, 1), new Object[] { "SDS", "TXL", "SDS", 'S', OSMIRIDIUM.plateWelded(), 'D', ModItems.plate_desh, 'T', ModBlocks.machine_transformer_dnt, 'X', ModBlocks.block_dineutronium, 'L', STEEL.shell() }); addRecipeAuto(new ItemStack(ModBlocks.dfc_injector, 1), new Object[] { "SDS", "TXL", "SDS", 'S', OSMIRIDIUM.plateWelded(), 'D', CMB.plate(), 'T', ModBlocks.machine_fluidtank, 'X', ModItems.motor, 'L', STEEL.pipe() }); - addRecipeAuto(new ItemStack(ModBlocks.dfc_stabilizer, 1), new Object[] { "SDS", "TXL", "SDS", 'S', OSMIRIDIUM.plateWelded(), 'D', ModItems.plate_desh, 'T', ModItems.singularity_spark, 'X', ModBlocks.fusion_conductor, 'L', ModItems.crystal_xen }); + addRecipeAuto(new ItemStack(ModBlocks.dfc_stabilizer, 1), new Object[] { "SDS", "TXL", "SDS", 'S', OSMIRIDIUM.plateWelded(), 'D', ModItems.plate_desh, 'T', ModItems.singularity_spark, 'X', ModBlocks.hadron_coil_alloy, 'L', ModItems.crystal_xen }); addRecipeAuto(new ItemStack(ModBlocks.barrel_plastic, 1), new Object[] { "IPI", "I I", "IPI", 'I', ModItems.plate_polymer, 'P', AL.plate() }); addRecipeAuto(new ItemStack(ModBlocks.barrel_steel, 1), new Object[] { "IPI", "I I", "IPI", 'I', STEEL.plate(), 'P', STEEL.ingot() }); addRecipeAuto(new ItemStack(ModBlocks.barrel_tcalloy, 1), new Object[] { "IPI", "I I", "IPI", 'I', "ingotTcAlloy", 'P', TI.plate() }); diff --git a/src/main/java/com/hbm/main/MainRegistry.java b/src/main/java/com/hbm/main/MainRegistry.java index 8db6b3c17..7080fc9d2 100644 --- a/src/main/java/com/hbm/main/MainRegistry.java +++ b/src/main/java/com/hbm/main/MainRegistry.java @@ -1457,6 +1457,17 @@ public class MainRegistry { ignoreMappings.add("hbm:tile.struct_plasma_core"); ignoreMappings.add("hbm:tile.machine_amgen"); ignoreMappings.add("hbm:tile.machine_geo"); + ignoreMappings.add("hbm:tile.ore_coal_oil"); + ignoreMappings.add("hbm:tile.ore_coal_oil_burning"); + ignoreMappings.add("hbm:tile.block_weidanium"); + ignoreMappings.add("hbm:tile.block_reiium"); + ignoreMappings.add("hbm:tile.block_unobtainium"); + ignoreMappings.add("hbm:tile.block_daffergon"); + ignoreMappings.add("hbm:tile.block_verticium"); + ignoreMappings.add("hbm:tile.machine_schrabidium_transmutator"); + ignoreMappings.add("hbm:tile.fusion_conductor"); + ignoreMappings.add("hbm:tile.fusion_center"); + ignoreMappings.add("hbm:tile.fusion_motor"); /// REMAP /// remapItems.put("hbm:item.gadget_explosive8", ModItems.early_explosive_lenses); diff --git a/src/main/java/com/hbm/tileentity/TileMappings.java b/src/main/java/com/hbm/tileentity/TileMappings.java index fe38832fb..dda9eba44 100644 --- a/src/main/java/com/hbm/tileentity/TileMappings.java +++ b/src/main/java/com/hbm/tileentity/TileMappings.java @@ -95,7 +95,6 @@ public class TileMappings { put(TileEntityCrashedBomb.class, "tileentity_crashed_balefire"); put(TileEntityConverterHeRf.class, "tileentity_converter_herf"); put(TileEntityConverterRfHe.class, "tileentity_converter_rfhe"); - put(TileEntityMachineSchrabidiumTransmutator.class, "tileentity_schrabidium_transmutator"); put(TileEntityMachineDiesel.class, "tileentity_diesel_generator"); put(TileEntityMachineShredder.class, "tileentity_machine_shredder"); put(TileEntityMachineTeleporter.class, "tileentity_teleblock"); diff --git a/src/main/java/com/hbm/tileentity/machine/TileEntityITER.java b/src/main/java/com/hbm/tileentity/machine/TileEntityITER.java index 18a936742..84f5e2253 100644 --- a/src/main/java/com/hbm/tileentity/machine/TileEntityITER.java +++ b/src/main/java/com/hbm/tileentity/machine/TileEntityITER.java @@ -6,7 +6,6 @@ import java.util.List; import com.hbm.explosion.ExplosionLarge; import com.hbm.explosion.ExplosionNT; import com.hbm.explosion.ExplosionNT.ExAttrib; -import com.hbm.handler.CompatHandler; import com.hbm.handler.threading.PacketThreading; import com.hbm.inventory.container.ContainerITER; import com.hbm.inventory.fluid.FluidType; @@ -33,15 +32,10 @@ import api.hbm.fluid.IFluidStandardTransceiver; import api.hbm.redstoneoverradio.IRORInteractive; import api.hbm.redstoneoverradio.IRORValueProvider; import api.hbm.tile.IInfoProviderEC; -import cpw.mods.fml.common.Optional; import cpw.mods.fml.common.network.NetworkRegistry.TargetPoint; import cpw.mods.fml.relauncher.Side; import cpw.mods.fml.relauncher.SideOnly; import io.netty.buffer.ByteBuf; -import li.cil.oc.api.machine.Arguments; -import li.cil.oc.api.machine.Callback; -import li.cil.oc.api.machine.Context; -import li.cil.oc.api.network.SimpleComponent; import net.minecraft.entity.player.EntityPlayer; import net.minecraft.inventory.Container; import net.minecraft.item.ItemStack; @@ -51,8 +45,8 @@ import net.minecraft.util.Vec3; import net.minecraft.world.World; import net.minecraftforge.common.util.ForgeDirection; -@Optional.InterfaceList({@Optional.Interface(iface = "li.cil.oc.api.network.SimpleComponent", modid = "OpenComputers")}) -public class TileEntityITER extends TileEntityMachineBase implements IEnergyReceiverMK2, IFluidStandardTransceiver, IGUIProvider, IInfoProviderEC, SimpleComponent, CompatHandler.OCComponent, IFluidCopiable, IRORValueProvider, IRORInteractive { +@Deprecated +public class TileEntityITER extends TileEntityMachineBase implements IEnergyReceiverMK2, IFluidStandardTransceiver, IGUIProvider, IInfoProviderEC, IFluidCopiable, IRORValueProvider, IRORInteractive { public long power; public static final long maxPower = 10000000; @@ -522,100 +516,6 @@ public class TileEntityITER extends TileEntityMachineBase implements IEnergyRece data.setDouble("outputmb", output); } - - @Override - @Optional.Method(modid = "OpenComputers") - public String getComponentName() { - return "ntm_fusion"; - } - - @Callback(direct = true) - @Optional.Method(modid = "OpenComputers") - public Object[] getEnergyInfo(Context context, Arguments args) { - return new Object[] {getPower(), getMaxPower()}; - } - - @Callback(direct = true) - @Optional.Method(modid = "OpenComputers") - public Object[] isActive(Context context, Arguments args) { - return new Object[] {isOn}; - } - - @Callback(direct = true, limit = 4) - @Optional.Method(modid = "OpenComputers") - public Object[] setActive(Context context, Arguments args) { - isOn = args.checkBoolean(0); - return new Object[] {}; - } - - @Callback(direct = true) - @Optional.Method(modid = "OpenComputers") - public Object[] getFluid(Context context, Arguments args) { - return new Object[] { - tanks[0].getFill(), tanks[0].getMaxFill(), - tanks[1].getFill(), tanks[1].getMaxFill(), - plasma.getFill(), plasma.getMaxFill(), plasma.getTankType().getUnlocalizedName() - }; - } - - @Callback(direct = true) - @Optional.Method(modid = "OpenComputers") - public Object[] getPlasmaTemp(Context context, Arguments args) { - return new Object[] {plasma.getTankType().temperature}; - } - - @Callback(direct = true) - @Optional.Method(modid = "OpenComputers") - public Object[] getMaxTemp(Context context, Arguments args) { - if (slots[3] != null && (slots[3].getItem() instanceof ItemFusionShield)) - return new Object[] {((ItemFusionShield) slots[3].getItem()).maxTemp}; - return new Object[] {"N/A"}; - } - - @Callback(direct = true) - @Optional.Method(modid = "OpenComputers") - public Object[] getBlanketDamage(Context context, Arguments args) { - if (slots[3] != null && (slots[3].getItem() instanceof ItemFusionShield)) - return new Object[]{ItemFusionShield.getShieldDamage(slots[3]), ((ItemFusionShield)slots[3].getItem()).maxDamage}; - return new Object[] {"N/A", "N/A"}; - } - - @Override - @Optional.Method(modid = "OpenComputers") - public String[] methods() { - return new String[] { - "getEnergyInfo", - "isActive", - "setActive", - "getFluid", - "getPlasmaTemp", - "getMaxTemp", - "getBlanketDamage" - }; - } - - @Override - @Optional.Method(modid = "OpenComputers") - public Object[] invoke(String method, Context context, Arguments args) throws Exception { - switch (method) { - case ("getEnergyInfo"): - return getEnergyInfo(context, args); - case ("isActive"): - return isActive(context, args); - case ("setActive"): - return setActive(context, args); - case ("getFluid"): - return getFluid(context, args); - case ("getPlasmaTemp"): - return getPlasmaTemp(context, args); - case ("getMaxTemp"): - return getMaxTemp(context, args); - case ("getBlanketDamage"): - return getBlanketDamage(context, args); - } - throw new NoSuchMethodException(); - } - @Override public FluidTank getTankToPaste() { return null; diff --git a/src/main/java/com/hbm/tileentity/machine/TileEntityITERStruct.java b/src/main/java/com/hbm/tileentity/machine/TileEntityITERStruct.java index 901cc4195..9126601be 100644 --- a/src/main/java/com/hbm/tileentity/machine/TileEntityITERStruct.java +++ b/src/main/java/com/hbm/tileentity/machine/TileEntityITERStruct.java @@ -1,17 +1,7 @@ package com.hbm.tileentity.machine; -import com.hbm.blocks.BlockDummyable; -import com.hbm.blocks.ModBlocks; -import com.hbm.blocks.machine.MachineITER; - -import cpw.mods.fml.relauncher.Side; -import cpw.mods.fml.relauncher.SideOnly; -import net.minecraft.block.Block; -import net.minecraft.tileentity.TileEntity; -import net.minecraft.util.AxisAlignedBB; -import net.minecraftforge.common.util.ForgeDirection; - -public class TileEntityITERStruct extends TileEntity { +@Deprecated +public class TileEntityITERStruct { public static final int[][][] layout = new int[][][] { @@ -122,66 +112,4 @@ public class TileEntityITERStruct extends TileEntity { new int[] {0,0,0,0,0,0,1,1,1,0,0,0,0,0,0} } }; - - int age; - - @Override - public void updateEntity() { - - if(worldObj.isRemote) - return; - - age++; - - if(age < 20) - return; - - age = 0; - - for(int y = 0; y < 5; y++) { - for(int x = 0; x < layout[0].length; x++) { - for(int z = 0; z < layout[0][0].length; z++) { - - int ly = y > 2 ? 4 - y : y; - - int width = 7; - - if(x == width && y == 0 && z == width) - continue; - - int b = layout[ly][x][z]; - Block block = worldObj.getBlock(xCoord + x - width, yCoord + y, zCoord + z - width); - int meta = worldObj.getBlockMetadata(xCoord + x - width, yCoord + y, zCoord + z - width); - - switch(b) { - case 1: if(block != ModBlocks.fusion_conductor || meta != 1) { return; } break; - case 2: if(block != ModBlocks.fusion_center) { return; } break; - case 3: if(block != ModBlocks.fusion_motor) { return; } break; - case 4: if(block != ModBlocks.reinforced_glass) { return; } break; - } - } - } - } - - for(int x = -2; x <= 2; x++) - for(int y = 1; y <= 3; y++) - for(int z = -2; z <= 2; z++) - worldObj.setBlockToAir(xCoord + x, yCoord + y, zCoord + z); - - BlockDummyable.safeRem = true; - worldObj.setBlock(xCoord, yCoord + 2, zCoord, ModBlocks.iter, 12, 3); - ((MachineITER)ModBlocks.iter).fillSpace(worldObj, xCoord, yCoord, zCoord, ForgeDirection.UNKNOWN, 0); - BlockDummyable.safeRem = false; - } - - @Override - public AxisAlignedBB getRenderBoundingBox() { - return TileEntity.INFINITE_EXTENT_AABB; - } - - @Override - @SideOnly(Side.CLIENT) - public double getMaxRenderDistanceSquared() { - return 65536.0D; - } } diff --git a/src/main/java/com/hbm/tileentity/machine/TileEntityMachineSchrabidiumTransmutator.java b/src/main/java/com/hbm/tileentity/machine/TileEntityMachineSchrabidiumTransmutator.java deleted file mode 100644 index 206645805..000000000 --- a/src/main/java/com/hbm/tileentity/machine/TileEntityMachineSchrabidiumTransmutator.java +++ /dev/null @@ -1,264 +0,0 @@ -package com.hbm.tileentity.machine; - -import com.hbm.config.VersatileConfig; -import com.hbm.inventory.OreDictManager; -import com.hbm.inventory.container.ContainerMachineSchrabidiumTransmutator; -import com.hbm.inventory.gui.GUIMachineSchrabidiumTransmutator; -import com.hbm.inventory.recipes.MachineRecipes; -import com.hbm.items.ModItems; -import com.hbm.lib.Library; -import com.hbm.main.MainRegistry; -import com.hbm.sound.AudioWrapper; -import com.hbm.tileentity.IGUIProvider; -import com.hbm.tileentity.TileEntityMachineBase; - -import api.hbm.energymk2.IBatteryItem; -import api.hbm.energymk2.IEnergyReceiverMK2; -import cpw.mods.fml.relauncher.Side; -import cpw.mods.fml.relauncher.SideOnly; -import io.netty.buffer.ByteBuf; -import net.minecraft.entity.player.EntityPlayer; -import net.minecraft.inventory.Container; -import net.minecraft.item.ItemStack; -import net.minecraft.nbt.NBTTagCompound; -import net.minecraft.world.World; -import net.minecraftforge.common.util.ForgeDirection; - -public class TileEntityMachineSchrabidiumTransmutator extends TileEntityMachineBase implements IEnergyReceiverMK2, IGUIProvider { - - public long power = 0; - public int process = 0; - public static final long maxPower = 5000000; - public static final int processSpeed = 6000; - - private AudioWrapper audio; - - private static final int[] slots_io = new int[] { 0, 1, 2, 3 }; - - public TileEntityMachineSchrabidiumTransmutator() { - super(4); - } - - @Override - public String getName() { - return "container.machine_schrabidium_transmutator"; - } - - @Override - public boolean isItemValidForSlot(int i, ItemStack stack) { - switch (i) { - case 0: - if (MachineRecipes.mODE(stack, OreDictManager.U.ingot())) - return true; - break; - case 2: - if (stack.getItem() == ModItems.redcoil_capacitor || stack.getItem() == ModItems.euphemium_capacitor) - return true; - break; - case 3: - if (stack.getItem() instanceof IBatteryItem) - return true; - break; - } - return false; - } - - @Override - public void readFromNBT(NBTTagCompound nbt) { - super.readFromNBT(nbt); - - power = nbt.getLong("power"); - process = nbt.getInteger("process"); - } - - @Override - public void writeToNBT(NBTTagCompound nbt) { - super.writeToNBT(nbt); - nbt.setLong("power", power); - nbt.setInteger("process", process); - } - - @Override - public int[] getAccessibleSlotsFromSide(int p_94128_1_) { - return slots_io; - } - - @Override - public boolean canExtractItem(int i, ItemStack stack, int j) { - - if(stack.getItem() == ModItems.euphemium_capacitor) return false; - - if(i == 2 && stack.getItem() != null && (stack.getItem() == ModItems.redcoil_capacitor && stack.getItemDamage() == stack.getMaxDamage())) { - return true; - } - - if(i == 1) { - return true; - } - - if(i == 3) { - if(stack.getItem() instanceof IBatteryItem && ((IBatteryItem) stack.getItem()).getCharge(stack) == 0) - return true; - } - - return false; - } - - public long getPowerScaled(long i) { - return (power * i) / maxPower; - } - - public int getProgressScaled(int i) { - return (process * i) / processSpeed; - } - - public boolean canProcess() { - if (power >= 4990000 && slots[0] != null && MachineRecipes.mODE(slots[0], OreDictManager.U.ingot()) && slots[2] != null - && (slots[2].getItem() == ModItems.redcoil_capacitor && slots[2].getItemDamage() < slots[2].getMaxDamage() || slots[2].getItem() == ModItems.euphemium_capacitor) - && (slots[1] == null || (slots[1] != null && slots[1].getItem() == VersatileConfig.getTransmutatorItem() - && slots[1].stackSize < slots[1].getMaxStackSize()))) { - return true; - } - return false; - } - - public boolean isProcessing() { - return process > 0; - } - - public void process() { - process++; - - if (process >= processSpeed) { - - power = 0; - process = 0; - - slots[0].stackSize--; - if (slots[0].stackSize <= 0) { - slots[0] = null; - } - - if (slots[1] == null) { - slots[1] = new ItemStack(VersatileConfig.getTransmutatorItem()); - } else { - slots[1].stackSize++; - } - if (slots[2] != null && slots[2].getItem() == ModItems.redcoil_capacitor) { - slots[2].setItemDamage(slots[2].getItemDamage() + 1); - } - - this.worldObj.playSoundEffect(this.xCoord, this.yCoord, this.zCoord, "ambient.weather.thunder", 10000.0F, - 0.8F + this.worldObj.rand.nextFloat() * 0.2F); - } - } - - @Override - public void updateEntity() { - - if (!worldObj.isRemote) { - - this.updateConnections(); - - power = Library.chargeTEFromItems(slots, 3, power, maxPower); - - if(canProcess()) { - process(); - } else { - process = 0; - } - - this.networkPackNT(50); - - } else { - - if(process > 0) { - - if(audio == null) { - audio = createAudioLoop(); - audio.startSound(); - } else if(!audio.isPlaying()) { - audio = rebootAudio(audio); - } - audio.updateVolume(getVolume(1F)); - } else { - - if(audio != null) { - audio.stopSound(); - audio = null; - } - } - } - } - - @Override - public void serialize(ByteBuf buf) { - super.serialize(buf); - buf.writeLong(this.power); - buf.writeInt(this.process); - } - - @Override - public void deserialize(ByteBuf buf) { - super.deserialize(buf); - this.power = buf.readLong(); - this.process = buf.readInt(); - } - - @Override - public AudioWrapper createAudioLoop() { - return MainRegistry.proxy.getLoopedSound("hbm:weapon.tauChargeLoop", xCoord, yCoord, zCoord, 1.0F, 10F, 1.0F); - } - - private void updateConnections() { - - for(ForgeDirection dir : ForgeDirection.VALID_DIRECTIONS) - this.trySubscribe(worldObj, xCoord + dir.offsetX, yCoord + dir.offsetY, zCoord + dir.offsetZ, dir); - } - - @Override - public void onChunkUnload() { - - if(audio != null) { - audio.stopSound(); - audio = null; - } - } - - @Override - public void invalidate() { - - super.invalidate(); - - if(audio != null) { - audio.stopSound(); - audio = null; - } - } - - @Override - public void setPower(long i) { - power = i; - } - - @Override - public long getPower() { - return power; - } - - @Override - public long getMaxPower() { - return maxPower; - } - - @Override - public Container provideContainer(int ID, EntityPlayer player, World world, int x, int y, int z) { - return new ContainerMachineSchrabidiumTransmutator(player.inventory, this); - } - - @Override - @SideOnly(Side.CLIENT) - public Object provideGUI(int ID, EntityPlayer player, World world, int x, int y, int z) { - return new GUIMachineSchrabidiumTransmutator(player.inventory, this); - } -} diff --git a/src/main/java/com/hbm/world/dungeon/Spaceship.java b/src/main/java/com/hbm/world/dungeon/Spaceship.java index 4ab3bba36..c07dbc600 100644 --- a/src/main/java/com/hbm/world/dungeon/Spaceship.java +++ b/src/main/java/com/hbm/world/dungeon/Spaceship.java @@ -496,10 +496,10 @@ public class Spaceship extends WorldGenerator world.setBlock(x + 2, y + -2, z + 27, Blocks.air, 0, 3); world.setBlock(x + 3, y + -2, z + 27, Block3, 0, 3); world.setBlock(x + 4, y + -2, z + 27, Block3, 0, 3); - world.setBlock(x + 5, y + -2, z + 27, ModBlocks.fusion_conductor); + world.setBlock(x + 5, y + -2, z + 27, ModBlocks.hadron_coil_alloy); world.setBlock(x + 6, y + -2, z + 27, Blocks.air, 0, 3); world.setBlock(x + 7, y + -2, z + 27, Blocks.air, 0, 3); - world.setBlock(x + 8, y + -2, z + 27, ModBlocks.fusion_conductor); + world.setBlock(x + 8, y + -2, z + 27, ModBlocks.hadron_coil_alloy); world.setBlock(x + 9, y + -2, z + 27, Block3, 0, 3); world.setBlock(x + 10, y + -2, z + 27, Block3, 0, 3); world.setBlock(x + 11, y + -2, z + 27, Blocks.air, 0, 3); diff --git a/src/main/java/com/hbm/world/dungeon/Spaceship2.java b/src/main/java/com/hbm/world/dungeon/Spaceship2.java index d94cb01ae..9ca224e60 100644 --- a/src/main/java/com/hbm/world/dungeon/Spaceship2.java +++ b/src/main/java/com/hbm/world/dungeon/Spaceship2.java @@ -14,7 +14,7 @@ import net.minecraft.world.World; public class Spaceship2 { Block Block1 = ModBlocks.deco_tungsten; - Block Block2 = ModBlocks.fusion_conductor; + Block Block2 = ModBlocks.hadron_coil_alloy; Block Block3 = ModBlocks.deco_steel; Block Block4 = ModBlocks.fusion_heater; Block Block5 = ModBlocks.block_meteor; diff --git a/src/main/java/com/hbm/world/gen/component/SiloComponent.java b/src/main/java/com/hbm/world/gen/component/SiloComponent.java index bfee7327c..b7787dc48 100644 --- a/src/main/java/com/hbm/world/gen/component/SiloComponent.java +++ b/src/main/java/com/hbm/world/gen/component/SiloComponent.java @@ -412,7 +412,7 @@ public class SiloComponent extends Component { placeBlockAtCurrentPosition(world, Blocks.heavy_weighted_pressure_plate, 0, 34, 22, 18, box); placeBlockAtCurrentPosition(world, ModBlocks.capacitor_copper, decoE, 36, 21, 16, box); placeBlockAtCurrentPosition(world, ModBlocks.deco_steel, 0, 36, 21, 17, box); - placeBlockAtCurrentPosition(world, ModBlocks.fusion_conductor, 0, 36, 21, 19, box); + placeBlockAtCurrentPosition(world, ModBlocks.hadron_coil_alloy, 0, 36, 21, 19, box); fillWithMetadataBlocks(world, box, 36, 22, 16, 36, 23, 16, ModBlocks.tape_recorder, decoE); placeBlockAtCurrentPosition(world, ModBlocks.deco_computer, decoModelW, 36, 22, 17, box); fillWithMetadataBlocks(world, box, 36, 21, 18, 36, 23, 18, ModBlocks.tape_recorder, decoE); diff --git a/src/main/resources/assets/hbm/textures/blocks/fusion_center_side_alt.png b/src/main/resources/assets/hbm/textures/blocks/fusion_center_side_alt.png deleted file mode 100644 index 677b7bc2f3adb49729e295c3b49dc52124c5cdaa..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 153 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!61|;P_|4#%`EX7WqAsj$Z!;#Vfgtl-#`s)@?SZ(_WX1|+o;P|-bqkhD{{E3X%MWNagQu&X%Q~loCIC?uFUbG^ diff --git a/src/main/resources/assets/hbm/textures/blocks/fusion_center_top_alt.png b/src/main/resources/assets/hbm/textures/blocks/fusion_center_top_alt.png deleted file mode 100644 index e96673aa022540d0f439caae25b51d9fe4171540..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 426 zcmV;b0agBqP)&E6^ zTvBVjg_4l=*%_U`F#EZHr&vhT%Khw%P7IB`mMnBVzD5Ekjm-%p6PVT z`~Cj9r>YENjETKz8UR8FhzQ<$27>{Q$Ab_8lgR{t>-C!YBHZtHM1-oU z063q|pV?Ti*P64cDy!9szVB1_4SYJC{y&N3)9iLTy!VO4d(ZKBq`Vtr{PZB7$b2Ts zzSx|6Dae~>2W{Kpy~lgc;c%cN`kKTXoG01u_c-Tp&Lxoj8MCfrE`OW>%Tg@%2c=D4 Ugu@zUKmY&$07*qoM6N<$g3d$B%>V!Z diff --git a/src/main/resources/assets/hbm/textures/blocks/fusion_conductor_side.png b/src/main/resources/assets/hbm/textures/blocks/fusion_conductor_side.png deleted file mode 100644 index 82452e86d314c8ce1aac16694daa05cdcfc5848f..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 164 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!61|;P_|4#%`EX7WqAsj$Z!;#VfAq2el-=nI85OB_+s)z`;+l@F)6CzT8loBbWLZ+%ErfI@ChjWgU5+d?Z zpsD~EnHA)mNhy(YE@8O{FdX^>$NsbL)*5DdOEh!~J2n8R< z@#BGYj4_r~&EM8D=q|r>+TvC2BX5@!f_FhxyG&2s&SVlO{)Au zDbu(}5k$JA5Ox)j!q^T%BoS&P7eZkB?)JycrMT=xjuXhh6ua==%=;MiE~eT(>JlX} z=chwDZOzuf&VRkXyd9$VPg1^r9J87)==D=>GvQzLr+E9Qi(bta?4P78N3{vSY&3Z! zK0h4-5G66+2DLa!V$}Ptu7d0E=}R^@H_=*CRaMg>f^!aI440Reytw($L~7k;!fZ5Q z#)K!&Ua?#*QA**x$2mt?mU!M>h;rR#g^76r4SLUwd8q@ za}Mu4d7e`g1>XCH1wbq0-c7rF6(P@aj4|Bb-(!rydyn@XYc0kYoOA3QA2w`S>%hwA zB}Gw?Wf@tPVXZ|(@ZL9ORaG@Wfto?6kkuH|h((05ESnY)I&J;iATR*<^ozFl{((5e z5UGcS{6KvNtNDV9!C8|vm^kOK)?%$~463T)YB(lJVxlCj8H5-?6efo0B7#y1tuGVN_a7X}3DK<7X*gHOCHD53rO;A5xr&W0D9UnH% zyJ?rOU9X=$`VS_0T^w#=9c-uoE=ppy4tBU0oDn54dR@HE<8RezYtB!H4@`anT}`WU T;#UwL00000NkvXXu0mjfWMTx% diff --git a/src/main/resources/assets/hbm/textures/blocks/fusion_conductor_top_welded.png b/src/main/resources/assets/hbm/textures/blocks/fusion_conductor_top_welded.png deleted file mode 100644 index 8257cb294feb5a5e25bc7b9ea778ce00b0f955bd..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 708 zcmV;#0z3VQP)8@Ee`dhp`O6mUknirdo zKFR+(NcrvS9}tn1f*2zY`#sXHe&WIR52&o=U5q5(K4%#t=c?4-)qHS{SMT4myE#Kd zP*pmOoXOyb&%XJYySqD#F@z9k)P)eJs){_%nNFvi|9y!(`H~nT9T6eM$f8g>)?$o7 zRq@_amL+vv6GEUYORB0Ogg|#~HSieYY6hyxrMqU?+uI{eQ*2q5q-o02XFXK4^?bj$v7xE}e6jh6!^1!>I&FG4k{Szh^M=XlfT5m>I zEDGi6vmTSd$NXe)Mg8OE!MaCGiETc0V4#~2t q1>A=iV>mfEVLqR?#ZB1%ul7Gl4I&x}zjOTn0000W!AO+Vgf{^SjFkG1gIzUcp#5Ham(nAbtkw7PCi zdA6C7QQ01vic49Pm;@a|FGfkvkUYb)xBSb!hwlo?TXJvbeYSb*wf3v(s;($)50|!E zEA!G8KMV~Ey|8QD2}|YYJwc~dxB~U2$$b?~V|)ACF3);HV?+pnQfe#~W4t8LT4Ri1KA+Px4aOLhQiKrr`T4;)M@k7H1R(@cN+*Jp z5=BukpU+t?m)zdojtZod&F%Q10K zR+c5x=@fvj>+s%_b4G>`kWzAeea&n(qbLeeN+W>Lvk-#GWI|b%^*5zb{5R+`(|E uLllFQzY#*<^Yas}^~Grq^B)dM2*DrZop3VAItWYv00009A25QRUFcWnc`Yw9R2LfX6o4?{=l@IJglItm&@?JiQ3 zNE8sm{@#MS8<6fjjYl&&XT~#Ui^XCQ0i1IT!+?lT*EQB!LI{*)2|!g zN^v|MQQmvLzrP6~;Jv3P3Y1cW5Qs5SmL)MpilWFl5uqpw02Dxs5o;|F9GPf4(A*pgzL1X%G?i`#szFDwEr` zrSE(CzNc;5EV7-i*zI-zG);qe@9(;&&Yz#3v~8Q?G)Y3bj#z8?AI9S`KR-YJti>3w z*U(zu?Z6n5$L{+cAjifS(7z(ydn5&qkB>a9m%Qm0j4^ra^b5uq-tf=tB@+P*!;npq2ni{FKA)+o zip%8!fNGistu^VK=>c_Jmxa?e8R&dIqxE&0>f_^s!{Gp2JunOdqtWQP@!M^S08rO8 d!!YD${s(74C3B75e~|zH002ovPDHLkV1mnI@&y0@ diff --git a/src/main/resources/assets/hbm/textures/blocks/struct_plasma_core.png b/src/main/resources/assets/hbm/textures/blocks/struct_plasma_core.png deleted file mode 100644 index 2748efbfb77ee6b569f45281633a171271dee814..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 555 zcmV+`0@VG9P)5SYUIYOFXyFEkN++cHr zsK`Ooq)}%;e!vDS%a-^^VUTO5*r|x2{s(7%spseC0AQ`9>pDb)@p#NI4E%ij48XU| zZ;UZySw`EohzMG1j>jX~ImdRp#e0u)4y6=YYrOaH2mpt}0i_h)dqN0^2udjcG(ZS} zVHnU_1K^zFw!HUu=MVx~Yc`wB8-a*0o6Tt37J#a%c&c6!uqX-uMxzndTDyIsq31$u9?s0iKMEkB$($p`p3g3c(^h@RWC_70;kg{bzP?(z^{*A-`wy{ zO{Y^%r_+0%puZpfuwJhTA*6vt^{5!necuD{IEF;D zzMX2w*JL2lwqNMIf_uge#vG$c_8rZ$SD%~Ld_?=jp$7*9H@GJ};?&t;ucLK6TGEo@-` diff --git a/src/main/resources/assets/hbm/textures/blocks/test_ct.png b/src/main/resources/assets/hbm/textures/blocks/test_ct.png deleted file mode 100644 index 95f7f1d8dbb9af4aed0c6bce166dd22078cc0635..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 122 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!61|;P_|4#%`EX7WqAsj$Z!;#VfCGTdkX*k$(&>&B{eJPIO}4z9w`G0o&=c>cQ_cnC$Qd+{=4Zt PP&0$4tDnm{r-UW|g~uU= diff --git a/src/main/resources/assets/hbm/textures/blocks/test_ct_ct.png b/src/main/resources/assets/hbm/textures/blocks/test_ct_ct.png deleted file mode 100644 index 034f720e2e686d4bed3cf812cb35666b9d4f0430..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 248 zcmeAS@N?(olHy`uVBq!ia0vp^3LwnE1|*BCs=fdzmSQK*5Dp-y;YjHK^4EL1IEF;D zzMX2wb=ZK%b$)Rt*LuZ!)lK*6U&+15s%dpNDCy*+QJQ_6G5x~)mWP}#>wA2@*aazm z-oVgeC{p-{r6KQs#rAD0{7lcTWjv!Q^J8nMm-~$TR}Ay+i8s5?c*3B&R4{`@s?lx1 z@e>CEOb;AjIUo_|I%l$+#ZU1yzQx%L!cJ?79vs`v7B3@Ec=W-%pLev}wTpS#qr8+a uaF{UlKDd(oV#)n=kM>s;FZgOXkI_gf@1d5~A4{Oq89ZJ6T-G@yGywo-yzopr0Ji5Rj{pDw diff --git a/src/main/resources/assets/hbm/textures/blocks/transmutator_bottom.png b/src/main/resources/assets/hbm/textures/blocks/transmutator_bottom.png deleted file mode 100644 index 03e57ddf74f7a2798bc5f46c4715086276c5875c..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 437 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!61SBU+%rFB|jKx9jP7LeL$-D$|SkfJR9T^xl z_H+M9WCij$3p^r=85sBugD~Uq{1qucL5ULAh?3y^w370~qEv>0#LT=By}Z;C1rt33 zJK%5{dY+ZNicBm#tOw*ipOgIg%YF*u zg?bt7)z5sBYwvSESYI0JZW?WMomqs_;f^wAN8{F8a~W+|rY&JVqTpegAm?DE{9Uzg dO41#ZdhK^jk3!tHtOSNCgQu&X%Q~loCIBp_rx*YL diff --git a/src/main/resources/assets/hbm/textures/blocks/transmutator_side.png b/src/main/resources/assets/hbm/textures/blocks/transmutator_side.png deleted file mode 100644 index daa0d5a089dc4987421cd42c6b768badf6a67af2..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 542 zcmV+(0^$9MP)Px#1ZP1_K>z@;j|==^1poj532;bRa{vGi!vFvd!vV){sAK>D02p*dSaefwW^{L9 za%BK;VQFr3E^cLXAT%y8E;(#7eog=Y0gp*UK~y+TjgmP_15p%(uZoph;a(`Hm5u)( zE0{$j5X2P~D@6kz%oUUPY-?DwoTZN`(r}{z5vPmd81{ znN+-=QTl1V?s=h}s)@dv7DLX+>r$h=(V@86X>WDe+uf>eb$zY3|K`K22=CB8yk0NW z<#K6lglR%`;dV+s*V=-?AkTmi8nykm<)*8Ns)N1LLn|7MMj{cv-+wYF`#o~lCrAB4 zf3ynvIIyHMlF#Q0hr@wD0QZX#xgKx39BVlq5Zw=jLV7Cag1y_T9e~HZ)NF^)mC=GoyS`6KDXP=q1vV2SDMw*I4}}> zGbO@Qpq;5&I}YYM{D*vO6$kFY+6XWw`x)x&XiA|_aFX>85LhA7gcj%k1M(b?$5W{k g*`xyUuVGo%H*x+|@d%;kfdBvi07*qoM6N<$f=Z0+H~;_u diff --git a/src/main/resources/assets/hbm/textures/blocks/transmutator_top.png b/src/main/resources/assets/hbm/textures/blocks/transmutator_top.png deleted file mode 100644 index fef40211654da9e90e11e59256f96e5fce654066..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 404 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!61SBU+%rFB|jKx9jP7LeL$-D$|SkfJR9T^xl z_H+M9WCij$3p^r=85sBugD~Uq{1qucL5ULAh?3y^w370~qEv>0#LT=By}Z;C1rt33 zJiogul%jf_&l5KbLo-(sxGS(qh=k4HpU$(yV9!8vo!SQv`qdN@AXmJn6ctW z?fvPgl|5FeNjBRw7U=(D3AkG-YZj;IF<+&O?SW+U#{1&y-j*dFn<@NYY3Ix%uZ}10 zjQfA@J!|)bl-t|n8Q4xU>NK?Xu-@R@(8#c~`>0pL6CMd$w?&eoe9Q&6|8iU@J*%3| z@X>(h&B2P;>5_gQLem(k_iPu9Xnp^GAy324%bSyG^VzK3e_o%pY~d{3-)s#^j7KbA vC0j67aO7Os&J)2f!L}&=V$jkZtL9zWa?Wp|)hS@;F)(<#`njxgN@xNA!o8h1 From de2a11389c4e6209945ada236870f757bb6aba10 Mon Sep 17 00:00:00 2001 From: Bob Date: Tue, 23 Dec 2025 20:51:55 +0100 Subject: [PATCH 22/22] i like eating lead-sulfur batteries --- .../java/api/hbm/energymk2/IBatteryItem.java | 4 +- .../api/hbm/energymk2/IEnergyProviderMK2.java | 2 +- .../api/hbm/energymk2/IEnergyReceiverMK2.java | 3 + .../java/api/hbm/energymk2/PowerNetMK2.java | 2 +- src/main/java/com/hbm/blocks/ModBlocks.java | 16 +- .../blocks/network/MachineBatterySocket.java | 51 + .../entity/train/EntityRailCarElectric.java | 2 +- .../hbm/explosion/ExplosionNukeGeneric.java | 1 - .../container/ContainerBatterySocket.java | 61 + .../hbm/inventory/gui/GUIBatterySocket.java | 110 ++ src/main/java/com/hbm/items/ModItems.java | 111 +- .../com/hbm/items/armor/ArmorFSBPowered.java | 4 +- .../com/hbm/items/machine/ItemBattery.java | 4 +- .../hbm/items/machine/ItemBatteryPack.java | 158 +++ .../hbm/items/machine/ItemSelfcharger.java | 4 +- .../com/hbm/items/special/ItemGlitch.java | 4 +- .../hbm/items/tool/ItemSwordAbilityPower.java | 4 +- .../hbm/items/tool/ItemToolAbilityPower.java | 4 +- .../items/weapon/sedna/impl/ItemGunDrill.java | 4 +- src/main/java/com/hbm/lib/Library.java | 4 +- src/main/java/com/hbm/main/ClientProxy.java | 2 + .../java/com/hbm/main/ResourceManager.java | 2 + .../hbm/packet/toserver/AuxButtonPacket.java | 61 +- .../render/item/ItemRenderBatteryPack.java | 28 + .../tileentity/RenderBatterySocket.java | 71 ++ .../hbm/saveddata/AnnihilatorSavedData.java | 2 - .../hbm/tileentity/TileEntityProxyCombo.java | 28 +- .../java/com/hbm/tileentity/TileMappings.java | 1 + .../tileentity/machine/TileEntityCharger.java | 4 +- .../storage/TileEntityBatterySocket.java | 279 +++++ .../storage/TileEntityMachineBattery.java | 4 - .../network/TileEntityPneumoTube.java | 7 +- .../networkproviders/PneumaticNetwork.java | 4 +- .../com/hbm/util/CompatEnergyControl.java | 2 +- .../assets/hbm/models/machines/battery.obj | 1020 +++++++++++++++++ .../gui/storage/gui_battery_socket.png | Bin 0 -> 3353 bytes .../textures/models/machines/battery_base.png | Bin 0 -> 626 bytes .../textures/models/machines/battery_lead.png | Bin 0 -> 1022 bytes .../models/machines/battery_lithium.png | Bin 0 -> 1042 bytes .../models/machines/battery_quantum.png | Bin 0 -> 1049 bytes .../models/machines/battery_redstone.png | Bin 0 -> 1149 bytes .../models/machines/battery_schrabidium.png | Bin 0 -> 1003 bytes .../models/machines/battery_socket.png | Bin 0 -> 3199 bytes .../models/machines/battery_sodium.png | Bin 0 -> 1074 bytes 44 files changed, 1927 insertions(+), 141 deletions(-) create mode 100644 src/main/java/com/hbm/blocks/network/MachineBatterySocket.java create mode 100644 src/main/java/com/hbm/inventory/container/ContainerBatterySocket.java create mode 100644 src/main/java/com/hbm/inventory/gui/GUIBatterySocket.java create mode 100644 src/main/java/com/hbm/items/machine/ItemBatteryPack.java create mode 100644 src/main/java/com/hbm/render/item/ItemRenderBatteryPack.java create mode 100644 src/main/java/com/hbm/render/tileentity/RenderBatterySocket.java create mode 100644 src/main/java/com/hbm/tileentity/machine/storage/TileEntityBatterySocket.java create mode 100644 src/main/resources/assets/hbm/models/machines/battery.obj create mode 100644 src/main/resources/assets/hbm/textures/gui/storage/gui_battery_socket.png create mode 100644 src/main/resources/assets/hbm/textures/models/machines/battery_base.png create mode 100644 src/main/resources/assets/hbm/textures/models/machines/battery_lead.png create mode 100644 src/main/resources/assets/hbm/textures/models/machines/battery_lithium.png create mode 100644 src/main/resources/assets/hbm/textures/models/machines/battery_quantum.png create mode 100644 src/main/resources/assets/hbm/textures/models/machines/battery_redstone.png create mode 100644 src/main/resources/assets/hbm/textures/models/machines/battery_schrabidium.png create mode 100644 src/main/resources/assets/hbm/textures/models/machines/battery_socket.png create mode 100644 src/main/resources/assets/hbm/textures/models/machines/battery_sodium.png diff --git a/src/main/java/api/hbm/energymk2/IBatteryItem.java b/src/main/java/api/hbm/energymk2/IBatteryItem.java index d0d5931b7..a8983f984 100644 --- a/src/main/java/api/hbm/energymk2/IBatteryItem.java +++ b/src/main/java/api/hbm/energymk2/IBatteryItem.java @@ -11,8 +11,8 @@ public interface IBatteryItem { public void dischargeBattery(ItemStack stack, long i); public long getCharge(ItemStack stack); public long getMaxCharge(ItemStack stack); - public long getChargeRate(); - public long getDischargeRate(); + public long getChargeRate(ItemStack stack); + public long getDischargeRate(ItemStack stack); /** Returns a string for the NBT tag name of the long storing power */ public default String getChargeTagName() { diff --git a/src/main/java/api/hbm/energymk2/IEnergyProviderMK2.java b/src/main/java/api/hbm/energymk2/IEnergyProviderMK2.java index e8c8cf09b..50f74215c 100644 --- a/src/main/java/api/hbm/energymk2/IEnergyProviderMK2.java +++ b/src/main/java/api/hbm/energymk2/IEnergyProviderMK2.java @@ -43,7 +43,7 @@ public interface IEnergyProviderMK2 extends IEnergyHandlerMK2 { if(te instanceof IEnergyReceiverMK2 && te != this) { IEnergyReceiverMK2 rec = (IEnergyReceiverMK2) te; - if(rec.canConnect(dir.getOpposite())) { + if(rec.canConnect(dir.getOpposite()) && rec.allowDirectProvision()) { long provides = Math.min(this.getPower(), this.getProviderSpeed()); long receives = Math.min(rec.getMaxPower() - rec.getPower(), rec.getReceiverSpeed()); long toTransfer = Math.min(provides, receives); diff --git a/src/main/java/api/hbm/energymk2/IEnergyReceiverMK2.java b/src/main/java/api/hbm/energymk2/IEnergyReceiverMK2.java index 8978d64d4..466b8b277 100644 --- a/src/main/java/api/hbm/energymk2/IEnergyReceiverMK2.java +++ b/src/main/java/api/hbm/energymk2/IEnergyReceiverMK2.java @@ -31,6 +31,9 @@ public interface IEnergyReceiverMK2 extends IEnergyHandlerMK2 { public default long getReceiverSpeed() { return this.getMaxPower(); } + + /** Whether a provider can provide power by touching the block (i.e. via proxies), bypassing the need for a network entirely */ + public default boolean allowDirectProvision() { return true; } public default void trySubscribe(World world, DirPos pos) { trySubscribe(world, pos.getX(), pos.getY(), pos.getZ(), pos.getDir()); } diff --git a/src/main/java/api/hbm/energymk2/PowerNetMK2.java b/src/main/java/api/hbm/energymk2/PowerNetMK2.java index 34e8205f6..768ad9a28 100644 --- a/src/main/java/api/hbm/energymk2/PowerNetMK2.java +++ b/src/main/java/api/hbm/energymk2/PowerNetMK2.java @@ -78,7 +78,7 @@ public class PowerNetMK2 extends NodeNet entry : list) { double weight = (double) entry.getValue() / (double) (priorityDemand); - long toSend = (long) Math.max(toTransfer * weight, 0D); + long toSend = (long) Math.min(Math.max(toTransfer * weight, 0D), entry.getValue()); energyUsed += (toSend - entry.getKey().transferPower(toSend)); //leftovers are subtracted from the intended amount to use up } diff --git a/src/main/java/com/hbm/blocks/ModBlocks.java b/src/main/java/com/hbm/blocks/ModBlocks.java index a84634f56..a4c4381be 100644 --- a/src/main/java/com/hbm/blocks/ModBlocks.java +++ b/src/main/java/com/hbm/blocks/ModBlocks.java @@ -740,16 +740,16 @@ public class ModBlocks { public static Block machine_electric_furnace_off; public static Block machine_electric_furnace_on; - public static Block machine_microwave; - public static Block machine_battery_potato; - public static Block machine_battery; - public static Block machine_lithium_battery; - public static Block machine_schrabidium_battery; - public static Block machine_dineutronium_battery; + public static Block machine_battery_socket; + + @Deprecated public static Block machine_battery_potato; + @Deprecated public static Block machine_battery; + @Deprecated public static Block machine_lithium_battery; + @Deprecated public static Block machine_schrabidium_battery; + @Deprecated public static Block machine_dineutronium_battery; public static Block machine_fensu; - public static final int guiID_machine_fensu = 99; public static Block capacitor_bus; public static Block capacitor_copper; @@ -1862,6 +1862,7 @@ public class ModBlocks { machine_arc_furnace = new MachineArcFurnaceLarge().setBlockName("machine_arc_furnace").setHardness(5.0F).setResistance(10.0F).setCreativeTab(MainRegistry.machineTab).setBlockTextureName(RefStrings.MODID + ":block_steel"); machine_microwave = new MachineMicrowave(Material.iron).setBlockName("machine_microwave").setHardness(5.0F).setResistance(10.0F).setCreativeTab(MainRegistry.machineTab).setBlockTextureName(RefStrings.MODID + ":machine_microwave"); + machine_battery_socket = new MachineBatterySocket().setBlockName("machine_battery_socket").setHardness(5.0F).setResistance(10.0F).setCreativeTab(MainRegistry.machineTab).setBlockTextureName(RefStrings.MODID + ":block_steel"); machine_battery_potato = new MachineBattery(Material.iron, 10_000).setBlockName("machine_battery_potato").setHardness(5.0F).setResistance(10.0F).setCreativeTab(MainRegistry.machineTab); machine_battery = new MachineBattery(Material.iron, 1_000_000).setBlockName("machine_battery").setHardness(5.0F).setResistance(10.0F).setCreativeTab(MainRegistry.machineTab); machine_lithium_battery = new MachineBattery(Material.iron, 50_000_000).setBlockName("machine_lithium_battery").setHardness(5.0F).setResistance(10.0F).setCreativeTab(MainRegistry.machineTab); @@ -3259,6 +3260,7 @@ public class ModBlocks { register(barrel_steel); register(barrel_tcalloy); register(barrel_antimatter); + register(machine_battery_socket); register(machine_battery_potato); register(machine_battery); register(machine_lithium_battery); diff --git a/src/main/java/com/hbm/blocks/network/MachineBatterySocket.java b/src/main/java/com/hbm/blocks/network/MachineBatterySocket.java new file mode 100644 index 000000000..a1030cd99 --- /dev/null +++ b/src/main/java/com/hbm/blocks/network/MachineBatterySocket.java @@ -0,0 +1,51 @@ +package com.hbm.blocks.network; + +import java.util.List; + +import com.hbm.blocks.BlockDummyable; +import com.hbm.blocks.ITooltipProvider; +import com.hbm.tileentity.TileEntityProxyCombo; +import com.hbm.tileentity.machine.storage.TileEntityBatterySocket; + +import net.minecraft.block.material.Material; +import net.minecraft.entity.player.EntityPlayer; +import net.minecraft.item.ItemStack; +import net.minecraft.tileentity.TileEntity; +import net.minecraft.world.World; +import net.minecraftforge.common.util.ForgeDirection; + +public class MachineBatterySocket extends BlockDummyable implements ITooltipProvider { + + public MachineBatterySocket() { + super(Material.iron); + } + + @Override + public TileEntity createNewTileEntity(World world, int meta) { + if(meta >= 12) return new TileEntityBatterySocket(); + if(meta >= 6) return new TileEntityProxyCombo().inventory().power().conductor(); + return null; + } + + @Override + public boolean onBlockActivated(World world, int x, int y, int z, EntityPlayer player, int side, float hitX, float hitY, float hitZ) { + return standardOpenBehavior(world, x, y, z, player, side); + } + + @Override public int[] getDimensions() { return new int[] {1, 0, 1, 0, 1, 0}; } + @Override public int getOffset() { return 0; } + + protected void fillSpace(World world, int x, int y, int z, ForgeDirection dir, int o) { + super.fillSpace(world, x, y, z, dir, o); + + ForgeDirection rot = dir.getRotation(ForgeDirection.UP); + this.makeExtra(world, x - dir.offsetX, y, z - dir.offsetZ); + this.makeExtra(world, x + rot.offsetX, y, z + rot.offsetZ); + this.makeExtra(world, x - dir.offsetX + rot.offsetX, y, z - dir.offsetZ + rot.offsetZ); + } + + @Override + public void addInformation(ItemStack stack, EntityPlayer player, List list, boolean ext) { + addStandardInfo(stack, player, list, ext); + } +} diff --git a/src/main/java/com/hbm/entity/train/EntityRailCarElectric.java b/src/main/java/com/hbm/entity/train/EntityRailCarElectric.java index 5e6847d61..cafb1a6a5 100644 --- a/src/main/java/com/hbm/entity/train/EntityRailCarElectric.java +++ b/src/main/java/com/hbm/entity/train/EntityRailCarElectric.java @@ -52,7 +52,7 @@ public abstract class EntityRailCarElectric extends EntityRailCarRidable { if(stack != null && stack.getItem() instanceof IBatteryItem) { IBatteryItem battery = (IBatteryItem) stack.getItem(); int powerNeeded = this.getMaxPower() - this.getPower(); - long powerProvided = Math.min(battery.getDischargeRate(), battery.getCharge(stack)); + long powerProvided = Math.min(battery.getDischargeRate(stack), battery.getCharge(stack)); int powerTransfered = (int) Math.min(powerNeeded, powerProvided); if(powerTransfered > 0) { diff --git a/src/main/java/com/hbm/explosion/ExplosionNukeGeneric.java b/src/main/java/com/hbm/explosion/ExplosionNukeGeneric.java index fd1926d2a..7301e3721 100644 --- a/src/main/java/com/hbm/explosion/ExplosionNukeGeneric.java +++ b/src/main/java/com/hbm/explosion/ExplosionNukeGeneric.java @@ -421,7 +421,6 @@ public class ExplosionNukeGeneric { public static void emp(World world, int x, int y, int z) { if (!world.isRemote) { - Block b = world.getBlock(x,y,z); TileEntity te = world.getTileEntity(x, y, z); if (te != null && te instanceof IEnergyHandlerMK2) { diff --git a/src/main/java/com/hbm/inventory/container/ContainerBatterySocket.java b/src/main/java/com/hbm/inventory/container/ContainerBatterySocket.java new file mode 100644 index 000000000..72ea18661 --- /dev/null +++ b/src/main/java/com/hbm/inventory/container/ContainerBatterySocket.java @@ -0,0 +1,61 @@ +package com.hbm.inventory.container; + +import com.hbm.inventory.SlotNonRetarded; +import com.hbm.tileentity.machine.storage.TileEntityBatterySocket; + +import net.minecraft.entity.player.EntityPlayer; +import net.minecraft.entity.player.InventoryPlayer; +import net.minecraft.inventory.Container; +import net.minecraft.inventory.Slot; +import net.minecraft.item.ItemStack; + +public class ContainerBatterySocket extends Container { + + protected TileEntityBatterySocket socket; + + public ContainerBatterySocket(InventoryPlayer invPlayer, TileEntityBatterySocket tedf) { + this.socket = tedf; + + this.addSlotToContainer(new SlotNonRetarded(socket, 0, 35, 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, 99 + i * 18)); + } + } + + for(int i = 0; i < 9; i++) { + this.addSlotToContainer(new Slot(invPlayer, i, 8 + i * 18, 157)); + } + } + + @Override + public boolean canInteractWith(EntityPlayer player) { + return socket.isUseableByPlayer(player); + } + + @Override + public ItemStack transferStackInSlot(EntityPlayer player, int index) { + ItemStack copy = null; + Slot slot = (Slot) this.inventorySlots.get(index); + + if(slot != null && slot.getHasStack()) { + ItemStack stack = slot.getStack(); + copy = stack.copy(); + + if(index == 0) { + if(!this.mergeItemStack(stack, 1, this.inventorySlots.size(), true)) return null; + } else { + if(!this.mergeItemStack(stack, 0, 1, false)) return null; + } + + if(stack.stackSize == 0) { + slot.putStack((ItemStack) null); + } else { + slot.onSlotChanged(); + } + } + + return copy; + } +} diff --git a/src/main/java/com/hbm/inventory/gui/GUIBatterySocket.java b/src/main/java/com/hbm/inventory/gui/GUIBatterySocket.java new file mode 100644 index 000000000..f9e0f5585 --- /dev/null +++ b/src/main/java/com/hbm/inventory/gui/GUIBatterySocket.java @@ -0,0 +1,110 @@ +package com.hbm.inventory.gui; + +import java.util.ArrayList; +import java.util.List; + +import org.lwjgl.opengl.GL11; + +import com.hbm.inventory.container.ContainerBatterySocket; +import com.hbm.lib.RefStrings; +import com.hbm.packet.PacketDispatcher; +import com.hbm.packet.toserver.NBTControlPacket; +import com.hbm.tileentity.machine.storage.TileEntityBatterySocket; +import com.hbm.util.BobMathUtil; +import com.hbm.util.i18n.I18nUtil; + +import api.hbm.energymk2.IBatteryItem; +import net.minecraft.client.Minecraft; +import net.minecraft.client.resources.I18n; +import net.minecraft.entity.player.InventoryPlayer; +import net.minecraft.nbt.NBTTagCompound; +import net.minecraft.util.EnumChatFormatting; +import net.minecraft.util.ResourceLocation; + +public class GUIBatterySocket extends GuiInfoContainer { + + private static ResourceLocation texture = new ResourceLocation(RefStrings.MODID + ":textures/gui/storage/gui_battery_socket.png"); + private TileEntityBatterySocket battery; + + public GUIBatterySocket(InventoryPlayer invPlayer, TileEntityBatterySocket tedf) { + super(new ContainerBatterySocket(invPlayer, tedf)); + battery = tedf; + + this.xSize = 176; + this.ySize = 181; + } + + @Override + public void drawScreen(int mouseX, int mouseY, float f) { + super.drawScreen(mouseX, mouseY, f); + + if(battery.slots[0] != null && battery.slots[0].getItem() instanceof IBatteryItem) { + //this.drawElectricityInfo(this, mouseX, mouseY, guiLeft + 62, guiTop + 69 - 52, 52, 52, battery.power, battery.getMaxPower()); + + IBatteryItem item = (IBatteryItem) battery.slots[0].getItem(); + + String deltaText = BobMathUtil.getShortNumber(Math.abs(battery.delta)) + "HE/s"; + + if(battery.delta > 0) deltaText = EnumChatFormatting.GREEN + "+" + deltaText; + else if(battery.delta < 0) deltaText = EnumChatFormatting.RED + "-" + deltaText; + else deltaText = EnumChatFormatting.YELLOW + "+" + deltaText; + + String[] info = { BobMathUtil.getShortNumber(item.getCharge(battery.slots[0])) + "/" + BobMathUtil.getShortNumber(item.getMaxCharge(battery.slots[0])) + "HE", deltaText }; + + this.drawCustomInfoStat(mouseX, mouseY, guiLeft + 62, guiTop + 69 - 52, 34, 52, mouseX, mouseY, info); + } + + String lang = null; + switch(battery.priority) { + case LOW: lang = "low"; break; + case HIGH: lang = "high"; break; + default: lang = "normal"; break; + } + + List priority = new ArrayList(); + priority.add(I18nUtil.resolveKey("battery.priority." + lang)); + priority.add(I18nUtil.resolveKey("battery.priority.recommended")); + String[] desc = I18nUtil.resolveKeyArray("battery.priority." + lang + ".desc"); + for(String s : desc) priority.add(s); + + this.drawCustomInfoStat(mouseX, mouseY, guiLeft + 152, guiTop + 35, 16, 16, mouseX, mouseY, priority); + } + + protected void mouseClicked(int x, int y, int i) { + super.mouseClicked(x, y, i); + + NBTTagCompound data = new NBTTagCompound(); + + if(this.checkClick(x, y, 106, 16, 18, 18)) { this.click(); data.setBoolean("low", true); } + if(this.checkClick(x, y, 106, 52, 18, 18)) { this.click(); data.setBoolean("high", true); } + if(this.checkClick(x, y, 125, 35, 16, 16)) { this.click(); data.setBoolean("priority", true); } + + if(!data.hasNoTags()) PacketDispatcher.wrapper.sendToServer(new NBTControlPacket(data, battery.xCoord, battery.yCoord, battery.zCoord)); + } + + @Override + protected void drawGuiContainerForegroundLayer(int i, int j) { + String name = this.battery.hasCustomInventoryName() ? this.battery.getInventoryName() : I18n.format(this.battery.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); + + if(battery.slots[0] != null && battery.slots[0].getItem() instanceof IBatteryItem) { + IBatteryItem item = (IBatteryItem) battery.slots[0].getItem(); + long power = item.getCharge(battery.slots[0]); + long maxPower = item.getMaxCharge(battery.slots[0]); + int p = (int) (power * 52 / maxPower); // won't work then flying too close to the sun (the limits of the LONG data type) + drawTexturedModalRect(guiLeft + 62, guiTop + 69 - p, 176, 52 - p, 34, p); + } + + drawTexturedModalRect(guiLeft + 106, guiTop + 16, 176, 52 + battery.redLow * 18, 18, 18); + drawTexturedModalRect(guiLeft + 106, guiTop + 52, 176, 52 + battery.redHigh * 18, 18, 18); + drawTexturedModalRect(guiLeft + 125, guiTop + 35, 194, 52 + battery.priority.ordinal() * 16 - 16, 16, 16); + } +} diff --git a/src/main/java/com/hbm/items/ModItems.java b/src/main/java/com/hbm/items/ModItems.java index c2893c0e5..06dfd4ad2 100644 --- a/src/main/java/com/hbm/items/ModItems.java +++ b/src/main/java/com/hbm/items/ModItems.java @@ -1627,33 +1627,34 @@ public class ModItems { public static Item custom_schrab; public static Item custom_fall; - public static Item battery_generic; - public static Item battery_advanced; - public static Item battery_lithium; - public static Item battery_schrabidium; - public static Item battery_spark; - public static Item battery_trixite; + @Deprecated public static Item battery_generic; + @Deprecated public static Item battery_advanced; + @Deprecated public static Item battery_lithium; + @Deprecated public static Item battery_schrabidium; + @Deprecated public static Item battery_spark; + @Deprecated public static Item battery_trixite; + @Deprecated public static Item battery_red_cell; + @Deprecated public static Item battery_red_cell_6; + @Deprecated public static Item battery_red_cell_24; + @Deprecated public static Item battery_advanced_cell; + @Deprecated public static Item battery_advanced_cell_4; + @Deprecated public static Item battery_advanced_cell_12; + @Deprecated public static Item battery_lithium_cell; + @Deprecated public static Item battery_lithium_cell_3; + @Deprecated public static Item battery_lithium_cell_6; + @Deprecated public static Item battery_schrabidium_cell; + @Deprecated public static Item battery_schrabidium_cell_2; + @Deprecated public static Item battery_schrabidium_cell_4; + @Deprecated public static Item battery_spark_cell_6; + @Deprecated public static Item battery_spark_cell_25; + @Deprecated public static Item battery_spark_cell_100; + @Deprecated public static Item battery_spark_cell_1000; + @Deprecated public static Item battery_spark_cell_2500; + @Deprecated public static Item battery_spark_cell_10000; + @Deprecated public static Item battery_spark_cell_power; + + public static Item battery_pack; public static Item battery_creative; - - public static Item battery_red_cell; - public static Item battery_red_cell_6; - public static Item battery_red_cell_24; - public static Item battery_advanced_cell; - public static Item battery_advanced_cell_4; - public static Item battery_advanced_cell_12; - public static Item battery_lithium_cell; - public static Item battery_lithium_cell_3; - public static Item battery_lithium_cell_6; - public static Item battery_schrabidium_cell; - public static Item battery_schrabidium_cell_2; - public static Item battery_schrabidium_cell_4; - public static Item battery_spark_cell_6; - public static Item battery_spark_cell_25; - public static Item battery_spark_cell_100; - public static Item battery_spark_cell_1000; - public static Item battery_spark_cell_2500; - public static Item battery_spark_cell_10000; - public static Item battery_spark_cell_power; public static Item cube_power; public static Item battery_sc_uranium; @@ -3868,33 +3869,34 @@ public class ModItems { custom_schrab = new ItemCustomLore().setUnlocalizedName("custom_schrab").setMaxStackSize(1).setCreativeTab(MainRegistry.nukeTab).setTextureName(RefStrings.MODID + ":custom_schrab"); custom_fall = new ItemCustomLore().setUnlocalizedName("custom_fall").setMaxStackSize(1).setCreativeTab(MainRegistry.nukeTab).setTextureName(RefStrings.MODID + ":custom_fall"); - battery_generic = new ItemBattery(5000, 100, 100).setUnlocalizedName("battery_generic").setMaxStackSize(1).setCreativeTab(MainRegistry.controlTab).setTextureName(RefStrings.MODID + ":battery_generic_new"); - battery_advanced = new ItemBattery(20000, 500, 500).setUnlocalizedName("battery_advanced").setMaxStackSize(1).setCreativeTab(MainRegistry.controlTab).setTextureName(RefStrings.MODID + ":battery_advanced_new"); - battery_lithium = new ItemBattery(250000, 1000, 1000).setUnlocalizedName("battery_lithium").setMaxStackSize(1).setCreativeTab(MainRegistry.controlTab).setTextureName(RefStrings.MODID + ":battery_lithium"); - battery_schrabidium = new ItemBattery(1000000, 5000, 5000).setUnlocalizedName("battery_schrabidium").setMaxStackSize(1).setCreativeTab(MainRegistry.controlTab).setTextureName(RefStrings.MODID + ":battery_schrabidium_new"); - battery_spark = new ItemBattery(100000000, 2000000, 2000000).setUnlocalizedName("battery_spark").setMaxStackSize(1).setCreativeTab(MainRegistry.controlTab).setTextureName(RefStrings.MODID + ":battery_spark"); - battery_trixite = new ItemBattery(5000000, 40000, 200000).setUnlocalizedName("battery_trixite").setMaxStackSize(1).setCreativeTab(MainRegistry.controlTab).setTextureName(RefStrings.MODID + ":battery_trixite"); + battery_generic = new ItemBattery(5000, 100, 100).setUnlocalizedName("battery_generic").setMaxStackSize(1).setCreativeTab(null).setTextureName(RefStrings.MODID + ":battery_generic_new"); + battery_advanced = new ItemBattery(20000, 500, 500).setUnlocalizedName("battery_advanced").setMaxStackSize(1).setCreativeTab(null).setTextureName(RefStrings.MODID + ":battery_advanced_new"); + battery_lithium = new ItemBattery(250000, 1000, 1000).setUnlocalizedName("battery_lithium").setMaxStackSize(1).setCreativeTab(null).setTextureName(RefStrings.MODID + ":battery_lithium"); + battery_schrabidium = new ItemBattery(1000000, 5000, 5000).setUnlocalizedName("battery_schrabidium").setMaxStackSize(1).setCreativeTab(null).setTextureName(RefStrings.MODID + ":battery_schrabidium_new"); + battery_spark = new ItemBattery(100000000, 2000000, 2000000).setUnlocalizedName("battery_spark").setMaxStackSize(1).setCreativeTab(null).setTextureName(RefStrings.MODID + ":battery_spark"); + battery_trixite = new ItemBattery(5000000, 40000, 200000).setUnlocalizedName("battery_trixite").setMaxStackSize(1).setCreativeTab(null).setTextureName(RefStrings.MODID + ":battery_trixite"); + battery_red_cell = new ItemBattery(15000, 100, 100).setUnlocalizedName("battery_red_cell").setMaxStackSize(1).setCreativeTab(null).setTextureName(RefStrings.MODID + ":battery_red_cell"); + battery_red_cell_6 = new ItemBattery(15000 * 6, 100, 100).setUnlocalizedName("battery_red_cell_6").setMaxStackSize(1).setCreativeTab(null).setTextureName(RefStrings.MODID + ":battery_red_cell_6"); + battery_red_cell_24 = new ItemBattery(15000 * 24, 100, 100).setUnlocalizedName("battery_red_cell_24").setMaxStackSize(1).setCreativeTab(null).setTextureName(RefStrings.MODID + ":battery_red_cell_24"); + battery_advanced_cell = new ItemBattery(60000, 500, 500).setUnlocalizedName("battery_advanced_cell").setMaxStackSize(1).setCreativeTab(null).setTextureName(RefStrings.MODID + ":battery_advanced_cell"); + battery_advanced_cell_4 = new ItemBattery(60000 * 4, 500, 500).setUnlocalizedName("battery_advanced_cell_4").setMaxStackSize(1).setCreativeTab(null).setTextureName(RefStrings.MODID + ":battery_advanced_cell_4"); + battery_advanced_cell_12 = new ItemBattery(60000 * 12, 500, 500).setUnlocalizedName("battery_advanced_cell_12").setMaxStackSize(1).setCreativeTab(null).setTextureName(RefStrings.MODID + ":battery_advanced_cell_12"); + battery_lithium_cell = new ItemBattery(750000, 1000, 1000).setUnlocalizedName("battery_lithium_cell").setMaxStackSize(1).setCreativeTab(null).setTextureName(RefStrings.MODID + ":battery_lithium_cell"); + battery_lithium_cell_3 = new ItemBattery(750000 * 3, 1000, 1000).setUnlocalizedName("battery_lithium_cell_3").setMaxStackSize(1).setCreativeTab(null).setTextureName(RefStrings.MODID + ":battery_lithium_cell_3"); + battery_lithium_cell_6 = new ItemBattery(750000 * 6, 1000, 1000).setUnlocalizedName("battery_lithium_cell_6").setMaxStackSize(1).setCreativeTab(null).setTextureName(RefStrings.MODID + ":battery_lithium_cell_6"); + battery_schrabidium_cell = new ItemBattery(3000000, 5000, 5000).setUnlocalizedName("battery_schrabidium_cell").setMaxStackSize(1).setCreativeTab(null).setTextureName(RefStrings.MODID + ":battery_schrabidium_cell"); + battery_schrabidium_cell_2 = new ItemBattery(3000000 * 2, 5000, 5000).setUnlocalizedName("battery_schrabidium_cell_2").setMaxStackSize(1).setCreativeTab(null).setTextureName(RefStrings.MODID + ":battery_schrabidium_cell_2"); + battery_schrabidium_cell_4 = new ItemBattery(3000000 * 4, 5000, 5000).setUnlocalizedName("battery_schrabidium_cell_4").setMaxStackSize(1).setCreativeTab(null).setTextureName(RefStrings.MODID + ":battery_schrabidium_cell_4"); + battery_spark_cell_6 = new ItemBattery(100000000L * 6L, 2000000, 2000000).setUnlocalizedName("battery_spark_cell_6").setMaxStackSize(1).setCreativeTab(null).setTextureName(RefStrings.MODID + ":battery_spark_cell_6"); + battery_spark_cell_25 = new ItemBattery(100000000L * 25L, 2000000, 2000000).setUnlocalizedName("battery_spark_cell_25").setMaxStackSize(1).setCreativeTab(null).setTextureName(RefStrings.MODID + ":battery_spark_cell_25"); + battery_spark_cell_100 = new ItemBattery(100000000L * 100L, 2000000, 2000000).setUnlocalizedName("battery_spark_cell_100").setMaxStackSize(1).setCreativeTab(null).setTextureName(RefStrings.MODID + ":battery_spark_cell_100"); + battery_spark_cell_1000 = new ItemBattery(100000000L * 1000L, 20000000, 20000000).setUnlocalizedName("battery_spark_cell_1000").setMaxStackSize(1).setCreativeTab(null).setTextureName(RefStrings.MODID + ":battery_spark_cell_1000"); + battery_spark_cell_2500 = new ItemBattery(100000000L * 2500L, 20000000, 20000000).setUnlocalizedName("battery_spark_cell_2500").setMaxStackSize(1).setCreativeTab(null).setTextureName(RefStrings.MODID + ":battery_spark_cell_2500"); + battery_spark_cell_10000 = new ItemBattery(100000000L * 10000L, 200000000, 200000000).setUnlocalizedName("battery_spark_cell_10000").setMaxStackSize(1).setCreativeTab(null).setTextureName(RefStrings.MODID + ":battery_spark_cell_10000"); + battery_spark_cell_power = new ItemBattery(100000000L * 1000000L, 200000000, 200000000).setUnlocalizedName("battery_spark_cell_power").setMaxStackSize(1).setCreativeTab(null).setTextureName(RefStrings.MODID + ":battery_spark_cell_power"); + + battery_pack = new ItemBatteryPack().setUnlocalizedName("battery_pack").setTextureName(RefStrings.MODID + ":battery_generic_new"); battery_creative = new Item().setUnlocalizedName("battery_creative").setMaxStackSize(1).setCreativeTab(MainRegistry.controlTab).setTextureName(RefStrings.MODID + ":battery_creative_new"); - - battery_red_cell = new ItemBattery(15000, 100, 100).setUnlocalizedName("battery_red_cell").setMaxStackSize(1).setCreativeTab(MainRegistry.controlTab).setTextureName(RefStrings.MODID + ":battery_red_cell"); - battery_red_cell_6 = new ItemBattery(15000 * 6, 100, 100).setUnlocalizedName("battery_red_cell_6").setMaxStackSize(1).setCreativeTab(MainRegistry.controlTab).setTextureName(RefStrings.MODID + ":battery_red_cell_6"); - battery_red_cell_24 = new ItemBattery(15000 * 24, 100, 100).setUnlocalizedName("battery_red_cell_24").setMaxStackSize(1).setCreativeTab(MainRegistry.controlTab).setTextureName(RefStrings.MODID + ":battery_red_cell_24"); - battery_advanced_cell = new ItemBattery(60000, 500, 500).setUnlocalizedName("battery_advanced_cell").setMaxStackSize(1).setCreativeTab(MainRegistry.controlTab).setTextureName(RefStrings.MODID + ":battery_advanced_cell"); - battery_advanced_cell_4 = new ItemBattery(60000 * 4, 500, 500).setUnlocalizedName("battery_advanced_cell_4").setMaxStackSize(1).setCreativeTab(MainRegistry.controlTab).setTextureName(RefStrings.MODID + ":battery_advanced_cell_4"); - battery_advanced_cell_12 = new ItemBattery(60000 * 12, 500, 500).setUnlocalizedName("battery_advanced_cell_12").setMaxStackSize(1).setCreativeTab(MainRegistry.controlTab).setTextureName(RefStrings.MODID + ":battery_advanced_cell_12"); - battery_lithium_cell = new ItemBattery(750000, 1000, 1000).setUnlocalizedName("battery_lithium_cell").setMaxStackSize(1).setCreativeTab(MainRegistry.controlTab).setTextureName(RefStrings.MODID + ":battery_lithium_cell"); - battery_lithium_cell_3 = new ItemBattery(750000 * 3, 1000, 1000).setUnlocalizedName("battery_lithium_cell_3").setMaxStackSize(1).setCreativeTab(MainRegistry.controlTab).setTextureName(RefStrings.MODID + ":battery_lithium_cell_3"); - battery_lithium_cell_6 = new ItemBattery(750000 * 6, 1000, 1000).setUnlocalizedName("battery_lithium_cell_6").setMaxStackSize(1).setCreativeTab(MainRegistry.controlTab).setTextureName(RefStrings.MODID + ":battery_lithium_cell_6"); - battery_schrabidium_cell = new ItemBattery(3000000, 5000, 5000).setUnlocalizedName("battery_schrabidium_cell").setMaxStackSize(1).setCreativeTab(MainRegistry.controlTab).setTextureName(RefStrings.MODID + ":battery_schrabidium_cell"); - battery_schrabidium_cell_2 = new ItemBattery(3000000 * 2, 5000, 5000).setUnlocalizedName("battery_schrabidium_cell_2").setMaxStackSize(1).setCreativeTab(MainRegistry.controlTab).setTextureName(RefStrings.MODID + ":battery_schrabidium_cell_2"); - battery_schrabidium_cell_4 = new ItemBattery(3000000 * 4, 5000, 5000).setUnlocalizedName("battery_schrabidium_cell_4").setMaxStackSize(1).setCreativeTab(MainRegistry.controlTab).setTextureName(RefStrings.MODID + ":battery_schrabidium_cell_4"); - battery_spark_cell_6 = new ItemBattery(100000000L * 6L, 2000000, 2000000).setUnlocalizedName("battery_spark_cell_6").setMaxStackSize(1).setCreativeTab(MainRegistry.controlTab).setTextureName(RefStrings.MODID + ":battery_spark_cell_6"); - battery_spark_cell_25 = new ItemBattery(100000000L * 25L, 2000000, 2000000).setUnlocalizedName("battery_spark_cell_25").setMaxStackSize(1).setCreativeTab(MainRegistry.controlTab).setTextureName(RefStrings.MODID + ":battery_spark_cell_25"); - battery_spark_cell_100 = new ItemBattery(100000000L * 100L, 2000000, 2000000).setUnlocalizedName("battery_spark_cell_100").setMaxStackSize(1).setCreativeTab(MainRegistry.controlTab).setTextureName(RefStrings.MODID + ":battery_spark_cell_100"); - battery_spark_cell_1000 = new ItemBattery(100000000L * 1000L, 20000000, 20000000).setUnlocalizedName("battery_spark_cell_1000").setMaxStackSize(1).setCreativeTab(MainRegistry.controlTab).setTextureName(RefStrings.MODID + ":battery_spark_cell_1000"); - battery_spark_cell_2500 = new ItemBattery(100000000L * 2500L, 20000000, 20000000).setUnlocalizedName("battery_spark_cell_2500").setMaxStackSize(1).setCreativeTab(MainRegistry.controlTab).setTextureName(RefStrings.MODID + ":battery_spark_cell_2500"); - battery_spark_cell_10000 = new ItemBattery(100000000L * 10000L, 200000000, 200000000).setUnlocalizedName("battery_spark_cell_10000").setMaxStackSize(1).setCreativeTab(MainRegistry.controlTab).setTextureName(RefStrings.MODID + ":battery_spark_cell_10000"); - battery_spark_cell_power = new ItemBattery(100000000L * 1000000L, 200000000, 200000000).setUnlocalizedName("battery_spark_cell_power").setMaxStackSize(1).setCreativeTab(MainRegistry.controlTab).setTextureName(RefStrings.MODID + ":battery_spark_cell_power"); cube_power = new ItemBattery(1000000000000000000L, 1000000000000000L, 1000000000000000L).setUnlocalizedName("cube_power").setMaxStackSize(1).setCreativeTab(MainRegistry.controlTab).setTextureName(RefStrings.MODID + ":cube_power"); battery_sc_uranium = new ItemSelfcharger(5).setUnlocalizedName("battery_sc_uranium").setMaxStackSize(1).setCreativeTab(MainRegistry.controlTab).setTextureName(RefStrings.MODID + ":battery_sc_uranium"); @@ -5700,8 +5702,11 @@ public class ModItems { GameRegistry.registerItem(battery_spark_cell_2500, battery_spark_cell_2500.getUnlocalizedName()); GameRegistry.registerItem(battery_spark_cell_10000, battery_spark_cell_10000.getUnlocalizedName()); GameRegistry.registerItem(battery_spark_cell_power, battery_spark_cell_power.getUnlocalizedName()); - GameRegistry.registerItem(cube_power, cube_power.getUnlocalizedName()); + + GameRegistry.registerItem(battery_pack, battery_pack.getUnlocalizedName()); GameRegistry.registerItem(battery_creative, battery_creative.getUnlocalizedName()); + GameRegistry.registerItem(cube_power, cube_power.getUnlocalizedName()); + GameRegistry.registerItem(battery_potato, battery_potato.getUnlocalizedName()); GameRegistry.registerItem(battery_potatos, battery_potatos.getUnlocalizedName()); GameRegistry.registerItem(battery_sc_uranium, battery_sc_uranium.getUnlocalizedName()); diff --git a/src/main/java/com/hbm/items/armor/ArmorFSBPowered.java b/src/main/java/com/hbm/items/armor/ArmorFSBPowered.java index d5368b5f3..bfc6ba444 100644 --- a/src/main/java/com/hbm/items/armor/ArmorFSBPowered.java +++ b/src/main/java/com/hbm/items/armor/ArmorFSBPowered.java @@ -117,12 +117,12 @@ public class ArmorFSBPowered extends ArmorFSB implements IBatteryItem { } @Override - public long getChargeRate() { + public long getChargeRate(ItemStack stack) { return chargeRate; } @Override - public long getDischargeRate() { + public long getDischargeRate(ItemStack stack) { return 0; } diff --git a/src/main/java/com/hbm/items/machine/ItemBattery.java b/src/main/java/com/hbm/items/machine/ItemBattery.java index fe31ec3b9..fa9fa8cb8 100644 --- a/src/main/java/com/hbm/items/machine/ItemBattery.java +++ b/src/main/java/com/hbm/items/machine/ItemBattery.java @@ -111,12 +111,12 @@ public class ItemBattery extends Item implements IBatteryItem { } @Override - public long getChargeRate() { + public long getChargeRate(ItemStack stack) { return chargeRate; } @Override - public long getDischargeRate() { + public long getDischargeRate(ItemStack stack) { return dischargeRate; } diff --git a/src/main/java/com/hbm/items/machine/ItemBatteryPack.java b/src/main/java/com/hbm/items/machine/ItemBatteryPack.java new file mode 100644 index 000000000..ba4f95f75 --- /dev/null +++ b/src/main/java/com/hbm/items/machine/ItemBatteryPack.java @@ -0,0 +1,158 @@ +package com.hbm.items.machine; + +import java.util.List; + +import com.hbm.interfaces.IOrderedEnum; +import com.hbm.items.ItemEnumMulti; +import com.hbm.lib.RefStrings; +import com.hbm.main.MainRegistry; +import com.hbm.util.BobMathUtil; +import com.hbm.util.EnumUtil; + +import api.hbm.energymk2.IBatteryItem; +import cpw.mods.fml.relauncher.Side; +import cpw.mods.fml.relauncher.SideOnly; +import net.minecraft.creativetab.CreativeTabs; +import net.minecraft.entity.player.EntityPlayer; +import net.minecraft.item.Item; +import net.minecraft.item.ItemStack; +import net.minecraft.nbt.NBTTagCompound; +import net.minecraft.util.EnumChatFormatting; +import net.minecraft.util.ResourceLocation; + +public class ItemBatteryPack extends ItemEnumMulti implements IBatteryItem { + + public ItemBatteryPack() { + super(EnumBatteryPack.class, true, false); + this.setMaxStackSize(1); + this.setCreativeTab(MainRegistry.controlTab); + } + + public static enum EnumBatteryPack { + REDSTONE ("battery_redstone", 100L), + LEAD ("battery_lead", 1_000L), + LITHIUM ("battery_lithium", 10_000L), + SODIUM ("battery_sodium", 50_000L), + SCHRABIDIUM ("battery_schrabidium", 250_000L), + QUANTUM ("battery_quantum", 1_000_000L); + + public ResourceLocation texture; + public long capacity; + public long chargeRate; + public long dischargeRate; + + private EnumBatteryPack(String tex, long dischargeRate) { + this(tex, dischargeRate * 20 * 60 * 15, dischargeRate * 10, dischargeRate); + } + + private EnumBatteryPack(String tex, long capacity, long chargeRate, long dischargeRate) { + this.texture = new ResourceLocation(RefStrings.MODID, "textures/models/machines/" + tex + ".png"); + this.capacity = capacity; + this.chargeRate = chargeRate; + this.dischargeRate = dischargeRate; + } + } + + @Override + public void chargeBattery(ItemStack stack, long i) { + if(stack.hasTagCompound()) { + stack.stackTagCompound.setLong("charge", stack.stackTagCompound.getLong("charge") + i); + } else { + stack.stackTagCompound = new NBTTagCompound(); + stack.stackTagCompound.setLong("charge", i); + } + } + + @Override + public void setCharge(ItemStack stack, long i) { + if(stack.hasTagCompound()) { + stack.stackTagCompound.setLong("charge", i); + } else { + stack.stackTagCompound = new NBTTagCompound(); + stack.stackTagCompound.setLong("charge", i); + } + } + + @Override + public void dischargeBattery(ItemStack stack, long i) { + if(stack.hasTagCompound()) { + stack.stackTagCompound.setLong("charge", stack.stackTagCompound.getLong("charge") - i); + } else { + stack.stackTagCompound = new NBTTagCompound(); + stack.stackTagCompound.setLong("charge", this.getMaxCharge(stack) - i); + } + } + + @Override + public long getCharge(ItemStack stack) { + if(stack.hasTagCompound()) { + return stack.stackTagCompound.getLong("charge"); + } else { + stack.stackTagCompound = new NBTTagCompound(); + stack.stackTagCompound.setLong("charge", getMaxCharge(stack)); + return stack.stackTagCompound.getLong("charge"); + } + } + + @Override + public long getMaxCharge(ItemStack stack) { + EnumBatteryPack pack = EnumUtil.grabEnumSafely(EnumBatteryPack.class, stack.getItemDamage()); + return pack.capacity; + } + + @Override + public long getChargeRate(ItemStack stack) { + EnumBatteryPack pack = EnumUtil.grabEnumSafely(EnumBatteryPack.class, stack.getItemDamage()); + return pack.chargeRate; + } + + @Override + public long getDischargeRate(ItemStack stack) { + EnumBatteryPack pack = EnumUtil.grabEnumSafely(EnumBatteryPack.class, stack.getItemDamage()); + return pack.dischargeRate; + } + + @Override public boolean showDurabilityBar(ItemStack stack) { return true; } + @Override public double getDurabilityForDisplay(ItemStack stack) { return 1D - (double) getCharge(stack) / (double) getMaxCharge(stack); } + + @Override + public void addInformation(ItemStack itemstack, EntityPlayer player, List list, boolean bool) { + long maxCharge = this.getMaxCharge(itemstack); + long chargeRate = this.getChargeRate(itemstack); + long dischargeRate = this.getDischargeRate(itemstack); + long charge = maxCharge; + + if(itemstack.hasTagCompound()) charge = getCharge(itemstack); + + list.add(EnumChatFormatting.GREEN + "Energy stored: " + BobMathUtil.getShortNumber(charge) + "/" + BobMathUtil.getShortNumber(maxCharge) + "HE"); + list.add(EnumChatFormatting.YELLOW + "Charge rate: " + BobMathUtil.getShortNumber(chargeRate) + "HE/t"); + list.add(EnumChatFormatting.YELLOW + "Discharge rate: " + BobMathUtil.getShortNumber(dischargeRate) + "HE/t"); + list.add(EnumChatFormatting.GOLD + "Time for full charge: " + (maxCharge / chargeRate / 20 / 60D) + "min"); + list.add(EnumChatFormatting.GOLD + "Charge lasts for: " + (maxCharge / dischargeRate / 20 / 60D) + "min"); + } + + public static ItemStack makeEmptyBattery(ItemStack stack) { + stack.stackTagCompound = new NBTTagCompound(); + stack.stackTagCompound.setLong("charge", 0); + return stack; + } + + public static ItemStack makeFullBattery(ItemStack stack) { + stack.stackTagCompound = new NBTTagCompound(); + stack.stackTagCompound.setLong("charge", ((ItemBatteryPack) stack.getItem()).getMaxCharge(stack)); + return stack; + } + + @Override + @SideOnly(Side.CLIENT) + public void getSubItems(Item item, CreativeTabs tab, List list) { + + Enum[] order = theEnum.getEnumConstants(); + if(order[0] instanceof IOrderedEnum) order = ((IOrderedEnum) order[0]).getOrder(); + + for(int i = 0; i < order.length; i++) { + list.add(makeEmptyBattery(new ItemStack(item, 1, order[i].ordinal()))); + list.add(makeFullBattery(new ItemStack(item, 1, order[i].ordinal()))); + } + } +} diff --git a/src/main/java/com/hbm/items/machine/ItemSelfcharger.java b/src/main/java/com/hbm/items/machine/ItemSelfcharger.java index 419f5401d..635df6cb1 100644 --- a/src/main/java/com/hbm/items/machine/ItemSelfcharger.java +++ b/src/main/java/com/hbm/items/machine/ItemSelfcharger.java @@ -43,12 +43,12 @@ public class ItemSelfcharger extends Item implements IBatteryItem { } @Override - public long getChargeRate() { + public long getChargeRate(ItemStack stack) { return 0; } @Override - public long getDischargeRate() { + public long getDischargeRate(ItemStack stack) { return charge; } diff --git a/src/main/java/com/hbm/items/special/ItemGlitch.java b/src/main/java/com/hbm/items/special/ItemGlitch.java index 0031aecdb..024b970d7 100644 --- a/src/main/java/com/hbm/items/special/ItemGlitch.java +++ b/src/main/java/com/hbm/items/special/ItemGlitch.java @@ -243,6 +243,6 @@ public class ItemGlitch extends Item implements IBatteryItem { @Override public void dischargeBattery(ItemStack stack, long i) { } @Override public long getCharge(ItemStack stack) { return 200; } @Override public long getMaxCharge(ItemStack stack) { return 200; } - @Override public long getChargeRate() { return 0; } - @Override public long getDischargeRate() { return 200; } + @Override public long getChargeRate(ItemStack stack) { return 0; } + @Override public long getDischargeRate(ItemStack stack) { return 200; } } diff --git a/src/main/java/com/hbm/items/tool/ItemSwordAbilityPower.java b/src/main/java/com/hbm/items/tool/ItemSwordAbilityPower.java index 943dfd7ab..e3c7f431d 100644 --- a/src/main/java/com/hbm/items/tool/ItemSwordAbilityPower.java +++ b/src/main/java/com/hbm/items/tool/ItemSwordAbilityPower.java @@ -111,12 +111,12 @@ public class ItemSwordAbilityPower extends ItemSwordAbility implements IBatteryI } @Override - public long getChargeRate() { + public long getChargeRate(ItemStack stack) { return chargeRate; } @Override - public long getDischargeRate() { + public long getDischargeRate(ItemStack stack) { return 0; } diff --git a/src/main/java/com/hbm/items/tool/ItemToolAbilityPower.java b/src/main/java/com/hbm/items/tool/ItemToolAbilityPower.java index c0c025d35..73166f49e 100644 --- a/src/main/java/com/hbm/items/tool/ItemToolAbilityPower.java +++ b/src/main/java/com/hbm/items/tool/ItemToolAbilityPower.java @@ -107,12 +107,12 @@ public class ItemToolAbilityPower extends ItemToolAbility implements IBatteryIte } @Override - public long getChargeRate() { + public long getChargeRate(ItemStack stack) { return chargeRate; } @Override - public long getDischargeRate() { + public long getDischargeRate(ItemStack stack) { return 0; } diff --git a/src/main/java/com/hbm/items/weapon/sedna/impl/ItemGunDrill.java b/src/main/java/com/hbm/items/weapon/sedna/impl/ItemGunDrill.java index 084ace60b..d32f93802 100644 --- a/src/main/java/com/hbm/items/weapon/sedna/impl/ItemGunDrill.java +++ b/src/main/java/com/hbm/items/weapon/sedna/impl/ItemGunDrill.java @@ -133,6 +133,6 @@ public class ItemGunDrill extends ItemGunBaseNT implements IFillableItem, IBatte return 0; } - @Override public long getChargeRate() { return 50_000; } - @Override public long getDischargeRate() { return 0; } + @Override public long getChargeRate(ItemStack stack) { return 50_000; } + @Override public long getDischargeRate(ItemStack stack) { return 0; } } diff --git a/src/main/java/com/hbm/lib/Library.java b/src/main/java/com/hbm/lib/Library.java index 5512310a8..72c4f8f89 100644 --- a/src/main/java/com/hbm/lib/Library.java +++ b/src/main/java/com/hbm/lib/Library.java @@ -244,7 +244,7 @@ public class Library { long batMax = battery.getMaxCharge(slots[index]); long batCharge = battery.getCharge(slots[index]); - long batRate = battery.getChargeRate(); + long batRate = battery.getChargeRate(slots[index]); long toCharge = Math.min(Math.min(power, batRate), batMax - batCharge); power -= toCharge; @@ -264,7 +264,7 @@ public class Library { IBatteryItem battery = (IBatteryItem) slots[index].getItem(); long batCharge = battery.getCharge(slots[index]); - long batRate = battery.getDischargeRate(); + long batRate = battery.getDischargeRate(slots[index]); long toDischarge = Math.min(Math.min((maxPower - power), batRate), batCharge); battery.dischargeBattery(slots[index], toDischarge); diff --git a/src/main/java/com/hbm/main/ClientProxy.java b/src/main/java/com/hbm/main/ClientProxy.java index fa3544020..47bb3e5d9 100644 --- a/src/main/java/com/hbm/main/ClientProxy.java +++ b/src/main/java/com/hbm/main/ClientProxy.java @@ -306,6 +306,7 @@ public class ClientProxy extends ServerProxy { ClientRegistry.bindTileEntitySpecialRenderer(TileEntityFF.class, new RenderForceField()); ClientRegistry.bindTileEntitySpecialRenderer(TileEntityForceField.class, new RenderMachineForceField()); ClientRegistry.bindTileEntitySpecialRenderer(TileEntityMachineFENSU.class, new RenderFENSU()); + ClientRegistry.bindTileEntitySpecialRenderer(TileEntityBatterySocket.class, new RenderBatterySocket()); ClientRegistry.bindTileEntitySpecialRenderer(TileEntityMachineLargeTurbine.class, new RenderBigTurbine()); ClientRegistry.bindTileEntitySpecialRenderer(TileEntityMachineReactorBreeding.class, new RenderBreeder()); ClientRegistry.bindTileEntitySpecialRenderer(TileEntitySolarBoiler.class, new RenderSolarBoiler()); @@ -541,6 +542,7 @@ public class ClientProxy extends ServerProxy { MinecraftForgeClient.registerItemRenderer(ModItems.missile_doomsday_rusted, new ItemRenderMissileGeneric(RenderMissileType.TYPE_NUCLEAR)); MinecraftForgeClient.registerItemRenderer(ModItems.missile_shuttle, new ItemRenderMissileGeneric(RenderMissileType.TYPE_ROBIN)); + MinecraftForgeClient.registerItemRenderer(ModItems.battery_pack, new ItemRenderBatteryPack()); //templates MinecraftForgeClient.registerItemRenderer(ModItems.assembly_template, new ItemRenderTemplate()); MinecraftForgeClient.registerItemRenderer(ModItems.chemistry_template, new ItemRenderTemplate()); diff --git a/src/main/java/com/hbm/main/ResourceManager.java b/src/main/java/com/hbm/main/ResourceManager.java index 8e9d147db..a0f97f3b6 100644 --- a/src/main/java/com/hbm/main/ResourceManager.java +++ b/src/main/java/com/hbm/main/ResourceManager.java @@ -270,6 +270,7 @@ public class ResourceManager { public static final IModelCustom watz_pump = new HFRWavefrontObject(new ResourceLocation(RefStrings.MODID, "models/machines/watz_pump.obj")).asVBO(); //FENSU + public static final IModelCustom battery_socket = new HFRWavefrontObject(new ResourceLocation(RefStrings.MODID, "models/machines/battery.obj")).asVBO(); public static final IModelCustom fensu = new HFRWavefrontObject(new ResourceLocation(RefStrings.MODID, "models/machines/fensu.obj")).asVBO(); //Radar @@ -737,6 +738,7 @@ public class ResourceManager { public static final ResourceLocation watz_pump_tex = new ResourceLocation(RefStrings.MODID, "textures/models/machines/watz_pump.png"); //FENSU + public static final ResourceLocation battery_socket_tex = new ResourceLocation(RefStrings.MODID, "textures/models/machines/battery_socket.png"); public static final ResourceLocation fensu_tex = new ResourceLocation(RefStrings.MODID, "textures/models/machines/fensu.png"); //Radar diff --git a/src/main/java/com/hbm/packet/toserver/AuxButtonPacket.java b/src/main/java/com/hbm/packet/toserver/AuxButtonPacket.java index 7f41feeb1..7183c202b 100644 --- a/src/main/java/com/hbm/packet/toserver/AuxButtonPacket.java +++ b/src/main/java/com/hbm/packet/toserver/AuxButtonPacket.java @@ -2,6 +2,7 @@ package com.hbm.packet.toserver; import com.hbm.config.MobConfig; import com.hbm.entity.mob.EntityDuck; +import com.hbm.interfaces.NotableComments; import com.hbm.items.weapon.ItemCustomMissilePart.PartSize; import com.hbm.tileentity.TileEntityMachineBase; import com.hbm.tileentity.TileEntityTickingBase; @@ -25,6 +26,7 @@ import net.minecraft.nbt.NBTTagCompound; import net.minecraft.tileentity.TileEntity; import net.minecraft.util.Vec3; +@NotableComments @Deprecated //use the NBT control packet instead public class AuxButtonPacket implements IMessage { @@ -34,13 +36,9 @@ public class AuxButtonPacket implements IMessage { int value; int id; - public AuxButtonPacket() - { - - } + public AuxButtonPacket() { } - public AuxButtonPacket(int x, int y, int z, int value, int id) - { + public AuxButtonPacket(int x, int y, int z, int value, int id) { this.x = x; this.y = y; this.z = z; @@ -77,58 +75,45 @@ public class AuxButtonPacket implements IMessage { //try { TileEntity te = p.worldObj.getTileEntity(m.x, m.y, m.z); - if (te instanceof TileEntityForceField) { + if(te instanceof TileEntityForceField) { TileEntityForceField field = (TileEntityForceField)te; - field.isOn = !field.isOn; } - if (te instanceof TileEntityMachineMissileAssembly) { + if(te instanceof TileEntityMachineMissileAssembly) { TileEntityMachineMissileAssembly assembly = (TileEntityMachineMissileAssembly)te; - assembly.construct(); } - if (te instanceof TileEntityLaunchTable) { + if(te instanceof TileEntityLaunchTable) { TileEntityLaunchTable launcher = (TileEntityLaunchTable)te; - launcher.padSize = PartSize.values()[m.value]; } - if (te instanceof TileEntityCoreEmitter) { + if(te instanceof TileEntityCoreEmitter) { TileEntityCoreEmitter core = (TileEntityCoreEmitter)te; - - if(m.id == 0) { - core.watts = m.value; - } - if(m.id == 1) { - core.isOn = !core.isOn; - } + if(m.id == 0) core.watts = m.value; + if(m.id == 1) core.isOn = !core.isOn; } - if (te instanceof TileEntityCoreStabilizer) { + if(te instanceof TileEntityCoreStabilizer) { TileEntityCoreStabilizer core = (TileEntityCoreStabilizer)te; - - if(m.id == 0) { - core.watts = m.value; - } + if(m.id == 0) core.watts = m.value; } - if (te instanceof TileEntityBarrel) { + if(te instanceof TileEntityBarrel) { TileEntityBarrel barrel = (TileEntityBarrel)te; - barrel.mode = (short) ((barrel.mode + 1) % barrel.modes); barrel.markDirty(); } - if (te instanceof TileEntityMachineBattery) { + if(te instanceof TileEntityMachineBattery) { TileEntityMachineBattery bat = (TileEntityMachineBattery)te; if(m.id == 0) { bat.redLow = (short) ((bat.redLow + 1) % 4); bat.markDirty(); } - if(m.id == 1) { bat.redHigh = (short) ((bat.redHigh + 1) % 4); bat.markDirty(); @@ -136,26 +121,22 @@ public class AuxButtonPacket implements IMessage { if(m.id == 2) { switch(bat.priority) { - case LOW: bat.priority = ConnectionPriority.NORMAL; break; - case NORMAL: bat.priority = ConnectionPriority.HIGH; break; - case HIGH: bat.priority = ConnectionPriority.LOW; break; + case LOW: bat.priority = ConnectionPriority.NORMAL; break; + case NORMAL: bat.priority = ConnectionPriority.HIGH; break; + case HIGH: bat.priority = ConnectionPriority.LOW; break; } bat.markDirty(); } } - if (te instanceof TileEntitySoyuzLauncher) { + if(te instanceof TileEntitySoyuzLauncher) { TileEntitySoyuzLauncher launcher = (TileEntitySoyuzLauncher)te; - - if(m.id == 0) - launcher.mode = (byte) m.value; - if(m.id == 1) - launcher.startCountdown(); + if(m.id == 0) launcher.mode = (byte) m.value; + if(m.id == 1) launcher.startCountdown(); } - if (te instanceof TileEntityMachineMiningLaser) { + if(te instanceof TileEntityMachineMiningLaser) { TileEntityMachineMiningLaser laser = (TileEntityMachineMiningLaser)te; - laser.isOn = !laser.isOn; } diff --git a/src/main/java/com/hbm/render/item/ItemRenderBatteryPack.java b/src/main/java/com/hbm/render/item/ItemRenderBatteryPack.java new file mode 100644 index 000000000..bde3cbeac --- /dev/null +++ b/src/main/java/com/hbm/render/item/ItemRenderBatteryPack.java @@ -0,0 +1,28 @@ +package com.hbm.render.item; + +import org.lwjgl.opengl.GL11; + +import com.hbm.items.machine.ItemBatteryPack.EnumBatteryPack; +import com.hbm.main.ResourceManager; +import com.hbm.util.EnumUtil; + +import net.minecraft.client.Minecraft; +import net.minecraft.item.ItemStack; + +public class ItemRenderBatteryPack extends ItemRenderBase { + + @Override + public void renderInventory() { + GL11.glTranslated(0, -3, 0); + GL11.glScaled(5, 5, 5); + } + + @Override + public void renderCommonWithStack(ItemStack item) { + EnumBatteryPack pack = EnumUtil.grabEnumSafely(EnumBatteryPack.class, item.getItemDamage()); + GL11.glShadeModel(GL11.GL_SMOOTH); + Minecraft.getMinecraft().getTextureManager().bindTexture(pack.texture); + ResourceManager.battery_socket.renderPart("Battery"); + GL11.glShadeModel(GL11.GL_FLAT); + } +} diff --git a/src/main/java/com/hbm/render/tileentity/RenderBatterySocket.java b/src/main/java/com/hbm/render/tileentity/RenderBatterySocket.java new file mode 100644 index 000000000..66a69928d --- /dev/null +++ b/src/main/java/com/hbm/render/tileentity/RenderBatterySocket.java @@ -0,0 +1,71 @@ +package com.hbm.render.tileentity; + +import org.lwjgl.opengl.GL11; + +import com.hbm.blocks.ModBlocks; +import com.hbm.items.machine.ItemBatteryPack.EnumBatteryPack; +import com.hbm.main.ResourceManager; +import com.hbm.render.item.ItemRenderBase; +import com.hbm.tileentity.machine.storage.TileEntityBatterySocket; +import com.hbm.util.EnumUtil; + +import net.minecraft.client.renderer.tileentity.TileEntitySpecialRenderer; +import net.minecraft.item.Item; +import net.minecraft.tileentity.TileEntity; +import net.minecraftforge.client.IItemRenderer; + +public class RenderBatterySocket extends TileEntitySpecialRenderer implements IItemRendererProvider { + + @Override + public void renderTileEntityAt(TileEntity tile, double x, double y, double z, float interp) { + GL11.glPushMatrix(); + GL11.glTranslated(x + 0.5, y, z + 0.5); + GL11.glEnable(GL11.GL_LIGHTING); + GL11.glEnable(GL11.GL_CULL_FACE); + + switch(tile.getBlockMetadata() - 10) { + case 2: GL11.glRotatef(90, 0F, 1F, 0F); break; + case 4: GL11.glRotatef(180, 0F, 1F, 0F); break; + case 3: GL11.glRotatef(270, 0F, 1F, 0F); break; + case 5: GL11.glRotatef(0, 0F, 1F, 0F); break; + } + + GL11.glTranslated(-0.5, 0, 0.5); + + TileEntityBatterySocket socket = (TileEntityBatterySocket) tile; + + GL11.glShadeModel(GL11.GL_SMOOTH); + bindTexture(ResourceManager.battery_socket_tex); + ResourceManager.battery_socket.renderPart("Socket"); + + if(socket.renderPack >= 0) { + EnumBatteryPack pack = EnumUtil.grabEnumSafely(EnumBatteryPack.class, socket.renderPack); + bindTexture(pack.texture); + ResourceManager.battery_socket.renderPart("Battery"); + } + + GL11.glShadeModel(GL11.GL_FLAT); + + GL11.glPopMatrix(); + } + + @Override + public Item getItemForRenderer() { + return Item.getItemFromBlock(ModBlocks.machine_battery_socket); + } + + @Override + public IItemRenderer getRenderer() { + return new ItemRenderBase() { + public void renderInventory() { + GL11.glTranslated(0, -2, 0); + GL11.glScaled(5, 5, 5); + } + public void renderCommon() { + GL11.glShadeModel(GL11.GL_SMOOTH); + bindTexture(ResourceManager.battery_socket_tex); + ResourceManager.battery_socket.renderPart("Socket"); + GL11.glShadeModel(GL11.GL_FLAT); + }}; + } +} diff --git a/src/main/java/com/hbm/saveddata/AnnihilatorSavedData.java b/src/main/java/com/hbm/saveddata/AnnihilatorSavedData.java index 618867431..5304ad557 100644 --- a/src/main/java/com/hbm/saveddata/AnnihilatorSavedData.java +++ b/src/main/java/com/hbm/saveddata/AnnihilatorSavedData.java @@ -148,7 +148,6 @@ public class AnnihilatorSavedData extends WorldSavedData { serializeKey(compound, entry.getKey()); compound.setByteArray("amount", entry.getValue().toByteArray()); nbt.appendTag(compound); - System.out.println("Serializing " + entry.getValue().toString() + " of " + entry.getKey()); } } @@ -158,7 +157,6 @@ public class AnnihilatorSavedData extends WorldSavedData { NBTTagCompound compound = (NBTTagCompound) nbt.tagList.get(i); Object key = deserializeKey(compound); if(key != null) this.items.put(key, new BigInteger(compound.getByteArray("amount"))); - System.out.println("Deserializing " + new BigInteger(compound.getByteArray("amount")).toString() + " of " + key); } } catch(Throwable ex) { } // because world data can be dented to all fucking hell and back } diff --git a/src/main/java/com/hbm/tileentity/TileEntityProxyCombo.java b/src/main/java/com/hbm/tileentity/TileEntityProxyCombo.java index dc30ea5b3..3f36eab8d 100644 --- a/src/main/java/com/hbm/tileentity/TileEntityProxyCombo.java +++ b/src/main/java/com/hbm/tileentity/TileEntityProxyCombo.java @@ -6,6 +6,7 @@ import com.hbm.handler.CompatHandler.OCComponent; import com.hbm.inventory.fluid.FluidType; import com.hbm.inventory.fluid.tank.FluidTank; +import api.hbm.energymk2.IEnergyConductorMK2; import api.hbm.energymk2.IEnergyReceiverMK2; import api.hbm.fluidmk2.IFluidConnectorMK2; import api.hbm.fluidmk2.IFluidReceiverMK2; @@ -31,11 +32,12 @@ import net.minecraftforge.common.util.ForgeDirection; @Optional.Interface(iface = "com.hbm.handler.CompatHandler.OCComponent", modid = "opencomputers"), @Optional.Interface(iface = "li.cil.oc.api.network.SimpleComponent", modid = "opencomputers") }) -public class TileEntityProxyCombo extends TileEntityProxyBase implements IEnergyReceiverMK2, ISidedInventory, IFluidReceiverMK2, IHeatSource, ICrucibleAcceptor, SimpleComponent, OCComponent, IRORValueProvider, IRORInteractive { +public class TileEntityProxyCombo extends TileEntityProxyBase implements IEnergyReceiverMK2, IEnergyConductorMK2, ISidedInventory, IFluidReceiverMK2, IHeatSource, ICrucibleAcceptor, SimpleComponent, OCComponent, IRORValueProvider, IRORInteractive { TileEntity tile; boolean inventory; boolean power; + boolean conductor; boolean fluid; boolean heat; public boolean moltenMetal; @@ -56,11 +58,15 @@ public class TileEntityProxyCombo extends TileEntityProxyBase implements IEnergy this.inventory = true; return this; } - + public TileEntityProxyCombo power() { this.power = true; return this; } + public TileEntityProxyCombo conductor() { + this.conductor = true; + return this; + } public TileEntityProxyCombo moltenMetal() { this.moltenMetal = true; return this; @@ -141,13 +147,21 @@ public class TileEntityProxyCombo extends TileEntityProxyBase implements IEnergy @Override public boolean canConnect(ForgeDirection dir) { - if(!power) - return false; - - if(getCoreObject() instanceof IEnergyReceiverMK2) { + if(power && getCoreObject() instanceof IEnergyReceiverMK2) { return ((IEnergyReceiverMK2)getCoreObject()).canConnect(dir); } + if(conductor && getCoreObject() instanceof IEnergyConductorMK2) { + return ((IEnergyConductorMK2)getCoreObject()).canConnect(dir); + } + + return true; + } + + @Override + public boolean allowDirectProvision() { + if(!power) return false; + if(getCoreObject() instanceof IEnergyReceiverMK2) return ((IEnergyReceiverMK2)getCoreObject()).allowDirectProvision(); return true; } @@ -402,6 +416,7 @@ public class TileEntityProxyCombo extends TileEntityProxyBase implements IEnergy this.inventory = nbt.getBoolean("inv"); this.power = nbt.getBoolean("power"); + this.conductor = nbt.getBoolean("conductor"); this.fluid = nbt.getBoolean("fluid"); this.moltenMetal = nbt.getBoolean("metal"); this.heat = nbt.getBoolean("heat"); @@ -416,6 +431,7 @@ public class TileEntityProxyCombo extends TileEntityProxyBase implements IEnergy nbt.setBoolean("inv", inventory); nbt.setBoolean("power", power); + nbt.setBoolean("conductor", conductor); nbt.setBoolean("fluid", fluid); nbt.setBoolean("metal", moltenMetal); nbt.setBoolean("heat", heat); diff --git a/src/main/java/com/hbm/tileentity/TileMappings.java b/src/main/java/com/hbm/tileentity/TileMappings.java index dda9eba44..a4cbb8014 100644 --- a/src/main/java/com/hbm/tileentity/TileMappings.java +++ b/src/main/java/com/hbm/tileentity/TileMappings.java @@ -81,6 +81,7 @@ public class TileMappings { put(TileEntityDecoPoleTop.class, "tileentity_poletop"); put(TileEntityDecoPoleSatelliteReceiver.class, "tileentity_satellitereceicer"); put(TileEntityMachineBattery.class, "tileentity_battery"); + put(TileEntityBatterySocket.class, "tileentity_battery_socket"); put(TileEntityCapacitor.class, "tileentity_capacitor"); put(TileEntityMachineWoodBurner.class, "tileentity_wood_burner"); put(TileEntityRedBarrel.class, "tileentity_barrel"); diff --git a/src/main/java/com/hbm/tileentity/machine/TileEntityCharger.java b/src/main/java/com/hbm/tileentity/machine/TileEntityCharger.java index 5cde6c932..887b6643b 100644 --- a/src/main/java/com/hbm/tileentity/machine/TileEntityCharger.java +++ b/src/main/java/com/hbm/tileentity/machine/TileEntityCharger.java @@ -46,7 +46,7 @@ public class TileEntityCharger extends TileEntityLoadedBase implements IEnergyRe if(stack != null && stack.getItem() instanceof IBatteryItem) { IBatteryItem battery = (IBatteryItem) stack.getItem(); - charge += Math.min(battery.getMaxCharge(stack) - battery.getCharge(stack), battery.getChargeRate()); + charge += Math.min(battery.getMaxCharge(stack) - battery.getCharge(stack), battery.getChargeRate(stack)); } } } @@ -129,7 +129,7 @@ public class TileEntityCharger extends TileEntityLoadedBase implements IEnergyRe if(stack != null && stack.getItem() instanceof IBatteryItem) { IBatteryItem battery = (IBatteryItem) stack.getItem(); - long toCharge = Math.min(battery.getMaxCharge(stack) - battery.getCharge(stack), battery.getChargeRate()); + long toCharge = Math.min(battery.getMaxCharge(stack) - battery.getCharge(stack), battery.getChargeRate(null)); toCharge = Math.min(toCharge, Math.max(power / 5, 1)); battery.chargeBattery(stack, toCharge); power -= toCharge; diff --git a/src/main/java/com/hbm/tileentity/machine/storage/TileEntityBatterySocket.java b/src/main/java/com/hbm/tileentity/machine/storage/TileEntityBatterySocket.java new file mode 100644 index 000000000..f354405f6 --- /dev/null +++ b/src/main/java/com/hbm/tileentity/machine/storage/TileEntityBatterySocket.java @@ -0,0 +1,279 @@ +package com.hbm.tileentity.machine.storage; + +import com.hbm.interfaces.IControlReceiver; +import com.hbm.inventory.container.ContainerBatterySocket; +import com.hbm.inventory.gui.GUIBatterySocket; +import com.hbm.items.ModItems; +import com.hbm.tileentity.IGUIProvider; +import com.hbm.tileentity.TileEntityMachineBase; +import com.hbm.uninos.UniNodespace; +import com.hbm.util.EnumUtil; +import com.hbm.util.fauxpointtwelve.BlockPos; +import com.hbm.util.fauxpointtwelve.DirPos; + +import api.hbm.energymk2.IBatteryItem; +import api.hbm.energymk2.IEnergyConductorMK2; +import api.hbm.energymk2.IEnergyProviderMK2; +import api.hbm.energymk2.IEnergyReceiverMK2; +import api.hbm.energymk2.Nodespace; +import api.hbm.energymk2.Nodespace.PowerNode; +import io.netty.buffer.ByteBuf; +import net.minecraft.entity.player.EntityPlayer; +import net.minecraft.inventory.Container; +import net.minecraft.item.ItemStack; +import net.minecraft.nbt.NBTTagCompound; +import net.minecraft.util.MathHelper; +import net.minecraft.world.World; +import net.minecraftforge.common.util.ForgeDirection; + +public class TileEntityBatterySocket extends TileEntityMachineBase implements IEnergyConductorMK2, IEnergyProviderMK2, IEnergyReceiverMK2, IControlReceiver, IGUIProvider { + + public long[] log = new long[20]; + public long delta = 0; + public byte lastRedstone = 0; + public long prevPowerState = 0; + + public static final int mode_input = 0; + public static final int mode_buffer = 1; + public static final int mode_output = 2; + public static final int mode_none = 3; + public short redLow = 0; + public short redHigh = 2; + public ConnectionPriority priority = ConnectionPriority.LOW; + + public int renderPack = -1; + + protected PowerNode node; + + public TileEntityBatterySocket() { + super(1); + } + + @Override public String getName() { return "container.batterySocket"; } + + @Override + public void updateEntity() { + + if(!worldObj.isRemote) { + + if(priority == null || priority.ordinal() == 0 || priority.ordinal() == 4) { + priority = ConnectionPriority.LOW; + } + + long prevPower = this.getPower(); + + if(this.node == null || this.node.expired) { + + this.node = (PowerNode) UniNodespace.getNode(worldObj, xCoord, yCoord, zCoord, Nodespace.THE_POWER_PROVIDER); + + if(this.node == null || this.node.expired) { + this.node = this.createNode(); + UniNodespace.createNode(worldObj, this.node); + } + } + + if(this.node != null && this.node.hasValidNet()) switch(this.getRelevantMode(false)) { + case mode_input: this.node.net.removeProvider(this); this.node.net.addReceiver(this); break; + case mode_output: this.node.net.addProvider(this); this.node.net.removeReceiver(this); break; + case mode_buffer: this.node.net.addProvider(this); this.node.net.addReceiver(this); break; + case mode_none: this.node.net.removeProvider(this); this.node.net.removeReceiver(this); break; + } + + byte comp = this.getComparatorPower(); + if(comp != this.lastRedstone) this.markDirty(); + this.lastRedstone = comp; + + long avg = (this.getPower() + prevPower) / 2; + this.delta = avg - this.log[0]; + + for(int i = 1; i < this.log.length; i++) { + this.log[i - 1] = this.log[i]; + } + + this.log[19] = avg; + + prevPowerState = this.getPower(); + + this.networkPackNT(100); + } + } + + @Override + public PowerNode createNode() { + return new PowerNode(this.getPortPos()).setConnections(this.getConPos()); + } + + public byte getComparatorPower() { + double frac = (double) this.getPower() / (double) this.getMaxPower() * 15D; + return (byte) (MathHelper.clamp_int((int) frac + 1, 0, 15)); //to combat eventual rounding errors with the FEnSU's stupid maxPower + } + + @Override + public void invalidate() { + super.invalidate(); + + if(!worldObj.isRemote) { + if(this.node != null) { + UniNodespace.destroyNode(worldObj, xCoord, yCoord, zCoord, Nodespace.THE_POWER_PROVIDER); + } + } + } + + @Override + public void serialize(ByteBuf buf) { + super.serialize(buf); + + int renderPack = -1; + if(slots[0] != null && slots[0].getItem() == ModItems.battery_pack) { + renderPack = slots[0].getItemDamage(); + } + + buf.writeInt(renderPack); + buf.writeLong(delta); + buf.writeShort(redLow); + buf.writeShort(redHigh); + buf.writeByte(priority.ordinal()); + } + + @Override + public void deserialize(ByteBuf buf) { + super.deserialize(buf); + + renderPack = buf.readInt(); + delta = buf.readLong(); + redLow = buf.readShort(); + redHigh = buf.readShort(); + priority = EnumUtil.grabEnumSafely(ConnectionPriority.class, buf.readByte()); + } + + @Override + public void readFromNBT(NBTTagCompound nbt) { + super.readFromNBT(nbt); + + this.redLow = nbt.getShort("redLow"); + this.redHigh = nbt.getShort("redHigh"); + this.lastRedstone = nbt.getByte("lastRedstone"); + this.priority = EnumUtil.grabEnumSafely(ConnectionPriority.class, nbt.getByte("priority")); + } + + @Override + public void writeToNBT(NBTTagCompound nbt) { + super.writeToNBT(nbt); + + nbt.setShort("redLow", redLow); + nbt.setShort("redHigh", redHigh); + nbt.setByte("lastRedstone", lastRedstone); + nbt.setByte("priority", (byte) this.priority.ordinal()); + } + + @Override + public boolean canExtractItem(int i, ItemStack stack, int j) { + if(stack.getItem() instanceof IBatteryItem) { + if(i == mode_input && ((IBatteryItem)stack.getItem()).getCharge(stack) == 0) return true; + if(i == mode_output && ((IBatteryItem)stack.getItem()).getCharge(stack) == ((IBatteryItem)stack.getItem()).getMaxCharge(stack)) return true; + } + return false; + } + + @Override + public boolean isItemValidForSlot(int i, ItemStack stack) { + return stack.getItem() instanceof IBatteryItem; + } + + @Override public int[] getAccessibleSlotsFromSide(int side) { return new int[] {0}; } + + @Override + public long getPower() { + if(slots[0] == null || !(slots[0].getItem() instanceof IBatteryItem)) return 0; + return ((IBatteryItem) slots[0].getItem()).getCharge(slots[0]); + } + + @Override + public void setPower(long power) { + if(slots[0] == null || !(slots[0].getItem() instanceof IBatteryItem)) return; + ((IBatteryItem) slots[0].getItem()).setCharge(slots[0], power); + } + + @Override + public long getMaxPower() { + if(slots[0] == null || !(slots[0].getItem() instanceof IBatteryItem)) return 0; + return ((IBatteryItem) slots[0].getItem()).getMaxCharge(slots[0]); + } + + @Override public boolean allowDirectProvision() { return false; } + @Override public ConnectionPriority getPriority() { return this.priority; } + + @Override public long getProviderSpeed() { + if(slots[0] == null || !(slots[0].getItem() instanceof IBatteryItem)) return 0; + int mode = this.getRelevantMode(true); + return mode == mode_output || mode == mode_buffer ? ((IBatteryItem) slots[0].getItem()).getDischargeRate(slots[0]) : 0; + } + + @Override public long getReceiverSpeed() { + if(slots[0] == null || !(slots[0].getItem() instanceof IBatteryItem)) return 0; + int mode = this.getRelevantMode(true); + return mode == mode_input || mode == mode_buffer ? ((IBatteryItem) slots[0].getItem()).getChargeRate(slots[0]) : 0; + } + + public BlockPos[] getPortPos() { + ForgeDirection dir = ForgeDirection.getOrientation(this.getBlockMetadata() - 10); + ForgeDirection rot = dir.getRotation(ForgeDirection.UP); + return new BlockPos[] { + new BlockPos(xCoord, yCoord, zCoord), + new BlockPos(xCoord - dir.offsetX, yCoord, zCoord - dir.offsetZ), + new BlockPos(xCoord + rot.offsetX, yCoord, zCoord + rot.offsetZ), + new BlockPos(xCoord - dir.offsetX + rot.offsetX, yCoord, zCoord - dir.offsetZ + rot.offsetZ) + }; + } + + public DirPos[] getConPos() { + ForgeDirection dir = ForgeDirection.getOrientation(this.getBlockMetadata() - 10); + ForgeDirection rot = dir.getRotation(ForgeDirection.UP); + return new DirPos[] { + new DirPos(xCoord + dir.offsetX, yCoord, zCoord + dir.offsetZ, dir), + new DirPos(xCoord + dir.offsetX + rot.offsetX, yCoord, zCoord + dir.offsetZ + rot.offsetZ, dir), + + new DirPos(xCoord - dir.offsetX * 2, yCoord, zCoord - dir.offsetZ * 2, dir.getOpposite()), + new DirPos(xCoord - dir.offsetX * 2 + rot.offsetX, yCoord, zCoord - dir.offsetZ * 2 + rot.offsetZ, dir.getOpposite()), + + new DirPos(xCoord + rot.offsetX * 2, yCoord, zCoord + rot.offsetZ * 2, rot), + new DirPos(xCoord + rot.offsetX * 2 - dir.offsetX, yCoord, zCoord + rot.offsetZ * 2 - dir.offsetZ, rot), + + new DirPos(xCoord - rot.offsetX, yCoord, zCoord - rot.offsetZ, rot.getOpposite()), + new DirPos(xCoord - rot.offsetX - dir.offsetX, yCoord, zCoord - rot.offsetZ - dir.offsetZ, rot.getOpposite()) + }; + } + + private short modeCache = 0; + + public short getRelevantMode(boolean useCache) { + if(useCache) return this.modeCache; + boolean powered = false; + for(BlockPos pos : getPortPos()) if(worldObj.isBlockIndirectlyGettingPowered(pos.getX(), pos.getY(), pos.getZ())) { powered = true; break; } + this.modeCache = powered ? this.redHigh : this.redLow; + return this.modeCache; + } + + @Override public Container provideContainer(int ID, EntityPlayer player, World world, int x, int y, int z) { return new ContainerBatterySocket(player.inventory, this); } + @Override public Object provideGUI(int ID, EntityPlayer player, World world, int x, int y, int z) { return new GUIBatterySocket(player.inventory, this); } + + @Override public boolean hasPermission(EntityPlayer player) { return this.isUseableByPlayer(player); } + + @Override + public void receiveControl(NBTTagCompound data) { + if(data.hasKey("low")) { + this.redLow++; + if(this.redLow > 3) this.redLow = 0; + } + if(data.hasKey("high")) { + this.redHigh++; + if(this.redHigh > 3) this.redHigh = 0; + } + if(data.hasKey("priority")) { + int ordinal = this.priority.ordinal(); + ordinal++; + if(ordinal > ConnectionPriority.HIGH.ordinal()) ordinal = ConnectionPriority.LOW.ordinal(); + this.priority = EnumUtil.grabEnumSafely(ConnectionPriority.class, ordinal); + } + } +} diff --git a/src/main/java/com/hbm/tileentity/machine/storage/TileEntityMachineBattery.java b/src/main/java/com/hbm/tileentity/machine/storage/TileEntityMachineBattery.java index a2984cb93..3c0a726bb 100644 --- a/src/main/java/com/hbm/tileentity/machine/storage/TileEntityMachineBattery.java +++ b/src/main/java/com/hbm/tileentity/machine/storage/TileEntityMachineBattery.java @@ -245,10 +245,6 @@ public class TileEntityMachineBattery extends TileEntityMachineBase implements I } } - public void onNodeDestroyedCallback() { - this.node = null; - } - @Override public void invalidate() { super.invalidate(); diff --git a/src/main/java/com/hbm/tileentity/network/TileEntityPneumoTube.java b/src/main/java/com/hbm/tileentity/network/TileEntityPneumoTube.java index 03a3879b9..1123bac7a 100644 --- a/src/main/java/com/hbm/tileentity/network/TileEntityPneumoTube.java +++ b/src/main/java/com/hbm/tileentity/network/TileEntityPneumoTube.java @@ -47,6 +47,7 @@ public class TileEntityPneumoTube extends TileEntityMachineBase implements IGUIP public byte sendOrder = 0; public byte receiveOrder = 0; public int soundDelay = 0; + public int sendCounter = 0; public FluidTank compair; @@ -113,7 +114,7 @@ public class TileEntityPneumoTube extends TileEntityMachineBase implements IGUIP if(sendFrom instanceof IInventory) { PneumaticNetwork net = node.net; - if(net.send((IInventory) sendFrom, this, this.insertionDir.getOpposite(), sendOrder, receiveOrder, getRangeFromPressure(compair.getPressure()))) { + if(net.send((IInventory) sendFrom, this, this.insertionDir.getOpposite(), sendOrder, receiveOrder, getRangeFromPressure(compair.getPressure()), sendCounter)) { this.compair.setFill(this.compair.getFill() - 50); if(this.soundDelay <= 0 && !this.muffled) { @@ -121,6 +122,8 @@ public class TileEntityPneumoTube extends TileEntityMachineBase implements IGUIP this.soundDelay = 20; } } + + this.sendCounter++; } } } @@ -229,6 +232,7 @@ public class TileEntityPneumoTube extends TileEntityMachineBase implements IGUIP this.sendOrder = nbt.getByte("sendOrder"); this.receiveOrder = nbt.getByte("receiveOrder"); + this.sendCounter = nbt.getInteger("sendCounter"); this.whitelist = nbt.getBoolean("whitelist"); this.redstone = nbt.getBoolean("redstone"); @@ -244,6 +248,7 @@ public class TileEntityPneumoTube extends TileEntityMachineBase implements IGUIP nbt.setByte("sendOrder", sendOrder); nbt.setByte("receiveOrder", receiveOrder); + nbt.setInteger("sendCounter", sendCounter); nbt.setBoolean("whitelist", whitelist); nbt.setBoolean("redstone", redstone); diff --git a/src/main/java/com/hbm/uninos/networkproviders/PneumaticNetwork.java b/src/main/java/com/hbm/uninos/networkproviders/PneumaticNetwork.java index 336fbf86d..c07254103 100644 --- a/src/main/java/com/hbm/uninos/networkproviders/PneumaticNetwork.java +++ b/src/main/java/com/hbm/uninos/networkproviders/PneumaticNetwork.java @@ -31,7 +31,6 @@ public class PneumaticNetwork extends NodeNet { public static final byte RECEIVE_RANDOM = 1; public Random rand = new Random(); - public int nextReceiver = 0; protected static final int timeout = 1_000; public static final int ITEMS_PER_TRANSFER = 64; @@ -53,7 +52,7 @@ public class PneumaticNetwork extends NodeNet { receivers.entrySet().removeIf(x -> { return (timestamp - x.getValue().getY() > timeout) || NodeNet.isBadLink(x.getKey()); }); } - public boolean send(IInventory source, TileEntityPneumoTube tube, ForgeDirection accessDir, int sendOrder, int receiveOrder, int maxRange) { + public boolean send(IInventory source, TileEntityPneumoTube tube, ForgeDirection accessDir, int sendOrder, int receiveOrder, int maxRange, int nextReceiver) { // turns out there may be a short time window where the cleanup hasn't happened yet, but chunkloading has already caused tiles to go invalid // so we just run it again here, just to be sure. @@ -76,7 +75,6 @@ public class PneumaticNetwork extends NodeNet { int index = nextReceiver % receivers.size(); Entry> chosenReceiverEntry = null; - nextReceiver++; if(receiveOrder == RECEIVE_ROBIN) chosenReceiverEntry = receiverList.get(index); if(receiveOrder == RECEIVE_RANDOM) chosenReceiverEntry = receiverList.get(rand.nextInt(receiverList.size())); diff --git a/src/main/java/com/hbm/util/CompatEnergyControl.java b/src/main/java/com/hbm/util/CompatEnergyControl.java index 353557637..b74fd9a32 100644 --- a/src/main/java/com/hbm/util/CompatEnergyControl.java +++ b/src/main/java/com/hbm/util/CompatEnergyControl.java @@ -36,7 +36,7 @@ public class CompatEnergyControl { /** Standardized discharge for IBatteryItem, returns the amount that was removed */ public static double dischargeItem(ItemStack stack, double needed) { IBatteryItem battery = (IBatteryItem) stack.getItem(); - long toDischarge = Math.min(battery.getDischargeRate(), Math.min(battery.getCharge(stack), (long) needed)); + long toDischarge = Math.min(battery.getDischargeRate(stack), Math.min(battery.getCharge(stack), (long) needed)); battery.dischargeBattery(stack, toDischarge); return toDischarge; } diff --git a/src/main/resources/assets/hbm/models/machines/battery.obj b/src/main/resources/assets/hbm/models/machines/battery.obj new file mode 100644 index 000000000..c37a7ffbc --- /dev/null +++ b/src/main/resources/assets/hbm/models/machines/battery.obj @@ -0,0 +1,1020 @@ +# Blender v2.79 (sub 0) OBJ File: 'battery.blend' +# www.blender.org +o Battery +v 0.687500 1.875000 -0.875000 +v 0.875000 1.875000 -0.687500 +v 0.000000 1.875000 -0.187500 +v -0.875000 1.875000 -0.187500 +v 0.875000 0.125000 -0.187500 +v 0.875000 1.875000 -0.187500 +v 0.687500 1.875000 0.875000 +v 0.875000 1.875000 0.687500 +v 0.875000 0.125000 0.687500 +v 0.687500 0.125000 0.875000 +v 0.000000 1.875000 0.687500 +v 0.187500 1.875000 0.875000 +v 0.875000 1.875000 0.187500 +v 0.687500 1.875000 0.000000 +v 0.687500 0.125000 0.000000 +v 0.875000 0.125000 0.187500 +v 0.187500 0.125000 0.875000 +v 0.000000 0.125000 0.687500 +v 0.000000 0.125000 0.187500 +v 0.187500 0.125000 0.000000 +v 0.187500 1.875000 0.000000 +v 0.000000 1.875000 0.187500 +v 0.687500 0.125000 -0.875000 +v 0.875000 0.125000 -0.687500 +v -0.187500 1.875000 -0.875000 +v 0.000000 0.125000 -0.187500 +v 0.000000 0.125000 -0.687500 +v 0.187500 0.125000 -0.875000 +v 0.187500 1.875000 -0.875000 +v 0.000000 1.875000 -0.687500 +v -0.187500 1.875000 0.875000 +v -0.187500 0.125000 0.875000 +v -0.875000 1.875000 0.687500 +v -0.687500 1.875000 0.875000 +v -0.187500 1.875000 0.000000 +v -0.187500 0.125000 0.000000 +v -0.687500 0.125000 0.875000 +v -0.875000 0.125000 0.687500 +v -0.875000 0.125000 0.187500 +v -0.687500 0.125000 0.000000 +v -0.687500 1.875000 0.000000 +v -0.875000 1.875000 0.187500 +v -0.187500 0.125000 -0.875000 +v -0.875000 0.125000 -0.187500 +v -0.875000 0.125000 -0.687500 +v -0.687500 0.125000 -0.875000 +v -0.687500 1.875000 -0.875000 +v -0.875000 1.875000 -0.687500 +v -0.937500 1.625000 0.687500 +v -0.687500 1.625000 0.937500 +v 0.687500 1.625000 0.937500 +v 0.937500 1.625000 0.687500 +v -0.687500 1.625000 -0.937500 +v -0.937500 1.625000 -0.687500 +v 0.937500 1.625000 -0.687500 +v 0.687500 1.625000 -0.937500 +v 0.687500 1.375000 -0.937500 +v 0.937500 1.375000 -0.687500 +v -0.937500 1.375000 -0.687500 +v -0.687500 1.375000 -0.937500 +v 0.937500 1.375000 0.687500 +v 0.687500 1.375000 0.937500 +v -0.687500 1.375000 0.937500 +v -0.937500 1.375000 0.687500 +v -0.937500 0.625000 0.687500 +v -0.687500 0.625000 0.937500 +v 0.687500 0.625000 0.937500 +v 0.937500 0.625000 0.687500 +v -0.687500 0.625000 -0.937500 +v -0.937500 0.625000 -0.687500 +v 0.937500 0.625000 -0.687500 +v 0.687500 0.625000 -0.937500 +v 0.687500 0.375000 -0.937500 +v 0.937500 0.375000 -0.687500 +v -0.937500 0.375000 -0.687500 +v -0.687500 0.375000 -0.937500 +v 0.937500 0.375000 0.687500 +v 0.687500 0.375000 0.937500 +v -0.687500 0.375000 0.937500 +v -0.937500 0.375000 0.687500 +vt 0.597561 0.617647 +vt 0.731707 0.661765 +vt 0.695122 0.823529 +vt 0.560976 0.617647 +vt 0.597561 0.205882 +vt 0.597561 0.617647 +vt 1.000000 0.205882 +vt 0.963415 0.617647 +vt 0.963415 0.205882 +vt 0.731707 0.044118 +vt 0.695122 0.205882 +vt 0.560976 0.161765 +vt 0.695122 0.205882 +vt 0.560976 0.161765 +vt 0.597561 -0.000000 +vt 0.560976 0.205882 +vt 0.463415 0.617647 +vt 0.463415 0.205882 +vt 0.560976 0.617647 +vt 1.000000 0.617647 +vt 0.963415 0.205882 +vt 1.000000 0.205882 +vt 0.865854 0.617647 +vt 0.829268 0.205882 +vt 0.865854 0.205882 +vt 0.731707 0.617647 +vt 0.731707 0.205882 +vt 0.597561 0.205882 +vt 0.695122 0.205882 +vt 0.731707 0.617647 +vt 0.695122 0.617647 +vt 0.829268 0.617647 +vt 0.731707 0.205882 +vt 0.829268 0.205882 +vt 0.560976 0.205882 +vt 0.597561 0.617647 +vt 0.560976 0.617647 +vt 0.560976 0.161765 +vt 0.597561 0.000000 +vt 0.560976 0.661765 +vt 0.695122 0.617647 +vt 0.731707 0.779412 +vt 0.865854 0.617647 +vt 0.963415 0.205882 +vt 0.963415 0.617647 +vt 0.865854 0.617647 +vt 0.865854 0.205882 +vt 0.731707 0.617647 +vt 0.597561 0.205882 +vt 1.000000 0.205882 +vt 0.963415 0.617647 +vt 0.963415 0.205882 +vt 0.597561 0.617647 +vt 0.560976 0.205882 +vt 0.597561 0.205882 +vt 0.463415 0.617647 +vt 0.463415 0.205882 +vt 0.560976 0.661765 +vt 0.731707 0.779412 +vt 1.000000 0.617647 +vt 1.000000 0.205882 +vt 0.829268 0.205882 +vt 0.865854 0.205882 +vt 0.695122 0.205882 +vt 0.731707 0.617647 +vt 0.695122 0.617647 +vt 0.560976 0.044118 +vt 0.695122 -0.000000 +vt 0.731707 0.161765 +vt 0.865854 0.617647 +vt 0.829268 0.617647 +vt 0.731707 0.205882 +vt 0.829268 0.205882 +vt 0.731707 0.779412 +vt 0.597561 0.823529 +vt 0.560976 0.661765 +vt 0.865854 0.205882 +vt 0.463415 0.882353 +vt 0.414634 0.558824 +vt 0.463415 0.558824 +vt 0.097561 0.500000 +vt 0.365854 0.941176 +vt 0.414634 0.058824 +vt 0.365854 0.441176 +vt 0.048780 0.382353 +vt 0.097561 1.000000 +vt 0.365854 1.000000 +vt 0.097561 0.441176 +vt 0.414634 0.500000 +vt 0.365854 0.500000 +vt 0.414634 0.941176 +vt 0.463415 0.941176 +vt 0.048780 0.941176 +vt 0.097561 0.941176 +vt 0.048780 0.500000 +vt 0.000000 0.558824 +vt 0.000000 0.500000 +vt 0.048780 0.882353 +vt 0.000000 0.882353 +vt 0.463415 0.882353 +vt 0.414634 0.558824 +vt 0.463415 0.558824 +vt 0.097561 0.500000 +vt 0.365854 0.941176 +vt 0.414634 0.058824 +vt 0.365854 0.441176 +vt 0.048780 0.382353 +vt 0.097561 1.000000 +vt 0.365854 1.000000 +vt 0.097561 0.441176 +vt 0.414634 0.500000 +vt 0.365854 0.500000 +vt 0.414634 0.941176 +vt 0.463415 0.941176 +vt 0.048780 0.941176 +vt 0.097561 0.941176 +vt 0.048780 0.500000 +vt 0.000000 0.558824 +vt 0.000000 0.500000 +vt 0.048780 0.882353 +vt 0.000000 0.882353 +vt 0.597561 0.823529 +vt 0.560976 0.779412 +vt 0.560976 0.661765 +vt 0.695122 0.617647 +vt 0.731707 0.779412 +vt 0.560976 0.205882 +vt 1.000000 0.617647 +vt 0.560976 0.044118 +vt 0.597561 -0.000000 +vt 0.695122 -0.000000 +vt 0.731707 0.161765 +vt 0.695122 -0.000000 +vt 0.731707 0.044118 +vt 0.731707 0.161765 +vt 0.560976 0.044118 +vt 0.963415 0.617647 +vt 0.829268 0.617647 +vt 0.695122 0.000000 +vt 0.731707 0.044118 +vt 0.731707 0.161765 +vt 0.560976 0.044118 +vt 0.695122 0.823529 +vt 0.597561 0.823529 +vt 0.560976 0.779412 +vt 0.731707 0.661765 +vt 1.000000 0.617647 +vt 0.560976 0.617647 +vt 0.695122 0.823529 +vt 0.597561 0.823529 +vt 0.560976 0.779412 +vt 0.731707 0.661765 +vt 0.829268 0.617647 +vt 0.731707 0.205882 +vt 0.560976 0.161765 +vt 0.597561 -0.000000 +vt 0.731707 0.044118 +vt 0.731707 0.661765 +vt 0.695122 0.823529 +vt 0.560976 0.779412 +vt 0.414634 0.882353 +vt 0.048780 0.558824 +vt 0.048780 0.058824 +vt 0.097561 -0.000000 +vt 0.365854 -0.000000 +vt 0.414634 0.382353 +vt 0.414634 0.441176 +vt 0.048780 1.000000 +vt 0.414634 0.882353 +vt 0.048780 0.558824 +vt 0.048780 0.058824 +vt 0.097561 -0.000000 +vt 0.365854 -0.000000 +vt 0.414634 0.382353 +vt 0.414634 0.441176 +vt 0.048780 1.000000 +vn 0.0000 1.0000 0.0000 +vn 0.7071 0.0000 0.7071 +vn -0.7071 0.0000 0.7071 +vn 0.0000 -1.0000 0.0000 +vn 0.0000 0.0000 1.0000 +vn -0.7071 0.0000 -0.7071 +vn 0.7071 0.0000 -0.7071 +vn 1.0000 0.0000 0.0000 +vn 0.0000 0.0000 -1.0000 +vn -1.0000 0.0000 0.0000 +s off +f 8/1/1 14/2/1 22/3/1 +f 35/4/2 26/5/2 3/6/2 +f 20/7/3 3/8/3 26/9/3 +f 20/10/4 16/11/4 10/12/4 +f 24/13/4 15/14/4 26/15/4 +f 10/16/5 12/17/5 17/18/5 +f 10/16/2 8/1/2 7/19/2 +f 12/20/3 18/21/3 17/22/3 +f 22/23/6 20/24/6 19/25/6 +f 14/26/7 16/11/7 15/27/7 +f 16/11/8 8/1/8 9/28/8 +f 27/29/7 25/30/7 30/31/7 +f 29/32/9 23/33/9 28/34/9 +f 15/35/2 6/36/2 14/37/2 +f 27/29/4 36/38/4 44/39/4 +f 14/40/1 2/41/1 29/42/1 +f 42/43/10 38/44/10 33/45/10 +f 30/46/6 28/34/6 27/47/6 +f 1/48/7 24/13/7 23/33/7 +f 24/13/8 6/36/8 5/49/8 +f 40/50/3 4/51/3 44/52/3 +f 11/53/2 32/54/2 18/55/2 +f 32/54/5 34/56/5 37/57/5 +f 35/58/1 30/31/1 47/59/1 +f 34/60/3 38/44/3 37/61/3 +f 42/43/6 40/62/6 39/63/6 +f 19/64/7 35/65/7 22/66/7 +f 37/67/4 39/68/4 36/69/4 +f 48/70/10 44/52/10 4/51/10 +f 47/71/9 43/72/9 46/73/9 +f 41/74/1 33/75/1 31/76/1 +f 48/70/6 46/73/6 45/77/6 +f 60/78/9 56/79/9 57/80/9 +f 52/81/1 56/79/1 54/82/1 +f 60/83/4 58/84/4 62/85/4 +f 64/86/10 54/82/10 59/87/10 +f 58/84/8 52/81/8 61/88/8 +f 58/84/7 56/89/7 55/90/7 +f 54/91/6 60/78/6 59/92/6 +f 64/86/3 50/93/3 49/94/3 +f 52/95/2 62/96/2 61/97/2 +f 62/96/5 50/98/5 63/99/5 +f 76/100/9 72/101/9 73/102/9 +f 68/103/1 72/101/1 70/104/1 +f 76/105/4 74/106/4 78/107/4 +f 80/108/10 70/104/10 75/109/10 +f 74/106/8 68/103/8 77/110/8 +f 74/106/7 72/111/7 71/112/7 +f 70/113/6 76/100/6 75/114/6 +f 80/108/3 66/115/3 65/116/3 +f 68/117/2 78/118/2 77/119/2 +f 78/118/5 66/120/5 79/121/5 +f 22/3/1 11/122/1 12/123/1 +f 12/123/1 7/124/1 8/1/1 +f 8/1/1 13/125/1 14/2/1 +f 14/2/1 21/126/1 22/3/1 +f 22/3/1 12/123/1 8/1/1 +f 35/4/2 36/127/2 26/5/2 +f 20/7/3 21/128/3 3/8/3 +f 10/12/4 17/129/4 18/130/4 +f 18/130/4 19/131/4 20/10/4 +f 20/10/4 15/132/4 16/11/4 +f 16/11/4 9/28/4 10/12/4 +f 10/12/4 18/130/4 20/10/4 +f 26/15/4 27/133/4 28/134/4 +f 28/134/4 23/135/4 24/13/4 +f 24/13/4 5/49/4 15/14/4 +f 15/14/4 20/136/4 26/15/4 +f 26/15/4 28/134/4 24/13/4 +f 10/16/5 7/19/5 12/17/5 +f 10/16/2 9/28/2 8/1/2 +f 12/20/3 11/137/3 18/21/3 +f 22/23/6 21/138/6 20/24/6 +f 14/26/7 13/125/7 16/11/7 +f 16/11/8 13/125/8 8/1/8 +f 27/29/7 43/72/7 25/30/7 +f 29/32/9 1/48/9 23/33/9 +f 15/35/2 5/49/2 6/36/2 +f 44/39/4 45/139/4 46/140/4 +f 46/140/4 43/141/4 27/29/4 +f 27/29/4 26/5/4 36/38/4 +f 36/38/4 40/142/4 44/39/4 +f 44/39/4 46/140/4 27/29/4 +f 29/42/1 30/143/1 3/144/1 +f 3/144/1 21/145/1 14/40/1 +f 14/40/1 6/36/1 2/41/1 +f 2/41/1 1/146/1 29/42/1 +f 29/42/1 3/144/1 14/40/1 +f 42/43/10 39/63/10 38/44/10 +f 30/46/6 29/32/6 28/34/6 +f 1/48/7 2/41/7 24/13/7 +f 24/13/8 2/41/8 6/36/8 +f 40/50/3 41/147/3 4/51/3 +f 11/53/2 31/148/2 32/54/2 +f 32/54/5 31/148/5 34/56/5 +f 47/59/1 48/149/1 4/150/1 +f 4/150/1 41/151/1 35/58/1 +f 35/58/1 3/6/1 30/31/1 +f 30/31/1 25/152/1 47/59/1 +f 47/59/1 4/150/1 35/58/1 +f 34/60/3 33/45/3 38/44/3 +f 42/43/6 41/153/6 40/62/6 +f 19/64/7 36/154/7 35/65/7 +f 36/69/4 19/64/4 18/55/4 +f 18/55/4 32/155/4 37/67/4 +f 37/67/4 38/156/4 39/68/4 +f 39/68/4 40/157/4 36/69/4 +f 36/69/4 18/55/4 37/67/4 +f 48/70/10 45/77/10 44/52/10 +f 47/71/9 25/30/9 43/72/9 +f 31/76/1 11/53/1 22/66/1 +f 22/66/1 35/158/1 41/74/1 +f 41/74/1 42/159/1 33/75/1 +f 33/75/1 34/160/1 31/76/1 +f 31/76/1 22/66/1 41/74/1 +f 48/70/6 47/71/6 46/73/6 +f 60/78/9 53/161/9 56/79/9 +f 54/82/1 49/94/1 50/98/1 +f 50/98/1 51/162/1 52/81/1 +f 52/81/1 55/90/1 56/79/1 +f 56/79/1 53/161/1 54/82/1 +f 54/82/1 50/98/1 52/81/1 +f 62/85/4 63/163/4 64/164/4 +f 64/164/4 59/165/4 60/83/4 +f 60/83/4 57/166/4 58/84/4 +f 58/84/4 61/88/4 62/85/4 +f 62/85/4 64/164/4 60/83/4 +f 64/86/10 49/94/10 54/82/10 +f 58/84/8 55/90/8 52/81/8 +f 58/84/7 57/167/7 56/89/7 +f 54/91/6 53/161/6 60/78/6 +f 64/86/3 63/168/3 50/93/3 +f 52/95/2 51/162/2 62/96/2 +f 62/96/5 51/162/5 50/98/5 +f 76/100/9 69/169/9 72/101/9 +f 70/104/1 65/116/1 66/120/1 +f 66/120/1 67/170/1 68/103/1 +f 68/103/1 71/112/1 72/101/1 +f 72/101/1 69/169/1 70/104/1 +f 70/104/1 66/120/1 68/103/1 +f 78/107/4 79/171/4 80/172/4 +f 80/172/4 75/173/4 76/105/4 +f 76/105/4 73/174/4 74/106/4 +f 74/106/4 77/110/4 78/107/4 +f 78/107/4 80/172/4 76/105/4 +f 80/108/10 65/116/10 70/104/10 +f 74/106/8 71/112/8 68/103/8 +f 74/106/7 73/175/7 72/111/7 +f 70/113/6 69/169/6 76/100/6 +f 80/108/3 79/176/3 66/115/3 +f 68/117/2 67/170/2 78/118/2 +f 78/118/5 67/170/5 66/120/5 +o Socket +v -1.000000 0.000000 1.000000 +v 1.000000 0.000000 1.000000 +v -1.000000 0.000000 -1.000000 +v 1.000000 0.000000 -1.000000 +v -0.875000 0.250000 0.875000 +v 0.875000 0.250000 0.875000 +v -0.875000 0.250000 -0.875000 +v 0.875000 0.250000 -0.875000 +v -1.000000 0.250000 -1.000000 +v -1.000000 0.250000 1.000000 +v 1.000000 0.250000 1.000000 +v 1.000000 0.250000 -1.000000 +v 1.000000 0.750000 -0.250000 +v 1.000000 0.250000 -0.250000 +v 1.000000 0.750000 -0.750000 +v 1.000000 0.250000 -0.750000 +v 0.875000 0.750000 -0.750000 +v 0.875000 0.750000 -0.250000 +v 0.875000 0.250000 -0.250000 +v 0.875000 0.250000 -0.750000 +v -0.875000 0.125000 -0.875000 +v -0.875000 0.125000 0.875000 +v 0.875000 0.125000 0.875000 +v 0.875000 0.125000 -0.875000 +v 1.000000 0.750000 0.750000 +v 1.000000 0.250000 0.750000 +v 1.000000 0.750000 0.250000 +v 1.000000 0.250000 0.250000 +v 0.875000 0.750000 0.250000 +v 0.875000 0.750000 0.750000 +v 0.875000 0.250000 0.750000 +v 0.875000 0.250000 0.250000 +v -1.000000 0.750000 0.250000 +v -1.000000 0.250000 0.250000 +v -1.000000 0.750000 0.750000 +v -1.000000 0.250000 0.750000 +v -0.875000 0.750000 0.750000 +v -0.875000 0.750000 0.250000 +v -0.875000 0.250000 0.250000 +v -0.875000 0.250000 0.750000 +v -1.000000 0.750000 -0.750000 +v -1.000000 0.250000 -0.750000 +v -1.000000 0.750000 -0.250000 +v -1.000000 0.250000 -0.250000 +v -0.875000 0.750000 -0.250000 +v -0.875000 0.750000 -0.750000 +v -0.875000 0.250000 -0.750000 +v -0.875000 0.250000 -0.250000 +v -0.250000 0.750000 -1.000000 +v -0.250000 0.250000 -1.000000 +v -0.750000 0.750000 -1.000000 +v -0.750000 0.250000 -1.000000 +v -0.750000 0.750000 -0.875000 +v -0.250000 0.750000 -0.875000 +v -0.250000 0.250000 -0.875000 +v -0.750000 0.250000 -0.875000 +v 0.750000 0.750000 -1.000000 +v 0.750000 0.250000 -1.000000 +v 0.250000 0.750000 -1.000000 +v 0.250000 0.250000 -1.000000 +v 0.250000 0.750000 -0.875000 +v 0.750000 0.750000 -0.875000 +v 0.750000 0.250000 -0.875000 +v 0.250000 0.250000 -0.875000 +v 0.250000 0.750000 1.000000 +v 0.250000 0.250000 1.000000 +v 0.750000 0.750000 1.000000 +v 0.750000 0.250000 1.000000 +v 0.750000 0.750000 0.875000 +v 0.250000 0.750000 0.875000 +v 0.250000 0.250000 0.875000 +v 0.750000 0.250000 0.875000 +v -0.750000 0.750000 1.000000 +v -0.750000 0.250000 1.000000 +v -0.250000 0.750000 1.000000 +v -0.250000 0.250000 1.000000 +v -0.250000 0.750000 0.875000 +v -0.750000 0.750000 0.875000 +v -0.750000 0.250000 0.875000 +v -0.250000 0.250000 0.875000 +v 0.562500 1.875000 -0.562500 +v 0.312500 1.875000 -0.562500 +v 0.562500 1.875000 -0.312500 +v 0.312500 1.875000 -0.312500 +v -0.843750 1.937500 0.500000 +v 0.312500 1.875000 0.562500 +v 0.562500 1.875000 0.562500 +v 0.312500 1.875000 0.312500 +v 0.562500 1.875000 0.312500 +v 0.312500 2.000000 0.312500 +v 0.312500 2.000000 0.562500 +v 0.562500 2.000000 0.562500 +v 0.562500 2.000000 0.312500 +v 0.312500 2.000000 -0.562500 +v 0.312500 2.000000 -0.312500 +v 0.562500 2.000000 -0.312500 +v 0.562500 2.000000 -0.562500 +v -0.312500 1.875000 -0.562500 +v -0.562500 1.875000 -0.562500 +v -0.312500 1.875000 -0.312500 +v -0.562500 1.875000 -0.312500 +v -0.562500 1.875000 0.562500 +v -0.312500 1.875000 0.562500 +v -0.562500 1.875000 0.312500 +v -0.312500 1.875000 0.312500 +v -0.562500 2.000000 0.312500 +v -0.562500 2.000000 0.562500 +v -0.312500 2.000000 0.562500 +v -0.312500 2.000000 0.312500 +v -0.562500 2.000000 -0.562500 +v -0.562500 2.000000 -0.312500 +v -0.312500 2.000000 -0.312500 +v -0.312500 2.000000 -0.562500 +v 0.843750 1.937500 0.500000 +v -0.843750 1.937500 0.375000 +v 0.843750 1.937500 0.375000 +v 0.968750 1.812500 0.500000 +v 0.968750 1.812500 0.375000 +v 0.968750 0.750000 0.500000 +v 0.968750 0.750000 0.375000 +v -0.968750 1.811500 0.500000 +v -0.968750 1.811500 0.375000 +v -0.968750 0.749000 0.500000 +v -0.968750 0.749000 0.375000 +v -0.843750 1.937500 -0.375000 +v 0.843750 1.937500 -0.375000 +v -0.843750 1.937500 -0.500000 +v 0.843750 1.937500 -0.500000 +v 0.968750 1.812500 -0.375000 +v 0.968750 1.812500 -0.500000 +v 0.968750 0.750000 -0.375000 +v 0.968750 0.750000 -0.500000 +v -0.968750 1.811500 -0.375000 +v -0.968750 1.811500 -0.500000 +v -0.968750 0.749000 -0.375000 +v -0.968750 0.749000 -0.500000 +v -0.968750 0.749000 -0.500000 +v -0.968750 0.749000 -0.375000 +v -0.968750 1.811500 -0.500000 +v -0.968750 1.811500 -0.375000 +v 0.968750 0.750000 -0.500000 +v 0.968750 0.750000 -0.375000 +v 0.968750 1.812500 -0.500000 +v 0.968750 1.812500 -0.375000 +v 0.843750 1.937500 -0.500000 +v -0.843750 1.937500 -0.500000 +v 0.843750 1.937500 -0.375000 +v -0.843750 1.937500 -0.375000 +v -0.968750 0.749000 0.375000 +v -0.968750 0.749000 0.500000 +v -0.968750 1.811500 0.375000 +v -0.968750 1.811500 0.500000 +v 0.968750 0.750000 0.375000 +v 0.968750 0.750000 0.500000 +v 0.968750 1.812500 0.375000 +v 0.968750 1.812500 0.500000 +v 0.843750 1.937500 0.375000 +v -0.843750 1.937500 0.375000 +v 0.843750 1.937500 0.500000 +v -0.843750 1.937500 0.500000 +vt 0.486486 0.055556 +vt 0.054054 0.500000 +vt 0.054054 0.055556 +vt 0.945946 -0.000000 +vt 0.567568 0.027778 +vt 0.567568 -0.000000 +vt 0.540541 0.500000 +vt 0.486486 0.500000 +vt 0.000000 0.055556 +vt 0.054054 0.555556 +vt 0.486486 0.000000 +vt 0.459459 0.972222 +vt 0.054054 1.000000 +vt 0.081081 0.972222 +vt 0.081081 0.583333 +vt 0.486486 0.555556 +vt 0.459459 0.583333 +vt 0.486486 1.000000 +vt 0.594595 0.444444 +vt 0.702703 0.555556 +vt 0.594595 0.555556 +vt 0.702703 0.583333 +vt 0.594595 0.694444 +vt 0.594595 0.583333 +vt 0.945946 0.416667 +vt 0.567568 0.416667 +vt 0.810811 0.555556 +vt 0.486486 0.583333 +vt 0.486486 0.555556 +vt 0.567568 0.444444 +vt 0.945946 0.444444 +vt 0.972973 0.416667 +vt 0.945946 0.027778 +vt 0.972973 0.027778 +vt 0.540541 0.027778 +vt 0.540541 0.416667 +vt 0.594595 0.444444 +vt 0.702703 0.555556 +vt 0.594595 0.555556 +vt 0.702703 0.583333 +vt 0.594595 0.694444 +vt 0.594595 0.583333 +vt 0.810811 0.555556 +vt 0.486486 0.583333 +vt 0.486486 0.555556 +vt 0.594595 0.444444 +vt 0.702703 0.555556 +vt 0.594595 0.555556 +vt 0.702703 0.583333 +vt 0.594595 0.694444 +vt 0.594595 0.583333 +vt 0.810811 0.555556 +vt 0.486486 0.583333 +vt 0.486486 0.555556 +vt 0.594595 0.444444 +vt 0.702703 0.555556 +vt 0.594595 0.555556 +vt 0.702703 0.583333 +vt 0.594595 0.694444 +vt 0.594595 0.583333 +vt 0.810811 0.555556 +vt 0.486486 0.583333 +vt 0.486486 0.555556 +vt 0.594595 0.444444 +vt 0.702703 0.555556 +vt 0.594595 0.555556 +vt 0.702703 0.583333 +vt 0.594595 0.694444 +vt 0.594595 0.583333 +vt 0.810811 0.555556 +vt 0.486486 0.583333 +vt 0.486486 0.555556 +vt 0.594595 0.444444 +vt 0.702703 0.555556 +vt 0.594595 0.555556 +vt 0.702703 0.583333 +vt 0.594595 0.694444 +vt 0.594595 0.583333 +vt 0.810811 0.555556 +vt 0.486486 0.583333 +vt 0.486486 0.555556 +vt 0.594595 0.444444 +vt 0.702703 0.555556 +vt 0.594595 0.555556 +vt 0.702703 0.583333 +vt 0.594595 0.694444 +vt 0.594595 0.583333 +vt 0.810811 0.555556 +vt 0.486486 0.583333 +vt 0.486486 0.555556 +vt 0.594595 0.444444 +vt 0.702703 0.555556 +vt 0.594595 0.555556 +vt 0.702703 0.583333 +vt 0.594595 0.694444 +vt 0.594595 0.583333 +vt 0.810811 0.555556 +vt 0.486486 0.583333 +vt 0.486486 0.555556 +vt 0.918919 0.500000 +vt 0.864865 0.527778 +vt 0.864865 0.500000 +vt 0.810811 0.527778 +vt 0.864865 0.583333 +vt 0.810811 0.583333 +vt 0.810811 0.527778 +vt 0.864865 0.583333 +vt 0.810811 0.583333 +vt 0.918919 0.500000 +vt 0.864865 0.527778 +vt 0.864865 0.500000 +vt 0.810811 0.500000 +vt 0.756757 0.527778 +vt 0.756757 0.500000 +vt 0.972973 0.500000 +vt 0.918919 0.527778 +vt 0.810811 0.500000 +vt 0.756757 0.527778 +vt 0.756757 0.500000 +vt 0.972973 0.500000 +vt 0.918919 0.527778 +vt 0.918919 0.500000 +vt 0.864865 0.527778 +vt 0.864865 0.500000 +vt 0.810811 0.527778 +vt 0.864865 0.583333 +vt 0.810811 0.583333 +vt 0.810811 0.527778 +vt 0.864865 0.583333 +vt 0.810811 0.583333 +vt 0.918919 0.500000 +vt 0.864865 0.527778 +vt 0.864865 0.500000 +vt 0.810811 0.500000 +vt 0.756757 0.527778 +vt 0.756757 0.500000 +vt 0.972973 0.500000 +vt 0.918919 0.527778 +vt 0.810811 0.500000 +vt 0.756757 0.527778 +vt 0.756757 0.500000 +vt 0.972973 0.500000 +vt 0.918919 0.527778 +vt 0.972973 0.263889 +vt 1.000000 0.638889 +vt 0.972973 0.638889 +vt 1.000000 0.236111 +vt 1.000000 0.263889 +vt 0.972973 0.236111 +vt 1.000000 0.000000 +vt 0.972973 0.666667 +vt 1.000000 0.666667 +vt 0.972973 0.902778 +vt 0.972973 0.263889 +vt 1.000000 0.638889 +vt 0.972973 0.638889 +vt 1.000000 0.236111 +vt 1.000000 0.263889 +vt 0.972973 0.236111 +vt 1.000000 0.000000 +vt 0.972973 0.666667 +vt 1.000000 0.666667 +vt 0.972973 0.902778 +vt 0.810811 0.444444 +vt 0.864865 0.444444 +vt 0.810811 0.444444 +vt 0.864865 0.444444 +vt 0.864865 0.444444 +vt 0.864865 0.444444 +vt 0.972973 0.902778 +vt 1.000000 0.666667 +vt 0.972973 0.666667 +vt 1.000000 0.638889 +vt 0.972973 0.638889 +vt 1.000000 0.000000 +vt 0.972973 0.236111 +vt 1.000000 0.236111 +vt 0.972973 0.263889 +vt 1.000000 0.263889 +vt 0.972973 0.902778 +vt 1.000000 0.666667 +vt 0.972973 0.666667 +vt 1.000000 0.638889 +vt 0.972973 0.638889 +vt 1.000000 0.000000 +vt 0.972973 0.236111 +vt 1.000000 0.236111 +vt 0.972973 0.263889 +vt 1.000000 0.263889 +vt 0.540541 0.055556 +vt 0.000000 0.500000 +vt 0.054054 0.000000 +vt 0.702703 0.444444 +vt 0.702703 0.694444 +vt 0.810811 0.583333 +vt 0.702703 0.444444 +vt 0.702703 0.694444 +vt 0.810811 0.583333 +vt 0.702703 0.444444 +vt 0.702703 0.694444 +vt 0.810811 0.583333 +vt 0.702703 0.444444 +vt 0.702703 0.694444 +vt 0.810811 0.583333 +vt 0.702703 0.444444 +vt 0.702703 0.694444 +vt 0.810811 0.583333 +vt 0.702703 0.444444 +vt 0.702703 0.694444 +vt 0.810811 0.583333 +vt 0.702703 0.444444 +vt 0.702703 0.694444 +vt 0.810811 0.583333 +vt 0.702703 0.444444 +vt 0.702703 0.694444 +vt 0.810811 0.583333 +vt 0.972973 0.527778 +vt 0.972973 0.527778 +vt 0.972973 0.527778 +vt 0.972973 0.527778 +vt 0.972973 0.000000 +vt 1.000000 0.902778 +vt 0.972973 0.000000 +vt 1.000000 0.902778 +vt 0.810811 0.444444 +vt 0.810811 0.444444 +vt 1.000000 0.902778 +vt 0.972973 0.000000 +vt 1.000000 0.902778 +vt 0.972973 0.000000 +vn 0.0000 -1.0000 0.0000 +vn -1.0000 0.0000 0.0000 +vn 0.0000 0.0000 -1.0000 +vn 0.0000 0.0000 1.0000 +vn 1.0000 0.0000 0.0000 +vn 0.0000 1.0000 0.0000 +vn 0.7071 0.7071 0.0000 +vn -0.7099 0.7043 0.0000 +vn 0.7099 -0.7043 0.0000 +vn -0.7071 -0.7071 0.0000 +s off +f 83/177/11 82/178/11 81/179/11 +f 88/180/12 103/181/12 86/182/12 +f 83/177/13 92/183/13 84/184/13 +f 82/178/14 90/185/14 81/179/14 +f 84/184/15 91/186/15 82/178/15 +f 81/179/12 89/187/12 83/177/12 +f 87/188/16 90/189/16 85/190/16 +f 85/190/16 91/186/16 86/191/16 +f 86/191/16 92/192/16 88/193/16 +f 88/193/16 89/194/16 87/188/16 +f 94/195/15 95/196/15 93/197/15 +f 97/198/12 99/199/12 98/200/12 +f 103/181/16 101/201/16 102/202/16 +f 95/196/16 98/200/16 93/197/16 +f 96/203/13 97/198/13 95/196/13 +f 93/197/14 99/204/14 94/205/14 +f 85/206/15 101/201/15 87/207/15 +f 87/208/14 104/209/14 88/210/14 +f 86/211/13 102/202/13 85/212/13 +f 106/213/15 107/214/15 105/215/15 +f 109/216/12 111/217/12 110/218/12 +f 107/214/16 110/218/16 105/215/16 +f 108/219/13 109/216/13 107/214/13 +f 105/215/14 111/220/14 106/221/14 +f 114/222/12 115/223/12 113/224/12 +f 117/225/15 119/226/15 118/227/15 +f 115/223/16 118/227/16 113/224/16 +f 116/228/14 117/225/14 115/223/14 +f 113/224/13 119/229/13 114/230/13 +f 122/231/12 123/232/12 121/233/12 +f 125/234/15 127/235/15 126/236/15 +f 123/232/16 126/236/16 121/233/16 +f 124/237/14 125/234/14 123/232/14 +f 121/233/13 127/238/13 122/239/13 +f 130/240/13 131/241/13 129/242/13 +f 133/243/14 135/244/14 134/245/14 +f 131/241/16 134/245/16 129/242/16 +f 132/246/12 133/243/12 131/241/12 +f 129/242/15 135/247/15 130/248/15 +f 138/249/13 139/250/13 137/251/13 +f 141/252/14 143/253/14 142/254/14 +f 139/250/16 142/254/16 137/251/16 +f 140/255/12 141/252/12 139/250/12 +f 137/251/15 143/256/15 138/257/15 +f 146/258/14 147/259/14 145/260/14 +f 149/261/13 151/262/13 150/263/13 +f 147/259/16 150/263/16 145/260/16 +f 148/264/15 149/261/15 147/259/15 +f 145/260/12 151/265/12 146/266/12 +f 154/267/14 155/268/14 153/269/14 +f 157/270/13 159/271/13 158/272/13 +f 155/268/16 158/272/16 153/269/16 +f 156/273/15 157/270/15 155/268/15 +f 153/269/12 159/274/12 154/275/12 +f 162/276/13 177/277/13 161/278/13 +f 176/279/16 174/280/16 175/281/16 +f 172/282/16 170/283/16 171/284/16 +f 168/285/13 173/286/13 169/287/13 +f 167/288/14 171/289/14 166/290/14 +f 169/287/15 172/282/15 167/288/15 +f 166/291/12 170/292/12 168/285/12 +f 163/293/14 175/294/14 164/295/14 +f 161/278/15 176/279/15 163/293/15 +f 164/296/12 174/297/12 162/276/12 +f 179/298/13 193/299/13 178/300/13 +f 192/301/16 190/302/16 191/303/16 +f 188/304/16 186/305/16 187/306/16 +f 184/307/13 189/308/13 185/309/13 +f 183/310/14 187/311/14 182/312/14 +f 185/309/15 188/304/15 183/310/15 +f 182/313/12 186/314/12 184/307/12 +f 180/315/14 191/316/14 181/317/14 +f 178/300/15 192/301/15 180/315/15 +f 181/318/12 190/319/12 179/298/12 +f 194/320/16 195/321/16 165/322/16 +f 194/320/17 198/323/17 196/324/17 +f 197/325/15 200/326/15 198/323/15 +f 195/321/18 201/327/18 165/322/18 +f 202/328/12 203/329/12 201/327/12 +f 206/330/16 207/331/16 205/332/16 +f 206/330/17 210/333/17 208/334/17 +f 209/335/15 212/336/15 210/333/15 +f 207/331/18 213/337/18 205/332/18 +f 214/338/12 215/339/12 213/337/12 +f 169/287/11 166/340/11 168/341/11 +f 185/309/11 182/342/11 184/343/11 +f 180/315/11 179/344/11 178/300/11 +f 163/293/11 162/345/11 161/278/11 +f 218/346/15 219/347/15 220/348/15 +f 220/348/19 226/349/19 228/350/19 +f 221/351/12 224/352/12 223/353/12 +f 223/353/20 227/354/20 225/355/20 +f 226/349/11 227/354/11 228/350/11 +f 230/356/15 231/357/15 232/358/15 +f 232/358/19 238/359/19 240/360/19 +f 233/361/12 236/362/12 235/363/12 +f 235/363/20 239/364/20 237/365/20 +f 238/359/11 239/364/11 240/360/11 +f 83/177/11 84/184/11 82/178/11 +f 88/180/12 104/209/12 103/181/12 +f 83/177/13 89/366/13 92/183/13 +f 82/178/14 91/367/14 90/185/14 +f 84/184/15 92/192/15 91/186/15 +f 81/179/12 90/368/12 89/187/12 +f 87/188/16 89/194/16 90/189/16 +f 85/190/16 90/189/16 91/186/16 +f 86/191/16 91/186/16 92/192/16 +f 88/193/16 92/192/16 89/194/16 +f 94/195/15 96/369/15 95/196/15 +f 97/198/12 100/370/12 99/199/12 +f 103/181/16 104/209/16 101/201/16 +f 95/196/16 97/198/16 98/200/16 +f 96/203/13 100/371/13 97/198/13 +f 93/197/14 98/200/14 99/204/14 +f 85/206/15 102/202/15 101/201/15 +f 87/208/14 101/201/14 104/209/14 +f 86/211/13 103/181/13 102/202/13 +f 106/213/15 108/372/15 107/214/15 +f 109/216/12 112/373/12 111/217/12 +f 107/214/16 109/216/16 110/218/16 +f 108/219/13 112/374/13 109/216/13 +f 105/215/14 110/218/14 111/220/14 +f 114/222/12 116/375/12 115/223/12 +f 117/225/15 120/376/15 119/226/15 +f 115/223/16 117/225/16 118/227/16 +f 116/228/14 120/377/14 117/225/14 +f 113/224/13 118/227/13 119/229/13 +f 122/231/12 124/378/12 123/232/12 +f 125/234/15 128/379/15 127/235/15 +f 123/232/16 125/234/16 126/236/16 +f 124/237/14 128/380/14 125/234/14 +f 121/233/13 126/236/13 127/238/13 +f 130/240/13 132/381/13 131/241/13 +f 133/243/14 136/382/14 135/244/14 +f 131/241/16 133/243/16 134/245/16 +f 132/246/12 136/383/12 133/243/12 +f 129/242/15 134/245/15 135/247/15 +f 138/249/13 140/384/13 139/250/13 +f 141/252/14 144/385/14 143/253/14 +f 139/250/16 141/252/16 142/254/16 +f 140/255/12 144/386/12 141/252/12 +f 137/251/15 142/254/15 143/256/15 +f 146/258/14 148/387/14 147/259/14 +f 149/261/13 152/388/13 151/262/13 +f 147/259/16 149/261/16 150/263/16 +f 148/264/15 152/389/15 149/261/15 +f 145/260/12 150/263/12 151/265/12 +f 154/267/14 156/390/14 155/268/14 +f 157/270/13 160/391/13 159/271/13 +f 155/268/16 157/270/16 158/272/16 +f 156/273/15 160/392/15 157/270/15 +f 153/269/12 158/272/12 159/274/12 +f 162/276/13 174/297/13 177/277/13 +f 176/279/16 177/277/16 174/280/16 +f 172/282/16 173/286/16 170/283/16 +f 168/285/13 170/292/13 173/286/13 +f 167/288/14 172/282/14 171/289/14 +f 169/287/15 173/286/15 172/282/15 +f 166/291/12 171/393/12 170/292/12 +f 163/293/14 176/279/14 175/294/14 +f 161/278/15 177/277/15 176/279/15 +f 164/296/12 175/394/12 174/297/12 +f 179/298/13 190/319/13 193/299/13 +f 192/301/16 193/299/16 190/302/16 +f 188/304/16 189/308/16 186/305/16 +f 184/307/13 186/314/13 189/308/13 +f 183/310/14 188/304/14 187/311/14 +f 185/309/15 189/308/15 188/304/15 +f 182/313/12 187/395/12 186/314/12 +f 180/315/14 192/301/14 191/316/14 +f 178/300/15 193/299/15 192/301/15 +f 181/318/12 191/396/12 190/319/12 +f 194/320/16 196/324/16 195/321/16 +f 194/320/17 197/325/17 198/323/17 +f 197/325/15 199/397/15 200/326/15 +f 195/321/18 202/328/18 201/327/18 +f 202/328/12 204/398/12 203/329/12 +f 206/330/16 208/334/16 207/331/16 +f 206/330/17 209/335/17 210/333/17 +f 209/335/15 211/399/15 212/336/15 +f 207/331/18 214/338/18 213/337/18 +f 214/338/12 216/400/12 215/339/12 +f 169/287/11 167/288/11 166/340/11 +f 185/309/11 183/310/11 182/342/11 +f 180/315/11 181/401/11 179/344/11 +f 163/293/11 164/402/11 162/345/11 +f 218/346/15 217/403/15 219/347/15 +f 220/348/19 219/347/19 226/349/19 +f 221/351/12 222/404/12 224/352/12 +f 223/353/20 224/352/20 227/354/20 +f 226/349/11 225/355/11 227/354/11 +f 230/356/15 229/405/15 231/357/15 +f 232/358/19 231/357/19 238/359/19 +f 233/361/12 234/406/12 236/362/12 +f 235/363/20 236/362/20 239/364/20 +f 238/359/11 237/365/11 239/364/11 diff --git a/src/main/resources/assets/hbm/textures/gui/storage/gui_battery_socket.png b/src/main/resources/assets/hbm/textures/gui/storage/gui_battery_socket.png new file mode 100644 index 0000000000000000000000000000000000000000..9a0371157299248c9a1ca8017ff013cb81e33bc3 GIT binary patch literal 3353 zcmcgvXH?Tm`ksUq5d;)4f|LtUF(^c75ik@fMj#*x(k_W&0qI3RS`ttY0a>~fDJne_ z3!q>ixC&SxDAfRhfYL8TI!V}{_n!a%?1$a6`)TLPJMYZ<&hyOs%*;6xYeg^>7L*bM z00`qx8(9MYgSs$);D?NpU&&R-@cJ9#&m*7~hPZqO0HIF2k-_=koVg*g>)?t^>tbKK zSKJNlBUn^+Qb$ohx`%dQmg~N*V`o<{WURNQdSYtDH<@062;(-sBD-4;Wbea~zX6g~2Z-+st(JBN zCX*-oD-_RBl9l6Zod@0b!$5nw=3xX??7Gyo;HvY_oKmNzrarORVb2La-Q5Pn8F>R_ zGcll~rl(ico~`A6^X7@!BK4v_#2HNLkP;kR+1%Wm-N)YT4x(w(^uQzf_WswUlk*cR zrVhawcQoi35F}Yiu`W{BpO+%09HNS33z2BA!+{A60Z0~3{OXrH=k3)@jjtW!!(6&D ze{B8i8*#>+G#F)d5+bs+?Y^t#?~Ktc5aA^T6ELcz4y!<3{pUIv3fsr4R~4ODw2S~{^|0o8JM z=GU2-nMe0cg^P@J;RN9bybBql$Ai>6C^MtOTH=;wrfh!NYH3FpUxw$WzlWz+rgNqx zyCU_;ysP(L;PAUSc=iYwSQd{W(0k=dKZfTqY0q+#E3l)D}tb1+ebzx&o zZ8$d#RRouy2~h&HWnSJ^+B>^nrl&FVU>tGah~|^y+alf4Z1NUY#37_=#-4XpC56u* z@=>j+Y=m9%xS{IzQ>5xrV+OrAw>u$dd1i1i6*Xmeuv}V`)_2?7*3vuFAk^|?>CQ}= z3i0DKOSPh}YruJOoLDdh;n^~QhhuZ}%l=y^jR;m#Dz3b6**-jA`nlKF=TByTR;h5! z=O1WSd~D4?;iVh>9z3s5oBKmj8J^Gb4&zswE_D)Ui!tzQ3Ljb9P?fcsW8SM)0H{BB z^v5EpMD1;+H#2VsO@dd1`<;1|K0I)APC~esm-2=!vtpyd7T)zkfHOPm;k(tAjkgG& zNV8(?)ff~2*Un3`n;Dh|Q{K)k20JNww3U0x`N}5XajQC0Pn;jQm|qq-O%5rsIQld$0|x3K z7df{*JR$kmk<}$R;3EMDW-E<_JaNq1L-B2+LZIb%rg^_b3A$&?c5wz8o@%Y**8i9x zMwHduC|I$q=I<=&&pjFH_vq21Bu)WUXOlTd6rzSi=~-=J7a+0Ck~?H9CFFMQ;vQM& zzOx9`>E(JMTm(h41ICN?q-JMjB|o<7pTnHhW-y_+rd_-@;7($_;_{jr8fiPH=$}p` zNwM1rFqGTk${Grvp;{@ zhEBxNTb$q$pFUcUDqc5`V62a=*#5}*T#?YkO>7FL`zOT8!$Al70sQoBOv$&!VK%*R z?L_xy=TG{8aiW<~MMI=Yee|x{%ZocK3?#pk;xzgat?Ax96^MXqPcLkTam{10U1LU$ zlT-p!|d6FfYTGg?PihwOINR&oH}*tgw2UPN=Mf}nH%Rr zD$yd!s%*-80eZqhzZ;c;Pl%5%VbM_r#`z;N?>T7Vo)70&0(;FLrjc1Wp#6UI6XjPwkGXgKYT++0WuDpYC*woP=8n#z;XnzyT=3ZNBn3j67Z^af#o2n-g)Nxz0xR{^6tWq*>Ei|M zcA|Sj`*t4&x+`;c-Kx3e?`b!}hi}ht)1aETKOD6$_&v3Nc3uszd{tK#7OHp2>bCh} z2_ITt&Npsl4U}RQl;ymnh2T_qrLs_djIOT7GJiwRd~b7V0ZW~yOlZ6g`bHp-d zF{O<>F}h#Z`7d61y4kgxrH!`7_$WGMLfp}O)x+Yu6I)kYt*`vnx%Ta(bFQS1qG*n_ z15bYDUHwJ{Fp`?jvaB(X^(ZDV1ffz8$|a~_Mu1^2w7!V|{c}CO2kuEWHa0BYcr|d~ z0B-Vh9L*3guB&cPux`3Zb~~uATd~(bxhSBtBA_AK`+W=~ zUpU{|+*&20+}YsvUH$!s1Y1jK2yxwUH4TkI&emF0y_gbmy&MgfxEpnzzj=B2 zc~NmOUDqIAL9{iN?VDAKP}kJ7tyAb69L%Zp8oJ)CashhWI!ZLxqo~A9S07#3zQI8! zq(%IGI3N@#SouSgA)NMa$K`WQ8Rxf%0Ut@8MjRa2I@;MO;h4j-{v2E%3?T}t9Tbul zmNvs1su76bcmQ-w0FYG#AW`hkjWb+$!N@TU?p~E z%!rF^KhJCEZ^!fRvti)BTD;U=3~@&R4X+V72mT-0uH9I_4DO$!w7>W%8pDbyW9&b) z)Oyjk-v2)QUvvErXuqcaTEt+&N&?wifcDwK@ckcoQrgI}+}sm_^%2Rq?^my0opfTT zHSg2+aCKGcjt1={SoKM?4rcEeWy+6Z>%aaV|HDS<<;d-w%oyFxJzDb%7H>>2sx%}; F{sUAA?~?!k literal 0 HcmV?d00001 diff --git a/src/main/resources/assets/hbm/textures/models/machines/battery_base.png b/src/main/resources/assets/hbm/textures/models/machines/battery_base.png new file mode 100644 index 0000000000000000000000000000000000000000..a0b8e6447cbff211b6d26c12bca70eea87a54f8e GIT binary patch literal 626 zcmV-&0*(ENP)^bf=-N`PzCkS3HL{rm=}U)5+>{HFCS50 zuSp&~gR^8>vnB4W8B zF9t<|XiMbm;;#$PmdJ`wBnZ1_?G%N(^ozDc9=Rj}V^`$1@?HY{YD|5ufZZ`NHh11u zWUM+B=i7Egilk*0mMC)NuDv%e{+RZ;RI7K};rW#Eo3=;(_sNAty8QRCF|uOY>xxvW z9Idvt$H)uO?LE!YOj>LS(rL;!V$lQ@StD-OLc}lHwM!mY3lc>#V`PZ~Y(=7oNS8}} zjpKOJijyqM@{vHZmOk_0SsMgJf}ltc*_lnr#IALi*agAFE(j)eK?GxDt;DW%c-96% zksv4%1Vw_NNDveWf+9gsBnXNGL6IOR5=3x6&|k@4iqp?*xbh1?EJQH7c+`X|zY?S* z#$M-s1LC?Nsy$-eIn~7rto*VoGRBce9vHh_JH;!p%LPj|X{&3CyeqMA*KSK>#dS99 z+8~08td-ccP9Rb<%9r9)bmiPZaMgRZ+ literal 0 HcmV?d00001 diff --git a/src/main/resources/assets/hbm/textures/models/machines/battery_lead.png b/src/main/resources/assets/hbm/textures/models/machines/battery_lead.png new file mode 100644 index 0000000000000000000000000000000000000000..2f3ab948329e7bdd678c98def127a794425155a6 GIT binary patch literal 1022 zcmVUTfYqko731wqs0I5rrwSPj} zH4_XB9m|xJqHdjwhj!=^XX%DStg4Na2)RSKa6bDIJH7MWS@$HQ-1*KvfAa2!@qOcg z)Amj~;qz4J`?oJ%71yasYkWqd(bUln8Db6Kt&m0#1W6c%^Uw6)L*Byr8IaBO&64dm zM%3Y=8x|c0kOl|L;j#IA{Zu*wax%Ru-gL9HY)HyGK8F&9p~u4H!RFLYr86MIo9oAK zX?I`Qcp2>OC;YXV>zkNN?=YK9Rvkl^)$wvZ3-6J-vPk_WqLZkEsPGyI(qQsjl;oAA z4&+_QIa63a_ZzGNBCGJ`+LPo+ZOS;ZYKXe7DO+pXJME;=Xo9-IX*CJQNT+ggASKCx zl%&i$(l+_NUudF=qDbi~z-mWQh=dRjLO?&Wc{E)V_^Ptjkt{?2=ytog-Es@_jBDxA*!CWtpyoHk>~qy15CQufxpa}L%bA@{$L=wbm#&ScwmEVsNL`Ec+KiD@v)QDI zc4Wjl^4;sNh<|x_`(bx!JzZrNf;4TiDbwAnE-M6C)s9^e%vyk~azQSFnI0oQ<>ZN^ zr)&nKt{uBP%vw0o1la~M)1`Fn=jI)`x3^cX1-UNOZXKyhwR^JBB?nTH97suWW27WG zM@o_dDM=2bB;DWNE7=jDs;se3HhFO|Zl}cxD!S=O6o|y%tc(0wAQ$;1K`!!3qFm&c zM7hW>338ENlH?-4YACBgy2vlda*<#EDU%|Px#07*qoM6N<$f*5+{ng9R* literal 0 HcmV?d00001 diff --git a/src/main/resources/assets/hbm/textures/models/machines/battery_lithium.png b/src/main/resources/assets/hbm/textures/models/machines/battery_lithium.png new file mode 100644 index 0000000000000000000000000000000000000000..1a93d3c7224369e7cc997f9827994192caff2b98 GIT binary patch literal 1042 zcmV+t1nv8YP)e#3fYwmLG>o{@#VaLbFpM;3*p0=e7m+7F$UnnF@lyMVG@uOk_z3bvwupY3j!^`S#Z9jEt^JC5V3-!Nrqp}Ur(lv4vJ*CQv@+w>IfvQ(3o~i9$n%clH z5anyhp7{-_=jc>cysuPl>RJVBe!u|Tk;wtP=p8olgR{=$wbs8NrKncSL@^O8f2Db0E!UPG)0=G z0;XzfOJ0MNrz?lZm8K~+o6TTj@fsv0c@0vYuBr!aHXAYJ0sA)_Z;@`j&%42Bi9K`{Lrlt5>uokgL@y z8u~r6E+4Ij%f~KlE0;fpG9Oy0=~{fi>M=E2?K*M@m_z=-Z0o2l>&x~u zm(T4x)W(~Q>%>zzM(N@e1=~iDF7tsX$3(Tg5oDLes!844+&H;zU)6#fGGn(&)9Dld zaCLSM0C@lN8vyY6`6=4vW0$sGWbEEPoVPxwE89wtLuc&PwO^gx*!k5{ly-hqE>5Xr z?AA$Lkn5H>>dr4)3v%sAhl2T?yhs@)-vI`=+4)80-yZfAm48?B7ibS3E}=lGy8r+H M07*qoM6N<$g7RSm2mk;8 literal 0 HcmV?d00001 diff --git a/src/main/resources/assets/hbm/textures/models/machines/battery_quantum.png b/src/main/resources/assets/hbm/textures/models/machines/battery_quantum.png new file mode 100644 index 0000000000000000000000000000000000000000..66e455f240feb38473954915a94c091c105e9e32 GIT binary patch literal 1049 zcmV+!1m^pRP)I+W*mV4@yVIuZ{= zQDmgzJkO`TByWIV#6GOo>uR&v)Z6Uj^Ra{FTOi{&R=j^SVh-{m4Y)n%S&HD6A*drcDrCA zM_N`=G zkc1GpeYk-ucpAB7;J(v4xP7?MelJdgq?9&b%ETb*9<`kXnPpj!rfJ1se!lxukKzoP zxUci`w$r0F1H(X3N*m7O_jP}1f!2}h^}6bE7TYh1qSu9Nf4N*%?3w+L>#D{Em>xCo z55K}NY@Jt`!kCUl>&X3&KayiV70R29MGG>TpW40!C7}VyuetyLczgcdsYkS}QCn<~ z33b((zF9&zC$0bdc`UKg>5oa6hw93MUyxL%t^fRaEU}&QNE0yo>X0>nZzSI!+p)c{ zOf4r7p?*03ScP*UZAkX`6#xLjIf4CeT5sEo?Hz1vE<7FLh72f**j|t}C+S`N6Kmv< zzRXl?FUYbiU&~{(Y`aV)_8>^z{bS!?W7}mav8Y$<+8&8jVx=HWF8n-Hm+iTsN-XLX zyS81X5{vqaUE3~GiA4?4w#!svQG>MYGL=}=AZ@!$B^EVE+b&ayMGexn%T!`fgS723 zmDtutG+S9%vaiu>+{aj TRi{;b00000NkvXXu0mjf?n3y= literal 0 HcmV?d00001 diff --git a/src/main/resources/assets/hbm/textures/models/machines/battery_redstone.png b/src/main/resources/assets/hbm/textures/models/machines/battery_redstone.png new file mode 100644 index 0000000000000000000000000000000000000000..e02f7a93711dd6f398bc59397150c85185789060 GIT binary patch literal 1149 zcmV-@1cLjCP)^1cxnF# z{~ht{#TK!pP7}SCTP#vZ>&8qEI_qXKYd$)YnUQ%Q&c|;*=H>0Yon?Lm z9HwXHDBq?6yPrOgL0o50$np)opVM(4GLRGi>7$O>*;!hxR^u}3yllJn_%U%`ZWcOCNuvIklxnp~l4SD43XX57w-H(0 z*}D3b9xN!EFJ~VtQ2tuEp%K*2juA!me&^6m#}Gj|b&O1v*PK7Ddub<8Nut7QP_z;w zQV|u!G6nLg-1PH^htqcI`>+4G20<2afBQXeqxGe~RxSlL030DDY z70HwM;^QWML=;2h;tlyuhM)o9_2N>j&T_d-RVmYIMKThX->#v44jeZqjv|U$MDg`c z6ZHng;;Yq`SXHo^NC0@Uv5H>}if?C4kOsj)MB~3&gCg$}ynM3;KrNZp63Ix3DDb)7 z#8E`?oi+ggjmz2aFrwH!ZN}^1r1{8(wL~&fh6N+Y65uYm=$N=ga7?LE5&?^eWbi=X z;Yx)JOq~aRDSk%O&5_q33`0be;+z7*1jqoGy6vGsFUlD%Rwb+^G6(`RDKPF6jQSTd z;g{1UmM8K6fbk)M(JaBRN1P%%;oY<67$yW`S%OmD!^6CX_qE>`^9hPRK`ukEvACrC zKCC8^J+7NimoSy{aL@OU&kzJY!DP;Z?_H6o`q3sPeUI$*3wd&NlU!r-V0|jr+g2-* z5tCFKEA#(Vf3z@Gk&hou#qD7j#!BOrm+aFSYb=qI_tm!xL_IAsnkEwv6P$;x1LuagT z%ZiQ-0(={P(*Uryx7Sshj#%NNJxDS|Bm(IJ0f589L*rso=g2{jnMPs~{0)oxip8S# z*p36yrA&T~WU$t?b#6S>?ZmyrTBAtoT$@J})jNeK!HsZj2AyVOf)h(|?LqC>?d056 zyS520U!o)wvm$T5@Xzx=mssc8&b8Cqbi^7SoWPZ1j6gqcXqJI&|;Y?FJ@geqDQF6L#!&f@lrRh)oi#`lH1^_W#=iV5FKX P00000NkvXXu0mjfJm)4Y literal 0 HcmV?d00001 diff --git a/src/main/resources/assets/hbm/textures/models/machines/battery_schrabidium.png b/src/main/resources/assets/hbm/textures/models/machines/battery_schrabidium.png new file mode 100644 index 0000000000000000000000000000000000000000..da4a3637ada88bb5d41879c0d846277d67f29668 GIT binary patch literal 1003 zcmV?Wz=*yjAE*#4Y2ukW*+4PjD=~N2zW5veE<*-{1as^pX@?JxWV z>mZTE?aj4Uks`GrqsY2R)OF3O(L6poPj>bWK-J)|9i(%lLpeAiD}p1kB4qZFw!!!P zLJQS=K3BR6uv(FnL_!D%A)v=>9W56nd|OznNR~tZ2!}(VT`(Gf5P~?4;ro7~N}1LY z2?$6W4AKVUF~Z?6MW!lP?b<+=#M6Esr~UrAZZJS&Hd8(htBG7Gj3IG4nP57ZtjXkU z6~SsEscQpk5-FyW2{0blHWsUiGznG{$+~Msf#Y#%@nO}g0#>iu84Lz%GMRa^4p>bj zAq2r_gvQksfTb!K6;cx4dOhW1v6{#@jzI{)Td#-4Y$jA6B~kUNZ7q@W`P}n;KcQs) zJ~~>>gOoJBtnzu=>cxfJzOnWJO1SfT(^~@>ut>oTGLLNgeC76)Lh$GG!!Eyl@jcdt-c?PFtyK*Fk0; ziGW-Yw2i$OK;rf1SwnuiD1b3Q8-Aa z+GW}RDQv@V=gy5S7;qf83X;D-=~PH?ZBdOO=_uaq9t|FMUkdtr`gV5qjy6EwWq`xI z+kHP~zL_^O?*|!R==$~RF~*22%Md~U0K^zk*EK>2h%q9Bklu$7&@>GIq~9#(d5%2K zTYY)dG!2@jL5vY!e)(m8#T8Ov9}tkHX_9~hM=8dbzA2;vl4V({y9gxq!T$8Il*6z1 zjkn)^J3e^uAeH&@=VwdXD|LWsng$^ReD~dVzo};L+_@7CSRB7kpuYD2+Q0w_9DQ!v zd;KNq0M(=2b0^2@mNDVIPeMO<@E|By7C5Ke@7^SkeTt1d0bT9vV^-u9MUi&_;>#-bK!f9Y>)Jxi>~``x0o0SZ{%lwU+| zz4cZ+JUsNL-YRHSQ+^qdC)c7@LCnS0l{yv$tj4O=6(m}E$D-EJPpp!9fm*gMJ1=sg z-dYfsZyliWJYNMrYYP;~1!@%xuXEH}tEsoHKoN_znR>u_Mn1ZPPI|B^Ke3J=DXmSy zxvq}9*GKW?Z%zMqQEyeWuFkx7t+y(z@_=F;sdwtFDlYB(JU>9zTAJPd@o%A-Y$u zUX9b~)VC-K#TzXg&;q7yJl~=HdF{NEfbaDdjb1;}F%%SSXY1(m%aPOFlgTBPmm?Nrv>Mm1@zKtCLZ z?+N@e#<#Y%((gRaQ4|G22$)PJOWW`7@8jCFYX~7=e}8{zeU8~1_0+UujF?WRE%UY+ zyamS6Y&J{%sxRyFW6S8z|GkIV40z=gAOzqazx#`8A)kKwY2>(kPadyaxq{C=`z-ln z>vBQ}`26$F0rVuCMH2;F=x%+LI@ZRfvZ<9qG=j@|NXQV z$>h-%`9%*xDl-tSPk1wZ79}zoSx7YD0_UaLfp7} zAj>k$=P#q@$w`0y_wmOcx7vUB;fL|{*Ix$!{P4pM_~@gL7Mk%JZ@du!polRhUvqG9 zfDi(9cXwS45da=Q=w(-~=E`Y2$;=g z7>z~%fU+!8VZ@&y0+)8ElF4W2xH{L6sSsiY`xZf>UXa5!w0DHOpYQ0#~A)Iyu4L7wNh zc<~~DQ>$VfE2NF8@4fe4)ag}KReGn&zIE$X62JxxrUYeKCI^4_?%l|7#^Z5nV|`2ml&bYCkbU`|K7arH_hZvE zc=YHI0H9!}+yqlC42Q#B3sNidG@zNhCyWBZIs|Hwh1u+$q&~{~s|i)A1;?&GpFMll z;wgl13RKfHn9t`pIXOX=WeGI9Ql}%e1A0K&1kZwK_q;7*UM{D~vxf@0(_x>p+&A5I z#!RQv7Klj^1VuAz{+>>!t%zcowvkdbt<%kB?mFJ#;bE(-rMyGvMyrl3drFTnA{&p#E&pT_K5sgxqt;IC?tyiheU{kQ&-3TcJ0V`*E8rZ{ z`X?`dcs!|(Q^l~HSw^)3nl&St6-=j*POX!Z6L&g!8kr|n<2;Dc968)?N zoEB`s*Kz^0a}*Uu&Dvu`8PN6=*g8yaJ+`^InENi9eP)#=K5EHio5 zKxFHa3L8$nvpLHM(7ppeq6Ml3t>03hylG>t)ALc2$pjZJTijF)AZDq2(b@)!*SR)c-HS6P;w^rSDsY65BfrDyFrwwKqb9J(;KfCJ*p zJ<{w}Nkgyavpk_SGODI8T)5zlZT*Y(?eXkISG9i6v0Hu@1(j@XZ!c}S*+sDJh=O{D z14>%YOJ;4dYMEnyx*w(Qx$M&Cc8V+5EPH;IZMo*O!6gAT8jUa-jod_!4ptHOGI%fa zs$i|XZOQbrEW^>!Q78R~@pKKyHJTmYhH(n3LV6cByflbBYQky#B>)r*qwI(SIJt&>+q^&R)iy?;-_u{o{0dr(%WK7dql)~9M;I;JW=0i}!qMZX2<_27#@Ghrv?VZMGd}IJuIscuv}uQ0zfMg%we7PILb7b7 z)_zn~RjqXyHJs-;wzs!i45&6(R-mX=3zCwJT6$Ead)nL~U_Vv?R$%gD-GbKh{F8#k z-`1L9{CPi$R%D&7UEgVAwH{g)zwJG64asVqo^Mj7$K!Epe13RT<;{k^R7Yj7#Gs-< zrc=juq#Dv)Mrt^Omy2GOHFeMr_ju?7*tbTy*=*KPiURBTEC~C<%ej9bw%7(*X zM`_B_!oP(X4u>fMj7B5O=W_sP-A`hurWG+lWm%Sv=`U;wyu z=~4?Q3zD@mhHo;det|g|Z@AbfrDQFeL?I3i4m!yvf$~-t-mZdzY`2)$mp*6vg?|g9 zT4$2SM3Y-EeM=iYBOqH_Tdnn^-bPtOUw!pe08VeS*lBLT)bGAjK%d*ZOJ(MNZ+!F3 zHzUyF%%47e+Ujg)XD2yW4X=8A+7p6x_xAQW{s`!|pgtfd*v`&Q=M*N!h{MCf&f3od l?$uXc?Ih0R$I8Lq{{x@et%)J6X>rRx^(EokcFiq zLq-;s44ql{0G+z@BcM!Oqksfa2geozFN?eMuIIBaj)Twl9J;@RxR=NF<;Qc6FZOc; zP&60}GPTWwj*pLnHm=i_R@83j4|-C+{WvR0$*0ndZY{y z0KT7oF10&6ItOD6X__L6qRf_Am!<*df+U+ z5mO#8f3tCR`BSE~a6`b9<7OLj+9MfbI6OKpy;B4KA%6UHWPB`6gXB}2gW^DCu)NRo zUEA5IJsyvPD2lQ)O~Dw$yANMQ9OTf{y2Sm)9EZ^nTef6D&K_pPwm-!-?eQ(! zk_GuHd}VtGwL}J_`fhvo{jO85XbT|w{eIB)duCmN!0PMOQv18xJJBzfZQ7PDe;Ues zSV&dZ;saL8)NHlu$TncM`3Eztm3diTrl+}lZr7n!-fV0qp2{&w7q2MTR)Vyd4@5a8 zs{NH9<2bG|F{164+g7f-tmcAjGh??*>+9n* zF7V~o8&RfeTMDx6jNK}mvx95#L8#i2&)DTt>FnTIlquR4Vw9~kWHnyy@9(?)U7Lz7 zA1-YVp_a&k1nfVEsAEh1oeiZ$_dHwjAYG9M*^tPCd^Qg)Y>IMBRQt(-yuZD-J%m~! z3-WRLXnP2?L>A=c=BAO12vfFXLHbOKhO}tXlWrrD3c~OFnj^pSs{#3)Uk%Fd{Ay5s z=T`&rJHHx|-}&_nM+rwo=<=@r(1=p}It?0z2=>Px#07*qoM6N<$g3js)X#fBK literal 0 HcmV?d00001