Skip to content

Commit

Permalink
Add new NPCRemoveByCommandSenderEvent
Browse files Browse the repository at this point in the history
  • Loading branch information
fullwall committed Jun 26, 2020
1 parent 5b04df4 commit a95faef
Show file tree
Hide file tree
Showing 4 changed files with 51 additions and 5 deletions.
@@ -0,0 +1,30 @@
package net.citizensnpcs.api.event;

import org.bukkit.command.CommandSender;
import org.bukkit.event.HandlerList;

import net.citizensnpcs.api.npc.NPC;

public class NPCRemoveByCommandSenderEvent extends NPCRemoveEvent {
private final CommandSender source;

public NPCRemoveByCommandSenderEvent(NPC npc, CommandSender source) {
super(npc);
this.source = source;
}

@Override
public HandlerList getHandlers() {
return handlers;
}

public CommandSender getSource() {
return source;
}

public static HandlerList getHandlerList() {
return handlers;
}

private static final HandlerList handlers = new HandlerList();
}
9 changes: 4 additions & 5 deletions src/main/java/net/citizensnpcs/api/event/NPCRemoveEvent.java
@@ -1,11 +1,10 @@
package net.citizensnpcs.api.event;

import net.citizensnpcs.api.npc.NPC;

import org.bukkit.event.HandlerList;

public class NPCRemoveEvent extends NPCEvent {
import net.citizensnpcs.api.npc.NPC;

public class NPCRemoveEvent extends NPCEvent {
public NPCRemoveEvent(NPC npc) {
super(npc);
}
Expand All @@ -15,9 +14,9 @@ public HandlerList getHandlers() {
return handlers;
}

private static final HandlerList handlers = new HandlerList();

public static HandlerList getHandlerList() {
return handlers;
}

private static final HandlerList handlers = new HandlerList();
}
8 changes: 8 additions & 0 deletions src/main/java/net/citizensnpcs/api/npc/AbstractNPC.java
Expand Up @@ -7,6 +7,7 @@

import org.bukkit.Bukkit;
import org.bukkit.Location;
import org.bukkit.command.CommandSender;
import org.bukkit.entity.Entity;
import org.bukkit.entity.EntityType;
import org.bukkit.entity.LivingEntity;
Expand All @@ -29,6 +30,7 @@
import net.citizensnpcs.api.event.DespawnReason;
import net.citizensnpcs.api.event.NPCAddTraitEvent;
import net.citizensnpcs.api.event.NPCCloneEvent;
import net.citizensnpcs.api.event.NPCRemoveByCommandSenderEvent;
import net.citizensnpcs.api.event.NPCRemoveEvent;
import net.citizensnpcs.api.event.NPCRemoveTraitEvent;
import net.citizensnpcs.api.event.NPCTeleportEvent;
Expand Down Expand Up @@ -163,6 +165,12 @@ public void destroy() {
goalController.clear();
}

@Override
public void destroy(CommandSender source) {
Bukkit.getPluginManager().callEvent(new NPCRemoveByCommandSenderEvent(this, source));
destroy();
}

@Override
public boolean equals(Object obj) {
if (this == obj) {
Expand Down
9 changes: 9 additions & 0 deletions src/main/java/net/citizensnpcs/api/npc/NPC.java
Expand Up @@ -5,6 +5,7 @@
import org.bukkit.ChatColor;
import org.bukkit.Location;
import org.bukkit.block.Block;
import org.bukkit.command.CommandSender;
import org.bukkit.entity.Entity;
import org.bukkit.entity.EntityType;
import org.bukkit.entity.Minecart;
Expand Down Expand Up @@ -80,6 +81,14 @@ public interface NPC extends Agent, Cloneable {
*/
public void destroy();

/**
* Permanently removes this NPC and all data about it from the registry it's attached to.
*
* @param source
* The source of the removal
*/
public void destroy(CommandSender source);

/**
* Faces a given {@link Location} if the NPC is spawned.
*/
Expand Down

0 comments on commit a95faef

Please sign in to comment.