package info.jbcs.minecraft.vending.inventory;
import info.jbcs.minecraft.vending.gui.lib.elements.GuiPickBlock;
import net.minecraft.entity.player.EntityPlayer;
import net.minecraft.inventory.Container;
import net.minecraft.item.Item;
import net.minecraft.item.ItemStack;
import net.minecraft.util.NonNullList;
import net.minecraft.util.ResourceLocation;
import javax.annotation.Nonnull;
import java.util.ArrayList;
import java.util.List;
import java.util.Set;
public class ContainerPickBlock extends Container {
public NonNullList<ItemStack> itemList = NonNullList.create();
public GuiPickBlock gui;
public int width = 9;
public int height = 5;
public SlotPickBlock resultSlot;
public InventoryStatic inventory = new InventoryStatic(width * height + 1) {
@Override
@Nonnull
public ItemStack removeStackFromSlot(int i) {
return ItemStack.EMPTY;
}
@Override
public void markDirty() {
}
@Override
public boolean isItemValidForSlot(int i, @Nonnull ItemStack itemstack) {
return false;
}
};
public ContainerPickBlock() {
Set<ResourceLocation> itemReg = Item.REGISTRY.getKeys();
List<ResourceLocation> itemArray = new ArrayList<>();
itemArray.addAll(itemReg);
for (ResourceLocation itemName : itemArray) {
Item item = Item.REGISTRY.getObject(itemName);
if (item != null && item.getCreativeTab() != null) {
item.getSubItems(item, null, itemList);
}
}
int index = 0;
for (int y = 0; y < height; y++) {
for (int x = 0; x < width; x++) {
addSlotToContainer(new SlotPickBlock(this, index++, 9 + x * 18, 18 + y * 18));
}
}
//noinspection UnusedAssignment
addSlotToContainer(resultSlot = new SlotPickBlock(this, index++, 9, 112));
scrollTo(0);
}
public void scrollTo(float offset) {
int columnsNotFitting = itemList.size() / width - height + 1;
if (columnsNotFitting < 0) {
columnsNotFitting = 0;
}
int columnOffset = (int) (offset * columnsNotFitting + 0.5D);
for (int y = 0; y < height; ++y) {
for (int x = 0; x < width; ++x) {
int index = x + (y + columnOffset) * width;
if (index >= 0 && index < itemList.size()) {
inventory.setInventorySlotContents(x + y * width, itemList.get(index));
} else {
inventory.setInventorySlotContents(x + y * width, ItemStack.EMPTY);
}
}
}
}
@Override
@Nonnull
public ItemStack transferStackInSlot(EntityPlayer player, int index) {
return ItemStack.EMPTY;
}
@Override
public boolean canInteractWith(@Nonnull EntityPlayer entityplayer) {
return false;
}
public boolean canScroll() {
return true;
}
/**
* Called when the container is closed.
*/
public void onContainerClosed(EntityPlayer playerIn)
{
}
}