diff --git a/src/main/java/net/ryanland/dfschematics/df/code/ChestCodeBlock.java b/src/main/java/net/ryanland/dfschematics/df/code/ChestCodeBlock.java index 02d6e61..d10edd3 100644 --- a/src/main/java/net/ryanland/dfschematics/df/code/ChestCodeBlock.java +++ b/src/main/java/net/ryanland/dfschematics/df/code/ChestCodeBlock.java @@ -9,13 +9,18 @@ /** * Represents a code block with a chest (can have parameters + tags) */ -public interface ChestCodeBlock extends CodeBlock { +public interface ChestCodeBlock{ List getParameters(); List getTags(); - @Override + String getBlock(); + + String getAction(); + + int getWeight(); + default JsonObject toJson() { JsonObject json = CodeBlock.super.toJson(); JsonObject args = new JsonObject(); diff --git a/src/main/java/net/ryanland/dfschematics/df/code/CodeBlock.java b/src/main/java/net/ryanland/dfschematics/df/code/CodeBlock.java index e6b2b05..736a408 100644 --- a/src/main/java/net/ryanland/dfschematics/df/code/CodeBlock.java +++ b/src/main/java/net/ryanland/dfschematics/df/code/CodeBlock.java @@ -4,6 +4,8 @@ public interface CodeBlock { + List getParameters(); + String getBlock(); String getAction(); diff --git a/src/main/java/net/ryanland/dfschematics/df/code/MessageHandlerRegistry.java b/src/main/java/net/ryanland/dfschematics/df/code/MessageHandlerRegistry.java new file mode 100644 index 0000000..c4064ed --- /dev/null +++ b/src/main/java/net/ryanland/dfschematics/df/code/MessageHandlerRegistry.java @@ -0,0 +1,50 @@ +package net.ryanland.dfschematics.df.code; + +import com.google.gson.JsonObject; +import java.util.HashMap; +import java.util.List; +import java.util.Map; + +public class MessageHandlerRegistry { + + + private static final Map handlers = new HashMap<>(); + + static { + handlers.put("default", new DefaultHandler()); + handlers.put("auth", new AuthHandler()); + handlers.put("write_code read_plot default", new AuthHandler()); + handlers.put("BASIC", new SizeHandler()); + handlers.put("LARGE", new SizeHandler()); + handlers.put("MASSIVE", new SizeHandler()); + handlers.put("MEGA", new SizeHandler()); + } + + interface MessageHandler { + void handle(String msg); + } + + // Implementación del manejador para el mensaje "default" + static class DefaultHandler implements MessageHandler { + @Override + public void handle(String msg) { + socket.send("scopes write_code read_plot"); + MainController.instance.error("Please authorize DFSchematics to place templates in-game..."); + } + } + + static class AuthHandler implements MessageHandler { + @Override + public void handle(String msg) { + socket.send("size"); + } + } + + static class SizeHandler implements MessageHandler { + @Override + public void handle(String msg) { + List codeBlocks = MainController.schematic.getTemplateFactory().generateCodeBlocks(); + placeTemplates(MainController.schematic.getTemplateFactory().splitCodeBlocks(codeBlocks)); + } + } +} diff --git a/src/main/java/net/ryanland/dfschematics/df/code/SetVariable.java b/src/main/java/net/ryanland/dfschematics/df/code/SetVariable.java index d2d797b..d7a806b 100644 --- a/src/main/java/net/ryanland/dfschematics/df/code/SetVariable.java +++ b/src/main/java/net/ryanland/dfschematics/df/code/SetVariable.java @@ -1,6 +1,6 @@ package net.ryanland.dfschematics.df.code; -public abstract class SetVariable implements ChestCodeBlock { +public abstract class SetVariable implements CodeBlock { @Override public String getBlock() {