@@ -95,14 +95,14 @@ public static void updateEntity(Entity entity, List<Player> observers) throws Fi
95
95
}
96
96
97
97
// Phew, finally there.
98
- Collection <?> trackedPlayers = ( Collection <?>) FieldUtils . readField ( trackedPlayersField , trackerEntry , false );
98
+ Collection <?> trackedPlayers = getTrackedPlayers ( trackedPlayersField , trackerEntry );
99
99
List <Object > nmsPlayers = unwrapBukkit (observers );
100
100
101
101
// trackEntity.trackedPlayers.clear();
102
102
trackedPlayers .removeAll (nmsPlayers );
103
103
104
104
// We have to rely on a NAME once again. Damn it.
105
- // TODO: Make sure this stays up to date with version changes - 1.9
105
+ // TODO: Make sure this stays up to date with version changes - 1.8 - 1.10
106
106
if (scanPlayersMethod == null ) {
107
107
scanPlayersMethod = trackerEntry .getClass ().getMethod ("scanPlayers" , List .class );
108
108
}
@@ -142,16 +142,7 @@ public static List<Player> getEntityTrackers(Entity entity) {
142
142
trackedPlayersField = FuzzyReflection .fromObject (trackerEntry ).getFieldByType ("java\\ .util\\ ..*" );
143
143
}
144
144
145
- Collection <?> trackedPlayers = null ;
146
- Object value = FieldUtils .readField (trackedPlayersField , trackerEntry , false );
147
-
148
- if (value instanceof Collection ) {
149
- trackedPlayers = (Collection <?>) value ;
150
- } else if (value instanceof Map ) { // PaperSpigot
151
- trackedPlayers = ((Map <?, ?>) value ).keySet ();
152
- } else { // Please, no more changes
153
- throw new IllegalStateException ("trackedPlayers field was an unknown type: expected Set or Map, but got " + value .getClass ());
154
- }
145
+ Collection <?> trackedPlayers = getTrackedPlayers (trackedPlayersField , trackerEntry );
155
146
156
147
// Wrap every player - we also ensure that the underlying tracker list is immutable
157
148
for (Object tracker : trackedPlayers ) {
@@ -165,7 +156,21 @@ public static List<Player> getEntityTrackers(Entity entity) {
165
156
throw new FieldAccessException ("Security limitation prevented access to the list of tracked players." , e );
166
157
}
167
158
}
168
-
159
+
160
+ // Damn you, Paper
161
+ private static Collection <?> getTrackedPlayers (Field field , Object entry ) throws IllegalAccessException {
162
+ Object value = FieldUtils .readField (field , entry , false );
163
+
164
+ if (value instanceof Collection ) {
165
+ return (Collection <?>) value ;
166
+ } else if (value instanceof Map ) {
167
+ return ((Map <?, ?>) value ).keySet ();
168
+ } else {
169
+ // Please. No more changes.
170
+ throw new IllegalStateException ("trackedPlayers field was an unknown type: expected Collection or Map, but got " + value .getClass ());
171
+ }
172
+ }
173
+
169
174
/**
170
175
* Retrieve the entity tracker entry given a ID.
171
176
* @param world - world server.
0 commit comments