Skip to content

Commit 62f4e15

Browse files
Fix /roll command: add default d20 roll, improve error handling, return true on success
Agent-Logs-Url: https://github.com/Dans-Plugins/Medieval-Roleplay-Engine/sessions/a18471e3-ba4b-4758-b249-ceebd2267aaa Co-authored-by: dmccoystephenson <21204351+dmccoystephenson@users.noreply.github.com>
1 parent 2d156ef commit 62f4e15

2 files changed

Lines changed: 30 additions & 16 deletions

File tree

src/main/java/dansplugins/rpsystem/commands/roll/RollCommand.java

Lines changed: 26 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -6,6 +6,8 @@
66
import org.bukkit.entity.Player;
77

88
public class RollCommand {
9+
private static final int DEFAULT_DIE_SIZE = 20;
10+
911
private final MedievalRoleplayEngine medievalRoleplayEngine;
1012

1113
public RollCommand(MedievalRoleplayEngine medievalRoleplayEngine) {
@@ -14,25 +16,33 @@ public RollCommand(MedievalRoleplayEngine medievalRoleplayEngine) {
1416

1517
public boolean rollDice(CommandSender sender, String[] args) {
1618

17-
if (sender instanceof Player) {
18-
Player player = (Player) sender;
19-
if (player.hasPermission("rp.roll") || player.hasPermission("rp.dice") || player.hasPermission("rp.default")) {
20-
if (args.length > 0) {
21-
try {
22-
int max = Integer.parseInt(args[0]);
23-
medievalRoleplayEngine.messenger.sendRPMessageToPlayersWithinDistance(player, medievalRoleplayEngine.colorChecker.getNeutralAlertColor() + "" + ChatColor.ITALIC + player.getName() + " has rolled a " + rollDice(max) + " out of " + max + ".", 25);
24-
}
25-
catch(Exception ignored) {
26-
27-
}
19+
if (!(sender instanceof Player)) {
20+
return false;
21+
}
22+
23+
Player player = (Player) sender;
24+
25+
if (!(player.hasPermission("rp.roll") || player.hasPermission("rp.dice") || player.hasPermission("rp.default"))) {
26+
player.sendMessage(medievalRoleplayEngine.colorChecker.getNegativeAlertColor() + "Sorry! In order to use this command, you need one of the following permissions: 'rp.roll', 'rp.dice'");
27+
return false;
28+
}
29+
30+
int max = DEFAULT_DIE_SIZE;
31+
if (args.length > 0) {
32+
try {
33+
max = Integer.parseInt(args[0]);
34+
if (max < 1) {
35+
player.sendMessage(medievalRoleplayEngine.colorChecker.getNegativeAlertColor() + "Please provide a positive number to roll.");
36+
return false;
2837
}
38+
} catch (NumberFormatException e) {
39+
player.sendMessage(medievalRoleplayEngine.colorChecker.getNegativeAlertColor() + "'" + args[0] + "' is not a valid number. Usage: /roll [max]");
40+
return false;
2941
}
30-
else {
31-
player.sendMessage(medievalRoleplayEngine.colorChecker.getNegativeAlertColor() + "Sorry! In order to use this command, you need one the following permissions: 'rp.roll', 'rp.dice'");
32-
}
33-
3442
}
35-
return false;
43+
44+
medievalRoleplayEngine.messenger.sendRPMessageToPlayersWithinDistance(player, medievalRoleplayEngine.colorChecker.getNeutralAlertColor() + "" + ChatColor.ITALIC + player.getName() + " has rolled a " + rollDice(max) + " out of " + max + ".", 25);
45+
return true;
3646
}
3747

3848
private int rollDice(int max) {

src/main/resources/plugin.yml

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -15,7 +15,11 @@ commands:
1515
emote:
1616
me:
1717
roll:
18+
description: Roll a die. Defaults to a d20 if no max is specified.
19+
usage: /roll [max]
1820
dice:
21+
description: Roll a die. Defaults to a d20 if no max is specified.
22+
usage: /dice [max]
1923
title:
2024
yell:
2125
whisper:

0 commit comments

Comments
 (0)