1
0
mirror of https://e.coding.net/circlecloud/YumCore.git synced 2024-11-21 01:38:51 +00:00

release: update to 1.9.0

Signed-off-by: MiaoWoo <admin@yumc.pw>
This commit is contained in:
MiaoWoo 2020-10-10 09:43:30 +08:00
parent d438c9a5f1
commit 1e115b3cab
2 changed files with 70 additions and 109 deletions

View File

@ -4,7 +4,7 @@
<modelVersion>4.0.0</modelVersion>
<groupId>pw.yumc</groupId>
<artifactId>YumCore</artifactId>
<version>1.8.9</version>
<version>1.9.0</version>
<build>
<finalName>${project.artifactId}</finalName>
<plugins>
@ -123,7 +123,7 @@
<dependency>
<groupId>com.comphenix.protocol</groupId>
<artifactId>ProtocolLib</artifactId>
<version>4.2.1</version>
<version>4.5.1</version>
</dependency>
<dependency>
<groupId>com.sk89q.worldedit</groupId>

View File

@ -1,5 +1,13 @@
package pw.yumc.YumCore.bukkit.compatible;
import com.google.common.base.Charsets;
import org.bukkit.*;
import org.bukkit.scheduler.BukkitRunnable;
import org.json.simple.JSONObject;
import pw.yumc.YumCore.annotation.NotProguard;
import pw.yumc.YumCore.bukkit.Log;
import pw.yumc.YumCore.bukkit.P;
import java.lang.reflect.Constructor;
import java.lang.reflect.Field;
import java.lang.reflect.Method;
@ -7,69 +15,54 @@ import java.util.Arrays;
import java.util.Collection;
import java.util.UUID;
import org.bukkit.Bukkit;
import org.bukkit.ChatColor;
import org.bukkit.OfflinePlayer;
import org.bukkit.Server;
import org.bukkit.World;
import org.bukkit.scheduler.BukkitRunnable;
import org.json.simple.JSONObject;
import com.google.common.base.Charsets;
import pw.yumc.YumCore.annotation.NotProguard;
import pw.yumc.YumCore.bukkit.Log;
import pw.yumc.YumCore.bukkit.P;
/**
* Bukkit兼容类
*
* @since 2016年7月23日 下午1:04:56
* @author
* @since 2016年7月23日 下午1:04:56
*/
public class C {
private static Class<?> nmsChatSerializer;
public static boolean init;
private static boolean above_1_16 = false;
private static Class<?> nmsIChatBaseComponent;
private static Class<?> packetType;
private static Class<?> nmsChatMessageTypeClass;
private static Constructor<?> packetTypeConstructor;
private static Method chatSerializer;
private static Method getHandle;
private static Method nmsChatMessageTypeClassValueOf;
private static String version;
private static boolean newversion;
private static Field playerConnection;
private static Method sendPacket;
private static Object[] chatMessageTypes;
public static boolean init;
static {
try {
version = getNMSVersion();
newversion = Integer.parseInt(version.split("_")[1]) > 7;
nmsChatSerializer = Class.forName(a(newversion ? "IChatBaseComponent$ChatSerializer" : "ChatSerializer"));
Class<?> nmsChatSerializer = Class.forName(a(newversion ? "IChatBaseComponent$ChatSerializer" : "ChatSerializer"));
chatSerializer = nmsChatSerializer.getMethod("a", String.class);
nmsIChatBaseComponent = Class.forName(a("IChatBaseComponent"));
packetType = Class.forName(a("PacketPlayOutChat"));
Class<?> packetType = Class.forName(a("PacketPlayOutChat"));
Arrays.stream(packetType.getConstructors()).forEach(c -> {
if (c.getParameterTypes().length == 2) {
packetTypeConstructor = c;
}
if (c.getParameterTypes().length == 3) {
packetTypeConstructor = c;
above_1_16 = true;
}
});
nmsChatMessageTypeClass = packetTypeConstructor.getParameterTypes()[1];
Class<?> nmsChatMessageTypeClass = packetTypeConstructor.getParameterTypes()[1];
if (nmsChatMessageTypeClass.isEnum()) {
chatMessageTypes = nmsChatMessageTypeClass.getEnumConstants();
} else {
switch (nmsChatMessageTypeClass.getName()) {
case "int":
nmsChatMessageTypeClass = Integer.class;
break;
case "byte":
nmsChatMessageTypeClass = Byte.class;
break;
}
nmsChatMessageTypeClassValueOf = nmsChatMessageTypeClass.getDeclaredMethod("valueOf", String.class);
}
@ -109,12 +102,9 @@ public class C {
/**
* 给玩家发送Json消息
*
* @param receivingPacket
* 接受信息的玩家
* @param json
* Json信息
* @param type
* 类型
* @param receivingPacket 接受信息的玩家
* @param json Json信息
* @param type 类型
* 0. 消息
* 2. ActionBar
*/
@ -124,7 +114,9 @@ public class C {
Object player = getHandle.invoke(receivingPacket);
Object connection = playerConnection.get(player);
Object typeObj = chatMessageTypes == null ? nmsChatMessageTypeClassValueOf.invoke(null, String.valueOf(type)) : chatMessageTypes[type];
sendPacket.invoke(connection, packetTypeConstructor.newInstance(serialized, typeObj));
sendPacket.invoke(connection, above_1_16
? packetTypeConstructor.newInstance(serialized, typeObj, receivingPacket.getUniqueId())
: packetTypeConstructor.newInstance(serialized, typeObj));
} catch (Exception ex) {
Log.d("Json发包错误 " + version, ex);
}
@ -137,8 +129,7 @@ public class C {
/**
* 公告发送ActionBar
*
* @param message
* 需要发送的消息
* @param message 需要发送的消息
*/
@NotProguard
public static void broadcast(String message) {
@ -150,10 +141,8 @@ public class C {
/**
* 公告发送ActionBar
*
* @param message
* 需要发送的消息
* @param times
* 需要显示的时间
* @param message 需要发送的消息
* @param times 需要显示的时间
*/
@NotProguard
public static void broadcast(final String message, final int times) {
@ -174,12 +163,9 @@ public class C {
/**
* 公告发送ActionBar(分世界)
*
* @param world
* 需要发送的世界
* @param message
* 需要发送的消息
* @param times
* 需要显示的时间
* @param world 需要发送的世界
* @param message 需要发送的消息
* @param times 需要显示的时间
*/
@NotProguard
public static void broadcast(final World world, final String message, final int times) {
@ -200,10 +186,8 @@ public class C {
/**
* 给玩家发送ActionBar消息
*
* @param receivingPacket
* 接受信息的玩家
* @param msg
* ActionBar信息
* @param receivingPacket 接受信息的玩家
* @param msg ActionBar信息
*/
@NotProguard
public static void send(org.bukkit.entity.Player receivingPacket, String msg) {
@ -213,12 +197,9 @@ public class C {
/**
* 给玩家发送ActionBar消息
*
* @param receivingPacket
* 接受信息的玩家
* @param msg
* 需要发送的消息
* @param times
* 需要显示的时间
* @param receivingPacket 接受信息的玩家
* @param msg 需要发送的消息
* @param times 需要显示的时间
*/
@NotProguard
public static void send(final org.bukkit.entity.Player receivingPacket, final String msg, final int times) {
@ -240,14 +221,15 @@ public class C {
/**
* Bukkit Player兼容类
*
* @since 2016年7月23日 下午4:33:40
* @author
* @since 2016年7月23日 下午4:33:40
*/
public static class Player {
private static Class<?> gameProfileClass;
private static Constructor<?> gameProfileConstructor;
private static Constructor<?> craftOfflinePlayerConstructor;
private static Method getOnlinePlayers;
static {
try {
// getOnlinePlayers start
@ -291,8 +273,7 @@ public class C {
/**
* 获取离线玩家(跳过网络获取)
*
* @param playerName
* 玩家名称
* @param playerName 玩家名称
* @return {@link OfflinePlayer}
*/
@NotProguard
@ -327,6 +308,7 @@ public class C {
private static Constructor<?> packetTitleSendConstructor;
private static Constructor<?> packetTitleSetTimeConstructor;
private static Object[] actions;
static {
try {
packetActions = Class.forName(a(newversion ? "PacketPlayOutTitle$EnumTitleAction" : "EnumTitleAction"));
@ -345,10 +327,8 @@ public class C {
/**
* 发送Title公告
*
* @param title
* 标题
* @param subtitle
* 子标题
* @param title 标题
* @param subtitle 子标题
*/
@NotProguard
public static void broadcast(String title, String subtitle) {
@ -360,16 +340,11 @@ public class C {
/**
* 发送Title公告
*
* @param title
* 标题
* @param subtitle
* 子标题
* @param fadeInTime
* 淡入时间
* @param stayTime
* 持续时间
* @param fadeOutTime
* 淡出时间
* @param title 标题
* @param subtitle 子标题
* @param fadeInTime 淡入时间
* @param stayTime 持续时间
* @param fadeOutTime 淡出时间
*/
@NotProguard
public static void broadcast(String title, String subtitle, int fadeInTime, int stayTime, int fadeOutTime) {
@ -381,12 +356,9 @@ public class C {
/**
* 发送Title公告
*
* @param world
* 世界
* @param title
* 标题
* @param subtitle
* 子标题
* @param world 世界
* @param title 标题
* @param subtitle 子标题
*/
@NotProguard
public static void broadcast(World world, String title, String subtitle) {
@ -396,10 +368,8 @@ public class C {
/**
* 重置玩家的Title
*
* @param recoverPlayer
* 接受的玩家
* @throws Exception
* 异常
* @param recoverPlayer 接受的玩家
* @throws Exception 异常
*/
@NotProguard
public static void reset(org.bukkit.entity.Player recoverPlayer) throws Exception {
@ -413,12 +383,9 @@ public class C {
/**
* 发送Titile(默认时间 1 2 1)
*
* @param receivingPacket
* 接受信息的玩家
* @param title
* 标题
* @param subtitle
* 子标题
* @param receivingPacket 接受信息的玩家
* @param title 标题
* @param subtitle 子标题
*/
@NotProguard
public static void send(org.bukkit.entity.Player receivingPacket, String title, String subtitle) {
@ -428,18 +395,12 @@ public class C {
/**
* 发送Titile
*
* @param receivingPacket
* 接受信息的玩家
* @param title
* 标题
* @param subtitle
* 子标题
* @param fadeInTime
* 淡入时间
* @param stayTime
* 持续时间
* @param fadeOutTime
* 淡出时间
* @param receivingPacket 接受信息的玩家
* @param title 标题
* @param subtitle 子标题
* @param fadeInTime 淡入时间
* @param stayTime 持续时间
* @param fadeOutTime 淡出时间
*/
@NotProguard
public static void send(org.bukkit.entity.Player receivingPacket, String title, String subtitle, int fadeInTime, int stayTime, int fadeOutTime) {