3
0
Mirror von https://github.com/ViaVersion/ViaVersion.git synchronisiert 2024-12-27 08:30:09 +01:00

Make commandblocks compatible with all 1.8 spigot/craftbukkit versions, fix #355 (#356)

Dieser Commit ist enthalten in:
Mats 2016-04-14 13:59:23 +02:00 committet von Myles
Ursprung 6b8b0e1771
Commit c214ca02e8
2 geänderte Dateien mit 10 neuen und 2 gelöschten Zeilen

Datei anzeigen

@ -122,11 +122,15 @@ public class CommandBlockListener implements Listener {
private long[] getPosition(Object obj) throws ClassNotFoundException, NoSuchFieldException, IllegalAccessException { private long[] getPosition(Object obj) throws ClassNotFoundException, NoSuchFieldException, IllegalAccessException {
return new long[]{ return new long[]{
(long) ReflectionUtil.getSuper(obj, "a", int.class), //X (long) ReflectionUtil.getSuper(obj, "a", int.class), //X
(long) ReflectionUtil.getSuper(obj, "c", int.class), //Y (long) ReflectionUtil.getSuper(obj, isR1() ? "b" : "c", int.class), //Y
(long) ReflectionUtil.getSuper(obj, "d", int.class) //Z (long) ReflectionUtil.getSuper(obj, isR1() ? "c" : "d", int.class) //Z
}; };
} }
private boolean isR1() {
return ReflectionUtil.getVersion().equals("v1_8_R1");
}
private CompoundTag getNBT(Object obj) throws Exception { private CompoundTag getNBT(Object obj) throws Exception {
ByteBuf buf = Unpooled.buffer(); ByteBuf buf = Unpooled.buffer();
Method m = ReflectionUtil.nms("NBTCompressedStreamTools").getMethod("a", ReflectionUtil.nms("NBTTagCompound"), DataOutput.class); Method m = ReflectionUtil.nms("NBTCompressedStreamTools").getMethod("a", ReflectionUtil.nms("NBTTagCompound"), DataOutput.class);

Datei anzeigen

@ -22,6 +22,10 @@ public class ReflectionUtil {
return Class.forName(BASE + "." + className); return Class.forName(BASE + "." + className);
} }
public static String getVersion() {
return BASE.substring(BASE.lastIndexOf('.') + 1);
}
public static Object invokeStatic(Class<?> clazz, String method) throws NoSuchMethodException, InvocationTargetException, IllegalAccessException { public static Object invokeStatic(Class<?> clazz, String method) throws NoSuchMethodException, InvocationTargetException, IllegalAccessException {
Method m = clazz.getDeclaredMethod(method); Method m = clazz.getDeclaredMethod(method);
return m.invoke(null); return m.invoke(null);