diff --git a/src/main/java/tv/alterNERD/VaultModTweaks/integration/mixin/MixinTransmogTableBlock.java b/src/main/java/tv/alterNERD/VaultModTweaks/integration/mixin/MixinTransmogTableBlock.java index 2e31a18..fb97d9f 100644 --- a/src/main/java/tv/alterNERD/VaultModTweaks/integration/mixin/MixinTransmogTableBlock.java +++ b/src/main/java/tv/alterNERD/VaultModTweaks/integration/mixin/MixinTransmogTableBlock.java @@ -18,17 +18,19 @@ package tv.alterNERD.VaultModTweaks.integration.mixin; import java.util.Collection; -import java.util.Set; import org.spongepowered.asm.mixin.Mixin; import org.spongepowered.asm.mixin.Overwrite; -import org.spongepowered.asm.mixin.Shadow; import iskallia.vault.block.TransmogTableBlock; import iskallia.vault.dynamodel.model.armor.ArmorPieceModel; -import iskallia.vault.init.ModDynamicModels; +import iskallia.vault.init.ModDynamicModels.Armor; +import iskallia.vault.init.ModDynamicModels.Axes; +import iskallia.vault.init.ModDynamicModels.Swords; +import iskallia.vault.patreon.PatreonManager; +import iskallia.vault.patreon.PatreonPlayerData; +import iskallia.vault.patreon.PatreonTier; import net.minecraft.resources.ResourceLocation; import net.minecraft.world.entity.player.Player; import tv.alterNERD.VaultModTweaks.Configuration; -import tv.alterNERD.VaultModTweaks.VaultModTweaks; /** * Changes the {@link iskallia.vault.block.TransmogTableBlock} class for @@ -38,12 +40,6 @@ import tv.alterNERD.VaultModTweaks.VaultModTweaks; */ @Mixin(TransmogTableBlock.class) public abstract class MixinTransmogTableBlock { - @Shadow(remap = false) - private static Set CHAMPION_LIST; - - @Shadow(remap = false) - private static Set GOBLIN_LIST; - /*** * Injects some new Goblin / Champion tier patrons into the transmogajigga * thing. @@ -56,25 +52,26 @@ public abstract class MixinTransmogTableBlock { public static boolean canTransmogModel(Player player, Collection discoveredModelIds, ResourceLocation modelId) { long id = player.getUUID().getMostSignificantBits() ^ player.getUUID().getLeastSignificantBits(); String name = player.getName().getString(); - return ModDynamicModels.Armor.PIECE_REGISTRY.get(modelId).map(ArmorPieceModel::getArmorModel).map(armorModel -> { - VaultModTweaks.LOGGER.debug(player.getName().getString()); - if (armorModel.equals(ModDynamicModels.Armor.CHAMPION)) { - return CHAMPION_LIST.contains(id) || Configuration.CHAMPIONS.get().contains(name); + + PatreonPlayerData data = PatreonManager.getInstance().getPlayerData(player.getUUID()); + return (Boolean)Armor.PIECE_REGISTRY.get(modelId).map(ArmorPieceModel::getArmorModel).map((armorModel) -> { + if (armorModel.equals(Armor.CHAMPION)) { + return data.isAtLeastTier(PatreonTier.CHAMPION) || Configuration.CHAMPIONS.get().contains(name); + } else if (armorModel.equals(Armor.GOBLIN)) { + return data.isAtLeastTier(PatreonTier.GOBLIN) || Configuration.GOBLINS.get().contains(name) || Configuration.CHAMPIONS.get().contains(name); + } else { + return null; } - if (armorModel.equals(ModDynamicModels.Armor.GOBLIN)) { - return GOBLIN_LIST.contains(id) || CHAMPION_LIST.contains(id) || Configuration.GOBLINS.get().contains(name) || Configuration.CHAMPIONS.get().contains(name); - } - return null; - }).or(() -> ModDynamicModels.Swords.REGISTRY.get(modelId).map(model -> { - if (model.equals(ModDynamicModels.Swords.GODSWORD)) { - return CHAMPION_LIST.contains(id) || Configuration.CHAMPIONS.get().contains(name); - } - return null; - })).or(() -> ModDynamicModels.Axes.REGISTRY.get(modelId).map(model -> { - if (model.equals(ModDynamicModels.Axes.GODAXE)) { - return CHAMPION_LIST.contains(id) || Configuration.CHAMPIONS.get().contains(name); - } - return null; - })).orElse(discoveredModelIds.contains(modelId)); + }).or(() -> { + return Swords.REGISTRY.get(modelId).map((model) -> { + return model.equals(Swords.GODSWORD) ? data.isAtLeastTier(PatreonTier.CHAMPION) || Configuration.CHAMPIONS.get().contains(name) : null; + }); + }).or(() -> { + return Axes.REGISTRY.get(modelId).map((model) -> { + return model.equals(Axes.GODAXE) ? data.isAtLeastTier(PatreonTier.CHAMPION) || Configuration.CHAMPIONS.get().contains(name) : null; + }); + }).orElseGet(() -> { + return discoveredModelIds.contains(modelId); + }); } }