perf: 优化代码
This commit is contained in:
@@ -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();
|
||||
|
@@ -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()
|
||||
|
@@ -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;
|
||||
|
@@ -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 {
|
||||
|
@@ -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.*;
|
@@ -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.*;
|
@@ -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以上的服务端中获取头颅材质是在服务器上运行的
|
||||
|
@@ -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);
|
||||
}
|
||||
}
|
||||
}
|
Reference in New Issue
Block a user