Jump to content

The capacity is different between the client and the server


ogachan1503

Recommended Posts

 

Hello!I'm Japanese Modder but there is little modding information in Japan,so I ask you.

I make a chest,that can have many item.

But when I open the inventory in Multiplay,The displayed amount in GUI and the amount in the chest are different.

For example,The chest has 101,985,303 items,but GUI shows 23 items

 

TileEntity

 

public abstract class TileEntityInfinityChestBase extends TileEntity implements ISidedInventory{
	/**チェストの中に入っているアイテム*/
	private ItemStack chestItem;
	/**INスロットにあるアイテム*/
	private ItemStack inputSlot;
	/**このチェストのContainer*/
	private static ContainerInfinity container=null;

	public int maxCapacity;

	public TileEntityInfinityChestBase(){
	}

	/**Containerを設定*/
	public void setContainer(ContainerInfinity cont){
		container=cont;
	}

	@Override
	public void markDirty(){
		if(isMax()){
			//満杯なら、INスロットにアイテムを表示させる
			this.inputSlot=getCopy(this.chestItem.getMaxStackSize());
		}
		//else if((this.chestItem!=null)&&this.maxCapacity-this.chestItem.stackSize<64) {
			//this.inputSlot=getCopy(this.chestItem.stackSize-this.maxCapacity+64);
	//	}
		else{
			//満杯でなければ何も表示しない
			this.inputSlot=null;
		}
		if(container!=null){
			//コンテナのスロットにアイテムを設定する
			container.changeSlot();
		}
		List<EntityPlayer> list=this.worldObj.playerEntities;
		for(EntityPlayer player:list){
			if((player instanceof EntityPlayerMP)){
				((EntityPlayerMP)player).playerNetServerHandler.sendPacket(getDescriptionPacket());
			}
		}
	}

	@Override
	public void updateEntity(){
	}

	/**チェストのアイテムを一個コピーして返す*/
	public ItemStack getCopy(){
		return getCopy(1);
	}

	/**チェストアイテムを引数の数だけコピーして返す*/
	public ItemStack getCopy(int size){
		if(!hasStack()){
			return null;
		}
		ItemStack stack=this.chestItem.copy();
		stack.stackSize=size;
		return stack;
	}

	/**チェスト内のアイテムを取得する*/
	public ItemStack getStack(){
		return this.chestItem;
	}

	/**チェスト内のアイテムを表示欄に設定する*/
	public void setStack(ItemStack stack){
		setStack(stack,false);
	}

	/**チェスト内のアイテムを表示欄に設定する*/
	public void setStack(ItemStack stack,boolean isBlockSet){
		if(isBlockSet){
			this.chestItem=stack;
			this.markDirty();
		}else{
			this.setInventorySlotContents(0,stack);
		}
	}

	/**チェストにアイテムが入っているか*/
	public boolean hasStack(){
		if((this.chestItem!=null)&&(this.chestItem.stackSize<=0)){
			this.chestItem=null;
		}
		return this.chestItem!=null;
	}

	/**チェストが満杯かどうか*/
	public boolean isMax(){
		return (this.chestItem!=null)&&(this.chestItem.stackSize>=this.maxCapacity);
	}

	/**渡されたItemStackとチェスト内のアイテムが同じかどうかを返す*/
	public boolean isItemEqual(ItemStack stack){
		return (this.chestItem!=null)&&(isStackable(stack))
				&&(stack.isItemEqual(this.chestItem));
	}

	/**渡されたItemStackがスタック可能かを返す*/
	public boolean isStackable(ItemStack stack){
		return (stack!=null)&&(!stack.hasTagCompound())&&((!stack.isItemDamaged())||(stack.getItemDamage()==0));
	}

	public ItemStack decSize(int size){
		return decrStackSize(0,size);
	}

	/**チェスト内のアイテムを引数分追加し、その後のアイテムスタックを返す*/
	public ItemStack addSize(int size){
		if(!this.hasStack()){
			return null;
		}
		ItemStack result=null;
		if(this.chestItem.stackSize+size>this.maxCapacity){
			//チェスト内のアイテムの数と足して溢れるなら
			result=this.chestItem.copy();
			result.stackSize=(this.maxCapacity-this.chestItem.stackSize);
			//余った分を計算する
			this.chestItem.stackSize=this.maxCapacity;
			//満杯にする
		}else{
			this.chestItem.stackSize+=size;
		}
		markDirty();
		return result;
	}

	/**チェスト内のアイテムに渡されたItemStack分を追加し、余った分を返す*/
	public int addStack(ItemStack itemstack){
		if(itemstack==null){
			return 0;
		}
		int size=itemstack.stackSize;
		if(!hasStack()){
			//何も入っていなければ
			this.chestItem=itemstack.copy();
			//アイテムをセット
			if(size>this.maxCapacity){
				this.chestItem.stackSize=this.maxCapacity;
			}
			size-=this.chestItem.stackSize;
			return size;
		}
		if(!isItemEqual(itemstack)){
			//渡されたアイテムスタックと内容物が違うなら元のサイズをそのまま返す
			return size;
		}
		if(this.chestItem.stackSize+size>this.maxCapacity){
			//内容物と元のサイズを足して余るようなら
			size=this.chestItem.stackSize+size-this.maxCapacity;
			//余った分を計算
			this.chestItem.stackSize=this.maxCapacity;
		}else{
			this.chestItem.stackSize+=size;
			size=0;
		}
		this.markDirty();
		return size;
	}

	public int decStack(ItemStack stack){
		return decStack(stack,0);
	}

	public int decStack(ItemStack stack,int itemLimit){
		if((!isItemEqual(stack))||(itemLimit<0)){
			return 0;
		}
		if(itemLimit==0){
			itemLimit=stack.getMaxStackSize();
		}
		if(stack.stackSize>=itemLimit){
			return 0;
		}
		int size=stack.stackSize;
		int max=itemLimit-size;
		if(max>=this.chestItem.stackSize){
			size=this.chestItem.stackSize;
			this.chestItem=null;
		}else{
			size=max;
			this.chestItem.stackSize-=max;
		}
		this.markDirty();
		return size;
	}

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

