commands, camera, messages, overlay, ..

This commit is contained in:
Sen 2025-03-26 12:22:32 +01:00
parent 75f91dbf4c
commit d45cd7ec2c
126 changed files with 854 additions and 628 deletions

View file

@ -214,7 +214,7 @@ public class CommandEnvironment {
}
catch(Throwable t) {
list.clear();
Log.CONSOLE.error(t, "Konnte Befehl nicht vervollständigen");
Log.CONSOLE.error(t, "Konnte Befehl '%s' nicht vervollständigen", cmd);
}
finally {
this.currentExecutor = null;
@ -250,6 +250,7 @@ public class CommandEnvironment {
this.registerExecutable(new CommandOfflinetp());
this.registerExecutable(new CommandWarp());
this.registerExecutable(new CommandTime());
this.registerExecutable(new CommandRemove());
this.registerExecutable(new CommandHelp(this));
}

View file

@ -8,7 +8,7 @@ import game.collect.Sets;
import game.entity.Entity;
import game.entity.types.EntityLiving;
import game.init.EntityRegistry;
import game.network.NetHandlerPlayServer;
import game.network.Player;
import game.world.WorldServer;
public class EntityListParser extends EntityParser {
@ -36,7 +36,7 @@ public class EntityListParser extends EntityParser {
}
else if(input.equals("*")) {
List<Entity> list = Lists.newArrayList();
for(NetHandlerPlayServer plr : env.getServer().getPlayers()) {
for(Player plr : env.getServer().getPlayers()) {
if(plr.getEntity() != null)
list.add(plr.getEntity());
}

View file

@ -0,0 +1,42 @@
package game.command;
import java.util.List;
import game.collect.Lists;
import game.entity.Entity;
import game.entity.npc.EntityNPC;
import game.network.Player;
public class PlayerEntityListParser extends PlayerEntityParser {
public PlayerEntityListParser(String name, boolean useSender) {
super(name, useSender);
}
public Object parse(CommandEnvironment env, String input) {
if(input.equals("*")) {
List<Entity> list = Lists.newArrayList();
for(Player plr : env.getServer().getPlayers()) {
if(plr.getEntity() != null)
list.add(plr.getEntity());
}
if(list.isEmpty())
throw new RunException("Keine Spieler gefunden");
return list;
}
return Lists.newArrayList((EntityNPC)super.parse(env, input));
}
public Object getDefault(CommandEnvironment env) {
EntityNPC entity = (EntityNPC)super.getDefault(env);
return entity == null ? null : Lists.newArrayList(entity);
}
public String[] getCompletions(CommandEnvironment env) {
List<String> comp = Lists.newArrayList(env.getServer().getAllUsernames());
comp.add("*");
return comp.toArray(new String[comp.size()]);
}
public Class<?> getTypeClass() {
return List.class;
}
}

View file

@ -1,7 +1,7 @@
package game.command;
import game.entity.npc.EntityNPC;
import game.network.NetHandlerPlayServer;
import game.network.Player;
public class PlayerEntityParser extends PlayerParser {
public PlayerEntityParser(String name, boolean useSender) {
@ -9,7 +9,7 @@ public class PlayerEntityParser extends PlayerParser {
}
public Object parse(CommandEnvironment env, String input) {
NetHandlerPlayServer net = (NetHandlerPlayServer)super.parse(env, input);
Player net = (Player)super.parse(env, input);
EntityNPC entity = net.getEntity();
if(entity == null)
throw new RunException("Spieler-Objekt von '%s' wurde nicht gefunden", input);
@ -17,7 +17,7 @@ public class PlayerEntityParser extends PlayerParser {
}
public Object getDefault(CommandEnvironment env) {
NetHandlerPlayServer net = (NetHandlerPlayServer)super.getDefault(env);
Player net = (Player)super.getDefault(env);
return net == null ? null : net.getEntity();
}

View file

@ -0,0 +1,35 @@
package game.command;
import java.util.List;
import game.collect.Lists;
import game.network.Player;
public class PlayerListParser extends PlayerParser {
public PlayerListParser(String name, boolean useSender) {
super(name, useSender);
}
public Object parse(CommandEnvironment env, String input) {
if(input.equals("*")) {
if(env.getServer().getPlayers().isEmpty())
throw new RunException("Keine Spieler gefunden");
return Lists.newArrayList(env.getServer().getPlayers());
}
return Lists.newArrayList((Player)super.parse(env, input));
}
public Object getDefault(CommandEnvironment env) {
Player net = (Player)super.getDefault(env);
return net == null ? null : Lists.newArrayList(net);
}
public String[] getCompletions(CommandEnvironment env) {
List<String> comp = Lists.newArrayList(env.getServer().getAllUsernames());
comp.add("*");
return comp.toArray(new String[comp.size()]);
}
public Class<?> getTypeClass() {
return List.class;
}
}

View file

@ -2,7 +2,7 @@ package game.command;
import java.util.List;
import game.network.NetHandlerPlayServer;
import game.network.Player;
public class PlayerParser extends CompletingParser {
protected final boolean useSender;
@ -13,14 +13,14 @@ public class PlayerParser extends CompletingParser {
}
public Object parse(CommandEnvironment env, String input) {
NetHandlerPlayServer net = env.getServer().getPlayer(input);
Player net = env.getServer().getPlayer(input);
if(net == null)
throw new RunException("Spieler '%s' wurde nicht gefunden", input);
return net;
}
public Object getDefault(CommandEnvironment env) {
return this.useSender && env.getExecutor() instanceof NetHandlerPlayServer ? (NetHandlerPlayServer)env.getExecutor() : null;
return this.useSender && env.getExecutor() instanceof Player ? (Player)env.getExecutor() : null;
}
public String[] getCompletions(CommandEnvironment env) {
@ -29,6 +29,6 @@ public class PlayerParser extends CompletingParser {
}
public Class<?> getTypeClass() {
return NetHandlerPlayServer.class;
return Player.class;
}
}

View file

@ -4,7 +4,7 @@ import game.command.CommandEnvironment;
import game.command.RunException;
import game.command.Command;
import game.command.Executor;
import game.network.NetHandlerPlayServer;
import game.network.Player;
public class CommandAdmin extends Command {
public CommandAdmin() {
@ -13,8 +13,8 @@ public class CommandAdmin extends Command {
this.addPlayer("player", false);
}
public void exec(CommandEnvironment env, Executor exec, NetHandlerPlayServer player) {
if(!(exec instanceof NetHandlerPlayServer))
public void exec(CommandEnvironment env, Executor exec, Player player) {
if(!(exec instanceof Player))
throw new RunException("Dieser Befehl kann nur von Spielern ausgeführt werden");
else if(player == exec)
throw new RunException("Du kannst nicht deinen eigenen Admin-Status erneut setzen");

View file

@ -8,7 +8,7 @@ import game.command.RunException;
import game.command.StringCompleter;
import game.entity.Entity;
import game.init.UniverseRegistry;
import game.network.NetHandlerPlayServer;
import game.network.Player;
import game.world.Position;
public class CommandOfflinetp extends Command {
@ -25,7 +25,7 @@ public class CommandOfflinetp extends Command {
}
public Object exec(CommandEnvironment env, Executor exec, String user, List<Entity> entities) {
NetHandlerPlayServer player = env.getServer().getPlayer(user);
Player player = env.getServer().getPlayer(user);
Position pos = player != null ? player.getEntity().getPos() : env.getServer().getOfflinePosition(user);
if(pos == null)
throw new RunException("Spieler '%s' konnte nicht gefunden werden", user);

View file

@ -0,0 +1,34 @@
package game.command.commands;
import java.util.List;
import game.command.CommandEnvironment;
import game.command.Command;
import game.command.Executor;
import game.entity.Entity;
public class CommandRemove extends Command {
public CommandRemove() {
super("remove");
this.addEntityList("entities", true);
this.addFlag("kill", 'k');
}
public Object exec(CommandEnvironment env, Executor exec, List<Entity> entities, boolean kill) {
int done = 0;
for(Entity entity : entities) {
if(entity.isEntityAlive()) {
if(kill || entity.isPlayer())
entity.kill();
else
entity.setDead();
exec.logConsole(kill ? "%s getötet" : "%s entfernt", entity.getCommandName());
done++;
}
}
if(done > 1)
exec.logConsole(kill ? "%d Objekte getötet" : "%d Objekte entfernt", done);
return done;
}
}

View file

@ -4,7 +4,7 @@ import game.command.CommandEnvironment;
import game.command.RunException;
import game.command.Command;
import game.command.Executor;
import game.network.NetHandlerPlayServer;
import game.network.Player;
public class CommandRevoke extends Command {
public CommandRevoke() {
@ -13,8 +13,8 @@ public class CommandRevoke extends Command {
this.addPlayer("player", false);
}
public void exec(CommandEnvironment env, Executor exec, NetHandlerPlayServer player) {
if(!(exec instanceof NetHandlerPlayServer) || !((NetHandlerPlayServer)exec).isLocal())
public void exec(CommandEnvironment env, Executor exec, Player player) {
if(!(exec instanceof Player) || !((Player)exec).isLocal())
throw new RunException("Dieser Befehl kann nur vom Host-Spieler ausgeführt werden");
else if(player == exec)
throw new RunException("Du kannst nicht deinen eigenen Admin-Status entfernen");