improve container gui
This commit is contained in:
parent
448d54c441
commit
c8d4b8a48e
21 changed files with 226 additions and 296 deletions
|
@ -47,15 +47,6 @@ public abstract class Gui {
|
||||||
}
|
}
|
||||||
|
|
||||||
public void onGuiClosed() {
|
public void onGuiClosed() {
|
||||||
}
|
|
||||||
|
|
||||||
public void mouseClicked(int mouseX, int mouseY, int mouseButton) {
|
|
||||||
}
|
|
||||||
|
|
||||||
public void mouseReleased(int mouseX, int mouseY, int state) {
|
|
||||||
}
|
|
||||||
|
|
||||||
public void mouseDragged(int mouseX, int mouseY) {
|
|
||||||
}
|
}
|
||||||
|
|
||||||
public void drawPost() {
|
public void drawPost() {
|
||||||
|
@ -71,10 +62,6 @@ public abstract class Gui {
|
||||||
}
|
}
|
||||||
|
|
||||||
public void renameItem() {
|
public void renameItem() {
|
||||||
}
|
|
||||||
|
|
||||||
public void drawBackground() {
|
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
public Element clicked(int x, int y) {
|
public Element clicked(int x, int y) {
|
||||||
|
@ -235,7 +222,6 @@ public abstract class Gui {
|
||||||
|
|
||||||
public void render() {
|
public void render() {
|
||||||
this.drawMainBackground();
|
this.drawMainBackground();
|
||||||
this.drawBackground();
|
|
||||||
if(this.gm.fbX != 0 && this.gm.fbY != 0)
|
if(this.gm.fbX != 0 && this.gm.fbY != 0)
|
||||||
this.draw();
|
this.draw();
|
||||||
GlState.bindTexture(0);
|
GlState.bindTexture(0);
|
||||||
|
|
|
@ -31,6 +31,7 @@ import common.entity.npc.Attribute;
|
||||||
import common.init.ItemRegistry;
|
import common.init.ItemRegistry;
|
||||||
import common.inventory.Container;
|
import common.inventory.Container;
|
||||||
import common.inventory.Slot;
|
import common.inventory.Slot;
|
||||||
|
import common.inventory.SlotCommon;
|
||||||
import common.item.CheatTab;
|
import common.item.CheatTab;
|
||||||
import common.item.ItemStack;
|
import common.item.ItemStack;
|
||||||
import common.packet.CPacketAction;
|
import common.packet.CPacketAction;
|
||||||
|
@ -62,11 +63,10 @@ public abstract class GuiContainer extends Gui
|
||||||
private static CheatTab selectedTab = CheatTab.ALL;
|
private static CheatTab selectedTab = CheatTab.ALL;
|
||||||
|
|
||||||
protected RenderItem itemRender;
|
protected RenderItem itemRender;
|
||||||
protected final int xSize;
|
|
||||||
protected final int ySize;
|
|
||||||
public Container inventorySlots;
|
public Container inventorySlots;
|
||||||
private Slot theSlot;
|
private Slot theSlot;
|
||||||
protected final List<Overlay> drawnOverlays = Lists.<Overlay>newArrayList();
|
protected final List<Overlay> drawnOverlays = Lists.<Overlay>newArrayList();
|
||||||
|
private final InventoryButton[] invButtons;
|
||||||
private boolean ignoreMouseUp;
|
private boolean ignoreMouseUp;
|
||||||
private long lastClickTime;
|
private long lastClickTime;
|
||||||
private Slot lastClickSlot;
|
private Slot lastClickSlot;
|
||||||
|
@ -74,9 +74,6 @@ public abstract class GuiContainer extends Gui
|
||||||
private boolean doubleClick;
|
private boolean doubleClick;
|
||||||
private ItemStack shiftClickedSlot;
|
private ItemStack shiftClickedSlot;
|
||||||
|
|
||||||
protected int container_x;
|
|
||||||
protected int container_y;
|
|
||||||
|
|
||||||
private int hover_x;
|
private int hover_x;
|
||||||
private int hover_y;
|
private int hover_y;
|
||||||
private String tooltip;
|
private String tooltip;
|
||||||
|
@ -195,110 +192,178 @@ public abstract class GuiContainer extends Gui
|
||||||
}
|
}
|
||||||
|
|
||||||
public Label label(String text, int x, int y) {
|
public Label label(String text, int x, int y) {
|
||||||
return this.add(new FontLabel(x + this.container_x, y + this.container_y, 300, Font.LARGE, text, true));
|
return this.add(new FontLabel(x, y, 300, Font.LARGE, text, true));
|
||||||
}
|
}
|
||||||
|
|
||||||
public DisplayLabel display(String text, int x, int y, int w, int lines) {
|
public DisplayLabel display(String text, int x, int y, int w, int lines) {
|
||||||
return this.add(new DisplayLabel(x + this.container_x, y + this.container_y, w, lines, Font.LARGE, text));
|
return this.add(new DisplayLabel(x, y, w, lines, Font.LARGE, text));
|
||||||
}
|
}
|
||||||
|
|
||||||
public Bar bar(int x, int y, int w, int h) {
|
public Bar bar(int x, int y, int w, int h) {
|
||||||
return this.add(new Bar(x + this.container_x, y + this.container_y, w, h, Font.LARGE));
|
return this.add(new Bar(x, y, w, h, Font.LARGE));
|
||||||
}
|
|
||||||
|
|
||||||
public void rect(int x, int y, int width, int height, int color) {
|
|
||||||
Drawing.drawRect(this.container_x + x, this.container_y + y, width, height, 0xff000000 | color);
|
|
||||||
}
|
|
||||||
|
|
||||||
public void grad(int x, int y, int width, int height, int top, int bottom, int topleft, int btmright) {
|
|
||||||
Drawing.drawGradient(this.container_x + x, this.container_y + y, width, height, 0xff000000 | top, 0xff000000 | bottom, 0xff000000 | topleft, 0xff000000 | btmright);
|
|
||||||
}
|
|
||||||
|
|
||||||
public InventoryButton slot(int x, int y, int w, int h, Slot slot) {
|
|
||||||
return this.add(new InventoryButton(this.container_x + x, this.container_y + y, w, h, slot));
|
|
||||||
}
|
}
|
||||||
|
|
||||||
public InventoryButton slot(int x, int y, int w, int h) {
|
public InventoryButton slot(int x, int y, int w, int h) {
|
||||||
return this.slot(x, y, w, h, null);
|
return this.add(new InventoryButton(x, y, w, h, null, 1, 1));
|
||||||
}
|
}
|
||||||
|
|
||||||
public ActButton button(int x, int y, int w, int h, ButtonCallback callback, String text) {
|
public ActButton button(int x, int y, int w, int h, ButtonCallback callback, String text) {
|
||||||
return this.add(new ActButton(this.container_x + x, this.container_y + y, w, h, callback, text));
|
return this.add(new ActButton(x, y, w, h, callback, text));
|
||||||
}
|
}
|
||||||
|
|
||||||
public void mouse(Button btn, int x, int y, boolean ctrl, boolean shift) {
|
public void mouse(Button btn, int x, int y, boolean ctrl, boolean shift) {
|
||||||
super.mouse(btn, x, y, ctrl, shift);
|
super.mouse(btn, x, y, ctrl, shift);
|
||||||
this.mouseClicked(x - this.container_x, y - this.container_y, btn.ordinal()); //TODO: enum
|
this.mouseClicked(x, y, btn.ordinal()); //TODO: enum
|
||||||
}
|
}
|
||||||
|
|
||||||
public void mouserel(Button btn, int x, int y) {
|
public void mouserel(Button btn, int x, int y) {
|
||||||
super.mouserel(btn, x, y);
|
super.mouserel(btn, x, y);
|
||||||
this.mouseReleased(x - this.container_x, y - this.container_y, btn.ordinal()); //TODO: enum
|
this.mouseReleased(x, y, btn.ordinal()); //TODO: enum
|
||||||
}
|
|
||||||
|
|
||||||
public void drag(int x, int y) {
|
|
||||||
super.drag(x, y);
|
|
||||||
if(Button.MOUSE_LEFT.isDown() || Button.MOUSE_RIGHT.isDown() || Button.MOUSE_MIDDLE.isDown())
|
|
||||||
this.mouseDragged(x - this.container_x, y - this.container_y);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
public GuiContainer(Container container)
|
public GuiContainer(Container container)
|
||||||
{
|
{
|
||||||
this.inventorySlots = container;
|
this.inventorySlots = container;
|
||||||
this.ignoreMouseUp = true;
|
this.ignoreMouseUp = true;
|
||||||
this.xSize = (container.getInventoryOffsetX() - 2) * 2 + 36 * Container.INVENTORY_WIDTH;
|
this.invButtons = new InventoryButton[container.inventorySlots.size()];
|
||||||
this.ySize = container.getInventoryOffsetY() + 52 + 36 * ((Equipment.INVENTORY_SLOTS + Container.INVENTORY_WIDTH - 1) / Container.INVENTORY_WIDTH);
|
}
|
||||||
|
|
||||||
|
public int getControlAreaWidth() {
|
||||||
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
public void init(int width, int height) {
|
public void init(int width, int height) {
|
||||||
this.itemRender = this.gm.getRenderItem();
|
this.itemRender = this.gm.getRenderItem();
|
||||||
this.tooltip = null;
|
this.tooltip = null;
|
||||||
this.cheatStack = null;
|
this.cheatStack = null;
|
||||||
this.container_x = (width - this.xSize) / 2;
|
this.gm.player.openContainer = this.inventorySlots;
|
||||||
this.container_y = (height - this.ySize) / 2;
|
|
||||||
this.initGui();
|
boolean invLeft = false;
|
||||||
|
boolean invRight = false;
|
||||||
|
int leftSlots = 0;
|
||||||
|
int rightSlots = 0;
|
||||||
|
for(int z = 0; z < this.inventorySlots.getPlayerInventoryOffset() - Equipment.ARMOR_SLOTS; z++) {
|
||||||
|
Slot slot = this.inventorySlots.inventorySlots.get(z);
|
||||||
|
if(slot.slotRight)
|
||||||
|
++rightSlots;
|
||||||
|
else
|
||||||
|
++leftSlots;
|
||||||
|
if(slot instanceof SlotCommon) {
|
||||||
|
if(slot.slotRight)
|
||||||
|
invRight = true;
|
||||||
|
else
|
||||||
|
invLeft = true;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
boolean center = leftSlots == 0 || rightSlots == 0;
|
||||||
|
|
||||||
|
int area = this.getControlAreaWidth();
|
||||||
|
int side = this.gm.itemCheat ? 450 : 0;
|
||||||
|
int gap = 2;
|
||||||
|
int border = 2;
|
||||||
|
int frame = 16;
|
||||||
|
int header = 20;
|
||||||
|
|
||||||
|
int invWidth = (this.gm.fbX - frame - border - border - side - frame) / 32;
|
||||||
|
int invHeight = ((Equipment.INVENTORY_SLOTS + invWidth - 1) / invWidth);
|
||||||
|
int playerWidth = border + invWidth * 32 + border;
|
||||||
|
int playerHeight = header + border + 32 + border + gap + border + invHeight * 32 + border;
|
||||||
|
int playerX = frame;
|
||||||
|
int playerY = this.gm.fbY - frame - playerHeight;
|
||||||
|
int playerX2 = playerX + playerWidth;
|
||||||
|
int playerY2 = playerY + playerHeight;
|
||||||
|
|
||||||
|
int slotsWidth = center ? (this.gm.fbX - frame - border - (invLeft ? border : 0) - area - side - frame) / (invLeft ? 32 : border + 32 + border + gap) : (this.gm.fbX - frame - border - (invLeft ? border : 0) - area - border - (invRight ? border : 0) - side - frame) / ((invLeft ? 32 : border + 32 + border + gap) + (invRight ? 32 : border + 32 + border + gap));
|
||||||
|
|
||||||
|
int leftSlotsHeight = ((leftSlots + slotsWidth - 1) / slotsWidth);
|
||||||
|
int leftWidth = border + slotsWidth * (invLeft ? 32 : border + 32 + border) + (invLeft ? 0 : (slotsWidth - 1) * gap) + (invLeft ? border : 0);
|
||||||
|
int leftHeight = header + border + leftSlotsHeight * (invLeft ? 32 : border + 32 + border) + (invLeft ? 0 : (leftSlotsHeight - 1) * gap) + (invLeft ? border : 0);
|
||||||
|
int leftX = frame;
|
||||||
|
int leftY = frame;
|
||||||
|
int leftX2 = leftX + leftWidth;
|
||||||
|
int leftY2 = leftY + leftHeight;
|
||||||
|
|
||||||
|
int rightSlotsHeight = ((rightSlots + slotsWidth - 1) / slotsWidth);
|
||||||
|
int rightWidth = border + slotsWidth * (invRight ? 32 : border + 32 + border) + (invRight ? 0 : (slotsWidth - 1) * gap) + (invRight ? border : 0);
|
||||||
|
int rightHeight = header + border + rightSlotsHeight * (invRight ? 32 : border + 32 + border) + (invRight ? 0 : (rightSlotsHeight - 1) * gap) + (invRight ? border : 0);
|
||||||
|
int rightX = this.gm.fbX - frame - side - rightWidth;
|
||||||
|
int rightY = frame;
|
||||||
|
int rightX2 = rightX + rightWidth;
|
||||||
|
int rightY2 = rightY + rightHeight;
|
||||||
|
|
||||||
|
int leftIndex = 0;
|
||||||
|
int rightIndex = 0;
|
||||||
|
|
||||||
|
for(int z = 0; z < this.invButtons.length; z++) {
|
||||||
|
Slot slot = this.inventorySlots.inventorySlots.get(z);
|
||||||
|
int x;
|
||||||
|
int y;
|
||||||
|
int w = 1;
|
||||||
|
int h = 1;
|
||||||
|
if(slot.slotNumber >= this.inventorySlots.getPlayerInventoryOffset()) {
|
||||||
|
int n = slot.slotNumber - this.inventorySlots.getPlayerInventoryOffset();
|
||||||
|
x = playerX + border + (n % invWidth) * 32;
|
||||||
|
y = playerY + header + border + 32 + border + gap + border + (n / invWidth) * 32;
|
||||||
|
w = invWidth;
|
||||||
|
h = invHeight;
|
||||||
|
}
|
||||||
|
else if(slot.slotNumber >= this.inventorySlots.getPlayerInventoryOffset() - Equipment.ARMOR_SLOTS) {
|
||||||
|
int n = slot.slotNumber - (this.inventorySlots.getPlayerInventoryOffset() - Equipment.ARMOR_SLOTS);
|
||||||
|
x = playerX + border + n * (32 + border + gap + border);
|
||||||
|
y = playerY + header + border;
|
||||||
|
}
|
||||||
|
else if(slot.slotRight) {
|
||||||
|
int n = rightIndex++;
|
||||||
|
x = rightX + border + ((rightSlots < slotsWidth ? n + slotsWidth - rightSlots : n) % slotsWidth) * (32 + (invRight ? 0 : border + gap + border));
|
||||||
|
y = rightY + header + border + (n / slotsWidth) * (32 + (invRight ? 0 : border + gap + border));
|
||||||
|
if(invRight) {
|
||||||
|
w = slotsWidth;
|
||||||
|
h = rightSlotsHeight;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
else {
|
||||||
|
int n = leftIndex++;
|
||||||
|
x = leftX + border + (n % slotsWidth) * (32 + (invLeft ? 0 : border + gap + border));
|
||||||
|
y = leftY + header + border + (n / slotsWidth) * (32 + (invLeft ? 0 : border + gap + border));
|
||||||
|
if(invLeft) {
|
||||||
|
w = slotsWidth;
|
||||||
|
h = leftSlotsHeight;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
this.invButtons[z] = this.add(new InventoryButton(x, y, 32, 32, slot, w, h));
|
||||||
|
}
|
||||||
|
|
||||||
|
if(this.gm.itemCheat) {
|
||||||
|
int x2 = Math.max(playerX2, rightX2);
|
||||||
|
this.cheatX = x2 + 4;
|
||||||
|
this.cheatY = 32;
|
||||||
|
this.cheatWidth = Math.max((this.gm.fbX - x2 - 32) / 36, 1);
|
||||||
|
this.cheatHeight = Math.max((this.gm.fbY - 40 * ((CheatTab.values().length + (this.cheatWidth - 1)) / this.cheatWidth) - 92) / 36, 1);
|
||||||
|
}
|
||||||
this.addButtons();
|
this.addButtons();
|
||||||
this.addElements();
|
this.addElements();
|
||||||
this.label("Inventar", this.inventorySlots.getInventoryOffsetX(), this.inventorySlots.getInventoryOffsetY() - 4);
|
this.label("Inventar", playerX, playerY + 18);
|
||||||
this.inventoryLabel = this.label("", this.inventorySlots.getInventoryOffsetX() + 36 * Container.INVENTORY_WIDTH - 180, this.inventorySlots.getInventoryOffsetY() - 4);
|
this.inventoryLabel = this.label("", playerX2 - 180, playerY + 18);
|
||||||
}
|
}
|
||||||
|
|
||||||
public void hover(String text, int x, int y) {
|
public void hover(String text, int x, int y) {
|
||||||
this.tooltip = text;
|
this.tooltip = text;
|
||||||
this.hover_x = x + this.container_x + 16;
|
this.hover_x = x + 16;
|
||||||
this.hover_y = y + this.container_y + 16;
|
this.hover_y = y + 16;
|
||||||
}
|
}
|
||||||
|
|
||||||
public String getTitle() {
|
public String getTitle() {
|
||||||
return "Inventar";
|
return "Inventar";
|
||||||
}
|
}
|
||||||
|
|
||||||
public void initGui()
|
|
||||||
{
|
|
||||||
this.gm.player.openContainer = this.inventorySlots;
|
|
||||||
if(this.gm.itemCheat) {
|
|
||||||
this.cheatX = this.container_x + this.xSize + 4;
|
|
||||||
this.cheatY = 32;
|
|
||||||
this.cheatWidth = Math.max((this.gm.fbX - this.container_x - this.xSize - 32) / 36, 1);
|
|
||||||
this.cheatHeight = Math.max((this.gm.fbY - 40 * ((CheatTab.values().length + (this.cheatWidth - 1)) / this.cheatWidth) - 92) / 36, 1);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
public void addButtons() {
|
public void addButtons() {
|
||||||
if(this.inventorySlots != null) {
|
|
||||||
for (int i1 = 0; i1 < this.inventorySlots.inventorySlots.size(); ++i1) {
|
|
||||||
Slot slot = this.inventorySlots.inventorySlots.get(i1);
|
|
||||||
if(slot.canDraw())
|
|
||||||
this.slot(slot.xDisplayPosition - 2, slot.yDisplayPosition - 2, 36, 36, slot);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
if(this.gm.itemCheat) {
|
if(this.gm.itemCheat) {
|
||||||
this.cheatLabel = this.add(new FontLabel(this.cheatX, this.cheatY, this.cheatWidth * 36, Font.SMALL, "", true));
|
this.cheatLabel = this.add(new FontLabel(this.cheatX, this.cheatY, this.cheatWidth * 36, Font.SMALL, "", true));
|
||||||
// this.cheatDesc = this.add(new DisplayLabel(this.cheatX, this.cheatY + this.cheatHeight * 18 + 20 * ((CheatTab.values().length + (this.cheatWidth - 1)) / this.cheatWidth) + 4 + 18, this.cheatWidth * 18, 4, Font.SMALL, "Vorsicht: Schummeln\nwird mit Keule bestraft!!\n(Halte Strg beim Klick\nfür vollen Stapel)"));
|
// this.cheatDesc = this.add(new DisplayLabel(this.cheatX, this.cheatY + this.cheatHeight * 18 + 20 * ((CheatTab.values().length + (this.cheatWidth - 1)) / this.cheatWidth) + 4 + 18, this.cheatWidth * 18, 4, Font.SMALL, "Vorsicht: Schummeln\nwird mit Keule bestraft!!\n(Halte Strg beim Klick\nfür vollen Stapel)"));
|
||||||
this.cheatSearch = this.add(new Field(this.cheatX, this.cheatY + this.cheatHeight * 36 + 40 * ((CheatTab.values().length + (this.cheatWidth - 1)) / this.cheatWidth) + 8, this.cheatWidth * 36 + 20, 0, 128, null, ""));
|
this.cheatSearch = this.add(new Field(this.cheatX, this.cheatY + this.cheatHeight * 36 + 40 * ((CheatTab.values().length + (this.cheatWidth - 1)) / this.cheatWidth) + 8, this.cheatWidth * 36 + 20, 0, 128, null, ""));
|
||||||
this.cheatLast = "";
|
this.cheatLast = "";
|
||||||
for(CheatTab tab : CheatTab.values()) {
|
for(CheatTab tab : CheatTab.values()) {
|
||||||
this.add(new InventoryButton(this.cheatX + 36 * (tab.getIndex() % this.cheatWidth), this.cheatY + this.cheatHeight * 36 + 8 + 40 * (tab.getIndex() / this.cheatWidth), 36, 36, null));
|
this.add(new InventoryButton(this.cheatX + 36 * (tab.getIndex() % this.cheatWidth), this.cheatY + this.cheatHeight * 36 + 8 + 40 * (tab.getIndex() / this.cheatWidth), 36, 36, null, 1, 1));
|
||||||
}
|
}
|
||||||
this.setCurrentTab(selectedTab);
|
this.setCurrentTab(selectedTab);
|
||||||
}
|
}
|
||||||
|
@ -307,14 +372,14 @@ public abstract class GuiContainer extends Gui
|
||||||
public abstract void addElements();
|
public abstract void addElements();
|
||||||
|
|
||||||
protected void drawSlots(int mouseX, int mouseY) {
|
protected void drawSlots(int mouseX, int mouseY) {
|
||||||
for (int i1 = 0; i1 < this.inventorySlots.inventorySlots.size(); ++i1)
|
for (int i1 = 0; i1 < this.invButtons.length; ++i1)
|
||||||
{
|
{
|
||||||
Slot slot = (Slot)this.inventorySlots.inventorySlots.get(i1);
|
InventoryButton slot = this.invButtons[i1];
|
||||||
this.drawSlot(slot);
|
this.drawSlot(slot);
|
||||||
|
|
||||||
if (this.isMouseOverSlot(slot, mouseX, mouseY) && slot.canHover())
|
if (this.isMouseOverSlot(slot, mouseX, mouseY) && slot.getSlot().canHover())
|
||||||
{
|
{
|
||||||
this.theSlot = slot;
|
this.theSlot = slot.getSlot();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -462,11 +527,13 @@ public abstract class GuiContainer extends Gui
|
||||||
|
|
||||||
private void drawItemStack(ItemStack stack, int x, int y, String altText)
|
private void drawItemStack(ItemStack stack, int x, int y, String altText)
|
||||||
{
|
{
|
||||||
|
GL15.glPushMatrix();
|
||||||
GL15.glTranslatef(0.0F, 0.0F, 32.0F);
|
GL15.glTranslatef(0.0F, 0.0F, 32.0F);
|
||||||
this.itemRender.zLevel = 200.0F;
|
this.itemRender.zLevel = 200.0F;
|
||||||
this.itemRender.renderItemAndEffectIntoGUI(stack, this.container_x + x, this.container_y + y);
|
this.itemRender.renderItemAndEffectIntoGUI(stack, x, y);
|
||||||
this.drawnOverlays.add(new Overlay(stack, x, y, altText));
|
this.drawnOverlays.add(new Overlay(stack, x, y, altText));
|
||||||
this.itemRender.zLevel = 0.0F;
|
this.itemRender.zLevel = 0.0F;
|
||||||
|
GL15.glPopMatrix();
|
||||||
}
|
}
|
||||||
|
|
||||||
protected void renderToolTip(ItemStack stack, int x, int y) {
|
protected void renderToolTip(ItemStack stack, int x, int y) {
|
||||||
|
@ -501,19 +568,15 @@ public abstract class GuiContainer extends Gui
|
||||||
}
|
}
|
||||||
|
|
||||||
public void drawPost() {
|
public void drawPost() {
|
||||||
GL15.glPushMatrix();
|
this.drawScreen(this.gm.mouseX, this.gm.mouseY);
|
||||||
// GL15.glTranslatef((float)((this.gm.fbX - this.xSize * SCALE) / 2), (float)((this.gm.fbY - this.ySize * SCALE) / 2), 0.0f);
|
|
||||||
// GL15.glScalef(2.0f, 2.0f, 2.0f);
|
|
||||||
this.drawScreen(this.gm.mouseX - this.container_x, this.gm.mouseY - this.container_y);
|
|
||||||
GL15.glPopMatrix();
|
|
||||||
ItemRenderer.disableStandardItemLighting();
|
ItemRenderer.disableStandardItemLighting();
|
||||||
}
|
}
|
||||||
|
|
||||||
private void drawSlot(Slot slotIn)
|
private void drawSlot(InventoryButton btn)
|
||||||
{
|
{
|
||||||
int i = slotIn.xDisplayPosition;
|
int i = btn.getX();
|
||||||
int j = slotIn.yDisplayPosition;
|
int j = btn.getY();
|
||||||
ItemStack itemstack = slotIn.getStack();
|
ItemStack itemstack = btn.getSlot().getStack();
|
||||||
boolean flag = false;
|
boolean flag = false;
|
||||||
ItemStack itemstack1 = this.gm.player.getMouseItem();
|
ItemStack itemstack1 = this.gm.player.getMouseItem();
|
||||||
String s = null;
|
String s = null;
|
||||||
|
@ -521,7 +584,7 @@ public abstract class GuiContainer extends Gui
|
||||||
this.itemRender.zLevel = 100.0F;
|
this.itemRender.zLevel = 100.0F;
|
||||||
|
|
||||||
GlState.enableDepth();
|
GlState.enableDepth();
|
||||||
this.itemRender.renderItemAndEffectIntoGUI(itemstack, this.container_x + i, this.container_y + j);
|
this.itemRender.renderItemAndEffectIntoGUI(itemstack, i, j);
|
||||||
this.drawnOverlays.add(new Overlay(itemstack, i, j, s));
|
this.drawnOverlays.add(new Overlay(itemstack, i, j, s));
|
||||||
|
|
||||||
this.itemRender.zLevel = 0.0F;
|
this.itemRender.zLevel = 0.0F;
|
||||||
|
@ -529,20 +592,20 @@ public abstract class GuiContainer extends Gui
|
||||||
|
|
||||||
private Slot getSlotAtPosition(int x, int y)
|
private Slot getSlotAtPosition(int x, int y)
|
||||||
{
|
{
|
||||||
for (int i = 0; i < this.inventorySlots.inventorySlots.size(); ++i)
|
for (int i = 0; i < this.invButtons.length; ++i)
|
||||||
{
|
{
|
||||||
Slot slot = (Slot)this.inventorySlots.inventorySlots.get(i);
|
InventoryButton btn = this.invButtons[i];
|
||||||
|
|
||||||
if (this.isMouseOverSlot(slot, x, y))
|
if (this.isMouseOverSlot(btn, x, y))
|
||||||
{
|
{
|
||||||
return slot;
|
return btn.getSlot();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
return null;
|
return null;
|
||||||
}
|
}
|
||||||
|
|
||||||
public void mouseClicked(int mouseX, int mouseY, int mouseButton)
|
private void mouseClicked(int mouseX, int mouseY, int mouseButton)
|
||||||
{
|
{
|
||||||
if(this.gm == null)
|
if(this.gm == null)
|
||||||
return;
|
return;
|
||||||
|
@ -580,24 +643,11 @@ public abstract class GuiContainer extends Gui
|
||||||
|
|
||||||
if (mouseButton == 0 || mouseButton == 1)
|
if (mouseButton == 0 || mouseButton == 1)
|
||||||
{
|
{
|
||||||
boolean flag1 = mouseX < 0 || mouseY < 0 || mouseX >= this.xSize || mouseY >= this.ySize;
|
|
||||||
int l = -1;
|
|
||||||
|
|
||||||
if (slot != null)
|
if (slot != null)
|
||||||
{
|
|
||||||
l = slot.slotNumber;
|
|
||||||
}
|
|
||||||
|
|
||||||
if (flag1)
|
|
||||||
{
|
|
||||||
l = -999;
|
|
||||||
}
|
|
||||||
|
|
||||||
if (l != -1)
|
|
||||||
{
|
{
|
||||||
if (this.gm.player.getMouseItem() == null)
|
if (this.gm.player.getMouseItem() == null)
|
||||||
{
|
{
|
||||||
boolean flag2 = l != -999 && this.gm.shift();
|
boolean flag2 = this.gm.shift();
|
||||||
int i1 = 0;
|
int i1 = 0;
|
||||||
|
|
||||||
if (flag2)
|
if (flag2)
|
||||||
|
@ -605,12 +655,8 @@ public abstract class GuiContainer extends Gui
|
||||||
this.shiftClickedSlot = slot != null && slot.getHasStack() ? slot.getStack() : null;
|
this.shiftClickedSlot = slot != null && slot.getHasStack() ? slot.getStack() : null;
|
||||||
i1 = 1;
|
i1 = 1;
|
||||||
}
|
}
|
||||||
else if (l == -999)
|
|
||||||
{
|
|
||||||
i1 = 4;
|
|
||||||
}
|
|
||||||
|
|
||||||
this.handleMouseClick(slot, l, mouseButton, i1);
|
this.handleMouseClick(slot, slot.slotNumber, mouseButton, i1);
|
||||||
|
|
||||||
this.ignoreMouseUp = true;
|
this.ignoreMouseUp = true;
|
||||||
}
|
}
|
||||||
|
@ -626,27 +672,11 @@ public abstract class GuiContainer extends Gui
|
||||||
this.lastClickButton = mouseButton;
|
this.lastClickButton = mouseButton;
|
||||||
}
|
}
|
||||||
|
|
||||||
public void mouseDragged(int mouseX, int mouseY)
|
private void mouseReleased(int mouseX, int mouseY, int state)
|
||||||
{
|
|
||||||
}
|
|
||||||
|
|
||||||
public void mouseReleased(int mouseX, int mouseY, int state)
|
|
||||||
{
|
{
|
||||||
if(this.gm == null || this.cheatStack != null)
|
if(this.gm == null || this.cheatStack != null)
|
||||||
return;
|
return;
|
||||||
Slot slot = this.getSlotAtPosition(mouseX, mouseY);
|
Slot slot = this.getSlotAtPosition(mouseX, mouseY);
|
||||||
boolean flag = mouseX < 0 || mouseY < 0 || mouseX >= this.xSize || mouseY >= this.ySize;
|
|
||||||
int k = -1;
|
|
||||||
|
|
||||||
if (slot != null)
|
|
||||||
{
|
|
||||||
k = slot.slotNumber;
|
|
||||||
}
|
|
||||||
|
|
||||||
if (flag)
|
|
||||||
{
|
|
||||||
k = -999;
|
|
||||||
}
|
|
||||||
|
|
||||||
if (this.doubleClick && slot != null && state == 0 && this.inventorySlots.canMergeSlot((ItemStack)null, slot))
|
if (this.doubleClick && slot != null && state == 0 && this.inventorySlots.canMergeSlot((ItemStack)null, slot))
|
||||||
{
|
{
|
||||||
|
@ -665,7 +695,7 @@ public abstract class GuiContainer extends Gui
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
this.handleMouseClick(slot, k, state, 6);
|
this.handleMouseClick(slot, slot.slotNumber, state, 6);
|
||||||
}
|
}
|
||||||
|
|
||||||
this.doubleClick = false;
|
this.doubleClick = false;
|
||||||
|
@ -681,14 +711,14 @@ public abstract class GuiContainer extends Gui
|
||||||
|
|
||||||
if (this.gm.player.getMouseItem() != null)
|
if (this.gm.player.getMouseItem() != null)
|
||||||
{
|
{
|
||||||
boolean flag1 = k != -999 && this.gm.shift();
|
boolean flag1 = this.gm.shift();
|
||||||
|
|
||||||
if (flag1)
|
if (flag1)
|
||||||
{
|
{
|
||||||
this.shiftClickedSlot = slot != null && slot.getHasStack() ? slot.getStack() : null;
|
this.shiftClickedSlot = slot != null && slot.getHasStack() ? slot.getStack() : null;
|
||||||
}
|
}
|
||||||
|
|
||||||
this.handleMouseClick(slot, k, state, flag1 ? 1 : 0);
|
this.handleMouseClick(slot, slot != null ? slot.slotNumber : -1, state, flag1 ? 1 : 0);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -698,9 +728,9 @@ public abstract class GuiContainer extends Gui
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
private boolean isMouseOverSlot(Slot slotIn, int mouseX, int mouseY)
|
private boolean isMouseOverSlot(InventoryButton btn, int mouseX, int mouseY)
|
||||||
{
|
{
|
||||||
return this.isPointInRegion(slotIn.xDisplayPosition, slotIn.yDisplayPosition, 32, 32, mouseX, mouseY);
|
return this.isPointInRegion(btn.getX() + 2, btn.getY() + 2, 32, 32, mouseX, mouseY);
|
||||||
}
|
}
|
||||||
|
|
||||||
protected boolean isPointInRegion(int left, int top, int right, int bottom, int pointX, int pointY)
|
protected boolean isPointInRegion(int left, int top, int right, int bottom, int pointX, int pointY)
|
||||||
|
@ -766,7 +796,7 @@ public abstract class GuiContainer extends Gui
|
||||||
|
|
||||||
public void renderItemOverlayIntoGUI(ItemStack stack, int xPosition, int yPosition, String text)
|
public void renderItemOverlayIntoGUI(ItemStack stack, int xPosition, int yPosition, String text)
|
||||||
{
|
{
|
||||||
renderItemOverlay(stack, this.container_x + xPosition, this.container_y + yPosition, text, 0, 0);
|
renderItemOverlay(stack, xPosition, yPosition, text, 0, 0);
|
||||||
}
|
}
|
||||||
|
|
||||||
public static void renderItemOverlay(ItemStack stack, int xPosition, int yPosition, String text, int bar2, int bar2max)
|
public static void renderItemOverlay(ItemStack stack, int xPosition, int yPosition, String text, int bar2, int bar2max)
|
||||||
|
@ -811,8 +841,9 @@ public abstract class GuiContainer extends Gui
|
||||||
Drawing.drawRect(x, y, width, height, 0xff000000 | (red << 16) | (green << 8) | blue);
|
Drawing.drawRect(x, y, width, height, 0xff000000 | (red << 16) | (green << 8) | blue);
|
||||||
}
|
}
|
||||||
|
|
||||||
public void drawBackground() {
|
public void drawMainBackground() {
|
||||||
Drawing.drawGradientBorder(this.container_x, this.container_y, this.xSize, this.ySize, Util.mulColor(this.gm.style.fill_top, 0.8f), Util.mulColor(this.gm.style.fill_btm, 0.8f), 0xff000000, Util.mulColor(this.gm.style.brdr_top, 0.8f), Util.mulColor(this.gm.style.brdr_btm, 0.8f));
|
super.drawMainBackground();
|
||||||
|
Drawing.drawGradientBorder(0, 0, this.gm.fbX, this.gm.fbY, Util.mulColor(this.gm.style.fill_top, 0.8f), Util.mulColor(this.gm.style.fill_btm, 0.8f), 0xff000000, Util.mulColor(this.gm.style.brdr_top, 0.8f), Util.mulColor(this.gm.style.brdr_btm, 0.8f));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
|
@ -17,4 +17,8 @@ public class GuiCrafting extends GuiContainer {
|
||||||
public void addElements() {
|
public void addElements() {
|
||||||
this.label(this.type.getDisplay(), 16, 32);
|
this.label(this.type.getDisplay(), 16, 32);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public int getControlAreaWidth() {
|
||||||
|
return 300;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -26,6 +26,10 @@ public class GuiDevice extends GuiContainer {
|
||||||
this.tileInv = tile;
|
this.tileInv = tile;
|
||||||
this.tile = tile;
|
this.tile = tile;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public int getControlAreaWidth() {
|
||||||
|
return 350;
|
||||||
|
}
|
||||||
|
|
||||||
public void updateScreen() {
|
public void updateScreen() {
|
||||||
super.updateScreen();
|
super.updateScreen();
|
||||||
|
|
|
@ -29,6 +29,10 @@ public class GuiEnchant extends GuiContainer implements ButtonCallback {
|
||||||
super(new ContainerEnchantment(inv, world));
|
super(new ContainerEnchantment(inv, world));
|
||||||
this.enchantment = (ContainerEnchantment)this.inventorySlots;
|
this.enchantment = (ContainerEnchantment)this.inventorySlots;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public int getControlAreaWidth() {
|
||||||
|
return 250;
|
||||||
|
}
|
||||||
|
|
||||||
public void updateScreen() {
|
public void updateScreen() {
|
||||||
super.updateScreen();
|
super.updateScreen();
|
||||||
|
|
|
@ -12,6 +12,10 @@ public class GuiEntity extends GuiContainer {
|
||||||
super(new ContainerEntityInventory(player, entityInv, entity));
|
super(new ContainerEntityInventory(player, entityInv, entity));
|
||||||
this.title = entity.getName();
|
this.title = entity.getName();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public int getControlAreaWidth() {
|
||||||
|
return 16;
|
||||||
|
}
|
||||||
|
|
||||||
public void addElements() {
|
public void addElements() {
|
||||||
this.label(this.title, 16, 32);
|
this.label(this.title, 16, 32);
|
||||||
|
|
|
@ -27,6 +27,10 @@ public class GuiMerchant extends GuiContainer implements ButtonCallback {
|
||||||
super(new ContainerMerchant(inv, null, world));
|
super(new ContainerMerchant(inv, null, world));
|
||||||
this.title = entity.getName();
|
this.title = entity.getName();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public int getControlAreaWidth() {
|
||||||
|
return 380;
|
||||||
|
}
|
||||||
|
|
||||||
public void addButtons() {
|
public void addButtons() {
|
||||||
super.addButtons();
|
super.addButtons();
|
||||||
|
|
|
@ -16,6 +16,10 @@ public class GuiRepair extends GuiContainer {
|
||||||
this.playerInv = inv;
|
this.playerInv = inv;
|
||||||
this.anvil = (ContainerRepair)this.inventorySlots;
|
this.anvil = (ContainerRepair)this.inventorySlots;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public int getControlAreaWidth() {
|
||||||
|
return 250;
|
||||||
|
}
|
||||||
|
|
||||||
public void updateScreen() {
|
public void updateScreen() {
|
||||||
super.updateScreen();
|
super.updateScreen();
|
||||||
|
|
|
@ -130,7 +130,7 @@ public abstract class GuiList<T extends ListEntry> extends Gui
|
||||||
int mouseYIn = this.gm.mouseY;
|
int mouseYIn = this.gm.mouseY;
|
||||||
this.mouseX = mouseXIn;
|
this.mouseX = mouseXIn;
|
||||||
this.mouseY = mouseYIn;
|
this.mouseY = mouseYIn;
|
||||||
this.drawBackground();
|
// this.drawBackground();
|
||||||
this.bindAmountScrolled();
|
this.bindAmountScrolled();
|
||||||
|
|
||||||
Drawing.drawScaled(this.gm, Gui.BACKGROUND, 0, this.top, this.gm.fbX, this.bottom - this.top, 0xff7f7f7f);
|
Drawing.drawScaled(this.gm, Gui.BACKGROUND, 0, this.top, this.gm.fbX, this.bottom - this.top, 0xff7f7f7f);
|
||||||
|
|
|
@ -1,7 +1,6 @@
|
||||||
package client.gui.element;
|
package client.gui.element;
|
||||||
|
|
||||||
import client.Client;
|
import client.Client;
|
||||||
import client.gui.Gui;
|
|
||||||
import client.gui.container.GuiContainer;
|
import client.gui.container.GuiContainer;
|
||||||
import client.renderer.Drawing;
|
import client.renderer.Drawing;
|
||||||
import common.inventory.Slot;
|
import common.inventory.Slot;
|
||||||
|
@ -11,23 +10,34 @@ public class InventoryButton extends Element {
|
||||||
private final Slot slot;
|
private final Slot slot;
|
||||||
private final String texture;
|
private final String texture;
|
||||||
private final boolean background;
|
private final boolean background;
|
||||||
|
private final boolean hoverable;
|
||||||
|
private final int bgX;
|
||||||
|
private final int bgY;
|
||||||
private final int bgW;
|
private final int bgW;
|
||||||
private final int bgH;
|
private final int bgH;
|
||||||
|
|
||||||
public InventoryButton(int x, int y, int w, int h, Slot slot) {
|
public InventoryButton(int x, int y, int w, int h, Slot slot, int slotsX, int slotsY) {
|
||||||
super(x, y, w, h, null);
|
super(x, y, w, h, null);
|
||||||
this.texture = slot == null || slot.getTexture() == null || slot.getTexture().isEmpty() ? null : "textures/items/icon_" + slot.getTexture() + ".png";
|
this.texture = slot == null || slot.getTexture() == null || slot.getTexture().isEmpty() ? null : "textures/items/icon_" + slot.getTexture() + ".png";
|
||||||
this.background = slot == null || slot.getTexture() != null;
|
this.background = slot == null || (slot.getTexture() != null && slot.canDraw());
|
||||||
|
this.hoverable = slot == null || slot.canDraw();
|
||||||
this.slot = slot;
|
this.slot = slot;
|
||||||
this.bgW = slot == null ? w : slot.getBackgroundWidth() * 36;
|
this.bgX = slot == null ? 0 : -2;
|
||||||
this.bgH = slot == null ? h : slot.getBackgroundHeight() * 36;
|
this.bgY = slot == null ? 0 : -2;
|
||||||
|
this.bgW = slot == null ? w : 2 + slotsX * 32 + 2;
|
||||||
|
this.bgH = slot == null ? h : 2 + slotsY * 32 + 2;
|
||||||
|
}
|
||||||
|
|
||||||
|
public Slot getSlot() {
|
||||||
|
return this.slot;
|
||||||
}
|
}
|
||||||
|
|
||||||
protected void drawBackground() {
|
protected void drawBackground() {
|
||||||
if(this.background)
|
if(this.background) {
|
||||||
drawButton(this.gm, this.pos_x, this.pos_y, this.bgW, this.bgH);
|
drawButton(this.gm, this.pos_x + this.bgX, this.pos_y + this.bgY, this.bgW, this.bgH);
|
||||||
if(this.texture != null && !this.slot.getHasStack())
|
if(this.texture != null && !this.slot.getHasStack())
|
||||||
Drawing.drawTexturedRect(this.gm, this.texture, 32, 32, this.pos_x + 2, this.pos_y + 2, 0, 0, this.size_x - 4, this.size_y - 4);
|
Drawing.drawTexturedRect(this.gm, this.texture, 32, 32, this.pos_x, this.pos_y, 0, 0, this.size_x, this.size_y);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
protected void drawForeground(int x1, int y1, int x2, int y2) {
|
protected void drawForeground(int x1, int y1, int x2, int y2) {
|
||||||
|
@ -38,14 +48,13 @@ public class InventoryButton extends Element {
|
||||||
}
|
}
|
||||||
|
|
||||||
public boolean canHover() {
|
public boolean canHover() {
|
||||||
if(this.slot == null)
|
if(this.hoverable) {
|
||||||
return true;
|
if(this.slot == null)
|
||||||
ItemStack hover = ((GuiContainer)this.gui).getHoverItem(this.slot);
|
return true;
|
||||||
return hover == null ? this.slot.getHasStack() : this.slot.isItemValid(hover);
|
ItemStack hover = ((GuiContainer)this.gui).getHoverItem(this.slot);
|
||||||
}
|
return hover == null ? this.slot.getHasStack() : this.slot.isItemValid(hover);
|
||||||
|
}
|
||||||
public void drawHover() {
|
return false;
|
||||||
Drawing.drawRect(this.pos_x + 2, this.pos_y + 2, 32, 32, Gui.HOVER_COLOR);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
public boolean canClick() {
|
public boolean canClick() {
|
||||||
|
|
|
@ -1124,23 +1124,8 @@ public class ClientPlayer implements IClientPlayer
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
// boolean flag = false;
|
if (packetIn.getWindowId() == 0 && packetIn.getSlot() >= 0 && packetIn.getSlot() < Equipment.ARMOR_SLOTS + Equipment.INVENTORY_SLOTS)
|
||||||
//
|
|
||||||
// if (this.gameController.openGui instanceof GuiCheat)
|
|
||||||
// {
|
|
||||||
//// GuiCheat guicontainercreative = (GuiCheat)this.gameController.openGui;
|
|
||||||
// flag = true; // guicontainercreative.getSelectedTabIndex() != CheatTab.tabInventory.getIndex();
|
|
||||||
// }
|
|
||||||
|
|
||||||
if (packetIn.getWindowId() == 0 && packetIn.getSlot() >= Equipment.ARMOR_SLOTS && packetIn.getSlot() < Equipment.ARMOR_SLOTS + Equipment.INVENTORY_SLOTS)
|
|
||||||
{
|
{
|
||||||
ItemStack itemstack = entityplayer.inventoryContainer.getSlot(packetIn.getSlot()).getStack();
|
|
||||||
|
|
||||||
// if (packetIn.getStack() != null && (itemstack == null || itemstack.stackSize < packetIn.getStack().stackSize))
|
|
||||||
// {
|
|
||||||
// packetIn.getStack().animationsToGo = 5;
|
|
||||||
// }
|
|
||||||
|
|
||||||
entityplayer.inventoryContainer.putStackInSlot(packetIn.getSlot(), packetIn.getStack());
|
entityplayer.inventoryContainer.putStackInSlot(packetIn.getSlot(), packetIn.getStack());
|
||||||
}
|
}
|
||||||
else if (packetIn.getWindowId() == entityplayer.openContainer.windowId) // && (packetIn.getWindowId() != 0 || !flag))
|
else if (packetIn.getWindowId() == entityplayer.openContainer.windowId) // && (packetIn.getWindowId() != 0 || !flag))
|
||||||
|
|
|
@ -14,8 +14,6 @@ import common.util.Equipment;
|
||||||
|
|
||||||
public abstract class Container
|
public abstract class Container
|
||||||
{
|
{
|
||||||
public static final int INVENTORY_WIDTH = 16;
|
|
||||||
|
|
||||||
public List<ItemStack> inventoryItemStacks = Lists.<ItemStack>newArrayList();
|
public List<ItemStack> inventoryItemStacks = Lists.<ItemStack>newArrayList();
|
||||||
public List<Slot> inventorySlots = Lists.<Slot>newArrayList();
|
public List<Slot> inventorySlots = Lists.<Slot>newArrayList();
|
||||||
public int windowId;
|
public int windowId;
|
||||||
|
@ -23,25 +21,15 @@ public abstract class Container
|
||||||
protected int offset;
|
protected int offset;
|
||||||
protected List<IPlayer> crafters = Lists.<IPlayer>newArrayList();
|
protected List<IPlayer> crafters = Lists.<IPlayer>newArrayList();
|
||||||
private Set<EntityNPC> playerList = Sets.<EntityNPC>newHashSet();
|
private Set<EntityNPC> playerList = Sets.<EntityNPC>newHashSet();
|
||||||
|
|
||||||
public int getInventoryOffsetX() {
|
|
||||||
return 16;
|
|
||||||
}
|
|
||||||
|
|
||||||
public int getInventoryOffsetY() {
|
|
||||||
return 168;
|
|
||||||
}
|
|
||||||
|
|
||||||
public final int getPlayerInventoryOffset() {
|
public final int getPlayerInventoryOffset() {
|
||||||
return this.offset;
|
return this.offset;
|
||||||
}
|
}
|
||||||
|
|
||||||
protected void addPlayerSlots(final EntityNPC player) {
|
protected void addPlayerSlots(final EntityNPC player) {
|
||||||
int x = this.getInventoryOffsetX();
|
|
||||||
int y = this.getInventoryOffsetY();
|
|
||||||
for(Equipment slot : Equipment.ARMOR) {
|
for(Equipment slot : Equipment.ARMOR) {
|
||||||
final Equipment type = slot;
|
final Equipment type = slot;
|
||||||
this.addSlotToContainer(new Slot(player, Equipment.INVENTORY_SLOTS + slot.getIndex(), x + slot.getIndex() * 36, y) {
|
this.addSlotToContainer(new Slot(player, Equipment.INVENTORY_SLOTS + slot.getIndex(), false) {
|
||||||
public boolean canStackItems() {
|
public boolean canStackItems() {
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
@ -62,7 +50,7 @@ public abstract class Container
|
||||||
this.offset = this.inventorySlots.size();
|
this.offset = this.inventorySlots.size();
|
||||||
List<SlotCommon> list = Lists.newArrayList();
|
List<SlotCommon> list = Lists.newArrayList();
|
||||||
for(int z = 0; z < Equipment.INVENTORY_SLOTS; ++z) {
|
for(int z = 0; z < Equipment.INVENTORY_SLOTS; ++z) {
|
||||||
this.addSlotToContainer(new SlotCommon(list, player, z, x + (z % INVENTORY_WIDTH) * 36, y + 40 + (z / INVENTORY_WIDTH) * 36));
|
this.addSlotToContainer(new SlotCommon(list, player, z, true));
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -28,20 +28,12 @@ public class ContainerChest extends Container
|
||||||
{
|
{
|
||||||
for (int k = 0; k < this.width; ++k)
|
for (int k = 0; k < this.width; ++k)
|
||||||
{
|
{
|
||||||
this.addSlotToContainer(new SlotCommon(list, chest, k + j * this.width, 16 + k * 36, 36 + j * 36));
|
this.addSlotToContainer(new SlotCommon(list, chest, k + j * this.width, false));
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
this.addPlayerSlots(player);
|
this.addPlayerSlots(player);
|
||||||
}
|
}
|
||||||
|
|
||||||
public int getInventoryOffsetX() {
|
|
||||||
return super.getInventoryOffsetX() + (this.width < INVENTORY_WIDTH ? 0 : (this.width - INVENTORY_WIDTH) * 36 / 2);
|
|
||||||
}
|
|
||||||
|
|
||||||
public int getInventoryOffsetY() {
|
|
||||||
return 170 + (this.height - 3) * 36;
|
|
||||||
}
|
|
||||||
|
|
||||||
protected boolean canMergeStacks() {
|
protected boolean canMergeStacks() {
|
||||||
return true;
|
return true;
|
||||||
|
|
|
@ -47,7 +47,7 @@ public class ContainerEnchantment extends Container
|
||||||
this.world = worldIn;
|
this.world = worldIn;
|
||||||
this.position = pos;
|
this.position = pos;
|
||||||
this.seed = playerInv.getEnchSeed();
|
this.seed = playerInv.getEnchSeed();
|
||||||
this.addSlotToContainer(new Slot(this.table, 0, 50, 94)
|
this.addSlotToContainer(new Slot(this.table, 0, false)
|
||||||
{
|
{
|
||||||
public boolean isItemValid(ItemStack stack)
|
public boolean isItemValid(ItemStack stack)
|
||||||
{
|
{
|
||||||
|
|
|
@ -20,14 +20,14 @@ public class ContainerEntityInventory extends Container
|
||||||
this.entity = entity;
|
this.entity = entity;
|
||||||
if(this.entity instanceof EntityHorse) {
|
if(this.entity instanceof EntityHorse) {
|
||||||
final EntityHorse horse = (EntityHorse)this.entity;
|
final EntityHorse horse = (EntityHorse)this.entity;
|
||||||
this.addSlotToContainer(new Slot(entityInv, 0, 16, 36)
|
this.addSlotToContainer(new Slot(entityInv, 0, false)
|
||||||
{
|
{
|
||||||
public boolean isItemValid(ItemStack stack)
|
public boolean isItemValid(ItemStack stack)
|
||||||
{
|
{
|
||||||
return super.isItemValid(stack) && stack.getItem() == Items.saddle && !this.getHasStack();
|
return super.isItemValid(stack) && stack.getItem() == Items.saddle && !this.getHasStack();
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
this.addSlotToContainer(new Slot(entityInv, 1, 16, 72)
|
this.addSlotToContainer(new Slot(entityInv, 1, false)
|
||||||
{
|
{
|
||||||
public boolean isItemValid(ItemStack stack)
|
public boolean isItemValid(ItemStack stack)
|
||||||
{
|
{
|
||||||
|
@ -45,7 +45,7 @@ public class ContainerEntityInventory extends Container
|
||||||
{
|
{
|
||||||
for (int l = 0; l < 5; ++l)
|
for (int l = 0; l < 5; ++l)
|
||||||
{
|
{
|
||||||
this.addSlotToContainer(new SlotCommon(list, entityInv, 2 + l + k * 5, 160 + l * 36, 36 + k * 36));
|
this.addSlotToContainer(new SlotCommon(list, entityInv, 2 + l + k * 5, true));
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -15,9 +15,9 @@ public class ContainerMerchant extends Container
|
||||||
private int traded;
|
private int traded;
|
||||||
// private final EntityVillager theMerchant;
|
// private final EntityVillager theMerchant;
|
||||||
|
|
||||||
public SlotMerchantResult(EntityNPC player, InventoryMerchant merchantInventory, int slotIndex, int xPosition, int yPosition)
|
public SlotMerchantResult(EntityNPC player, InventoryMerchant merchantInventory, int slotIndex)
|
||||||
{
|
{
|
||||||
super(merchantInventory, slotIndex, xPosition, yPosition);
|
super(merchantInventory, slotIndex, true);
|
||||||
this.thePlayer = player;
|
this.thePlayer = player;
|
||||||
// this.theMerchant = merchant;
|
// this.theMerchant = merchant;
|
||||||
this.theMerchantInventory = merchantInventory;
|
this.theMerchantInventory = merchantInventory;
|
||||||
|
@ -134,17 +134,17 @@ public class ContainerMerchant extends Container
|
||||||
this.theMerchant = merchant;
|
this.theMerchant = merchant;
|
||||||
this.theWorld = worldIn;
|
this.theWorld = worldIn;
|
||||||
this.merchantInventory = new InventoryMerchant(playerInventory, merchant);
|
this.merchantInventory = new InventoryMerchant(playerInventory, merchant);
|
||||||
this.addSlotToContainer(new Slot(this.merchantInventory, 0, 72, 106) {
|
this.addSlotToContainer(new Slot(this.merchantInventory, 0, false) {
|
||||||
public boolean canEditItem() {
|
public boolean canEditItem() {
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
this.addSlotToContainer(new Slot(this.merchantInventory, 1, 124, 106) {
|
this.addSlotToContainer(new Slot(this.merchantInventory, 1, false) {
|
||||||
public boolean canEditItem() {
|
public boolean canEditItem() {
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
this.addSlotToContainer(new SlotMerchantResult(playerInventory, this.merchantInventory, 2, 240, 106));
|
this.addSlotToContainer(new SlotMerchantResult(playerInventory, this.merchantInventory, 2));
|
||||||
|
|
||||||
this.addPlayerSlots(playerInventory);
|
this.addPlayerSlots(playerInventory);
|
||||||
}
|
}
|
||||||
|
|
|
@ -10,10 +10,6 @@ public class ContainerPlayer extends Container {
|
||||||
this.addPlayerSlots(player);
|
this.addPlayerSlots(player);
|
||||||
}
|
}
|
||||||
|
|
||||||
public int getInventoryOffsetY() {
|
|
||||||
return 32;
|
|
||||||
}
|
|
||||||
|
|
||||||
public ItemStack getSingleRecipe(ItemStack stack) {
|
public ItemStack getSingleRecipe(ItemStack stack) {
|
||||||
return null;
|
return null;
|
||||||
// this.baseCrafting.setInventorySlotContents(0, stack);
|
// this.baseCrafting.setInventorySlotContents(0, stack);
|
||||||
|
|
|
@ -114,17 +114,17 @@ public class ContainerRepair extends Container
|
||||||
};
|
};
|
||||||
this.selfPosition = blockPosIn;
|
this.selfPosition = blockPosIn;
|
||||||
this.theWorld = worldIn;
|
this.theWorld = worldIn;
|
||||||
this.addSlotToContainer(new Slot(this.inputSlots, 0, 54, 94) {
|
this.addSlotToContainer(new Slot(this.inputSlots, 0, false) {
|
||||||
public boolean canEditItem() {
|
public boolean canEditItem() {
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
this.addSlotToContainer(new Slot(this.inputSlots, 1, 152, 94) {
|
this.addSlotToContainer(new Slot(this.inputSlots, 1, false) {
|
||||||
public boolean canEditItem() {
|
public boolean canEditItem() {
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
this.addSlotToContainer(new Slot(this.outputSlot, 2, 268, 94)
|
this.addSlotToContainer(new Slot(this.outputSlot, 2, true)
|
||||||
{
|
{
|
||||||
public boolean isItemValid(ItemStack stack)
|
public boolean isItemValid(ItemStack stack)
|
||||||
{
|
{
|
||||||
|
|
|
@ -35,7 +35,7 @@ public class ContainerTile extends Container
|
||||||
for (int idx = 0; idx < tileInv.getSizeInventory(); ++idx)
|
for (int idx = 0; idx < tileInv.getSizeInventory(); ++idx)
|
||||||
{
|
{
|
||||||
final int index = idx;
|
final int index = idx;
|
||||||
this.addSlotToContainer(new Slot(tileInv, idx, 16 + (this.tile.isInput(index) ? input : 8 - output) * 36, 162) {
|
this.addSlotToContainer(new Slot(tileInv, idx, !this.tile.isInput(index)) {
|
||||||
public boolean isItemValid(ItemStack stack)
|
public boolean isItemValid(ItemStack stack)
|
||||||
{
|
{
|
||||||
return ContainerTile.this.tile.isItemValidForSlot(index, stack);
|
return ContainerTile.this.tile.isItemValidForSlot(index, stack);
|
||||||
|
@ -53,10 +53,6 @@ public class ContainerTile extends Container
|
||||||
|
|
||||||
this.addPlayerSlots(player);
|
this.addPlayerSlots(player);
|
||||||
}
|
}
|
||||||
|
|
||||||
public int getInventoryOffsetY() {
|
|
||||||
return 224;
|
|
||||||
}
|
|
||||||
|
|
||||||
public boolean canInteractWith(EntityNPC playerIn)
|
public boolean canInteractWith(EntityNPC playerIn)
|
||||||
{
|
{
|
||||||
|
|
|
@ -5,32 +5,19 @@ import common.item.ItemStack;
|
||||||
|
|
||||||
public class Slot
|
public class Slot
|
||||||
{
|
{
|
||||||
/** The index of the slot in the inventory. */
|
|
||||||
private final int slotIndex;
|
private final int slotIndex;
|
||||||
|
|
||||||
/** The inventory we want to extract a slot from. */
|
|
||||||
public final IInventory inventory;
|
public final IInventory inventory;
|
||||||
|
public final boolean slotRight;
|
||||||
|
|
||||||
/** the id of the slot(also the index in the inventory arraylist) */
|
|
||||||
public int slotNumber;
|
public int slotNumber;
|
||||||
|
|
||||||
/** display position of the inventory slot on the screen x axis */
|
public Slot(IInventory inventoryIn, int index, boolean right)
|
||||||
public int xDisplayPosition;
|
|
||||||
|
|
||||||
/** display position of the inventory slot on the screen y axis */
|
|
||||||
public int yDisplayPosition;
|
|
||||||
|
|
||||||
public Slot(IInventory inventoryIn, int index, int xPosition, int yPosition)
|
|
||||||
{
|
{
|
||||||
this.inventory = inventoryIn;
|
this.inventory = inventoryIn;
|
||||||
this.slotIndex = index;
|
this.slotIndex = index;
|
||||||
this.xDisplayPosition = xPosition;
|
this.slotRight = right;
|
||||||
this.yDisplayPosition = yPosition;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
|
||||||
* if par2 has more items than par1, onCrafting(item,countIncrease) is called
|
|
||||||
*/
|
|
||||||
public void onSlotChange(ItemStack p_75220_1_, ItemStack p_75220_2_)
|
public void onSlotChange(ItemStack p_75220_1_, ItemStack p_75220_2_)
|
||||||
{
|
{
|
||||||
if (p_75220_1_ != null && p_75220_2_ != null)
|
if (p_75220_1_ != null && p_75220_2_ != null)
|
||||||
|
@ -47,17 +34,10 @@ public class Slot
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
|
||||||
* the itemStack passed in is the output - ie, iron ingots, and pickaxes, not ore and wood. Typically increases an
|
|
||||||
* internal count then calls onCrafting(item).
|
|
||||||
*/
|
|
||||||
protected void onCrafting(ItemStack stack, int amount)
|
protected void onCrafting(ItemStack stack, int amount)
|
||||||
{
|
{
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
|
||||||
* the itemStack passed in is the output - ie, iron ingots, and pickaxes, not ore and wood.
|
|
||||||
*/
|
|
||||||
protected void onCrafting(ItemStack stack)
|
protected void onCrafting(ItemStack stack)
|
||||||
{
|
{
|
||||||
}
|
}
|
||||||
|
@ -67,42 +47,27 @@ public class Slot
|
||||||
this.onSlotChanged();
|
this.onSlotChanged();
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
|
||||||
* Check if the stack is a valid item for this slot. Always true beside for the armor slots.
|
|
||||||
*/
|
|
||||||
public boolean isItemValid(ItemStack stack)
|
public boolean isItemValid(ItemStack stack)
|
||||||
{
|
{
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
|
||||||
* Helper fnct to get the stack in the slot.
|
|
||||||
*/
|
|
||||||
public ItemStack getStack()
|
public ItemStack getStack()
|
||||||
{
|
{
|
||||||
return this.inventory.getStackInSlot(this.slotIndex);
|
return this.inventory.getStackInSlot(this.slotIndex);
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
|
||||||
* Returns if this slot contains a stack.
|
|
||||||
*/
|
|
||||||
public final boolean getHasStack()
|
public final boolean getHasStack()
|
||||||
{
|
{
|
||||||
return this.getStack() != null;
|
return this.getStack() != null;
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
|
||||||
* Helper method to put a stack in the slot.
|
|
||||||
*/
|
|
||||||
public void putStack(ItemStack stack)
|
public void putStack(ItemStack stack)
|
||||||
{
|
{
|
||||||
this.inventory.setInventorySlotContents(this.slotIndex, stack);
|
this.inventory.setInventorySlotContents(this.slotIndex, stack);
|
||||||
this.onSlotChanged();
|
this.onSlotChanged();
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
|
||||||
* Called when the stack in a Slot changes
|
|
||||||
*/
|
|
||||||
public void onSlotChanged()
|
public void onSlotChanged()
|
||||||
{
|
{
|
||||||
this.inventory.markDirty();
|
this.inventory.markDirty();
|
||||||
|
@ -118,26 +83,16 @@ public class Slot
|
||||||
return this.canStackItems() ? 1000000000 : 1;
|
return this.canStackItems() ? 1000000000 : 1;
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
|
||||||
* Decrease the size of the stack in slot (first int arg) by the amount of the second int arg. Returns the new
|
|
||||||
* stack.
|
|
||||||
*/
|
|
||||||
public ItemStack decrStackSize(int amount)
|
public ItemStack decrStackSize(int amount)
|
||||||
{
|
{
|
||||||
return this.inventory.decrStackSize(this.slotIndex, amount);
|
return this.inventory.decrStackSize(this.slotIndex, amount);
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
|
||||||
* returns true if the slot exists in the given inventory and location
|
|
||||||
*/
|
|
||||||
public boolean isHere(IInventory inv, int slotIn)
|
public boolean isHere(IInventory inv, int slotIn)
|
||||||
{
|
{
|
||||||
return inv == this.inventory && slotIn == this.slotIndex;
|
return inv == this.inventory && slotIn == this.slotIndex;
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
|
||||||
* Return whether this slot's stack can be taken from this slot.
|
|
||||||
*/
|
|
||||||
public boolean canTakeStack(EntityNPC playerIn)
|
public boolean canTakeStack(EntityNPC playerIn)
|
||||||
{
|
{
|
||||||
return true;
|
return true;
|
||||||
|
|
|
@ -6,11 +6,8 @@ public class SlotCommon extends Slot {
|
||||||
private final List<SlotCommon> list;
|
private final List<SlotCommon> list;
|
||||||
private final SlotCommon draw;
|
private final SlotCommon draw;
|
||||||
|
|
||||||
private int w;
|
public SlotCommon(List<SlotCommon> list, IInventory inventoryIn, int index, boolean right) {
|
||||||
private int h;
|
super(inventoryIn, index, right);
|
||||||
|
|
||||||
public SlotCommon(List<SlotCommon> list, IInventory inventoryIn, int index, int xPosition, int yPosition) {
|
|
||||||
super(inventoryIn, index, xPosition, yPosition);
|
|
||||||
this.list = list;
|
this.list = list;
|
||||||
this.draw = list.isEmpty() ? null : list.getFirst();
|
this.draw = list.isEmpty() ? null : list.getFirst();
|
||||||
list.add(this);
|
list.add(this);
|
||||||
|
@ -19,33 +16,4 @@ public class SlotCommon extends Slot {
|
||||||
public String getTexture() {
|
public String getTexture() {
|
||||||
return this.draw == null ? super.getTexture() : null;
|
return this.draw == null ? super.getTexture() : null;
|
||||||
}
|
}
|
||||||
|
|
||||||
private void init() {
|
|
||||||
int x1 = Integer.MAX_VALUE;
|
|
||||||
int y1 = Integer.MAX_VALUE;
|
|
||||||
int x2 = Integer.MIN_VALUE;
|
|
||||||
int y2 = Integer.MIN_VALUE;
|
|
||||||
for(SlotCommon slot : this.list) {
|
|
||||||
x1 = Math.min(x1, slot.xDisplayPosition);
|
|
||||||
y1 = Math.min(y1, slot.yDisplayPosition);
|
|
||||||
x2 = Math.max(x2, slot.xDisplayPosition + 36);
|
|
||||||
y2 = Math.max(y2, slot.yDisplayPosition + 36);
|
|
||||||
}
|
|
||||||
this.w = (x2 - x1) / 36;
|
|
||||||
this.h = (y2 - y1) / 36;
|
|
||||||
}
|
|
||||||
|
|
||||||
public int getBackgroundWidth() {
|
|
||||||
if(this.draw != null)
|
|
||||||
return this.draw.getBackgroundWidth();
|
|
||||||
this.init();
|
|
||||||
return this.w;
|
|
||||||
}
|
|
||||||
|
|
||||||
public int getBackgroundHeight() {
|
|
||||||
if(this.draw != null)
|
|
||||||
return this.draw.getBackgroundHeight();
|
|
||||||
this.init();
|
|
||||||
return this.h;
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue