Quellcode durchsuchen

Move build setup from arch to a heavily modified version of Jared's multiloader setup

malte0811 vor 3 Jahren
Ursprung
Commit
20504bf66c
100 geänderte Dateien mit 490 neuen und 402 gelöschten Zeilen
  1. 19 18
      .gitignore
  2. 3 0
      .idea/scopes/Fabric_sources.xml
  3. 3 0
      .idea/scopes/Forge_sources.xml
  4. 18 28
      Common/build.gradle
  5. 0 0
      Common/src/googleaccess/java/com/google/common/collect/FerriteCoreEntrySetAccess.java
  6. 0 2
      Common/src/googleaccess/java/com/google/common/collect/FerriteCoreImmutableCollectionAccess.java
  7. 0 0
      Common/src/googleaccess/java/com/google/common/collect/FerriteCoreImmutableMapAccess.java
  8. 0 0
      Common/src/googleimpl/java/malte0811/ferritecore/fastmap/immutable/FastMapEntryEntrySet.java
  9. 0 0
      Common/src/googleimpl/java/malte0811/ferritecore/fastmap/immutable/FastMapEntryImmutableMap.java
  10. 0 0
      Common/src/googleimpl/java/malte0811/ferritecore/fastmap/immutable/FastMapEntryIterator.java
  11. 0 0
      Common/src/googleimpl/java/malte0811/ferritecore/fastmap/immutable/FastMapValueSet.java
  12. 0 0
      Common/src/main/java/malte0811/ferritecore/classloading/FastImmutableMapDefiner.java
  13. 0 0
      Common/src/main/java/malte0811/ferritecore/ducks/BlockStateCacheAccess.java
  14. 0 0
      Common/src/main/java/malte0811/ferritecore/ducks/FastMapStateHolder.java
  15. 0 0
      Common/src/main/java/malte0811/ferritecore/ducks/SmallThreadDetectable.java
  16. 0 0
      Common/src/main/java/malte0811/ferritecore/fastmap/BinaryFastMapKey.java
  17. 0 0
      Common/src/main/java/malte0811/ferritecore/fastmap/CompactFastMapKey.java
  18. 0 0
      Common/src/main/java/malte0811/ferritecore/fastmap/FastMap.java
  19. 0 0
      Common/src/main/java/malte0811/ferritecore/fastmap/FastMapKey.java
  20. 0 0
      Common/src/main/java/malte0811/ferritecore/fastmap/PropertyIndexer.java
  21. 0 0
      Common/src/main/java/malte0811/ferritecore/fastmap/table/CrashNeighborTable.java
  22. 0 0
      Common/src/main/java/malte0811/ferritecore/fastmap/table/FastmapNeighborTable.java
  23. 0 0
      Common/src/main/java/malte0811/ferritecore/fastmap/table/NeighborTableBase.java
  24. 0 0
      Common/src/main/java/malte0811/ferritecore/hash/ArrayVoxelShapeHash.java
  25. 0 0
      Common/src/main/java/malte0811/ferritecore/hash/DiscreteVSHash.java
  26. 0 0
      Common/src/main/java/malte0811/ferritecore/hash/LambdaBasedHash.java
  27. 0 0
      Common/src/main/java/malte0811/ferritecore/hash/SliceShapeHash.java
  28. 0 0
      Common/src/main/java/malte0811/ferritecore/hash/VoxelShapeHash.java
  29. 0 0
      Common/src/main/java/malte0811/ferritecore/impl/BlockStateCacheImpl.java
  30. 0 0
      Common/src/main/java/malte0811/ferritecore/impl/Deduplicator.java
  31. 0 0
      Common/src/main/java/malte0811/ferritecore/impl/KeyValueConditionImpl.java
  32. 0 0
      Common/src/main/java/malte0811/ferritecore/impl/StateHolderImpl.java
  33. 0 0
      Common/src/main/java/malte0811/ferritecore/mixin/blockstatecache/ArrayVSAccess.java
  34. 0 0
      Common/src/main/java/malte0811/ferritecore/mixin/blockstatecache/BitSetDVSAccess.java
  35. 0 0
      Common/src/main/java/malte0811/ferritecore/mixin/blockstatecache/BlockStateBaseMixin.java
  36. 0 0
      Common/src/main/java/malte0811/ferritecore/mixin/blockstatecache/BlockStateCacheMixin.java
  37. 0 0
      Common/src/main/java/malte0811/ferritecore/mixin/blockstatecache/Config.java
  38. 0 0
      Common/src/main/java/malte0811/ferritecore/mixin/blockstatecache/DiscreteVSAccess.java
  39. 0 0
      Common/src/main/java/malte0811/ferritecore/mixin/blockstatecache/SliceShapeAccess.java
  40. 0 0
      Common/src/main/java/malte0811/ferritecore/mixin/blockstatecache/SubShapeAccess.java
  41. 0 0
      Common/src/main/java/malte0811/ferritecore/mixin/blockstatecache/VoxelShapeAccess.java
  42. 0 0
      Common/src/main/java/malte0811/ferritecore/mixin/config/FerriteConfig.java
  43. 0 0
      Common/src/main/java/malte0811/ferritecore/mixin/config/FerriteMixinConfig.java
  44. 0 0
      Common/src/main/java/malte0811/ferritecore/mixin/dedupbakedquad/BakedQuadAccess.java
  45. 0 0
      Common/src/main/java/malte0811/ferritecore/mixin/dedupbakedquad/Config.java
  46. 0 0
      Common/src/main/java/malte0811/ferritecore/mixin/dedupbakedquad/SimpleModelBuilderMixin.java
  47. 0 0
      Common/src/main/java/malte0811/ferritecore/mixin/dedupmultipart/Config.java
  48. 0 0
      Common/src/main/java/malte0811/ferritecore/mixin/dedupmultipart/MixinMultipartBuilder.java
  49. 0 0
      Common/src/main/java/malte0811/ferritecore/mixin/dedupmultipart/MixinMultipartModel.java
  50. 0 0
      Common/src/main/java/malte0811/ferritecore/mixin/fastmap/Config.java
  51. 0 0
      Common/src/main/java/malte0811/ferritecore/mixin/fastmap/FastMapStateHolderMixin.java
  52. 0 0
      Common/src/main/java/malte0811/ferritecore/mixin/mrl/Config.java
  53. 0 0
      Common/src/main/java/malte0811/ferritecore/mixin/mrl/ModelResourceLocationMixin.java
  54. 0 0
      Common/src/main/java/malte0811/ferritecore/mixin/mrl/ResourceLocationAccess.java
  55. 0 0
      Common/src/main/java/malte0811/ferritecore/mixin/predicates/AndConditionMixin.java
  56. 0 0
      Common/src/main/java/malte0811/ferritecore/mixin/predicates/Config.java
  57. 0 0
      Common/src/main/java/malte0811/ferritecore/mixin/predicates/KeyValueConditionMixin.java
  58. 0 0
      Common/src/main/java/malte0811/ferritecore/mixin/predicates/OrConditionMixin.java
  59. 0 0
      Common/src/main/java/malte0811/ferritecore/mixin/threaddetec/Config.java
  60. 0 0
      Common/src/main/java/malte0811/ferritecore/mixin/threaddetec/PalettedContainerMixin.java
  61. 0 0
      Common/src/main/java/malte0811/ferritecore/util/Constants.java
  62. 0 0
      Common/src/main/java/malte0811/ferritecore/util/PredicateHelper.java
  63. 0 0
      Common/src/main/java/malte0811/ferritecore/util/SmallThreadingDetector.java
  64. 2 1
      Common/src/main/resources/ferritecore.blockstatecache.mixin.json
  65. 2 1
      Common/src/main/resources/ferritecore.dedupbakedquad.mixin.json
  66. 2 1
      Common/src/main/resources/ferritecore.dedupmultipart.mixin.json
  67. 2 1
      Common/src/main/resources/ferritecore.fastmap.mixin.json
  68. 2 1
      Common/src/main/resources/ferritecore.mrl.mixin.json
  69. 2 1
      Common/src/main/resources/ferritecore.predicates.mixin.json
  70. 2 1
      Common/src/main/resources/ferritecore.threaddetec.mixin.json
  71. 0 0
      Common/src/main/resources/logo.png
  72. 0 0
      Common/src/test/java/malte0811/ferritecore/fastmap/FastMapTest.java
  73. 0 0
      Common/src/test/java/malte0811/ferritecore/fastmap/MockFMStateHolder.java
  74. 0 0
      Common/src/test/java/malte0811/ferritecore/util/FakeGameVersion.java
  75. 0 0
      Common/src/test/java/malte0811/ferritecore/util/SmallThreadingDetectorTest.java
  76. 54 0
      Fabric/build.gradle
  77. 0 0
      Fabric/src/main/java/malte0811/ferritecore/ModMain.java
  78. 0 0
      Fabric/src/main/java/malte0811/ferritecore/mixin/fabric/MinecraftMixin.java
  79. 0 0
      Fabric/src/main/java/malte0811/ferritecore/mixin/platform/ConfigFileHandler.java
  80. 0 0
      Fabric/src/main/resources/fabric.mod.json
  81. 0 0
      Fabric/src/main/resources/ferritecore.fabric.mixin.json
  82. 114 0
      Forge/build.gradle
  83. 0 0
      Forge/src/main/java/malte0811/ferritecore/ModClientForge.java
  84. 0 0
      Forge/src/main/java/malte0811/ferritecore/ModMainForge.java
  85. 0 0
      Forge/src/main/java/malte0811/ferritecore/mixin/platform/ConfigFileHandler.java
  86. 1 1
      Forge/src/main/resources/META-INF/mods.toml
  87. 0 0
      Forge/src/main/resources/pack.mcmeta
  88. 0 0
      Forge/src/main/resources/roadrunner.overrides.properties
  89. 0 62
      build.gradle
  90. 3 0
      buildSrc/build.gradle
  91. 75 0
      buildSrc/src/main/groovy/ferritecore.loader-conventions.gradle
  92. 27 0
      buildSrc/src/main/groovy/ferritecore.subproject-conventions.gradle
  93. 0 49
      fabric/build.gradle
  94. 0 66
      forge/build.gradle
  95. 0 1
      forge/gradle.properties
  96. 21 5
      gradle.properties
  97. BIN
      gradle/wrapper/gradle-wrapper.jar
  98. 1 1
      gradle/wrapper/gradle-wrapper.properties
  99. 103 154
      gradlew
  100. 34 8
      settings.gradle

