From da35fe3cb6b0df1a4b27a07d334dabe17df848bb Mon Sep 17 00:00:00 2001 From: JKetelaar Date: Tue, 1 Nov 2016 01:33:34 +0100 Subject: [PATCH] [BUGFIX] Fixed issue with accessibility --- .../randoms/dreamscape/SerialBanAvoider.java | 22 ++++++++++++++----- 1 file changed, 16 insertions(+), 6 deletions(-) diff --git a/src/main/java/org/parabot/randoms/dreamscape/SerialBanAvoider.java b/src/main/java/org/parabot/randoms/dreamscape/SerialBanAvoider.java index b1078d4..422e9ea 100644 --- a/src/main/java/org/parabot/randoms/dreamscape/SerialBanAvoider.java +++ b/src/main/java/org/parabot/randoms/dreamscape/SerialBanAvoider.java @@ -6,6 +6,9 @@ import org.parabot.core.reflect.RefClass; import org.parabot.core.reflect.RefField; import org.parabot.environment.scripts.randoms.Random; +import java.lang.reflect.Field; +import java.lang.reflect.Modifier; + /** * @author JKetelaar */ @@ -23,17 +26,24 @@ public class SerialBanAvoider implements Random { @Override public void execute() { - RefClass client = new RefClass(Context.getInstance().getClient()); - RefField serial = client.getField(serialAddressField); - if (serial != null) { - serial.set(serialAddressValue); - } else { - Core.verbose(String.format("Oh oh... Couldn't find field: %s", serialAddressField)); + try { + workAroundStaticValues(Context.getInstance().getClient().getClass(), serialAddressField, serialAddressValue); + } catch (NoSuchFieldException | IllegalAccessException e) { + e.printStackTrace(); } done = true; } + private void workAroundStaticValues(Class clazz, String fieldName, Object newValue) throws NoSuchFieldException, IllegalAccessException { + Field field = clazz.getDeclaredField(fieldName); + field.setAccessible(true); + Field modifiers = field.getClass().getDeclaredField("modifiers"); + modifiers.setAccessible(true); + modifiers.setInt(field, field.getModifiers() & ~Modifier.FINAL); + field.set(null, newValue); + } + @Override public String getName() { return "Serial ban avoider";