diff options
| author | shedaniel <daniel@shedaniel.me> | 2021-02-05 10:08:44 +0800 |
|---|---|---|
| committer | shedaniel <daniel@shedaniel.me> | 2021-02-05 10:08:44 +0800 |
| commit | ea634e7ba29146d4ebc2c05b61257fa6c3b0642e (patch) | |
| tree | cd6caf4e9b77e13b21d1c890bf38604109fd93f2 /api/src/main/java/me/shedaniel/rei/server/ContainerInfo.java | |
| parent | f5b59076cece9e95e76158b17b64fec27616b68b (diff) | |
| download | RoughlyEnoughItems-ea634e7ba29146d4ebc2c05b61257fa6c3b0642e.tar.gz RoughlyEnoughItems-ea634e7ba29146d4ebc2c05b61257fa6c3b0642e.tar.bz2 RoughlyEnoughItems-ea634e7ba29146d4ebc2c05b61257fa6c3b0642e.zip | |
More relocation
Signed-off-by: shedaniel <daniel@shedaniel.me>
Diffstat (limited to 'api/src/main/java/me/shedaniel/rei/server/ContainerInfo.java')
| -rw-r--r-- | api/src/main/java/me/shedaniel/rei/server/ContainerInfo.java | 118 |
1 files changed, 0 insertions, 118 deletions
diff --git a/api/src/main/java/me/shedaniel/rei/server/ContainerInfo.java b/api/src/main/java/me/shedaniel/rei/server/ContainerInfo.java deleted file mode 100644 index 79da344ce..000000000 --- a/api/src/main/java/me/shedaniel/rei/server/ContainerInfo.java +++ /dev/null @@ -1,118 +0,0 @@ -/* - * This file is licensed under the MIT License, part of Roughly Enough Items. - * Copyright (c) 2018, 2019, 2020 shedaniel - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in all - * copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE - * SOFTWARE. - */ - -package me.shedaniel.rei.server; - -import net.minecraft.core.NonNullList; -import net.minecraft.server.level.ServerPlayer; -import net.minecraft.world.entity.player.Inventory; -import net.minecraft.world.inventory.AbstractContainerMenu; -import net.minecraft.world.inventory.Slot; -import net.minecraft.world.item.ItemStack; - -import java.util.List; -import java.util.stream.Collectors; -import java.util.stream.IntStream; - -public interface ContainerInfo<T extends AbstractContainerMenu> { - Class<? extends AbstractContainerMenu> getContainerClass(); - - default StackAccessor getStack(ContainerContext<T> context, int slotIndex) { - return new SlotStackAccessor(context.getContainer().getSlot(slotIndex)); - } - - default GridCleanHandler<T> getGridCleanHandler() { - return context -> { - T container = context.getContainer(); - for (StackAccessor gridStack : getGridStacks(context)) { - GridCleanHandler.returnSlotToPlayerInventory(context, gridStack); - } - - clearCraftingSlots(container); - }; - } - - default DumpHandler<T> getDumpHandler() { - return (context, stackToInsert) -> { - List<StackAccessor> inventoryStacks = context.getContainerInfo().getInventoryStacks(context); - - StackAccessor nextSlot = DumpHandler.getOccupiedSlotWithRoomForStack(stackToInsert, inventoryStacks); - if (nextSlot == null) { - nextSlot = DumpHandler.getEmptySlot(inventoryStacks); - } - if (nextSlot == null) { - return false; - } - - ItemStack stack = stackToInsert.copy(); - stack.setCount(nextSlot.getItemStack().getCount() + stack.getCount()); - nextSlot.setItemStack(stack); - return true; - }; - } - - default RecipeFinderPopulator<T> getRecipeFinderPopulator() { - return context -> recipeFinder -> { - for (StackAccessor inventoryStack : getInventoryStacks(context)) { - recipeFinder.addNormalItem(inventoryStack.getItemStack()); - } - populateRecipeFinder(context.getContainer(), recipeFinder); - }; - } - - default List<StackAccessor> getGridStacks(ContainerContext<T> context) { - return IntStream.range(0, getCraftingWidth(context.getContainer()) * getCraftingHeight(context.getContainer()) + 1) - .filter(value -> value != getCraftingResultSlotIndex(context.getContainer())) - .mapToObj(context::getStack) - .collect(Collectors.toList()); - } - - default List<StackAccessor> getInventoryStacks(ContainerContext<T> context) { - Inventory inventory = context.getPlayerEntity().getInventory(); - return IntStream.range(0, inventory.items.size()) - .mapToObj(index -> (StackAccessor) new InventoryStackAccessor(inventory, index)) - .collect(Collectors.toList()); - } - - default void markDirty(ContainerContext<T> context) { - context.getPlayerEntity().getInventory().setChanged(); - context.getContainer().broadcastChanges(); - - NonNullList<ItemStack> defaultedList = NonNullList.create(); - for (Slot slot : context.getPlayerEntity().containerMenu.slots) { - defaultedList.add(slot.getItem()); - } - - ((ServerPlayer) context.getPlayerEntity()).refreshContainer(context.getPlayerEntity().containerMenu, defaultedList); - } - - int getCraftingResultSlotIndex(T container); - - int getCraftingWidth(T container); - - int getCraftingHeight(T container); - - default void clearCraftingSlots(T container) {} - - default void populateRecipeFinder(T container, RecipeFinder var1) {} -} |