+ 19 - 18
.gitignore

@@ -1,23 +1,24 @@
-build/
+# eclipse
+bin
+*.launch
+.settings
+.metadata
+.classpath
+.project
+
+# idea
+out
 *.ipr
-run/
 *.iws
-out/
 *.iml
-.gradle/
-output/
-bin/
-libs/
+.idea/*
+!.idea/scopes
 
-.classpath
-.project
-.idea/
-classes/
-.metadata
-.vscode
-.settings
-*.launch
-
-# For adding dependencies outside of the tracked files
-flatdir/
+# gradle
+build
+.gradle
 custom.gradle
+
+# other
+eclipse
+run

+ 3 - 0
.idea/scopes/Fabric_sources.xml

@@ -0,0 +1,3 @@
+<component name="DependencyValidationManager">
+  <scope name="Fabric sources" pattern="!ext[Gradle: cpw.mods:*:*]:*/&amp;&amp;!ext[Gradle: mezz.jei:*:*:*]:*/&amp;&amp;!ext[Gradle: net.jodah:typetools:*]:*/&amp;&amp;!ext[Gradle: net.minecraft:client:extra:*]:*/&amp;&amp;!ext[Gradle: net.minecraft:joined*:*]:*/&amp;&amp;!ext[Gradle: net.minecraft:mappings_official:zip:*]:*/&amp;&amp;!ext[Gradle: net.minecraftforge:*:*]:*/" />
+</component>

+ 3 - 0
.idea/scopes/Forge_sources.xml

@@ -0,0 +1,3 @@
+<component name="DependencyValidationManager">
+  <scope name="Forge sources" pattern="!ext[Gradle: loom_mappings_*:*:*]:*/&amp;&amp;!ext[Gradle: net.fabricmc:*:*]:*/&amp;&amp;!ext[Gradle: net.minecraft:joined*:*]:*/&amp;&amp;!ext[Gradle: net.minecraft:mappings_official:zip:*]:*/&amp;&amp;!ext[Gradle: net.minecraft:minecraft-project-*:*]:*/" />
+</component>

+ 18 - 28
common/build.gradle → Common/build.gradle

@@ -1,4 +1,7 @@
-apply plugin: 'java'
+plugins {
+    id 'org.spongepowered.gradle.vanilla' version '0.2.1-SNAPSHOT'
+    id 'ferritecore.subproject-conventions'
+}
 
 sourceSets {
     // Only defines classes that override the package-private Google methods as public, to allow access from other
@@ -25,23 +28,24 @@ sourceSets {
     }
 }
 
