Jump to content

[Solved in a strange way][1.3.2] Sync issues in inventories


Jimmynator

Recommended Posts

So I'm trying to update my mods to 1.3.2. I have everything working but one single bug: whenever I try to put a stack of items inside a custom inventory, the stack is duplicated, and whenever I try to remove it, it totally disappears. Example: I have a stack of 2, I try to place it in a slot in my custom inventory and the stack size is now 4, I remove it and it disappears. This is very strange as the same code worked in 1.2.5. This is my code:

 

InventoryResearch:

package jimmynator.researchcraft;

import java.util.ArrayList;
import java.util.Iterator;
import java.util.List;
import java.util.Random;

import cpw.mods.fml.client.FMLClientHandler;

import net.minecraft.client.Minecraft;
import net.minecraft.src.Block;
import net.minecraft.src.CraftingManager;
import net.minecraft.src.EntityPlayer;
import net.minecraft.src.IInvBasic;
import net.minecraft.src.IInventory;
import net.minecraft.src.IRecipe;
import net.minecraft.src.InventoryBasic;
import net.minecraft.src.InventoryPlayer;
import net.minecraft.src.ItemStack;
import net.minecraft.src.NBTTagCompound;
import net.minecraft.src.NBTTagList;
import net.minecraft.src.StringTranslate;

public class InventoryResearch implements IInventory {

public ItemStack[] itemStacks = new ItemStack[9];
public InventoryPlayer inventoryPlayer;
public GuiResearchButton researchButton;

    public int researchProgress = 0;
    public boolean isResearching = false;
    public String recipeToShow = "";

    public InventoryResearch(InventoryPlayer inventoryplayer) {
        this.inventoryPlayer = inventoryplayer;
    }
    
    public void setIsResearching(GuiResearchButton guibutton, boolean flag) {
    	if (flag) {
    		researchProgress = 0;
    		recipeToShow = "";
    	}
    	if (guibutton != null) {
    		researchButton = guibutton;
    	}
	isResearching = !isResearching;
	researchButton.enabled = !isResearching;
}
    
    public void updateInventory() {
    	if (isResearching) {
        	if (researchProgress < 12000) {
        		if (inventoryPlayer.player.getFoodStats().getFoodLevel() - 10 > 0) {
        		researchProgress += (inventoryPlayer.player.getFoodStats().getFoodLevel() - 10)*10;
        		inventoryPlayer.player.addExhaustion(0.0025F);
        		}
        	} else {
        		Random rand = inventoryPlayer.player.worldObj.rand;
        		researchProgress = 12000;
        		List recipelist = new ArrayList();
        		recipelist.add(10);
                List recipes = CraftingManager.getInstance().getRecipeList();

                for (int index = 0; index < recipes.size(); index++) {
                    String recipe = ResearchCraft.dataHandler.getRecipeString((IRecipe)recipes.get(index));
                    if (recipe == null) {
                    	continue;
                    }
                    ItemStack[] stacks = ResearchCraft.dataHandler.getStacksFromString(recipe);
                    int itemok = 0;
                    int size = 0;
                    for (int i = 1; i < stacks.length; i++) {
                    	if (stacks[i] != null) {
                    		size++;
                    	for (int j = 36; j < 36 + getSizeInventory(); j++) {
                    		if (getStackInSlot(j) != null && stacks[i].itemID == getStackInSlot(j).itemID) {
                    			if (stacks[i].itemID < Block.blocksList.length || !(stacks[i].isItemStackDamageable())) {
                    				if (stacks[i].getItemDamage() != -1) {
			                    		if (stacks[i].getItemDamage() == getStackInSlot(j).getItemDamage()) {
			                    			itemok++;
			                    			break;
			                    		}
                    				} else {
                    					itemok++;
		                    			break;
                    				}
		                    	} else {
		                    		itemok++;
		                    		break;
		                    	}
                    		}
                    	}
                    	} else {
                    		itemok++;
                    	}
                    }
                    if (itemok == stacks.length - 1) {
                    	if (!ResearchCraft.dataHandler.getIsResearched(recipe, inventoryPlayer.player)) {
                    		if (recipe.contains("#@58:0") ||
                    				(recipe.contains("#@54:0") && ResearchCraft.dataHandler.getIsResearched("#@58:0", inventoryPlayer.player)) ||
                    				(recipe.contains("#@61:0")  && ResearchCraft.dataHandler.getIsResearched("#@58:0", inventoryPlayer.player)) ||
                    				(recipe.contains("#@355:0") && ResearchCraft.dataHandler.getIsResearched("#@58:0", inventoryPlayer.player))) {
                    			recipelist = new ArrayList();
                    			recipelist.add(size);
                    		recipelist.add(recipe);
                    		break;
                    		} else if (size < (Integer) recipelist.get(0)) {
                    			recipelist = new ArrayList();
                    			recipelist.add(size);
                    		recipelist.add(recipe);
                    		} else if (size == (Integer) recipelist.get(0)) {
                    		recipelist.add(recipe);
                    		}
                    	}
                    }
                }
            	
                if (recipelist.size() > 1) {
                	if (rand.nextBoolean()) {
                		if (!ResearchCraft.dataHandler.getPlayerString(inventoryPlayer.player).contains("#")) {
                	            inventoryPlayer.player.addStat(ResearchCraft.instance.achievements[0], 1);
                		}
                	recipeToShow = (String) recipelist.get(rand.nextInt(recipelist.size() - 1) + 1);
                	if (!ResearchCraft.dataHandler.getPlayerString(inventoryPlayer.player).contains(recipeToShow)) {
                		ResearchCraft.dataHandler.setPlayerString(inventoryPlayer.player, ResearchCraft.dataHandler.getPlayerString(inventoryPlayer.player).concat(recipeToShow));
	                	PacketHandler.sendRecipeResearch(recipeToShow);
                	}
	        		setIsResearching(researchButton, false);
	        		
	        		ItemStack stack = ResearchCraft.dataHandler.getStacksFromString(recipeToShow)[0];
	        		Minecraft.getMinecraft().ingameGUI.getChatGUI().printChatMessage(stack.getItem().getItemDisplayName(stack) + ". " + StringTranslate.getInstance().translateKey("gui.yes") + "!");
                	} else {
                    	for (int i = 36; i < 36 + getSizeInventory(); i++) {
                    		if (getStackInSlot(i) != null) {
                    			if (rand.nextBoolean()) {
                    				if (getStackInSlot(i).stackSize > 1) {
                    					getStackInSlot(i).stackSize -= 1;
                    					setInventorySlotContents(i, getStackInSlot(i));
                    				} else {
                    					setInventorySlotContents(i, null);
                    				}
                					PacketHandler.sendReduceResearch(i);
                    			}
                    		}
                    	}
                		if (isResearching) {
		        		setIsResearching(researchButton, false);
		        		setIsResearching(researchButton, true);
                		} else {
		        		setIsResearching(researchButton, true);
                		}
                	}
                } else {
                	for (int i = 36; i < 36 + getSizeInventory(); i++) {
                		if (getStackInSlot(i) != null) {
                			if (rand.nextBoolean()) {
                				if (getStackInSlot(i).stackSize > 1) {
                					getStackInSlot(i).stackSize -= 1;
                					setInventorySlotContents(i, getStackInSlot(i));
                				} else {
                					setInventorySlotContents(i, null);
                				}
            					PacketHandler.sendReduceResearch(i);
                			}
                		}
                	}
                	if (isResearching) {
                		setIsResearching(researchButton, true);
	        		Minecraft.getMinecraft().ingameGUI.getChatGUI().printChatMessage(StringTranslate.getInstance().translateKey("potion.prefix.uninteresting") + "...");
                	}
                }
        	}
    	}
    }
    