	@Override
	public ItemStack getStackInSlot(int slot){
//		if((this.chestItem!=null)&&this.maxCapacity-this.chestItem.stackSize<64) {
	//		ItemStack item=this.getCopy(this.chestItem.stackSize-this.maxCapacity+64);
		//	if(slot==1)
			//return item;
//		}
		return slot==1 ? this.inputSlot : this.chestItem;
	}

	@Override
	/**指定したスロットのアイテムを指定した分だけ減らす*/
	public ItemStack decrStackSize(int slot,int dec){
		if(!hasStack()){
			return null;
		}
		if(slot==1){
			//搬入スロットだったら何もしない
			return null;
		}
		if(this.chestItem.stackSize<=dec){
			//減らす分がチェストの内容量より大きければ
			ItemStack result=this.chestItem.copy();
			this.chestItem=null;
			//空にする
			markDirty();
			return result;
		}
		ItemStack result=this.chestItem.splitStack(dec);
		markDirty();
		return result;
	}

	@Override
	public ItemStack getStackInSlotOnClosing(int slot){
		return slot==1 ? this.inputSlot : this.chestItem;
	}

	@Override
	public void setInventorySlotContents(int slot,ItemStack setstack){
		if(slot==1){
			//搬入スロットにセットする場合
			int size=addStack(setstack);
			//とりあえず追加、余った分を取得
			if(size>0){
				//余っていれば
				setstack.stackSize=size;
			}else{
				if(this.chestItem!=null&&this.chestItem.stackSize<this.maxCapacity-64) {
					this.inputSlot=null;
				}
			}
		}else{
			//搬入スロットでなければ
			this.chestItem=setstack;
			if(this.chestItem!=null){
				if(this.chestItem.stackSize>this.maxCapacity){
					//最大容量超過なら
					this.chestItem.stackSize=this.maxCapacity;
					//最大容量にする
				}
			}
		}
		markDirty();
	}

	/**アイテムスタックをチェストの上にドロップさせる*/
	public void popItems(ItemStack stack,float height){
		float f=this.worldObj.rand.nextFloat()*0.8F+0.1F;
		float f1=this.worldObj.rand.nextFloat()*0.8F+0.1F;
		float f2=this.worldObj.rand.nextFloat()*0.8F+0.1F;
		EntityItem entityitem=new EntityItem(this.worldObj,this.xCoord+f,this.yCoord+f1+0.5F,this.zCoord+f2,stack);

		float f3=0.05F;
		entityitem.motionX=((float)this.worldObj.rand.nextGaussian()*f3);
		entityitem.motionY=((float)this.worldObj.rand.nextGaussian()*f3+height);
		entityitem.motionZ=((float)this.worldObj.rand.nextGaussian()*f3);
		this.worldObj.spawnEntityInWorld(entityitem);
	}

	@Override
	public int[] getAccessibleSlotsFromSide(int side){
		//上面からは搬入スロットにアクセスできる
		return new int[]{0,1};
	}

	@Override
	public boolean canExtractItem(int slot,ItemStack var2,int side){
		return slot==0;
	}

	@Override
	public boolean canInsertItem(int slot,ItemStack var2,int side){
		return isItemValidForSlot(slot,var2);
	}

	@Override
	public String getInventoryName(){
		return "";
	}

	@Override
	public boolean hasCustomInventoryName(){
		return false;
	}

	@Override
	/**指定したスロットに指定したItemStackが入るかを返す*/
	public boolean isItemValidForSlot(int slot,ItemStack var2){
		return (slot==1)&&((this.chestItem==null)
				||((this.chestItem.isItemEqual(var2))&&(ItemStack.areItemStackTagsEqual(this.chestItem,var2))));
	}

	@Override
	public void readFromNBT(NBTTagCompound nbt){
		super.readFromNBT(nbt);
		if(nbt.getTag("chestItem")!=null){
			this.chestItem=readFromNBTCustom((NBTTagCompound)nbt.getTag("chestItem"));
		}else{
			this.chestItem=null;
		}
	}

	@Override
	public void writeToNBT(NBTTagCompound nbt){
		super.writeToNBT(nbt);
		setNBT(nbt);
	}

	/**渡されたNBTに内容物の情報を書き込む*/
	public NBTTagCompound setNBT(NBTTagCompound nbt){
		NBTTagCompound nbtTagCompound=new NBTTagCompound();
		if(this.chestItem!=null){
			nbtTagCompound.setShort("id",(short)Item.getIdFromItem(this.chestItem.getItem()));
			nbtTagCompound.setInteger("Count",this.chestItem.stackSize);
			nbtTagCompound.setShort("Damage",(short)this.chestItem.getItemDamage());
			if(this.chestItem.stackTagCompound!=null){
				nbtTagCompound.setTag("tag",this.chestItem.stackTagCompound);
			}
		}
		nbt.setTag("chestItem",nbtTagCompound);
		return nbt;
	}

	/**渡されたNBTに渡されたItemStackの情報を書き込む*/
	public static NBTTagCompound setToNBTCustom(NBTTagCompound nbt,ItemStack stack){
		NBTTagCompound nbtTagCompound=new NBTTagCompound();
		if(stack!=null){
			nbtTagCompound.setShort("id",(short)Item.getIdFromItem(stack.getItem()));
			nbtTagCompound.setInteger("Count",stack.stackSize);
			nbtTagCompound.setShort("Damage",(short)stack.getItemDamage());
			if(stack.stackTagCompound!=null){
				nbtTagCompound.setTag("tag",stack.stackTagCompound);
			}
		}
		nbt.setTag("chestItem",nbtTagCompound);
		return nbt;
	}

	/**渡されたNBTから情報を書き出す*/
	public static ItemStack readFromNBTCustom(NBTTagCompound nbtTagCompound){
		if(nbtTagCompound==null){
			return null;
		}
		Item item=Item.getItemById(nbtTagCompound.getShort("id"));
		if(item==null){
			return null;
		}
		int stackSize=nbtTagCompound.getInteger("Count");
		int itemDamage=nbtTagCompound.getShort("Damage");
		if(itemDamage<0){
			itemDamage=0;
		}
		ItemStack itemStack=new ItemStack(item,stackSize,itemDamage);
		if(nbtTagCompound.hasKey("tag",10)){
			NBTTagCompound stackTagCompound=nbtTagCompound.getCompoundTag("tag");
			itemStack.setTagCompound(stackTagCompound);
		}
		return itemStack;
	}