-dependencies {
-    compileOnly "com.google.code.findbugs:jsr305:3.+"
-    // We depend on fabric loader here to use the fabric @Environment annotations
-    // Do NOT use other classes from fabric loader
-    modImplementation "net.fabricmc:fabric-loader:${rootProject.fabric_loader_version}"
-    testImplementation(platform('org.junit:junit-bom:5.7.1'))
-    testImplementation('org.junit.jupiter:junit-jupiter')
-    googleaccessCompileOnly('com.google.guava:guava:31.0.1-jre')
-    googleaccessCompileOnly('org.jetbrains:annotations:19.0.0')
+minecraft {
+    version(minecraft_version)
 }
 
-architectury {
-    injectInjectables = false
-    common("fabric", "forge")
+dependencies {
+    compileOnly group: 'org.spongepowered', name: 'mixin', version: '0.8.5'
+    implementation group: 'org.ow2.asm', name: 'asm-tree', version: '9.3'
+    googleaccessCompileOnly group: 'com.google.guava', name: 'guava', version: '31.0.1-jre'
+    testImplementation(platform group: 'org.junit', name: 'junit-bom', version: '5.7.1')
+    testImplementation group: 'org.junit.jupiter', name: 'junit-jupiter'
 }
 
-jar {
+processResources {
+    def buildProps = project.properties.clone()
+
+    filesMatching(['pack.mcmeta']) {
+        expand buildProps
+    }
     // Move googleaccess to a directory that does not match the package to prevent accidental loads
     into('googleaccess') {
         from sourceSets.googleaccess.output
@@ -49,19 +53,5 @@ jar {
             // Add suffix to stop parts of the toolchain from moving these classes to the "correct" package
             filename + "_manual"
         }
-
     }
-    from(sourceSets.googleimpl.output)
-}
-
-test {
-    useJUnitPlatform()
-}
-
-configurations {
-    dev
-}
-
-artifacts {
-    dev(jar)
 }

+ 0 - 0
common/src/googleaccess/java/com/google/common/collect/FerriteCoreEntrySetAccess.java → Common/src/googleaccess/java/com/google/common/collect/FerriteCoreEntrySetAccess.java


+ 0 - 2
common/src/googleaccess/java/com/google/common/collect/FerriteCoreImmutableCollectionAccess.java → Common/src/googleaccess/java/com/google/common/collect/FerriteCoreImmutableCollectionAccess.java

@@ -1,7 +1,5 @@
 package com.google.common.collect;
 
-import org.jetbrains.annotations.Nullable;
-
 /**
  * Same as {@link FerriteCoreImmutableMapAccess}
  */

+ 0 - 0
common/src/googleaccess/java/com/google/common/collect/FerriteCoreImmutableMapAccess.java → Common/src/googleaccess/java/com/google/common/collect/FerriteCoreImmutableMapAccess.java


+ 0 - 0
common/src/googleimpl/java/malte0811/ferritecore/fastmap/immutable/FastMapEntryEntrySet.java → Common/src/googleimpl/java/malte0811/ferritecore/fastmap/immutable/FastMapEntryEntrySet.java


+ 0 - 0
common/src/googleimpl/java/malte0811/ferritecore/fastmap/immutable/FastMapEntryImmutableMap.java → Common/src/googleimpl/java/malte0811/ferritecore/fastmap/immutable/FastMapEntryImmutableMap.java


+ 0 - 0
common/src/googleimpl/java/malte0811/ferritecore/fastmap/immutable/FastMapEntryIterator.java → Common/src/googleimpl/java/malte0811/ferritecore/fastmap/immutable/FastMapEntryIterator.java


+ 0 - 0
common/src/googleimpl/java/malte0811/ferritecore/fastmap/immutable/FastMapValueSet.java → Common/src/googleimpl/java/malte0811/ferritecore/fastmap/immutable/FastMapValueSet.java


+ 0 - 0
common/src/main/java/malte0811/ferritecore/classloading/FastImmutableMapDefiner.java → Common/src/main/java/malte0811/ferritecore/classloading/FastImmutableMapDefiner.java


+ 0 - 0
common/src/main/java/malte0811/ferritecore/ducks/BlockStateCacheAccess.java → Common/src/main/java/malte0811/ferritecore/ducks/BlockStateCacheAccess.java


+ 0 - 0
common/src/main/java/malte0811/ferritecore/ducks/FastMapStateHolder.java → Common/src/main/java/malte0811/ferritecore/ducks/FastMapStateHolder.java


+ 0 - 0
common/src/main/java/malte0811/ferritecore/ducks/SmallThreadDetectable.java → Common/src/main/java/malte0811/ferritecore/ducks/SmallThreadDetectable.java


+ 0 - 0
common/src/main/java/malte0811/ferritecore/fastmap/BinaryFastMapKey.java → Common/src/main/java/malte0811/ferritecore/fastmap/BinaryFastMapKey.java


+ 0 - 0
common/src/main/java/malte0811/ferritecore/fastmap/CompactFastMapKey.java → Common/src/main/java/malte0811/ferritecore/fastmap/CompactFastMapKey.java


+ 0 - 0
common/src/main/java/malte0811/ferritecore/fastmap/FastMap.java → Common/src/main/java/malte0811/ferritecore/fastmap/FastMap.java


+ 0 - 0
common/src/main/java/malte0811/ferritecore/fastmap/FastMapKey.java → Common/src/main/java/malte0811/ferritecore/fastmap/FastMapKey.java


+ 0 - 0
common/src/main/java/malte0811/ferritecore/fastmap/PropertyIndexer.java → Common/src/main/java/malte0811/ferritecore/fastmap/PropertyIndexer.java


+ 0 - 0
common/src/main/java/malte0811/ferritecore/fastmap/table/CrashNeighborTable.java → Common/src/main/java/malte0811/ferritecore/fastmap/table/CrashNeighborTable.java


+ 0 - 0
common/src/main/java/malte0811/ferritecore/fastmap/table/FastmapNeighborTable.java → Common/src/main/java/malte0811/ferritecore/fastmap/table/FastmapNeighborTable.java


+ 0 - 0
common/src/main/java/malte0811/ferritecore/fastmap/table/NeighborTableBase.java → Common/src/main/java/malte0811/ferritecore/fastmap/table/NeighborTableBase.java


+ 0 - 0
common/src/main/java/malte0811/ferritecore/hash/ArrayVoxelShapeHash.java → Common/src/main/java/malte0811/ferritecore/hash/ArrayVoxelShapeHash.java


+ 0 - 0
common/src/main/java/malte0811/ferritecore/hash/DiscreteVSHash.java → Common/src/main/java/malte0811/ferritecore/hash/DiscreteVSHash.java


+ 0 - 0
common/src/main/java/malte0811/ferritecore/hash/LambdaBasedHash.java → Common/src/main/java/malte0811/ferritecore/hash/LambdaBasedHash.java


+ 0 - 0
common/src/main/java/malte0811/ferritecore/hash/SliceShapeHash.java → Common/src/main/java/malte0811/ferritecore/hash/SliceShapeHash.java


+ 0 - 0
common/src/main/java/malte0811/ferritecore/hash/VoxelShapeHash.java → Common/src/main/java/malte0811/ferritecore/hash/VoxelShapeHash.java


+ 0 - 0
common/src/main/java/malte0811/ferritecore/impl/BlockStateCacheImpl.java → Common/src/main/java/malte0811/ferritecore/impl/BlockStateCacheImpl.java


+ 0 - 0
common/src/main/java/malte0811/ferritecore/impl/Deduplicator.java → Common/src/main/java/malte0811/ferritecore/impl/Deduplicator.java


+ 0 - 0
common/src/main/java/malte0811/ferritecore/impl/KeyValueConditionImpl.java → Common/src/main/java/malte0811/ferritecore/impl/KeyValueConditionImpl.java


+ 0 - 0
common/src/main/java/malte0811/ferritecore/impl/StateHolderImpl.java → Common/src/main/java/malte0811/ferritecore/impl/StateHolderImpl.java


+ 0 - 0
common/src/main/java/malte0811/ferritecore/mixin/blockstatecache/ArrayVSAccess.java → Common/src/main/java/malte0811/ferritecore/mixin/blockstatecache/ArrayVSAccess.java


+ 0 - 0
common/src/main/java/malte0811/ferritecore/mixin/blockstatecache/BitSetDVSAccess.java → Common/src/main/java/malte0811/ferritecore/mixin/blockstatecache/BitSetDVSAccess.java


+ 0 - 0
common/src/main/java/malte0811/ferritecore/mixin/blockstatecache/BlockStateBaseMixin.java → Common/src/main/java/malte0811/ferritecore/mixin/blockstatecache/BlockStateBaseMixin.java


+ 0 - 0
common/src/main/java/malte0811/ferritecore/mixin/blockstatecache/BlockStateCacheMixin.java → Common/src/main/java/malte0811/ferritecore/mixin/blockstatecache/BlockStateCacheMixin.java


+ 0 - 0
common/src/main/java/malte0811/ferritecore/mixin/blockstatecache/Config.java → Common/src/main/java/malte0811/ferritecore/mixin/blockstatecache/Config.java


+ 0 - 0
common/src/main/java/malte0811/ferritecore/mixin/blockstatecache/DiscreteVSAccess.java → Common/src/main/java/malte0811/ferritecore/mixin/blockstatecache/DiscreteVSAccess.java


+ 0 - 0
common/src/main/java/malte0811/ferritecore/mixin/blockstatecache/SliceShapeAccess.java → Common/src/main/java/malte0811/ferritecore/mixin/blockstatecache/SliceShapeAccess.java


+ 0 - 0
common/src/main/java/malte0811/ferritecore/mixin/blockstatecache/SubShapeAccess.java → Common/src/main/java/malte0811/ferritecore/mixin/blockstatecache/SubShapeAccess.java


+ 0 - 0
common/src/main/java/malte0811/ferritecore/mixin/blockstatecache/VoxelShapeAccess.java → Common/src/main/java/malte0811/ferritecore/mixin/blockstatecache/VoxelShapeAccess.java


+ 0 - 0
common/src/main/java/malte0811/ferritecore/mixin/config/FerriteConfig.java → Common/src/main/java/malte0811/ferritecore/mixin/config/FerriteConfig.java


+ 0 - 0
common/src/main/java/malte0811/ferritecore/mixin/config/FerriteMixinConfig.java → Common/src/main/java/malte0811/ferritecore/mixin/config/FerriteMixinConfig.java


+ 0 - 0
common/src/main/java/malte0811/ferritecore/mixin/dedupbakedquad/BakedQuadAccess.java → Common/src/main/java/malte0811/ferritecore/mixin/dedupbakedquad/BakedQuadAccess.java


+ 0 - 0
common/src/main/java/malte0811/ferritecore/mixin/dedupbakedquad/Config.java → Common/src/main/java/malte0811/ferritecore/mixin/dedupbakedquad/Config.java


+ 0 - 0
common/src/main/java/malte0811/ferritecore/mixin/dedupbakedquad/SimpleModelBuilderMixin.java → Common/src/main/java/malte0811/ferritecore/mixin/dedupbakedquad/SimpleModelBuilderMixin.java


+ 0 - 0
common/src/main/java/malte0811/ferritecore/mixin/dedupmultipart/Config.java → Common/src/main/java/malte0811/ferritecore/mixin/dedupmultipart/Config.java


+ 0 - 0
common/src/main/java/malte0811/ferritecore/mixin/dedupmultipart/MixinMultipartBuilder.java → Common/src/main/java/malte0811/ferritecore/mixin/dedupmultipart/MixinMultipartBuilder.java


+ 0 - 0
common/src/main/java/malte0811/ferritecore/mixin/dedupmultipart/MixinMultipartModel.java → Common/src/main/java/malte0811/ferritecore/mixin/dedupmultipart/MixinMultipartModel.java


+ 0 - 0
common/src/main/java/malte0811/ferritecore/mixin/fastmap/Config.java → Common/src/main/java/malte0811/ferritecore/mixin/fastmap/Config.java


+ 0 - 0
common/src/main/java/malte0811/ferritecore/mixin/fastmap/FastMapStateHolderMixin.java → Common/src/main/java/malte0811/ferritecore/mixin/fastmap/FastMapStateHolderMixin.java


+ 0 - 0
common/src/main/java/malte0811/ferritecore/mixin/mrl/Config.java → Common/src/main/java/malte0811/ferritecore/mixin/mrl/Config.java


+ 0 - 0
common/src/main/java/malte0811/ferritecore/mixin/mrl/ModelResourceLocationMixin.java → Common/src/main/java/malte0811/ferritecore/mixin/mrl/ModelResourceLocationMixin.java


+ 0 - 0
common/src/main/java/malte0811/ferritecore/mixin/mrl/ResourceLocationAccess.java → Common/src/main/java/malte0811/ferritecore/mixin/mrl/ResourceLocationAccess.java


+ 0 - 0
common/src/main/java/malte0811/ferritecore/mixin/predicates/AndConditionMixin.java → Common/src/main/java/malte0811/ferritecore/mixin/predicates/AndConditionMixin.java


+ 0 - 0
common/src/main/java/malte0811/ferritecore/mixin/predicates/Config.java → Common/src/main/java/malte0811/ferritecore/mixin/predicates/Config.java


+ 0 - 0
common/src/main/java/malte0811/ferritecore/mixin/predicates/KeyValueConditionMixin.java → Common/src/main/java/malte0811/ferritecore/mixin/predicates/KeyValueConditionMixin.java


+ 0 - 0
common/src/main/java/malte0811/ferritecore/mixin/predicates/OrConditionMixin.java → Common/src/main/java/malte0811/ferritecore/mixin/predicates/OrConditionMixin.java


+ 0 - 0
common/src/main/java/malte0811/ferritecore/mixin/threaddetec/Config.java → Common/src/main/java/malte0811/ferritecore/mixin/threaddetec/Config.java


+ 0 - 0
common/src/main/java/malte0811/ferritecore/mixin/threaddetec/PalettedContainerMixin.java → Common/src/main/java/malte0811/ferritecore/mixin/threaddetec/PalettedContainerMixin.java


+ 0 - 0
common/src/main/java/malte0811/ferritecore/util/Constants.java → Common/src/main/java/malte0811/ferritecore/util/Constants.java


+ 0 - 0
common/src/main/java/malte0811/ferritecore/util/PredicateHelper.java → Common/src/main/java/malte0811/ferritecore/util/PredicateHelper.java


+ 0 - 0
common/src/main/java/malte0811/ferritecore/util/SmallThreadingDetector.java → Common/src/main/java/malte0811/ferritecore/util/SmallThreadingDetector.java


+ 2 - 1
common/src/main/resources/ferritecore.blockstatecache.mixin.json → Common/src/main/resources/ferritecore.blockstatecache.mixin.json

@@ -18,5 +18,6 @@
     "SliceShapeAccess",
     "SubShapeAccess",
     "VoxelShapeAccess"
-  ]
+  ],
+  "refmap": "${refmap_target}refmap.json"
 }

