Giter VIP home page Giter VIP logo

skyllia's Introduction

Wiki

Contact :

Join us on Discord

bStats

Plugin Skyblock for Minecraft

Skyllia is a Skyblock plugin that will essentially run on Folia, but work on Spigot and Paper (1.17+). The plugin will have very little innovative functionality, and it's not my intention at all that there should be external features (like quests, for example). The plugin has an API that you can use to add feature extensions to customize your server.

Download Plugin

API

Gradle Groovy

repositories {
    maven {
        url = uri("https://maven.pkg.github.com/Euphillya/Skyllia")
    }
}

dependencies {
    compileOnly("fr.euphyllia.skyllia:api:VERSION")
}

Example :

import fr.euphyllia.skyllia.api.SkylliaAPI;
import fr.euphyllia.skyllia.api.skyblock.Island;

import java.util.UUID;

Island playerIsland = SkylliaAPI.getIslandByPlayerId(player.getUniqueId()).join();
UUID islandId = playerIsland.getId();

Compatible Software

Software Version
PaperMC 1.17-1.20.4
Purpur 1.17-1.20.4
Folia 1.19.4-1.20.4
Spigot(Not Recommended) 1.17-1.20.4

Generation Island

Each island will be generated on a single region file with distance region configurable!

Addons

skyllia's People

Contributors

euphillya avatar haha252 avatar stabrinai avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar

skyllia's Issues

About Permission Node

Can we provide some information about permission nodes, so that we can use permission allocation plugins to assign permissions?
According to my recent test, I found that: if a new player joins the server, as long as we do not give him op permission, he has no permission to create a sky island.
Thank you!

Impossible de connaître l'île d'un joueur avec l'API actuel

Pour le moment, seul des classes sont disponibles sur l'API et impossible de connaître qui est à quoi sauf en utilisant directement le code du plugin. C'est très chiant !

Donc à implémenter au minimum :

Skyllia#getIslandByPlayerId(UUID playerId) -> Island
Skyllia#getIslandByIslandId(UUID islandId) -> Island

Some questions.

1.How players become co_owner
2.I tried kick but it didn't work, so I want to know how to move the player out of member
3.Visitors cannot open the menu,Is it because of [inventory] permission that visitors cannot open the menu?
menu is zmenu,but command can work,item click dont work

Suggestion: skyllia.island.max_size/max_members permission

I hope this is not out of scope for this plugin, but it'd be amazing if there could be a permission to set the maximum size as a radius from the center of the island in blocks. For example skyllia.island.max_size.160 would limit building further than than 160 blocks away from the center in any direction.

portal-nether error

If the player builds and walks in, he will not be able to move at all
[worlds.sky-overworld.portal-nether]
enabled = false

Exception on stop after first run server

[14:16:59 FATAL]: [fr.euphyllia.skyllia.api.database.execute.MariaDBExecute] [MARIADB] - Query :     INSERT IGNORE INTO `sky_folia`.`spiral`
    (id, region_x, region_z)
    VALUES(?, ?, ?);

fr.euphyllia.skyllia.api.exceptions.DatabaseException: Cannot get connection to the database
	at fr.euphyllia.skyllia.api.database.execute.MariaDBExecute.executeQuery(MariaDBExecute.java:45) ~[Skyllia-1.0-RC3.2-all.jar:?]
	at fr.euphyllia.skyllia.database.query.MariaDBCreateTable.lambda$init$0(MariaDBCreateTable.java:145) ~[Skyllia-1.0-RC3.2-all.jar:?]
	at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1136) ~[?:?]
	at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:635) ~[?:?]
	at java.lang.Thread.run(Thread.java:840) ~[?:?]
[14:16:59 WARN]: Exception in thread "pool-16-thread-1" java.lang.RuntimeException: fr.euphyllia.skyllia.api.exceptions.DatabaseException: fr.euphyllia.skyllia.api.exceptions.DatabaseException: Cannot get connection to the database
[14:16:59 WARN]: 	at Skyllia-1.0-RC3.2-all.jar//fr.euphyllia.skyllia.database.query.MariaDBCreateTable.lambda$init$0(MariaDBCreateTable.java:147)
[14:16:59 WARN]: 	at java.base/java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1136)
[14:16:59 WARN]: 	at java.base/java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:635)
[14:16:59 WARN]: 	at java.base/java.lang.Thread.run(Thread.java:840)
[14:16:59 WARN]: Caused by: fr.euphyllia.skyllia.api.exceptions.DatabaseException: fr.euphyllia.skyllia.api.exceptions.DatabaseException: Cannot get connection to the database
[14:16:59 WARN]: 	at Skyllia-1.0-RC3.2-all.jar//fr.euphyllia.skyllia.api.database.execute.MariaDBExecute.executeQuery(MariaDBExecute.java:59)
[14:16:59 WARN]: 	at Skyllia-1.0-RC3.2-all.jar//fr.euphyllia.skyllia.database.query.MariaDBCreateTable.lambda$init$0(MariaDBCreateTable.java:145)
[14:16:59 WARN]: 	... 3 more
[14:16:59 WARN]: Caused by: fr.euphyllia.skyllia.api.exceptions.DatabaseException: Cannot get connection to the database
[14:16:59 WARN]: 	at Skyllia-1.0-RC3.2-all.jar//fr.euphyllia.skyllia.api.database.execute.MariaDBExecute.executeQuery(MariaDBExecute.java:45)
[14:16:59 WARN]: 	... 4 more

