public static void setInvulnerable(Entity ent){
try {
Method getHandle = getCraftClass("entity.CraftEntity").getMethod("getHandle");
Constructor<?> nbttag = getMCClass("NBTTagCompound").getConstructor();
Method e = getMCClass("Entity").getMethod("e", getMCClass("NBTTagCompound"));
Method f = getMCClass("Entity").getMethod("f", getMCClass("NBTTagCompound"));
Method setBoolean = getMCClass("NBTTagCompound").getMethod("setBoolean", String.class, boolean.class);
Object nms_entity = getHandle.invoke(ent);
Object nms_tag = nbttag.newInstance();
e.invoke(nms_entity, nms_tag);
setBoolean.invoke(nms_tag, "Invulnerable", true);
setBoolean.invoke(nms_tag, "Silent", true);
setBoolean.invoke(nms_tag, "NoAI", true);
f.invoke(nms_entity, nms_tag);
} catch (Exception e){
e.printStackTrace();
}
}
private static Class<?> getMCClass(String name) throws ClassNotFoundException {
String version = Bukkit.getServer().getClass().getPackage().getName().replace(".", ",").split(",")[3] + ".";
String className = "net.minecraft.server." + version + name;
return Class.forName(className);
}
private static Class<?> getCraftClass(String name) throws ClassNotFoundException {
String version = Bukkit.getServer().getClass().getPackage().getName().replace(".", ",").split(",")[3] + ".";
String className = "org.bukkit.craftbukkit." + version + name;
return Class.forName(className);
}
METODO
setInvulnerable(ENTIDADE);