From 96ea12aa3894a95f8910e80d100758ca04c1b389 Mon Sep 17 00:00:00 2001 From: Soro335 Date: Fri, 15 Dec 2023 22:42:58 +0300 Subject: [PATCH 1/5] forest wip --- .../data/frozenlib/tags/blocks/dripstone_can_drip.json | 2 +- .../data/frozenlib_testmod/loot_tables/test_loottable.json | 2 +- .../tags/worldgen/biome/has_structure/ancient_city.json | 2 +- 3 files changed, 3 insertions(+), 3 deletions(-) diff --git a/src/testmod/generated/data/frozenlib/tags/blocks/dripstone_can_drip.json b/src/testmod/generated/data/frozenlib/tags/blocks/dripstone_can_drip.json index 34d42073b..bc1977755 100644 --- a/src/testmod/generated/data/frozenlib/tags/blocks/dripstone_can_drip.json +++ b/src/testmod/generated/data/frozenlib/tags/blocks/dripstone_can_drip.json @@ -3,4 +3,4 @@ "values": [ "minecraft:diamond_block" ] -} +} \ No newline at end of file diff --git a/src/testmod/generated/data/frozenlib_testmod/loot_tables/test_loottable.json b/src/testmod/generated/data/frozenlib_testmod/loot_tables/test_loottable.json index 27be809a2..afcf630f8 100644 --- a/src/testmod/generated/data/frozenlib_testmod/loot_tables/test_loottable.json +++ b/src/testmod/generated/data/frozenlib_testmod/loot_tables/test_loottable.json @@ -12,4 +12,4 @@ "rolls": 1.0 } ] -} +} \ No newline at end of file diff --git a/src/testmod/generated/data/minecraft/tags/worldgen/biome/has_structure/ancient_city.json b/src/testmod/generated/data/minecraft/tags/worldgen/biome/has_structure/ancient_city.json index ae9de4604..4219c7532 100644 --- a/src/testmod/generated/data/minecraft/tags/worldgen/biome/has_structure/ancient_city.json +++ b/src/testmod/generated/data/minecraft/tags/worldgen/biome/has_structure/ancient_city.json @@ -3,4 +3,4 @@ "values": [ "minecraft:dark_forest" ] -} +} \ No newline at end of file From 615c39309f9d9584c397be3bb4cf3f8c696dcafc Mon Sep 17 00:00:00 2001 From: Treetrain1 <39657565+Treetrain1@users.noreply.github.com> Date: Fri, 15 Dec 2023 16:04:20 -0600 Subject: [PATCH 2/5] remove unused inject --- .../lib/advancement/mixin/AdvancementHolderMixin.java | 5 ----- 1 file changed, 5 deletions(-) diff --git a/src/main/java/net/frozenblock/lib/advancement/mixin/AdvancementHolderMixin.java b/src/main/java/net/frozenblock/lib/advancement/mixin/AdvancementHolderMixin.java index c19e65d8d..d8c94d4c7 100644 --- a/src/main/java/net/frozenblock/lib/advancement/mixin/AdvancementHolderMixin.java +++ b/src/main/java/net/frozenblock/lib/advancement/mixin/AdvancementHolderMixin.java @@ -36,9 +36,4 @@ public class AdvancementHolderMixin { private static void modifyAdvancement(FriendlyByteBuf buf, CallbackInfoReturnable cir) { AdvancementEvents.INIT.invoker().onInit(cir.getReturnValue()); } - - @Inject(method = "", at = @At("TAIL")) - private void init(ResourceLocation resourceLocation, Advancement advancement, CallbackInfo ci) { - //AdvancementEvents.INIT.invoker().onInit((AdvancementHolder) (Object) this); - } } From 6e9ec7164ea584d3e0022bb78e2a52251fbdaaa8 Mon Sep 17 00:00:00 2001 From: Treetrain1 <39657565+Treetrain1@users.noreply.github.com> Date: Fri, 15 Dec 2023 16:09:53 -0600 Subject: [PATCH 3/5] priority 500 so a random `setReturnValue` doesnt break this --- .../lib/advancement/mixin/AdvancementHolderMixin.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/main/java/net/frozenblock/lib/advancement/mixin/AdvancementHolderMixin.java b/src/main/java/net/frozenblock/lib/advancement/mixin/AdvancementHolderMixin.java index d8c94d4c7..5bc9e54d1 100644 --- a/src/main/java/net/frozenblock/lib/advancement/mixin/AdvancementHolderMixin.java +++ b/src/main/java/net/frozenblock/lib/advancement/mixin/AdvancementHolderMixin.java @@ -29,7 +29,7 @@ import org.spongepowered.asm.mixin.injection.callback.CallbackInfo; import org.spongepowered.asm.mixin.injection.callback.CallbackInfoReturnable; -@Mixin(AdvancementHolder.class) +@Mixin(value = AdvancementHolder.class, priority = 500) public class AdvancementHolderMixin { @Inject(method = "read", at = @At("RETURN")) From ee0dd0fe9424165637f7d866cd36c4d33e95bfb5 Mon Sep 17 00:00:00 2001 From: Treetrain1 <39657565+Treetrain1@users.noreply.github.com> Date: Fri, 15 Dec 2023 16:12:32 -0600 Subject: [PATCH 4/5] use ModifyReturnValue --- .../mixin/AdvancementHolderMixin.java | 16 ++++++---------- 1 file changed, 6 insertions(+), 10 deletions(-) diff --git a/src/main/java/net/frozenblock/lib/advancement/mixin/AdvancementHolderMixin.java b/src/main/java/net/frozenblock/lib/advancement/mixin/AdvancementHolderMixin.java index 5bc9e54d1..174af47a7 100644 --- a/src/main/java/net/frozenblock/lib/advancement/mixin/AdvancementHolderMixin.java +++ b/src/main/java/net/frozenblock/lib/advancement/mixin/AdvancementHolderMixin.java @@ -18,22 +18,18 @@ package net.frozenblock.lib.advancement.mixin; +import com.llamalad7.mixinextras.injector.ModifyReturnValue; import net.frozenblock.lib.advancement.api.AdvancementEvents; -import net.minecraft.advancements.Advancement; import net.minecraft.advancements.AdvancementHolder; -import net.minecraft.network.FriendlyByteBuf; -import net.minecraft.resources.ResourceLocation; 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.CallbackInfoReturnable; -@Mixin(value = AdvancementHolder.class, priority = 500) +@Mixin(value = AdvancementHolder.class, priority = 1500) public class AdvancementHolderMixin { - @Inject(method = "read", at = @At("RETURN")) - private static void modifyAdvancement(FriendlyByteBuf buf, CallbackInfoReturnable cir) { - AdvancementEvents.INIT.invoker().onInit(cir.getReturnValue()); + @ModifyReturnValue(method = "read", at = @At("RETURN")) + private static AdvancementHolder modifyAdvancement(AdvancementHolder original) { + AdvancementEvents.INIT.invoker().onInit(original); + return original; } } From 7995e4f40c6a28bec5ac22d09b170772de455a26 Mon Sep 17 00:00:00 2001 From: Treetrain1 <39657565+Treetrain1@users.noreply.github.com> Date: Fri, 15 Dec 2023 17:07:55 -0600 Subject: [PATCH 5/5] more ModifyReturnValue --- .../lib/menu/mixin/SplashManagerMixin.java | 26 +++++++++---------- .../loader/mixin/MinecraftServerMixin.java | 10 ++++--- .../client/IntegratedServerLoaderMixin.java | 21 +++++---------- 3 files changed, 24 insertions(+), 33 deletions(-) diff --git a/src/main/java/net/frozenblock/lib/menu/mixin/SplashManagerMixin.java b/src/main/java/net/frozenblock/lib/menu/mixin/SplashManagerMixin.java index 0b21a44d3..c81fe52e5 100644 --- a/src/main/java/net/frozenblock/lib/menu/mixin/SplashManagerMixin.java +++ b/src/main/java/net/frozenblock/lib/menu/mixin/SplashManagerMixin.java @@ -18,10 +18,10 @@ package net.frozenblock.lib.menu.mixin; +import com.llamalad7.mixinextras.injector.ModifyReturnValue; import java.io.BufferedReader; import java.io.IOException; import java.util.List; -import java.util.stream.Collectors; import net.frozenblock.lib.menu.api.SplashTextAPI; import net.minecraft.client.Minecraft; import net.minecraft.client.resources.SplashManager; @@ -34,7 +34,6 @@ 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.CallbackInfoReturnable; @Mixin(SplashManager.class) public class SplashManagerMixin { @@ -52,34 +51,33 @@ private void apply(List object, ResourceManager resourceManager, Profile } } - @Inject(method = "prepare(Lnet/minecraft/server/packs/resources/ResourceManager;Lnet/minecraft/util/profiling/ProfilerFiller;)Ljava/util/List;", at = @At("RETURN")) - public void addSplashFiles(ResourceManager resourceManager, ProfilerFiller profiler, CallbackInfoReturnable> info) { + @ModifyReturnValue(method = "prepare(Lnet/minecraft/server/packs/resources/ResourceManager;Lnet/minecraft/util/profiling/ProfilerFiller;)Ljava/util/List;", at = @At("RETURN")) + public List addSplashFiles(List original, ResourceManager resourceManager, ProfilerFiller profiler) { for (ResourceLocation splashLocation : SplashTextAPI.getSplashFiles()) { try { BufferedReader bufferedReader = Minecraft.getInstance().getResourceManager().openAsReader(splashLocation); List var4; try { - var4 = bufferedReader.lines().map(String::trim).filter((splashText) -> splashText.hashCode() != 125780783).collect(Collectors.toList()); + var4 = bufferedReader.lines().map(String::trim).filter(splashText -> splashText.hashCode() != 125780783).toList(); } catch (Throwable var7) { - if (bufferedReader != null) { - try { - bufferedReader.close(); - } catch (Throwable var6) { - var7.addSuppressed(var6); - } - } + try { + bufferedReader.close(); + } catch (Throwable var6) { + var7.addSuppressed(var6); + } - throw var7; + throw var7; } bufferedReader.close(); - info.getReturnValue().addAll(var4); + original.addAll(var4); } catch (IOException ignored) { } } + return original; } } diff --git a/src/main/java/org/quiltmc/qsl/frozenblock/resource/loader/mixin/MinecraftServerMixin.java b/src/main/java/org/quiltmc/qsl/frozenblock/resource/loader/mixin/MinecraftServerMixin.java index 3d4178e17..6d5238f52 100644 --- a/src/main/java/org/quiltmc/qsl/frozenblock/resource/loader/mixin/MinecraftServerMixin.java +++ b/src/main/java/org/quiltmc/qsl/frozenblock/resource/loader/mixin/MinecraftServerMixin.java @@ -20,6 +20,7 @@ import java.util.Collection; import java.util.concurrent.CompletableFuture; +import com.llamalad7.mixinextras.injector.ModifyReturnValue; import net.minecraft.server.MinecraftServer; import net.minecraft.server.packs.resources.ResourceManager; import org.quiltmc.qsl.frozenblock.resource.loader.api.ResourceLoaderEvents; @@ -43,12 +44,13 @@ private void onReloadResourcesStart(Collection collection, CallbackInfoR this.getResourceManager()); } - @Inject(method = "reloadResources", at = @At("TAIL")) - private void onReloadResourcesEnd(Collection collection, CallbackInfoReturnable> cir) { - cir.getReturnValue().handleAsync((value, throwable) -> { + @ModifyReturnValue(method = "reloadResources", at = @At("RETURN")) + private CompletableFuture onReloadResourcesEnd(CompletableFuture original) { + original.handleAsync((value, throwable) -> { ResourceLoaderEvents.END_DATA_PACK_RELOAD.invoker().onEndDataPackReload((MinecraftServer) (Object) this, this.getResourceManager(), throwable); return value; }, (MinecraftServer) (Object) this); - } + return original; + } } diff --git a/src/main/java/org/quiltmc/qsl/frozenblock/resource/loader/mixin/client/IntegratedServerLoaderMixin.java b/src/main/java/org/quiltmc/qsl/frozenblock/resource/loader/mixin/client/IntegratedServerLoaderMixin.java index 915cce398..aeb5bdedb 100644 --- a/src/main/java/org/quiltmc/qsl/frozenblock/resource/loader/mixin/client/IntegratedServerLoaderMixin.java +++ b/src/main/java/org/quiltmc/qsl/frozenblock/resource/loader/mixin/client/IntegratedServerLoaderMixin.java @@ -18,14 +18,12 @@ package org.quiltmc.qsl.frozenblock.resource.loader.mixin.client; -import net.minecraft.client.gui.screens.Screen; +import com.llamalad7.mixinextras.injector.ModifyReturnValue; import net.minecraft.client.gui.screens.worldselection.WorldOpenFlows; import net.minecraft.server.WorldLoader; import net.minecraft.server.WorldStem; -import net.minecraft.world.level.storage.LevelStorageSource; import org.quiltmc.qsl.frozenblock.resource.loader.api.ResourceLoaderEvents; import org.spongepowered.asm.mixin.Mixin; -import org.spongepowered.asm.mixin.Shadow; import org.spongepowered.asm.mixin.injection.At; import org.spongepowered.asm.mixin.injection.Inject; import org.spongepowered.asm.mixin.injection.ModifyArg; @@ -36,13 +34,6 @@ */ @Mixin(WorldOpenFlows.class) public abstract class IntegratedServerLoaderMixin { - @Shadow - private static void safeCloseAccess(LevelStorageSource.LevelStorageAccess storageSession, String worldName) { - throw new IllegalStateException("Mixin injection failed."); - } - - @Shadow - protected abstract void doLoadLevel(Screen parentScreen, String worldName, boolean safeMode, boolean requireBackup); @Inject( method = "loadWorldDataBlocking", @@ -54,16 +45,16 @@ private void onStartDataPackLoad(WorldLoader.PackConfig dataPackConfig, W ResourceLoaderEvents.START_DATA_PACK_RELOAD.invoker().onStartDataPackReload(null, null); } - @Inject( + @ModifyReturnValue( method = "loadWorldDataBlocking", at = @At("RETURN") ) - private void onEndDataPackLoad(WorldLoader.PackConfig dataPackConfig, WorldLoader.WorldDataSupplier savePropertiesSupplier, - WorldLoader.ResultFactory resultFactory, - CallbackInfoReturnable cir) { - if (cir.getReturnValue() instanceof WorldStem worldStem) { + private R onEndDataPackLoad(R original, WorldLoader.PackConfig dataPackConfig, WorldLoader.WorldDataSupplier savePropertiesSupplier, + WorldLoader.ResultFactory resultFactory) { + if (original instanceof WorldStem worldStem) { ResourceLoaderEvents.END_DATA_PACK_RELOAD.invoker().onEndDataPackReload(null, worldStem.resourceManager(), null); } + return original; } @ModifyArg(