package game.command; import java.util.List; import com.google.common.collect.Lists; import game.Server; import game.dimension.Dimension; import game.world.WorldServer; public class WorldParser extends DimensionParser { private final boolean loadedOnly; private final Server server; public WorldParser(String name, Server server, boolean loadedOnly) { super(name); this.server = server; this.loadedOnly = loadedOnly; } public WorldServer parse(ScriptEnvironment env, String input) { Dimension dim = (Dimension)super.parse(env, input); WorldServer world = this.loadedOnly ? this.server.getWorldNoLoad(dim.getDimensionId()) : this.server.getWorld(dim.getDimensionId()); if(world == null) throw new ScriptException("Dimension '%s' ist nicht geladen", dim.getFormattedName(false)); return world; } public String[] getCompletions(ScriptEnvironment env) { if(this.loadedOnly) { List loaded = Lists.newArrayList(); for(WorldServer world : this.server.getWorlds()) { loaded.add(world.dimension.getDimensionName()); } return loaded.toArray(new String[loaded.size()]); } return super.getCompletions(env); } }