📖 About
Skyllia is a modern, high-performance Skyblock plugin, designed from the ground up to fully leverage the multi-threaded architecture of Folia. The first of its kind to offer native Folia compatibility, Skyllia delivers exceptional performance even with hundreds of simultaneous players.
✨ Key Features
🚀 Performance & Architecture
- First Folia-compatible Skyblock plugin — Native multi-threaded architecture
- Asynchronous system — No freezes, no lag (as long as your server configuration allows)
💾 Data Management
- Database support — SQLite, MariaDB, PostgreSQL
- HikariCP connection pool — Optimal performance
- Asynchronous saving — Zero performance impact
🏝️ Island Management
- Instant creation — Optimized queue system
- Customizable schematics — WorldEdit/FAWE or built-in system
- Multi-world — Overworld, Nether, End all configurable
- Automatic portals — Smooth navigation between dimensions
- Configurable spacing — Adjustable distance between islands
👥 Permission System
- 6 predefined roles — Owner, Co-Owner, Moderator, Member, Visitor, Ban
- 50+ granular permissions — Full control per role
- Temporary trust — Configurable guest access
- Modular system — Create your own permission
🎯 Advanced Features
- Island warps — Quick teleportation to your island
- Customizable biomes — Change the atmosphere of your island
- Per-island game rules — PvP, mobs, explosions, etc.
- Ban system — Ban griefers from your island
- Invitations — Invitation system with expiry
🔌 Integrations
- PlaceholderAPI — Variables for scoreboard, tab, etc.
- Vault — Economy support (via SkylliaBank)
- WorldEdit/FAWE — High-performance schematics
- Insights — Block limits (via SkylliaInsights)
🎮 Official Addons
Extend Skyllia with 7 free official addons:
| Addon | Description |
|---|---|
| SkylliaBank | Shared island bank system with transaction history |
| SkylliaOre | Configurable automatic ore generator |
| SkylliaChallenge | Daily/weekly challenges with rewards |
| SkylliaChat | Per-island chat with multiple channels |
| SkylliaInsights | Block and entity limits per island |
| SkylliaChest | Share a chest across your entire island (beta) |
| SkylliaAcidRain | The water is becoming acidic! |
| SkylliaIslandValue | Island value depends on the number of blocks placed on the island |
📋 Requirements
- Server: Folia 1.20.6+ or Paper 1.20.6+
- Java: 21
- RAM: 4GB minimum, 8GB+ recommended
- Database (optional): MariaDB 10.5+ or PostgreSQL 12+ (prefer PostgreSQL for large servers)
Compatible plugins (optional)
- WorldEdit (recommended) or FastAsyncWorldEdit
- Vault (for SkylliaBank)
- PlaceholderAPI (for placeholders)
- LuckPerms (for server permissions)
- QuickShop-Hikari (for shop island)
🚀 Quick Installation
- Download Skyllia from Modrinth or GitHub Releases
- Place the .jar in
plugins/ - Start the server (first initialization)
- Configure in
plugins/Skyllia/config/ - Restart and you're good to go!
Minimal Configuration
# config.toml
[settings.island]
region-distance = 10 # 5120 blocks between islands, 1 region = 512x512
max-islands = 500_000
# database.toml - SQLite by default
[sqlite]
enabled = true
For a full installation guide, check the [documentation]().
📚 Documentation
Full documentation is available on GitBook:
💻 For Developers
Skyllia provides a complete API to create your own addons:
<!-- Maven -->
<repository>
<id>euphyllia-repo</id>
<url>https://repo.euphyllia.moe/repository/maven-public/</url>
</repository>
<dependency>
<groupId>fr.euphyllia.skyllia</groupId>
<artifactId>api</artifactId>
<version>3.x</version>
<scope>provided</scope>
</dependency>
import fr.euphyllia.skyllia.api.SkylliaAPI;
import fr.euphyllia.skyllia.api.island.Island;
import org.bukkit.entity.Player;
import org.bukkit.event.EventHandler;
import org.bukkit.event.player.PlayerJoinEvent;
import org.bukkit.event.Listener;
public class MyPlugin implements Listener {
@EventHandler
public void onPlayerJoin(PlayerJoinEvent event) {
Player player = event.getPlayer();
Island island = SkylliaAPI.getIslandByPlayerId(player.getUniqueId());
if (island != null) {
player.sendMessage("Your island: " + island.getId());
}
}
}
See the API documentation for more information.
🎯 Main Commands
Players
/island create <type> - Create an island
/island home - Teleport to your island
/island invite <player> - Invite a player
/island delete - Delete your island
/island biome <biome> - Change the biome
/island expel <player> - Expel a visitor
Administrators
/isadmin reload - Reload configs
/isadmin setsize <player> <size> - Modify island size
/isadmin teleport <player> - TP to a player's island
🤝 Contributing
Skyllia is open source, you can contribute via:
- Bug reports — GitHub Issues
- Suggestions — Discord or GitHub Discussions
- Community addons — Share your creations!
📞 Support
- GitHub: Euphillya/Skyllia
- Issues: Report a bug
- Discord: Euphyllia Server
📜 License
Skyllia is licensed under the MIT License. For more details, see the LICENSE file in the GitHub repository.
All Versions
+ Add Version| Name | Game version | Platforms | Published | Downloads | Actions |
|---|---|---|---|---|---|
| 15h ago | 1 | ||||
| 15h ago | 1 | ||||
| 15h ago | 1 | ||||
| 15h ago | 1 | ||||
| 15h ago | 1 | ||||
| 15h ago | 1 | ||||
| 15h ago | 1 | ||||
| 15h ago | 1 | ||||
| 15h ago | 1 | ||||
| 15h ago | 1 | ||||
| 15h ago | 1 | ||||
| 15h ago | 1 | ||||
| 15h ago | 1 | ||||
| 15h ago | 1 | ||||
| 15h ago | 1 | ||||
| 15h ago | 1 | ||||
| 15h ago | 1 | ||||
| 15h ago | 1 | ||||
| 15h ago | 1 | ||||
| 15h ago | 1 | ||||
| 15h ago | 1 | ||||
| 15h ago | 1 | ||||
| 15h ago | 1 | ||||
| 15h ago | 1 | ||||
| 15h ago | 1 | ||||
| 15h ago | 1 | ||||
| 15h ago | 1 | ||||
| 15h ago | 1 | ||||
| 15h ago | 1 | ||||
| 15h ago | 1 | ||||
| 15h ago | 1 | ||||
| 15h ago | 1 | ||||
| 15h ago | 1 | ||||
| 15h ago | 1 | ||||
| 15h ago | 1 | ||||
| 15h ago | 1 | ||||
| 15h ago | 1 | ||||
| 15h ago | 1 | ||||
| 15h ago | 1 | ||||
| 15h ago | 1 | ||||
| 15h ago | 1 | ||||
| 15h ago | 1 | ||||
| 15h ago | 1 | ||||
| 15h ago | 1 | ||||
| 15h ago | 1 | ||||
| 15h ago | 1 | ||||
| 15h ago | 1 | ||||
| 15h ago | 1 | ||||
| 15h ago | 1 | ||||
| 15h ago | 1 | ||||
| 15h ago | 1 | ||||
| 15h ago | 1 | ||||
| 15h ago | 1 | ||||
| 15h ago | 1 | ||||
| 15h ago | 1 | ||||
| 15h ago | 1 | ||||
| 15h ago | 1 | ||||
| 15h ago | 1 | ||||
| 15h ago | 1 | ||||
| 15h ago | 1 | ||||
| 15h ago | 1 | ||||
| 15h ago | 1 | ||||
| 15h ago | 1 | ||||
| 15h ago | 1 | ||||
| 15h ago | 1 | ||||
| 15h ago | 1 | ||||
| 15h ago | 1 | ||||
| 15h ago | 1 | ||||
| 15h ago | 1 | ||||
| 15h ago | 1 | ||||
| 15h ago | 1 | ||||
| 15h ago | 1 | ||||
| 15h ago | 1 | ||||
| 15h ago | 1 | ||||
| 15h ago | 1 | ||||
| 15h ago | 1 | ||||
| 15h ago | 1 | ||||
| 15h ago | 1 | ||||
| 15h ago | 1 | ||||
| 15h ago | 1 | ||||
| 15h ago | 1 | ||||
| 15h ago | 1 | ||||
| 15h ago | 1 | ||||
| 15h ago | 1 | ||||
| 15h ago | 1 | ||||
| 15h ago | 1 | ||||
| 15h ago | 1 | ||||
| 15h ago | 1 | ||||
| 15h ago | 1 | ||||
| 15h ago | 1 | ||||
| 15h ago | 1 | ||||
| 15h ago | 1 | ||||
| 15h ago | 1 | ||||
| 15h ago | 1 | ||||
| 15h ago | 1 | ||||
| 15h ago | 1 | ||||
| 15h ago | 1 | ||||
| 15h ago | 1 | ||||
| 15h ago | 1 | ||||
| 15h ago | 1 | ||||
| 15h ago | 1 | ||||
| 15h ago | 1 | ||||
| 15h ago | 1 | ||||
| 15h ago | 1 | ||||
| 15h ago | 1 | ||||
| 15h ago | 1 | ||||
| 15h ago | 1 | ||||
| 15h ago | 1 | ||||
| 15h ago | 1 | ||||
| 15h ago | 1 | ||||
| 15h ago | 1 | ||||
| 15h ago | 1 | ||||
| 15h ago | 1 | ||||
| 15h ago | 1 | ||||
| 15h ago | 1 | ||||
| 15h ago | 1 | ||||
| 15h ago | 1 | ||||
| 15h ago | 1 | ||||
| 15h ago | 1 | ||||
| 15h ago | 1 | ||||
| 15h ago | 1 | ||||
| 15h ago | 1 | ||||
| 15h ago | 1 | ||||
| 15h ago | 1 | ||||
| 15h ago | 1 | ||||
| 15h ago | 1 | ||||
| 15h ago | 1 | ||||
| 15h ago | 1 | ||||
| 15h ago | 1 | ||||
| 15h ago | 1 | ||||
| 15h ago | 1 | ||||
| 15h ago | 1 | ||||
| 15h ago | 1 | ||||
| 15h ago | 1 | ||||
| 15h ago | 1 | ||||
| 15h ago | 1 | ||||
| 15h ago | 1 | ||||
| 15h ago | 1 | ||||
| 15h ago | 1 | ||||
| 15h ago | 1 | ||||
| 15h ago | 1 | ||||
| 15h ago | 1 | ||||
| 15h ago | 1 | ||||
| 15h ago | 1 | ||||
| 15h ago | 1 | ||||
| 15h ago | 1 | ||||
| 15h ago | 1 | ||||
| 15h ago | 1 | ||||
| 15h ago | 1 | ||||
| 15h ago | 1 | ||||
| 15h ago | 1 | ||||
| 15h ago | 1 | ||||
| 15h ago | 1 | ||||
| 15h ago | 1 | ||||
| 15h ago | 1 | ||||
| 15h ago | 1 | ||||
| 15h ago | 1 | ||||
| 15h ago | 1 | ||||
| 15h ago | 1 | ||||
| 15h ago | 1 | ||||
| 15h ago | 1 | ||||
| 15h ago | 1 | ||||
| 15h ago | 1 | ||||
| 15h ago | 1 | ||||
| 15h ago | 1 | ||||
| 15h ago | 1 | ||||
| 15h ago | 1 | ||||
| 15h ago | 1 | ||||
| 15h ago | 1 | ||||
| 15h ago | 1 | ||||
| 15h ago | 1 | ||||
| 15h ago | 1 | ||||
| 15h ago | 1 | ||||
| 15h ago | 1 | ||||
| 15h ago | 1 | ||||
| 15h ago | 1 | ||||
| 15h ago | 1 | ||||
| 15h ago | 1 | ||||
| 15h ago | 1 | ||||
| 15h ago | 1 | ||||
| 15h ago | 1 | ||||
| 15h ago | 1 | ||||
| 15h ago | 1 | ||||
| 15h ago | 1 | ||||
| 15h ago | 1 | ||||
| 15h ago | 1 | ||||
| 15h ago | 1 | ||||
| 15h ago | 1 | ||||
| 15h ago | 1 | ||||
| 15h ago | 1 | ||||
| 15h ago | 1 | ||||
| 15h ago | 1 | ||||
| 15h ago | 1 | ||||
| 15h ago | 1 |
- Support 26.3 (#171)
- Prepare support 26.3
- Support 26.3
- Fix : Gravity blocks (Sand, Gravel) can be placed, if there is a valid block, even outside of an island.
- Fix : Piston Head can get out the island
- Clean code
- Throw cannot reset chunk async when chunk is null
- Potential fix https://github.com/Euphillya/Skyllia/issues/165
- fix(postgresql): use UUID for islands_build_height.island_id to fix FK creation failure
- Fix AreaName addon
- Insight support in the plugin (requires Insights 6.22+)
- Fix potential ConcurrentModificationException with translation configuration
- Use Island#getBannedMembers in /is visit + add papi key for island : banned_members_size
- fix(bank): reject NaN/Infinity amounts in deposits, withdrawals and Vault economy
- Use async folia for create island
- Update SkyblockCache
- Faire la liste des commits
- Add cache name and description island
- Added a preliminary check for the unlikely scenario where two islands might share the same region.
- Change: Added a maximum number of islands the server will create simultaneously (players beyond this limit wait in the queue, as before).
- Load an island when loading a chunk
- Fix javadoc SkylliaAPI + SkylliaImplementation
The
getName, getDescription, setName, and setDescription methods from the SkylliaExtra add-on have been merged directly into the main plugin (Island class). You can remove SkylliaExtra with this build; existing island names should remain intact, though the placeholders have changed slightly—for example, %skyllia_name% instead of %skylliaextra_name%.Close: https://github.com/Euphillya/Skyllia/issues/147
- Generate default config for SkylliaChat
- Add default SkylliaChat config
- Use TOML config for SkylliaChat
- Use TOML config for SkylliaChat
- Add SkylliaChat config loader
- Read SkylliaChat format from TOML config
- Remove Bukkit config from SkylliaChat
- Read SkylliaChat format from TOML config
- Log SkylliaChat config load exceptions
refactor plugin hooks
The island creation flow now chains the schematic paste future into the future returned by
runCreateIsland().This prevents the creation queue from moving to the next request before the previous island paste work has completed.
Post-teleport player updates are also scheduled through the player scheduler after teleport completion.
## Why
The queue uses the returned future to decide when the next island creation can start. If the paste future is started but not returned, the queue can continue too early.
The changes keep the existing creation flow and schematic hook selection intact.
- fix: align default island schematic keys
- fix: use configured default island key for create
- fix: use configured default island key for admin create
- fix: guard shutdown after partial startup
/isadmin reload clears the island schematic cache (no need to restart to modify a schematic)
/is delete confirm incorrectly returned an error when no island could be deleted based on the configuration.
This commit:
- checks for permissions to create a shop on a player's island
- removes a shop if the player leaves the island
- removes shops if the island is deleted
- verifies that the island is valid before allowing purchases on it
It also adds new APIs:
- SkyblockRemoveMemberEvent, triggered when an island member leaves, is banned, or is kicked from an island
- A new PluginHook interface to facilitate adding future support
- LanguageProvider, allowing translations to be handled via the API instead of relying on the plugin module