From b1c501b44d775e0337ab006c840dafeac5f57178 Mon Sep 17 00:00:00 2001 From: ImproperIssues <114215797+ItziSpyder@users.noreply.github.com> Date: Mon, 5 Dec 2022 15:38:48 -0800 Subject: [PATCH] Add files via upload --- ExplosionsControl.jar | Bin 0 -> 16569 bytes main/java/META-INF/MANIFEST.MF | 3 + .../explosionscontrol/ExplosionsControl.java | 65 ++++ .../explosionscontrol/commands/Commands.java | 83 +++++ .../explosionscontrol/events/Explosions.java | 249 +++++++++++++++ .../explosionscontrol/events/ToggleMenu.java | 302 ++++++++++++++++++ .../explosionscontrol/other/Messages.java | 34 ++ main/resources/config.yml | 3 + main/resources/plugin.yml | 23 ++ 9 files changed, 762 insertions(+) create mode 100644 ExplosionsControl.jar create mode 100644 main/java/META-INF/MANIFEST.MF create mode 100644 main/java/me/itzispyder/explosionscontrol/ExplosionsControl.java create mode 100644 main/java/me/itzispyder/explosionscontrol/commands/Commands.java create mode 100644 main/java/me/itzispyder/explosionscontrol/events/Explosions.java create mode 100644 main/java/me/itzispyder/explosionscontrol/events/ToggleMenu.java create mode 100644 main/java/me/itzispyder/explosionscontrol/other/Messages.java create mode 100644 main/resources/config.yml create mode 100644 main/resources/plugin.yml diff --git a/ExplosionsControl.jar b/ExplosionsControl.jar new file mode 100644 index 0000000000000000000000000000000000000000..b95553d9915c4961b21cb706d46f470391d41183 GIT binary patch literal 16569 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 worlds = getConfig().getStringList("server.worlds"); + for (World world : Bukkit.getServer().getWorlds()) { + if (!getConfig().getStringList("server.worlds").contains(world.getName())) { + worlds.add(world.getName()); + } + } + getConfig().set("server.worlds",worlds); + saveConfig(); + + // Commands + getCommand("loadworlds").setExecutor(new Commands(this)); + getCommand("explosions").setExecutor(new Commands(this)); + getCommand("explosionscontrol").setExecutor(new Commands(this)); + + // Events + getServer().getPluginManager().registerEvents(new ToggleMenu(this),this); + getServer().getPluginManager().registerEvents(new Explosions(this),this); + + // Items + ToggleMenu.setX(); + ToggleMenu.setY(); + ToggleMenu.setZ(); + ToggleMenu.setClose(); + ToggleMenu.setBack(); + ToggleMenu.setReload(); + + + } + + @Override + public void onDisable() { + // Plugin shutdown logic + for (Player player : Bukkit.getOnlinePlayers()) { + player.sendMessage(Messages.starter + "6Explosion control §cdisabled."); + } + + } + + +} diff --git a/main/java/me/itzispyder/explosionscontrol/commands/Commands.java b/main/java/me/itzispyder/explosionscontrol/commands/Commands.java new file mode 100644 index 0000000..3629b34 --- /dev/null +++ b/main/java/me/itzispyder/explosionscontrol/commands/Commands.java @@ -0,0 +1,83 @@ +package me.itzispyder.explosionscontrol.commands; + +import me.itzispyder.explosionscontrol.ExplosionsControl; +import me.itzispyder.explosionscontrol.events.ToggleMenu; +import me.itzispyder.explosionscontrol.other.Messages; +import org.bukkit.Bukkit; +import org.bukkit.World; +import org.bukkit.command.Command; +import org.bukkit.command.CommandExecutor; +import org.bukkit.command.CommandSender; +import org.bukkit.entity.Player; + +import java.util.List; + +public class Commands implements CommandExecutor { + + // instance of the main class + static ExplosionsControl plugin; + public Commands(ExplosionsControl plugin) { + this.plugin = plugin; + } + + // commands + @Override + public boolean onCommand(CommandSender sender, Command command, String label, String[] args) { + switch (command.getName()) { + case "explosions": + if (sender instanceof Player) { + Player p = (Player) sender; + ToggleMenu.openExplosionsMenu(p); + } + break; + case "explosionscontrol": + if (sender instanceof Player) { + Player p = (Player) sender; + p.sendMessage( + " \n" + Messages.starter + + "\n §6Plugin version: §ev1.0" + + "\n §6Minimum version: §emc1.17.1" + + "\n §6Author: §eItziSpyder" + + "\n §6Idea credit: §eTheTelly" + + "\n §6Description: §eControl world explosions! Custom worlds supported!" + + "\n §6Plugin commands:" + + "\n §e-explosions" + + "\n §e-explosionscontrol" + + "\n §e-loadworlds \n " + ); + } + break; + case "loadworlds": + List worlds = plugin.getConfig().getStringList("server.worlds"); + for (World world : Bukkit.getServer().getWorlds()) { + if (!plugin.getConfig().getStringList("server.worlds").contains(world.getName())) { + worlds.add(world.getName()); + } + } + + Bukkit.getServer().getLogger().info("Saving world configurations to plugin config..."); + if (sender instanceof Player) { + Player p = (Player) sender; + p.sendMessage(Messages.starter + "§6Saving world configurations to plugin config..."); + } + plugin.getConfig().set("server.worlds",worlds); + plugin.saveConfig(); + Bukkit.getServer().getLogger().info("Saved world configurations!"); + if (sender instanceof Player) { + Player p = (Player) sender; + p.sendMessage(Messages.starter + "§6Saved world configurations!"); + } + + + if (sender instanceof Player) { + Player p = (Player) sender; + p.sendMessage(Messages.starter + "§6Successfully loaded all server worlds!"); + for (String world : worlds) { + p.sendMessage(" §7-§e" + world); + } + } + break; + } + return true; + } +} diff --git a/main/java/me/itzispyder/explosionscontrol/events/Explosions.java b/main/java/me/itzispyder/explosionscontrol/events/Explosions.java new file mode 100644 index 0000000..c87b0d6 --- /dev/null +++ b/main/java/me/itzispyder/explosionscontrol/events/Explosions.java @@ -0,0 +1,249 @@ +package me.itzispyder.explosionscontrol.events; + +import com.google.common.io.BaseEncoding; +import me.itzispyder.explosionscontrol.ExplosionsControl; +import me.itzispyder.explosionscontrol.other.Messages; +import org.bukkit.*; +import org.bukkit.block.Block; +import org.bukkit.entity.AreaEffectCloud; +import org.bukkit.entity.Entity; +import org.bukkit.entity.FallingBlock; +import org.bukkit.entity.Player; +import org.bukkit.event.EventHandler; +import org.bukkit.event.Listener; +import org.bukkit.event.block.BlockExplodeEvent; +import org.bukkit.event.entity.EntityDamageByEntityEvent; +import org.bukkit.event.entity.EntityDamageEvent; +import org.bukkit.event.entity.EntityExplodeEvent; +import org.bukkit.event.player.PlayerQuitEvent; +import org.bukkit.plugin.IllegalPluginAccessException; +import org.bukkit.util.Vector; + +import java.util.List; + +public class Explosions implements Listener { + + // instance of the main class + static ExplosionsControl plugin; + public Explosions(ExplosionsControl plugin) { + this.plugin = plugin; + } + + // Events + @EventHandler + public static void OnEntityExplode(EntityExplodeEvent e) { + Entity entity = e.getEntity(); + Location location = entity.getLocation(); + World world = location.getWorld(); + + try { + switch (entity.getType()) { + case PRIMED_TNT: + switch (plugin.getConfig().getString("server.explosions." + world.getName() + ".tnt")) { + case "off": + e.setCancelled(true); + fakeExplode(location); + break; + case "none": + e.setCancelled(true); + break; + case "dynamic": + List blocks = e.blockList(); + for (Block block : blocks) { + FallingBlock fb = block.getWorld().spawnFallingBlock(block.getLocation(),block.getType(),block.getData()); + fb.setVelocity(new Vector(Math.random(),Math.random(),Math.random())); + } + break; + } + break; + case MINECART_TNT: + switch (plugin.getConfig().getString("server.explosions." + world.getName() + ".tnt_minecart")) { + case "off": + e.setCancelled(true); + fakeExplode(location); + break; + case "none": + e.setCancelled(true); + break; + case "dynamic": + List blocks = e.blockList(); + for (Block block : blocks) { + FallingBlock fb = block.getWorld().spawnFallingBlock(block.getLocation(),block.getType(),block.getData()); + fb.setVelocity(new Vector(Math.random(),Math.random(),Math.random())); + } + break; + } + break; + case ENDER_CRYSTAL: + switch (plugin.getConfig().getString("server.explosions." + world.getName() + ".end_crystal")) { + case "off": + e.setCancelled(true); + fakeExplode(location); + break; + case "none": + e.setCancelled(true); + break; + case "dynamic": + List blocks = e.blockList(); + for (Block block : blocks) { + FallingBlock fb = block.getWorld().spawnFallingBlock(block.getLocation(),block.getType(),block.getData()); + fb.setVelocity(new Vector(Math.random(),Math.random(),Math.random())); + } + break; + } + break; + case CREEPER: + switch (plugin.getConfig().getString("server.explosions." + world.getName() + ".creeper_head")) { + case "off": + e.setCancelled(true); + fakeExplode(location); + break; + case "none": + e.setCancelled(true); + break; + case "dynamic": + List blocks = e.blockList(); + for (Block block : blocks) { + FallingBlock fb = block.getWorld().spawnFallingBlock(block.getLocation(),block.getType(),block.getData()); + fb.setVelocity(new Vector(Math.random(),Math.random(),Math.random())); + } + break; + } + break; + case FIREBALL: + switch (plugin.getConfig().getString("server.explosions." + world.getName() + ".fire_charge")) { + case "off": + e.setCancelled(true); + fakeExplode(location); + break; + case "none": + e.setCancelled(true); + break; + case "dynamic": + List blocks = e.blockList(); + for (Block block : blocks) { + FallingBlock fb = block.getWorld().spawnFallingBlock(block.getLocation(),block.getType(),block.getData()); + fb.setVelocity(new Vector(Math.random(),Math.random(),Math.random())); + } + break; + } + break; + case WITHER_SKULL: + switch (plugin.getConfig().getString("server.explosions." + world.getName() + ".wither_skeleton_skull")) { + case "off": + e.setCancelled(true); + fakeExplode(location); + break; + case "none": + e.setCancelled(true); + break; + case "dynamic": + List blocks = e.blockList(); + for (Block block : blocks) { + FallingBlock fb = block.getWorld().spawnFallingBlock(block.getLocation(),block.getType(),block.getData()); + fb.setVelocity(new Vector(Math.random(),Math.random(),Math.random())); + } + break; + } + break; + } + } catch (NullPointerException exception) { + Bukkit.getServer().getLogger().info("An explosion occurred in " + location.getWorld() + " @:" + location.getX() + "," + location.getY() + "," + location.getZ() + "! Config this in the menu to disable this message! /explosions"); + } + } + + @EventHandler + public static void OnBlockExplode(BlockExplodeEvent e) { + Block block = e.getBlock(); + Location location = block.getLocation(); + World world = location.getWorld(); + + try { + switch (plugin.getConfig().getString("server.explosions." + world.getName() + ".respawn_anchor")) { + case "off": + e.setCancelled(true); + fakeExplode(location); + break; + case "none": + e.setCancelled(true); + break; + case "dynamic": + List blocks = e.blockList(); + for (Block exBlock : blocks) { + FallingBlock fb = exBlock.getWorld().spawnFallingBlock(exBlock.getLocation(),exBlock.getType(),exBlock.getData()); + fb.setVelocity(new Vector(Math.random(),Math.random(),Math.random())); + } + break; + } + } catch (NullPointerException exception) { + Bukkit.getServer().getLogger().info("An explosion occurred in " + location.getWorld() + " @:" + location.getX() + "," + location.getY() + "," + location.getZ() + "! Config this in the menu to disable this message! /explosions"); + } + } + + @EventHandler + public static void EntityDamageEvent(EntityDamageEvent e) { + Entity entity = e.getEntity(); + Location location = entity.getLocation(); + World world = location.getWorld(); + + if (e.getCause().equals(EntityDamageEvent.DamageCause.BLOCK_EXPLOSION)) { + if (plugin.getConfig().getString("server.explosions." + world.getName() + ".respawn_anchor").equalsIgnoreCase("none")) { + e.setCancelled(true); + } + } + } + + @EventHandler + public static void EntityDamageByEntityEvent(EntityDamageByEntityEvent e) { + Entity entity = e.getEntity(); + Entity damager = e.getDamager(); + Location location = entity.getLocation(); + World world = location.getWorld(); + + switch (damager.getType()) { + case PRIMED_TNT: + if (plugin.getConfig().getString("server.explosions." + world.getName() + ".tnt").equalsIgnoreCase("none")) { + e.setCancelled(true); + } + break; + case MINECART_TNT: + if (plugin.getConfig().getString("server.explosions." + world.getName() + ".tnt_minecart").equalsIgnoreCase("none")) { + e.setCancelled(true); + } + break; + case ENDER_CRYSTAL: + if (plugin.getConfig().getString("server.explosions." + world.getName() + ".end_crystal").equalsIgnoreCase("none")) { + e.setCancelled(true); + } + break; + case CREEPER: + if (plugin.getConfig().getString("server.explosions." + world.getName() + ".creeper_head").equalsIgnoreCase("none")) { + e.setCancelled(true); + } + break; + case FIREBALL: + if (plugin.getConfig().getString("server.explosions." + world.getName() + ".fire_charge").equalsIgnoreCase("none")) { + e.setCancelled(true); + } + break; + case WITHER_SKULL: + if (plugin.getConfig().getString("server.explosions." + world.getName() + ".wither_skeleton_skull").equalsIgnoreCase("none")) { + e.setCancelled(true); + } + break; + } + } + + // Methods + public static void fakeExplode(Location location) { + for (Player player : Bukkit.getOnlinePlayers()) { + if (player != null && player.getWorld() == location.getWorld() && player.getLocation().distanceSquared(location) < 1000) { + player.playSound(location, Sound.ENTITY_GENERIC_EXPLODE,10,0.8F); + } + } + location.getWorld().spawnParticle(Particle.EXPLOSION_LARGE,location,1,1,1,1,0); + location.getWorld().spawnParticle(Particle.EXPLOSION_HUGE,location,1,1,1,1,0); + location.getWorld().spawnParticle(Particle.EXPLOSION_NORMAL,location,5,1,1,1,0); + } + +} diff --git a/main/java/me/itzispyder/explosionscontrol/events/ToggleMenu.java b/main/java/me/itzispyder/explosionscontrol/events/ToggleMenu.java new file mode 100644 index 0000000..7a75eb2 --- /dev/null +++ b/main/java/me/itzispyder/explosionscontrol/events/ToggleMenu.java @@ -0,0 +1,302 @@ +package me.itzispyder.explosionscontrol.events; + +import me.itzispyder.explosionscontrol.ExplosionsControl; +import me.itzispyder.explosionscontrol.other.Messages; +import org.bukkit.Bukkit; +import org.bukkit.Material; +import org.bukkit.Sound; +import org.bukkit.World; +import org.bukkit.entity.Player; +import org.bukkit.event.EventHandler; +import org.bukkit.event.Listener; +import org.bukkit.event.inventory.InventoryClickEvent; +import org.bukkit.event.inventory.InventoryType; +import org.bukkit.inventory.Inventory; +import org.bukkit.inventory.ItemStack; +import org.bukkit.inventory.meta.ItemMeta; + +import java.util.ArrayList; +import java.util.List; + +public class ToggleMenu implements Listener { + + + // instance of the main class + static ExplosionsControl plugin; + public ToggleMenu(ExplosionsControl plugin) { + this.plugin = plugin; + } + + // Events + @EventHandler + public static void InventoryClickEvent(InventoryClickEvent e) { + Player p = (Player) e.getWhoClicked(); + String title = e.getView().getTitle(); + Inventory inv = e.getClickedInventory(); + + if (title.contains(Messages.starter) && !inv.getType().equals(InventoryType.PLAYER)) { + e.setCancelled(true); + + try { + ItemStack item = e.getCurrentItem(); + ItemMeta meta = item.getItemMeta(); + List lore = meta.getLore(); + String display = meta.getDisplayName(); + + if (!display.equalsIgnoreCase(" ")) { + p.playSound(p.getLocation(), Sound.UI_BUTTON_CLICK,1,10); + + if (display.equalsIgnoreCase("§c§l§oClose")) { + p.closeInventory(); + } else if (display.equalsIgnoreCase("§b§l§oReload")) { + List worlds = plugin.getConfig().getStringList("server.worlds"); + for (World world : Bukkit.getServer().getWorlds()) { + if (!plugin.getConfig().getStringList("server.worlds").contains(world.getName())) { + worlds.add(world.getName()); + } + } + + plugin.getConfig().set("server.worlds",worlds); + plugin.saveConfig(); + + p.closeInventory(); + openExplosionsMenu(p); + } else if (display.equalsIgnoreCase("§7§l§oBack")) { + openExplosionsMenu(p); + } else if (item.getType().equals(Material.OAK_SIGN)){ + if (p.isOp()) { + configWorld(item,p); + } else { + p.playSound(p.getLocation(),Sound.ENTITY_SHULKER_TELEPORT,1,10); + Messages.send(p, Messages.noPerms); + } + } + } + + if (title.contains("§6Editing...")) { + if (!display.equalsIgnoreCase(" ")) { + String substring = display.substring(0, display.length() - 3); + String worldname = inv.getItem(0).getItemMeta().getDisplayName().substring(2); + switch (display.substring(display.length() - 3)) { + case "§a✔": + meta.setDisplayName(substring + "§c✕"); + item.setItemMeta(meta); + plugin.getConfig().set("server.explosions." + worldname + "." + item.getType().name().toLowerCase(),"off"); + plugin.saveConfig(); + break; + case "§c✕": + meta.setDisplayName(substring + "§4▼"); + item.setItemMeta(meta); + plugin.getConfig().set("server.explosions." + worldname + "." + item.getType().name().toLowerCase(),"none"); + plugin.saveConfig(); + break; + case "§4▼": + meta.setDisplayName(substring + "§6☀"); + item.setItemMeta(meta); + plugin.getConfig().set("server.explosions." + worldname + "." + item.getType().name().toLowerCase(),"dynamic"); + plugin.saveConfig(); + break; + case "§6☀": + meta.setDisplayName(substring + "§a✔"); + item.setItemMeta(meta); + plugin.getConfig().set("server.explosions." + worldname + "." + item.getType().name().toLowerCase(),"on"); + plugin.saveConfig(); + break; + } + } + } + + // end of menus list + } catch (NullPointerException exception) { + // empty + } + } + + // end of click events + } + + // Methods + public static void configWorld(ItemStack item, Player player) { + Inventory menu = Bukkit.createInventory(player,36, Messages.starter + "6Editing..."); + String worldname = item.getItemMeta().getDisplayName().substring(2); + + ItemMeta itemMeta = item.getItemMeta(); + List lore = new ArrayList<>(); + lore.add("§a✔ §7= §oDefault/Enabled"); + lore.add("§c✕ §7= §oDisabled"); + lore.add("§4▼ §7= §oNone"); + lore.add("§6☀ §7= §oDynamic §cNOT RECOMMENDED ON LOW END SERVERS"); + itemMeta.setLore(lore); + item.setItemMeta(itemMeta); + + ItemStack tnt = new ItemStack(Material.TNT); + ItemMeta tntM = tnt.getItemMeta(); + tntM.setDisplayName("§6TNT: " + getExplosionMode(worldname,"tnt")); + tnt.setItemMeta(tntM); + + ItemStack minecart = new ItemStack(Material.TNT_MINECART); + ItemMeta minecartM = minecart.getItemMeta(); + minecartM.setDisplayName("§6TNT Mincart: " + getExplosionMode(worldname,"tnt_minecart")); + minecart.setItemMeta(minecartM); + + ItemStack crystal = new ItemStack(Material.END_CRYSTAL); + ItemMeta crystalM = crystal.getItemMeta(); + crystalM.setDisplayName("§6End Crystal: " + getExplosionMode(worldname,"end_crystal")); + crystal.setItemMeta(crystalM); + + ItemStack anchor = new ItemStack(Material.RESPAWN_ANCHOR); + ItemMeta anchorM = anchor.getItemMeta(); + anchorM.setDisplayName("§6All Block Explosions: " + getExplosionMode(worldname,"respawn_anchor")); + anchor.setItemMeta(anchorM); + + ItemStack creeper = new ItemStack(Material.CREEPER_HEAD); + ItemMeta creeperM = creeper.getItemMeta(); + creeperM.setDisplayName("§6Creepers: " + getExplosionMode(worldname,"creeper_head")); + creeper.setItemMeta(creeperM); + + ItemStack fireball = new ItemStack(Material.FIRE_CHARGE); + ItemMeta fireballM = fireball.getItemMeta(); + fireballM.setDisplayName("§6Fireballs: " + getExplosionMode(worldname,"fire_charge")); + fireball.setItemMeta(fireballM); + + ItemStack wither = new ItemStack(Material.WITHER_SKELETON_SKULL); + ItemMeta witherM = wither.getItemMeta(); + witherM.setDisplayName("§6Wither Skulls: " + getExplosionMode(worldname,"wither_skeleton_skull")); + wither.setItemMeta(witherM); + + ItemStack[] contents = { + item,y,y,y,y,y,y,back,close, + z,z,z,z,z,z,z,z,z, + tnt,minecart,crystal,anchor,creeper,fireball,wither,x,x, + x,x,x,x,x,x,x,x,x + }; + + menu.setContents(contents); + player.openInventory(menu); + } + + public static void openExplosionsMenu(Player player) { + Inventory menu = Bukkit.createInventory(player,54, Messages.starter + "6v1.0"); + List worlds = plugin.getConfig().getStringList("server.worlds"); + + ItemStack[] top = { + y,y,y,y,y,y,y,reload,close, + z,z,z,z,z,z,z,z,z, + }; + menu.setContents(top); + + for (String world : worlds) { + ItemStack item = new ItemStack(Material.OAK_SIGN); + ItemMeta meta = item.getItemMeta(); + + meta.setDisplayName("§6" + world); + List lore = new ArrayList<>(); + lore.add("§8§o(Click to config)"); + meta.setLore(lore); + + item.setItemMeta(meta); + menu.setItem(menu.firstEmpty(), item); + } + + fillEmpty(menu); + player.openInventory(menu); + + } + + public static void fillEmpty(Inventory inventory) { + while (inventory.firstEmpty() != -1) { + inventory.setItem(inventory.firstEmpty(),x); + } + } + + public static String getExplosionMode(String world, String explosionSource) { + String source = plugin.getConfig().getString("server.explosions." + world + "." + explosionSource); + + if (source != null) { + switch (source) { + case "on": + return "§a✔"; + case "off": + return "§c✕"; + case "none": + return "§4▼"; + case "dynamic": + return "§6☀"; + } + } else { + plugin.getConfig().set("server.explosions." + world + "." + explosionSource,"on"); + plugin.saveConfig(); + return "§a✔"; + } + + return "§a✔"; + } + + // Items + public static ItemStack x; + public static ItemStack y; + public static ItemStack z; + public static ItemStack close; + public static ItemStack back; + public static ItemStack reload; + + public static void setX() { + ItemStack item = new ItemStack(Material.LIGHT_GRAY_STAINED_GLASS_PANE); + ItemMeta meta = item.getItemMeta(); + + meta.setDisplayName(" "); + + item.setItemMeta(meta); + x = item; + } + + public static void setY() { + ItemStack item = new ItemStack(Material.ORANGE_STAINED_GLASS_PANE); + ItemMeta meta = item.getItemMeta(); + + meta.setDisplayName(" "); + + item.setItemMeta(meta); + y = item; + } + + public static void setZ() { + ItemStack item = new ItemStack(Material.BLACK_STAINED_GLASS_PANE); + ItemMeta meta = item.getItemMeta(); + + meta.setDisplayName(" "); + + item.setItemMeta(meta); + z = item; + } + + public static void setClose() { + ItemStack item = new ItemStack(Material.BARRIER); + ItemMeta meta = item.getItemMeta(); + + meta.setDisplayName("§c§l§oClose"); + + item.setItemMeta(meta); + close = item; + } + + public static void setBack() { + ItemStack item = new ItemStack(Material.ARROW); + ItemMeta meta = item.getItemMeta(); + + meta.setDisplayName("§7§l§oBack"); + + item.setItemMeta(meta); + back = item; + } + + public static void setReload() { + ItemStack item = new ItemStack(Material.COMPASS); + ItemMeta meta = item.getItemMeta(); + + meta.setDisplayName("§b§l§oReload"); + + item.setItemMeta(meta); + reload = item; + } +} diff --git a/main/java/me/itzispyder/explosionscontrol/other/Messages.java b/main/java/me/itzispyder/explosionscontrol/other/Messages.java new file mode 100644 index 0000000..7326df4 --- /dev/null +++ b/main/java/me/itzispyder/explosionscontrol/other/Messages.java @@ -0,0 +1,34 @@ +package me.itzispyder.explosionscontrol.other; + +import org.bukkit.Bukkit; +import org.bukkit.entity.Player; + +import java.util.HashMap; + +public class Messages { + // § + static HashMap messageCooldown = new HashMap<>(); + + public static String starter = "§8[§eExplosions§6Control§8] §"; + public static String noPerms = starter + "4Sorry, but I'm afraid you do not have access to that!"; + public static String cannotUse = starter + "4Sorry, but I'm afraid you cannot do this here!"; + + + public static void send(Player player, String message) { + if (messageCooldown.containsKey(player.getName()) && messageCooldown.get(player.getName()) > System.currentTimeMillis()) { + // empty + } else { + messageCooldown.put(player.getName(),System.currentTimeMillis() + (1000)); + player.sendMessage(message); + } + } + + public static void bm(String message) { + if (messageCooldown.containsKey("everyone") && messageCooldown.get("everyone") > System.currentTimeMillis()) { + // empty + } else { + messageCooldown.put("everyone",System.currentTimeMillis() + (1000)); + Bukkit.getServer().broadcastMessage(message); + } + } +} diff --git a/main/resources/config.yml b/main/resources/config.yml new file mode 100644 index 0000000..a2dfca1 --- /dev/null +++ b/main/resources/config.yml @@ -0,0 +1,3 @@ +server: + worlds: + explosions: diff --git a/main/resources/plugin.yml b/main/resources/plugin.yml new file mode 100644 index 0000000..d223e77 --- /dev/null +++ b/main/resources/plugin.yml @@ -0,0 +1,23 @@ +name: ExplosionsControl +version: '${project.version}' +main: me.itzispyder.explosionscontrol.ExplosionsControl +api-version: 1.17 +authors: [ ItziSpyder ] +description: Control the explosions in your server! +website: https://github.com/ItziSpyder +commands: + explosions: + description: Controls and toggles explosions! + usage: /explosions + aliases: + - explosions + - ex + explosionscontrol: + description: About this plugin! + usage: /explosionscontrol + aliases: + - explosionscontrol + - exc + loadworlds: + description: Load worlds! + usage: /loadworlds