aboutsummaryrefslogtreecommitdiff
path: root/src/main/java/me/shedaniel/rei/client
diff options
context:
space:
mode:
Diffstat (limited to 'src/main/java/me/shedaniel/rei/client')
-rw-r--r--src/main/java/me/shedaniel/rei/client/ClientHelper.java57
-rw-r--r--src/main/java/me/shedaniel/rei/client/ConfigHelper.java9
-rw-r--r--src/main/java/me/shedaniel/rei/client/GuiHelper.java19
-rw-r--r--src/main/java/me/shedaniel/rei/client/ItemListHelper.java53
-rw-r--r--src/main/java/me/shedaniel/rei/client/REIConfig.java1
-rw-r--r--src/main/java/me/shedaniel/rei/client/RecipeHelper.java19
6 files changed, 90 insertions, 68 deletions
diff --git a/src/main/java/me/shedaniel/rei/client/ClientHelper.java b/src/main/java/me/shedaniel/rei/client/ClientHelper.java
index fb2522f01..474fdf1ce 100644
--- a/src/main/java/me/shedaniel/rei/client/ClientHelper.java
+++ b/src/main/java/me/shedaniel/rei/client/ClientHelper.java
@@ -1,26 +1,22 @@
package me.shedaniel.rei.client;
import com.google.common.collect.ImmutableList;
-import com.google.common.collect.Lists;
import io.netty.buffer.Unpooled;
import me.shedaniel.rei.RoughlyEnoughItemsCore;
import me.shedaniel.rei.api.IRecipeCategory;
import me.shedaniel.rei.api.IRecipeDisplay;
import me.shedaniel.rei.gui.ContainerScreenOverlay;
-import me.shedaniel.rei.gui.widget.ConfigWidget;
+import me.shedaniel.rei.gui.config.ConfigScreen;
import me.shedaniel.rei.gui.widget.RecipeViewingWidgetScreen;
import net.fabricmc.api.ClientModInitializer;
import net.fabricmc.fabric.api.client.keybinding.FabricKeyBinding;
import net.fabricmc.fabric.api.network.ClientSidePacketRegistry;
import net.fabricmc.fabric.impl.client.keybinding.KeyBindingRegistryImpl;
-import net.fabricmc.loader.FabricLoader;
+import net.fabricmc.loader.api.FabricLoader;
import net.minecraft.client.MinecraftClient;
import net.minecraft.client.Mouse;
import net.minecraft.client.gui.Screen;
import net.minecraft.client.util.InputUtil;
-import net.minecraft.enchantment.Enchantment;
-import net.minecraft.enchantment.EnchantmentHelper;
-import net.minecraft.item.Item;
import net.minecraft.item.ItemStack;
import net.minecraft.item.Items;
import net.minecraft.util.DefaultedList;
@@ -30,7 +26,6 @@ import net.minecraft.util.registry.Registry;
import java.awt.*;
import java.util.ArrayList;
-import java.util.HashMap;
import java.util.List;
import java.util.Map;
@@ -40,13 +35,8 @@ public class ClientHelper implements ClientModInitializer {
private static final Identifier USAGE_KEYBIND = new Identifier("roughlyenoughitems", "usage_keybind");
private static final Identifier HIDE_KEYBIND = new Identifier("roughlyenoughitems", "hide_keybind");
public static FabricKeyBinding RECIPE, USAGE, HIDE;
- private static List<ItemStack> itemList;
private static boolean cheating;
- public ClientHelper() {
- this.itemList = Lists.newLinkedList();
- }
-
public static String getModFromItemStack(ItemStack stack) {
if (!stack.isEmpty()) {
Identifier location = Registry.ITEM.getId(stack.getItem());
@@ -54,7 +44,7 @@ public class ClientHelper implements ClientModInitializer {
String modid = location.getNamespace();
if (modid.equalsIgnoreCase("minecraft"))
return "Minecraft";
- return FabricLoader.INSTANCE.getModContainers().stream().map(modContainer -> {
+ return ((net.fabricmc.loader.FabricLoader) FabricLoader.getInstance()).getModContainers().stream().map(modContainer -> {
return modContainer.getInfo();
}).filter(modInfo -> modInfo.getId().equals(modid) || (modInfo.getName() != null && modInfo.getName().equals(modid))).findFirst().map(modInfo -> {
if (modInfo.getName() != null)
@@ -65,10 +55,6 @@ public class ClientHelper implements ClientModInitializer {
return "";
}
- public static List<ItemStack> getItemList() {
- return itemList;
- }
-
public static Point getMouseLocation() {
MinecraftClient client = MinecraftClient.getInstance();
Mouse mouse = client.mouse;
@@ -127,7 +113,7 @@ public class ClientHelper implements ClientModInitializer {
}
public static void openConfigWindow(Screen parent) {
- MinecraftClient.getInstance().openScreen(new ConfigWidget(parent));
+ MinecraftClient.getInstance().openScreen(new ConfigScreen(parent));
}
public static List<ItemStack> getInventoryItemsTypes() {
@@ -140,41 +126,6 @@ public class ClientHelper implements ClientModInitializer {
return inventoryStacks;
}
- public void clientLoaded() {
- Registry.ITEM.forEach(item -> {
- if (!item.equals(Items.ENCHANTED_BOOK))
- registerItem(item);
- });
- Registry.ENCHANTMENT.forEach(enchantment -> {
- for(int i = enchantment.getMinimumLevel(); i < enchantment.getMaximumLevel(); i++) {
- Map<Enchantment, Integer> map = new HashMap<>();
- map.put(enchantment, i);
- ItemStack itemStack = new ItemStack(Items.ENCHANTED_BOOK);
- EnchantmentHelper.set(map, itemStack);
- registerItemStack(itemStack);
- }
- });
- }
-
- public void registerItem(Item item) {
- registerItemStack(item.getDefaultStack());
- DefaultedList<ItemStack> stacks = DefaultedList.create();
- item.addStacksForDisplay(item.getItemGroup(), stacks);
- stacks.forEach(this::registerItemStack);
- }
-
- public void registerItemStack(ItemStack stack) {
- if (!stack.getItem().equals(Items.AIR) && !alreadyContain(stack))
- itemList.add(stack);
- }
-
- private boolean alreadyContain(ItemStack stack) {
- for(ItemStack itemStack : itemList)
- if (ItemStack.areEqual(stack, itemStack))
- return true;
- return false;
- }
-
@Override
public void onInitializeClient() {
this.cheating = false;
diff --git a/src/main/java/me/shedaniel/rei/client/ConfigHelper.java b/src/main/java/me/shedaniel/rei/client/ConfigHelper.java
index ccc340af3..caf307313 100644
--- a/src/main/java/me/shedaniel/rei/client/ConfigHelper.java
+++ b/src/main/java/me/shedaniel/rei/client/ConfigHelper.java
@@ -20,6 +20,7 @@ public class ConfigHelper {
this.craftableOnly = false;
try {
loadConfig();
+ RoughlyEnoughItemsCore.LOGGER.info("REI: Config is loaded.");
} catch (IOException e) {
e.printStackTrace();
}
@@ -119,4 +120,12 @@ public class ConfigHelper {
config.mirrorItemPanel = mirrorItemPanel;
}
+ public boolean isLoadingDefaultPlugin() {
+ return config.loadDefaultPlugin;
+ }
+
+ public void setLoadingDefaultPlugin(boolean loadDefaultPlugin) {
+ config.loadDefaultPlugin = loadDefaultPlugin;
+ }
+
}
diff --git a/src/main/java/me/shedaniel/rei/client/GuiHelper.java b/src/main/java/me/shedaniel/rei/client/GuiHelper.java
index 2b453c784..cf74fafbd 100644
--- a/src/main/java/me/shedaniel/rei/client/GuiHelper.java
+++ b/src/main/java/me/shedaniel/rei/client/GuiHelper.java
@@ -17,7 +17,6 @@ public class GuiHelper {
private static boolean overlayVisible = true;
private static ContainerScreenOverlay overlay;
private static ContainerScreen lastContainerScreen;
- private static IMixinContainerScreen lastMixinContainerScreen;
public static boolean isOverlayVisible() {
return overlayVisible;
@@ -27,19 +26,21 @@ public class GuiHelper {
overlayVisible = !overlayVisible;
}
- public static ContainerScreenOverlay getLastOverlay() {
+ public static ContainerScreenOverlay getLastOverlay(boolean reset) {
+ if (overlay == null || reset) {
+ overlay = new ContainerScreenOverlay();
+ overlay.onInitialized();
+ }
return overlay;
}
- public static void setOverlay(ContainerScreenOverlay overlay) {
- GuiHelper.overlay = overlay;
- overlay.onInitialized();
+ public static ContainerScreenOverlay getLastOverlay() {
+ return getLastOverlay(false);
}
public static void onTick(MinecraftClient client) {
if (client.currentScreen instanceof ContainerScreen && lastContainerScreen != client.currentScreen) {
GuiHelper.lastContainerScreen = (ContainerScreen) client.currentScreen;
- GuiHelper.lastMixinContainerScreen = (IMixinContainerScreen) lastContainerScreen;
}
}
@@ -52,11 +53,7 @@ public class GuiHelper {
}
public static IMixinContainerScreen getLastMixinContainerScreen() {
- return lastMixinContainerScreen;
- }
-
- public static void setLastMixinContainerScreen(IMixinContainerScreen lastMixinContainerScreen) {
- GuiHelper.lastMixinContainerScreen = lastMixinContainerScreen;
+ return (IMixinContainerScreen) lastContainerScreen;
}
}
diff --git a/src/main/java/me/shedaniel/rei/client/ItemListHelper.java b/src/main/java/me/shedaniel/rei/client/ItemListHelper.java
new file mode 100644
index 000000000..81c882d49
--- /dev/null
+++ b/src/main/java/me/shedaniel/rei/client/ItemListHelper.java
@@ -0,0 +1,53 @@
+package me.shedaniel.rei.client;
+
+import com.google.common.collect.Lists;
+import me.shedaniel.rei.api.IItemRegisterer;
+import net.minecraft.item.Item;
+import net.minecraft.item.ItemStack;
+import net.minecraft.item.Items;
+import net.minecraft.util.DefaultedList;
+
+import java.util.Collections;
+import java.util.List;
+import java.util.TreeSet;
+import java.util.stream.Collectors;
+
+public class ItemListHelper implements IItemRegisterer {
+
+ private final List<ItemStack> itemList = Lists.newLinkedList();
+
+ @Override
+ public List<ItemStack> getItemList() {
+ return Collections.unmodifiableList(itemList);
+ }
+
+ @Deprecated
+ @Override
+ public List<ItemStack> getModifiableItemList() {
+ return itemList;
+ }
+
+ @Override
+ public ItemStack[] getAllStacksFromItem(Item item) {
+ DefaultedList<ItemStack> list = DefaultedList.create();
+ list.add(item.getDefaultStack());
+ item.addStacksForDisplay(item.getItemGroup(), list);
+ TreeSet<ItemStack> stackSet = list.stream().collect(Collectors.toCollection(() -> new TreeSet<ItemStack>((p1, p2) -> ItemStack.areEqual(p1, p2) ? 0 : 1)));
+ return Lists.newArrayList(stackSet).toArray(new ItemStack[0]);
+ }
+
+ @Override
+ public void registerItemStack(Item afterItem, ItemStack stack) {
+ if (!stack.isEmpty() && !alreadyContain(stack))
+ if (afterItem == null || afterItem.equals(Items.AIR))
+ itemList.add(stack);
+ else {
+ int last = itemList.size();
+ for(int i = 0; i < itemList.size(); i++)
+ if (itemList.get(i).getItem().equals(afterItem))
+ last = i + 1;
+ itemList.add(last, stack);
+ }
+ }
+
+}
diff --git a/src/main/java/me/shedaniel/rei/client/REIConfig.java b/src/main/java/me/shedaniel/rei/client/REIConfig.java
index b5b798371..be4eabfeb 100644
--- a/src/main/java/me/shedaniel/rei/client/REIConfig.java
+++ b/src/main/java/me/shedaniel/rei/client/REIConfig.java
@@ -14,5 +14,6 @@ public class REIConfig {
public String giveCommandPrefix = "/give";
public boolean checkUpdates = true;
public boolean mirrorItemPanel = false;
+ public boolean loadDefaultPlugin = true;
}
diff --git a/src/main/java/me/shedaniel/rei/client/RecipeHelper.java b/src/main/java/me/shedaniel/rei/client/RecipeHelper.java
index 80d76c5f1..96490c6dd 100644
--- a/src/main/java/me/shedaniel/rei/client/RecipeHelper.java
+++ b/src/main/java/me/shedaniel/rei/client/RecipeHelper.java
@@ -59,7 +59,7 @@ public class RecipeHelper {
recipeCategoryListMap.put(category.getIdentifier(), Lists.newLinkedList());
}
- public void registerRecipe(Identifier categoryIdentifier, IRecipeDisplay display) {
+ public void registerDisplay(Identifier categoryIdentifier, IRecipeDisplay display) {
if (!recipeCategoryListMap.containsKey(categoryIdentifier))
return;
recipeCategoryListMap.get(categoryIdentifier).add(display);
@@ -147,6 +147,7 @@ public class RecipeHelper {
speedCraftFunctionalMap.put(category, list);
}
+ @SuppressWarnings("deprecation")
public void recipesLoaded(RecipeManager recipeManager) {
this.recipeManager = recipeManager;
this.recipeCategoryListMap.clear();
@@ -162,10 +163,20 @@ public class RecipeHelper {
return identifier == null ? "NULL" : identifier.toString();
}).collect(Collectors.toList())));
Collections.reverse(plugins);
+ RoughlyEnoughItemsCore.getItemRegisterer().getModifiableItemList().clear();
+ IPluginDisabler pluginDisabler = RoughlyEnoughItemsCore.getPluginDisabler();
plugins.forEach(plugin -> {
- plugin.registerPluginCategories();
- plugin.registerRecipes();
- plugin.registerSpeedCraft();
+ Identifier identifier = RoughlyEnoughItemsCore.getPluginIdentifier(plugin);
+ if (identifier == null)
+ identifier = new Identifier("null");
+ if (pluginDisabler.isFunctionEnabled(identifier, PluginFunction.REGISTER_ITEMS))
+ plugin.registerItems(RoughlyEnoughItemsCore.getItemRegisterer());
+ if (pluginDisabler.isFunctionEnabled(identifier, PluginFunction.REGISTER_CATEGORIES))
+ plugin.registerPluginCategories(this);
+ if (pluginDisabler.isFunctionEnabled(identifier, PluginFunction.REGISTER_RECIPE_DISPLAYS))
+ plugin.registerRecipeDisplays(this);
+ if (pluginDisabler.isFunctionEnabled(identifier, PluginFunction.REGISTER_SPEED_CRAFT))
+ plugin.registerSpeedCraft(this);
});
RoughlyEnoughItemsCore.LOGGER.info("Registered REI Categories: " + String.join(", ", categories.stream().map(category -> {
return category.getCategoryName();