Archiviert
13
0

Handle 1.3 correctly.

Dieser Commit ist enthalten in:
Kristian S. Stangeland 2012-09-26 04:06:10 +02:00
Ursprung 22f2f45d1e
Commit 9efb85e7c3
4 geänderte Dateien mit 20 neuen und 8 gelöschten Zeilen

Datei anzeigen

@ -116,6 +116,9 @@ public class NetworkServerInjector extends PlayerInjector {
// Inject it now // Inject it now
if (proxyObject != null) { if (proxyObject != null) {
serverHandlerRef.setValue(proxyObject); serverHandlerRef.setValue(proxyObject);
} else {
throw new RuntimeException(
"Cannot hook player: Unable to find a valid constructor for the NetServerHandler object.");
} }
} }

Datei anzeigen

@ -132,21 +132,26 @@ abstract class PlayerInjector {
// What a mess // What a mess
try { try {
if (netHandlerField == null) if (netHandlerField == null)
netHandlerField = FuzzyReflection.fromClass(networkManagerField.getType(), true). netHandlerField = FuzzyReflection.fromClass(networkManager.getClass(), true).
getFieldByType("net\\.minecraft\\.NetHandler"); getFieldByType("net\\.minecraft\\.NetHandler");
} catch (RuntimeException e1) { } catch (RuntimeException e1) {
// Swallow it
}
// Second attempt
if (netHandlerField == null) {
try { try {
// Well, that sucks. Try just Minecraft objects then. // Well, that sucks. Try just Minecraft objects then.
netHandlerField = FuzzyReflection.fromClass(networkManagerField.getType(), true). netHandlerField = FuzzyReflection.fromClass(networkManager.getClass(), true).
getFieldByType(FuzzyReflection.MINECRAFT_OBJECT); getFieldByType(FuzzyReflection.MINECRAFT_OBJECT);
} catch (RuntimeException e2) { } catch (RuntimeException e2) {
return new IllegalAccessException("Cannot locate net handler. " + e2.getMessage()); throw new IllegalAccessException("Cannot locate net handler. " + e2.getMessage());
} }
} }
// Get the handler // Get the handler
if (netHandler != null) if (netHandler == null)
netHandler = FieldUtils.readField(netHandlerField, networkManager, true); netHandler = FieldUtils.readField(netHandlerField, networkManager, true);
return netHandler; return netHandler;
} }

Datei anzeigen

@ -20,8 +20,6 @@ package com.comphenix.protocol.reflect.instances;
import java.lang.reflect.Constructor; import java.lang.reflect.Constructor;
import java.util.*; import java.util.*;
import javax.print.CancelablePrintJob;
import net.sf.cglib.proxy.Enhancer; import net.sf.cglib.proxy.Enhancer;
import com.google.common.base.Objects; import com.google.common.base.Objects;

Datei anzeigen

@ -40,8 +40,9 @@ public class ExistingGenerator implements InstanceProvider {
try { try {
Object value = FieldUtils.readField(field, object, true); Object value = FieldUtils.readField(field, object, true);
// Use the type of the field, not the object itself
if (value != null) if (value != null)
generator.addObject(value); generator.addObject(field.getType(), value);
} catch (Exception e) { } catch (Exception e) {
// Yes, swallow it. No, really. // Yes, swallow it. No, really.
@ -72,6 +73,11 @@ public class ExistingGenerator implements InstanceProvider {
existingValues.put(value.getClass(), value); existingValues.put(value.getClass(), value);
} }
private void addObject(Class<?> type, Object value) {
existingValues.put(type, value);
}
@Override @Override
public Object create(@Nullable Class<?> type) { public Object create(@Nullable Class<?> type) {