From 180aad05decc7eefa87e4e45d6747c48f40e5361 Mon Sep 17 00:00:00 2001 From: Tyler Murphy Date: Mon, 17 Apr 2023 12:12:01 -0400 Subject: save --- .../Minecraft/Command/CommandHandler.java | 37 ++++++++++++++++++++++ .../Minecraft/Command/Commands/Teleport.java | 30 ++++++++++++++++++ .../tylermurphy/Minecraft/Command/ICommand.java | 11 +++++++ 3 files changed, 78 insertions(+) create mode 100755 src/main/java/net/tylermurphy/Minecraft/Command/CommandHandler.java create mode 100755 src/main/java/net/tylermurphy/Minecraft/Command/Commands/Teleport.java create mode 100755 src/main/java/net/tylermurphy/Minecraft/Command/ICommand.java (limited to 'src/main/java/net/tylermurphy/Minecraft/Command') 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 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 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 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 args); + + public String getInvoke(); + +} -- cgit v1.2.3-freya