diff --git a/main/src/main/java/net/citizensnpcs/npc/CitizensTraitFactory.java b/main/src/main/java/net/citizensnpcs/npc/CitizensTraitFactory.java index 5ae649af3..33d524183 100644 --- a/main/src/main/java/net/citizensnpcs/npc/CitizensTraitFactory.java +++ b/main/src/main/java/net/citizensnpcs/npc/CitizensTraitFactory.java @@ -41,6 +41,7 @@ import net.citizensnpcs.trait.ScriptTrait; import net.citizensnpcs.trait.SheepTrait; import net.citizensnpcs.trait.SkinLayers; +import net.citizensnpcs.trait.SkinTrait; import net.citizensnpcs.trait.SlimeSize; import net.citizensnpcs.trait.VillagerProfession; import net.citizensnpcs.trait.WitherTrait; @@ -77,6 +78,7 @@ public CitizensTraitFactory() { registerTrait(TraitInfo.create(ScriptTrait.class)); registerTrait(TraitInfo.create(SheepTrait.class)); registerTrait(TraitInfo.create(SkinLayers.class)); + registerTrait(TraitInfo.create(SkinTrait.class)); registerTrait(TraitInfo.create(MountTrait.class)); registerTrait(TraitInfo.create(SlimeSize.class)); registerTrait(TraitInfo.create(Spawned.class)); diff --git a/main/src/main/java/net/citizensnpcs/npc/skin/Skin.java b/main/src/main/java/net/citizensnpcs/npc/skin/Skin.java index 19eaf454a..9199a99c9 100644 --- a/main/src/main/java/net/citizensnpcs/npc/skin/Skin.java +++ b/main/src/main/java/net/citizensnpcs/npc/skin/Skin.java @@ -26,6 +26,7 @@ import net.citizensnpcs.npc.profile.ProfileFetchHandler; import net.citizensnpcs.npc.profile.ProfileFetcher; import net.citizensnpcs.npc.profile.ProfileRequest; +import net.citizensnpcs.trait.SkinTrait; /** * Stores data for a single skin. @@ -100,6 +101,10 @@ public boolean apply(SkinnableEntity entity) { } if (!hasSkinData()) { + if (npc.hasTrait(SkinTrait.class) && !this.skinName.equals(cachedName) + && !npc.getTrait(SkinTrait.class).fetchDefaultSkin()) { + return false; + } if (hasFetched) { return true; } else { diff --git a/main/src/main/java/net/citizensnpcs/trait/SkinTrait.java b/main/src/main/java/net/citizensnpcs/trait/SkinTrait.java new file mode 100644 index 000000000..176b783f4 --- /dev/null +++ b/main/src/main/java/net/citizensnpcs/trait/SkinTrait.java @@ -0,0 +1,23 @@ +package net.citizensnpcs.trait; + +import net.citizensnpcs.api.persistence.Persist; +import net.citizensnpcs.api.trait.Trait; +import net.citizensnpcs.api.trait.TraitName; + +@TraitName("skintrait") +public class SkinTrait extends Trait { + @Persist + private boolean fetchDefaultSkin = true; + + public SkinTrait() { + super("skintrait"); + } + + public boolean fetchDefaultSkin() { + return fetchDefaultSkin; + } + + public void setFetchDefaultSkin(boolean fetch) { + this.fetchDefaultSkin = fetch; + } +}