Created
March 10, 2020 19:58
-
-
Save Lanse505/ce309a32a026ff0d902d5a02be92619a to your computer and use it in GitHub Desktop.
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| public class PortableCraftingInventory extends CraftingInventory { | |
| private final InventoryComponent<?> component; | |
| private final IInventory inventory; | |
| private final NonNullList<ItemStack> stacks; | |
| private final Container eventHandler; | |
| public PortableCraftingInventory(Container eventHandlerIn, InventoryComponent<?> component) { | |
| super(eventHandlerIn, component.getXSize(), component.getYSize()); | |
| this.eventHandler = eventHandlerIn; | |
| this.component = component; | |
| this.inventory = new RecipeWrapper(component); | |
| this.stacks = NonNullList.create(); | |
| for (int i = 0; i < component.getSlots(); i++) { | |
| stacks.add(component.getStackInSlot(i)); | |
| } | |
| } | |
| @Override | |
| public int getSizeInventory() { | |
| return this.component.getSlots(); | |
| } | |
| @Override | |
| public boolean isEmpty() { | |
| for (int i = 0; i < this.component.getSlots() ; i++) { | |
| ItemStack stack = getStackInSlot(i); | |
| if (!stack.isEmpty()) { | |
| return false; | |
| } | |
| } | |
| return true; | |
| } | |
| @Override | |
| public ItemStack getStackInSlot(int index) { | |
| return index >= this.inventory.getSizeInventory() ? ItemStack.EMPTY : this.stacks.get(index); | |
| } | |
| @Override | |
| public ItemStack removeStackFromSlot(int index) { | |
| return ItemStackHelper.getAndRemove(this.stacks, index); | |
| } | |
| @Override | |
| public ItemStack decrStackSize(int index, int count) { | |
| ItemStack stack = ItemStackHelper.getAndSplit(this.stacks, index, count); | |
| if (!stack.isEmpty()) { | |
| this.eventHandler.onCraftMatrixChanged(this); | |
| } | |
| return stack; | |
| } | |
| @Override | |
| public void setInventorySlotContents(int index, ItemStack stack) { | |
| this.stacks.set(index, stack); | |
| this.eventHandler.onCraftMatrixChanged(this); | |
| } | |
| @Override | |
| public boolean isUsableByPlayer(PlayerEntity player) { | |
| return true; | |
| } | |
| @Override | |
| public void clear() { | |
| this.stacks.clear(); | |
| } | |
| @Override | |
| public int getHeight() { | |
| return this.component.getYSize(); | |
| } | |
| @Override | |
| public int getWidth() { | |
| return this.component.getXSize(); | |
| } | |
| @Override | |
| public void fillStackedContents(RecipeItemHelper helper) { | |
| for (ItemStack stack : this.stacks) { | |
| helper.accountPlainStack(stack); | |
| } | |
| } | |
| } |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| public class PortableCraftResultInventory extends CraftResultInventory { | |
| private final InventoryComponent<?> component; | |
| private final NonNullList<ItemStack> result; | |
| private IRecipe<?> recipeUsed; | |
| public PortableCraftResultInventory(InventoryComponent<?> component) { | |
| this.component = component; | |
| this.result = NonNullList.withSize(component.getSlots(), ItemStack.EMPTY); | |
| } | |
| @Override | |
| public int getSizeInventory() { | |
| return component.getSlots(); | |
| } | |
| @Override | |
| public boolean isEmpty() { | |
| for (ItemStack stack : this.result) { | |
| if (!stack.isEmpty()) { | |
| return false; | |
| } | |
| } | |
| return true; | |
| } | |
| @Override | |
| public ItemStack getStackInSlot(int index) { | |
| return this.component.getStackInSlot(index); | |
| } | |
| public List<ItemStack> getStacks() { | |
| List<ItemStack> stacks = new ArrayList<>(); | |
| for (int i = 0; i < component.getSlots(); i++) { | |
| stacks.add(component.getStackInSlot(i)); | |
| } | |
| return stacks; | |
| } | |
| @Override | |
| public ItemStack decrStackSize(int index, int count) { | |
| return ItemStackHelper.getAndRemove(this.getStacks(), index); | |
| } | |
| @Override | |
| public ItemStack removeStackFromSlot(int index) { | |
| return ItemStackHelper.getAndRemove(this.getStacks(), index); | |
| } | |
| @Override | |
| public void setInventorySlotContents(int index, ItemStack stack) { | |
| this.getStacks().set(index, stack); | |
| } | |
| @Override | |
| public boolean isUsableByPlayer(PlayerEntity player) { | |
| return true; | |
| } | |
| @Override | |
| public void clear() { | |
| this.result.clear(); | |
| } | |
| @Override | |
| public void setRecipeUsed(IRecipe<?> recipeUsed) { | |
| this.recipeUsed = recipeUsed; | |
| } | |
| @Nullable | |
| @Override | |
| public IRecipe<?> getRecipeUsed() { | |
| return recipeUsed; | |
| } | |
| } |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment