API Examples
Model ID Change
As of release 5.2.0.0, all model IDs use Twitter Snowflake IDs instead of UUID v4.
Creating a Region
import org.bukkit.Bukkit;
import org.bukkit.entity.Player;
import tfagaming.projects.minecraft.homestead.managers.RegionManager;
import tfagaming.projects.minecraft.homestead.models.Region;
Player player = Bukkit.getPlayer("TFA_Gaming");
Region region = RegionManager.createRegion("ExampleRegion", player);
Fetching a Region
import tfagaming.projects.minecraft.homestead.managers.RegionManager;
import tfagaming.projects.minecraft.homestead.models.Region;
// By name (case-insensitive)
Region region = RegionManager.findRegion("ExampleRegion");
// By ID
Region region = RegionManager.findRegion(309031393541763072L);
Deleting a Region
import tfagaming.projects.minecraft.homestead.managers.RegionManager;
long regionId = 309031393541763072L;
Region region = RegionManager.findRegion(regionId);
if (region != null) {
RegionManager.deleteRegion(regionId);
}
Claiming a Chunk
import org.bukkit.Chunk;
import tfagaming.projects.minecraft.homestead.managers.ChunkManager;
import tfagaming.projects.minecraft.homestead.models.Region;
Region region = ...;
Chunk chunk = ...;
ChunkManager.Error error = ChunkManager.claimChunk(region.getUniqueId(), chunk);
if (error == null) {
// Success
} else {
// Handle error
}
Unclaiming a Chunk
import org.bukkit.Chunk;
import tfagaming.projects.minecraft.homestead.managers.ChunkManager;
import tfagaming.projects.minecraft.homestead.models.Region;
Region region = ...;
Chunk chunk = ...;
ChunkManager.Error error = ChunkManager.unclaimChunk(region.getUniqueId(), chunk);
if (error == null) {
// Success
}
Managing Members
import org.bukkit.Bukkit;
import org.bukkit.entity.Player;
import tfagaming.projects.minecraft.homestead.managers.InviteManager;
import tfagaming.projects.minecraft.homestead.models.Region;
Player target = Bukkit.getPlayer("test_account");
Region region = ...;
// Invite a player
InviteManager.invitePlayer(region, target);
// Delete invites of a player
InviteManager.deleteInvitesOfPlayer(player);
// Delete invites of a region
InviteManager.deleteInvitesOfRegion(region);
// Get invites of a player
InviteManager.getInvitesOfPlayer(player);
// Get invites of a region
InviteManager.getInvitesOfRegion(region);
// Check if invited
boolean invited = InviteManager.isInvited(region, player);
Working with Flags
import tfagaming.projects.minecraft.homestead.flags.*;
import tfagaming.projects.minecraft.homestead.models.Region;
Region region = ...;
// Get flag values
long playerFlags = region.getPlayerFlags();
long worldFlags = region.getWorldFlags();
// Get all flag names
List<String> flagNames = PlayerFlags.getAll();
// Get a specific flag value
long flag = PlayerFlags.valueOf("break-blocks");
// Modify flags
long newFlags = FlagsCalculator.addFlag(playerFlags, PlayerFlags.BREAK_BLOCKS);
// → Non-members CAN break blocks
newFlags = FlagsCalculator.removeFlag(playerFlags, PlayerFlags.CONTAINERS);
// → Non-members CANNOT open containers
// Check if a flag is set
if (FlagsCalculator.isFlagSet(playerFlags, PlayerFlags.PVP)) {
// PvP is allowed
}
// Apply changes
region.setPlayerFlags(newFlags);
Don't Mix Flag Types
Each flag class (PlayerFlags, WorldFlags, ControlFlags) has its own values. Don't use WorldFlags values for player flags.
Listening to Events
import org.bukkit.event.EventHandler;
import org.bukkit.event.Listener;
import tfagaming.projects.minecraft.homestead.api.events.*;
public class HomesteadListener implements Listener {
@EventHandler
public void onChunkClaim(ChunkClaimEvent event) {
event.getRegion(); // The region
event.getChunk(); // The chunk being claimed
}
@EventHandler
public void onRegionCreate(RegionCreateEvent event) {
event.getRegion();
}
@EventHandler
public void onPlayerJoinRegion(PlayerJoinRegionEvent event) {
event.getPlayer();
event.getRegion();
}
@EventHandler
public void onBankDeposit(BankDepositEvent event) {
event.getPlayer();
event.getRegion();
event.getAmount();
}
@EventHandler
public void onRegionChat(RegionChatEvent event) {
event.getSender();
event.getMessage();
event.getRegion();
}
}