fix book tool on 1.14.4

This commit is contained in:
坏黑
2019-08-18 16:58:05 +08:00
parent a643453c88
commit 9b9ebc148b
11 changed files with 107 additions and 449 deletions

View File

@@ -36,7 +36,7 @@ public class TInjectAsm implements TabooLibLoader.Loader {
declaredField.setAccessible(true);
declaredField.set(instance, SimpleVersionControl.createNMS(annotation.asm()).useCache().translate(plugin).newInstance());
} catch (Throwable t) {
t.printStackTrace();
TLogger.getGlobalLogger().warn("Cannot translate class \"" + declaredField.getType().getName() + "\": " + t.getMessage());
}
}
}

View File

@@ -20,6 +20,8 @@ public abstract class NMS {
return impl;
}
abstract public void openBook(Player player, ItemStack book);
abstract public boolean isRunning();
abstract public Object toPacketPlayOutWorldParticles(Particle var1, boolean var2, float var3, float var4, float var5, float var6, float var7, float var8, float var9, int var10, Object var11);

View File

@@ -9,12 +9,14 @@ import net.minecraft.server.v1_12_R1.ChatMessageType;
import net.minecraft.server.v1_12_R1.EntityVillager;
import net.minecraft.server.v1_12_R1.MinecraftServer;
import net.minecraft.server.v1_12_R1.NBTTagCompound;
import net.minecraft.server.v1_13_R2.EnumHand;
import net.minecraft.server.v1_13_R2.IRegistry;
import net.minecraft.server.v1_8_R3.*;
import org.bukkit.Bukkit;
import org.bukkit.Particle;
import org.bukkit.craftbukkit.v1_12_R1.CraftParticle;
import org.bukkit.craftbukkit.v1_13_R2.CraftServer;
import org.bukkit.craftbukkit.v1_13_R2.entity.CraftPlayer;
import org.bukkit.craftbukkit.v1_13_R2.entity.CraftVillager;
import org.bukkit.craftbukkit.v1_8_R3.inventory.CraftItemStack;
import org.bukkit.entity.Entity;
@@ -62,6 +64,20 @@ public class NMSImpl extends NMS {
SimpleReflection.saveField(MinecraftServer.class);
}
@Override
public void openBook(Player player, ItemStack book) {
// 你妈 1.14.3 的 a() 到 1.14.4 的 openBook() 不改 nms 版本号?都是 1_14_R1神经病吧
Object bookItem = org.bukkit.craftbukkit.v1_13_R2.inventory.CraftItemStack.asNMSCopy(book);
try {
((CraftPlayer) player).getHandle().a((net.minecraft.server.v1_13_R2.ItemStack) bookItem, EnumHand.MAIN_HAND);
} catch (Throwable ignored) {
try {
((org.bukkit.craftbukkit.v1_14_R1.entity.CraftPlayer) player).getHandle().openBook((net.minecraft.server.v1_14_R1.ItemStack) bookItem, net.minecraft.server.v1_14_R1.EnumHand.MAIN_HAND);
} catch (Throwable ignored2) {
}
}
}
@Override
public boolean isRunning() {
return !SimpleReflection.getFieldValue(MinecraftServer.class, ((CraftServer) Bukkit.getServer()).getServer(), "hasStopped", false);