1+ package de .pascalpex .pexnpc ;
2+
3+ import de .pascalpex .pexnpc .events .PacketReader ;
4+ import de .pascalpex .pexnpc .events .listener .*;
5+ import de .pascalpex .pexnpc .files .Config ;
6+ import de .pascalpex .pexnpc .files .NPCData ;
7+ import de .pascalpex .pexnpc .npc .NPC ;
8+ import de .pascalpex .pexnpc .npc .NPCSender ;
9+ import de .pascalpex .pexnpc .npc .PlaceableNPC ;
10+ import de .pascalpex .pexnpc .util .MessageHandler ;
11+ import de .pascalpex .pexnpc .util .external .Metrics ;
12+ import de .pascalpex .pexnpc .util .VersionChecker ;
13+ import de .pascalpex .pexnpc .util .external .PlaceholderAPIAdapter ;
14+ import org .bukkit .Bukkit ;
15+ import org .bukkit .entity .Player ;
16+ import org .bukkit .plugin .java .JavaPlugin ;
17+
18+ import java .util .ArrayList ;
19+ import java .util .List ;
20+ import java .util .logging .Level ;
21+ import java .util .logging .Logger ;
22+
23+ public class PexNPC extends JavaPlugin {
24+
25+ private static VersionChecker versionChecker ;
26+ private static PexNPC instance ;
27+ private static Logger logger ;
28+ private static List <PlaceableNPC > placedNPCs ;
29+ private static PacketReader packetReader ;
30+ private static String pluginVersion ;
31+
32+ @ Override
33+ public void onEnable () {
34+ instance = this ;
35+ pluginVersion = getPluginMeta ().getVersion ();
36+ logger = getLogger ();
37+ placedNPCs = new ArrayList <>();
38+ packetReader = new PacketReader ();
39+ versionChecker = new VersionChecker (pluginVersion );
40+
41+ new Metrics (this , 14923 );
42+
43+ Config .load ();
44+ NPCData .load ();
45+
46+ MessageHandler .prefix = MessageHandler .parse (Config .getPrefix ());
47+ PlaceholderAPIAdapter .startup ();
48+
49+ versionChecker .clearUpdateNotified ();
50+ if (Config .getUpdateChecker ()) {
51+ versionChecker .fetchNewestVersion ();
52+ }
53+
54+ this .getServer ().getMessenger ().registerOutgoingPluginChannel (this , "BungeeCord" );
55+
56+ loadAllNPCs ();
57+
58+ for (Player player : Bukkit .getOnlinePlayers ()) {
59+ try {
60+ packetReader .inject (player );
61+ } catch (NoSuchFieldException | IllegalAccessException e ) {
62+ logger .log (Level .SEVERE , "Could not inject the PacketReader!" );
63+ }
64+ }
65+
66+ // Listeners
67+ this .getServer ().getPluginManager ().registerEvents (new JoinEventListener (), this );
68+ this .getServer ().getPluginManager ().registerEvents (new QuitEventListener (), this );
69+ this .getServer ().getPluginManager ().registerEvents (new NPCClickListener (), this );
70+ this .getServer ().getPluginManager ().registerEvents (new TeleportEventListener (), this );
71+ this .getServer ().getPluginManager ().registerEvents (new RespawnEventListener (), this );
72+
73+ Bukkit .getConsoleSender ().sendMessage (MessageHandler .prefixedMini ("<green>PexNPC " + pluginVersion + " von Pascalpex wurde aktiviert." ));
74+ }
75+
76+ @ Override
77+ public void onDisable () {
78+ for (Player player : Bukkit .getOnlinePlayers ()) {
79+ packetReader .uninject (player );
80+ }
81+ NPCSender .removeEverything ();
82+ placedNPCs .clear ();
83+
84+ this .getServer ().getMessenger ().unregisterOutgoingPluginChannel (this );
85+ Bukkit .getConsoleSender ().sendMessage (MessageHandler .prefixedMini ("<red>PexNPC " + pluginVersion + " von Pascalpex wurde deaktiviert." ));
86+ }
87+
88+ public static PexNPC getInstance () {
89+ return instance ;
90+ }
91+
92+ public static Logger logger () {
93+ return logger ;
94+ }
95+
96+ public static List <PlaceableNPC > getPlacedNpcs () {
97+ return placedNPCs ;
98+ }
99+
100+ public static VersionChecker getVersionChecker () {
101+ return versionChecker ;
102+ }
103+
104+ public static PacketReader getPacketReader () {
105+ return packetReader ;
106+ }
107+
108+ public static PlaceableNPC findNPCbyMinecraftID (int id ) {
109+ for (PlaceableNPC placeableNPC : PexNPC .getPlacedNpcs ()) {
110+ if (placeableNPC .getServerPlayer ().getId () == id ) {
111+ return placeableNPC ;
112+ }
113+ }
114+ return null ;
115+ }
116+
117+ private static void loadAllNPCs () {
118+ List <NPC > npcs = NPCData .getAllNpcs ();
119+ for (NPC npc : npcs ) {
120+ PlaceableNPC placeableNPC = new PlaceableNPC (npc );
121+ NPCSender .sendNpcToPlayers (placeableNPC );
122+ placedNPCs .add (placeableNPC );
123+ }
124+ }
125+ }
0 commit comments