summaryrefslogtreecommitdiff
path: root/src/main/java/net/tylermurphy/Minecraft/Command
diff options
context:
space:
mode:
authorTyler Murphy <tylerm@tylerm.dev>2023-04-17 12:12:01 -0400
committerTyler Murphy <tylerm@tylerm.dev>2023-04-17 12:12:01 -0400
commit180aad05decc7eefa87e4e45d6747c48f40e5361 (patch)
tree51545197f7c94b4022acab880772c9f4fc65db0e /src/main/java/net/tylermurphy/Minecraft/Command
downloadminecraftjava-180aad05decc7eefa87e4e45d6747c48f40e5361.tar.gz
minecraftjava-180aad05decc7eefa87e4e45d6747c48f40e5361.tar.bz2
minecraftjava-180aad05decc7eefa87e4e45d6747c48f40e5361.zip
save
Diffstat (limited to 'src/main/java/net/tylermurphy/Minecraft/Command')
-rwxr-xr-xsrc/main/java/net/tylermurphy/Minecraft/Command/CommandHandler.java37
-rwxr-xr-xsrc/main/java/net/tylermurphy/Minecraft/Command/Commands/Teleport.java30
-rwxr-xr-xsrc/main/java/net/tylermurphy/Minecraft/Command/ICommand.java11
3 files changed, 78 insertions, 0 deletions
diff --git a/src/main/java/net/tylermurphy/Minecraft/Command/CommandHandler.java b/src/main/java/net/tylermurphy/Minecraft/Command/CommandHandler.java
new file mode 100755
index 0000000..c289604
--- /dev/null
+++ b/src/main/java/net/tylermurphy/Minecraft/Command/CommandHandler.java
@@ -0,0 +1,37 @@
+package net.tylermurphy.Minecraft.Command;
+
+import net.tylermurphy.Minecraft.Command.Commands.Teleport;
+
+import java.util.Arrays;
+import java.util.HashMap;
+import java.util.List;
+import java.util.Map;
+import java.util.regex.Pattern;
+
+
+public class CommandHandler {
+
+ public final static Map<String, ICommand> REGISTER = new HashMap<>();
+
+ public static void registerCommands() {
+ register(new Teleport());
+ }
+
+ private static void register(ICommand command) {
+ if (!REGISTER.containsKey(command.getInvoke())) {
+ REGISTER.put(command.getInvoke().toLowerCase(), command);
+ }
+ }
+
+ public static void handleCommand(String text) {
+ final String[] split = text.replaceFirst(
+ "(?i)" + Pattern.quote("/"), "").split("\\s+");
+ final String invoke = split[0].toLowerCase();
+ if(REGISTER.containsKey(invoke)) {
+ ICommand command = REGISTER.get(invoke);
+ final List<String> args = Arrays.asList(split).subList(1, split.length);
+ command.invoke(args);
+ }
+ }
+
+}
diff --git a/src/main/java/net/tylermurphy/Minecraft/Command/Commands/Teleport.java b/src/main/java/net/tylermurphy/Minecraft/Command/Commands/Teleport.java
new file mode 100755
index 0000000..a48955c
--- /dev/null
+++ b/src/main/java/net/tylermurphy/Minecraft/Command/Commands/Teleport.java
@@ -0,0 +1,30 @@
+package net.tylermurphy.Minecraft.Command.Commands;
+
+import java.util.List;
+
+import org.joml.Vector3f;
+
+import net.tylermurphy.Minecraft.Command.ICommand;
+import net.tylermurphy.Minecraft.Scene.World;
+
+public class Teleport implements ICommand {
+
+ public void invoke(List<String> args) {
+ if(args.size() < 3) return;
+ float x,y,z;
+ try {
+ x = Float.parseFloat(args.get(0));
+ y = Float.parseFloat(args.get(1));
+ z = Float.parseFloat(args.get(2));
+ } catch (Exception e) {
+ return;
+ }
+
+ World.player.getTransform().setGlobalPosition(new Vector3f(x,y,z));
+ }
+
+ public String getInvoke() {
+ return "tp";
+ }
+
+}
diff --git a/src/main/java/net/tylermurphy/Minecraft/Command/ICommand.java b/src/main/java/net/tylermurphy/Minecraft/Command/ICommand.java
new file mode 100755
index 0000000..c3b85d3
--- /dev/null
+++ b/src/main/java/net/tylermurphy/Minecraft/Command/ICommand.java
@@ -0,0 +1,11 @@
+package net.tylermurphy.Minecraft.Command;
+
+import java.util.List;
+
+public interface ICommand {
+
+ public void invoke(List<String> args);
+
+ public String getInvoke();
+
+}