diff --git a/changelog b/changelog index ba019f652..682553da7 100644 --- a/changelog +++ b/changelog @@ -15,9 +15,13 @@ * PgUp and PgDown scroll by 5 lines (full page) * Pos1 and End keys scroll to the top and bottom of the list respectively * C4, like semtex, is now edible +* Assembly machines can now be made with the assembly machine + * The recipe is similar to the anvil recipe, but it uses only half as much steel, and one analog circuit instead of four vacuum tubes ## Fixed * Fixed fusion reactor item IO being broken * Fixed issue with the chemical factory where the declogging feature would be triggered by a recipe processor that doesn't even own the reported slot * Fixed the new PA not triggering the omega-12 achievement - * In addition to granting the achievement to nearby players on recipe completion, it is also granted when taking it out of the output slot \ No newline at end of file + * In addition to granting the achievement to nearby players on recipe completion, it is also granted when taking it out of the output slot +* Fixed the PUREX recipe for processing ZIRNOX MEU fuel not yielding technetium as it should +* Fixed turbofans pulling in players even when disabled via redstone \ No newline at end of file diff --git a/gradle.properties b/gradle.properties index fdd257f7b..77f883e59 100644 --- a/gradle.properties +++ b/gradle.properties @@ -1,6 +1,6 @@ mod_version=1.0.27 # Empty build number makes a release type -mod_build_number=5441 +mod_build_number=5453 credits=HbMinecraft,\ \ rodolphito (explosion algorithms),\ diff --git a/src/main/java/com/hbm/inventory/gui/GUIMachineAssemblyFactory.java b/src/main/java/com/hbm/inventory/gui/GUIMachineAssemblyFactory.java index 583b57bce..ac9ff747c 100644 --- a/src/main/java/com/hbm/inventory/gui/GUIMachineAssemblyFactory.java +++ b/src/main/java/com/hbm/inventory/gui/GUIMachineAssemblyFactory.java @@ -36,8 +36,8 @@ public class GUIMachineAssemblyFactory extends GuiInfoContainer { super.drawScreen(mouseX, mouseY, f); for(int j = 0; j < 4; j++) { - assembler.inputTanks[j].renderTankInfo(this, mouseX, mouseY, guiLeft + 105 + (j % 2) * 109, guiTop + 20 + (j / 2) * 56, 3, 16); - assembler.outputTanks[j].renderTankInfo(this, mouseX, mouseY, guiLeft + 105 + (j % 2) * 109, guiTop + 54 + (j / 2) * 56, 3, 16); + assembler.inputTanks[j].renderTankInfo(this, mouseX, mouseY, guiLeft + 105 + (j % 2) * 109, guiTop + 20 + (j / 2) * 56, 5, 32); + assembler.outputTanks[j].renderTankInfo(this, mouseX, mouseY, guiLeft + 105 + (j % 2) * 109, guiTop + 54 + (j / 2) * 56, 5, 16); } assembler.water.renderTankInfo(this, mouseX, mouseY, guiLeft + 232, guiTop + 149, 7, 52); diff --git a/src/main/java/com/hbm/inventory/recipes/AssemblyMachineRecipes.java b/src/main/java/com/hbm/inventory/recipes/AssemblyMachineRecipes.java index 096fd0825..de2711f8c 100644 --- a/src/main/java/com/hbm/inventory/recipes/AssemblyMachineRecipes.java +++ b/src/main/java/com/hbm/inventory/recipes/AssemblyMachineRecipes.java @@ -216,6 +216,8 @@ public class AssemblyMachineRecipes extends GenericRecipes { this.register(new GenericRecipe("ass.shredder").setup(100, 100).outputItems(new ItemStack(ModBlocks.machine_shredder, 1)) .inputItems(new OreDictStack(STEEL.plate528(), 8), new OreDictStack(CU.plate(), 4), new ComparableStack(ModItems.motor, 2)) .inputItemsEx(new ComparableStack(ModItems.item_expensive, 1, EnumExpensiveType.STEEL_PLATING), new OreDictStack(CU.plate(), 4), new ComparableStack(ModItems.motor, 2))); + this.register(new GenericRecipe("ass.assembler").setup(200, 100).outputItems(new ItemStack(ModBlocks.machine_assembly_machine, 1)) + .inputItems(new OreDictStack(STEEL.ingot(), 4), new OreDictStack(CU.plate(), 4), new ComparableStack(ModItems.motor, 2), new ComparableStack(ModItems.circuit, 1, EnumCircuitType.ANALOG))); this.register(new GenericRecipe("ass.chemplant").setup(200, 100).outputItems(new ItemStack(ModBlocks.machine_chemical_plant, 1)) .inputItems(new OreDictStack(STEEL.ingot(), 8), new OreDictStack(CU.pipe(), 2), new ComparableStack(ModItems.plate_polymer, 16), new ComparableStack(ModItems.motor, 2), new ComparableStack(ModItems.coil_tungsten, 2), new ComparableStack(ModItems.circuit, 1, EnumCircuitType.ANALOG)) .inputItemsEx(new ComparableStack(ModItems.item_expensive, 3, EnumExpensiveType.STEEL_PLATING), new OreDictStack(CU.pipe(), 2), new ComparableStack(ModItems.plate_polymer, 16), new ComparableStack(ModItems.motor, 2), new ComparableStack(ModItems.coil_tungsten, 2), new ComparableStack(ModItems.circuit, 3, EnumCircuitType.ANALOG))); diff --git a/src/main/java/com/hbm/inventory/recipes/PUREXRecipes.java b/src/main/java/com/hbm/inventory/recipes/PUREXRecipes.java index 76cdc088c..c6ab8e83b 100644 --- a/src/main/java/com/hbm/inventory/recipes/PUREXRecipes.java +++ b/src/main/java/com/hbm/inventory/recipes/PUREXRecipes.java @@ -53,9 +53,9 @@ public class PUREXRecipes extends GenericRecipes { this.register(new GenericRecipe("purex.zirnoxmeu").setup(100, zirnoxPower).setNameWrapper("purex.recycle").setGroup(autoZirnox, this) .inputItems(new ComparableStack(ModItems.waste_uranium)) .inputFluids(new FluidStack(Fluids.KEROSENE, 500), new FluidStack(Fluids.NITRIC_ACID, 250)) - .outputItems(new ItemStack(ModItems.nugget_u238, 1), - new ItemStack(ModItems.nugget_pu_mix, 2), - new ItemStack(ModItems.nugget_pu239, 1), + .outputItems(new ItemStack(ModItems.nugget_pu_mix, 1), + new ItemStack(ModItems.nugget_plutonium, 2), + new ItemStack(ModItems.nugget_technetium, 1), new ItemStack(ModItems.nuclear_waste_tiny, 2)) .setIconToFirstIngredient()); @@ -80,8 +80,7 @@ public class PUREXRecipes extends GenericRecipes { this.register(new GenericRecipe("purex.zirnoxmep").setup(100, zirnoxPower).setNameWrapper("purex.recycle").setGroup(autoZirnox, this) .inputItems(new ComparableStack(ModItems.waste_plutonium)) .inputFluids(new FluidStack(Fluids.KEROSENE, 500), new FluidStack(Fluids.NITRIC_ACID, 250)) - .outputItems(new ItemStack(ModItems.nugget_pu_mix, 1), - new ItemStack(ModItems.nugget_pu_mix, 1), + .outputItems(new ItemStack(ModItems.nugget_pu_mix, 2), new ItemStack(ModItems.nugget_technetium, 1), new ItemStack(ModItems.nuclear_waste_tiny, 3)) .setIconToFirstIngredient()); diff --git a/src/main/java/com/hbm/lib/RefStrings.java b/src/main/java/com/hbm/lib/RefStrings.java index 98e253f40..5b17eb388 100644 --- a/src/main/java/com/hbm/lib/RefStrings.java +++ b/src/main/java/com/hbm/lib/RefStrings.java @@ -3,7 +3,7 @@ package com.hbm.lib; public class RefStrings { public static final String MODID = "hbm"; public static final String NAME = "Hbm's Nuclear Tech Mod"; - public static final String VERSION = "1.0.27 BETA (5441)"; + public static final String VERSION = "1.0.27 BETA (5453)"; //HBM's Beta Naming Convention: //V T (X) //V -> next release version diff --git a/src/main/java/com/hbm/main/ResourceManager.java b/src/main/java/com/hbm/main/ResourceManager.java index 4eb451c2b..480e84917 100644 --- a/src/main/java/com/hbm/main/ResourceManager.java +++ b/src/main/java/com/hbm/main/ResourceManager.java @@ -580,6 +580,7 @@ public class ResourceManager { public static final ResourceLocation assembly_machine_tex = new ResourceLocation(RefStrings.MODID, "textures/models/machines/assembly_machine.png"); public static final ResourceLocation assemfac_tex = new ResourceLocation(RefStrings.MODID, "textures/models/machines/assemfac.png"); public static final ResourceLocation assembly_factory_tex = new ResourceLocation(RefStrings.MODID, "textures/models/machines/assembly_factory.png"); + public static final ResourceLocation assembly_factory_sparks_tex = new ResourceLocation(RefStrings.MODID, "textures/models/machines/assembly_factory_sparks.png"); //Chemplant public static final ResourceLocation chemplant_body_tex = new ResourceLocation(RefStrings.MODID, "textures/models/chemplant_base_new.png"); diff --git a/src/main/java/com/hbm/render/tileentity/RenderAssemblyFactory.java b/src/main/java/com/hbm/render/tileentity/RenderAssemblyFactory.java index a303ef057..06cdbf265 100644 --- a/src/main/java/com/hbm/render/tileentity/RenderAssemblyFactory.java +++ b/src/main/java/com/hbm/render/tileentity/RenderAssemblyFactory.java @@ -12,7 +12,9 @@ import com.hbm.render.item.ItemRenderBase; import com.hbm.tileentity.machine.TileEntityMachineAssemblyFactory; import net.minecraft.block.Block; +import net.minecraft.client.renderer.OpenGlHelper; import net.minecraft.client.renderer.RenderBlocks; +import net.minecraft.client.renderer.Tessellator; import net.minecraft.client.renderer.entity.RenderItem; import net.minecraft.client.renderer.entity.RenderManager; import net.minecraft.client.renderer.tileentity.TileEntitySpecialRenderer; @@ -145,7 +147,7 @@ public class RenderAssemblyFactory extends TileEntitySpecialRenderer implements GL11.glTranslated(0, arm4[3], 0); ResourceManager.assembly_factory.renderPart("Striker4"); GL11.glTranslated(0, 1.625, -0.3125); - GL11.glRotated(-arm4[4], 1, 0, 0); + GL11.glRotated(arm4[4], 1, 0, 0); GL11.glTranslated(0, -1.625, 0.3125); ResourceManager.assembly_factory.renderPart("Blade4"); } GL11.glPopMatrix(); @@ -189,6 +191,67 @@ public class RenderAssemblyFactory extends TileEntitySpecialRenderer implements } GL11.glPopMatrix(); } + + RenderArcFurnace.fullbright(true); + GL11.glDisable(GL11.GL_CULL_FACE); + GL11.glEnable(GL11.GL_BLEND); + GL11.glAlphaFunc(GL11.GL_GREATER, 0); + OpenGlHelper.glBlendFunc(770, 771, 1, 0); + bindTexture(ResourceManager.assembly_factory_sparks_tex); + + Tessellator tess = Tessellator.instance; + double wide = 0.1875D; + double narrow = 0.00D; + double length = 1.25D; + double uMin = ((tileEntity.getWorldObj().getTotalWorldTime() / 10D + interp)) % 10; + double uMax = uMin + 1; + double epsilon = 0.01D; + + // renders two layers of sparks, one with regular UV and one with mirrored +0.5 offset + // render left and right of the blade with small offset to eliminate z-fighting + GL11.glPushMatrix(); if(arm2[3] <= -0.375D) { + GL11.glTranslated(0.5 + slide1, 1.0625D, -arm2[2] / 45D); // arm angle/45 is a seemingly good enough approximation + tess.startDrawingQuads(); + tess.setColorRGBA_F(1F, 1F, 1F, 0F); + tess.addVertexWithUV(-epsilon, -wide, length, uMin + 0.5, 0); + tess.addVertexWithUV(-epsilon, wide, length, uMin + 0.5, 1); + tess.setColorRGBA_F(1F, 1F, 1F, 1F); + tess.addVertexWithUV(-epsilon, narrow, 0, uMax + 0.5, 1); + tess.addVertexWithUV(-epsilon, -narrow, 0, uMax + 0.5, 0); + + tess.setColorRGBA_F(1F, 1F, 1F, 0F); + tess.addVertexWithUV(epsilon, -wide, length, uMin, 1); + tess.addVertexWithUV(epsilon, wide, length, uMin, 0); + tess.setColorRGBA_F(1F, 1F, 1F, 1F); + tess.addVertexWithUV(epsilon, narrow, 0, uMax, 0); + tess.addVertexWithUV(epsilon, -narrow, 0, uMax, 1); + tess.draw(); + } GL11.glPopMatrix(); + + GL11.glPushMatrix(); if(arm4[3] <= -0.375D) { + GL11.glTranslated(-0.5 - slide2, 1.0625D, arm4[2] / 45D); + tess.startDrawingQuads(); + tess.setColorRGBA_F(1F, 1F, 1F, 0F); + tess.addVertexWithUV(-epsilon, -wide, -length, uMin + 0.5, 0); + tess.addVertexWithUV(-epsilon, wide, -length, uMin + 0.5, 1); + tess.setColorRGBA_F(1F, 1F, 1F, 1F); + tess.addVertexWithUV(-epsilon, narrow, 0, uMax + 0.5, 1); + tess.addVertexWithUV(-epsilon, -narrow, 0, uMax + 0.5, 0); + + tess.setNormal(-1, 0, 0); + tess.setColorRGBA_F(1F, 1F, 1F, 0F); + tess.addVertexWithUV(epsilon, -wide, -length, uMin, 1); + tess.addVertexWithUV(epsilon, wide, -length, uMin, 0); + tess.setColorRGBA_F(1F, 1F, 1F, 1F); + tess.addVertexWithUV(epsilon, narrow, 0, uMax, 0); + tess.addVertexWithUV(epsilon, -narrow, 0, uMax, 1); + tess.draw(); + } GL11.glPopMatrix(); + + GL11.glAlphaFunc(GL11.GL_GREATER, 0.1F); + GL11.glDisable(GL11.GL_BLEND); + GL11.glEnable(GL11.GL_CULL_FACE); + RenderArcFurnace.fullbright(false); } GL11.glShadeModel(GL11.GL_FLAT); diff --git a/src/main/java/com/hbm/tileentity/machine/TileEntityMachineAssemblyFactory.java b/src/main/java/com/hbm/tileentity/machine/TileEntityMachineAssemblyFactory.java index 0613437c8..295d1b4a7 100644 --- a/src/main/java/com/hbm/tileentity/machine/TileEntityMachineAssemblyFactory.java +++ b/src/main/java/com/hbm/tileentity/machine/TileEntityMachineAssemblyFactory.java @@ -186,7 +186,7 @@ public class TileEntityMachineAssemblyFactory extends TileEntityMachineBase impl this.networkPackNT(100); } else { - if(MainRegistry.proxy.me().getDistance(xCoord , yCoord, zCoord) < 50) { + if((didProcess[0] ||didProcess[1] ||didProcess[2] ||didProcess[3]) && MainRegistry.proxy.me().getDistance(xCoord , yCoord, zCoord) < 50) { if(audio == null) { audio = createAudioLoop(); audio.startSound(); @@ -443,7 +443,7 @@ public class TileEntityMachineAssemblyFactory extends TileEntityMachineBase impl public TragicYuri(int group) { striker = new AssemblerArm( group == 0 ? 0 : 3); saw = new AssemblerArm( group == 0 ? 1 : 2).yepThatsASaw(); - timeUntilReposition = 200; + timeUntilReposition = 140 + rand.nextInt(161); } public void update(boolean working) { diff --git a/src/main/java/com/hbm/tileentity/machine/TileEntityMachineTurbofan.java b/src/main/java/com/hbm/tileentity/machine/TileEntityMachineTurbofan.java index 6b804feaa..5140ccffc 100644 --- a/src/main/java/com/hbm/tileentity/machine/TileEntityMachineTurbofan.java +++ b/src/main/java/com/hbm/tileentity/machine/TileEntityMachineTurbofan.java @@ -346,7 +346,7 @@ public class TileEntityMachineTurbofan extends TileEntityMachinePolluting implem * All movement related stuff has to be repeated on the client, but only for the client's player * Otherwise this could lead to desync since the motion is never sent form the server */ - if(tank.getFill() > 0 && !MainRegistry.proxy.me().capabilities.isCreativeMode) { + if(wasOn && !MainRegistry.proxy.me().capabilities.isCreativeMode) { ForgeDirection dir = ForgeDirection.getOrientation(this.getBlockMetadata() - 10).getRotation(ForgeDirection.UP); ForgeDirection rot = dir.getRotation(ForgeDirection.UP); diff --git a/src/main/resources/assets/hbm/manual/machine/assembler.json b/src/main/resources/assets/hbm/manual/machine/assembler.json index a39c70492..bbae88842 100644 --- a/src/main/resources/assets/hbm/manual/machine/assembler.json +++ b/src/main/resources/assets/hbm/manual/machine/assembler.json @@ -7,7 +7,7 @@ "zh_CN": "装配机" }, "content": { - "en_US": "Universal machine for building things with up to twelve item inputs. Important early on and used widely throughout progression. Build in an [[anvil|Anvil]], using plates from a [[press|Press]].", + "en_US": "Universal machine for building things with up to twelve item inputs. Important early on and used widely throughout progression. Built in an [[anvil|Anvil]], using plates from a [[press|Press]].", "zh_CN": "用于装配物品的通用机器,最多能够输入十二种物品。前期的重要机器,并且在 整个游戏流程中广泛使用。在[[砧|Anvil]]中使用金属板等合成,需要的金属板可在[[锻压机|Press]]中制造。" } } diff --git a/src/main/resources/assets/hbm/textures/armor/t51_arm.png b/src/main/resources/assets/hbm/textures/armor/t51_arm.png new file mode 100644 index 000000000..fa6f97619 Binary files /dev/null and b/src/main/resources/assets/hbm/textures/armor/t51_arm.png differ diff --git a/src/main/resources/assets/hbm/textures/armor/t51_chest.png b/src/main/resources/assets/hbm/textures/armor/t51_chest.png new file mode 100644 index 000000000..1362ee9a8 Binary files /dev/null and b/src/main/resources/assets/hbm/textures/armor/t51_chest.png differ diff --git a/src/main/resources/assets/hbm/textures/armor/t51_leg.png b/src/main/resources/assets/hbm/textures/armor/t51_leg.png new file mode 100644 index 000000000..0c71e515f Binary files /dev/null and b/src/main/resources/assets/hbm/textures/armor/t51_leg.png differ diff --git a/src/main/resources/assets/hbm/textures/models/machines/assembly_factory.png b/src/main/resources/assets/hbm/textures/models/machines/assembly_factory.png index c60feff7b..7620a5371 100644 Binary files a/src/main/resources/assets/hbm/textures/models/machines/assembly_factory.png and b/src/main/resources/assets/hbm/textures/models/machines/assembly_factory.png differ diff --git a/src/main/resources/assets/hbm/textures/models/machines/assembly_factory_sparks.png b/src/main/resources/assets/hbm/textures/models/machines/assembly_factory_sparks.png new file mode 100644 index 000000000..8d6fe9fee Binary files /dev/null and b/src/main/resources/assets/hbm/textures/models/machines/assembly_factory_sparks.png differ