mirror of
https://github.com/Grasscutters/Grasscutter.git
synced 2025-12-15 08:25:21 +01:00
Commands Targeting rework
This commit is contained in:
@@ -13,119 +13,58 @@ import emu.grasscutter.game.props.ActionReason;
|
||||
import java.util.LinkedList;
|
||||
import java.util.List;
|
||||
|
||||
@Command(label = "give", usage = "give [player] <itemId|itemName> [amount] [level]", description = "Gives an item to you or the specified player", aliases = {
|
||||
@Command(label = "give", usage = "give <itemId|itemName> [amount] [level]", description = "Gives an item to you or the specified player", aliases = {
|
||||
"g", "item", "giveitem"}, permission = "player.give")
|
||||
public final class GiveCommand implements CommandHandler {
|
||||
|
||||
@Override
|
||||
public void execute(Player sender, Player targetPlayer, List<String> args) {
|
||||
int target, item, lvl, amount = 1, refinement = 0;
|
||||
if (sender == null && args.size() < 2) {
|
||||
CommandHandler.sendMessage(null, Grasscutter.getLanguage().Give_usage);
|
||||
if (targetPlayer == null) {
|
||||
CommandHandler.sendMessage(sender, Grasscutter.getLanguage().Target_needed);
|
||||
return;
|
||||
}
|
||||
int item;
|
||||
int lvl = 1;
|
||||
int amount = 1;
|
||||
int refinement = 0;
|
||||
|
||||
switch (args.size()) {
|
||||
default: // *No args*
|
||||
CommandHandler.sendMessage(sender, Grasscutter.getLanguage().Give_usage);
|
||||
return;
|
||||
case 4: // <itemId|itemName> [amount] [level] [refinement]
|
||||
try {
|
||||
refinement = Integer.parseInt(args.get(3));
|
||||
} catch (NumberFormatException ignored) {
|
||||
CommandHandler.sendMessage(sender, Grasscutter.getLanguage().Invalid_item_refinement);
|
||||
return;
|
||||
} // Fallthrough
|
||||
case 3: // <itemId|itemName> [amount] [level]
|
||||
try {
|
||||
lvl = Integer.parseInt(args.get(2));
|
||||
} catch (NumberFormatException ignored) {
|
||||
CommandHandler.sendMessage(sender, Grasscutter.getLanguage().Invalid_item_level);
|
||||
return;
|
||||
} // Fallthrough
|
||||
case 2: // <itemId|itemName> [amount]
|
||||
try {
|
||||
amount = Integer.parseInt(args.get(1));
|
||||
} catch (NumberFormatException ignored) {
|
||||
CommandHandler.sendMessage(sender, Grasscutter.getLanguage().Invalid_amount);
|
||||
return;
|
||||
} // Fallthrough
|
||||
case 1: // <itemId|itemName>
|
||||
try {
|
||||
item = Integer.parseInt(args.get(0));
|
||||
target = sender.getUid();
|
||||
lvl = 1;
|
||||
} catch (NumberFormatException ignored) {
|
||||
// TODO: Parse from item name using GM Handbook.
|
||||
CommandHandler.sendMessage(sender, Grasscutter.getLanguage().Invalid_item_id);
|
||||
return;
|
||||
}
|
||||
break;
|
||||
case 2: // <itemId|itemName> [amount] | [player] <itemId|itemName>
|
||||
try {
|
||||
target = Integer.parseInt(args.get(0));
|
||||
lvl = 1;
|
||||
|
||||
if (Grasscutter.getGameServer().getPlayerByUid(target) == null && sender != null) {
|
||||
target = sender.getUid();
|
||||
item = Integer.parseInt(args.get(0));
|
||||
amount = Integer.parseInt(args.get(1));
|
||||
} else {
|
||||
item = Integer.parseInt(args.get(1));
|
||||
}
|
||||
} catch (NumberFormatException ignored) {
|
||||
// TODO: Parse from item name using GM Handbook.
|
||||
CommandHandler.sendMessage(sender, Grasscutter.getLanguage().Invalid_item_or_player_id);
|
||||
return;
|
||||
}
|
||||
break;
|
||||
case 3: // [player] <itemId|itemName> [amount] | <itemId|itemName> [amount] [level]
|
||||
try {
|
||||
target = Integer.parseInt(args.get(0));
|
||||
|
||||
if (Grasscutter.getGameServer().getPlayerByUid(target) == null && sender != null) {
|
||||
target = sender.getUid();
|
||||
item = Integer.parseInt(args.get(0));
|
||||
amount = Integer.parseInt(args.get(1));
|
||||
lvl = Integer.parseInt(args.get(2));
|
||||
} else {
|
||||
item = Integer.parseInt(args.get(1));
|
||||
amount = Integer.parseInt(args.get(2));
|
||||
lvl = 1;
|
||||
}
|
||||
|
||||
} catch (NumberFormatException ignored) {
|
||||
// TODO: Parse from item name using GM Handbook.
|
||||
CommandHandler.sendMessage(sender, Grasscutter.getLanguage().Invalid_item_or_player_id);
|
||||
return;
|
||||
}
|
||||
break;
|
||||
case 4: // [player] <itemId|itemName> [amount] [level] | <itemId|itemName> [amount] [level] [refinement]
|
||||
try {
|
||||
target = Integer.parseInt(args.get(0));
|
||||
|
||||
if (Grasscutter.getGameServer().getPlayerByUid(target) == null && sender != null) {
|
||||
target = sender.getUid();
|
||||
item = Integer.parseInt(args.get(0));
|
||||
amount = Integer.parseInt(args.get(1));
|
||||
lvl = Integer.parseInt(args.get(2));
|
||||
refinement = Integer.parseInt(args.get(3));
|
||||
} else {
|
||||
item = Integer.parseInt(args.get(1));
|
||||
amount = Integer.parseInt(args.get(2));
|
||||
lvl = Integer.parseInt(args.get(3));
|
||||
}
|
||||
} catch (NumberFormatException ignored) {
|
||||
// TODO: Parse from item name using GM Handbook.
|
||||
CommandHandler.sendMessage(sender, Grasscutter.getLanguage().Invalid_item_or_player_id);
|
||||
return;
|
||||
}
|
||||
break;
|
||||
case 5: // [player] <itemId|itemName> [amount] [level] [refinement]
|
||||
try {
|
||||
target = Integer.parseInt(args.get(0));
|
||||
|
||||
if (Grasscutter.getGameServer().getPlayerByUid(target) == null) {
|
||||
CommandHandler.sendMessage(sender, Grasscutter.getLanguage().Invalid_playerId);
|
||||
return;
|
||||
} else {
|
||||
item = Integer.parseInt(args.get(1));
|
||||
amount = Integer.parseInt(args.get(2));
|
||||
lvl = Integer.parseInt(args.get(3));
|
||||
refinement = Integer.parseInt(args.get(4));
|
||||
}
|
||||
} catch (NumberFormatException ignored) {
|
||||
// TODO: Parse from item name using GM Handbook.
|
||||
CommandHandler.sendMessage(sender, Grasscutter.getLanguage().Invalid_item_or_player_id);
|
||||
return;
|
||||
}
|
||||
break;
|
||||
default: // *No args*
|
||||
CommandHandler.sendMessage(sender, Grasscutter.getLanguage().Give_usage);
|
||||
return;
|
||||
}
|
||||
|
||||
|
||||
if (targetPlayer == null) {
|
||||
CommandHandler.sendMessage(sender, Grasscutter.getLanguage().Player_not_found);
|
||||
return;
|
||||
}
|
||||
|
||||
ItemData itemData = GameData.getItemDataMap().get(item);
|
||||
if (itemData == null) {
|
||||
@@ -147,9 +86,9 @@ public final class GiveCommand implements CommandHandler {
|
||||
this.item(targetPlayer, itemData, amount, lvl, refinement);
|
||||
|
||||
if (!itemData.isEquip()) {
|
||||
CommandHandler.sendMessage(sender, Grasscutter.getLanguage().Give_given.replace("{amount}", Integer.toString(amount)).replace("{item}", Integer.toString(item)).replace("{target}", Integer.toString(target)));
|
||||
CommandHandler.sendMessage(sender, Grasscutter.getLanguage().Give_given.replace("{amount}", Integer.toString(amount)).replace("{item}", Integer.toString(item)).replace("{target}", Integer.toString(targetPlayer.getUid())));
|
||||
} else if (itemData.getItemType() == ItemType.ITEM_WEAPON) {
|
||||
CommandHandler.sendMessage(sender, Grasscutter.getLanguage().Give_given_with_level_and_refinement.replace("{item}", Integer.toString(item)).replace("{lvl}", Integer.toString(lvl)).replace("{refinement}", Integer.toString(refinement)).replace("{amount}", Integer.toString(amount)).replace("{target}", Integer.toString(target)));
|
||||
CommandHandler.sendMessage(sender, Grasscutter.getLanguage().Give_given_with_level_and_refinement.replace("{item}", Integer.toString(item)).replace("{lvl}", Integer.toString(lvl)).replace("{refinement}", Integer.toString(refinement)).replace("{amount}", Integer.toString(amount)).replace("{target}", Integer.toString(targetPlayer.getUid())));
|
||||
} else {
|
||||
CommandHandler.sendMessage(sender,Grasscutter.getLanguage().Give_given_level.replace("{item}", Integer.toString(item)).replace("{lvl}", Integer.toString(lvl)).replace("{amount}", Integer.toString(amount)));
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user