Make it possible to modify the player list in the ping packet.

This commit is contained in:
Kristian S. Stangeland 2013-12-14 17:35:29 +01:00
parent a6f4aaa09a
commit f41efdec60
3 changed files with 5 additions and 4 deletions

View File

@ -256,7 +256,7 @@ public class BukkitConverters {
* @return An equivalent converter. * @return An equivalent converter.
*/ */
public static <T> EquivalentConverter<Iterable<? extends T>> getArrayConverter( public static <T> EquivalentConverter<Iterable<? extends T>> getArrayConverter(
final Class<?> genericItemType, final EquivalentConverter<T> itemConverter) { final Class<?> genericItemType, final EquivalentConverter<T> itemConverter) {
// Convert to and from the wrapper // Convert to and from the wrapper
return new IgnoreNullConverter<Iterable<? extends T>>() { return new IgnoreNullConverter<Iterable<? extends T>>() {
@Override @Override
@ -279,7 +279,7 @@ public class BukkitConverters {
@Override @Override
protected Object getGenericValue(Class<?> genericType, Iterable<? extends T> specific) { protected Object getGenericValue(Class<?> genericType, Iterable<? extends T> specific) {
List<T> list = Lists.newArrayList(specific); List<T> list = Lists.newArrayList(specific);
Object[] output = (Object[]) Array.newInstance(genericType, list.size()); Object[] output = (Object[]) Array.newInstance(genericItemType, list.size());
// Convert each object // Convert each object
for (int i = 0; i < output.length; i++) { for (int i = 0; i < output.length; i++) {

View File

@ -568,7 +568,7 @@ public class WrappedDataWatcher extends AbstractWrapper implements Iterable<Wrap
VALUE_MAP_ACCESSOR = Accessors.getFieldAccessor(lookup, true); VALUE_MAP_ACCESSOR = Accessors.getFieldAccessor(lookup, true);
} }
} }
// Spigot workaround // Spigot workaround (not necessary
initializeSpigot(fuzzy); initializeSpigot(fuzzy);
// Initialize static type type // Initialize static type type
@ -588,6 +588,7 @@ public class WrappedDataWatcher extends AbstractWrapper implements Iterable<Wrap
initializeMethods(fuzzy); initializeMethods(fuzzy);
} }
// TODO: Remove, as this was fixed in build #1189 of Spigot
private static void initializeSpigot(FuzzyReflection fuzzy) { private static void initializeSpigot(FuzzyReflection fuzzy) {
// See if the workaround is needed // See if the workaround is needed
if (TYPE_MAP_ACCESSOR != null && VALUE_MAP_ACCESSOR != null) if (TYPE_MAP_ACCESSOR != null && VALUE_MAP_ACCESSOR != null)

View File

@ -46,7 +46,7 @@ public class WrappedServerPing extends AbstractWrapper {
// For converting to the underlying array // For converting to the underlying array
private static EquivalentConverter<Iterable<? extends WrappedGameProfile>> PROFILE_CONVERT = private static EquivalentConverter<Iterable<? extends WrappedGameProfile>> PROFILE_CONVERT =
BukkitConverters.getArrayConverter(GameProfile[].class, BukkitConverters.getWrappedGameProfileConverter()); BukkitConverters.getArrayConverter(GameProfile.class, BukkitConverters.getWrappedGameProfileConverter());
// Server ping player sample fields // Server ping player sample fields
private static Class<?> PLAYERS_CLASS = MinecraftReflection.getServerPingPlayerSampleClass(); private static Class<?> PLAYERS_CLASS = MinecraftReflection.getServerPingPlayerSampleClass();