diff options
author | Aaron <51387595+AzureAaron@users.noreply.github.com> | 2024-03-22 16:00:19 -0400 |
---|---|---|
committer | Aaron <51387595+AzureAaron@users.noreply.github.com> | 2024-04-26 16:23:20 -0400 |
commit | e2cb2a17ec680fd80925bec205b8b4aaa45c885d (patch) | |
tree | f382415e2c856c8cfaf8b9951430e2b7da0b85ef /src/main/java/de/hysky | |
parent | 44f1f0829a683217daba452faf01566abbd94a3e (diff) | |
download | Skyblocker-e2cb2a17ec680fd80925bec205b8b4aaa45c885d.tar.gz Skyblocker-e2cb2a17ec680fd80925bec205b8b4aaa45c885d.tar.bz2 Skyblocker-e2cb2a17ec680fd80925bec205b8b4aaa45c885d.zip |
Dev environment support for the Armour Trim Cache
Diffstat (limited to 'src/main/java/de/hysky')
-rw-r--r-- | src/main/java/de/hysky/skyblocker/skyblock/item/CustomArmorTrims.java | 19 |
1 files changed, 14 insertions, 5 deletions
diff --git a/src/main/java/de/hysky/skyblocker/skyblock/item/CustomArmorTrims.java b/src/main/java/de/hysky/skyblocker/skyblock/item/CustomArmorTrims.java index 270622ff..2af88de7 100644 --- a/src/main/java/de/hysky/skyblocker/skyblock/item/CustomArmorTrims.java +++ b/src/main/java/de/hysky/skyblocker/skyblock/item/CustomArmorTrims.java @@ -17,6 +17,7 @@ import it.unimi.dsi.fastutil.objects.Object2ObjectOpenHashMap; import net.fabricmc.fabric.api.client.command.v2.ClientCommandManager; import net.fabricmc.fabric.api.client.command.v2.ClientCommandRegistrationCallback; import net.fabricmc.fabric.api.client.command.v2.FabricClientCommandSource; +import net.fabricmc.loader.api.FabricLoader; import net.minecraft.client.MinecraftClient; import net.minecraft.client.network.ClientPlayerEntity; import net.minecraft.command.CommandRegistryAccess; @@ -30,6 +31,9 @@ import net.minecraft.nbt.NbtOps; import net.minecraft.registry.*; import net.minecraft.text.Text; import net.minecraft.util.Identifier; + +import java.util.stream.Collectors; + import org.jetbrains.annotations.NotNull; import org.slf4j.Logger; import org.slf4j.LoggerFactory; @@ -46,19 +50,20 @@ public class CustomArmorTrims { private static void initializeTrimCache() { ClientPlayerEntity player = MinecraftClient.getInstance().player; - if (trimsInitialized || player == null) { + FabricLoader loader = FabricLoader.getInstance(); + if (trimsInitialized || (player == null && !loader.isDevelopmentEnvironment())) { return; } try { TRIMS_CACHE.clear(); - DynamicRegistryManager registryManager = player.networkHandler.getRegistryManager(); - for (Identifier material : registryManager.get(RegistryKeys.TRIM_MATERIAL).getIds()) { - for (Identifier pattern : registryManager.get(RegistryKeys.TRIM_PATTERN).getIds()) { + RegistryWrapper.WrapperLookup wrapperLookup = getWrapperLookup(loader, player); + for (Identifier material : wrapperLookup.getWrapperOrThrow(RegistryKeys.TRIM_MATERIAL).streamEntries().map(r -> new Identifier(r.value().assetName())).collect(Collectors.toSet())) { + for (Identifier pattern : wrapperLookup.getWrapperOrThrow(RegistryKeys.TRIM_PATTERN).streamEntries().map(r -> r.value().assetId()).collect(Collectors.toSet())) { NbtCompound compound = new NbtCompound(); compound.putString("material", material.toString()); compound.putString("pattern", pattern.toString()); - ArmorTrim trim = ArmorTrim.CODEC.parse(RegistryOps.of(NbtOps.INSTANCE, registryManager), compound).resultOrPartial(LOGGER::error).orElse(null); + ArmorTrim trim = ArmorTrim.CODEC.parse(RegistryOps.of(NbtOps.INSTANCE, wrapperLookup), compound).resultOrPartial(LOGGER::error).orElse(null); // Something went terribly wrong if (trim == null) throw new IllegalStateException("Trim shouldn't be null! [" + "\"" + material + "\",\"" + pattern + "\"]"); @@ -74,6 +79,10 @@ public class CustomArmorTrims { } } + private static RegistryWrapper.WrapperLookup getWrapperLookup(FabricLoader loader, ClientPlayerEntity player) { + return !loader.isDevelopmentEnvironment() ? player.networkHandler.getRegistryManager() : BuiltinRegistries.createWrapperLookup(); + } + private static void registerCommand(CommandDispatcher<FabricClientCommandSource> dispatcher, CommandRegistryAccess registryAccess) { dispatcher.register(ClientCommandManager.literal("skyblocker") .then(ClientCommandManager.literal("custom") |