Learn how to create custom Tooltips conditions in your plugin
Create a condition class
For this example, let's create a condition that checks if the players food level is equal to or higher than a given amount. As a result, our condition will look like: hunger {amount=10}
import org.bukkit.entity.Player;
import fi.septicuss.tooltips.object.preset.condition.Condition;
import fi.septicuss.tooltips.object.preset.condition.argument.Arguments;
import fi.septicuss.tooltips.object.validation.Validity;
// Checks if players food level is above the given amount
public class Hunger implements Condition {
// These are the aliases for arguments.
// You can yourself decide which aliases can be used.
private static final String[] AMOUNT = {"amt", "amount"};
// Returns whether this condition is true with the
// given arguments
@Override
public boolean check(Player player, Arguments args) {
int amount = args.get(AMOUNT).getAsInt();
int foodLevel = player.getFoodLevel();
return (foodLevel >= amount);
}
// This method is triggered, when either the condition is true
// and more context is needed or when its skipped. So this
// method may be called if true or not.
//
// Put the context that this condition returns
@Override
public void writeContext(Player player, Arguments args, Context context) {
context.put("food", player.getFoodLevel());
}
// This method is used to check, whether the arguments are valid.
// Once this check is complete, you can safely use the arguments in the
// above check method.
@Override
public Validity valid(Arguments args) {
if (!args.has(AMOUNT)) {
return Validity.of(false, "Amount argument is missing!");
}
if (!args.isNumber(AMOUNT)) {
return Validity.of(false, "Amount argument must be a number!");
}
return Validity.TRUE;
}
}
Register the condition
Register this condition in your plugins onLoad like so:
@Override
public void onLoad() {
TooltipsAPI.registerCondition("hunger", new Hunger());
}
Restart the server
Once the server loads, your condition should be in Tooltips!