more block data fixes

This commit is contained in:
Sen 2025-06-23 11:58:16 +02:00
parent ea76cecba3
commit 1d6fef0eee
Signed by: sen
GPG key ID: 3AC50A6F47D1B722
24 changed files with 46 additions and 48 deletions

View file

@ -4,7 +4,6 @@ import java.util.List;
import java.util.Map; import java.util.Map;
import common.biome.Biome; import common.biome.Biome;
import common.biome.IBiome; import common.biome.IBiome;
import common.block.Block;
import common.block.foliage.LeavesType; import common.block.foliage.LeavesType;
import common.collect.Lists; import common.collect.Lists;
import common.collect.Maps; import common.collect.Maps;

View file

@ -1,7 +1,6 @@
package common.item; package common.item;
import java.text.DecimalFormat; import java.text.DecimalFormat;
import java.util.Collection;
import java.util.List; import java.util.List;
import java.util.Map; import java.util.Map;
import java.util.Map.Entry; import java.util.Map.Entry;
@ -74,10 +73,6 @@ public final class ItemStack
Item item = ItemRegistry.REGISTRY.byNameExact(name); Item item = ItemRegistry.REGISTRY.byNameExact(name);
return item == null ? def : new ItemStack(item); return item == null ? def : new ItemStack(item);
} }
public static Collection<String> getKeys() {
return ItemRegistry.REGISTRY.getKeys();
}
private ItemStack() private ItemStack()
{ {

View file

@ -85,16 +85,8 @@ public class State {
if(state != null) if(state != null)
return state; return state;
int idx = name.indexOf(","); int idx = name.indexOf(",");
if(idx >= 0) { Block block = BlockRegistry.REGISTRY.byNameExact(idx >= 0 ? name.substring(0, idx) : name);
Block block = BlockRegistry.REGISTRY.byNameExact(name.substring(0, idx)); return block != null ? block.getState() : def;
if(block != null)
return block.getState();
}
return def;
}
public static Collection<String> getKeys() {
return NAME_MAP.keySet();
} }
public State(Block block, ImmutableMap<Property, Comparable> properties) { public State(Block block, ImmutableMap<Property, Comparable> properties) {

View file

@ -87,7 +87,7 @@ public abstract class ArgumentParser {
public abstract Object parse(CommandEnvironment env, String input); public abstract Object parse(CommandEnvironment env, String input);
public abstract Object getDefault(CommandEnvironment env); public abstract Object getDefault(CommandEnvironment env);
public abstract Collection<String> getCompletions(CommandEnvironment env); public abstract Collection<String> getCompletions(CommandEnvironment env, String last);
public abstract Class<?> getTypeClass(boolean required); public abstract Class<?> getTypeClass(boolean required);
public final String getName() { public final String getName() {

View file

@ -141,7 +141,7 @@ public record ArgumentSplitter(Map<String, Argument> arguments, String command,
if(param.parsers().isEmpty()) // np if(param.parsers().isEmpty()) // np
return null; return null;
Iterable<String> custom = exec.getCustomCompletions(env, env.getExecutor(), parsed, param.name(), param.parsers().get(0).getName(), last); Iterable<String> 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 { else {
return null; return null;
@ -179,7 +179,7 @@ public record ArgumentSplitter(Map<String, Argument> arguments, String command,
for(int n = pos ? 0 : 1; n < nargs + (pos ? 0 : 1); n++) { for(int n = pos ? 0 : 1; n < nargs + (pos ? 0 : 1); n++) {
if(z + n == argv.length - 1) { if(z + n == argv.length - 1) {
Iterable<String> custom = exec.getCustomCompletions(env, env.getExecutor(), parsed, param.name(), param.parsers().get(apos).getName(), last); Iterable<String> 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]; String par = argv[z + n];
if(parse && (par.startsWith("--") || (par.startsWith("-") && par.length() == 2 && (par.charAt(1) < '0' || par.charAt(1) > '9')))) if(parse && (par.startsWith("--") || (par.startsWith("-") && par.length() == 2 && (par.charAt(1) < '0' || par.charAt(1) > '9'))))

View file

@ -17,7 +17,7 @@ public abstract class CompletingParser extends ArgumentParser {
} }
} }
public Collection<String> getCompletions(CommandEnvironment env) { public Collection<String> getCompletions(CommandEnvironment env, String last) {
return this.defCompletions; return this.defCompletions;
} }
} }

View file

@ -39,7 +39,7 @@ public class DimensionParser extends CompletingParser {
// throw new ScriptException("Unbekannte Dimension '%s'"); // throw new ScriptException("Unbekannte Dimension '%s'");
} }
public Collection<String> getCompletions(CommandEnvironment env) { public Collection<String> getCompletions(CommandEnvironment env, String last) {
return UniverseRegistry.getWorldNames(); return UniverseRegistry.getWorldNames();
} }

View file

@ -86,7 +86,7 @@ public class DoubleParser extends DefaultingParser {
return this.hasDefault() || required ? double.class : Double.class; return this.hasDefault() || required ? double.class : Double.class;
} }
public Collection<String> getCompletions(CommandEnvironment env) { public Collection<String> getCompletions(CommandEnvironment env, String last) {
BlockPos pos = this.defType == null ? null : env.getExecutor().getPointedPosition(); BlockPos pos = this.defType == null ? null : env.getExecutor().getPointedPosition();
if(this.defType != null) if(this.defType != null)
switch(this.defType) { switch(this.defType) {
@ -97,6 +97,6 @@ public class DoubleParser extends DefaultingParser {
case Z: case Z:
return pos == null ? null : Lists.newArrayList("" + pos.getZ()); return pos == null ? null : Lists.newArrayList("" + pos.getZ());
} }
return super.getCompletions(env); return super.getCompletions(env, last);
} }
} }

View file

@ -123,8 +123,8 @@ public class EntityListParser extends EntityParser {
return entity == null ? null : Lists.newArrayList(entity); return entity == null ? null : Lists.newArrayList(entity);
} }
public Collection<String> getCompletions(CommandEnvironment env) { public Collection<String> getCompletions(CommandEnvironment env, String last) {
Collection<String> comp = super.getCompletions(env); Collection<String> comp = super.getCompletions(env, last);
if(this.policy != UserPolicy.NO_PLAYERS) if(this.policy != UserPolicy.NO_PLAYERS)
comp.add("*"); comp.add("*");
for(Class<? extends Entity> clazz : EntityRegistry.getAllClasses()) { for(Class<? extends Entity> clazz : EntityRegistry.getAllClasses()) {

View file

@ -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); return this.useSender && (this.livingOnly ? (env.getExecutor() instanceof EntityLiving) : (env.getExecutor() instanceof Entity)) ? env.getExecutor() : super.getDefault(env);
} }
public Collection<String> getCompletions(CommandEnvironment env) { public Collection<String> getCompletions(CommandEnvironment env, String last) {
Entity target = env.getExecutor().getPointedEntity(); Entity target = env.getExecutor().getPointedEntity();
List<String> 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()); List<String> 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; return comp;
} }

View file

@ -81,7 +81,7 @@ public class IntParser extends DefaultingParser {
return this.hasDefault() || required ? int.class : Integer.class; return this.hasDefault() || required ? int.class : Integer.class;
} }
public Collection<String> getCompletions(CommandEnvironment env) { public Collection<String> getCompletions(CommandEnvironment env, String last) {
BlockPos pos = this.defType == null ? null : env.getExecutor().getPointedPosition(); BlockPos pos = this.defType == null ? null : env.getExecutor().getPointedPosition();
if(this.defType != null) if(this.defType != null)
switch(this.defType) { switch(this.defType) {
@ -92,6 +92,6 @@ public class IntParser extends DefaultingParser {
case Z: case Z:
return pos == null ? null : Lists.newArrayList("" + pos.getZ()); return pos == null ? null : Lists.newArrayList("" + pos.getZ());
} }
return super.getCompletions(env); return super.getCompletions(env, last);
} }
} }

View file

@ -44,8 +44,8 @@ public class PlayerEntityListParser extends PlayerEntityParser {
return entity == null ? null : Lists.newArrayList(entity); return entity == null ? null : Lists.newArrayList(entity);
} }
public Collection<String> getCompletions(CommandEnvironment env) { public Collection<String> getCompletions(CommandEnvironment env, String last) {
Collection<String> comp = Lists.newArrayList(super.getCompletions(env)); Collection<String> comp = Lists.newArrayList(super.getCompletions(env, last));
comp.add("*"); comp.add("*");
return comp; return comp;
} }

View file

@ -37,8 +37,8 @@ public class PlayerListParser extends PlayerParser {
return net == null ? null : Lists.newArrayList(net); return net == null ? null : Lists.newArrayList(net);
} }
public Collection<String> getCompletions(CommandEnvironment env) { public Collection<String> getCompletions(CommandEnvironment env, String last) {
Collection<String> comp = Lists.newArrayList(super.getCompletions(env)); Collection<String> comp = Lists.newArrayList(super.getCompletions(env, last));
comp.add("*"); comp.add("*");
return comp; return comp;
} }

