Quellcode durchsuchen

Enforce dependency separation for google classes
Fix violation of this separation, closes #5

malte0811 vor 4 Jahren
Ursprung
Commit
83a7af553e

+ 17 - 0
common/build.gradle

@@ -1,5 +1,16 @@
 apply plugin: 'java'
 
+sourceSets {
+    googleextension {
+        java
+    }
+    main {
+        java {
+            runtimeClasspath += googleextension.output
+        }
+    }
+}
+
 dependencies {
     minecraft "com.mojang:minecraft:${rootProject.minecraft_version}"
     mappings "de.oceanlabs.mcp:mcp_snapshot:20201028-1.16.3"
@@ -9,6 +20,8 @@ dependencies {
     modCompile "net.fabricmc:fabric-loader:${rootProject.fabric_loader_version}"
     testImplementation(platform('org.junit:junit-bom:5.7.1'))
     testImplementation('org.junit.jupiter:junit-jupiter')
+    googleextensionCompileOnly('com.google.guava:guava:21.0')
+    googleextensionCompileOnly('org.jetbrains:annotations:19.0.0')
 }
 
 architectury {
@@ -16,6 +29,10 @@ architectury {
     common()
 }
 
+jar {
+    from(sourceSets.googleextension.output)
+}
+
 test {
     useJUnitPlatform()
 }

+ 0 - 4
common/src/main/java/com/google/common/collect/FerriteCoreEntrySet.java → common/src/googleextension/java/com/google/common/collect/FerriteCoreEntrySet.java

@@ -1,6 +1,5 @@
 package com.google.common.collect;
 
-import net.minecraft.state.Property;
 import org.jetbrains.annotations.NotNull;
 import org.jetbrains.annotations.Nullable;
 
@@ -33,9 +32,6 @@ public class FerriteCoreEntrySet<K> extends ImmutableSet<Map.Entry<K, Comparable
             return false;
         }
         Map.Entry<?, ?> entry = (Map.Entry<?, ?>) object;
-        if (!(entry.getKey() instanceof Property<?>)) {
-            return false;
-        }
         Object valueInMap = FerriteCoreImmutableMap.getByStateAndKey.apply(viewedState, entry.getKey());
         return valueInMap != null && valueInMap.equals(((Map.Entry<?, ?>) object).getValue());
     }

+ 0 - 0
common/src/main/java/com/google/common/collect/FerriteCoreImmutableMap.java → common/src/googleextension/java/com/google/common/collect/FerriteCoreImmutableMap.java


+ 0 - 0
common/src/main/java/com/google/common/collect/FerriteCoreIterator.java → common/src/googleextension/java/com/google/common/collect/FerriteCoreIterator.java


+ 5 - 1
common/src/main/java/malte0811/ferritecore/classloading/FastImmutableMapDefiner.java

@@ -66,7 +66,11 @@ public class FastImmutableMapDefiner {
             map.getField("getByStateAndKey").set(
                     null, (BiFunction<Object, Object, Comparable<?>>) (o, key) -> {
                         FastMapStateHolder<?> stateHolder = (FastMapStateHolder<?>) o;
-                        return stateHolder.getStateMap().getValue(stateHolder.getStateIndex(), (Property<?>) key);
+                        if (key instanceof Property<?>) {
+                            return stateHolder.getStateMap().getValue(stateHolder.getStateIndex(), (Property<?>) key);
+                        } else {
+                            return null;
+                        }
                     }
             );
             map.getField("entryByStateAndIndex").set(