mirror of
https://github.com/CitizensDev/Citizens2.git
synced 2024-11-12 13:44:07 +01:00
Add very basic /npc hologram command
This commit is contained in:
parent
05cc8de3c7
commit
381f303023
@ -92,6 +92,7 @@ import net.citizensnpcs.trait.EndermanTrait;
|
||||
import net.citizensnpcs.trait.FollowTrait;
|
||||
import net.citizensnpcs.trait.GameModeTrait;
|
||||
import net.citizensnpcs.trait.Gravity;
|
||||
import net.citizensnpcs.trait.HologramTrait;
|
||||
import net.citizensnpcs.trait.HorseModifiers;
|
||||
import net.citizensnpcs.trait.LookClose;
|
||||
import net.citizensnpcs.trait.MountTrait;
|
||||
@ -701,6 +702,25 @@ public class NPCCommands {
|
||||
Messaging.sendTr(sender, key, npc.getName());
|
||||
}
|
||||
|
||||
@Command(
|
||||
aliases = { "npc" },
|
||||
usage = "hologram [text]",
|
||||
desc = "Controls NPC hologram",
|
||||
modifiers = { "hologram" },
|
||||
min = 1,
|
||||
max = -1,
|
||||
permission = "citizens.npc.hologram")
|
||||
public void hologram(CommandContext args, CommandSender sender, NPC npc) {
|
||||
HologramTrait trait = npc.getTrait(HologramTrait.class);
|
||||
if (args.argsLength() == 1) {
|
||||
trait.setText(null);
|
||||
Messaging.sendTr(sender, Messages.HOLOGRAM_TEXT_REMOVED);
|
||||
} else {
|
||||
trait.setText(args.getJoinedStrings(1));
|
||||
Messaging.sendTr(sender, Messages.HOLOGRAM_TEXT_SET);
|
||||
}
|
||||
}
|
||||
|
||||
@Command(
|
||||
aliases = { "npc" },
|
||||
usage = "horse|llama|donkey|mule (--color color) (--type type) (--style style) (-cb)",
|
||||
|
@ -31,6 +31,7 @@ import net.citizensnpcs.trait.EndermanTrait;
|
||||
import net.citizensnpcs.trait.FollowTrait;
|
||||
import net.citizensnpcs.trait.GameModeTrait;
|
||||
import net.citizensnpcs.trait.Gravity;
|
||||
import net.citizensnpcs.trait.HologramTrait;
|
||||
import net.citizensnpcs.trait.HorseModifiers;
|
||||
import net.citizensnpcs.trait.LookClose;
|
||||
import net.citizensnpcs.trait.MountTrait;
|
||||
@ -69,6 +70,7 @@ public class CitizensTraitFactory implements TraitFactory {
|
||||
registerTrait(TraitInfo.create(GameModeTrait.class));
|
||||
registerTrait(TraitInfo.create(Gravity.class));
|
||||
registerTrait(TraitInfo.create(HorseModifiers.class));
|
||||
registerTrait(TraitInfo.create(HologramTrait.class));
|
||||
registerTrait(TraitInfo.create(Inventory.class));
|
||||
registerTrait(TraitInfo.create(LookClose.class));
|
||||
registerTrait(TraitInfo.create(OcelotModifiers.class));
|
||||
|
71
main/src/main/java/net/citizensnpcs/trait/HologramTrait.java
Normal file
71
main/src/main/java/net/citizensnpcs/trait/HologramTrait.java
Normal file
@ -0,0 +1,71 @@
|
||||
package net.citizensnpcs.trait;
|
||||
|
||||
import org.bukkit.entity.ArmorStand;
|
||||
import org.bukkit.entity.EntityType;
|
||||
|
||||
import net.citizensnpcs.api.CitizensAPI;
|
||||
import net.citizensnpcs.api.npc.MemoryNPCDataStore;
|
||||
import net.citizensnpcs.api.npc.NPC;
|
||||
import net.citizensnpcs.api.npc.NPCRegistry;
|
||||
import net.citizensnpcs.api.persistence.Persist;
|
||||
import net.citizensnpcs.api.trait.Trait;
|
||||
import net.citizensnpcs.api.trait.TraitName;
|
||||
import net.citizensnpcs.api.util.Placeholders;
|
||||
|
||||
/**
|
||||
* Persists a hologram attached to the NPC.
|
||||
*/
|
||||
@TraitName("hologramtrait")
|
||||
public class HologramTrait extends Trait {
|
||||
private final NPCRegistry registry = CitizensAPI
|
||||
.createAnonymousNPCRegistry(new MemoryNPCDataStore());
|
||||
private NPC hologramNPC;
|
||||
@Persist
|
||||
private String text;
|
||||
|
||||
public HologramTrait() {
|
||||
super("hologramtrait");
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onDespawn() {
|
||||
if (hologramNPC != null) {
|
||||
hologramNPC.destroy();
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onSpawn() {
|
||||
hologramNPC = registry.createNPC(EntityType.ARMOR_STAND, "");
|
||||
ArmorStandTrait trait = hologramNPC.getTrait(ArmorStandTrait.class);
|
||||
trait.setVisible(false);
|
||||
trait.setSmall(true);
|
||||
hologramNPC.spawn(npc.getStoredLocation());
|
||||
hologramNPC.getEntity().setInvulnerable(true);
|
||||
hologramNPC.getEntity().setGravity(false);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void run() {
|
||||
if (!npc.isSpawned())
|
||||
return;
|
||||
ArmorStand hologram = (ArmorStand) hologramNPC.getEntity();
|
||||
if (hologram == null)
|
||||
return;
|
||||
if (hologram.getVehicle() == null || hologram.getVehicle() != npc.getEntity()) {
|
||||
if (hologram.getVehicle() != npc.getEntity()) {
|
||||
hologram.leaveVehicle();
|
||||
}
|
||||
npc.getEntity().addPassenger(hologram);
|
||||
}
|
||||
if (text != null && !text.isEmpty()) {
|
||||
hologramNPC.setName(Placeholders.replace(text, null, npc));
|
||||
} else {
|
||||
}
|
||||
}
|
||||
|
||||
public void setText(String text) {
|
||||
this.text = text;
|
||||
}
|
||||
|
||||
}
|
@ -134,6 +134,8 @@ public class Messages {
|
||||
public static final String GUIDED_WAYPOINT_EDITOR_ALREADY_TAKEN = "citizens.editors.waypoints.guided.already-taken";
|
||||
public static final String GUIDED_WAYPOINT_EDITOR_BEGIN = "citizens.editors.waypoints.guided.begin";
|
||||
public static final String GUIDED_WAYPOINT_EDITOR_END = "citizens.editors.waypoints.guided.end";
|
||||
public static final String HOLOGRAM_TEXT_REMOVED = "citizens.commands.npc.hologram.text-removed";
|
||||
public static final String HOLOGRAM_TEXT_SET = "citizens.commands.npc.hologram.text-set";
|
||||
public static final String HORSE_CHEST_SET = "citizens.commands.npc.horse.chest-set";
|
||||
public static final String HORSE_CHEST_UNSET = "citizens.commands.npc.horse.chest-unset";
|
||||
public static final String HORSE_COLOR_SET = "citizens.commands.npc.horse.color-set";
|
||||
|
@ -87,6 +87,8 @@ citizens.commands.npc.glowing.unset=[[{0}]] is no longer glowing.
|
||||
citizens.commands.npc.glowing.color-set=[[{0}]]''s glowing color set to {1}]].
|
||||
citizens.commands.npc.guardian.elder-unset=[[{0}]] is no longer an elder guardian.
|
||||
citizens.commands.npc.guardian.elder-set=[[{0}]] is now an elder guardian.
|
||||
citizens.commands.npc.hologram.text-set=Set hologram text to [[{0}]].
|
||||
citizens.commands.npc.hologram.text-removed=Removed hologram text.
|
||||
citizens.commands.npc.horse.chest-set=The horse is now carrying a chest.
|
||||
citizens.commands.npc.horse.chest-unset=The horse is no longer carrying a chest.
|
||||
citizens.commands.npc.horse.color-set=The horse''s color was set to [[{0}]].
|
||||
|
Loading…
Reference in New Issue
Block a user