fugorg contraption

This commit is contained in:
Boblet 2025-11-26 15:50:45 +01:00
parent a4a08aa9cd
commit 4322892abb
11 changed files with 333 additions and 33 deletions

View File

@ -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;
}
}

View File

@ -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);
}
}

View File

@ -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<GenericRecipe> {
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));
}
}

View File

@ -287,6 +287,10 @@ public abstract class GenericRecipes<T extends GenericRecipe> extends Serializab
public List<ChanceOutput> 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(); }

View File

@ -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());

View File

@ -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

View File

@ -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");

View File

@ -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);

View File

@ -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); }

View File

@ -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

View File

@ -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