summaryrefslogtreecommitdiff
path: root/src/main/java
diff options
context:
space:
mode:
Diffstat (limited to 'src/main/java')
-rw-r--r--src/main/java/net/cflems/mc/sandbox/commands/Fireball.java27
1 files changed, 24 insertions, 3 deletions
diff --git a/src/main/java/net/cflems/mc/sandbox/commands/Fireball.java b/src/main/java/net/cflems/mc/sandbox/commands/Fireball.java
index 47f5e0c..049c554 100644
--- a/src/main/java/net/cflems/mc/sandbox/commands/Fireball.java
+++ b/src/main/java/net/cflems/mc/sandbox/commands/Fireball.java
@@ -4,17 +4,18 @@ import net.cflems.mc.sandbox.CommandUtils;
import net.cflems.mc.sandbox.Sandbox;
import org.bukkit.command.CommandExecutor;
import org.bukkit.command.CommandSender;
-import org.bukkit.entity.EntityType;
import org.bukkit.entity.Player;
public final class Fireball implements CommandExecutor {
private static final String PERMISSION = Sandbox.PERMISSION_NAMESPACE + ".fireball";
+ private static final String CUSTOM_PERMISSION = PERMISSION + ".custom";
+ private static final float DEFAULT_POWER = 5.0f;
@SuppressWarnings("NullableProblems")
@Override
public boolean onCommand(
CommandSender sender, org.bukkit.command.Command _command, String _label, String[] args) {
- if (args.length > 0) return false;
+ if (args.length > 1) return false;
if (!(sender instanceof Player player)) {
CommandUtils.respond(sender, "Only players can use fireballs.");
return true;
@@ -23,7 +24,27 @@ public final class Fireball implements CommandExecutor {
CommandUtils.respond(sender, "You do not have permission to use fireballs.");
return true;
}
- player.getWorld().spawnEntity(player.getEyeLocation().subtract(0, 1, 0), EntityType.FIREBALL);
+
+ float yield = DEFAULT_POWER;
+ if (args.length > 0) {
+ if (!sender.hasPermission(CUSTOM_PERMISSION)) {
+ CommandUtils.respond(
+ sender, "You do not have permission to use fireballs of custom power.");
+ return true;
+ }
+ try {
+ yield = Float.parseFloat(args[0]);
+ } catch (NumberFormatException _e) {
+ yield = -1.0f;
+ }
+ }
+ if (yield < 0.0f) {
+ CommandUtils.respond(sender, "Fireball power must be a non-negative decimal number.");
+ return true;
+ }
+
+ org.bukkit.entity.Fireball fireball = player.launchProjectile(org.bukkit.entity.Fireball.class);
+ fireball.setYield(yield);
return true;
}
}