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:
parent
d438c9a5f1
commit
1e115b3cab
4
pom.xml
4
pom.xml
@ -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>
|
||||
|
@ -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) {
|
||||
|
Loading…
Reference in New Issue
Block a user