public ContainerEnchanter(EntityPlayer player, InventoryPlayer playerInv, TileEnchanter te) {
enchanter = te;
addSlotToContainer(new Slot(te, 0, 27, 35) {
@Override
public int getSlotStackLimit() {
return 1;
}
@Override
public boolean isItemValid(ItemStack itemStack) {
return enchanter.isItemValidForSlot(0, itemStack);
}
@Override
public void onSlotChanged() {
updateOutput();
}
});
addSlotToContainer(new Slot(te, 1, 76, 35) {
@Override
public boolean isItemValid(ItemStack itemStack) {
return enchanter.isItemValidForSlot(1, itemStack);
}
@Override
public void onSlotChanged() {
updateOutput();
}
});
addSlotToContainer(new Slot(te, 2, 134, 35) {
@Override
public int getSlotStackLimit() {
return 1;
}
@Override
public boolean isItemValid(ItemStack itemStack) {
return false;
}
public void onPickupFromSlot(EntityPlayer player, ItemStack stack) {
if(!player.capabilities.isCreativeMode) {
player.addExperienceLevel(-enchanter.getCurrentEnchantmentCost());
}
EnchantmentData enchData = enchanter.getCurrentEnchantmentData();
ItemStack curStack = enchanter.getStackInSlot(1);
if(enchData == null || curStack == null || enchData.enchantmentLevel >= curStack.stackSize) {
enchanter.setInventorySlotContents(1, (ItemStack) null);
} else {
curStack = curStack.copy();
curStack.stackSize -= enchData.enchantmentLevel;
enchanter.setInventorySlotContents(1, curStack);
enchanter.markDirty();
}
enchanter.setInventorySlotContents(0, (ItemStack) null);
//TODO: Sound
// if (!p_i1800_2_.isRemote) {
// p_i1800_2_.playAuxSFX(1021, p_i1800_3_, p_i1800_4_, p_i1800_5_, 0);
// }
}
@Override
public boolean canTakeStack(EntityPlayer player) {
return playerHasEnoughLevels(player);
}
});
int x = 8;
int y = 84;
// add players inventory
for (int i = 0; i < 3; ++i) {
for (int j = 0; j < 9; ++j) {
addSlotToContainer(new Slot(playerInv, j + i * 9 + 9, x + j * 18, y + i * 18));
}
}
for (int i = 0; i < 9; ++i) {
addSlotToContainer(new Slot(playerInv, i, x + i * 18, y + 58));
}
}