mirror of
https://github.com/Melledy/Nebula.git
synced 2026-09-19 17:19:58 +02:00
Implement !battlepass command
Examples: `!battlepass premium` = Activates elite grant `!battlepass lv40` = Unlocks the rewards up to level 40
This commit is contained in:
@@ -0,0 +1,61 @@
|
|||||||
|
package emu.nebula.command.commands;
|
||||||
|
|
||||||
|
import emu.nebula.command.Command;
|
||||||
|
import emu.nebula.command.CommandArgs;
|
||||||
|
import emu.nebula.command.CommandHandler;
|
||||||
|
import emu.nebula.net.NetMsgId;
|
||||||
|
|
||||||
|
@Command(label = "battlepass", aliases = {"bp"}, permission = "player.battlepass", desc = "/battlepass [free | premium] lv(level). mMdifies your battle pass")
|
||||||
|
public class BattlePassCommand implements CommandHandler {
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public String execute(CommandArgs args) {
|
||||||
|
// Get target
|
||||||
|
var target = args.getTarget();
|
||||||
|
var battlepass = target.getBattlePassManager().getBattlePass();
|
||||||
|
boolean changed = false;
|
||||||
|
|
||||||
|
// Check if we are changing premium status
|
||||||
|
int mode = -1;
|
||||||
|
|
||||||
|
for (var arg : args.getList()) {
|
||||||
|
if (arg.equalsIgnoreCase("free")) {
|
||||||
|
mode = 0;
|
||||||
|
} else if (arg.equalsIgnoreCase("premium")) {
|
||||||
|
mode = 2;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
if (mode >= 0 && battlepass.getMode() != mode) {
|
||||||
|
battlepass.setMode(mode);
|
||||||
|
changed = true;
|
||||||
|
}
|
||||||
|
|
||||||
|
// Set level
|
||||||
|
int level = Math.min(args.getLevel(), 50);
|
||||||
|
|
||||||
|
if (level >= 0 && battlepass.getLevel() != level) {
|
||||||
|
battlepass.setLevel(level);
|
||||||
|
changed = true;
|
||||||
|
}
|
||||||
|
|
||||||
|
// Check if we have made any changes
|
||||||
|
if (changed) {
|
||||||
|
// Save battle pass to the database
|
||||||
|
battlepass.save();
|
||||||
|
|
||||||
|
// Send package to notify the client that the battle pass needs updating
|
||||||
|
target.addNextPackage(
|
||||||
|
NetMsgId.battle_pass_info_succeed_ack,
|
||||||
|
battlepass.toProto()
|
||||||
|
);
|
||||||
|
|
||||||
|
// Success message
|
||||||
|
return "Changed the battle pass successfully.";
|
||||||
|
}
|
||||||
|
|
||||||
|
// Result message
|
||||||
|
return "No changes were made to the battle pass.";
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
@@ -30,7 +30,7 @@ public class BattlePass implements GameDatabaseObject {
|
|||||||
private int uid;
|
private int uid;
|
||||||
private transient BattlePassManager manager;
|
private transient BattlePassManager manager;
|
||||||
|
|
||||||
private int battlePassId;
|
private int battlePassId; // Season id
|
||||||
private int mode;
|
private int mode;
|
||||||
private int level;
|
private int level;
|
||||||
private int exp;
|
private int exp;
|
||||||
@@ -71,6 +71,13 @@ public class BattlePass implements GameDatabaseObject {
|
|||||||
return manager.getPlayer();
|
return manager.getPlayer();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Sets the mode directly
|
||||||
|
*/
|
||||||
|
public synchronized void setMode(int mode) {
|
||||||
|
this.mode = mode;
|
||||||
|
}
|
||||||
|
|
||||||
public boolean isPremium() {
|
public boolean isPremium() {
|
||||||
return this.mode > 0;
|
return this.mode > 0;
|
||||||
}
|
}
|
||||||
@@ -79,6 +86,14 @@ public class BattlePass implements GameDatabaseObject {
|
|||||||
return GameData.getBattlePassRewardDataTable().get((this.getBattlePassId() << 16) + level);
|
return GameData.getBattlePassRewardDataTable().get((this.getBattlePassId() << 16) + level);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Sets the level directly, use getMaxExp() instead if adding exp.
|
||||||
|
*/
|
||||||
|
public synchronized void setLevel(int level) {
|
||||||
|
this.level = level;
|
||||||
|
this.exp = 0;
|
||||||
|
}
|
||||||
|
|
||||||
public int getMaxExp() {
|
public int getMaxExp() {
|
||||||
var data = GameData.getBattlePassLevelDataTable().get(this.getLevel() + 1);
|
var data = GameData.getBattlePassLevelDataTable().get(this.getLevel() + 1);
|
||||||
return data != null ? data.getExp() : 0;
|
return data != null ? data.getExp() : 0;
|
||||||
|
|||||||
Reference in New Issue
Block a user