58 lines
1.8 KiB
Java
58 lines
1.8 KiB
Java
package net.citizensnpcs.editor;
|
|
|
|
import org.bukkit.Location;
|
|
import org.bukkit.entity.Player;
|
|
import org.bukkit.event.EventHandler;
|
|
import org.bukkit.event.player.PlayerInteractEvent;
|
|
import org.bukkit.event.player.PlayerTeleportEvent.TeleportCause;
|
|
|
|
import net.citizensnpcs.api.npc.NPC;
|
|
import net.citizensnpcs.api.util.Messaging;
|
|
import net.citizensnpcs.trait.CurrentLocation;
|
|
import net.citizensnpcs.util.Messages;
|
|
|
|
public class CopierEditor extends Editor {
|
|
private final String name;
|
|
private final NPC npc;
|
|
private final Player player;
|
|
|
|
public CopierEditor(Player player, NPC npc) {
|
|
this.player = player;
|
|
this.npc = npc;
|
|
this.name = npc.getRawName();
|
|
}
|
|
|
|
@Override
|
|
public void begin() {
|
|
Messaging.sendTr(player, Messages.COPIER_EDITOR_BEGIN);
|
|
}
|
|
|
|
@Override
|
|
public void end() {
|
|
Messaging.sendTr(player, Messages.COPIER_EDITOR_END);
|
|
}
|
|
|
|
@EventHandler
|
|
public void onBlockClick(PlayerInteractEvent event) {
|
|
if (event.getClickedBlock() == null || !event.getPlayer().equals(player))
|
|
return;
|
|
|
|
NPC copy = npc.clone();
|
|
if (!copy.getRawName().equals(name)) {
|
|
copy.setName(name);
|
|
}
|
|
|
|
if (copy.isSpawned() && player.isOnline()) {
|
|
Location location = event.getClickedBlock().getLocation();
|
|
location.setYaw(player.getLocation().getYaw());
|
|
location.setPitch(player.getLocation().getPitch());
|
|
location.getChunk().load();
|
|
copy.teleport(location, TeleportCause.PLUGIN);
|
|
copy.getOrAddTrait(CurrentLocation.class).setLocation(location);
|
|
}
|
|
|
|
Messaging.sendTr(player, Messages.NPC_COPIED, npc.getName());
|
|
event.setCancelled(true);
|
|
}
|
|
}
|