About /is delete

First I create 2 kinds of island, and altered it. Like this.
Screenshot_20240120-163057
Then I deleted it, and tp to the place where the island was.
but island was still there.
Screenshot_20240120-163751
then i create the island, but it made no different.
Screenshot_20240120-164008
Hope to fix!
Thank you for debug!

SQLException caused by RSA public key

[02:56:01 FATAL]: [fr.euphyllia.skyllia.api.database.sgbd.MariaDB] RSA public key is not available client side (option serverRsaPublicKeyFile not set)
java.sql.SQLException: RSA public key is not available client side (option serverRsaPublicKeyFile not set)
	at org.mariadb.jdbc.plugin.authentication.standard.CachingSha2PasswordPlugin.process(CachingSha2PasswordPlugin.java:221) ~[Skyllia-1.0-RC3.2-all.jar:?]
	at org.mariadb.jdbc.client.impl.ConnectionHelper.authenticationHandler(ConnectionHelper.java:264) ~[Skyllia-1.0-RC3.2-all.jar:?]
	at org.mariadb.jdbc.client.impl.StandardClient.<init>(StandardClient.java:194) ~[Skyllia-1.0-RC3.2-all.jar:?]
	at org.mariadb.jdbc.Driver.connect(Driver.java:69) ~[Skyllia-1.0-RC3.2-all.jar:?]
	at org.mariadb.jdbc.Driver.connect(Driver.java:95) ~[Skyllia-1.0-RC3.2-all.jar:?]
	at org.mariadb.jdbc.Driver.connect(Driver.java:26) ~[Skyllia-1.0-RC3.2-all.jar:?]
	at com.zaxxer.hikari.util.DriverDataSource.getConnection(DriverDataSource.java:137) ~[Skyllia-1.0-RC3.2-all.jar:?]
	at com.zaxxer.hikari.pool.PoolBase.newConnection(PoolBase.java:360) ~[Skyllia-1.0-RC3.2-all.jar:?]
	at com.zaxxer.hikari.pool.PoolBase.newPoolEntry(PoolBase.java:202) ~[Skyllia-1.0-RC3.2-all.jar:?]
	at com.zaxxer.hikari.pool.HikariPool.createPoolEntry(HikariPool.java:461) ~[Skyllia-1.0-RC3.2-all.jar:?]
	at com.zaxxer.hikari.pool.HikariPool.checkFailFast(HikariPool.java:550) ~[Skyllia-1.0-RC3.2-all.jar:?]
	at com.zaxxer.hikari.pool.HikariPool.<init>(HikariPool.java:98) ~[Skyllia-1.0-RC3.2-all.jar:?]
	at com.zaxxer.hikari.HikariDataSource.getConnection(HikariDataSource.java:111) ~[Skyllia-1.0-RC3.2-all.jar:?]
	at fr.euphyllia.skyllia.api.database.sgbd.MariaDB.onLoad(MariaDB.java:41) ~[Skyllia-1.0-RC3.2-all.jar:?]
	at fr.euphyllia.skyllia.api.database.DatabaseLoader.loadDatabase(DatabaseLoader.java:25) ~[Skyllia-1.0-RC3.2-all.jar:?]
	at fr.euphyllia.skyllia.api.InterneAPI.setupSGBD(InterneAPI.java:129) ~[Skyllia-1.0-RC3.2-all.jar:?]
	at fr.euphyllia.skyllia.Main.onEnable(Main.java:60) ~[Skyllia-1.0-RC3.2-all.jar:?]
	at org.bukkit.plugin.java.JavaPlugin.setEnabled(JavaPlugin.java:287) ~[folia-api-1.20.4-R0.1-SNAPSHOT.jar:?]
	at io.papermc.paper.plugin.manager.PaperPluginInstanceManager.enablePlugin(PaperPluginInstanceManager.java:188) ~[folia-1.20.4.jar:git-Folia-21]
	at io.papermc.paper.plugin.manager.PaperPluginManagerImpl.enablePlugin(PaperPluginManagerImpl.java:104) ~[folia-1.20.4.jar:git-Folia-21]
	at org.bukkit.plugin.SimplePluginManager.enablePlugin(SimplePluginManager.java:507) ~[folia-api-1.20.4-R0.1-SNAPSHOT.jar:?]
	at org.bukkit.craftbukkit.v1_20_R3.CraftServer.enablePlugin(CraftServer.java:645) ~[folia-1.20.4.jar:git-Folia-21]
	at org.bukkit.craftbukkit.v1_20_R3.CraftServer.enablePlugins(CraftServer.java:556) ~[folia-1.20.4.jar:git-Folia-21]
	at net.minecraft.server.MinecraftServer.loadWorld0(MinecraftServer.java:713) ~[folia-1.20.4.jar:git-Folia-21]
	at net.minecraft.server.MinecraftServer.loadLevel(MinecraftServer.java:458) ~[folia-1.20.4.jar:git-Folia-21]
	at net.minecraft.server.dedicated.DedicatedServer.initServer(DedicatedServer.java:309) ~[folia-1.20.4.jar:git-Folia-21]
	at net.minecraft.server.MinecraftServer.runServer(MinecraftServer.java:1217) ~[folia-1.20.4.jar:git-Folia-21]
	at net.minecraft.server.MinecraftServer.lambda$spin$0(MinecraftServer.java:346) ~[folia-1.20.4.jar:git-Folia-21]
	at java.lang.Thread.run(Thread.java:840) ~[?:?]