    public int getResearchProgressScaled(int par1) {
        return (int) (par1 * (researchProgress / 12000F));
    }

@Override
public int getSizeInventory() {
	return 9;
}

@Override
public ItemStack getStackInSlot(int var1) {
	return itemStacks[var1 - 36];
}

@Override
public ItemStack decrStackSize(int var1, int var2) {
	System.out.println("lol2? " + var1 + " " + var2);
        if (this.itemStacks[var1 - 36] != null) {
            ItemStack var3;

            if (this.itemStacks[var1 - 36].stackSize <= var2) {
                var3 = this.itemStacks[var1 - 36];
                this.itemStacks[var1 - 36] = null;
                this.onInventoryChanged();
                return var3;
            } else {
                var3 = this.itemStacks[var1 - 36].splitStack(var2);

                if (this.itemStacks[var1 - 36].stackSize == 0) {
                    this.itemStacks[var1 - 36] = null;
                }

                this.onInventoryChanged();
                return var3;
            }
        } else {
            return null;
        }
}

@Override
public ItemStack getStackInSlotOnClosing(int var1) {
        return null;
}

@Override
public void setInventorySlotContents(int var1, ItemStack var2) {
	System.out.println("lol? " + var1 + " " + var2);
        this.itemStacks[var1 - 36] = var2;
        this.onInventoryChanged();
}

@Override
public String getInvName() {
	return "Research Inventory";
}

@Override
public int getInventoryStackLimit() {
	return 64;
}

@Override
public void onInventoryChanged() {}

@Override
public boolean isUseableByPlayer(EntityPlayer var1) {
        return this.inventoryPlayer.player.isDead ? false : var1.getDistanceSqToEntity(this.inventoryPlayer.player) <= 64.0D;
}

@Override
public void openChest() {}

@Override
public void closeChest() {}

}

 

ContainerResearch:

package jimmynator.researchcraft;

import net.minecraft.src.Container;
import net.minecraft.src.EntityPlayer;
import net.minecraft.src.IInventory;
import net.minecraft.src.InventoryPlayer;
import net.minecraft.src.ItemStack;
import net.minecraft.src.Slot;

public class ContainerResearch extends Container
{

