mirror of
https://github.com/GTNewHorizons/TinkersConstruct.git
synced 2026-11-13 00:47:32 +00:00
Merge remote-tracking branch 'ChromaPIE/dumpbutton' into dev
This commit is contained in:
6 files changed
+106
No files matched your search
@@ -4,6 +4,7 @@ import java.awt.Rectangle;
|
||||
import java.util.Collections;
|
||||
import java.util.List;
|
||||
|
||||
import net.minecraft.client.gui.GuiButton;
|
||||
import net.minecraft.client.gui.GuiTextField;
|
||||
import net.minecraft.client.gui.inventory.GuiContainer;
|
||||
import net.minecraft.entity.player.InventoryPlayer;
|
||||
@@ -21,12 +22,14 @@ import codechicken.nei.VisiblityData;
|
||||
import codechicken.nei.api.INEIGuiHandler;
|
||||
import codechicken.nei.api.TaggedInventoryArea;
|
||||
import cpw.mods.fml.common.Optional;
|
||||
import tconstruct.TConstruct;
|
||||
import tconstruct.library.TConstructRegistry;
|
||||
import tconstruct.library.crafting.PatternBuilder;
|
||||
import tconstruct.library.modifier.IModifyable;
|
||||
import tconstruct.library.tools.ToolMaterial;
|
||||
import tconstruct.library.util.HarvestLevels;
|
||||
import tconstruct.tools.logic.CraftingStationLogic;
|
||||
import tconstruct.util.network.CraftingStationDumpPacket;
|
||||
|
||||
@Optional.Interface(iface = "codechicken.nei.api.INEIGuiHandler", modid = "NotEnoughItems")
|
||||
public class CraftingStationGui extends GuiContainer implements INEIGuiHandler {
|
||||
@@ -121,6 +124,22 @@ public class CraftingStationGui extends GuiContainer implements INEIGuiHandler {
|
||||
|
||||
this.craftingTextLeft = this.craftingLeft - this.guiLeft;
|
||||
this.descTextLeft = this.descLeft - this.guiLeft;
|
||||
|
||||
// Add dump button if chest is connected
|
||||
this.buttonList.clear();
|
||||
if (logic.chest != null) {
|
||||
int bothOffset = 0;
|
||||
if (logic.slotCount > 54) bothOffset += 12;
|
||||
bothOffset += 122;
|
||||
this.buttonList.add(new GuiButtonDump(0, this.guiLeft + bothOffset + 159, this.guiTop + 5));
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
protected void actionPerformed(GuiButton button) {
|
||||
if (button.id == 0 && logic.chest != null) {
|
||||
TConstruct.packetPipeline.sendToServer(new CraftingStationDumpPacket());
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
|
||||
@@ -0,0 +1,38 @@
|
||||
package tconstruct.tools.gui;
|
||||
|
||||
import net.minecraft.client.Minecraft;
|
||||
import net.minecraft.client.gui.GuiButton;
|
||||
import net.minecraft.util.ResourceLocation;
|
||||
|
||||
import org.lwjgl.opengl.GL11;
|
||||
|
||||
public class GuiButtonDump extends GuiButton {
|
||||
|
||||
private static final ResourceLocation TEXTURE = new ResourceLocation("tinker", "textures/gui/dumpbutton.png");
|
||||
|
||||
public GuiButtonDump(int id, int x, int y) {
|
||||
super(id, x, y, 10, 10, "");
|
||||
}
|
||||
|
||||
@Override
|
||||
public void drawButton(Minecraft mc, int mouseX, int mouseY) {
|
||||
if (this.visible) {
|
||||
this.field_146123_n = mouseX >= this.xPosition && mouseY >= this.yPosition
|
||||
&& mouseX < this.xPosition + this.width
|
||||
&& mouseY < this.yPosition + this.height;
|
||||
|
||||
GL11.glColor4f(1.0F, 1.0F, 1.0F, 1.0F);
|
||||
mc.getTextureManager().bindTexture(TEXTURE);
|
||||
func_146110_a(this.xPosition, this.yPosition, 0, 0, this.width, this.height, this.width, this.height);
|
||||
|
||||
if (this.field_146123_n) {
|
||||
drawRect(
|
||||
this.xPosition,
|
||||
this.yPosition,
|
||||
this.xPosition + this.width,
|
||||
this.yPosition + this.height,
|
||||
0x80FFFFFF);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -434,4 +434,21 @@ public class CraftingStationContainer extends Container {
|
||||
|
||||
return didSomething;
|
||||
}
|
||||
|
||||
// Dump crafting grid to connected chests
|
||||
public void dumpCraftingGrid() {
|
||||
if (logic.slotCount == 0) return;
|
||||
|
||||
// 46 is the first slot index of the attached inventory
|
||||
for (int i = 0; i < 9; i++) {
|
||||
ItemStack stack = craftMatrix.getStackInSlot(i);
|
||||
if (stack != null && stack.stackSize > 0) {
|
||||
if (mergeItemStack(stack, 46, 46 + logic.slotCount, false)) {
|
||||
craftMatrix.setInventorySlotContents(i, stack.stackSize > 0 ? stack : null);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
this.onCraftMatrixChanged(this.craftMatrix);
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,30 @@
|
||||
package tconstruct.util.network;
|
||||
|
||||
import net.minecraft.entity.player.EntityPlayer;
|
||||
|
||||
import io.netty.buffer.ByteBuf;
|
||||
import io.netty.channel.ChannelHandlerContext;
|
||||
import mantle.common.network.AbstractPacket;
|
||||
import tconstruct.tools.inventory.CraftingStationContainer;
|
||||
|
||||
public class CraftingStationDumpPacket extends AbstractPacket {
|
||||
|
||||
public CraftingStationDumpPacket() {}
|
||||
|
||||
@Override
|
||||
public void encodeInto(ChannelHandlerContext ctx, ByteBuf buffer) {}
|
||||
|
||||
@Override
|
||||
public void decodeInto(ChannelHandlerContext ctx, ByteBuf buffer) {}
|
||||
|
||||
@Override
|
||||
public void handleClientSide(EntityPlayer player) {}
|
||||
|
||||
@Override
|
||||
public void handleServerSide(EntityPlayer player) {
|
||||
if (player.openContainer instanceof CraftingStationContainer) {
|
||||
CraftingStationContainer container = (CraftingStationContainer) player.openContainer;
|
||||
container.dumpCraftingGrid();
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -135,6 +135,8 @@ public class PacketPipeline extends MessageToMessageCodec<FMLProxyPacket, Abstra
|
||||
registerPacket(MovementUpdatePacket.class);
|
||||
|
||||
registerPacket(ArmourGuiSyncPacket.class);
|
||||
|
||||
registerPacket(CraftingStationDumpPacket.class);
|
||||
}
|
||||
|
||||
// Method to call from FMLPostInitializationEvent
|
||||
|
||||
Binary file not shown.
|
After Width: | Height: | Size: 130 B |
Reference in new issue
Block a user