	@Override
	/**インベントリの最大容量*/
	public int getInventoryStackLimit(){
		return this.maxCapacity;
	}

	@Override
	/**プレイヤーがこのTileEntityを使えるかどうか*/
	public boolean isUseableByPlayer(EntityPlayer par1EntityPlayer){
		return (this.worldObj.getTileEntity(this.xCoord,this.yCoord,this.zCoord)==this)
				||(par1EntityPlayer.getDistanceSq(this.xCoord+0.5D,this.yCoord+0.5D,this.zCoord+0.5D)<=64.0D);
	}

	@Override
	public void openInventory(){
		markDirty();
	}

	@Override
	public void closeInventory(){
		container=null;
		markDirty();
	}

	@Override
	public Packet getDescriptionPacket(){
		NBTTagCompound nbtTagCompound=new NBTTagCompound();
		writeToNBT(nbtTagCompound);
		return new S35PacketUpdateTileEntity(this.xCoord,this.yCoord,this.zCoord,1,nbtTagCompound);
	}

	//パケットの送受信
	@Override
	public void onDataPacket(NetworkManager net,S35PacketUpdateTileEntity pkt){
		readFromNBT(pkt.func_148857_g());
	}
}

Container

public class ContainerInfinity extends Container{

	private TileEntityInfinityChestBase chest;
	private InventoryPlayer playerInventory;
	private IInventory guiInventory=new InventoryBasic("slots",false,3);

	public ContainerInfinity(IInventory plInv, TileEntityInfinityChestBase tileInv){
		this.chest = tileInv;
		tileInv.setContainer(this);
		tileInv.openInventory();
		this.playerInventory = ((InventoryPlayer)plInv);
		addSlotToContainer(new SlotInfinity(tileInv, 0, 12, 21, false, false));
		//ディスプレイ
		addSlotToContainer(new SlotInfinity(tileInv, 1, 80, 63, true, true));
		//INスロット
		addSlotToContainer(new SlotInfinity(this.guiInventory, 1, 134, 63, true, false));
		//OUTスロット
		changeSlot();
		for (int y = 0; y < 3; y++) {
			for (int x = 0; x < 9; x++) {
				addSlotToContainer(new Slot(plInv, x + y * 9 + 9, 8 + x * 18, 84 + y * 18));
			}
		}
		for (int x = 0; x < 9; x++) {
			addSlotToContainer(new Slot(plInv, x, 8 + x * 18, 142));
		}
		
	}

	/**TileEntity内にアイテムがあればディスプレイスロットに設定する
	 * おそらくサーバー側でバグっている部分*/
	public void changeSlot(){
		if(!this.chest.hasStack()){
			this.guiInventory.setInventorySlotContents(1,null);
			return;
		}
		ItemStack chestStack=this.chest.getStack();
		int maxStack=chestStack.getMaxStackSize();
		ItemStack slot2=chestStack.copy();
		System.out.println(slot2.stackSize);
		if(slot2.stackSize>=maxStack){
			slot2.stackSize=maxStack;
		}
		this.guiInventory.setInventorySlotContents(1,slot2);
	}

	@Override
	public boolean canInteractWith(EntityPlayer player){
		return this.chest.isUseableByPlayer(player);
	}

	@Override
	/**スロットをクリックした際の処理
	 * slot:スロット番号、mouse:0=左、1=右、2=ミドル、isShift:0=false,1=true*/
	public ItemStack slotClick(int slot,int mouse,int isShift,EntityPlayer player){
		/*スロット番号
		 * 0:アイテム表示欄
		 * 1:搬入スロット
		 * 2:搬出スロット
		 * 3~38:プレイヤーインベントリ*/
		if((mouse>1)||(mouse<0)){
			//マウスの値が不正だった場合の処理
			return null;
		}
		if(slot==0){
			//アイテム表示欄をクリックした際、デバッグモードを使う
			return debugmode(mouse,isShift,player);
		}
		ItemStack stack=player.inventory.getItemStack();
		//今掴んでるアイテム
		if(stack==null){
			//何も掴んでない時
			if(slot==1){
				//搬入スロットクリック時は何もしない
				return null;
			}
			if(slot==2){
				//搬出スロットクリック時
				if(isShift!=1){
					//shift押していなければ掴む
					return outPickup(mouse,player.inventory);
				}
				//プレイヤーインベントリに追加
				return addInventory(player.inventory);
			}
			if((isShift!=1)||(slot<0)){
				return super.slotClick(slot,mouse,isShift,player);
			}
			return addChest(slot,player.inventory);
		}
		if(slot==1){
			//搬入スロットクリック時
			if(isShift!=1){
				//シフトを押していなければ
				return addChest(stack,mouse,player.inventory);
			}
			return addChest(stack,player.inventory);
			//一括移動
		}
		if(slot==2){
			//搬出スロットクリック時は何もしない
			return null;
		}
		if((isShift!=1)||(slot<0)){
			return super.slotClick(slot,mouse,isShift,player);
		}
		return addInventory(stack,player.inventory);
	}

	protected ItemStack outPickup(int mouse,InventoryPlayer playerInventory){
		ItemStack slotStack=this.guiInventory.getStackInSlot(1);
		if(slotStack==null){
			return null;
		}
		int size=slotStack.stackSize;
		if(mouse==1){
			size=(size&0x1)+(size>>1);
		}
		playerInventory.setItemStack(slotStack.splitStack(size));
		ItemStack result=this.chest.decSize(size);
		changeSlot();
		return result;
	}

	/**アイテムをチェストに入れる(掴んでる分だけ)*/
	protected ItemStack addChest(ItemStack stack,int mouse,InventoryPlayer playerInventory){
		if(!this.chest.isStackable(stack)){
			return null;
		}
		if(mouse==1){
			ItemStack copy=stack.copy();
			copy.stackSize=1;
			if(addChest(copy)==null){
				playerInventory.setItemStack(decStack(stack,1));
				changeSlot();
			}
			return null;
		}
		playerInventory.setItemStack(addChest(stack));
		return null;
	}

