From 9e8e32ddac05a4bca7c0f7ec13cdda3aea3d332f Mon Sep 17 00:00:00 2001 From: nonchris Date: Sat, 22 Aug 2026 00:28:47 +0200 Subject: [PATCH 1/4] add success response logic --- src/main/java/org/sk/skMinecraft/SkMinecraft.java | 5 +++++ src/main/java/org/sk/skMinecraft/commands/AddInventory.java | 3 +++ src/main/java/org/sk/skMinecraft/commands/ChatCommand.java | 2 ++ src/main/java/org/sk/skMinecraft/commands/DeleteBossBar.java | 2 ++ src/main/java/org/sk/skMinecraft/commands/EditBossBar.java | 2 ++ src/main/java/org/sk/skMinecraft/commands/EditEntity.java | 2 ++ src/main/java/org/sk/skMinecraft/commands/PostChat.java | 2 ++ .../java/org/sk/skMinecraft/commands/SetPlayerVelocity.java | 2 ++ src/main/java/org/sk/skMinecraft/commands/ShowTitle.java | 2 ++ src/main/java/org/sk/skMinecraft/commands/SpawnBossBar.java | 2 ++ src/main/java/org/sk/skMinecraft/commands/SpawnEntity.java | 2 ++ 11 files changed, 26 insertions(+) diff --git a/src/main/java/org/sk/skMinecraft/SkMinecraft.java b/src/main/java/org/sk/skMinecraft/SkMinecraft.java index 1cc4d3a..6b051c0 100644 --- a/src/main/java/org/sk/skMinecraft/SkMinecraft.java +++ b/src/main/java/org/sk/skMinecraft/SkMinecraft.java @@ -51,6 +51,10 @@ public static String joinWithSeperator(Object... args) { return result; } + public static String getSuccessMessage(){ + return joinWithSeperator(seperator + "success" + seperator); + } + public static StringCommand splitCommand(String command) { String[] parts = command.split(SkMinecraft.seperator); return new StringCommand(parts[0], Arrays.copyOfRange(parts, 1, parts.length)); @@ -144,6 +148,7 @@ private void handleClient(Socket client) { if (!commandObject.isValid()) { System.out.println("Invalid"); + writer.println("Received command is invalid: " + command); continue; } diff --git a/src/main/java/org/sk/skMinecraft/commands/AddInventory.java b/src/main/java/org/sk/skMinecraft/commands/AddInventory.java index 21619ac..6a22ebd 100644 --- a/src/main/java/org/sk/skMinecraft/commands/AddInventory.java +++ b/src/main/java/org/sk/skMinecraft/commands/AddInventory.java @@ -7,6 +7,7 @@ import org.bukkit.inventory.ItemStack; import org.bukkit.inventory.meta.ItemMeta; import org.sk.skMinecraft.SkMinecraft.StringCommand; +import org.sk.skMinecraft.SkMinecraft; import org.sk.skMinecraft.commands.ArgumentParser.ParseResult; @@ -80,5 +81,7 @@ public void apply() { inv.addItem(stack); } }); + this.writer.println(SkMinecraft.getSuccessMessage()); + } } diff --git a/src/main/java/org/sk/skMinecraft/commands/ChatCommand.java b/src/main/java/org/sk/skMinecraft/commands/ChatCommand.java index cc0a843..47f48ed 100644 --- a/src/main/java/org/sk/skMinecraft/commands/ChatCommand.java +++ b/src/main/java/org/sk/skMinecraft/commands/ChatCommand.java @@ -4,6 +4,7 @@ import java.util.stream.Collectors; import org.bukkit.Bukkit; +import org.sk.skMinecraft.SkMinecraft; import org.sk.skMinecraft.SkMinecraft.StringCommand; public class ChatCommand extends Command { @@ -19,5 +20,6 @@ public void apply() { Bukkit.getScheduler().runTask(this.plugin, () -> { Bukkit.dispatchCommand(Bukkit.getConsoleSender(), this.command); }); + this.writer.println(SkMinecraft.getSuccessMessage()); } } \ No newline at end of file diff --git a/src/main/java/org/sk/skMinecraft/commands/DeleteBossBar.java b/src/main/java/org/sk/skMinecraft/commands/DeleteBossBar.java index ea8733c..f306b2e 100644 --- a/src/main/java/org/sk/skMinecraft/commands/DeleteBossBar.java +++ b/src/main/java/org/sk/skMinecraft/commands/DeleteBossBar.java @@ -3,6 +3,7 @@ import org.bukkit.Bukkit; import org.bukkit.NamespacedKey; import org.bukkit.boss.KeyedBossBar; +import org.sk.skMinecraft.SkMinecraft; import org.sk.skMinecraft.SkMinecraft.StringCommand; import org.sk.skMinecraft.commands.ArgumentParser.ParseResult; @@ -38,5 +39,6 @@ public void apply() { bossBar.removeAll(); } }); + this.writer.println(SkMinecraft.getSuccessMessage()); } } diff --git a/src/main/java/org/sk/skMinecraft/commands/EditBossBar.java b/src/main/java/org/sk/skMinecraft/commands/EditBossBar.java index 1ff87ad..13689ba 100644 --- a/src/main/java/org/sk/skMinecraft/commands/EditBossBar.java +++ b/src/main/java/org/sk/skMinecraft/commands/EditBossBar.java @@ -5,6 +5,7 @@ import org.bukkit.boss.BarColor; import org.bukkit.boss.BarStyle; import org.bukkit.boss.KeyedBossBar; +import org.sk.skMinecraft.SkMinecraft; import org.sk.skMinecraft.SkMinecraft.StringCommand; import org.sk.skMinecraft.commands.ArgumentParser.ParseResult; @@ -88,5 +89,6 @@ public void apply() { } }); + this.writer.println(SkMinecraft.getSuccessMessage()); } } diff --git a/src/main/java/org/sk/skMinecraft/commands/EditEntity.java b/src/main/java/org/sk/skMinecraft/commands/EditEntity.java index 0a0f332..b875276 100644 --- a/src/main/java/org/sk/skMinecraft/commands/EditEntity.java +++ b/src/main/java/org/sk/skMinecraft/commands/EditEntity.java @@ -5,6 +5,7 @@ import org.bukkit.World; import org.bukkit.entity.Entity; import org.bukkit.entity.LivingEntity; +import org.sk.skMinecraft.SkMinecraft; import org.sk.skMinecraft.SkMinecraft.StringCommand; import org.sk.skMinecraft.commands.ArgumentParser.ParseResult; import org.sk.skMinecraft.data.Position; @@ -107,5 +108,6 @@ public void apply() { ent.setCustomName(this.name); } }); + this.writer.println(SkMinecraft.getSuccessMessage()); } } diff --git a/src/main/java/org/sk/skMinecraft/commands/PostChat.java b/src/main/java/org/sk/skMinecraft/commands/PostChat.java index ea46e3d..abdccd7 100644 --- a/src/main/java/org/sk/skMinecraft/commands/PostChat.java +++ b/src/main/java/org/sk/skMinecraft/commands/PostChat.java @@ -4,6 +4,7 @@ import java.util.stream.Collectors; import org.bukkit.Bukkit; +import org.sk.skMinecraft.SkMinecraft; import org.sk.skMinecraft.SkMinecraft.StringCommand; public class PostChat extends Command { @@ -17,5 +18,6 @@ public PostChat(StringCommand command) { @Override public void apply() { Bukkit.broadcastMessage(this.message); + this.writer.println(SkMinecraft.getSuccessMessage()); } } diff --git a/src/main/java/org/sk/skMinecraft/commands/SetPlayerVelocity.java b/src/main/java/org/sk/skMinecraft/commands/SetPlayerVelocity.java index 21f9022..bdd49e3 100644 --- a/src/main/java/org/sk/skMinecraft/commands/SetPlayerVelocity.java +++ b/src/main/java/org/sk/skMinecraft/commands/SetPlayerVelocity.java @@ -3,6 +3,7 @@ import org.bukkit.Bukkit; import org.bukkit.entity.Player; import org.bukkit.util.Vector; +import org.sk.skMinecraft.SkMinecraft; import org.sk.skMinecraft.SkMinecraft.StringCommand; import org.sk.skMinecraft.commands.ArgumentParser.ParseResult; @@ -64,5 +65,6 @@ public void apply() { case LOOKING -> target.setVelocity(target.getLocation().getDirection().normalize().multiply(this.strength)); } }); + this.writer.println(SkMinecraft.getSuccessMessage()); } } diff --git a/src/main/java/org/sk/skMinecraft/commands/ShowTitle.java b/src/main/java/org/sk/skMinecraft/commands/ShowTitle.java index 453f2b1..6228602 100644 --- a/src/main/java/org/sk/skMinecraft/commands/ShowTitle.java +++ b/src/main/java/org/sk/skMinecraft/commands/ShowTitle.java @@ -2,6 +2,7 @@ import org.bukkit.Bukkit; import org.bukkit.entity.Player; +import org.sk.skMinecraft.SkMinecraft; import org.sk.skMinecraft.SkMinecraft.StringCommand; import org.sk.skMinecraft.commands.ArgumentParser.ParseResult; @@ -54,6 +55,7 @@ public void apply() { players[this.player].sendTitle(this.title, this.subtitle, this.fadeIn, this.stay, this.fadeOut); } + this.writer.println(SkMinecraft.getSuccessMessage()); } diff --git a/src/main/java/org/sk/skMinecraft/commands/SpawnBossBar.java b/src/main/java/org/sk/skMinecraft/commands/SpawnBossBar.java index a1dd93c..a085877 100644 --- a/src/main/java/org/sk/skMinecraft/commands/SpawnBossBar.java +++ b/src/main/java/org/sk/skMinecraft/commands/SpawnBossBar.java @@ -6,6 +6,7 @@ import org.bukkit.boss.BarStyle; import org.bukkit.boss.KeyedBossBar; import org.bukkit.entity.Player; +import org.sk.skMinecraft.SkMinecraft; import org.sk.skMinecraft.SkMinecraft.StringCommand; import org.sk.skMinecraft.commands.ArgumentParser.ParseResult; @@ -54,5 +55,6 @@ public void apply() { bossBar.setVisible(true); }); + this.writer.println(SkMinecraft.getSuccessMessage()); } } diff --git a/src/main/java/org/sk/skMinecraft/commands/SpawnEntity.java b/src/main/java/org/sk/skMinecraft/commands/SpawnEntity.java index 7c00165..a803a36 100644 --- a/src/main/java/org/sk/skMinecraft/commands/SpawnEntity.java +++ b/src/main/java/org/sk/skMinecraft/commands/SpawnEntity.java @@ -6,6 +6,7 @@ import org.bukkit.entity.Entity; import org.bukkit.entity.EntityType; import org.sk.skMinecraft.CentralResourceHandler; +import org.sk.skMinecraft.SkMinecraft; import org.sk.skMinecraft.SkMinecraft.StringCommand; import org.sk.skMinecraft.commands.ArgumentParser.ParseResult; @@ -55,5 +56,6 @@ public void apply() { String output = GetEntity.informationString(uuid, entity); writer.println(output); }); + this.writer.println(SkMinecraft.getSuccessMessage()); } } From f2c00eaef4485c9d7344af10c9dd90fd185cb0d1 Mon Sep 17 00:00:00 2001 From: nonchris Date: Sat, 22 Aug 2026 01:00:56 +0200 Subject: [PATCH 2/4] add missing return message --- src/main/java/org/sk/skMinecraft/commands/SetPlayerStat.java | 2 ++ 1 file changed, 2 insertions(+) diff --git a/src/main/java/org/sk/skMinecraft/commands/SetPlayerStat.java b/src/main/java/org/sk/skMinecraft/commands/SetPlayerStat.java index f205623..3c55268 100644 --- a/src/main/java/org/sk/skMinecraft/commands/SetPlayerStat.java +++ b/src/main/java/org/sk/skMinecraft/commands/SetPlayerStat.java @@ -4,6 +4,7 @@ import org.bukkit.attribute.Attribute; import org.bukkit.attribute.AttributeInstance; import org.bukkit.entity.Player; +import org.sk.skMinecraft.SkMinecraft; import org.sk.skMinecraft.SkMinecraft.StringCommand; import org.sk.skMinecraft.commands.ArgumentParser.ParseResult; @@ -69,5 +70,6 @@ public void apply() { case XP_PROGRESS -> target.setExp((float)this.value); } }); + this.writer.println(SkMinecraft.getSuccessMessage()); } } From 99c3f23effad49963a8c92de3a0f3d2068c87bec Mon Sep 17 00:00:00 2001 From: Adrian Oeyen Date: Sat, 22 Aug 2026 01:24:05 +0200 Subject: [PATCH 3/4] add prototype for how sync tasks + command return values could work --- .../java/org/sk/skMinecraft/SkMinecraft.java | 29 +++++++++++++++++++ .../sk/skMinecraft/commands/SetPlayerPos.java | 11 +++++-- 2 files changed, 37 insertions(+), 3 deletions(-) diff --git a/src/main/java/org/sk/skMinecraft/SkMinecraft.java b/src/main/java/org/sk/skMinecraft/SkMinecraft.java index 6b051c0..b0c3c77 100644 --- a/src/main/java/org/sk/skMinecraft/SkMinecraft.java +++ b/src/main/java/org/sk/skMinecraft/SkMinecraft.java @@ -17,6 +17,9 @@ import java.net.Socket; import java.time.LocalDateTime; import java.util.Arrays; +import java.util.concurrent.CompletableFuture; +import java.util.function.Function; +import java.util.function.Supplier; public final class SkMinecraft extends JavaPlugin implements Listener { @@ -55,11 +58,32 @@ public static String getSuccessMessage(){ return joinWithSeperator(seperator + "success" + seperator); } + public static String getFailMessage(){ + return joinWithSeperator(seperator + "failed" + seperator); + } + public static StringCommand splitCommand(String command) { String[] parts = command.split(SkMinecraft.seperator); return new StringCommand(parts[0], Arrays.copyOfRange(parts, 1, parts.length)); } + public static String runBukkitTaskSync(JavaPlugin plugin, Supplier task) { + CompletableFuture future = new CompletableFuture<>(); + + Bukkit.getScheduler().runTask(plugin, () -> { + String result = ""; + try { + result = task.get(); + } catch(Exception e) { + result = ""; + } + + future.complete(result); + }); + + return future.join(); + } + public static int playerIndexFromName(String name) { Player[] players = Bukkit.getOnlinePlayers().toArray(new Player[0]); @@ -155,6 +179,11 @@ private void handleClient(Socket client) { commandObject.setParameters(writer, this); commandObject.apply(); + + // This output would be provided by .apply(); + String output = ""; + + writer.println(output); } client.close(); diff --git a/src/main/java/org/sk/skMinecraft/commands/SetPlayerPos.java b/src/main/java/org/sk/skMinecraft/commands/SetPlayerPos.java index f363472..987c494 100644 --- a/src/main/java/org/sk/skMinecraft/commands/SetPlayerPos.java +++ b/src/main/java/org/sk/skMinecraft/commands/SetPlayerPos.java @@ -4,6 +4,7 @@ import org.bukkit.Location; import org.bukkit.World; import org.bukkit.entity.Player; +import org.sk.skMinecraft.SkMinecraft; import org.sk.skMinecraft.SkMinecraft.StringCommand; import org.sk.skMinecraft.commands.ArgumentParser.ParseResult; @@ -52,11 +53,11 @@ public SetPlayerPos(StringCommand command ){ @Override public void apply() { - Bukkit.getScheduler().runTask(plugin, () -> { + String result = SkMinecraft.runBukkitTaskSync(plugin, () -> { Player[] players = Bukkit.getOnlinePlayers().toArray(new Player[0]); if(playerIndex < 0 || playerIndex >= players.length) { - writer.println("error invalid_index"); - return; + // writer.println("error invalid_index"); + return SkMinecraft.getFailMessage(); } Player player = players[playerIndex]; @@ -67,7 +68,11 @@ public void apply() { loc.setYaw(this.rot); } player.teleport(loc); + + return SkMinecraft.getSuccessMessage(); }); + // Hier könnte man das dann returnen + // return result } } From 1ddd15a2458dc837f520238949a257216e09afe9 Mon Sep 17 00:00:00 2001 From: Adrian Oeyen Date: Sat, 22 Aug 2026 01:25:27 +0200 Subject: [PATCH 4/4] update result to fail message in case of exception --- src/main/java/org/sk/skMinecraft/SkMinecraft.java | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/main/java/org/sk/skMinecraft/SkMinecraft.java b/src/main/java/org/sk/skMinecraft/SkMinecraft.java index b0c3c77..7768020 100644 --- a/src/main/java/org/sk/skMinecraft/SkMinecraft.java +++ b/src/main/java/org/sk/skMinecraft/SkMinecraft.java @@ -71,11 +71,11 @@ public static String runBukkitTaskSync(JavaPlugin plugin, Supplier task) CompletableFuture future = new CompletableFuture<>(); Bukkit.getScheduler().runTask(plugin, () -> { - String result = ""; + String result; try { result = task.get(); } catch(Exception e) { - result = ""; + result = SkMinecraft.getFailMessage(); } future.complete(result);