    public IInventory researchInventory;

public ContainerResearch(InventoryPlayer inventoryplayer, InventoryResearch inventoryresearch) {
	researchInventory = inventoryresearch;
        int var3;
        int var4;
        
        this.addSlotToContainer(new Slot(inventoryresearch, 36, 6, 16));
        this.addSlotToContainer(new Slot(inventoryresearch, 37, 27, 6));
        this.addSlotToContainer(new Slot(inventoryresearch, 38, 50, );
        this.addSlotToContainer(new Slot(inventoryresearch, 39, 11, 38));
        this.addSlotToContainer(new Slot(inventoryresearch, 40, 34, 30));
        this.addSlotToContainer(new Slot(inventoryresearch, 41, 59, 35));
        this.addSlotToContainer(new Slot(inventoryresearch, 42, 13, 60));
        this.addSlotToContainer(new Slot(inventoryresearch, 43, 32, 53));
        this.addSlotToContainer(new Slot(inventoryresearch, 44, 53, 61));

        for (var3 = 0; var3 < 3; ++var3) {
            for (var4 = 0; var4 < 9; ++var4) {
                this.addSlotToContainer(new Slot(inventoryplayer, var4 + (var3 + 1) * 9, 8 + var4 * 18, 84 + var3 * 18));
            }
        }

        for (var3 = 0; var3 < 9; ++var3) {
            this.addSlotToContainer(new Slot(inventoryplayer, var3, 8 + var3 * 18, 142));
        }
    }

@Override
public boolean canInteractWith(EntityPlayer var1) {
        return true;
}

@Override
    public ItemStack transferStackInSlot(int par1) {
        ItemStack var2 = null;
        Slot var3 = (Slot)this.inventorySlots.get(par1);

        if (var3 != null && var3.getHasStack()) {
            ItemStack var4 = var3.getStack();
            var2 = var4.copy();

            if (par1 == 0) {
                if (!this.mergeItemStack(var4, 9, 45, true)) {
                    return null;
                }

                var3.onSlotChange(var4, var2);
            } else if (par1 >= 9 && par1 < 36)  {
                if (!this.mergeItemStack(var4, 36, 45, false)) {
                    return null;
                }
            } else if (par1 >= 36 && par1 < 45) {
                if (!this.mergeItemStack(var4, 9, 36, false)) {
                    return null;
                }
            } else if (!this.mergeItemStack(var4, 9, 45, false)) {
                return null;
            }

            if (var4.stackSize == 0) {
                var3.putStack((ItemStack)null);
            } else {
                var3.onSlotChanged();
            }

            if (var4.stackSize == var2.stackSize) {
                return null;
            }

            var3.onPickupFromSlot(var4);
        }

        return var2;
    }
}

 

GuiResearch (only client side):

package jimmynator.researchcraft;

import net.minecraft.src.EntityPlayer;
import net.minecraft.src.GuiButton;
import net.minecraft.src.GuiContainer;
import net.minecraft.src.InventoryPlayer;
import net.minecraft.src.ItemStack;
import net.minecraft.src.OpenGlHelper;
import net.minecraft.src.RenderHelper;
import net.minecraft.src.ScaledResolution;
import net.minecraft.src.Slot;

import org.lwjgl.input.Mouse;
import org.lwjgl.opengl.GL11;
import org.lwjgl.opengl.GL12;

public class GuiResearch extends GuiContainer {
    private static ContainerResearch container = null;
    public GuiResearchButton startResearch;
    public InventoryPlayer inventoryPlayer;
    public InventoryResearch inventoryResearch;

public GuiResearch(EntityPlayer par1EntityPlayer) {
        super(new ContainerResearch(par1EntityPlayer.inventory, ResearchCraft.dataHandler.getInventoryResearch(par1EntityPlayer)));
        inventoryPlayer = par1EntityPlayer.inventory;
        inventoryResearch = ResearchCraft.dataHandler.getInventoryResearch(par1EntityPlayer);
    }

@Override
public void initGui() {
        super.initGui();
        guiLeft = (width - xSize) / 2;
        guiTop = (height - ySize) / 2;

        controlList.clear();
        
        startResearch = new GuiResearchButton(0, guiLeft + 87, guiTop + 61, 18, 18, "");
    	inventoryResearch.setIsResearching(startResearch, false);
    	inventoryResearch.setIsResearching(startResearch, false);
        controlList.add(startResearch);

    }

@Override
    protected void actionPerformed(GuiButton guibutton) {
        if (guibutton.id == 0) {
        	inventoryResearch.setIsResearching((GuiResearchButton) guibutton, true);
        }
    }

@Override
    protected void drawGuiContainerForegroundLayer() {
        this.fontRenderer.drawString("Research", 118, 68, 4210752);
    }

@Override
    protected void drawGuiContainerBackgroundLayer(float f, int i, int j) {
	int r = mc.renderEngine.getTexture("/textures/researchcraft_research.png");
        GL11.glColor4f(1.0F, 1.0F, 1.0F, 0.5F);
        mc.renderEngine.bindTexture(r);
        int w = (width - xSize) / 2;
        int h = (height - ySize) / 2;
        
    	//GUI
        drawTexturedModalRect(w, h, 0, 0, xSize, ySize);
        
        //Bulb
        int scaledProgress = inventoryResearch.getResearchProgressScaled(31);
        drawTexturedModalRect(w + 86, h + 27 + (31 - scaledProgress), 176, 0 + (31 - scaledProgress), 20, scaledProgress);
        
        //Button
    	if (startResearch.drawButton) {
    		ScaledResolution var13 = new ScaledResolution(mc.gameSettings, mc.displayWidth, mc.displayHeight);
    		int var14 = var13.getScaledWidth();
    		int var15 = var13.getScaledHeight();
            int var16 = Mouse.getX() * var14 / mc.displayWidth;
            int var17 = var15 - Mouse.getY() * var15 / mc.displayHeight - 1;
            
            boolean var5 = var16 >= startResearch.xPosition && var17 >= startResearch.yPosition && var16 < startResearch.xPosition + startResearch.width && var17 < startResearch.yPosition + startResearch.height;
            int var6 = startResearch.getHoverState(var5);
            drawTexturedModalRect(w + 87, h + 61, 176, 32 + var6 * 18, startResearch.width, startResearch.height);
            startResearch.mouseDragged(mc, var16, var17);
        }
    	
    	//Research recipe
    	if (inventoryResearch.researchProgress >= 12000 && inventoryResearch.recipeToShow != "") {
    		ItemStack[] stacks = ResearchCraft.dataHandler.getStacksFromString(inventoryResearch.recipeToShow);
    		
    		drawStackInventory(stacks[0], 88, ;

    		drawStackInventory(stacks[1], 116, ;
    		drawStackInventory(stacks[2], 134, ;
    		drawStackInventory(stacks[3], 152, ;
    		drawStackInventory(stacks[4], 116, 26);
    		drawStackInventory(stacks[5], 134, 26);
    		drawStackInventory(stacks[6], 152, 26);
    		drawStackInventory(stacks[7], 116, 44);
    		drawStackInventory(stacks[8], 134, 44);
    		drawStackInventory(stacks[9], 152, 44);
    	}
}
    
    private void drawStackInventory(ItemStack itemstack, int x, int y) {
    	ItemStack newitem = null;
    	if (itemstack != null) {
		newitem = itemstack.copy();
    	if (itemstack.getItemDamage() == -1) {
    		newitem.setItemDamage(0);
    	}
    	}
        RenderHelper.enableGUIStandardItemLighting();
        GL11.glColor4f(1.0F, 1.0F, 1.0F, 1.0F);
        GL11.glEnable(GL12.GL_RESCALE_NORMAL);
        GL11.glEnable(GL11.GL_LIGHTING);
        GL11.glEnable(GL11.GL_DEPTH_TEST);
        Slot var6 = null;
        short var7 = 240;
        short var8 = 240;
        OpenGlHelper.setLightmapTextureCoords(OpenGlHelper.lightmapTexUnit, (float)var7 / 1.0F, (float)var8 / 1.0F);
        GL11.glColor4f(1.0F, 1.0F, 1.0F, 1.0F);
        
        zLevel = 100.0F;
        itemRenderer.zLevel = 100.0F;

        if (itemstack != null) {
            itemRenderer.renderItemIntoGUI(fontRenderer, mc.renderEngine, newitem, guiLeft + x, guiTop + y);
            itemRenderer.renderItemOverlayIntoGUI(fontRenderer, mc.renderEngine, newitem, guiLeft + x, guiTop + y);
        }

        itemRenderer.zLevel = 0.0F;
        zLevel = 0.0F;
        
        GL11.glDisable(GL12.GL_RESCALE_NORMAL);
        RenderHelper.disableStandardItemLighting();
        GL11.glDisable(GL11.GL_LIGHTING);
        GL11.glDisable(GL11.GL_DEPTH_TEST);
    }
    
    @Override
    protected void keyTyped(char par1, int par2) {
        if (par2 == 1 || par2 == this.mc.gameSettings.keyBindInventory.keyCode || par2 == ClientKeyHandler.Research.keyCode) {
            this.mc.thePlayer.closeScreen();
        }
    }
}

Link to comment
Share on other sites

I too have this exact issue!

 

Something that happens to me (that I don't think you said) is that when I click to place the item, it wont "drop" the item into the inventory - it will put 2x as much as how many I place in, and i'll still be holding the item.

 

I've re-written my classes twice now, to no avail. Perhaps the answer is something to do with packet handling?

Link to comment
Share on other sites

I'm quite surprised no one has answered this yet. I've looked in all the vanilla mc container classes, player's inventory class, the related gui classes; there's nothing they have that mine don't. I've even removed some of my own features- nada.

 

It's been 4 days, i'm surprised no one has anything constructive that might even point us in the right direction.

 

$10 donation from me via paypal to the first person to solve this.

Link to comment
Share on other sites

Never fear!

1. You need to do something with a statCollector to render the items, or at least I do.

2. Is this inventory attached to a block?

2a. If so, make it a TE, easier to use.

3. If not, I have no idea.

You don't need to pay me.

 

So, what would happen if I did push that shiny red button over there? ... Really? ... Can I try it? ... Damn.

Link to comment
Share on other sites

The issue isn't that the items aren't being rendered, rather, the itemstacks added aren't updating the inventory - if you add one, it's added to the gui, so it looks like it's in the inventory, but if you click it and move it out the inventory gui, it disappears. Also you keep a copy of the item in your hand.

 

But hey, thanks for trying :D

Link to comment
Share on other sites

The issue isn't that the items aren't being rendered, rather, the itemstacks added aren't updating the inventory - if you add one, it's added to the gui, so it looks like it's in the inventory, but if you click it and move it out the inventory gui, it disappears. Also you keep a copy of the item in your hand.

 

But hey, thanks for trying :D

Well, it was worth a shot...

And I always attach inventories to TE's for my machines, so I'm not much help.

So, what would happen if I did push that shiny red button over there? ... Really? ... Can I try it? ... Damn.

Link to comment
Share on other sites

you have to attach them to a te as that does all the syncing as it scans the ivn that you set for the te and contatiner to use and then it does syncing (no idea how it does this, probaly does a time based sync) if you need any help with getting it to use a te just ask, i might make a tutorial latter on how to make a machine like a furnace but with as many slots as you want, and does what ever you want.

Link to comment
Share on other sites

you have to attach them to a te as that does all the syncing as it scans the ivn that you set for the te and contatiner to use and then it does syncing (no idea how it does this, probaly does a time based sync) if you need any help with getting it to use a te just ask, i might make a tutorial latter on how to make a machine like a furnace but with as many slots as you want, and does what ever you want.

Well, I send the data between client and server, so, you have to sync it.

So, what would happen if I did push that shiny red button over there? ... Really? ... Can I try it? ... Damn.

Link to comment
Share on other sites

you have to attach them to a te as that does all the syncing as it scans the ivn that you set for the te and contatiner to use and then it does syncing (no idea how it does this, probaly does a time based sync) if you need any help with getting it to use a te just ask, i might make a tutorial latter on how to make a machine like a furnace but with as many slots as you want, and does what ever you want.

 

A tile entity? Even though both Jimmynator and myself aren't using blocks? (His I believe is for the player, mine is for a mob)

Link to comment
Share on other sites

How are you handling the sending and receiving of update packets for it then? :)

Beacuse to me it sounds like the client belives it is giving and/or taking an item from the inventory, but the server does not know of this and therefore inr eality nothing has happened.

 

If you guys dont get it.. then well ya.. try harder...

Link to comment
Share on other sites

Finally, I fixed it, I had to sync the slot clicking in the container for it to work.

This was synced automatically in 1.2.5, I don't know why has this changed.

 

Code:

 

ContainerX:

@Override
public ItemStack slotClick (int slot, int button, boolean flag, EntityPlayer player) {
	ItemStack stack = super.slotClick(slot, button, flag, player);
                if (Minecraft.getMinecraft() != null && slot > 35) {
    		        PacketHandlerX.syncStack(stack, slot);
                }
	return stack;
}

 

PacketHandlerX:

public void onPacketData(NetworkManager manager, Packet250CustomPayload packet, Player player) {
	if (packet.channel.equals("channelX")) {
		DataInputStream dataStream = new DataInputStream(new ByteArrayInputStream(packet.data));
		EntityPlayer entityplayer = (EntityPlayer) player;
        int id = -1;
        try {
                id = dataStream.readInt();
                switch (id) {
                case -1:
                	break;
                case 0:
                	ItemStack stack;
                	int slot = dataStream.readInt();
                	int itemID = dataStream.readInt();
                	if (itemID < 0) {
                		stack = null;
                	} else {
                    	int stacksize = dataStream.readInt();
                    	int damage = dataStream.readInt();
                    	boolean bool = dataStream.readBoolean();
                    	stack = new ItemStack(itemID, stacksize, damage);
                    	if (!bool) {
                        	NBTTagCompound tags = (NBTTagCompound) NBTTagCompound.readNamedTag(dataStream);
                        	stack.setTagCompound(tags);
                    	}
                	}
            		((((inventoryYouWantToUpdate)))).setInventorySlotContents(slot, stack);
                	break;
                }
        } catch(IOException e) {
                e.printStackTrace();
        }
	}
}


public static void syncStack(ItemStack stack, int slot) {
	ByteArrayOutputStream bytes = new ByteArrayOutputStream();
        DataOutputStream data = new DataOutputStream(bytes);
        try {
        	data.writeInt(0);
        	data.writeInt(slot);
        	if (stack == null) {
        		data.writeInt(-1);
        	} else {
            	data.writeInt(stack.itemID);
            	data.writeInt(stack.stackSize);
            	data.writeInt(stack.getItemDamage());
            	data.writeBoolean(stack.getTagCompound() == null);
            	if (stack.getTagCompound() != null) {
                	stack.getTagCompound().writeNamedTag(stack.getTagCompound(), data);
            	}
        	}
        } catch(IOException e) {
            e.printStackTrace();
        }

        Packet250CustomPayload packet = new Packet250CustomPayload();
        packet.channel = "channelX";
        packet.data = bytes.toByteArray();
        packet.length = packet.data.length;
        
        PacketDispatcher.sendPacketToServer(packet);
    }

 

I don't know if this is what it is supposed to be like, but it works.

Link to comment
Share on other sites

This can't be completely right. I have been running into this issue as well but it appears to be intermittent. I'm actually seeing a whole host of network related issues. My log pile containers work about 50% of the time. When I'm actually able to open the gui, the slot click actions work perfectly. I don't need to do the custom workaround. However when I try to use my custom workbench, I get the error every time. I've gone over the code countless times and the two containers are very similar yet one lets my pick up items and the other doesn't.

 

Also upon stepping through the code what I think is happening is that its sending two packets. One for picking up the item and another for placing it back down. So you're canceling out your own action. That's what I think is occurring at least.

Link to comment
Share on other sites

This can't be completely right. I have been running into this issue as well but it appears to be intermittent. I'm actually seeing a whole host of network related issues. My log pile containers work about 50% of the time. When I'm actually able to open the gui, the slot click actions work perfectly. I don't need to do the custom workaround. However when I try to use my custom workbench, I get the error every time. I've gone over the code countless times and the two containers are very similar yet one lets my pick up items and the other doesn't.

 

Also upon stepping through the code what I think is happening is that its sending two packets. One for picking up the item and another for placing it back down. So you're canceling out your own action. That's what I think is occurring at least.

Yeah, I'm sure this shouldn't be the code to make things work, but the only packets I send are those sync packets I've put here, and it works this way.

 

If someone comes up with the actual code we should be using, it'd be much appreciated.

 

About your container isues, as you're using tile entities you should take a look at cpw's code in it's ironchests github. I remember the packets you used had some kind of sync issues back in 1.2.5.

Link to comment
Share on other sites

Yeah my code is based off of the ironchest code. As far as the clicking thing. I stepped through it and its definitely doing more than its supposed to. In my working logpile container I see the slotClick method fire off twice. Once on the server and once on the client. But in the workbench where I'm getting the same issue as you, the method is firing 4 times. twice for picking the item up(client and server) and twice again(which can only mean that its placing the item back). The fact that the containers work with one container type but not with another is the other oddity :/

Link to comment
Share on other sites

I have another gui, specifically GuiKnapping for rock knapping, it does not use a tileentity, and it works perfectly bud. :/ You can check it out Here and the associated container Here. It doesn't really do much except act as a 5x5 crafting area but maybe it'll help.

 

TFC is coming along nicely. I dare say that most of my code isn't as crappy as it used to be :P

Link to comment
Share on other sites

The server should be handling everything. All the client is there for, is to display information. If your items are existing clientside and you're trying to tell the server about them then you're probably doing something wrong. Never ever trust the client.

Link to comment
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.
Note: Your post will require moderator approval before it will be visible.

Guest
Unfortunately, your content contains terms that we do not allow. Please edit your content to remove the highlighted words below.
Reply to this topic...

×   Pasted as rich text.   Restore formatting

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.



  • Recently Browsing

    • No registered users viewing this page.
  • Posts

    • I was also facing the same. Thank you for helping.
    • I have been putting together mods and stuff for me and my cousin to play with and I keep getting this error when I join a game. Please help and thank you. ---- Minecraft Crash Report ---- // Don't be sad, have a hug! <3 Time: 6/13/24 12:56 AM Description: Unexpected error java.lang.IllegalArgumentException: Multiple entries with same key: glint:RenderType[CompositeState[[texture[Optional[minecraft:textures/misc/enchanted_item_glint.png](blur=true, mipmap=false)], glint_transparency, diffuse_lighting[false], shade_model[flat], alpha[0.0], depth_test[==], cull[false], lightmap[false], overlay[false], fog, no_layering, main_target, glint_texturing, write_mask_state[writeColor=true, writeDepth=false], line_width[1.0]], outlineProperty=none], ]=net.minecraft.client.renderer.BufferBuilder@2bfbbc17 and glint:RenderType[CompositeState[[texture[Optional[minecraft:textures/misc/enchanted_item_glint.png](blur=true, mipmap=false)], glint_transparency, diffuse_lighting[false], shade_model[flat], alpha[0.0], depth_test[==], cull[false], lightmap[false], overlay[false], fog, no_layering, main_target, glint_texturing, write_mask_state[writeColor=true, writeDepth=false], line_width[1.0]], outlineProperty=none], ]=net.minecraft.client.renderer.BufferBuilder@aeeb66e     at com.google.common.collect.ImmutableMap.checkNoConflict(ImmutableMap.java:186) ~[guava-21.0.jar:?] {}     at com.google.common.collect.RegularImmutableMap.checkNoConflictInKeyBucket(RegularImmutableMap.java:102) ~[guava-21.0.jar:?] {}     at com.google.common.collect.RegularImmutableMap.fromEntryArray(RegularImmutableMap.java:88) ~[guava-21.0.jar:?] {}     at com.google.common.collect.ImmutableMap$Builder.build(ImmutableMap.java:359) ~[guava-21.0.jar:?] {}     at tschipp.carryon.client.event.RenderEvents.onRenderWorld(RenderEvents.java:334) ~[?:1.15.6.24] {re:classloading}     at net.minecraftforge.eventbus.ASMEventHandler_882_RenderEvents_onRenderWorld_RenderWorldLastEvent.invoke(.dynamic) ~[?:?] {}     at net.minecraftforge.eventbus.ASMEventHandler.invoke(ASMEventHandler.java:85) ~[eventbus-4.0.0.jar:?] {}     at net.minecraftforge.eventbus.EventBus$$Lambda$3607/1632506112.invoke(Unknown Source) ~[?:?] {}     at net.minecraftforge.eventbus.EventBus.post(EventBus.java:302) ~[eventbus-4.0.0.jar:?] {}     at net.minecraftforge.eventbus.EventBus.post(EventBus.java:283) ~[eventbus-4.0.0.jar:?] {}     at net.minecraftforge.client.ForgeHooksClient.dispatchRenderLast(ForgeHooksClient.java:201) ~[?:?] {re:classloading}     at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) ~[?:1.8.0_51] {}     at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62) ~[?:1.8.0_51] {}     at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) ~[?:1.8.0_51] {}     at java.lang.reflect.Method.invoke(Method.java:497) ~[?:1.8.0_51] {}     at net.optifine.reflect.Reflector.callVoid(Reflector.java:789) ~[?:?] {re:classloading}     at net.minecraft.client.renderer.GameRenderer.func_228378_a_(GameRenderer.java:1027) ~[?:?] {re:mixin,pl:accesstransformer:B,xf:OptiFine:default,xf:fml:fairylights:GameRendererTransformer,re:classloading,pl:accesstransformer:B,xf:OptiFine:default,xf:fml:fairylights:GameRendererTransformer,pl:mixin:APP:immersive_aircraft.mixins.json:GameRendererMixin,pl:mixin:APP:flywheel.mixins.json:StoreProjectionMatrixMixin,pl:mixin:APP:forge-mca.mixin.json:client.MixinGameRenderer,pl:mixin:APP:mixins.essential.json:events.Mixin_GuiDrawScreenEvent_Priority,pl:mixin:A}     at net.minecraft.client.renderer.GameRenderer.func_195458_a(GameRenderer.java:693) ~[?:?] {re:mixin,pl:accesstransformer:B,xf:OptiFine:default,xf:fml:fairylights:GameRendererTransformer,re:classloading,pl:accesstransformer:B,xf:OptiFine:default,xf:fml:fairylights:GameRendererTransformer,pl:mixin:APP:immersive_aircraft.mixins.json:GameRendererMixin,pl:mixin:APP:flywheel.mixins.json:StoreProjectionMatrixMixin,pl:mixin:APP:forge-mca.mixin.json:client.MixinGameRenderer,pl:mixin:APP:mixins.essential.json:events.Mixin_GuiDrawScreenEvent_Priority,pl:mixin:A}     at net.minecraft.client.Minecraft.func_195542_b(Minecraft.java:977) [?:?] {re:mixin,pl:accesstransformer:B,pl:runtimedistcleaner:A,re:mixin,pl:accesstransformer:B,pl:runtimedistcleaner:A,re:mixin,pl:accesstransformer:B,pl:runtimedistcleaner:A,re:classloading,pl:accesstransformer:B,pl:mixin:APP:abnormals_core.mixins.json:client.MinecraftMixin,pl:mixin:APP:mts.mixins.json:common.MinecraftMixin,pl:mixin:APP:flywheel.mixins.json:ShaderCloseMixin,pl:mixin:APP:architectury.mixins.json:MixinMinecraft,pl:mixin:APP:mixins.essential.json:client.Mixin_RunEssentialTasks,pl:mixin:APP:mixins.essential.json:client.MixinMinecraft,pl:mixin:APP:mixins.essential.json:client.gui.Mixin_FixKeybindUnpressedInEmoteWheel,pl:mixin:APP:mixins.essential.json:client.gui.Mixin_RecalculateMenuScale,pl:mixin:APP:mixins.essential.json:compatibility.forge.Mixin_FixInternalByteBufAccess,pl:mixin:APP:mixins.essential.json:compatibility.forge.Mixin_FixPrematureByteBufFree,pl:mixin:APP:mixins.essential.json:events.Mixin_RenderTickEvent,pl:mixin:A,pl:runtimedistcleaner:A}     at net.minecraft.client.Minecraft.func_99999_d(Minecraft.java:607) [?:?] {re:mixin,pl:accesstransformer:B,pl:runtimedistcleaner:A,re:mixin,pl:accesstransformer:B,pl:runtimedistcleaner:A,re:mixin,pl:accesstransformer:B,pl:runtimedistcleaner:A,re:classloading,pl:accesstransformer:B,pl:mixin:APP:abnormals_core.mixins.json:client.MinecraftMixin,pl:mixin:APP:mts.mixins.json:common.MinecraftMixin,pl:mixin:APP:flywheel.mixins.json:ShaderCloseMixin,pl:mixin:APP:architectury.mixins.json:MixinMinecraft,pl:mixin:APP:mixins.essential.json:client.Mixin_RunEssentialTasks,pl:mixin:APP:mixins.essential.json:client.MixinMinecraft,pl:mixin:APP:mixins.essential.json:client.gui.Mixin_FixKeybindUnpressedInEmoteWheel,pl:mixin:APP:mixins.essential.json:client.gui.Mixin_RecalculateMenuScale,pl:mixin:APP:mixins.essential.json:compatibility.forge.Mixin_FixInternalByteBufAccess,pl:mixin:APP:mixins.essential.json:compatibility.forge.Mixin_FixPrematureByteBufFree,pl:mixin:APP:mixins.essential.json:events.Mixin_RenderTickEvent,pl:mixin:A,pl:runtimedistcleaner:A}     at net.minecraft.client.main.Main.main(Main.java:184) [?:?] {re:classloading,pl:runtimedistcleaner:A}     at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) ~[?:1.8.0_51] {}     at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62) ~[?:1.8.0_51] {}     at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) ~[?:1.8.0_51] {}     at java.lang.reflect.Method.invoke(Method.java:497) ~[?:1.8.0_51] {}     at net.minecraftforge.fml.loading.FMLClientLaunchProvider.lambda$launchService$0(FMLClientLaunchProvider.java:37) [forge-1.16.5-36.2.42.jar:36.2] {}     at net.minecraftforge.fml.loading.FMLClientLaunchProvider$$Lambda$534/786047074.call(Unknown Source) [forge-1.16.5-36.2.42.jar:36.2] {}     at cpw.mods.modlauncher.LaunchServiceHandlerDecorator.launch(LaunchServiceHandlerDecorator.java:37) [modlauncher-8.1.3.jar:?] {}     at cpw.mods.modlauncher.LaunchServiceHandler.launch(LaunchServiceHandler.java:54) [modlauncher-8.1.3.jar:?] {}     at cpw.mods.modlauncher.LaunchServiceHandler.launch(LaunchServiceHandler.java:72) [modlauncher-8.1.3.jar:?] {}     at cpw.mods.modlauncher.Launcher.run(Launcher.java:82) [modlauncher-8.1.3.jar:?] {re:classloading}     at cpw.mods.modlauncher.Launcher.main(Launcher.java:66) [modlauncher-8.1.3.jar:?] {re:classloading} A detailed walkthrough of the error, its code path and all known details is as follows: --------------------------------------------------------------------------------------- -- Head -- Thread: Render thread Stacktrace:     at com.google.common.collect.ImmutableMap.checkNoConflict(ImmutableMap.java:186) ~[guava-21.0.jar:?] {}     at com.google.common.collect.RegularImmutableMap.checkNoConflictInKeyBucket(RegularImmutableMap.java:102) ~[guava-21.0.jar:?] {}     at com.google.common.collect.RegularImmutableMap.fromEntryArray(RegularImmutableMap.java:88) ~[guava-21.0.jar:?] {}     at com.google.common.collect.ImmutableMap$Builder.build(ImmutableMap.java:359) ~[guava-21.0.jar:?] {}     at tschipp.carryon.client.event.RenderEvents.onRenderWorld(RenderEvents.java:334) ~[?:1.15.6.24] {re:classloading}     at net.minecraftforge.eventbus.ASMEventHandler_882_RenderEvents_onRenderWorld_RenderWorldLastEvent.invoke(.dynamic) ~[?:?] {}     at net.minecraftforge.eventbus.ASMEventHandler.invoke(ASMEventHandler.java:85) ~[eventbus-4.0.0.jar:?] {}     at net.minecraftforge.eventbus.EventBus$$Lambda$3607/1632506112.invoke(Unknown Source) ~[?:?] {}     at net.minecraftforge.eventbus.EventBus.post(EventBus.java:302) ~[eventbus-4.0.0.jar:?] {}     at net.minecraftforge.eventbus.EventBus.post(EventBus.java:283) ~[eventbus-4.0.0.jar:?] {}     at net.minecraftforge.client.ForgeHooksClient.dispatchRenderLast(ForgeHooksClient.java:201) ~[?:?] {re:classloading}     at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) ~[?:1.8.0_51] {}     at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62) ~[?:1.8.0_51] {}     at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) ~[?:1.8.0_51] {}     at java.lang.reflect.Method.invoke(Method.java:497) ~[?:1.8.0_51] {}     at net.optifine.reflect.Reflector.callVoid(Reflector.java:789) ~[?:?] {re:classloading}     at net.minecraft.client.renderer.GameRenderer.func_228378_a_(GameRenderer.java:1027) ~[?:?] {re:mixin,pl:accesstransformer:B,xf:OptiFine:default,xf:fml:fairylights:GameRendererTransformer,re:classloading,pl:accesstransformer:B,xf:OptiFine:default,xf:fml:fairylights:GameRendererTransformer,pl:mixin:APP:immersive_aircraft.mixins.json:GameRendererMixin,pl:mixin:APP:flywheel.mixins.json:StoreProjectionMatrixMixin,pl:mixin:APP:forge-mca.mixin.json:client.MixinGameRenderer,pl:mixin:APP:mixins.essential.json:events.Mixin_GuiDrawScreenEvent_Priority,pl:mixin:A} -- Affected level -- Details:     All players: 1 total; [ClientPlayerEntity['Gilman100'/265, l='ClientLevel', x=141.50, y=70.00, z=-166.50]]     Chunk stats: Client Chunk Cache: 841, 27     Level dimension: minecraft:overworld     Level spawn location: World: (8,64,8), Chunk: (at 8,4,8 in 0,0; contains blocks 0,0,0 to 15,255,15), Region: (0,0; contains chunks 0,0 to 31,31, blocks 0,0,0 to 511,255,511)     Level time: 0 game time, 0 day time     Server brand: forge     Server type: Integrated singleplayer server Stacktrace:     at net.minecraft.client.world.ClientWorld.func_72914_a(ClientWorld.java:617) ~[?:?] {re:mixin,xf:OptiFine:default,re:classloading,xf:OptiFine:default,pl:mixin:APP:abnormals_core.mixins.json:client.ClientWorldMixin,pl:mixin:APP:architectury.mixins.json:MixinClientLevel,pl:mixin:APP:mixins.essential.json:feature.particles.Mixin_AddParticleSystemToClientWorld,pl:mixin:A}     at net.minecraft.client.Minecraft.func_71396_d(Minecraft.java:2031) [?:?] {re:mixin,pl:accesstransformer:B,pl:runtimedistcleaner:A,re:mixin,pl:accesstransformer:B,pl:runtimedistcleaner:A,re:mixin,pl:accesstransformer:B,pl:runtimedistcleaner:A,re:classloading,pl:accesstransformer:B,pl:mixin:APP:abnormals_core.mixins.json:client.MinecraftMixin,pl:mixin:APP:mts.mixins.json:common.MinecraftMixin,pl:mixin:APP:flywheel.mixins.json:ShaderCloseMixin,pl:mixin:APP:architectury.mixins.json:MixinMinecraft,pl:mixin:APP:mixins.essential.json:client.Mixin_RunEssentialTasks,pl:mixin:APP:mixins.essential.json:client.MixinMinecraft,pl:mixin:APP:mixins.essential.json:client.gui.Mixin_FixKeybindUnpressedInEmoteWheel,pl:mixin:APP:mixins.essential.json:client.gui.Mixin_RecalculateMenuScale,pl:mixin:APP:mixins.essential.json:compatibility.forge.Mixin_FixInternalByteBufAccess,pl:mixin:APP:mixins.essential.json:compatibility.forge.Mixin_FixPrematureByteBufFree,pl:mixin:APP:mixins.essential.json:events.Mixin_RenderTickEvent,pl:mixin:A,pl:runtimedistcleaner:A}     at net.minecraft.client.Minecraft.func_99999_d(Minecraft.java:628) [?:?] {re:mixin,pl:accesstransformer:B,pl:runtimedistcleaner:A,re:mixin,pl:accesstransformer:B,pl:runtimedistcleaner:A,re:mixin,pl:accesstransformer:B,pl:runtimedistcleaner:A,re:classloading,pl:accesstransformer:B,pl:mixin:APP:abnormals_core.mixins.json:client.MinecraftMixin,pl:mixin:APP:mts.mixins.json:common.MinecraftMixin,pl:mixin:APP:flywheel.mixins.json:ShaderCloseMixin,pl:mixin:APP:architectury.mixins.json:MixinMinecraft,pl:mixin:APP:mixins.essential.json:client.Mixin_RunEssentialTasks,pl:mixin:APP:mixins.essential.json:client.MixinMinecraft,pl:mixin:APP:mixins.essential.json:client.gui.Mixin_FixKeybindUnpressedInEmoteWheel,pl:mixin:APP:mixins.essential.json:client.gui.Mixin_RecalculateMenuScale,pl:mixin:APP:mixins.essential.json:compatibility.forge.Mixin_FixInternalByteBufAccess,pl:mixin:APP:mixins.essential.json:compatibility.forge.Mixin_FixPrematureByteBufFree,pl:mixin:APP:mixins.essential.json:events.Mixin_RenderTickEvent,pl:mixin:A,pl:runtimedistcleaner:A}     at net.minecraft.client.main.Main.main(Main.java:184) [?:?] {re:classloading,pl:runtimedistcleaner:A}     at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) ~[?:1.8.0_51] {}     at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62) ~[?:1.8.0_51] {}     at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) ~[?:1.8.0_51] {}     at java.lang.reflect.Method.invoke(Method.java:497) ~[?:1.8.0_51] {}     at net.minecraftforge.fml.loading.FMLClientLaunchProvider.lambda$launchService$0(FMLClientLaunchProvider.java:37) [forge-1.16.5-36.2.42.jar:36.2] {}     at net.minecraftforge.fml.loading.FMLClientLaunchProvider$$Lambda$534/786047074.call(Unknown Source) [forge-1.16.5-36.2.42.jar:36.2] {}     at cpw.mods.modlauncher.LaunchServiceHandlerDecorator.launch(LaunchServiceHandlerDecorator.java:37) [modlauncher-8.1.3.jar:?] {}     at cpw.mods.modlauncher.LaunchServiceHandler.launch(LaunchServiceHandler.java:54) [modlauncher-8.1.3.jar:?] {}     at cpw.mods.modlauncher.LaunchServiceHandler.launch(LaunchServiceHandler.java:72) [modlauncher-8.1.3.jar:?] {}     at cpw.mods.modlauncher.Launcher.run(Launcher.java:82) [modlauncher-8.1.3.jar:?] {re:classloading}     at cpw.mods.modlauncher.Launcher.main(Launcher.java:66) [modlauncher-8.1.3.jar:?] {re:classloading} -- System Details -- Details:     Minecraft Version: 1.16.5     Minecraft Version ID: 1.16.5     Operating System: Windows 10 (amd64) version 10.0     Java Version: 1.8.0_51, Oracle Corporation     Java VM Version: Java HotSpot(TM) 64-Bit Server VM (mixed mode), Oracle Corporation     Memory: 1589460336 bytes (1515 MB) / 4623171584 bytes (4409 MB) up to 6561988608 bytes (6258 MB)     CPUs: 12     JVM Flags: 4 total; -XX:HeapDumpPath=MojangTricksIntelDriversForPerformance_javaw.exe_minecraft.exe.heapdump -Xss1M -Xmx7040m -Xms256m     ModLauncher: 8.1.3+8.1.3+main-8.1.x.c94d18ec     ModLauncher launch target: fmlclient     ModLauncher naming: srg     ModLauncher services:          /mixin-0.8.4.jar mixin PLUGINSERVICE          /eventbus-4.0.0.jar eventbus PLUGINSERVICE          /forge-1.16.5-36.2.42.jar object_holder_definalize PLUGINSERVICE          /forge-1.16.5-36.2.42.jar runtime_enum_extender PLUGINSERVICE          /accesstransformers-3.0.1.jar accesstransformer PLUGINSERVICE          /forge-1.16.5-36.2.42.jar capability_inject_definalize PLUGINSERVICE          /forge-1.16.5-36.2.42.jar runtimedistcleaner PLUGINSERVICE          /mixin-0.8.4.jar mixin TRANSFORMATIONSERVICE          /OptiFine_1.16.5_HD_U_G8%20(1).jar OptiFine TRANSFORMATIONSERVICE          /essential_1-3-2-5_forge_1-16-5.jar essential-loader TRANSFORMATIONSERVICE          /forge-1.16.5-36.2.42.jar fml TRANSFORMATIONSERVICE      FML: 36.2     Forge: net.minecraftforge:36.2.42     FML Language Providers:          [email protected]         minecraft@1         [email protected]     Mod List:          TFTH 1.2.jar                                      |The_Flesh_That_Hates          |plaque                        |1.0.0               |DONE      |Manifest: NOSIGNATURE         BetterAnimationsCollection-v1.2.4-1.16.5-Forge.jar|Better Animations Collection  |betteranimationscollection    |1.2.4               |DONE      |Manifest: 9a:09:85:98:65:c4:8c:11:c5:49:f6:d6:33:23:39:df:8d:b4:ff:92:84:b8:bd:a5:83:9f:ac:7f:2a:d1:4b:6a         glasscutter-1.1.1-1.16.5.jar                      |Glasscutter                   |glasscutter                   |1.1.1               |DONE      |Manifest: NOSIGNATURE         supermartijn642configlib-1.1.8-forge-mc1.16.jar   |SuperMartijn642's Config Libra|supermartijn642configlib      |1.1.8               |DONE      |Manifest: NOSIGNATURE         Trin Civil Pack-1.16.5-3.22.0.jar                 |Immersive Vehicles (MTS/IV) - |iv_tcp_v3                     |3.20.0              |DONE      |Manifest: NOSIGNATURE         HMM19.3.1MC1.16.5.jar                             |Horror Movie Monsters         |hmm                           |19.3.1              |DONE      |Manifest: NOSIGNATURE         weeping_angels-36.0.1.jar                         |Weeping Angels                |weeping_angels                |36.0.1              |DONE      |Manifest: NOSIGNATURE         jei-1.16.5-7.8.0.1009.jar                         |Just Enough Items             |jei                           |7.8.0.1009          |DONE      |Manifest: NOSIGNATURE         VisualWorkbench-v1.1.0-1.16.5.jar                 |Visual Workbench              |visualworkbench               |1.1.0               |DONE      |Manifest: 9a:09:85:98:65:c4:8c:11:c5:49:f6:d6:33:23:39:df:8d:b4:ff:92:84:b8:bd:a5:83:9f:ac:7f:2a:d1:4b:6a         DoggyTalents-1.16.5-2.1.15.jar                    |Doggy Talents 2               |doggytalents                  |2.1.15              |DONE      |Manifest: NOSIGNATURE         abnormals_core-1.16.5-3.3.1.jar                   |Abnormals Core                |abnormals_core                |3.3.1               |DONE      |Manifest: NOSIGNATURE         mcw-windows-2.2.1-mc1.16.5forge.jar               |Macaw's Windows               |mcwwindows                    |2.2.1               |DONE      |Manifest: NOSIGNATURE         caelus-forge-1.16.5-2.1.3.2.jar                   |Caelus API                    |caelus                        |1.16.5-2.1.3.2      |DONE      |Manifest: NOSIGNATURE         immersive_aircraft-0.5.2+1.16.5-forge.jar         |Immersive Aircraft            |immersive_aircraft            |0.5.2+1.16.5        |DONE      |Manifest: NOSIGNATURE         KleeSlabs_1.16.5-9.2.1.jar                        |KleeSlabs                     |kleeslabs                     |9.2.1               |DONE      |Manifest: NOSIGNATURE         Waystones_1.16.5-7.6.4.jar                        |Waystones                     |waystones                     |7.6.4               |DONE      |Manifest: NOSIGNATURE         jev-1.16.3-2.0.1.jar                              |Just Enough Vehicles          |jev                           |2.0.1               |DONE      |Manifest: NOSIGNATURE         mcwfurnituresbop-1.16.5-1.3.jar                   |Macaw's Furnitures - BOP      |mcwfurnituresbop              |1.16.5-1.3          |DONE      |Manifest: NOSIGNATURE         Clumps-6.0.0.28.jar                               |Clumps                        |clumps                        |6.0.0.28            |DONE      |Manifest: NOSIGNATURE         journeymap-1.16.5-5.8.5p7.jar                     |Journeymap                    |journeymap                    |5.8.5p7             |DONE      |Manifest: NOSIGNATURE         CTM-MC1.16.1-1.1.2.6.jar                          |ConnectedTexturesMod          |ctm                           |MC1.16.1-1.1.2.6    |DONE      |Manifest: NOSIGNATURE         TravelersBackpack-1.16.5-5.4.51.jar               |Traveler's Backpack           |travelersbackpack             |5.4.51              |DONE      |Manifest: NOSIGNATURE         Artifacts-1.16.5-2.10.5.jar                       |Artifacts                     |artifacts                     |1.16.5-2.10.5       |DONE      |Manifest: NOSIGNATURE         FarmingForBlockheads_1.16.5-7.3.1.jar             |Farming for Blockheads        |farmingforblockheads          |7.3.1               |DONE      |Manifest: NOSIGNATURE         Bookshelf-Forge-1.16.5-10.4.33.jar                |Bookshelf                     |bookshelf                     |10.4.33             |DONE      |Manifest: eb:c4:b1:67:8b:f9:0c:db:dc:4f:01:b1:8e:61:64:39:4c:10:85:0b:a6:c4:c7:48:f0:fa:95:f2:cb:08:3a:e5         NCOBC-1.2.2.jar                                   |Non Craftable Items Become Cra|dolberhats                    |1.2.2               |DONE      |Manifest: NOSIGNATURE         table_top_craft-1.16-1.2.1.jar                    |Table Top Craft               |table_top_craft               |1.16-1.2.1          |DONE      |Manifest: NOSIGNATURE         mcw-doors-1.1.0forge-mc1.16.5.jar                 |Macaw's Doors                 |mcwdoors                      |1.1.0               |DONE      |Manifest: NOSIGNATURE         Immersive Vehicles-1.16.5-22.15.0.jar             |Immersive Vehicles (formerly M|mts                           |NONE                |DONE      |Manifest: NOSIGNATURE         JEITweaker-1.16.5-1.1.0.49.jar                    |JEI Tweaker                   |jeitweaker                    |1.1.0.49            |DONE      |Manifest: NOSIGNATURE         fusion-1.1.1-forge-mc1.16.jar                     |Fusion                        |fusion                        |1.1.1               |DONE      |Manifest: NOSIGNATURE         carryon-1.16.5-1.15.6.24.jar                      |Carry On                      |carryon                       |1.15.6.24           |DONE      |Manifest: NOSIGNATURE         CraftTweaker-1.16.5-7.1.2.527.jar                 |CraftTweaker                  |crafttweaker                  |7.1.2.527           |DONE      |Manifest: NOSIGNATURE         BotanyPots-1.16.5-7.1.41.jar                      |BotanyPots                    |botanypots                    |7.1.41              |DONE      |Manifest: eb:c4:b1:67:8b:f9:0c:db:dc:4f:01:b1:8e:61:64:39:4c:10:85:0b:a6:c4:c7:48:f0:fa:95:f2:cb:08:3a:e5         forge-1.16.5-36.2.42-universal.jar                |Forge                         |forge                         |36.2.42             |DONE      |Manifest: 22:af:21:d8:19:82:7f:93:94:fe:2b:ac:b7:e4:41:57:68:39:87:b1:a7:5c:c6:44:f9:25:74:21:14:f5:0d:90         Trin Parts Pack-1.16.5-2.23.1.jar                 |Immersive Vehicles (MTS/IV) - |iv_tpp                        |2.22.0              |DONE      |Manifest: NOSIGNATURE         refinedstorage-1.9.18.jar                         |Refined Storage               |refinedstorage                |1.9.18              |DONE      |Manifest: NOSIGNATURE         mcw-paths-1.0.5-1.16.5forge.jar                   |Macaw's Paths and Pavings     |mcwpaths                      |1.0.5               |DONE      |Manifest: NOSIGNATURE         corpse-1.16.5-1.0.6.jar                           |Corpse                        |corpse                        |1.16.5-1.0.6        |DONE      |Manifest: NOSIGNATURE         Scary_Mobs_And_Bosses-mod-1.16.5_1.2.0.jar        |Scary Mobs Mobs and Bosses    |scary_mobs_and_bosses         |1.2.0               |DONE      |Manifest: NOSIGNATURE         chipped-1.16.5-1.2.1-forge.jar                    |Chipped                       |chipped                       |1.16.5-1.2.1-forge  |DONE      |Manifest: NOSIGNATURE         forge-1.16.5-36.2.42-client.jar                   |Minecraft                     |minecraft                     |1.16.5              |DONE      |Manifest: NOSIGNATURE         UndeadExpansion_2.0.4_1.16.5_b.jar                |Undead Expansion              |undead_expansion              |2.0.4               |DONE      |Manifest: NOSIGNATURE         mcw-bridges-3.0.0-mc1.16.5forge.jar               |Macaw's Bridges               |mcwbridges                    |3.0.0               |DONE      |Manifest: NOSIGNATURE         FarmersDelight-1.16.5-0.6.0.jar                   |Farmer's Delight              |farmersdelight                |1.16.5-0.6.0        |DONE      |Manifest: NOSIGNATURE         ToolBelt-1.16.5-1.16.3.jar                        |Tool Belt                     |toolbelt                      |1.16.3              |DONE      |Manifest: NOSIGNATURE         BotanyTrees-1.16.5-3.0.12.jar                     |BotanyTrees                   |botanytrees                   |3.0.12              |DONE      |Manifest: eb:c4:b1:67:8b:f9:0c:db:dc:4f:01:b1:8e:61:64:39:4c:10:85:0b:a6:c4:c7:48:f0:fa:95:f2:cb:08:3a:e5         BiomesOPlenty-1.16.5-13.1.0.477-universal.jar     |Biomes O' Plenty              |biomesoplenty                 |1.16.5-13.1.0.477   |DONE      |Manifest: NOSIGNATURE         mcw-trapdoors-1.1.3-mc1.16.5forge.jar             |Macaw's Trapdoors             |mcwtrpdoors                   |1.1.3               |DONE      |Manifest: NOSIGNATURE         mcw-fences-1.1.1-mc1.16.5forge.jar                |Macaw's Fences and Walls      |mcwfences                     |1.1.1               |DONE      |Manifest: NOSIGNATURE         supermartijn642corelib-1.1.17a-forge-mc1.16.jar   |SuperMartijn642's Core Lib    |supermartijn642corelib        |1.1.17a             |DONE      |Manifest: NOSIGNATURE         fairylights-4.0.6-1.16.5.jar                      |Fairy Lights                  |fairylights                   |4.0.6               |DONE      |Manifest: NOSIGNATURE         RecipesLibrary-1.16.5-2.0.0.jar                   |Recipes Library               |recipes_lib                   |2.0.0               |DONE      |Manifest: NOSIGNATURE         jeiintegration_1.16.5-7.1.0.22.jar                |JEI Integration               |jeiintegration                |7.1.0.22            |DONE      |Manifest: NOSIGNATURE         SelectablePainting-1.16.5-2.0.1.jar               |Selectable Painting           |selectable_painting           |2.0.1               |DONE      |Manifest: NOSIGNATURE         plushies-1.2-1.16.5-forge.jar                     |Plushie Mod                   |plushies                      |1.2                 |DONE      |Manifest: NOSIGNATURE         flywheel-1.16-0.2.5.jar                           |Flywheel                      |flywheel                      |1.16-0.2.5          |DONE      |Manifest: NOSIGNATURE         curios-forge-1.16.5-4.1.0.0.jar                   |Curios API                    |curios                        |1.16.5-4.1.0.0      |DONE      |Manifest: NOSIGNATURE         sisser-1.7.jar                                    |Sisser                        |sisser                        |1.7                 |DONE      |Manifest: NOSIGNATURE         Croptopia-1.16.5-FORGE-2.0.5.jar                  |Croptopia                     |croptopia                     |2.0.5               |DONE      |Manifest: NOSIGNATURE         polymorph-forge-1.16.5-0.41.jar                   |Polymorph                     |polymorph                     |1.16.5-0.41         |DONE      |Manifest: NOSIGNATURE         abnormals_delight-1.16.5-1.2.1.jar                |Abnormals Delight             |abnormals_delight             |1.2.1               |DONE      |Manifest: NOSIGNATURE         StorageDrawers-1.16.3-8.5.2.jar                   |Storage Drawers               |storagedrawers                |8.5.2               |DONE      |Manifest: NOSIGNATURE         DiagonalFences-v1.1.1-1.16.5.jar                  |Diagonal Fences               |diagonalfences                |1.1.1               |DONE      |Manifest: 9a:09:85:98:65:c4:8c:11:c5:49:f6:d6:33:23:39:df:8d:b4:ff:92:84:b8:bd:a5:83:9f:ac:7f:2a:d1:4b:6a         DoubleSlabs-1.16-3.7.3.jar                        |Double Slabs                  |doubleslabs                   |3.7.3               |DONE      |Manifest: NOSIGNATURE         obfuscate-0.6.3-1.16.5.jar                        |Obfuscate                     |obfuscate                     |0.6.3               |DONE      |Manifest: NOSIGNATURE         vehicle-mod-0.45.2-1.16.3.jar                     |MrCrayfish's Vehicle Mod      |vehicle                       |0.45.2              |DONE      |Manifest: NOSIGNATURE         cfm-7.0.0pre22-1.16.3.jar                         |MrCrayfish's Furniture Mod    |cfm                           |7.0.0-pre22         |DONE      |Manifest: NOSIGNATURE         morecfm-1.3.1-1.16.3.jar                          |MrCrayfish's More Furniture Mo|morecfm                       |1.3.1               |DONE      |Manifest: NOSIGNATURE         architectury-1.32.68.jar                          |Architectury                  |architectury                  |1.32.68             |DONE      |Manifest: NOSIGNATURE         minecraft-comes-alive-7.3.23+1.16.5-universal.jar |Minecraft Comes Alive         |mca                           |7.3.23+1.16.5       |DONE      |Manifest: NOSIGNATURE         connectedglass-1.1.11-forge-mc1.16.jar            |Connected Glass               |connectedglass                |1.1.11              |DONE      |Manifest: NOSIGNATURE         Chisel-MC1.16.5-2.0.1-alpha.4.jar                 |Chisel                        |chisel                        |MC1.16.5-2.0.1-alpha|DONE      |Manifest: NOSIGNATURE         mcw-furniture-3.2.2-mc1.16.5forge.jar             |Macaw's Furniture             |mcwfurnitures                 |3.2.2               |DONE      |Manifest: NOSIGNATURE         apexcore-1.16.5-1.10.0.jar                        |ApexCore                      |apexcore                      |1.10.0              |DONE      |Manifest: NOSIGNATURE         fantasyfurniture-1.16.5-2.0.2.jar                 |Fantasy's Furniture           |fantasyfurniture              |2.0.2               |DONE      |Manifest: NOSIGNATURE         cloth-config-4.17.101-forge.jar                   |Cloth Config v4 API           |cloth-config                  |4.17.101            |DONE      |Manifest: NOSIGNATURE         PuzzlesLib-v1.0.15-1.16.5-Forge.jar               |Puzzles Lib                   |puzzleslib                    |1.0.15              |DONE      |Manifest: 9a:09:85:98:65:c4:8c:11:c5:49:f6:d6:33:23:39:df:8d:b4:ff:92:84:b8:bd:a5:83:9f:ac:7f:2a:d1:4b:6a         Aquaculture-1.16.5-2.1.23.jar                     |Aquaculture 2                 |aquaculture                   |1.16.5-2.1.23       |DONE      |Manifest: NOSIGNATURE         FallingTree-1.16.5-2.11.7.jar                     |FallingTree                   |fallingtree                   |2.11.7              |DONE      |Manifest: NOSIGNATURE         expandability-2.0.1-forge.jar                     |ExpandAbility                 |expandability                 |2.0.1               |DONE      |Manifest: NOSIGNATURE         geckolib-forge-1.16.5-3.0.106.jar                 |GeckoLib                      |geckolib3                     |3.0.106             |DONE      |Manifest: NOSIGNATURE         mcw-lights-1.0.6b-mc1.16.5forge.jar               |Macaw's Lights and Lamps      |mcwlights                     |1.0.6               |DONE      |Manifest: NOSIGNATURE         Essential (forge_1.16.5).jar                      |Essential                     |essential                     |1.3.2.5+ge4fdbcd438 |DONE      |Manifest: NOSIGNATURE         BetterAdvancements-1.16.5-0.1.1.115.jar           |Better Advancements           |betteradvancements            |0.1.1.115           |DONE      |Manifest: NOSIGNATURE     Crash Report UUID: 5a2a5800-3bd7-4640-9bbc-ef9573fc1d4b     Launched Version: forge-36.2.42     Backend library: LWJGL version 3.2.2 build 10     Backend API: NVIDIA GeForce RTX 2050/PCIe/SSE2 GL version 4.6.0 NVIDIA 546.80, NVIDIA Corporation     GL Caps: Using framebuffer using OpenGL 3.0     Using VBOs: Yes     Is Modded: Definitely; Client brand changed to 'forge'     Type: Client (map_client.txt)     Graphics mode: fancy     Resource Packs: vanilla, mod_resources, file/Invisible Item Frame Pack_1.16.4-1.0.zip, file/Mizunos 16 Craft JE CIT_1.16.4_beta-1.0.zip, file/Mizunos 16 Craft JE_1.16.4-1.0.zip     Current Language: English (US)     CPU: 12x AMD Ryzen 5 7535HS with Radeon Graphics      OptiFine Version: OptiFine_1.16.5_HD_U_G8     OptiFine Build: 20210515-161946     Render Distance Chunks: 12     Mipmaps: 4     Anisotropic Filtering: 1     Antialiasing: 0     Multitexture: false     Shaders: BSL_v8.2.09.zip     OpenGlVersion: 4.6.0 NVIDIA 546.80     OpenGlRenderer: NVIDIA GeForce RTX 2050/PCIe/SSE2     OpenGlVendor: NVIDIA Corporation     CpuCount: 12
    • I've been trying to give a little transparency to a block and a custom model, but I'm running into the same issue with the transparency of the block Some guides say I use ItemBlockRenderTypes.setRenderLayer in a ClientEvent class but its deprecated, I already tried to set a Properties in Properties.copy(Blocks.FLOWERPOT) But the render in game still doesn't has transparency, only as an Item  
    • My friends and I are modding to survive But recently I want to use cmd to open the server instead of making the single player game public But when I used two methods to start the server, I encountered two problems first A I used forge to install the server files Created using the original server jar The server was installed successfully and the mod was also loaded successfully. But after I replaced the world file with my survival map, I found that the mod items inside disappeared but could be taken from creation again. So I tried to install the server using forge first B I have studied forge for a long time but successfully installed it. But when I put in mods it crashed But mods can be installed on the server   我和我的朋友們正在mod為了生存 但是最近我想用cmd打開伺服器而不是把單人遊戲公開 但是當我使用兩種方法啟動伺服器時,我遇到了兩個問題 首先AI使用forge安裝伺服器檔案使用原始伺服器jar 建立伺服器已成功安裝,mod 也已成功載入。但是當我用我的生存地圖替換世界文件後,我發現裡面的mod物品消失了,但可以再次從創建中取出。所以我嘗試先使用forge安裝伺服器,BI研究了forge很久但成功安裝了它。但是當我安裝 mods 時它崩潰了但是 mods 可以安裝在伺服器上 我和我的朋友正在mod生存 但最近我想使用cmd開啟伺服器而不是單人遊戲公開   但是當我使用了兩種方法開啟伺服器時遇到了兩種問題   第1個A 我使用了forge安裝伺服器文件 在使用原版伺服器jar建立    伺服器安裝成功 mod也順利加載  但是我將我的生存地圖替換世界文件後發現裡面的mod物品消失了但可以再次從創造拿取  所以我嘗試使用forge安裝伺服器   第2個B forge我研究了很久但也成功安裝了 但是當我放入 mods 之後發生了崩潰 但是mods在1A伺服器上是可以安裝的 Ps 我用谷歌翻譯 so    
  • Topics

×
×
  • Create New...

Important Information

By using this site, you agree to our Terms of Use.