From 1d6fef0eeee4c1b5fc21bf2b592c5ae087f52865 Mon Sep 17 00:00:00 2001 From: Sen Date: Mon, 23 Jun 2025 11:58:16 +0200 Subject: [PATCH] more block data fixes --- .../src/main/java/common/dimension/Dimension.java | 1 - common/src/main/java/common/item/ItemStack.java | 5 ----- common/src/main/java/common/world/State.java | 12 ++---------- .../main/java/server/command/ArgumentParser.java | 2 +- .../java/server/command/ArgumentSplitter.java | 4 ++-- .../java/server/command/CompletingParser.java | 2 +- .../main/java/server/command/DimensionParser.java | 2 +- .../main/java/server/command/DoubleParser.java | 4 ++-- .../java/server/command/EntityListParser.java | 4 ++-- .../main/java/server/command/EntityParser.java | 4 ++-- .../src/main/java/server/command/IntParser.java | 4 ++-- .../server/command/PlayerEntityListParser.java | 4 ++-- .../java/server/command/PlayerListParser.java | 4 ++-- .../main/java/server/command/PlayerParser.java | 2 +- .../main/java/server/command/StringCompleter.java | 2 +- .../main/java/server/command/StringParser.java | 4 ++-- .../src/main/java/server/command/UserParser.java | 2 +- .../src/main/java/server/command/WorldParser.java | 4 ++-- .../server/command/commands/CommandBlock.java | 15 +++++++++++++-- .../java/server/command/commands/CommandHelp.java | 2 +- .../java/server/command/commands/CommandItem.java | 5 +++-- .../server/command/commands/CommandOfflinetp.java | 2 +- .../java/server/command/commands/CommandSv.java | 2 +- .../java/server/command/commands/CommandWarp.java | 2 +- 24 files changed, 46 insertions(+), 48 deletions(-) diff --git a/common/src/main/java/common/dimension/Dimension.java b/common/src/main/java/common/dimension/Dimension.java index 0f35f445..4d6fb4a1 100755 --- a/common/src/main/java/common/dimension/Dimension.java +++ b/common/src/main/java/common/dimension/Dimension.java @@ -4,7 +4,6 @@ import java.util.List; import java.util.Map; import common.biome.Biome; import common.biome.IBiome; -import common.block.Block; import common.block.foliage.LeavesType; import common.collect.Lists; import common.collect.Maps; diff --git a/common/src/main/java/common/item/ItemStack.java b/common/src/main/java/common/item/ItemStack.java index 98c010b5..8a400a9e 100755 --- a/common/src/main/java/common/item/ItemStack.java +++ b/common/src/main/java/common/item/ItemStack.java @@ -1,7 +1,6 @@ package common.item; import java.text.DecimalFormat; -import java.util.Collection; import java.util.List; import java.util.Map; import java.util.Map.Entry; @@ -74,10 +73,6 @@ public final class ItemStack Item item = ItemRegistry.REGISTRY.byNameExact(name); return item == null ? def : new ItemStack(item); } - - public static Collection getKeys() { - return ItemRegistry.REGISTRY.getKeys(); - } private ItemStack() { diff --git a/common/src/main/java/common/world/State.java b/common/src/main/java/common/world/State.java index fc5e427d..953b86d6 100755 --- a/common/src/main/java/common/world/State.java +++ b/common/src/main/java/common/world/State.java @@ -85,16 +85,8 @@ public class State { if(state != null) return state; int idx = name.indexOf(","); - if(idx >= 0) { - Block block = BlockRegistry.REGISTRY.byNameExact(name.substring(0, idx)); - if(block != null) - return block.getState(); - } - return def; - } - - public static Collection getKeys() { - return NAME_MAP.keySet(); + Block block = BlockRegistry.REGISTRY.byNameExact(idx >= 0 ? name.substring(0, idx) : name); + return block != null ? block.getState() : def; } public State(Block block, ImmutableMap properties) { diff --git a/server/src/main/java/server/command/ArgumentParser.java b/server/src/main/java/server/command/ArgumentParser.java index cf3b4b90..d8c66086 100644 --- a/server/src/main/java/server/command/ArgumentParser.java +++ b/server/src/main/java/server/command/ArgumentParser.java @@ -87,7 +87,7 @@ public abstract class ArgumentParser { public abstract Object parse(CommandEnvironment env, String input); public abstract Object getDefault(CommandEnvironment env); - public abstract Collection getCompletions(CommandEnvironment env); + public abstract Collection getCompletions(CommandEnvironment env, String last); public abstract Class getTypeClass(boolean required); public final String getName() { diff --git a/server/src/main/java/server/command/ArgumentSplitter.java b/server/src/main/java/server/command/ArgumentSplitter.java index b6aaa591..8d4c8513 100644 --- a/server/src/main/java/server/command/ArgumentSplitter.java +++ b/server/src/main/java/server/command/ArgumentSplitter.java @@ -141,7 +141,7 @@ public record ArgumentSplitter(Map arguments, String command, if(param.parsers().isEmpty()) // np return null; Iterable custom = exec.getCustomCompletions(env, env.getExecutor(), parsed, param.name(), param.parsers().get(0).getName(), last); - return custom != null ? custom : param.parsers().get(0).getCompletions(env); + return custom != null ? custom : param.parsers().get(0).getCompletions(env, last); } else { return null; @@ -179,7 +179,7 @@ public record ArgumentSplitter(Map arguments, String command, for(int n = pos ? 0 : 1; n < nargs + (pos ? 0 : 1); n++) { if(z + n == argv.length - 1) { Iterable custom = exec.getCustomCompletions(env, env.getExecutor(), parsed, param.name(), param.parsers().get(apos).getName(), last); - return custom != null ? custom : param.parsers().get(apos).getCompletions(env); + return custom != null ? custom : param.parsers().get(apos).getCompletions(env, last); } String par = argv[z + n]; if(parse && (par.startsWith("--") || (par.startsWith("-") && par.length() == 2 && (par.charAt(1) < '0' || par.charAt(1) > '9')))) diff --git a/server/src/main/java/server/command/CompletingParser.java b/server/src/main/java/server/command/CompletingParser.java index 154f7a49..1385aa09 100644 --- a/server/src/main/java/server/command/CompletingParser.java +++ b/server/src/main/java/server/command/CompletingParser.java @@ -17,7 +17,7 @@ public abstract class CompletingParser extends ArgumentParser { } } - public Collection getCompletions(CommandEnvironment env) { + public Collection getCompletions(CommandEnvironment env, String last) { return this.defCompletions; } } diff --git a/server/src/main/java/server/command/DimensionParser.java b/server/src/main/java/server/command/DimensionParser.java index f941da9f..c3e20536 100644 --- a/server/src/main/java/server/command/DimensionParser.java +++ b/server/src/main/java/server/command/DimensionParser.java @@ -39,7 +39,7 @@ public class DimensionParser extends CompletingParser { // throw new ScriptException("Unbekannte Dimension '%s'"); } - public Collection getCompletions(CommandEnvironment env) { + public Collection getCompletions(CommandEnvironment env, String last) { return UniverseRegistry.getWorldNames(); } diff --git a/server/src/main/java/server/command/DoubleParser.java b/server/src/main/java/server/command/DoubleParser.java index 93a5a5cb..2aa28a26 100644 --- a/server/src/main/java/server/command/DoubleParser.java +++ b/server/src/main/java/server/command/DoubleParser.java @@ -86,7 +86,7 @@ public class DoubleParser extends DefaultingParser { return this.hasDefault() || required ? double.class : Double.class; } - public Collection getCompletions(CommandEnvironment env) { + public Collection getCompletions(CommandEnvironment env, String last) { BlockPos pos = this.defType == null ? null : env.getExecutor().getPointedPosition(); if(this.defType != null) switch(this.defType) { @@ -97,6 +97,6 @@ public class DoubleParser extends DefaultingParser { case Z: return pos == null ? null : Lists.newArrayList("" + pos.getZ()); } - return super.getCompletions(env); + return super.getCompletions(env, last); } } diff --git a/server/src/main/java/server/command/EntityListParser.java b/server/src/main/java/server/command/EntityListParser.java index 12388565..0ab5a735 100644 --- a/server/src/main/java/server/command/EntityListParser.java +++ b/server/src/main/java/server/command/EntityListParser.java @@ -123,8 +123,8 @@ public class EntityListParser extends EntityParser { return entity == null ? null : Lists.newArrayList(entity); } - public Collection getCompletions(CommandEnvironment env) { - Collection comp = super.getCompletions(env); + public Collection getCompletions(CommandEnvironment env, String last) { + Collection comp = super.getCompletions(env, last); if(this.policy != UserPolicy.NO_PLAYERS) comp.add("*"); for(Class clazz : EntityRegistry.getAllClasses()) { diff --git a/server/src/main/java/server/command/EntityParser.java b/server/src/main/java/server/command/EntityParser.java index 193c640f..34c26431 100644 --- a/server/src/main/java/server/command/EntityParser.java +++ b/server/src/main/java/server/command/EntityParser.java @@ -51,10 +51,10 @@ public class EntityParser extends PlayerEntityParser { return this.useSender && (this.livingOnly ? (env.getExecutor() instanceof EntityLiving) : (env.getExecutor() instanceof Entity)) ? env.getExecutor() : super.getDefault(env); } - public Collection getCompletions(CommandEnvironment env) { + public Collection getCompletions(CommandEnvironment env, String last) { Entity target = env.getExecutor().getPointedEntity(); List comp = target == null || (this.livingOnly && !(target instanceof EntityLiving)) || (target instanceof EntityNPC && ((EntityNPC)target).isPlayer() && !this.policy.applies(env, env.getExecutor(), (Player)((EntityNPC)target).connection)) ? Lists.newArrayList() : Lists.newArrayList("#" + target.getId()); - comp.addAll(super.getCompletions(env)); + comp.addAll(super.getCompletions(env, last)); return comp; } diff --git a/server/src/main/java/server/command/IntParser.java b/server/src/main/java/server/command/IntParser.java index 6db6b7ea..bbccec64 100644 --- a/server/src/main/java/server/command/IntParser.java +++ b/server/src/main/java/server/command/IntParser.java @@ -81,7 +81,7 @@ public class IntParser extends DefaultingParser { return this.hasDefault() || required ? int.class : Integer.class; } - public Collection getCompletions(CommandEnvironment env) { + public Collection getCompletions(CommandEnvironment env, String last) { BlockPos pos = this.defType == null ? null : env.getExecutor().getPointedPosition(); if(this.defType != null) switch(this.defType) { @@ -92,6 +92,6 @@ public class IntParser extends DefaultingParser { case Z: return pos == null ? null : Lists.newArrayList("" + pos.getZ()); } - return super.getCompletions(env); + return super.getCompletions(env, last); } } diff --git a/server/src/main/java/server/command/PlayerEntityListParser.java b/server/src/main/java/server/command/PlayerEntityListParser.java index cf0c39d0..c1703cd5 100644 --- a/server/src/main/java/server/command/PlayerEntityListParser.java +++ b/server/src/main/java/server/command/PlayerEntityListParser.java @@ -44,8 +44,8 @@ public class PlayerEntityListParser extends PlayerEntityParser { return entity == null ? null : Lists.newArrayList(entity); } - public Collection getCompletions(CommandEnvironment env) { - Collection comp = Lists.newArrayList(super.getCompletions(env)); + public Collection getCompletions(CommandEnvironment env, String last) { + Collection comp = Lists.newArrayList(super.getCompletions(env, last)); comp.add("*"); return comp; } diff --git a/server/src/main/java/server/command/PlayerListParser.java b/server/src/main/java/server/command/PlayerListParser.java index 1b8d6be1..06a49c53 100644 --- a/server/src/main/java/server/command/PlayerListParser.java +++ b/server/src/main/java/server/command/PlayerListParser.java @@ -37,8 +37,8 @@ public class PlayerListParser extends PlayerParser { return net == null ? null : Lists.newArrayList(net); } - public Collection getCompletions(CommandEnvironment env) { - Collection comp = Lists.newArrayList(super.getCompletions(env)); + public Collection getCompletions(CommandEnvironment env, String last) { + Collection comp = Lists.newArrayList(super.getCompletions(env, last)); comp.add("*"); return comp; } diff --git a/server/src/main/java/server/command/PlayerParser.java b/server/src/main/java/server/command/PlayerParser.java index f01f9b69..5a91c97d 100644 --- a/server/src/main/java/server/command/PlayerParser.java +++ b/server/src/main/java/server/command/PlayerParser.java @@ -28,7 +28,7 @@ public class PlayerParser extends CompletingParser { return this.useSender && env.getExecutor().isPlayer() && this.policy.applies(env, env.getExecutor(), (Player)env.getExecutor()) ? (Player)env.getExecutor() : null; } - public Collection getCompletions(CommandEnvironment env) { + public Collection getCompletions(CommandEnvironment env, String last) { return Filter.filter(env.getServer().getAllPlayerNames(), user -> this.policy.applies(env, env.getExecutor(), env.getServer().getPlayer(user))); // add Lists.newArrayList if modifying! } diff --git a/server/src/main/java/server/command/StringCompleter.java b/server/src/main/java/server/command/StringCompleter.java index 71cf5cef..14b247be 100644 --- a/server/src/main/java/server/command/StringCompleter.java +++ b/server/src/main/java/server/command/StringCompleter.java @@ -3,5 +3,5 @@ package server.command; import java.util.Collection; public interface StringCompleter { - Collection complete(CommandEnvironment env); + Collection complete(CommandEnvironment env, String last); } diff --git a/server/src/main/java/server/command/StringParser.java b/server/src/main/java/server/command/StringParser.java index 5c2e35d0..b722614f 100644 --- a/server/src/main/java/server/command/StringParser.java +++ b/server/src/main/java/server/command/StringParser.java @@ -57,7 +57,7 @@ public class StringParser extends DefaultingParser { return String.class; } - public Collection getCompletions(CommandEnvironment env) { - return this.completer != null ? this.completer.complete(env) : super.getCompletions(env); + public Collection getCompletions(CommandEnvironment env, String last) { + return this.completer != null ? this.completer.complete(env, last) : super.getCompletions(env, last); } } diff --git a/server/src/main/java/server/command/UserParser.java b/server/src/main/java/server/command/UserParser.java index da291e98..eb04ef26 100644 --- a/server/src/main/java/server/command/UserParser.java +++ b/server/src/main/java/server/command/UserParser.java @@ -29,7 +29,7 @@ public class UserParser extends CompletingParser { return this.useSender && env.getExecutor().isPlayer() && this.policy.applies(env, env.getExecutor(), (Player)env.getExecutor()) ? (Player)env.getExecutor() : null; } - public Collection getCompletions(CommandEnvironment env) { + public Collection getCompletions(CommandEnvironment env, String last) { return Filter.filter(env.getServer().getAllUserNames(), user -> this.policy.applies(env, env.getExecutor(), env.getServer().getUser(user))); // add Lists.newArrayList if modifying! } diff --git a/server/src/main/java/server/command/WorldParser.java b/server/src/main/java/server/command/WorldParser.java index 520e2a04..b397f73f 100644 --- a/server/src/main/java/server/command/WorldParser.java +++ b/server/src/main/java/server/command/WorldParser.java @@ -33,7 +33,7 @@ public class WorldParser extends DimensionParser { // return world; } - public Collection getCompletions(CommandEnvironment env) { + public Collection getCompletions(CommandEnvironment env, String last) { if(this.loadedOnly) { List loaded = Lists.newArrayList(); for(WorldServer world : env.getServer().getWorlds()) { @@ -41,7 +41,7 @@ public class WorldParser extends DimensionParser { } return loaded; } - return super.getCompletions(env); + return super.getCompletions(env, last); } public Class getTypeClass(boolean required) { diff --git a/server/src/main/java/server/command/commands/CommandBlock.java b/server/src/main/java/server/command/commands/CommandBlock.java index 7275df95..ea2553c5 100644 --- a/server/src/main/java/server/command/commands/CommandBlock.java +++ b/server/src/main/java/server/command/commands/CommandBlock.java @@ -1,6 +1,11 @@ package server.command.commands; import java.util.Collection; + +import common.block.Block; +import common.collect.Iterables; +import common.collect.Lists; +import common.init.BlockRegistry; import common.tags.TagObject; import common.tileentity.TileEntity; import common.util.BlockPos; @@ -17,8 +22,14 @@ public class CommandBlock extends Command { super("block"); this.addString("block", false, new StringCompleter() { - public Collection complete(CommandEnvironment env) { - return State.getKeys(); + public Collection complete(CommandEnvironment env, String last) { + int idx = last.indexOf(','); + if(idx >= 0) { + Block block = BlockRegistry.REGISTRY.byNameExact(last.substring(0, idx)); + if(block != null) + return Lists.newArrayList(Iterables.transform(block.getValidStates(), state -> state.getId())); + } + return BlockRegistry.REGISTRY.getKeys(); } }); this.addBlockPos("position", true); diff --git a/server/src/main/java/server/command/commands/CommandHelp.java b/server/src/main/java/server/command/commands/CommandHelp.java index 8f21e7fa..62504192 100644 --- a/server/src/main/java/server/command/commands/CommandHelp.java +++ b/server/src/main/java/server/command/commands/CommandHelp.java @@ -22,7 +22,7 @@ public class CommandHelp extends Command { this.setParamsOptional(); this.addString("command", false, new StringCompleter() { - public Collection complete(CommandEnvironment env) { + public Collection complete(CommandEnvironment env, String last) { return env.getExecutables().keySet(); } }); diff --git a/server/src/main/java/server/command/commands/CommandItem.java b/server/src/main/java/server/command/commands/CommandItem.java index fe7ce46b..0ec54ea2 100644 --- a/server/src/main/java/server/command/commands/CommandItem.java +++ b/server/src/main/java/server/command/commands/CommandItem.java @@ -4,6 +4,7 @@ import java.util.Collection; import java.util.List; import common.entity.npc.EntityNPC; +import common.init.ItemRegistry; import common.item.ItemStack; import common.tags.TagObject; import server.command.Command; @@ -18,8 +19,8 @@ public class CommandItem extends Command { super("item"); this.addString("item", false, new StringCompleter() { - public Collection complete(CommandEnvironment env) { - return ItemStack.getKeys(); + public Collection complete(CommandEnvironment env, String last) { + return ItemRegistry.REGISTRY.getKeys(); } }); this.setParamsOptional(); diff --git a/server/src/main/java/server/command/commands/CommandOfflinetp.java b/server/src/main/java/server/command/commands/CommandOfflinetp.java index 55a3dbab..7afdb7e0 100644 --- a/server/src/main/java/server/command/commands/CommandOfflinetp.java +++ b/server/src/main/java/server/command/commands/CommandOfflinetp.java @@ -19,7 +19,7 @@ public class CommandOfflinetp extends Command { super("offlinetp"); this.addString("user", false, new StringCompleter() { - public Collection complete(CommandEnvironment env) { + public Collection complete(CommandEnvironment env, String last) { return env.getServer().getPlayerFilenames(); } }); diff --git a/server/src/main/java/server/command/commands/CommandSv.java b/server/src/main/java/server/command/commands/CommandSv.java index a6acbbf7..d654e7de 100644 --- a/server/src/main/java/server/command/commands/CommandSv.java +++ b/server/src/main/java/server/command/commands/CommandSv.java @@ -20,7 +20,7 @@ public class CommandSv extends Command { this.setParamsOptional(); this.addString("variable", false, new StringCompleter() { - public Collection complete(CommandEnvironment env) { + public Collection complete(CommandEnvironment env, String last) { return env.getServer().getVariables().keySet(); } }); diff --git a/server/src/main/java/server/command/commands/CommandWarp.java b/server/src/main/java/server/command/commands/CommandWarp.java index 85bc4479..11140492 100644 --- a/server/src/main/java/server/command/commands/CommandWarp.java +++ b/server/src/main/java/server/command/commands/CommandWarp.java @@ -18,7 +18,7 @@ public class CommandWarp extends Command { super("warp"); this.addString("warp", true, new StringCompleter() { - public Collection complete(CommandEnvironment env) { + public Collection complete(CommandEnvironment env, String last) { // List warps = Lists.newArrayList("spawn"); // warps.addAll(env.getServer().getWarps().keySet()); return env.getServer().getWarps().keySet();