diff --git a/main/src/main/java/net/citizensnpcs/util/NMS.java b/main/src/main/java/net/citizensnpcs/util/NMS.java index dd9b03793..77bcb9c50 100644 --- a/main/src/main/java/net/citizensnpcs/util/NMS.java +++ b/main/src/main/java/net/citizensnpcs/util/NMS.java @@ -66,6 +66,10 @@ public class NMS { } public static Field getField(Class<?> clazz, String field) { + return getField(clazz, field, true); + } + + public static Field getField(Class<?> clazz, String field, boolean log) { if (clazz == null) return null; Field f = null; @@ -73,20 +77,28 @@ public class NMS { f = clazz.getDeclaredField(field); f.setAccessible(true); } catch (Exception e) { - Messaging.logTr(Messages.ERROR_GETTING_FIELD, field, e.getLocalizedMessage()); + if (log) { + Messaging.logTr(Messages.ERROR_GETTING_FIELD, field, e.getLocalizedMessage()); + } } return f; } public static Field getFinalField(Class<?> clazz, String field) { - Field f = getField(clazz, field); + return getFinalField(clazz, field, true); + } + + public static Field getFinalField(Class<?> clazz, String field, boolean log) { + Field f = getField(clazz, field, log); if (f == null) { return null; } try { MODIFIERS_FIELD.setInt(f, f.getModifiers() & ~Modifier.FINAL); } catch (Exception e) { - Messaging.logTr(Messages.ERROR_GETTING_FIELD, field, e.getLocalizedMessage()); + if (log) { + Messaging.logTr(Messages.ERROR_GETTING_FIELD, field, e.getLocalizedMessage()); + } return null; } return f; diff --git a/v1_13_R2/src/main/java/net/citizensnpcs/nms/v1_13_R2/util/NMSImpl.java b/v1_13_R2/src/main/java/net/citizensnpcs/nms/v1_13_R2/util/NMSImpl.java index bd744a998..23f7d1b75 100644 --- a/v1_13_R2/src/main/java/net/citizensnpcs/nms/v1_13_R2/util/NMSImpl.java +++ b/v1_13_R2/src/main/java/net/citizensnpcs/nms/v1_13_R2/util/NMSImpl.java @@ -1017,7 +1017,10 @@ public class NMSImpl implements NMSBridge { public void shutdown() { if (ENTITY_REGISTRY == null) return; - Field field = NMS.getFinalField(EntityTypes.class, "REGISTRY"); + Field field = NMS.getFinalField(EntityTypes.class, "REGISTRY", false); + if (field == null) { + field = NMS.getFinalField(IRegistry.class, "ENTITY_TYPE"); + } try { field.set(null, ENTITY_REGISTRY.getWrapped()); } catch (Exception e) { @@ -1592,7 +1595,10 @@ public class NMSImpl implements NMSBridge { static { try { - Field field = NMS.getFinalField(EntityTypes.class, "REGISTRY"); + Field field = NMS.getFinalField(EntityTypes.class, "REGISTRY", false); + if (field == null) { + field = NMS.getFinalField(IRegistry.class, "ENTITY_TYPE"); + } ENTITY_REGISTRY = new CustomEntityRegistry((RegistryMaterials<EntityTypes<?>>) field.get(null)); field.set(null, ENTITY_REGISTRY); } catch (Exception e) {