[02:56:01 FATAL]: [fr.euphyllia.skyllia.Main] fr.euphyllia.skyllia.api.exceptions.DatabaseException: java.sql.SQLException: RSA public key is not available client side (option serverRsaPublicKeyFile not set)
fr.euphyllia.skyllia.api.exceptions.DatabaseException: java.sql.SQLException: RSA public key is not available client side (option serverRsaPublicKeyFile not set)
	at fr.euphyllia.skyllia.api.database.sgbd.MariaDB.onLoad(MariaDB.java:49) ~[Skyllia-1.0-RC3.2-all.jar:?]
	at fr.euphyllia.skyllia.api.database.DatabaseLoader.loadDatabase(DatabaseLoader.java:25) ~[Skyllia-1.0-RC3.2-all.jar:?]
	at fr.euphyllia.skyllia.api.InterneAPI.setupSGBD(InterneAPI.java:129) ~[Skyllia-1.0-RC3.2-all.jar:?]
	at fr.euphyllia.skyllia.Main.onEnable(Main.java:60) ~[Skyllia-1.0-RC3.2-all.jar:?]
	at org.bukkit.plugin.java.JavaPlugin.setEnabled(JavaPlugin.java:287) ~[folia-api-1.20.4-R0.1-SNAPSHOT.jar:?]
	at io.papermc.paper.plugin.manager.PaperPluginInstanceManager.enablePlugin(PaperPluginInstanceManager.java:188) ~[folia-1.20.4.jar:git-Folia-21]
	at io.papermc.paper.plugin.manager.PaperPluginManagerImpl.enablePlugin(PaperPluginManagerImpl.java:104) ~[folia-1.20.4.jar:git-Folia-21]
	at org.bukkit.plugin.SimplePluginManager.enablePlugin(SimplePluginManager.java:507) ~[folia-api-1.20.4-R0.1-SNAPSHOT.jar:?]
	at org.bukkit.craftbukkit.v1_20_R3.CraftServer.enablePlugin(CraftServer.java:645) ~[folia-1.20.4.jar:git-Folia-21]
	at org.bukkit.craftbukkit.v1_20_R3.CraftServer.enablePlugins(CraftServer.java:556) ~[folia-1.20.4.jar:git-Folia-21]
	at net.minecraft.server.MinecraftServer.loadWorld0(MinecraftServer.java:713) ~[folia-1.20.4.jar:git-Folia-21]
	at net.minecraft.server.MinecraftServer.loadLevel(MinecraftServer.java:458) ~[folia-1.20.4.jar:git-Folia-21]
	at net.minecraft.server.dedicated.DedicatedServer.initServer(DedicatedServer.java:309) ~[folia-1.20.4.jar:git-Folia-21]
	at net.minecraft.server.MinecraftServer.runServer(MinecraftServer.java:1217) ~[folia-1.20.4.jar:git-Folia-21]
	at net.minecraft.server.MinecraftServer.lambda$spin$0(MinecraftServer.java:346) ~[folia-1.20.4.jar:git-Folia-21]
	at java.lang.Thread.run(Thread.java:840) ~[?:?]