View file

@ -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; return this.useSender && env.getExecutor().isPlayer() && this.policy.applies(env, env.getExecutor(), (Player)env.getExecutor()) ? (Player)env.getExecutor() : null;
} }
public Collection<String> getCompletions(CommandEnvironment env) { public Collection<String> 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! return Filter.filter(env.getServer().getAllPlayerNames(), user -> this.policy.applies(env, env.getExecutor(), env.getServer().getPlayer(user))); // add Lists.newArrayList if modifying!
} }

View file

@ -3,5 +3,5 @@ package server.command;
import java.util.Collection; import java.util.Collection;
public interface StringCompleter { public interface StringCompleter {
Collection<String> complete(CommandEnvironment env); Collection<String> complete(CommandEnvironment env, String last);
} }

View file

@ -57,7 +57,7 @@ public class StringParser extends DefaultingParser {
return String.class; return String.class;
} }
public Collection<String> getCompletions(CommandEnvironment env) { public Collection<String> getCompletions(CommandEnvironment env, String last) {
return this.completer != null ? this.completer.complete(env) : super.getCompletions(env); return this.completer != null ? this.completer.complete(env, last) : super.getCompletions(env, last);
} }
} }

View file

@ -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; return this.useSender && env.getExecutor().isPlayer() && this.policy.applies(env, env.getExecutor(), (Player)env.getExecutor()) ? (Player)env.getExecutor() : null;
} }
public Collection<String> getCompletions(CommandEnvironment env) { public Collection<String> 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! return Filter.filter(env.getServer().getAllUserNames(), user -> this.policy.applies(env, env.getExecutor(), env.getServer().getUser(user))); // add Lists.newArrayList if modifying!
} }

