diff --git a/gradle.properties b/gradle.properties index 6f5790c4..81c66934 100644 --- a/gradle.properties +++ b/gradle.properties @@ -1,8 +1,8 @@ minecraft_version=1.12.2 mappings_version=stable_39 forge_version=14.23.5.2847 -mod_version=9.8.4 -homebaked=010 +mod_version=9.8.5 +homebaked=020-sddsd2332 mcmp_version=2.5.3 jei_version=4.15.0.289 @@ -18,4 +18,4 @@ crafttweaker_version=4.1.19.548 computercraft_version=1.80pr1 top_version=1.12-1.4.28-17 ae2_version=rv6-stable-5 -jb_annotations=17.0.0 \ No newline at end of file +jb_annotations=17.0.0 diff --git a/src/main/java/mekanism/api/MekanismRecipeHelper.java b/src/main/java/mekanism/api/MekanismRecipeHelper.java index 3d17a884..62e5a895 100644 --- a/src/main/java/mekanism/api/MekanismRecipeHelper.java +++ b/src/main/java/mekanism/api/MekanismRecipeHelper.java @@ -172,4 +172,6 @@ void addPRCRecipe(ItemStack inputSolid, FluidStack inputFluid, GasStack inputGas void addSolarNeutronRecipe(GasStack inputGas, GasStack outputGas); void addIsotopicRecipe(GasStack inputGas, GasStack outputGas); + + // void addSPSRecipe(GasStack inputGas, GasStack outputGas); } \ No newline at end of file diff --git a/src/main/java/mekanism/client/ClientProxy.java b/src/main/java/mekanism/client/ClientProxy.java index e34ba877..ca7b0612 100644 --- a/src/main/java/mekanism/client/ClientProxy.java +++ b/src/main/java/mekanism/client/ClientProxy.java @@ -34,13 +34,7 @@ import mekanism.client.render.item.ItemLayerWrapper; import mekanism.client.render.item.RenderEnergyCubeItem; import mekanism.client.render.item.basicblock.RenderBasicBlockItem; -import mekanism.client.render.item.gear.RenderArmoredJetpack; -import mekanism.client.render.item.gear.RenderAtomicDisassembler; -import mekanism.client.render.item.gear.RenderFlameThrower; -import mekanism.client.render.item.gear.RenderFreeRunners; -import mekanism.client.render.item.gear.RenderGasMask; -import mekanism.client.render.item.gear.RenderJetpack; -import mekanism.client.render.item.gear.RenderScubaTank; +import mekanism.client.render.item.gear.*; import mekanism.client.render.item.machine.RenderMachineItem; import mekanism.client.render.obj.MekanismOBJLoader; import mekanism.client.render.tileentity.*; @@ -237,6 +231,7 @@ public void registerItemRenders() { registerItemRender(MekanismItems.AnchorUpgrade); registerItemRender(MekanismItems.Robit); registerItemRender(MekanismItems.AtomicDisassembler); + registerItemRender(MekanismItems.MekTool); registerItemRender(MekanismItems.EnrichedAlloy); registerItemRender(MekanismItems.ReinforcedAlloy); registerItemRender(MekanismItems.AtomicAlloy); @@ -275,6 +270,9 @@ public void registerItemRenders() { registerItemRender(MekanismItems.TierInstaller); registerItemRender(MekanismItems.OtherDust); + // registerItemRender(MekanismItems.MekaSuitHelmet); + // registerItemRender(MekanismItems.MekaSuitChest); + ModelBakery.registerItemVariants(MekanismItems.WalkieTalkie, ItemWalkieTalkie.OFF_MODEL); for (int i = 1; i <= 9; i++) { @@ -289,12 +287,17 @@ public void registerItemRenders() { MekanismItems.ScubaTank.setTileEntityItemStackRenderer(new RenderScubaTank()); MekanismItems.FreeRunners.setTileEntityItemStackRenderer(new RenderFreeRunners()); MekanismItems.AtomicDisassembler.setTileEntityItemStackRenderer(new RenderAtomicDisassembler()); + MekanismItems.MekTool.setTileEntityItemStackRenderer(new RenderMekTool()); MekanismItems.Flamethrower.setTileEntityItemStackRenderer(new RenderFlameThrower()); Item.getItemFromBlock(MekanismBlocks.EnergyCube).setTileEntityItemStackRenderer(new RenderEnergyCubeItem()); Item.getItemFromBlock(MekanismBlocks.MachineBlock).setTileEntityItemStackRenderer(new RenderMachineItem()); Item.getItemFromBlock(MekanismBlocks.MachineBlock2).setTileEntityItemStackRenderer(new RenderMachineItem()); Item.getItemFromBlock(MekanismBlocks.MachineBlock3).setTileEntityItemStackRenderer(new RenderMachineItem()); Item.getItemFromBlock(MekanismBlocks.BasicBlock2).setTileEntityItemStackRenderer(new RenderBasicBlockItem()); + Item.getItemFromBlock(MekanismBlocks.BasicBlock3).setTileEntityItemStackRenderer(new RenderBasicBlockItem()); + + // MekanismItems.MekaSuitHelmet.setTileEntityItemStackRenderer(new RenderMekaSuitHelmet()); + // MekanismItems.MekaSuitChest.setTileEntityItemStackRenderer(new RenderMekaSuitChest()); } private ModelResourceLocation getInventoryMRL(String type) { @@ -308,6 +311,7 @@ public void registerBlockRenders() { ModelLoader.setCustomStateMapper(MekanismBlocks.MachineBlock3, machineMapper); ModelLoader.setCustomStateMapper(MekanismBlocks.BasicBlock, basicMapper); ModelLoader.setCustomStateMapper(MekanismBlocks.BasicBlock2, basicMapper); + ModelLoader.setCustomStateMapper(MekanismBlocks.BasicBlock3, basicMapper); ModelLoader.setCustomStateMapper(MekanismBlocks.PlasticBlock, plasticMapper); ModelLoader.setCustomStateMapper(MekanismBlocks.SlickPlasticBlock, plasticMapper); ModelLoader.setCustomStateMapper(MekanismBlocks.GlowPlasticBlock, plasticMapper); @@ -515,6 +519,7 @@ public void registerBlockRenders() { ModelLoader.setCustomMeshDefinition(Item.getItemFromBlock(MekanismBlocks.BasicBlock), basicMesher); ModelLoader.setCustomMeshDefinition(Item.getItemFromBlock(MekanismBlocks.BasicBlock2), basicMesher); + ModelLoader.setCustomMeshDefinition(Item.getItemFromBlock(MekanismBlocks.BasicBlock3), basicMesher); ItemMeshDefinition transmitterMesher = stack -> { TransmitterType type = TransmitterType.get(stack.getItemDamage()); @@ -764,6 +769,8 @@ public GuiScreen getClientGui(int ID, EntityPlayer player, World world, BlockPos return new GuiIsotopicCentrifuge(player.inventory, (TileEntityIsotopicCentrifuge) tileEntity); case 62: return new GuiAntiprotonicNucleosynthesizer(player.inventory, (TileEntityAntiprotonicNucleosynthesizer) tileEntity); + // case 63: + // return new GuiSPS(player.inventory, (TileEntitySPSCasing) tileEntity); } return null; } @@ -890,9 +897,18 @@ public void onModelBake(ModelBakeEvent event) { ModelResourceLocation AtomicDisassemblerRL = getInventoryMRL("AtomicDisassembler"); modelRegistry.putObject(AtomicDisassemblerRL, RenderAtomicDisassembler.model = new ItemLayerWrapper(modelRegistry.getObject(AtomicDisassemblerRL))); + ModelResourceLocation MekToolRL = getInventoryMRL("MekTool"); + modelRegistry.putObject(MekToolRL, RenderMekTool.model = new ItemLayerWrapper(modelRegistry.getObject(MekToolRL))); + ModelResourceLocation FlamethrowerRL = getInventoryMRL("Flamethrower"); modelRegistry.putObject(FlamethrowerRL, RenderFlameThrower.model = new ItemLayerWrapper(modelRegistry.getObject(FlamethrowerRL))); + ModelResourceLocation MekaSuitHelmetRL = getInventoryMRL("MekaSuitHelmet"); + modelRegistry.putObject(MekaSuitHelmetRL, RenderMekaSuitHelmet.model = new ItemLayerWrapper(modelRegistry.getObject(MekaSuitHelmetRL))); + + ModelResourceLocation MekaSuitChestRL = getInventoryMRL("MekaSuitChest"); + modelRegistry.putObject(MekaSuitChestRL, RenderMekaSuitChest.model = new ItemLayerWrapper(modelRegistry.getObject(MekaSuitChestRL))); + machineModelBake(modelRegistry, "digital_miner", MachineType.DIGITAL_MINER); machineModelBake(modelRegistry, "solar_neutron_activator", MachineType.SOLAR_NEUTRON_ACTIVATOR); machineModelBake(modelRegistry, "chemical_dissolution_chamber", MachineType.CHEMICAL_DISSOLUTION_CHAMBER); diff --git a/src/main/java/mekanism/client/gui/GuiFactory.java b/src/main/java/mekanism/client/gui/GuiFactory.java index 1f2bf858..c771fdc6 100644 --- a/src/main/java/mekanism/client/gui/GuiFactory.java +++ b/src/main/java/mekanism/client/gui/GuiFactory.java @@ -62,17 +62,7 @@ public GuiFactory(InventoryPlayer inventory, TileEntityFactory tile) { addGuiElement(new GuiUpgradeTab2(this, tileEntity, resource)); addGuiElement(new GuiRedstoneControl2(this, tileEntity, resource)); addGuiElement(new GuiRecipeType2(this, tileEntity, resource)); - }else if (tile.tier == FactoryTier.BASIC ) { - addGuiElement(new GuiSecurityTab(this, tileEntity, resource)); - addGuiElement(new GuiUpgradeTab(this, tileEntity, resource)); - addGuiElement(new GuiRedstoneControl(this, tileEntity, resource)); - addGuiElement(new GuiRecipeType(this, tileEntity, resource)); - }else if (tile.tier == FactoryTier.ADVANCED ) { - addGuiElement(new GuiSecurityTab(this, tileEntity, resource)); - addGuiElement(new GuiUpgradeTab(this, tileEntity, resource)); - addGuiElement(new GuiRedstoneControl(this, tileEntity, resource)); - addGuiElement(new GuiRecipeType(this, tileEntity, resource)); - }else if (tile.tier == FactoryTier.ELITE ) { + }else if (tile.tier == FactoryTier.BASIC || tile.tier == FactoryTier.ADVANCED||tile.tier == FactoryTier.ELITE) { addGuiElement(new GuiSecurityTab(this, tileEntity, resource)); addGuiElement(new GuiUpgradeTab(this, tileEntity, resource)); addGuiElement(new GuiRedstoneControl(this, tileEntity, resource)); @@ -113,7 +103,7 @@ protected void drawGuiContainerForegroundLayer(int mouseX, int mouseY) { fontRenderer.drawString(LangUtils.localize("container.inventory"), 8, (ySize - 93) + 2, 0x404040); int xAxis = mouseX - guiLeft; int yAxis = mouseY - guiTop; - if (tileEntity.tier == FactoryTier.BASIC) { + if (tileEntity.tier == FactoryTier.BASIC || tileEntity.tier == FactoryTier.ADVANCED || tileEntity.tier == FactoryTier.ELITE) { if (xAxis >= 165 && xAxis <= 169 && yAxis >= 17 && yAxis <= 69) { displayTooltip(MekanismUtils.getEnergyDisplay(tileEntity.getEnergy(), tileEntity.getMaxEnergy()), xAxis, yAxis); } else if (xAxis >= 8 && xAxis <= 168 && yAxis >= 78 && yAxis <= 83) { @@ -127,34 +117,6 @@ protected void drawGuiContainerForegroundLayer(int mouseX, int mouseY) { } super.drawGuiContainerForegroundLayer(mouseX, mouseY); } - if (tileEntity.tier == FactoryTier.ADVANCED) { - if (xAxis >= 165 && xAxis <= 169 && yAxis >= 17 && yAxis <= 69) { - displayTooltip(MekanismUtils.getEnergyDisplay(tileEntity.getEnergy(), tileEntity.getMaxEnergy()), xAxis, yAxis); - } else if (xAxis >= 8 && xAxis <= 168 && yAxis >= 78 && yAxis <= 83) { - if (tileEntity.getRecipeType().getFuelType() == MachineFuelType.ADVANCED) { - GasStack gasStack = tileEntity.gasTank.getGas(); - displayTooltip(gasStack != null ? gasStack.getGas().getLocalizedName() + ": " + tileEntity.gasTank.getStored() : LangUtils.localize("gui.none"), xAxis, yAxis); - } else if (tileEntity.getRecipeType() == RecipeType.INFUSING) { - InfuseType type = tileEntity.infuseStored.getType(); - displayTooltip(type != null ? type.getLocalizedName() + ": " + tileEntity.infuseStored.getAmount() : LangUtils.localize("gui.empty"), xAxis, yAxis); - } - } - super.drawGuiContainerForegroundLayer(mouseX, mouseY); - } - if (tileEntity.tier == FactoryTier.ELITE) { - if (xAxis >= 165 && xAxis <= 169 && yAxis >= 17 && yAxis <= 69) { - displayTooltip(MekanismUtils.getEnergyDisplay(tileEntity.getEnergy(), tileEntity.getMaxEnergy()), xAxis, yAxis); - } else if (xAxis >= 8 && xAxis <= 168 && yAxis >= 78 && yAxis <= 83) { - if (tileEntity.getRecipeType().getFuelType() == MachineFuelType.ADVANCED) { - GasStack gasStack = tileEntity.gasTank.getGas(); - displayTooltip(gasStack != null ? gasStack.getGas().getLocalizedName() + ": " + tileEntity.gasTank.getStored() : LangUtils.localize("gui.none"), xAxis, yAxis); - } else if (tileEntity.getRecipeType() == RecipeType.INFUSING) { - InfuseType type = tileEntity.infuseStored.getType(); - displayTooltip(type != null ? type.getLocalizedName() + ": " + tileEntity.infuseStored.getAmount() : LangUtils.localize("gui.empty"), xAxis, yAxis); - } - } - super.drawGuiContainerForegroundLayer(mouseX, mouseY); - } if (tileEntity.tier == FactoryTier.ULTIMATE) { if (xAxis >= 199 && xAxis <= 203 && yAxis >= 17 && yAxis <= 69) { displayTooltip(MekanismUtils.getEnergyDisplay(tileEntity.getEnergy(), tileEntity.getMaxEnergy()), xAxis, yAxis); @@ -177,11 +139,7 @@ protected void drawGuiContainerBackgroundLayer(int xAxis, int yAxis) { int displayInt = tileEntity.getScaledEnergyLevel(52); if (tileEntity.tier == FactoryTier.ULTIMATE) { drawTexturedModalRect(guiLeft + 199, guiTop + 17 + 52 - displayInt, 210, 52 - displayInt, 4, displayInt); - }else if (tileEntity.tier == FactoryTier.BASIC) { - drawTexturedModalRect(guiLeft + 165, guiTop + 17 + 52 - displayInt, 176, 52 - displayInt, 4, displayInt); - }else if (tileEntity.tier == FactoryTier.ADVANCED) { - drawTexturedModalRect(guiLeft + 165, guiTop + 17 + 52 - displayInt, 176, 52 - displayInt, 4, displayInt); - }else if (tileEntity.tier == FactoryTier.ELITE) { + }else if (tileEntity.tier == FactoryTier.BASIC || tileEntity.tier == FactoryTier.ADVANCED || tileEntity.tier == FactoryTier.ELITE) { drawTexturedModalRect(guiLeft + 165, guiTop + 17 + 52 - displayInt, 176, 52 - displayInt, 4, displayInt); } int xOffset = tileEntity.tier == FactoryTier.BASIC ? 59 : tileEntity.tier == FactoryTier.ADVANCED ? 39 : tileEntity.tier == FactoryTier.ULTIMATE ? 31 : 33; @@ -190,11 +148,7 @@ protected void drawGuiContainerBackgroundLayer(int xAxis, int yAxis) { for (int i = 0; i < tileEntity.tier.processes; i++) { int xPos = xOffset + (i * xDistance); displayInt = tileEntity.getScaledProgress(20, i); - if (tileEntity.tier == FactoryTier.BASIC) { - drawTexturedModalRect(guiLeft + xPos, guiTop + 33, 176, 52, 8, displayInt); - }else if (tileEntity.tier == FactoryTier.ADVANCED) { - drawTexturedModalRect(guiLeft + xPos, guiTop + 33, 176, 52, 8, displayInt); - }else if (tileEntity.tier == FactoryTier.ELITE) { + if (tileEntity.tier == FactoryTier.BASIC || tileEntity.tier == FactoryTier.ADVANCED ||tileEntity.tier == FactoryTier.ELITE) { drawTexturedModalRect(guiLeft + xPos, guiTop + 33, 176, 52, 8, displayInt); }else if (tileEntity.tier == FactoryTier.ULTIMATE) { drawTexturedModalRect(guiLeft + xPos, guiTop + 33, 210, 52, 8, displayInt); @@ -208,11 +162,7 @@ protected void drawGuiContainerBackgroundLayer(int xAxis, int yAxis) { MekanismRenderer.color(gas); if (tileEntity.tier == FactoryTier.ULTIMATE) { displayGauge(8, 78, tileEntity.getScaledGasLevel(194), 5, gas.getGas().getSprite()); - }else if (tileEntity.tier == FactoryTier.BASIC) { - displayGauge(8, 78, tileEntity.getScaledGasLevel(160), 5, gas.getGas().getSprite()); - }else if (tileEntity.tier == FactoryTier.ADVANCED) { - displayGauge(8, 78, tileEntity.getScaledGasLevel(160), 5, gas.getGas().getSprite()); - }else if (tileEntity.tier == FactoryTier.ELITE) { + }else if (tileEntity.tier == FactoryTier.BASIC || tileEntity.tier == FactoryTier.ADVANCED ||tileEntity.tier == FactoryTier.ELITE) { displayGauge(8, 78, tileEntity.getScaledGasLevel(160), 5, gas.getGas().getSprite()); } MekanismRenderer.resetColor(); @@ -222,11 +172,7 @@ protected void drawGuiContainerBackgroundLayer(int xAxis, int yAxis) { if (tileEntity.getScaledInfuseLevel(160) > 0) { if (tileEntity.tier == FactoryTier.ULTIMATE) { displayGauge(8, 78, tileEntity.getScaledInfuseLevel(194), 5, tileEntity.infuseStored.getType().sprite); - }else if (tileEntity.tier == FactoryTier.BASIC) { - displayGauge(8, 78, tileEntity.getScaledInfuseLevel(160), 5, tileEntity.infuseStored.getType().sprite); - }else if (tileEntity.tier == FactoryTier.ADVANCED) { - displayGauge(8, 78, tileEntity.getScaledInfuseLevel(160), 5, tileEntity.infuseStored.getType().sprite); - }else if (tileEntity.tier == FactoryTier.ELITE) { + }else if (tileEntity.tier == FactoryTier.BASIC || tileEntity.tier == FactoryTier.ADVANCED ||tileEntity.tier == FactoryTier.ELITE ) { displayGauge(8, 78, tileEntity.getScaledInfuseLevel(160), 5, tileEntity.infuseStored.getType().sprite); } @@ -247,7 +193,7 @@ protected void mouseClicked(int x, int y, int button) throws IOException { if (button == 0 || Keyboard.isKeyDown(Keyboard.KEY_LSHIFT)) { int xAxis = x - guiLeft; int yAxis = y - guiTop; - if (tileEntity.tier == FactoryTier.BASIC) { + if (tileEntity.tier == FactoryTier.BASIC || tileEntity.tier == FactoryTier.ADVANCED ||tileEntity.tier == FactoryTier.ELITE) { if (xAxis > 8 && xAxis < 168 && yAxis > 78 && yAxis < 83) { ItemStack stack = mc.player.inventory.getItemStack(); if (!stack.isEmpty() && stack.getItem() instanceof ItemGaugeDropper) { @@ -256,24 +202,6 @@ protected void mouseClicked(int x, int y, int button) throws IOException { SoundHandler.playSound(SoundEvents.UI_BUTTON_CLICK); } } - }else if(tileEntity.tier == FactoryTier.ADVANCED) { - if (xAxis > 8 && xAxis < 168 && yAxis > 78 && yAxis < 83) { - ItemStack stack = mc.player.inventory.getItemStack(); - if (!stack.isEmpty() && stack.getItem() instanceof ItemGaugeDropper) { - TileNetworkList data = TileNetworkList.withContents(1); - Mekanism.packetHandler.sendToServer(new TileEntityMessage(tileEntity, data)); - SoundHandler.playSound(SoundEvents.UI_BUTTON_CLICK); - } - } - }else if(tileEntity.tier == FactoryTier.ELITE) { - if (xAxis > 8 && xAxis < 168 && yAxis > 78 && yAxis < 83) { - ItemStack stack = mc.player.inventory.getItemStack(); - if (!stack.isEmpty() && stack.getItem() instanceof ItemGaugeDropper) { - TileNetworkList data = TileNetworkList.withContents(1); - Mekanism.packetHandler.sendToServer(new TileEntityMessage(tileEntity, data)); - SoundHandler.playSound(SoundEvents.UI_BUTTON_CLICK); - } - } }else if(tileEntity.tier == FactoryTier.ULTIMATE) { if (xAxis > 8 && xAxis < 202 && yAxis > 78 && yAxis < 83) { ItemStack stack = mc.player.inventory.getItemStack(); diff --git a/src/main/java/mekanism/client/gui/element/GuiRedstoneControl2.java b/src/main/java/mekanism/client/gui/element/GuiRedstoneControl2.java index dedd863d..0efe33f1 100644 --- a/src/main/java/mekanism/client/gui/element/GuiRedstoneControl2.java +++ b/src/main/java/mekanism/client/gui/element/GuiRedstoneControl2.java @@ -71,4 +71,5 @@ public void mouseClicked(int xAxis, int yAxis, int button) { Mekanism.packetHandler.sendToServer(new RedstoneControlMessage(Coord4D.get(tileEntity), RedstoneControl.values()[ordinalToSet])); } } + } \ No newline at end of file diff --git a/src/main/java/mekanism/client/jei/MekanismJEI.java b/src/main/java/mekanism/client/jei/MekanismJEI.java index 6f67c430..293e07aa 100644 --- a/src/main/java/mekanism/client/jei/MekanismJEI.java +++ b/src/main/java/mekanism/client/jei/MekanismJEI.java @@ -85,6 +85,7 @@ public void registerItemSubtypes(ISubtypeRegistry registry) { registry.registerSubtypeInterpreter(Item.getItemFromBlock(MekanismBlocks.MachineBlock3), NBT_INTERPRETER); registry.registerSubtypeInterpreter(Item.getItemFromBlock(MekanismBlocks.BasicBlock), NBT_INTERPRETER); registry.registerSubtypeInterpreter(Item.getItemFromBlock(MekanismBlocks.BasicBlock2), NBT_INTERPRETER); + registry.registerSubtypeInterpreter(Item.getItemFromBlock(MekanismBlocks.BasicBlock3), NBT_INTERPRETER); registry.registerSubtypeInterpreter(Item.getItemFromBlock(MekanismBlocks.GasTank), NBT_INTERPRETER); registry.registerSubtypeInterpreter(Item.getItemFromBlock(MekanismBlocks.CardboardBox), NBT_INTERPRETER); registry.registerSubtypeInterpreter(Item.getItemFromBlock(MekanismBlocks.Transmitter), NBT_INTERPRETER); diff --git a/src/main/java/mekanism/client/model/ModelAtomicDisassembler.java b/src/main/java/mekanism/client/model/ModelAtomicDisassembler.java index d6a847d5..2f52e874 100644 --- a/src/main/java/mekanism/client/model/ModelAtomicDisassembler.java +++ b/src/main/java/mekanism/client/model/ModelAtomicDisassembler.java @@ -34,6 +34,7 @@ public ModelAtomicDisassembler() { Shape1.setRotationPoint(0F, 0F, 0F); Shape1.setTextureSize(64, 32); Shape1.mirror = true; + setRotation(Shape1, 0F, 0F, 0F); Shape2 = new ModelRenderer(this, 34, 9); Shape2.addBox(-0.5F, -3.5F, -3.5F, 2, 5, 2); diff --git a/src/main/java/mekanism/client/model/ModelMekTool.java b/src/main/java/mekanism/client/model/ModelMekTool.java new file mode 100644 index 00000000..f205609f --- /dev/null +++ b/src/main/java/mekanism/client/model/ModelMekTool.java @@ -0,0 +1,399 @@ +package mekanism.client.model; + +import net.minecraft.client.model.ModelBase; +import net.minecraft.client.model.ModelRenderer; + +public class ModelMekTool extends ModelBase { + ModelRenderer bone; + ModelRenderer bone_r1; + ModelRenderer bone2; + ModelRenderer bone2_r1; + ModelRenderer bone3; + ModelRenderer bone3_r1; + ModelRenderer bone4; + ModelRenderer bone4_r1; + ModelRenderer bone5; + ModelRenderer bone5_r1; + ModelRenderer bone6; + ModelRenderer cube_r1; + ModelRenderer cube_r1_r1; + ModelRenderer bone7; + ModelRenderer cube_r2; + ModelRenderer cube_r2_r1; + ModelRenderer bone8; + ModelRenderer cube_r3; + ModelRenderer cube_r3_r1; + ModelRenderer bone9; + ModelRenderer cube_r4; + ModelRenderer cube_r4_r1; + ModelRenderer bone10; + ModelRenderer bone10_r1; + ModelRenderer bone11; + ModelRenderer bone11_r1; + ModelRenderer bone12; + ModelRenderer cube_r5; + ModelRenderer cube_r5_r1; + ModelRenderer bone13; + ModelRenderer cube_r6; + ModelRenderer cube_r6_r1; + ModelRenderer bone14; + ModelRenderer cube_r7; + ModelRenderer cube_r7_r1; + ModelRenderer bone15; + ModelRenderer cube_r8; + ModelRenderer cube_r8_r1; + ModelRenderer bone16; + ModelRenderer bone16_r1; + ModelRenderer bone17; + ModelRenderer bone17_r1; + ModelRenderer bone18; + ModelRenderer bone18_r1; + + public ModelMekTool() { + textureWidth = 64; + textureHeight = 64; + + bone = new ModelRenderer(this); + bone.setRotationPoint(0.0F, 24.0F, 0.0F); + bone.setTextureSize(64, 64); + bone.mirror = true; + + bone_r1 = new ModelRenderer(this,0,17); + bone_r1.setRotationPoint(0.0F, 0.0F, 0.0F); + bone.addChild(bone_r1); + setRotationAngle(bone_r1, -3.1416F, 0.0F, 3.1416F); + bone_r1.addBox(-2.0F, -6.0F, 3.0F, 3, 5, 4); + bone_r1.setTextureSize(64, 64); + bone_r1.mirror = true; + + bone2 = new ModelRenderer(this); + bone2.setRotationPoint(1.0F, 23.0F, 1.0F); + bone2.setTextureSize(64, 64); + bone2.mirror = true; + + + bone2_r1 = new ModelRenderer(this,18,7); + bone2_r1.setRotationPoint(-1.0F, 1.0F, -1.0F); + bone2.addChild(bone2_r1); + setRotationAngle(bone2_r1, -3.1416F, 0.0F, 3.1416F); + bone2_r1.addBox(-1.0F, -4.0F, 4.0F, 3, 2, 4); + bone2_r1.setTextureSize(64, 64); + bone2_r1.mirror = true; + + bone3 = new ModelRenderer(this); + bone3.setRotationPoint(0.0F, 24.0F, 0.0F); + bone3.setTextureSize(64, 64); + bone3.mirror = true; + + + bone3_r1 = new ModelRenderer(this,0,0); + bone3_r1.setRotationPoint(0.0F, 0.0F, 0.0F); + bone3.addChild(bone3_r1); + setRotationAngle(bone3_r1, -3.1416F, 0.0F, 3.1416F); + bone3_r1.addBox(0.0F, -7.0F, 2.0F, 2, 3, 1); + bone3_r1.setTextureSize(64, 64); + bone3_r1.mirror = true; + + bone4 = new ModelRenderer(this); + bone4.setRotationPoint(0.0F, 24.0F, 0.0F); + bone4.setTextureSize(64, 64); + bone4.mirror = true; + + + bone4_r1 = new ModelRenderer(this,0,8); + bone4_r1.setRotationPoint(0.0F, 0.0F, 0.0F); + bone4.addChild(bone4_r1); + setRotationAngle(bone4_r1, -3.1416F, 0.0F, 3.1416F); + bone4_r1.addBox(0.0F, -7.0F, 3.0F, 2, 2, 1); + bone4_r1.setTextureSize(64, 64); + bone4_r1.mirror = true; + + bone5 = new ModelRenderer(this); + bone5.setRotationPoint(0.0F, 24.0F, 0.0F); + bone5.setTextureSize(64, 64); + bone5.mirror = true; + + + bone5_r1 = new ModelRenderer(this,10,17); + bone5_r1.setRotationPoint(0.0F, 0.0F, 0.0F); + bone5.addChild(bone5_r1); + setRotationAngle(bone5_r1, -3.1416F, 0.0F, 3.1416F); + bone5_r1.addBox(0.0F, -6.0F, 4.0F, 2, 1, 2); + bone5_r1.setTextureSize(64, 64); + bone5_r1.mirror = true; + + bone6 = new ModelRenderer(this); + bone6.setRotationPoint(0.0F, 24.0F, 0.0F); + bone6.setTextureSize(64, 64); + bone6.mirror = true; + + + cube_r1 = new ModelRenderer(this); + cube_r1.setRotationPoint(0.0F, -1.0F, -1.0F); + bone6.addChild(cube_r1); + setRotationAngle(cube_r1, 0.2443F, 0.0F, 0.0F); + cube_r1.setTextureSize(64, 64); + cube_r1.mirror = true; + + + cube_r1_r1 = new ModelRenderer(this,14, 17); + cube_r1_r1.setRotationPoint(0.0F, 1.0F, 1.0F); + cube_r1.addChild(cube_r1_r1); + setRotationAngle(cube_r1_r1, -2.653F, 0.0F, -3.1416F); + cube_r1_r1.addBox(-1.0F, -5.0F, 4.0F, 2, 2, 5); + cube_r1_r1.setTextureSize(64, 64); + cube_r1_r1.mirror = true; + + bone7 = new ModelRenderer(this); + bone7.setRotationPoint(0.0F, 24.0F, 0.0F); + bone7.setTextureSize(64, 64); + bone7.mirror = true; + + + cube_r2 = new ModelRenderer(this); + cube_r2.setRotationPoint(0.0F, -1.0F, -1.0F); + bone7.addChild(cube_r2); + setRotationAngle(cube_r2, 0.6981F, 0.0F, 0.0F); + cube_r2.setTextureSize(64, 64); + cube_r2.mirror = true; + + + cube_r2_r1 = new ModelRenderer(this,12, 24); + cube_r2_r1.setRotationPoint(0.0F, 1.0F, 1.0F); + cube_r2.addChild(cube_r2_r1); + setRotationAngle(cube_r2_r1, -1.7454F, 0.0F, -3.1416F); + cube_r2_r1.addBox(-2.15F, -4.0F, 4.0F, 2, 4, 2); + cube_r2_r1.setTextureSize(64, 64); + cube_r2_r1.mirror = true; + + bone8 = new ModelRenderer(this); + bone8.setRotationPoint(0.0F, 24.0F, 0.0F); + bone8.setTextureSize(64, 64);; + bone8.mirror = true; + + cube_r3 = new ModelRenderer(this); + cube_r3.setRotationPoint(0.0F, -1.0F, -1.0F); + bone8.addChild(cube_r3); + setRotationAngle(cube_r3, 0.6981F, 0.0F, 0.0F); + bone8.setTextureSize(64, 64); + bone8.mirror = true; + + cube_r3_r1 = new ModelRenderer(this,21, 0); + cube_r3_r1.setRotationPoint(0.0F, 1.0F, 1.0F); + cube_r3.addChild(cube_r3_r1); + setRotationAngle(cube_r3_r1, -1.7454F, 0.0F, -3.1416F); + cube_r3_r1.addBox(-3.15F, -6.0F, 3.5F, 4, 2, 3); + cube_r3.setTextureSize(64, 64); + cube_r3.mirror = true; + + bone9 = new ModelRenderer(this); + bone9.setRotationPoint(0.0F, 24.0F, 0.0F); + bone9.setTextureSize(64, 64); + bone9.mirror = true; + + + cube_r4 = new ModelRenderer(this); + cube_r4.setRotationPoint(0.0F, -1.0F, 0.0F); + bone9.addChild(cube_r4); + setRotationAngle(cube_r4, -0.2182F, 0.0F, 0.0F); + cube_r4.setTextureSize(64, 64); + cube_r4.mirror = true; + + + cube_r4_r1 = new ModelRenderer(this,13, 0); + cube_r4_r1.setRotationPoint(0.0F, 1.0F, 0.0F); + cube_r4.addChild(cube_r4_r1); + setRotationAngle(cube_r4_r1, 2.7052F, 0.0F, 3.1416F); + cube_r4_r1.addBox(-1.5F, -2.665F, -3.0F, 1, 1, 6); + cube_r4_r1.setTextureSize(64, 64); + cube_r4_r1.mirror = true; + + bone10 = new ModelRenderer(this); + bone10.setRotationPoint(0.0F, 24.0F, 0.0F); + bone10.setTextureSize(64, 64); + bone10.mirror = true; + + + bone10_r1 = new ModelRenderer(this,23, 15); + bone10_r1.setRotationPoint(0.0F, 0.0F, 0.0F); + bone10.addChild(bone10_r1); + setRotationAngle(bone10_r1, -3.1416F, 0.0F, 3.1416F); + bone10_r1.addBox(-3.0F, -6.0F, 1.0F, 4, 4, 2); + bone10_r1.setTextureSize(64, 64); + bone10_r1.mirror = true; + + bone11 = new ModelRenderer(this); + bone11.setRotationPoint(0.0F, 24.0F, 0.0F); + bone11.setTextureSize(64, 64); + bone11.mirror = true; + + + bone11_r1 = new ModelRenderer(this,0,4); + bone11_r1.setRotationPoint(0.0F, 0.0F, 0.0F); + bone11.addChild(bone11_r1); + setRotationAngle(bone11_r1, -3.1416F, 0.0F, 3.1416F); + bone11_r1.addBox(-1.5F, -4.5F, -1.0F, 1, 1, 2,0.1F); + bone11_r1.setTextureSize(64, 64); + bone11_r1.mirror = true; + + bone12 = new ModelRenderer(this); + bone12.setRotationPoint(0.0F, 24.0F, 0.0F); + bone12.setTextureSize(64, 64); + bone12.mirror = true; + + + cube_r5 = new ModelRenderer(this); + cube_r5.setRotationPoint(0.0F, 0.0F, 0.0F); + bone12.addChild(cube_r5); + setRotationAngle(cube_r5, 0.096F, 0.0175F, 0.0F); + bone12.setTextureSize(64, 64); + bone12.mirror = true; + + + cube_r5_r1 = new ModelRenderer(this,9, 9); + cube_r5_r1.setRotationPoint(0.0F, 0.0F, 0.0F); + cube_r5.addChild(cube_r5_r1); + setRotationAngle(cube_r5_r1, -2.9496F, 0.0F, -3.1416F); + cube_r5_r1.addBox(0.0F, -5.85F, -5.4F, 1, 1, 7); + cube_r5_r1.setTextureSize(64, 64); + cube_r5_r1.mirror = true; + + bone13 = new ModelRenderer(this); + bone13.setRotationPoint(-3.0F, 24.0F, 0.0F); + bone13.setTextureSize(64, 64); + bone13.mirror = true; + + + cube_r6 = new ModelRenderer(this); + cube_r6.setRotationPoint(3.0F, 0.0F, 0.0F); + bone13.addChild(cube_r6); + setRotationAngle(cube_r6, 0.096F, -0.0175F, 0.0F); + bone13.setTextureSize(64, 64); + bone13.mirror = true; + + + cube_r6_r1 = new ModelRenderer(this,0, 8); + cube_r6_r1.setRotationPoint(0.0F, 0.0F, 0.0F); + cube_r6.addChild(cube_r6_r1); + setRotationAngle(cube_r6_r1, -2.9496F, 0.0F, -3.1416F); + cube_r6_r1.addBox(-3.0F, -5.85F, -5.4F, 1, 1, 7); + cube_r6_r1.setTextureSize(64, 64); + cube_r6_r1.mirror = true; + + bone14 = new ModelRenderer(this); + bone14.setRotationPoint(0.0F, 24.0F, 0.0F); + bone14.setTextureSize(64, 64); + bone14.mirror = true; + + + cube_r7 = new ModelRenderer(this); + cube_r7.setRotationPoint(0.0F, 0.0F, 0.0F); + bone14.addChild(cube_r7); + setRotationAngle(cube_r7, -0.1004F, 0.0F, 0.0F); + cube_r7.setTextureSize(64, 64); + cube_r7.mirror = true; + + + cube_r7_r1 = new ModelRenderer(this,0,0); + cube_r7_r1.setRotationPoint(0.0F, 0.0F, 0.0F); + cube_r7.addChild(cube_r7_r1); + setRotationAngle(cube_r7_r1, 2.9408F, 0.0F, 3.1416F); + cube_r7_r1.addBox(-2.5F, -3.11F, -6.0F, 3, 1, 7); + cube_r7_r1.setTextureSize(64, 64); + cube_r7_r1.mirror = true; + + bone15 = new ModelRenderer(this); + bone15.setRotationPoint(0.0F, 24.0F, 0.0F); + bone15.setTextureSize(64, 64); + bone15.mirror = true; + + + cube_r8 = new ModelRenderer(this); + cube_r8.setRotationPoint(0.0F, -1.0F, 0.0F); + bone15.addChild(cube_r8); + setRotationAngle(cube_r8, -0.2182F, 0.0F, 0.0F); + cube_r8.setTextureSize(64, 64); + cube_r8.mirror = true; + + + cube_r8_r1 = new ModelRenderer(this,12, 24); + cube_r8_r1.setRotationPoint(0.0F, 1.0F, 0.0F); + cube_r8.addChild(cube_r8_r1); + setRotationAngle(cube_r8_r1, 2.7052F, 0.0F, 3.1416F); + cube_r8_r1.addBox(-2.5F, -2.15F, -4.0F, 3, 2, 2); + cube_r8_r1.setTextureSize(64, 64); + cube_r8_r1.mirror = true; + + bone16 = new ModelRenderer(this); + bone16.setRotationPoint(0.0F, 24.0F, -2.0F); + bone16.setTextureSize(64, 64); + bone16.mirror = true; + + + bone16_r1 = new ModelRenderer(this,0, 11); + bone16_r1.setRotationPoint(0.0F, 0.0F, 2.0F); + bone16.addChild(bone16_r1); + setRotationAngle(bone16_r1, -3.1416F, 0.0F, 3.1416F); + bone16_r1.addBox(-1.5F, -4.5F, -3.0F, 1, 1, 1,0.1F); + bone16_r1.setTextureSize(64, 64); + bone16_r1.mirror = true; + + bone17 = new ModelRenderer(this); + bone17.setRotationPoint(0.0F, 24.0F, -1.0F); + bone17.setTextureSize(64, 64); + bone17.mirror = true; + + + bone17_r1 = new ModelRenderer(this,9,10); + bone17_r1.setRotationPoint(0.0F, 0.0F, 1.0F); + bone17.addChild(bone17_r1); + setRotationAngle(bone17_r1, -3.1416F, 0.0F, 3.1416F); + bone17_r1.addBox(-1.5F, -4.5F, -2.0F, 1, 1, 1); + bone17_r1.setTextureSize(64, 64); + bone17_r1.mirror = true; + + bone18 = new ModelRenderer(this); + bone18.setRotationPoint(0.0F, 24.0F, -1.0F); + bone18.setTextureSize(64, 64); + bone18.mirror = true; + + + bone18_r1 = new ModelRenderer(this,9,8); + bone18_r1.setRotationPoint(0.0F, 0.0F, 1.0F); + bone18.addChild(bone18_r1); + setRotationAngle(bone18_r1, -3.1416F, 0.0F, 3.1416F); + bone18_r1.addBox(-1.5F, -4.5F, -4.0F, 1, 1, 1); + bone18_r1.setTextureSize(64, 64); + bone18_r1.mirror = true; + + } + + + + public void render(float size) { + bone.render(size); + bone2.render(size); + bone3.render(size); + bone4.render(size); + bone5.render(size); + bone6.render(size); + bone7.render(size); + bone8.render(size); + bone9.render(size); + bone10.render(size); + bone11.render(size); + bone12.render(size); + bone13.render(size); + bone14.render(size); + bone15.render(size); + bone16.render(size); + bone17.render(size); + bone18.render(size); + } + + public void setRotationAngle(ModelRenderer modelRenderer, float x, float y, float z) { + modelRenderer.rotateAngleX = x; + modelRenderer.rotateAngleY = y; + modelRenderer.rotateAngleZ = z; + } +} \ No newline at end of file diff --git a/src/main/java/mekanism/client/model/ModelMekaSuitChest.java b/src/main/java/mekanism/client/model/ModelMekaSuitChest.java new file mode 100644 index 00000000..161821e7 --- /dev/null +++ b/src/main/java/mekanism/client/model/ModelMekaSuitChest.java @@ -0,0 +1,753 @@ +package mekanism.client.model; + + + +import mekanism.client.render.MekanismRenderer; +import net.minecraft.client.model.ModelBase; +import net.minecraft.client.model.ModelRenderer; + +public class ModelMekaSuitChest extends ModelBase { + ModelRenderer chest_body_brace1; + ModelRenderer chest_body_brace1_r1; + ModelRenderer chest_body_brace2; + ModelRenderer chest_body_brace2_r1; + ModelRenderer chest_body_brace3; + ModelRenderer chest_body_waist; + ModelRenderer chest_body_led1; + ModelRenderer chest_body_led1_r1; + ModelRenderer chest_body_led2; + ModelRenderer chest_body_led2_r1; + ModelRenderer chest_body_plate1; + ModelRenderer chest_body_plate1_r1; + ModelRenderer chest_body_plate2; + ModelRenderer chest_body_plate2_r1; + ModelRenderer chest_body_plate3; + ModelRenderer chest_body_plate3_r1; + ModelRenderer chest_body_plate4; + ModelRenderer chest_body_plate4_r1; + ModelRenderer chest_body_plate5; + ModelRenderer chest_body_plate5_r1; + ModelRenderer chest_body_satchel1; + ModelRenderer chest_body_satchel1_r1; + ModelRenderer chest_body_satchel2; + ModelRenderer chest_body_satchel2_r1; + ModelRenderer chest_body_satchel3; + ModelRenderer chest_body_satchel3_r1; + ModelRenderer chest_body_lower_plate1; + ModelRenderer chest_body_lower_plate1_r1; + ModelRenderer chest_body_lower_plate2; + ModelRenderer chest_body_lower_plate2_r1; + ModelRenderer chest_body_neck; + ModelRenderer chest_body_shoulder_exo_brace_left; + ModelRenderer chest_body_shoulder_exo_brace_left_r1; + ModelRenderer chest_body_shoulder_exo_brace_right; + ModelRenderer chest_body_shoulder_exo_brace_right_r1; + ModelRenderer chest_body_back_exo_brace_spine; + ModelRenderer chest_body_back_exo_brace_mid; + ModelRenderer chest_body_back_exo_brace_mid_r1; + ModelRenderer chest_body_back_exo_brace_upper; + ModelRenderer chest_body_back_exo_brace_pack; + ModelRenderer shared_chest_leggings_body_brace1; + ModelRenderer shared_chest_leggings_body_brace2; + ModelRenderer chest_left_arm_led1; + ModelRenderer chest_left_arm_upper_plate; + ModelRenderer chest_left_arm_lower_plate; + ModelRenderer chest_left_arm_middle_plate1; + ModelRenderer chest_left_arm_middle_plate2; + ModelRenderer chest_left_arm_brace1; + ModelRenderer chest_left_arm_brace2; + ModelRenderer chest_left_arm_finger1; + ModelRenderer chest_left_arm_finger2; + ModelRenderer chest_left_arm_finger3; + ModelRenderer chest_left_arm_finger4; + ModelRenderer chest_left_arm_finger5; + ModelRenderer chest_left_arm_finger6; + ModelRenderer chest_left_arm_exo_brace3; + ModelRenderer chest_left_arm_exo_brace3_r1; + ModelRenderer chest_left_arm_exo_brace2; + ModelRenderer chest_left_arm_exo_brace2_r1; + ModelRenderer chest_left_arm_exo_brace1; + ModelRenderer chest_left_arm_exo_brace1_r1; + ModelRenderer chest_right_arm_led1; + ModelRenderer chest_right_arm_upper_plate; + ModelRenderer chest_right_arm_lower_plate; + ModelRenderer chest_right_arm_middle_plate1; + ModelRenderer chest_right_arm_middle_plate2; + ModelRenderer chest_right_arm_brace1; + ModelRenderer chest_right_arm_brace2; + ModelRenderer chest_right_arm_finger1; + ModelRenderer chest_right_arm_finger2; + ModelRenderer chest_right_arm_finger3; + ModelRenderer chest_right_arm_finger4; + ModelRenderer chest_right_arm_finger5; + ModelRenderer chest_right_arm_finger6; + ModelRenderer chest_right_arm_exo_brace3; + ModelRenderer chest_right_arm_exo_brace3_r1; + ModelRenderer chest_right_arm_exo_brace2; + ModelRenderer chest_right_arm_exo_brace2_r1; + ModelRenderer chest_right_arm_exo_brace1; + ModelRenderer chest_right_arm_exo_brace1_r1; + ModelRenderer chest_body; + ModelRenderer chest_left_arm; + ModelRenderer chest_right_arm; + + public ModelMekaSuitChest() { + textureWidth = 128; + textureHeight = 128; + + chest_body_brace1 = new ModelRenderer(this); + chest_body_brace1.setRotationPoint(0.0F, 24.0F, 0.0F); + chest_body_brace1.setTextureSize(128, 128); + chest_body_brace1.mirror = true; + + chest_body_brace1_r1 = new ModelRenderer(this); + chest_body_brace1_r1.setRotationPoint(1.0F, -24.694F, -0.0018F); + chest_body_brace1.addChild(chest_body_brace1_r1); + setRotationAngle(chest_body_brace1_r1, -0.1745F, 0.0F, 0.0F); + chest_body_brace1_r1.setTextureOffset(23, 11).addBox(-5.5F, 2.994F, -2.5982F, 9, 1, 5); + chest_body_brace1_r1.setTextureSize(128, 128); + chest_body_brace1_r1.mirror = true; + + chest_body_brace2 = new ModelRenderer(this); + chest_body_brace2.setRotationPoint(0.0F, 24.0F, 0.0F); + chest_body_brace2.setTextureSize(128, 128); + chest_body_brace2.mirror = true; + + + chest_body_brace2_r1 = new ModelRenderer(this); + chest_body_brace2_r1.setRotationPoint(1.0F, -22.7452F, -1.6053F); + chest_body_brace2.addChild(chest_body_brace2_r1); + setRotationAngle(chest_body_brace2_r1, 0.2618F, 0.0F, 0.0F); + chest_body_brace2_r1.setTextureOffset(0, 23).addBox(-5.5F, 3.0952F, -2.5F, 9, 1, 5); + chest_body_brace2_r1.setTextureSize(128, 128); + chest_body_brace2_r1.mirror = true; + + chest_body_brace3 = new ModelRenderer(this); + chest_body_brace3.setRotationPoint(0.0F, 24.0F, 0.0F); + chest_body_brace3.setTextureOffset(24, 8).addBox(-4.5F, -21.4F, 1.25F, 9, 2, 1); + chest_body_brace3.setTextureSize(128, 128); + chest_body_brace3.mirror = true; + + chest_body_waist = new ModelRenderer(this); + chest_body_waist.setRotationPoint(0.0F, 24.0F, 0.0F); + chest_body_waist.setTextureOffset(0, 16).addBox(-4.5F, -16.5F, -2.5F, 9, 2, 5); + chest_body_waist.setTextureSize(128, 128); + chest_body_waist.mirror = true; + + chest_body_led1 = new ModelRenderer(this); + chest_body_led1.setRotationPoint(0.0F, 24.0F, 0.0F); + chest_body_led1.setTextureSize(128, 128); + chest_body_led1.mirror = true; + + + chest_body_led1_r1 = new ModelRenderer(this); + chest_body_led1_r1.setRotationPoint(1.0F, -20.6F, -3.6F); + chest_body_led1.addChild(chest_body_led1_r1); + setRotationAngle(chest_body_led1_r1, -0.0873F, 0.0F, 0.0F); + chest_body_led1_r1.setTextureOffset(0, 29).addBox(-0.5F, -0.5F, -0.47F, 1, 1, 1); + chest_body_led1_r1.setTextureSize(128, 128); + chest_body_led1_r1.mirror = true; + + + chest_body_led2 = new ModelRenderer(this); + chest_body_led2.setRotationPoint(0.0F, 24.0F, 0.0F); + chest_body_led2.setTextureSize(128, 128); + chest_body_led2.mirror = true; + + + + chest_body_led2_r1 = new ModelRenderer(this); + chest_body_led2_r1.setRotationPoint(-1.0F, -20.6F, -3.6F); + chest_body_led2.addChild(chest_body_led2_r1); + setRotationAngle(chest_body_led2_r1, -0.0873F, 0.0F, 0.0F); + chest_body_led2_r1.setTextureOffset(24, 13).addBox(-0.5F, -0.5F, -0.47F, 1, 1, 1); + chest_body_led2_r1.setTextureSize(128, 128); + chest_body_led2_r1.mirror = true; + + + chest_body_plate1 = new ModelRenderer(this); + chest_body_plate1.setRotationPoint(0.0F, 24.0F, 0.0F); + chest_body_plate1.setTextureSize(128, 128); + chest_body_plate1.mirror = true; + + + + chest_body_plate1_r1 = new ModelRenderer(this); + chest_body_plate1_r1.setRotationPoint(-1.0F, -21.0F, -3.0F); + chest_body_plate1.addChild(chest_body_plate1_r1); + setRotationAngle(chest_body_plate1_r1, 0.0873F, 0.0F, 0.0F); + chest_body_plate1_r1.setTextureOffset(55, 11).addBox(-1.5F, -1.2F, -1.0F, 5, 3, 2); + chest_body_plate1_r1.setTextureSize(128, 128); + chest_body_plate1_r1.mirror = true; + + + chest_body_plate2 = new ModelRenderer(this); + chest_body_plate2.setRotationPoint(0.0F, 24.0F, 0.0F); + chest_body_plate2.setTextureSize(128, 128); + chest_body_plate2.mirror = true; + + + + chest_body_plate2_r1 = new ModelRenderer(this); + chest_body_plate2_r1.setRotationPoint(0.0F, -22.0F, -2.0F); + chest_body_plate2.addChild(chest_body_plate2_r1); + setRotationAngle(chest_body_plate2_r1, -0.1745F, 0.0F, 0.0F); + chest_body_plate2_r1.setTextureOffset(50, 0).addBox(-3.5F, -1.0F, -1.0F, 7, 3, 1); + chest_body_plate2_r1.setTextureSize(128, 128); + chest_body_plate2_r1.mirror = true; + + + chest_body_plate3 = new ModelRenderer(this); + chest_body_plate3.setRotationPoint(0.0F, 24.0F, 0.0F); + chest_body_plate3.setTextureSize(128, 128); + chest_body_plate3.mirror = true; + + + + chest_body_plate3_r1 = new ModelRenderer(this); + chest_body_plate3_r1.setRotationPoint(0.0F, -20.3777F, -2.3473F); + chest_body_plate3.addChild(chest_body_plate3_r1); + setRotationAngle(chest_body_plate3_r1, 0.1745F, 0.0F, 0.0F); + chest_body_plate3_r1.setTextureOffset(49, 27).addBox(-3.5F, 0.0F, -1.0F, 7, 2, 1); + chest_body_plate3_r1.setTextureSize(128, 128); + chest_body_plate3_r1.mirror = true; + + + chest_body_plate4 = new ModelRenderer(this); + chest_body_plate4.setRotationPoint(0.0F, 24.0F, 0.0F); + chest_body_plate4.setTextureSize(128, 128); + chest_body_plate4.mirror = true; + + + + chest_body_plate4_r1 = new ModelRenderer(this); + chest_body_plate4_r1.setRotationPoint(-2.0F, -19.0F, -2.0F); + chest_body_plate4.addChild(chest_body_plate4_r1); + setRotationAngle(chest_body_plate4_r1, 0.1745F, 0.0F, 0.0F); + chest_body_plate4_r1.setTextureOffset(59, 37).addBox(-0.15F, -0.5F, -1.5F, 2, 3, 1); + chest_body_plate4_r1.setTextureSize(128, 128); + chest_body_plate4_r1.mirror = true; + + + chest_body_plate5 = new ModelRenderer(this); + chest_body_plate5.setRotationPoint(0.0F, 24.0F, 0.0F); + chest_body_plate5.setTextureSize(128, 128); + chest_body_plate5.mirror = true; + + + + chest_body_plate5_r1 = new ModelRenderer(this); + chest_body_plate5_r1.setRotationPoint(-2.0F, -19.0F, -2.0F); + chest_body_plate5.addChild(chest_body_plate5_r1); + setRotationAngle(chest_body_plate5_r1, 0.1745F, 0.0F, 0.0F); + chest_body_plate5_r1.setTextureOffset(20, 59).addBox(2.15F, -0.5F, -1.5F, 2, 3, 1); + chest_body_plate5_r1.setTextureSize(128, 128); + chest_body_plate5_r1.mirror = true; + + + chest_body_satchel1 = new ModelRenderer(this); + chest_body_satchel1.setRotationPoint(0.0F, 24.0F, 0.0F); + chest_body_satchel1.setTextureSize(128, 128); + chest_body_satchel1.mirror = true; + + + + chest_body_satchel1_r1 = new ModelRenderer(this); + chest_body_satchel1_r1.setRotationPoint(-2.0F, -16.0F, -4.0F); + chest_body_satchel1.addChild(chest_body_satchel1_r1); + setRotationAngle(chest_body_satchel1_r1, 0.0873F, 0.0F, 0.0F); + chest_body_satchel1_r1.setTextureOffset(55, 4).addBox(1.0F, -1.0F, 0.5F, 2, 3, 1); + chest_body_satchel1_r1.setTextureSize(128, 128); + chest_body_satchel1_r1.mirror = true; + + + chest_body_satchel2 = new ModelRenderer(this); + chest_body_satchel2.setRotationPoint(0.0F, 24.0F, 0.0F); + chest_body_satchel2.setTextureSize(128, 128); + chest_body_satchel2.mirror = true; + + + + chest_body_satchel2_r1 = new ModelRenderer(this); + chest_body_satchel2_r1.setRotationPoint(0.5377F, -16.0F, -4.042F); + chest_body_satchel2.addChild(chest_body_satchel2_r1); + setRotationAngle(chest_body_satchel2_r1, 0.0873F, -0.0873F, 0.0F); + chest_body_satchel2_r1.setTextureOffset(48, 21).addBox(0.9623F, -1.0F, 0.5F, 2, 3, 1); + chest_body_satchel2_r1.setTextureSize(128, 128); + chest_body_satchel2_r1.mirror = true; + + + chest_body_satchel3 = new ModelRenderer(this); + chest_body_satchel3.setRotationPoint(0.0F, 24.0F, 0.0F); + chest_body_satchel3.setTextureSize(128, 128); + chest_body_satchel3.mirror = true; + + + + chest_body_satchel3_r1 = new ModelRenderer(this); + chest_body_satchel3_r1.setRotationPoint(-1.9414F, -15.5891F, -2.8755F); + chest_body_satchel3.addChild(chest_body_satchel3_r1); + setRotationAngle(chest_body_satchel3_r1, 0.0873F, 0.0873F, 0.0F); + chest_body_satchel3_r1.setTextureOffset(46, 11).addBox(-1.5586F, -1.5F, -0.5F, 2, 3, 1); + chest_body_satchel3_r1.setTextureSize(128, 128); + chest_body_satchel3_r1.mirror = true; + + + chest_body_lower_plate1 = new ModelRenderer(this); + chest_body_lower_plate1.setRotationPoint(0.0F, 24.0F, 0.0F); + chest_body_lower_plate1.setTextureSize(128, 128); + chest_body_lower_plate1.mirror = true; + + + + chest_body_lower_plate1_r1 = new ModelRenderer(this); + chest_body_lower_plate1_r1.setRotationPoint(-2.0F, -17.0F, -4.0F); + chest_body_lower_plate1.addChild(chest_body_lower_plate1_r1); + setRotationAngle(chest_body_lower_plate1_r1, 0.1745F, 0.0F, 0.0F); + chest_body_lower_plate1_r1.setTextureOffset(12, 29).addBox(1.0F, 4.0F, 0.5F, 2, 2, 1); + chest_body_lower_plate1_r1.setTextureSize(128, 128); + chest_body_lower_plate1_r1.mirror = true; + + + chest_body_lower_plate2 = new ModelRenderer(this); + chest_body_lower_plate2.setRotationPoint(0.0F, 24.0F, 0.0F); + chest_body_lower_plate2.setTextureSize(128, 128); + chest_body_lower_plate2.mirror = true; + + + + chest_body_lower_plate2_r1 = new ModelRenderer(this); + chest_body_lower_plate2_r1.setRotationPoint(-1.0F, -15.0F, -2.0F); + chest_body_lower_plate2.addChild(chest_body_lower_plate2_r1); + setRotationAngle(chest_body_lower_plate2_r1, -0.1745F, 0.0F, 0.0F); + chest_body_lower_plate2_r1.setTextureOffset(54, 30).addBox(-1.5F, -1.0F, -1.0F, 5, 3, 1); + chest_body_lower_plate2_r1.setTextureSize(128, 128); + chest_body_lower_plate2_r1.mirror = true; + + + chest_body_neck = new ModelRenderer(this); + chest_body_neck.setRotationPoint(-2.0F, 5.0F, -2.0F); + chest_body_neck.setTextureOffset(39, 44).addBox(0.0F, -5.55F, 0.0F, 4, 2, 4); + chest_body_neck.setTextureSize(128, 128); + chest_body_neck.mirror = true; + + + chest_body_shoulder_exo_brace_left = new ModelRenderer(this); + chest_body_shoulder_exo_brace_left.setRotationPoint(0.0F, 0.588F, 2.699F); + chest_body_shoulder_exo_brace_left.setTextureSize(128, 128); + chest_body_shoulder_exo_brace_left.mirror = true; + + + + chest_body_shoulder_exo_brace_left_r1 = new ModelRenderer(this); + chest_body_shoulder_exo_brace_left_r1.setRotationPoint(4.0541F, 0.0F, 0.0F); + chest_body_shoulder_exo_brace_left.addChild(chest_body_shoulder_exo_brace_left_r1); + setRotationAngle(chest_body_shoulder_exo_brace_left_r1, 0.0F, 0.2618F, -0.0873F); + chest_body_shoulder_exo_brace_left_r1.setTextureOffset(46, 34).addBox(-4.0F, -1.0F, -0.5F, 8, 2, 1); + chest_body_shoulder_exo_brace_left_r1.setTextureSize(128, 128); + chest_body_shoulder_exo_brace_left_r1.mirror = true; + + + chest_body_shoulder_exo_brace_right = new ModelRenderer(this); + chest_body_shoulder_exo_brace_right.setRotationPoint(0.0F, 0.588F, 2.699F); + chest_body_shoulder_exo_brace_right.setTextureSize(128, 128); + chest_body_shoulder_exo_brace_right.mirror = true; + + + + chest_body_shoulder_exo_brace_right_r1 = new ModelRenderer(this); + chest_body_shoulder_exo_brace_right_r1.setRotationPoint(-4.076F, 0.0F, 0.0F); + chest_body_shoulder_exo_brace_right.addChild(chest_body_shoulder_exo_brace_right_r1); + setRotationAngle(chest_body_shoulder_exo_brace_right_r1, 0.0F, -0.2618F, 0.0873F); + chest_body_shoulder_exo_brace_right_r1.setTextureOffset(44, 8).addBox(-4.0F, -1.0F, -0.5F, 8, 2, 1); + chest_body_shoulder_exo_brace_right_r1.setTextureSize(128, 128); + chest_body_shoulder_exo_brace_right_r1.mirror = true; + + + chest_body_back_exo_brace_spine = new ModelRenderer(this); + chest_body_back_exo_brace_spine.setRotationPoint(0.0F, 5.8299F, 2.683F); + chest_body_back_exo_brace_spine.setTextureOffset(39, 50).addBox(-1.0F, -6.3299F, -1.683F, 2, 11, 2); + chest_body_back_exo_brace_spine.setTextureSize(128, 128); + chest_body_back_exo_brace_spine.mirror = true; + + + chest_body_back_exo_brace_mid = new ModelRenderer(this); + chest_body_back_exo_brace_mid.setRotationPoint(0.0F, 5.8299F, 2.683F); + chest_body_back_exo_brace_mid.setTextureSize(128, 128); + chest_body_back_exo_brace_mid.mirror = true; + + + + chest_body_back_exo_brace_mid_r1 = new ModelRenderer(this); + chest_body_back_exo_brace_mid_r1.setRotationPoint(0.0F, -0.8782F, -0.1155F); + chest_body_back_exo_brace_mid.addChild(chest_body_back_exo_brace_mid_r1); + setRotationAngle(chest_body_back_exo_brace_mid_r1, -0.0873F, 0.0F, 0.0F); + chest_body_back_exo_brace_mid_r1.setTextureOffset(25, 44).addBox(-2.5F, -3.5F, -1.0F, 5, 7, 2); + chest_body_back_exo_brace_mid_r1.setTextureSize(128, 128); + chest_body_back_exo_brace_mid_r1.mirror = true; + + + chest_body_back_exo_brace_upper = new ModelRenderer(this); + chest_body_back_exo_brace_upper.setRotationPoint(0.0F, 5.8299F, 2.683F); + chest_body_back_exo_brace_upper.setTextureOffset(28, 17).addBox(-3.5F, -5.3249F, -1.1792F, 7, 5, 3); + chest_body_back_exo_brace_upper.setTextureSize(128, 128); + chest_body_back_exo_brace_upper.mirror = true; + + + chest_body_back_exo_brace_pack = new ModelRenderer(this); + chest_body_back_exo_brace_pack.setRotationPoint(0.0F, 5.8299F, 2.683F); + chest_body_back_exo_brace_pack.setTextureOffset(12, 49).addBox(-2.0F, -9.3299F, 0.817F, 4, 7, 2); + chest_body_back_exo_brace_pack.setTextureSize(128, 128); + chest_body_back_exo_brace_pack.mirror = true; + + + shared_chest_leggings_body_brace1 = new ModelRenderer(this); + shared_chest_leggings_body_brace1.setRotationPoint(0.0F, 11.5228F, 2.5229F); + shared_chest_leggings_body_brace1.setTextureOffset(20, 0).addBox(-5.0F, -2.0228F, -2.0191F, 10, 2, 2); + shared_chest_leggings_body_brace1.setTextureSize(128, 128); + shared_chest_leggings_body_brace1.mirror = true; + + + shared_chest_leggings_body_brace2 = new ModelRenderer(this); + shared_chest_leggings_body_brace2.setRotationPoint(0.0F, 11.5228F, 2.5229F); + shared_chest_leggings_body_brace2.setTextureOffset(24, 4).addBox(-2.0F, -1.0F, -1.0F, 4, 2, 2); + shared_chest_leggings_body_brace2.setTextureSize(128, 128); + shared_chest_leggings_body_brace2.mirror = true; + + chest_left_arm_led1 = new ModelRenderer(this); + chest_left_arm_led1.setRotationPoint(6.0F, 2.5F, 0.0F); + chest_left_arm_led1.setTextureOffset(24, 11).addBox(1.05F, 3.0F, -2.05F, 1, 1, 1); + chest_left_arm_led1.setTextureSize(128, 128); + chest_left_arm_led1.mirror = true; + + + chest_left_arm_upper_plate = new ModelRenderer(this); + chest_left_arm_upper_plate.setRotationPoint(6.0F, 2.5F, 0.0F); + chest_left_arm_upper_plate.setTextureOffset(39, 0).addBox(-0.3454F, -2.3145F, -2.5F, 3, 3, 5); + chest_left_arm_upper_plate.setTextureSize(128, 128); + chest_left_arm_upper_plate.mirror = true; + + chest_left_arm_lower_plate = new ModelRenderer(this); + chest_left_arm_lower_plate.setRotationPoint(6.0F, 2.5F, 0.0F); + chest_left_arm_lower_plate.setTextureOffset(0, 54).addBox(0.5F, 5.5F, -2.5F, 2, 4, 4); + chest_left_arm_lower_plate.setTextureSize(128, 128); + chest_left_arm_lower_plate.mirror = true; + + chest_left_arm_middle_plate1 = new ModelRenderer(this); + chest_left_arm_middle_plate1.setRotationPoint(6.0F, 2.5F, 0.0F); + chest_left_arm_middle_plate1.setTextureOffset(40, 25).addBox(-2.5F, 1.5F, -2.505F, 2, 4, 5); + chest_left_arm_middle_plate1.setTextureSize(128, 128); + chest_left_arm_middle_plate1.mirror = true; + + chest_left_arm_middle_plate2 = new ModelRenderer(this); + chest_left_arm_middle_plate2.setRotationPoint(6.0F, 2.5F, 0.0F); + chest_left_arm_middle_plate2.setTextureOffset(48, 12).addBox(-0.5F, 1.5F, -2.75F, 1, 4, 5); + chest_left_arm_middle_plate2.setTextureSize(128, 128); + chest_left_arm_middle_plate2.mirror = true; + + chest_left_arm_brace1 = new ModelRenderer(this); + chest_left_arm_brace1.setRotationPoint(6.0F, 2.5F, 0.0F); + chest_left_arm_brace1.setTextureOffset(19, 53).addBox(0.5F, 2.25F, -2.5F, 2, 1, 5); + chest_left_arm_brace1.setTextureSize(128, 128); + chest_left_arm_brace1.mirror = true; + + chest_left_arm_brace2 = new ModelRenderer(this); + chest_left_arm_brace2.setRotationPoint(6.0F, 2.5F, 0.0F); + chest_left_arm_brace2.setTextureOffset(47, 51).addBox(0.5F, 3.75F, -2.5F, 2, 1, 5); + chest_left_arm_brace2.setTextureSize(128, 128); + chest_left_arm_brace2.mirror = true; + + chest_left_arm_finger1 = new ModelRenderer(this); + chest_left_arm_finger1.setRotationPoint(6.0F, 2.5F, 0.0F); + chest_left_arm_finger1.setTextureOffset(46, 39).addBox(-0.5F, 9.5F, -2.5F, 3, 1, 1); + chest_left_arm_finger1.setTextureSize(128, 128); + chest_left_arm_finger1.mirror = true; + + chest_left_arm_finger2 = new ModelRenderer(this); + chest_left_arm_finger2.setRotationPoint(6.0F, 2.5F, 0.0F); + chest_left_arm_finger2.setTextureOffset(46, 37).addBox(-0.5F, 9.5F, -0.5F, 3, 1, 1); + chest_left_arm_finger2.setTextureSize(128, 128); + chest_left_arm_finger2.mirror = true; + + chest_left_arm_finger3 = new ModelRenderer(this); + chest_left_arm_finger3.setRotationPoint(6.0F, 2.5F, 0.0F); + chest_left_arm_finger3.setTextureOffset(27, 42).addBox(-0.5F, 9.5F, -1.5F, 3, 1, 1); + chest_left_arm_finger3.setTextureSize(128, 128); + chest_left_arm_finger3.mirror = true; + + chest_left_arm_finger4 = new ModelRenderer(this); + chest_left_arm_finger4.setRotationPoint(6.0F, 2.5F, 0.0F); + chest_left_arm_finger4.setTextureOffset(20, 41).addBox(-0.5F, 9.5F, 0.5F, 3, 1, 1); + chest_left_arm_finger4.setTextureSize(128, 128); + chest_left_arm_finger4.mirror = true; + + chest_left_arm_finger5 = new ModelRenderer(this); + chest_left_arm_finger5.setRotationPoint(6.0F, 2.5F, 0.0F); + chest_left_arm_finger5.setTextureOffset(23, 23).addBox(-2.5F, 7.5F, -1.5F, 1, 3, 1) + .setTextureSize(128, 128) + .mirror = true; + + chest_left_arm_finger6 = new ModelRenderer(this); + chest_left_arm_finger6.setRotationPoint(6.0F, 2.5F, 0.0F); + chest_left_arm_finger6.setTextureOffset(0, 23).addBox(-2.5F, 7.5F, -0.5F, 1, 3, 1) + .setTextureSize(128, 128) + .mirror = true; + + chest_left_arm_exo_brace3 = new ModelRenderer(this); + chest_left_arm_exo_brace3.setRotationPoint(6.0F, 2.5F, 0.0F); + chest_left_arm_exo_brace3.setTextureSize(128, 128); + chest_left_arm_exo_brace3.mirror = true; + + + chest_left_arm_exo_brace3_r1 = new ModelRenderer(this); + chest_left_arm_exo_brace3_r1.setRotationPoint(1.55F, 7.5669F, 1.8402F); + chest_left_arm_exo_brace3.addChild(chest_left_arm_exo_brace3_r1); + setRotationAngle(chest_left_arm_exo_brace3_r1, -0.2618F, 0.0F, 0.0F); + chest_left_arm_exo_brace3_r1.setTextureOffset(58, 19).addBox(-1.0F, -2.5F, -1.0F, 2, 5, 2) + .setTextureSize(128, 128) + .mirror = true; + + chest_left_arm_exo_brace2 = new ModelRenderer(this); + chest_left_arm_exo_brace2.setRotationPoint(6.0F, 2.5F, 0.0F); + chest_left_arm_exo_brace2.setTextureSize(128, 128) + .mirror = true; + + + chest_left_arm_exo_brace2_r1 = new ModelRenderer(this); + chest_left_arm_exo_brace2_r1.setRotationPoint(1.5F, 4.6772F, 2.1713F); + chest_left_arm_exo_brace2.addChild(chest_left_arm_exo_brace2_r1); + setRotationAngle(chest_left_arm_exo_brace2_r1, 0.0873F, 0.0F, 0.0F); + chest_left_arm_exo_brace2_r1.setTextureOffset(47, 57).addBox(-1.5F, -1.0F, -1.5F, 3, 2, 3) + .setTextureSize(128, 128) + .mirror = true; + + chest_left_arm_exo_brace1 = new ModelRenderer(this); + chest_left_arm_exo_brace1.setRotationPoint(6.0F, 2.5F, 0.0F); + chest_left_arm_exo_brace1.setTextureSize(128, 128); + chest_left_arm_exo_brace1.mirror = true; + + + chest_left_arm_exo_brace1_r1 = new ModelRenderer(this); + chest_left_arm_exo_brace1_r1.setRotationPoint(2.418F, 0.7177F, 0.995F); + chest_left_arm_exo_brace1.addChild(chest_left_arm_exo_brace1_r1); + setRotationAngle(chest_left_arm_exo_brace1_r1, 0.0F, 0.0F, -0.0873F); + chest_left_arm_exo_brace1_r1.setTextureOffset(30, 56).addBox(-0.5F, -3.0F, -1.5F, 1, 6, 3); + chest_left_arm_exo_brace1_r1.setTextureSize(128, 128); + chest_left_arm_exo_brace1_r1.mirror = true; + + chest_right_arm_led1 = new ModelRenderer(this); + chest_right_arm_led1.setRotationPoint(-6.0F, 2.5F, 0.0F); + chest_right_arm_led1.setTextureOffset(23, 19).addBox(-2.05F, 3.0F, -2.05F, 1, 1, 1); + chest_right_arm_led1.setTextureSize(128, 128); + chest_right_arm_led1.mirror = true; + + chest_right_arm_upper_plate = new ModelRenderer(this); + chest_right_arm_upper_plate.setRotationPoint(-6.0F, 2.5F, 0.0F); + chest_right_arm_upper_plate.setTextureOffset(35, 36).addBox(-2.7449F, -2.308F, -2.5F, 3, 3, 5); + chest_right_arm_upper_plate.setTextureSize(128, 128); + chest_right_arm_upper_plate.mirror = true; + + chest_right_arm_lower_plate = new ModelRenderer(this); + chest_right_arm_lower_plate.setRotationPoint(-6.0F, 2.5F, 0.0F); + chest_right_arm_lower_plate.setTextureOffset(51, 37).addBox(-2.5F, 5.5F, -2.5F, 2, 4, 4); + chest_right_arm_lower_plate.setTextureSize(128, 128); + chest_right_arm_lower_plate.mirror = true; + + chest_right_arm_middle_plate1 = new ModelRenderer(this); + chest_right_arm_middle_plate1.setRotationPoint(-6.0F, 2.5F, 0.0F); + chest_right_arm_middle_plate1.setTextureOffset(11, 40).addBox(0.5F, 1.5F, -2.505F, 2, 4, 5); + chest_right_arm_middle_plate1.setTextureSize(128, 128); + chest_right_arm_middle_plate1.mirror = true; + + chest_right_arm_middle_plate2 = new ModelRenderer(this); + chest_right_arm_middle_plate2.setRotationPoint(-6.0F, 2.5F, 0.0F); + chest_right_arm_middle_plate2.setTextureOffset(0, 45).addBox(-0.5F, 1.5F, -2.75F, 1, 4, 5); + chest_right_arm_middle_plate2.setTextureSize(128, 128); + chest_right_arm_middle_plate2.mirror = true; + + chest_right_arm_brace1 = new ModelRenderer(this); + chest_right_arm_brace1.setRotationPoint(-6.0F, 2.5F, 0.0F); + chest_right_arm_brace1.setTextureOffset(50, 45).addBox(-2.5F, 2.25F, -2.5F, 2, 1, 5); + chest_right_arm_brace1.setTextureSize(128, 128); + chest_right_arm_brace1.mirror = true; + + chest_right_arm_brace2 = new ModelRenderer(this); + chest_right_arm_brace2.setRotationPoint(-6.0F, 2.5F, 0.0F); + chest_right_arm_brace2.setTextureOffset(49, 21).addBox(-2.5F, 3.75F, -2.5F, 2, 1, 5); + chest_right_arm_brace2.setTextureSize(128, 128); + chest_right_arm_brace2.mirror = true; + + chest_right_arm_finger1 = new ModelRenderer(this); + chest_right_arm_finger1.setRotationPoint(-6.0F, 2.5F, 0.0F); + chest_right_arm_finger1.setTextureOffset(16, 38).addBox(-2.5F, 9.5F, -2.5F, 3, 1, 1); + chest_right_arm_finger1.setTextureSize(128, 128); + chest_right_arm_finger1.mirror = true; + + chest_right_arm_finger2 = new ModelRenderer(this); + chest_right_arm_finger2.setRotationPoint(-6.0F, 2.5F, 0.0F); + chest_right_arm_finger2.setTextureOffset(36, 27).addBox(-2.5F, 9.5F, -0.5F, 3, 1, 1); + chest_right_arm_finger2.setTextureSize(128, 128); + chest_right_arm_finger2.mirror = true; + + chest_right_arm_finger3 = new ModelRenderer(this); + chest_right_arm_finger3.setRotationPoint(-6.0F, 2.5F, 0.0F); + chest_right_arm_finger3.setTextureOffset(36, 25).addBox(-2.5F, 9.5F, -1.5F, 3, 1, 1); + chest_right_arm_finger3.setTextureSize(128, 128); + chest_right_arm_finger3.mirror = true; + + chest_right_arm_finger4 = new ModelRenderer(this); + chest_right_arm_finger4.setRotationPoint(-6.0F, 2.5F, 0.0F); + chest_right_arm_finger4.setTextureOffset(23, 17).addBox(-2.5F, 9.5F, 0.5F, 3, 1, 1); + chest_right_arm_finger4.setTextureSize(128, 128); + chest_right_arm_finger4.mirror = true; + + chest_right_arm_finger5 = new ModelRenderer(this); + chest_right_arm_finger5.setRotationPoint(-6.0F, 2.5F, 0.0F); + chest_right_arm_finger5.setTextureOffset(0, 16).addBox(1.5F, 7.5F, -1.5F, 1, 3, 1); + chest_right_arm_finger5.setTextureSize(128, 128); + chest_right_arm_finger5.mirror = true; + + chest_right_arm_finger6 = new ModelRenderer(this); + chest_right_arm_finger6.setRotationPoint(-6.0F, 2.5F, 0.0F); + chest_right_arm_finger6.setTextureOffset(0, 0).addBox(1.5F, 7.5F, -0.5F, 1, 3, 1); + chest_right_arm_finger6.setTextureSize(128, 128); + chest_right_arm_finger6.mirror = true; + + chest_right_arm_exo_brace3 = new ModelRenderer(this); + chest_right_arm_exo_brace3.setRotationPoint(-6.0F, 2.5F, 0.0F); + chest_right_arm_exo_brace3.setTextureSize(128, 128); + chest_right_arm_exo_brace3.mirror = true; + + + chest_right_arm_exo_brace3_r1 = new ModelRenderer(this); + chest_right_arm_exo_brace3_r1.setRotationPoint(-1.45F, 7.5669F, 1.8402F); + chest_right_arm_exo_brace3.addChild(chest_right_arm_exo_brace3_r1); + setRotationAngle(chest_right_arm_exo_brace3_r1, -0.2618F, 0.0F, 0.0F); + chest_right_arm_exo_brace3_r1.setTextureOffset(12, 58).addBox(-1.0F, -2.5F, -1.0F, 2, 5, 2); + chest_right_arm_exo_brace3_r1.setTextureSize(128, 128); + chest_right_arm_exo_brace3_r1.mirror = true; + + chest_right_arm_exo_brace2 = new ModelRenderer(this); + chest_right_arm_exo_brace2.setRotationPoint(-6.0F, 2.5F, 0.0F); + chest_right_arm_exo_brace2.setTextureSize(128, 128); + chest_right_arm_exo_brace2.mirror = true; + + + chest_right_arm_exo_brace2_r1 = new ModelRenderer(this); + chest_right_arm_exo_brace2_r1.setRotationPoint(-1.5F, 4.6772F, 2.1713F); + chest_right_arm_exo_brace2.addChild(chest_right_arm_exo_brace2_r1); + setRotationAngle(chest_right_arm_exo_brace2_r1, 0.0873F, 0.0F, 0.0F); + chest_right_arm_exo_brace2_r1.setTextureOffset(56, 51).addBox(-1.5F, -1.0F, -1.5F, 3, 2, 3); + chest_right_arm_exo_brace2_r1.setTextureSize(128, 128); + chest_right_arm_exo_brace2_r1.mirror = true; + + chest_right_arm_exo_brace1 = new ModelRenderer(this); + chest_right_arm_exo_brace1.setRotationPoint(-6.0F, 2.5F, 0.0F); + chest_right_arm_exo_brace1.setTextureSize(128, 128); + chest_right_arm_exo_brace1.mirror = true; + + + chest_right_arm_exo_brace1_r1 = new ModelRenderer(this); + chest_right_arm_exo_brace1_r1.setRotationPoint(-2.582F, 0.7177F, 0.995F); + chest_right_arm_exo_brace1.addChild(chest_right_arm_exo_brace1_r1); + setRotationAngle(chest_right_arm_exo_brace1_r1, 0.0F, 0.0F, 0.0873F); + chest_right_arm_exo_brace1_r1.setTextureOffset(16, 29).addBox(-0.426F, -3.0F, -1.5F, 1, 6, 3); + chest_right_arm_exo_brace1_r1.setTextureSize(128, 128); + chest_right_arm_exo_brace1_r1.mirror = true; + + chest_body = new ModelRenderer(this); + chest_body.setRotationPoint(0.0F, 24.0F, 0.0F); + chest_body.setTextureOffset(0, 0).addBox(-4.0F, -23.5F, -2.005F, 8, 12, 4); + chest_body.setTextureSize(128, 128); + chest_body.mirror = true; + + chest_left_arm = new ModelRenderer(this); + chest_left_arm.setRotationPoint(0.0F, 24.0F, 0.0F); + chest_left_arm.setTextureOffset(0, 29).addBox(4.0F, -23.5F, -2.0F, 4, 12, 4); + chest_left_arm.setTextureSize(128, 128); + chest_left_arm.mirror = true; + + chest_right_arm = new ModelRenderer(this); + chest_right_arm.setRotationPoint(0.0F, 24.0F, 0.0F); + chest_right_arm.setTextureOffset(24, 25).addBox(-8.0F, -23.5F, -2.0F, 4, 12, 4); + chest_right_arm.setTextureSize(128, 128); + chest_right_arm.mirror = true; + + } + + public void render(float size) { + chest_body_brace1.render(size); + chest_body_brace2.render(size); + chest_body_brace3.render(size); + chest_body_waist.render(size); + chest_body_plate1.render(size); + chest_body_plate2.render(size); + chest_body_plate3.render(size); + chest_body_plate4.render(size); + chest_body_plate5.render(size); + chest_body_satchel1.render(size); + chest_body_satchel2.render(size); + chest_body_satchel3.render(size); + chest_body_lower_plate1.render(size); + chest_body_lower_plate2.render(size); + chest_body_neck.render(size); + chest_body_shoulder_exo_brace_left.render(size); + chest_body_shoulder_exo_brace_right.render(size); + chest_body_back_exo_brace_spine.render(size); + chest_body_back_exo_brace_mid.render(size); + chest_body_back_exo_brace_upper.render(size); + chest_body_back_exo_brace_pack.render(size); + shared_chest_leggings_body_brace1.render(size); + shared_chest_leggings_body_brace2.render(size); + chest_left_arm_upper_plate.render(size); + chest_left_arm_lower_plate.render(size); + chest_left_arm_middle_plate1.render(size); + chest_left_arm_middle_plate2.render(size); + chest_left_arm_brace1.render(size); + chest_left_arm_brace2.render(size); + chest_left_arm_finger1.render(size); + chest_left_arm_finger2.render(size); + chest_left_arm_finger3.render(size); + chest_left_arm_finger4.render(size); + chest_left_arm_finger5.render(size); + chest_left_arm_finger6.render(size); + chest_left_arm_exo_brace3.render(size); + chest_left_arm_exo_brace2.render(size); + chest_left_arm_exo_brace1.render(size); + chest_right_arm_upper_plate.render(size); + chest_right_arm_lower_plate.render(size); + chest_right_arm_middle_plate1.render(size); + chest_right_arm_middle_plate2.render(size); + chest_right_arm_brace1.render(size); + chest_right_arm_brace2.render(size); + chest_right_arm_finger1.render(size); + chest_right_arm_finger2.render(size); + chest_right_arm_finger3.render(size); + chest_right_arm_finger4.render(size); + chest_right_arm_finger5.render(size); + chest_right_arm_finger6.render(size); + chest_right_arm_exo_brace3.render(size); + chest_right_arm_exo_brace2.render(size); + chest_right_arm_exo_brace1.render(size); + chest_body.render(size); + chest_left_arm.render(size); + chest_right_arm.render(size); + + MekanismRenderer.GlowInfo glowInfo = MekanismRenderer.enableGlow(); + chest_body_led1.render(size); + chest_body_led2.render(size); + chest_left_arm_led1.render(size); + chest_right_arm_led1.render(size); + MekanismRenderer.disableGlow(glowInfo); + + + + + } + + public void setRotationAngle(ModelRenderer modelRenderer, float x, float y, float z) { + modelRenderer.rotateAngleX = x; + modelRenderer.rotateAngleY = y; + modelRenderer.rotateAngleZ = z; + } +} \ No newline at end of file diff --git a/src/main/java/mekanism/client/model/ModelMekaSuitHelmet.java b/src/main/java/mekanism/client/model/ModelMekaSuitHelmet.java new file mode 100644 index 00000000..ef0b3385 --- /dev/null +++ b/src/main/java/mekanism/client/model/ModelMekaSuitHelmet.java @@ -0,0 +1,287 @@ +package mekanism.client.model; + + + +import mekanism.client.render.MekanismRenderer; +import net.minecraft.client.model.ModelBase; +import net.minecraft.client.model.ModelRenderer; +import net.minecraftforge.fml.relauncher.Side; +import net.minecraftforge.fml.relauncher.SideOnly; + + +@SideOnly(Side.CLIENT) +public class ModelMekaSuitHelmet extends ModelBase { + ModelRenderer bone; + ModelRenderer helmet_head_center1_r1; + ModelRenderer bone2; + ModelRenderer bone3; + ModelRenderer helmet_head_center3_r1; + ModelRenderer bone4; + ModelRenderer bone5; + ModelRenderer bone6; + ModelRenderer bone7; + ModelRenderer bone8; + ModelRenderer bone9; + ModelRenderer bone10; + ModelRenderer bone11; + ModelRenderer bone12; + ModelRenderer helmet_head_chin2_r1; + ModelRenderer bone13; + ModelRenderer bone14; + ModelRenderer bone15; + ModelRenderer bone16; + ModelRenderer bone17; + ModelRenderer bone18; + ModelRenderer bone19; + ModelRenderer bone20; + ModelRenderer bone21; + ModelRenderer bone22; + ModelRenderer bone23; + ModelRenderer helmet_head_visor_lower_r1; + ModelRenderer bone24; + ModelRenderer helmet_head_visor_upper_r1; + ModelRenderer bone25; + ModelRenderer bone26; + + public ModelMekaSuitHelmet() { + textureWidth = 64; + textureHeight = 64; + + bone = new ModelRenderer(this); + bone.setRotationPoint(0.0F, 24.0F, 0.0F); + bone.setTextureSize(64, 64); + bone.mirror = true; + + helmet_head_center1_r1 = new ModelRenderer(this,0,30); + helmet_head_center1_r1.setRotationPoint(-3.0F, -23.4654F, -3.6669F); + bone.addChild(helmet_head_center1_r1); + setRotationAngle(helmet_head_center1_r1, 0.4363F, 0.0F, 0.0F); + helmet_head_center1_r1.addBox(2.0F, -7.0F, 2.0F, 2, 1, 2); + helmet_head_center1_r1.setTextureSize(64, 64); + helmet_head_center1_r1.mirror = true; + + bone2 = new ModelRenderer(this,26,24); + bone2.setRotationPoint(0.0F, 1.5F, -1.0F); + bone2.addBox(-1.0F, -9.0F, -2.0F, 2, 1, 5); + bone2.setTextureSize(64, 64); + bone2.mirror = true; + + bone3 = new ModelRenderer(this); + bone3.setRotationPoint(0.0F, 24.0F, 0.0F); + bone3.setTextureSize(64, 64); + bone3.mirror = true; + + + helmet_head_center3_r1 = new ModelRenderer(this,11,24); + helmet_head_center3_r1.setRotationPoint(-3.0F, -25.1924F, -1.1959F); + bone3.addChild(helmet_head_center3_r1); + setRotationAngle(helmet_head_center3_r1, -0.6109F, 0.0F, 0.0F); + helmet_head_center3_r1.addBox(2.0F, -7.0F, -1.0F, 2, 1, 2); + helmet_head_center3_r1.setTextureSize(64, 64); + helmet_head_center3_r1.mirror = true; + + bone4 = new ModelRenderer(this,0,12); + bone4.setRotationPoint(0.0F, 24.0F, 0.0F); + bone4.addBox(-1.0F, -30.5F, 3.0F, 2, 1, 1); + bone4.setTextureSize(64, 64); + bone4.mirror = true; + + bone5 = new ModelRenderer(this,19,14); + bone5.setRotationPoint(0.0F, 24.0F, 0.0F); + bone5.addBox(1.0F, -31.0F, -3.5F, 1, 2, 7); + bone5.setTextureSize(64, 64); + bone5.mirror = true; + + bone6 = new ModelRenderer(this,19,5); + bone6.setRotationPoint(0.0F, 24.0F, 0.0F); + bone6.addBox(-2.0F, -31.0F, -3.5F, 1, 2, 7); + bone6.setTextureSize(64, 64); + bone6.mirror = true; + + bone7 = new ModelRenderer(this,19,14); + bone7.setRotationPoint(0.0F, 24.0F, 0.0F); + bone7.addBox(-2.0F, -26.5F, 2.5F, 1, 1, 1); + bone7.setTextureSize(64, 64); + bone7.mirror = true; + + bone8 = new ModelRenderer(this,19,5); + bone8.setRotationPoint(0.0F, 24.0F, 0.0F); + bone8.addBox(1.0F, -26.5F, 2.5F, 1, 1, 1); + bone8.setTextureSize(64, 64); + bone8.mirror = true; + + bone9 = new ModelRenderer(this,21,29); + bone9.setRotationPoint(0.0F, 24.0F, 0.0F); + bone9.addBox(3.0F, -27.5F, -1.0F, 1, 2, 3); + bone9.setTextureSize(64, 64); + bone9.mirror = true; + + bone10 = new ModelRenderer(this,13,29); + bone10.setRotationPoint(0.0F, 24.0F, 0.0F); + bone10.addBox(-4.0F, -27.5F, -1.0F, 1, 2, 3); + bone10.setTextureSize(64, 64); + bone10.mirror = true; + + bone11 = new ModelRenderer(this,19,0); + bone11.setRotationPoint(0.0F, 24.0F, 0.0F); + bone11.addBox(-3.5F, -24.5F, -5.0F, 7, 1, 4); + bone11.setTextureSize(64, 64); + bone11.mirror = true; + + bone12 = new ModelRenderer(this); + bone12.setRotationPoint(0.0F, 24.0F, 0.0F); + bone12.setTextureSize(64, 64); + bone12.mirror = true; + + + helmet_head_chin2_r1 = new ModelRenderer(this,0,20); + helmet_head_chin2_r1.setRotationPoint(-1.0F, -23.8536F, 5.0104F); + bone12.addChild(helmet_head_chin2_r1); + setRotationAngle(helmet_head_chin2_r1, 0.7854F, 0.0F, 0.0F); + helmet_head_chin2_r1.addBox(-2.5F, -5.0F, -4.5F, 7, 1, 3); + helmet_head_chin2_r1.setTextureSize(64, 64); + helmet_head_chin2_r1.mirror = true; + + bone13 = new ModelRenderer(this,0,0); + bone13.setRotationPoint(0.0F, 24.0F, 0.0F); + bone13.addBox(-1.0F, -25.25F, -5.5F, 2, 2, 1); + bone13.setTextureSize(64, 64); + bone13.mirror = true; + + bone14 = new ModelRenderer(this,0,12); + bone14.setRotationPoint(0.0F, 24.0F, 0.0F); + bone14.addBox(-3.0F, -30.5F, -4.0F, 6, 1, 7); + bone14.setTextureSize(64, 64); + bone14.mirror = true; + + bone15 = new ModelRenderer(this,0,5); + bone15.setRotationPoint(0.0F, 24.0F, 0.0F); + bone15.addBox(1.0F, -30.5F, -5.0F, 2, 1, 1); + bone15.setTextureSize(64, 64); + bone15.mirror = true; + + bone16 = new ModelRenderer(this,0,3); + bone16.setRotationPoint(0.0F, 24.0F, 0.0F); + bone16.addBox(-3.0F, -30.5F, -5.0F, 2, 1, 1); + bone16.setTextureSize(64, 64); + bone16.mirror = true; + + bone17 = new ModelRenderer(this,0,24); + bone17.setRotationPoint(0.0F, 24.0F, 0.0F); + bone17.addBox(1.0F, -29.5F, -2.0F, 3, 1, 5); + bone17.setTextureSize(64, 64); + bone17.mirror = true; + + bone18 = new ModelRenderer(this,3,16); + bone18.setRotationPoint(0.0F, 24.0F, 0.0F); + bone18.addBox(3.0F, -28.5F, 2.0F, 1, 2, 1); + bone18.setTextureSize(64, 64); + bone18.mirror = true; + + bone19 = new ModelRenderer(this,15,23); + bone19.setRotationPoint(0.0F, 24.0F, 0.0F); + bone19.addBox(-4.0F, -29.5F, -2.0F, 3, 1, 5); + bone19.setTextureSize(64, 64); + bone19.mirror = true; + + bone20 = new ModelRenderer(this,0,14); + bone20.setRotationPoint(0.0F, 24.0F, 0.0F); + bone20.addBox(-4.0F, -28.5F, 2.0F, 1, 2, 1); + bone20.setTextureSize(64, 64); + bone20.mirror = true; + + bone21 = new ModelRenderer(this,28,14); + bone21.setRotationPoint(0.0F, 24.0F, 0.0F); + bone21.addBox(-3.0F, -29.5F, 3.0F, 6, 3, 1); + bone21.setTextureSize(64, 64); + bone21.mirror = true; + + bone22 = new ModelRenderer(this,0,0); + bone22.setRotationPoint(0.0F, 24.0F, 0.0F); + bone22.addBox(-3.0F, -29.5F, -4.0F, 6, 5, 7); + bone22.setTextureSize(64, 64); + bone22.mirror = true; + + bone23 = new ModelRenderer(this); + bone23.setRotationPoint(0.0F, 24.0F, 0.0F); + bone23.setTextureSize(64, 64); + bone23.mirror = true; + + + helmet_head_visor_lower_r1 = new ModelRenderer(this,28,5); + helmet_head_visor_lower_r1.setRotationPoint(-1.0F, -24.5F, -1.0F); + bone23.addChild(helmet_head_visor_lower_r1); + setRotationAngle(helmet_head_visor_lower_r1, 0.1745F, 0.0F, 0.0F); + helmet_head_visor_lower_r1.addBox(-1.995F, -4.0F, -3.5F, 6, 4, 2); + helmet_head_visor_lower_r1.setTextureSize(64, 64); + helmet_head_visor_lower_r1.mirror = true; + + bone24 = new ModelRenderer(this); + bone24.setRotationPoint(0.0F, 24.0F, 0.0F); + bone24.setTextureSize(64, 64); + bone24.mirror = true; + + + helmet_head_visor_upper_r1 = new ModelRenderer(this,28,18); + helmet_head_visor_upper_r1.setRotationPoint(-1.0F, -24.751F, -3.2677F); + bone24.addChild(helmet_head_visor_upper_r1); + setRotationAngle(helmet_head_visor_upper_r1, -0.4363F, 0.0F, 0.0F); + helmet_head_visor_upper_r1.addBox(-1.975F, -4.0F, -3.0F, 6, 2, 1); + helmet_head_visor_upper_r1.setTextureSize(64, 64); + helmet_head_visor_upper_r1.mirror = true; + + bone25 = new ModelRenderer(this,19,2); + bone25.setRotationPoint(0.0F, 24.0F, 0.0F); + bone25.addBox(3.005F, -28.5F, -0.005F, 1, 1, 1); + bone25.setTextureSize(64, 64); + bone25.mirror = true; + + bone26 = new ModelRenderer(this,19,0); + bone26.setRotationPoint(0.0F, 24.0F, 0.0F); + bone26.addBox(-3.995F, -28.5F, -0.005F, 1, 1, 1); + bone26.setTextureSize(64, 64); + bone26.mirror = true; + + } + + + public void render(float size) { + bone.render(size); + bone2.render(size); + bone3.render(size); + bone4.render(size); + bone5.render(size); + bone6.render(size); + bone7.render(size); + bone8.render(size); + bone9.render(size); + bone10.render(size); + bone11.render(size); + bone12.render(size); + bone13.render(size); + bone14.render(size); + bone15.render(size); + bone16.render(size); + bone17.render(size); + bone18.render(size); + bone19.render(size); + bone20.render(size); + bone21.render(size); + bone22.render(size); + bone23.render(size); + bone24.render(size); + + + MekanismRenderer.GlowInfo glowInfo = MekanismRenderer.enableGlow(); + bone25.render(size); + bone26.render(size); + MekanismRenderer.disableGlow(glowInfo); + + } + + public void setRotationAngle(ModelRenderer modelRenderer, float x, float y, float z) { + modelRenderer.rotateAngleX = x; + modelRenderer.rotateAngleY = y; + modelRenderer.rotateAngleZ = z; + } +} \ No newline at end of file diff --git a/src/main/java/mekanism/client/render/ModelCustomArmor.java b/src/main/java/mekanism/client/render/ModelCustomArmor.java index e738eea9..bb34d5b8 100644 --- a/src/main/java/mekanism/client/render/ModelCustomArmor.java +++ b/src/main/java/mekanism/client/render/ModelCustomArmor.java @@ -1,11 +1,8 @@ package mekanism.client.render; import javax.annotation.Nonnull; -import mekanism.client.model.ModelArmoredJetpack; -import mekanism.client.model.ModelFreeRunners; -import mekanism.client.model.ModelGasMask; -import mekanism.client.model.ModelJetpack; -import mekanism.client.model.ModelScubaTank; + +import mekanism.client.model.*; import mekanism.client.render.MekanismRenderer.GlowInfo; import mekanism.common.util.MekanismUtils; import mekanism.common.util.MekanismUtils.ResourceType; @@ -133,13 +130,17 @@ public enum ArmorModel { ARMOREDJETPACK(1, MekanismUtils.getResource(ResourceType.RENDER, "Jetpack.png")), SCUBATANK(1, MekanismUtils.getResource(ResourceType.RENDER, "ScubaSet.png")), GASMASK(0, MekanismUtils.getResource(ResourceType.RENDER, "ScubaSet.png")), - FREERUNNERS(3, MekanismUtils.getResource(ResourceType.RENDER, "FreeRunners.png")); + FREERUNNERS(3, MekanismUtils.getResource(ResourceType.RENDER, "FreeRunners.png")), + MEKASUITHELMET(0,MekanismUtils.getResource(ResourceType.RENDER, "MekaSuitHelmet.png")), + MEKASUITCHEST(1,MekanismUtils.getResource(ResourceType.RENDER, "MekaSuitChest.png")); public static ModelJetpack jetpackModel = new ModelJetpack(); public static ModelArmoredJetpack armoredJetpackModel = new ModelArmoredJetpack(); public static ModelGasMask gasMaskModel = new ModelGasMask(); public static ModelScubaTank scubaTankModel = new ModelScubaTank(); public static ModelFreeRunners freeRunnersModel = new ModelFreeRunners(); + public static ModelMekaSuitHelmet mekaSuitHelmet = new ModelMekaSuitHelmet(); + public static ModelMekaSuitChest mekaSuitChest = new ModelMekaSuitChest(); public int armorSlot; public ResourceLocation resource; @@ -192,11 +193,16 @@ public void render(float size) { ArmorModel.jetpackModel.render(0.0625F); } else if (biped.modelType == ArmorModel.ARMOREDJETPACK) { ArmorModel.armoredJetpackModel.render(0.0625F); - } else if (biped.modelType == ArmorModel.SCUBATANK) { + } else if (biped.modelType == ArmorModel.MEKASUITCHEST) { + ArmorModel.mekaSuitChest.render(0.0625F); + }else if (biped.modelType == ArmorModel.SCUBATANK) { ArmorModel.scubaTankModel.render(0.0625F); } else if (biped.modelType == ArmorModel.GASMASK) { GlStateManager.translate(0, 0, -0.05F); ArmorModel.gasMaskModel.render(0.0625F); + } else if (biped.modelType == ArmorModel.MEKASUITHELMET) { + GlStateManager.translate(0, 0, -0.05F); + ArmorModel.mekaSuitHelmet.render(0.0625F); } else if (biped.modelType == ArmorModel.FREERUNNERS) { GlStateManager.scale(1.02F, 1.02F, 1.02F); if (partRender == biped.bipedLeftLeg) { diff --git a/src/main/java/mekanism/client/render/item/gear/RenderFlameThrower.java b/src/main/java/mekanism/client/render/item/gear/RenderFlameThrower.java index 105a6aed..9bed3666 100644 --- a/src/main/java/mekanism/client/render/item/gear/RenderFlameThrower.java +++ b/src/main/java/mekanism/client/render/item/gear/RenderFlameThrower.java @@ -53,6 +53,7 @@ protected void renderItemSpecific(@Nonnull ItemStack stack, TransformType transf } flamethrower.render(0.0625F); GlStateManager.popMatrix(); + } @Nonnull diff --git a/src/main/java/mekanism/client/render/item/gear/RenderMekTool.java b/src/main/java/mekanism/client/render/item/gear/RenderMekTool.java new file mode 100644 index 00000000..865bc5ee --- /dev/null +++ b/src/main/java/mekanism/client/render/item/gear/RenderMekTool.java @@ -0,0 +1,65 @@ +package mekanism.client.render.item.gear; + +import mekanism.client.model.ModelMekTool; +import mekanism.client.render.MekanismRenderer; +import mekanism.client.render.item.ItemLayerWrapper; +import mekanism.client.render.item.MekanismItemStackRenderer; +import mekanism.common.util.MekanismUtils; +import mekanism.common.util.MekanismUtils.ResourceType; +import net.minecraft.client.renderer.GlStateManager; +import net.minecraft.client.renderer.block.model.ItemCameraTransforms.TransformType; +import net.minecraft.item.ItemStack; +import net.minecraftforge.fml.relauncher.Side; +import net.minecraftforge.fml.relauncher.SideOnly; + +import javax.annotation.Nonnull; + +@SideOnly(Side.CLIENT) +public class RenderMekTool extends MekanismItemStackRenderer { + + private static ModelMekTool mekTool = new ModelMekTool(); + public static ItemLayerWrapper model; + + @Override + protected void renderBlockSpecific(@Nonnull ItemStack stack, TransformType transformType) { + } + + @Override + protected void renderItemSpecific(@Nonnull ItemStack stack, TransformType transformType) { + GlStateManager.pushMatrix(); + GlStateManager.rotate(160, 0, 0, 1); + MekanismRenderer.bindTexture(MekanismUtils.getResource(ResourceType.RENDER, "MekTool.png")); + GlStateManager.translate(0, -1.0F, 0); + GlStateManager.rotate(135, 0, 1, 0); + GlStateManager.rotate(-20, 0, 0, 1); + + if (transformType == TransformType.FIRST_PERSON_RIGHT_HAND || transformType == TransformType.THIRD_PERSON_RIGHT_HAND + || transformType == TransformType.FIRST_PERSON_LEFT_HAND || transformType == TransformType.THIRD_PERSON_LEFT_HAND) { + if (transformType == TransformType.FIRST_PERSON_RIGHT_HAND) { + GlStateManager.rotate(55, 0, 1, 0); + } else if (transformType == TransformType.FIRST_PERSON_LEFT_HAND) { + GlStateManager.rotate(-160, 0, 1, 0); + GlStateManager.rotate(30, 1, 0, 0); + } else if (transformType == TransformType.THIRD_PERSON_RIGHT_HAND) { + GlStateManager.translate(0, 0.7F, 0); + GlStateManager.rotate(75, 0, 1, 0); + } else {//if(type == TransformType.THIRD_PERSON_LEFT_HAND) + GlStateManager.translate(-0.5F, 0.7F, 0); + } + GlStateManager.scale(2.5F, 2.5F, 2.5F); + GlStateManager.translate(0, -1.0F, -0.5F); + } else if (transformType == TransformType.GUI) { + GlStateManager.translate(-0.6F, 0, 0); + GlStateManager.rotate(45, 0, 1, 0); + } + mekTool.render(0.0625F); + GlStateManager.popMatrix(); + + } + + @Nonnull + @Override + protected TransformType getTransform(@Nonnull ItemStack stack) { + return model.getTransform(); + } +} \ No newline at end of file diff --git a/src/main/java/mekanism/client/render/item/gear/RenderMekaSuitChest.java b/src/main/java/mekanism/client/render/item/gear/RenderMekaSuitChest.java new file mode 100644 index 00000000..13d6777e --- /dev/null +++ b/src/main/java/mekanism/client/render/item/gear/RenderMekaSuitChest.java @@ -0,0 +1,43 @@ +package mekanism.client.render.item.gear; + +import mekanism.client.model.ModelMekaSuitChest; +import mekanism.client.render.MekanismRenderer; +import mekanism.client.render.item.ItemLayerWrapper; +import mekanism.client.render.item.MekanismItemStackRenderer; +import mekanism.common.util.MekanismUtils; +import mekanism.common.util.MekanismUtils.ResourceType; +import net.minecraft.client.renderer.GlStateManager; +import net.minecraft.client.renderer.block.model.ItemCameraTransforms.TransformType; +import net.minecraft.item.ItemStack; +import net.minecraftforge.fml.relauncher.Side; +import net.minecraftforge.fml.relauncher.SideOnly; + +import javax.annotation.Nonnull; + +@SideOnly(Side.CLIENT) +public class RenderMekaSuitChest extends MekanismItemStackRenderer { + + private static ModelMekaSuitChest mekaSuitChest = new ModelMekaSuitChest(); + public static ItemLayerWrapper model; + + @Override + protected void renderBlockSpecific(@Nonnull ItemStack stack, TransformType transformType) { + } + + @Override + protected void renderItemSpecific(@Nonnull ItemStack stack, TransformType transformType) { + GlStateManager.pushMatrix(); + GlStateManager.rotate(180, 0, 0, 1); + GlStateManager.rotate(90, 0, -1, 0); + GlStateManager.translate(0.2F, -0.35F, 0); + MekanismRenderer.bindTexture(MekanismUtils.getResource(ResourceType.RENDER, "MekaSuitChest.png")); + mekaSuitChest.render(0.0625F); + GlStateManager.popMatrix(); + } + + @Nonnull + @Override + protected TransformType getTransform(@Nonnull ItemStack stack) { + return model.getTransform(); + } +} \ No newline at end of file diff --git a/src/main/java/mekanism/client/render/item/gear/RenderMekaSuitHelmet.java b/src/main/java/mekanism/client/render/item/gear/RenderMekaSuitHelmet.java new file mode 100644 index 00000000..18961c42 --- /dev/null +++ b/src/main/java/mekanism/client/render/item/gear/RenderMekaSuitHelmet.java @@ -0,0 +1,48 @@ +package mekanism.client.render.item.gear; + +import mekanism.client.model.ModelMekaSuitHelmet; +import mekanism.client.render.MekanismRenderer; +import mekanism.client.render.item.ItemLayerWrapper; +import mekanism.client.render.item.MekanismItemStackRenderer; +import mekanism.common.util.MekanismUtils; +import mekanism.common.util.MekanismUtils.ResourceType; +import net.minecraft.client.renderer.GlStateManager; +import net.minecraft.client.renderer.block.model.ItemCameraTransforms.TransformType; +import net.minecraft.item.ItemStack; +import net.minecraftforge.fml.relauncher.Side; +import net.minecraftforge.fml.relauncher.SideOnly; + +import javax.annotation.Nonnull; + +@SideOnly(Side.CLIENT) +public class RenderMekaSuitHelmet extends MekanismItemStackRenderer { + + private static ModelMekaSuitHelmet mekaSuitHelmet = new ModelMekaSuitHelmet(); + public static ItemLayerWrapper model; + + @Override + protected void renderBlockSpecific(@Nonnull ItemStack stack, TransformType transformType) { + } + + @Override + protected void renderItemSpecific(@Nonnull ItemStack stack, TransformType transformType) { + GlStateManager.pushMatrix(); + GlStateManager.scale(1.4F, 1.4F, 1.4F); + GlStateManager.rotate(180, 0, 0, 1); + GlStateManager.rotate(90, 0, -1, 0); + GlStateManager.translate(0.1F, 0.2F, 0); + MekanismRenderer.bindTexture(MekanismUtils.getResource(ResourceType.RENDER, "MekaSuitHelmet.png")); + + mekaSuitHelmet.render(0.0625F); + + + GlStateManager.popMatrix(); + } + + @Nonnull + @Override + protected TransformType getTransform(@Nonnull ItemStack stack) { + return model.getTransform(); + } + +} \ No newline at end of file diff --git a/src/main/java/mekanism/common/Mekanism.java b/src/main/java/mekanism/common/Mekanism.java index 5427e5ac..668fcd91 100644 --- a/src/main/java/mekanism/common/Mekanism.java +++ b/src/main/java/mekanism/common/Mekanism.java @@ -96,7 +96,6 @@ import net.minecraft.world.WorldServer; import net.minecraft.world.biome.Biome; import net.minecraft.world.biome.BiomeProvider; -import net.minecraftforge.client.event.ColorHandlerEvent; import net.minecraftforge.client.event.ModelRegistryEvent; import net.minecraftforge.common.ForgeChunkManager; import net.minecraftforge.common.MinecraftForge; @@ -784,6 +783,9 @@ private void registerTileEntities() { registerTileEntity(TileEntityUniversalCable.class, "universal_cable"); registerTileEntity(TileEntityNutritionalLiquifier.class, "nutritional_liquifier"); + registerTileEntity(TileEntitySuperchargedCoil.class,"supercharged_coil"); + + //Register the TESRs proxy.registerTESRs(); @@ -846,6 +848,7 @@ public void preInit(FMLPreInitializationEvent event) { MinecraftForge.EVENT_BUS.register(MekanismItems.GasMask); MinecraftForge.EVENT_BUS.register(MekanismItems.FreeRunners); + // MinecraftForge.EVENT_BUS.register(MekanismItems.MekaSuitHelmet); if (Loader.isModLoaded("mcmultipart")) { //Set up multiparts diff --git a/src/main/java/mekanism/common/MekanismBlocks.java b/src/main/java/mekanism/common/MekanismBlocks.java index e422241b..f25bd79d 100644 --- a/src/main/java/mekanism/common/MekanismBlocks.java +++ b/src/main/java/mekanism/common/MekanismBlocks.java @@ -2,6 +2,7 @@ import static mekanism.common.block.states.BlockStateBasic.BasicBlock.BASIC_BLOCK_1; import static mekanism.common.block.states.BlockStateBasic.BasicBlock.BASIC_BLOCK_2; +import static mekanism.common.block.states.BlockStateBasic.BasicBlock.BASIC_BLOCK_3; import static mekanism.common.block.states.BlockStateMachine.MachineBlock.MACHINE_BLOCK_1; import static mekanism.common.block.states.BlockStateMachine.MachineBlock.MACHINE_BLOCK_2; import static mekanism.common.block.states.BlockStateMachine.MachineBlock.MACHINE_BLOCK_3; @@ -41,6 +42,7 @@ public class MekanismBlocks { public static Block BasicBlock = BlockBasic.getBlockBasic(BASIC_BLOCK_1); public static Block BasicBlock2 = BlockBasic.getBlockBasic(BASIC_BLOCK_2); + public static Block BasicBlock3 = BlockBasic.getBlockBasic(BASIC_BLOCK_3); public static Block MachineBlock = BlockMachine.getBlockMachine(MACHINE_BLOCK_1); public static Block MachineBlock2 = BlockMachine.getBlockMachine(MACHINE_BLOCK_2); public static Block MachineBlock3 = BlockMachine.getBlockMachine(MACHINE_BLOCK_3); @@ -68,6 +70,7 @@ public class MekanismBlocks { public static void registerBlocks(IForgeRegistry registry) { registry.register(init(BasicBlock, "BasicBlock")); registry.register(init(BasicBlock2, "BasicBlock2")); + registry.register(init(BasicBlock3, "BasicBlock3")); registry.register(init(MachineBlock, "MachineBlock")); registry.register(init(MachineBlock2, "MachineBlock2")); registry.register(init(MachineBlock3, "MachineBlock3")); @@ -97,6 +100,7 @@ public static void registerBlocks(IForgeRegistry registry) { public static void registerItemBlocks(IForgeRegistry registry) { registry.register(MekanismItems.init(new ItemBlockBasic(BasicBlock), "BasicBlock")); registry.register(MekanismItems.init(new ItemBlockBasic(BasicBlock2), "BasicBlock2")); + registry.register(MekanismItems.init(new ItemBlockBasic(BasicBlock3), "BasicBlock3")); registry.register(MekanismItems.init(new ItemBlockMachine(MachineBlock), "MachineBlock")); registry.register(MekanismItems.init(new ItemBlockMachine(MachineBlock2), "MachineBlock2")); registry.register(MekanismItems.init(new ItemBlockMachine(MachineBlock3), "MachineBlock3")); diff --git a/src/main/java/mekanism/common/MekanismItems.java b/src/main/java/mekanism/common/MekanismItems.java index dd757cdd..11ecddc9 100644 --- a/src/main/java/mekanism/common/MekanismItems.java +++ b/src/main/java/mekanism/common/MekanismItems.java @@ -1,40 +1,6 @@ package mekanism.common; -import mekanism.common.item.ItemAlloy; -import mekanism.common.item.ItemAtomicDisassembler; -import mekanism.common.item.ItemBalloon; -import mekanism.common.item.ItemClump; -import mekanism.common.item.ItemConfigurationCard; -import mekanism.common.item.ItemConfigurator; -import mekanism.common.item.ItemControlCircuit; -import mekanism.common.item.ItemCraftingFormula; -import mekanism.common.item.ItemCrystal; -import mekanism.common.item.ItemDictionary; -import mekanism.common.item.ItemDirtyDust; -import mekanism.common.item.ItemDust; -import mekanism.common.item.ItemElectricBow; -import mekanism.common.item.ItemEnergized; -import mekanism.common.item.ItemFlamethrower; -import mekanism.common.item.ItemFreeRunners; -import mekanism.common.item.ItemGasMask; -import mekanism.common.item.ItemGaugeDropper; -import mekanism.common.item.ItemHDPE; -import mekanism.common.item.ItemIngot; -import mekanism.common.item.ItemJetpack; -import mekanism.common.item.ItemMekanism; -import mekanism.common.item.ItemNetworkReader; -import mekanism.common.item.ItemNugget; -import mekanism.common.item.ItemOtherDust; -import mekanism.common.item.ItemPortableTeleporter; -import mekanism.common.item.ItemProxy; -import mekanism.common.item.ItemRobit; -import mekanism.common.item.ItemScubaTank; -import mekanism.common.item.ItemSeismicReader; -import mekanism.common.item.ItemShard; -import mekanism.common.item.ItemTierInstaller; -import mekanism.common.item.ItemUpgrade; -import mekanism.common.item.ItemWalkieTalkie; -import mekanism.common.item.ItemCanteen; +import mekanism.common.item.*; import net.minecraft.item.Item; import net.minecraft.util.ResourceLocation; import net.minecraftforge.fml.common.registry.GameRegistry.ObjectHolder; @@ -86,6 +52,13 @@ public class MekanismItems { public static final ItemFreeRunners FreeRunners = new ItemFreeRunners(); public static final Item Balloon = new ItemBalloon(); + public static final ItemMekTool MekTool = new ItemMekTool(); +// public static final ItemMekaSuitHelmet MekaSuitHelmet = new ItemMekaSuitHelmet(); + // public static final ItemMekaSuitChest MekaSuitChest = new ItemMekaSuitChest(); + + + + //Multi-ID Items public static final Item OtherDust = new ItemOtherDust(); public static final Item Dust = new ItemDust(); @@ -119,6 +92,7 @@ public static void registerItems(IForgeRegistry registry) { registry.register(init(AnchorUpgrade, "AnchorUpgrade")); registry.register(init(Robit, "Robit")); registry.register(init(AtomicDisassembler, "AtomicDisassembler")); + registry.register(init(MekTool, "MekTool")); registry.register(init(EnrichedAlloy, "EnrichedAlloy")); registry.register(init(ReinforcedAlloy, "ReinforcedAlloy")); registry.register(init(AtomicAlloy, "AtomicAlloy")); @@ -158,6 +132,9 @@ public static void registerItems(IForgeRegistry registry) { registry.register(init(GaugeDropper, "GaugeDropper")); registry.register(init(TierInstaller, "TierInstaller")); registry.register(init(OtherDust, "OtherDust")); + + // registry.register(init(MekaSuitHelmet, "MekaSuitHelmet")); + // registry.register(init(MekaSuitChest, "MekaSuitChest")); } public static Item init(Item item, String name) { diff --git a/src/main/java/mekanism/common/Upgrade.java b/src/main/java/mekanism/common/Upgrade.java index 3d86fe36..968947e1 100644 --- a/src/main/java/mekanism/common/Upgrade.java +++ b/src/main/java/mekanism/common/Upgrade.java @@ -17,10 +17,10 @@ import net.minecraftforge.common.util.Constants.NBT; public enum Upgrade { - SPEED("speed", 8, EnumColor.RED), - ENERGY("energy", 8, EnumColor.BRIGHT_GREEN), + SPEED("speed", 10, EnumColor.RED), + ENERGY("energy", 10, EnumColor.BRIGHT_GREEN), FILTER("filter", 1, EnumColor.DARK_AQUA), - GAS("gas", 8, EnumColor.YELLOW), + GAS("gas", 10, EnumColor.YELLOW), MUFFLING("muffling", 4, EnumColor.DARK_GREY), ANCHOR("anchor", 1, EnumColor.DARK_GREEN); diff --git a/src/main/java/mekanism/common/block/BlockMachine.java b/src/main/java/mekanism/common/block/BlockMachine.java index e778e95d..b4961550 100644 --- a/src/main/java/mekanism/common/block/BlockMachine.java +++ b/src/main/java/mekanism/common/block/BlockMachine.java @@ -33,13 +33,7 @@ import mekanism.common.security.ISecurityItem; import mekanism.common.security.ISecurityTile; import mekanism.common.tier.FluidTankTier; -import mekanism.common.tile.TileEntityFactory; -import mekanism.common.tile.TileEntityFluidTank; -import mekanism.common.tile.TileEntityLaser; -import mekanism.common.tile.TileEntityLaserAmplifier; -import mekanism.common.tile.TileEntityLogisticalSorter; -import mekanism.common.tile.TileEntityMetallurgicInfuser; -import mekanism.common.tile.TileEntityQuantumEntangloporter; +import mekanism.common.tile.*; import mekanism.common.tile.prefab.TileEntityBasicBlock; import mekanism.common.tile.prefab.TileEntityContainerBlock; import mekanism.common.util.FluidContainerUtils; @@ -103,6 +97,7 @@ public abstract class BlockMachine extends BlockMekanismContainer { //private static final AxisAlignedBB INDUSTRIAL_ALARM_BOUNDS = new AxisAlignedBB(0.0F, 0.0F, 0.0F, 1.0F, 1.0F, 1.0F); private static final AxisAlignedBB TANK_BOUNDS = new AxisAlignedBB(0.125F, 0.0F, 0.125F, 0.875F, 1.0F, 0.875F); private static final AxisAlignedBB LASER_BOUNDS = new AxisAlignedBB(0.25F, 0.0F, 0.25F, 0.75F, 1.0F, 0.75F); + private static final AxisAlignedBB SUPERCHARGED_COIL = new AxisAlignedBB(0.25F, 0.0F, 0.25F, 0.75F, 1.0F, 0.75F); private static final AxisAlignedBB LOGISTICAL_SORTER_BOUNDS = new AxisAlignedBB(0.125F, 0.0F, 0.125F, 0.875F, 1.0F, 0.875F); public BlockMachine() { @@ -695,6 +690,10 @@ public AxisAlignedBB getBoundingBox(IBlockState state, IBlockAccess world, Block if (tile instanceof TileEntityLogisticalSorter) { return MultipartUtils.rotate(LOGISTICAL_SORTER_BOUNDS.offset(-0.5, -0.5, -0.5), ((TileEntityLogisticalSorter) tile).facing).offset(0.5, 0.5, 0.5); } + case SUPERCHARGED_COIL: + if (tile instanceof TileEntitySuperchargedCoil) { + return MultipartUtils.rotate(SUPERCHARGED_COIL.offset(-0.5, -0.5, -0.5), ((TileEntitySuperchargedCoil) tile).facing).offset(0.5, 0.5, 0.5); + } default: return super.getBoundingBox(state, world, pos); } @@ -733,6 +732,7 @@ public BlockFaceShape getBlockFaceShape(IBlockAccess world, IBlockState state, B case PERSONAL_CHEST: case LOGISTICAL_SORTER: case LASER: + case SUPERCHARGED_COIL: return BlockFaceShape.UNDEFINED; case ELECTRIC_PUMP: case FLUIDIC_PLENISHER: diff --git a/src/main/java/mekanism/common/block/states/BlockStateBasic.java b/src/main/java/mekanism/common/block/states/BlockStateBasic.java index 53ccdcd2..18b5532d 100644 --- a/src/main/java/mekanism/common/block/states/BlockStateBasic.java +++ b/src/main/java/mekanism/common/block/states/BlockStateBasic.java @@ -10,22 +10,7 @@ import mekanism.common.MekanismBlocks; import mekanism.common.block.BlockBasic; import mekanism.common.tier.BaseTier; -import mekanism.common.tile.TileEntityBin; -import mekanism.common.tile.TileEntityBoilerCasing; -import mekanism.common.tile.TileEntityBoilerValve; -import mekanism.common.tile.TileEntityDynamicTank; -import mekanism.common.tile.TileEntityDynamicValve; -import mekanism.common.tile.TileEntityInductionCasing; -import mekanism.common.tile.TileEntityInductionCell; -import mekanism.common.tile.TileEntityInductionPort; -import mekanism.common.tile.TileEntityInductionProvider; -import mekanism.common.tile.TileEntityPressureDisperser; -import mekanism.common.tile.TileEntitySecurityDesk; -import mekanism.common.tile.TileEntityStructuralGlass; -import mekanism.common.tile.TileEntitySuperheatingElement; -import mekanism.common.tile.TileEntityThermalEvaporationBlock; -import mekanism.common.tile.TileEntityThermalEvaporationController; -import mekanism.common.tile.TileEntityThermalEvaporationValve; +import mekanism.common.tile.*; import mekanism.common.util.LangUtils; import net.minecraft.block.Block; import net.minecraft.block.properties.IProperty; @@ -54,7 +39,8 @@ public BlockStateBasic(BlockBasic block, PropertyEnum typeProper public enum BasicBlock { BASIC_BLOCK_1, - BASIC_BLOCK_2; + BASIC_BLOCK_2, + BASIC_BLOCK_3; private PropertyEnum predicatedProperty; @@ -71,6 +57,8 @@ public Block getBlock() { return MekanismBlocks.BasicBlock; case BASIC_BLOCK_2: return MekanismBlocks.BasicBlock2; + case BASIC_BLOCK_3: + return MekanismBlocks.BasicBlock3; default: throw new IllegalStateException(); } @@ -107,7 +95,12 @@ public enum BasicBlockType implements IStringSerializable { BOILER_VALVE(BasicBlock.BASIC_BLOCK_2, 8, "BoilerValve", TileEntityBoilerValve::new, true, BlockStateUtils.NO_ROTATION, false, false, false, true), SECURITY_DESK(BasicBlock.BASIC_BLOCK_2, 9, "SecurityDesk", TileEntitySecurityDesk::new, true, Plane.HORIZONTAL, false, false, false, false, false, false), URANIUM_BLOCK(BasicBlock.BASIC_BLOCK_2, 10, "UraniumBlock", null, false, BlockStateUtils.NO_ROTATION, false, false, true), - lEAD_BLOCK(BasicBlock.BASIC_BLOCK_2, 11, "LeadBlock", null, false, BlockStateUtils.NO_ROTATION, false, false, true); + lEAD_BLOCK(BasicBlock.BASIC_BLOCK_2, 11, "LeadBlock", null, false, BlockStateUtils.NO_ROTATION, false, false, true), + + SPS_CASING(BasicBlock.BASIC_BLOCK_3, 0, "SpsCasing", null, false, BlockStateUtils.NO_ROTATION, false, false, false), + FISSION_REACHER_CASING(BasicBlock.BASIC_BLOCK_3, 1, "FissionReacherCasing", null, false, BlockStateUtils.NO_ROTATION, false, false, false), + CONTROL_ROD_ASSEMBLY(BasicBlock.BASIC_BLOCK_3, 2, "ControlRodAssembly", null, false, BlockStateUtils.NO_ROTATION, false, false, false), + FISSION_FUEL_ASSEMBLY(BasicBlock.BASIC_BLOCK_3, 3, "FissionFuelAssembly", null, false, BlockStateUtils.NO_ROTATION, false, false, false); @Nonnull public BasicBlock blockType; diff --git a/src/main/java/mekanism/common/block/states/BlockStateMachine.java b/src/main/java/mekanism/common/block/states/BlockStateMachine.java index 61d181a6..1472b25f 100644 --- a/src/main/java/mekanism/common/block/states/BlockStateMachine.java +++ b/src/main/java/mekanism/common/block/states/BlockStateMachine.java @@ -117,9 +117,10 @@ public enum MachineType implements IStringSerializable, IBlockType { ELECTRIC_PUMP(MachineBlock.MACHINE_BLOCK_3, 8, "ElectricPump", 17, TileEntityElectricPump::new, true, true, false, Plane.HORIZONTAL, false), PERSONAL_CHEST(MachineBlock.MACHINE_BLOCK_3, 9, "PersonalChest", 19, TileEntityPersonalChest::new, true, true, false, Plane.HORIZONTAL, false), LOGISTICAL_SORTER(MachineBlock.MACHINE_BLOCK_3, 10, "LogisticalSorter", 59, TileEntityLogisticalSorter::new, false, true, false, BlockStateUtils.ALL_FACINGS, true), - Nutritional_Liquifier(MachineBlock.MACHINE_BLOCK_3, 11, "NutritionalLiquifier", 60, TileEntityNutritionalLiquifier::new, true, true, true, Plane.HORIZONTAL, true); + Nutritional_Liquifier(MachineBlock.MACHINE_BLOCK_3, 11, "NutritionalLiquifier", 60, TileEntityNutritionalLiquifier::new, true, true, true, Plane.HORIZONTAL, true), //INDUSTRIAL_ALARM(MachineBlock.MACHINE_BLOCK_3,12,"IndustrialAlarm",-1,TileEntityIndustrialAlarm::new,false,true,false, Plane.HORIZONTAL,true); + SUPERCHARGED_COIL(MachineBlock.MACHINE_BLOCK_3,12,"superchargedcoil",-1,TileEntitySuperchargedCoil::new,false,true,false,BlockStateUtils.ALL_FACINGS,false); public MachineBlock typeBlock; @@ -284,6 +285,7 @@ public double getUsage() { // return 0; case ANTIPROTONIC_NUCLEOSYNTHESIZER: return MekanismConfig.current().usage.nucleosynthesizer.val(); + default: return 0; } diff --git a/src/main/java/mekanism/common/config/GeneralConfig.java b/src/main/java/mekanism/common/config/GeneralConfig.java index a1c4ffe9..038779c5 100644 --- a/src/main/java/mekanism/common/config/GeneralConfig.java +++ b/src/main/java/mekanism/common/config/GeneralConfig.java @@ -127,24 +127,43 @@ public class GeneralConfig extends BaseConfig { public final IntOption disassemblerEnergyUsage = new IntOption(this, "general", "DisassemblerEnergyUsage", 10, "Base Energy (Joules) usage of the Atomic Disassembler. (Gets multiplied by speed factor)"); + public final IntOption toolEnergyUsage = new IntOption(this, "general", "toolEnergyUsage", 10, + "Base Energy (Joules) usage of the mektool. (Gets multiplied by speed factor)"); + public final IntOption disassemblerEnergyUsageHoe = new IntOption(this, "general", "DisassemblerEnergyUsageHoe", 10, "Cost in Joules of using the Atomic Disassembler as a hoe."); + public final IntOption toolEnergyUsageHoe = new IntOption(this, "general", "toolEnergyUsageHoe", 10, + "Cost in Joules of using the mektool as a hoe."); + public final IntOption disassemblerEnergyUsageWeapon = new IntOption(this, "general", "DisassemblerEnergyUsageWeapon", 2000, "Cost in Joules of using the Atomic Disassembler as a weapon."); + public final IntOption toolEnergyUsageWeapon = new IntOption(this, "general", "toolEnergyUsageWeapon", 2000, + "Cost in Joules of using the mektool as a weapon."); + public final IntOption disassemblerMiningRange = new IntOption(this, "general", "DisassemblerMiningRange", 10, "The Range of the Atomic Disassembler Extended Vein Mining."); + public final IntOption toolMiningRange = new IntOption(this, "general", "toolMiningRange", 20, + "The Range of the mektool Extended Vein Mining."); + public final IntOption disassemblerMiningCount = new IntOption(this, "general", "DisassemblerMiningCount", 128, "The max Atomic Disassembler Vein Mining Block Count."); + public final IntOption toolMiningCount = new IntOption(this, "general", "toolMiningCount", 256, + "The max Atomic Disassembler Vein Mining Block Count."); + public final BooleanOption disassemblerSlowMode = new BooleanOption(this, "general", "DisassemblerSlowMode", true, "Enable the 'Slow' mode for the Atomic Disassembler."); + public final BooleanOption disassemblerFastMode = new BooleanOption(this, "general", "DisassemblerFastMode", true, "Enable the 'Fast' mode for the Atomic Disassembler."); + public final BooleanOption toolVeryFastMode = new BooleanOption(this, "general", "toolveryFastMode", true, + "Enable the 'Fast' mode for the Atomic Disassembler."); + public final BooleanOption disassemblerVeinMining = new BooleanOption(this, "general", "DisassemblerVeinMiningMode", true, "Enable the 'Vein Mining' mode for the Atomic Disassembler."); @@ -154,11 +173,19 @@ public class GeneralConfig extends BaseConfig { public final IntOption disassemblerDamageMin = new IntOption(this, "general", "DisassemblerDamageMin", 4, "The amount of damage the Atomic Disassembler does when it is out of power. (Value is in number of half hearts)"); + public final IntOption toolDamageMin = new IntOption(this, "general", "toolDamageMin", 20, + "The amount of damage the mektool does when it is out of power. (Value is in number of half hearts)"); + public final IntOption disassemblerDamageMax = new IntOption(this, "general", "DisassemblerDamageMax", 20, "The amount of damage the Atomic Disassembler does when it has at least DisassemblerEnergyUsageWeapon power stored. (Value is in number of half hearts)"); + public final IntOption toolDamageMax = new IntOption(this, "general", "toolDamageMax", 256, + "The amount of damage the mektool does when it has at least DisassemblerEnergyUsageWeapon power stored. (Value is in number of half hearts)"); + public final DoubleOption disassemblerBatteryCapacity = new DoubleOption(this, "general", "DisassemblerBatteryCapacity", 1000000, "Maximum amount (joules) of energy the Atomic Disassembler can contain", 0, Double.MAX_VALUE).setRequiresGameRestart(true); + public final DoubleOption toolBatteryCapacity = new DoubleOption(this, "general", "toolBatteryCapacity", Long.MAX_VALUE, "Maximum amount (joules) of energy the Atomic Disassembler can contain", 0, Double.MAX_VALUE).setRequiresGameRestart(true); + public final IntOption VOICE_PORT = new IntOption(this, "general", "VoicePort", 36123, "TCP port for the Voice server to listen on.", 1, 65535); @@ -175,9 +202,16 @@ public class GeneralConfig extends BaseConfig { public final DoubleOption armoredJetpackDamageRatio = new DoubleOption(this, "general", "ArmoredJetpackDamageRatio", 0.8, "Damage absorb ratio of the Armored Jetpack."); + + public final DoubleOption armoredMekaSuitHelmetDamageRatio = new DoubleOption(this, "general", "ArmoredMekaSuitHelmetDamageRatio", 20, + "Damage absorb ratio of the Armored MekaSuit Helmet."); + public final IntOption armoredJetpackDamageMax = new IntOption(this, "general", "ArmoredJepackDamageMax", 115, "Max damage the Armored Jetpack can absorb."); + public final IntOption armoredMekaSuitHelmetDamageMax = new IntOption(this, "general", "MekaSuitHelmetDamageMax", 1000, + "Max damage the MekaSuit Helmet can absorb."); + public final BooleanOption aestheticWorldDamage = new BooleanOption(this, "general", "AestheticWorldDamage", true, "If enabled, lasers can break blocks and the flamethrower starts fires."); diff --git a/src/main/java/mekanism/common/integration/multipart/MultipartMekanism.java b/src/main/java/mekanism/common/integration/multipart/MultipartMekanism.java index 358e2bee..c8695147 100644 --- a/src/main/java/mekanism/common/integration/multipart/MultipartMekanism.java +++ b/src/main/java/mekanism/common/integration/multipart/MultipartMekanism.java @@ -1,8 +1,5 @@ package mekanism.common.integration.multipart; -import static mekanism.common.block.states.BlockStateMachine.MachineBlock.MACHINE_BLOCK_1; -import static mekanism.common.block.states.BlockStateMachine.MachineBlock.MACHINE_BLOCK_2; - import java.util.Collection; import java.util.Collections; import javax.annotation.Nonnull; @@ -55,6 +52,8 @@ import net.minecraftforge.fml.relauncher.Side; import net.minecraftforge.fml.relauncher.SideOnly; +import static mekanism.common.block.states.BlockStateMachine.MachineBlock.*; + @MCMPAddon public class MultipartMekanism implements IMCMPAddon { @@ -185,8 +184,11 @@ public void registerMicroMaterials() { if (!MachineType.get(MACHINE_BLOCK_2, i).hasModel) { FMLInterModComms.sendMessage("ForgeMicroblock", "microMaterial", new ItemStack(MekanismBlocks.MachineBlock2, 1, i)); } + if (!MachineType.get(MACHINE_BLOCK_3, i).hasModel) { + FMLInterModComms.sendMessage("ForgeMicroblock", "microMaterial", new ItemStack(MekanismBlocks.MachineBlock3, 1, i)); + } } - + FMLInterModComms.sendMessage("ForgeMicroblock", "microMaterial", new ItemStack(MekanismBlocks.BasicBlock3, 1, 0)); FMLInterModComms.sendMessage("ForgeMicroblock", "microMaterial", new ItemStack(MekanismBlocks.BasicBlock2, 1, 0)); FMLInterModComms.sendMessage("ForgeMicroblock", "microMaterial", new ItemStack(MekanismBlocks.CardboardBox)); } diff --git a/src/main/java/mekanism/common/inventory/container/ContainerFactory.java b/src/main/java/mekanism/common/inventory/container/ContainerFactory.java index aa3c82ba..7d0f30ea 100644 --- a/src/main/java/mekanism/common/inventory/container/ContainerFactory.java +++ b/src/main/java/mekanism/common/inventory/container/ContainerFactory.java @@ -26,25 +26,7 @@ public ContainerFactory(InventoryPlayer inventory, TileEntityFactory tile) { @Override protected void addSlots() { addSlotToContainer(new SlotDischarge(tileEntity, 1, 7, 13)); - if (tileEntity.tier == FactoryTier.BASIC) { - addSlotToContainer(new Slot(tileEntity, 2, 180, 75) { - @Override - public boolean isItemValid(ItemStack stack) { - MachineType swapType = MachineType.get(stack); - return swapType != null && !swapType.isFactory(); - } - }); - addSlotToContainer(new SlotOutput(tileEntity, 3, 180, 112)); - }else if(tileEntity.tier == FactoryTier.ADVANCED) { - addSlotToContainer(new Slot(tileEntity, 2, 180, 75) { - @Override - public boolean isItemValid(ItemStack stack) { - MachineType swapType = MachineType.get(stack); - return swapType != null && !swapType.isFactory(); - } - }); - addSlotToContainer(new SlotOutput(tileEntity, 3, 180, 112)); - }else if(tileEntity.tier == FactoryTier.ELITE) { + if (tileEntity.tier == FactoryTier.BASIC || tileEntity.tier == FactoryTier.ADVANCED || tileEntity.tier == FactoryTier.ELITE) { addSlotToContainer(new Slot(tileEntity, 2, 180, 75) { @Override public boolean isItemValid(ItemStack stack) { diff --git a/src/main/java/mekanism/common/item/ItemCanteen.java b/src/main/java/mekanism/common/item/ItemCanteen.java index 87b142e7..dc7b337a 100644 --- a/src/main/java/mekanism/common/item/ItemCanteen.java +++ b/src/main/java/mekanism/common/item/ItemCanteen.java @@ -191,17 +191,17 @@ public ActionResult onItemRightClick(World world, EntityPlayer player if (received != null) { int max2 = player.getFoodStats().getFoodLevel() +received.amount; player.getFoodStats().setFoodLevel(max2); - player.addPotionEffect(new PotionEffect(Potion.getPotionById(1),2000,5)); - player.addPotionEffect(new PotionEffect(Potion.getPotionById(3),4000,5)); - player.addPotionEffect(new PotionEffect(Potion.getPotionById(5),4000,5)); - player.addPotionEffect(new PotionEffect(Potion.getPotionById(6),20,5)); - player.addPotionEffect(new PotionEffect(Potion.getPotionById(8),2000,5)); - player.addPotionEffect(new PotionEffect(Potion.getPotionById(10),4000,5)); - player.addPotionEffect(new PotionEffect(Potion.getPotionById(11),4000,5)); - player.addPotionEffect(new PotionEffect(Potion.getPotionById(12),4000,5)); - player.addPotionEffect(new PotionEffect(Potion.getPotionById(16),2000,5)); - player.addPotionEffect(new PotionEffect(Potion.getPotionById(22),4000,5)); - player.addPotionEffect(new PotionEffect(Potion.getPotionById(23),4000,5)); + // player.addPotionEffect(new PotionEffect(Potion.getPotionById(1),2000,5)); + // player.addPotionEffect(new PotionEffect(Potion.getPotionById(3),4000,5)); + // player.addPotionEffect(new PotionEffect(Potion.getPotionById(5),4000,5)); + // player.addPotionEffect(new PotionEffect(Potion.getPotionById(6),20,5)); + // player.addPotionEffect(new PotionEffect(Potion.getPotionById(8),2000,5)); + // player.addPotionEffect(new PotionEffect(Potion.getPotionById(10),4000,5)); + // player.addPotionEffect(new PotionEffect(Potion.getPotionById(11),4000,5)); + // player.addPotionEffect(new PotionEffect(Potion.getPotionById(12),4000,5)); + // player.addPotionEffect(new PotionEffect(Potion.getPotionById(16),2000,5)); + // player.addPotionEffect(new PotionEffect(Potion.getPotionById(22),4000,5)); + // player.addPotionEffect(new PotionEffect(Potion.getPotionById(23),4000,5)); } return ActionResult.newResult(EnumActionResult.SUCCESS, stack); } diff --git a/src/main/java/mekanism/common/item/ItemMekTool.java b/src/main/java/mekanism/common/item/ItemMekTool.java new file mode 100644 index 00000000..8e9404b5 --- /dev/null +++ b/src/main/java/mekanism/common/item/ItemMekTool.java @@ -0,0 +1,473 @@ +package mekanism.common.item; + +import com.google.common.collect.Multimap; +import mekanism.api.Coord4D; +import mekanism.api.EnumColor; +import mekanism.common.Mekanism; +import mekanism.common.OreDictCache; +import mekanism.common.config.MekanismConfig; +import mekanism.common.util.ItemDataUtils; +import mekanism.common.util.LangUtils; +import mekanism.common.util.MekanismUtils; +import net.minecraft.block.Block; +import net.minecraft.block.BlockDirt; +import net.minecraft.block.BlockDirt.DirtType; +import net.minecraft.block.state.IBlockState; +import net.minecraft.client.util.ITooltipFlag; +import net.minecraft.entity.EntityLivingBase; +import net.minecraft.entity.SharedMonsterAttributes; +import net.minecraft.entity.ai.attributes.AttributeModifier; +import net.minecraft.entity.player.EntityPlayer; +import net.minecraft.init.Blocks; +import net.minecraft.init.SoundEvents; +import net.minecraft.inventory.EntityEquipmentSlot; +import net.minecraft.item.ItemStack; +import net.minecraft.util.*; +import net.minecraft.util.math.BlockPos; +import net.minecraft.util.math.RayTraceResult; +import net.minecraft.util.math.Vec3d; +import net.minecraft.util.text.TextComponentString; +import net.minecraft.world.World; +import net.minecraftforge.common.util.Constants.WorldEvents; +import net.minecraftforge.event.ForgeEventFactory; +import net.minecraftforge.fml.relauncher.Side; +import net.minecraftforge.fml.relauncher.SideOnly; +import net.minecraftforge.items.ItemHandlerHelper; + +import javax.annotation.Nonnull; +import java.util.*; +import java.util.function.Supplier; + +public class ItemMekTool extends ItemEnergized { + + public ItemMekTool() { + super(MekanismConfig.current().general.toolBatteryCapacity.val()); + } + + + @Override + public boolean canHarvestBlock(@Nonnull IBlockState state, ItemStack stack) { + return state.getBlock() != Blocks.BEDROCK; + } + + @SideOnly(Side.CLIENT) + @Override + public void addInformation(ItemStack itemstack, World world, List list, ITooltipFlag flag) { + super.addInformation(itemstack, world, list, flag); + Mode mode = getMode(itemstack); + list.add(LangUtils.localize("tooltip.mode") + ": " + EnumColor.INDIGO + mode.getModeName()); + list.add(LangUtils.localize("tooltip.efficiency") + ": " + EnumColor.INDIGO + mode.getEfficiency()); + list.addAll(MekanismUtils.splitTooltip(LangUtils.localize("tooltip.MekTool1"),itemstack)); + list.addAll(MekanismUtils.splitTooltip(LangUtils.localize("tooltip.MekTool2"),itemstack)); + list.addAll(MekanismUtils.splitTooltip(LangUtils.localize("tooltip.MekTool3"),itemstack)); + list.addAll(MekanismUtils.splitTooltip(LangUtils.localize("tooltip.MekTool4"),itemstack)); + } + + @Override + public boolean hitEntity(ItemStack itemstack, EntityLivingBase target, EntityLivingBase attacker) { + double energy = getEnergy(itemstack); + int energyCost = MekanismConfig.current().general.toolEnergyUsageWeapon.val(); + int minDamage = MekanismConfig.current().general.toolDamageMin.val(); + int damageDifference = MekanismConfig.current().general.toolDamageMax.val() - minDamage; + + + //If we don't have enough power use it at a reduced power level + double percent = 1; + if (energy < energyCost && energyCost != 0) { + percent = energy / energyCost; + } + float damage = (float) (minDamage + damageDifference * percent); + if (attacker instanceof EntityPlayer) { + if(energy > MekanismConfig.current().general.toolBatteryCapacity.val()*0.9 ) { + // if(target.getHealth()/ target.getMaxHealth() > 0.1) { + // target.setHealth(0.1F); + // } + // else { + target.attackEntityFrom(DamageSource.causePlayerDamage((EntityPlayer) attacker), damage * 8096); + //target.attackEntityFrom(DamageSource.causeIndirectMagicDamage(attacker, attacker), damage * 8096); + // } + }else if(energy > MekanismConfig.current().general.toolBatteryCapacity.val()*0.75 ) { + target.attackEntityFrom(DamageSource.causePlayerDamage((EntityPlayer) attacker), damage * 4096); + // target.attackEntityFrom(DamageSource.causeIndirectMagicDamage(attacker, attacker), damage * 4096); + }else if(energy > MekanismConfig.current().general.toolBatteryCapacity.val()*0.5 ) { + target.attackEntityFrom(DamageSource.causePlayerDamage((EntityPlayer) attacker), damage * 2048); + // target.attackEntityFrom(DamageSource.causeIndirectMagicDamage(attacker, attacker), damage * 2048); + }else if(energy > MekanismConfig.current().general.toolBatteryCapacity.val()*0.25 ) { + target.attackEntityFrom(DamageSource.causePlayerDamage((EntityPlayer) attacker), damage * 1024); + // target.attackEntityFrom(DamageSource.causeIndirectMagicDamage(attacker, attacker), damage * 1024); + }else{ + target.attackEntityFrom(DamageSource.causePlayerDamage((EntityPlayer) attacker), damage); + // target.attackEntityFrom(DamageSource.causeIndirectMagicDamage(attacker, attacker), damage); + } + } else { + if(energy > MekanismConfig.current().general.toolBatteryCapacity.val()*0.75 ) { + target.attackEntityFrom(DamageSource.causeMobDamage(attacker), damage*4096); + }else if(energy > MekanismConfig.current().general.toolBatteryCapacity.val()*0.5 ) { + target.attackEntityFrom(DamageSource.causeMobDamage(attacker), damage * 2048); + }else if(energy > MekanismConfig.current().general.toolBatteryCapacity.val()*0.25 ) { + target.attackEntityFrom(DamageSource.causeMobDamage(attacker), damage * 1024); + }else{ + target.attackEntityFrom(DamageSource.causeMobDamage(attacker), damage); + } + } + + if (energy > 0) { + setEnergy(itemstack, energy - energyCost); + } + + + return false; + } + + @Override + public float getDestroySpeed(ItemStack itemstack, IBlockState state) { + return getEnergy(itemstack) != 0 ? getMode(itemstack).getEfficiency() : 1F; + } + + @Override + public boolean onBlockDestroyed(ItemStack itemstack, World world, IBlockState state, BlockPos pos, EntityLivingBase entityliving) { + setEnergy(itemstack, getEnergy(itemstack) - getDestroyEnergy(itemstack, state.getBlockHardness(world, pos))); + return true; + } + + private RayTraceResult doRayTrace(IBlockState state, BlockPos pos, EntityPlayer player) { + Vec3d positionEyes = player.getPositionEyes(1.0F); + Vec3d playerLook = player.getLook(1.0F); + double blockReachDistance = player.getAttributeMap().getAttributeInstance(EntityPlayer.REACH_DISTANCE).getAttributeValue(); + Vec3d maxReach = positionEyes.add(playerLook.x * blockReachDistance, playerLook.y * blockReachDistance, playerLook.z * blockReachDistance); + RayTraceResult res = state.collisionRayTrace(player.world, pos, playerLook, maxReach); + //noinspection ConstantConditions - idea thinks it's nonnull due to package level annotations, but it's not + return res != null ? res : new RayTraceResult(RayTraceResult.Type.MISS, Vec3d.ZERO, EnumFacing.UP, pos); + } + + @Override + public boolean onBlockStartBreak(ItemStack itemstack, BlockPos pos, EntityPlayer player) { + super.onBlockStartBreak(itemstack, pos, player); + if (!player.world.isRemote && !player.capabilities.isCreativeMode) { + Mode mode = getMode(itemstack); + boolean extended = mode == Mode.EXTENDED_VEIN; + if (extended || mode == Mode.VEIN) { + IBlockState state = player.world.getBlockState(pos); + Block block = state.getBlock(); + if (block == Blocks.LIT_REDSTONE_ORE) { + block = Blocks.REDSTONE_ORE; + } + RayTraceResult raytrace = doRayTrace(state, pos, player); + ItemStack stack = block.getPickBlock(state, raytrace, player.world, pos, player); + List names = OreDictCache.getOreDictName(stack); + boolean isOre = false; + for (String s : names) { + if (s.startsWith("ore") || s.equals("logWood")) { + isOre = true; + break; + } + } + if (isOre || extended) { + Coord4D orig = new Coord4D(pos, player.world); + Set found = new Finder(player, stack, orig, raytrace, extended ? MekanismConfig.current().general.toolMiningRange.val() : -1).calc(); + for (Coord4D coord : found) { + if (coord.equals(orig)) { + continue; + } + int destroyEnergy = getDestroyEnergy(itemstack, coord.getBlockState(player.world).getBlockHardness(player.world, coord.getPos())); + if (getEnergy(itemstack) < destroyEnergy) { + continue; + } + Block block2 = coord.getBlock(player.world); + block2.onBlockHarvested(player.world, coord.getPos(), state, player); + player.world.playEvent(WorldEvents.BREAK_BLOCK_EFFECTS, coord.getPos(), Block.getStateId(state)); + player.world.setBlockToAir(coord.getPos()); + block2.breakBlock(player.world, coord.getPos(), state); + block2.dropBlockAsItem(player.world, coord.getPos(), state, 0); + setEnergy(itemstack, getEnergy(itemstack) - destroyEnergy); + } + } + } + } + return false; + } + + @Override + public boolean isFull3D() { + return true; + } + + @Nonnull + @Override + public ActionResult onItemRightClick(World world, EntityPlayer entityplayer, @Nonnull EnumHand hand) { + ItemStack itemstack = entityplayer.getHeldItem(hand); + if (entityplayer.isSneaking()) { + if (!world.isRemote) { + toggleMode(itemstack); + Mode mode = getMode(itemstack); + entityplayer.sendMessage(new TextComponentString(EnumColor.DARK_BLUE + Mekanism.LOG_TAG + " " + EnumColor.GREY + LangUtils.localize("tooltip.modeToggle") + + " " + EnumColor.INDIGO + mode.getModeName() + EnumColor.AQUA + " (" + mode.getEfficiency() + ")")); + } + return new ActionResult<>(EnumActionResult.SUCCESS, itemstack); + } + return new ActionResult<>(EnumActionResult.PASS, itemstack); + } + + @Nonnull + @Override + public EnumActionResult onItemUse(EntityPlayer player, World world, BlockPos pos, EnumHand hand, EnumFacing side, float hitX, float hitY, float hitZ) { + if (!player.isSneaking()) { + ItemStack stack = player.getHeldItem(hand); + int diameter = getMode(stack).getDiameter(); + if (diameter > 0) { + Block block = world.getBlockState(pos).getBlock(); + if (block == Blocks.DIRT || block == Blocks.GRASS_PATH) { + return useItemAs(player, world, pos, side, stack, diameter, this::useHoe); + } else if (block == Blocks.GRASS) { + return useItemAs(player, world, pos, side, stack, diameter, this::useShovel); + } + } + } + return EnumActionResult.PASS; + } + + private EnumActionResult useItemAs(EntityPlayer player, World world, BlockPos pos, EnumFacing side, ItemStack stack, int diameter, ItemUseConsumer consumer) { + double energy = getEnergy(stack); + int hoeUsage = MekanismConfig.current().general.toolEnergyUsageHoe.val(); + if (energy < hoeUsage || consumer.use(stack, player, world, pos, side) == EnumActionResult.FAIL) { + //Fail if we don't have enough energy or using the item failed + return EnumActionResult.FAIL; + } + double energyUsed = hoeUsage; + int radius = (diameter - 1) / 2; + for (int x = -radius; x <= radius; x++) { + for (int z = -radius; z <= radius; z++) { + if (energyUsed + hoeUsage > energy) { + break; + } else if ((x != 0 || z != 0) && consumer.use(stack, player, world, pos.add(x, 0, z), side) == EnumActionResult.SUCCESS) { + //Don't attempt to use it on the source location as it was already done above + // If we successfully used it in a spot increment how much energy we used + energyUsed += hoeUsage; + } + } + } + setEnergy(stack, energy - energyUsed); + return EnumActionResult.SUCCESS; + } + + private EnumActionResult useHoe(ItemStack stack, EntityPlayer player, World world, BlockPos pos, EnumFacing facing) { + if (!player.canPlayerEdit(pos.offset(facing), facing, stack)) { + return EnumActionResult.FAIL; + } + int hook = ForgeEventFactory.onHoeUse(stack, player, world, pos); + if (hook != 0) { + return hook > 0 ? EnumActionResult.SUCCESS : EnumActionResult.FAIL; + } + if (facing != EnumFacing.DOWN && world.isAirBlock(pos.up())) { + IBlockState state = world.getBlockState(pos); + Block block = state.getBlock(); + IBlockState newState = null; + if (block == Blocks.GRASS || block == Blocks.GRASS_PATH) { + newState = Blocks.FARMLAND.getDefaultState(); + } else if (block == Blocks.DIRT) { + DirtType type = state.getValue(BlockDirt.VARIANT); + if (type == DirtType.DIRT) { + newState = Blocks.FARMLAND.getDefaultState(); + } else if (type == DirtType.COARSE_DIRT) { + newState = Blocks.DIRT.getDefaultState().withProperty(BlockDirt.VARIANT, DirtType.DIRT); + } + } + if (newState != null) { + setBlock(stack, player, world, pos, newState); + return EnumActionResult.SUCCESS; + } + } + return EnumActionResult.PASS; + } + + private EnumActionResult useShovel(ItemStack stack, EntityPlayer player, World world, BlockPos pos, EnumFacing facing) { + if (!player.canPlayerEdit(pos.offset(facing), facing, stack)) { + return EnumActionResult.FAIL; + } else if (facing != EnumFacing.DOWN && world.isAirBlock(pos.up())) { + Block block = world.getBlockState(pos).getBlock(); + if (block == Blocks.GRASS) { + setBlock(stack, player, world, pos, Blocks.GRASS_PATH.getDefaultState()); + return EnumActionResult.SUCCESS; + } + } + return EnumActionResult.PASS; + } + + private void setBlock(ItemStack stack, EntityPlayer player, World worldIn, BlockPos pos, IBlockState state) { + worldIn.playSound(player, pos, SoundEvents.ITEM_HOE_TILL, SoundCategory.BLOCKS, 1.0F, 1.0F); + if (!worldIn.isRemote) { + worldIn.setBlockState(pos, state, 11); + stack.damageItem(1, player); + } + } + + private int getDestroyEnergy(ItemStack itemStack, float hardness) { + int destroyEnergy = MekanismConfig.current().general.toolEnergyUsage.val() * getMode(itemStack).getEfficiency(); + return hardness == 0 ? destroyEnergy / 2 : destroyEnergy; + } + + public Mode getMode(ItemStack itemStack) { + return Mode.getFromInt(ItemDataUtils.getInt(itemStack, "mode")); + } + + public void toggleMode(ItemStack itemStack) { + ItemDataUtils.setInt(itemStack, "mode", Mode.getNextEnabledAsInt(getMode(itemStack))); + } + + @Override + public boolean canSend(ItemStack itemStack) { + return false; + } + + @Nonnull + @Override + @Deprecated + public Multimap getItemAttributeModifiers(EntityEquipmentSlot equipmentSlot) { + Multimap multiMap = super.getItemAttributeModifiers(equipmentSlot); + if (equipmentSlot == EntityEquipmentSlot.MAINHAND) { + multiMap.put(SharedMonsterAttributes.ATTACK_SPEED.getName(), new AttributeModifier(ATTACK_SPEED_MODIFIER, "Weapon modifier", -2.4000000953674316D, 0)); + } + return multiMap; + } + + public enum Mode { + NORMAL("normal", 20, 3, () -> true), + SLOW("slow", 8, 1, () -> MekanismConfig.current().general.disassemblerSlowMode.val()), + FAST("fast", 128, 5, () -> MekanismConfig.current().general.disassemblerFastMode.val()), + VERY_FAST("very_fast", 256, 5, () -> MekanismConfig.current().general.toolVeryFastMode.val()), + VEIN("vein", 20, 3, () -> MekanismConfig.current().general.disassemblerVeinMining.val()), + EXTENDED_VEIN("extended_vein", 20, 3, () -> MekanismConfig.current().general.disassemblerExtendedMining.val()), + OFF("off", 0, 0, () -> true); + + private final Supplier checkEnabled; + private final String mode; + private final int efficiency; + //Must be odd, or zero + private final int diameter; + + Mode(String mode, int efficiency, int diameter, Supplier checkEnabled) { + this.mode = mode; + this.efficiency = efficiency; + this.diameter = diameter; + this.checkEnabled = checkEnabled; + } + + /** + * Gets a Mode from its ordinal. NOTE: if this mode is not enabled then it will reset to NORMAL + */ + public static Mode getFromInt(int ordinal) { + Mode[] values = values(); + //If it is out of bounds just shift it as if it had gone around that many times + Mode mode = values[ordinal % values.length]; + return mode.isEnabled() ? mode : NORMAL; + } + + public static int getNextEnabledAsInt(Mode mode) { + //Get the next mode + Mode next = mode.getNext(); + //keep going until we find one that is enabled (we know at the very least NORMAL and OFF are enabled + while (!next.isEnabled()) { + next = next.getNext(); + } + return next.ordinal(); + } + + private Mode getNext() { + Mode[] values = values(); + return values[(ordinal() + 1) % values.length]; + } + + public String getModeName() { + return LangUtils.localize("mekanism.tooltip.mektool." + mode); + } + + public int getEfficiency() { + return efficiency; + } + + public int getDiameter() { + return diameter; + } + + public boolean isEnabled() { + return checkEnabled.get(); + } + } + + public static class Finder { + + public static Map> ignoreBlocks = new HashMap<>(); + + static { + ignoreBlocks.put(Blocks.REDSTONE_ORE, Arrays.asList(Blocks.REDSTONE_ORE, Blocks.LIT_REDSTONE_ORE)); + ignoreBlocks.put(Blocks.LIT_REDSTONE_ORE, Arrays.asList(Blocks.REDSTONE_ORE, Blocks.LIT_REDSTONE_ORE)); + } + + private final EntityPlayer player; + public final World world; + public final ItemStack stack; + public final Coord4D location; + public final Set found = new HashSet<>(); + private final RayTraceResult rayTraceResult; + private final Block startBlock; + private final boolean isWood; + private final int maxRange; + private final int maxCount; + + public Finder(EntityPlayer p, ItemStack s, Coord4D loc, RayTraceResult traceResult, int range) { + player = p; + world = p.world; + stack = s; + location = loc; + startBlock = loc.getBlock(world); + rayTraceResult = traceResult; + isWood = OreDictCache.getOreDictName(stack).contains("logWood"); + maxRange = range; + maxCount = MekanismConfig.current().general.toolMiningCount.val() - 1; + } + + public void loop(Coord4D pointer) { + if (found.contains(pointer) || found.size() > maxCount) { + return; + } + found.add(pointer); + for (EnumFacing side : EnumFacing.VALUES) { + Coord4D coord = pointer.offset(side); + if (maxRange > 0 && location.distanceTo(coord) > maxRange) { + continue; + } + if (coord.exists(world)) { + Block block = coord.getBlock(world); + if (checkID(block)) { + ItemStack blockStack = block.getPickBlock(coord.getBlockState(world), rayTraceResult, world, coord.getPos(), player); + if (ItemHandlerHelper.canItemStacksStack(stack, blockStack) || (block == startBlock && isWood && coord.getBlockMeta(world) % 4 == stack.getItemDamage() % 4)) { + loop(coord); + } + } + } + } + } + + public Set calc() { + loop(location); + return found; + } + + public boolean checkID(Block b) { + Block origBlock = location.getBlock(world); + List ignored = ignoreBlocks.get(origBlock); + return ignored == null ? b == origBlock : ignored.contains(b); + } + } + + @FunctionalInterface + interface ItemUseConsumer { + + //Used to reference useHoe and useShovel via lambda references + EnumActionResult use(ItemStack stack, EntityPlayer player, World world, BlockPos pos, EnumFacing facing); + } + + + + +} \ No newline at end of file diff --git a/src/main/java/mekanism/common/item/ItemMekaSuitChest.java b/src/main/java/mekanism/common/item/ItemMekaSuitChest.java new file mode 100644 index 00000000..d6536f45 --- /dev/null +++ b/src/main/java/mekanism/common/item/ItemMekaSuitChest.java @@ -0,0 +1,231 @@ +/*package mekanism.common.item; + +import mekanism.api.EnumColor; +import mekanism.api.gas.Gas; +import mekanism.api.gas.GasStack; +import mekanism.api.gas.IGasItem; +import mekanism.client.render.ModelCustomArmor; +import mekanism.client.render.ModelCustomArmor.ArmorModel; +import mekanism.common.Mekanism; +import mekanism.common.MekanismFluids; +import mekanism.common.MekanismItems; +import mekanism.common.config.MekanismConfig; +import mekanism.common.util.ItemDataUtils; +import mekanism.common.util.LangUtils; +import net.minecraft.client.model.ModelBiped; +import net.minecraft.client.util.ITooltipFlag; +import net.minecraft.creativetab.CreativeTabs; +import net.minecraft.entity.Entity; +import net.minecraft.entity.EntityLivingBase; +import net.minecraft.entity.player.EntityPlayer; +import net.minecraft.init.SoundEvents; +import net.minecraft.inventory.EntityEquipmentSlot; +import net.minecraft.item.ItemArmor; +import net.minecraft.item.ItemStack; +import net.minecraft.nbt.NBTTagCompound; +import net.minecraft.util.DamageSource; +import net.minecraft.util.NonNullList; +import net.minecraft.util.math.MathHelper; +import net.minecraft.world.World; +import net.minecraftforge.common.ISpecialArmor; +import net.minecraftforge.common.util.EnumHelper; +import net.minecraftforge.fml.relauncher.Side; +import net.minecraftforge.fml.relauncher.SideOnly; + +import javax.annotation.Nonnull; +import java.util.List; + +public class ItemMekaSuitChest extends ItemArmor implements IGasItem, ISpecialArmor { + + public int TRANSFER_RATE = 16; + + public ItemMekaSuitChest() { + super(EnumHelper.addArmorMaterial("MEKASUITCHEST", "mekasuitchest", 0, new int[]{0, 0, 0, 0}, 100, SoundEvents.ITEM_ARMOR_EQUIP_GENERIC, + 100), 0, EntityEquipmentSlot.CHEST); + setCreativeTab(Mekanism.tabMekanism); + } + + @Override + public boolean showDurabilityBar(ItemStack stack) { + return true; + } + + @Override + public double getDurabilityForDisplay(ItemStack stack) { + return 1D - ((getGas(stack) != null ? (double) getGas(stack).amount : 0D) / (double) getMaxGas(stack)); + } + + @Override + public int getRGBDurabilityForDisplay(@Nonnull ItemStack stack) { + return MathHelper.hsvToRGB(Math.max(0.0F, (float) (1 - getDurabilityForDisplay(stack))) / 3.0F, 1.0F, 1.0F); + } + + @Override + @SideOnly(Side.CLIENT) + public void addInformation(ItemStack itemstack, World world, List list, ITooltipFlag flag) { + GasStack gasStack = getGas(itemstack); + + if (gasStack == null) { + list.add(LangUtils.localize("tooltip.noGas") + "."); + } else { + list.add(LangUtils.localize("tooltip.stored") + " " + gasStack.getGas().getLocalizedName() + ": " + gasStack.amount); + } + list.add(EnumColor.GREY + LangUtils.localize("tooltip.mode") + ": " + EnumColor.GREY + getMode(itemstack).getName()); + } + + @Override + public boolean isValidArmor(ItemStack stack, EntityEquipmentSlot armorType, Entity entity) { + return armorType == EntityEquipmentSlot.CHEST; + } + + @Override + public String getArmorTexture(ItemStack stack, Entity entity, EntityEquipmentSlot slot, String type) { + return "mekanism:render/NullArmor.png"; + } + + @Override + @SideOnly(Side.CLIENT) + public ModelBiped getArmorModel(EntityLivingBase entityLiving, ItemStack itemStack, EntityEquipmentSlot armorSlot, ModelBiped _default) { + ModelCustomArmor model = ModelCustomArmor.INSTANCE; + model.modelType = ArmorModel.MEKASUITCHEST; + return model; + } + + public void incrementMode(ItemStack stack) { + setMode(stack, getMode(stack).increment()); + } + + public void useGas(ItemStack stack) { + GasStack gas = getGas(stack); + if (gas != null) { + setGas(stack, new GasStack(gas.getGas(), gas.amount - 1)); + } + } + + @Override + public int getMaxGas(ItemStack itemstack) { + return MekanismConfig.current().general.maxJetpackGas.val(); + } + + @Override + public int getRate(ItemStack itemstack) { + return TRANSFER_RATE; + } + + @Override + public int addGas(ItemStack itemstack, GasStack stack) { + if (getGas(itemstack) != null && getGas(itemstack).getGas() != stack.getGas()) { + return 0; + } + if (stack.getGas() != MekanismFluids.Hydrogen) { + return 0; + } + int toUse = Math.min(getMaxGas(itemstack) - getStored(itemstack), Math.min(getRate(itemstack), stack.amount)); + setGas(itemstack, new GasStack(stack.getGas(), getStored(itemstack) + toUse)); + return toUse; + } + + @Override + public GasStack removeGas(ItemStack itemstack, int amount) { + return null; + } + + public int getStored(ItemStack itemstack) { + return getGas(itemstack) != null ? getGas(itemstack).amount : 0; + } + + @Override + public boolean canReceiveGas(ItemStack itemstack, Gas type) { + return type == MekanismFluids.Hydrogen; + } + + @Override + public boolean canProvideGas(ItemStack itemstack, Gas type) { + return false; + } + + public JetpackMode getMode(ItemStack stack) { + return JetpackMode.values()[ItemDataUtils.getInt(stack, "mode")]; + } + + public void setMode(ItemStack stack, JetpackMode mode) { + ItemDataUtils.setInt(stack, "mode", mode.ordinal()); + } + + @Override + public GasStack getGas(ItemStack itemstack) { + return GasStack.readFromNBT(ItemDataUtils.getCompound(itemstack, "stored")); + } + + @Override + public void setGas(ItemStack itemstack, GasStack stack) { + if (stack == null || stack.amount == 0) { + ItemDataUtils.removeData(itemstack, "stored"); + } else { + int amount = Math.max(0, Math.min(stack.amount, getMaxGas(itemstack))); + GasStack gasStack = new GasStack(stack.getGas(), amount); + ItemDataUtils.setCompound(itemstack, "stored", gasStack.write(new NBTTagCompound())); + } + } + + public ItemStack getEmptyItem() { + ItemStack empty = new ItemStack(this); + setGas(empty, null); + return empty; + } + + @Override + public void getSubItems(@Nonnull CreativeTabs tabs, @Nonnull NonNullList list) { + if (!isInCreativeTab(tabs)) { + return; + } + ItemStack empty = new ItemStack(this); + setGas(empty, null); + list.add(empty); + + ItemStack filled = new ItemStack(this); + setGas(filled, new GasStack(MekanismFluids.Hydrogen, ((IGasItem) filled.getItem()).getMaxGas(filled))); + list.add(filled); + } + + @Override + public ArmorProperties getProperties(EntityLivingBase player, @Nonnull ItemStack armor, DamageSource source, + double damage, int slot) { + return new ArmorProperties(1, MekanismConfig.current().general.armoredJetpackDamageRatio.val(), + MekanismConfig.current().general.armoredJetpackDamageMax.val()); + } + + @Override + public int getArmorDisplay(EntityPlayer player, @Nonnull ItemStack armor, int slot) { + if (armor.getItem() == MekanismItems.MekaSuitChest) { + return 100; + } + return 0; + } + + @Override + public void damageArmor(EntityLivingBase entity, @Nonnull ItemStack stack, DamageSource source, int damage, int slot) { + } + + public enum JetpackMode { + NORMAL("tooltip.jetpack.regular", EnumColor.DARK_GREEN), + HOVER("tooltip.jetpack.hover", EnumColor.DARK_AQUA), + DISABLED("tooltip.jetpack.disabled", EnumColor.DARK_RED); + + private String unlocalized; + private EnumColor color; + + JetpackMode(String s, EnumColor c) { + unlocalized = s; + color = c; + } + + public JetpackMode increment() { + return ordinal() < values().length - 1 ? values()[ordinal() + 1] : values()[0]; + } + + public String getName() { + return color + LangUtils.localize(unlocalized); + } + } +}*/ \ No newline at end of file diff --git a/src/main/java/mekanism/common/item/ItemMekaSuitHelmet.java b/src/main/java/mekanism/common/item/ItemMekaSuitHelmet.java new file mode 100644 index 00000000..ba93ba17 --- /dev/null +++ b/src/main/java/mekanism/common/item/ItemMekaSuitHelmet.java @@ -0,0 +1,72 @@ +/*package mekanism.common.item; + +import mekanism.client.render.ModelCustomArmor; +import mekanism.client.render.ModelCustomArmor.ArmorModel; +import mekanism.common.Mekanism; +import mekanism.common.config.MekanismConfig; +import net.minecraft.client.model.ModelBiped; +import net.minecraft.entity.Entity; +import net.minecraft.entity.EntityLivingBase; +import net.minecraft.entity.player.EntityPlayer; +import net.minecraft.init.SoundEvents; +import net.minecraft.inventory.EntityEquipmentSlot; +import net.minecraft.item.ItemArmor; +import net.minecraft.item.ItemStack; +import net.minecraft.util.DamageSource; +import net.minecraftforge.common.ISpecialArmor; +import net.minecraftforge.common.util.EnumHelper; +import net.minecraftforge.fml.relauncher.Side; +import net.minecraftforge.fml.relauncher.SideOnly; +import org.jetbrains.annotations.NotNull; + +import javax.annotation.Nonnull; + +public class ItemMekaSuitHelmet extends ItemArmor implements ISpecialArmor { + + public ItemMekaSuitHelmet() { + super(EnumHelper.addArmorMaterial("MEKASUITHELMET", "mekasuithelmet", 0, new int[]{0, 0, 0, 0}, 100, SoundEvents.ITEM_ARMOR_EQUIP_GENERIC, + 100), 0, EntityEquipmentSlot.HEAD); + setCreativeTab(Mekanism.tabMekanism); + } + + @Override + public boolean isValidArmor(ItemStack stack, EntityEquipmentSlot armorType, Entity entity) { + return armorType == EntityEquipmentSlot.HEAD; + } + + + + @Override + public String getArmorTexture(ItemStack stack, Entity entity, EntityEquipmentSlot slot, String type) { + return "mekanism:render/NullArmor.png"; + } + + @Override + @SideOnly(Side.CLIENT) + public ModelBiped getArmorModel(EntityLivingBase entityLiving, ItemStack itemStack, EntityEquipmentSlot armorSlot, ModelBiped _default) { + ModelCustomArmor model = ModelCustomArmor.INSTANCE; + model.modelType = ArmorModel.MEKASUITHELMET; + return model; + } + + + @Override + public ArmorProperties getProperties(EntityLivingBase entityLivingBase, @NotNull ItemStack itemStack, DamageSource damageSource, double v, int i) { + return new ArmorProperties(1, MekanismConfig.current().general.armoredMekaSuitHelmetDamageRatio.val(), + MekanismConfig.current().general.armoredMekaSuitHelmetDamageMax.val()); + } + + public int getArmorDisplay(EntityPlayer player, @Nonnull ItemStack armor, int slot) { + return 20; + } + + @Override + public void damageArmor(EntityLivingBase entityLivingBase, @NotNull ItemStack itemStack, DamageSource damageSource, int i, int i1) { + } + + + + +} + + */ \ No newline at end of file diff --git a/src/main/java/mekanism/common/item/ItemTierInstaller.java b/src/main/java/mekanism/common/item/ItemTierInstaller.java index 6a820a1b..9d802b9a 100644 --- a/src/main/java/mekanism/common/item/ItemTierInstaller.java +++ b/src/main/java/mekanism/common/item/ItemTierInstaller.java @@ -21,7 +21,7 @@ public class ItemTierInstaller extends ItemMekanism implements IMetaItem { public ItemTierInstaller() { super(); - setMaxStackSize(1); + setMaxStackSize(16); setHasSubtypes(true); } diff --git a/src/main/java/mekanism/common/item/ItemUpgrade.java b/src/main/java/mekanism/common/item/ItemUpgrade.java index 7fad719d..54d9a2fb 100644 --- a/src/main/java/mekanism/common/item/ItemUpgrade.java +++ b/src/main/java/mekanism/common/item/ItemUpgrade.java @@ -29,7 +29,7 @@ public class ItemUpgrade extends ItemMekanism implements IUpgradeItem { public ItemUpgrade(Upgrade type) { super(); upgrade = type; - setMaxStackSize(type.getMax()); + setMaxStackSize(16); } @Override diff --git a/src/main/java/mekanism/common/tile/TileEntityControlRodAssembly.java b/src/main/java/mekanism/common/tile/TileEntityControlRodAssembly.java new file mode 100644 index 00000000..51230778 --- /dev/null +++ b/src/main/java/mekanism/common/tile/TileEntityControlRodAssembly.java @@ -0,0 +1,4 @@ +package mekanism.common.tile; + +public class TileEntityControlRodAssembly { +} diff --git a/src/main/java/mekanism/common/tile/TileEntitySuperchargedCoil.java b/src/main/java/mekanism/common/tile/TileEntitySuperchargedCoil.java new file mode 100644 index 00000000..82cefd5e --- /dev/null +++ b/src/main/java/mekanism/common/tile/TileEntitySuperchargedCoil.java @@ -0,0 +1,69 @@ +package mekanism.common.tile; + +import mekanism.api.Coord4D; +import mekanism.api.gas.GasStack; +import mekanism.common.config.MekanismConfig; +import mekanism.common.tile.prefab.TileEntityEffectsBlock; +import mekanism.common.util.InventoryUtils; +import mekanism.common.util.LangUtils; +import mekanism.common.util.MekanismUtils; +import net.minecraft.client.util.ITooltipFlag; +import net.minecraft.item.ItemStack; +import net.minecraft.util.EnumFacing; +import net.minecraft.util.NonNullList; +import net.minecraft.world.World; +import net.minecraftforge.common.capabilities.Capability; +import net.minecraftforge.fml.relauncher.Side; +import net.minecraftforge.fml.relauncher.SideOnly; +import net.minecraftforge.items.CapabilityItemHandler; + +import javax.annotation.Nonnull; +import java.util.List; + +public class TileEntitySuperchargedCoil extends TileEntityEffectsBlock { + + public Coord4D digging; + + public TileEntitySuperchargedCoil() { + super("machine.laser", "SuperchargedCoil", 0); + inventory = NonNullList.withSize(0, ItemStack.EMPTY); + } + + + + + + + @Override + public boolean sideIsConsumer(EnumFacing side) { + return side == facing.getOpposite(); + } + + @Override + public boolean renderUpdate() { + return false; + } + + @Override + public boolean lightUpdate() { + return false; + } + + @Nonnull + @Override + public int[] getSlotsForFace(@Nonnull EnumFacing side) { + return InventoryUtils.EMPTY; + } + + @Override + public boolean isCapabilityDisabled(@Nonnull Capability capability, EnumFacing side) { + if (capability == CapabilityItemHandler.ITEM_HANDLER_CAPABILITY) { + return true; + } + return super.isCapabilityDisabled(capability, side); + } + + + + +} diff --git a/src/main/java/mekanism/generators/common/block/states/BlockStateGenerator.java b/src/main/java/mekanism/generators/common/block/states/BlockStateGenerator.java index 5880565a..aa309a7e 100644 --- a/src/main/java/mekanism/generators/common/block/states/BlockStateGenerator.java +++ b/src/main/java/mekanism/generators/common/block/states/BlockStateGenerator.java @@ -78,6 +78,7 @@ public enum GeneratorType implements IStringSerializable, IBlockType { BIO_GENERATOR(GeneratorBlock.GENERATOR_BLOCK_1, 4, "BioGenerator", 4, 160000, TileEntityBioGenerator::new, true, Plane.HORIZONTAL, false, true), ADVANCED_SOLAR_GENERATOR(GeneratorBlock.GENERATOR_BLOCK_1, 5, "AdvancedSolarGenerator", 1, 200000, TileEntityAdvancedSolarGenerator::new, true, Plane.HORIZONTAL, false), WIND_GENERATOR(GeneratorBlock.GENERATOR_BLOCK_1, 6, "WindGenerator", 5, 200000, TileEntityWindGenerator::new, true, Plane.HORIZONTAL, false), + TURBINE_ROTOR(GeneratorBlock.GENERATOR_BLOCK_1, 7, "TurbineRotor", -1, -1, TileEntityTurbineRotor::new, false, BlockStateUtils.NO_ROTATION, false), ROTATIONAL_COMPLEX(GeneratorBlock.GENERATOR_BLOCK_1, 8, "RotationalComplex", -1, -1, TileEntityRotationalComplex::new, false, BlockStateUtils.NO_ROTATION, false), ELECTROMAGNETIC_COIL(GeneratorBlock.GENERATOR_BLOCK_1, 9, "ElectromagneticCoil", -1, -1, TileEntityElectromagneticCoil::new, false, BlockStateUtils.NO_ROTATION, false), diff --git a/src/main/resources/assets/mekanism/blockstates/control_rod_assembly.json b/src/main/resources/assets/mekanism/blockstates/control_rod_assembly.json new file mode 100644 index 00000000..3ddb9717 --- /dev/null +++ b/src/main/resources/assets/mekanism/blockstates/control_rod_assembly.json @@ -0,0 +1,11 @@ +{ + "forge_marker": 1, + "defaults": { + "model": "mekanism:control_rod_assembly" + }, + "variants": { + "normal": [{}], + "inventory": [{}] + } +} + diff --git a/src/main/resources/assets/mekanism/blockstates/fission_fuel_assembly.json b/src/main/resources/assets/mekanism/blockstates/fission_fuel_assembly.json new file mode 100644 index 00000000..80b8d0b9 --- /dev/null +++ b/src/main/resources/assets/mekanism/blockstates/fission_fuel_assembly.json @@ -0,0 +1,11 @@ +{ + "forge_marker": 1, + "defaults": { + "model": "mekanism:fission_fuel_assembly" + }, + "variants": { + "normal": [{}], + "inventory": [{}] + } +} + diff --git a/src/main/resources/assets/mekanism/blockstates/fission_reacher_casing.json b/src/main/resources/assets/mekanism/blockstates/fission_reacher_casing.json new file mode 100644 index 00000000..da2b6291 --- /dev/null +++ b/src/main/resources/assets/mekanism/blockstates/fission_reacher_casing.json @@ -0,0 +1,14 @@ +{ + "forge_marker": 1, + "defaults": { + "model": "mekanism:basic_cube", + "textures": { + "all": "mekanism:blocks/FissionReacherCasing" + } + }, + "variants": { + "normal": [{}], + "inventory": [{}] + } +} + diff --git a/src/main/resources/assets/mekanism/blockstates/sps_casing.json b/src/main/resources/assets/mekanism/blockstates/sps_casing.json new file mode 100644 index 00000000..f6a33b50 --- /dev/null +++ b/src/main/resources/assets/mekanism/blockstates/sps_casing.json @@ -0,0 +1,14 @@ +{ + "forge_marker": 1, + "defaults": { + "model": "mekanism:basic_cube", + "textures": { + "all": "mekanism:blocks/SpsCasing" + } + }, + "variants": { + "normal": [{}], + "inventory": [{}] + } +} + diff --git a/src/main/resources/assets/mekanism/blockstates/supercharged_coil.json b/src/main/resources/assets/mekanism/blockstates/supercharged_coil.json new file mode 100644 index 00000000..17fd66c3 --- /dev/null +++ b/src/main/resources/assets/mekanism/blockstates/supercharged_coil.json @@ -0,0 +1,19 @@ +{ + "forge_marker": 1, + "defaults": { + "model": "mekanism:supercharged_coil" + }, + "variants": { + "normal": [{}], + "facing": { + "up": {}, + "down": {"x": 180}, + "north": {"x": -90, "y": 180}, + "south": {"x": -90}, + "east": {"x": -90, "y": -90}, + "west": {"x": -90, "y": 90} + }, + "inventory": [{}] + } +} + diff --git a/src/main/resources/assets/mekanism/gui/factory/guiultimatefactory1.png b/src/main/resources/assets/mekanism/gui/factory/guiultimatefactory1.png index fd785699..87f1a798 100644 Binary files a/src/main/resources/assets/mekanism/gui/factory/guiultimatefactory1.png and b/src/main/resources/assets/mekanism/gui/factory/guiultimatefactory1.png differ diff --git a/src/main/resources/assets/mekanism/gui/factory/guiultimatefactory2.png b/src/main/resources/assets/mekanism/gui/factory/guiultimatefactory2.png index 1975b495..3ee67ede 100644 Binary files a/src/main/resources/assets/mekanism/gui/factory/guiultimatefactory2.png and b/src/main/resources/assets/mekanism/gui/factory/guiultimatefactory2.png differ diff --git a/src/main/resources/assets/mekanism/gui/nei/guiisotopiccentrifuge2.png b/src/main/resources/assets/mekanism/gui/nei/guiisotopiccentrifuge2.png deleted file mode 100644 index 2491ee1a..00000000 Binary files a/src/main/resources/assets/mekanism/gui/nei/guiisotopiccentrifuge2.png and /dev/null differ diff --git a/src/main/resources/assets/mekanism/lang/en_us.lang b/src/main/resources/assets/mekanism/lang/en_us.lang index d130a3e4..c0f3d352 100644 --- a/src/main/resources/assets/mekanism/lang/en_us.lang +++ b/src/main/resources/assets/mekanism/lang/en_us.lang @@ -50,6 +50,7 @@ item.Flamethrower.name=Flamethrower item.GaugeDropper.name=Gauge Dropper item.BioFuel.name=Bio Fuel item.CraftingFormula.name=Crafting Formula +item.Canteen.name=Canteen # Control Circuits item.BasicControlCircuit.name=Basic Control Circuit @@ -101,6 +102,8 @@ tile.BasicBlock.CopperBlock.name=Copper Block tile.BasicBlock.TinBlock.name=Tin Block tile.BasicBlock.ThermalEvaporationController.name=Thermal Evaporation Controller tile.BasicBlock.ThermalEvaporationValve.name=Thermal Evaporation Valve +tile.BasicBlock2.UraniumBlock.name=Uranium Block +tile.BasicBlock2.LeadBlock.name=Lead Block # Basic Block 2 (second ID iteration) tile.BasicBlock2.ThermalEvaporationBlock.name=Thermal Evaporation Block @@ -135,6 +138,10 @@ tile.MachineBlock.PersonalChest.name=Personal Chest tile.MachineBlock.Chargepad.name=Chargepad tile.MachineBlock.LogisticalSorter.name=Logistical Sorter tile.MachineBlock.DigitalMiner.name=Digital Miner +tile.MachineBlock.IsotopicCentrifuge.name=Isotopic Centrifuge +tile.MachineBlock.NutritionalLiquifier.name=Nutritional Liquifier +tile.MachineBlock.antiprotonicnucleosynthesizer.name=Antiprotonic Nucleosynthesizer£¨WIP£© +tile.MachineBlock.AntiprotonicNucleosynthesizer.name=Antiprotonic Nucleosynthesizer£¨WIP£© # Machine Block 2 (second ID iteration) tile.MachineBlock2.RotaryCondensentrator.name=Rotary Condensentrator @@ -162,6 +169,11 @@ tile.MachineBlock3.Oredictionificator.name=Oredictionificator tile.MachineBlock3.ResistiveHeater.name=Resistive Heater tile.MachineBlock3.FormulaicAssemblicator.name=Formulaic Assemblicator tile.MachineBlock3.FuelwoodHeater.name=Fuelwood Heater +tile.MachineBlock3.Chargepad.name=Chargepad +tile.MachineBlock3.ElectricPump.name=Electric Pump +tile.MachineBlock3.LogisticalSorter.name=Logistical Sorter +tile.MachineBlock3.PersonalChest.name=Personal Chest +tile.MachineBlock3.NutritionalLiquifier.name=Nutritional Liquifier # Plastic tile.PlasticBlock.name=Plastic Block @@ -185,6 +197,9 @@ infuse.bio=Biomass tile.OreBlock.OsmiumOre.name=Osmium Ore tile.OreBlock.CopperOre.name=Copper Ore tile.OreBlock.TinOre.name=Tin Ore +tile.OreBlock.UraniumOre.name=Uranium Ore +tile.OreBlock.LeadOre.name=Lead Ore +tile.OreBlock.FluoriteOre.name=Fluorite Ore # Transmitters tile.Transmitter.BasicPressurizedTube.name=Basic Pressurized Tube diff --git a/src/main/resources/assets/mekanism/lang/zh_cn.lang b/src/main/resources/assets/mekanism/lang/zh_cn.lang index 077eb7e7..07b82024 100644 --- a/src/main/resources/assets/mekanism/lang/zh_cn.lang +++ b/src/main/resources/assets/mekanism/lang/zh_cn.lang @@ -51,7 +51,7 @@ item.GaugeDropper.name=æ»´é‡å™¨ item.BioFuel.name=生物燃料 item.CraftingFormula.name=åˆæˆé…æ–¹ item.Canteen.name=水壶 - +item.MekTool.name=§4☢☣✪拓è’者工具✪☣☢ §fã€WIP】 # Control Circuits item.BasicControlCircuit.name=基础控制电路 item.AdvancedControlCircuit.name=高级控制电路 @@ -123,6 +123,10 @@ tile.BasicBlock2.SecurityDesk.name=机密桌 tile.BasicBlock2.UraniumBlock.name=é“€å— tile.BasicBlock2.LeadBlock.name=é“…å— +tile.BasicBlock3.SpsCasing.name=超临界移相器外壳[WIP] +tile.BasicBlock3.FissionReacherCasing.name=裂å˜å应堆外壳[WIP] +tile.BasicBlock3.ControlRodAssembly.name=控制棒组件[WIP] +tile.BasicBlock3.FissionFuelAssembly.name=裂å˜ç‡ƒæ–™ç»„件[WIP] # Machine Block tile.MachineBlock.EnrichmentChamber.name=富集仓 tile.MachineBlock.OsmiumCompressor.name=锇压缩机 @@ -137,8 +141,9 @@ tile.MachineBlock.DigitalMiner.name=数字型采矿机 tile.MachineBlock.IsotopicCentrifuge.name=åŒä½ç´ ç¦»å¿ƒæœº tile.MachineBlock.Chargepad.name=å……ç”µå° tile.MachineBlock.NutritionalLiquifier.name=è¥å…»æ¶²åŒ–器 -tile.MachineBlock.antiprotonicnucleosynthesizer.name=åè´¨å­æ ¸åˆæˆå™¨ -tile.MachineBlock.AntiprotonicNucleosynthesizer.name=åè´¨å­æ ¸åˆæˆå™¨ +tile.MachineBlock.antiprotonicnucleosynthesizer.name=åè´¨å­æ ¸åˆæˆå™¨ï¼ˆWIP) +tile.MachineBlock.AntiprotonicNucleosynthesizer.name=åè´¨å­æ ¸åˆæˆå™¨ï¼ˆWIP) + # Machine Block 2 (second ID iteration) tile.MachineBlock2.RotaryCondensentrator.name=回旋å¼æ°”液转æ¢æœº tile.MachineBlock2.ChemicalOxidizer.name=化学氧化机 @@ -170,7 +175,7 @@ tile.MachineBlock3.ElectricPump.name=电动泵 tile.MachineBlock3.LogisticalSorter.name=物æµæ•´ç†æœº tile.MachineBlock3.PersonalChest.name=ç§äººç®±å­ tile.MachineBlock3.NutritionalLiquifier.name=è¥å…»æ¶²åŒ–器 - +tile.MachineBlock3.superchargedcoil.name=增压线圈(WIP) # Plastic tile.PlasticBlock.name=å¡‘æ–™æ–¹å— tile.SlickPlasticBlock.name=å…‰æ»‘å¡‘æ–™æ–¹å— @@ -331,13 +336,13 @@ item.leadNugget.name=铅颗粒 # Gasses gas.hydrogen=氢气 gas.oxygen=氧气 -gas.water=水蒸气 +gas.water=液化气æ€æ°´ gas.chlorine=æ°¯ gas.sulfurdioxide=二氧化硫 gas.sulfurtrioxide=三氧化硫 gas.sulfuricacid=ç¡«é…¸ gas.hydrogenchloride=氯化氢 -gas.liquidosmium=液æ€é”‡ +gas.liquidosmium=液化气æ€é”‡ gas.ethene=乙烯 gas.sodium=é’  gas.brine=æ°”æ€ç›æ°´ @@ -832,8 +837,17 @@ mekanism.tooltip.disassembler.normal=正常 mekanism.tooltip.disassembler.slow=æ…¢ mekanism.tooltip.disassembler.fast=å¿« mekanism.tooltip.disassembler.vein=矿脉 +mekanism.tooltip.disassembler.extended_vein=扩展é™è„‰å¼€é‡‡ mekanism.tooltip.disassembler.off=å…³ +mekanism.tooltip.mektool.normal=正常 +mekanism.tooltip.mektool.slow=æ…¢ +mekanism.tooltip.mektool.fast=å¿« +mekanism.tooltip.mektool.very_fast=æ›´å¿« +mekanism.tooltip.mektool.vein=矿脉 +mekanism.tooltip.mektool.extended_vein=扩展é™è„‰å¼€é‡‡ +mekanism.tooltip.mektool.off=å…³ + tooltip.configurationCard.got=从%sæ¢å¤è¿‡æ»¤å™¨æ•°æ® tooltip.configurationCard.set=导入类型%sçš„è¿‡æ»¤å™¨æ•°æ® tooltip.configurationCard.unequal=过滤器数æ®æ ¼å¼ä¸ç¬¦è§„则 @@ -873,6 +887,8 @@ tooltip.PressureDisperser=一ç§èƒ½ä¿è¯è’¸æ±½åŽ‹åŠ›çš„多方å—结构方å—, tooltip.BoilerCasing=一ç§è€åŽ‹æ–¹å—,用于制作锅炉结构的外壳 tooltip.BoilerValve=用于锅炉结构的阀门,能让水进入锅炉并导出产生的蒸汽 tooltip.SecurityDesk=一个中央控制系统,用于管ç†ä½ æ‰€æœ‰æœºå™¨çš„安全设置 +tooltip.SpsCasing=能够抵抗相移å应产生的强烈化学和热效应的增强外壳。 +tooltip.FissionReacherCasing=裂å˜å应堆外壳 tooltip.EnrichmentChamber=一å°èƒ½å°†çŸ¿çŸ³ç£¨æˆä¸¤ä»½ç²‰æœ«çš„机器,也å¯ä»¥è¿›è¡Œä¸€äº›å…¶ä»–æ“作。 tooltip.OsmiumCompressor=一å°éžå¸¸é«˜çº§çš„è®¾å¤‡ï¼Œèƒ½å¤Ÿå°†é”‡çŸ¿çŸ³åŽ‹ç¼©æˆ å¤šç§ç²‰æœ«ä»¥åˆ¶é€ ç›¸åº”金属锭。 @@ -912,6 +928,13 @@ tooltip.canteen1=åªèƒ½æ·»åŠ è¥å…»ç³Šç³Š tooltip.canteen2=为什么这物å“是如此的昂贵? tooltip.NutritionalLiquifier=一ç§èƒ½å°†ä»»ä½•é£Ÿç‰©åŠ å·¥æˆæ— å®³ã€æ˜“消化的è¥å…»ç³Šå‰‚的机器 tooltip.IsotopicCentrifuge=一å°åªæœ‰ä¸€ä¸ªç›®çš„的机器:éžå¸¸éžå¸¸å¿«åœ°æ—‹è½¬å®ƒè£…载的东西。 +tooltip.antiprotonicnucleosynthesizer=一ç§ä»¥åŽŸå­çš„æ–¹å¼åˆ©ç”¨å°‘é‡å物质和大é‡èƒ½é‡è½¬åŒ–å„ç§èµ„æºçš„机器。 +tooltip.superchargedcoil=用于超临界移相器多方å—结构供电。必须连接到超临界移相器端å£[ç›®å‰åªæ˜¯ä¸ªè£…饰] + +tooltip.MekTool1=å分强大的挖掘机器 +tooltip.MekTool2=当冲满25%ä»¥ä¸Šæ—¶ï¼Œä¼¤å®³ä¼šè¶…çº§åŠ å€ +tooltip.MekTool3=当冲满90%以上时,å¯èƒ½ä¼šå¸¦æœ‰ç§’æ€æ•ˆæžœï¼Ÿ +tooltip.MekTool4=§4☢☣✪å±é™©å·¥å…·ï¼Œè­¦å‘Šï¼âœªâ˜£â˜¢ tooltip.HeatGenerator=一å°ä½¿ç”¨å²©æµ†çƒ­é‡æˆ–者其它å¯ç‡ƒèµ„æºäº§ç”Ÿèƒ½é‡çš„å‘电机。 tooltip.SolarGenerator=一å°ä½¿ç”¨å¤ªé˜³èƒ½é‡å‘电的å‘电机。 diff --git a/src/main/resources/assets/mekanism/logo.png b/src/main/resources/assets/mekanism/logo.png new file mode 100644 index 00000000..9abf5f89 Binary files /dev/null and b/src/main/resources/assets/mekanism/logo.png differ diff --git a/src/main/resources/assets/mekanism/models/block/control_rod_assembly.json b/src/main/resources/assets/mekanism/models/block/control_rod_assembly.json new file mode 100644 index 00000000..36051bb5 --- /dev/null +++ b/src/main/resources/assets/mekanism/models/block/control_rod_assembly.json @@ -0,0 +1,401 @@ +{ + "credit": "Made with Blockbench", + "parent": "block/cube_all", + "texture_size": [128, 128], + "textures": { + "0": "mekanism:blocks/models/control_rod_assembly", + "particle": "mekanism:blocks/models/control_rod_assembly" + }, + "elements": [ + { + "name": "connector_1", + "from": [4, 7, 4], + "to": [6, 15, 6], + "rotation": {"angle": 0, "axis": "y", "origin": [9, 7, 9]}, + "faces": { + "north": {"uv": [0.25, 7.75, 0.5, 8.75], "texture": "#0"}, + "east": {"uv": [0, 7.75, 0.25, 8.75], "texture": "#0"}, + "south": {"uv": [0.75, 7.75, 1, 8.75], "texture": "#0"}, + "west": {"uv": [0.5, 7.75, 0.75, 8.75], "texture": "#0"}, + "up": {"uv": [0.5, 7.75, 0.25, 7.5], "texture": "#0"}, + "down": {"uv": [0.75, 7.5, 0.5, 7.75], "texture": "#0"} + } + }, + { + "name": "connector_2", + "from": [10, 8, 4], + "to": [12, 16, 6], + "rotation": {"angle": 0, "axis": "y", "origin": [7, 8, 9]}, + "faces": { + "north": {"uv": [7, 6.75, 7.25, 7.75], "texture": "#0"}, + "east": {"uv": [6.75, 6.75, 7, 7.75], "texture": "#0"}, + "south": {"uv": [7.5, 6.75, 7.75, 7.75], "texture": "#0"}, + "west": {"uv": [7.25, 6.75, 7.5, 7.75], "texture": "#0"}, + "up": {"uv": [7.25, 6.75, 7, 6.5], "texture": "#0"}, + "down": {"uv": [7.5, 6.5, 7.25, 6.75], "texture": "#0"} + } + }, + { + "name": "connector_3", + "from": [10, 7, 10], + "to": [12, 15, 12], + "rotation": {"angle": 0, "axis": "y", "origin": [7, 7, 7]}, + "faces": { + "north": {"uv": [6.75, 2.625, 7, 3.625], "texture": "#0"}, + "east": {"uv": [6.5, 2.625, 6.75, 3.625], "texture": "#0"}, + "south": {"uv": [7.25, 2.625, 7.5, 3.625], "texture": "#0"}, + "west": {"uv": [7, 2.625, 7.25, 3.625], "texture": "#0"}, + "up": {"uv": [7, 2.625, 6.75, 2.375], "texture": "#0"}, + "down": {"uv": [7.25, 2.375, 7, 2.625], "texture": "#0"} + } + }, + { + "name": "connector_4", + "from": [4, 8, 10], + "to": [6, 16, 12], + "rotation": {"angle": 0, "axis": "y", "origin": [9, 8, 7]}, + "faces": { + "north": {"uv": [5, 6.5, 5.25, 7.5], "texture": "#0"}, + "east": {"uv": [4.75, 6.5, 5, 7.5], "texture": "#0"}, + "south": {"uv": [5.5, 6.5, 5.75, 7.5], "texture": "#0"}, + "west": {"uv": [5.25, 6.5, 5.5, 7.5], "texture": "#0"}, + "up": {"uv": [5.25, 6.5, 5, 6.25], "texture": "#0"}, + "down": {"uv": [5.5, 6.25, 5.25, 6.5], "texture": "#0"} + } + }, + { + "name": "connector_5", + "from": [7, 4, 7], + "to": [9, 12, 9], + "rotation": {"angle": 0, "axis": "y", "origin": [12, 4, 4]}, + "faces": { + "north": {"uv": [4.75, 2.625, 5, 3.625], "texture": "#0"}, + "east": {"uv": [4.5, 2.625, 4.75, 3.625], "texture": "#0"}, + "south": {"uv": [5.25, 2.625, 5.5, 3.625], "texture": "#0"}, + "west": {"uv": [5, 2.625, 5.25, 3.625], "texture": "#0"}, + "up": {"uv": [5, 2.625, 4.75, 2.375], "texture": "#0"}, + "down": {"uv": [5.25, 2.375, 5, 2.625], "texture": "#0"} + } + }, + { + "name": "rod_1", + "from": [1, 3, 1], + "to": [3, 7, 3], + "faces": { + "north": {"uv": [3.25, 8, 3.5, 8.5], "texture": "#0"}, + "east": {"uv": [3, 8, 3.25, 8.5], "texture": "#0"}, + "south": {"uv": [3.75, 8, 4, 8.5], "texture": "#0"}, + "west": {"uv": [3.5, 8, 3.75, 8.5], "texture": "#0"}, + "up": {"uv": [3.5, 8, 3.25, 7.75], "texture": "#0"}, + "down": {"uv": [3.75, 7.75, 3.5, 8], "texture": "#0"} + } + }, + { + "name": "rod_2", + "from": [1, 3, 5], + "to": [15, 7, 7], + "rotation": {"angle": 0, "axis": "y", "origin": [8, 8, 12]}, + "faces": { + "north": {"uv": [0.25, 7, 2, 7.5], "texture": "#0"}, + "east": {"uv": [0, 7, 0.25, 7.5], "texture": "#0"}, + "south": {"uv": [2.25, 7, 4, 7.5], "texture": "#0"}, + "west": {"uv": [2, 7, 2.25, 7.5], "texture": "#0"}, + "up": {"uv": [2, 7, 0.25, 6.75], "texture": "#0"}, + "down": {"uv": [3.75, 6.75, 2, 7], "texture": "#0"} + } + }, + { + "name": "rod_3", + "from": [1, 3, 9], + "to": [15, 7, 11], + "rotation": {"angle": 0, "axis": "y", "origin": [8, 8, 16]}, + "faces": { + "north": {"uv": [6.25, 1.5, 8, 2], "texture": "#0"}, + "east": {"uv": [6, 1.5, 6.25, 2], "texture": "#0"}, + "south": {"uv": [8.25, 1.5, 10, 2], "texture": "#0"}, + "west": {"uv": [8, 1.5, 8.25, 2], "texture": "#0"}, + "up": {"uv": [8, 1.5, 6.25, 1.25], "texture": "#0"}, + "down": {"uv": [9.75, 1.25, 8, 1.5], "texture": "#0"} + } + }, + { + "name": "rod_4", + "from": [1, 3, 13], + "to": [3, 7, 15], + "rotation": {"angle": 0, "axis": "y", "origin": [8, 8, 20]}, + "faces": { + "north": {"uv": [2.25, 7.75, 2.5, 8.25], "texture": "#0"}, + "east": {"uv": [2, 7.75, 2.25, 8.25], "texture": "#0"}, + "south": {"uv": [2.75, 7.75, 3, 8.25], "texture": "#0"}, + "west": {"uv": [2.5, 7.75, 2.75, 8.25], "texture": "#0"}, + "up": {"uv": [2.5, 7.75, 2.25, 7.5], "texture": "#0"}, + "down": {"uv": [2.75, 7.5, 2.5, 7.75], "texture": "#0"} + } + }, + { + "name": "rod_5", + "from": [5, 3, 1], + "to": [7, 7, 15], + "rotation": {"angle": 0, "axis": "y", "origin": [12, 8, 20]}, + "faces": { + "north": {"uv": [1.75, 6.25, 2, 6.75], "texture": "#0"}, + "east": {"uv": [0, 6.25, 1.75, 6.75], "texture": "#0"}, + "south": {"uv": [3.75, 6.25, 4, 6.75], "texture": "#0"}, + "west": {"uv": [2, 6.25, 3.75, 6.75], "texture": "#0"}, + "up": {"uv": [2, 6.25, 1.75, 4.5], "texture": "#0"}, + "down": {"uv": [2.25, 4.5, 2, 6.25], "texture": "#0"} + } + }, + { + "name": "rod_6", + "from": [9, 3, 1], + "to": [11, 7, 15], + "rotation": {"angle": 0, "axis": "y", "origin": [16, 8, 20]}, + "faces": { + "north": {"uv": [6, 4.5, 6.25, 5], "texture": "#0"}, + "east": {"uv": [4.25, 4.5, 6, 5], "texture": "#0"}, + "south": {"uv": [8, 4.5, 8.25, 5], "texture": "#0"}, + "west": {"uv": [6.25, 4.5, 8, 5], "texture": "#0"}, + "up": {"uv": [6.25, 4.5, 6, 2.75], "texture": "#0"}, + "down": {"uv": [6.5, 2.75, 6.25, 4.5], "texture": "#0"} + } + }, + { + "name": "rod_7", + "from": [13, 3, 13], + "to": [15, 7, 15], + "rotation": {"angle": 0, "axis": "y", "origin": [20, 8, 20]}, + "faces": { + "north": {"uv": [1.25, 7.75, 1.5, 8.25], "texture": "#0"}, + "east": {"uv": [1, 7.75, 1.25, 8.25], "texture": "#0"}, + "south": {"uv": [1.75, 7.75, 2, 8.25], "texture": "#0"}, + "west": {"uv": [1.5, 7.75, 1.75, 8.25], "texture": "#0"}, + "up": {"uv": [1.5, 7.75, 1.25, 7.5], "texture": "#0"}, + "down": {"uv": [1.75, 7.5, 1.5, 7.75], "texture": "#0"} + } + }, + { + "name": "rod_8", + "from": [13, 3, 1], + "to": [15, 7, 3], + "rotation": {"angle": 0, "axis": "y", "origin": [20, 8, 8]}, + "faces": { + "north": {"uv": [0.25, 5.75, 0.5, 6.25], "texture": "#0"}, + "east": {"uv": [0, 5.75, 0.25, 6.25], "texture": "#0"}, + "south": {"uv": [0.75, 5.75, 1, 6.25], "texture": "#0"}, + "west": {"uv": [0.5, 5.75, 0.75, 6.25], "texture": "#0"}, + "up": {"uv": [0.5, 5.75, 0.25, 5.5], "texture": "#0"}, + "down": {"uv": [0.75, 5.5, 0.5, 5.75], "texture": "#0"} + } + }, + { + "name": "core", + "from": [2, 3, 2], + "to": [14, 8, 14], + "faces": { + "north": {"uv": [1.5, 3.875, 3, 4.5], "texture": "#0"}, + "east": {"uv": [0, 3.875, 1.5, 4.5], "texture": "#0"}, + "south": {"uv": [4.5, 3.875, 6, 4.5], "texture": "#0"}, + "west": {"uv": [3, 3.875, 4.5, 4.5], "texture": "#0"}, + "up": {"uv": [3, 3.875, 1.5, 2.375], "texture": "#0"}, + "down": {"uv": [4.5, 2.375, 3, 3.875], "texture": "#0"} + } + }, + { + "name": "control_rod_frame1", + "from": [13, 9, 0], + "to": [16, 14, 3], + "faces": { + "north": {"uv": [0.375, 4.875, 0.75, 5.5], "texture": "#0"}, + "east": {"uv": [0, 4.875, 0.375, 5.5], "texture": "#0"}, + "south": {"uv": [1.125, 4.875, 1.5, 5.5], "texture": "#0"}, + "west": {"uv": [0.75, 4.875, 1.125, 5.5], "texture": "#0"}, + "up": {"uv": [0.75, 4.875, 0.375, 4.5], "texture": "#0"}, + "down": {"uv": [1.125, 4.5, 0.75, 4.875], "texture": "#0"} + } + }, + { + "name": "control_rod_frame2", + "from": [13, 9, 13], + "to": [16, 14, 16], + "faces": { + "north": {"uv": [0.375, 2.75, 0.75, 3.375], "texture": "#0"}, + "east": {"uv": [0, 2.75, 0.375, 3.375], "texture": "#0"}, + "south": {"uv": [1.125, 2.75, 1.5, 3.375], "texture": "#0"}, + "west": {"uv": [0.75, 2.75, 1.125, 3.375], "texture": "#0"}, + "up": {"uv": [0.75, 2.75, 0.375, 2.375], "texture": "#0"}, + "down": {"uv": [1.125, 2.375, 0.75, 2.75], "texture": "#0"} + } + }, + { + "name": "control_rod_frame3", + "from": [0, 9, 0], + "to": [3, 14, 3], + "faces": { + "north": {"uv": [0.375, 1.375, 0.75, 2], "texture": "#0"}, + "east": {"uv": [0, 1.375, 0.375, 2], "texture": "#0"}, + "south": {"uv": [1.125, 1.375, 1.5, 2], "texture": "#0"}, + "west": {"uv": [0.75, 1.375, 1.125, 2], "texture": "#0"}, + "up": {"uv": [0.75, 1.375, 0.375, 1], "texture": "#0"}, + "down": {"uv": [1.125, 1, 0.75, 1.375], "texture": "#0"} + } + }, + { + "name": "control_rod_frame4", + "from": [0, 9, 13], + "to": [3, 14, 16], + "faces": { + "north": {"uv": [0.375, 0.375, 0.75, 1], "texture": "#0"}, + "east": {"uv": [0, 0.375, 0.375, 1], "texture": "#0"}, + "south": {"uv": [1.125, 0.375, 1.5, 1], "texture": "#0"}, + "west": {"uv": [0.75, 0.375, 1.125, 1], "texture": "#0"}, + "up": {"uv": [0.75, 0.375, 0.375, 0], "texture": "#0"}, + "down": {"uv": [1.125, 0, 0.75, 0.375], "texture": "#0"} + } + }, + { + "name": "control_rod_frame5", + "from": [0, 7, 0], + "to": [16, 9, 3], + "faces": { + "north": {"uv": [6.375, 1, 8.375, 1.25], "texture": "#0"}, + "east": {"uv": [6, 1, 6.375, 1.25], "texture": "#0"}, + "south": {"uv": [8.75, 1, 10.75, 1.25], "texture": "#0"}, + "west": {"uv": [8.375, 1, 8.75, 1.25], "texture": "#0"}, + "up": {"uv": [8.375, 1, 6.375, 0.625], "texture": "#0"}, + "down": {"uv": [10.375, 0.625, 8.375, 1], "texture": "#0"} + } + }, + { + "name": "control_rod_frame6", + "from": [0, 14, 0], + "to": [16, 16, 3], + "faces": { + "north": {"uv": [6.375, 0.375, 8.375, 0.625], "texture": "#0"}, + "east": {"uv": [6, 0.375, 6.375, 0.625], "texture": "#0"}, + "south": {"uv": [8.75, 0.375, 10.75, 0.625], "texture": "#0"}, + "west": {"uv": [8.375, 0.375, 8.75, 0.625], "texture": "#0"}, + "up": {"uv": [8.375, 0.375, 6.375, 0], "texture": "#0"}, + "down": {"uv": [10.375, 0, 8.375, 0.375], "texture": "#0"} + } + }, + { + "name": "control_rod_frame7", + "from": [0, 7, 3], + "to": [3, 9, 13], + "faces": { + "north": {"uv": [6, 7.75, 6.375, 8], "texture": "#0"}, + "east": {"uv": [4.75, 7.75, 6, 8], "texture": "#0"}, + "south": {"uv": [7.625, 7.75, 8, 8], "texture": "#0"}, + "west": {"uv": [6.375, 7.75, 7.625, 8], "texture": "#0"}, + "up": {"uv": [6.375, 7.75, 6, 6.5], "texture": "#0"}, + "down": {"uv": [6.75, 6.5, 6.375, 7.75], "texture": "#0"} + } + }, + { + "name": "control_rod_frame8", + "from": [0, 14, 3], + "to": [3, 16, 13], + "faces": { + "north": {"uv": [7.75, 3.625, 8.125, 3.875], "texture": "#0"}, + "east": {"uv": [6.5, 3.625, 7.75, 3.875], "texture": "#0"}, + "south": {"uv": [9.375, 3.625, 9.75, 3.875], "texture": "#0"}, + "west": {"uv": [8.125, 3.625, 9.375, 3.875], "texture": "#0"}, + "up": {"uv": [8.125, 3.625, 7.75, 2.375], "texture": "#0"}, + "down": {"uv": [8.5, 2.375, 8.125, 3.625], "texture": "#0"} + } + }, + { + "name": "control_rod_frame9", + "from": [13, 7, 3], + "to": [16, 9, 13], + "faces": { + "north": {"uv": [4, 7.5, 4.375, 7.75], "texture": "#0"}, + "east": {"uv": [2.75, 7.5, 4, 7.75], "texture": "#0"}, + "south": {"uv": [5.625, 7.5, 6, 7.75], "texture": "#0"}, + "west": {"uv": [4.375, 7.5, 5.625, 7.75], "texture": "#0"}, + "up": {"uv": [4.375, 7.5, 4, 6.25], "texture": "#0"}, + "down": {"uv": [4.75, 6.25, 4.375, 7.5], "texture": "#0"} + } + }, + { + "name": "control_rod_frame10", + "from": [13, 14, 3], + "to": [16, 16, 13], + "faces": { + "north": {"uv": [7, 6.25, 7.375, 6.5], "texture": "#0"}, + "east": {"uv": [5.75, 6.25, 7, 6.5], "texture": "#0"}, + "south": {"uv": [8.625, 6.25, 9, 6.5], "texture": "#0"}, + "west": {"uv": [7.375, 6.25, 8.625, 6.5], "texture": "#0"}, + "up": {"uv": [7.375, 6.25, 7, 5], "texture": "#0"}, + "down": {"uv": [7.75, 5, 7.375, 6.25], "texture": "#0"} + } + }, + { + "name": "control_rod_frame11", + "from": [0, 7, 13], + "to": [16, 9, 16], + "faces": { + "north": {"uv": [2.625, 6, 4.625, 6.25], "texture": "#0"}, + "east": {"uv": [2.25, 6, 2.625, 6.25], "texture": "#0"}, + "south": {"uv": [5, 6, 7, 6.25], "texture": "#0"}, + "west": {"uv": [4.625, 6, 5, 6.25], "texture": "#0"}, + "up": {"uv": [4.625, 6, 2.625, 5.625], "texture": "#0"}, + "down": {"uv": [6.625, 5.625, 4.625, 6], "texture": "#0"} + } + }, + { + "name": "control_rod_frame12", + "from": [0, 14, 13], + "to": [16, 16, 16], + "faces": { + "north": {"uv": [2.625, 5.375, 4.625, 5.625], "texture": "#0"}, + "east": {"uv": [2.25, 5.375, 2.625, 5.625], "texture": "#0"}, + "south": {"uv": [5, 5.375, 7, 5.625], "texture": "#0"}, + "west": {"uv": [4.625, 5.375, 5, 5.625], "texture": "#0"}, + "up": {"uv": [4.625, 5.375, 2.625, 5], "texture": "#0"}, + "down": {"uv": [6.625, 5, 4.625, 5.375], "texture": "#0"} + } + }, + { + "name": "connector_ring_bottom", + "from": [0, 0, 0], + "to": [16, 3, 16], + "faces": { + "north": {"uv": [2, 2, 4, 2.375], "texture": "#0"}, + "east": {"uv": [0, 2, 2, 2.375], "texture": "#0"}, + "south": {"uv": [6, 2, 8, 2.375], "texture": "#0"}, + "west": {"uv": [4, 2, 6, 2.375], "texture": "#0"}, + "up": {"uv": [4, 2, 2, 0], "texture": "#0"}, + "down": {"uv": [6, 0, 4, 2], "texture": "#0"} + } + } + ], + "groups": [ + { + "name": "control_rod_assembly", + "origin": [10, 5, 10], + "color": 0, + "children": [ + { + "name": "connectors", + "origin": [0, 12, 18], + "color": 0, + "children": [0, 1, 2, 3, 4] + }, + { + "name": "rods", + "origin": [8, 8, 8], + "color": 0, + "children": [5, 6, 7, 8, 9, 10, 11, 12] + }, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, + { + "name": "connector_rings", + "origin": [8, 8, 8], + "color": 0, + "children": [26] + } + ] + } + ] +} \ No newline at end of file diff --git a/src/main/resources/assets/mekanism/models/block/fission_fuel_assembly.json b/src/main/resources/assets/mekanism/models/block/fission_fuel_assembly.json new file mode 100644 index 00000000..bb9c220d --- /dev/null +++ b/src/main/resources/assets/mekanism/models/block/fission_fuel_assembly.json @@ -0,0 +1,242 @@ +{ + "credit": "Made with Blockbench", + "parent": "block/cube_all", + "texture_size": [128, 128], + "textures": { + "0": "mekanism:blocks/models/fuel_rod_assembly", + "particle": "mekanism:blocks/models/fuel_rod_assembly" + }, + "elements": [ + { + "name": "core", + "from": [2, 3, 2], + "to": [14, 13, 14], + "rotation": {"angle": 0, "axis": "y", "origin": [8, 4, 8]}, + "faces": { + "north": {"uv": [1.5, 6.25, 3, 7.5], "texture": "#0"}, + "east": {"uv": [0, 6.25, 1.5, 7.5], "texture": "#0"}, + "south": {"uv": [4.5, 6.25, 6, 7.5], "texture": "#0"}, + "west": {"uv": [3, 6.25, 4.5, 7.5], "texture": "#0"}, + "up": {"uv": [3, 6.25, 1.5, 4.75], "texture": "#0"}, + "down": {"uv": [4.5, 4.75, 3, 6.25], "texture": "#0"} + } + }, + { + "name": "rod_1", + "from": [13, 1, 1], + "to": [15, 15, 3], + "rotation": {"angle": 0, "axis": "y", "origin": [7.94118, 10.14706, 7.82353]}, + "faces": { + "north": {"uv": [7.25, 5, 7.5, 6.75], "texture": "#0"}, + "east": {"uv": [7, 5, 7.25, 6.75], "texture": "#0"}, + "south": {"uv": [7.75, 5, 8, 6.75], "texture": "#0"}, + "west": {"uv": [7.5, 5, 7.75, 6.75], "texture": "#0"}, + "up": {"uv": [7.5, 5, 7.25, 4.75], "texture": "#0"}, + "down": {"uv": [7.75, 4.75, 7.5, 5], "texture": "#0"} + } + }, + { + "name": "rod_2", + "from": [9, 1, 1], + "to": [11, 15, 3], + "rotation": {"angle": 0, "axis": "y", "origin": [7.94118, 10.14706, 7.82353]}, + "faces": { + "north": {"uv": [7.25, 2.625, 7.5, 4.375], "texture": "#0"}, + "east": {"uv": [7, 2.625, 7.25, 4.375], "texture": "#0"}, + "south": {"uv": [7.75, 2.625, 8, 4.375], "texture": "#0"}, + "west": {"uv": [7.5, 2.625, 7.75, 4.375], "texture": "#0"}, + "up": {"uv": [7.5, 2.625, 7.25, 2.375], "texture": "#0"}, + "down": {"uv": [7.75, 2.375, 7.5, 2.625], "texture": "#0"} + } + }, + { + "name": "rod_3", + "from": [13, 1, 5], + "to": [15, 15, 7], + "rotation": {"angle": 0, "axis": "y", "origin": [7.94118, 10.14706, 7.82353]}, + "faces": { + "north": {"uv": [7.25, 0.25, 7.5, 2], "texture": "#0"}, + "east": {"uv": [7, 0.25, 7.25, 2], "texture": "#0"}, + "south": {"uv": [7.75, 0.25, 8, 2], "texture": "#0"}, + "west": {"uv": [7.5, 0.25, 7.75, 2], "texture": "#0"}, + "up": {"uv": [7.5, 0.25, 7.25, 0], "texture": "#0"}, + "down": {"uv": [7.75, 0, 7.5, 0.25], "texture": "#0"} + } + }, + { + "name": "rod_4", + "from": [1, 1, 1], + "to": [3, 15, 3], + "rotation": {"angle": 0, "axis": "y", "origin": [-4.05882, 10.14706, 7.82353]}, + "faces": { + "north": {"uv": [6.25, 7, 6.5, 8.75], "texture": "#0"}, + "east": {"uv": [6, 7, 6.25, 8.75], "texture": "#0"}, + "south": {"uv": [6.75, 7, 7, 8.75], "texture": "#0"}, + "west": {"uv": [6.5, 7, 6.75, 8.75], "texture": "#0"}, + "up": {"uv": [6.5, 7, 6.25, 6.75], "texture": "#0"}, + "down": {"uv": [6.75, 6.75, 6.5, 7], "texture": "#0"} + } + }, + { + "name": "rod_5", + "from": [1, 1, 5], + "to": [3, 15, 7], + "rotation": {"angle": 0, "axis": "y", "origin": [-4.05882, 10.14706, 7.82353]}, + "faces": { + "north": {"uv": [6.25, 5, 6.5, 6.75], "texture": "#0"}, + "east": {"uv": [6, 5, 6.25, 6.75], "texture": "#0"}, + "south": {"uv": [6.75, 5, 7, 6.75], "texture": "#0"}, + "west": {"uv": [6.5, 5, 6.75, 6.75], "texture": "#0"}, + "up": {"uv": [6.5, 5, 6.25, 4.75], "texture": "#0"}, + "down": {"uv": [6.75, 4.75, 6.5, 5], "texture": "#0"} + } + }, + { + "name": "rod_6", + "from": [1, 1, 9], + "to": [3, 15, 11], + "rotation": {"angle": 0, "axis": "y", "origin": [-4.05882, 10.14706, 7.82353]}, + "faces": { + "north": {"uv": [6.25, 2.625, 6.5, 4.375], "texture": "#0"}, + "east": {"uv": [6, 2.625, 6.25, 4.375], "texture": "#0"}, + "south": {"uv": [6.75, 2.625, 7, 4.375], "texture": "#0"}, + "west": {"uv": [6.5, 2.625, 6.75, 4.375], "texture": "#0"}, + "up": {"uv": [6.5, 2.625, 6.25, 2.375], "texture": "#0"}, + "down": {"uv": [6.75, 2.375, 6.5, 2.625], "texture": "#0"} + } + }, + { + "name": "rod_7", + "from": [5, 1, 1], + "to": [7, 15, 3], + "rotation": {"angle": 0, "axis": "y", "origin": [-4.05882, 10.14706, 7.82353]}, + "faces": { + "north": {"uv": [6.25, 0.25, 6.5, 2], "texture": "#0"}, + "east": {"uv": [6, 0.25, 6.25, 2], "texture": "#0"}, + "south": {"uv": [6.75, 0.25, 7, 2], "texture": "#0"}, + "west": {"uv": [6.5, 0.25, 6.75, 2], "texture": "#0"}, + "up": {"uv": [6.5, 0.25, 6.25, 0], "texture": "#0"}, + "down": {"uv": [6.75, 0, 6.5, 0.25], "texture": "#0"} + } + }, + { + "name": "rod_8", + "from": [1, 1, 13], + "to": [3, 15, 15], + "rotation": {"angle": 0, "axis": "y", "origin": [-4.05882, 10.14706, 19.82353]}, + "faces": { + "north": {"uv": [1.25, 2.625, 1.5, 4.375], "texture": "#0"}, + "east": {"uv": [1, 2.625, 1.25, 4.375], "texture": "#0"}, + "south": {"uv": [1.75, 2.625, 2, 4.375], "texture": "#0"}, + "west": {"uv": [1.5, 2.625, 1.75, 4.375], "texture": "#0"}, + "up": {"uv": [1.5, 2.625, 1.25, 2.375], "texture": "#0"}, + "down": {"uv": [1.75, 2.375, 1.5, 2.625], "texture": "#0"} + } + }, + { + "name": "rod_9", + "from": [9, 1, 13], + "to": [11, 15, 15], + "rotation": {"angle": 0, "axis": "y", "origin": [-4.05882, 10.14706, 19.82353]}, + "faces": { + "north": {"uv": [0.25, 2.625, 0.5, 4.375], "texture": "#0"}, + "east": {"uv": [0, 2.625, 0.25, 4.375], "texture": "#0"}, + "south": {"uv": [0.75, 2.625, 1, 4.375], "texture": "#0"}, + "west": {"uv": [0.5, 2.625, 0.75, 4.375], "texture": "#0"}, + "up": {"uv": [0.5, 2.625, 0.25, 2.375], "texture": "#0"}, + "down": {"uv": [0.75, 2.375, 0.5, 2.625], "texture": "#0"} + } + }, + { + "name": "rod_10", + "from": [5, 1, 13], + "to": [7, 15, 15], + "rotation": {"angle": 0, "axis": "y", "origin": [-4.05882, 10.14706, 19.82353]}, + "faces": { + "north": {"uv": [1.25, 0.25, 1.5, 2], "texture": "#0"}, + "east": {"uv": [1, 0.25, 1.25, 2], "texture": "#0"}, + "south": {"uv": [1.75, 0.25, 2, 2], "texture": "#0"}, + "west": {"uv": [1.5, 0.25, 1.75, 2], "texture": "#0"}, + "up": {"uv": [1.5, 0.25, 1.25, 0], "texture": "#0"}, + "down": {"uv": [1.75, 0, 1.5, 0.25], "texture": "#0"} + } + }, + { + "name": "rod_11", + "from": [13, 1, 13], + "to": [15, 15, 15], + "rotation": {"angle": 0, "axis": "y", "origin": [7.94118, 10.14706, 19.82353]}, + "faces": { + "north": {"uv": [0.25, 0.25, 0.5, 2], "texture": "#0"}, + "east": {"uv": [0, 0.25, 0.25, 2], "texture": "#0"}, + "south": {"uv": [0.75, 0.25, 1, 2], "texture": "#0"}, + "west": {"uv": [0.5, 0.25, 0.75, 2], "texture": "#0"}, + "up": {"uv": [0.5, 0.25, 0.25, 0], "texture": "#0"}, + "down": {"uv": [0.75, 0, 0.5, 0.25], "texture": "#0"} + } + }, + { + "name": "rod_12", + "from": [13, 1, 9], + "to": [15, 15, 11], + "rotation": {"angle": 0, "axis": "y", "origin": [7.94118, 10.14706, 19.82353]}, + "faces": { + "north": {"uv": [7.25, 7, 7.5, 8.75], "texture": "#0"}, + "east": {"uv": [7, 7, 7.25, 8.75], "texture": "#0"}, + "south": {"uv": [7.75, 7, 8, 8.75], "texture": "#0"}, + "west": {"uv": [7.5, 7, 7.75, 8.75], "texture": "#0"}, + "up": {"uv": [7.5, 7, 7.25, 6.75], "texture": "#0"}, + "down": {"uv": [7.75, 6.75, 7.5, 7], "texture": "#0"} + } + }, + { + "name": "connector_ring_top", + "from": [0, 13, 0], + "to": [16, 16, 16], + "rotation": {"angle": 0, "axis": "y", "origin": [8, 14.5, 0.5]}, + "faces": { + "north": {"uv": [2, 4.375, 4, 4.75], "texture": "#0"}, + "east": {"uv": [0, 4.375, 2, 4.75], "texture": "#0"}, + "south": {"uv": [6, 4.375, 8, 4.75], "texture": "#0"}, + "west": {"uv": [4, 4.375, 6, 4.75], "texture": "#0"}, + "up": {"uv": [4, 4.375, 2, 2.375], "texture": "#0"}, + "down": {"uv": [6, 2.375, 4, 4.375], "texture": "#0"} + } + }, + { + "name": "connector_ring_bottom", + "from": [0, 0, 0], + "to": [16, 3, 16], + "rotation": {"angle": 0, "axis": "y", "origin": [8, 1.5, 0.5]}, + "faces": { + "north": {"uv": [2, 2, 4, 2.375], "texture": "#0"}, + "east": {"uv": [0, 2, 2, 2.375], "texture": "#0"}, + "south": {"uv": [6, 2, 8, 2.375], "texture": "#0"}, + "west": {"uv": [4, 2, 6, 2.375], "texture": "#0"}, + "up": {"uv": [4, 2, 2, 0], "texture": "#0"}, + "down": {"uv": [6, 0, 4, 2], "texture": "#0"} + } + } + ], + "groups": [ + { + "name": "fuel_rod_assembly", + "origin": [8, 4, 8], + "color": 0, + "children": [0, + { + "name": "rods", + "origin": [8, 8, 8], + "color": 0, + "children": [1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12] + }, + { + "name": "connector_rings", + "origin": [8, 8, 8], + "color": 0, + "children": [13, 14] + } + ] + } + ] +} \ No newline at end of file diff --git a/src/main/resources/assets/mekanism/models/block/supercharged_coil.json b/src/main/resources/assets/mekanism/models/block/supercharged_coil.json new file mode 100644 index 00000000..eae1fa79 --- /dev/null +++ b/src/main/resources/assets/mekanism/models/block/supercharged_coil.json @@ -0,0 +1,149 @@ +{ + "credit": "Made with Blockbench", + "parent": "block/cube_all", + "texture_size": [64, 64], + "textures": { + "0": "mekanism:blocks/models/supercharged_coil", + "particle": "mekanism:blocks/models/supercharged_coil" + }, + "elements": [ + { + "name": "body", + "from": [5, 1, 5], + "to": [11, 10, 11], + "rotation": {"angle": 0, "axis": "y", "origin": [8, 8, 7]}, + "faces": { + "north": {"uv": [1.5, 3.75, 3, 6], "texture": "#0"}, + "east": {"uv": [0, 3.75, 1.5, 6], "texture": "#0"}, + "south": {"uv": [4.5, 3.75, 6, 6], "texture": "#0"}, + "west": {"uv": [3, 3.75, 4.5, 6], "texture": "#0"}, + "up": {"uv": [3, 3.75, 1.5, 2.25], "texture": "#0"}, + "down": {"uv": [4.5, 2.25, 3, 3.75], "texture": "#0"} + } + }, + { + "name": "wire1", + "from": [4.995, 8, 7], + "to": [5.995, 13, 8], + "rotation": {"angle": 0, "axis": "y", "origin": [5, 8, 8]}, + "faces": { + "north": {"uv": [0.25, 2.5, 0.5, 3.75], "texture": "#0"}, + "east": {"uv": [0, 2.5, 0.25, 3.75], "texture": "#0"}, + "south": {"uv": [0.75, 2.5, 1, 3.75], "texture": "#0"}, + "west": {"uv": [0.5, 2.5, 0.75, 3.75], "texture": "#0"}, + "up": {"uv": [0.5, 2.5, 0.25, 2.25], "texture": "#0"}, + "down": {"uv": [0.75, 2.25, 0.5, 2.5], "texture": "#0"} + } + }, + { + "name": "wire2", + "from": [10.005, 8, 8], + "to": [11.005, 13, 9], + "rotation": {"angle": 0, "axis": "y", "origin": [10, 8, 8]}, + "faces": { + "north": {"uv": [6.25, 3.25, 6.5, 4.5], "texture": "#0"}, + "east": {"uv": [6, 3.25, 6.25, 4.5], "texture": "#0"}, + "south": {"uv": [6.75, 3.25, 7, 4.5], "texture": "#0"}, + "west": {"uv": [6.5, 3.25, 6.75, 4.5], "texture": "#0"}, + "up": {"uv": [6.5, 3.25, 6.25, 3], "texture": "#0"}, + "down": {"uv": [6.75, 3, 6.5, 3.25], "texture": "#0"} + } + }, + { + "name": "center", + "from": [7, 15, 7], + "to": [9, 16, 9], + "faces": { + "north": {"uv": [5, 2.75, 5.5, 3], "texture": "#0"}, + "east": {"uv": [4.5, 2.75, 5, 3], "texture": "#0"}, + "south": {"uv": [6, 2.75, 6.5, 3], "texture": "#0"}, + "west": {"uv": [5.5, 2.75, 6, 3], "texture": "#0"}, + "up": {"uv": [5.5, 2.75, 5, 2.25], "texture": "#0"}, + "down": {"uv": [6, 2.25, 5.5, 2.75], "texture": "#0"} + } + }, + { + "name": "port", + "from": [4, 0, 4], + "to": [12, 1, 12], + "faces": { + "north": {"uv": [2, 2, 4, 2.25], "texture": "#0"}, + "east": {"uv": [0, 2, 2, 2.25], "texture": "#0"}, + "south": {"uv": [6, 2, 8, 2.25], "texture": "#0"}, + "west": {"uv": [4, 2, 6, 2.25], "texture": "#0"}, + "up": {"uv": [4, 2, 2, 0], "texture": "#0"}, + "down": {"uv": [6, 0, 4, 2], "texture": "#0"} + } + }, + { + "name": "coil_large", + "from": [6, 10, 6], + "to": [10, 15, 10], + "rotation": {"angle": 0, "axis": "y", "origin": [8, 9, 8]}, + "faces": { + "north": {"uv": [6, 6, 7, 7.25], "texture": "#0"}, + "east": {"uv": [5, 6, 6, 7.25], "texture": "#0"}, + "south": {"uv": [8, 6, 9, 7.25], "texture": "#0"}, + "west": {"uv": [7, 6, 8, 7.25], "texture": "#0"}, + "up": {"uv": [7, 6, 6, 5], "texture": "#0"}, + "down": {"uv": [8, 5, 7, 6], "texture": "#0"} + } + }, + { + "name": "coil_1", + "from": [7, 3, 4], + "to": [9, 8, 6], + "rotation": {"angle": 0, "axis": "y", "origin": [9, 2, 6]}, + "faces": { + "north": {"uv": [2.5, 6.5, 3, 7.75], "texture": "#0"}, + "east": {"uv": [2, 6.5, 2.5, 7.75], "texture": "#0"}, + "south": {"uv": [3.5, 6.5, 4, 7.75], "texture": "#0"}, + "west": {"uv": [3, 6.5, 3.5, 7.75], "texture": "#0"}, + "up": {"uv": [3, 6.5, 2.5, 6], "texture": "#0"}, + "down": {"uv": [3.5, 6, 3, 6.5], "texture": "#0"} + } + }, + { + "name": "coil_2", + "from": [7, 3, 10], + "to": [9, 8, 12], + "rotation": {"angle": 0, "axis": "y", "origin": [9, 2, 12]}, + "faces": { + "north": {"uv": [6.5, 0.5, 7, 1.75], "texture": "#0"}, + "east": {"uv": [6, 0.5, 6.5, 1.75], "texture": "#0"}, + "south": {"uv": [7.5, 0.5, 8, 1.75], "texture": "#0"}, + "west": {"uv": [7, 0.5, 7.5, 1.75], "texture": "#0"}, + "up": {"uv": [7, 0.5, 6.5, 0], "texture": "#0"}, + "down": {"uv": [7.5, 0, 7, 0.5], "texture": "#0"} + } + }, + { + "name": "coil_3", + "from": [4, 3, 7], + "to": [6, 8, 9], + "rotation": {"angle": 0, "axis": "y", "origin": [6, 2, 9]}, + "faces": { + "north": {"uv": [0.5, 6.5, 1, 7.75], "texture": "#0"}, + "east": {"uv": [0, 6.5, 0.5, 7.75], "texture": "#0"}, + "south": {"uv": [1.5, 6.5, 2, 7.75], "texture": "#0"}, + "west": {"uv": [1, 6.5, 1.5, 7.75], "texture": "#0"}, + "up": {"uv": [1, 6.5, 0.5, 6], "texture": "#0"}, + "down": {"uv": [1.5, 6, 1, 6.5], "texture": "#0"} + } + }, + { + "name": "coil_4", + "from": [10, 3, 7], + "to": [12, 8, 9], + "rotation": {"angle": 0, "axis": "y", "origin": [12, 2, 9]}, + "faces": { + "north": {"uv": [0.5, 0.5, 1, 1.75], "texture": "#0"}, + "east": {"uv": [0, 0.5, 0.5, 1.75], "texture": "#0"}, + "south": {"uv": [1.5, 0.5, 2, 1.75], "texture": "#0"}, + "west": {"uv": [1, 0.5, 1.5, 1.75], "texture": "#0"}, + "up": {"uv": [1, 0.5, 0.5, 0], "texture": "#0"}, + "down": {"uv": [1.5, 0, 1, 0.5], "texture": "#0"} + } + } + ] +} \ No newline at end of file diff --git a/src/main/resources/assets/mekanism/models/item/mekasuithelmet.json b/src/main/resources/assets/mekanism/models/item/mekasuithelmet.json new file mode 100644 index 00000000..9f25a3a2 --- /dev/null +++ b/src/main/resources/assets/mekanism/models/item/mekasuithelmet.json @@ -0,0 +1,3 @@ +{ + "parent": "mekanism:item/standard_item" +} \ No newline at end of file diff --git a/src/main/resources/assets/mekanism/models/item/mektool.json b/src/main/resources/assets/mekanism/models/item/mektool.json new file mode 100644 index 00000000..9f25a3a2 --- /dev/null +++ b/src/main/resources/assets/mekanism/models/item/mektool.json @@ -0,0 +1,3 @@ +{ + "parent": "mekanism:item/standard_item" +} \ No newline at end of file diff --git a/src/main/resources/assets/mekanism/render/mekasuitchest.png b/src/main/resources/assets/mekanism/render/mekasuitchest.png new file mode 100644 index 00000000..542239e5 Binary files /dev/null and b/src/main/resources/assets/mekanism/render/mekasuitchest.png differ diff --git a/src/main/resources/assets/mekanism/render/mekasuithelmet.png b/src/main/resources/assets/mekanism/render/mekasuithelmet.png new file mode 100644 index 00000000..f6535040 Binary files /dev/null and b/src/main/resources/assets/mekanism/render/mekasuithelmet.png differ diff --git a/src/main/resources/assets/mekanism/render/mektool.png b/src/main/resources/assets/mekanism/render/mektool.png new file mode 100644 index 00000000..9840d269 Binary files /dev/null and b/src/main/resources/assets/mekanism/render/mektool.png differ diff --git a/src/main/resources/assets/mekanism/textures/blocks/combiner/combinerfronton.png.mcmeta b/src/main/resources/assets/mekanism/textures/blocks/combiner/combinerfronton.png.mcmeta index 404084d4..3a29c7ff 100644 --- a/src/main/resources/assets/mekanism/textures/blocks/combiner/combinerfronton.png.mcmeta +++ b/src/main/resources/assets/mekanism/textures/blocks/combiner/combinerfronton.png.mcmeta @@ -12,7 +12,7 @@ 7, 8, 9, - 10, + 10, 11 ] } diff --git a/src/main/resources/assets/mekanism/textures/blocks/factory/advanced/combining/advancedcombiningfactoryfronton.png b/src/main/resources/assets/mekanism/textures/blocks/factory/advanced/combining/advancedcombiningfactoryfronton.png index db1a5b9b..3d7e9c40 100644 Binary files a/src/main/resources/assets/mekanism/textures/blocks/factory/advanced/combining/advancedcombiningfactoryfronton.png and b/src/main/resources/assets/mekanism/textures/blocks/factory/advanced/combining/advancedcombiningfactoryfronton.png differ diff --git a/src/main/resources/assets/mekanism/textures/blocks/factory/advanced/combining/advancedcombiningfactoryfronton.png.mcmeta b/src/main/resources/assets/mekanism/textures/blocks/factory/advanced/combining/advancedcombiningfactoryfronton.png.mcmeta index 24f9c2fa..242c07d8 100644 --- a/src/main/resources/assets/mekanism/textures/blocks/factory/advanced/combining/advancedcombiningfactoryfronton.png.mcmeta +++ b/src/main/resources/assets/mekanism/textures/blocks/factory/advanced/combining/advancedcombiningfactoryfronton.png.mcmeta @@ -1,5 +1,16 @@ { "animation": { - "frametime": 1 + "frametime": 1, + "frames": [ + 0, + 1, + 2, + 3, + 4, + 5, + 6, + 7, + 8 + ] } } diff --git a/src/main/resources/assets/mekanism/textures/blocks/factory/advanced/enriching/advancedenrichingfactoryfronton.png b/src/main/resources/assets/mekanism/textures/blocks/factory/advanced/enriching/advancedenrichingfactoryfronton.png index 4ce0599a..8b69610f 100644 Binary files a/src/main/resources/assets/mekanism/textures/blocks/factory/advanced/enriching/advancedenrichingfactoryfronton.png and b/src/main/resources/assets/mekanism/textures/blocks/factory/advanced/enriching/advancedenrichingfactoryfronton.png differ diff --git a/src/main/resources/assets/mekanism/textures/blocks/factory/advanced/enriching/advancedenrichingfactoryfronton.png.mcmeta b/src/main/resources/assets/mekanism/textures/blocks/factory/advanced/enriching/advancedenrichingfactoryfronton.png.mcmeta new file mode 100644 index 00000000..008e1f7f --- /dev/null +++ b/src/main/resources/assets/mekanism/textures/blocks/factory/advanced/enriching/advancedenrichingfactoryfronton.png.mcmeta @@ -0,0 +1,14 @@ +{ + "animation": { + "frametime": 3, + "frames": [ + 0, + 1, + 2, + 3, + 4, + 5, + 6 + ] + } +} \ No newline at end of file diff --git a/src/main/resources/assets/mekanism/textures/blocks/factory/advanced/injecting/advancedinjectingfactoryfronton.png b/src/main/resources/assets/mekanism/textures/blocks/factory/advanced/injecting/advancedinjectingfactoryfronton.png index 8e34732b..a90a45bf 100644 Binary files a/src/main/resources/assets/mekanism/textures/blocks/factory/advanced/injecting/advancedinjectingfactoryfronton.png and b/src/main/resources/assets/mekanism/textures/blocks/factory/advanced/injecting/advancedinjectingfactoryfronton.png differ diff --git a/src/main/resources/assets/mekanism/textures/blocks/factory/advanced/injecting/advancedinjectingfactoryfronton.png.mcmeta b/src/main/resources/assets/mekanism/textures/blocks/factory/advanced/injecting/advancedinjectingfactoryfronton.png.mcmeta new file mode 100644 index 00000000..24f9c2fa --- /dev/null +++ b/src/main/resources/assets/mekanism/textures/blocks/factory/advanced/injecting/advancedinjectingfactoryfronton.png.mcmeta @@ -0,0 +1,5 @@ +{ + "animation": { + "frametime": 1 + } +} diff --git a/src/main/resources/assets/mekanism/textures/blocks/factory/advanced/purifying/advancedpurifyingfactoryfronton.png b/src/main/resources/assets/mekanism/textures/blocks/factory/advanced/purifying/advancedpurifyingfactoryfronton.png index 8739a94e..11acccfe 100644 Binary files a/src/main/resources/assets/mekanism/textures/blocks/factory/advanced/purifying/advancedpurifyingfactoryfronton.png and b/src/main/resources/assets/mekanism/textures/blocks/factory/advanced/purifying/advancedpurifyingfactoryfronton.png differ diff --git a/src/main/resources/assets/mekanism/textures/blocks/factory/advanced/purifying/advancedpurifyingfactoryfronton.png.mcmeta b/src/main/resources/assets/mekanism/textures/blocks/factory/advanced/purifying/advancedpurifyingfactoryfronton.png.mcmeta new file mode 100644 index 00000000..24f9c2fa --- /dev/null +++ b/src/main/resources/assets/mekanism/textures/blocks/factory/advanced/purifying/advancedpurifyingfactoryfronton.png.mcmeta @@ -0,0 +1,5 @@ +{ + "animation": { + "frametime": 1 + } +} diff --git a/src/main/resources/assets/mekanism/textures/blocks/factory/advanced/smelting/advancedsmeltingfactoryfronton.png b/src/main/resources/assets/mekanism/textures/blocks/factory/advanced/smelting/advancedsmeltingfactoryfronton.png index 7d540237..a35f5c64 100644 Binary files a/src/main/resources/assets/mekanism/textures/blocks/factory/advanced/smelting/advancedsmeltingfactoryfronton.png and b/src/main/resources/assets/mekanism/textures/blocks/factory/advanced/smelting/advancedsmeltingfactoryfronton.png differ diff --git a/src/main/resources/assets/mekanism/textures/blocks/factory/advanced/smelting/advancedsmeltingfactoryfronton.png.mcmeta b/src/main/resources/assets/mekanism/textures/blocks/factory/advanced/smelting/advancedsmeltingfactoryfronton.png.mcmeta index 24f9c2fa..9521044f 100644 --- a/src/main/resources/assets/mekanism/textures/blocks/factory/advanced/smelting/advancedsmeltingfactoryfronton.png.mcmeta +++ b/src/main/resources/assets/mekanism/textures/blocks/factory/advanced/smelting/advancedsmeltingfactoryfronton.png.mcmeta @@ -1,5 +1,17 @@ { "animation": { - "frametime": 1 + "frametime": 2, + "frames": [ + 0, + 1, + 3, + 4, + 6, + 5, + 2, + 3, + 1, + 2 + ] } -} +} \ No newline at end of file diff --git a/src/main/resources/assets/mekanism/textures/blocks/factory/basic/combining/basiccombiningfactoryfronton.png b/src/main/resources/assets/mekanism/textures/blocks/factory/basic/combining/basiccombiningfactoryfronton.png index 96fbe152..ba2ed2de 100644 Binary files a/src/main/resources/assets/mekanism/textures/blocks/factory/basic/combining/basiccombiningfactoryfronton.png and b/src/main/resources/assets/mekanism/textures/blocks/factory/basic/combining/basiccombiningfactoryfronton.png differ diff --git a/src/main/resources/assets/mekanism/textures/blocks/factory/basic/combining/basiccombiningfactoryfronton.png.mcmeta b/src/main/resources/assets/mekanism/textures/blocks/factory/basic/combining/basiccombiningfactoryfronton.png.mcmeta index 24f9c2fa..242c07d8 100644 --- a/src/main/resources/assets/mekanism/textures/blocks/factory/basic/combining/basiccombiningfactoryfronton.png.mcmeta +++ b/src/main/resources/assets/mekanism/textures/blocks/factory/basic/combining/basiccombiningfactoryfronton.png.mcmeta @@ -1,5 +1,16 @@ { "animation": { - "frametime": 1 + "frametime": 1, + "frames": [ + 0, + 1, + 2, + 3, + 4, + 5, + 6, + 7, + 8 + ] } } diff --git a/src/main/resources/assets/mekanism/textures/blocks/factory/basic/enriching/basicenrichingfactoryfronton.png b/src/main/resources/assets/mekanism/textures/blocks/factory/basic/enriching/basicenrichingfactoryfronton.png index 952cf76d..c42bd652 100644 Binary files a/src/main/resources/assets/mekanism/textures/blocks/factory/basic/enriching/basicenrichingfactoryfronton.png and b/src/main/resources/assets/mekanism/textures/blocks/factory/basic/enriching/basicenrichingfactoryfronton.png differ diff --git a/src/main/resources/assets/mekanism/textures/blocks/factory/basic/enriching/basicenrichingfactoryfronton.png.mcmeta b/src/main/resources/assets/mekanism/textures/blocks/factory/basic/enriching/basicenrichingfactoryfronton.png.mcmeta new file mode 100644 index 00000000..008e1f7f --- /dev/null +++ b/src/main/resources/assets/mekanism/textures/blocks/factory/basic/enriching/basicenrichingfactoryfronton.png.mcmeta @@ -0,0 +1,14 @@ +{ + "animation": { + "frametime": 3, + "frames": [ + 0, + 1, + 2, + 3, + 4, + 5, + 6 + ] + } +} \ No newline at end of file diff --git a/src/main/resources/assets/mekanism/textures/blocks/factory/basic/injecting/basicinjectingfactoryfronton.png b/src/main/resources/assets/mekanism/textures/blocks/factory/basic/injecting/basicinjectingfactoryfronton.png index dbf628bc..0f724c34 100644 Binary files a/src/main/resources/assets/mekanism/textures/blocks/factory/basic/injecting/basicinjectingfactoryfronton.png and b/src/main/resources/assets/mekanism/textures/blocks/factory/basic/injecting/basicinjectingfactoryfronton.png differ diff --git a/src/main/resources/assets/mekanism/textures/blocks/factory/basic/injecting/basicinjectingfactoryfronton.png.mcmeta b/src/main/resources/assets/mekanism/textures/blocks/factory/basic/injecting/basicinjectingfactoryfronton.png.mcmeta new file mode 100644 index 00000000..24f9c2fa --- /dev/null +++ b/src/main/resources/assets/mekanism/textures/blocks/factory/basic/injecting/basicinjectingfactoryfronton.png.mcmeta @@ -0,0 +1,5 @@ +{ + "animation": { + "frametime": 1 + } +} diff --git a/src/main/resources/assets/mekanism/textures/blocks/factory/basic/purifying/basicpurifyingfactoryfronton.png b/src/main/resources/assets/mekanism/textures/blocks/factory/basic/purifying/basicpurifyingfactoryfronton.png index 7a723848..9844aaae 100644 Binary files a/src/main/resources/assets/mekanism/textures/blocks/factory/basic/purifying/basicpurifyingfactoryfronton.png and b/src/main/resources/assets/mekanism/textures/blocks/factory/basic/purifying/basicpurifyingfactoryfronton.png differ diff --git a/src/main/resources/assets/mekanism/textures/blocks/factory/basic/purifying/basicpurifyingfactoryfronton.png.mcmeta b/src/main/resources/assets/mekanism/textures/blocks/factory/basic/purifying/basicpurifyingfactoryfronton.png.mcmeta new file mode 100644 index 00000000..24f9c2fa --- /dev/null +++ b/src/main/resources/assets/mekanism/textures/blocks/factory/basic/purifying/basicpurifyingfactoryfronton.png.mcmeta @@ -0,0 +1,5 @@ +{ + "animation": { + "frametime": 1 + } +} diff --git a/src/main/resources/assets/mekanism/textures/blocks/factory/basic/smelting/basicsmeltingfactoryfronton.png b/src/main/resources/assets/mekanism/textures/blocks/factory/basic/smelting/basicsmeltingfactoryfronton.png index 35ce245a..cb9df7ab 100644 Binary files a/src/main/resources/assets/mekanism/textures/blocks/factory/basic/smelting/basicsmeltingfactoryfronton.png and b/src/main/resources/assets/mekanism/textures/blocks/factory/basic/smelting/basicsmeltingfactoryfronton.png differ diff --git a/src/main/resources/assets/mekanism/textures/blocks/factory/basic/smelting/basicsmeltingfactoryfronton.png.mcmeta b/src/main/resources/assets/mekanism/textures/blocks/factory/basic/smelting/basicsmeltingfactoryfronton.png.mcmeta index 24f9c2fa..9521044f 100644 --- a/src/main/resources/assets/mekanism/textures/blocks/factory/basic/smelting/basicsmeltingfactoryfronton.png.mcmeta +++ b/src/main/resources/assets/mekanism/textures/blocks/factory/basic/smelting/basicsmeltingfactoryfronton.png.mcmeta @@ -1,5 +1,17 @@ { "animation": { - "frametime": 1 + "frametime": 2, + "frames": [ + 0, + 1, + 3, + 4, + 6, + 5, + 2, + 3, + 1, + 2 + ] } -} +} \ No newline at end of file diff --git a/src/main/resources/assets/mekanism/textures/blocks/factory/elite/combining/elitecombiningfactoryfronton.png b/src/main/resources/assets/mekanism/textures/blocks/factory/elite/combining/elitecombiningfactoryfronton.png index 058e483b..5ccbb406 100644 Binary files a/src/main/resources/assets/mekanism/textures/blocks/factory/elite/combining/elitecombiningfactoryfronton.png and b/src/main/resources/assets/mekanism/textures/blocks/factory/elite/combining/elitecombiningfactoryfronton.png differ diff --git a/src/main/resources/assets/mekanism/textures/blocks/factory/elite/combining/elitecombiningfactoryfronton.png.mcmeta b/src/main/resources/assets/mekanism/textures/blocks/factory/elite/combining/elitecombiningfactoryfronton.png.mcmeta index 24f9c2fa..242c07d8 100644 --- a/src/main/resources/assets/mekanism/textures/blocks/factory/elite/combining/elitecombiningfactoryfronton.png.mcmeta +++ b/src/main/resources/assets/mekanism/textures/blocks/factory/elite/combining/elitecombiningfactoryfronton.png.mcmeta @@ -1,5 +1,16 @@ { "animation": { - "frametime": 1 + "frametime": 1, + "frames": [ + 0, + 1, + 2, + 3, + 4, + 5, + 6, + 7, + 8 + ] } } diff --git a/src/main/resources/assets/mekanism/textures/blocks/factory/elite/enriching/eliteenrichingfactoryfronton.png b/src/main/resources/assets/mekanism/textures/blocks/factory/elite/enriching/eliteenrichingfactoryfronton.png index abdc774f..7a7d6eb8 100644 Binary files a/src/main/resources/assets/mekanism/textures/blocks/factory/elite/enriching/eliteenrichingfactoryfronton.png and b/src/main/resources/assets/mekanism/textures/blocks/factory/elite/enriching/eliteenrichingfactoryfronton.png differ diff --git a/src/main/resources/assets/mekanism/textures/blocks/factory/elite/enriching/eliteenrichingfactoryfronton.png.mcmeta b/src/main/resources/assets/mekanism/textures/blocks/factory/elite/enriching/eliteenrichingfactoryfronton.png.mcmeta new file mode 100644 index 00000000..008e1f7f --- /dev/null +++ b/src/main/resources/assets/mekanism/textures/blocks/factory/elite/enriching/eliteenrichingfactoryfronton.png.mcmeta @@ -0,0 +1,14 @@ +{ + "animation": { + "frametime": 3, + "frames": [ + 0, + 1, + 2, + 3, + 4, + 5, + 6 + ] + } +} \ No newline at end of file diff --git a/src/main/resources/assets/mekanism/textures/blocks/factory/elite/injecting/eliteinjectingfactoryfronton.png b/src/main/resources/assets/mekanism/textures/blocks/factory/elite/injecting/eliteinjectingfactoryfronton.png index c4d1b48f..2a59a075 100644 Binary files a/src/main/resources/assets/mekanism/textures/blocks/factory/elite/injecting/eliteinjectingfactoryfronton.png and b/src/main/resources/assets/mekanism/textures/blocks/factory/elite/injecting/eliteinjectingfactoryfronton.png differ diff --git a/src/main/resources/assets/mekanism/textures/blocks/factory/elite/injecting/eliteinjectingfactoryfronton.png.mcmeta b/src/main/resources/assets/mekanism/textures/blocks/factory/elite/injecting/eliteinjectingfactoryfronton.png.mcmeta new file mode 100644 index 00000000..24f9c2fa --- /dev/null +++ b/src/main/resources/assets/mekanism/textures/blocks/factory/elite/injecting/eliteinjectingfactoryfronton.png.mcmeta @@ -0,0 +1,5 @@ +{ + "animation": { + "frametime": 1 + } +} diff --git a/src/main/resources/assets/mekanism/textures/blocks/factory/elite/purifying/elitepurifyingfactoryfronton.png b/src/main/resources/assets/mekanism/textures/blocks/factory/elite/purifying/elitepurifyingfactoryfronton.png index 77050506..5ebf1849 100644 Binary files a/src/main/resources/assets/mekanism/textures/blocks/factory/elite/purifying/elitepurifyingfactoryfronton.png and b/src/main/resources/assets/mekanism/textures/blocks/factory/elite/purifying/elitepurifyingfactoryfronton.png differ diff --git a/src/main/resources/assets/mekanism/textures/blocks/factory/elite/purifying/elitepurifyingfactoryfronton.png.mcmeta b/src/main/resources/assets/mekanism/textures/blocks/factory/elite/purifying/elitepurifyingfactoryfronton.png.mcmeta new file mode 100644 index 00000000..24f9c2fa --- /dev/null +++ b/src/main/resources/assets/mekanism/textures/blocks/factory/elite/purifying/elitepurifyingfactoryfronton.png.mcmeta @@ -0,0 +1,5 @@ +{ + "animation": { + "frametime": 1 + } +} diff --git a/src/main/resources/assets/mekanism/textures/blocks/factory/elite/smelting/elitesmeltingfactoryfronton.png b/src/main/resources/assets/mekanism/textures/blocks/factory/elite/smelting/elitesmeltingfactoryfronton.png index b21eb883..b8226dcc 100644 Binary files a/src/main/resources/assets/mekanism/textures/blocks/factory/elite/smelting/elitesmeltingfactoryfronton.png and b/src/main/resources/assets/mekanism/textures/blocks/factory/elite/smelting/elitesmeltingfactoryfronton.png differ diff --git a/src/main/resources/assets/mekanism/textures/blocks/factory/elite/smelting/elitesmeltingfactoryfronton.png.mcmeta b/src/main/resources/assets/mekanism/textures/blocks/factory/elite/smelting/elitesmeltingfactoryfronton.png.mcmeta index 24f9c2fa..9521044f 100644 --- a/src/main/resources/assets/mekanism/textures/blocks/factory/elite/smelting/elitesmeltingfactoryfronton.png.mcmeta +++ b/src/main/resources/assets/mekanism/textures/blocks/factory/elite/smelting/elitesmeltingfactoryfronton.png.mcmeta @@ -1,5 +1,17 @@ { "animation": { - "frametime": 1 + "frametime": 2, + "frames": [ + 0, + 1, + 3, + 4, + 6, + 5, + 2, + 3, + 1, + 2 + ] } -} +} \ No newline at end of file diff --git a/src/main/resources/assets/mekanism/textures/blocks/factory/ultimate/combining/ultimatecombiningfactoryfronton.png b/src/main/resources/assets/mekanism/textures/blocks/factory/ultimate/combining/ultimatecombiningfactoryfronton.png index 87a16a30..9067dfc6 100644 Binary files a/src/main/resources/assets/mekanism/textures/blocks/factory/ultimate/combining/ultimatecombiningfactoryfronton.png and b/src/main/resources/assets/mekanism/textures/blocks/factory/ultimate/combining/ultimatecombiningfactoryfronton.png differ diff --git a/src/main/resources/assets/mekanism/textures/blocks/factory/ultimate/combining/ultimatecombiningfactoryfronton.png.mcmeta b/src/main/resources/assets/mekanism/textures/blocks/factory/ultimate/combining/ultimatecombiningfactoryfronton.png.mcmeta index 24f9c2fa..242c07d8 100644 --- a/src/main/resources/assets/mekanism/textures/blocks/factory/ultimate/combining/ultimatecombiningfactoryfronton.png.mcmeta +++ b/src/main/resources/assets/mekanism/textures/blocks/factory/ultimate/combining/ultimatecombiningfactoryfronton.png.mcmeta @@ -1,5 +1,16 @@ { "animation": { - "frametime": 1 + "frametime": 1, + "frames": [ + 0, + 1, + 2, + 3, + 4, + 5, + 6, + 7, + 8 + ] } } diff --git a/src/main/resources/assets/mekanism/textures/blocks/factory/ultimate/enriching/ultimateenrichingfactoryfronton.png b/src/main/resources/assets/mekanism/textures/blocks/factory/ultimate/enriching/ultimateenrichingfactoryfronton.png index 25bd5277..c09e4ae5 100644 Binary files a/src/main/resources/assets/mekanism/textures/blocks/factory/ultimate/enriching/ultimateenrichingfactoryfronton.png and b/src/main/resources/assets/mekanism/textures/blocks/factory/ultimate/enriching/ultimateenrichingfactoryfronton.png differ diff --git a/src/main/resources/assets/mekanism/textures/blocks/factory/ultimate/enriching/ultimateenrichingfactoryfronton.png.mcmeta b/src/main/resources/assets/mekanism/textures/blocks/factory/ultimate/enriching/ultimateenrichingfactoryfronton.png.mcmeta new file mode 100644 index 00000000..008e1f7f --- /dev/null +++ b/src/main/resources/assets/mekanism/textures/blocks/factory/ultimate/enriching/ultimateenrichingfactoryfronton.png.mcmeta @@ -0,0 +1,14 @@ +{ + "animation": { + "frametime": 3, + "frames": [ + 0, + 1, + 2, + 3, + 4, + 5, + 6 + ] + } +} \ No newline at end of file diff --git a/src/main/resources/assets/mekanism/textures/blocks/factory/ultimate/injecting/ultimateinjectingfactoryfronton.png b/src/main/resources/assets/mekanism/textures/blocks/factory/ultimate/injecting/ultimateinjectingfactoryfronton.png index d151a468..5e74458f 100644 Binary files a/src/main/resources/assets/mekanism/textures/blocks/factory/ultimate/injecting/ultimateinjectingfactoryfronton.png and b/src/main/resources/assets/mekanism/textures/blocks/factory/ultimate/injecting/ultimateinjectingfactoryfronton.png differ diff --git a/src/main/resources/assets/mekanism/textures/blocks/factory/ultimate/injecting/ultimateinjectingfactoryfronton.png.mcmeta b/src/main/resources/assets/mekanism/textures/blocks/factory/ultimate/injecting/ultimateinjectingfactoryfronton.png.mcmeta new file mode 100644 index 00000000..24f9c2fa --- /dev/null +++ b/src/main/resources/assets/mekanism/textures/blocks/factory/ultimate/injecting/ultimateinjectingfactoryfronton.png.mcmeta @@ -0,0 +1,5 @@ +{ + "animation": { + "frametime": 1 + } +} diff --git a/src/main/resources/assets/mekanism/textures/blocks/factory/ultimate/purifying/ultimatepurifyingfactoryfronton.png b/src/main/resources/assets/mekanism/textures/blocks/factory/ultimate/purifying/ultimatepurifyingfactoryfronton.png index 13f7b140..4e196c7f 100644 Binary files a/src/main/resources/assets/mekanism/textures/blocks/factory/ultimate/purifying/ultimatepurifyingfactoryfronton.png and b/src/main/resources/assets/mekanism/textures/blocks/factory/ultimate/purifying/ultimatepurifyingfactoryfronton.png differ diff --git a/src/main/resources/assets/mekanism/textures/blocks/factory/ultimate/purifying/ultimatepurifyingfactoryfronton.png.mcmeta b/src/main/resources/assets/mekanism/textures/blocks/factory/ultimate/purifying/ultimatepurifyingfactoryfronton.png.mcmeta new file mode 100644 index 00000000..24f9c2fa --- /dev/null +++ b/src/main/resources/assets/mekanism/textures/blocks/factory/ultimate/purifying/ultimatepurifyingfactoryfronton.png.mcmeta @@ -0,0 +1,5 @@ +{ + "animation": { + "frametime": 1 + } +} diff --git a/src/main/resources/assets/mekanism/textures/blocks/factory/ultimate/smelting/ultimatesmeltingfactoryfronton.png b/src/main/resources/assets/mekanism/textures/blocks/factory/ultimate/smelting/ultimatesmeltingfactoryfronton.png index c06d4ece..39dab1e8 100644 Binary files a/src/main/resources/assets/mekanism/textures/blocks/factory/ultimate/smelting/ultimatesmeltingfactoryfronton.png and b/src/main/resources/assets/mekanism/textures/blocks/factory/ultimate/smelting/ultimatesmeltingfactoryfronton.png differ diff --git a/src/main/resources/assets/mekanism/textures/blocks/factory/ultimate/smelting/ultimatesmeltingfactoryfronton.png.mcmeta b/src/main/resources/assets/mekanism/textures/blocks/factory/ultimate/smelting/ultimatesmeltingfactoryfronton.png.mcmeta index 24f9c2fa..9521044f 100644 --- a/src/main/resources/assets/mekanism/textures/blocks/factory/ultimate/smelting/ultimatesmeltingfactoryfronton.png.mcmeta +++ b/src/main/resources/assets/mekanism/textures/blocks/factory/ultimate/smelting/ultimatesmeltingfactoryfronton.png.mcmeta @@ -1,5 +1,17 @@ { "animation": { - "frametime": 1 + "frametime": 2, + "frames": [ + 0, + 1, + 3, + 4, + 6, + 5, + 2, + 3, + 1, + 2 + ] } -} +} \ No newline at end of file diff --git a/src/main/resources/assets/mekanism/textures/blocks/fissionreachercasing.png b/src/main/resources/assets/mekanism/textures/blocks/fissionreachercasing.png new file mode 100644 index 00000000..ba575832 Binary files /dev/null and b/src/main/resources/assets/mekanism/textures/blocks/fissionreachercasing.png differ diff --git a/src/main/resources/assets/mekanism/textures/blocks/models/control_rod_assembly.png b/src/main/resources/assets/mekanism/textures/blocks/models/control_rod_assembly.png new file mode 100644 index 00000000..7dfbeadf Binary files /dev/null and b/src/main/resources/assets/mekanism/textures/blocks/models/control_rod_assembly.png differ diff --git a/src/main/resources/assets/mekanism/textures/blocks/models/fuel_rod_assembly.png b/src/main/resources/assets/mekanism/textures/blocks/models/fuel_rod_assembly.png new file mode 100644 index 00000000..3dac1a4f Binary files /dev/null and b/src/main/resources/assets/mekanism/textures/blocks/models/fuel_rod_assembly.png differ diff --git a/src/main/resources/assets/mekanism/textures/blocks/models/supercharged_coil.png b/src/main/resources/assets/mekanism/textures/blocks/models/supercharged_coil.png new file mode 100644 index 00000000..f4042277 Binary files /dev/null and b/src/main/resources/assets/mekanism/textures/blocks/models/supercharged_coil.png differ diff --git a/src/main/resources/assets/mekanism/textures/blocks/spscasing.png b/src/main/resources/assets/mekanism/textures/blocks/spscasing.png new file mode 100644 index 00000000..fd947467 Binary files /dev/null and b/src/main/resources/assets/mekanism/textures/blocks/spscasing.png differ diff --git a/src/main/resources/assets/mekanism/textures/blocks/superheating_element.png b/src/main/resources/assets/mekanism/textures/blocks/superheating_element.png index 0831aa3a..a47fc07e 100644 Binary files a/src/main/resources/assets/mekanism/textures/blocks/superheating_element.png and b/src/main/resources/assets/mekanism/textures/blocks/superheating_element.png differ diff --git a/src/main/resources/mcmod.info b/src/main/resources/mcmod.info index 482dfaa9..3d52a0ae 100644 --- a/src/main/resources/mcmod.info +++ b/src/main/resources/mcmod.info @@ -13,6 +13,7 @@ "dizzyd" ], "credits": "aidancbrady, thommy101, thiakil, unpairedbracket, CyanideX and many others", + "logoFile":"assets/mekanism/logo.png", "useDependencyInformation": true, "dependencies": [ "forge", @@ -46,6 +47,7 @@ "dizzyd" ], "credits": "aidancbrady, thommy101, thiakil, unpairedbracket, CyanideX and many others", + "logoFile":"assets/mekanism/logo.png", "useDependencyInformation": true, "dependencies": [ "mekanism@[${version}]" @@ -68,6 +70,7 @@ "dizzyd" ], "credits": "aidancbrady, thommy101, thiakil, unpairedbracket, CyanideX and many others", + "logoFile":"assets/mekanism/logo.png", "useDependencyInformation": true, "dependencies": [ "mekanism@[${version}]"