Caused by: java.sql.SQLException: RSA public key is not available client side (option serverRsaPublicKeyFile not set)
	at org.mariadb.jdbc.plugin.authentication.standard.CachingSha2PasswordPlugin.process(CachingSha2PasswordPlugin.java:221) ~[Skyllia-1.0-RC3.2-all.jar:?]
	at org.mariadb.jdbc.client.impl.ConnectionHelper.authenticationHandler(ConnectionHelper.java:264) ~[Skyllia-1.0-RC3.2-all.jar:?]
	at org.mariadb.jdbc.client.impl.StandardClient.<init>(StandardClient.java:194) ~[Skyllia-1.0-RC3.2-all.jar:?]
	at org.mariadb.jdbc.Driver.connect(Driver.java:69) ~[Skyllia-1.0-RC3.2-all.jar:?]
	at org.mariadb.jdbc.Driver.connect(Driver.java:95) ~[Skyllia-1.0-RC3.2-all.jar:?]
	at org.mariadb.jdbc.Driver.connect(Driver.java:26) ~[Skyllia-1.0-RC3.2-all.jar:?]
	at com.zaxxer.hikari.util.DriverDataSource.getConnection(DriverDataSource.java:137) ~[Skyllia-1.0-RC3.2-all.jar:?]
	at com.zaxxer.hikari.pool.PoolBase.newConnection(PoolBase.java:360) ~[Skyllia-1.0-RC3.2-all.jar:?]
	at com.zaxxer.hikari.pool.PoolBase.newPoolEntry(PoolBase.java:202) ~[Skyllia-1.0-RC3.2-all.jar:?]
	at com.zaxxer.hikari.pool.HikariPool.createPoolEntry(HikariPool.java:461) ~[Skyllia-1.0-RC3.2-all.jar:?]
	at com.zaxxer.hikari.pool.HikariPool.checkFailFast(HikariPool.java:550) ~[Skyllia-1.0-RC3.2-all.jar:?]
	at com.zaxxer.hikari.pool.HikariPool.<init>(HikariPool.java:98) ~[Skyllia-1.0-RC3.2-all.jar:?]
	at com.zaxxer.hikari.HikariDataSource.getConnection(HikariDataSource.java:111) ~[Skyllia-1.0-RC3.2-all.jar:?]
	at fr.euphyllia.skyllia.api.database.sgbd.MariaDB.onLoad(MariaDB.java:41) ~[Skyllia-1.0-RC3.2-all.jar:?]
	... 15 more

The exception is thrown even though useSSL = false. Something to try?

About function

Thank you very much for your code. I have successfully compiled it and placed it on the Folia1.20.2 server. However, I did not find a wiki on the usage and interface associated with it here (it seems that the wiki page has only one home?). Could you tell me how to use this plugin in the future?

Merci beaucoup pour votre code. Je l’ai compilé avec succès et l’ai placé sur le serveur Folia1.20.2. Cependant, je n’ai pas trouvé de wiki sur l’utilisation et l’interface associées ici (il semble que la page wiki n’ait qu’une seule page d’accueil ?). Pourriez-vous me dire comment utiliser ce plugin à l’avenir ?

(Translate by Newbing)

About Create An Island

I think we should give a certain amount of floating and slow falling effects when creating a sky island and teleporting the player to his sky island. Otherwise, it is easy to cause the errors in the video below:

screenrecorder-20240120-132519.mp4

as you see, i was transported below the island, and i fell to the void.QwQ.
Hope to add this function!

Duplicate Items Exploit

Right now a user can:

  1. Create an island
  2. Go to the chest
  3. Drop everything out of it
  4. Delete island
  5. Create island quickly
  6. All the items they dropped are still on the ground, duplicating the items

Changing Biome Seems to Hang Forever

Server: Paper: git-Paper-436
WorldEdit: 7.2.20
Skyllia: 1.0-RC5.1-all

When running /island biome BADLANDS for example, I get an in-progress message but after it seems to hang forever. I'm not sure how long this command is supposed to take, but after several minutes the biome doesn't change. Any further attempts gives an in-progress message.

English language.toml

I did a ChatGPT translation of language.toml, it turned out quite well:

config-version = 1
verbose = false

