Created 1.18 R1 (plugin's native version) nms package.

Created 1.18 R1 handling of sending player abilities packet and tested on spigot.
Documented force_protocolib config.
This commit is contained in:
alexcrea 2024-08-08 23:37:43 +02:00
parent 6c5eab6fff
commit 0f2a295039
No known key found for this signature in database
GPG key ID: 43FD265DB0DBF91F
15 changed files with 201 additions and 67 deletions

View file

@ -1,5 +1,6 @@
package xyz.alexcrea.cuanvil.update;
import org.bukkit.Bukkit;
import org.bukkit.configuration.file.FileConfiguration;
import java.util.ArrayList;
@ -7,9 +8,14 @@ import java.util.Arrays;
import java.util.List;
public class UpdateUtils {
public final static String MINECRAFT_VERSION_PATH = "lowMinecraftVersion";
public static final String MINECRAFT_VERSION_PATH = "lowMinecraftVersion";
static int[] readVersionFromString(String versionString){
public static int[] currentMinecraftVersion(){
String versionString = Bukkit.getServer().getBukkitVersion().split("-")[0];
return UpdateUtils.readVersionFromString(versionString);
}
public static int[] readVersionFromString(String versionString){
String[] partialVersion = versionString.split("\\.");
int[] versionParts = new int[]{0, 0, 0};

View file

@ -1,7 +1,6 @@
package xyz.alexcrea.cuanvil.update;
import io.delilaheve.CustomAnvil;
import org.bukkit.Bukkit;
import org.bukkit.configuration.file.FileConfiguration;
import xyz.alexcrea.cuanvil.config.ConfigHolder;
@ -23,8 +22,7 @@ public class Update_1_21 {
}
}
String versionString = Bukkit.getServer().getBukkitVersion().split("-")[0];
int[] versionParts = UpdateUtils.readVersionFromString(versionString);
int[] versionParts = UpdateUtils.currentMinecraftVersion();
// Test 1.21
if((versionParts[0] >= 1) && (versionParts[1] >= 21)){

View file

@ -98,6 +98,12 @@ class CustomAnvil : JavaPlugin() {
chatListener = ChatEventListener()
server.pluginManager.registerEvents(chatListener, this)
// Load default configuration
if (!ConfigHolder.loadDefaultConfig()) {
logger.log(Level.SEVERE,"could not load default config.")
return
}
// Load dependency
DependencyManager.loadDependency()
@ -113,12 +119,6 @@ class CustomAnvil : JavaPlugin() {
}
private fun loadEnchantmentSystem(){
// Load default configuration
if (!ConfigHolder.loadDefaultConfig()) {
logger.log(Level.SEVERE,"could not load default config.")
return
}
// Register enchantments
CAEnchantmentRegistry.getInstance().registerBukkit()
DependencyManager.registerEnchantments()

View file

@ -14,7 +14,7 @@ object DependencyManager {
fun loadDependency(){
val pluginManager = Bukkit.getPluginManager()
// ProtocolLib dependency
// Packet Manager
val forceProtocolib = ConfigHolder.DEFAULT_CONFIG.config.getBoolean("force_protocolib", false)
packetManager = PacketManagerSelector.selectPacketManager(forceProtocolib)

View file

@ -0,0 +1,67 @@
package xyz.alexcrea.cuanvil.dependency.packet
import org.bukkit.Bukkit
import xyz.alexcrea.cuanvil.dependency.packet.versions.V1_18R1_Manager
import xyz.alexcrea.cuanvil.update.UpdateUtils
object PacketManagerSelector {
fun selectPacketManager(forceProtocolib: Boolean): PacketManager {
// Try to find version
return if (forceProtocolib)
protocolibIfPresent
else
versionSpecificManager ?: protocolibIfPresent
}
private val protocolibIfPresent: PacketManager
get() =
if (Bukkit.getPluginManager().isPluginEnabled("ProtocolLib"))
ProtocoLibWrapper()
else
NoPacketManager()
private val versionSpecificManager: PacketManager?
get() {
val versionParts = UpdateUtils.currentMinecraftVersion()
if (versionParts[0] != 1) return null;
return when (versionParts[1]) {
16 -> when (versionParts[2]) {
4, 5 -> null // TODO V1_16R3 (if possible)
else -> null
}
17 -> when (versionParts[2]) {
0, 1 -> null // TODO V1_17R1 (if possible)
else -> null
}
18 -> when (versionParts[2]) {
0, 1 -> V1_18R1_Manager()
2 -> null // TODO V1_18R2
else -> null
}
19 -> when (versionParts[2]) {
0, 1, 2 -> null // TODO V1_19R1
3 -> null // TODO V1_19R2
4 -> null // TODO V1_19R3
else -> null
}
20 -> when (versionParts[2]) {
0, 1 -> null // TODO V1_20R1
2 -> null // TODO V1_20R2
3, 4 -> null // TODO V1_20R3
5, 6 -> null // TODO V1_20R4
else -> null
}
21 -> when (versionParts[2]) {
0 -> null // TODO V1_21R1
else -> null
}
else -> null
}
}
}

View file

@ -265,4 +265,10 @@ debug_log: false
# Whether to show verbose debug logging
debug_log_verbose: false
# In case something when wrong with CustomAnvil packet manager.
# If you see "missing class exception" or similar you may test this.
# If enabled and Protocolib absent or disabled "Replace to expensive" will not work.
# ProtocoLib may also be used if the server is in an "unsupported" version even if this option is disabled.
force_protocolib: false
configVersion: 1.4.5