perf: 优化代码

This commit is contained in:
2024-03-12 17:46:18 +08:00
parent 5987d64a00
commit 7a8bb22f74
12 changed files with 120 additions and 42 deletions

View File

@@ -11,7 +11,7 @@ import cn.hamster3.mc.plugin.core.bukkit.listener.CallbackListener;
import cn.hamster3.mc.plugin.core.bukkit.listener.DebugListener;
import cn.hamster3.mc.plugin.core.bukkit.page.handler.PageHandler;
import cn.hamster3.mc.plugin.core.bukkit.page.listener.PageListener;
import cn.hamster3.mc.plugin.core.bukkit.util.CoreBukkitUtils;
import cn.hamster3.mc.plugin.core.bukkit.util.MinecraftVersion;
import cn.hamster3.mc.plugin.core.common.api.CoreAPI;
import lombok.Getter;
import net.kyori.adventure.platform.bukkit.BukkitAudiences;
@@ -58,8 +58,9 @@ public class HamsterCorePlugin extends JavaPlugin {
public void onLoad() {
long start = System.currentTimeMillis();
Logger logger = getLogger();
logger.info("Minecraft 版本: " + CoreBukkitUtils.getMCVersion());
logger.info("NMS 版本: " + CoreBukkitUtils.getNMSVersion());
logger.info("仓鼠核心正在初始化");
logger.info("Minecraft 版本: " + MinecraftVersion.getMCVersion());
logger.info("nms 版本: " + MinecraftVersion.getNMSVersion());
instance = this;
saveDefaultConfig();
reloadConfig();

View File

@@ -1,16 +1,18 @@
package cn.hamster3.mc.plugin.core.bukkit.api;
import cn.hamster3.mc.plugin.core.bukkit.HamsterCorePlugin;
import cn.hamster3.mc.plugin.core.bukkit.serializer.ItemStackAdapter;
import cn.hamster3.mc.plugin.core.bukkit.serializer.PotionEffectAdapter;
import cn.hamster3.mc.plugin.core.bukkit.impl.ItemStackAdapter;
import cn.hamster3.mc.plugin.core.bukkit.impl.PotionEffectAdapter;
import cn.hamster3.mc.plugin.core.bukkit.util.MinecraftVersion;
import cn.hamster3.mc.plugin.core.common.api.CoreAPI;
import cn.hamster3.mc.plugin.core.common.data.DisplayMessage;
import cn.hamster3.mc.plugin.core.common.serializer.ComponentTypeAdapter;
import cn.hamster3.mc.plugin.core.common.serializer.MessageTypeAdapter;
import cn.hamster3.mc.plugin.core.common.impl.ComponentTypeAdapter;
import cn.hamster3.mc.plugin.core.common.impl.MessageTypeAdapter;
import com.google.gson.Gson;
import com.google.gson.GsonBuilder;
import com.zaxxer.hikari.HikariConfig;
import com.zaxxer.hikari.HikariDataSource;
import de.tr7zw.changeme.nbtapi.utils.nmsmappings.ClassWrapper;
import io.lettuce.core.RedisClient;
import net.kyori.adventure.platform.bukkit.BukkitAudiences;
import net.kyori.adventure.text.Component;
@@ -36,12 +38,14 @@ public final class CoreBukkitAPI extends CoreAPI {
.registerTypeAdapter(Component.class, ComponentTypeAdapter.INSTANCE)
.registerTypeAdapter(DisplayMessage.class, MessageTypeAdapter.INSTANCE)
.registerTypeAdapter(ItemStack.class, ItemStackAdapter.INSTANCE)
.registerTypeAdapter(MinecraftVersion.getCraftBukkitClassSilent("inventory.CraftItemStack"), ItemStackAdapter.INSTANCE)
.registerTypeAdapter(PotionEffect.class, PotionEffectAdapter.INSTANCE)
.create();
humanGson = new GsonBuilder()
.registerTypeAdapter(Component.class, ComponentTypeAdapter.INSTANCE)
.registerTypeAdapter(DisplayMessage.class, MessageTypeAdapter.INSTANCE)
.registerTypeAdapter(ItemStack.class, ItemStackAdapter.INSTANCE)
.registerTypeAdapter(ClassWrapper.CRAFT_ITEMSTACK.getClazz(), ItemStackAdapter.INSTANCE)
.registerTypeAdapter(PotionEffect.class, PotionEffectAdapter.INSTANCE)
.serializeNulls()
.setPrettyPrinting()

View File

@@ -2,7 +2,7 @@ package cn.hamster3.mc.plugin.core.bukkit.command.core.sub;
import cn.hamster3.mc.plugin.core.bukkit.HamsterCorePlugin;
import cn.hamster3.mc.plugin.core.bukkit.command.ChildCommand;
import cn.hamster3.mc.plugin.core.bukkit.util.CoreBukkitUtils;
import cn.hamster3.mc.plugin.core.bukkit.util.MinecraftVersion;
import org.bukkit.Bukkit;
import org.bukkit.Material;
import org.bukkit.command.Command;
@@ -51,10 +51,10 @@ public class YamlCommand extends ChildCommand {
@Override
public boolean onCommand(@NotNull CommandSender sender, @NotNull Command command, @NotNull String label, String[] args) {
YamlConfiguration config = new YamlConfiguration();
config.set("mc-version", CoreBukkitUtils.getMCVersion());
config.set("nms-version", CoreBukkitUtils.getNMSVersion());
config.set("server-version", Bukkit.getBukkitVersion());
config.set("bukkit-version", Bukkit.getVersion());
config.set("mc-version", MinecraftVersion.getMCVersion());
config.set("nms-version", MinecraftVersion.getNMSVersion());
config.set("bukkit-version", Bukkit.getBukkitVersion());
config.set("server-version", Bukkit.getVersion());
if (sender instanceof Player) {
Player player = (Player) sender;

View File

@@ -4,6 +4,7 @@ import cn.hamster3.mc.plugin.core.bukkit.HamsterCorePlugin;
import cn.hamster3.mc.plugin.core.bukkit.command.ChildCommand;
import cn.hamster3.mc.plugin.core.bukkit.constant.CoreMessage;
import cn.hamster3.mc.plugin.core.bukkit.util.CoreBukkitUtils;
import cn.hamster3.mc.plugin.core.bukkit.util.MinecraftVersion;
import net.kyori.adventure.text.Component;
import net.kyori.adventure.text.format.NamedTextColor;
import org.bukkit.command.Command;
@@ -66,7 +67,7 @@ public class LoreInfoCommand extends ChildCommand {
sender.sendMessage("§a物品 lore: 无");
return true;
}
if (Integer.parseInt(CoreBukkitUtils.getMCVersion().split("\\.")[1]) >= 13) {
if (MinecraftVersion.getVersion2() >= 13) {
if (meta.hasCustomModelData()) {
sender.sendMessage("§a物品自定义模型 ID: " + meta.getCustomModelData());
} else {

View File

@@ -1,4 +1,4 @@
package cn.hamster3.mc.plugin.core.bukkit.serializer;
package cn.hamster3.mc.plugin.core.bukkit.impl;
import cn.hamster3.mc.plugin.core.bukkit.util.CoreBukkitUtils;
import com.google.gson.*;

View File

@@ -1,4 +1,4 @@
package cn.hamster3.mc.plugin.core.bukkit.serializer;
package cn.hamster3.mc.plugin.core.bukkit.impl;
import cn.hamster3.mc.plugin.core.bukkit.util.CoreBukkitUtils;
import com.google.gson.*;

View File

@@ -42,28 +42,6 @@ public final class CoreBukkitUtils {
private CoreBukkitUtils() {
}
@NotNull
public static String getMCVersion() {
return Bukkit.getBukkitVersion().split("-")[0];
}
@NotNull
public static String getNMSVersion() {
return Bukkit.getServer().getClass().getName().split("\\.")[3];
}
@NotNull
public static Package getNMSPackage() {
String nmsVersion = getNMSVersion();
return Package.getPackage("net.minecraft.server." + nmsVersion);
}
@NotNull
public static Class<?> getNMSClass(@NotNull String className) throws ClassNotFoundException {
String nmsVersion = getNMSVersion();
return Class.forName("net.minecraft.server." + nmsVersion + "." + className);
}
/**
* 获取玩家的头颅
* 在1.11以上的服务端中获取头颅材质是在服务器上运行的

View File

@@ -0,0 +1,94 @@
package cn.hamster3.mc.plugin.core.bukkit.util;
import lombok.Getter;
import org.bukkit.Bukkit;
import org.jetbrains.annotations.NotNull;
@SuppressWarnings("unused")
public class MinecraftVersion {
@Getter
public static final int Version1;
@Getter
public static final int Version2;
@Getter
public static final int Version3;
static {
String version = getMCVersion();
String[] split = version.split("\\.");
Version1 = Integer.parseInt(split[0]);
Version2 = Integer.parseInt(split[1]);
Version3 = split.length >= 3 ? Integer.parseInt(split[2]) : 0;
}
/**
* 与当前服务端运行的 mc 版本号对比
* <p>
* 1: 当前版本高于输入版本号
* <p>
* 2: 当前版本等于输入版本号
* <p>
* 2: 当前版本低于输入版本号
*
* @param version 比较的版本号
* @return -
*/
public static int compareTo(@NotNull String version) {
String[] split = version.split("\\.");
int version1 = Integer.parseInt(split[0]);
int version2 = Integer.parseInt(split[1]);
int version3 = split.length >= 3 ? Integer.parseInt(split[2]) : 0;
int compare = Integer.compare(Version1, version1);
if (compare != 0) {
return compare;
}
compare = Integer.compare(Version2, version2);
if (compare != 0) {
return compare;
}
return Integer.compare(Version3, version3);
}
@NotNull
public static String getMCVersion() {
return Bukkit.getBukkitVersion().split("-")[0];
}
@NotNull
public static String getNMSVersion() {
return Bukkit.getServer().getClass().getName().split("\\.")[3];
}
@NotNull
public static Class<?> getNMSClass(@NotNull String className) throws ClassNotFoundException {
String nmsVersion = getNMSVersion();
return Class.forName("net.minecraft.server." + nmsVersion + "." + className);
}
@NotNull
public static Class<?> getNMSClassSilent(@NotNull String className) {
String nmsVersion = getNMSVersion();
try {
return Class.forName("net.minecraft.server." + nmsVersion + "." + className);
} catch (ClassNotFoundException e) {
throw new RuntimeException(e);
}
}
@NotNull
public static Class<?> getCraftBukkitClass(@NotNull String className) throws ClassNotFoundException {
String nmsVersion = getNMSVersion();
return Class.forName("org.bukkit.craftbukkit." + nmsVersion + "." + className);
}
@NotNull
public static Class<?> getCraftBukkitClassSilent(@NotNull String className) {
String nmsVersion = getNMSVersion();
try {
return Class.forName("org.bukkit.craftbukkit." + nmsVersion + "." + className);
} catch (ClassNotFoundException e) {
throw new RuntimeException(e);
}
}
}