[island]
	[island.trust]
		sucess = "The player has been added to your trust list until the next restart or until you remove them directly. Note that a trusted person has the same permissions as a member of your island."
		not-enough-args = "The command is incomplete: /skyllia trust <player>"
	[island.access]
		close = "Your island is now closed."
		open = "Your island is now open."
	[island.expel]
		not-enough-args = "The command is incomplete: /skyllia expel <player>"
		player-not-in-island = "The player is not on your island."
		player-failed = "The player cannot be expelled from your island."
	[island.permission]
		fail-high-equals-status = "You cannot modify your own permissions or the permissions of roles higher than yours."
	[island.delete]
		success = "The island has been successfully deleted."
		only-owner = "Sorry, only the owner can execute this command."
	[island.ban]
		failed-player-in-island = "The player cannot be banned as they are a member of your island."
		success = "The player has been banned from your island."
		not-enough-args = "The command is incomplete: /skyllia ban <player>"
	[island.generic]
		not-member = "The player is not a member of the island."
		error = "An error occurred. Please contact an administrator."
		only-owner = "Only the island owner can do this."

		[island.generic.location]
			not-safe = "The location is not safe! Teleportation not possible."
		[island.generic.player]
			not-found = "The player is not found."
			offline = "The player is offline."
			no-island = "You do not have an island!"
			permission-denied = "You do not have permission to do this."
			already-exist = "You already have an island."
			command-already-execution = "The command is already being executed, please wait a moment."
			not-in-island = "You must be on your island."
	[island.home]
		success = "You have been teleported to your island."

		[island.home.set]
			success = "You have updated your home!"
	[island.promote]
		fail = "Player %s cannot be promoted."
		fail-high-equals-status = "You cannot promote a player to your rank or higher."
		success = "Player %s has been promoted."
		not-enough-args = "The command is incomplete: /skyllia promote <member>"
	[island.unban]
		success = "The player has been unbanned."
		player-not-banned = "The player is not banned."
		not-enough-args = "The command is incomplete: /skyllia unban <player>"
		failed = "The player was not banned for an unknown reason."
	[island.demote]
		fail = "Player %s cannot be demoted."
		fail-high-equals-status = "You cannot demote a player of your rank or higher."
		success = "Player %s has been demoted."
		not-enough-args = "The command is incomplete: /skyllia demote <member>"
	[island.gamerule]
		success = "The gamerule has been updated."
		not-enough-args = "The command is incomplete: /skyllia gamerule <GAMERULE> <true/false>"
		failed = "An error occurred while updating the gamerule."
		gamerule-invalid = "The gamerule does not exist."
	[island.kick]
		fail-high-equals-status = "You cannot kick a player of your rank or higher."
		success = "You are now a member of the island!"
		failed = "The player could not be kicked. If the problem persists, contact an administrator."
		not-enough-args = "The command is incomplete: /skyllia kick <player>"
	[island.biome]
		change-in-progress = "Biome change in progress. Please note that it takes time... A message will alert you when the process is complete."
		success = "Biome change in the chunk where you were is complete!"
		only-island = "The command can only be executed on an island."
		not-enough-args = "The command is incomplete: /skyllia biome <biome>"
		biome-not-exist = "The biome %s does not exist."
	[island.leave]
		success = "You have left your island."
		failed = "You could not leave your island. If the problem persists, contact an administrator."
		he-is-owner = "You cannot leave your island because you are the owner!"
	[island.permissions]
		permissions-invalid = "This permission does not exist."
		role-invalid = "The role is invalid, possibilities: <OWNER/CO_OWNER/MODERATOR/MEMBER/VISITOR/BAN>"
		not-enough-args = "The command is incomplete: /skyllia permission <island/commands/inventory> <OWNER/CO_OWNER/MODERATOR/MEMBER/VISITOR/BAN> <PERMISSION_NAME> <true/false>"
		permission-type-invalid = "The type is invalid, possibilities: <island/commands/inventory>"

		[island.permissions.update]
			success = "Permission has been updated!"
			failed = "The change could not be made."
	[island.transfert]
		success = "The new owner of the island is: %new_owner%"
	[island.create]
		type-no-exist = "The selected island type does not exist."
		finish = "Welcome to your island!"
		error = "An error occurred while creating the island."
		in-progress = "The island is being created"
		schem-no-exist = "The schematic to create the island does not exist."
	[island.untrust]
		success = "The member is no longer part of your trusts."
		not-enough-args = "The command is incomplete: /skyllia untrust <player>"
		failed = "The command is incomplete: /skyllia untrust <player>"
	[island.invite]
		already-on-an-island = "You are already on an island!"
		not-enough-args = "The command is incomplete: /skyllia invite <add/accept/decline> <player/island_owner>"

		[island.invite.add]
			notification-player = "Player %player_invite% has invited you to their island. To accept: /skyllia invite accept %player_invite%. To decline: /skyllia invite decline %player_invite%"
			pending = "Player %s has been invited successfully. Waiting for a response..."
			not-enough-args = "You must specify which island you want to decline: /skyllia invite add <player>"
		[island.invite.decline]
			owner-not-island = "The island of player %s was not found."
			not-enough-args = "You must specify which island you want to decline: /skyllia invite decline <island_owner>"
		[island.invite.accept]
			owner-not-island = "The island of player %s was not found."
			success = "You are now a member of the island!"
			max-member-exceeded = "The maximum member limit of the island has been reached. You cannot join the island."
			not-enough-args = "You must specify which island you want to join: /skyllia invite accept <island_owner>"
	[island.visit]
		island-not-open = "The island is closed."
		success = "You have been teleported to %player%'s island."
		player-not-island = "The player does not have an island."
		not-enough-args = "You must specify the name of the island you want to visit: /skyllia visit <player>"
		player-banned = "You are banned from the island."
	[island.warp]
		success = "Your warp: %s has been created."
		not-enough-args = "You must specify the name of the warp to save: /skyllia <set/del>warp <warp_name>"

		[island.warp.teleport]
			not-exist = "The requested warp does not exist."
			success = "You have been teleported to the requested warp."
		[island.warp.delete]
			success = "The warp has been deleted."
			can-not-delete-home = "You cannot delete the home warp."