+ 2 - 1
common/src/main/resources/ferritecore.dedupbakedquad.mixin.json → Common/src/main/resources/ferritecore.dedupbakedquad.mixin.json

@@ -11,5 +11,6 @@
     "BakedQuadAccess",
     "SimpleModelBuilderMixin"
   ],
-  "mixins": []
+  "mixins": [],
+  "refmap": "${refmap_target}refmap.json"
 }

+ 2 - 1
common/src/main/resources/ferritecore.dedupmultipart.mixin.json → Common/src/main/resources/ferritecore.dedupmultipart.mixin.json

@@ -11,5 +11,6 @@
     "MixinMultipartBuilder",
     "MixinMultipartModel"
   ],
-  "mixins": []
+  "mixins": [],
+  "refmap": "${refmap_target}refmap.json"
 }

+ 2 - 1
common/src/main/resources/ferritecore.fastmap.mixin.json → Common/src/main/resources/ferritecore.fastmap.mixin.json

@@ -9,5 +9,6 @@
     "defaultRequire": 1
   },
   "minVersion": "0.8",
-  "plugin": "malte0811.ferritecore.mixin.fastmap.Config"
+  "plugin": "malte0811.ferritecore.mixin.fastmap.Config",
+  "refmap": "${refmap_target}refmap.json"
 }

+ 2 - 1
common/src/main/resources/ferritecore.mrl.mixin.json → Common/src/main/resources/ferritecore.mrl.mixin.json

@@ -12,5 +12,6 @@
   "minVersion": "0.8",
   "plugin": "malte0811.ferritecore.mixin.mrl.Config",
   "mixins": [
-  ]
+  ],
+  "refmap": "${refmap_target}refmap.json"
 }

+ 2 - 1
common/src/main/resources/ferritecore.predicates.mixin.json → Common/src/main/resources/ferritecore.predicates.mixin.json

@@ -11,5 +11,6 @@
     "defaultRequire": 1
   },
   "minVersion": "0.8",
-  "plugin": "malte0811.ferritecore.mixin.predicates.Config"
+  "plugin": "malte0811.ferritecore.mixin.predicates.Config",
+  "refmap": "${refmap_target}refmap.json"
 }

+ 2 - 1
common/src/main/resources/ferritecore.threaddetec.mixin.json → Common/src/main/resources/ferritecore.threaddetec.mixin.json

@@ -11,5 +11,6 @@
   "plugin": "malte0811.ferritecore.mixin.threaddetec.Config",
   "mixins": [
     "PalettedContainerMixin"
-  ]
+  ],
+  "refmap": "${refmap_target}refmap.json"
 }

+ 0 - 0
common/src/main/resources/logo.png → Common/src/main/resources/logo.png


+ 0 - 0
common/src/test/java/malte0811/ferritecore/fastmap/FastMapTest.java → Common/src/test/java/malte0811/ferritecore/fastmap/FastMapTest.java


+ 0 - 0
common/src/test/java/malte0811/ferritecore/fastmap/MockFMStateHolder.java → Common/src/test/java/malte0811/ferritecore/fastmap/MockFMStateHolder.java


+ 0 - 0
common/src/test/java/malte0811/ferritecore/util/FakeGameVersion.java → Common/src/test/java/malte0811/ferritecore/util/FakeGameVersion.java


+ 0 - 0
common/src/test/java/malte0811/ferritecore/util/SmallThreadingDetectorTest.java → Common/src/test/java/malte0811/ferritecore/util/SmallThreadingDetectorTest.java


+ 54 - 0
Fabric/build.gradle

