diff options
| author | shedaniel <daniel@shedaniel.me> | 2022-09-12 23:05:35 +0800 |
|---|---|---|
| committer | shedaniel <daniel@shedaniel.me> | 2022-09-12 23:05:35 +0800 |
| commit | d938b32705594c995ad9f82b0f0b64897b6c423f (patch) | |
| tree | e2cd09be1630093d69d6ce7d1942d861efa848f9 /api | |
| parent | 47896cdd0e1d440ca85aef3cc8f24b229a18c949 (diff) | |
| download | RoughlyEnoughItems-feature/obfuscate.tar.gz RoughlyEnoughItems-feature/obfuscate.tar.bz2 RoughlyEnoughItems-feature/obfuscate.zip | |
Obfuscate REI Internalsfeature/obfuscate
Diffstat (limited to 'api')
| -rw-r--r-- | api/src/main/java/me/shedaniel/rei/impl/ClientInternals.java | 14 | ||||
| -rw-r--r-- | api/src/main/java/me/shedaniel/rei/impl/Internals.java | 14 |
2 files changed, 26 insertions, 2 deletions
diff --git a/api/src/main/java/me/shedaniel/rei/impl/ClientInternals.java b/api/src/main/java/me/shedaniel/rei/impl/ClientInternals.java index 36456399b..0d0fd45f4 100644 --- a/api/src/main/java/me/shedaniel/rei/impl/ClientInternals.java +++ b/api/src/main/java/me/shedaniel/rei/impl/ClientInternals.java @@ -53,6 +53,7 @@ import org.jetbrains.annotations.ApiStatus; import org.jetbrains.annotations.Nullable; import java.lang.reflect.Field; +import java.lang.reflect.ParameterizedType; import java.util.Collection; import java.util.List; import java.util.function.BiConsumer; @@ -84,7 +85,18 @@ public final class ClientInternals { @ApiStatus.Internal public static <T> void attachInstance(T instance, Class<T> clazz) { - attachInstanceSupplier(instance, clazz.getSimpleName()); + try { + for (Field field : ClientInternals.class.getDeclaredFields()) { + if (field.getGenericType() instanceof ParameterizedType && ((ParameterizedType) field.getGenericType()).getActualTypeArguments()[0] == clazz) { + field.setAccessible(true); + field.set(null, (Supplier<T>) () -> instance); + return; + } + } + throw new RuntimeException("Failed to attach " + instance + " with field type: " + clazz); + } catch (IllegalAccessException e) { + throw new RuntimeException(e); + } } @ApiStatus.Internal diff --git a/api/src/main/java/me/shedaniel/rei/impl/Internals.java b/api/src/main/java/me/shedaniel/rei/impl/Internals.java index 1e64c2c57..c191a5b31 100644 --- a/api/src/main/java/me/shedaniel/rei/impl/Internals.java +++ b/api/src/main/java/me/shedaniel/rei/impl/Internals.java @@ -41,6 +41,7 @@ import net.minecraft.util.Unit; import org.jetbrains.annotations.ApiStatus; import java.lang.reflect.Field; +import java.lang.reflect.ParameterizedType; import java.util.function.Function; import java.util.function.Supplier; @@ -62,7 +63,18 @@ public final class Internals { @ApiStatus.Internal public static <T> void attachInstance(T instance, Class<T> clazz) { - attachInstanceSupplier(instance, clazz.getSimpleName()); + try { + for (Field field : Internals.class.getDeclaredFields()) { + if (field.getGenericType() instanceof ParameterizedType && ((ParameterizedType) field.getGenericType()).getActualTypeArguments()[0] == clazz) { + field.setAccessible(true); + field.set(null, (Supplier<T>) () -> instance); + return; + } + } + throw new RuntimeException("Failed to attach " + instance + " with field type: " + clazz); + } catch (IllegalAccessException e) { + throw new RuntimeException(e); + } } @ApiStatus.Internal |
