135 lines
4.4 KiB
Java
135 lines
4.4 KiB
Java
package storagecraft.gui;
|
|
|
|
import net.minecraft.client.gui.inventory.GuiContainer;
|
|
import net.minecraft.inventory.Slot;
|
|
import net.minecraft.item.ItemStack;
|
|
import net.minecraft.util.ResourceLocation;
|
|
import net.minecraft.util.StatCollector;
|
|
import org.lwjgl.input.Keyboard;
|
|
import org.lwjgl.opengl.GL11;
|
|
import storagecraft.SC;
|
|
import storagecraft.inventory.ContainerGrid;
|
|
import storagecraft.network.MessagePullFromStorage;
|
|
import storagecraft.network.MessagePushToStorage;
|
|
import storagecraft.storage.StorageItem;
|
|
import storagecraft.tile.TileController;
|
|
import storagecraft.tile.TileGrid;
|
|
|
|
public class GuiGrid extends GuiContainer {
|
|
public static final ResourceLocation GRID_RESOURCE = new ResourceLocation("storagecraft:textures/gui/grid.png");
|
|
|
|
private ContainerGrid container;
|
|
private TileGrid grid;
|
|
|
|
public GuiGrid(ContainerGrid container, TileGrid grid) {
|
|
super(container);
|
|
|
|
this.container = container;
|
|
this.grid = grid;
|
|
|
|
this.xSize = 176;
|
|
this.ySize = 190;
|
|
}
|
|
|
|
@Override
|
|
protected void drawGuiContainerBackgroundLayer(float renderPartialTicks, int mouseX, int mouseY) {
|
|
GL11.glColor3f(1.0F, 1.0F, 1.0F);
|
|
|
|
mc.getTextureManager().bindTexture(GRID_RESOURCE);
|
|
|
|
int x = (this.width - xSize) / 2;
|
|
int y = (this.height - ySize) / 2;
|
|
|
|
drawTexturedModalRect(x, y, 0, 0, xSize, ySize);
|
|
|
|
fontRendererObj.drawString(StatCollector.translateToLocal("gui.storagecraft:grid"), x + 7, y + 7, 4210752);
|
|
fontRendererObj.drawString(StatCollector.translateToLocal("container.inventory"), x + 7, y + 96, 4210752);
|
|
|
|
int xx = getGridXStart();
|
|
int yy = getGridYStart();
|
|
|
|
for (int i = 0; i < 9 * 4; ++i) {
|
|
ItemStack stack = null;
|
|
|
|
if (grid.isConnected() && i < grid.getController().getStorage().all().size()) {
|
|
StorageItem item = grid.getController().getStorage().all().get(i);
|
|
|
|
stack = new ItemStack(item.getType(), item.getQuantity(), item.getMeta());
|
|
|
|
itemRender.renderItemAndEffectIntoGUI(fontRendererObj, mc.getTextureManager(), stack, xx, yy);
|
|
itemRender.renderItemOverlayIntoGUI(fontRendererObj, mc.getTextureManager(), stack, xx, yy);
|
|
}
|
|
|
|
if ((mouseX >= xx && mouseX <= xx + 16 && mouseY >= yy && mouseY <= yy + 16) || !grid.isConnected()) {
|
|
int color = grid.isConnected() ? -2130706433 : 0xFF5B5B5B;
|
|
|
|
GL11.glDisable(GL11.GL_LIGHTING);
|
|
GL11.glDisable(GL11.GL_DEPTH_TEST);
|
|
GL11.glColorMask(true, true, true, false);
|
|
drawGradientRect(xx, yy, xx + 16, yy + 16, color, color);
|
|
GL11.glColorMask(true, true, true, true);
|
|
GL11.glEnable(GL11.GL_LIGHTING);
|
|
GL11.glEnable(GL11.GL_DEPTH_TEST);
|
|
|
|
if (stack != null) {
|
|
renderToolTip(stack, mouseX, mouseY);
|
|
}
|
|
}
|
|
|
|
xx += 18;
|
|
|
|
if ((i + 1) % 9 == 0) {
|
|
xx = getGridXStart();
|
|
yy += 18;
|
|
}
|
|
}
|
|
}
|
|
|
|
private int getGridXStart() {
|
|
return ((this.width - xSize) / 2) + 8;
|
|
}
|
|
|
|
private int getGridXEnd() {
|
|
return getGridXStart() + (18 * 9);
|
|
}
|
|
|
|
private int getGridYStart() {
|
|
return ((this.height - ySize) / 2) + 20;
|
|
}
|
|
|
|
private int getGridYEnd() {
|
|
return getGridYStart() + (18 * 4);
|
|
}
|
|
|
|
@Override
|
|
public void mouseClicked(int mouseX, int mouseY, int clickedButton) {
|
|
super.mouseClicked(mouseX, mouseY, clickedButton);
|
|
|
|
if (grid.isConnected()) {
|
|
TileController controller = grid.getController();
|
|
|
|
if (mouseX >= getGridXStart() && mouseX <= getGridXEnd() && mouseY >= getGridYStart() && mouseY <= getGridYEnd()) {
|
|
if (container.getPlayer().inventory.getItemStack() != null) {
|
|
SC.NETWORK.sendToServer(new MessagePushToStorage(controller.xCoord, controller.yCoord, controller.zCoord, -1));
|
|
} else {
|
|
int slotX = ((mouseX - getGridXStart()) / 18) + 1;
|
|
int slotY = ((mouseY - getGridYStart()) / 18) + 1;
|
|
int slotId = (slotX * slotY) - 1;
|
|
|
|
SC.NETWORK.sendToServer(new MessagePullFromStorage(controller.xCoord, controller.yCoord, controller.zCoord, slotId, clickedButton == 1, Keyboard.isKeyDown(Keyboard.KEY_LSHIFT)));
|
|
}
|
|
} else {
|
|
for (int i = 0; i < container.inventorySlots.size(); ++i) {
|
|
Slot slot = (Slot) container.inventorySlots.get(i);
|
|
|
|
if (func_146978_c(((Slot) slot).xDisplayPosition, ((Slot) slot).yDisplayPosition, 16, 16, mouseX, mouseY)) {
|
|
if (Keyboard.isKeyDown(Keyboard.KEY_LSHIFT)) {
|
|
SC.NETWORK.sendToServer(new MessagePushToStorage(controller.xCoord, controller.yCoord, controller.zCoord, ((Slot) slot).slotNumber));
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|