Potion effect arguments
The PotionEffectArgument
class represents Minecraft potion effects. When used, this argument is casted to Bukkit's PotionEffectType
class, or alternatively a NamespacedKey
object if the PotionEffectArgument.NamespacedKey
argument is used to create a PotionEffectArgument
.
Example - Giving a player a potion effect
Example - Giving a player a potion effect
Say we wanted to have a command that gives a player a potion effect. For this command, we'll use the following syntax:
mccmd
/potion <target> <potion> <duration> <strength>
In this example, we utilize some of the other arguments that we've described earlier, such as the PlayerArgument
and TimeArgument
. Since duration for the PotionEffect
constructor is in ticks, this is perfectly fit for the TimeArgument
, which is represented in ticks.
Use PotionEffectArgument
java
new CommandAPICommand("potion")
.withArguments(new PlayerArgument("target"))
.withArguments(new PotionEffectArgument("potion"))
.withArguments(new TimeArgument("duration"))
.withArguments(new IntegerArgument("strength"))
.executes((sender, args) -> {
Player target = (Player) args.get("target");
PotionEffectType potion = (PotionEffectType) args.get("potion");
int duration = (int) args.get("duration");
int strength = (int) args.get("strength");
// Add the potion effect to the target player
target.addPotionEffect(new PotionEffect(potion, duration, strength));
})
.register();
Use PotionEffectArgument.NamespacedKey
java
new CommandAPICommand("potion")
.withArguments(new PlayerArgument("target"))
.withArguments(new PotionEffectArgument.NamespacedKey("potion"))
.withArguments(new TimeArgument("duration"))
.withArguments(new IntegerArgument("strength"))
.executes((sender, args) -> {
Player target = (Player) args.get("target");
NamespacedKey potionKey = (NamespacedKey) args.get("potion");
int duration = (int) args.get("duration");
int strength = (int) args.get("strength");
PotionEffectType potion = PotionEffectType.getByKey(potionKey);
// Add the potion effect to the target player
target.addPotionEffect(new PotionEffect(potion, duration, strength));
})
.register();