API

The API is only available for Homestead 3.0.0 and higher.

To access the Homestead API in your plugin, download the Homestead .jar file from SpigotMC and upload it as a third-party JAR to your project. Click here or here for the guide to installing the dependency.

Getting the API:

public void onEnable() {
	if (getServer().getPluginManager().getPlugin("Homestead") != null) {
		// Get the API
		homestead.api.APIInterface api = homestead.Plugin.getInstance().getAPI();
		
		// Get the version of the installed plugin
		String version = homestead.Plugin.getVersion();
		
		Logger.info("Homestead version: " + version);
	}
}

Regions:

Get all regions (without any filter):

for (homestead.core.types.Region region : api.getRegions()) {
    Logger.info("Region name: " + region.getName());
}

Get all regions owned by a player:

Player player = Bukkit.getPlayer("TFAGaming");

for (homestead.core.types.Region region : api.getRegions(player)) {
    Logger.info("Region name: " + region.getName());
}

Get a region by name:

String name = "ExampleRegionName";

homestead.core.types.Region region = api.getRegion(name);

if (region == null) {
    Logger.severe("There is no such a region with the name '" + name + "'!");
} else {
    Logger.info("Region ID: " + region.getId());
}

Region Members:

// Get all members
region.getMembers();

// Get specific member's data
Player player = Bukkit.getPlayer("TFAGaming");

homestead.core.types.SerializableMember member = region.getMember(player);

if (member == null) return;

// Get the member's flags
long flags = member.getFlags();

// Set member's flags
long newFlags = 19394461696L;

RegionsManager.setMemberFlags(region.getId(), player, newFlags);

Sub-Areas:

Get all sub-areas (without any filter):

for (homestead.core.types.SubArea subArea : api.getSubAreas()) {
    Logger.info("Sub-Area name: " + subArea.getName());
}

Get all sub-areas part of a region:

UUID regionId = region.getId();

for (homestead.core.types.SubArea subArea : api.getSubAreas(regionId)) {
    Logger.info("Sub-Area name: " + subArea.getName());
}

Managing Flags:

This example also works for Sub-Area flags and Member flags.

For Environment flags, use homestead.core.flags.WorldFlags.

import homestead.core.flags.FlagsCalculator;

// Getting global player flags from a region
long flags = region.getPlayerFlags();

// Add or remove a flag to/from flags
flags = FlagsCalculator.calculate(flags, homestead.core.flags.PlayerFlags.BREAK_BLOCKS);
flags = FlagsCalculator.removeFlag(flags, homestead.core.flags.PlayerFlags.ELYTRA);

// Check if a flag is set
boolean isSet = FlagsCalculator.isFlagSet(flags, homestead.core.flags.PlayerFlags.INTERACT_ENTITIES);

Logger.info(isSet ? "The flag is in Allow state" : "The flag is in Deny state");

// Update flags for the region's global player flags
region.setPlayerFlags(flags);

If you have any questions about the API, please request support via Discord or GitHub.

Last updated