From 4322892abb776fa7c3bd73ead97ab0571ad5dd72 Mon Sep 17 00:00:00 2001 From: Boblet Date: Wed, 26 Nov 2025 15:50:45 +0100 Subject: [PATCH] fugorg contraption --- .../container/ContainerMachinePrecAss.java | 73 +++++++++++ .../hbm/inventory/gui/GUIMachinePrecAss.java | 123 ++++++++++++++++++ .../hbm/inventory/recipes/PrecAssRecipes.java | 78 +++++++++++ .../recipes/loader/GenericRecipes.java | 4 + .../recipes/loader/SerializableRecipe.java | 1 + .../module/machine/ModuleMachinePrecAss.java | 4 +- .../tileentity/RenderAssemblyMachine.java | 2 - .../hbm/render/tileentity/RenderPrecAss.java | 41 ++++-- .../machine/TileEntityMachinePrecAss.java | 36 ++--- src/main/resources/assets/hbm/lang/de_DE.lang | 2 + src/main/resources/assets/hbm/lang/en_US.lang | 2 + 11 files changed, 333 insertions(+), 33 deletions(-) create mode 100644 src/main/java/com/hbm/inventory/container/ContainerMachinePrecAss.java create mode 100644 src/main/java/com/hbm/inventory/gui/GUIMachinePrecAss.java create mode 100644 src/main/java/com/hbm/inventory/recipes/PrecAssRecipes.java diff --git a/src/main/java/com/hbm/inventory/container/ContainerMachinePrecAss.java b/src/main/java/com/hbm/inventory/container/ContainerMachinePrecAss.java new file mode 100644 index 000000000..a59986f29 --- /dev/null +++ b/src/main/java/com/hbm/inventory/container/ContainerMachinePrecAss.java @@ -0,0 +1,73 @@ +package com.hbm.inventory.container; + +import com.hbm.inventory.SlotCraftingOutput; +import com.hbm.inventory.SlotNonRetarded; +import com.hbm.items.ModItems; +import com.hbm.items.machine.ItemMachineUpgrade; +import com.hbm.util.InventoryUtil; + +import api.hbm.energymk2.IBatteryItem; +import net.minecraft.entity.player.EntityPlayer; +import net.minecraft.entity.player.InventoryPlayer; +import net.minecraft.inventory.IInventory; +import net.minecraft.inventory.Slot; +import net.minecraft.item.ItemStack; + +public class ContainerMachinePrecAss extends ContainerBase { + + public ContainerMachinePrecAss(InventoryPlayer invPlayer, IInventory assembler) { + super(invPlayer, assembler); + + // Battery + this.addSlotToContainer(new SlotNonRetarded(assembler, 0, 152, 81)); + // Schematic + this.addSlotToContainer(new SlotNonRetarded(assembler, 1, 35, 126)); + // Upgrades + this.addSlots(assembler, 2, 152, 108, 2, 1); + // Input + this.addSlots(assembler, 4, 8, 27, 3, 3); + // Output + this.addOutputSlots(invPlayer.player, assembler, 13, 80, 27, 3, 3); + + this.playerInv(invPlayer, 8, 174); + } + + @Override + public ItemStack transferStackInSlot(EntityPlayer player, int index) { + ItemStack slotOriginal = null; + Slot slot = (Slot) this.inventorySlots.get(index); + + if(slot != null && slot.getHasStack()) { + ItemStack slotStack = slot.getStack(); + slotOriginal = slotStack.copy(); + + if(index <= tile.getSizeInventory() - 1) { + SlotCraftingOutput.checkAchievements(player, slotStack); + if(!this.mergeItemStack(slotStack, tile.getSizeInventory(), this.inventorySlots.size(), true)) { + return null; + } + } else { + + if(slotOriginal.getItem() instanceof IBatteryItem || slotOriginal.getItem() == ModItems.battery_creative) { + if(!this.mergeItemStack(slotStack, 0, 1, false)) return null; + } else if(slotOriginal.getItem() == ModItems.blueprints) { + if(!this.mergeItemStack(slotStack, 1, 2, false)) return null; + } else if(slotOriginal.getItem() instanceof ItemMachineUpgrade) { + if(!this.mergeItemStack(slotStack, 2, 4, false)) return null; + } else { + if(!InventoryUtil.mergeItemStack(this.inventorySlots, slotStack, 4, 22, false)) return null; + } + } + + if(slotStack.stackSize == 0) { + slot.putStack(null); + } else { + slot.onSlotChanged(); + } + + slot.onPickupFromSlot(player, slotStack); + } + + return slotOriginal; + } +} diff --git a/src/main/java/com/hbm/inventory/gui/GUIMachinePrecAss.java b/src/main/java/com/hbm/inventory/gui/GUIMachinePrecAss.java new file mode 100644 index 000000000..6cdbe0a2e --- /dev/null +++ b/src/main/java/com/hbm/inventory/gui/GUIMachinePrecAss.java @@ -0,0 +1,123 @@ +package com.hbm.inventory.gui; + +import org.lwjgl.opengl.GL11; + +import com.hbm.inventory.container.ContainerMachinePrecAss; +import com.hbm.inventory.recipes.PrecAssRecipes; +import com.hbm.inventory.recipes.loader.GenericRecipe; +import com.hbm.items.machine.ItemBlueprints; +import com.hbm.lib.RefStrings; +import com.hbm.tileentity.machine.TileEntityMachinePrecAss; +import com.hbm.util.i18n.I18nUtil; + +import net.minecraft.client.Minecraft; +import net.minecraft.client.renderer.OpenGlHelper; +import net.minecraft.client.resources.I18n; +import net.minecraft.entity.player.InventoryPlayer; +import net.minecraft.inventory.Slot; +import net.minecraft.util.EnumChatFormatting; +import net.minecraft.util.ResourceLocation; + +public class GUIMachinePrecAss extends GuiInfoContainer { + + private static ResourceLocation texture = new ResourceLocation(RefStrings.MODID + ":textures/gui/processing/gui_precass.png"); + private TileEntityMachinePrecAss assembler; + + public GUIMachinePrecAss(InventoryPlayer invPlayer, TileEntityMachinePrecAss tedf) { + super(new ContainerMachinePrecAss(invPlayer, tedf)); + assembler = tedf; + + this.xSize = 176; + this.ySize = 256; + } + + @Override + public void drawScreen(int mouseX, int mouseY, float f) { + super.drawScreen(mouseX, mouseY, f); + + assembler.inputTank.renderTankInfo(this, mouseX, mouseY, guiLeft + 8, guiTop + 99, 52, 16); + assembler.outputTank.renderTankInfo(this, mouseX, mouseY, guiLeft + 80, guiTop + 99, 52, 16); + + this.drawElectricityInfo(this, mouseX, mouseY, guiLeft + 152, guiTop + 18, 16, 61, assembler.power, assembler.maxPower); + + if(guiLeft + 7 <= mouseX && guiLeft + 7 + 18 > mouseX && guiTop + 125 < mouseY && guiTop + 125 + 18 >= mouseY) { + if(this.assembler.assemblerModule.recipe != null && PrecAssRecipes.INSTANCE.recipeNameMap.containsKey(this.assembler.assemblerModule.recipe)) { + GenericRecipe recipe = (GenericRecipe) PrecAssRecipes.INSTANCE.recipeNameMap.get(this.assembler.assemblerModule.recipe); + this.func_146283_a(recipe.print(), mouseX, mouseY); + } else { + this.drawCreativeTabHoveringText(EnumChatFormatting.YELLOW + I18nUtil.resolveKey("gui.recipe.setRecipe"), mouseX, mouseY); + } + } + } + + @Override + protected void mouseClicked(int x, int y, int button) { + super.mouseClicked(x, y, button); + + if(this.checkClick(x, y, 7, 125, 18, 18)) GUIScreenRecipeSelector.openSelector(PrecAssRecipes.INSTANCE, assembler, assembler.assemblerModule.recipe, 0, ItemBlueprints.grabPool(assembler.slots[1]), this); + } + + @Override + protected void drawGuiContainerForegroundLayer(int i, int j) { + String name = this.assembler.hasCustomInventoryName() ? this.assembler.getInventoryName() : I18n.format(this.assembler.getInventoryName()); + + this.fontRendererObj.drawString(name, 70 - this.fontRendererObj.getStringWidth(name) / 2, 6, 4210752); + this.fontRendererObj.drawString(I18n.format("container.inventory"), 8, this.ySize - 96 + 2, 4210752); + } + + @Override + protected void drawGuiContainerBackgroundLayer(float p_146976_1_, int p_146976_2_, int p_146976_3_) { + GL11.glColor4f(1.0F, 1.0F, 1.0F, 1.0F); + Minecraft.getMinecraft().getTextureManager().bindTexture(texture); + drawTexturedModalRect(guiLeft, guiTop, 0, 0, xSize, ySize); + + int p = (int) (assembler.power * 61 / assembler.maxPower); + drawTexturedModalRect(guiLeft + 152, guiTop + 79 - p, 176, 61 - p, 16, p); + + if(assembler.assemblerModule.progress > 0) { + int j = (int) Math.ceil(70 * assembler.assemblerModule.progress); + drawTexturedModalRect(guiLeft + 62, guiTop + 126, 176, 61, j, 16); + } + + GenericRecipe recipe = PrecAssRecipes.INSTANCE.recipeNameMap.get(assembler.assemblerModule.recipe); + + /// LEFT LED + if(assembler.didProcess) { + drawTexturedModalRect(guiLeft + 51, guiTop + 121, 195, 0, 3, 6); + } else if(recipe != null) { + drawTexturedModalRect(guiLeft + 51, guiTop + 121, 192, 0, 3, 6); + } + + /// RIGHT LED + if(assembler.didProcess) { + drawTexturedModalRect(guiLeft + 56, guiTop + 121, 195, 0, 3, 6); + } else if(recipe != null && assembler.power >= recipe.power) { + drawTexturedModalRect(guiLeft + 56, guiTop + 121, 192, 0, 3, 6); + } + + this.renderItem(recipe != null ? recipe.getIcon() : TEMPLATE_FOLDER, 8, 126); + + if(recipe != null && recipe.inputItem != null) { + for(int i = 0; i < recipe.inputItem.length; i++) { + Slot slot = (Slot) this.inventorySlots.inventorySlots.get(assembler.assemblerModule.inputSlots[i]); + if(!slot.getHasStack()) this.renderItem(recipe.inputItem[i].extractForCyclingDisplay(20), slot.xDisplayPosition, slot.yDisplayPosition, 10F); + } + + Minecraft.getMinecraft().getTextureManager().bindTexture(texture); + OpenGlHelper.glBlendFunc(770, 771, 1, 0); + GL11.glColor4f(1F, 1F, 1F, 0.5F); + GL11.glEnable(GL11.GL_BLEND); + this.zLevel = 300F; + for(int i = 0; i < recipe.inputItem.length; i++) { + Slot slot = (Slot) this.inventorySlots.inventorySlots.get(assembler.assemblerModule.inputSlots[i]); + if(!slot.getHasStack()) drawTexturedModalRect(guiLeft + slot.xDisplayPosition, guiTop + slot.yDisplayPosition, slot.xDisplayPosition, slot.yDisplayPosition, 16, 16); + } + this.zLevel = 0F; + GL11.glColor4f(1F, 1F, 1F, 1F); + GL11.glDisable(GL11.GL_BLEND); + } + + assembler.inputTank.renderTank(guiLeft + 8, guiTop + 115, this.zLevel, 52, 16, 1); + assembler.outputTank.renderTank(guiLeft + 80, guiTop + 115, this.zLevel, 52, 16, 1); + } +} diff --git a/src/main/java/com/hbm/inventory/recipes/PrecAssRecipes.java b/src/main/java/com/hbm/inventory/recipes/PrecAssRecipes.java new file mode 100644 index 000000000..815d4aed9 --- /dev/null +++ b/src/main/java/com/hbm/inventory/recipes/PrecAssRecipes.java @@ -0,0 +1,78 @@ +package com.hbm.inventory.recipes; + +import static com.hbm.inventory.OreDictManager.*; + +import com.hbm.inventory.FluidStack; +import com.hbm.inventory.OreDictManager.DictFrame; +import com.hbm.inventory.RecipesCommon.ComparableStack; +import com.hbm.inventory.RecipesCommon.NBTStack; +import com.hbm.inventory.RecipesCommon.OreDictStack; +import com.hbm.inventory.fluid.Fluids; +import com.hbm.inventory.recipes.loader.GenericRecipe; +import com.hbm.inventory.recipes.loader.GenericRecipes; +import com.hbm.items.BrokenItem; +import com.hbm.items.ModItems; +import com.hbm.items.machine.ItemCircuit.EnumCircuitType; + +import net.minecraft.item.ItemStack; + +public class PrecAssRecipes extends GenericRecipes { + + public static final PrecAssRecipes INSTANCE = new PrecAssRecipes(); + + @Override public int inputItemLimit() { return 9; } + @Override public int inputFluidLimit() { return 1; } + @Override public int outputItemLimit() { return 9; } + @Override public int outputFluidLimit() { return 1; } + + @Override public String getFileName() { return "hbmPrecisionAssembly.json"; } + @Override public GenericRecipe instantiateRecipe(String name) { return new GenericRecipe(name); } + + @Override + public void registerDefaults() { + + registerPair(new GenericRecipe("precass.controller").setup(400, 15_000L) + .inputItems(new ComparableStack(ModItems.circuit, 32, EnumCircuitType.CHIP), + new ComparableStack(ModItems.circuit, 32, EnumCircuitType.CAPACITOR), + new ComparableStack(ModItems.circuit, 16, EnumCircuitType.CAPACITOR_TANTALIUM), + new ComparableStack(ModItems.circuit, 1, EnumCircuitType.CONTROLLER_CHASSIS), + new ComparableStack(ModItems.upgrade_speed_1), + new OreDictStack(PB.wireFine(), 16)) + .inputFluids(new FluidStack(Fluids.PERFLUOROMETHYL, 1_000)), + DictFrame.fromOne(ModItems.circuit, EnumCircuitType.CONTROLLER), 10, 25); + } + + public void registerPair(GenericRecipe recipe, ItemStack output, int chance, int reclaim) { + recipe.outputItems(new ChanceOutputMulti( + new ChanceOutput(output, chance), + new ChanceOutput(BrokenItem.make(output), 100 - chance) + )); + + this.register(recipe); + + float fReclaim = reclaim / 100F; + + IOutput[] recycle = new IOutput[recipe.inputItem.length]; + for(int i = 0; i < recycle.length; i++) { + ItemStack stack = recipe.inputItem[i].extractForNEI().get(0).copy(); + int stackSize = (int) (recipe.inputItem[i].stacksize * fReclaim); + if(stackSize > 0) { + stack.stackSize = stackSize; + recycle[i] = new ChanceOutput(stack); + } else { + recycle[i] = new ChanceOutput(stack, fReclaim); + } + } + + FluidStack[] fluid = recipe.inputFluid != null ? new FluidStack[1] : null; + if(fluid != null) { + fluid[0] = new FluidStack(recipe.inputFluid[0].type, (int) Math.round(recipe.inputFluid[0].fill * fReclaim)); + } + + this.register(new GenericRecipe(recipe.getInternalName() + ".recycle").setup(recipe.duration, recipe.power).setNameWrapper("precass.recycle") + .setIcon(BrokenItem.make(output)) + .inputItems(new NBTStack(BrokenItem.make(output))) + .outputItems(recycle) + .outputFluids(fluid)); + } +} diff --git a/src/main/java/com/hbm/inventory/recipes/loader/GenericRecipes.java b/src/main/java/com/hbm/inventory/recipes/loader/GenericRecipes.java index 27eb9c69f..5c2b59400 100644 --- a/src/main/java/com/hbm/inventory/recipes/loader/GenericRecipes.java +++ b/src/main/java/com/hbm/inventory/recipes/loader/GenericRecipes.java @@ -287,6 +287,10 @@ public abstract class GenericRecipes extends Serializab public List pool = new ArrayList(); + public ChanceOutputMulti(ChanceOutput... out) { + for(ChanceOutput output : out) pool.add(output); + } + @Override public ItemStack collapse() { return ((ChanceOutput) WeightedRandom.getRandomItem(RNG, pool)).collapse(); } @Override public boolean possibleMultiOutput() { return pool.size() > 1; } @Override public ItemStack getSingle() { return possibleMultiOutput() ? null : pool.get(0).getSingle(); } diff --git a/src/main/java/com/hbm/inventory/recipes/loader/SerializableRecipe.java b/src/main/java/com/hbm/inventory/recipes/loader/SerializableRecipe.java index e2ba5cf28..abef87d8a 100644 --- a/src/main/java/com/hbm/inventory/recipes/loader/SerializableRecipe.java +++ b/src/main/java/com/hbm/inventory/recipes/loader/SerializableRecipe.java @@ -92,6 +92,7 @@ public abstract class SerializableRecipe { recipeHandlers.add(ChemicalPlantRecipes.INSTANCE); recipeHandlers.add(PUREXRecipes.INSTANCE); recipeHandlers.add(FusionRecipes.INSTANCE); + recipeHandlers.add(PrecAssRecipes.INSTANCE); recipeHandlers.add(new MatDistribution()); recipeHandlers.add(new CustomMachineRecipes()); diff --git a/src/main/java/com/hbm/module/machine/ModuleMachinePrecAss.java b/src/main/java/com/hbm/module/machine/ModuleMachinePrecAss.java index c45da3402..9d3862db7 100644 --- a/src/main/java/com/hbm/module/machine/ModuleMachinePrecAss.java +++ b/src/main/java/com/hbm/module/machine/ModuleMachinePrecAss.java @@ -1,7 +1,7 @@ package com.hbm.module.machine; import com.hbm.inventory.fluid.tank.FluidTank; -import com.hbm.inventory.recipes.AssemblyMachineRecipes; +import com.hbm.inventory.recipes.PrecAssRecipes; import com.hbm.inventory.recipes.loader.GenericRecipe; import com.hbm.inventory.recipes.loader.GenericRecipes; import com.hbm.util.BobMathUtil; @@ -21,7 +21,7 @@ public class ModuleMachinePrecAss extends ModuleMachineBase { @Override public GenericRecipes getRecipeSet() { - return AssemblyMachineRecipes.INSTANCE; + return PrecAssRecipes.INSTANCE; } @Override diff --git a/src/main/java/com/hbm/render/tileentity/RenderAssemblyMachine.java b/src/main/java/com/hbm/render/tileentity/RenderAssemblyMachine.java index 5900c0f84..17eba939c 100644 --- a/src/main/java/com/hbm/render/tileentity/RenderAssemblyMachine.java +++ b/src/main/java/com/hbm/render/tileentity/RenderAssemblyMachine.java @@ -54,8 +54,6 @@ public class RenderAssemblyMachine extends TileEntitySpecialRenderer implements double[] arm1 = assembler.arms[0].getPositions(interp); double[] arm2 = assembler.arms[1].getPositions(interp); - // arm1 = arm2 = new double[] {60, -15, 15, -0.25}; // heart - GL11.glRotated(spin, 0, 1, 0); ResourceManager.assembly_machine.renderPart("Ring"); diff --git a/src/main/java/com/hbm/render/tileentity/RenderPrecAss.java b/src/main/java/com/hbm/render/tileentity/RenderPrecAss.java index 0bb847e2d..4009fcfc5 100644 --- a/src/main/java/com/hbm/render/tileentity/RenderPrecAss.java +++ b/src/main/java/com/hbm/render/tileentity/RenderPrecAss.java @@ -4,13 +4,22 @@ import org.lwjgl.opengl.GL11; import com.hbm.blocks.BlockDummyable; import com.hbm.blocks.ModBlocks; +import com.hbm.inventory.recipes.PrecAssRecipes; +import com.hbm.inventory.recipes.loader.GenericRecipe; +import com.hbm.main.MainRegistry; import com.hbm.main.ResourceManager; import com.hbm.render.item.ItemRenderBase; import com.hbm.tileentity.machine.TileEntityMachinePrecAss; +import com.hbm.util.BobMathUtil; +import net.minecraft.block.Block; +import net.minecraft.client.renderer.RenderBlocks; +import net.minecraft.client.renderer.entity.RenderItem; +import net.minecraft.client.renderer.entity.RenderManager; import net.minecraft.client.renderer.tileentity.TileEntitySpecialRenderer; import net.minecraft.entity.item.EntityItem; import net.minecraft.item.Item; +import net.minecraft.item.ItemBlock; import net.minecraft.item.ItemStack; import net.minecraft.tileentity.TileEntity; import net.minecraftforge.client.IItemRenderer; @@ -37,21 +46,29 @@ public class RenderPrecAss extends TileEntitySpecialRenderer implements IItemRen bindTexture(ResourceManager.precass_tex); ResourceManager.assembly_machine.renderPart("Base"); - //if(assembler.frame) ResourceManager.assembly_machine.renderPart("Frame"); + if(assembler.frame) ResourceManager.assembly_machine.renderPart("Frame"); GL11.glPushMatrix(); - //double spin = BobMathUtil.interp(assembler.prevRing, assembler.ring, interp); - double[] arm1 = new double[] {45, -15, -5, -0.75}; + double spin = BobMathUtil.interp(assembler.prevRing, assembler.ring, interp); - // arm1 = arm2 = new double[] {60, -15, 15, -0.25}; // heart + double[] arm = new double[] { + BobMathUtil.interp(assembler.prevArmAngles[0], assembler.armAngles[0], interp), + BobMathUtil.interp(assembler.prevArmAngles[1], assembler.armAngles[1], interp), + BobMathUtil.interp(assembler.prevArmAngles[2], assembler.armAngles[2], interp) + }; + + // test for null position + arm[0] = 45; + arm[1] = -30; + arm[2] = 45; - //GL11.glRotated(spin, 0, 1, 0); + GL11.glRotated(spin, 0, 1, 0); ResourceManager.assembly_machine.renderPart("Ring"); ResourceManager.assembly_machine.renderPart("Ring2"); for(int i = 0; i < 4; i++) { - renderArm(arm1); + renderArm(arm, BobMathUtil.interp(assembler.prevStrikers[i], assembler.strikers[i], interp)); GL11.glRotated(90, 0, 1, 0); } @@ -59,7 +76,7 @@ public class RenderPrecAss extends TileEntitySpecialRenderer implements IItemRen GL11.glShadeModel(GL11.GL_FLAT); - /*GenericRecipe recipe = AssemblyMachineRecipes.INSTANCE.recipeNameMap.get(assembler.assemblerModule.recipe); + GenericRecipe recipe = PrecAssRecipes.INSTANCE.recipeNameMap.get(assembler.assemblerModule.recipe); if(recipe != null && MainRegistry.proxy.me().getDistanceSq(tileEntity.xCoord + 0.5, tileEntity.yCoord + 1, tileEntity.zCoord + 0.5) < 35 * 35) { GL11.glRotated(90, 0, 1, 0); @@ -89,12 +106,12 @@ public class RenderPrecAss extends TileEntitySpecialRenderer implements IItemRen RenderItem.renderInFrame = true; RenderManager.instance.renderEntityWithPosYaw(dummy, 0.0D, 0.0D, 0.0D, 0.0F, 0.0F); RenderItem.renderInFrame = false; - }*/ + } GL11.glPopMatrix(); } - public static void renderArm(double[] arm) { + public static void renderArm(double[] arm, double striker) { GL11.glPushMatrix(); { GL11.glTranslated(0, 1.625, 0.9375); @@ -111,7 +128,7 @@ public class RenderPrecAss extends TileEntitySpecialRenderer implements IItemRen GL11.glRotated(arm[2], 1, 0, 0); GL11.glTranslated(0, -2.375, -0.4375); ResourceManager.assembly_machine.renderPart("Head1"); - GL11.glTranslated(0, arm[3], 0); + GL11.glTranslated(0, striker, 0); ResourceManager.assembly_machine.renderPart("Spike1"); } GL11.glPopMatrix(); } @@ -139,9 +156,9 @@ public class RenderPrecAss extends TileEntitySpecialRenderer implements IItemRen ResourceManager.assembly_machine.renderPart("Frame"); ResourceManager.assembly_machine.renderPart("Ring"); ResourceManager.assembly_machine.renderPart("Ring2"); - double[] arm = new double[] {45, -15, -5, -0.75}; + double[] arm = new double[] {45, -15, -5}; for(int i = 0; i < 4; i++) { - renderArm(arm); + renderArm(arm, -0.75); GL11.glRotated(90, 0, 1, 0); } GL11.glShadeModel(GL11.GL_FLAT); diff --git a/src/main/java/com/hbm/tileentity/machine/TileEntityMachinePrecAss.java b/src/main/java/com/hbm/tileentity/machine/TileEntityMachinePrecAss.java index e93d46f66..67b436477 100644 --- a/src/main/java/com/hbm/tileentity/machine/TileEntityMachinePrecAss.java +++ b/src/main/java/com/hbm/tileentity/machine/TileEntityMachinePrecAss.java @@ -6,9 +6,11 @@ import java.util.List; import com.hbm.blocks.ModBlocks; import com.hbm.interfaces.IControlReceiver; import com.hbm.inventory.UpgradeManagerNT; +import com.hbm.inventory.container.ContainerMachinePrecAss; import com.hbm.inventory.fluid.Fluids; import com.hbm.inventory.fluid.tank.FluidTank; -import com.hbm.inventory.recipes.AssemblyMachineRecipes; +import com.hbm.inventory.gui.GUIMachinePrecAss; +import com.hbm.inventory.recipes.PrecAssRecipes; import com.hbm.inventory.recipes.loader.GenericRecipe; import com.hbm.items.ModItems; import com.hbm.items.machine.ItemMachineUpgrade; @@ -17,6 +19,7 @@ import com.hbm.lib.Library; import com.hbm.main.MainRegistry; import com.hbm.module.machine.ModuleMachinePrecAss; import com.hbm.sound.AudioWrapper; +import com.hbm.tileentity.IGUIProvider; import com.hbm.tileentity.IUpgradeInfoProvider; import com.hbm.tileentity.TileEntityMachineBase; import com.hbm.util.BobMathUtil; @@ -29,13 +32,15 @@ import cpw.mods.fml.relauncher.Side; import cpw.mods.fml.relauncher.SideOnly; import io.netty.buffer.ByteBuf; import net.minecraft.entity.player.EntityPlayer; +import net.minecraft.inventory.Container; import net.minecraft.item.ItemStack; import net.minecraft.nbt.NBTTagCompound; import net.minecraft.util.AxisAlignedBB; import net.minecraft.util.EnumChatFormatting; +import net.minecraft.world.World; // horribly copy-pasted crap device -public class TileEntityMachinePrecAss extends TileEntityMachineBase implements IEnergyReceiverMK2, IFluidStandardTransceiverMK2, IUpgradeInfoProvider, IControlReceiver/*, IGUIProvider*/ { +public class TileEntityMachinePrecAss extends TileEntityMachineBase implements IEnergyReceiverMK2, IFluidStandardTransceiverMK2, IUpgradeInfoProvider, IControlReceiver, IGUIProvider { public FluidTank inputTank; public FluidTank outputTank; @@ -55,6 +60,13 @@ public class TileEntityMachinePrecAss extends TileEntityMachineBase implements I public double ringTarget; public int ringDelay; + public double[] armAngles = new double[] {45, -15, -5}; + public double[] prevArmAngles = new double[] {45, -15, -5}; + public double[] strikers = new double[4]; + public double[] prevStrikers = new double[4]; + protected int strikerIndex; + protected int strikerDelay; + public UpgradeManagerNT upgradeManager = new UpgradeManagerNT(this); public TileEntityMachinePrecAss() { @@ -79,7 +91,7 @@ public class TileEntityMachinePrecAss extends TileEntityMachineBase implements I if(!worldObj.isRemote) { - GenericRecipe recipe = AssemblyMachineRecipes.INSTANCE.recipeNameMap.get(assemblerModule.recipe); + GenericRecipe recipe = PrecAssRecipes.INSTANCE.recipeNameMap.get(assemblerModule.recipe); if(recipe != null) { this.maxPower = recipe.power * 100; } @@ -134,18 +146,8 @@ public class TileEntityMachinePrecAss extends TileEntityMachineBase implements I } } - /*for(AssemblerArm arm : arms) { - arm.updateInterp(); - if(didProcess) { - arm.updateArm(); - } else{ - arm.returnToNullPos(); - } - - if(!this.muffled && arm.prevAngles[3] != arm.angles[3] && arm.angles[3] == -0.75) { - MainRegistry.proxy.playSoundClient(xCoord, yCoord, zCoord, "hbm:block.assemblerStrike", this.getVolume(0.5F), 1F); - } - }*/ + for(int i = 0; i < 3; i++) this.prevArmAngles[i] = this.armAngles[i]; + for(int i = 0; i < 4; i++) this.prevStrikers[i] = this.strikers[i]; this.prevRing = this.ring; @@ -284,8 +286,8 @@ public class TileEntityMachinePrecAss extends TileEntityMachineBase implements I @Override public FluidTank[] getSendingTanks() { return new FluidTank[] {outputTank}; } @Override public FluidTank[] getAllTanks() { return new FluidTank[] {inputTank, outputTank}; } - //@Override public Container provideContainer(int ID, EntityPlayer player, World world, int x, int y, int z) { return new ContainerMachineAssemblyMachine(player.inventory, this); } - //@Override @SideOnly(Side.CLIENT) public Object provideGUI(int ID, EntityPlayer player, World world, int x, int y, int z) { return new GUIMachineAssemblyMachine(player.inventory, this); } + @Override public Container provideContainer(int ID, EntityPlayer player, World world, int x, int y, int z) { return new ContainerMachinePrecAss(player.inventory, this); } + @Override @SideOnly(Side.CLIENT) public Object provideGUI(int ID, EntityPlayer player, World world, int x, int y, int z) { return new GUIMachinePrecAss(player.inventory, this); } @Override public boolean hasPermission(EntityPlayer player) { return this.isUseableByPlayer(player); } diff --git a/src/main/resources/assets/hbm/lang/de_DE.lang b/src/main/resources/assets/hbm/lang/de_DE.lang index 8f7571bfb..360780ad4 100644 --- a/src/main/resources/assets/hbm/lang/de_DE.lang +++ b/src/main/resources/assets/hbm/lang/de_DE.lang @@ -3767,6 +3767,8 @@ potion.hbm_stability=Stabilität potion.hbm_taint=Verdorben potion.hbm_telekinesis=! ! ! +precass.recycle=Recyclen von %s + purex.recycle=Wiederanreicherung von %s purex.schrab=Schrabidium extrahieren aus %s diff --git a/src/main/resources/assets/hbm/lang/en_US.lang b/src/main/resources/assets/hbm/lang/en_US.lang index d57956ab1..08e145734 100644 --- a/src/main/resources/assets/hbm/lang/en_US.lang +++ b/src/main/resources/assets/hbm/lang/en_US.lang @@ -4943,6 +4943,8 @@ potion.hbm_stability=Stability potion.hbm_taint=Tainted potion.hbm_telekinesis=! ! ! +precass.recycle=Recycling of %s + purex.recycle=Reprocessing of %s purex.schrab=Schrabidium extraction from %s