From 237fb0b83944fc2fd4960bdc8a8b518a8ca9aaaf Mon Sep 17 00:00:00 2001 From: shedaniel Date: Sun, 8 Dec 2019 12:38:50 +0800 Subject: Warn on no container info --- .../me/shedaniel/rei/RoughlyEnoughItemsNetwork.java | 2 +- .../rei/plugin/DefaultServerContainerPlugin.java | 10 +++++----- .../plugin/containers/CraftingContainerInfoWrapper.java | 4 ++++ .../me/shedaniel/rei/server/ContainerInfoHandler.java | 10 +++++----- .../java/me/shedaniel/rei/server/InputSlotCrafter.java | 17 +++++++---------- 5 files changed, 22 insertions(+), 21 deletions(-) (limited to 'src/main') diff --git a/src/main/java/me/shedaniel/rei/RoughlyEnoughItemsNetwork.java b/src/main/java/me/shedaniel/rei/RoughlyEnoughItemsNetwork.java index 9369dc1be..27fc73615 100644 --- a/src/main/java/me/shedaniel/rei/RoughlyEnoughItemsNetwork.java +++ b/src/main/java/me/shedaniel/rei/RoughlyEnoughItemsNetwork.java @@ -36,6 +36,7 @@ public class RoughlyEnoughItemsNetwork implements ModInitializer { @Override public void onInitialize() { + FabricLoader.getInstance().getEntrypoints("rei_containers", Runnable.class).forEach(Runnable::run); ServerSidePacketRegistry.INSTANCE.register(DELETE_ITEMS_PACKET, (packetContext, packetByteBuf) -> { ServerPlayerEntity player = (ServerPlayerEntity) packetContext.getPlayer(); if (player.getServer().getPermissionLevel(player.getGameProfile()) < player.getServer().getOpPermissionLevel()) { @@ -101,7 +102,6 @@ public class RoughlyEnoughItemsNetwork implements ModInitializer { e.printStackTrace(); } }); - FabricLoader.getInstance().getEntrypoints("rei_containers", Runnable.class).forEach(Runnable::run); } } diff --git a/src/main/java/me/shedaniel/rei/plugin/DefaultServerContainerPlugin.java b/src/main/java/me/shedaniel/rei/plugin/DefaultServerContainerPlugin.java index 5bde30c99..27edb8979 100644 --- a/src/main/java/me/shedaniel/rei/plugin/DefaultServerContainerPlugin.java +++ b/src/main/java/me/shedaniel/rei/plugin/DefaultServerContainerPlugin.java @@ -13,10 +13,10 @@ import net.minecraft.util.Identifier; public class DefaultServerContainerPlugin implements Runnable { @Override public void run() { - ContainerInfoHandler.registerContainerInfo(new Identifier("minecraft", "plugins/crafting"), new CraftingContainerInfoWrapper(CraftingTableContainer.class)); - ContainerInfoHandler.registerContainerInfo(new Identifier("minecraft", "plugins/crafting"), new CraftingContainerInfoWrapper(PlayerContainer.class)); - ContainerInfoHandler.registerContainerInfo(new Identifier("minecraft", "plugins/smelting"), new CraftingContainerInfoWrapper(FurnaceContainer.class)); - ContainerInfoHandler.registerContainerInfo(new Identifier("minecraft", "plugins/smoking"), new CraftingContainerInfoWrapper(SmokerContainer.class)); - ContainerInfoHandler.registerContainerInfo(new Identifier("minecraft", "plugins/blasting"), new CraftingContainerInfoWrapper(BlastFurnaceContainer.class)); + ContainerInfoHandler.registerContainerInfo(new Identifier("minecraft", "plugins/crafting"), CraftingContainerInfoWrapper.create(CraftingTableContainer.class)); + ContainerInfoHandler.registerContainerInfo(new Identifier("minecraft", "plugins/crafting"), CraftingContainerInfoWrapper.create(PlayerContainer.class)); + ContainerInfoHandler.registerContainerInfo(new Identifier("minecraft", "plugins/smelting"), CraftingContainerInfoWrapper.create(FurnaceContainer.class)); + ContainerInfoHandler.registerContainerInfo(new Identifier("minecraft", "plugins/smoking"), CraftingContainerInfoWrapper.create(SmokerContainer.class)); + ContainerInfoHandler.registerContainerInfo(new Identifier("minecraft", "plugins/blasting"), CraftingContainerInfoWrapper.create(BlastFurnaceContainer.class)); } } diff --git a/src/main/java/me/shedaniel/rei/plugin/containers/CraftingContainerInfoWrapper.java b/src/main/java/me/shedaniel/rei/plugin/containers/CraftingContainerInfoWrapper.java index 78201a3bc..a10269b6b 100644 --- a/src/main/java/me/shedaniel/rei/plugin/containers/CraftingContainerInfoWrapper.java +++ b/src/main/java/me/shedaniel/rei/plugin/containers/CraftingContainerInfoWrapper.java @@ -18,6 +18,10 @@ public class CraftingContainerInfoWrapper> implem this.containerClass = containerClass; } + public static > ContainerInfo create(Class containerClass) { + return new CraftingContainerInfoWrapper(containerClass); + } + @Override public Class getContainerClass() { return containerClass; diff --git a/src/main/java/me/shedaniel/rei/server/ContainerInfoHandler.java b/src/main/java/me/shedaniel/rei/server/ContainerInfoHandler.java index 51f98cb2e..3ea2dc4f4 100644 --- a/src/main/java/me/shedaniel/rei/server/ContainerInfoHandler.java +++ b/src/main/java/me/shedaniel/rei/server/ContainerInfoHandler.java @@ -12,19 +12,19 @@ import net.minecraft.util.Identifier; import java.util.Map; public class ContainerInfoHandler { - private static final Map, ContainerInfo>> containerInfoMap = Maps.newHashMap(); + private static final Map, ContainerInfo>> containerInfoMap = Maps.newHashMap(); public static void registerContainerInfo(Identifier category, ContainerInfo containerInfo) { if (!containerInfoMap.containsKey(category)) - containerInfoMap.put(category, Maps.newHashMap()); - containerInfoMap.get(category).put(containerInfo.getContainerClass(), containerInfo); + containerInfoMap.put(category.toString(), Maps.newHashMap()); + containerInfoMap.get(category.toString()).put(containerInfo.getContainerClass(), containerInfo); } public static boolean isCategoryHandled(Identifier category) { - return containerInfoMap.containsKey(category) && !containerInfoMap.get(category).isEmpty(); + return containerInfoMap.containsKey(category.toString()) && !containerInfoMap.get(category.toString()).isEmpty(); } public static ContainerInfo getContainerInfo(Identifier category, Class containerClass) { - return containerInfoMap.get(category).get(containerClass); + return isCategoryHandled(category) ? containerInfoMap.get(category.toString()).get(containerClass) : null; } } diff --git a/src/main/java/me/shedaniel/rei/server/InputSlotCrafter.java b/src/main/java/me/shedaniel/rei/server/InputSlotCrafter.java index 03abd2170..57f0b8897 100644 --- a/src/main/java/me/shedaniel/rei/server/InputSlotCrafter.java +++ b/src/main/java/me/shedaniel/rei/server/InputSlotCrafter.java @@ -20,10 +20,7 @@ import net.minecraft.server.network.ServerPlayerEntity; import net.minecraft.util.DefaultedList; import net.minecraft.util.Identifier; -import java.util.Comparator; -import java.util.Iterator; -import java.util.List; -import java.util.Map; +import java.util.*; import java.util.stream.Collectors; public class InputSlotCrafter implements RecipeGridAligner { @@ -38,7 +35,7 @@ public class InputSlotCrafter implements RecipeGridAligner< } public static void start(Identifier category, Container craftingContainer_1, ServerPlayerEntity player, Map> map, boolean hasShift) { - ContainerInfo containerInfo = ContainerInfoHandler.getContainerInfo(category, craftingContainer_1.getClass()); + ContainerInfo containerInfo = Objects.requireNonNull(ContainerInfoHandler.getContainerInfo(category, craftingContainer_1.getClass()), "Container Info does not exist on the server!"); new InputSlotCrafter(craftingContainer_1, containerInfo).fillInputSlots(player, map, hasShift); } @@ -107,7 +104,7 @@ public class InputSlotCrafter implements RecipeGridAligner< protected void fillInputSlots(RecipeFinder recipeFinder, DefaultedList ingredients, boolean hasShift) { // boolean boolean_2 = this.craftingContainer.matches(recipe_1); boolean boolean_2 = false; - int int_1 = recipeFinder.countRecipeCrafts(ingredients, (IntList) null); + int int_1 = recipeFinder.countRecipeCrafts(ingredients, null); int int_2; if (boolean_2) { for (int_2 = 0; int_2 < this.containerInfo.getCraftingHeight(craftingContainer) * this.containerInfo.getCraftingWidth(craftingContainer) + 1; ++int_2) { @@ -201,10 +198,10 @@ public class InputSlotCrafter implements RecipeGridAligner< if (!itemStack_1.isEmpty()) { int int_3 = this.inventory.getOccupiedSlotWithRoomForStack(itemStack_1); if (int_3 == -1 && list_1.size() <= int_1) { - Iterator var6 = list_1.iterator(); + Iterator var6 = list_1.iterator(); while (var6.hasNext()) { - ItemStack itemStack_2 = (ItemStack) var6.next(); + ItemStack itemStack_2 = var6.next(); if (itemStack_2.isItemEqualIgnoreDamage(itemStack_1) && itemStack_2.getCount() != itemStack_2.getMaxCount() && itemStack_2.getCount() + itemStack_1.getCount() <= itemStack_2.getMaxCount()) { itemStack_2.increment(itemStack_1.getCount()); itemStack_1.setCount(0); @@ -231,9 +228,9 @@ public class InputSlotCrafter implements RecipeGridAligner< private int getFreeInventorySlots() { int int_1 = 0; - Iterator var2 = this.inventory.main.iterator(); + Iterator var2 = this.inventory.main.iterator(); while (var2.hasNext()) { - ItemStack itemStack_1 = (ItemStack) var2.next(); + ItemStack itemStack_1 = var2.next(); if (itemStack_1.isEmpty()) { ++int_1; } -- cgit