The problem is solved now.
Thanks to Briman0094 for the help in the IRC Chat
[spoiler=Old post]My problem..
So.. a quick explanation what should happen is: Whenever you put a item in slot 1, the exact same item creates in slot 2 but with an enchantment and when you take the item from slot 2 the item from slot 1 disappears.
Seems simple to do.. but I'm having some trouble with it.
What happens now is when I take the item from slot 2, I take it up for about 1 second and also the item in slot 1 disappears but after a second i loose the item from slot 2 and the item from slot 1 pops back.
I hope this makes sense to some of you guys, because I really need help.
Some useful information
Forge build: v6.4.1.426
Minecraft version: 1.4.5
Container
public class CustomContainer extends Container{
private int inventorySize;
private InventoryBasic input;
private InventoryBasic output;
public CustomContainer(InventoryPlayer inventoryPlayer){
input = new CustomInventory(this, "Input", 1);
output = new InventoryBasic("Output", 1);
addSlotToContainer(new Slot(input, 0, 49, 47));
addSlotToContainer(new CustomSlot(output, 0, 107, 47));
for(int i = 0; i < 3; i++){
for(int j = 0; j < 9; j++){
addSlotToContainer(new Slot(inventoryPlayer, j + i * 9 + 9, 8 + j * 18, 84 + i * 18));
}
}
for(int i = 0; i < 9; i++){
addSlotToContainer(new Slot(inventoryPlayer, i, 8 + i * 18, 142));
}
inventorySize = input.getSizeInventory();
}
@Override
public void onCraftMatrixChanged(IInventory par1iInventory){
super.onCraftMatrixChanged(par1iInventory);
if(par1iInventory == this.inventorySlots){
checkItem();
}
}
public void checkItem(){
ItemStack itemstack = getSlot(0).getStack();
if(itemstack == null){
output.setInventorySlotContents(0, null);
return;
}
itemstack = itemstack.copy();
ItemStack resultStack = null;
itemstack.addEnchantment(Enchantment.protection, 5);
resultStack = itemstack;
output.setInventorySlotContents(0, resultStack);
}
@Override
public boolean canInteractWith(EntityPlayer player){
return true;
}
@Override
public ItemStack transferStackInSlot(EntityPlayer player, int slot){
ItemStack stack = null;
Slot slotObject = (Slot)inventorySlots.get(slot);
if(slotObject != null && slotObject.getHasStack()){
ItemStack stackInSlot = slotObject.getStack();
stack = stackInSlot.copy();
if(slot <= inventorySize){
if(!mergeItemStack(stackInSlot, inventorySize + 1, inventorySlots.size(), true)){
return null;
}
} else if(!mergeItemStack(stackInSlot, 0, inventorySize, false)){
return null;
}
if(stackInSlot.stackSize == 0){
slotObject.putStack(null);
} else {
slotObject.onSlotChanged();
}
}
return stack;
}
}
CustomSlot:
public class CustomSlot extends Slot{
public CustomSlot(IInventory par1iInventory, int par2, int par3, int par4){
super(par1iInventory, par2, par3, par4);
}
@Override
public boolean isItemValid(ItemStack par1ItemStack){
return false;
}
}
CustomInventory:
public class CustomInventory extends InventoryBasic{
final Container container;
public CustomInventory(Container container, String name, int size){
super(name, size);
this.container = container;
}
public void onInventoryChanged(){
super.onInventoryChanged();
container.onCraftMatrixChanged(this);
}
}
I really hope someone knows what I'm doing wrong.
My Guess is that It's some kind of problem with the Server / Client (Client gets updated but not server). But i'm not sure what's the problem.