diff options
| author | Unknown <shekwancheung0528@gmail.com> | 2019-04-09 17:44:04 +0800 |
|---|---|---|
| committer | Unknown <shekwancheung0528@gmail.com> | 2019-04-09 17:44:04 +0800 |
| commit | a2ca75303852c2c7612ef8e95d831331173f0014 (patch) | |
| tree | caeedf90f52fc74930fc85ae041f8b998859ee71 /src/main/java | |
| parent | 7e7958b83c619490b4a57f7652b8cadeb7bf90eb (diff) | |
| download | RoughlyEnoughItems-a2ca75303852c2c7612ef8e95d831331173f0014.tar.gz RoughlyEnoughItems-a2ca75303852c2c7612ef8e95d831331173f0014.tar.bz2 RoughlyEnoughItems-a2ca75303852c2c7612ef8e95d831331173f0014.zip | |
Loader 0.4
Diffstat (limited to 'src/main/java')
11 files changed, 258 insertions, 288 deletions
diff --git a/src/main/java/me/shedaniel/rei/RoughlyEnoughItemsCore.java b/src/main/java/me/shedaniel/rei/RoughlyEnoughItemsCore.java index e562f9c4b..bfb69c70b 100644 --- a/src/main/java/me/shedaniel/rei/RoughlyEnoughItemsCore.java +++ b/src/main/java/me/shedaniel/rei/RoughlyEnoughItemsCore.java @@ -1,42 +1,43 @@ package me.shedaniel.rei; +import com.google.common.collect.Lists; import com.google.common.collect.Maps; +import com.google.gson.JsonElement; +import com.google.gson.JsonObject; +import me.shedaniel.cloth.api.ClientUtils; +import me.shedaniel.cloth.hooks.ClothClientHooks; import me.shedaniel.rei.api.ItemRegistry; import me.shedaniel.rei.api.PluginDisabler; import me.shedaniel.rei.api.REIPlugin; import me.shedaniel.rei.api.RecipeHelper; -import me.shedaniel.rei.client.ConfigManager; -import me.shedaniel.rei.client.ItemRegistryImpl; -import me.shedaniel.rei.client.PluginDisablerImpl; -import me.shedaniel.rei.client.RecipeHelperImpl; -import me.shedaniel.rei.gui.widget.ItemListOverlay; -import me.shedaniel.rei.plugin.DefaultPlugin; +import me.shedaniel.rei.client.*; +import me.shedaniel.rei.gui.ContainerScreenOverlay; import net.fabricmc.api.ClientModInitializer; -import net.fabricmc.api.ModInitializer; -import net.fabricmc.fabric.api.network.ServerSidePacketRegistry; import net.fabricmc.loader.api.FabricLoader; +import net.fabricmc.loader.api.ModContainer; +import net.fabricmc.loader.api.metadata.ModMetadata; import net.minecraft.client.MinecraftClient; -import net.minecraft.client.resource.language.I18n; -import net.minecraft.item.ItemStack; -import net.minecraft.server.network.ServerPlayerEntity; -import net.minecraft.text.StringTextComponent; -import net.minecraft.text.TranslatableTextComponent; +import net.minecraft.client.gui.ContainerScreen; +import net.minecraft.client.gui.Element; +import net.minecraft.client.gui.ingame.CreativePlayerInventoryScreen; +import net.minecraft.client.gui.ingame.PlayerInventoryScreen; +import net.minecraft.client.gui.widget.RecipeBookButtonWidget; +import net.minecraft.util.ActionResult; import net.minecraft.util.Identifier; +import net.minecraft.util.Pair; import org.apache.logging.log4j.LogManager; import org.apache.logging.log4j.Logger; -import java.lang.reflect.InvocationTargetException; import java.lang.reflect.Method; import java.util.LinkedList; import java.util.List; import java.util.Map; import java.util.Optional; +import java.util.stream.Collectors; -public class RoughlyEnoughItemsCore implements ClientModInitializer, ModInitializer { +public class RoughlyEnoughItemsCore implements ClientModInitializer { public static final Logger LOGGER; - public static final Identifier DELETE_ITEMS_PACKET = new Identifier("roughlyenoughitems", "delete_item"); - public static final Identifier CREATE_ITEMS_PACKET = new Identifier("roughlyenoughitems", "create_item"); private static final RecipeHelper RECIPE_HELPER = new RecipeHelperImpl(); private static final PluginDisabler PLUGIN_DISABLER = new PluginDisablerImpl(); private static final ItemRegistry ITEM_REGISTRY = new ItemRegistryImpl(); @@ -85,22 +86,7 @@ public class RoughlyEnoughItemsCore implements ClientModInitializer, ModInitiali public void onInitializeClient() { configManager = new ConfigManager(); - // If pluginloader is not installed, base functionality should still remain - if (!FabricLoader.getInstance().isModLoaded("pluginloader")) { - RoughlyEnoughItemsCore.LOGGER.warn("[REI] Plugin Loader is not loaded! Please consider installing https://minecraft.curseforge.com/projects/pluginloader for REI plugin compatibility!"); - registerPlugin(new Identifier("roughlyenoughitems", "default_plugin"), new DefaultPlugin()); - } - - if (FabricLoader.getInstance().isModLoaded("cloth")) { - try { - Class.forName("me.shedaniel.rei.utils.ClothRegistry").getDeclaredMethod("register").invoke(null); - } catch (IllegalAccessException | InvocationTargetException | ClassNotFoundException | NoSuchMethodException e) { - e.printStackTrace(); - } - } else { - RoughlyEnoughItemsCore.LOGGER.fatal("[REI] Cloth NOT found! It is a dependency of REI: https://minecraft.curseforge.com/projects/cloth"); - System.exit(0); - } + registerClothEvents(); if (FabricLoader.getInstance().isModLoaded("modmenu")) { try { @@ -111,26 +97,115 @@ public class RoughlyEnoughItemsCore implements ClientModInitializer, ModInitiali RoughlyEnoughItemsCore.LOGGER.error("[REI] Failed to add config override for ModMenu!", e); } } + + discoverPlugins(); } - @Override - public void onInitialize() { - registerFabricPackets(); + private void discoverPlugins() { + List<Pair<Identifier, String>> list = Lists.newArrayList(); + for(ModMetadata metadata : FabricLoader.getInstance().getAllMods().stream().map(ModContainer::getMetadata).filter(metadata -> metadata.containsCustomElement("roughlyenoughitems:plugins")).collect(Collectors.toList())) { + try { + JsonElement pluginsElement = metadata.getCustomElement("roughlyenoughitems:plugins"); + if (pluginsElement.isJsonArray()) { + for(JsonElement element : pluginsElement.getAsJsonArray()) + if (element.isJsonObject()) + loadPluginFromJsonObject(list, metadata, element.getAsJsonObject()); + else + throw new IllegalStateException("Custom Element in an array is not an object."); + } else if (pluginsElement.isJsonObject()) { + loadPluginFromJsonObject(list, metadata, pluginsElement.getAsJsonObject()); + } else + throw new IllegalStateException("Custom Element not an array or an object."); + } catch (Exception e) { + e.printStackTrace(); + RoughlyEnoughItemsCore.LOGGER.error("[REI] Can't load REI plugins from %s: %s", metadata.getId(), e.getLocalizedMessage()); + } + } + for(Pair<Identifier, String> pair : list) { + String s = pair.getRight(); + try { + Class<?> aClass = Class.forName(s); + if (!REIPlugin.class.isAssignableFrom(aClass)) { + RoughlyEnoughItemsCore.LOGGER.error("[REI] Plugin class from %s is not implementing REIPlugin!", s); + break; + } + REIPlugin o = REIPlugin.class.cast(aClass.newInstance()); + registerPlugin(pair.getLeft(), o); + } catch (ClassNotFoundException | InstantiationException | IllegalAccessException e) { + RoughlyEnoughItemsCore.LOGGER.error("[REI] Can't load REI plugin class from %s!", s); + } catch (ClassCastException e) { + RoughlyEnoughItemsCore.LOGGER.error("[REI] Failed to cast plugin class from %s to REIPlugin!", s); + } + } } - private void registerFabricPackets() { - ServerSidePacketRegistry.INSTANCE.register(DELETE_ITEMS_PACKET, (packetContext, packetByteBuf) -> { - ServerPlayerEntity player = (ServerPlayerEntity) packetContext.getPlayer(); - if (!player.inventory.getCursorStack().isEmpty()) - player.inventory.setCursorStack(ItemStack.EMPTY); + private void loadPluginFromJsonObject(List<Pair<Identifier, String>> list, ModMetadata modMetadata, JsonObject object) { + String namespace = modMetadata.getId(); + if (object.has("namespace")) + namespace = object.get("namespace").getAsString(); + String id = object.get("id").getAsString(); + String className = object.get("class").getAsString(); + list.add(new Pair<>(new Identifier(namespace, id), className)); + } + + private void registerClothEvents() { + ClothClientHooks.SYNC_RECIPES.register((minecraftClient, recipeManager, synchronizeRecipesS2CPacket) -> { + ((RecipeHelperImpl) RoughlyEnoughItemsCore.getRecipeHelper()).recipesLoaded(recipeManager); + }); + ClothClientHooks.SCREEN_ADD_BUTTON.register((minecraftClient, screen, abstractButtonWidget) -> { + if (RoughlyEnoughItemsCore.getConfigManager().getConfig().disableRecipeBook && screen instanceof ContainerScreen && abstractButtonWidget instanceof RecipeBookButtonWidget) + return ActionResult.FAIL; + return ActionResult.PASS; + }); + ClothClientHooks.SCREEN_INIT_POST.register((minecraftClient, screen, screenHooks) -> { + if (screen instanceof ContainerScreen) { + if (screen instanceof PlayerInventoryScreen && minecraftClient.interactionManager.hasCreativeInventory()) + return; + ScreenHelper.setLastContainerScreen((ContainerScreen) screen); + boolean alreadyAdded = false; + for(Element element : Lists.newArrayList(screenHooks.cloth_getInputListeners())) + if (ContainerScreenOverlay.class.isAssignableFrom(element.getClass())) + if (alreadyAdded) + screenHooks.cloth_getInputListeners().remove(element); + else + alreadyAdded = true; + if (!alreadyAdded) + screenHooks.cloth_getInputListeners().add(ScreenHelper.getLastOverlay(true, false)); + } + }); + ClothClientHooks.SCREEN_RENDER_POST.register((minecraftClient, screen, i, i1, v) -> { + if (screen instanceof ContainerScreen) + ScreenHelper.getLastOverlay().render(i, i1, v); + }); + ClothClientHooks.SCREEN_MOUSE_CLICKED.register((minecraftClient, screen, v, v1, i) -> { + if (screen instanceof CreativePlayerInventoryScreen) + if (ScreenHelper.isOverlayVisible() && ScreenHelper.getLastOverlay().mouseClicked(v, v1, i)) + return ActionResult.SUCCESS; + return ActionResult.PASS; + }); + ClothClientHooks.SCREEN_MOUSE_SCROLLED.register((minecraftClient, screen, v, v1, v2) -> { + if (screen instanceof ContainerScreen) + if (ScreenHelper.isOverlayVisible() && ScreenHelper.getLastOverlay().getRectangle().contains(ClientUtils.getMouseLocation()) && ScreenHelper.getLastOverlay().mouseScrolled(v, v1, v2)) + return ActionResult.SUCCESS; + return ActionResult.PASS; + }); + ClothClientHooks.SCREEN_CHAR_TYPED.register((minecraftClient, screen, character, keyCode) -> { + if (screen instanceof ContainerScreen) + if (ScreenHelper.getLastOverlay().charTyped(character, keyCode)) + return ActionResult.SUCCESS; + return ActionResult.PASS; + }); + ClothClientHooks.SCREEN_LATE_RENDER.register((minecraftClient, screen, i, i1, v) -> { + if (!ScreenHelper.isOverlayVisible()) + return; + if (screen instanceof ContainerScreen) + ScreenHelper.getLastOverlay().lateRender(i, i1, v); }); - ServerSidePacketRegistry.INSTANCE.register(CREATE_ITEMS_PACKET, (packetContext, packetByteBuf) -> { - ServerPlayerEntity player = (ServerPlayerEntity) packetContext.getPlayer(); - ItemStack stack = packetByteBuf.readItemStack(); - if (player.inventory.insertStack(stack.copy())) - player.addChatMessage(new StringTextComponent(I18n.translate("text.rei.cheat_items").replaceAll("\\{item_name}", ItemListOverlay.tryGetItemStackName(stack.copy())).replaceAll("\\{item_count}", stack.copy().getAmount() + "").replaceAll("\\{player_name}", player.getEntityName())), false); - else - player.addChatMessage(new TranslatableTextComponent("text.rei.failed_cheat_items"), false); + ClothClientHooks.SCREEN_KEY_PRESSED.register((minecraftClient, screen, i, i1, i2) -> { + if (screen instanceof ContainerScreen) + if (ScreenHelper.getLastOverlay().keyPressed(i, i1, i2)) + return ActionResult.SUCCESS; + return ActionResult.PASS; }); } diff --git a/src/main/java/me/shedaniel/rei/RoughlyEnoughItemsNetwork.java b/src/main/java/me/shedaniel/rei/RoughlyEnoughItemsNetwork.java new file mode 100644 index 000000000..d10ff8458 --- /dev/null +++ b/src/main/java/me/shedaniel/rei/RoughlyEnoughItemsNetwork.java @@ -0,0 +1,35 @@ +package me.shedaniel.rei; + +import me.shedaniel.rei.gui.widget.ItemListOverlay; +import net.fabricmc.api.ModInitializer; +import net.fabricmc.fabric.api.network.ServerSidePacketRegistry; +import net.minecraft.client.resource.language.I18n; +import net.minecraft.item.ItemStack; +import net.minecraft.server.network.ServerPlayerEntity; +import net.minecraft.text.StringTextComponent; +import net.minecraft.text.TranslatableTextComponent; +import net.minecraft.util.Identifier; + +public class RoughlyEnoughItemsNetwork implements ModInitializer { + + public static final Identifier DELETE_ITEMS_PACKET = new Identifier("roughlyenoughitems", "delete_item"); + public static final Identifier CREATE_ITEMS_PACKET = new Identifier("roughlyenoughitems", "create_item"); + + @Override + public void onInitialize() { + ServerSidePacketRegistry.INSTANCE.register(DELETE_ITEMS_PACKET, (packetContext, packetByteBuf) -> { + ServerPlayerEntity player = (ServerPlayerEntity) packetContext.getPlayer(); + if (!player.inventory.getCursorStack().isEmpty()) + player.inventory.setCursorStack(ItemStack.EMPTY); + }); + ServerSidePacketRegistry.INSTANCE.register(CREATE_ITEMS_PACKET, (packetContext, packetByteBuf) -> { + ServerPlayerEntity player = (ServerPlayerEntity) packetContext.getPlayer(); + ItemStack stack = packetByteBuf.readItemStack(); + if (player.inventory.insertStack(stack.copy())) + player.addChatMessage(new StringTextComponent(I18n.translate("text.rei.cheat_items").replaceAll("\\{item_name}", ItemListOverlay.tryGetItemStackName(stack.copy())).replaceAll("\\{item_count}", stack.copy().getAmount() + "").replaceAll("\\{player_name}", player.getEntityName())), false); + else + player.addChatMessage(new TranslatableTextComponent("text.rei.failed_cheat_items"), false); + }); + } + +} diff --git a/src/main/java/me/shedaniel/rei/RoughlyEnoughItemsPlugins.java b/src/main/java/me/shedaniel/rei/RoughlyEnoughItemsPlugins.java deleted file mode 100644 index 452e97eea..000000000 --- a/src/main/java/me/shedaniel/rei/RoughlyEnoughItemsPlugins.java +++ /dev/null @@ -1,27 +0,0 @@ -package me.shedaniel.rei; - -import info.tehnut.pluginloader.LoaderCreator; -import info.tehnut.pluginloader.PluginLoaderBuilder; -import info.tehnut.pluginloader.ValidationStrategy; -import me.shedaniel.rei.api.REIPlugin; -import net.fabricmc.loader.language.LanguageAdapter; -import net.fabricmc.loader.language.LanguageAdapterException; -import net.minecraft.util.Identifier; - -public class RoughlyEnoughItemsPlugins implements LoaderCreator { - - @Override - public void createLoaders() { - LanguageAdapter.Options instantiationOptions = new LanguageAdapter.Options(); - - new PluginLoaderBuilder("roughlyenoughitems").withValidator(ValidationStrategy.hasInterface(REIPlugin.class)).withInitializer((aClass, container) -> { - Identifier id = new Identifier(container.getOwner().getInfo().getId(), container.getInfo().getId()); - try { - REIPlugin plugin = (REIPlugin) container.getOwner().getAdapter().createInstance(aClass, instantiationOptions); - RoughlyEnoughItemsCore.registerPlugin(id, plugin); - } catch (LanguageAdapterException e) { - RoughlyEnoughItemsCore.LOGGER.error("[REI] Error loading plugin %s", id, e); - } - }).build(); - } -} diff --git a/src/main/java/me/shedaniel/rei/client/ClientHelper.java b/src/main/java/me/shedaniel/rei/client/ClientHelper.java index 103f5784f..764362074 100644 --- a/src/main/java/me/shedaniel/rei/client/ClientHelper.java +++ b/src/main/java/me/shedaniel/rei/client/ClientHelper.java @@ -3,6 +3,7 @@ package me.shedaniel.rei.client; import com.google.common.collect.ImmutableList; import io.netty.buffer.Unpooled; import me.shedaniel.rei.RoughlyEnoughItemsCore; +import me.shedaniel.rei.RoughlyEnoughItemsNetwork; import me.shedaniel.rei.api.RecipeCategory; import me.shedaniel.rei.api.RecipeDisplay; import me.shedaniel.rei.api.RecipeHelper; @@ -43,7 +44,6 @@ public class ClientHelper implements ClientModInitializer { String modid = location.getNamespace(); if (modid.equalsIgnoreCase("minecraft")) return "Minecraft"; - // return FabricLoader.getInstance().getAllMods().stream().map(ModContainer::getMetadata).filter(metadata -> metadata.getId().equals(modid)).findFirst().map(ModMetadata::getName).orElse(modid); return FabricLoader.getInstance().getModContainer(modid).map(ModContainer::getMetadata).map(ModMetadata::getName).orElse(modid); } return ""; @@ -67,13 +67,13 @@ public class ClientHelper implements ClientModInitializer { MinecraftClient.getInstance().player.inventory.setCursorStack(ItemStack.EMPTY); return; } - ClientSidePacketRegistry.INSTANCE.sendToServer(RoughlyEnoughItemsCore.DELETE_ITEMS_PACKET, new PacketByteBuf(Unpooled.buffer())); + ClientSidePacketRegistry.INSTANCE.sendToServer(RoughlyEnoughItemsNetwork.DELETE_ITEMS_PACKET, new PacketByteBuf(Unpooled.buffer())); } public static boolean tryCheatingStack(ItemStack cheatedStack) { if (MinecraftClient.getInstance().isInSingleplayer()) { try { - ClientSidePacketRegistry.INSTANCE.sendToServer(RoughlyEnoughItemsCore.CREATE_ITEMS_PACKET, new PacketByteBuf(Unpooled.buffer()).writeItemStack(cheatedStack.copy())); + ClientSidePacketRegistry.INSTANCE.sendToServer(RoughlyEnoughItemsNetwork.CREATE_ITEMS_PACKET, new PacketByteBuf(Unpooled.buffer()).writeItemStack(cheatedStack.copy())); return true; } catch (Exception e) { return false; @@ -87,7 +87,6 @@ public class ClientHelper implements ClientModInitializer { madeUpCommand = og.replaceAll("\\{player_name}", MinecraftClient.getInstance().player.getEntityName()).replaceAll("\\{item_identifier}", identifier.toString()).replaceAll("\\{nbt}", "").replaceAll("\\{count}", String.valueOf(cheatedStack.getAmount())); MinecraftClient.getInstance().player.addChatMessage(new TranslatableTextComponent("text.rei.too_long_nbt"), false); } - System.out.println(madeUpCommand); MinecraftClient.getInstance().player.sendChatMessage(madeUpCommand); return true; } diff --git a/src/main/java/me/shedaniel/rei/client/ConfigManager.java b/src/main/java/me/shedaniel/rei/client/ConfigManager.java index 59a870234..7edfc08f7 100644 --- a/src/main/java/me/shedaniel/rei/client/ConfigManager.java +++ b/src/main/java/me/shedaniel/rei/client/ConfigManager.java @@ -6,7 +6,10 @@ import com.google.gson.Gson; import com.google.gson.GsonBuilder; import me.shedaniel.rei.RoughlyEnoughItemsCore; import net.fabricmc.loader.api.FabricLoader; +import net.minecraft.client.MinecraftClient; import net.minecraft.client.gui.Screen; +import net.minecraft.client.resource.language.I18n; +import net.minecraft.text.StringTextComponent; import java.io.File; import java.io.FileOutputStream; @@ -14,6 +17,7 @@ import java.io.IOException; import java.lang.reflect.InvocationTargetException; import java.nio.file.Files; import java.nio.file.StandardCopyOption; +import java.util.List; public class ConfigManager implements me.shedaniel.rei.api.ConfigManager { @@ -122,10 +126,44 @@ public class ConfigManager implements me.shedaniel.rei.api.ConfigManager { @Override public void openConfigScreen(Screen parent) { - try { - Class.forName("me.shedaniel.rei.utils.ClothRegistry").getDeclaredMethod("openConfigScreen", Screen.class).invoke(null, parent); - } catch (IllegalAccessException | ClassNotFoundException | NoSuchMethodException | InvocationTargetException e) { - e.printStackTrace(); + if (FabricLoader.getInstance().isModLoaded("cloth-config")) { + try { + Class.forName("me.shedaniel.rei.utils.ClothScreenRegistry").getDeclaredMethod("openConfigScreen", Screen.class).invoke(null, parent); + } catch (IllegalAccessException | ClassNotFoundException | NoSuchMethodException | InvocationTargetException e) { + e.printStackTrace(); + } + } else { + MinecraftClient.getInstance().openScreen(new Screen(new StringTextComponent("")) { + @Override + public void render(int int_1, int int_2, float float_1) { + renderDirtBackground(0); + List<String> list = minecraft.textRenderer.wrapStringToWidthAsList(I18n.translate("text.rei.no_config_api"), width - 100); + int y = (int) (height / 2 - minecraft.textRenderer.fontHeight * 1.3f / 2 * list.size()); + for(int i = 0; i < list.size(); i++) { + String s = list.get(i); + drawCenteredString(minecraft.textRenderer, s, width / 2, y, -1); + y += minecraft.textRenderer.fontHeight; + } + super.render(int_1, int_2, float_1); + } + + @Override + protected void init() { + super.init(); + addButton(new net.minecraft.client.gui.widget.ButtonWidget(width / 2 - 100, height - 26, 200, 20, I18n.translate("gui.done"), buttonWidget -> { + this.minecraft.openScreen(parent); + })); + } + + @Override + public boolean keyPressed(int int_1, int int_2, int int_3) { + if (int_1 == 256 && this.shouldCloseOnEsc()) { + this.minecraft.openScreen(parent); + return true; + } + return super.keyPressed(int_1, int_2, int_3); + } + }); } } diff --git a/src/main/java/me/shedaniel/rei/gui/config/ItemListOrderingEntry.java b/src/main/java/me/shedaniel/rei/gui/config/ItemListOrderingEntry.java index e543e8b64..f70d1be88 100644 --- a/src/main/java/me/shedaniel/rei/gui/config/ItemListOrderingEntry.java +++ b/src/main/java/me/shedaniel/rei/gui/config/ItemListOrderingEntry.java @@ -1,7 +1,6 @@ package me.shedaniel.rei.gui.config; import com.google.common.collect.Lists; -import javafx.util.Pair; import me.shedaniel.cloth.gui.ClothConfigScreen.ListEntry; import me.shedaniel.rei.RoughlyEnoughItemsCore; import me.shedaniel.rei.client.ItemListOrdering; @@ -10,6 +9,7 @@ import net.minecraft.client.gui.Element; import net.minecraft.client.gui.widget.ButtonWidget; import net.minecraft.client.resource.language.I18n; import net.minecraft.client.util.Window; +import net.minecraft.util.Pair; import java.util.Arrays; import java.util.List; @@ -26,8 +26,8 @@ public class ItemListOrderingEntry extends ListEntry { super(fieldName); this.value = new AtomicReference(val); this.buttonWidget = new ButtonWidget(0, 0, 150, 20, "", widget -> { - int index = Arrays.asList(ItemListOrdering.values()).indexOf(value.get().getKey()) + 1; - boolean currentAscending = value.get().getValue(); + int index = Arrays.asList(ItemListOrdering.values()).indexOf(value.get().getLeft()) + 1; + boolean currentAscending = value.get().getRight(); if (index >= ItemListOrdering.values().length) { index = 0; currentAscending = !currentAscending; @@ -54,10 +54,10 @@ public class ItemListOrderingEntry extends ListEntry { @Override public void render(int index, int y, int x, int entryWidth, int entryHeight, int mouseX, int mouseY, boolean isSelected, float delta) { Window window = MinecraftClient.getInstance().window; - this.resetButton.active = this.getDefaultValue().isPresent() && (((Pair<ItemListOrdering, Boolean>) this.getDefaultValue().get()).getKey() != this.value.get().getKey() || ((Pair<ItemListOrdering, Boolean>) this.getDefaultValue().get()).getValue().booleanValue() != this.value.get().getValue().booleanValue()); + this.resetButton.active = this.getDefaultValue().isPresent() && (((Pair<ItemListOrdering, Boolean>) this.getDefaultValue().get()).getLeft() != this.value.get().getLeft() || ((Pair<ItemListOrdering, Boolean>) this.getDefaultValue().get()).getRight().booleanValue() != this.value.get().getRight().booleanValue()); this.resetButton.y = y; this.buttonWidget.y = y; - this.buttonWidget.setMessage(I18n.translate("text.rei.config.list_ordering_button", I18n.translate(value.get().getKey().getNameTranslationKey()), I18n.translate(value.get().getValue() ? "ordering.rei.ascending" : "ordering.rei.descending"))); + this.buttonWidget.setMessage(I18n.translate("text.rei.config.list_ordering_button", I18n.translate(value.get().getLeft().getNameTranslationKey()), I18n.translate(value.get().getRight() ? "ordering.rei.ascending" : "ordering.rei.descending"))); if (MinecraftClient.getInstance().textRenderer.isRightToLeft()) { MinecraftClient.getInstance().textRenderer.drawWithShadow(I18n.translate(this.getFieldName(), new Object[0]), (float) (window.getScaledWidth() - x - MinecraftClient.getInstance().textRenderer.getStringWidth(I18n.translate(this.getFieldName(), new Object[0]))), (float) (y + 5), 16777215); this.resetButton.x = x; @@ -84,7 +84,7 @@ public class ItemListOrderingEntry extends ListEntry { @Override public void save() { - RoughlyEnoughItemsCore.getConfigManager().getConfig().itemListOrdering = value.get().getKey(); - RoughlyEnoughItemsCore.getConfigManager().getConfig().isAscending = value.get().getValue(); + RoughlyEnoughItemsCore.getConfigManager().getConfig().itemListOrdering = value.get().getLeft(); + RoughlyEnoughItemsCore.getConfigManager().getConfig().isAscending = value.get().getRight(); } } diff --git a/src/main/java/me/shedaniel/rei/gui/credits/CreditsScreen.java b/src/main/java/me/shedaniel/rei/gui/credits/CreditsScreen.java index f4df73aad..b09ca2fa1 100644 --- a/src/main/java/me/shedaniel/rei/gui/credits/CreditsScreen.java +++ b/src/main/java/me/shedaniel/rei/gui/credits/CreditsScreen.java @@ -40,7 +40,8 @@ public class CreditsScreen extends Screen { @Override public void onPressed() { CreditsScreen.this.minecraft.openScreen(parent); - ScreenHelper.getLastOverlay().init(); + if (parent instanceof ContainerScreen) + ScreenHelper.getLastOverlay().init(); } }); } diff --git a/src/main/java/me/shedaniel/rei/listeners/CreativePlayerInventoryScreenHooks.java b/src/main/java/me/shedaniel/rei/listeners/CreativePlayerInventoryScreenHooks.java deleted file mode 100644 index 209f442f0..000000000 --- a/src/main/java/me/shedaniel/rei/listeners/CreativePlayerInventoryScreenHooks.java +++ /dev/null @@ -1,9 +0,0 @@ -package me.shedaniel.rei.listeners; - -public interface CreativePlayerInventoryScreenHooks { - int rei_getSelectedTab(); - - boolean rei_doRenderScrollBar(); - - boolean rei_getField2888(); -} diff --git a/src/main/java/me/shedaniel/rei/mixin/MixinCreativePlayerInventoryScreen.java b/src/main/java/me/shedaniel/rei/mixin/MixinCreativePlayerInventoryScreen.java deleted file mode 100644 index c3f64df28..000000000 --- a/src/main/java/me/shedaniel/rei/mixin/MixinCreativePlayerInventoryScreen.java +++ /dev/null @@ -1,36 +0,0 @@ -package me.shedaniel.rei.mixin; - -import me.shedaniel.rei.listeners.CreativePlayerInventoryScreenHooks; -import net.minecraft.client.gui.ingame.CreativePlayerInventoryScreen; -import net.minecraft.entity.player.PlayerInventory; -import net.minecraft.text.TextComponent; -import org.spongepowered.asm.mixin.Mixin; -import org.spongepowered.asm.mixin.Shadow; - -@Mixin(CreativePlayerInventoryScreen.class) -public abstract class MixinCreativePlayerInventoryScreen implements CreativePlayerInventoryScreenHooks { - - @Shadow - private static int selectedTab; - @Shadow - private boolean field_2888; - - @Shadow - protected abstract boolean doRenderScrollBar(); - - @Override - public int rei_getSelectedTab() { - return selectedTab; - } - - @Override - public boolean rei_doRenderScrollBar() { - return doRenderScrollBar(); - } - - @Override - public boolean rei_getField2888() { - return field_2888; - } - -} diff --git a/src/main/java/me/shedaniel/rei/utils/ClothRegistry.java b/src/main/java/me/shedaniel/rei/utils/ClothRegistry.java deleted file mode 100644 index 76b55950a..000000000 --- a/src/main/java/me/shedaniel/rei/utils/ClothRegistry.java +++ /dev/null @@ -1,152 +0,0 @@ -package me.shedaniel.rei.utils; - -import com.google.common.collect.Lists; -import javafx.util.Pair; -import me.shedaniel.cloth.api.ClientUtils; -import me.shedaniel.cloth.api.ConfigScreenBuilder; -import me.shedaniel.cloth.gui.ClothConfigScreen; -import me.shedaniel.cloth.gui.entries.BooleanListEntry; -import me.shedaniel.cloth.gui.entries.IntegerListEntry; -import me.shedaniel.cloth.gui.entries.StringListEntry; -import me.shedaniel.cloth.hooks.ClothClientHooks; -import me.shedaniel.rei.RoughlyEnoughItemsCore; -import me.shedaniel.rei.client.RecipeHelperImpl; -import me.shedaniel.rei.client.ScreenHelper; -import me.shedaniel.rei.gui.ContainerScreenOverlay; -import me.shedaniel.rei.gui.config.ItemListOrderingEntry; -import me.shedaniel.rei.listeners.CreativePlayerInventoryScreenHooks; -import net.minecraft.client.MinecraftClient; -import net.minecraft.client.gui.ContainerScreen; -import net.minecraft.client.gui.Element; -import net.minecraft.client.gui.Screen; -import net.minecraft.client.gui.ingame.CreativePlayerInventoryScreen; -import net.minecraft.client.gui.ingame.PlayerInventoryScreen; -import net.minecraft.client.gui.widget.RecipeBookButtonWidget; -import net.minecraft.item.ItemGroup; -import net.minecraft.util.ActionResult; - -import java.io.IOException; - -public class ClothRegistry { - - public static void register() { - ClothClientHooks.SYNC_RECIPES.register((minecraftClient, recipeManager, synchronizeRecipesS2CPacket) -> { - ((RecipeHelperImpl) RoughlyEnoughItemsCore.getRecipeHelper()).recipesLoaded(recipeManager); - }); - ClothClientHooks.SCREEN_ADD_BUTTON.register((minecraftClient, screen, abstractButtonWidget) -> { - if (RoughlyEnoughItemsCore.getConfigManager().getConfig().disableRecipeBook && screen instanceof ContainerScreen && abstractButtonWidget instanceof RecipeBookButtonWidget) - return ActionResult.FAIL; - return ActionResult.PASS; - }); - ClothClientHooks.SCREEN_INIT_POST.register((minecraftClient, screen, screenHooks) -> { - if (screen instanceof ContainerScreen) { - if (screen instanceof CreativePlayerInventoryScreen) - if (((CreativePlayerInventoryScreenHooks) screen).rei_getSelectedTab() != ItemGroup.INVENTORY.getIndex()) - return; - if (screen instanceof PlayerInventoryScreen && minecraftClient.interactionManager.hasCreativeInventory()) - return; - ScreenHelper.setLastContainerScreen((ContainerScreen) screen); - boolean alreadyAdded = false; - for(Element element : Lists.newArrayList(screenHooks.cloth_getInputListeners())) - if (ContainerScreenOverlay.class.isAssignableFrom(element.getClass())) - if (alreadyAdded) - screenHooks.cloth_getInputListeners().remove(element); - else - alreadyAdded = true; - if (!alreadyAdded) - screenHooks.cloth_getInputListeners().add(ScreenHelper.getLastOverlay(true, false)); - } - }); - ClothClientHooks.SCREEN_RENDER_POST.register((minecraftClient, screen, i, i1, v) -> { - if (screen instanceof ContainerScreen) { - if (screen instanceof CreativePlayerInventoryScreen) { - CreativePlayerInventoryScreenHooks creativePlayerInventoryScreenHooks = (CreativePlayerInventoryScreenHooks) screen; - if (creativePlayerInventoryScreenHooks.rei_getSelectedTab() != ItemGroup.INVENTORY.getIndex()) - return; - } - ScreenHelper.getLastOverlay().render(i, i1, v); - } - }); - ClothClientHooks.SCREEN_MOUSE_CLICKED.register((minecraftClient, screen, v, v1, i) -> { - if (screen instanceof CreativePlayerInventoryScreen) - if (((CreativePlayerInventoryScreenHooks) screen).rei_getSelectedTab() == ItemGroup.INVENTORY.getIndex()) - if (ScreenHelper.isOverlayVisible() && ScreenHelper.getLastOverlay().mouseClicked(v, v1, i)) - return ActionResult.SUCCESS; - return ActionResult.PASS; - }); - ClothClientHooks.SCREEN_MOUSE_SCROLLED.register((minecraftClient, screen, v, v1, v2) -> { - if (screen instanceof ContainerScreen) - if (screen instanceof CreativePlayerInventoryScreen) { - if (((CreativePlayerInventoryScreenHooks) screen).rei_doRenderScrollBar()) - return ActionResult.PASS; - if (ScreenHelper.isOverlayVisible() && ScreenHelper.getLastOverlay().getRectangle().contains(ClientUtils.getMouseLocation()) && ScreenHelper.getLastOverlay().mouseScrolled(v, v1, v2)) - return ActionResult.SUCCESS; - } else { - ContainerScreenOverlay overlay = ScreenHelper.getLastOverlay(); - if (ScreenHelper.isOverlayVisible() && ContainerScreenOverlay.getItemListOverlay().getListArea().contains(ClientUtils.getMouseLocation())) - if (overlay.mouseScrolled(v, v1, v2)) - return ActionResult.SUCCESS; - } - return ActionResult.PASS; - }); |
