我目前正在开发一个插件,让您可以假设另一个玩家的身份。它几乎完美地做到了这一点:您的 UUID 和用户名已更改为您在服务器端假定其身份的用户的用户名,并且据服务器和插件所知,您似乎就是该玩家。您将拥有与他们相同的等级、相同的权限以及一切。我一直无法得到的一件事是皮肤。我曾想过当 UUID 是其他玩家时,玩家的皮肤会改变,但事实并非如此。我正在使用反射来更改 GameProfile 和 EntityPlayer 中的 UUID(uniqueID 字段继承自 Entity),并且所有获取玩家 UUID 的方法都返回插件设置的 UUID。我挖掘了反编译的 NMS 和 Bukkit/Spigot 论坛,但所有这些似乎都表明皮肤应该随着 UUID 改变。我将 PlayerQuitEvent 和 PlayerJoinEvent 发送到插件以模拟真实玩家离开和假定玩家加入,并向所有玩家发送数据包以从选项卡和游戏中删除旧玩家,然后添加新玩家。如果可以避免,我宁愿不使用 ProtocolLib。任何帮助将不胜感激,有人能指出我正确的方向吗?
提前致谢!
我最近决定尝试一下 Java 的新孵化矢量 API,看看它能达到多快。我实现了两种相当简单的方法,一种用于解析 int,另一种用于查找字符串中字符的索引。在这两种情况下,与标量方法相比,我的矢量化方法都慢得令人难以置信。
这是我的代码:
public class SIMDParse {
private static IntVector mul = IntVector.fromArray(
IntVector.SPECIES_512,
new int[] {0, 0, 0, 0, 0, 0, 1000000000, 100000000, 10000000, 1000000, 100000, 10000, 1000, 100, 10, 1},
0
);
private static byte zeroChar = (byte) '0';
private static int width = IntVector.SPECIES_512.length();
private static byte[] filler;
static {
filler = new byte[16];
for (int i = 0; i < 16; i++) {
filler[i] = zeroChar;
}
}
public static int parseInt(String str) …Run Code Online (Sandbox Code Playgroud)