	/**アイテムをチェストに入れる(一括移動)*/
	protected ItemStack addChest(ItemStack stack,InventoryPlayer playerInventory){
		if(addChest(stack)==null){
			playerInventory.setItemStack(null);
		}
		for(int i=0;i<36;i++){
			Slot cs=(Slot)this.inventorySlots.get(i+3);
			ItemStack slotStack=cs.getStack();
			if((this.chest.isItemEqual(slotStack))&&(addChest(i+3,playerInventory)!=null)){
				return null;
			}
		}
		return null;
	}

	/**プレイヤーの与えられたスロットのアイテムをチェストに追加する*/
	protected ItemStack addChest(int slot,InventoryPlayer playerInventory){
		
		Slot cs=(Slot)this.inventorySlots.get(slot);
		ItemStack slotStack=cs.getStack();
		ItemStack result=null;
		if(slotStack!=null){
			result=addChest(slotStack);
		}
		cs.putStack(result);
		changeSlot();
		return result;
	}

	protected ItemStack addChest(ItemStack stack){
		if(!this.chest.isStackable(stack)){
			return stack;
		}
		if(!this.chest.hasStack()){
			this.chest.setStack(stack);
			changeSlot();
			return null;
		}
		if(this.chest.getStack().stackSize>=chest.maxCapacity){
			return stack;
		}
		if(!this.chest.isItemEqual(stack)){
			return stack;
		}
		ItemStack result=this.chest.addSize(stack.stackSize);
		int size=result==null ? stack.stackSize : result.stackSize;
		ItemStack result2=decStack(stack,size);
		changeSlot();
		return result2;
	}

	/**与えられたアイテムスタックを、指定数減らして返す*/
	public ItemStack decStack(ItemStack stack,int size){
		stack.stackSize-=size;
		if(stack.stackSize<=0){
			stack=null;
		}
		return stack;
	}

	/**プレイヤーにアイテムを追加する*/
	protected ItemStack addInventory(InventoryPlayer playerInventory){
		ItemStack stack=this.guiInventory.getStackInSlot(1);
		//INスロットを確認
		if(stack==null){
			return null;
		}
		int sizeA=stack.stackSize;
		//INスロットのアイテムの数を取得
		ItemStack result=addInventory(stack);
		
		int size = result==null?0:result.stackSize;
		this.chest.decSize(sizeA-size);
		changeSlot();
		return result;
	}

	/**与えられたアイテムスタックをプレイヤーに追加する*/
	protected ItemStack addInventory(ItemStack stack,InventoryPlayer playerInventory){
		if(!this.chest.isItemEqual(stack)){
			return null;
		}
		this.chest.getStack().stackSize+=stack.stackSize;
		playerInventory.setItemStack(null);
		ItemStack result=addInventory(this.chest.getStack());
		this.chest.setStack(result);
		changeSlot();
		return result;
	}

	protected ItemStack addInventory(ItemStack stack){
		if(!this.chest.isItemEqual(stack)){
			return stack;
		}
		int stacksize=stack.stackSize;
		//追加するアイテムのスタック数
		for(int i=0;i<36;i++){
			if(stacksize<=0){
				break;
			}
			Slot cs=(Slot)this.inventorySlots.get(i+3);
			ItemStack slotStack=cs.getStack();
			if(((slotStack==null)||(this.chest.isItemEqual(slotStack)))
					&&((slotStack==null)||(slotStack.stackSize!=slotStack.getMaxStackSize()))){
				int size;
				//
				if(slotStack!=null){
					size=stack.getMaxStackSize()-slotStack.stackSize;
				}else{
					size=stack.getMaxStackSize();
				}
				if(size>0){
					ItemStack putStack=stack.copy();
					putStack.stackSize=(slotStack==null ? 0 : slotStack.stackSize);
					if(stacksize<size){
						size=stacksize;
					}
					putStack.stackSize+=size;
					decStack(stack,size);
					stacksize-=size;
					cs.putStack(putStack);
					if(stacksize<=0){
						stacksize=0;
						break;
					}
				}
			}
		}
		stack.stackSize=stacksize;
		if(stacksize<=0){
			stack=null;
		}
		return stack;
	}

	public ItemStack debugmode(int mouse,int isShift,EntityPlayer player){
		if(player.capabilities.isCreativeMode){
			if(mouse==0){
				this.chest.addSize(isShift==1 ? 100000000 : 64);
			}else{
				this.chest.decSize(isShift==1 ? 100000000 : 64);
			}
			changeSlot();
		}
		return null;
	}

	@Override
	public void onContainerClosed(EntityPlayer player){
		super.onContainerClosed(player);
		this.chest.closeInventory();
	}
}

GUI

@SideOnly(Side.CLIENT)
public class GuiInfinity extends GuiContainer{
	private IInventory player;
	private TileEntityInfinityChestBase tile;
	private static final ResourceLocation GUI=new ResourceLocation("storagemod","textures/gui/infinity.png");
	public static Logger logger = LogManager.getLogger("StorageMod");

	public GuiInfinity(IInventory playerInventory, TileEntityInfinityChestBase tileInventory){
		super(new ContainerInfinity(playerInventory, tileInventory));
		itemRender = new RenderItemInfinity();
		this.player = playerInventory;
		this.tile = tileInventory;
		this.xSize = 176;
		this.ySize = 166;
	}

