🦊 FoxHomes | Modern Homes icon

🦊 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 and tr.yml language files.
  • Advanced Permission System: Assign custom home limits, teleport cooldowns, and bypass permissions to different players or groups.

🖼️ Gallery & Showcase Video

0.jpg

💻 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.

home