fixed transmog mixin

This commit is contained in:
alterNERDtive 2023-11-09 02:57:23 +01:00
parent 2e70ead3a1
commit 597d6397b3
Signed by: alterNERDtive
GPG key ID: 547787A4FE6533F1

View file

@ -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<Long> CHAMPION_LIST;
@Shadow(remap = false)
private static Set<Long> 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<ResourceLocation> 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);
});
}
}