perf: 优化代码
This commit is contained in:
@@ -5,7 +5,7 @@ plugins {
|
|||||||
}
|
}
|
||||||
|
|
||||||
group = "cn.hamster3.mc.plugin"
|
group = "cn.hamster3.mc.plugin"
|
||||||
version = "1.2.2"
|
version = "1.2.3"
|
||||||
|
|
||||||
subprojects {
|
subprojects {
|
||||||
apply {
|
apply {
|
||||||
|
@@ -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.listener.DebugListener;
|
||||||
import cn.hamster3.mc.plugin.core.bukkit.page.handler.PageHandler;
|
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.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 cn.hamster3.mc.plugin.core.common.api.CoreAPI;
|
||||||
import lombok.Getter;
|
import lombok.Getter;
|
||||||
import net.kyori.adventure.platform.bukkit.BukkitAudiences;
|
import net.kyori.adventure.platform.bukkit.BukkitAudiences;
|
||||||
@@ -58,8 +58,9 @@ public class HamsterCorePlugin extends JavaPlugin {
|
|||||||
public void onLoad() {
|
public void onLoad() {
|
||||||
long start = System.currentTimeMillis();
|
long start = System.currentTimeMillis();
|
||||||
Logger logger = getLogger();
|
Logger logger = getLogger();
|
||||||
logger.info("Minecraft 版本: " + CoreBukkitUtils.getMCVersion());
|
logger.info("仓鼠核心正在初始化");
|
||||||
logger.info("NMS 版本: " + CoreBukkitUtils.getNMSVersion());
|
logger.info("Minecraft 版本: " + MinecraftVersion.getMCVersion());
|
||||||
|
logger.info("nms 版本: " + MinecraftVersion.getNMSVersion());
|
||||||
instance = this;
|
instance = this;
|
||||||
saveDefaultConfig();
|
saveDefaultConfig();
|
||||||
reloadConfig();
|
reloadConfig();
|
||||||
|
@@ -1,16 +1,18 @@
|
|||||||
package cn.hamster3.mc.plugin.core.bukkit.api;
|
package cn.hamster3.mc.plugin.core.bukkit.api;
|
||||||
|
|
||||||
import cn.hamster3.mc.plugin.core.bukkit.HamsterCorePlugin;
|
import cn.hamster3.mc.plugin.core.bukkit.HamsterCorePlugin;
|
||||||
import cn.hamster3.mc.plugin.core.bukkit.serializer.ItemStackAdapter;
|
import cn.hamster3.mc.plugin.core.bukkit.impl.ItemStackAdapter;
|
||||||
import cn.hamster3.mc.plugin.core.bukkit.serializer.PotionEffectAdapter;
|
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.api.CoreAPI;
|
||||||
import cn.hamster3.mc.plugin.core.common.data.DisplayMessage;
|
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.impl.ComponentTypeAdapter;
|
||||||
import cn.hamster3.mc.plugin.core.common.serializer.MessageTypeAdapter;
|
import cn.hamster3.mc.plugin.core.common.impl.MessageTypeAdapter;
|
||||||
import com.google.gson.Gson;
|
import com.google.gson.Gson;
|
||||||
import com.google.gson.GsonBuilder;
|
import com.google.gson.GsonBuilder;
|
||||||
import com.zaxxer.hikari.HikariConfig;
|
import com.zaxxer.hikari.HikariConfig;
|
||||||
import com.zaxxer.hikari.HikariDataSource;
|
import com.zaxxer.hikari.HikariDataSource;
|
||||||
|
import de.tr7zw.changeme.nbtapi.utils.nmsmappings.ClassWrapper;
|
||||||
import io.lettuce.core.RedisClient;
|
import io.lettuce.core.RedisClient;
|
||||||
import net.kyori.adventure.platform.bukkit.BukkitAudiences;
|
import net.kyori.adventure.platform.bukkit.BukkitAudiences;
|
||||||
import net.kyori.adventure.text.Component;
|
import net.kyori.adventure.text.Component;
|
||||||
@@ -36,12 +38,14 @@ public final class CoreBukkitAPI extends CoreAPI {
|
|||||||
.registerTypeAdapter(Component.class, ComponentTypeAdapter.INSTANCE)
|
.registerTypeAdapter(Component.class, ComponentTypeAdapter.INSTANCE)
|
||||||
.registerTypeAdapter(DisplayMessage.class, MessageTypeAdapter.INSTANCE)
|
.registerTypeAdapter(DisplayMessage.class, MessageTypeAdapter.INSTANCE)
|
||||||
.registerTypeAdapter(ItemStack.class, ItemStackAdapter.INSTANCE)
|
.registerTypeAdapter(ItemStack.class, ItemStackAdapter.INSTANCE)
|
||||||
|
.registerTypeAdapter(MinecraftVersion.getCraftBukkitClassSilent("inventory.CraftItemStack"), ItemStackAdapter.INSTANCE)
|
||||||
.registerTypeAdapter(PotionEffect.class, PotionEffectAdapter.INSTANCE)
|
.registerTypeAdapter(PotionEffect.class, PotionEffectAdapter.INSTANCE)
|
||||||
.create();
|
.create();
|
||||||
humanGson = new GsonBuilder()
|
humanGson = new GsonBuilder()
|
||||||
.registerTypeAdapter(Component.class, ComponentTypeAdapter.INSTANCE)
|
.registerTypeAdapter(Component.class, ComponentTypeAdapter.INSTANCE)
|
||||||
.registerTypeAdapter(DisplayMessage.class, MessageTypeAdapter.INSTANCE)
|
.registerTypeAdapter(DisplayMessage.class, MessageTypeAdapter.INSTANCE)
|
||||||
.registerTypeAdapter(ItemStack.class, ItemStackAdapter.INSTANCE)
|
.registerTypeAdapter(ItemStack.class, ItemStackAdapter.INSTANCE)
|
||||||
|
.registerTypeAdapter(ClassWrapper.CRAFT_ITEMSTACK.getClazz(), ItemStackAdapter.INSTANCE)
|
||||||
.registerTypeAdapter(PotionEffect.class, PotionEffectAdapter.INSTANCE)
|
.registerTypeAdapter(PotionEffect.class, PotionEffectAdapter.INSTANCE)
|
||||||
.serializeNulls()
|
.serializeNulls()
|
||||||
.setPrettyPrinting()
|
.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.HamsterCorePlugin;
|
||||||
import cn.hamster3.mc.plugin.core.bukkit.command.ChildCommand;
|
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.Bukkit;
|
||||||
import org.bukkit.Material;
|
import org.bukkit.Material;
|
||||||
import org.bukkit.command.Command;
|
import org.bukkit.command.Command;
|
||||||
@@ -51,10 +51,10 @@ public class YamlCommand extends ChildCommand {
|
|||||||
@Override
|
@Override
|
||||||
public boolean onCommand(@NotNull CommandSender sender, @NotNull Command command, @NotNull String label, String[] args) {
|
public boolean onCommand(@NotNull CommandSender sender, @NotNull Command command, @NotNull String label, String[] args) {
|
||||||
YamlConfiguration config = new YamlConfiguration();
|
YamlConfiguration config = new YamlConfiguration();
|
||||||
config.set("mc-version", CoreBukkitUtils.getMCVersion());
|
config.set("mc-version", MinecraftVersion.getMCVersion());
|
||||||
config.set("nms-version", CoreBukkitUtils.getNMSVersion());
|
config.set("nms-version", MinecraftVersion.getNMSVersion());
|
||||||
config.set("server-version", Bukkit.getBukkitVersion());
|
config.set("bukkit-version", Bukkit.getBukkitVersion());
|
||||||
config.set("bukkit-version", Bukkit.getVersion());
|
config.set("server-version", Bukkit.getVersion());
|
||||||
|
|
||||||
if (sender instanceof Player) {
|
if (sender instanceof Player) {
|
||||||
Player player = (Player) sender;
|
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.command.ChildCommand;
|
||||||
import cn.hamster3.mc.plugin.core.bukkit.constant.CoreMessage;
|
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.CoreBukkitUtils;
|
||||||
|
import cn.hamster3.mc.plugin.core.bukkit.util.MinecraftVersion;
|
||||||
import net.kyori.adventure.text.Component;
|
import net.kyori.adventure.text.Component;
|
||||||
import net.kyori.adventure.text.format.NamedTextColor;
|
import net.kyori.adventure.text.format.NamedTextColor;
|
||||||
import org.bukkit.command.Command;
|
import org.bukkit.command.Command;
|
||||||
@@ -66,7 +67,7 @@ public class LoreInfoCommand extends ChildCommand {
|
|||||||
sender.sendMessage("§a物品 lore: 无");
|
sender.sendMessage("§a物品 lore: 无");
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
if (Integer.parseInt(CoreBukkitUtils.getMCVersion().split("\\.")[1]) >= 13) {
|
if (MinecraftVersion.getVersion2() >= 13) {
|
||||||
if (meta.hasCustomModelData()) {
|
if (meta.hasCustomModelData()) {
|
||||||
sender.sendMessage("§a物品自定义模型 ID: " + meta.getCustomModelData());
|
sender.sendMessage("§a物品自定义模型 ID: " + meta.getCustomModelData());
|
||||||
} else {
|
} 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 cn.hamster3.mc.plugin.core.bukkit.util.CoreBukkitUtils;
|
||||||
import com.google.gson.*;
|
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 cn.hamster3.mc.plugin.core.bukkit.util.CoreBukkitUtils;
|
||||||
import com.google.gson.*;
|
import com.google.gson.*;
|
@@ -42,28 +42,6 @@ public final class CoreBukkitUtils {
|
|||||||
private 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以上的服务端中获取头颅材质是在服务器上运行的
|
* 在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);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
@@ -4,8 +4,8 @@ import cn.hamster3.mc.plugin.core.bungee.HamsterCorePlugin;
|
|||||||
import cn.hamster3.mc.plugin.core.bungee.util.CoreBungeeCordUtils;
|
import cn.hamster3.mc.plugin.core.bungee.util.CoreBungeeCordUtils;
|
||||||
import cn.hamster3.mc.plugin.core.common.api.CoreAPI;
|
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.data.DisplayMessage;
|
||||||
import cn.hamster3.mc.plugin.core.common.serializer.ComponentTypeAdapter;
|
import cn.hamster3.mc.plugin.core.common.impl.ComponentTypeAdapter;
|
||||||
import cn.hamster3.mc.plugin.core.common.serializer.MessageTypeAdapter;
|
import cn.hamster3.mc.plugin.core.common.impl.MessageTypeAdapter;
|
||||||
import com.google.gson.Gson;
|
import com.google.gson.Gson;
|
||||||
import com.google.gson.GsonBuilder;
|
import com.google.gson.GsonBuilder;
|
||||||
import com.zaxxer.hikari.HikariConfig;
|
import com.zaxxer.hikari.HikariConfig;
|
||||||
|
@@ -1,4 +1,4 @@
|
|||||||
package cn.hamster3.mc.plugin.core.common.serializer;
|
package cn.hamster3.mc.plugin.core.common.impl;
|
||||||
|
|
||||||
import com.google.gson.*;
|
import com.google.gson.*;
|
||||||
import net.kyori.adventure.text.Component;
|
import net.kyori.adventure.text.Component;
|
@@ -1,4 +1,4 @@
|
|||||||
package cn.hamster3.mc.plugin.core.common.serializer;
|
package cn.hamster3.mc.plugin.core.common.impl;
|
||||||
|
|
||||||
import cn.hamster3.mc.plugin.core.common.data.DisplayMessage;
|
import cn.hamster3.mc.plugin.core.common.data.DisplayMessage;
|
||||||
import com.google.gson.*;
|
import com.google.gson.*;
|
Reference in New Issue
Block a user