	@Override
	/**GUIの描画(前面)*/
	protected void drawGuiContainerForegroundLayer(int p_146979_1_,int p_146979_2_){
		this.fontRendererObj.drawString(String.format(StatCollector.translateToLocal(this.tile.getInventoryName()),new Object[]{ClientStringUtils.formatMax(tile.getInventoryStackLimit())}),8,5,4210752);
		this.fontRendererObj.drawString(StatCollector.translateToLocal(this.player.getInventoryName()),8,72,4210752);
		if(this.tile.hasStack()){
			ItemStack stack=this.tile.getStack();
			//何故か数がおかしい
			String name=stack.getDisplayName();
			this.fontRendererObj.drawString(name,35,17,4210752);
			//アイテムの名前を表示

			String count=ClientStringUtils.formatStack(stack.stackSize);
			this.fontRendererObj.drawString(count,47,29,4210752);
			//アイテム数を表示
			String lc=ClientStringUtils.formatLC(stack.stackSize);
			this.fontRendererObj.drawString(lc,164-this.fontRendererObj.getStringWidth(lc),40,4210752);
			//アイテム数のLC換算を表示
			ArrayList info=new ArrayList();
			stack.getItem().addInformation(stack,ClientStringUtils.mc.thePlayer,info,false);
			if(info.size()>0){
				for(int i=0;i<info.size();i++){
					this.fontRendererObj.drawString((String)info.get(i),7,42+i*10,4210752);
				}
			}
		}
	}

	@Override
	/**GUIの描画(後面)*/
	protected void drawGuiContainerBackgroundLayer(float par1,int par2,int par3){
		GL11.glColor4f(1.0F,1.0F,1.0F,1.0F);
		this.mc.renderEngine.bindTexture(GUI);
		int x=(this.width-this.xSize)/2;
		int y=(this.height-this.ySize)/2;
		drawTexturedModalRect(x,y,0,0,this.xSize,this.ySize);
	}

}

I think the synchronization process doesn't work on the client and server,but true cause isn't clear

 

 

Modding environment:

Minecraft version:1.7.10

Forge 10.13.4.1558

2020-09-26_11.28.16.png

2020-09-26_11.28.20.png

Edited by ogachan1503
Link to comment
Share on other sites

1 hour ago, ogachan1503 said:

Thanks for replying.

Oh....I'm sorry.

To explain, we can't support old versions forever as doing so requires people who know the version and as new versions come out, people not using the old version forget how to work with it.

Apparently I'm a complete and utter jerk and come to this forum just like to make fun of people, be confrontational, and make your personal life miserable.  If you think this is the case, JUST REPORT ME.  Otherwise you're just going to get reported when you reply to my posts and point it out, because odds are, I was trying to be nice.

 

Exception: If you do not understand Java, I WILL NOT HELP YOU and your thread will get locked.

 

DO NOT PM ME WITH PROBLEMS. No help will be given.

Link to comment
Share on other sites

Guest
This topic is now closed to further replies.

