diff --git a/src/main/java/com/glodblock/github/client/gui/GuiLevelMaintainer.java b/src/main/java/com/glodblock/github/client/gui/GuiLevelMaintainer.java index 16a7cb0b..a6482bac 100644 --- a/src/main/java/com/glodblock/github/client/gui/GuiLevelMaintainer.java +++ b/src/main/java/com/glodblock/github/client/gui/GuiLevelMaintainer.java @@ -47,6 +47,9 @@ import appeng.client.gui.AEBaseGui; import appeng.client.gui.widgets.GuiTabButton; import appeng.container.AEBaseContainer; import appeng.container.slot.SlotFake; +import appeng.core.AEConfig; +import appeng.core.AELog; +import appeng.core.features.AEFeature; import appeng.core.sync.network.NetworkHandler; import appeng.core.sync.packets.PacketNEIDragClick; import codechicken.nei.VisiblityData; @@ -130,6 +133,12 @@ public class GuiLevelMaintainer extends AEBaseGui implements INEIGuiHandler { } for (IAEItemStack is : list) { NBTTagCompound data = is.getItemStack().getTagCompound(); + if (data == null) { + if (AEConfig.instance.isFeatureEnabled(AEFeature.PacketLogging)) { + AELog.info("Received empty configuration: ", is); + } + continue; + } long batch = data.getLong(TLMTags.Batch.tagName); long quantity = data.getLong(TLMTags.Quantity.tagName); int idx = data.getInteger(TLMTags.Index.tagName); @@ -225,6 +234,7 @@ public class GuiLevelMaintainer extends AEBaseGui implements INEIGuiHandler { fake.setStackSize(0); } GL11.glTranslatef(0.0f, 0.0f, 200.0f); + aeRenderItem.setAeStack(fake); aeRenderItem.renderItemOverlayIntoGUI( fontRendererObj, mc.getTextureManager(), @@ -344,9 +354,11 @@ public class GuiLevelMaintainer extends AEBaseGui implements INEIGuiHandler { @Override public boolean handleDragNDrop(GuiContainer gui, int mouseX, int mouseY, ItemStack draggedStack, int button) { - for (SlotFluidConvertingFake slot : this.cont.getRequestSlots()) { + for (int i = 0; i < this.cont.getRequestSlots().length; i++) { + SlotFluidConvertingFake slot = this.cont.getRequestSlots()[i]; if (getSlotArea(slot).contains(mouseX, mouseY)) { ItemStack itemStack = createLevelValues(draggedStack.copy()); + itemStack.getTagCompound().setInteger(TLMTags.Index.tagName, i); slot.putStack(itemStack); NetworkHandler.instance.sendToServer(new PacketNEIDragClick(itemStack, slot.getSlotIndex())); this.updateAmount(slot.getSlotIndex(), itemStack.stackSize); diff --git a/src/main/java/com/glodblock/github/client/gui/GuiLevelTerminal.java b/src/main/java/com/glodblock/github/client/gui/GuiLevelTerminal.java index 9c081658..380d9c2e 100644 --- a/src/main/java/com/glodblock/github/client/gui/GuiLevelTerminal.java +++ b/src/main/java/com/glodblock/github/client/gui/GuiLevelTerminal.java @@ -568,6 +568,7 @@ public class GuiLevelTerminal extends FCBaseMEGui implements IDropToFillTextFiel && relMouseY < Math.min(viewY + rowYBot, viewHeight); if (stack != null) { + AEItemStack aeItemStack = AEItemStack.create(stack); NBTTagCompound data = stack.getTagCompound(); ItemStack itemStack = data.hasKey(TLMTags.Stack.tagName) ? ItemStack.loadItemStackFromNBT(data.getCompoundTag(TLMTags.Stack.tagName)) @@ -581,15 +582,18 @@ public class GuiLevelTerminal extends FCBaseMEGui implements IDropToFillTextFiel GL11.glTranslatef(colLeft, viewY + rowYTop + 1, ITEM_STACK_Z); GL11.glEnable(GL12.GL_RESCALE_NORMAL); RenderHelper.enableGUIStandardItemLighting(); - aeRenderItem.setAeStack(null); + aeItemStack.setStackSize(1); + aeRenderItem.setAeStack(aeItemStack); aeRenderItem.zLevel = 3.0f - 50.0f; aeRenderItem.renderItemAndEffectIntoGUI(fontRendererObj, mc.getTextureManager(), itemStack, 0, 0); aeRenderItem.zLevel = 0.0f; GL11.glTranslatef(0.0f, 0.0f, ITEM_STACK_OVERLAY_Z - ITEM_STACK_Z); - itemStack.stackSize = (int) quantity; + aeItemStack.setStackSize(quantity); + aeRenderItem.setAeStack(aeItemStack); aeRenderItem.renderItemOverlayIntoGUI(fontRendererObj, mc.getTextureManager(), itemStack, 0, 0); if (batch > 0) { - itemStack.stackSize = (int) batch; + aeItemStack.setStackSize(batch); + aeRenderItem.setAeStack(aeItemStack); aeRenderItem .renderItemOverlayIntoGUI(fontRendererObj, mc.getTextureManager(), itemStack, 0, -11); } diff --git a/src/main/java/com/glodblock/github/client/gui/container/ContainerLevelMaintainer.java b/src/main/java/com/glodblock/github/client/gui/container/ContainerLevelMaintainer.java index 030d68a5..9e3962d9 100644 --- a/src/main/java/com/glodblock/github/client/gui/container/ContainerLevelMaintainer.java +++ b/src/main/java/com/glodblock/github/client/gui/container/ContainerLevelMaintainer.java @@ -105,10 +105,13 @@ public class ContainerLevelMaintainer extends AEBaseContainer { return null; } - for (SlotFluidConvertingFake slot : this.getRequestSlots()) { + for (int i = 0; i < this.getRequestSlots().length; i++) { + SlotFluidConvertingFake slot = this.getRequestSlots()[i]; if (!slot.getHasStack()) { ItemStack itemStack = ((Slot) this.inventorySlots.get(idx)).getStack(); - slot.putConvertedStack(createLevelValues(itemStack.copy())); + ItemStack configuration = createLevelValues(itemStack.copy()); + configuration.getTagCompound().setInteger(TLMTags.Index.tagName, i); + slot.putConvertedStack(configuration); break; } } @@ -140,6 +143,9 @@ public class ContainerLevelMaintainer extends AEBaseContainer { if (!data.hasKey(TLMTags.Enable.tagName)) { data.setBoolean(TLMTags.Enable.tagName, false); } + if (data.hasKey(TLMTags.Index.tagName)) { + data.removeTag(TLMTags.Index.tagName); + } data.setInteger(TLMTags.State.tagName, State.None.ordinal()); itemStack.setTagCompound(data); diff --git a/src/main/java/com/glodblock/github/common/tile/TileLevelMaintainer.java b/src/main/java/com/glodblock/github/common/tile/TileLevelMaintainer.java index 83d2ffb7..3464f1f3 100644 --- a/src/main/java/com/glodblock/github/common/tile/TileLevelMaintainer.java +++ b/src/main/java/com/glodblock/github/common/tile/TileLevelMaintainer.java @@ -607,7 +607,9 @@ public class TileLevelMaintainer extends AENetworkTile public IAEItemStack getCraftItem(int idx) { IAEItemStack is = requestStacks.getStack(idx); if (is == null) return null; + if (is.getItemStack() == null) return null; ItemStack qis = loadItemStackFromTag(is.getItemStack()); + if (qis == null) return null; IAEItemStack qais = AEItemStack.create(qis); qais.setStackSize(getBatchSize(idx)); diff --git a/src/main/java/com/glodblock/github/network/SPacketLevelTerminalUpdate.java b/src/main/java/com/glodblock/github/network/SPacketLevelTerminalUpdate.java index 7e49efa4..91ba9166 100644 --- a/src/main/java/com/glodblock/github/network/SPacketLevelTerminalUpdate.java +++ b/src/main/java/com/glodblock/github/network/SPacketLevelTerminalUpdate.java @@ -2,7 +2,9 @@ package com.glodblock.github.network; import java.io.IOException; import java.util.ArrayList; +import java.util.Arrays; import java.util.List; +import java.util.stream.Collectors; import javax.annotation.Nullable; @@ -16,7 +18,9 @@ import net.minecraftforge.common.util.Constants.NBT; import com.glodblock.github.client.gui.GuiLevelTerminal; +import appeng.core.AEConfig; import appeng.core.AELog; +import appeng.core.features.AEFeature; import cpw.mods.fml.common.network.ByteBufUtils; import cpw.mods.fml.common.network.simpleimpl.IMessage; import cpw.mods.fml.common.network.simpleimpl.IMessageHandler; @@ -45,6 +49,21 @@ public class SPacketLevelTerminalUpdate implements IMessage { int numEntries = buf.readInt(); for (int i = 0; i < numEntries; ++i) { + if (buf.readableBytes() == 0) { + if (AEConfig.instance.isFeatureEnabled(AEFeature.PacketLogging)) { + AELog.info( + "Corrupted packet commands: (" + i + + ") of (" + + numEntries + + ") -> " + + this.commands.size() + + " : " + + this.commands.stream().map(packetEntry -> packetEntry.getClass().getSimpleName()) + .collect(Collectors.groupingBy(String::new, Collectors.counting()))); + AELog.info("Parsed content: -> " + this.commands); + } + return; + } PacketType type = PacketType.values()[buf.readByte()]; try { @@ -135,6 +154,14 @@ public class SPacketLevelTerminalUpdate implements IMessage { final GuiScreen gs = Minecraft.getMinecraft().currentScreen; if (gs instanceof GuiLevelTerminal levelTerminal) { + if (AEConfig.instance.isFeatureEnabled(AEFeature.PacketLogging)) { + AELog.info( + "Received commands -> " + message.commands.size() + + " : " + + message.commands.stream() + .map(packetEntry -> packetEntry.getClass().getSimpleName()) + .collect(Collectors.groupingBy(String::new, Collectors.counting()))); + } levelTerminal.postUpdate(message.commands, message.statusFlags); } @@ -282,6 +309,38 @@ public class SPacketLevelTerminalUpdate implements IMessage { this.items = payload.getTagList("data", NBT.TAG_COMPOUND); } } + + @Override + public String toString() { + return "PacketAdd{" + "name='" + + name + + '\'' + + ", x=" + + x + + ", y=" + + y + + ", z=" + + z + + ", dim=" + + dim + + ", side=" + + side + + ", rows=" + + rows + + ", rowSize=" + + rowSize + + ", online=" + + online + + ", selfItemStack=" + + selfItemStack + + ", displayItemStack=" + + displayItemStack + + ", items=" + + items + + ", entryId=" + + entryId + + '}'; + } } public static class PacketRemove extends PacketEntry { @@ -302,6 +361,11 @@ public class SPacketLevelTerminalUpdate implements IMessage { @Override protected void read(ByteBuf buf) {} + + @Override + public String toString() { + return "PacketRemove{" + "entryId=" + entryId + '}'; + } } /** @@ -417,6 +481,25 @@ public class SPacketLevelTerminalUpdate implements IMessage { } } } + + @Override + public String toString() { + return "PacketOverwrite{" + "onlineValid=" + + onlineValid + + ", online=" + + online + + ", itemsValid=" + + itemsValid + + ", allItemUpdate=" + + allItemUpdate + + ", validIndices=" + + Arrays.toString(validIndices) + + ", items=" + + items + + ", entryId=" + + entryId + + '}'; + } } /** @@ -446,5 +529,10 @@ public class SPacketLevelTerminalUpdate implements IMessage { protected void read(ByteBuf buf) { newName = ByteBufUtils.readUTF8String(buf); } + + @Override + public String toString() { + return "PacketRename{" + "newName='" + newName + '\'' + ", entryId=" + entryId + '}'; + } } }