mirror of
https://github.com/alexcrea/CustomAnvil.git
synced 2026-06-23 16:16:17 +02:00
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:
parent
6c5eab6fff
commit
0f2a295039
15 changed files with 201 additions and 67 deletions
|
|
@ -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};
|
||||
|
||||
|
|
|
|||
|
|
@ -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)){
|
||||
|
|
|
|||
|
|
@ -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()
|
||||
|
|
|
|||
|
|
@ -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)
|
||||
|
||||
|
|
|
|||
|
|
@ -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
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
@ -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
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue