add exp command, fix game over screen

This commit is contained in:
Sen 2025-06-14 13:08:46 +02:00
parent 8f1fda3f3d
commit cdf8db1b50
Signed by: sen
GPG key ID: 3AC50A6F47D1B722
4 changed files with 57 additions and 8 deletions

View file

@ -261,5 +261,6 @@ public class CommandEnvironment {
this.registerExecutable(new CommandItem());
this.registerExecutable(new CommandRunat());
this.registerExecutable(new CommandRunas());
this.registerExecutable(new CommandExp());
}
}

View file

@ -0,0 +1,44 @@
package server.command.commands;
import java.util.List;
import common.entity.npc.EntityNPC;
import server.command.Command;
import server.command.CommandEnvironment;
import server.command.Executor;
import server.command.UserPolicy;
public class CommandExp extends Command {
public CommandExp() {
super("exp");
this.setParamsOptional();
this.addInt("points", 1, Integer.MAX_VALUE);
this.addFlag("reset", 'r');
this.setParamsRequired();
this.addPlayerEntityList("players", 'p', true, UserPolicy.NON_ADMINS_OR_SELF);
}
public void exec(CommandEnvironment env, Executor exec, Integer points, boolean reset, List<EntityNPC> players) {
for(EntityNPC player : players) {
if(points == null && !reset) {
exec.log("Erfahrung von %s: Level %d, %d/%d (%d Punkte)", player.getCommandName(), player.experienceLevel, (int)((float)player.xpBarCap() * player.experience), player.xpBarCap(), player.experienceTotal);
}
else if(reset) {
player.setExperience(points == null ? 0 : points);
exec.log("Erfahrung von %s " + (points == null ? "zurückgesetzt" : "auf %d Punkte gesetzt (Level %d)"), player.getCommandName(), player.experienceTotal, player.experienceLevel);
}
else {
int level = player.experienceLevel;
player.addExperience(points);
exec.log("%d Erfahrungspunkte an %s gegeben" + (player.experienceLevel != level ? ", ist jetzt Level %d" : ""), points, player.getCommandName(), player.experienceLevel);
}
}
if(players.size() > 1) {
if(reset)
exec.log("Erfahrung von %d Spielern " + (points == null ? "zurückgesetzt" : "auf %d Punkte gesetzt"), players.size(), points);
else if(points != null)
exec.log("%d Erfahrungspunkte an %d Spieler gegeben", points * players.size(), players.size());
}
}
}