@@ -0,0 +1,54 @@
+plugins {
+    id 'fabric-loom' version '0.11-SNAPSHOT'
+    id 'ferritecore.loader-conventions'
+}
+
+repositories {
+    maven {
+        url 'https://maven.parchmentmc.org'
+    }
+}
+
+dependencies {
+    minecraft group: 'com.mojang', name: 'minecraft', version: minecraft_version
+    mappings loom.layered() {
+        officialMojangMappings()
+        parchment("org.parchmentmc.data:parchment-${minecraft_version}:${parchment_version}@zip")
+    }
+    modImplementation group: 'net.fabricmc', name: 'fabric-loader', version: fabric_loader_version
+}
+
+loom {
+    runs {
+        client {
+            client()
+            setConfigName("Fabric Client")
+            ideConfigGenerated(true)
+            runDir("run")
+        }
+        server {
+            server()
+            setConfigName("Fabric Server")
+            ideConfigGenerated(true)
+            runDir("run")
+        }
+    }
+}
+
+processResources {
+    filesMatching("fabric.mod.json") {
+        expand "version": mod_version
+    }
+}
+
+jar {
+    filesMatching("*.mixin.json") {
+        expand "refmap_target": "${archivesBaseName}-"
+    }
+}
+
+// For some reason this doesn't work when in the "convention" scripts...
+def customGradle = project.file('custom.gradle');
+if (customGradle.exists()) {
+    apply from: customGradle;
+}

+ 0 - 0
fabric/src/main/java/malte0811/ferritecore/ModMain.java → Fabric/src/main/java/malte0811/ferritecore/ModMain.java


+ 0 - 0
fabric/src/main/java/malte0811/ferritecore/mixin/fabric/MinecraftMixin.java → Fabric/src/main/java/malte0811/ferritecore/mixin/fabric/MinecraftMixin.java


+ 0 - 0
fabric/src/main/java/malte0811/ferritecore/mixin/platform/ConfigFileHandler.java → Fabric/src/main/java/malte0811/ferritecore/mixin/platform/ConfigFileHandler.java


+ 0 - 0
fabric/src/main/resources/fabric.mod.json → Fabric/src/main/resources/fabric.mod.json


+ 0 - 0
fabric/src/main/resources/ferritecore.fabric.mixin.json → Fabric/src/main/resources/ferritecore.fabric.mixin.json


+ 114 - 0
Forge/build.gradle

@@ -0,0 +1,114 @@
+import java.util.stream.Collectors
+
+buildscript {
+    repositories {
+        maven { url = 'https://maven.minecraftforge.net' }
+        mavenCentral()
+        maven { url 'https://maven.parchmentmc.org' }
+        maven { url = 'https://repo.spongepowered.org/repository/maven-public/' }
+    }
+    dependencies {
+        classpath group: 'net.minecraftforge.gradle', name: 'ForgeGradle', version: '5.1.+', changing: true
+        classpath group: 'org.parchmentmc', name: 'librarian', version: '1.+'
+        classpath group: 'org.spongepowered', name: 'mixingradle', version: '0.7-SNAPSHOT'
+    }
+}
+apply plugin: 'net.minecraftforge.gradle'
+apply plugin: 'eclipse'
+apply plugin: 'org.parchmentmc.librarian.forgegradle'
+apply plugin: 'org.spongepowered.mixin'
+apply plugin: 'ferritecore.loader-conventions'
+
+def fcMixinConfigs = [
+        "predicates",
+        "fastmap",
+        "mrl",
+        "dedupmultipart",
+        "blockstatecache",
+        "dedupbakedquad",
+        "threaddetec",
+].stream()
+        .<String> map({ s -> "ferritecore." + s + ".mixin.json" })
+        .collect(Collectors.toList())
+
+// Work around what I consider a bug in FG: Common:googleimpl source set is specified as mod source, but FG tries to
+// compile it in this project
+sourceSets {
+    googleimpl
+}
+
+minecraft {
+    mappings channel: 'parchment', version: "${parchment_version}-${minecraft_version}"
+
+    runs {
+        client {
+            workingDirectory project.file('run')
+            ideaModule "${rootProject.name}.${project.name}.main"
+            property 'forge.logging.console.level', 'debug'
+            mods {
+                ferritecore {
+                    source sourceSets.main
+                    source project(":Common").sourceSets.main
+                    source project(":Common").sourceSets.googleimpl
+                }
+            }
+        }
+
+        server {
+            workingDirectory project.file('run')
+            ideaModule "${rootProject.name}.${project.name}.main"
+            property 'forge.logging.console.level', 'debug'
+            mods {
+                ferritecore {
+                    source sourceSets.main
+                    source project(":Common").sourceSets.main
+                    source project(":Common").sourceSets.googleimpl
+                }
+            }
+        }
+    }
+}
+
+dependencies {
+    minecraft group: 'net.minecraftforge', name: 'forge', version: "${minecraft_version}-${forge_version}"
+    annotationProcessor group: 'org.spongepowered', name: 'mixin', version: '0.8.5', classifier: 'processor'
+}
+
+jar.finalizedBy('reobfJar')
+
+mixin {
+    add project(":Common").sourceSets.main, "${mod_id}.refmap.json"
+    configNames += fcMixinConfigs
+}
+
+jar {
+    filesMatching("*.mixin.json") {
+        expand "refmap_target": "${mod_id}."
+    }
+}
+
+task speedUpPreRun {
+    doLast {
+        for (String s : new String[]{"Client", "Server"}) {
+            ant.replace(
+                    file: project.rootDir.toString() + "/.idea/runConfigurations/Forge_run" + s + ".xml",
+                    // prepareRunX is prepareRuns + compile, but compiling is already handled by IntelliJ
+                    // Also (specific to FC), compiling doesn't properly see the googleimpl source set and breaks
+                    token: "prepareRun" + s,
+                    value: "prepareRuns"
+            )
+        }
+    }
+}
+
+tasks.withType(Task) {
+    if (it.name == "genIntellijRuns") {
+        it.finalizedBy speedUpPreRun
+    }
+}
+
+// For some reason this doesn't work when in the "convention" scripts...
+def customGradle = project.file('custom.gradle');
+if (customGradle.exists()) {
+    apply from: customGradle;
+}

+ 0 - 0
forge/src/main/java/malte0811/ferritecore/ModClientForge.java → Forge/src/main/java/malte0811/ferritecore/ModClientForge.java


+ 0 - 0
forge/src/main/java/malte0811/ferritecore/ModMainForge.java → Forge/src/main/java/malte0811/ferritecore/ModMainForge.java


+ 0 - 0
forge/src/main/java/malte0811/ferritecore/mixin/platform/ConfigFileHandler.java → Forge/src/main/java/malte0811/ferritecore/mixin/platform/ConfigFileHandler.java


+ 1 - 1
forge/src/main/resources/META-INF/mods.toml → Forge/src/main/resources/META-INF/mods.toml

@@ -4,7 +4,7 @@ loaderVersion = "[28,)"
 license = "MIT"
 [[mods]]
 modId = "ferritecore"
