Merge remote-tracking branch 'ChromaPIE/dumpbutton' into dev

This commit is contained in:
Martin Robertz committed 2026-04-05 11:44:03 +02:00
commit 910abb07f5
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