· 4 years ago · Jun 04, 2021, 10:38 PM
1/*
2 __ _ ________
3 / / ____ ____ _(_)____/ ____/ /___ _____ ___ ___
4 / / / __ \/ __ `/ / ___/ /_ / / __ `/ __ `__ \/ _ \
5 / /___/ /_/ / /_/ / / /__/ __/ / / /_/ / / / / / / __/
6/_____/\____/\__, /_/\___/_/ /_/\__,_/_/ /_/ /_/\___/ __
7 / __ \___/____/____ / /___ ____ ____ ___ ___ ____ / /_
8 / / / / _ \ | / / _ \/ / __ \/ __ \/ __ `__ \/ _ \/ __ \/ __/
9 / /_/ / __/ |/ / __/ / /_/ / /_/ / / / / / / __/ / / / /_
10/_____/\___/|___/\___/_/\____/ .___/_/ /_/ /_/\___/_/ /_/\__/
11 /_/
12*/
13package dev.logicflame.logicflame.spigot;
14
15import dev.logicflame.logicflame.spigot.Expansions.ExpansionsUtil;
16import dev.logicflame.logicflame.spigot.Inventories.testInv;
17import dev.logicflame.logicflame.spigot.commands.afkCmds.afk;
18import dev.logicflame.logicflame.spigot.commands.clearchat.ChatMute;
19import dev.logicflame.logicflame.spigot.commands.clearchat.ClearGlobalChat;
20import dev.logicflame.logicflame.spigot.commands.clearchat.ClearPrivateChat;
21import dev.logicflame.logicflame.spigot.commands.gamemode.gma;
22import dev.logicflame.logicflame.spigot.commands.gamemode.gmc;
23import dev.logicflame.logicflame.spigot.commands.gamemode.gms;
24import dev.logicflame.logicflame.spigot.commands.gamemode.gmsp;
25import dev.logicflame.logicflame.spigot.commands.givecmds.giveItem;
26import dev.logicflame.logicflame.spigot.commands.normal.lf;
27import dev.logicflame.logicflame.spigot.commands.normal.list;
28import dev.logicflame.logicflame.spigot.commands.normal.test;
29import dev.logicflame.logicflame.spigot.commands.player.*;
30import dev.logicflame.logicflame.spigot.commands.staff.*;
31import dev.logicflame.logicflame.spigot.commands.teleport.otp;
32import dev.logicflame.logicflame.spigot.commands.teleport.tp;
33import dev.logicflame.logicflame.spigot.commands.teleport.tpall;
34import dev.logicflame.logicflame.spigot.commands.teleport.tphere;
35import dev.logicflame.logicflame.spigot.commands.whitelist.whitelist;
36import dev.logicflame.logicflame.spigot.enchantments.CustomEnchants.ChunkEnchantment;
37import dev.logicflame.logicflame.spigot.enchantments.EnchantManager;
38import dev.logicflame.logicflame.spigot.listeners.*;
39import dev.logicflame.logicflame.spigot.listeners.Freeze.freezeListener;
40import dev.logicflame.logicflame.spigot.listeners.Inventory.testListener;
41import dev.logicflame.logicflame.spigot.listeners.afk.chatAFK;
42import dev.logicflame.logicflame.spigot.listeners.afk.playerLeaveAFK;
43import dev.logicflame.logicflame.spigot.listeners.afk.playerMoveAFK;
44import net.luckperms.api.LuckPerms;
45import net.luckperms.api.LuckPermsProvider;
46import org.bukkit.Bukkit;
47import org.bukkit.ChatColor;
48import org.bukkit.NamespacedKey;
49import org.bukkit.configuration.InvalidConfigurationException;
50import org.bukkit.configuration.file.FileConfiguration;
51import org.bukkit.configuration.file.YamlConfiguration;
52import org.bukkit.enchantments.Enchantment;
53import org.bukkit.entity.Player;
54import org.bukkit.event.Listener;
55import org.bukkit.plugin.RegisteredServiceProvider;
56import org.bukkit.plugin.java.JavaPlugin;
57
58import java.io.File;
59import java.io.IOException;
60import java.lang.reflect.Field;
61import java.sql.Connection;
62import java.sql.DriverManager;
63import java.sql.PreparedStatement;
64import java.sql.SQLException;
65import java.util.ArrayList;
66import java.util.HashMap;
67
68
69public final class LogicFlame extends JavaPlugin implements Listener {
70 public static LogicFlame plugin;
71 public static LogicFlame enchants;
72
73 private File messagesFile;
74 private FileConfiguration messagesConfiguration;
75
76 public ArrayList<Player> frozen;
77 public ArrayList<String> blockedactions;
78
79 private LuckPerms luckPerms;
80 public LuckPerms getLuckPerms() {
81 return luckPerms;
82 }
83
84
85 public static RegisteredServiceProvider<LuckPerms> provider = Bukkit.getServicesManager().getRegistration(LuckPerms.class);
86 public static HashMap<String, String> messageData = new HashMap<String, String>();
87
88 //Mysql
89 public static class MySQL {
90
91 public static String host = LogicFlame.plugin.getConfig().getString("Mysql.address");
92 public static String database = LogicFlame.plugin.getConfig().getString("Mysql.db_name");
93 public static String username = LogicFlame.plugin.getConfig().getString("Mysql.db_username");
94 public static String password = LogicFlame.plugin.getConfig().getString("Mysql.db_password");
95 public static Connection con;
96
97 // connect
98 public static void connect() {
99 if (!isConnected()) {
100 try {
101 con = DriverManager.getConnection("jdbc:mysql://" + host + "/" + database, username, password);
102 Bukkit.getLogger().info("[LogicFlame] \u001b[38;5;88mMySQL: \u001b[38;5;197mConnected");
103 } catch (SQLException e) {
104 e.printStackTrace();
105 }
106 }
107 }
108
109 // disconnect
110 public static void disconnect() {
111 if (isConnected()) {
112 try {
113 con.close();
114 Bukkit.getLogger().info("[LogicFlame] \u001b[38;5;88mMySQL: \u001b[38;5;197mDisconnected");
115 } catch (SQLException e) {
116 e.printStackTrace();
117 }
118 }
119 }
120
121 // isConnected
122 public static boolean isConnected() {
123 return (con == null ? false : true);
124 }
125
126 // getConnection
127 public static Connection getConnection() {
128 return con;
129 }
130 }
131
132 //Connection vars
133 public static Connection connection; //This is the variable we will use to connect to database
134
135 public static ArrayList<Enchantment> custom_enchants = new ArrayList<>();
136
137 public static EnchantManager chunkench = new ChunkEnchantment(new NamespacedKey(LogicFlame.plugin, "Chunk"));
138
139 @Override
140 public void onEnable() {
141 if (Bukkit.getPluginManager().isPluginEnabled("PlaceholderAPI")) {
142 luckPerms = LuckPermsProvider.get();
143
144 Bukkit.getPluginManager().registerEvents(this, this);
145
146 getConfig().options().copyDefaults();
147 saveDefaultConfig();
148 createMessages();
149
150 this.frozen = new ArrayList<>();
151 this.blockedactions = new ArrayList<>();
152
153 plugin = this;
154 enchants = this;
155
156
157 getLogger().info("\u001b[38;5;88mLogic\u001b[38;5;197mFlame \u001b[38;5;83mis now Enabled\n" +
158 "\u001b[38;5;88m _ _ \u001b[38;5;197m ______ _ \n" +
159 "\u001b[38;5;88m | | (_) \u001b[38;5;197m| ____| | \n" +
160 "\u001b[38;5;88m | | ___ __ _ _ ___\u001b[38;5;197m| |__ | | __ _ _ __ ___ ___ \n" +
161 "\u001b[38;5;88m | | / _ \\ / _` | |/ __\u001b[38;5;197m| __| | |/ _` | '_ ` _ \\ / _ \\\n" +
162 "\u001b[38;5;88m | |___| (_) | (_| | | (__\u001b[38;5;197m| | | | (_| | | | | | | __/\n" +
163 "\u001b[38;5;88m |______\\___/ \\__, |_|\\___\u001b[38;5;197m|_| |_|\\__,_|_| |_| |_|\\___|\n" +
164 "\u001b[38;5;88m __/ | \n" +
165 "\u001b[38;5;88m |___/ " +
166 "\n\n\u001b[38;5;87mRunning Version: \u001b[38;5;197m" + this.getDescription().getVersion() +
167 "\n\u001b[38;5;87mRunning On: \u001b[38;5;166mBukkit \u001b[38;5;14m- \u001b[38;5;197m" + Bukkit.getName() +
168 "\n\n\u001b[38;5;87mDeveloped By: \u001b[38;5;197mProDiamondYT \n"
169 );
170 //Help Cmds
171 this.getCommand("test").setExecutor(new test());
172 this.getCommand("lf").setExecutor(new lf());
173 getLogger().info("\u001b[38;5;88mLoaded Commands: \u001b[38;5;197mHelp");
174
175 //Gamemode Commands
176 this.getCommand("gmc").setExecutor(new gmc());
177 this.getCommand("gms").setExecutor(new gms());
178 this.getCommand("gma").setExecutor(new gma());
179 this.getCommand("gmsp").setExecutor(new gmsp());
180 getLogger().info("\u001b[38;5;88mLoaded Commands: \u001b[38;5;197mGamemodes");
181
182 //Player Commands
183 this.getCommand("heal").setExecutor(new heal());
184 this.getCommand("feed").setExecutor(new feed());
185 this.getCommand("fly").setExecutor(new fly());
186 this.getCommand("weather").setExecutor(new weather());
187 this.getCommand("sun").setExecutor(new sun());
188 this.getCommand("rain").setExecutor(new rain());
189 this.getCommand("storm").setExecutor(new storm());
190 this.getCommand("message").setExecutor(new message());
191 this.getCommand("reply").setExecutor(new reply());
192 this.getCommand("position").setExecutor(new position());
193 this.getCommand("flyspeed").setExecutor(new flySpeed());
194 this.getCommand("walkspeed").setExecutor(new walkSpeed());
195 getLogger().info("\u001b[38;5;88mLoaded Commands: \u001b[38;5;197mPlayer");
196
197 /* //Troll Commands
198 this.getCommand("demo").setExecutor(new DemoTroll());
199 getLogger().info("\u001b[38;5;88mLoaded Commands: \u001b[38;5;197mTroll");*/
200
201 //Staff
202 this.getCommand("list").setExecutor(new list());
203 this.getCommand("broadcast").setExecutor(new broadcast());
204 this.getCommand("announcement").setExecutor(new announcement());
205 this.getCommand("smite").setExecutor(new smite());
206 this.getCommand("kick").setExecutor(new kick());
207 this.getCommand("ban").setExecutor(new ban());
208 this.getCommand("unban").setExecutor(new unban());
209 this.getCommand("clear").setExecutor(new clear());
210 this.getCommand("otp").setExecutor(new otp());
211 this.getCommand("fireball").setExecutor(new fireball());
212 this.getCommand("sudo").setExecutor(new sudo());
213 this.getCommand("tpall").setExecutor(new tpall());
214 this.getCommand("tp").setExecutor(new tp());
215 this.getCommand("tphere").setExecutor(new tphere());
216 this.getCommand("give").setExecutor(new giveItem());
217 this.getCommand("whitelist").setExecutor(new whitelist());
218 this.getCommand("freeze").setExecutor(new freeze());
219 this.getCommand("openinv").setExecutor(new openinv());
220 this.getCommand("time").setExecutor(new time());
221 getLogger().info("\u001b[38;5;88mLoaded Commands: \u001b[38;5;197mStaff");
222
223 //Clear Chat
224 this.getCommand("clearchat").setExecutor(new ClearGlobalChat());
225 this.getCommand("clearprivatechat").setExecutor(new ClearPrivateChat());
226 this.getCommand("chatmute").setExecutor(new ChatMute());
227 getLogger().info("\u001b[38;5;88mLoaded Commands: \u001b[38;5;197mClear Chat");
228
229
230 //AFK
231 this.getCommand("afk").setExecutor(new afk());
232 getLogger().info("\u001b[38;5;88mLoaded Commands: \u001b[38;5;197mAFK");
233
234 //Register Enchantments
235 //registerEnchantment(chunkench);
236 //custom_enchants.add(chunkench);
237
238 //this.getServer().getPluginManager().registerEvents(chunkench, this);
239 //getLogger().info("\u001b[38;5;88mLoaded: \u001b[38;5;197mEnchantments");
240
241 //Listener
242 this.getServer().getPluginManager().registerEvents(new JoinEvent(), this);
243 this.getServer().getPluginManager().registerEvents(new LeaveEvent(), this);
244 this.getServer().getPluginManager().registerEvents(new ChatEvent(), this);
245 this.getServer().getPluginManager().registerEvents(new BeforeJoinEvent(), this);
246 this.getServer().getPluginManager().registerEvents(new OnKick(), this);
247 this.getServer().getPluginManager().registerEvents(new freezeListener(), this);
248 //CustomInv
249 this.getServer().getPluginManager().registerEvents(new testListener(), this);
250 //AFK events
251 this.getServer().getPluginManager().registerEvents(new chatAFK(), this);
252 this.getServer().getPluginManager().registerEvents(new playerMoveAFK(), this);
253 this.getServer().getPluginManager().registerEvents(new playerLeaveAFK(), this);
254 getLogger().info("\u001b[38;5;88mLoaded: \u001b[38;5;197mListeners");
255
256 testInv.initialise();
257
258 if(LogicFlame.plugin.getConfig().getBoolean("Mysql.enabled")){
259 MySQL.connect();
260 PreparedStatement ps = null;
261 try {
262 ps = MySQL.getConnection().prepareStatement("CREATE TABLE IF NOT EXISTS Bans (BanId INT(15) NOT NULL AUTO_INCREMENT PRIMARY KEY, username VARCHAR(100),UUID VARCHAR(100),banned BOOLEAN,reason VARCHAR(256) NOT NULL, executor VARCHAR(25))");
263 ps.executeUpdate();
264 } catch (SQLException throwables) {
265 throwables.printStackTrace();
266 }
267 }
268 getLogger().info(LogicFlame.plugin.getConfig().getBoolean("Mysql.enabled") ? "\u001b[38;5;88mMySQL: \u001b[38;5;197mEnabled" : "\u001b[38;5;88mMySQL: \u001b[38;5;197mNot Enabled" );
269
270 //Luckperms Link
271 if (provider != null) {
272 LuckPerms api = provider.getProvider();
273
274 }
275
276 new ExpansionsUtil().register();
277
278 this.blockedactions.addAll(getConfig().getStringList("block-actions"));
279
280
281 } else {
282 getLogger().info("Could not find PlaceholderAPI! This plugin is required.");
283 Bukkit.getPluginManager().disablePlugin(this);
284 }
285 }
286
287 //Color Event
288 public static String colorize(String s) {
289 return ChatColor.translateAlternateColorCodes('&', s);
290 }
291 //Registering the enchantment
292 public static void registerEnchantment(Enchantment enchantment) {
293 boolean registered = true;
294 try {
295 Field f = Enchantment.class.getDeclaredField("acceptingNew");
296 f.setAccessible(true);
297 f.set(null, true);
298 Enchantment.registerEnchantment(enchantment);
299 } catch (Exception e) {
300 registered = false;
301 e.printStackTrace();
302 }
303 if(registered){
304 // It's been registered!
305 }
306 }
307
308 //Plugin Disable MSG
309 @Override
310 public void onDisable() {
311 if(LogicFlame.plugin.getConfig().getBoolean("Mysql.enabled")){
312 MySQL.disconnect();
313 }
314 try {
315 Field byIdField = Enchantment.class.getDeclaredField("byId");
316 Field byNameField = Enchantment.class.getDeclaredField("byName");
317
318 byIdField.setAccessible(true);
319 byNameField.setAccessible(true);
320
321 @SuppressWarnings("unchecked")
322 HashMap<Integer, Enchantment> byId = (HashMap<Integer, Enchantment>) byIdField.get(null);
323 @SuppressWarnings("unchecked")
324 HashMap<String, Enchantment> byName = (HashMap<String, Enchantment>) byNameField.get(null);
325
326 /*if(byId.containsKey(id))
327 byId.remove(id);*/
328
329 for (Enchantment enchantment : custom_enchants){
330 byName.remove(enchantment.getName());
331 }
332
333
334
335 } catch (Exception ignored) { }
336
337 getLogger().info("\u001b[38;5;88mLogic\u001b[38;5;197mFlame \u001b[38;5;124mis now Disabled");
338 }
339
340 private void createMessages() {
341 messagesFile = new File(getDataFolder(), "messages.yml");
342 if (!messagesFile.exists()) {
343 messagesFile.getParentFile().mkdirs();
344 saveResource("messages.yml", false);
345 }
346
347 messagesConfiguration = new YamlConfiguration();
348 try {
349 messagesConfiguration.load(messagesFile);
350 } catch (IOException | InvalidConfigurationException e) {
351 e.printStackTrace();
352 }
353 }
354
355
356 public FileConfiguration getMessages(){
357 return this.messagesConfiguration;
358 }
359
360 public void reload(){
361 this.reloadConfig();
362 this.createMessages();
363 }
364}