[admin]
	[admin.commands]
		[admin.commands.island]
			[admin.commands.island.setmaxmembers]
				no-confirm = "You did not add \"confirm\" at the end."
				nan = "The specified number is incorrect."
				not-enough-args = "The command is incomplete: /skyllia setmaxmembres value confirm"
			[admin.commands.island.delete]
				no-confirm = "You must add \"confirm\" at the end of your command."
				not-enough-args = "The player's name is missing."
			[admin.commands.island.setsize]
				no-confirm = "You must add the argument \"confirm\" at the end of your command."
				success = "The number of people on the island has been successfully changed."
				nan = "You did not choose an integer."
				not-enough-args = "The command is incomplete: /skylladmin setsize <player/uuid> <number> confirm"
				failed = "The change could not be made."

I'd be happy to PR this in, but I'm unsure how you'd like it done 😃.

About "Could not pass event PreCreatureSpawnEvent to Skyllia v1.0-RC3"

Help me when I'm creating or deleting empty islands, the server will suddenly lag and then the backend will keep reporting errors.
This is part of the config file where we report errors:

[15:34:54] [Region Scheduler Thread #1/ERROR]: Could not pass event PreCreatureSpawnEvent to Skyllia v1.0-RC3
java.lang.NullPointerException: Cannot invoke "java.util.concurrent.ConcurrentHashMap.getOrDefault(Object, Object)" because "fr.euphyllia.skyllia.cache.PermissionGameRuleInIslandCache.gameruleByIslandId" is null
	at fr.euphyllia.skyllia.cache.PermissionGameRuleInIslandCache.getGameruleInIsland(PermissionGameRuleInIslandCache.java:19) ~[Skyllia-1.0-RC3-all.jar:?]
	at fr.euphyllia.skyllia.listeners.ListenersUtils.checkGameRuleIsland(ListenersUtils.java:44) ~[Skyllia-1.0-RC3-all.jar:?]
	at fr.euphyllia.skyllia.listeners.bukkitevents.gamerule.entity.MobSpawnEvent.onPreCreatureSpawn(MobSpawnEvent.java:41) ~[Skyllia-1.0-RC3-all.jar:?]
	at com.destroystokyo.paper.event.executor.asm.generated.GeneratedEventExecutor111.execute(Unknown Source) ~[?:?]
	at org.bukkit.plugin.EventExecutor$2.execute(EventExecutor.java:77) ~[folia-api-1.20.2-R0.1-SNAPSHOT.jar:?]
	at co.aikar.timings.TimedEventExecutor.execute(TimedEventExecutor.java:77) ~[folia-api-1.20.2-R0.1-SNAPSHOT.jar:git-Folia-"28bd3f7"]
	at org.bukkit.plugin.RegisteredListener.callEvent(RegisteredListener.java:70) ~[folia-api-1.20.2-R0.1-SNAPSHOT.jar:?]
	at io.papermc.paper.plugin.manager.PaperEventManager.callEvent(PaperEventManager.java:54) ~[folia-1.20.2.jar:git-Folia-"28bd3f7"]
	at io.papermc.paper.plugin.manager.PaperPluginManagerImpl.callEvent(PaperPluginManagerImpl.java:126) ~[folia-1.20.2.jar:git-Folia-"28bd3f7"]
	at org.bukkit.plugin.SimplePluginManager.callEvent(SimplePluginManager.java:615) ~[folia-api-1.20.2-R0.1-SNAPSHOT.jar:?]
	at org.bukkit.event.Event.callEvent(Event.java:45) ~[folia-api-1.20.2-R0.1-SNAPSHOT.jar:?]
	at net.minecraft.world.level.NaturalSpawner.isValidSpawnPostitionForType(NaturalSpawner.java:362) ~[?:?]
	at net.minecraft.world.level.NaturalSpawner.spawnCategoryForPosition(NaturalSpawner.java:279) ~[?:?]
	at net.minecraft.world.level.NaturalSpawner.spawnCategoryForChunk(NaturalSpawner.java:212) ~[?:?]
	at net.minecraft.world.level.NaturalSpawner.spawnForChunk(NaturalSpawner.java:182) ~[?:?]
	at net.minecraft.server.level.ServerChunkCache.tickChunks(ServerChunkCache.java:613) ~[?:?]
	at net.minecraft.server.level.ServerChunkCache.tick(ServerChunkCache.java:454) ~[?:?]
	at net.minecraft.server.level.ServerLevel.tick(ServerLevel.java:934) ~[?:?]
	at net.minecraft.server.MinecraftServer.tickChildren(MinecraftServer.java:1683) ~[folia-1.20.2.jar:git-Folia-"28bd3f7"]
	at net.minecraft.server.dedicated.DedicatedServer.tickChildren(DedicatedServer.java:446) ~[folia-1.20.2.jar:git-Folia-"28bd3f7"]
	at net.minecraft.server.MinecraftServer.tickServer(MinecraftServer.java:1530) ~[folia-1.20.2.jar:git-Folia-"28bd3f7"]
	at io.papermc.paper.threadedregions.TickRegions$ConcreteRegionTickHandle.tickRegion(TickRegions.java:402) ~[folia-1.20.2.jar:git-Folia-"28bd3f7"]
	at io.papermc.paper.threadedregions.TickRegionScheduler$RegionScheduleHandle.runTick(TickRegionScheduler.java:404) ~[folia-1.20.2.jar:git-Folia-"28bd3f7"]
	at ca.spottedleaf.concurrentutil.scheduler.SchedulerThreadPool$TickThreadRunner.run(SchedulerThreadPool.java:525) ~[folia-1.20.2.jar:git-Folia-"28bd3f7"]
	at java.lang.Thread.run(Thread.java:1583) ~[?:?]

But the error file is really big (>40M) so I had to upload it to a netbook.
The link to the full version is below
Download from Lanzou Netdisk

Scheduled for Skyllia 1.0

The list is subject to change!

Core :

Player orders to be created :

Administrator commands to create :

  • /is admin island setsize [1-255] confirm 990ee40
  • /skylliadmin forcedelete [player] confirm 7c63e3c
  • /is admin island setmaxmember [owner] [1-max] confirm 4c92c02

Permissions Plugins :

  • Permission per commandes
  • Permission visit ByPass 4bc9162

Permissions Role Settings :

GamePlay :

  • A nether portal to the nether world (Folia : e5100ee) (Paper : future)
  • An End portal takes you into the End (Folia : e5100ee) (Paper : future)

Removed

  • Ore generator
  • is info = The best is to make an extension with PlaceHolderAPI or another to make your own custom /is info.
  • is logs = Knowing that people will want to log in differently according to their wishes, I prefer to leave this functionality with an extension. The API could be further developed in the future to add a lot more!

is gamrule never update

Lorsqu'on change la gamerule, dans la base de donnée, ça ne se met à jour. Pire encore, actuellement, elle se duplique.

A faire :
Formatage de la base de donnée sur islands_gamerule
et fix du bug

About Size of IsLand

(Before start, I must say that my English is not well ! Hope your forgiveness. And I will try the latest version soon.)

In today's testing, we found that if the distance between two island smaller than 2000 ,folia will put them to one thread .

Screenshot_20240120-155623

I set simulation-distance in server.properties to 8 first.

I opened this server to 11 real player.And make 9 of them to the default generated islands. Distance of Each Island is nearly 1K,because I set the config of the size of the island to 500.

Then I create 3 plantform at A(1000,50,1000), B(2000,50,2000), C(4000,50,4000), and put 3 players to each plantfrom.

The result of the testing is that:
folia put A and B in one thread, but put C in another thread.
It's so strange.

So, we hope to make the size of the island to 2048 to slove this problem.

Some Problems During Create the Island

Thank you very much for releasing the first version! In our test with my friend, we first introduced a single-block sky island.


Problem 1

We found that if we set the value of island-types.example in the configuration file from 50.0 to 50, this will cause a plugin error.
The configuration file (others are not attached because there is no other modification except for the modification and correctness of the database information) is as follows:

[island-types]
	[island-types.example]
		size = 50
		name = "example"
		max-members = 3
[config]
	max-island = 1000 

Error as follows:

[16:49:57 FATAL]: [fr.euphyllia.skyfolia.configuration.ConfigToml] Lecture des config
[16:49:57 FATAL]: [fr.euphyllia.skyfolia.configuration.ConfigToml] Erreur de lecture !
java.lang.reflect.InvocationTargetException: null
        at jdk.internal.reflect.DirectMethodHandleAccessor.invoke(DirectMethodHandleAccessor.java:109) ~[?:?]
        at java.lang.reflect.Method.invoke(Method.java:580) ~[?:?]
        at fr.euphyllia.skyfolia.configuration.ConfigToml.readConfig(ConfigToml.java:67) ~[SkyFolia-1.0-alpha.1-all.jar:?]
        at fr.euphyllia.skyfolia.configuration.ConfigToml.init(ConfigToml.java:50) ~[SkyFolia-1.0-alpha.1-all.jar:?]
        at fr.euphyllia.skyfolia.api.InterneAPI.setupConfigs(InterneAPI.java:92) ~[SkyFolia-1.0-alpha.1-all.jar:?]
        at fr.euphyllia.skyfolia.Main.onEnable(Main.java:34) ~[SkyFolia-1.0-alpha.1-all.jar:?]
        at org.bukkit.plugin.java.JavaPlugin.setEnabled(JavaPlugin.java:281) ~[folia-api-1.20.2-R0.1-SNAPSHOT.jar:?]
        at io.papermc.paper.plugin.manager.PaperPluginInstanceManager.enablePlugin(PaperPluginInstanceManager.java:189) ~[folia-1.20.2.jar:git-Folia-"28bd3f7"]
        at io.papermc.paper.plugin.manager.PaperPluginManagerImpl.enablePlugin(PaperPluginManagerImpl.java:104) ~[folia-1.20.2.jar:git-Folia-"28bd3f7"]
        at org.bukkit.plugin.SimplePluginManager.enablePlugin(SimplePluginManager.java:507) ~[folia-api-1.20.2-R0.1-SNAPSHOT.jar:?]
        at org.bukkit.craftbukkit.v1_20_R2.CraftServer.enablePlugin(CraftServer.java:650) ~[folia-1.20.2.jar:git-Folia-"28bd3f7"]
        at org.bukkit.craftbukkit.v1_20_R2.CraftServer.enablePlugins(CraftServer.java:561) ~[folia-1.20.2.jar:git-Folia-"28bd3f7"]
        at net.minecraft.server.MinecraftServer.loadWorld0(MinecraftServer.java:670) ~[folia-1.20.2.jar:git-Folia-"28bd3f7"]
        at net.minecraft.server.MinecraftServer.loadLevel(MinecraftServer.java:452) ~[folia-1.20.2.jar:git-Folia-"28bd3f7"]
        at net.minecraft.server.dedicated.DedicatedServer.initServer(DedicatedServer.java:308) ~[folia-1.20.2.jar:git-Folia-"28bd3f7"]
        at net.minecraft.server.MinecraftServer.runServer(MinecraftServer.java:1173) ~[folia-1.20.2.jar:git-Folia-"28bd3f7"]
        at net.minecraft.server.MinecraftServer.lambda$spin$0(MinecraftServer.java:343) ~[folia-1.20.2.jar:git-Folia-"28bd3f7"]
        at java.lang.Thread.run(Thread.java:1583) ~[?:?]
Caused by: java.lang.ClassCastException: class java.lang.Integer cannot be cast to class java.lang.Double (java.lang.Integer and java.lang.Double are in module java.base of loader 'bootstrap')
        at fr.euphyllia.skyfolia.configuration.ConfigToml.getDouble(ConfigToml.java:100) ~[SkyFolia-1.0-alpha.1-all.jar:?]
        at fr.euphyllia.skyfolia.configuration.ConfigToml.typeIsland(ConfigToml.java:190) ~[SkyFolia-1.0-alpha.1-all.jar:?]
        at jdk.internal.reflect.DirectMethodHandleAccessor.invoke(DirectMethodHandleAccessor.java:103) ~[?:?]
        ... 17 more
[16:49:57 FATAL]: [fr.euphyllia.skyfolia.configuration.LanguageToml] Lecture des config

Problem 2

If this value is set to 500.0, it will prompt "Size Exceed".
The configuration file is as follows:

[island-types]
	[island-types.example]
		size = 500.0
		name = "example"
		max-members = 3
[config]
	max-island = 1000

Error as follows:

[16:51:59 INFO]: LuoXiaoHei issued server command: /skyfolia create
[16:51:59 FATAL]: [fr.euphyllia.skyfolia.managers.skyblock.SkyblockManager] Size exceeded !

Problem 3

We directly generated an empty island under the original configuration.
When we joined to the island, we found that we could not place or destroy blocks, even if we were Owner level.
Next, we tried to teleport to each other's islands and authorize them. We used /skyfolia premission for authorization. Give visitor and member the permission to place and destroy blocks (we are sure that the execution is successful), but we still cannot destroy and place blocks.


Hope to fix it!

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.