Bladeren bron

2.9.2 Live Generated Recipe Displays

Unknown 6 jaren geleden
bovenliggende
commit
50e045c28c

+ 3 - 3
gradle.properties

@@ -1,6 +1,6 @@
-mod_version=2.9.1
-minecraft_version=1.14.1
-yarn_version=1.14.1+build.10
+mod_version=2.9.2
+minecraft_version=1.14.2
+yarn_version=1.14.2+build.2
 fabricloader_version=0.4.7+build.147
 jankson_version=1.1.0
 cloth_events_version=0.3.1.23

+ 1 - 1
src/main/java/me/shedaniel/rei/RoughlyEnoughItemsCore.java

@@ -136,7 +136,7 @@ public class RoughlyEnoughItemsCore implements ClientModInitializer {
         
         ClientSidePacketRegistry.INSTANCE.register(RoughlyEnoughItemsNetwork.CREATE_ITEMS_MESSAGE_PACKET, (packetContext, packetByteBuf) -> {
             ItemStack stack = packetByteBuf.readItemStack();
-            String player = packetByteBuf.readString();
+            String player = packetByteBuf.readString(32767);
             packetContext.getPlayer().addChatMessage(new TextComponent(I18n.translate("text.rei.cheat_items").replaceAll("\\{item_name}", ItemListOverlay.tryGetItemStackName(stack.copy())).replaceAll("\\{item_count}", stack.copy().getAmount() + "").replaceAll("\\{player_name}", player)), false);
         });
     }

+ 1 - 1
src/main/java/me/shedaniel/rei/RoughlyEnoughItemsNetwork.java

@@ -40,7 +40,7 @@ public class RoughlyEnoughItemsNetwork implements ModInitializer {
             }
             ItemStack stack = packetByteBuf.readItemStack();
             if (player.inventory.insertStack(stack.copy())) {
-                ServerSidePacketRegistry.INSTANCE.sendToPlayer(player, RoughlyEnoughItemsNetwork.CREATE_ITEMS_MESSAGE_PACKET, new PacketByteBuf(Unpooled.buffer()).writeItemStack(stack.copy()).writeString(player.getEntityName()));
+                ServerSidePacketRegistry.INSTANCE.sendToPlayer(player, RoughlyEnoughItemsNetwork.CREATE_ITEMS_MESSAGE_PACKET, new PacketByteBuf(Unpooled.buffer()).writeItemStack(stack.copy()).writeString(player.getEntityName(), 32767));
             } else
                 player.addChatMessage(new TranslatableComponent("text.rei.failed_cheat_items"), false);
         });

+ 22 - 0
src/main/java/me/shedaniel/rei/api/LiveRecipeGenerator.java

@@ -0,0 +1,22 @@
+/*
+ * Roughly Enough Items by Danielshe.
+ * Licensed under the MIT License.
+ */
+
+package me.shedaniel.rei.api;
+
+import net.minecraft.item.ItemStack;
+import net.minecraft.util.Identifier;
+
+import java.util.List;
+import java.util.Optional;
+
+public interface LiveRecipeGenerator<T extends RecipeDisplay> {
+    
+    Identifier getCategoryIdentifier();
+    
+    Optional<List<T>> getRecipeFor(ItemStack stack);
+    
+    Optional<List<T>> getUsageFor(ItemStack stack);
+    
+}

+ 2 - 0
src/main/java/me/shedaniel/rei/api/RecipeHelper.java

@@ -173,4 +173,6 @@ public interface RecipeHelper {
      */
     Optional<DisplaySettings> getCachedCategorySettings(Identifier category);
     
+    void registerLiveRecipeGenerator(LiveRecipeGenerator liveRecipeGenerator);
+    
 }

+ 11 - 0
src/main/java/me/shedaniel/rei/client/RecipeHelperImpl.java

@@ -42,6 +42,7 @@ public class RecipeHelperImpl implements RecipeHelper {
     private final Map<Identifier, ButtonAreaSupplier> speedCraftAreaSupplierMap = Maps.newHashMap();
     private final Map<Identifier, List<SpeedCraftFunctional>> speedCraftFunctionalMap = Maps.newHashMap();
     private final List<DisplayVisibilityHandler> displayVisibilityHandlers = Lists.newArrayList();
+    private final List<LiveRecipeGenerator> liveRecipeGenerators = Lists.newArrayList();
     private RecipeManager recipeManager;
     
     @Override
@@ -100,6 +101,8 @@ public class RecipeHelperImpl implements RecipeHelper {
                     if (category.checkTags() ? ItemStack.areEqual(stack, outputStack) : ItemStack.areEqualIgnoreTags(stack, outputStack))
                         categoriesMap.get(recipeDisplay.getRecipeCategory()).add(recipeDisplay);
         }
+        for(LiveRecipeGenerator liveRecipeGenerator : liveRecipeGenerators)
+            ((Optional<List>) liveRecipeGenerator.getRecipeFor(stack)).ifPresent(o -> categoriesMap.get(liveRecipeGenerator.getCategoryIdentifier()).addAll(o));
         Map<RecipeCategory, List<RecipeDisplay>> recipeCategoryListMap = Maps.newLinkedHashMap();
         categories.forEach(category -> {
             if (categoriesMap.containsKey(category.getIdentifier()) && !categoriesMap.get(category.getIdentifier()).isEmpty())
@@ -141,6 +144,8 @@ public class RecipeHelperImpl implements RecipeHelper {
                 }
             }
         }
+        for(LiveRecipeGenerator liveRecipeGenerator : liveRecipeGenerators)
+            ((Optional<List>) liveRecipeGenerator.getUsageFor(stack)).ifPresent(o -> categoriesMap.get(liveRecipeGenerator.getCategoryIdentifier()).addAll(o));
         Map<RecipeCategory, List<RecipeDisplay>> recipeCategoryListMap = Maps.newLinkedHashMap();
         categories.forEach(category -> {
             if (categoriesMap.containsKey(category.getIdentifier()) && !categoriesMap.get(category.getIdentifier()).isEmpty())
@@ -198,6 +203,7 @@ public class RecipeHelperImpl implements RecipeHelper {
         this.speedCraftFunctionalMap.clear();
         this.categoryDisplaySettingsMap.clear();
         this.displayVisibilityHandlers.clear();
+        this.liveRecipeGenerators.clear();
         ((DisplayHelperImpl) RoughlyEnoughItemsCore.getDisplayHelper()).resetCache();
         BaseBoundsHandler baseBoundsHandler = new BaseBoundsHandlerImpl();
         RoughlyEnoughItemsCore.getDisplayHelper().registerBoundsHandler(baseBoundsHandler);
@@ -302,4 +308,9 @@ public class RecipeHelperImpl implements RecipeHelper {
         return categoryDisplaySettingsMap.entrySet().stream().filter(entry -> entry.getKey().equals(category)).map(Map.Entry::getValue).findAny();
     }
     
+    @Override
+    public void registerLiveRecipeGenerator(LiveRecipeGenerator liveRecipeGenerator) {
+        liveRecipeGenerators.add(liveRecipeGenerator);
+    }
+    
 }

+ 1 - 1
src/main/java/me/shedaniel/rei/gui/ContainerScreenOverlay.java

@@ -300,7 +300,7 @@ public class ContainerScreenOverlay extends AbstractParentElement implements Dra
                 next = 0;
             return GameMode.byId(next);
         } catch (Exception e) {
-            return GameMode.INVALID;
+            return GameMode.NOT_SET;
         }
     }