-version = "${version}"
+version = "${file.jarVersion}"
 displayName = "Ferrite Core"
 authors = "malte0811"
 description = '''

+ 0 - 0
forge/src/main/resources/pack.mcmeta → Forge/src/main/resources/pack.mcmeta


+ 0 - 0
forge/src/main/resources/roadrunner.overrides.properties → Forge/src/main/resources/roadrunner.overrides.properties


+ 0 - 62
build.gradle

@@ -1,62 +0,0 @@
-plugins {
-    id "architectury-plugin" version "3.4-SNAPSHOT"
-    id "dev.architectury.loom" version "0.11.0-SNAPSHOT" apply false
-}
-
-architectury {
-    minecraft = rootProject.minecraft_version
-}
-
-subprojects {
-    apply plugin: "dev.architectury.loom"
-
-    loom {
-        silentMojangMappingsLicense()
-    }
-
-    task signJar(description: "Sign jar") {
-        doLast {
-            if (project.hasProperty('keyStore')) {
-                def path = remapJar.archivePath
-                logger.info("Signing " + path + "\n")
-                ant.signjar(jar: path,
-                        alias: project.storeAlias,
-                        keystore: project.keyStore,
-                        storepass: project.storePass,
-                        keypass: project.storePass
-                )
-            } else {
-                logger.warn("No key store found, not signing the output jar\n")
-            }
-        }
-    }
-    build.dependsOn signJar
-
-    dependencies {
-        minecraft "com.mojang:minecraft:${rootProject.minecraft_version}"
-        mappings loom.officialMojangMappings()
-    }
-}
-
-allprojects {
-    apply plugin: "java"
-    apply plugin: "architectury-plugin"
-
-    archivesBaseName = rootProject.archives_base_name
-    version = rootProject.mod_version
-    group = rootProject.maven_group
-
-    tasks.withType(JavaCompile) {
-        options.encoding = "UTF-8"
-        options.release = 17
-    }
-
-    java {
-        withSourcesJar()
-    }
-
-    def customGradle = project.file('custom.gradle');
-    if (customGradle.exists()) {
-        apply from: customGradle;
-    }
-}

+ 3 - 0
buildSrc/build.gradle

@@ -0,0 +1,3 @@
+plugins {
+    id 'groovy-gradle-plugin'
+}

+ 75 - 0
buildSrc/src/main/groovy/ferritecore.loader-conventions.gradle

@@ -0,0 +1,75 @@
+plugins {
+    id 'ferritecore.subproject-conventions'
+}
+
+archivesBaseName = "${mod_id}-${mod_version}-" + project.name.toLowerCase()
+
+jar {
+    manifest {
+        attributes([
+            'Specification-Title'     : mod_name,
+            'Specification-Vendor'    : mod_author,
+            'Specification-Version'   : project.jar.archiveVersion,
+            'Implementation-Title'    : project.name,
+            'Implementation-Version'  : project.jar.archiveVersion,
+            'Implementation-Vendor'   : mod_author,
+            'Implementation-Timestamp': new Date().format("yyyy-MM-dd'T'HH:mm:ssZ"),
+            'Timestampe'              : System.currentTimeMillis(),
+            'Built-On-Java'           : "${System.getProperty('java.vm.version')} (${System.getProperty('java.vm.vendor')})",
+            'Build-On-Minecraft'      : minecraft_version
+        ])
+    }
+}
+
+task signJar(description: "Sign jar") {
+    doLast {
+        if (project.hasProperty('keyStore')) {
+            def path;
+            if (project.name == "Forge") {
+                path = tasks.getByName("reobfJar").input.get()
+            } else {
+                path = remapJar.archivePath
+            }
+            logger.warn("Signing " + path + "\n")
+            ant.signjar(jar: path,
+                    alias: project.storeAlias,
+                    keystore: project.keyStore,
+                    storepass: project.storePass,
+                    keypass: project.storePass
+            )
+        } else {
+            logger.warn("No key store found, not signing the output jar\n")
+        }
+    }
+}
+
+build.finalizedBy signJar
+
+compileJava.doFirst {
+    // This is set by Mixin during annotation processing, but should not persist between subprobjects
+    System.clearProperty("mixin.target.mapid")
+}
+
+jar {
+    from project(":Common").sourceSets.googleimpl.java.outputDir
+}
+
+tasks.withType(JavaCompile) {
+    // This really isn't ideal, but without it refmaps aren't generated correctly
+    source(project(":Common").sourceSets.main.allSource)
+    dependsOn project(":Common").compileGoogleimplJava
+}
+
+dependencies {
+    implementation project(":Common")
+    runtimeOnly files(project(":Common").sourceSets.googleimpl.java.outputDir)
+}
+
+processResources {
+    from project(":Common").sourceSets.main.output.resourcesDir
+    dependsOn project(":Common").processResources
+}
+
+// Loader-specific projects should not have any unit tests
+compileTestJava.enabled = false
+test.enabled = false

+ 27 - 0
buildSrc/src/main/groovy/ferritecore.subproject-conventions.gradle

@@ -0,0 +1,27 @@
+plugins {
+    id 'java'
+    id 'idea'
+}
+
+java.toolchain.languageVersion = JavaLanguageVersion.of(17)
+
+repositories {
+    mavenCentral()
+    maven {
+        name = 'Sponge / Mixin'
+        url = 'https://repo.spongepowered.org/repository/maven-public/'
+    }
+}
+
+
+tasks.withType(JavaCompile).configureEach {
+    it.options.encoding = 'UTF-8'
+    it.options.release = 17
+}
+
+// Disables Gradle's custom module metadata from being published to maven. The
+// metadata includes mapped dependencies which are not reasonably consumable by
+// other mod developers.
+tasks.withType(GenerateModuleMetadata) {
+    enabled = false
+}

+ 0 - 49
fabric/build.gradle

@@ -1,49 +0,0 @@
-plugins {
-    id "com.github.johnrengelman.shadow" version "7.0.0"
-}
-
-configurations {
-    shadowCommon
-}
-
-architectury {
-    platformSetupLoomIde()
-    fabric()
-}
-
-dependencies {
-    modImplementation("net.fabricmc:fabric-loader:${rootProject.fabric_loader_version}")
-
-    implementation(project(path: ":common", configuration: "dev")) {
-        transitive = false
-    }
-    developmentFabric(project(path: ":common", configuration: "dev")) {
-        transitive = false
-    }
-    shadowCommon(project(path: ":common", configuration: "transformProductionFabric")) {
-        transitive = false
-    }
-}
-
-processResources {
-    inputs.property "version", project.version
-
-    filesMatching("fabric.mod.json") {
-        expand "version": project.version
-    }
-}
-
-shadowJar {
-    configurations = [project.configurations.shadowCommon]
-    classifier "dev-shadow"
-}
-
-remapJar {
-    input.set shadowJar.archiveFile
-    dependsOn shadowJar
-    classifier "fabric"
-}
-
-jar {
-    classifier "dev"
-}

+ 0 - 66
forge/build.gradle

@@ -1,66 +0,0 @@
-import java.util.stream.Collectors
-
-plugins {
-    id "com.github.johnrengelman.shadow" version "7.0.0"
-}
-
-configurations {
-    shadowCommon
-}
-
-architectury {
-    platformSetupLoomIde()
-    forge()
-}
-
-loom {
-    forge {
-        def fcMixinConfigs = [
-                "predicates",
-                "fastmap",
-                "mrl",
-                "dedupmultipart",
-                "blockstatecache",
-                "dedupbakedquad",
-                "threaddetec",
-        ].stream()
-                .<String> map({ s -> "ferritecore." + s + ".mixin.json" })
-                .collect(Collectors.toList())
-        mixinConfigs.addAll(fcMixinConfigs)
-    }
-}
-
-dependencies {
-    forge("net.minecraftforge:forge:${rootProject.minecraft_version}-${rootProject.forge_version}")
-
-    implementation(project(path: ":common", configuration: "dev")) {
-        transitive = false
-    }
-    developmentForge(project(path: ":common", configuration: "dev")) {
-        transitive = false
-    }
-    shadowCommon(project(path: ":common", configuration: "transformProductionForge")) {
-        transitive = false
-    }
-}
-
-processResources {
-    inputs.property "version", project.version
-
-    filesMatching("META-INF/mods.toml") {
-        expand "version": project.version
-    }
-}
-
-shadowJar {
-    exclude "fabric.mod.json"
-
-    configurations = [project.configurations.shadowCommon]
-    classifier "dev-shadow"
-}
-
-remapJar {
-    dependsOn(shadowJar)
-    input.set(shadowJar.archiveFile)
-    classifier "forge"
-}

+ 0 - 1
forge/gradle.properties

@@ -1 +0,0 @@
-loom.platform=forge

+ 21 - 5
gradle.properties

@@ -1,8 +1,24 @@
-org.gradle.jvmargs=-Xmx2G
+org.gradle.jvmargs=-Xmx1G
 org.gradle.daemon=false
+group=malte0811.ferritecore
+
+# Common
 minecraft_version=1.18.2
-archives_base_name=ferritecore
-mod_version=4.2.0
-maven_group=malte0811.ferritecore
-fabric_loader_version=0.13.3
+parchment_version=2022.03.13
+
+# Forge
 forge_version=40.1.0
+
+# Fabric
+fabric_version=0.51.0+1.18.2
+fabric_loader_version=0.13.3
+
+# Quilt
+quilt_loader_version=0.16.0-beta.7
+quilt_stdlib_version=1.1.0-beta.3+1.18.2
+
+# Mod options
+mod_name=FerriteCore
+mod_author=malte0811
+mod_id=ferritecore
+mod_version=4.2.1

BIN
gradle/wrapper/gradle-wrapper.jar


+ 1 - 1
gradle/wrapper/gradle-wrapper.properties

@@ -1,5 +1,5 @@
 distributionBase=GRADLE_USER_HOME
 distributionPath=wrapper/dists
-distributionUrl=https\://services.gradle.org/distributions/gradle-7.4-bin.zip
+distributionUrl=https\://services.gradle.org/distributions/gradle-7.2-bin.zip
 zipStoreBase=GRADLE_USER_HOME
 zipStorePath=wrapper/dists

+ 103 - 154
gradlew

@@ -1,7 +1,7 @@
-#!/bin/sh
+#!/usr/bin/env bash
 
 #
-# Copyright © 2015-2021 the original authors.
+# Copyright 2015 the original author or authors.
 #
 # Licensed under the Apache License, Version 2.0 (the "License");
 # you may not use this file except in compliance with the License.
@@ -17,101 +17,67 @@
 #
 
 ##############################################################################
-#
-#   Gradle start up script for POSIX generated by Gradle.
-#
-#   Important for running:
-#
-#   (1) You need a POSIX-compliant shell to run this script. If your /bin/sh is
-#       noncompliant, but you have some other compliant shell such as ksh or
-#       bash, then to run this script, type that shell name before the whole
-#       command line, like:
-#
-#           ksh Gradle
-#
-#       Busybox and similar reduced shells will NOT work, because this script
-#       requires all of these POSIX shell features:
-#         * functions;
-#         * expansions «$var», «${var}», «${var:-default}», «${var+SET}»,
-#           «${var#prefix}», «${var%suffix}», and «$( cmd )»;
-#         * compound commands having a testable exit status, especially «case»;
-#         * various built-in commands including «command», «set», and «ulimit».
-#
-#   Important for patching:
-#
-#   (2) This script targets any POSIX shell, so it avoids extensions provided
-#       by Bash, Ksh, etc; in particular arrays are avoided.
-#
-#       The "traditional" practice of packing multiple parameters into a
-#       space-separated string is a well documented source of bugs and security
-#       problems, so this is (mostly) avoided, by progressively accumulating
-#       options in "$@", and eventually passing that to Java.
-#
-#       Where the inherited environment variables (DEFAULT_JVM_OPTS, JAVA_OPTS,
-#       and GRADLE_OPTS) rely on word-splitting, this is performed explicitly;
-#       see the in-line comments for details.
-#
-#       There are tweaks for specific operating systems such as AIX, CygWin,
-#       Darwin, MinGW, and NonStop.
-#
-#   (3) This script is generated from the Groovy template
-#       https://github.com/gradle/gradle/blob/master/subprojects/plugins/src/main/resources/org/gradle/api/internal/plugins/unixStartScript.txt
-#       within the Gradle project.
-#
-#       You can find Gradle at https://github.com/gradle/gradle/.
-#
+##
+##  Gradle start up script for UN*X
+##
 ##############################################################################
 
 # Attempt to set APP_HOME
-
 # Resolve links: $0 may be a link
-app_path=$0
-
-# Need this for daisy-chained symlinks.
-while
-    APP_HOME=${app_path%"${app_path##*/}"}  # leaves a trailing /; empty if no leading path
-    [ -h "$app_path" ]
-do
-    ls=$( ls -ld "$app_path" )
-    link=${ls#*' -> '}
-    case $link in             #(
-      /*)   app_path=$link ;; #(
-      *)    app_path=$APP_HOME$link ;;
-    esac
+PRG="$0"
+# Need this for relative symlinks.
+while [ -h "$PRG" ] ; do
+    ls=`ls -ld "$PRG"`
+    link=`expr "$ls" : '.*-> \(.*\)$'`
+    if expr "$link" : '/.*' > /dev/null; then
+        PRG="$link"
+    else
+        PRG=`dirname "$PRG"`"/$link"
+    fi
 done
-
-APP_HOME=$( cd "${APP_HOME:-./}" && pwd -P ) || exit
+SAVED="`pwd`"
+cd "`dirname \"$PRG\"`/" >/dev/null
+APP_HOME="`pwd -P`"
+cd "$SAVED" >/dev/null
 
 APP_NAME="Gradle"
-APP_BASE_NAME=${0##*/}
+APP_BASE_NAME=`basename "$0"`
 
 # Add default JVM options here. You can also use JAVA_OPTS and GRADLE_OPTS to pass JVM options to this script.
 DEFAULT_JVM_OPTS='"-Xmx64m" "-Xms64m"'
 
 # Use the maximum available, or set MAX_FD != -1 to use that value.
-MAX_FD=maximum
+MAX_FD="maximum"
 
 warn () {
     echo "$*"
-} >&2
+}
 
 die () {
     echo
     echo "$*"
     echo
     exit 1
-} >&2
+}
 
 # OS specific support (must be 'true' or 'false').
 cygwin=false
 msys=false
 darwin=false
 nonstop=false
-case "$( uname )" in                #(
-  CYGWIN* )         cygwin=true  ;; #(
-  Darwin* )         darwin=true  ;; #(
-  MSYS* | MINGW* )  msys=true    ;; #(
-  NONSTOP* )        nonstop=true ;;
+case "`uname`" in
+  CYGWIN* )
+    cygwin=true
+    ;;
+  Darwin* )
+    darwin=true
+    ;;
+  MSYS* | MINGW* )
+    msys=true
+    ;;
+  NONSTOP* )
+    nonstop=true
+    ;;
 esac
 
 CLASSPATH=$APP_HOME/gradle/wrapper/gradle-wrapper.jar
@@ -121,9 +87,9 @@ CLASSPATH=$APP_HOME/gradle/wrapper/gradle-wrapper.jar
 if [ -n "$JAVA_HOME" ] ; then
     if [ -x "$JAVA_HOME/jre/sh/java" ] ; then
         # IBM's JDK on AIX uses strange locations for the executables
-        JAVACMD=$JAVA_HOME/jre/sh/java
+        JAVACMD="$JAVA_HOME/jre/sh/java"
     else
-        JAVACMD=$JAVA_HOME/bin/java
+        JAVACMD="$JAVA_HOME/bin/java"
     fi
     if [ ! -x "$JAVACMD" ] ; then
         die "ERROR: JAVA_HOME is set to an invalid directory: $JAVA_HOME
@@ -132,7 +98,7 @@ Please set the JAVA_HOME variable in your environment to match the
 location of your Java installation."
     fi
 else
-    JAVACMD=java
+    JAVACMD="java"
     which java >/dev/null 2>&1 || die "ERROR: JAVA_HOME is not set and no 'java' command could be found in your PATH.
 
 Please set the JAVA_HOME variable in your environment to match the
@@ -140,95 +106,78 @@ location of your Java installation."
 fi
 
 # Increase the maximum file descriptors if we can.
-if ! "$cygwin" && ! "$darwin" && ! "$nonstop" ; then
-    case $MAX_FD in #(
-      max*)
-        MAX_FD=$( ulimit -H -n ) ||
-            warn "Could not query maximum file descriptor limit"
-    esac
-    case $MAX_FD in  #(
-      '' | soft) :;; #(
-      *)
-        ulimit -n "$MAX_FD" ||
-            warn "Could not set maximum file descriptor limit to $MAX_FD"
-    esac
+if [ "$cygwin" = "false" -a "$darwin" = "false" -a "$nonstop" = "false" ] ; then
+    MAX_FD_LIMIT=`ulimit -H -n`
+    if [ $? -eq 0 ] ; then
+        if [ "$MAX_FD" = "maximum" -o "$MAX_FD" = "max" ] ; then
+            MAX_FD="$MAX_FD_LIMIT"
+        fi
+        ulimit -n $MAX_FD
+        if [ $? -ne 0 ] ; then
+            warn "Could not set maximum file descriptor limit: $MAX_FD"
+        fi
+    else
+        warn "Could not query maximum file descriptor limit: $MAX_FD_LIMIT"
+    fi
 fi
 
-# Collect all arguments for the java command, stacking in reverse order:
-#   * args from the command line
-#   * the main class name
-#   * -classpath
-#   * -D...appname settings
-#   * --module-path (only if needed)
-#   * DEFAULT_JVM_OPTS, JAVA_OPTS, and GRADLE_OPTS environment variables.
+# For Darwin, add options to specify how the application appears in the dock
+if $darwin; then
+    GRADLE_OPTS="$GRADLE_OPTS \"-Xdock:name=$APP_NAME\" \"-Xdock:icon=$APP_HOME/media/gradle.icns\""
+fi
 
 # For Cygwin or MSYS, switch paths to Windows format before running java
-if "$cygwin" || "$msys" ; then
-    APP_HOME=$( cygpath --path --mixed "$APP_HOME" )
-    CLASSPATH=$( cygpath --path --mixed "$CLASSPATH" )
-
-    JAVACMD=$( cygpath --unix "$JAVACMD" )
-
+if [ "$cygwin" = "true" -o "$msys" = "true" ] ; then
+    APP_HOME=`cygpath --path --mixed "$APP_HOME"`
+    CLASSPATH=`cygpath --path --mixed "$CLASSPATH"`
+
+    JAVACMD=`cygpath --unix "$JAVACMD"`
+
+    # We build the pattern for arguments to be converted via cygpath
+    ROOTDIRSRAW=`find -L / -maxdepth 1 -mindepth 1 -type d 2>/dev/null`
+    SEP=""
+    for dir in $ROOTDIRSRAW ; do
+        ROOTDIRS="$ROOTDIRS$SEP$dir"
+        SEP="|"
+    done
+    OURCYGPATTERN="(^($ROOTDIRS))"
+    # Add a user-defined pattern to the cygpath arguments
+    if [ "$GRADLE_CYGPATTERN" != "" ] ; then
+        OURCYGPATTERN="$OURCYGPATTERN|($GRADLE_CYGPATTERN)"
+    fi
     # Now convert the arguments - kludge to limit ourselves to /bin/sh
-    for arg do
-        if
-            case $arg in                                #(
-              -*)   false ;;                            # don't mess with options #(
-              /?*)  t=${arg#/} t=/${t%%/*}              # looks like a POSIX filepath
-                    [ -e "$t" ] ;;                      #(
-              *)    false ;;
-            esac
-        then
-            arg=$( cygpath --path --ignore --mixed "$arg" )
+    i=0
+    for arg in "$@" ; do
+        CHECK=`echo "$arg"|egrep -c "$OURCYGPATTERN" -`
+        CHECK2=`echo "$arg"|egrep -c "^-"`                                 ### Determine if an option
+
+        if [ $CHECK -ne 0 ] && [ $CHECK2 -eq 0 ] ; then                    ### Added a condition
+            eval `echo args$i`=`cygpath --path --ignore --mixed "$arg"`
+        else
+            eval `echo args$i`="\"$arg\""
         fi
-        # Roll the args list around exactly as many times as the number of
-        # args, so each arg winds up back in the position where it started, but
-        # possibly modified.
-        #
-        # NB: a `for` loop captures its iteration list before it begins, so
-        # changing the positional parameters here affects neither the number of
-        # iterations, nor the values presented in `arg`.
-        shift                   # remove old arg
-        set -- "$@" "$arg"      # push replacement arg
+        i=`expr $i + 1`
     done
+    case $i in
+        0) set -- ;;
+        1) set -- "$args0" ;;
+        2) set -- "$args0" "$args1" ;;
+        3) set -- "$args0" "$args1" "$args2" ;;
+        4) set -- "$args0" "$args1" "$args2" "$args3" ;;
+        5) set -- "$args0" "$args1" "$args2" "$args3" "$args4" ;;
+        6) set -- "$args0" "$args1" "$args2" "$args3" "$args4" "$args5" ;;
+        7) set -- "$args0" "$args1" "$args2" "$args3" "$args4" "$args5" "$args6" ;;
+        8) set -- "$args0" "$args1" "$args2" "$args3" "$args4" "$args5" "$args6" "$args7" ;;
+        9) set -- "$args0" "$args1" "$args2" "$args3" "$args4" "$args5" "$args6" "$args7" "$args8" ;;
+    esac
 fi
 
-# Collect all arguments for the java command;
-#   * $DEFAULT_JVM_OPTS, $JAVA_OPTS, and $GRADLE_OPTS can contain fragments of
-#     shell script including quotes and variable substitutions, so put them in
-#     double quotes to make sure that they get re-expanded; and
-#   * put everything else in single quotes, so that it's not re-expanded.
-
-set -- \
-        "-Dorg.gradle.appname=$APP_BASE_NAME" \
-        -classpath "$CLASSPATH" \
-        org.gradle.wrapper.GradleWrapperMain \
-        "$@"
-
-# Use "xargs" to parse quoted args.
-#
-# With -n1 it outputs one arg per line, with the quotes and backslashes removed.
-#
-# In Bash we could simply go:
-#
-#   readarray ARGS < <( xargs -n1 <<<"$var" ) &&
-#   set -- "${ARGS[@]}" "$@"
-#
-# but POSIX shell has neither arrays nor command substitution, so instead we
-# post-process each arg (as a line of input to sed) to backslash-escape any
-# character that might be a shell metacharacter, then use eval to reverse
-# that process (while maintaining the separation between arguments), and wrap
-# the whole thing up as a single "set" statement.
-#
-# This will of course break if any of these variables contains a newline or
-# an unmatched quote.
-#
+ARGV=("$@")
+eval set -- $DEFAULT_JVM_OPTS
 
-eval "set -- $(
-        printf '%s\n' "$DEFAULT_JVM_OPTS $JAVA_OPTS $GRADLE_OPTS" |
-        xargs -n1 |
-        sed ' s~[^-[:alnum:]+,./:=@_]~\\&~g; ' |
-        tr '\n' ' '
-    )" '"$@"'
+IFS=$'
+' read -rd '' -a JAVA_OPTS_ARR <<< "$(echo $JAVA_OPTS | xargs -n1)"
+IFS=$'
+' read -rd '' -a GRADLE_OPTS_ARR <<< "$(echo $GRADLE_OPTS | xargs -n1)"
 
-exec "$JAVACMD" "$@"
+exec "$JAVACMD" "$@" "${JAVA_OPTS_ARR[@]}" "${GRADLE_OPTS_ARR[@]}" "-Dorg.gradle.appname=$APP_BASE_NAME" -classpath "$CLASSPATH" org.gradle.wrapper.GradleWrapperMain "${ARGV[@]}"

+ 34 - 8
settings.gradle

@@ -1,14 +1,40 @@
 pluginManagement {
+
     repositories {
-        maven { url "https://maven.fabricmc.net/" }
-        maven { url "https://maven.architectury.dev/" }
-        maven { url "https://maven.minecraftforge.net" }
+
+        maven {
+
+            name = 'Fabric'
+            url = 'https://maven.fabricmc.net/'
+        }
+
+        maven {
+
+            name = 'Sponge Snapshots'
+            url = 'https://repo.spongepowered.org/repository/maven-public/'
+        }
+
+        maven {
+
+            name = 'Quilt (Release)'
+            url = 'https://maven.quiltmc.org/repository/release'
+        }
+
+        maven {
+
+            name = 'Quilt (Snapshot)'
+            url = 'https://maven.quiltmc.org/repository/snapshot'
+        }
+
+        maven {
+            name = 'Cotton'
+            url = 'https://server.bbkr.space/artifactory/libs-release/'
+        }
+
+        mavenCentral()
         gradlePluginPortal()
     }
 }
 
-include("common")
-include("fabric")
-include("forge")
-
-rootProject.name = "FerriteCore-1.18"
+rootProject.name = 'FerriteCore-1.18'
+include("Common", "Fabric", "Forge")