· 8 years ago · Jan 18, 2018, 03:14 AM
1package yona168.sirro.Sirrosserver;
2
3import java.sql.Connection;
4import java.sql.DriverManager;
5import java.sql.SQLException;
6import java.sql.Statement;
7import java.util.logging.Logger;
8
9import org.bukkit.configuration.file.FileConfiguration;
10import org.bukkit.permissions.Permission;
11import org.bukkit.plugin.PluginDescriptionFile;
12import org.bukkit.plugin.PluginManager;
13import org.bukkit.plugin.java.JavaPlugin;
14
15import yona168.sirro.Sirrosserver.commands.GiveRegistrationSlip;
16import yona168.sirro.Sirrosserver.commands.GiveSoul;
17import yona168.sirro.Sirrosserver.commands.GiveTransportShovel;
18import yona168.sirro.Sirrosserver.events.other.MobDropSoul;
19import yona168.sirro.Sirrosserver.events.other.ProjectileHit;
20import yona168.sirro.Sirrosserver.events.other.TryToUseSoul;
21import yona168.sirro.Sirrosserver.events.other.onDollyDamage;
22import yona168.sirro.Sirrosserver.events.other.onDollyDespawnation;
23import yona168.sirro.Sirrosserver.events.other.onMobSpawnFromSpawner;
24import yona168.sirro.Sirrosserver.events.player.ClickMobSpawner;
25import yona168.sirro.Sirrosserver.events.player.UseDollyAsShovel;
26import yona168.sirro.Sirrosserver.events.player.onPlayerBreakCustomSpawner;
27import yona168.sirro.Sirrosserver.events.player.onPlayerClickSpawnerWithDolly;
28import yona168.sirro.Sirrosserver.events.player.onPlayerPlaceSpawner;
29import yona168.sirro.Sirrosserver.events.player.onPlayerUseCustomSpawnerGUI;
30
31public class ProjectileEntities extends JavaPlugin {
32 private ProjectileEntities plugin = this;
33 private static Connection connection;
34 protected String host, username, database, password;
35 protected int port;
36 private FileConfiguration config;
37 private Statement statement;
38
39 public void onEnable() {
40 Logger logger = getLogger();
41
42 registerConfig();
43 logger.info("Config Registered");
44 PluginManager pm = getServer().getPluginManager();
45 PluginDescriptionFile pdFile = getDescription();
46 config = this.getConfig();
47 logger.info("Setting up MySQL Things...");
48 host = config.getString("mySQL.host");
49 port = config.getInt("mySQL.port");
50 username = config.getString("mySQL.username");
51 database = config.getString("mySQL.database");
52 password = config.getString("mySQL.password");
53 logger.info("Opening connection...");
54 try {
55 if (connection != null && !connection.isClosed()) {
56 return;
57 }
58
59 synchronized (plugin) {
60 if (connection != null && !connection.isClosed()) {
61 return;
62 }
63 Class.forName("com.mysql.jdbc.Driver");
64 connection = DriverManager.getConnection("jdbc:mysql://localhost:" + port + "/" + database, username,
65 password);
66 }
67
68 statement = connection.createStatement();
69 logger.info("Connection Opened! Statement Created.");
70 } catch (ClassNotFoundException e) {
71
72 e.printStackTrace();
73 } catch (SQLException e) {
74
75 e.printStackTrace();
76 }
77
78 logger.info("Table Things...");
79 try {
80 createUnexistingTables(statement);
81 logger.info("Tables Created!");
82 statement.close();
83 } catch (SQLException e) {
84
85 e.printStackTrace();
86 }
87 registerEvents(pm);
88 registerPermissions(pm);
89 registerCommands();
90 logger.info(pdFile.getName() + "Has been successfuly enabled. No small, furry animals were harmed.");
91 System.out.println("Version of this plugin: " + pdFile.getVersion());
92
93 }
94
95 public void onDisable() {
96 PluginDescriptionFile pdFile = getDescription();
97 Logger logger = getLogger();
98 this.saveConfig();
99 logger.info("Config file saved!");
100 try {
101 connection.close();
102 } catch (SQLException e) {
103
104 e.printStackTrace();
105 }
106 logger.info(pdFile.getName() + "Has been successfuly disabled. No small, furry animals were harmed.");
107 System.out.println("Version of this plugin: " + pdFile.getVersion());
108 }
109
110 public void registerCommands() {
111 getCommand("mssoul").setExecutor(new GiveSoul());
112 getCommand("msshovel").setExecutor(new GiveTransportShovel());
113 getCommand("msslip").setExecutor(new GiveRegistrationSlip());
114 }
115
116 public void registerEvents(PluginManager pm) {
117 pm.registerEvents(new ProjectileHit(this), this);
118 pm.registerEvents(new onPlayerClickSpawnerWithDolly(this), this);
119 pm.registerEvents(new ClickMobSpawner(this), this);
120 pm.registerEvents(new onPlayerPlaceSpawner(this), this);
121 pm.registerEvents(new onPlayerUseCustomSpawnerGUI(this), this);
122 pm.registerEvents(new onMobSpawnFromSpawner(this), this);
123 pm.registerEvents(new onDollyDespawnation(this), this);
124 pm.registerEvents(new onDollyDamage(this), this);
125 pm.registerEvents(new onPlayerBreakCustomSpawner(this), this);
126 pm.registerEvents(new MobDropSoul(this), this);
127 pm.registerEvents(new TryToUseSoul(), this);
128 pm.registerEvents(new UseDollyAsShovel(), this);
129
130 }
131
132 private void registerConfig() {
133
134 this.getConfig().options().copyDefaults(true);
135 this.saveDefaultConfig();
136
137 }
138
139 private void createUnexistingTables(Statement statement) throws SQLException {
140 statement.executeUpdate(
141 "CREATE TABLE IF NOT EXISTS masterTable(ID BIGINT, WORLD TINYTEXT, LOCATIONX MEDIUMINT, LOCATIONY MEDIUMINT, LOCATIONZ MEDIUMINT, TYPE TINYTEXT, SPEED TINYINT, OWNERUUID CHAR(40))");
142 statement.close();
143 }
144
145 public void registerPermissions(PluginManager pm) {
146 Permission canRegisterSpawner = new Permission("mobsouls.canregister");
147 Permission giveSoul = new Permission("mobsouls.commands.givesoul");
148 Permission giveShovel = new Permission("mobsouls.commands.givetransportshovel");
149 Permission giveSlip = new Permission("mobsouls.commands.giveregistrationslip");
150
151 pm.addPermission(canRegisterSpawner);
152 pm.addPermission(giveSoul);
153 pm.addPermission(giveShovel);
154 pm.addPermission(giveSlip);
155 }
156
157 public Connection getConnection() {
158 return connection;
159 }
160
161 public ProjectileEntities getInstance() {
162 return this;
163 }
164
165}