mirror of
https://github.com/Xiao-MoMi/craft-engine.git
synced 2025-12-23 08:59:27 +00:00
添加设置uuid和name
This commit is contained in:
@@ -130,6 +130,7 @@ public class BukkitNetworkManager implements NetworkManager, Listener, PluginMes
|
||||
registerNMSPacketConsumer(PacketConsumers.PLAYER_INFO_UPDATE, Reflections.clazz$ClientboundPlayerInfoUpdatePacket);
|
||||
registerNMSPacketConsumer(PacketConsumers.PLAYER_ACTION, Reflections.clazz$ServerboundPlayerActionPacket);
|
||||
registerNMSPacketConsumer(PacketConsumers.SWING_HAND, Reflections.clazz$ServerboundSwingPacket);
|
||||
registerNMSPacketConsumer(PacketConsumers.HELLO_C2S, Reflections.clazz$ServerboundHelloPacket);
|
||||
registerNMSPacketConsumer(PacketConsumers.USE_ITEM_ON, Reflections.clazz$ServerboundUseItemOnPacket);
|
||||
registerNMSPacketConsumer(PacketConsumers.PICK_ITEM_FROM_BLOCK, Reflections.clazz$ServerboundPickItemFromBlockPacket);
|
||||
registerNMSPacketConsumer(PacketConsumers.SET_CREATIVE_SLOT, Reflections.clazz$ServerboundSetCreativeModeSlotPacket);
|
||||
|
||||
@@ -1156,6 +1156,19 @@ public class PacketConsumers {
|
||||
}
|
||||
}
|
||||
|
||||
public static final TriConsumer<NetWorkUser, NMSPacketEvent, Object> HELLO_C2S = (user, event, packet) -> {
|
||||
try {
|
||||
if (!user.isOnline()) return;
|
||||
BukkitServerPlayer player = (BukkitServerPlayer) user;
|
||||
String name = (String) Reflections.field$ServerboundHelloPacket$name.get(packet);
|
||||
UUID uuid = (UUID) Reflections.field$ServerboundHelloPacket$uuid.get(packet);
|
||||
player.setName(name);
|
||||
player.setUUID(uuid);
|
||||
} catch (Exception e) {
|
||||
CraftEngine.instance().logger().warn("Failed to handle ServerboundHelloPacket", e);
|
||||
}
|
||||
};
|
||||
|
||||
public static final TriConsumer<NetWorkUser, NMSPacketEvent, Object> SWING_HAND = (user, event, packet) -> {
|
||||
try {
|
||||
if (!user.isOnline()) return;
|
||||
|
||||
@@ -43,6 +43,8 @@ public class BukkitServerPlayer extends Player {
|
||||
private final BukkitCraftEngine plugin;
|
||||
// connection state
|
||||
private final Channel channel;
|
||||
private String name;
|
||||
private UUID uuid;
|
||||
private ConnectionState decoderState;
|
||||
private ConnectionState encoderState;
|
||||
// some references
|
||||
@@ -94,6 +96,8 @@ public class BukkitServerPlayer extends Player {
|
||||
public void setPlayer(org.bukkit.entity.Player player) {
|
||||
this.playerRef = new WeakReference<>(player);
|
||||
this.serverPlayerRef = new WeakReference<>(FastNMS.INSTANCE.method$CraftPlayer$getHandle(player));
|
||||
this.uuid = player.getUniqueId();
|
||||
this.name = player.getName();
|
||||
if (Reflections.method$CraftPlayer$setSimplifyContainerDesyncCheck != null) {
|
||||
try {
|
||||
Reflections.method$CraftPlayer$setSimplifyContainerDesyncCheck.invoke(player, true);
|
||||
@@ -219,9 +223,24 @@ public class BukkitServerPlayer extends Player {
|
||||
|
||||
@Override
|
||||
public String name() {
|
||||
org.bukkit.entity.Player player = platformPlayer();
|
||||
if (player == null) return "Unknown";
|
||||
return player.getName();
|
||||
return this.name;
|
||||
}
|
||||
|
||||
@Override
|
||||
public void setName(String name) {
|
||||
if (this.name != null) return;
|
||||
this.name = name;
|
||||
}
|
||||
|
||||
@Override
|
||||
public UUID uuid() {
|
||||
return this.uuid;
|
||||
}
|
||||
|
||||
@Override
|
||||
public void setUUID(UUID uuid) {
|
||||
if (this.uuid != null) return;
|
||||
this.uuid = uuid;
|
||||
}
|
||||
|
||||
@Override
|
||||
|
||||
@@ -6437,4 +6437,23 @@ public class Reflections {
|
||||
ReflectionUtils.getMethod(
|
||||
clazz$CraftPlayer, new String[]{"setSimplifyContainerDesyncCheck"}, boolean.class
|
||||
);
|
||||
|
||||
public static final Class<?> clazz$ServerboundHelloPacket = requireNonNull(
|
||||
ReflectionUtils.getClazz(
|
||||
BukkitReflectionUtils.assembleMCClass("network.protocol.game.ServerboundHelloPacket"),
|
||||
BukkitReflectionUtils.assembleMCClass("network.protocol.game.PacketLoginInStart")
|
||||
)
|
||||
);
|
||||
|
||||
public static final Field field$ServerboundHelloPacket$name = requireNonNull(
|
||||
ReflectionUtils.getDeclaredField(
|
||||
clazz$ServerboundHelloPacket, String.class, 0
|
||||
)
|
||||
);
|
||||
|
||||
public static final Field field$ServerboundHelloPacket$uuid = requireNonNull(
|
||||
ReflectionUtils.getDeclaredField(
|
||||
clazz$ServerboundHelloPacket, UUID.class, 0
|
||||
)
|
||||
);
|
||||
}
|
||||
|
||||
@@ -0,0 +1,6 @@
|
||||
package net.momirealms.craftengine.core.pack.host;
|
||||
|
||||
import java.util.UUID;
|
||||
|
||||
public record ResourcePackDownloadData(String url, UUID uuid, String sha1) {
|
||||
}
|
||||
@@ -0,0 +1,11 @@
|
||||
package net.momirealms.craftengine.core.pack.host;
|
||||
|
||||
import java.util.UUID;
|
||||
import java.util.concurrent.CompletableFuture;
|
||||
|
||||
public interface ResourcePackHost {
|
||||
|
||||
CompletableFuture<ResourcePackDownloadData> requestOneTimeUrl(UUID player);
|
||||
|
||||
ResourcePackDownloadData getResourcePackUrl(UUID player);
|
||||
}
|
||||
@@ -7,6 +7,7 @@ import org.jetbrains.annotations.ApiStatus;
|
||||
|
||||
import java.util.List;
|
||||
import java.util.Map;
|
||||
import java.util.UUID;
|
||||
|
||||
public interface NetWorkUser {
|
||||
boolean isOnline();
|
||||
@@ -17,6 +18,12 @@ public interface NetWorkUser {
|
||||
|
||||
String name();
|
||||
|
||||
void setName(String name);
|
||||
|
||||
UUID uuid();
|
||||
|
||||
void setUUID(UUID uuid);
|
||||
|
||||
void sendPacket(Object packet, boolean immediately);
|
||||
|
||||
void receivePacket(Object packet);
|
||||
|
||||
Reference in New Issue
Block a user