diff options
Diffstat (limited to 'src/main')
11 files changed, 137 insertions, 110 deletions
diff --git a/src/main/java/me/shedaniel/rei/REIMixinInit.java b/src/main/java/me/shedaniel/rei/REIMixinInit.java new file mode 100644 index 000000000..39f3639e2 --- /dev/null +++ b/src/main/java/me/shedaniel/rei/REIMixinInit.java @@ -0,0 +1,15 @@ +package me.shedaniel.rei; + +import org.dimdev.riftloader.listener.InitializationListener; +import org.spongepowered.asm.launch.MixinBootstrap; +import org.spongepowered.asm.mixin.Mixins; + +public class REIMixinInit implements InitializationListener { + + @Override + public void onInitialization() { + MixinBootstrap.init(); + Mixins.addConfiguration("roughlyenoughitems.client.json"); + } + +} diff --git a/src/main/java/me/shedaniel/rei/RoughlyEnoughItemsCore.java b/src/main/java/me/shedaniel/rei/RoughlyEnoughItemsCore.java index 84ca49c6d..ad445e1d2 100644 --- a/src/main/java/me/shedaniel/rei/RoughlyEnoughItemsCore.java +++ b/src/main/java/me/shedaniel/rei/RoughlyEnoughItemsCore.java @@ -3,12 +3,17 @@ package me.shedaniel.rei; import com.google.common.collect.Lists; import com.google.common.collect.Maps; import me.shedaniel.rei.api.IRecipePlugin; +import me.shedaniel.rei.client.ClientHelper; import me.shedaniel.rei.client.ConfigHelper; +import me.shedaniel.rei.client.RecipeHelper; import me.shedaniel.rei.listeners.IListener; +import me.shedaniel.rei.plugin.DefaultPlugin; import net.minecraft.util.ResourceLocation; import org.apache.logging.log4j.LogManager; import org.apache.logging.log4j.Logger; +import org.dimdev.riftloader.listener.InitializationListener; +import java.util.Arrays; import java.util.LinkedList; import java.util.List; import java.util.Map; @@ -17,11 +22,7 @@ import java.util.stream.Collectors; public class RoughlyEnoughItemsCore { public static final Logger LOGGER = LogManager.getFormatterLogger("REI"); - public static final ResourceLocation DELETE_ITEMS_PACKET = new ResourceLocation("roughlyenoughitems", "delete_item"); - public static final ResourceLocation CREATE_ITEMS_PACKET = new ResourceLocation("roughlyenoughitems", "create_item"); - public static final ResourceLocation DEFAULT_PLUGIN = new ResourceLocation("roughlyenoughitems", "default_plugin"); - private static final List<IListener> listeners = Lists.newArrayList(); - private static final Map<ResourceLocation, IRecipePlugin> plugins = Maps.newHashMap(); + private static final List<IListener> listeners = Arrays.asList(new ClientHelper(), new RecipeHelper()); private static final ConfigHelper configHelper = new ConfigHelper(); public static <T> List<T> getListeners(Class<T> listenerClass) { @@ -36,27 +37,6 @@ public class RoughlyEnoughItemsCore { return configHelper; } - static IListener registerListener(IListener listener) { - listeners.add(listener); - return listener; - } - - public static IRecipePlugin registerPlugin(ResourceLocation ResourceLocation, IRecipePlugin plugin) { - plugins.put(ResourceLocation, plugin); - return plugin; - } - - public static List<IRecipePlugin> getPlugins() { - return new LinkedList<>(plugins.values()); - } - - public static ResourceLocation getPluginResourceLocation(IRecipePlugin plugin) { - for(ResourceLocation ResourceLocation : plugins.keySet()) - if (plugins.get(ResourceLocation).equals(plugin)) - return ResourceLocation; - return null; - } - private boolean removeListener(IListener listener) { if (!listeners.contains(listener)) return false; diff --git a/src/main/java/me/shedaniel/rei/RoughlyEnoughItemsInit.java b/src/main/java/me/shedaniel/rei/RoughlyEnoughItemsInit.java deleted file mode 100644 index 5a1801fb0..000000000 --- a/src/main/java/me/shedaniel/rei/RoughlyEnoughItemsInit.java +++ /dev/null @@ -1,37 +0,0 @@ -package me.shedaniel.rei; - -import me.shedaniel.rei.client.ClientHelper; -import me.shedaniel.rei.client.RecipeHelper; -import me.shedaniel.rei.network.CreateItemsPacket; -import me.shedaniel.rei.network.DeleteItemsPacket; -import me.shedaniel.rei.plugin.DefaultPlugin; -import net.minecraft.util.registry.IRegistry; -import org.dimdev.rift.listener.MessageAdder; -import org.dimdev.rift.network.Message; -import org.dimdev.riftloader.listener.InitializationListener; -import org.spongepowered.asm.launch.MixinBootstrap; -import org.spongepowered.asm.mixin.Mixins; - -import static me.shedaniel.rei.RoughlyEnoughItemsCore.CREATE_ITEMS_PACKET; -import static me.shedaniel.rei.RoughlyEnoughItemsCore.DELETE_ITEMS_PACKET; - -public class RoughlyEnoughItemsInit implements InitializationListener { - - @Override - public void onInitialization() { - MixinBootstrap.init(); - Mixins.addConfiguration("roughlyenoughitems.client.json"); - registerREIListeners(); - registerDefaultPlugin(); - } - - private void registerREIListeners() { - RoughlyEnoughItemsCore.registerListener(new ClientHelper()); - RoughlyEnoughItemsCore.registerListener(new RecipeHelper()); - } - - private void registerDefaultPlugin() { - RoughlyEnoughItemsCore.registerPlugin(RoughlyEnoughItemsCore.DEFAULT_PLUGIN, new DefaultPlugin()); - } - -} diff --git a/src/main/java/me/shedaniel/rei/api/RoughlyEnoughItemsPlugin.java b/src/main/java/me/shedaniel/rei/api/RoughlyEnoughItemsPlugin.java new file mode 100644 index 000000000..9930ca63f --- /dev/null +++ b/src/main/java/me/shedaniel/rei/api/RoughlyEnoughItemsPlugin.java @@ -0,0 +1,39 @@ +package me.shedaniel.rei.api; + +import com.google.common.collect.Maps; +import me.shedaniel.rei.RoughlyEnoughItemsCore; +import me.shedaniel.rei.plugin.DefaultPlugin; +import net.minecraft.util.ResourceLocation; +import org.dimdev.riftloader.listener.InitializationListener; + +import java.util.LinkedList; +import java.util.List; +import java.util.Map; + +public class RoughlyEnoughItemsPlugin implements InitializationListener { + + private static final Map<ResourceLocation, IRecipePlugin> plugins = Maps.newHashMap(); + public static final ResourceLocation DEFAULT_PLUGIN = new ResourceLocation("roughlyenoughitems", "default_plugin"); + + public static IRecipePlugin registerPlugin(ResourceLocation ResourceLocation, IRecipePlugin plugin) { + plugins.put(ResourceLocation, plugin); + return plugin; + } + + public static List<IRecipePlugin> getPlugins() { + return new LinkedList<>(plugins.values()); + } + + public static ResourceLocation getPluginResourceLocation(IRecipePlugin plugin) { + for(ResourceLocation ResourceLocation : plugins.keySet()) + if (plugins.get(ResourceLocation).equals(plugin)) + return ResourceLocation; + return null; + } + + @Override + public void onInitialization() { + RoughlyEnoughItemsPlugin.registerPlugin(RoughlyEnoughItemsPlugin.DEFAULT_PLUGIN, new DefaultPlugin()); + } + +} diff --git a/src/main/java/me/shedaniel/rei/client/ClientHelper.java b/src/main/java/me/shedaniel/rei/client/ClientHelper.java index 3afefc48b..7023a4627 100644 --- a/src/main/java/me/shedaniel/rei/client/ClientHelper.java +++ b/src/main/java/me/shedaniel/rei/client/ClientHelper.java @@ -2,7 +2,6 @@ package me.shedaniel.rei.client; import com.google.common.collect.ImmutableList; import com.google.common.collect.Lists; -import me.shedaniel.rei.RoughlyEnoughItemsCore; import me.shedaniel.rei.api.IRecipeCategory; import me.shedaniel.rei.api.IRecipeDisplay; import me.shedaniel.rei.gui.ContainerGuiOverlay; @@ -10,15 +9,11 @@ import me.shedaniel.rei.gui.widget.ConfigWidget; import me.shedaniel.rei.gui.widget.RecipeViewingWidget; import me.shedaniel.rei.listeners.ClientLoaded; import me.shedaniel.rei.listeners.IMixinGuiContainer; -import me.shedaniel.rei.listeners.IMixinKeyBinding; import me.shedaniel.rei.network.CreateItemsPacket; import me.shedaniel.rei.network.DeleteItemsPacket; import net.minecraft.client.Minecraft; import net.minecraft.client.MouseHelper; import net.minecraft.client.gui.GuiScreen; -import net.minecraft.client.resources.I18n; -import net.minecraft.client.settings.KeyBinding; -import net.minecraft.client.util.InputMappings; import net.minecraft.enchantment.Enchantment; import net.minecraft.enchantment.EnchantmentHelper; import net.minecraft.init.Items; @@ -27,19 +22,16 @@ import net.minecraft.item.ItemStack; import net.minecraft.util.NonNullList; import net.minecraft.util.ResourceLocation; import net.minecraft.util.registry.IRegistry; -import org.dimdev.rift.listener.client.KeyBindingAdder; import org.dimdev.riftloader.RiftLoader; import java.awt.*; -import java.util.*; +import java.util.ArrayList; +import java.util.HashMap; import java.util.List; +import java.util.Map; -public class ClientHelper implements ClientLoaded, KeyBindingAdder { +public class ClientHelper implements ClientLoaded { - private static final ResourceLocation RECIPE_KEYBIND = new ResourceLocation("roughlyenoughitems", "recipe_keybind"); - private static final ResourceLocation USAGE_KEYBIND = new ResourceLocation("roughlyenoughitems", "usage_keybind"); - private static final ResourceLocation HIDE_KEYBIND = new ResourceLocation("roughlyenoughitems", "hide_keybind"); - public static KeyBinding RECIPE, USAGE, HIDE; private static List<ItemStack> itemList; private static boolean cheating = false; @@ -78,6 +70,8 @@ public class ClientHelper implements ClientLoaded, KeyBindingAdder { } public static boolean isCheating() { + if (!Minecraft.getInstance().isSingleplayer()) + cheating = false; return cheating; } @@ -165,25 +159,4 @@ public class ClientHelper implements ClientLoaded, KeyBindingAdder { return false; } - @Override - public Collection<? extends KeyBinding> getKeyBindings() { - String category = "key.rei.category"; - List<KeyBinding> keyBindings = Lists.newArrayList(); - keyBindings.add(RECIPE = createKeyBinding(RECIPE_KEYBIND, InputMappings.Type.KEYSYM, 82, category)); - keyBindings.add(USAGE = createKeyBinding(USAGE_KEYBIND, InputMappings.Type.KEYSYM, 85, category)); - keyBindings.add(HIDE = createKeyBinding(HIDE_KEYBIND, InputMappings.Type.KEYSYM, 79, category)); - addCategoryIfMissing(RECIPE, category); - return keyBindings; - } - - private void addCategoryIfMissing(KeyBinding keyBinding, String category) { - if (!((IMixinKeyBinding) keyBinding).hasCategory(category)) - ((IMixinKeyBinding) keyBinding).addCategory(category); - } - - private KeyBinding createKeyBinding(ResourceLocation location, InputMappings.Type inputType, int keyCode, String category) { - RoughlyEnoughItemsCore.LOGGER.info("Registering: key." + location.toString().replaceAll(":", ".") + " in " + category); - return new KeyBinding("key." + location.toString().replaceAll(":", "."), inputType, keyCode, category); - } - } diff --git a/src/main/java/me/shedaniel/rei/client/KeyBindHelper.java b/src/main/java/me/shedaniel/rei/client/KeyBindHelper.java new file mode 100644 index 000000000..65ce788a1 --- /dev/null +++ b/src/main/java/me/shedaniel/rei/client/KeyBindHelper.java @@ -0,0 +1,42 @@ +package me.shedaniel.rei.client; + +import com.google.common.collect.Lists; +import me.shedaniel.rei.RoughlyEnoughItemsCore; +import me.shedaniel.rei.listeners.IMixinKeyBinding; +import net.minecraft.client.settings.KeyBinding; +import net.minecraft.client.util.InputMappings; +import net.minecraft.util.ResourceLocation; +import org.dimdev.rift.listener.client.KeyBindingAdder; + +import java.util.Collection; +import java.util.List; + +public class KeyBindHelper implements KeyBindingAdder { + + private static final ResourceLocation RECIPE_KEYBIND = new ResourceLocation("roughlyenoughitems", "recipe_keybind"); + private static final ResourceLocation USAGE_KEYBIND = new ResourceLocation("roughlyenoughitems", "usage_keybind"); + private static final ResourceLocation HIDE_KEYBIND = new ResourceLocation("roughlyenoughitems", "hide_keybind"); + public static KeyBinding RECIPE, USAGE, HIDE; + + @Override + public Collection<? extends KeyBinding> getKeyBindings() { + String category = "key.rei.category"; + List<KeyBinding> keyBindings = Lists.newArrayList(); + keyBindings.add(RECIPE = createKeyBinding(RECIPE_KEYBIND, InputMappings.Type.KEYSYM, 82, category)); + keyBindings.add(USAGE = createKeyBinding(USAGE_KEYBIND, InputMappings.Type.KEYSYM, 85, category)); + keyBindings.add(HIDE = createKeyBinding(HIDE_KEYBIND, InputMappings.Type.KEYSYM, 79, category)); + addCategoryIfMissing(RECIPE, category); + return keyBindings; + } + + private void addCategoryIfMissing(KeyBinding keyBinding, String category) { + if (!((IMixinKeyBinding) keyBinding).hasCategory(category)) + ((IMixinKeyBinding) keyBinding).addCategory(category); + } + + private KeyBinding createKeyBinding(ResourceLocation location, InputMappings.Type inputType, int keyCode, String category) { + RoughlyEnoughItemsCore.LOGGER.info("Registering: key." + location.toString().replaceAll(":", ".") + " in " + category); + return new KeyBinding("key." + location.toString().replaceAll(":", "."), inputType, keyCode, category); + } + +} diff --git a/src/main/java/me/shedaniel/rei/client/RecipeHelper.java b/src/main/java/me/shedaniel/rei/client/RecipeHelper.java index f52c426df..da0c4aab4 100644 --- a/src/main/java/me/shedaniel/rei/client/RecipeHelper.java +++ b/src/main/java/me/shedaniel/rei/client/RecipeHelper.java @@ -152,12 +152,12 @@ public class RecipeHelper implements RecipeSync { this.categories.clear(); this.speedCraftAreaSupplierMap.clear(); this.speedCraftFunctionalMap.clear(); - List<IRecipePlugin> plugins = new LinkedList<>(RoughlyEnoughItemsCore.getPlugins()); + List<IRecipePlugin> plugins = new LinkedList<>(RoughlyEnoughItemsPlugin.getPlugins()); plugins.sort((first, second) -> { return second.getPriority() - first.getPriority(); }); RoughlyEnoughItemsCore.LOGGER.info("Loading %d REI plugins: %s", plugins.size(), String.join(", ", plugins.stream().map(plugin -> { - ResourceLocation ResourceLocation = RoughlyEnoughItemsCore.getPluginResourceLocation(plugin); + ResourceLocation ResourceLocation = RoughlyEnoughItemsPlugin.getPluginResourceLocation(plugin); return ResourceLocation == null ? "NULL" : ResourceLocation.toString(); }).collect(Collectors.toList()))); Collections.reverse(plugins); diff --git a/src/main/java/me/shedaniel/rei/gui/ContainerGuiOverlay.java b/src/main/java/me/shedaniel/rei/gui/ContainerGuiOverlay.java index a91e319ec..fe9a96422 100644 --- a/src/main/java/me/shedaniel/rei/gui/ContainerGuiOverlay.java +++ b/src/main/java/me/shedaniel/rei/gui/ContainerGuiOverlay.java @@ -3,6 +3,7 @@ package me.shedaniel.rei.gui; import me.shedaniel.rei.RoughlyEnoughItemsCore; import me.shedaniel.rei.client.ClientHelper; import me.shedaniel.rei.client.GuiHelper; +import me.shedaniel.rei.client.KeyBindHelper; import me.shedaniel.rei.gui.widget.*; import me.shedaniel.rei.listeners.IMixinGuiContainer; import net.minecraft.client.MainWindow; @@ -17,9 +18,7 @@ import net.minecraft.item.ItemStack; import net.minecraft.util.math.MathHelper; import java.awt.*; -import java.util.ArrayList; -import java.util.Collections; -import java.util.LinkedList; +import java.util.*; import java.util.List; import java.util.stream.Collectors; @@ -77,11 +76,15 @@ public class ContainerGuiOverlay extends GuiScreen { public void draw(int int_1, int int_2, float float_1) { this.text = getCheatModeText(); super.draw(int_1, int_2, float_1); + if (getBounds().contains(int_1, int_2) && !Minecraft.getInstance().isSingleplayer()) + ContainerGuiOverlay.this.addTooltip(new QueuedTooltip(ClientHelper.getMouseLocation(), + Arrays.asList(I18n.format("text.rei.nocheating_in_servers").split("\n")))); } @Override public void onPressed(int button, double mouseX, double mouseY) { - ClientHelper.setCheating(!ClientHelper.isCheating()); + if (Minecraft.getInstance().isSingleplayer()) + ClientHelper.setCheating(!ClientHelper.isCheating()); } }); widgets.add(new ButtonWidget(10, 35, 40, 20, I18n.format("text.rei.config")) { @@ -275,12 +278,12 @@ public class ContainerGuiOverlay extends GuiScreen { if (containerGui.getHoveredSlot() != null) itemStack = containerGui.getHoveredSlot().getStack(); if (itemStack != null && !itemStack.isEmpty()) { - if (ClientHelper.RECIPE.matchesKey(int_1, int_2)) + if (KeyBindHelper.RECIPE.matchesKey(int_1, int_2)) return ClientHelper.executeRecipeKeyBind(this, itemStack, containerGui); - else if (ClientHelper.USAGE.matchesKey(int_1, int_2)) + else if (KeyBindHelper.USAGE.matchesKey(int_1, int_2)) return ClientHelper.executeUsageKeyBind(this, itemStack, containerGui); } - if (ClientHelper.HIDE.matchesKey(int_1, int_2)) { + if (KeyBindHelper.HIDE.matchesKey(int_1, int_2)) { GuiHelper.toggleOverlayVisible(); return true; } diff --git a/src/main/resources/assets/roughlyenoughitems/lang/en_us.json b/src/main/resources/assets/roughlyenoughitems/lang/en_us.json index 8d3311881..1c1e00848 100755 --- a/src/main/resources/assets/roughlyenoughitems/lang/en_us.json +++ b/src/main/resources/assets/roughlyenoughitems/lang/en_us.json @@ -30,5 +30,6 @@ "text.rei.enable_craftable_only": "Enable Craftable Only: ", "text.rei.showing_craftable": "Showing Craftable", "text.rei.showing_all": "Showing All", - "text.rei.delete_items": "§cDelete Item" + "text.rei.delete_items": "§cDelete Item", + "text.rei.nocheating_in_servers": "§cCheating is disabled in servers." }
\ No newline at end of file diff --git a/src/main/resources/riftmod.json b/src/main/resources/riftmod.json index 761e3bab0..349c1dcc4 100644 --- a/src/main/resources/riftmod.json +++ b/src/main/resources/riftmod.json @@ -1,13 +1,24 @@ { "id": "roughlyenoughitems", "name": "RoughlyEnoughItems", - "version": "2.0.0.10", + "version": "2.0.0.11", "authors": [ "Danielshe" ], "listeners": [ - "me.shedaniel.rei.RoughlyEnoughItemsInit", - "me.shedaniel.rei.client.ClientHelper" + { + "class": "me.shedaniel.rei.REIMixinInit", + "side": "client" + }, + { + "class": "me.shedaniel.rei.api.RoughlyEnoughItemsPlugin", + "side": "client", + "priority": -1000 + }, + { + "class": "me.shedaniel.rei.client.KeyBindHelper", + "side": "client" + } ], "url": "https://shedaniel.me", "description": "To allow players to view items and recipes." diff --git a/src/main/resources/roughlyenoughitems.client.json b/src/main/resources/roughlyenoughitems.client.json index 77e4857fe..b492b2ec1 100755 --- a/src/main/resources/roughlyenoughitems.client.json +++ b/src/main/resources/roughlyenoughitems.client.json @@ -5,7 +5,7 @@ "package": "me.shedaniel.rei.mixin", "refmap": "mixins.roughlyenoughitems.refmap.json", "compatibilityLevel": "JAVA_8", - "mixins": [ + "client": [ "MixinGuiContainer", "MixinNetHandlerPlayClient", "MixinGuiInventory", |
