aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--src/main/java/kr/syeyoung/dungeonsguide/Config.java59
-rwxr-xr-xsrc/main/java/kr/syeyoung/dungeonsguide/a.java130
-rwxr-xr-xsrc/main/java/kr/syeyoung/dungeonsguide/config/CategoryEditPane.java5
-rw-r--r--src/main/java/kr/syeyoung/dungeonsguide/config/Config.java23
-rwxr-xr-xsrc/main/java/kr/syeyoung/dungeonsguide/config/GuiConfig.java7
-rw-r--r--src/main/java/kr/syeyoung/dungeonsguide/config/types/TCBoolean.java21
-rw-r--r--src/main/java/kr/syeyoung/dungeonsguide/config/types/TCInteger.java21
-rw-r--r--src/main/java/kr/syeyoung/dungeonsguide/config/types/TCRectangle.java35
-rw-r--r--src/main/java/kr/syeyoung/dungeonsguide/config/types/TCString.java21
-rw-r--r--src/main/java/kr/syeyoung/dungeonsguide/config/types/TypeConverter.java11
-rw-r--r--src/main/java/kr/syeyoung/dungeonsguide/config/types/TypeConverterRegistry.java21
-rwxr-xr-xsrc/main/java/kr/syeyoung/dungeonsguide/dungeon/roomfinder/RoomMatcher.java1
-rwxr-xr-xsrc/main/java/kr/syeyoung/dungeonsguide/e.java18
-rwxr-xr-xsrc/main/java/kr/syeyoung/dungeonsguide/eventlistener/DungeonListener.java13
-rw-r--r--src/main/java/kr/syeyoung/dungeonsguide/eventlistener/ItemGuiListener.java5
-rw-r--r--src/main/java/kr/syeyoung/dungeonsguide/features/AbstractFeature.java64
-rw-r--r--src/main/java/kr/syeyoung/dungeonsguide/features/FeatureParameter.java16
-rw-r--r--src/main/java/kr/syeyoung/dungeonsguide/features/FeatureRegistry.java49
-rw-r--r--src/main/java/kr/syeyoung/dungeonsguide/features/GuiFeature.java73
-rw-r--r--src/main/java/kr/syeyoung/dungeonsguide/features/SimpleFeature.java10
-rwxr-xr-xsrc/main/java/kr/syeyoung/dungeonsguide/roomprocessor/GeneralRoomProcessor.java6
-rwxr-xr-xsrc/main/java/kr/syeyoung/dungeonsguide/roomprocessor/RoomProcessorBlazeSolver.java12
-rwxr-xr-xsrc/main/java/kr/syeyoung/dungeonsguide/roomprocessor/RoomProcessorCreeperSolver.java12
-rwxr-xr-xsrc/main/java/kr/syeyoung/dungeonsguide/roomprocessor/RoomProcessorIcePath.java5
-rwxr-xr-xsrc/main/java/kr/syeyoung/dungeonsguide/roomprocessor/RoomProcessorRiddle.java8
-rwxr-xr-xsrc/main/java/kr/syeyoung/dungeonsguide/roomprocessor/RoomProcessorTeleportMazeSolver.java5
-rwxr-xr-xsrc/main/java/kr/syeyoung/dungeonsguide/roomprocessor/RoomProcessorTicTacToeSolver.java9
-rwxr-xr-xsrc/main/java/kr/syeyoung/dungeonsguide/roomprocessor/RoomProcessorTrivia.java7
-rwxr-xr-xsrc/main/java/kr/syeyoung/dungeonsguide/roomprocessor/boxpuzzle/RoomProcessorBoxSolver.java14
-rwxr-xr-xsrc/main/java/kr/syeyoung/dungeonsguide/roomprocessor/icefill/RoomProcessorIcePath2.java7
-rwxr-xr-xsrc/main/java/kr/syeyoung/dungeonsguide/roomprocessor/waterpuzzle/RoomProcessorWaterPuzzle.java11
31 files changed, 491 insertions, 208 deletions
diff --git a/src/main/java/kr/syeyoung/dungeonsguide/Config.java b/src/main/java/kr/syeyoung/dungeonsguide/Config.java
deleted file mode 100644
index eec433f9..00000000
--- a/src/main/java/kr/syeyoung/dungeonsguide/Config.java
+++ /dev/null
@@ -1,59 +0,0 @@
-package kr.syeyoung.dungeonsguide;
-
-import net.minecraftforge.common.config.Configuration;
-import net.minecraftforge.common.config.Property;
-
-public class Config {
- public static Configuration configuration;
-
- public static final String CATEGORY_ADVANCED = "Advanced";
- public static final String CATEGORY_PUZZLE_SOLVER = "Solver";
- public static final String CATEGORY_QOL = "Tooltips";
-
- public static boolean DEBUG = true;
-
- public static boolean solver_riddle;
- public static boolean solver_kahoot;
- public static boolean solver_blaze;
- public static boolean solver_tictactoe;
- public static boolean solver_icepath;
- public static boolean solver_icesilverfish;
- public static boolean solver_waterpuzzle;
- public static boolean solver_box;
- public static boolean solver_creeper;
- public static boolean solver_teleport;
-
-
- public static boolean itemtooltip_dungeonstat;
- public static boolean itemtooltip_price;
-
- public static void syncConfig(boolean load) { // Gets called from preInit
- try {
- // Load config
- if (load)
- configuration.load();
-
- // Read props from config
- solver_riddle = configuration.get(Config.CATEGORY_PUZZLE_SOLVER, "riddle", "true", "Riddle puzzle solver", Property.Type.BOOLEAN).getBoolean();
- solver_kahoot = configuration.get(Config.CATEGORY_PUZZLE_SOLVER, "kahoot", "true", "Omnicrescent puzzle solver", Property.Type.BOOLEAN).getBoolean();
- solver_teleport = configuration.get(Config.CATEGORY_PUZZLE_SOLVER, "teleport", "true", "Teleport puzzle solver", Property.Type.BOOLEAN).getBoolean();
- solver_creeper = configuration.get(Config.CATEGORY_PUZZLE_SOLVER, "creeper", "true", "Creeper puzzle solver", Property.Type.BOOLEAN).getBoolean();
- solver_blaze = configuration.get(Config.CATEGORY_PUZZLE_SOLVER, "blaze", "true", "Blaze puzzle solver", Property.Type.BOOLEAN).getBoolean();
- solver_tictactoe = configuration.get(Config.CATEGORY_PUZZLE_SOLVER, "tictactoe", "true", "Tictactoe puzzle solver", Property.Type.BOOLEAN).getBoolean();
- solver_icepath = configuration.get(Config.CATEGORY_PUZZLE_SOLVER, "icepath", "true", "Icepath puzzle solver", Property.Type.BOOLEAN).getBoolean();
- solver_icesilverfish = configuration.get(Config.CATEGORY_PUZZLE_SOLVER, "silverfish", "true", "Silverfish puzzle solver", Property.Type.BOOLEAN).getBoolean();
- solver_waterpuzzle = configuration.get(Config.CATEGORY_PUZZLE_SOLVER, "water", "true", "Water puzzle solver", Property.Type.BOOLEAN).getBoolean();
- solver_box = configuration.get(Config.CATEGORY_PUZZLE_SOLVER, "box", "true", "Box puzzle solver", Property.Type.BOOLEAN).getBoolean();
-
- itemtooltip_dungeonstat = configuration.get(Config.CATEGORY_QOL, "dungeonstat", "true", "Show what floor dungeon item was obtained", Property.Type.BOOLEAN).getBoolean();
- itemtooltip_price = configuration.get(Config.CATEGORY_QOL, "price", "true", "Show prices of any item", Property.Type.BOOLEAN).getBoolean();
-
- DEBUG = configuration.get(Config.CATEGORY_ADVANCED, "debug","false", "Enable debug mode", Property.Type.BOOLEAN).getBoolean(); // Comment
- } catch (Exception e) {
- // Failed reading/writing, just continue
- } finally {
- // Save props to config IF config changed
- if (configuration.hasChanged()) configuration.save();
- }
- }
-}
diff --git a/src/main/java/kr/syeyoung/dungeonsguide/a.java b/src/main/java/kr/syeyoung/dungeonsguide/a.java
index 23875cb7..2ce0e96c 100755
--- a/src/main/java/kr/syeyoung/dungeonsguide/a.java
+++ b/src/main/java/kr/syeyoung/dungeonsguide/a.java
@@ -40,77 +40,77 @@ public class a
d.init(a);
}
-// @EventHandler
-// public void a(FMLPreInitializationEvent a) {
-// b b = new b();
-// String c = null;
-// try {
-// c = b.b();
-// if (c != null) {
-// this.a = this;
-// URL.setURLStreamHandlerFactory(new c(b));
-// LaunchClassLoader d = (LaunchClassLoader) a.class.getClassLoader();
-// d.addURL(new URL("z:///"));
-//
-// try {
-// this.d = new e(b);
-// this.d.pre(a);
-// } catch (Exception e) {
-// e.printStackTrace();
-//
-// a(new String[]{
-// "Couldn't load Dungeons Guide",
-// "Please contact developer if this problem persists after restart"
-// });
-// }
-// return;
-// }
-// } catch (IOException e) {
-// e.printStackTrace();
-// } catch (AuthenticationException e) {
-// e.printStackTrace();
-// } catch (NoSuchAlgorithmException e) {
-// e.printStackTrace();
-// } catch (NoSuchPaddingException e) {
-// e.printStackTrace();
-// } catch (InvalidKeyException e) {
-// e.printStackTrace();
-// } catch (InvalidAlgorithmParameterException e) {
-// e.printStackTrace();
-// } catch (IllegalBlockSizeException e) {
-// e.printStackTrace();
-// } catch (BadPaddingException e) {
-// e.printStackTrace();
-// } catch (CertificateException e) {
-// e.printStackTrace();
-// } catch (KeyStoreException e) {
-// e.printStackTrace();
-// } catch (KeyManagementException e) {
-// e.printStackTrace();
-// }
-//
-// a(new String[]{
-// "Can't validate current installation of Dungeons Guide",
-// "Steps to fix",
-// "1. check if other people can't join minecraft servers.",
-// "2. restart minecraft launcher",
-// "3. make sure you're on the right account",
-// "4. restart your computer",
-// "If the problem persists after following these steps, please contact developer",
-// "If you haven't purchased the mod, please consider doing so"
-// });
-// }
@EventHandler
- public void pre(FMLPreInitializationEvent event) {
- a = this;
- URL.setURLStreamHandlerFactory(new c(null));
+ public void a(FMLPreInitializationEvent a) {
+ b b = new b();
+ String c = null;
+ try {
+ c = b.b();
+ if (c != null) {
+ this.a = this;
+ URL.setURLStreamHandlerFactory(new c(b));
+ LaunchClassLoader d = (LaunchClassLoader) a.class.getClassLoader();
+ d.addURL(new URL("z:///"));
+
try {
- d = new e(null);
- d.pre(event);
+ this.d = new e(b);
+ this.d.pre(a);
} catch (Exception e) {
e.printStackTrace();
+
+ a(new String[]{
+ "Couldn't load Dungeons Guide",
+ "Please contact developer if this problem persists after restart"
+ });
}
+ return;
+ }
+ } catch (IOException e) {
+ e.printStackTrace();
+ } catch (AuthenticationException e) {
+ e.printStackTrace();
+ } catch (NoSuchAlgorithmException e) {
+ e.printStackTrace();
+ } catch (NoSuchPaddingException e) {
+ e.printStackTrace();
+ } catch (InvalidKeyException e) {
+ e.printStackTrace();
+ } catch (InvalidAlgorithmParameterException e) {
+ e.printStackTrace();
+ } catch (IllegalBlockSizeException e) {
+ e.printStackTrace();
+ } catch (BadPaddingException e) {
+ e.printStackTrace();
+ } catch (CertificateException e) {
+ e.printStackTrace();
+ } catch (KeyStoreException e) {
+ e.printStackTrace();
+ } catch (KeyManagementException e) {
+ e.printStackTrace();
+ }
+
+ a(new String[]{
+ "Can't validate current installation of Dungeons Guide",
+ "Steps to fix",
+ "1. check if other people can't join minecraft servers.",
+ "2. restart minecraft launcher",
+ "3. make sure you're on the right account",
+ "4. restart your computer",
+ "If the problem persists after following these steps, please contact developer",
+ "If you haven't purchased the mod, please consider doing so"
+ });
}
+// @EventHandler
+// public void pre(FMLPreInitializationEvent event) {
+// a = this;
+// URL.setURLStreamHandlerFactory(new c(null));
+// try {
+// d = new e(null);
+// d.pre(event);
+// } catch (Exception e) {
+// e.printStackTrace();
+// }
+// }
public void a(final String[] a) {
final GuiScreen b = new GuiErrorScreen(null, null) {
diff --git a/src/main/java/kr/syeyoung/dungeonsguide/config/CategoryEditPane.java b/src/main/java/kr/syeyoung/dungeonsguide/config/CategoryEditPane.java
index 95079857..0a0aea98 100755
--- a/src/main/java/kr/syeyoung/dungeonsguide/config/CategoryEditPane.java
+++ b/src/main/java/kr/syeyoung/dungeonsguide/config/CategoryEditPane.java
@@ -1,18 +1,13 @@
package kr.syeyoung.dungeonsguide.config;
-import kr.syeyoung.dungeonsguide.Config;
-import kr.syeyoung.dungeonsguide.dungeon.data.DungeonRoomInfo;
-import kr.syeyoung.dungeonsguide.dungeon.roomfinder.DungeonRoom;
import kr.syeyoung.dungeonsguide.roomedit.MPanel;
import kr.syeyoung.dungeonsguide.roomedit.Parameter;
import kr.syeyoung.dungeonsguide.roomedit.elements.*;
import kr.syeyoung.dungeonsguide.roomedit.panes.DynamicEditor;
-import kr.syeyoung.dungeonsguide.roomedit.valueedit.ValueEdit;
import kr.syeyoung.dungeonsguide.roomedit.valueedit.ValueEditCreator;
import kr.syeyoung.dungeonsguide.roomedit.valueedit.ValueEditRegistry;
import net.minecraftforge.common.config.ConfigCategory;
import net.minecraftforge.common.config.Property;
-import scala.actors.threadpool.Arrays;
import java.awt.*;
import java.util.*;
diff --git a/src/main/java/kr/syeyoung/dungeonsguide/config/Config.java b/src/main/java/kr/syeyoung/dungeonsguide/config/Config.java
new file mode 100644
index 00000000..aff6a02f
--- /dev/null
+++ b/src/main/java/kr/syeyoung/dungeonsguide/config/Config.java
@@ -0,0 +1,23 @@
+package kr.syeyoung.dungeonsguide.config;
+
+import com.google.gson.JsonObject;
+import com.google.gson.JsonParser;
+import net.minecraftforge.common.config.Configuration;
+import net.minecraftforge.common.config.Property;
+
+import java.io.File;
+import java.io.FileInputStream;
+import java.io.FileNotFoundException;
+import java.io.InputStreamReader;
+
+public class Config {
+ public static JsonObject configuration;
+
+
+ public static void loadConfig(File f) throws FileNotFoundException {
+ configuration = (JsonObject) new JsonParser().parse(new InputStreamReader(new FileInputStream(f)));
+
+
+ }
+
+}
diff --git a/src/main/java/kr/syeyoung/dungeonsguide/config/GuiConfig.java b/src/main/java/kr/syeyoung/dungeonsguide/config/GuiConfig.java
index 5e5b8aac..e8bfc6bd 100755
--- a/src/main/java/kr/syeyoung/dungeonsguide/config/GuiConfig.java
+++ b/src/main/java/kr/syeyoung/dungeonsguide/config/GuiConfig.java
@@ -1,10 +1,7 @@
package kr.syeyoung.dungeonsguide.config;
-import kr.syeyoung.dungeonsguide.Config;
-import kr.syeyoung.dungeonsguide.dungeon.roomfinder.DungeonRoom;
import kr.syeyoung.dungeonsguide.roomedit.MPanel;
import kr.syeyoung.dungeonsguide.roomedit.elements.MTabbedPane;
-import kr.syeyoung.dungeonsguide.roomedit.panes.*;
import net.minecraft.client.Minecraft;
import net.minecraft.client.gui.GuiScreen;
import net.minecraft.client.gui.ScaledResolution;
@@ -26,8 +23,8 @@ public class GuiConfig extends GuiScreen {
mainPanel.add(tabbedPane);
tabbedPane.setBackground2(new Color(17, 17, 17, 179));
- for (String cate:Config.configuration.getCategoryNames())
- tabbedPane.addTab(cate, new CategoryEditPane(Config.configuration.getCategory(cate)));
+// for (String cate:Config.configuration.getCategoryNames())
+// tabbedPane.addTab(cate, new CategoryEditPane(Config.configuration.getCategory(cate)));
this.tabbedPane = tabbedPane;
}
diff --git a/src/main/java/kr/syeyoung/dungeonsguide/config/types/TCBoolean.java b/src/main/java/kr/syeyoung/dungeonsguide/config/types/TCBoolean.java
new file mode 100644
index 00000000..ba4e44be
--- /dev/null
+++ b/src/main/java/kr/syeyoung/dungeonsguide/config/types/TCBoolean.java
@@ -0,0 +1,21 @@
+package kr.syeyoung.dungeonsguide.config.types;
+
+import com.google.gson.JsonElement;
+import com.google.gson.JsonPrimitive;
+
+public class TCBoolean implements TypeConverter<Boolean> {
+ @Override
+ public String getTypeString() {
+ return "boolean";
+ }
+
+ @Override
+ public Boolean deserialize(JsonElement element) {
+ return element.getAsBoolean();
+ }
+
+ @Override
+ public JsonElement serialize(Boolean element) {
+ return new JsonPrimitive(element);
+ }
+}
diff --git a/src/main/java/kr/syeyoung/dungeonsguide/config/types/TCInteger.java b/src/main/java/kr/syeyoung/dungeonsguide/config/types/TCInteger.java
new file mode 100644
index 00000000..3b5195de
--- /dev/null
+++ b/src/main/java/kr/syeyoung/dungeonsguide/config/types/TCInteger.java
@@ -0,0 +1,21 @@
+package kr.syeyoung.dungeonsguide.config.types;
+
+import com.google.gson.JsonElement;
+import com.google.gson.JsonPrimitive;
+
+public class TCInteger implements TypeConverter<Integer> {
+ @Override
+ public String getTypeString() {
+ return "integer";
+ }
+
+ @Override
+ public Integer deserialize(JsonElement element) {
+ return element.getAsInt();
+ }
+
+ @Override
+ public JsonElement serialize(Integer element) {
+ return new JsonPrimitive(element);
+ }
+}
diff --git a/src/main/java/kr/syeyoung/dungeonsguide/config/types/TCRectangle.java b/src/main/java/kr/syeyoung/dungeonsguide/config/types/TCRectangle.java
new file mode 100644
index 00000000..2d571da7
--- /dev/null
+++ b/src/main/java/kr/syeyoung/dungeonsguide/config/types/TCRectangle.java
@@ -0,0 +1,35 @@
+package kr.syeyoung.dungeonsguide.config.types;
+
+import com.google.gson.JsonElement;
+import com.google.gson.JsonObject;
+import com.google.gson.JsonPrimitive;
+import org.w3c.dom.css.Rect;
+
+import java.awt.*;
+
+public class TCRectangle implements TypeConverter<Rectangle> {
+ @Override
+ public String getTypeString() {
+ return "rect";
+ }
+
+ @Override
+ public Rectangle deserialize(JsonElement element) {
+ Rectangle rectangle = new Rectangle();
+ rectangle.x = ((JsonObject)element).get("x").getAsInt();
+ rectangle.y = ((JsonObject)element).get("y").getAsInt();
+ rectangle.width = ((JsonObject)element).get("width").getAsInt();
+ rectangle.height = ((JsonObject)element).get("height").getAsInt();
+ return rectangle;
+ }
+
+ @Override
+ public JsonElement serialize(Rectangle element) {
+ JsonObject object = new JsonObject();
+ object.addProperty("x", element.x);
+ object.addProperty("y", element.y);
+ object.addProperty("width", element.width);
+ object.addProperty("height", element.height);
+ return object;
+ }
+}
diff --git a/src/main/java/kr/syeyoung/dungeonsguide/config/types/TCString.java b/src/main/java/kr/syeyoung/dungeonsguide/config/types/TCString.java
new file mode 100644
index 00000000..fa28c1b6
--- /dev/null
+++ b/src/main/java/kr/syeyoung/dungeonsguide/config/types/TCString.java
@@ -0,0 +1,21 @@
+package kr.syeyoung.dungeonsguide.config.types;
+
+import com.google.gson.JsonElement;
+import com.google.gson.JsonPrimitive;
+
+public class TCString implements TypeConverter<String> {
+ @Override
+ public String getTypeString() {
+ return "string";
+ }
+
+ @Override
+ public String deserialize(JsonElement element) {
+ return element.getAsString();
+ }
+
+ @Override
+ public JsonElement serialize(String element) {
+ return new JsonPrimitive(element);
+ }
+}
diff --git a/src/main/java/kr/syeyoung/dungeonsguide/config/types/TypeConverter.java b/src/main/java/kr/syeyoung/dungeonsguide/config/types/TypeConverter.java
new file mode 100644
index 00000000..b5b69be0
--- /dev/null
+++ b/src/main/java/kr/syeyoung/dungeonsguide/config/types/TypeConverter.java
@@ -0,0 +1,11 @@
+package kr.syeyoung.dungeonsguide.config.types;
+
+import com.google.gson.JsonElement;
+
+public interface TypeConverter<T> {
+ String getTypeString();
+
+ T deserialize(JsonElement element);
+
+ JsonElement serialize(T element);
+}
diff --git a/src/main/java/kr/syeyoung/dungeonsguide/config/types/TypeConverterRegistry.java b/src/main/java/kr/syeyoung/dungeonsguide/config/types/TypeConverterRegistry.java
new file mode 100644
index 00000000..82bfe3fc
--- /dev/null
+++ b/src/main/java/kr/syeyoung/dungeonsguide/config/types/TypeConverterRegistry.java
@@ -0,0 +1,21 @@
+package kr.syeyoung.dungeonsguide.config.types;
+
+import kr.syeyoung.dungeonsguide.roomedit.Parameter;
+
+import java.util.HashMap;
+import java.util.Map;
+
+public class TypeConverterRegistry {
+ private static Map<String, TypeConverter> typeConverterMap = new HashMap<String, TypeConverter>();
+
+ public static void register(TypeConverter typeConverter) {
+ typeConverterMap.put(typeConverter.getTypeString(), typeConverter);
+ }
+
+ public static TypeConverter getTypeConverter(String type_string) {
+ return typeConverterMap.get(type_string);
+ }
+ public static <T> TypeConverter<T> getTypeConverter(String type_string, Class<T> t) {
+ return (TypeConverter<T>)typeConverterMap.get(type_string);
+ }
+}
diff --git a/src/main/java/kr/syeyoung/dungeonsguide/dungeon/roomfinder/RoomMatcher.java b/src/main/java/kr/syeyoung/dungeonsguide/dungeon/roomfinder/RoomMatcher.java
index ac713082..43675f61 100755
--- a/src/main/java/kr/syeyoung/dungeonsguide/dungeon/roomfinder/RoomMatcher.java
+++ b/src/main/java/kr/syeyoung/dungeonsguide/dungeon/roomfinder/RoomMatcher.java
@@ -95,6 +95,7 @@ public class RoomMatcher {
}
roomInfo.setBlocks(data);
+ roomInfo.setUserMade(true);
return roomInfo;
}
}
diff --git a/src/main/java/kr/syeyoung/dungeonsguide/e.java b/src/main/java/kr/syeyoung/dungeonsguide/e.java
index 8cd34154..aeefe8c8 100755
--- a/src/main/java/kr/syeyoung/dungeonsguide/e.java
+++ b/src/main/java/kr/syeyoung/dungeonsguide/e.java
@@ -1,9 +1,11 @@
package kr.syeyoung.dungeonsguide;
import kr.syeyoung.dungeonsguide.commands.*;
+import kr.syeyoung.dungeonsguide.config.Config;
import kr.syeyoung.dungeonsguide.dungeon.roomfinder.DungeonRoomInfoRegistry;
import kr.syeyoung.dungeonsguide.eventlistener.DungeonListener;
import kr.syeyoung.dungeonsguide.eventlistener.ItemGuiListener;
+import kr.syeyoung.dungeonsguide.features.FeatureRegistry;
import kr.syeyoung.dungeonsguide.utils.AhUtils;
import lombok.Getter;
import net.minecraft.client.Minecraft;
@@ -18,10 +20,7 @@ import org.apache.commons.io.IOUtils;
import javax.crypto.BadPaddingException;
import javax.crypto.IllegalBlockSizeException;
import javax.crypto.NoSuchPaddingException;
-import java.io.File;
-import java.io.FileOutputStream;
-import java.io.IOException;
-import java.io.InputStream;
+import java.io.*;
import java.security.InvalidAlgorithmParameterException;
import java.security.InvalidKeyException;
import java.security.NoSuchAlgorithmException;
@@ -41,7 +40,7 @@ public class e implements c {
}
public static void sendDebugChat(IChatComponent iChatComponent) {
- if (Config.DEBUG)
+ if (FeatureRegistry.DEBUG.isEnabled())
Minecraft.getMinecraft().thePlayer.addChatMessage(iChatComponent);
}
@@ -80,12 +79,15 @@ public class e implements c {
}
public void pre(FMLPreInitializationEvent event) {
configDir = new File(event.getModConfigurationDirectory(),"dungeonsguide");
- File configFile = new File(configDir, "config.conf");
+ File configFile = new File(configDir, "config.json");
if (!configFile.exists()) {
configDir.mkdirs();
}
- Config.configuration = new Configuration(configFile);
- Config.syncConfig( true );
+ try {
+ Config.loadConfig( configFile );
+ } catch (FileNotFoundException e) {
+ e.printStackTrace();
+ }
}
private void copy(InputStream inputStream, File f) throws IOException {
FileOutputStream fos = new FileOutputStream(f);
diff --git a/src/main/java/kr/syeyoung/dungeonsguide/eventlistener/DungeonListener.java b/src/main/java/kr/syeyoung/dungeonsguide/eventlistener/DungeonListener.java
index 118626f5..f1dd3bff 100755
--- a/src/main/java/kr/syeyoung/dungeonsguide/eventlistener/DungeonListener.java
+++ b/src/main/java/kr/syeyoung/dungeonsguide/eventlistener/DungeonListener.java
@@ -1,12 +1,13 @@
package kr.syeyoung.dungeonsguide.eventlistener;
-import kr.syeyoung.dungeonsguide.Config;
+import kr.syeyoung.dungeonsguide.config.Config;
import kr.syeyoung.dungeonsguide.Keybinds;
import kr.syeyoung.dungeonsguide.SkyblockStatus;
import kr.syeyoung.dungeonsguide.dungeon.DungeonContext;
import kr.syeyoung.dungeonsguide.dungeon.doorfinder.DungeonDoor;
import kr.syeyoung.dungeonsguide.dungeon.roomfinder.DungeonRoom;
import kr.syeyoung.dungeonsguide.e;
+import kr.syeyoung.dungeonsguide.features.FeatureRegistry;
import kr.syeyoung.dungeonsguide.roomedit.EditingContext;
import kr.syeyoung.dungeonsguide.roomedit.gui.GuiDungeonAddSet;
import kr.syeyoung.dungeonsguide.roomedit.gui.GuiDungeonParameterEdit;
@@ -78,7 +79,7 @@ public class DungeonListener {
if (postRender.type != RenderGameOverlayEvent.ElementType.TEXT) return;
SkyblockStatus skyblockStatus = (SkyblockStatus) e.getDungeonsGuide().getSkyblockStatus();
if (!skyblockStatus.isOnDungeon()) return;
- if (Config.DEBUG) {
+ if (FeatureRegistry.DEBUG.isEnabled()) {
int[] textureData = dynamicTexture.getTextureData();
MapUtils.getImage().getRGB(0, 0, 128, 128, textureData, 0, 128);
dynamicTexture.updateDynamicTexture();
@@ -95,10 +96,10 @@ public class DungeonListener {
DungeonRoom dungeonRoom = context.getRoomMapper().get(roomPt);
FontRenderer fontRenderer = Minecraft.getMinecraft().fontRendererObj;
if (dungeonRoom == null) {
- if (Config.DEBUG)
+ if (FeatureRegistry.DEBUG.isEnabled())
fontRenderer.drawString("Where are you?!", 5, 128, 0xFFFFFF);
} else {
- if (Config.DEBUG) {
+ if (FeatureRegistry.DEBUG.isEnabled()) {
fontRenderer.drawString("you're in the room... " + dungeonRoom.getColor() + " / " + dungeonRoom.getShape(), 5, 128, 0xFFFFFF);
fontRenderer.drawString("room uuid: " + dungeonRoom.getDungeonRoomInfo().getUuid() + (dungeonRoom.getDungeonRoomInfo().isRegistered() ? "" : " (not registered)"), 5, 138, 0xFFFFFF);
fontRenderer.drawString("room name: " + dungeonRoom.getDungeonRoomInfo().getName(), 5, 148, 0xFFFFFF);
@@ -162,7 +163,7 @@ public class DungeonListener {
DungeonContext context = skyblockStatus.getContext();
if (context == null) return;
- if (Config.DEBUG) {
+ if (FeatureRegistry.DEBUG.isEnabled()) {
for (DungeonRoom dungeonRoom : context.getDungeonRoomList()) {
for(DungeonDoor door : dungeonRoom.getDoors()) {
RenderUtils.renderDoor(door, renderWorldLastEvent.partialTicks);
@@ -208,7 +209,7 @@ public class DungeonListener {
@SubscribeEvent
public void onKeyInput(InputEvent.KeyInputEvent keyInputEvent) {
- if (Config.DEBUG && Keybinds.editingSession.isKeyDown() ){
+ if (FeatureRegistry.DEBUG.isEnabled() && Keybinds.editingSession.isKeyDown() ){
EditingContext ec = EditingContext.getEditingContext();
if (ec == null) {
DungeonContext context = e.getDungeonsGuide().getSkyblockStatus().getContext();
diff --git a/src/main/java/kr/syeyoung/dungeonsguide/eventlistener/ItemGuiListener.java b/src/main/java/kr/syeyoung/dungeonsguide/eventlistener/ItemGuiListener.java
index 829513bf..ba7499db 100644
--- a/src/main/java/kr/syeyoung/dungeonsguide/eventlistener/ItemGuiListener.java
+++ b/src/main/java/kr/syeyoung/dungeonsguide/eventlistener/ItemGuiListener.java
@@ -1,14 +1,11 @@
package kr.syeyoung.dungeonsguide.eventlistener;
-import kr.syeyoung.dungeonsguide.Config;
+import kr.syeyoung.dungeonsguide.config.Config;
import kr.syeyoung.dungeonsguide.e;
import kr.syeyoung.dungeonsguide.utils.AhUtils;
import kr.syeyoung.dungeonsguide.utils.TextUtils;
-import net.minecraft.client.Minecraft;
import net.minecraft.item.ItemStack;
import net.minecraft.nbt.NBTTagCompound;
-import net.minecraft.scoreboard.ScoreObjective;
-import net.minecraft.scoreboard.Scoreboard;
import net.minecraftforge.event.entity.player.ItemTooltipEvent;
import net.minecraftforge.fml.common.eventhandler.SubscribeEvent;
diff --git a/src/main/java/kr/syeyoung/dungeonsguide/features/AbstractFeature.java b/src/main/java/kr/syeyoung/dungeonsguide/features/AbstractFeature.java
new file mode 100644
index 00000000..4964ee5f
--- /dev/null
+++ b/