aboutsummaryrefslogtreecommitdiff
path: root/src/main/java/de/hysky/skyblocker/skyblock/item
diff options
context:
space:
mode:
authorAaron <51387595+AzureAaron@users.noreply.github.com>2024-03-22 16:00:19 -0400
committerAaron <51387595+AzureAaron@users.noreply.github.com>2024-04-26 16:23:20 -0400
commite2cb2a17ec680fd80925bec205b8b4aaa45c885d (patch)
treef382415e2c856c8cfaf8b9951430e2b7da0b85ef /src/main/java/de/hysky/skyblocker/skyblock/item
parent44f1f0829a683217daba452faf01566abbd94a3e (diff)
downloadSkyblocker-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/skyblocker/skyblock/item')
-rw-r--r--src/main/java/de/hysky/skyblocker/skyblock/item/CustomArmorTrims.java19
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")