diff --git a/build.gradle b/build.gradle index a576fa6..8410bb1 100644 --- a/build.gradle +++ b/build.gradle @@ -1,10 +1,10 @@ plugins { - id 'fabric-loom' version '0.6-SNAPSHOT' + id 'fabric-loom' version '0.8-SNAPSHOT' id 'maven-publish' } -sourceCompatibility = JavaVersion.VERSION_1_8 -targetCompatibility = JavaVersion.VERSION_1_8 +sourceCompatibility = JavaVersion.VERSION_16 +targetCompatibility = JavaVersion.VERSION_16 archivesBaseName = project.archives_base_name version = project.mod_version + "-" + project.minecraft_version @@ -17,23 +17,12 @@ minecraft { dependencies { minecraft "com.mojang:minecraft:${project.minecraft_version}" mappings "net.fabricmc:yarn:${project.yarn_mappings}:v2" - modCompile "net.fabricmc:fabric-loader:${project.loader_version}" + modImplementation "net.fabricmc:fabric-loader:${project.loader_version}" - modCompile "net.fabricmc.fabric-api:fabric-api:${project.fabric_version}" + modImplementation "net.fabricmc.fabric-api:fabric-api:${project.fabric_version}" } -processResources { - inputs.property "version", project.version - from(sourceSets.main.resources.srcDirs) { - include "fabric.mod.json" - expand "version": project.version - } - - from(sourceSets.main.resources.srcDirs) { - exclude "fabric.mod.json" - } -} // ensure that the encoding is set to UTF-8, no matter what the system default is // this fixes some edge cases with special characters not displaying correctly diff --git a/gradle.properties b/gradle.properties index 34a1886..1d50338 100644 --- a/gradle.properties +++ b/gradle.properties @@ -3,15 +3,15 @@ org.gradle.jvmargs=-Xmx1G # Fabric Properties # check these on https://fabricmc.net/use -minecraft_version=1.16.5 -yarn_mappings=1.16.5+build.5 +minecraft_version=21w20a +yarn_mappings=21w20a+build.19 loader_version=0.11.3 #Fabric api -fabric_version=0.32.0+1.16 +fabric_version=0.34.7+1.17 # Mod Properties -mod_version=1.2.0 +mod_version=1.3.0 maven_group=draylar archives_base_name=structurized diff --git a/gradle/wrapper/gradle-wrapper.properties b/gradle/wrapper/gradle-wrapper.properties index 4b7e1f3..0f80bbf 100644 --- a/gradle/wrapper/gradle-wrapper.properties +++ b/gradle/wrapper/gradle-wrapper.properties @@ -1,5 +1,5 @@ distributionBase=GRADLE_USER_HOME distributionPath=wrapper/dists -distributionUrl=https\://services.gradle.org/distributions/gradle-5.5.1-bin.zip +distributionUrl=https\://services.gradle.org/distributions/gradle-7.0.2-bin.zip zipStoreBase=GRADLE_USER_HOME zipStorePath=wrapper/dists diff --git a/src/main/java/draylar/structurized/api/StructurePoolAddCallback.java b/src/main/java/draylar/structurized/api/StructurePoolAddCallback.java index 56f3563..052c99e 100644 --- a/src/main/java/draylar/structurized/api/StructurePoolAddCallback.java +++ b/src/main/java/draylar/structurized/api/StructurePoolAddCallback.java @@ -8,10 +8,10 @@ public interface StructurePoolAddCallback { Event EVENT = EventFactory.createArrayBacked(StructurePoolAddCallback.class, listeners -> initialPool -> { for (StructurePoolAddCallback listener : listeners) { - listener.add(initialPool); + listener.onAdd(initialPool); } } ); - void add(FabricStructurePool initialPool); + void onAdd(FabricStructurePool initialPool); } \ No newline at end of file diff --git a/src/main/java/draylar/structurized/mixin/DynamicRegistryManagerMixin.java b/src/main/java/draylar/structurized/mixin/DynamicRegistryManagerMixin.java index cfd0fe0..0e1ca62 100644 --- a/src/main/java/draylar/structurized/mixin/DynamicRegistryManagerMixin.java +++ b/src/main/java/draylar/structurized/mixin/DynamicRegistryManagerMixin.java @@ -7,24 +7,21 @@ import net.minecraft.util.registry.DynamicRegistryManager; import net.minecraft.util.registry.Registry; import net.minecraft.util.registry.RegistryKey; -import net.minecraft.util.registry.SimpleRegistry; import org.spongepowered.asm.mixin.Mixin; import org.spongepowered.asm.mixin.injection.At; import org.spongepowered.asm.mixin.injection.Inject; import org.spongepowered.asm.mixin.injection.callback.CallbackInfo; import org.spongepowered.asm.mixin.injection.callback.LocalCapture; -import java.util.Map; - @Mixin(DynamicRegistryManager.class) public abstract class DynamicRegistryManagerMixin { - @Inject(method = "load(Lnet/minecraft/util/dynamic/RegistryOps;Lnet/minecraft/util/registry/DynamicRegistryManager$Impl;Lnet/minecraft/util/registry/DynamicRegistryManager$Info;)V", at = @At(value = "TAIL"), cancellable = true, locals = LocalCapture.CAPTURE_FAILSOFT) - private static void load(RegistryOps ops, DynamicRegistryManager.Impl manager, DynamicRegistryManager.Info info, CallbackInfo ci, RegistryKey> registryKey, SimpleRegistry simpleRegistry) { - if (registryKey.getValue().toString().contains("template_pool")) { - for (Map.Entry, Object> e : ((SimpleRegistryAccessor) simpleRegistry).getKeyToEntry().entrySet()) { - if (e.getValue() instanceof StructurePool) { - StructurePoolAddCallback.EVENT.invoker().add(new FabricStructurePool((StructurePool) e.getValue())); + @Inject(method = "load(Lnet/minecraft/util/dynamic/RegistryOps;Lnet/minecraft/util/registry/DynamicRegistryManager;Lnet/minecraft/util/registry/DynamicRegistryManager$Info;)V", at = @At(value = "TAIL"), cancellable = true, locals = LocalCapture.CAPTURE_FAILSOFT) + private static void load(RegistryOps ops, DynamicRegistryManager manager, DynamicRegistryManager.Info info, CallbackInfo ci, RegistryKey> registryKey) { + if (registryKey.equals(Registry.STRUCTURE_POOL_KEY)) { + for (E pool : manager.get(registryKey)) { + if (pool instanceof StructurePool) { + StructurePoolAddCallback.EVENT.invoker().onAdd(new FabricStructurePool((StructurePool) pool)); } } } diff --git a/src/main/java/draylar/structurized/mixin/SimpleRegistryAccessor.java b/src/main/java/draylar/structurized/mixin/SimpleRegistryAccessor.java deleted file mode 100644 index a23c17d..0000000 --- a/src/main/java/draylar/structurized/mixin/SimpleRegistryAccessor.java +++ /dev/null @@ -1,15 +0,0 @@ -package draylar.structurized.mixin; - -import com.google.common.collect.BiMap; -import net.minecraft.util.registry.RegistryKey; -import net.minecraft.util.registry.SimpleRegistry; -import org.spongepowered.asm.mixin.Mixin; -import org.spongepowered.asm.mixin.gen.Accessor; - -@Mixin(SimpleRegistry.class) -public interface SimpleRegistryAccessor { - - @Accessor("keyToEntry") - BiMap, T> getKeyToEntry(); - -} diff --git a/src/main/java/draylar/structurized/mixin/StructurePoolAccessor.java b/src/main/java/draylar/structurized/mixin/StructurePoolAccessor.java index 18bfc35..0beb0a7 100644 --- a/src/main/java/draylar/structurized/mixin/StructurePoolAccessor.java +++ b/src/main/java/draylar/structurized/mixin/StructurePoolAccessor.java @@ -4,6 +4,7 @@ import net.minecraft.structure.pool.StructurePool; import net.minecraft.structure.pool.StructurePoolElement; import org.spongepowered.asm.mixin.Mixin; +import org.spongepowered.asm.mixin.Mutable; import org.spongepowered.asm.mixin.gen.Accessor; import java.util.List; @@ -16,6 +17,7 @@ public interface StructurePoolAccessor { @Accessor(value = "elementCounts") List> getElementCounts(); + @Mutable @Accessor(value = "elementCounts") void setElementCounts(List> list); } diff --git a/src/main/resources/fabric.mod.json b/src/main/resources/fabric.mod.json index a460f3a..64f16ed 100644 --- a/src/main/resources/fabric.mod.json +++ b/src/main/resources/fabric.mod.json @@ -1,19 +1,18 @@ { "schemaVersion": 1, "id": "structurized", - "version": "${version}", + "version": "1.3.0", "name": "Structurized", "authors": [ "Draylar", "Frqnny" ], "license": "MIT", - "icon": "assets/villages/icon.png", "mixins": [ "structurized.mixins.json" ], "accessWidener": "structurized.accesswidener", "depends": { - "minecraft": "1.16.x" + "minecraft": "1.17.x" } } \ No newline at end of file diff --git a/src/main/resources/structurized.mixins.json b/src/main/resources/structurized.mixins.json index db72ad6..4d4bed3 100644 --- a/src/main/resources/structurized.mixins.json +++ b/src/main/resources/structurized.mixins.json @@ -4,8 +4,7 @@ "compatibilityLevel": "JAVA_8", "mixins": [ "DynamicRegistryManagerMixin", - "StructurePoolAccessor", - "SimpleRegistryAccessor" + "StructurePoolAccessor" ], "injectors": { "defaultRequire": 1