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 EntitySelectorArgument.OnePlayer 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 EntitySelectorArgument.OnePlayer("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 EntitySelectorArgument.OnePlayer("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();