diff options
| author | Unknown <shekwancheung0528@gmail.com> | 2019-01-01 00:10:09 +0800 |
|---|---|---|
| committer | Unknown <shekwancheung0528@gmail.com> | 2019-01-01 00:10:09 +0800 |
| commit | 50da7926d439166a1e68631e31523c604c337517 (patch) | |
| tree | 14bad533c2b97fa72700aff99895d767c0662d47 /src/main/java | |
| parent | 9e87d028018db1a5f7b125c0766073ff5b296333 (diff) | |
| download | RoughlyEnoughItems-50da7926d439166a1e68631e31523c604c337517.tar.gz RoughlyEnoughItems-50da7926d439166a1e68631e31523c604c337517.tar.bz2 RoughlyEnoughItems-50da7926d439166a1e68631e31523c604c337517.zip | |
Config Draft
Diffstat (limited to 'src/main/java')
9 files changed, 71 insertions, 206 deletions
diff --git a/src/main/java/me/shedaniel/ClientListener.java b/src/main/java/me/shedaniel/ClientListener.java index a74fe5e06..00be6f7ae 100755 --- a/src/main/java/me/shedaniel/ClientListener.java +++ b/src/main/java/me/shedaniel/ClientListener.java @@ -15,7 +15,6 @@ import net.minecraft.item.ItemStack; import net.minecraft.util.NonNullList; import net.minecraft.util.registry.IRegistry; -import java.awt.event.KeyEvent; import java.util.ArrayList; import java.util.HashMap; import java.util.List; @@ -34,9 +33,9 @@ public class ClientListener implements DoneLoading, RecipeLoadListener { plugins = new ArrayList<>(); stackList = new ArrayList<>(); - recipeKeybind = KeyBindManager.createKeybinding("key.rei.recipe", KeyEvent.VK_R, "key.rei.category", REIRenderHelper::recipeKeybind); - hideKeybind = KeyBindManager.createKeybinding("key.rei.hide", KeyEvent.VK_O, "key.rei.category", REIRenderHelper::hideKeybind); - useKeybind = KeyBindManager.createKeybinding("key.rei.use", KeyEvent.VK_U, "key.rei.category", REIRenderHelper::useKeybind); + recipeKeybind = KeyBindManager.createKeybinding("key.rei.recipe", Core.config.recipeKeyBind, REIRenderHelper::recipeKeybind); + hideKeybind = KeyBindManager.createKeybinding("key.rei.hide", Core.config.hideKeyBind, REIRenderHelper::hideKeybind); + useKeybind = KeyBindManager.createKeybinding("key.rei.use", Core.config.usageKeyBind, REIRenderHelper::useKeybind); buildItemList(); } diff --git a/src/main/java/me/shedaniel/Core.java b/src/main/java/me/shedaniel/Core.java index 61f985db1..495274d03 100755 --- a/src/main/java/me/shedaniel/Core.java +++ b/src/main/java/me/shedaniel/Core.java @@ -1,14 +1,25 @@ package me.shedaniel; +import com.google.gson.Gson; +import com.google.gson.GsonBuilder; +import com.google.gson.JsonObject; +import com.google.gson.internal.Streams; +import com.google.gson.stream.JsonWriter; +import me.shedaniel.config.REIConfig; import me.shedaniel.network.CheatPacket; import me.shedaniel.network.DeletePacket; import net.minecraft.network.EnumPacketDirection; import org.dimdev.rift.listener.PacketAdder; +import org.dimdev.riftloader.RiftLoader; +import org.dimdev.riftloader.listener.InitializationListener; + +import java.io.*; +import java.nio.file.Files; /** * Created by James on 7/27/2018. */ -public class Core implements PacketAdder { +public class Core implements PacketAdder, InitializationListener { @Override public void registerHandshakingPackets(PacketRegistrationReceiver receiver) { } @@ -29,5 +40,38 @@ public class Core implements PacketAdder { } + public static final File configFile = new File(RiftLoader.instance.configDir, "rei.json"); + public static REIConfig config; + + @Override + public void onInitialization() { + try { + loadConfig(); + } catch (IOException e) { + e.printStackTrace(); + } + } + + public static void loadConfig() throws IOException { + if (!configFile.exists()) + loadDefaultConfig(); + InputStream in = Files.newInputStream(configFile.toPath()); + config = REIConfig.GSON.fromJson(new InputStreamReader(in), REIConfig.class); + } + + public static void loadDefaultConfig() throws IOException { + config = new REIConfig(); + saveConfig(); + } + + public static void saveConfig() throws IOException { + configFile.getParentFile().mkdirs(); + if (configFile.exists()) + configFile.delete(); + try (Writer writer = new FileWriter(configFile)) { + REIConfig.GSON.toJson(config, writer); + writer.close(); + } + } } diff --git a/src/main/java/me/shedaniel/config/REIConfig.java b/src/main/java/me/shedaniel/config/REIConfig.java new file mode 100644 index 000000000..791c9f1a9 --- /dev/null +++ b/src/main/java/me/shedaniel/config/REIConfig.java @@ -0,0 +1,16 @@ +package me.shedaniel.config; + +import com.google.gson.Gson; +import com.google.gson.GsonBuilder; + +import java.awt.event.KeyEvent; + +public class REIConfig { + + public static Gson GSON = new GsonBuilder().create(); + + public int recipeKeyBind = KeyEvent.VK_R; + public int usageKeyBind = KeyEvent.VK_U; + public int hideKeyBind = KeyEvent.VK_O; + +} diff --git a/src/main/java/me/shedaniel/library/KeyBindManager.java b/src/main/java/me/shedaniel/library/KeyBindManager.java index 14f620f8e..de4ea3dbc 100755 --- a/src/main/java/me/shedaniel/library/KeyBindManager.java +++ b/src/main/java/me/shedaniel/library/KeyBindManager.java @@ -1,52 +1,25 @@ package me.shedaniel.library; -import me.shedaniel.listenerdefinitions.PreLoadOptions; -import net.minecraft.client.Minecraft; import net.minecraft.client.settings.KeyBinding; -import org.apache.commons.lang3.ArrayUtils; -import org.dimdev.rift.listener.client.KeybindHandler; -import java.util.*; +import java.util.HashMap; +import java.util.Map; +import java.util.Optional; /** * Created by James on 8/7/2018. */ -public class KeyBindManager implements PreLoadOptions, KeybindHandler { +public class KeyBindManager { - private static boolean optionsLoaded = false; - private static List<KeyBinding> bindingsToAdd = new ArrayList<>(); private static Map<KeyBinding, Sink> bindingFunctions = new HashMap<>(); - public static KeyBinding createKeybinding(String bindingName, int key, String categoryName, Sink function) { + public static KeyBinding createKeybinding(String bindingName, int key, Sink function) { KeyBinding newBinding; - newBinding = new KeyBinding(bindingName, key, categoryName); - if (optionsLoaded) { - ArrayUtils.add(Minecraft.getInstance().gameSettings.keyBindings, newBinding); - } else { - bindingsToAdd.add(newBinding); - } + newBinding = new KeyBinding(bindingName, key, ""); bindingFunctions.put(newBinding, function); - addCategoryIfMissing(categoryName); return newBinding; } - private static void addCategoryIfMissing(String categoryName) { - /*if (!KeyBinding.CATEGORY_ORDER.containsKey(categoryName)){ - KeyBinding.CATEGORY_ORDER.put(categoryName,KeyBinding.CATEGORY_ORDER.size()+1); - }*/ - } - - @Override - public List<KeyBinding> loadOptions() { - optionsLoaded = true; - return bindingsToAdd; - } - - @Override - public void processKeybinds() { - bindingFunctions.keySet().stream().filter(KeyBinding::isPressed).forEach(f -> bindingFunctions.get(f).Sink()); - } - public static boolean processGuiKeybinds(int typedChar) { Optional<KeyBinding> binding = bindingFunctions.keySet().stream().filter(f -> f.getDefault().getKeyCode() == typedChar).findFirst(); if (binding.isPresent()) { @@ -55,4 +28,5 @@ public class KeyBindManager implements PreLoadOptions, KeybindHandler { } return false; } + } diff --git a/src/main/java/me/shedaniel/listenerdefinitions/PreLoadOptions.java b/src/main/java/me/shedaniel/listenerdefinitions/PreLoadOptions.java deleted file mode 100755 index 8e04f1c11..000000000 --- a/src/main/java/me/shedaniel/listenerdefinitions/PreLoadOptions.java +++ /dev/null @@ -1,9 +0,0 @@ -package me.shedaniel.listenerdefinitions; - -import net.minecraft.client.settings.KeyBinding; - -import java.util.List; - -public interface PreLoadOptions { - public List<KeyBinding> loadOptions(); -} diff --git a/src/main/java/me/shedaniel/mixins/SettingsMixin.java b/src/main/java/me/shedaniel/mixins/SettingsMixin.java deleted file mode 100755 index fa4dee435..000000000 --- a/src/main/java/me/shedaniel/mixins/SettingsMixin.java +++ /dev/null @@ -1,44 +0,0 @@ -package me.shedaniel.mixins; - -import me.shedaniel.listenerdefinitions.PreLoadOptions; -import net.minecraft.client.GameSettings; -import net.minecraft.client.settings.KeyBinding; -import org.dimdev.riftloader.RiftLoader; -import org.spongepowered.asm.mixin.Mixin; -import org.spongepowered.asm.mixin.Shadow; -import org.spongepowered.asm.mixin.injection.At; -import org.spongepowered.asm.mixin.injection.Inject; -import org.spongepowered.asm.mixin.injection.callback.CallbackInfo; - -import java.util.ArrayList; -import java.util.List; - -/** - * Created by James on 8/7/2018. - */ - -@Mixin(GameSettings.class) -public class SettingsMixin { - @Shadow - public KeyBinding[] keyBindings; - - public SettingsMixin() { - System.out.println("loaded"); - } - - @Inject(method = "loadOptions", at = @At("HEAD")) - public void beforeLoadOptions(CallbackInfo ci) { - - RiftLoader.instance.getListeners(PreLoadOptions.class).stream().forEach(f -> processNewBindings(f.loadOptions())); - } - - private void processNewBindings(List<KeyBinding> newBindings) { - List<KeyBinding> toAdd = new ArrayList<>(); - toAdd.addAll(newBindings); - for(KeyBinding keyBinding : keyBindings) { - toAdd.add(keyBinding); - } - keyBindings = (KeyBinding[]) toAdd.toArray(new KeyBinding[0]); - } - -} diff --git a/src/main/java/me/shedaniel/plugin/RandomRecipe.java b/src/main/java/me/shedaniel/plugin/RandomRecipe.java deleted file mode 100644 index 5dcdb9d4a..000000000 --- a/src/main/java/me/shedaniel/plugin/RandomRecipe.java +++ /dev/null @@ -1,33 +0,0 @@ -package me.shedaniel.plugin; - -import me.shedaniel.api.IRecipe; -import net.minecraft.init.Blocks; -import net.minecraft.item.ItemStack; - -import java.util.Arrays; -import java.util.LinkedList; -import java.util.List; - -public class RandomRecipe implements IRecipe<ItemStack> { - - private String id; - - public RandomRecipe(String id) { - this.id = id; - } - - @Override - public String getId() { - return id; - } - - @Override - public List<ItemStack> getOutput() { - return new LinkedList<>(Arrays.asList(new ItemStack[]{new ItemStack(Blocks.BEETROOTS.asItem())})); - } - - @Override - public List<List<ItemStack>> getInput() { - return new LinkedList<>(Arrays.asList(new LinkedList<>(Arrays.asList(new ItemStack[]{new ItemStack(Blocks.OAK_LOG.asItem())})))); - } -} diff --git a/src/main/java/me/shedaniel/plugin/TestRandomCategory.java b/src/main/java/me/shedaniel/plugin/TestRandomCategory.java deleted file mode 100644 index 4773e7e55..000000000 --- a/src/main/java/me/shedaniel/plugin/TestRandomCategory.java +++ /dev/null @@ -1,72 +0,0 @@ -package me.shedaniel.plugin; - -import me.shedaniel.api.IDisplayCategory; -import me.shedaniel.gui.widget.Control; -import me.shedaniel.gui.widget.REISlot; -import me.shedaniel.plugin.crafting.VanillaCraftingRecipe; -import net.minecraft.init.Blocks; -import net.minecraft.item.Item; -import net.minecraft.item.ItemStack; - -import java.util.ArrayList; -import java.util.LinkedList; -import java.util.List; - -public class TestRandomCategory implements IDisplayCategory<RandomRecipe> { - - private String id; - private List<RandomRecipe> recipes; - private ItemStack item; - - public TestRandomCategory(String id, ItemStack item) { - this.id = id; - this.item = item; - } - - @Override - public String getId() { - return id; - } - - @Override - public String getDisplayName() { - return id; - } - - @Override - public void addRecipe(RandomRecipe recipe) { - if (this.recipes == null) - this.recipes = new ArrayList<>(); - this.recipes.add(recipe); - } - - @Override - public void resetRecipes() { - this.recipes = new ArrayList<>(); - } - - @Override - public List<REISlot> setupDisplay(int number) { - return new LinkedList<>(); - } - - @Override - public boolean canDisplay(RandomRecipe recipe) { - return false; - } - - @Override - public void drawExtras() { - - } - - @Override - public void addWidget(List<Control> controls, int number) { - - } - - @Override - public ItemStack getCategoryIcon() { - return item; - } -} diff --git a/src/main/java/me/shedaniel/plugin/VanillaPlugin.java b/src/main/java/me/shedaniel/plugin/VanillaPlugin.java index 70e7918da..252ce9349 100755 --- a/src/main/java/me/shedaniel/plugin/VanillaPlugin.java +++ b/src/main/java/me/shedaniel/plugin/VanillaPlugin.java @@ -35,11 +35,6 @@ public class VanillaPlugin implements IREIPlugin, PotionCraftingAdder { REIRecipeManager.instance().addDisplayAdapter(new VanillaCraftingCategory()); REIRecipeManager.instance().addDisplayAdapter(new VanillaFurnaceCategory()); REIRecipeManager.instance().addDisplayAdapter(new VanillaPotionCategory()); -// REIRecipeManager.instance().addDisplayAdapter(new TestRandomCategory("a", new ItemStack(Blocks.ACACIA_BUTTON.asItem()))); -// REIRecipeManager.instance().addDisplayAdapter(new TestRandomCategory("b", new ItemStack(Blocks.ACACIA_LOG.asItem()))); -// REIRecipeManager.instance().addDisplayAdapter(new TestRandomCategory("c", new ItemStack(Blocks.ACACIA_LOG.asItem()))); -// REIRecipeManager.instance().addDisplayAdapter(new TestRandomCategory("d", new ItemStack(Blocks.ACACIA_LOG.asItem()))); -// REIRecipeManager.instance().addDisplayAdapter(new TestRandomCategory("e", new ItemStack(Blocks.ACACIA_LOG.asItem()))); for(IRecipe recipe : REIRecipeManager.instance().recipeManager.getRecipes()) { if (recipe instanceof ShapelessRecipe) { @@ -65,11 +60,6 @@ public class VanillaPlugin implements IREIPlugin, PotionCraftingAdder { REIRecipeManager.instance().addRecipe("vanilla", recipes); REIRecipeManager.instance().addRecipe("furnace", furnaceRecipes); REIRecipeManager.instance().addRecipe("potion", potionRecipes.stream().collect(Collectors.toList())); -// REIRecipeManager.instance().addPotionRecipe("a", new RandomRecipe("a")); -// REIRecipeManager.instance().addPotionRecipe("b", new RandomRecipe("b")); -// REIRecipeManager.instance().addPotionRecipe("c", new RandomRecipe("c")); -// REIRecipeManager.instance().addPotionRecipe("d", new RandomRecipe("d")); -// REIRecipeManager.instance().addPotionRecipe("e", new RandomRecipe("e")); } @Override |
