aboutsummaryrefslogtreecommitdiff
path: root/src/main/java/me
diff options
context:
space:
mode:
authorUnknown <shekwancheung0528@gmail.com>2019-06-02 19:41:28 +0800
committerUnknown <shekwancheung0528@gmail.com>2019-06-02 19:41:28 +0800
commitd414c887e0c42325cf2e7c778b32e3fb13ee2e69 (patch)
tree7f8a3c76d1171664f7ad79d715f1a749f531f38e /src/main/java/me
parent6352ba7abe3a01b694b01e03238b297eef447df4 (diff)
downloadRoughlyEnoughItems-d414c887e0c42325cf2e7c778b32e3fb13ee2e69.tar.gz
RoughlyEnoughItems-d414c887e0c42325cf2e7c778b32e3fb13ee2e69.tar.bz2
RoughlyEnoughItems-d414c887e0c42325cf2e7c778b32e3fb13ee2e69.zip
2.9.2 Live Generated Recipe Displays
Diffstat (limited to 'src/main/java/me')
-rw-r--r--src/main/java/me/shedaniel/rei/RoughlyEnoughItemsCore.java2
-rw-r--r--src/main/java/me/shedaniel/rei/RoughlyEnoughItemsNetwork.java2
-rw-r--r--src/main/java/me/shedaniel/rei/api/LiveRecipeGenerator.java22
-rw-r--r--src/main/java/me/shedaniel/rei/api/RecipeHelper.java2
-rw-r--r--src/main/java/me/shedaniel/rei/client/RecipeHelperImpl.java11
-rw-r--r--src/main/java/me/shedaniel/rei/gui/ContainerScreenOverlay.java2
6 files changed, 38 insertions, 3 deletions
diff --git a/src/main/java/me/shedaniel/rei/RoughlyEnoughItemsCore.java b/src/main/java/me/shedaniel/rei/RoughlyEnoughItemsCore.java
index 8102ba187..1e6f9e966 100644
--- a/src/main/java/me/shedaniel/rei/RoughlyEnoughItemsCore.java
+++ b/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);
});
}
diff --git a/src/main/java/me/shedaniel/rei/RoughlyEnoughItemsNetwork.java b/src/main/java/me/shedaniel/rei/RoughlyEnoughItemsNetwork.java
index 37c4fd221..e7be2892e 100644
--- a/src/main/java/me/shedaniel/rei/RoughlyEnoughItemsNetwork.java
+++ b/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);
});
diff --git a/src/main/java/me/shedaniel/rei/api/LiveRecipeGenerator.java b/src/main/java/me/shedaniel/rei/api/LiveRecipeGenerator.java
new file mode 100644
index 000000000..2e331b1df
--- /dev/null
+++ b/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);
+
+}
diff --git a/src/main/java/me/shedaniel/rei/api/RecipeHelper.java b/src/main/java/me/shedaniel/rei/api/RecipeHelper.java
index acb844e2e..a57b7146f 100644
--- a/src/main/java/me/shedaniel/rei/api/RecipeHelper.java
+++ b/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);
+
}
diff --git a/src/main/java/me/shedaniel/rei/client/RecipeHelperImpl.java b/src/main/java/me/shedaniel/rei/client/RecipeHelperImpl.java
index 5b22482e9..f7891670f 100644
--- a/src/main/java/me/shedaniel/rei/client/RecipeHelperImpl.java
+++ b/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);
+ }
+
}
diff --git a/src/main/java/me/shedaniel/rei/gui/ContainerScreenOverlay.java b/src/main/java/me/shedaniel/rei/gui/ContainerScreenOverlay.java
index ed7d3b852..fe4824ca9 100644
--- a/src/main/java/me/shedaniel/rei/gui/ContainerScreenOverlay.java
+++ b/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;
}
}