
🦊 FoxHomes | Modern Homes 1.0.0
A Modern, and developer-friendly homes plugin featuring MySQL/SQLite support and a powerful API.
🦊 FoxHomes | Modern, Fast & Developer-Friendly Homes Plugin
Introducing the most advanced homes plugin for your server, coded from scratch with performance and flexibility in mind. FoxHomes is designed to meet the needs of players and administrators alike. And best of all, it's completely free!
✨ Core Features
- Performance-Focused: All database operations are asynchronous, ensuring your server never experiences lag from this plugin.
- Broad Version Support: Works flawlessly on Spigot/Paper from 1.8.8 to the latest Minecraft version.
- Hex Color Support: Use modern color codes in all messages for a vibrant, custom look on 1.16+ servers.
- Database Options: Supports both SQLite for simple, file-based storage and MySQL for advanced, large-scale networks.
- Powerful Developer API: Includes a cancellable pre-teleport event, chunk-based home lookups, and more for deep integration.
- Fully Customizable: All messages, teleport delays, home limits, and more can be configured to your liking.
- Multi-Language Support: Easily translate the plugin using the provided
en.yml
andtr.yml
language files. - Advanced Permission System: Assign custom home limits, teleport cooldowns, and bypass permissions to different players or groups.
💻 Commands & Permissions
Player Commands
/sethome <name> |
Sets a new home. | foxhomes.sethome |
/delhome <name> |
Deletes one of your homes. | foxhomes.delhome |
/home <name> |
Teleports to your home. | foxhomes.home |
/homelist |
Lists all of your homes. | foxhomes.homelist |
Admin Commands
/foxhomes reload |
Reloads the plugin's configuration. | foxhomes.admin |
/foxhomes list <player> |
Lists a player's homes. | foxhomes.admin |
/foxhomes delhome <player> <name> |
Deletes a player's home. | foxhomes.admin |
All Permissions
foxhomes.sethome - Permission for the /sethome command.
foxhomes.delhome - Permission for the /delhome command.
foxhomes.home - Permission for the /home command.
foxhomes.homelist - Permission for the /homelist command.
foxhomes.admin - Permission for all /foxhomes admin commands.
foxhomes.unlimited - Allows setting an unlimited number of homes.
foxhomes.maxhomes.<number> - Sets a specific home limit (e.g., foxhomes.maxhomes.10).
foxhomes.bypass.move - Bypasses teleport cancellation on movement.
foxhomes.bypass.cooldown - Bypasses the teleport delay entirely.
foxhomes.cooldown.<seconds> - Sets a custom teleport delay for a player/group.
👩💻 Developer API
FoxHomes offers a powerful API for easy integration. Simply add it as a dependency to your project via JitPack.
1. Dependency Setup
Add depend: [FoxHomes]
to your plugin.yml
. Then, add the JitPack repository and the dependency to your build system:
Maven (pom.xml)
<repositories>
<repository>
<id>jitpack.io</id>
<url>https://jitpack.io</url>
</repository>
</repositories>
<dependencies>
<dependency>
<groupId>com.github.benardamorkoc</groupId>
<artifactId>foxhomes</artifactId>
<version>1.0.0</version>
<scope>provided</scope>
</dependency>
</dependencies>
2. API Usage Examples
Getting Home Data
The API is fully asynchronous. Use CompletableFuture
to handle results without lagging the server.
// Get the API instance via the Bukkit Services Manager
RegisteredServiceProvider<FoxHomesAPI> rsp = getServer().getServicesManager().getRegistration(FoxHomesAPI.class);
if (rsp == null) return;
FoxHomesAPI api = rsp.getProvider();
// Get all homes in a specific chunk
api.getHomesInChunk(player.getLocation().getChunk()).thenAccept(homesInChunk -> {
player.sendMessage("Found " + homesInChunk.size() + " homes in this chunk.");
});
Listening to Events
You can cancel teleports or modify the destination by listening to the HomePreTeleportEvent
.
import com.foxhomes.api.events.HomePreTeleportEvent;
import org.bukkit.event.EventHandler;
import org.bukkit.event.Listener;
public class MyListener implements Listener {
@EventHandler
public void onHomeTeleport(HomePreTeleportEvent event) {
// Prevent teleporting from the "arena" world
if (event.getPlayer().getWorld().getName().equals("arena")) {
event.getPlayer().sendMessage("You cannot teleport from the arena!");
event.setCancelled(true);
}
}
}
Have an issue or a suggestion?
For support, you can use the GitHub Issues page or join our Discord Server.