diff --git a/MinecraftClient/Commands/Useblock.cs b/MinecraftClient/Commands/Useblock.cs index ca56e6d8..bf72dd5b 100644 --- a/MinecraftClient/Commands/Useblock.cs +++ b/MinecraftClient/Commands/Useblock.cs @@ -12,22 +12,28 @@ namespace MinecraftClient.Commands public override string CmdUsage { get { return "useblock "; } } public override string CmdDesc { get { return "cmd.useblock.desc"; } } - public override string Run(McClient handler, string command, Dictionary localVars) + public override string Run(McClient handler, string command, Dictionary? localVars) { - if (!handler.GetTerrainEnabled()) return Translations.Get("extra.terrainandmovement_required"); - if (hasArg(command)) + if (!handler.GetTerrainEnabled()) + return Translations.Get("extra.terrainandmovement_required"); + else if (hasArg(command)) { string[] args = getArgs(command); if (args.Length >= 3) { - int x = Convert.ToInt32(args[0]); - int y = Convert.ToInt32(args[1]); - int z = Convert.ToInt32(args[2]); - handler.PlaceBlock(new Location(x, y, z), Direction.Down); + Location current = handler.GetCurrentLocation(); + double x = args[0].StartsWith('~') ? current.X + (args[0].Length > 1 ? double.Parse(args[0][1..]) : 0) : double.Parse(args[0]); + double y = args[1].StartsWith('~') ? current.Y + (args[1].Length > 1 ? double.Parse(args[1][1..]) : 0) : double.Parse(args[1]); + double z = args[2].StartsWith('~') ? current.Z + (args[2].Length > 1 ? double.Parse(args[2][1..]) : 0) : double.Parse(args[2]); + Location block = new Location(x, y, z).ToFloor(), blockCenter = block.ToCenter(); + bool res = handler.PlaceBlock(block, Direction.Down); + return Translations.Get("cmd.useblock.use", blockCenter.X, blockCenter.Y, blockCenter.Z, res ? "succeeded" : "failed"); } - else { return GetCmdDescTranslated(); } + else + return GetCmdDescTranslated(); } - return GetCmdDescTranslated(); + else + return GetCmdDescTranslated(); } } } diff --git a/MinecraftClient/Resources/lang/en.ini b/MinecraftClient/Resources/lang/en.ini index e301c6b5..cddecfca 100644 --- a/MinecraftClient/Resources/lang/en.ini +++ b/MinecraftClient/Resources/lang/en.ini @@ -382,6 +382,7 @@ cmd.tps.current=Current tps # Useblock cmd.useblock.desc=Place a block or open chest +cmd.useblock.use=Useblock at ({0:0.0}, {1:0.0}, {2:0.0}) {3} # Useitem cmd.useitem.desc=Use (left click) an item on the hand