Announcements



  • Recently Browsing

    • No registered users viewing this page.
  • Posts

    • Recent testing for a new minecraft modpack has been hitting a snag. the beta version of https://www.curseforge.com/minecraft/modpacks/growing-villages-2 i have been running into issues with a few errors i cant seem to get past. see logs latest https://pastebin.com/jqWtHtw5 Debug https://drive.google.com/file/d/1hf6S3NMrZ50KT3TTmxfPQTA63I3ljPLs/view?usp=sharing specificly lines such as [02Dec2023 21:10:32.700] [Server thread/WARN] [net.dries007.tfc.util.calendar.Calendar/]: Calendar is out of sync - trying to fix: Calendar = false, Daylight = false, Sync = 6 Attempted to load class net/minecraft/client/Minecraft for invalid dist DEDICATED_SERVER [main/WARN] [mixin/]: Error loading class: vectorwing/farmersdelight/client/renderer/CanvasSignRenderer (a mod i have removed entirely. ) i am unable to get the server to load to the point a client can connect but client side works as normal. it feels like a client mod is still enabled but i cant seem to trace it down. any help is appreciated.
    • Hi, I was wondering if you could expand on this? I'm trying to remove the clouds from my custom dimension but I don't really know where to start.
    • My server console: INFO java.lang.NullPointerException: Cannot invoke "net.minecraft.server.level.ServerLevel.m_6857_()" because "serverlevel2" is null 02.12 22:25:44 [Server] net.minecraft.server.MinecraftServer.m_129885_(MinecraftServer.java:513) ~[server-1.20.1-20230612.114412-srg.jar%23225!/:? {re:mixin,pl:accesstransformer:B,re:classloading,pl:accesstransformer:B,pl:mixin:A} 02.12 22:25:44 [Server] net.minecraft.server.MinecraftServer.m_7041_(MinecraftServer.java:584) ~[server-1.20.1-20230612.114412-srg.jar%23225!/:? {re:mixin,pl:accesstransformer:B,re:classloading,pl:accesstransformer:B,pl:mixin:A} 02.12 22:25:44 [Server] net.minecraft.server.dedicated.DedicatedServer.m_7041_(DedicatedServer.java:510) ~[server-1.20.1-20230612.114412-srg.jar%23225!/:? {re:mixin,pl:accesstransformer:B,re:classloading,pl:accesstransformer:B,pl:mixin:APP:tombstone.mixins.json:DedicatedServerMixin,pl:mixin:A} 02.12 22:25:44 [Server] net.minecraft.server.MinecraftServer.m_130011_(MinecraftServer.java:689) ~[server-1.20.1-20230612.114412-srg.jar%23225!/:? {re:mixin,pl:accesstransformer:B,re:classloading,pl:accesstransformer:B,pl:mixin:A} 02.12 22:25:44 [Multicraft] Server shut down (running) 02.12 22:25:44 [Multicraft] Not restarting crashed server. 02.12 22:25:44 [Multicraft] Stopping server! 02.12 22:25:46 [Multicraft] Server stopped ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- Crash file:  ---- Minecraft Crash Report ---- // Oops. Time: 2023-12-02 22:25:43 Description: Exception in server tick loop java.lang.NullPointerException: Cannot invoke "com.google.gson.JsonArray.iterator()" because "$$1" is null     at net.minecraft.server.players.StoredUserList.m_11399_(StoredUserList.java:121) ~[server-1.20.1-20230612.114412-srg.jar%23225!/:?] {re:classloading}     at net.minecraft.server.dedicated.DedicatedPlayerList.m_139596_(DedicatedPlayerList.java:85) ~[server-1.20.1-20230612.114412-srg.jar%23225!/:?] {re:classloading}     at net.minecraft.server.dedicated.DedicatedPlayerList.<init>(DedicatedPlayerList.java:24) ~[server-1.20.1-20230612.114412-srg.jar%23225!/:?] {re:classloading}     at net.minecraft.server.dedicated.DedicatedServer.m_7038_(DedicatedServer.java:158) ~[server-1.20.1-20230612.114412-srg.jar%23225!/:?] {re:mixin,pl:accesstransformer:B,re:classloading,pl:accesstransformer:B,pl:mixin:APP:tombstone.mixins.json:DedicatedServerMixin,pl:mixin:A}     at net.minecraft.server.MinecraftServer.m_130011_(MinecraftServer.java:634) ~[server-1.20.1-20230612.114412-srg.jar%23225!/:?] {re:mixin,pl:accesstransformer:B,re:classloading,pl:accesstransformer:B,pl:mixin:A}     at net.minecraft.server.MinecraftServer.m_206580_(MinecraftServer.java:251) ~[server-1.20.1-20230612.114412-srg.jar%23225!/:?] {re:mixin,pl:accesstransformer:B,re:classloading,pl:accesstransformer:B,pl:mixin:A}     at java.lang.Thread.run(Thread.java:833) ~[?:?] {re:mixin} A detailed walkthrough of the error, its code path and all known details is as follows: --------------------------------------------------------------------------------------- -- System Details -- Details:     Minecraft Version: 1.20.1     Minecraft Version ID: 1.20.1     Operating System: Linux (amd64) version 4.15.0-206-generic     Java Version: 17, Oracle Corporation     Java VM Version: OpenJDK 64-Bit Server VM (mixed mode, sharing), Oracle Corporation     Memory: 554926416 bytes (529 MiB) / 1665138688 bytes (1588 MiB) up to 6442450944 bytes (6144 MiB)     CPUs: 24     Processor Vendor: AuthenticAMD     Processor Name: AMD Ryzen 9 3900X 12-Core Processor     Identifier: AuthenticAMD Family 23 Model 113 Stepping 0     Microarchitecture: Zen 2     Frequency (GHz): -0.00     Number of physical packages: 1     Number of physical CPUs: 12     Number of logical CPUs: 24     Graphics card #0 name: ASPEED Graphics Family     Graphics card #0 vendor: ASPEED Technology, Inc. (0x1a03)     Graphics card #0 VRAM (MB): 0.00     Graphics card #0 deviceId: 0x2000     Graphics card #0 versionInfo: unknown     Virtual memory max (MB): 70588.73     Virtual memory used (MB): 99740.80     Swap memory total (MB): 6144.00     Swap memory used (MB): 46.75     JVM Flags: 2 total; -Xmx6144M -Xms512M     Server Running: true     Data Packs: vanilla, mod:betterdungeons, mod:villagesandpillages (incompatible), mod:supermartijn642configlib (incompatible), mod:mutantmonsters, mod:rechiseled (incompatible), mod:geckolib, mod:jei, mod:graveyard (incompatible), mod:libraryferret, mod:goblintraders (incompatible), mod:dynamiclights (incompatible), mod:sophisticatedcore (incompatible), mod:reap, mod:waystones, mod:monsterplus (incompatible), mod:forgeendertech, mod:structory, mod:journeymap (incompatible), mod:citadel (incompatible), mod:alexsmobs (incompatible), mod:artifacts, mod:yungsapi, mod:mixinextras (incompatible), mod:dungeoncrawl, mod:sophisticatedbackpacks (incompatible), mod:balm, mod:terralith, mod:fusion, mod:usefulslime (incompatible), mod:imst, mod:puzzlesaccessapi, mod:betterfortresses, mod:cloth_config (incompatible), mod:forge, mod:twilightforest, mod:supplementaries, mod:geophilic, mod:athena, mod:dungeons_arise, mod:chipped (incompatible), mod:vanillaplustools (incompatible), mod:moonlight (incompatible), mod:mixinsquared (incompatible), mod:jade (incompatible), mod:creativecore, mod:sleep_tight (incompatible), mod:supermartijn642corelib (incompatible), mod:curios (incompatible), mod:brutalbosses (incompatible), mod:securitycraft, mod:bettervillage, mod:elevatorid, mod:betterstrongholds, mod:tombstone, mod:resourcefullib (incompatible), mod:architectury (incompatible), mod:appleskin (incompatible), mod:cupboard (incompatible), mod:puzzleslib, mod:jadeaddons (incompatible), mod:framework, mod:expandability (incompatible), mod:bettermineshafts, mod:playerrevive, mod:cristellib (incompatible), Supplementaries Generated Pack, mutantmonsters:biome_modifications     Enabled Feature Flags: minecraft:vanilla     World Generation: Experimental     Is Modded: Definitely; Server brand changed to 'forge'     Type: Dedicated Server (map_server.txt)     ModLauncher: 10.0.9+10.0.9+main.dcd20f30     ModLauncher launch target: forgeserver     ModLauncher naming: srg     ModLauncher services:          mixin-0.8.5.jar mixin PLUGINSERVICE          eventbus-6.0.5.jar eventbus PLUGINSERVICE          fmlloader-1.20.1-47.2.8.jar slf4jfixer PLUGINSERVICE          fmlloader-1.20.1-47.2.8.jar object_holder_definalize PLUGINSERVICE          fmlloader-1.20.1-47.2.8.jar runtime_enum_extender PLUGINSERVICE          fmlloader-1.20.1-47.2.8.jar capability_token_subclass PLUGINSERVICE          accesstransformers-8.0.4.jar accesstransformer PLUGINSERVICE          fmlloader-1.20.1-47.2.8.jar runtimedistcleaner PLUGINSERVICE          modlauncher-10.0.9.jar mixin TRANSFORMATIONSERVICE          modlauncher-10.0.9.jar fml TRANSFORMATIONSERVICE      FML Language Providers:          minecraft@1.0         lowcodefml@null         javafml@null     Mod List:          YungsBetterDungeons-1.20-Forge-4.0.3.jar          |YUNG's Better Dungeons        |betterdungeons                |1.20-Forge-4.0.3    |DONE      |Manifest: NOSIGNATURE         villagesandpillages-forge-mc1.20.1-1.0.0.jar      |Villages&Pillages             |villagesandpillages           |1.0.0               |DONE      |Manifest: NOSIGNATURE         supermartijn642configlib-1.1.8-forge-mc1.20.jar   |SuperMartijn642's Config Libra|supermartijn642configlib      |1.1.8               |DONE      |Manifest: NOSIGNATURE         MutantMonsters-v8.0.4-1.20.1-Forge.jar            |Mutant Monsters               |mutantmonsters                |8.0.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         rechiseled-1.1.5c-forge-mc1.20.jar                |Rechiseled                    |rechiseled                    |1.1.5c              |DONE      |Manifest: NOSIGNATURE         geckolib-forge-1.20.1-4.2.4.jar                   |GeckoLib 4                    |geckolib                      |4.2.4               |DONE      |Manifest: NOSIGNATURE         jei-1.20.1-forge-15.2.0.27.jar                    |Just Enough Items             |jei                           |15.2.0.27           |DONE      |Manifest: NOSIGNATURE         The_Graveyard_2.6.2_(FORGE)_for_1.20+.jar         |The Graveyard                 |graveyard                     |2.6.2               |DONE      |Manifest: NOSIGNATURE         libraryferret-forge-1.20.1-4.0.0.jar              |Library ferret                |libraryferret                 |4.0.0               |DONE      |Manifest: NOSIGNATURE         goblintraders-forge-1.20.1-1.9.3.jar              |Goblin Traders                |goblintraders                 |1.9.3               |DONE      |Manifest: 0d:78:5f:44:c0:47:0c:8c:e2:63:a3:04:43:d4:12:7d:b0:7c:35:37:dc:40:b1:c1:98:ec:51:eb:3b:3c:45:99         dynamiclights-1.20.1.2.jar                        |Dynamic Lights                |dynamiclights                 |1.20.1.2            |DONE      |Manifest: NOSIGNATURE         sophisticatedcore-1.20.1-0.5.107.496.jar          |Sophisticated Core            |sophisticatedcore             |0.5.107.496         |DONE      |Manifest: NOSIGNATURE         reap-1.20.1-1.0.2.jar                             |Reap Mod                      |reap                          |1.20.1-1.0.2        |DONE      |Manifest: NOSIGNATURE         waystones-forge-1.20-14.0.2.jar                   |Waystones                     |waystones                     |14.0.2              |DONE      |Manifest: NOSIGNATURE         MonsterPlus-Forge1.20.1-v1.1.6.1.jar              |Monster Plus                  |monsterplus                   |1.0                 |DONE      |Manifest: NOSIGNATURE         ForgeEndertech-1.20.1-11.1.0.0-build.0142.jar     |ForgeEndertech                |forgeendertech                |11.1.0.0            |DONE      |Manifest: NOSIGNATURE         Structory_1.20.2_v1.3.3.jar                       |Structory                     |structory                     |1.3.3               |DONE      |Manifest: NOSIGNATURE         journeymap-1.20.1-5.9.18-neoforge.jar             |Journeymap                    |journeymap                    |5.9.18              |DONE      |Manifest: NOSIGNATURE         citadel-2.4.9-1.20.1.jar                          |Citadel                       |citadel                       |2.4.9               |DONE      |Manifest: NOSIGNATURE         alexsmobs-1.22.6.jar                              |Alex's Mobs                   |alexsmobs                     |1.22.6              |DONE      |Manifest: NOSIGNATURE         artifacts-forge-9.2.0.jar                         |Artifacts                     |artifacts                     |9.2.0               |DONE      |Manifest: NOSIGNATURE         YungsApi-1.20-Forge-4.0.2.jar                     |YUNG's API                    |yungsapi                      |1.20-Forge-4.0.2    |DONE      |Manifest: NOSIGNATURE         mixinextras-forge-0.2.1-beta.2.jar                |MixinExtras                   |mixinextras                   |0.2.1-beta.2        |DONE      |Manifest: NOSIGNATURE         Dungeon+Crawl-1.20.1-2.3.14.jar                   |Dungeon Crawl                 |dungeoncrawl                  |2.3.14              |DONE      |Manifest: NOSIGNATURE         sophisticatedbackpacks-1.20.1-3.18.68.952.jar     |Sophisticated Backpacks       |sophisticatedbackpacks        |3.18.68.952         |DONE      |Manifest: NOSIGNATURE         balm-forge-1.20.1-7.1.4.jar                       |Balm                          |balm                          |7.1.4               |DONE      |Manifest: NOSIGNATURE         Terralith_1.20.2_v2.4.8.jar                       |Terralith                     |terralith                     |2.4.8               |DONE      |Manifest: NOSIGNATURE         fusion-1.1.0b-forge-mc1.20.1.jar                  |Fusion                        |fusion                        |1.1.0b              |DONE      |Manifest: NOSIGNATURE         UsefulSlime-forge-1.20.2-1.7.1.jar                |Useful Slime                  |usefulslime                   |1.7.1               |DONE      |Manifest: NOSIGNATURE         imst-2.1.0.jar                                    |Immersive Structures          |imst                          |2.1.0               |DONE      |Manifest: NOSIGNATURE         puzzlesaccessapi-forge-8.0.7.jar                  |Puzzles Access Api            |puzzlesaccessapi              |8.0.7               |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         YungsBetterNetherFortresses-1.20-Forge-2.0.5.jar  |YUNG's Better Nether Fortresse|betterfortresses              |1.20-Forge-2.0.5    |DONE      |Manifest: NOSIGNATURE         cloth-config-11.1.106-forge.jar                   |Cloth Config v10 API          |cloth_config                  |11.1.106            |DONE      |Manifest: NOSIGNATURE         forge-1.20.1-47.2.8-universal.jar                 |Forge                         |forge                         |47.2.8              |DONE      |Manifest: 84:ce:76:e8:45:35:e4:0e:63:86:df:47:59:80:0f:67:6c:c1:5f:6e:5f:4d:b3:54:47:1a:9f:7f:ed:5e:f2:90         twilightforest-1.20.1-4.3.1893-universal.jar      |The Twilight Forest           |twilightforest                |4.3.1893            |DONE      |Manifest: NOSIGNATURE         supplementaries-1.20-2.6.31.jar                   |Supplementaries               |supplementaries               |1.20-2.6.31         |DONE      |Manifest: NOSIGNATURE         geophilic-v2.1.0-mc1.20u1.20.2.jar                |Geophilic                     |geophilic                     |2.1.0-mc1.20u1.20.2 |DONE      |Manifest: NOSIGNATURE         athena-forge-1.20.1-3.1.1.jar                     |Athena                        |athena                        |3.1.1               |DONE      |Manifest: NOSIGNATURE         DungeonsArise-1.20.1-2.1.57-release.jar           |When Dungeons Arise           |dungeons_arise                |2.1.57-1.20.1       |DONE      |Manifest: NOSIGNATURE         chipped-forge-1.20.1-3.0.1.jar                    |Chipped                       |chipped                       |3.0.1               |DONE      |Manifest: NOSIGNATURE         server-1.20.1-20230612.114412-srg.jar             |Minecraft                     |minecraft                     |1.20.1              |DONE      |Manifest: NOSIGNATURE         vanillaplustools-1.20-1.0.jar                     |Vanilla+ Tools                |vanillaplustools              |1.20-1.0            |DONE      |Manifest: NOSIGNATURE         moonlight-1.20-2.8.66-forge.jar                   |Moonlight Library             |moonlight                     |1.20-2.8.66         |DONE      |Manifest: NOSIGNATURE         mixinsquared-forge-0.1.1.jar                      |MixinSquared                  |mixinsquared                  |0.1.1               |DONE      |Manifest: NOSIGNATURE         Jade-1.20.1-forge-11.6.3.jar                      |Jade                          |jade                          |11.6.3              |DONE      |Manifest: NOSIGNATURE         CreativeCore_FORGE_v2.11.10_mc1.20.1.jar          |CreativeCore                  |creativecore                  |2.11.10             |DONE      |Manifest: NOSIGNATURE         sleep_tight-1.20-1.1.8.jar                        |Sleep Tight                   |sleep_tight                   |1.20-1.1.8          |DONE      |Manifest: NOSIGNATURE         supermartijn642corelib-1.1.15-forge-mc1.20.jar    |SuperMartijn642's Core Lib    |supermartijn642corelib        |1.1.15              |DONE      |Manifest: NOSIGNATURE         curios-forge-5.4.3+1.20.1.jar                     |Curios API                    |curios                        |5.4.3+1.20.1        |DONE      |Manifest: NOSIGNATURE         brutalbosses-1.20.1-6.6.jar                       |brutalbosses mod              |brutalbosses                  |1.20.1-6.6          |DONE      |Manifest: NOSIGNATURE         [1.20.1]+SecurityCraft+v1.9.8.jar                 |SecurityCraft                 |securitycraft                 |1.9.8               |DONE      |Manifest: NOSIGNATURE         bettervillage-forge-1.20.1-3.2.0 (1).jar          |Better village                |bettervillage                 |3.1.0               |DONE      |Manifest: NOSIGNATURE         elevatorid-1.20.1-lex-1.9.jar                     |Elevator Mod                  |elevatorid                    |1.20.1-lex-1.9      |DONE      |Manifest: NOSIGNATURE         YungsBetterStrongholds-1.20-Forge-4.0.3.jar       |YUNG's Better Strongholds     |betterstrongholds             |1.20-Forge-4.0.3    |DONE      |Manifest: NOSIGNATURE         tombstone-8.5.5-1.20.1.jar                        |Corail Tombstone              |tombstone                     |8.5.5               |DONE      |Manifest: NOSIGNATURE         resourcefullib-forge-1.20.1-2.1.18.jar            |Resourceful Lib               |resourcefullib                |2.1.18              |DONE      |Manifest: NOSIGNATURE         architectury-9.1.12-forge.jar                     |Architectury                  |architectury                  |9.1.12              |DONE      |Manifest: NOSIGNATURE         appleskin-forge-mc1.20.1-2.5.1.jar                |AppleSkin                     |appleskin                     |2.5.1+mc1.20.1      |DONE      |Manifest: NOSIGNATURE         cupboard-1.20.1-2.1.jar                           |Cupboard utilities            |cupboard                      |1.20.1-2.1          |DONE      |Manifest: NOSIGNATURE         PuzzlesLib-v8.1.9-1.20.1-Forge.jar                |Puzzles Lib                   |puzzleslib                    |8.1.9               |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         JadeAddons-1.20.1-forge-5.2.1.jar                 |Jade Addons                   |jadeaddons                    |5.2.1               |DONE      |Manifest: NOSIGNATURE         framework-forge-1.20.1-0.6.16.jar                 |Framework                     |framework                     |0.6.16              |DONE      |Manifest: 0d:78:5f:44:c0:47:0c:8c:e2:63:a3:04:43:d4:12:7d:b0:7c:35:37:dc:40:b1:c1:98:ec:51:eb:3b:3c:45:99         expandability-forge-9.0.0.jar                     |ExpandAbility                 |expandability                 |9.0.0               |DONE      |Manifest: NOSIGNATURE         YungsBetterMineshafts-1.20-Forge-4.0.4.jar        |YUNG's Better Mineshafts      |bettermineshafts              |1.20-Forge-4.0.4    |DONE      |Manifest: NOSIGNATURE         PlayerRevive_FORGE_v2.0.19_mc1.20.1.jar           |PlayerRevive                  |playerrevive                  |2.0.19              |DONE      |Manifest: NOSIGNATURE         cristellib-1.1.5-forge.jar                        |Cristel Lib                   |cristellib                    |1.1.5               |DONE      |Manifest: NOSIGNATURE     Crash Report UUID: 0bd76986-5800-4dc8-8381-8851e0739175     FML: 47.2     Forge: net.minecraftforge:47.2.8
    • When loading into the world I can see a glimpse of the terrain load and then the game crashes. The same thing happens for my friend. I'm not sure what mod is causing the crash.   Here is the crash log: https://pastebin.com/k80kuS1d
  • Topics

×
×
  • Create New...

Important Information

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