mirror of
https://github.com/CitizensDev/Citizens2.git
synced 2024-06-26 14:35:03 +02:00
added spawned trait
This commit is contained in:
parent
967eef4836
commit
0e737cc367
Binary file not shown.
|
@ -19,6 +19,7 @@ import net.citizensnpcs.api.npc.trait.InstanceFactory;
|
||||||
import net.citizensnpcs.api.npc.trait.Trait;
|
import net.citizensnpcs.api.npc.trait.Trait;
|
||||||
import net.citizensnpcs.api.npc.trait.trait.Owner;
|
import net.citizensnpcs.api.npc.trait.trait.Owner;
|
||||||
import net.citizensnpcs.api.npc.trait.trait.SpawnLocation;
|
import net.citizensnpcs.api.npc.trait.trait.SpawnLocation;
|
||||||
|
import net.citizensnpcs.api.npc.trait.trait.Spawned;
|
||||||
import net.citizensnpcs.command.CommandManager;
|
import net.citizensnpcs.command.CommandManager;
|
||||||
import net.citizensnpcs.command.Injector;
|
import net.citizensnpcs.command.Injector;
|
||||||
import net.citizensnpcs.command.command.NPCCommands;
|
import net.citizensnpcs.command.command.NPCCommands;
|
||||||
|
@ -175,6 +176,7 @@ public class Citizens extends JavaPlugin {
|
||||||
private void setupNPCs() throws NPCLoadException {
|
private void setupNPCs() throws NPCLoadException {
|
||||||
traitManager.register("location", SpawnLocation.class);
|
traitManager.register("location", SpawnLocation.class);
|
||||||
traitManager.register("owner", Owner.class);
|
traitManager.register("owner", Owner.class);
|
||||||
|
traitManager.register("spawned", Spawned.class);
|
||||||
|
|
||||||
int created = 0, spawned = 0;
|
int created = 0, spawned = 0;
|
||||||
for (DataKey key : saves.getKey("npc").getIntegerSubKeys()) {
|
for (DataKey key : saves.getKey("npc").getIntegerSubKeys()) {
|
||||||
|
|
|
@ -5,6 +5,7 @@ import net.citizensnpcs.api.npc.NPC;
|
||||||
import net.citizensnpcs.api.npc.trait.Character;
|
import net.citizensnpcs.api.npc.trait.Character;
|
||||||
import net.citizensnpcs.api.npc.trait.DefaultInstanceFactory;
|
import net.citizensnpcs.api.npc.trait.DefaultInstanceFactory;
|
||||||
import net.citizensnpcs.api.npc.trait.trait.Owner;
|
import net.citizensnpcs.api.npc.trait.trait.Owner;
|
||||||
|
import net.citizensnpcs.api.npc.trait.trait.Spawned;
|
||||||
import net.citizensnpcs.command.CommandContext;
|
import net.citizensnpcs.command.CommandContext;
|
||||||
import net.citizensnpcs.command.annotation.Command;
|
import net.citizensnpcs.command.annotation.Command;
|
||||||
import net.citizensnpcs.command.annotation.Permission;
|
import net.citizensnpcs.command.annotation.Permission;
|
||||||
|
@ -85,6 +86,7 @@ public class NPCCommands {
|
||||||
min = 2,
|
min = 2,
|
||||||
max = 2)
|
max = 2)
|
||||||
@Permission("npc.spawn")
|
@Permission("npc.spawn")
|
||||||
|
@Requirements
|
||||||
public void spawnNPC(CommandContext args, Player player, NPC npc) {
|
public void spawnNPC(CommandContext args, Player player, NPC npc) {
|
||||||
CitizensNPC respawn = (CitizensNPC) npcManager.getNPC(args.getInteger(1));
|
CitizensNPC respawn = (CitizensNPC) npcManager.getNPC(args.getInteger(1));
|
||||||
if (respawn == null) {
|
if (respawn == null) {
|
||||||
|
@ -120,8 +122,8 @@ public class NPCCommands {
|
||||||
@Requirements(ownership = true)
|
@Requirements(ownership = true)
|
||||||
public void selectNPC(CommandContext args, Player player, NPC npc) {
|
public void selectNPC(CommandContext args, Player player, NPC npc) {
|
||||||
NPC toSelect = npcManager.getNPC(args.getInteger(1));
|
NPC toSelect = npcManager.getNPC(args.getInteger(1));
|
||||||
if (toSelect == null) {
|
if (toSelect == null || !toSelect.getTrait(Spawned.class).isSpawned()) {
|
||||||
Messaging.sendError(player, "No NPC with the ID '" + args.getInteger(1) + "' exists.");
|
Messaging.sendError(player, "No NPC with the ID '" + args.getInteger(1) + "' is spawned.");
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
if (npc != null && toSelect.getId() == npc.getId()) {
|
if (npc != null && toSelect.getId() == npc.getId()) {
|
||||||
|
|
|
@ -5,6 +5,7 @@ import net.citizensnpcs.api.event.NPCSpawnEvent;
|
||||||
import net.citizensnpcs.api.npc.AbstractNPC;
|
import net.citizensnpcs.api.npc.AbstractNPC;
|
||||||
import net.citizensnpcs.api.npc.ai.Navigator;
|
import net.citizensnpcs.api.npc.ai.Navigator;
|
||||||
import net.citizensnpcs.api.npc.trait.trait.SpawnLocation;
|
import net.citizensnpcs.api.npc.trait.trait.SpawnLocation;
|
||||||
|
import net.citizensnpcs.api.npc.trait.trait.Spawned;
|
||||||
import net.citizensnpcs.npc.ai.CitizensNavigator;
|
import net.citizensnpcs.npc.ai.CitizensNavigator;
|
||||||
import net.citizensnpcs.resource.lib.CraftNPC;
|
import net.citizensnpcs.resource.lib.CraftNPC;
|
||||||
import net.citizensnpcs.util.Messaging;
|
import net.citizensnpcs.util.Messaging;
|
||||||
|
@ -15,7 +16,6 @@ import org.bukkit.entity.Player;
|
||||||
|
|
||||||
public class CitizensNPC extends AbstractNPC {
|
public class CitizensNPC extends AbstractNPC {
|
||||||
private CraftNPC mcEntity;
|
private CraftNPC mcEntity;
|
||||||
private boolean spawned;
|
|
||||||
private final CitizensNPCManager manager;
|
private final CitizensNPCManager manager;
|
||||||
|
|
||||||
public CitizensNPC(CitizensNPCManager manager, int id, String name) {
|
public CitizensNPC(CitizensNPCManager manager, int id, String name) {
|
||||||
|
@ -33,8 +33,8 @@ public class CitizensNPC extends AbstractNPC {
|
||||||
Bukkit.getPluginManager().callEvent(new NPCDespawnEvent(this));
|
Bukkit.getPluginManager().callEvent(new NPCDespawnEvent(this));
|
||||||
|
|
||||||
manager.despawn(this);
|
manager.despawn(this);
|
||||||
|
getTrait(Spawned.class).setSpawned(false);
|
||||||
|
|
||||||
spawned = false;
|
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -54,7 +54,7 @@ public class CitizensNPC extends AbstractNPC {
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public boolean isSpawned() {
|
public boolean isSpawned() {
|
||||||
return spawned;
|
return getHandle() != null;
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
|
@ -79,9 +79,16 @@ public class CitizensNPC extends AbstractNPC {
|
||||||
mcEntity = manager.spawn(this, loc);
|
mcEntity = manager.spawn(this, loc);
|
||||||
|
|
||||||
// Set the location
|
// Set the location
|
||||||
addTrait(new SpawnLocation(loc));
|
if (!hasTrait(SpawnLocation.class))
|
||||||
|
addTrait(new SpawnLocation(loc));
|
||||||
|
else
|
||||||
|
getTrait(SpawnLocation.class).setLocation(loc);
|
||||||
|
|
||||||
|
if (!hasTrait(Spawned.class))
|
||||||
|
addTrait(new Spawned(true));
|
||||||
|
else
|
||||||
|
getTrait(Spawned.class).setSpawned(true);
|
||||||
|
|
||||||
spawned = true;
|
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
}
|
}
|
Loading…
Reference in New Issue
Block a user