mirror of
https://github.com/HbmMods/Hbm-s-Nuclear-Tech-GIT.git
synced 2026-01-25 10:32:49 +00:00
more boxes per box
This commit is contained in:
parent
521b040f63
commit
77de64c7b6
@ -17,7 +17,7 @@ public class ContainerCraneBoxer extends Container {
|
|||||||
|
|
||||||
for(int i = 0; i < 3; i++) {
|
for(int i = 0; i < 3; i++) {
|
||||||
for(int j = 0; j < 7; j++) {
|
for(int j = 0; j < 7; j++) {
|
||||||
this.addSlotToContainer(new Slot(inserter, j + i * 3, 8 + j * 18, 17 + i * 18));
|
this.addSlotToContainer(new Slot(inserter, j + i * 7, 8 + j * 18, 17 + i * 18));
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@ -3,24 +3,26 @@ package com.hbm.inventory.gui;
|
|||||||
import org.lwjgl.opengl.GL11;
|
import org.lwjgl.opengl.GL11;
|
||||||
|
|
||||||
import com.hbm.inventory.container.ContainerCraneBoxer;
|
import com.hbm.inventory.container.ContainerCraneBoxer;
|
||||||
import com.hbm.inventory.container.ContainerCraneExtractor;
|
|
||||||
import com.hbm.lib.RefStrings;
|
import com.hbm.lib.RefStrings;
|
||||||
|
import com.hbm.packet.NBTControlPacket;
|
||||||
|
import com.hbm.packet.PacketDispatcher;
|
||||||
import com.hbm.tileentity.network.TileEntityCraneBoxer;
|
import com.hbm.tileentity.network.TileEntityCraneBoxer;
|
||||||
import com.hbm.tileentity.network.TileEntityCraneExtractor;
|
|
||||||
|
|
||||||
import net.minecraft.client.Minecraft;
|
import net.minecraft.client.Minecraft;
|
||||||
|
import net.minecraft.client.audio.PositionedSoundRecord;
|
||||||
import net.minecraft.client.resources.I18n;
|
import net.minecraft.client.resources.I18n;
|
||||||
import net.minecraft.entity.player.InventoryPlayer;
|
import net.minecraft.entity.player.InventoryPlayer;
|
||||||
|
import net.minecraft.nbt.NBTTagCompound;
|
||||||
import net.minecraft.util.ResourceLocation;
|
import net.minecraft.util.ResourceLocation;
|
||||||
|
|
||||||
public class GUICraneBoxer extends GuiInfoContainer {
|
public class GUICraneBoxer extends GuiInfoContainer {
|
||||||
|
|
||||||
private static ResourceLocation texture = new ResourceLocation(RefStrings.MODID + ":textures/gui/storage/gui_crane_boxer.png");
|
private static ResourceLocation texture = new ResourceLocation(RefStrings.MODID + ":textures/gui/storage/gui_crane_boxer.png");
|
||||||
private TileEntityCraneBoxer inserter;
|
private TileEntityCraneBoxer boxer;
|
||||||
|
|
||||||
public GUICraneBoxer(InventoryPlayer invPlayer, TileEntityCraneBoxer tedf) {
|
public GUICraneBoxer(InventoryPlayer invPlayer, TileEntityCraneBoxer tedf) {
|
||||||
super(new ContainerCraneBoxer(invPlayer, tedf));
|
super(new ContainerCraneBoxer(invPlayer, tedf));
|
||||||
inserter = tedf;
|
boxer = tedf;
|
||||||
|
|
||||||
this.xSize = 176;
|
this.xSize = 176;
|
||||||
this.ySize = 185;
|
this.ySize = 185;
|
||||||
@ -34,11 +36,19 @@ public class GUICraneBoxer extends GuiInfoContainer {
|
|||||||
@Override
|
@Override
|
||||||
protected void mouseClicked(int x, int y, int i) {
|
protected void mouseClicked(int x, int y, int i) {
|
||||||
super.mouseClicked(x, y, i);
|
super.mouseClicked(x, y, i);
|
||||||
|
|
||||||
|
if(guiLeft + 151 <= x && guiLeft + 151 + 18 > x && guiTop + 34 < y && guiTop + 34 + 18 >= y) {
|
||||||
|
|
||||||
|
mc.getSoundHandler().playSound(PositionedSoundRecord.func_147674_a(new ResourceLocation("gui.button.press"), 1.0F));
|
||||||
|
NBTTagCompound data = new NBTTagCompound();
|
||||||
|
data.setBoolean("toggle", true);
|
||||||
|
PacketDispatcher.wrapper.sendToServer(new NBTControlPacket(data, boxer.xCoord, boxer.yCoord, boxer.zCoord));
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
protected void drawGuiContainerForegroundLayer(int i, int j) {
|
protected void drawGuiContainerForegroundLayer(int i, int j) {
|
||||||
String name = this.inserter.hasCustomInventoryName() ? this.inserter.getInventoryName() : I18n.format(this.inserter.getInventoryName());
|
String name = this.boxer.hasCustomInventoryName() ? this.boxer.getInventoryName() : I18n.format(this.boxer.getInventoryName());
|
||||||
this.fontRendererObj.drawString(name, this.xSize / 2 - this.fontRendererObj.getStringWidth(name) / 2, 6, 4210752);
|
this.fontRendererObj.drawString(name, this.xSize / 2 - this.fontRendererObj.getStringWidth(name) / 2, 6, 4210752);
|
||||||
this.fontRendererObj.drawString(I18n.format("container.inventory"), 8, this.ySize - 96 + 2, 4210752);
|
this.fontRendererObj.drawString(I18n.format("container.inventory"), 8, this.ySize - 96 + 2, 4210752);
|
||||||
}
|
}
|
||||||
@ -48,5 +58,7 @@ public class GUICraneBoxer extends GuiInfoContainer {
|
|||||||
GL11.glColor4f(1.0F, 1.0F, 1.0F, 1.0F);
|
GL11.glColor4f(1.0F, 1.0F, 1.0F, 1.0F);
|
||||||
Minecraft.getMinecraft().getTextureManager().bindTexture(texture);
|
Minecraft.getMinecraft().getTextureManager().bindTexture(texture);
|
||||||
drawTexturedModalRect(guiLeft, guiTop, 0, 0, xSize, ySize);
|
drawTexturedModalRect(guiLeft, guiTop, 0, 0, xSize, ySize);
|
||||||
|
|
||||||
|
drawTexturedModalRect(guiLeft + 151, guiTop + 34, 176, boxer.mode * 18, 18, 18);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@ -1,7 +1,5 @@
|
|||||||
package com.hbm.render.entity.item;
|
package com.hbm.render.entity.item;
|
||||||
|
|
||||||
import java.util.Random;
|
|
||||||
|
|
||||||
import org.lwjgl.opengl.GL11;
|
import org.lwjgl.opengl.GL11;
|
||||||
|
|
||||||
import com.hbm.blocks.ModBlocks;
|
import com.hbm.blocks.ModBlocks;
|
||||||
@ -22,10 +20,7 @@ public class RenderMovingPackage extends Render {
|
|||||||
public void doRender(Entity entity, double x, double y, double z, float f1, float f2) {
|
public void doRender(Entity entity, double x, double y, double z, float f1, float f2) {
|
||||||
|
|
||||||
GL11.glPushMatrix();
|
GL11.glPushMatrix();
|
||||||
GL11.glTranslated(x, y, z);
|
GL11.glTranslated(x, y - 0.0125, z);
|
||||||
|
|
||||||
Random rand = new Random(entity.getEntityId());
|
|
||||||
GL11.glTranslated(0, rand.nextDouble() * 0.0625, 0);
|
|
||||||
|
|
||||||
if(this.dummy == null) {
|
if(this.dummy == null) {
|
||||||
this.dummy = new ItemStack(ModBlocks.crate);
|
this.dummy = new ItemStack(ModBlocks.crate);
|
||||||
@ -35,7 +30,7 @@ public class RenderMovingPackage extends Render {
|
|||||||
dummy.hoverStart = 0.0F;
|
dummy.hoverStart = 0.0F;
|
||||||
|
|
||||||
RenderItem.renderInFrame = true;
|
RenderItem.renderInFrame = true;
|
||||||
double scale = 8D / 6D;
|
double scale = 2;
|
||||||
GL11.glScaled(scale, scale, scale);
|
GL11.glScaled(scale, scale, scale);
|
||||||
RenderManager.instance.renderEntityWithPosYaw(dummy, 0.0D, 0.0D, 0.0D, 0.0F, 0.0F);
|
RenderManager.instance.renderEntityWithPosYaw(dummy, 0.0D, 0.0D, 0.0D, 0.0F, 0.0F);
|
||||||
RenderItem.renderInFrame = false;
|
RenderItem.renderInFrame = false;
|
||||||
|
|||||||
@ -1,14 +1,13 @@
|
|||||||
package com.hbm.tileentity.network;
|
package com.hbm.tileentity.network;
|
||||||
|
|
||||||
import com.hbm.entity.item.EntityMovingItem;
|
|
||||||
import com.hbm.entity.item.EntityMovingPackage;
|
import com.hbm.entity.item.EntityMovingPackage;
|
||||||
|
import com.hbm.interfaces.IControlReceiver;
|
||||||
import com.hbm.inventory.container.ContainerCraneBoxer;
|
import com.hbm.inventory.container.ContainerCraneBoxer;
|
||||||
import com.hbm.inventory.gui.GUICraneBoxer;
|
import com.hbm.inventory.gui.GUICraneBoxer;
|
||||||
import com.hbm.tileentity.IGUIProvider;
|
import com.hbm.tileentity.IGUIProvider;
|
||||||
import com.hbm.tileentity.TileEntityMachineBase;
|
import com.hbm.tileentity.TileEntityMachineBase;
|
||||||
|
|
||||||
import api.hbm.conveyor.IConveyorBelt;
|
import api.hbm.conveyor.IConveyorBelt;
|
||||||
import api.hbm.ntl.StorageManifest;
|
|
||||||
import cpw.mods.fml.relauncher.Side;
|
import cpw.mods.fml.relauncher.Side;
|
||||||
import cpw.mods.fml.relauncher.SideOnly;
|
import cpw.mods.fml.relauncher.SideOnly;
|
||||||
import net.minecraft.block.Block;
|
import net.minecraft.block.Block;
|
||||||
@ -16,11 +15,12 @@ import net.minecraft.client.gui.GuiScreen;
|
|||||||
import net.minecraft.entity.player.EntityPlayer;
|
import net.minecraft.entity.player.EntityPlayer;
|
||||||
import net.minecraft.inventory.Container;
|
import net.minecraft.inventory.Container;
|
||||||
import net.minecraft.item.ItemStack;
|
import net.minecraft.item.ItemStack;
|
||||||
|
import net.minecraft.nbt.NBTTagCompound;
|
||||||
import net.minecraft.util.Vec3;
|
import net.minecraft.util.Vec3;
|
||||||
import net.minecraft.world.World;
|
import net.minecraft.world.World;
|
||||||
import net.minecraftforge.common.util.ForgeDirection;
|
import net.minecraftforge.common.util.ForgeDirection;
|
||||||
|
|
||||||
public class TileEntityCraneBoxer extends TileEntityMachineBase implements IGUIProvider {
|
public class TileEntityCraneBoxer extends TileEntityMachineBase implements IGUIProvider, IControlReceiver {
|
||||||
|
|
||||||
public byte mode = 0;
|
public byte mode = 0;
|
||||||
public static final byte MODE_4 = 0;
|
public static final byte MODE_4 = 0;
|
||||||
@ -41,63 +41,74 @@ public class TileEntityCraneBoxer extends TileEntityMachineBase implements IGUIP
|
|||||||
@Override
|
@Override
|
||||||
public void updateEntity() {
|
public void updateEntity() {
|
||||||
|
|
||||||
if(!worldObj.isRemote && mode != MODE_REDSTONE && worldObj.getTotalWorldTime() % 20 == 0) {
|
if(!worldObj.isRemote) {
|
||||||
int pack = 1;
|
|
||||||
|
|
||||||
switch(mode) {
|
if(mode != MODE_REDSTONE && worldObj.getTotalWorldTime() % 20 == 0) {
|
||||||
case MODE_4: pack = 4; break;
|
int pack = 1;
|
||||||
case MODE_8: pack = 8; break;
|
|
||||||
case MODE_16: pack = 16; break;
|
switch(mode) {
|
||||||
}
|
case MODE_4: pack = 4; break;
|
||||||
|
case MODE_8: pack = 8; break;
|
||||||
int fullStacks = 0;
|
case MODE_16: pack = 16; break;
|
||||||
|
|
||||||
// NO!
|
|
||||||
/*StorageManifest manifest = new StorageManifest(); //i wrote some of this for a feature that i scrapped so why not make proper use of it?
|
|
||||||
|
|
||||||
for(int i = 0; i < slots.length; i++) {
|
|
||||||
if(slots[i] != null) {
|
|
||||||
manifest.writeStack(slots[i]);
|
|
||||||
}
|
}
|
||||||
}*/
|
|
||||||
|
|
||||||
for(int i = 0; i < slots.length; i++) {
|
|
||||||
|
|
||||||
if(slots[i] != null && slots[i].stackSize == slots[i].getMaxStackSize()) {
|
int fullStacks = 0;
|
||||||
fullStacks++;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
ForgeDirection dir = ForgeDirection.getOrientation(this.getBlockMetadata());
|
|
||||||
Block b = worldObj.getBlock(xCoord + dir.offsetX, yCoord + dir.offsetY, zCoord + dir.offsetZ);
|
|
||||||
IConveyorBelt belt = null;
|
|
||||||
|
|
||||||
if(b instanceof IConveyorBelt) {
|
|
||||||
belt = (IConveyorBelt) b;
|
|
||||||
}
|
|
||||||
|
|
||||||
if(belt != null && fullStacks >= pack) {
|
|
||||||
|
|
||||||
ItemStack[] box = new ItemStack[pack];
|
// NO!
|
||||||
|
/*StorageManifest manifest = new StorageManifest(); //i wrote some of this for a feature that i scrapped so why not make proper use of it?
|
||||||
|
|
||||||
for(int i = 0; i < slots.length && pack > 0; i++) {
|
for(int i = 0; i < slots.length; i++) {
|
||||||
|
if(slots[i] != null) {
|
||||||
|
manifest.writeStack(slots[i]);
|
||||||
|
}
|
||||||
|
}*/
|
||||||
|
|
||||||
|
for(int i = 0; i < slots.length; i++) {
|
||||||
|
|
||||||
if(slots[i] != null && slots[i].stackSize == slots[i].getMaxStackSize()) {
|
if(slots[i] != null && slots[i].stackSize == slots[i].getMaxStackSize()) {
|
||||||
pack--;
|
fullStacks++;
|
||||||
box[pack] = slots[i].copy();
|
|
||||||
slots[i] = null;
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
EntityMovingPackage moving = new EntityMovingPackage(worldObj);
|
ForgeDirection dir = ForgeDirection.getOrientation(this.getBlockMetadata()).getOpposite();
|
||||||
Vec3 pos = Vec3.createVectorHelper(xCoord + 0.5 + dir.offsetX * 0.55, yCoord + 0.5 + dir.offsetY * 0.55, zCoord + 0.5 + dir.offsetZ * 0.55);
|
Block b = worldObj.getBlock(xCoord + dir.offsetX, yCoord + dir.offsetY, zCoord + dir.offsetZ);
|
||||||
Vec3 snap = belt.getClosestSnappingPosition(worldObj, xCoord + dir.offsetX, yCoord + dir.offsetY, zCoord + dir.offsetZ, pos);
|
IConveyorBelt belt = null;
|
||||||
moving.setPosition(snap.xCoord, snap.yCoord, snap.zCoord);
|
|
||||||
moving.setItemStacks(box);
|
if(b instanceof IConveyorBelt) {
|
||||||
worldObj.spawnEntityInWorld(moving);
|
belt = (IConveyorBelt) b;
|
||||||
|
}
|
||||||
|
|
||||||
|
if(belt != null && fullStacks >= pack) {
|
||||||
|
|
||||||
|
ItemStack[] box = new ItemStack[pack];
|
||||||
|
|
||||||
|
for(int i = 0; i < slots.length && pack > 0; i++) {
|
||||||
|
|
||||||
|
if(slots[i] != null && slots[i].stackSize == slots[i].getMaxStackSize()) {
|
||||||
|
pack--;
|
||||||
|
box[pack] = slots[i].copy();
|
||||||
|
slots[i] = null;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
EntityMovingPackage moving = new EntityMovingPackage(worldObj);
|
||||||
|
Vec3 pos = Vec3.createVectorHelper(xCoord + 0.5 + dir.offsetX * 0.55, yCoord + 0.5 + dir.offsetY * 0.55, zCoord + 0.5 + dir.offsetZ * 0.55);
|
||||||
|
Vec3 snap = belt.getClosestSnappingPosition(worldObj, xCoord + dir.offsetX, yCoord + dir.offsetY, zCoord + dir.offsetZ, pos);
|
||||||
|
moving.setPosition(snap.xCoord, snap.yCoord, snap.zCoord);
|
||||||
|
moving.setItemStacks(box);
|
||||||
|
worldObj.spawnEntityInWorld(moving);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
NBTTagCompound data = new NBTTagCompound();
|
||||||
|
data.setByte("mode", mode);
|
||||||
|
this.networkPack(data, 15);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public void networkUnpack(NBTTagCompound nbt) {
|
||||||
|
this.mode = nbt.getByte("mode");
|
||||||
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public int[] getAccessibleSlotsFromSide(int p_94128_1_) {
|
public int[] getAccessibleSlotsFromSide(int p_94128_1_) {
|
||||||
@ -119,4 +130,16 @@ public class TileEntityCraneBoxer extends TileEntityMachineBase implements IGUIP
|
|||||||
public GuiScreen provideGUI(int ID, EntityPlayer player, World world, int x, int y, int z) {
|
public GuiScreen provideGUI(int ID, EntityPlayer player, World world, int x, int y, int z) {
|
||||||
return new GUICraneBoxer(player.inventory, this);
|
return new GUICraneBoxer(player.inventory, this);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public boolean hasPermission(EntityPlayer player) {
|
||||||
|
return Vec3.createVectorHelper(xCoord - player.posX, yCoord - player.posY, zCoord - player.posZ).lengthVector() < 20;
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void receiveControl(NBTTagCompound data) {
|
||||||
|
if(data.hasKey("toggle")) {
|
||||||
|
this.mode = (byte) ((this.mode + 1) % 4);
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user