- 38
- 0
Вот есть у меня код который открывает GUI:
Все работает супер. Но есть одна проблемка у всех GUI общие слоты.
Вот скрины:
Теперь ставлю второй блок.
Открываю.
А там уже занято. И так можно до бесконечности делать.
в Google лазил примерно 3ч понял только то что нужно создать еще один inventory которой будет у каждого блока свой. И туда пихать item. Вопрос такой как создать этот самый inventory и присвоить его блоку ?
PS: Только пожалуйста опешите по подробные. Я Java не очень хорошо знаю. Зарание спасибо за ответ.
PSS: this.slotID = 36; это так для теста хотел очень извращеным способом сделать но не получилось :С
Код:
package com.example.examplemod;
import net.minecraft.client.Minecraft;
import net.minecraft.entity.player.EntityPlayer;
import net.minecraft.entity.player.InventoryPlayer;
import net.minecraft.inventory.Container;
import net.minecraft.inventory.IInventory;
import net.minecraft.inventory.InventoryBasic;
import net.minecraft.inventory.Slot;
import net.minecraft.item.ItemStack;
import net.minecraft.tileentity.TileEntity;
import net.minecraft.world.World;
public class ContainerDryingRack extends Container {
public InventoryPlayer i;
public static int slotID;
public ContainerDryingRack(InventoryPlayer inventory, TileEntityDryingRack dryingRack)
{
System.out.print("OpenGUI ID:" + ExampleMod.index);
i = inventory;
this.addSlotToContainer(new Slot(inventory, /*Slot ID-->*/0, 8, 142));
this.addSlotToContainer(new Slot(inventory, /*Slot ID-->*/1, 26, 142));
this.addSlotToContainer(new Slot(inventory, /*Slot ID-->*/2, 44, 142));
this.addSlotToContainer(new Slot(inventory, /*Slot ID-->*/3, 62, 142));
this.addSlotToContainer(new Slot(inventory, /*Slot ID-->*/4, 80, 142));
this.addSlotToContainer(new Slot(inventory, /*Slot ID-->*/5, 98, 142));
this.addSlotToContainer(new Slot(inventory, /*Slot ID-->*/6, 116, 142));
this.addSlotToContainer(new Slot(inventory, /*Slot ID-->*/7, 134, 142));
this.addSlotToContainer(new Slot(inventory, /*Slot ID-->*/8, 152, 142));
this.addSlotToContainer(new Slot(inventory, /*Slot ID-->*/9, 8, 84));
this.addSlotToContainer(new Slot(inventory, /*Slot ID-->*/10, 26, 84));
this.addSlotToContainer(new Slot(inventory, /*Slot ID-->*/11, 44, 84));
this.addSlotToContainer(new Slot(inventory, /*Slot ID-->*/12, 62, 84));
this.addSlotToContainer(new Slot(inventory, /*Slot ID-->*/13, 80, 84));
this.addSlotToContainer(new Slot(inventory, /*Slot ID-->*/14, 98, 84));
this.addSlotToContainer(new Slot(inventory, /*Slot ID-->*/15, 116, 84));
this.addSlotToContainer(new Slot(inventory, /*Slot ID-->*/16, 134, 84));
this.addSlotToContainer(new Slot(inventory, /*Slot ID-->*/17, 152, 84));
this.addSlotToContainer(new Slot(inventory, /*Slot ID-->*/18, 8, 102));
this.addSlotToContainer(new Slot(inventory, /*Slot ID-->*/19, 26, 102));
this.addSlotToContainer(new Slot(inventory, /*Slot ID-->*/20, 44, 102));
this.addSlotToContainer(new Slot(inventory, /*Slot ID-->*/21, 62, 102));
this.addSlotToContainer(new Slot(inventory, /*Slot ID-->*/22, 80, 102));
this.addSlotToContainer(new Slot(inventory, /*Slot ID-->*/23, 98, 102));
this.addSlotToContainer(new Slot(inventory, /*Slot ID-->*/24, 116, 102));
this.addSlotToContainer(new Slot(inventory, /*Slot ID-->*/25, 134, 102));
this.addSlotToContainer(new Slot(inventory, /*Slot ID-->*/26, 152, 102));
this.addSlotToContainer(new Slot(inventory, /*Slot ID-->*/27, 8, 120));
this.addSlotToContainer(new Slot(inventory, /*Slot ID-->*/28, 26, 120));
this.addSlotToContainer(new Slot(inventory, /*Slot ID-->*/29, 44, 120));
this.addSlotToContainer(new Slot(inventory, /*Slot ID-->*/30, 62, 120));
this.addSlotToContainer(new Slot(inventory, /*Slot ID-->*/31, 80, 120));
this.addSlotToContainer(new Slot(inventory, /*Slot ID-->*/32, 98, 120));
this.addSlotToContainer(new Slot(inventory, /*Slot ID-->*/33, 116, 120));
this.addSlotToContainer(new Slot(inventory, /*Slot ID-->*/34, 134, 120));
this.addSlotToContainer(new Slot(inventory, /*Slot ID-->*/35, 152, 120));
System.out.print(dryingRack.SlotID);
this.slotID = 36;
this.addSlotToContainer(new Slot(inventory, /*Slot ID-->*/this.slotID, 44, 14));
this.slotID = 37;
this.addSlotToContainer(new Slot(inventory, /*Slot ID-->*/this.slotID, 44, 50));
this.addSlotToContainer(new Slot(inventory, /*Slot ID-->*/38, 116, 32));
}
@Override
public boolean canInteractWith(EntityPlayer p_75145_1_) {
// TODO Auto-generated method stub
return i.isUseableByPlayer(p_75145_1_);
}
@Override
public ItemStack transferStackInSlot(EntityPlayer playerIn, int fromSlot) {
ItemStack previous = null;
Slot slot = (Slot) this.inventorySlots.get(fromSlot);
if (slot != null && slot.getHasStack()) {
ItemStack current = slot.getStack();
previous = current.copy();
if (fromSlot < 3) {
// From TE Inventory to Player Inventory
if (!this.mergeItemStack(current, 3, 39, true))
return null;
} else {
// From Player Inventory to TE Inventory
if (!this.mergeItemStack(current, 0, 2, false))
return null;
}
if (current.stackSize == 0)
slot.putStack((ItemStack) null);
else
slot.onSlotChanged();
if (current.stackSize == previous.stackSize)
return null;
slot.onPickupFromSlot(playerIn, current);
}
return previous;
}
}
Вот скрины:
Теперь ставлю второй блок.
Открываю.
А там уже занято. И так можно до бесконечности делать.
в Google лазил примерно 3ч понял только то что нужно создать еще один inventory которой будет у каждого блока свой. И туда пихать item. Вопрос такой как создать этот самый inventory и присвоить его блоку ?
PS: Только пожалуйста опешите по подробные. Я Java не очень хорошо знаю. Зарание спасибо за ответ.
PSS: this.slotID = 36; это так для теста хотел очень извращеным способом сделать но не получилось :С