2018-04-26 13:52:49 +02:00
|
|
|
/*
|
|
|
|
* Copyright (c) 2018 Jitse Boonstra
|
|
|
|
*/
|
|
|
|
|
|
|
|
package net.jitse.npclib.plugin;
|
|
|
|
|
|
|
|
import net.jitse.npclib.NPCLib;
|
|
|
|
import net.jitse.npclib.api.NPC;
|
|
|
|
import net.jitse.npclib.plugin.listeners.NPCListener;
|
|
|
|
import net.jitse.npclib.skin.MineSkinFetcher;
|
|
|
|
import org.bukkit.ChatColor;
|
|
|
|
import org.bukkit.entity.Player;
|
|
|
|
import org.bukkit.event.EventHandler;
|
|
|
|
import org.bukkit.event.Listener;
|
2018-05-14 22:09:16 +02:00
|
|
|
import org.bukkit.event.player.PlayerJoinEvent;
|
2018-04-26 13:52:49 +02:00
|
|
|
import org.bukkit.event.player.PlayerToggleSneakEvent;
|
|
|
|
import org.bukkit.plugin.java.JavaPlugin;
|
|
|
|
|
|
|
|
import java.util.Arrays;
|
|
|
|
|
|
|
|
/**
|
|
|
|
* @author Jitse Boonstra
|
|
|
|
*/
|
|
|
|
public class NPCLibPlugin extends JavaPlugin implements Listener {
|
|
|
|
|
|
|
|
private NPCLib npcLib;
|
2018-05-07 10:14:55 +02:00
|
|
|
private NPC npc;
|
2018-04-26 13:52:49 +02:00
|
|
|
|
|
|
|
@Override
|
|
|
|
public void onEnable() {
|
|
|
|
this.npcLib = new NPCLib(this);
|
|
|
|
getServer().getConsoleSender().sendMessage(ChatColor.BLUE + "[NPCLib] " + ChatColor.WHITE + "plugin enabled.");
|
|
|
|
getServer().getConsoleSender().sendMessage(ChatColor.BLUE + "[NPCLib] " +
|
|
|
|
ChatColor.GRAY + "This is a test plugin usually used for development reasons. " +
|
|
|
|
"You can spawn NPCs by pressing [shift] in game.");
|
|
|
|
|
|
|
|
|
|
|
|
getServer().getPluginManager().registerEvents(this, this);
|
|
|
|
getServer().getPluginManager().registerEvents(new NPCListener(), this);
|
|
|
|
}
|
|
|
|
|
|
|
|
@Override
|
|
|
|
public void onDisable() {
|
2018-05-08 22:59:25 +02:00
|
|
|
if (npc != null) {
|
|
|
|
npc.destroy(false);
|
|
|
|
}
|
|
|
|
|
2018-04-26 13:52:49 +02:00
|
|
|
getServer().getConsoleSender().sendMessage(ChatColor.BLUE + "[NPCLib] " + ChatColor.WHITE + "plugin disabled.");
|
|
|
|
}
|
|
|
|
|
2018-05-14 22:09:16 +02:00
|
|
|
@EventHandler
|
|
|
|
public void onPlayerJoin(PlayerJoinEvent event) {
|
|
|
|
if (npc != null) {
|
|
|
|
npc.show(event.getPlayer());
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
2018-04-26 13:52:49 +02:00
|
|
|
@EventHandler
|
|
|
|
public void onPlayerShift(PlayerToggleSneakEvent event) {
|
|
|
|
if (event.isSneaking()) {
|
|
|
|
return;
|
|
|
|
}
|
|
|
|
|
2018-05-07 10:14:55 +02:00
|
|
|
if (npc != null) {
|
|
|
|
if (npc.isActuallyShown(event.getPlayer())) {
|
|
|
|
npc.hide(event.getPlayer());
|
|
|
|
} else {
|
|
|
|
npc.show(event.getPlayer());
|
2018-04-26 13:52:49 +02:00
|
|
|
}
|
2018-05-07 10:14:55 +02:00
|
|
|
} else {
|
|
|
|
MineSkinFetcher.fetchSkinFromIdAsync(168841, skin -> {
|
|
|
|
npc = npcLib.createNPC(skin, Arrays.asList(
|
|
|
|
ChatColor.BOLD + "NPC Library", "",
|
|
|
|
"Create your own", "non-player characters",
|
|
|
|
"with the simplistic", "API of NPCLib!"
|
|
|
|
));
|
|
|
|
npc.create(event.getPlayer().getLocation());
|
|
|
|
|
|
|
|
for (Player player : getServer().getOnlinePlayers()) {
|
|
|
|
npc.show(player);
|
|
|
|
}
|
|
|
|
});
|
|
|
|
}
|
2018-04-26 13:52:49 +02:00
|
|
|
}
|
|
|
|
}
|