Skip to content
This repository has been archived by the owner on Aug 12, 2021. It is now read-only.

Commit

Permalink
Gamemode
Browse files Browse the repository at this point in the history
  • Loading branch information
yescallop committed Sep 10, 2016
1 parent 8173b53 commit 60ca7b5
Show file tree
Hide file tree
Showing 4 changed files with 120 additions and 0 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -21,6 +21,7 @@ public static void registerAll(EssentialsAPI api) {
map.register("EssentialsNK", new DepthCommand(api));
map.register("EssentialsNK", new ExtinguishCommand(api));
map.register("EssentialsNK", new FlyCommand(api));
map.register("EssentialsNK", new GamemodeCommand(api));
map.register("EssentialsNK", new GetPosCommand(api));
map.register("EssentialsNK", new HealCommand(api));
map.register("EssentialsNK", new ItemDBCommand(api));
Expand Down
Original file line number Diff line number Diff line change
@@ -0,0 +1,105 @@
package cn.yescallop.essentialsnk.command.defaults;

import cn.nukkit.Server;
import cn.nukkit.Player;
import cn.nukkit.command.CommandSender;
import cn.nukkit.lang.TranslationContainer;
import cn.nukkit.utils.TextFormat;
import cn.yescallop.essentialsnk.EssentialsAPI;
import cn.yescallop.essentialsnk.command.CommandBase;

public class GamemodeCommand extends CommandBase {

public GamemodeCommand(EssentialsAPI api) {
super("gamemode", api);
this.setAliases(new String[]{"gm", "gma", "gmc", "gms", "gmt", "adventure", "creative", "survival", "spectator", "viewer"});
}

public boolean execute(CommandSender sender, String label, String[] args) {
if (!this.testPermission(sender)) {
return false;
}
Player player;
int gamemode;
if (label.toLowerCase().equals("gamemode") || label.toLowerCase().equals("gm")) {
if (args.length == 0 || args.length > 2) {
this.sendUsage(sender, label);
return false;
}
if (args.length == 1) {
if (!(sender instanceof Player)) {
sender.sendMessage(TextFormat.RED + lang.translateString("commands.generic.ingame"));
return false;
}
player = (Player) sender;
} else {
player = api.getServer().getPlayer(args[1]);
if (player == null) {
sender.sendMessage(TextFormat.RED + lang.translateString("commands.generic.player.notfound", args[1]));
return false;
}
}
gamemode = Server.getGamemodeFromString(args[0]);
if (gamemode == -1) {
sender.sendMessage(TextFormat.RED + lang.translateString("commands.gamemode.invalid", args[0]));
return false;
}
} else {
if (args.length > 1) {
this.sendUsage(sender, label);
return false;
}
if (args.length == 0) {
if (!(sender instanceof Player)) {
sender.sendMessage(TextFormat.RED + lang.translateString("commands.generic.ingame"));
return false;
}
player = (Player) sender;
} else {
player = api.getServer().getPlayer(args[0]);
if (player == null) {
sender.sendMessage(TextFormat.RED + lang.translateString("commands.generic.player.notfound", args[0]));
return false;
}
}
switch (label.toLowerCase()) {
case "survival":
case "gms":
gamemode = Player.SURVIVAL;
break;
case "creative":
case "gmc":
gamemode = Player.CREATIVE;
break;
case "adventure":
case "gma":
gamemode = Player.ADVENTURE;
break;
case "spectator":
case "viewer":
case "gmt":
gamemode = Player.SPECTATOR;
break;
default:
return false;
}
}
player.setGamemode(gamemode);
String gamemodeStr = Server.getGamemodeString(gamemode);
player.sendMessage(lang.translateString("commands.gamemode.success", gamemodeStr));
if (sender != player) {
sender.sendMessage(lang.translateString("commands.gamemode.success.other", new String[]{player.getDisplayName(), gamemodeStr}));
}
return true;
}

private void sendUsage(CommandSender sender, String label) {
String usage;
if (label.toLowerCase().equals("gamemode") || label.toLowerCase().equals("gm")) {
usage = lang.translateString("commands.gamemode.usage1", new String[]{label.toLowerCase()});
} else {
usage = lang.translateString("commands.gamemode.usage2", new String[]{label.toLowerCase()});
}
sender.sendMessage(new TranslationContainer("commands.generic.usage", usage));
}
}
7 changes: 7 additions & 0 deletions src/main/resources/lang/chs.ini
Original file line number Diff line number Diff line change
Expand Up @@ -54,6 +54,13 @@ commands.fly.usage=/fly <玩家>
commands.fly.success=你的飞行模式已被设置为 {%0}
commands.fly.success.other={%0} 的飞行模式已被设置为 {%1}

commands.gamemode.description=更改玩家的游戏模式
commands.gamemode.usage=/gamemode [模式] <玩家>
commands.gamemode.usage1=/{%0} [模式] <玩家>
commands.gamemode.usage2=/{%0} <玩家>
commands.gamemode.success=你的游戏模式已被设置为 {%0}
commands.gamemode.success.other=将 {%0} 的游戏模式设置为 {%1}

commands.getpos.description=获取你或其他玩家的位置
commands.getpos.usage=/getpos <玩家>
commands.getpos.success=你位于世界 {%0}, 坐标位于 ({%1}, {%2}, {%3})
Expand Down
7 changes: 7 additions & 0 deletions src/main/resources/lang/eng.ini
Original file line number Diff line number Diff line change
Expand Up @@ -54,6 +54,13 @@ commands.fly.usage=/fly <player>
commands.fly.success=Your flying mode has been set to {%0}
commands.fly.success.other={%0}'s flying mode has been set to {%1}

commands.gamemode.description=Change player's gamemode
commands.gamemode.usage=/gamemode [mode] <player>
commands.gamemode.usage1=/{%0} [mode] <player>
commands.gamemode.usage2=/{%0} <player>
commands.gamemode.success=Set own game mode to {%0}
commands.gamemode.success.other=Set {%0}'s game mode to {%1}

commands.getpos.description=Get your or other's position
commands.getpos.usage=/getpos <player>
commands.getpos.success=You're at world {%0}, positioned ({%1}, {%2}, {%3})
Expand Down

0 comments on commit 60ca7b5

Please sign in to comment.