View file

@ -33,7 +33,7 @@ public class WorldParser extends DimensionParser {
// return world; // return world;
} }
public Collection<String> getCompletions(CommandEnvironment env) { public Collection<String> getCompletions(CommandEnvironment env, String last) {
if(this.loadedOnly) { if(this.loadedOnly) {
List<String> loaded = Lists.newArrayList(); List<String> loaded = Lists.newArrayList();
for(WorldServer world : env.getServer().getWorlds()) { for(WorldServer world : env.getServer().getWorlds()) {
@ -41,7 +41,7 @@ public class WorldParser extends DimensionParser {
} }
return loaded; return loaded;
} }
return super.getCompletions(env); return super.getCompletions(env, last);
} }
public Class<?> getTypeClass(boolean required) { public Class<?> getTypeClass(boolean required) {

View file

@ -1,6 +1,11 @@
package server.command.commands; package server.command.commands;
import java.util.Collection; 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.tags.TagObject;
import common.tileentity.TileEntity; import common.tileentity.TileEntity;
import common.util.BlockPos; import common.util.BlockPos;
@ -17,8 +22,14 @@ public class CommandBlock extends Command {
super("block"); super("block");
this.addString("block", false, new StringCompleter() { this.addString("block", false, new StringCompleter() {
public Collection<String> complete(CommandEnvironment env) { public Collection<String> complete(CommandEnvironment env, String last) {
return State.getKeys(); 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); this.addBlockPos("position", true);

View file

@ -22,7 +22,7 @@ public class CommandHelp extends Command {
this.setParamsOptional(); this.setParamsOptional();
this.addString("command", false, new StringCompleter() { this.addString("command", false, new StringCompleter() {
public Collection<String> complete(CommandEnvironment env) { public Collection<String> complete(CommandEnvironment env, String last) {
return env.getExecutables().keySet(); return env.getExecutables().keySet();
} }
}); });

View file

@ -4,6 +4,7 @@ import java.util.Collection;
import java.util.List; import java.util.List;
import common.entity.npc.EntityNPC; import common.entity.npc.EntityNPC;
import common.init.ItemRegistry;
import common.item.ItemStack; import common.item.ItemStack;
import common.tags.TagObject; import common.tags.TagObject;
import server.command.Command; import server.command.Command;
@ -18,8 +19,8 @@ public class CommandItem extends Command {
super("item"); super("item");
this.addString("item", false, new StringCompleter() { this.addString("item", false, new StringCompleter() {
public Collection<String> complete(CommandEnvironment env) { public Collection<String> complete(CommandEnvironment env, String last) {
return ItemStack.getKeys(); return ItemRegistry.REGISTRY.getKeys();
} }
}); });
this.setParamsOptional(); this.setParamsOptional();

View file

@ -19,7 +19,7 @@ public class CommandOfflinetp extends Command {
super("offlinetp"); super("offlinetp");
this.addString("user", false, new StringCompleter() { this.addString("user", false, new StringCompleter() {
public Collection<String> complete(CommandEnvironment env) { public Collection<String> complete(CommandEnvironment env, String last) {
return env.getServer().getPlayerFilenames(); return env.getServer().getPlayerFilenames();
} }
}); });

View file

@ -20,7 +20,7 @@ public class CommandSv extends Command {
this.setParamsOptional(); this.setParamsOptional();
this.addString("variable", false, new StringCompleter() { this.addString("variable", false, new StringCompleter() {
public Collection<String> complete(CommandEnvironment env) { public Collection<String> complete(CommandEnvironment env, String last) {
return env.getServer().getVariables().keySet(); return env.getServer().getVariables().keySet();
} }
}); });

View file

@ -18,7 +18,7 @@ public class CommandWarp extends Command {
super("warp"); super("warp");
this.addString("warp", true, new StringCompleter() { this.addString("warp", true, new StringCompleter() {
public Collection<String> complete(CommandEnvironment env) { public Collection<String> complete(CommandEnvironment env, String last) {
// List<String> warps = Lists.newArrayList("spawn"); // List<String> warps = Lists.newArrayList("spawn");
// warps.addAll(env.getServer().getWarps().keySet()); // warps.addAll(env.getServer().getWarps().keySet());
return env.getServer().getWarps().keySet(); return env.getServer().getWarps().keySet();