Custom Conditions

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 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!

More examples

For more examples on how to make conditions, check out the code of some official conditions in the GitHub repository.

Last updated