From 4589e3aaea34162317ac362212b06341d390d84a Mon Sep 17 00:00:00 2001 From: Bob Date: Wed, 26 Aug 2020 23:53:06 +0200 Subject: [PATCH] more work on the fusion reactor & plasma heater, vaporwave --- src/main/java/assets/hbm/lang/de_DE.lang | 4 +- src/main/java/assets/hbm/lang/en_US.lang | 2 + .../textures/blocks/struct_plasma_core.png | Bin 0 -> 555 bytes .../hbm/textures/gui/gui_nei_fusion.png | Bin 0 -> 961 bytes .../items/fusion_shield_vaporwave.png | Bin 0 -> 384 bytes .../hbm/textures/items/powder_balefire.png | Bin 0 -> 366 bytes .../textures/models/iter/torus_vaporwave.png | Bin 0 -> 3859 bytes src/main/java/com/hbm/blocks/ModBlocks.java | 7 +- src/main/java/com/hbm/blocks/bomb/NukeN2.java | 2 +- .../com/hbm/blocks/bomb/NukeSolinium.java | 2 +- .../hbm/blocks/machine/BlockMachineBase.java | 8 +- .../hbm/blocks/machine/BlockPlasmaStruct.java | 26 ++++ .../blocks/machine/MachinePlasmaHeater.java | 38 ++++++ src/main/java/com/hbm/config/BombConfig.java | 8 +- .../entity/projectile/EntityBulletBase.java | 4 +- .../hbm/handler/nei/BookRecipeHandler.java | 16 +-- .../hbm/handler/nei/FusionRecipeHandler.java | 122 ++++++++++++++++++ .../java/com/hbm/inventory/FusionRecipes.java | 40 ++++++ src/main/java/com/hbm/items/ModItems.java | 6 + src/main/java/com/hbm/main/ClientProxy.java | 1 + .../java/com/hbm/main/CraftingManager.java | 1 + src/main/java/com/hbm/main/MainRegistry.java | 1 + src/main/java/com/hbm/main/NEIConfig.java | 4 +- .../java/com/hbm/main/ResourceManager.java | 1 + .../com/hbm/render/tileentity/RenderITER.java | 1 + .../tileentity/RenderPlasmaMultiblock.java | 60 +++++++++ .../tileentity/machine/TileEntityITER.java | 45 +++++-- .../TileEntityMachinePlasmaHeater.java | 26 ++-- .../machine/TileEntityPlasmaStruct.java | 20 +++ 29 files changed, 402 insertions(+), 43 deletions(-) create mode 100644 src/main/java/assets/hbm/textures/blocks/struct_plasma_core.png create mode 100644 src/main/java/assets/hbm/textures/gui/gui_nei_fusion.png create mode 100644 src/main/java/assets/hbm/textures/items/fusion_shield_vaporwave.png create mode 100644 src/main/java/assets/hbm/textures/items/powder_balefire.png create mode 100644 src/main/java/assets/hbm/textures/models/iter/torus_vaporwave.png create mode 100644 src/main/java/com/hbm/blocks/machine/BlockPlasmaStruct.java create mode 100644 src/main/java/com/hbm/handler/nei/FusionRecipeHandler.java create mode 100644 src/main/java/com/hbm/inventory/FusionRecipes.java create mode 100644 src/main/java/com/hbm/render/tileentity/RenderPlasmaMultiblock.java create mode 100644 src/main/java/com/hbm/tileentity/machine/TileEntityPlasmaStruct.java diff --git a/src/main/java/assets/hbm/lang/de_DE.lang b/src/main/java/assets/hbm/lang/de_DE.lang index 5722e72ae..e6985fe08 100644 --- a/src/main/java/assets/hbm/lang/de_DE.lang +++ b/src/main/java/assets/hbm/lang/de_DE.lang @@ -871,7 +871,8 @@ item.fusion_core.name=Fusionskern item.fusion_core_infinite.name=Unendlicher Fusionskern item.fusion_shield_chlorophyte.name=Fusionsreaktor-Blanket (Grünalgen-bedampft) item.fusion_shield_desh.name=Fusionsreaktor-Blanket (Desh) -item.fusion_shield_tungsten.name=usionsreaktor-Blanket (Wolfram) +item.fusion_shield_tungsten.name=Fusionsreaktor-Blanket (Wolfram) +item.fusion_shield_vaporwave.name=Fusionsreaktor-Blanket (Vaporwave) item.gadget_core.name=Plutoniumkern item.gadget_explosive.name=Sprenglinse erster Generation item.gadget_explosive8.name=Implosions-Treibladung erster Generation @@ -1457,6 +1458,7 @@ item.powder_aluminium.name=Aluminiumstaub item.powder_asbestos.name=Asbeststaub item.powder_astatine.name=Astatstaub item.powder_australium.name=Australiumstaub +item.powder_balefire.name=Thermonukleare Asche item.powder_beryllium.name=Berylliumstaub item.powder_bromine.name=Bromstaub item.powder_caesium.name=Caesiumstaub diff --git a/src/main/java/assets/hbm/lang/en_US.lang b/src/main/java/assets/hbm/lang/en_US.lang index cc44c6b9b..29dc01b80 100644 --- a/src/main/java/assets/hbm/lang/en_US.lang +++ b/src/main/java/assets/hbm/lang/en_US.lang @@ -872,6 +872,7 @@ item.fusion_core_infinite.name=Infinite Fusion Core item.fusion_shield_chlorophyte.name=Chlorophyte-Metallized Fusion Reactor Blanket item.fusion_shield_desh.name=Desh Fusion Reactor Blanket item.fusion_shield_tungsten.name=Tungsten Fusion Reactor Blanket +item.fusion_shield_vaporwave.name=Vaporwave Fusion Reactor Blanket item.gadget_core.name=Plutonium Core item.gadget_explosive.name=First Generation Explosive Lens item.gadget_explosive8.name=Bundle of First Generation Implosion Propellant @@ -1457,6 +1458,7 @@ item.powder_aluminium.name=Aluminium Powder item.powder_asbestos.name=Asbestos Powder item.powder_astatine.name=Astatine Powder item.powder_australium.name=Australium Powder +item.powder_balefire.name=Thermonuclear Ashes item.powder_beryllium.name=Beryllium Powder item.powder_bromine.name=Bromine Powder item.powder_caesium.name=Caesium Powder diff --git a/src/main/java/assets/hbm/textures/blocks/struct_plasma_core.png b/src/main/java/assets/hbm/textures/blocks/struct_plasma_core.png new file mode 100644 index 0000000000000000000000000000000000000000..2748efbfb77ee6b569f45281633a171271dee814 GIT binary patch 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{HjIVvkB^=$x+YxD%ykUuyF);hm+wuR}^pk^Omx z$y0u0bKGdZRK>VHsYa{-yxHs&bmG?BC z_xq2ZFaN$_$T-WlU{m3Wpu;!H$Y~Xr!`%lMh_lB3b(E^O`3R!?Aytv%I ze0Sr=$GVnz1*g5)790)DuiCo*+oAh^bPun+uE7-Zn1i8n?-RZSSEuIfS#`dg@p8R? zy!4GM+s9G~?^KyD9IC0V&)t3hm9E3#^SXTuqA}7hvh$hG<=<|4_*{;0#hY7U^}lxN zO4i8%ZA+-T*Z-sZM!qcj0#(KpPwtu3SIs{7d?wIeUtTQ#EBAMc!j>;4)(ww8N-V#; z@~e?pyeVuk-8dNR(*n;Mo5pv2j-O>-v|v#dhFVdQ&MBb@05Zl%-v9sr literal 0 HcmV?d00001 diff --git a/src/main/java/assets/hbm/textures/items/fusion_shield_vaporwave.png b/src/main/java/assets/hbm/textures/items/fusion_shield_vaporwave.png new file mode 100644 index 0000000000000000000000000000000000000000..f068f194b24598d8b42509d8490ba54f8e4455b5 GIT binary patch literal 384 zcmV-`0e}99P)1rl zA1k!%V+9P#~fs^ZM1lCEOk3v%Q_C>oX$JH%F%5vjppnmLln4w}apL4$Ll)*} e->TpASMdeD^qtcIs@lu|0000lb literal 0 HcmV?d00001 diff --git a/src/main/java/assets/hbm/textures/items/powder_balefire.png b/src/main/java/assets/hbm/textures/items/powder_balefire.png new file mode 100644 index 0000000000000000000000000000000000000000..29897f211f9a78c932f091d0d183e60a73ac42e7 GIT binary patch literal 366 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 V{domblh^ 0 && e instanceof EntityPlayer){ diff --git a/src/main/java/com/hbm/handler/nei/BookRecipeHandler.java b/src/main/java/com/hbm/handler/nei/BookRecipeHandler.java index aa7921f48..b2ca4966d 100644 --- a/src/main/java/com/hbm/handler/nei/BookRecipeHandler.java +++ b/src/main/java/com/hbm/handler/nei/BookRecipeHandler.java @@ -19,10 +19,8 @@ import net.minecraft.item.ItemStack; public class BookRecipeHandler extends TemplateRecipeHandler { - public static ArrayList batteries; - - public class RecipeSet extends TemplateRecipeHandler.CachedRecipe - { + public class RecipeSet extends TemplateRecipeHandler.CachedRecipe { + List input; PositionedStack result; @@ -47,16 +45,6 @@ public class BookRecipeHandler extends TemplateRecipeHandler { return result; } } - - public static class Fuel - { - public Fuel(ItemStack ingred) { - - this.stack = new PositionedStack(ingred, 3, 42, false); - } - - public PositionedStack stack; - } @Override public String getRecipeName() { diff --git a/src/main/java/com/hbm/handler/nei/FusionRecipeHandler.java b/src/main/java/com/hbm/handler/nei/FusionRecipeHandler.java new file mode 100644 index 000000000..bc03afa97 --- /dev/null +++ b/src/main/java/com/hbm/handler/nei/FusionRecipeHandler.java @@ -0,0 +1,122 @@ +package com.hbm.handler.nei; + +import java.awt.Rectangle; +import java.util.ArrayList; +import java.util.LinkedList; +import java.util.List; +import java.util.Map; + +import com.hbm.inventory.FusionRecipes; +import com.hbm.inventory.gui.GUIITER; +import com.hbm.lib.RefStrings; + +import codechicken.nei.NEIServerUtils; +import codechicken.nei.PositionedStack; +import codechicken.nei.recipe.TemplateRecipeHandler; +import net.minecraft.client.gui.inventory.GuiContainer; +import net.minecraft.item.ItemStack; + +public class FusionRecipeHandler extends TemplateRecipeHandler { + + public LinkedList transferRectsRec = new LinkedList(); + public LinkedList transferRectsGui = new LinkedList(); + public LinkedList> guiRec = new LinkedList>(); + public LinkedList> guiGui = new LinkedList>(); + + public class SmeltingSet extends TemplateRecipeHandler.CachedRecipe { + + PositionedStack input; + PositionedStack result; + + public SmeltingSet(ItemStack in, ItemStack out) { + + this.input = new PositionedStack(in, 30, 24); + this.result = new PositionedStack(out, 120, 24); + } + + @Override + public List getIngredients() { + + return new ArrayList() {{ add(input); }}; + } + + @Override + public PositionedStack getResult() { + return result; + } + } + + @Override + public String getRecipeName() { + return "Fusion Reactor"; + } + + @Override + public void loadCraftingRecipes(String outputId, Object... results) { + + if(outputId.equals("fusion") && getClass() == FusionRecipeHandler.class) { + + Map recipes = FusionRecipes.getRecipes(); + + for(Map.Entry recipe : recipes.entrySet()) { + this.arecipes.add(new SmeltingSet(recipe.getKey(), recipe.getValue())); + } + + } else { + super.loadCraftingRecipes(outputId, results); + } + } + + @Override + public void loadCraftingRecipes(ItemStack result) { + + Map recipes = FusionRecipes.getRecipes(); + + for(Map.Entry recipe : recipes.entrySet()) { + + if(NEIServerUtils.areStacksSameTypeCrafting(recipe.getValue(), result)) { + this.arecipes.add(new SmeltingSet(recipe.getKey(), recipe.getValue())); + } + } + } + + @Override + public void loadUsageRecipes(String inputId, Object... ingredients) { + + if(inputId.equals("fusion") && getClass() == FusionRecipeHandler.class) { + loadCraftingRecipes("fusion", new Object[0]); + } else { + super.loadUsageRecipes(inputId, ingredients); + } + } + + @Override + public void loadUsageRecipes(ItemStack ingredient) { + + Map recipes = FusionRecipes.getRecipes(); + + for(Map.Entry recipe : recipes.entrySet()) { + + if(NEIServerUtils.areStacksSameTypeCrafting(recipe.getKey(), ingredient)) { + this.arecipes.add(new SmeltingSet(recipe.getKey(), recipe.getValue())); + } + } + } + + @Override + public void loadTransferRects() { + transferRectsGui = new LinkedList(); + guiGui = new LinkedList>(); + + transferRects.add(new RecipeTransferRect(new Rectangle(52 - 5, 34 - 11, 18 * 4, 18), "fusion")); + transferRectsGui.add(new RecipeTransferRect(new Rectangle(115 - 5, 17 - 11, 18, 18), "fusion")); + guiGui.add(GUIITER.class); + RecipeTransferRectHandler.registerRectsToGuis(getRecipeTransferRectGuis(), transferRects); + RecipeTransferRectHandler.registerRectsToGuis(guiGui, transferRectsGui); + } + + @Override + public String getGuiTexture() { + return RefStrings.MODID + ":textures/gui/gui_nei_fusion.png"; + } +} diff --git a/src/main/java/com/hbm/inventory/FusionRecipes.java b/src/main/java/com/hbm/inventory/FusionRecipes.java new file mode 100644 index 000000000..f9df5b660 --- /dev/null +++ b/src/main/java/com/hbm/inventory/FusionRecipes.java @@ -0,0 +1,40 @@ +package com.hbm.inventory; + +import java.util.HashMap; + +import com.hbm.handler.FluidTypeHandler.FluidType; +import com.hbm.items.ModItems; + +import net.minecraft.item.ItemStack; + +public class FusionRecipes { + + public static int getByproductChance(FluidType plasma) { + + switch(plasma) { + case PLASMA_XM: return 3 * 60 * 20; + case PLASMA_BF: return 10 * 60 * 20; + default: return 0; + } + } + + public static ItemStack getByproduct(FluidType plasma) { + + switch(plasma) { + case PLASMA_XM: return new ItemStack(ModItems.powder_chlorophyte); + case PLASMA_BF: return new ItemStack(ModItems.powder_balefire); + default: return null; + } + } + + public static HashMap getRecipes() { + + HashMap map = new HashMap(); + + map.put(new ItemStack(ModItems.fluid_icon, 1, FluidType.PLASMA_XM.ordinal()), new ItemStack(ModItems.powder_chlorophyte)); + map.put(new ItemStack(ModItems.fluid_icon, 1, FluidType.PLASMA_BF.ordinal()), new ItemStack(ModItems.powder_balefire)); + + return map; + } + +} diff --git a/src/main/java/com/hbm/items/ModItems.java b/src/main/java/com/hbm/items/ModItems.java index 4b0cb3d9c..e10d6eaf4 100644 --- a/src/main/java/com/hbm/items/ModItems.java +++ b/src/main/java/com/hbm/items/ModItems.java @@ -295,6 +295,7 @@ public class ModItems { public static Item powder_yellowcake; public static Item powder_magic; public static Item powder_cloud; + public static Item powder_balefire; public static Item fragment_neodymium; public static Item fragment_cobalt; @@ -578,6 +579,7 @@ public class ModItems { public static Item fusion_shield_tungsten; public static Item fusion_shield_desh; public static Item fusion_shield_chlorophyte; + public static Item fusion_shield_vaporwave; public static Item cell_empty; public static Item cell_uf6; @@ -2188,6 +2190,7 @@ public class ModItems { powder_yellowcake = new ItemRadioactive(0.5F).setUnlocalizedName("powder_yellowcake").setCreativeTab(MainRegistry.partsTab).setTextureName(RefStrings.MODID + ":powder_yellowcake"); powder_magic = new Item().setUnlocalizedName("powder_magic").setCreativeTab(MainRegistry.partsTab).setTextureName(RefStrings.MODID + ":powder_magic"); powder_cloud = new Item().setUnlocalizedName("powder_cloud").setCreativeTab(MainRegistry.partsTab).setTextureName(RefStrings.MODID + ":powder_cloud"); + powder_balefire = new ItemRadioactive(500F, true).setUnlocalizedName("powder_balefire").setCreativeTab(MainRegistry.partsTab).setTextureName(RefStrings.MODID + ":powder_balefire"); fragment_neodymium = new Item().setUnlocalizedName("fragment_neodymium").setCreativeTab(MainRegistry.partsTab).setTextureName(RefStrings.MODID + ":fragment_neodymium"); fragment_cobalt = new Item().setUnlocalizedName("fragment_cobalt").setCreativeTab(MainRegistry.partsTab).setTextureName(RefStrings.MODID + ":fragment_cobalt"); @@ -3317,6 +3320,7 @@ public class ModItems { fusion_shield_tungsten = new ItemFusionShield(60 * 60 * 60 * 5, 3500).setUnlocalizedName("fusion_shield_tungsten").setMaxStackSize(1).setCreativeTab(MainRegistry.controlTab).setTextureName(RefStrings.MODID + ":fusion_shield_tungsten"); fusion_shield_desh = new ItemFusionShield(60 * 60 * 60 * 10, 4500).setUnlocalizedName("fusion_shield_desh").setMaxStackSize(1).setCreativeTab(MainRegistry.controlTab).setTextureName(RefStrings.MODID + ":fusion_shield_desh"); fusion_shield_chlorophyte = new ItemFusionShield(60 * 60 * 60 * 15, 9000).setUnlocalizedName("fusion_shield_chlorophyte").setMaxStackSize(1).setCreativeTab(MainRegistry.controlTab).setTextureName(RefStrings.MODID + ":fusion_shield_chlorophyte"); + fusion_shield_vaporwave = new ItemFusionShield(60 * 60 * 60 * 10, 1916169).setUnlocalizedName("fusion_shield_vaporwave").setMaxStackSize(1).setCreativeTab(MainRegistry.controlTab).setTextureName(RefStrings.MODID + ":fusion_shield_vaporwave"); upgrade_template = new ItemCustomLore().setUnlocalizedName("upgrade_template").setMaxStackSize(1).setCreativeTab(MainRegistry.partsTab).setTextureName(RefStrings.MODID + ":upgrade_template"); upgrade_speed_1 = new ItemMachineUpgrade().setUnlocalizedName("upgrade_speed_1").setMaxStackSize(1).setCreativeTab(MainRegistry.controlTab).setTextureName(RefStrings.MODID + ":upgrade_speed_1"); @@ -4085,6 +4089,7 @@ public class ModItems { GameRegistry.registerItem(powder_asbestos, powder_asbestos.getUnlocalizedName()); GameRegistry.registerItem(powder_magic, powder_magic.getUnlocalizedName()); GameRegistry.registerItem(powder_cloud, powder_cloud.getUnlocalizedName()); + GameRegistry.registerItem(powder_balefire, powder_balefire.getUnlocalizedName()); GameRegistry.registerItem(powder_semtex_mix, powder_semtex_mix.getUnlocalizedName()); GameRegistry.registerItem(powder_desh_mix, powder_desh_mix.getUnlocalizedName()); GameRegistry.registerItem(powder_desh_ready, powder_desh_ready.getUnlocalizedName()); @@ -4709,6 +4714,7 @@ public class ModItems { GameRegistry.registerItem(fusion_shield_tungsten, fusion_shield_tungsten.getUnlocalizedName()); GameRegistry.registerItem(fusion_shield_desh, fusion_shield_desh.getUnlocalizedName()); GameRegistry.registerItem(fusion_shield_chlorophyte, fusion_shield_chlorophyte.getUnlocalizedName()); + GameRegistry.registerItem(fusion_shield_vaporwave, fusion_shield_vaporwave.getUnlocalizedName()); //Fuel Rods GameRegistry.registerItem(rod_empty, rod_empty.getUnlocalizedName()); diff --git a/src/main/java/com/hbm/main/ClientProxy.java b/src/main/java/com/hbm/main/ClientProxy.java index ef125da50..77e4ba021 100644 --- a/src/main/java/com/hbm/main/ClientProxy.java +++ b/src/main/java/com/hbm/main/ClientProxy.java @@ -174,6 +174,7 @@ public class ClientProxy extends ServerProxy { ClientRegistry.bindTileEntitySpecialRenderer(TileEntityMultiblock.class, new RenderMultiblock()); ClientRegistry.bindTileEntitySpecialRenderer(TileEntitySoyuzStruct.class, new RenderSoyuzMultiblock()); ClientRegistry.bindTileEntitySpecialRenderer(TileEntityITERStruct.class, new RenderITERMultiblock()); + ClientRegistry.bindTileEntitySpecialRenderer(TileEntityPlasmaStruct.class, new RenderPlasmaMultiblock()); //ITER ClientRegistry.bindTileEntitySpecialRenderer(TileEntityITER.class, new RenderITER()); ClientRegistry.bindTileEntitySpecialRenderer(TileEntityMachinePlasmaHeater.class, new RenderPlasmaHeater()); diff --git a/src/main/java/com/hbm/main/CraftingManager.java b/src/main/java/com/hbm/main/CraftingManager.java index 6a5a23d24..6a8f2704d 100644 --- a/src/main/java/com/hbm/main/CraftingManager.java +++ b/src/main/java/com/hbm/main/CraftingManager.java @@ -131,6 +131,7 @@ public class CraftingManager { GameRegistry.addRecipe(new ItemStack(ModBlocks.hazmat, 8), new Object[] { "###", "# #", "###", '#', ModItems.hazmat_cloth }); GameRegistry.addRecipe(new ItemStack(ModItems.hazmat_cloth, 1), new Object[] { "#", '#', ModBlocks.hazmat }); + GameRegistry.addRecipe(new ItemStack(ModItems.egg_balefire_shard, 1), new Object[] { "##", "##", '#', ModItems.powder_balefire }); GameRegistry.addRecipe(new ShapelessOreRecipe(new ItemStack(ModItems.ingot_uranium_fuel, 1), new Object[] { "nuggetUranium235", "nuggetUranium235", "nuggetUranium235", "nuggetUranium238", "nuggetUranium238", "nuggetUranium238", "nuggetUranium238", "nuggetUranium238", "nuggetUranium238" })); GameRegistry.addRecipe(new ShapelessOreRecipe(new ItemStack(ModItems.ingot_uranium_fuel, 1), new Object[] { "nuggetUranium233", "nuggetUranium233", "nuggetUranium233", "nuggetUranium238", "nuggetUranium238", "nuggetUranium238", "nuggetUranium238", "nuggetUranium238", "nuggetUranium238" })); diff --git a/src/main/java/com/hbm/main/MainRegistry.java b/src/main/java/com/hbm/main/MainRegistry.java index 88146ccda..b5cc081a1 100644 --- a/src/main/java/com/hbm/main/MainRegistry.java +++ b/src/main/java/com/hbm/main/MainRegistry.java @@ -421,6 +421,7 @@ public class MainRegistry { GameRegistry.registerTileEntity(TileEntityMachinePlasmaHeater.class, "tileentity_plasma_heater"); GameRegistry.registerTileEntity(TileEntityMachineFENSU.class, "tileentity_fensu"); GameRegistry.registerTileEntity(TileEntityTrappedBrick.class, "tileentity_trapped_brick"); + GameRegistry.registerTileEntity(TileEntityPlasmaStruct.class, "tileentity_plasma_struct"); EntityRegistry.registerModEntity(EntityRocket.class, "entity_rocket", 0, this, 250, 1, true); EntityRegistry.registerModEntity(EntityNukeExplosion.class, "entity_nuke_explosion", 1, this, 250, 1, true); diff --git a/src/main/java/com/hbm/main/NEIConfig.java b/src/main/java/com/hbm/main/NEIConfig.java index cfa08df95..6988dee7c 100644 --- a/src/main/java/com/hbm/main/NEIConfig.java +++ b/src/main/java/com/hbm/main/NEIConfig.java @@ -33,8 +33,6 @@ public class NEIConfig implements IConfigureNEI { API.registerUsageHandler(new RefineryRecipeHandler()); API.registerRecipeHandler(new BoilerRecipeHandler()); API.registerUsageHandler(new BoilerRecipeHandler()); - //API.registerRecipeHandler(new ModInfoHandler()); - //API.registerUsageHandler(new ModInfoHandler()); API.registerRecipeHandler(new ChemplantRecipeHandler()); API.registerUsageHandler(new ChemplantRecipeHandler()); API.registerRecipeHandler(new FluidRecipeHandler()); @@ -45,6 +43,8 @@ public class NEIConfig implements IConfigureNEI { API.registerUsageHandler(new CrystallizerRecipeHandler()); API.registerRecipeHandler(new BookRecipeHandler()); API.registerUsageHandler(new BookRecipeHandler()); + API.registerRecipeHandler(new FusionRecipeHandler()); + API.registerUsageHandler(new FusionRecipeHandler()); //Some things are even beyond my control...or are they? API.hideItem(new ItemStack(ModItems.memory)); diff --git a/src/main/java/com/hbm/main/ResourceManager.java b/src/main/java/com/hbm/main/ResourceManager.java index b790ae1b7..8b2ddc94b 100644 --- a/src/main/java/com/hbm/main/ResourceManager.java +++ b/src/main/java/com/hbm/main/ResourceManager.java @@ -285,6 +285,7 @@ public class ResourceManager { public static final ResourceLocation iter_torus_tungsten = new ResourceLocation(RefStrings.MODID, "textures/models/iter/torus_tungsten.png"); public static final ResourceLocation iter_torus_desh = new ResourceLocation(RefStrings.MODID, "textures/models/iter/torus_desh.png"); public static final ResourceLocation iter_torus_chlorophyte = new ResourceLocation(RefStrings.MODID, "textures/models/iter/torus_chlorophyte.png"); + public static final ResourceLocation iter_torus_vaporwave = new ResourceLocation(RefStrings.MODID, "textures/models/iter/torus_vaporwave.png"); //FENSU public static final ResourceLocation fensu_tex = new ResourceLocation(RefStrings.MODID, "textures/models/machines/fensu.png"); diff --git a/src/main/java/com/hbm/render/tileentity/RenderITER.java b/src/main/java/com/hbm/render/tileentity/RenderITER.java index 49f25c5ee..595cf35a1 100644 --- a/src/main/java/com/hbm/render/tileentity/RenderITER.java +++ b/src/main/java/com/hbm/render/tileentity/RenderITER.java @@ -37,6 +37,7 @@ public class RenderITER extends TileEntitySpecialRenderer { case 1: bindTexture(ResourceManager.iter_torus_tungsten); break; case 2: bindTexture(ResourceManager.iter_torus_desh); break; case 3: bindTexture(ResourceManager.iter_torus_chlorophyte); break; + case 4: bindTexture(ResourceManager.iter_torus_vaporwave); break; default: bindTexture(ResourceManager.iter_torus); break; } ResourceManager.iter.renderPart("Torus"); diff --git a/src/main/java/com/hbm/render/tileentity/RenderPlasmaMultiblock.java b/src/main/java/com/hbm/render/tileentity/RenderPlasmaMultiblock.java new file mode 100644 index 000000000..2c24e88ab --- /dev/null +++ b/src/main/java/com/hbm/render/tileentity/RenderPlasmaMultiblock.java @@ -0,0 +1,60 @@ +package com.hbm.render.tileentity; + +import org.lwjgl.opengl.GL11; + +import com.hbm.blocks.ModBlocks; +import com.hbm.render.util.IconUtil; +import com.hbm.render.util.SmallBlockPronter; + +import net.minecraft.client.renderer.OpenGlHelper; +import net.minecraft.client.renderer.tileentity.TileEntitySpecialRenderer; +import net.minecraft.tileentity.TileEntity; +import net.minecraft.util.ResourceLocation; + +public class RenderPlasmaMultiblock extends TileEntitySpecialRenderer { + + @Override + public void renderTileEntityAt(TileEntity te, double x, double y, double z, float f) { + + GL11.glPushMatrix(); + + GL11.glTranslatef((float)x + 0.5F, (float)y, (float)z + 0.5F); + + switch(te.getBlockMetadata()) { + case 2: GL11.glRotatef(270, 0F, 1F, 0F); break; + case 4: GL11.glRotatef(0, 0F, 1F, 0F); break; + case 3: GL11.glRotatef(90, 0F, 1F, 0F); break; + case 5: GL11.glRotatef(180, 0F, 1F, 0F); break; + } + + GL11.glTranslatef(-0.5F, 0, -0.5F); + + GL11.glEnable(GL11.GL_BLEND); + GL11.glEnable(GL11.GL_CULL_FACE); + OpenGlHelper.glBlendFunc(770, 771, 1, 0); + GL11.glColor4f(1.0F, 1.0F, 1.0F, 0.75F); + GL11.glDisable(GL11.GL_ALPHA_TEST); + GL11.glDepthMask(false); + + ResourceLocation heater = IconUtil.getTextureFromBlockAndSide(ModBlocks.fusion_heater, 2); + bindTexture(heater); + + for(int iy = 1; iy < 5; iy ++) { + + for(int ix = 0; ix < 10; ix++) { + + for(int iz = -2; iz < 3; iz++) { + + SmallBlockPronter.renderSmolBlockAt(ix, iy, iz); + } + } + } + + GL11.glDisable(GL11.GL_BLEND); + GL11.glEnable(GL11.GL_ALPHA_TEST); + GL11.glDepthMask(true); + + GL11.glEnable(GL11.GL_LIGHTING); + GL11.glPopMatrix(); + } +} diff --git a/src/main/java/com/hbm/tileentity/machine/TileEntityITER.java b/src/main/java/com/hbm/tileentity/machine/TileEntityITER.java index 9e1864c8c..000f97e5d 100644 --- a/src/main/java/com/hbm/tileentity/machine/TileEntityITER.java +++ b/src/main/java/com/hbm/tileentity/machine/TileEntityITER.java @@ -9,6 +9,7 @@ import com.hbm.interfaces.IConsumer; import com.hbm.interfaces.IFluidAcceptor; import com.hbm.interfaces.IFluidSource; import com.hbm.inventory.FluidTank; +import com.hbm.inventory.FusionRecipes; import com.hbm.items.ModItems; import com.hbm.items.special.ItemFusionShield; import com.hbm.lib.Library; @@ -16,6 +17,7 @@ import com.hbm.tileentity.TileEntityMachineBase; import cpw.mods.fml.relauncher.Side; import cpw.mods.fml.relauncher.SideOnly; +import net.minecraft.item.ItemStack; import net.minecraft.nbt.NBTTagCompound; import net.minecraft.util.AxisAlignedBB; import net.minecraft.util.Vec3; @@ -83,6 +85,14 @@ public class TileEntityITER extends TileEntityMachineBase implements IConsumer, if(isOn && power >= powerReq) { power -= powerReq; + if(plasma.getFill() > 0) { + + int chance = FusionRecipes.getByproductChance(plasma.getTankType()); + + if(chance > 0 && worldObj.rand.nextInt() == 0) + produceByproduct(); + } + for(int i = 0; i < 20; i++) { if(tanks[0].getFill() >= 10) { @@ -118,6 +128,8 @@ public class TileEntityITER extends TileEntityMachineBase implements IConsumer, data.setInteger("blanket", 2); } else if(slots[3].getItem() == ModItems.fusion_shield_chlorophyte) { data.setInteger("blanket", 3); + } else if(slots[3].getItem() == ModItems.fusion_shield_vaporwave) { + data.setInteger("blanket", 4); } this.networkPack(data, 250); @@ -136,6 +148,31 @@ public class TileEntityITER extends TileEntityMachineBase implements IConsumer, } } } + + private void produceByproduct() { + + ItemStack by = FusionRecipes.getByproduct(plasma.getTankType()); + + if(by == null) + return; + + if(slots[4] == null) { + slots[4] = by; + return; + } + + if(slots[4].getItem() == by.getItem() && slots[4].getItemDamage() == by.getItemDamage() && slots[4].stackSize < slots[4].getMaxStackSize()) { + slots[4].stackSize++; + } + } + + public int getShield() { + + if(slots[3] == null || !(slots[3].getItem() instanceof ItemFusionShield)) + return 273; + + return ((ItemFusionShield)slots[3].getItem()).maxTemp; + } @Override public void networkUnpack(NBTTagCompound data) { @@ -310,14 +347,6 @@ public class TileEntityITER extends TileEntityMachineBase implements IConsumer, return 65536.0D; } - public int getShield() { - - if(slots[3] == null || !(slots[3].getItem() instanceof ItemFusionShield)) - return 273; - - return ((ItemFusionShield)slots[3].getItem()).maxTemp; - } - public void disassemble() { int[][][] layout = TileEntityITERStruct.layout; diff --git a/src/main/java/com/hbm/tileentity/machine/TileEntityMachinePlasmaHeater.java b/src/main/java/com/hbm/tileentity/machine/TileEntityMachinePlasmaHeater.java index f9de97dc0..fd41498e3 100644 --- a/src/main/java/com/hbm/tileentity/machine/TileEntityMachinePlasmaHeater.java +++ b/src/main/java/com/hbm/tileentity/machine/TileEntityMachinePlasmaHeater.java @@ -22,7 +22,7 @@ import net.minecraftforge.common.util.ForgeDirection; public class TileEntityMachinePlasmaHeater extends TileEntityMachineBase implements IFluidAcceptor, IConsumer { - public static long power; + public long power; public static final long maxPower = 100000000; public FluidTank[] tanks; @@ -61,15 +61,17 @@ public class TileEntityMachinePlasmaHeater extends TileEntityMachineBase impleme convert = Math.min(convert, maxConv); convert = (int) Math.min(convert, power / powerReq); convert = Math.max(0, convert); + + if(convert > 0) { - tanks[0].setFill(tanks[0].getFill() - convert); - tanks[1].setFill(tanks[1].getFill() - convert); - - plasma.setFill(plasma.getFill() + convert * 2); - power -= convert * powerReq; - - if(convert > 0) + tanks[0].setFill(tanks[0].getFill() - convert); + tanks[1].setFill(tanks[1].getFill() - convert); + + plasma.setFill(plasma.getFill() + convert * 2); + power -= convert * powerReq; + this.markDirty(); + } /// END Managing all the internal stuff /// /// START Loading plasma into the ITER /// @@ -112,10 +114,18 @@ public class TileEntityMachinePlasmaHeater extends TileEntityMachineBase impleme for(int i = 0; i < tanks.length; i++) tanks[i].updateTank(xCoord, yCoord, zCoord, worldObj.provider.dimensionId); plasma.updateTank(xCoord, yCoord, zCoord, worldObj.provider.dimensionId); + + NBTTagCompound data = new NBTTagCompound(); + data.setLong("power", power); + this.networkPack(data, 50); /// END Notif packets /// } } + public void networkUnpack(NBTTagCompound nbt) { + this.power = nbt.getLong("power"); + } + private void updateType() { //if(plasma.getFill() > 0) diff --git a/src/main/java/com/hbm/tileentity/machine/TileEntityPlasmaStruct.java b/src/main/java/com/hbm/tileentity/machine/TileEntityPlasmaStruct.java new file mode 100644 index 000000000..3190a4fdc --- /dev/null +++ b/src/main/java/com/hbm/tileentity/machine/TileEntityPlasmaStruct.java @@ -0,0 +1,20 @@ +package com.hbm.tileentity.machine; + +import cpw.mods.fml.relauncher.Side; +import cpw.mods.fml.relauncher.SideOnly; +import net.minecraft.tileentity.TileEntity; +import net.minecraft.util.AxisAlignedBB; + +public class TileEntityPlasmaStruct extends TileEntity { + + @Override + public AxisAlignedBB getRenderBoundingBox() { + return TileEntity.INFINITE_EXTENT_AABB; + } + + @Override + @SideOnly(Side.CLIENT) + public double getMaxRenderDistanceSquared() { + return 65536.0D; + } +}