aboutsummaryrefslogtreecommitdiff
path: root/src/main
diff options
context:
space:
mode:
Diffstat (limited to 'src/main')
-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/src/main/java/kr/syeyoung/dungeonsguide/features/AbstractFeature.java
@@ -0,0 +1,64 @@
+package kr.syeyoung.dungeonsguide.features;
+
+import com.google.gson.JsonElement;
+import com.google.gson.JsonObject;
+import kr.syeyoung.dungeonsguide.config.types.TypeConverter;
+import kr.syeyoung.dungeonsguide.config.types.TypeConverterRegistry;
+import lombok.Getter;
+import lombok.Setter;
+
+import java.util.*;
+
+public abstract class AbstractFeature {
+ @Getter
+ private final String category;
+ @Getter
+ private final String name;
+
+ @Getter
+ private final String description;
+
+ @Getter
+ private final String key;
+
+ protected Map<String, FeatureParameter> parameters = new HashMap<String, FeatureParameter>();
+
+ protected AbstractFeature(String category, String name, String description, String key) {
+ this.category = category;
+ this.name = name;
+ this.description = description;
+ this.key = key;
+ }
+
+ @Getter
+ @Setter
+ private boolean enabled = false;
+
+ public void drawWorld(float partialTicks) {}
+ public void drawScreen(float partialTicks) {}
+
+ public List<FeatureParameter> getParameters() { return new ArrayList<FeatureParameter>(parameters.values()); }
+
+
+
+ public void loadConfig(JsonObject jsonObject) { // gets key, calls it
+ enabled = jsonObject.get("$enabled").getAsBoolean();
+ for (Map.Entry<String, FeatureParameter> parameterEntry : parameters.entrySet()) {
+ JsonElement element = jsonObject.get(parameterEntry.getKey());
+ if (element == null) continue;
+ TypeConverter typeConverter = TypeConverterRegistry.getTypeConverter(parameterEntry.getValue().getValue_type());
+ parameterEntry.getValue().setValue(typeConverter.deserialize(element));
+ }
+ }
+
+ public JsonObject saveConfig() {
+ JsonObject object = new JsonObject();
+ for (Map.Entry<String, FeatureParameter> parameterEntry : parameters.entrySet()) {
+ TypeConverter typeConverter = TypeConverterRegistry.getTypeConverter(parameterEntry.getValue().getValue_type());
+ JsonElement obj = typeConverter.serialize(parameterEntry.getValue().getValue());
+ object.add(parameterEntry.getKey(), obj);
+ }
+ object.addProperty("$enabled", isEnabled());
+ return object;
+ }
+}
diff --git a/src/main/java/kr/syeyoung/dungeonsguide/features/FeatureParameter.java b/src/main/java/kr/syeyoung/dungeonsguide/features/FeatureParameter.java
new file mode 100644
index 00000000..98532d1b
--- /dev/null
+++ b/src/main/java/kr/syeyoung/dungeonsguide/features/FeatureParameter.java
@@ -0,0 +1,16 @@
+package kr.syeyoung.dungeonsguide.features;
+
+import lombok.AllArgsConstructor;
+import lombok.Data;
+
+@Data
+@AllArgsConstructor
+public class FeatureParameter<T> {
+ private String key;
+
+ private String name;
+ private String description;
+
+ private T value;
+ private String value_type;
+}
diff --git a/src/main/java/kr/syeyoung/dungeonsguide/features/FeatureRegistry.java b/src/main/java/kr/syeyoung/dungeonsguide/features/FeatureRegistry.java
new file mode 100644
index 00000000..67d1e971
--- /dev/null
+++ b/src/main/java/kr/syeyoung/dungeonsguide/features/FeatureRegistry.java
@@ -0,0 +1,49 @@
+package kr.syeyoung.dungeonsguide.features;
+
+import lombok.Getter;
+
+import java.util.ArrayList;
+import java.util.HashMap;
+import java.util.List;
+import java.util.Map;
+
+public class FeatureRegistry {
+ @Getter
+ private static List<AbstractFeature> featureList = new ArrayList<AbstractFeature>();
+ private static Map<String, AbstractFeature> featureByKey = new HashMap<String, AbstractFeature>();
+ @Getter
+ private static Map<String, List<AbstractFeature>> featuresByCategory = new HashMap<String, List<AbstractFeature>>();
+
+ public static AbstractFeature getFeatureByKey(String key) {
+ return featureByKey.get(key);
+ }
+
+ public static AbstractFeature register(AbstractFeature abstractFeature) {
+ featureList.add(abstractFeature);
+ featureByKey.put(abstractFeature.getKey(), abstractFeature);
+ List<AbstractFeature> features = featuresByCategory.get(abstractFeature.getCategory());
+ if (features == null)
+ features = new ArrayList<AbstractFeature>();
+ features.add(abstractFeature);
+ featuresByCategory.put(abstractFeature.getCategory(), features);
+
+ return abstractFeature;
+ }
+
+ public static final AbstractFeature SOLVER_RIDDLE = register(new SimpleFeature("solver", "Riddle Puzzle (3 weirdo) Solver", "Highlights the correct box after clicking on all 3 weirdos", "solver.riddle"));
+ public static final AbstractFeature SOLVER_KAHOOT = register(new SimpleFeature("solver", "Trivia Puzzle (Omnicrescent) Solver", "Highlights the correct solution for trivia puzzle", "solver.trivia"));
+ public static final AbstractFeature SOLVER_BLAZE = register(new SimpleFeature("solver", "Blaze Puzzle Solver", "Highlights the blaze that needs to be killed in an blaze room", "solver.blaze"));
+ public static final AbstractFeature SOLVER_TICTACTOE = register(new SimpleFeature("solver", "Tictactoe Solver", "Shows the best move that could be taken by player in the tictactoe room", "solver.tictactoe"));
+ public static final AbstractFeature SOLVER_ICEPATH = register(new SimpleFeature("solver", "Icepath Puzzle Solver (Advanced)", "Calculates solution for icepath puzzle and displays it to user", "solver.icepath"));
+ public static final AbstractFeature SOLVER_SILVERFISH = register(new SimpleFeature("solver", "Silverfish Puzzle Solver (Advanced)", "Actively calculates solution for silverfish puzzle and displays it to user", "solver.silverfish"));
+ public static final AbstractFeature SOLVER_WATERPUZZLE = register(new SimpleFeature("solver", "Waterboard Puzzle Solver (Advanced)", "Calculates solution for waterboard puzzle and displays it to user", "solver.waterboard"));
+ public static final AbstractFeature SOLVER_BOX = register(new SimpleFeature("solver", "Box Puzzle Solver (Advanced)", "Calculates solution for box puzzle room, and displays it to user", "solver.box"));
+ public static final AbstractFeature SOLVER_CREEPER = register(new SimpleFeature("solver", "Creeper Puzzle Solver", "Draws line between prismarine lamps in creeper room", "solver.creeper"));
+ public static final AbstractFeature SOLVER_TELEPORT = register(new SimpleFeature("solver", "Teleport Puzzle Solver", "Shows teleport pads you've visited in a teleport maze room", "solver.teleport"));
+
+ public static final AbstractFeature TOOLTIP_DUNGEONSTAT = register(new SimpleFeature("tooltip", "Dungeon Item Stats", "Shows quality of dungeon items (floor, percentage)", "tooltip.dungeonitem"));
+ public static final AbstractFeature TOOLTIP_PRICE = register(new SimpleFeature("tooltip", "Item Price", "Shows price of items", "tooltip.price"));
+
+ public static final AbstractFeature DEBUG = register(new SimpleFeature("advanced", "Debug", "Toggles debug mode", "debug"));
+
+}
diff --git a/src/main/java/kr/syeyoung/dungeonsguide/features/GuiFeature.java b/src/main/java/kr/syeyoung/dungeonsguide/features/GuiFeature.java
new file mode 100644
index 00000000..d7b58dbc
--- /dev/null
+++ b/src/main/java/kr/syeyoung/dungeonsguide/features/GuiFeature.java
@@ -0,0 +1,73 @@
+package kr.syeyoung.dungeonsguide.features;
+
+import com.google.gson.JsonObject;
+import kr.syeyoung.dungeonsguide.config.types.TypeConverterRegistry;
+import lombok.AccessLevel;
+import lombok.Getter;
+import lombok.Setter;
+import net.minecraft.client.Minecraft;
+import net.minecraft.client.gui.ScaledResolution;
+import net.minecraft.client.renderer.OpenGlHelper;
+import org.lwjgl.opengl.GL11;
+
+import java.awt.*;
+
+@Getter
+public abstract class GuiFeature extends AbstractFeature {
+ @Setter
+ private Rectangle featureRect;
+ @Setter(value = AccessLevel.PROTECTED)
+ private boolean keepRatio;
+ @Setter(value = AccessLevel.PROTECTED)
+ private int defaultWidth;
+ @Setter(value = AccessLevel.PROTECTED)
+ private int defaultHeight;
+
+ protected GuiFeature(String category, String name, String description, String key, boolean keepRatio, int width, int height) {
+ super(category, name, description, key);
+ this.keepRatio = keepRatio;
+ this.defaultWidth = width;
+ this.defaultHeight = height;
+ this.featureRect = new Rectangle(0, 0, width, height);
+ }
+
+ @Override
+ public void drawScreen(float partialTicks) {
+ clip(new ScaledResolution(Minecraft.getMinecraft()), featureRect.x, featureRect.y, featureRect.width, featureRect.height);
+ GL11.glPushAttrib(GL11.GL_SCISSOR_BIT);
+ GL11.glEnable(GL11.GL_SCISSOR_TEST);
+
+ GL11.glEnable(GL11.GL_BLEND);
+ OpenGlHelper.glBlendFunc(770, 771, 1, 0);
+ GL11.glBlendFunc(GL11.GL_SRC_ALPHA, GL11.GL_ONE_MINUS_SRC_ALPHA);
+
+ GL11.glPushMatrix();
+ GL11.glTranslated(featureRect.x, featureRect.y, 0);
+ drawHUD(partialTicks);
+ GL11.glPopMatrix();
+
+ GL11.glDisable(GL11.GL_SCISSOR_TEST);
+ GL11.glPopAttrib();
+ }
+
+ public abstract void drawHUD(float partialTicks);
+
+
+ private void clip(ScaledResolution resolution, int x, int y, int width, int height) {
+ int scale = resolution.getScaleFactor();
+ GL11.glScissor((x ) * scale, Minecraft.getMinecraft().displayHeight - (y + height) * scale, (width) * scale, height * scale);
+ }
+
+ @Override
+ public void loadConfig(JsonObject jsonObject) {
+ super.loadConfig(jsonObject);
+ featureRect = TypeConverterRegistry.getTypeConverter("rect", Rectangle.class).deserialize(jsonObject.get("$bounds"));
+ }
+
+ @Override
+ public JsonObject saveConfig() {
+ JsonObject object = super.saveConfig();
+ object.add("$bounds", TypeConverterRegistry.getTypeConverter("rect", Rectangle.class).serialize(featureRect));
+ return object;
+ }
+}
diff --git a/src/main/java/kr/syeyoung/dungeonsguide/features/SimpleFeature.java b/src/main/java/kr/syeyoung/dungeonsguide/features/SimpleFeature.java
new file mode 100644
index 00000000..cdeaaa44
--- /dev/null
+++ b/src/main/java/kr/syeyoung/dungeonsguide/features/SimpleFeature.java
@@ -0,0 +1,10 @@
+package kr.syeyoung.dungeonsguide.features;
+
+public class SimpleFeature extends AbstractFeature {
+ protected SimpleFeature(String category, String name, String key) {
+ super(category, name, name, key);
+ }
+ protected SimpleFeature(String category, String name, String description, String key) {
+ super(category, name, description, key);
+ }
+}
diff --git a/src/main/java/kr/syeyoung/dungeonsguide/roomprocessor/GeneralRoomProcessor.java b/src/main/java/kr/syeyoung/dungeonsguide/roomprocessor/GeneralRoomProcessor.java
index 4bd7993e..541d5ccc 100755
--- a/src/main/java/kr/syeyoung/dungeonsguide/roomprocessor/GeneralRoomProcessor.java
+++ b/src/main/java/kr/syeyoung/dungeonsguide/roomprocessor/GeneralRoomProcessor.java
@@ -1,9 +1,9 @@
package kr.syeyoung.dungeonsguide.roomprocessor;
-import kr.syeyoung.dungeonsguide.Config;
-import kr.syeyoung.dungeonsguide.e;
+import kr.syeyoung.dungeonsguide.config.Config;
import kr.syeyoung.dungeonsguide.dungeon.mechanics.DungeonMechanic;
import kr.syeyoung.dungeonsguide.dungeon.roomfinder.DungeonRoom;
+import kr.syeyoung.dungeonsguide.features.FeatureRegistry;
import kr.syeyoung.dungeonsguide.roomedit.EditingContext;
import kr.syeyoung.dungeonsguide.roomedit.gui.GuiDungeonRoomEdit;
import lombok.Getter;
@@ -34,7 +34,7 @@ public class GeneralRoomProcessor implements RoomProcessor {
@Override
public void drawWorld(float partialTicks) {
- if (Config.DEBUG && (EditingContext.getEditingContext() == null || EditingContext.getEditingContext().getCurrent() instanceof GuiDungeonRoomEdit)) {
+ if (FeatureRegistry.DEBUG.isEnabled() && (EditingContext.getEditingContext() == null || EditingContext.getEditingContext().getCurrent() instanceof GuiDungeonRoomEdit)) {
for (Map.Entry<String, DungeonMechanic> value : dungeonRoom.getDungeonRoomInfo().getMechanics().entrySet()) {
if (value.getValue() == null) continue;;
value.getValue().highlight(new Color(0,255,255,50), value.getKey(), dungeonRoom, partialTicks);
diff --git a/src/main/java/kr/syeyoung/dungeonsguide/roomprocessor/RoomProcessorBlazeSolver.java b/src/main/java/kr/syeyoung/dungeonsguide/roomprocessor/RoomProcessorBlazeSolver.java
index f3b0cf4b..38acb3c8 100755
--- a/src/main/java/kr/syeyoung/dungeonsguide/roomprocessor/RoomProcessorBlazeSolver.java
+++ b/src/main/java/kr/syeyoung/dungeonsguide/roomprocessor/RoomProcessorBlazeSolver.java
@@ -1,16 +1,12 @@
package kr.syeyoung.dungeonsguide.roomprocessor;
import com.google.common.base.Predicate;
-import kr.syeyoung.dungeonsguide.Config;
+import kr.syeyoung.dungeonsguide.config.Config;
import kr.syeyoung.dungeonsguide.dungeon.roomfinder.DungeonRoom;
+import kr.syeyoung.dungeonsguide.features.FeatureRegistry;
import kr.syeyoung.dungeonsguide.utils.RenderUtils;
import kr.syeyoung.dungeonsguide.utils.TextUtils;
-import net.minecraft.client.Minecraft;
-import net.minecraft.client.gui.FontRenderer;
-import net.minecraft.client.renderer.Tessellator;
-import net.minecraft.entity.Entity;
import net.minecraft.entity.item.EntityArmorStand;
-import net.minecraft.entity.monster.EntityBlaze;
import net.minecraft.util.BlockPos;
import net.minecraft.util.Vec3;
import net.minecraft.world.World;
@@ -18,8 +14,6 @@ import org.jetbrains.annotations.Nullable;
import java.awt.*;
import java.util.ArrayList;
-import java.util.Collections;
-import java.util.Comparator;
import java.util.List;
public class RoomProcessorBlazeSolver extends GeneralRoomProcessor {
@@ -78,7 +72,7 @@ public class RoomProcessorBlazeSolver extends GeneralRoomProcessor {
@Override
public void drawWorld(float partialTicks) {
super.drawWorld(partialTicks);
- if (!Config.solver_blaze) return;
+ if (!FeatureRegistry.SOLVER_BLAZE.isEnabled()) return;
if (next == null) return;
Vec3 pos = next.getPositionEyes(partialTicks);
RenderUtils.highlightBox(next, new Color(0,255,0,100), partialTicks, false);
diff --git a/src/main/java/kr/syeyoung/dungeonsguide/roomprocessor/RoomProcessorCreeperSolver.java b/src/main/java/kr/syeyoung/dungeonsguide/roomprocessor/RoomProcessorCreeperSolver.java
index a6653fdc..d0c5be1c 100755
--- a/src/main/java/kr/syeyoung/dungeonsguide/roomprocessor/RoomProcessorCreeperSolver.java
+++ b/src/main/java/kr/syeyoung/dungeonsguide/roomprocessor/RoomProcessorCreeperSolver.java
@@ -1,23 +1,17 @@
package kr.syeyoung.dungeonsguide.roomprocessor;
import com.google.common.base.Predicate;
-import kr.syeyoung.dungeonsguide.Config;
-import kr.syeyoung.dungeonsguide.dungeon.data.OffsetPoint;
-import kr.syeyoung.dungeonsguide.dungeon.data.OffsetPointSet;
+import kr.syeyoung.dungeonsguide.config.Config;
import kr.syeyoung.dungeonsguide.dungeon.roomfinder.DungeonRoom;
+import kr.syeyoung.dungeonsguide.features.FeatureRegistry;
import kr.syeyoung.dungeonsguide.utils.RenderUtils;
-import kr.syeyoung.dungeonsguide.utils.TextUtils;
import net.minecraft.block.Block;
-import net.minecraft.entity.Entity;
-import net.minecraft.entity.item.EntityArmorStand;
import net.minecraft.entity.monster.EntityCreeper;
import net.minecraft.init.Blocks;
import net.minecraft.util.BlockPos;
-import net.minecraft.util.EnumFacing;
import net.minecraft.util.Vec3;
import net.minecraft.world.World;
import org.jetbrains.annotations.Nullable;
-import scala.actors.threadpool.Arrays;
import java.awt.*;
import java.util.ArrayList;
@@ -116,7 +110,7 @@ public class RoomProcessorCreeperSolver extends GeneralRoomProcessor {
@Override
public void drawWorld(float partialTicks) {
super.drawWorld(partialTicks);
- if (!Config.solver_creeper) return;
+ if (!FeatureRegistry.SOLVER_CREEPER.isEnabled()) return;
World w = getDungeonRoom().getContext().getWorld();
for (int i = 0; i < poses.size(); i++) {
BlockPos[] poset = poses.get(i);
diff --git a/src/main/java/kr/syeyoung/dungeonsguide/roomprocessor/RoomProcessorIcePath.java b/src/main/java/kr/syeyoung/dungeonsguide/roomprocessor/RoomProcessorIcePath.java
index 2f30c506..42f27628 100755
--- a/src/main/java/kr/syeyoung/dungeonsguide/roomprocessor/RoomProcessorIcePath.java
+++ b/src/main/java/kr/syeyoung/dungeonsguide/roomprocessor/RoomProcessorIcePath.java
@@ -1,10 +1,11 @@
package kr.syeyoung.dungeonsguide.roomprocessor;
import com.google.common.base.Predicate;
-import kr.syeyoung.dungeonsguide.Config;
+import kr.syeyoung.dungeonsguide.config.Config;
import kr.syeyoung.dungeonsguide.dungeon.data.OffsetPoint;
import kr.syeyoung.dungeonsguide.dungeon.data.OffsetPointSet;
import kr.syeyoung.dungeonsguide.dungeon.roomfinder.DungeonRoom;
+import kr.syeyoung.dungeonsguide.features.FeatureRegistry;
import kr.syeyoung.dungeonsguide.utils.RenderUtils;
import net.minecraft.entity.Entity;
import net.minecraft.entity.monster.EntitySilverfish;
@@ -119,7 +120,7 @@ public class RoomProcessorIcePath extends GeneralRoomProcessor {
@Override
public void drawWorld(float partialTicks) {
super.drawWorld(partialTicks);
- if (!Config.solver_icesilverfish) return;
+ if (!FeatureRegistry.SOLVER_SILVERFISH.isEnabled()) return;
if (!err)
RenderUtils.drawLines(solution, new Color(0,255,0, 255), partialTicks, false);
}
diff --git a/src/main/java/kr/syeyoung/dungeonsguide/roomprocessor/RoomProcessorRiddle.java b/src/main/java/kr/syeyoung/dungeonsguide/roomprocessor/RoomProcessorRiddle.java
index 5ebec35d..dc2d65e2 100755
--- a/src/main/java/kr/syeyoung/dungeonsguide/roomprocessor/RoomProcessorRiddle.java
+++ b/src/main/java/kr/syeyoung/dungeonsguide/roomprocessor/RoomProcessorRiddle.java
@@ -1,9 +1,9 @@
package kr.syeyoung.dungeonsguide.roomprocessor;
import com.google.common.base.Predicate;
-import kr.syeyoung.dungeonsguide.Config;
+import kr.syeyoung.dungeonsguide.config.Config;
import kr.syeyoung.dungeonsguide.dungeon.roomfinder.DungeonRoom;
-import kr.syeyoung.dungeonsguide.roomedit.Parameter;
+import kr.syeyoung.dungeonsguide.features.FeatureRegistry;
import kr.syeyoung.dungeonsguide.utils.RenderUtils;
import kr.syeyoung.dungeonsguide.utils.TextUtils;
import net.minecraft.block.Block;
@@ -39,7 +39,7 @@ public class RoomProcessorRiddle extends GeneralRoomProcessor {
@Override
public void chatReceived(IChatComponent chat) {
super.chatReceived(chat);
- if (!Config.solver_riddle) return;
+ if (!FeatureRegistry.SOLVER_RIDDLE.isEnabled()) return;
String ch2 = chat.getUnformattedText();
if (!ch2.startsWith("§e[NPC] ")) {
return;
@@ -88,7 +88,7 @@ public class RoomProcessorRiddle extends GeneralRoomProcessor {
@Override
public void drawWorld(float partialTicks) {
super.drawWorld(partialTicks);
- if (!Config.solver_riddle) return;
+ if (!FeatureRegistry.SOLVER_RIDDLE.isEnabled()) return;
if (chest != null) {
RenderUtils.highlightBlock(chest, new Color(0,255,0, 50),partialTicks);
}
diff --git a/src/main/java/kr/syeyoung/dungeonsguide/roomprocessor/RoomProcessorTeleportMazeSolver.java b/src/main/java/kr/syeyoung/dungeonsguide/roomprocessor/RoomProcessorTeleportMazeSolver.java
index 844789fb..f523ffa9 100755
--- a/src/main/java/kr/syeyoung/dungeonsguide/roomprocessor/RoomProcessorTeleportMazeSolver.java
+++ b/src/main/java/kr/syeyoung/dungeonsguide/roomprocessor/RoomProcessorTeleportMazeSolver.java
@@ -1,7 +1,8 @@
package kr.syeyoung.dungeonsguide.roomprocessor;
-import kr.syeyoung.dungeonsguide.Config;
+import kr.syeyoung.dungeonsguide.config.Config;
import kr.syeyoung.dungeonsguide.dungeon.roomfinder.DungeonRoom;
+import kr.syeyoung.dungeonsguide.features.FeatureRegistry;
import kr.syeyoung.dungeonsguide.utils.RenderUtils;
import net.minecraft.block.Block;
import net.minecraft.client.Minecraft;
@@ -63,7 +64,7 @@ public class RoomProcessorTeleportMazeSolver extends GeneralRoomProcessor {
@Override
public void drawWorld(float partialTicks) {
super.drawWorld(partialTicks);
- if (!Config.solver_teleport) return;
+ if (!FeatureRegistry.SOLVER_TELEPORT.isEnabled()) return;
for (BlockPos bpos:visitedPortals) {
RenderUtils.highlightBlock(bpos, new Color(255,0,0,100), partialTicks);
}
diff --git a/src/main/java/kr/syeyoung/dungeonsguide/roomprocessor/RoomProcessorTicTacToeSolver.java b/src/main/java/kr/syeyoung/dungeonsguide/roomprocessor/RoomProcessorTicTacToeSolver.java
index 353a3ed6..03c2f4e2 100755
--- a/src/main/java/kr/syeyoung/dungeonsguide/roomprocessor/RoomProcessorTicTacToeSolver.java
+++ b/src/main/java/kr/syeyoung/dungeonsguide/roomprocessor/RoomProcessorTicTacToeSolver.java
@@ -1,20 +1,18 @@
package kr.syeyoung.dungeonsguide.roomprocessor;
-import kr.syeyoung.dungeonsguide.Config;
+import kr.syeyoung.dungeonsguide.config.Config;
import kr.syeyoung.dungeonsguide.dungeon.data.OffsetPoint;
import kr.syeyoung.dungeonsguide.dungeon.data.OffsetPointSet;
import kr.syeyoung.dungeonsguide.dungeon.roomfinder.DungeonRoom;
+import kr.syeyoung.dungeonsguide.features.FeatureRegistry;
import kr.syeyoung.dungeonsguide.utils.RenderUtils;
import net.minecraft.block.Block;
-import net.minecraft.client.Minecraft;
-import net.minecraft.client.gui.FontRenderer;
import net.minecraft.entity.item.EntityItemFrame;
import net.minecraft.init.Blocks;
import net.minecraft.item.ItemMap;
import net.minecraft.item.ItemStack;
import net.minecraft.util.AxisAlignedBB;
import net.minecraft.util.BlockPos;
-import net.minecraft.util.MinecraftError;
import net.minecraft.world.World;
import net.minecraft.world.storage.MapData;
@@ -139,7 +137,6 @@ public class RoomProcessorTicTacToeSolver extends GeneralRoomProcessor {
@Override
public void tick() {
super.tick();
- if (!Config.solver_tictactoe) return;
if (board == null) return;
if (gameEnded) return;
byte[][] board = buildBoardState();
@@ -170,7 +167,7 @@ public class RoomProcessorTicTacToeSolver extends GeneralRoomProcessor {
@Override
public void drawWorld(float partialTicks) {
super.drawWorld(partialTicks);
- if (!Config.solver_tictactoe) return;
+ if (!FeatureRegistry.SOLVER_TICTACTOE.isEnabled()) return;
if (chosePos != -1) {
BlockPos block = board.getOffsetPointList().get(chosePos).getBlockPos(getDungeonRoom());
RenderUtils.highlightBlock(block, new Color(0,255,255,50), partialTicks);
diff --git a/src/main/java/kr/syeyoung/dungeonsguide/roomprocessor/RoomProcessorTrivia.java b/src/main/java/kr/syeyoung/dungeonsguide/roomprocessor/RoomProcessorTrivia.java
index 1b56768a..cf2538f2 100755
--- a/src/main/java/kr/syeyoung/dungeonsguide/roomprocessor/RoomProcessorTrivia.java
+++ b/src/main/java/kr/syeyoung/dungeonsguide/roomprocessor/RoomProcessorTrivia.java
@@ -1,8 +1,9 @@
package kr.syeyoung.dungeonsguide.roomprocessor;
-import kr.syeyoung.dungeonsguide.Config;
+import kr.syeyoung.dungeonsguide.config.Config;
import kr.syeyoung.dungeonsguide.dungeon.data.OffsetPoint;
import kr.syeyoung.dungeonsguide.dungeon.roomfinder.DungeonRoom;
+import kr.syeyoung.dungeonsguide.features.FeatureRegistry;
import kr.syeyoung.dungeonsguide.utils.RenderUtils;
import kr.syeyoung.dungeonsguide.utils.SkyblockUtils;
import kr.syeyoung.dungeonsguide.utils.TextUtils;
@@ -73,7 +74,7 @@ public class RoomProcessorTrivia extends GeneralRoomProcessor {
@Override
public void chatReceived(IChatComponent chat) {
super.chatReceived(chat);
- if (!Config.solver_kahoot) return;
+ if (!FeatureRegistry.SOLVER_KAHOOT.isEnabled()) return;
String ch2 = chat.getUnformattedText();
if (chat.getFormattedText().contains("§r§6§lQuestion ")) {
questionDialogStart = true;
@@ -149,7 +150,7 @@ public class RoomProcessorTrivia extends GeneralRoomProcessor {
@Override
public void drawWorld(float partialTicks) {
super.drawWorld(partialTicks);
- if (!Config.solver_kahoot) return;
+ if (!FeatureRegistry.SOLVER_KAHOOT.isEnabled()) return;
if (correctAnswer == null) return;
OffsetPoint op = (OffsetPoint) getDungeonRoom().getDungeonRoomInfo().getProperties().get(correctAnswer);
diff --git a/src/main/java/kr/syeyoung/dungeonsguide/roomprocessor/boxpuzzle/RoomProcessorBoxSolver.java b/src/main/java/kr/syeyoung/dungeonsguide/roomprocessor/boxpuzzle/RoomProcessorBoxSolver.java
index 1ed35e55..a8f31e78 100755
--- a/src/main/java/kr/syeyoung/dungeonsguide/roomprocessor/boxpuzzle/RoomProcessorBoxSolver.java
+++ b/src/main/java/kr/syeyoung/dungeonsguide/roomprocessor/boxpuzzle/RoomProcessorBoxSolver.java
@@ -1,17 +1,15 @@
package kr.syeyoung.dungeonsguide.roomprocessor.boxpuzzle;
-import kr.syeyoung.dungeonsguide.Config;
+import kr.syeyoung.dungeonsguide.config.Config;
import kr.syeyoung.dungeonsguide.dungeon.data.OffsetPointSet;
import kr.syeyoung.dungeonsguide.dungeon.roomfinder.DungeonRoom;
+import kr.syeyoung.dungeonsguide.features.FeatureRegistry;
import kr.syeyoung.dungeonsguide.roomprocessor.GeneralRoomProcessor;
import kr.syeyoung.dungeonsguide.roomprocessor.RoomProcessorGenerator;
import kr.syeyoung.dungeonsguide.utils.RenderUtils;
-import lombok.AllArgsConstructor;
-import lombok.Data;
import net.minecraft.block.Block;
import net.minecraft.client.Minecraft;
import net.minecraft.client.gui.FontRenderer;
-import net.minecraft.client.renderer.entity.RenderIronGolem;
import net.minecraft.init.Blocks;
import net.minecraft.util.BlockPos;
import net.minecraft.util.ChatComponentText;
@@ -79,7 +77,7 @@ public class RoomProcessorBoxSolver extends GeneralRoomProcessor {
@Override
public void tick() {
super.tick();
- if (!Config.solver_box) return;
+ if (!FeatureRegistry.SOLVER_BOX.isEnabled()) return;
if (bugged) return;
byte[][] currboard = buildCurrentState();
if (puzzleSolvingThread == null) {
@@ -296,7 +294,7 @@ public class RoomProcessorBoxSolver extends GeneralRoomProcessor {
@Override
public void chatReceived(IChatComponent chat) {
- if (!Config.solver_box) return;
+ if (!FeatureRegistry.SOLVER_BOX.isEnabled()) return;
if (chat.getFormattedText().toLowerCase().contains("recalc")) {
if (calcDone) {
calcReq = true;
@@ -311,7 +309,7 @@ public class RoomProcessorBoxSolver extends GeneralRoomProcessor {
@Override
public void drawScreen(float partialTicks) {
super.drawScreen(partialTicks);
- if (!Config.solver_box) return;
+ if (!FeatureRegistry.SOLVER_BOX.isEnabled()) return;
FontRenderer fr = Minecraft.getMinecraft().fontRendererObj;
fr.drawString("Type \"recalc\" in chat to recalculate the solution", 0, 0, 0xFFFFFFFF);
}
@@ -319,7 +317,7 @@ public class RoomProcessorBoxSolver extends GeneralRoomProcessor {
@Override
public void drawWorld(float partialTicks) {
super.drawWorld(partialTicks);
- if (!Config.solver_box) return;
+ if (!FeatureRegistry.SOLVER_BOX.isEnabled()) return;
if (bugged) return;
if (!calcDone) return;
if (solution == null) return;
diff --git a/src/main/java/kr/syeyoung/dungeonsguide/roomprocessor/icefill/RoomProcessorIcePath2.java b/src/main/java/kr/syeyoung/dungeonsguide/roomprocessor/icefill/RoomProcessorIcePath2.java
index 6ec948a9..7d2e09a3 100755
--- a/src/main/java/kr/syeyoung/dungeonsguide/roomprocessor/icefill/RoomProcessorIcePath2.java
+++ b/src/main/java/kr/syeyoung/dungeonsguide/roomprocessor/icefill/RoomProcessorIcePath2.java
@@ -1,8 +1,9 @@
package kr.syeyoung.dungeonsguide.roomprocessor.icefill;
-import kr.syeyoung.dungeonsguide.Config;
+import kr.syeyoung.dungeonsguide.config.Config;
import kr.syeyoung.dungeonsguide.dungeon.data.OffsetPointSet;
import kr.syeyoung.dungeonsguide.dungeon.roomfinder.DungeonRoom;
+import kr.syeyoung.dungeonsguide.features.FeatureRegistry;
import kr.syeyoung.dungeonsguide.roomprocessor.GeneralRoomProcessor;
import kr.syeyoung.dungeonsguide.roomprocessor.RoomProcessorGenerator;
import kr.syeyoung.dungeonsguide.utils.RenderUtils;
@@ -12,7 +13,6 @@ import net.minecraft.util.BlockPos;
import net.minecraft.util.ChatComponentText;
import java.awt.*;
-import java.util.ArrayList;
import java.util.Queue;
import java.util.Arrays;
import java.util.LinkedList;
@@ -81,6 +81,7 @@ public class RoomProcessorIcePath2 extends GeneralRoomProcessor {
@Override
public void tick() {
super.tick();
+ if (!FeatureRegistry.SOLVER_ICEPATH.isEnabled()) return;
while (!messageQueue.isEmpty()){
Minecraft.getMinecraft().thePlayer.addChatMessage(new ChatComponentText(messageQueue.poll()));
}
@@ -88,7 +89,7 @@ public class RoomProcessorIcePath2 extends GeneralRoomProcessor {
@Override
public void drawWorld(float partialTicks) {
- if (!Config.solver_icepath) return;
+ if (!FeatureRegistry.SOLVER_ICEPATH.isEnabled()) return;
for (List<BlockPos> solution:this.solution)
RenderUtils.drawLines(solution, new Color(0,255,0, 255), partialTicks, true);
}
diff --git a/src/main/java/kr/syeyoung/dungeonsguide/roomprocessor/waterpuzzle/RoomProcessorWaterPuzzle.java b/src/main/java/kr/syeyoung/dungeonsguide/roomprocessor/waterpuzzle/RoomProcessorWaterPuzzle.java
index c4787d48..ace719c9 100755
--- a/src/main/java/kr/syeyoung/dungeonsguide/roomprocessor/waterpuzzle/RoomProcessorWaterPuzzle.java
+++ b/src/main/java/kr/syeyoung/dungeonsguide/roomprocessor/waterpuzzle/RoomProcessorWaterPuzzle.java
@@ -1,16 +1,13 @@
package kr.syeyoung.dungeonsguide.roomprocessor.waterpuzzle;
-import kr.syeyoung.dungeonsguide.Config;
+import kr.syeyoung.dungeonsguide.config.Config;
import kr.syeyoung.dungeonsguide.dungeon.data.OffsetPoint;
import kr.syeyoung.dungeonsguide.dungeon.data.OffsetPointSet;
import kr.syeyoung.dungeonsguide.dungeon.roomfinder.DungeonRoom;
+import kr.syeyoung.dungeonsguide.features.FeatureRegistry;
import kr.syeyoung.dungeonsguide.roomprocessor.GeneralRoomProcessor;
-import kr.syeyoung.dungeonsguide.roomprocessor.RoomProcessor;
-import kr.syeyoung.dungeonsguide.roomprocessor.RoomProcessorBlazeSolver;
import kr.syeyoung.dungeonsguide.roomprocessor.RoomProcessorGenerator;
import kr.syeyoung.dungeonsguide.utils.RenderUtils;
-import net.minecraft.client.Minecraft;
-import net.minecraft.client.gui.FontRenderer;
import net.minecraft.util.BlockPos;
import java.awt.*;
@@ -50,7 +47,7 @@ public class RoomProcessorWaterPuzzle extends GeneralRoomProcessor {
@Override
public void tick() {
super.tick();
- if (!Config.solver_waterpuzzle) return;
+ if (!FeatureRegistry.SOLVER_WATERPUZZLE.isEnabled()) return;
if (!argumentsFulfilled) return;
try {
waterBoard.tick();
@@ -67,7 +64,7 @@ public class RoomProcessorWaterPuzzle extends GeneralRoomProcessor {
@Override
public void drawWorld(float partialTicks) {
super.drawWorld(partialTicks);
- if (!Config.solver_waterpuzzle) return;
+ if (!FeatureRegistry.SOLVER_WATERPUZZLE.isEnabled()) return;
if (!argumentsFulfilled) return;
if (waterBoard == null) return;