fix default properties and name plate visibility when importing from citizens

This commit is contained in:
D3v1s0m 2024-06-06 21:14:25 +05:30
parent 01515c08b9
commit bc8cbdcab1
No known key found for this signature in database
GPG Key ID: FA1F770C7B1D40C1
2 changed files with 10 additions and 5 deletions

@ -4,6 +4,7 @@ import lol.pyr.znpcsplus.config.ConfigManager;
import lol.pyr.znpcsplus.conversion.DataImporter; import lol.pyr.znpcsplus.conversion.DataImporter;
import lol.pyr.znpcsplus.conversion.citizens.model.CitizensTrait; import lol.pyr.znpcsplus.conversion.citizens.model.CitizensTrait;
import lol.pyr.znpcsplus.conversion.citizens.model.CitizensTraitsRegistry; import lol.pyr.znpcsplus.conversion.citizens.model.CitizensTraitsRegistry;
import lol.pyr.znpcsplus.conversion.citizens.model.traits.TypeTrait;
import lol.pyr.znpcsplus.entity.EntityPropertyRegistryImpl; import lol.pyr.znpcsplus.entity.EntityPropertyRegistryImpl;
import lol.pyr.znpcsplus.npc.NpcEntryImpl; import lol.pyr.znpcsplus.npc.NpcEntryImpl;
import lol.pyr.znpcsplus.npc.NpcImpl; import lol.pyr.znpcsplus.npc.NpcImpl;
@ -52,7 +53,7 @@ public class CitizensImporter implements DataImporter {
this.propertyRegistry = propertyRegistry; this.propertyRegistry = propertyRegistry;
this.skinCache = skinCache; this.skinCache = skinCache;
this.dataFile = dataFile; this.dataFile = dataFile;
this.traitsRegistry = new CitizensTraitsRegistry(typeRegistry, propertyRegistry, skinCache, taskScheduler, textSerializer); this.traitsRegistry = new CitizensTraitsRegistry(propertyRegistry, skinCache, taskScheduler, textSerializer);
this.npcRegistry = npcRegistry; this.npcRegistry = npcRegistry;
} }
@ -81,10 +82,12 @@ public class CitizensImporter implements DataImporter {
world = Bukkit.getWorlds().get(0).getName(); world = Bukkit.getWorlds().get(0).getName();
} }
NpcImpl npc = new NpcImpl(uuid, propertyRegistry, configManager, packetFactory, textSerializer, world, typeRegistry.getByName("armor_stand"), new NpcLocation(0, 0, 0, 0, 0)); NpcImpl npc = new NpcImpl(uuid, propertyRegistry, configManager, packetFactory, textSerializer, world, typeRegistry.getByName("armor_stand"), new NpcLocation(0, 0, 0, 0, 0));
npc.getType().applyDefaultProperties(npc);
ConfigurationSection traits = npcSection.getConfigurationSection("traits"); ConfigurationSection traits = npcSection.getConfigurationSection("traits");
if (traits != null) { if (traits != null) {
TypeTrait typeTrait = new TypeTrait(typeRegistry);
npc = typeTrait.apply(npc, traits.getString("type"));
npc.getType().applyDefaultProperties(npc);
for (String traitName : traits.getKeys(false)) { for (String traitName : traits.getKeys(false)) {
Object trait = traits.get(traitName); Object trait = traits.get(traitName);
CitizensTrait citizensTrait = traitsRegistry.getByName(traitName); CitizensTrait citizensTrait = traitsRegistry.getByName(traitName);
@ -93,6 +96,10 @@ public class CitizensImporter implements DataImporter {
} }
} }
} }
boolean nameVisible = Boolean.parseBoolean(npcSection.getString("metadata.name-visible", "true"));
if (nameVisible) {
npc.getHologram().addTextLineComponent(textSerializer.deserialize(name));
}
String id = key.toLowerCase(); String id = key.toLowerCase();
while (npcRegistry.getById(id) != null) { while (npcRegistry.getById(id) != null) {
id += "_"; // TODO: make a backup of the old npc instead id += "_"; // TODO: make a backup of the old npc instead

@ -1,7 +1,6 @@
package lol.pyr.znpcsplus.conversion.citizens.model; package lol.pyr.znpcsplus.conversion.citizens.model;
import lol.pyr.znpcsplus.api.entity.EntityPropertyRegistry; import lol.pyr.znpcsplus.api.entity.EntityPropertyRegistry;
import lol.pyr.znpcsplus.api.npc.NpcTypeRegistry;
import lol.pyr.znpcsplus.conversion.citizens.model.traits.*; import lol.pyr.znpcsplus.conversion.citizens.model.traits.*;
import lol.pyr.znpcsplus.scheduling.TaskScheduler; import lol.pyr.znpcsplus.scheduling.TaskScheduler;
import lol.pyr.znpcsplus.skin.cache.MojangSkinCache; import lol.pyr.znpcsplus.skin.cache.MojangSkinCache;
@ -12,9 +11,8 @@ import java.util.HashMap;
public class CitizensTraitsRegistry { public class CitizensTraitsRegistry {
private final HashMap<String, CitizensTrait> traitMap = new HashMap<>(); private final HashMap<String, CitizensTrait> traitMap = new HashMap<>();
public CitizensTraitsRegistry(NpcTypeRegistry typeRegistry, EntityPropertyRegistry propertyRegistry, MojangSkinCache skinCache, TaskScheduler taskScheduler, LegacyComponentSerializer textSerializer) { public CitizensTraitsRegistry(EntityPropertyRegistry propertyRegistry, MojangSkinCache skinCache, TaskScheduler taskScheduler, LegacyComponentSerializer textSerializer) {
register(new LocationTrait()); register(new LocationTrait());
register(new TypeTrait(typeRegistry));
register(new ProfessionTrait(propertyRegistry)); register(new ProfessionTrait(propertyRegistry));
register(new VillagerTrait(propertyRegistry)); register(new VillagerTrait(propertyRegistry));
register(new SkinTrait(propertyRegistry)); register(new SkinTrait(propertyRegistry));