shedaniel 5 лет назад
Родитель
Сommit
4e1e05f5c0

+ 1 - 1
gradle.properties

@@ -1,4 +1,4 @@
-mod_version=3.2.15
+mod_version=3.2.16
 minecraft_version=1.15-pre6
 yarn_version=1.15-pre6+build.1
 fabricloader_version=0.7.2+build.174

+ 1 - 1
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);
     }
     
 }

+ 5 - 5
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));
     }
 }

+ 4 - 0
src/main/java/me/shedaniel/rei/plugin/containers/CraftingContainerInfoWrapper.java

@@ -18,6 +18,10 @@ public class CraftingContainerInfoWrapper<T extends CraftingContainer<?>> implem
         this.containerClass = containerClass;
     }
     
+    public static <T extends CraftingContainer<?>> ContainerInfo<T> create(Class<T> containerClass) {
+        return new CraftingContainerInfoWrapper<T>(containerClass);
+    }
+    
     @Override
     public Class<? extends Container> getContainerClass() {
         return containerClass;

+ 5 - 5
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<Identifier, Map<Class<? extends Container>, ContainerInfo>> containerInfoMap = Maps.newHashMap();
+    private static final Map<String, Map<Class<? extends Container>, 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;
     }
 }

+ 7 - 10
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<C extends Inventory> implements RecipeGridAligner<Integer> {
@@ -38,7 +35,7 @@ public class InputSlotCrafter<C extends Inventory> implements RecipeGridAligner<
     }
     
     public static <C extends Inventory> void start(Identifier category, Container craftingContainer_1, ServerPlayerEntity player, Map<Integer, List<ItemStack>> 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<C>(craftingContainer_1, containerInfo).fillInputSlots(player, map, hasShift);
     }
     
@@ -107,7 +104,7 @@ public class InputSlotCrafter<C extends Inventory> implements RecipeGridAligner<
     protected void fillInputSlots(RecipeFinder recipeFinder, DefaultedList<Ingredient> 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<C extends Inventory> 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<ItemStack> 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<C extends Inventory> implements RecipeGridAligner<
     
     private int getFreeInventorySlots() {
         int int_1 = 0;
-        Iterator var2 = this.inventory.main.iterator();
+        Iterator<ItemStack> 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;
             }