added hologram import from citizens

This commit is contained in:
D3v1s0m 2024-06-03 11:39:51 +05:30
parent b8da4d82eb
commit 66aa1bb20f
No known key found for this signature in database
GPG Key ID: FA1F770C7B1D40C1
3 changed files with 40 additions and 3 deletions

@ -52,7 +52,7 @@ public class CitizensImporter implements DataImporter {
this.propertyRegistry = propertyRegistry;
this.skinCache = skinCache;
this.dataFile = dataFile;
this.traitsRegistry = new CitizensTraitsRegistry(typeRegistry, propertyRegistry, skinCache, taskScheduler);
this.traitsRegistry = new CitizensTraitsRegistry(typeRegistry, propertyRegistry, skinCache, taskScheduler, textSerializer);
this.npcRegistry = npcRegistry;
}
@ -83,7 +83,6 @@ public class CitizensImporter implements DataImporter {
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);
npc.getHologram().addTextLineComponent(textSerializer.deserialize(name));
ConfigurationSection traits = npcSection.getConfigurationSection("traits");
if (traits != null) {
for (String traitName : traits.getKeys(false)) {

@ -5,13 +5,14 @@ import lol.pyr.znpcsplus.api.npc.NpcTypeRegistry;
import lol.pyr.znpcsplus.conversion.citizens.model.traits.*;
import lol.pyr.znpcsplus.scheduling.TaskScheduler;
import lol.pyr.znpcsplus.skin.cache.MojangSkinCache;
import net.kyori.adventure.text.serializer.legacy.LegacyComponentSerializer;
import java.util.HashMap;
public class CitizensTraitsRegistry {
private final HashMap<String, CitizensTrait> traitMap = new HashMap<>();
public CitizensTraitsRegistry(NpcTypeRegistry typeRegistry, EntityPropertyRegistry propertyRegistry, MojangSkinCache skinCache, TaskScheduler taskScheduler) {
public CitizensTraitsRegistry(NpcTypeRegistry typeRegistry, EntityPropertyRegistry propertyRegistry, MojangSkinCache skinCache, TaskScheduler taskScheduler, LegacyComponentSerializer textSerializer) {
register(new LocationTrait());
register(new TypeTrait(typeRegistry));
register(new ProfessionTrait(propertyRegistry));
@ -21,6 +22,7 @@ public class CitizensTraitsRegistry {
register(new SkinLayersTrait(propertyRegistry));
register(new LookTrait(propertyRegistry));
register(new CommandTrait(taskScheduler));
register(new HologramTrait(textSerializer));
}
public CitizensTrait getByName(String name) {

@ -0,0 +1,36 @@
package lol.pyr.znpcsplus.conversion.citizens.model.traits;
import lol.pyr.znpcsplus.conversion.citizens.model.SectionCitizensTrait;
import lol.pyr.znpcsplus.npc.NpcImpl;
import net.kyori.adventure.text.Component;
import net.kyori.adventure.text.serializer.legacy.LegacyComponentSerializer;
import org.bukkit.configuration.ConfigurationSection;
import org.jetbrains.annotations.NotNull;
import java.util.ArrayList;
import java.util.List;
public class HologramTrait extends SectionCitizensTrait {
private final LegacyComponentSerializer textSerializer;
public HologramTrait(LegacyComponentSerializer textSerializer) {
super("hologramtrait");
this.textSerializer = textSerializer;
}
@Override
public @NotNull NpcImpl apply(NpcImpl npc, ConfigurationSection section) {
ConfigurationSection linesSection = section.getConfigurationSection("lines");
if (linesSection != null) {
List<String> keys = new ArrayList<>(linesSection.getKeys(false));
for (int i = keys.size() - 1; i >= 0; i--) {
String line = linesSection.getConfigurationSection(keys.get(i)).getString("text");
if (line != null) {
Component component = textSerializer.deserialize(line);
npc.getHologram().addTextLineComponent(component);
}
}
}
return npc;
}
}