Fixes structure and fixes compilation for 1.19
This commit is contained in:
81
src/main/java/me/Travja/HungerArena/Chests.java
Normal file
81
src/main/java/me/Travja/HungerArena/Chests.java
Normal file
@@ -0,0 +1,81 @@
|
||||
package me.Travja.HungerArena;
|
||||
|
||||
import org.bukkit.ChatColor;
|
||||
import org.bukkit.Location;
|
||||
import org.bukkit.block.Block;
|
||||
import org.bukkit.entity.Player;
|
||||
import org.bukkit.event.EventHandler;
|
||||
import org.bukkit.event.EventPriority;
|
||||
import org.bukkit.event.Listener;
|
||||
import org.bukkit.event.block.BlockBreakEvent;
|
||||
import org.bukkit.event.player.PlayerInteractEvent;
|
||||
import org.bukkit.inventory.InventoryHolder;
|
||||
import org.bukkit.inventory.ItemStack;
|
||||
|
||||
public class Chests implements Listener {
|
||||
public Main plugin;
|
||||
|
||||
public Chests(Main m) {
|
||||
this.plugin = m;
|
||||
}
|
||||
|
||||
@EventHandler(priority = EventPriority.HIGHEST)
|
||||
public void ChestBreak(BlockBreakEvent event) {
|
||||
Player p = event.getPlayer();
|
||||
Block block = event.getBlock();
|
||||
if (p.hasPermission("HungerArena.Chest.Break")) {
|
||||
Location blocklocation = block.getLocation();
|
||||
int blockx = blocklocation.getBlockX();
|
||||
int blocky = blocklocation.getBlockY();
|
||||
int blockz = blocklocation.getBlockZ();
|
||||
if (plugin.getChests().getConfigurationSection("Storage").getKeys(false).contains(blockx + "," + blocky + "," + blockz)) {
|
||||
if (p.hasPermission("HungerArena.Chest.Break") && plugin.getArena(p) == null) {
|
||||
plugin.getChests().set("Storage." + blockx + "," + blocky + "," + blockz, null);
|
||||
plugin.saveChests();
|
||||
p.sendMessage("[HungerArena] Chest Removed!");
|
||||
} else {
|
||||
event.setCancelled(true);
|
||||
p.sendMessage(ChatColor.RED + "[HungerArena] That's a storage! You don't have permission to break it!");
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@EventHandler
|
||||
public void ChestSaves(PlayerInteractEvent event) {
|
||||
Block block = event.getClickedBlock();
|
||||
Player p = event.getPlayer();
|
||||
if (plugin.getArena(p) != null) {
|
||||
int a = plugin.getArena(p);
|
||||
if (plugin.Playing.get(a).contains(p.getName()) && plugin.canjoin.get(a)) {
|
||||
if (!plugin.restricted || (plugin.restricted && plugin.worldsNames.values().contains(p.getWorld().getName()))) {
|
||||
if (block != null) {
|
||||
if (block.getState() instanceof InventoryHolder) {
|
||||
ItemStack[] itemsinchest = ((InventoryHolder) block.getState()).getInventory().getContents().clone();
|
||||
int blockx = block.getX();
|
||||
int blocky = block.getY();
|
||||
int blockz = block.getZ();
|
||||
String blockw = block.getWorld().getName().toString();
|
||||
if (!plugin.getChests().contains("Storage." + blockx + "," + blocky + "," + blockz)) {
|
||||
plugin.getChests().set("Storage." + blockx + "," + blocky + "," + blockz + ".Location.X", blockx);
|
||||
plugin.getChests().set("Storage." + blockx + "," + blocky + "," + blockz + ".Location.Y", blocky);
|
||||
plugin.getChests().set("Storage." + blockx + "," + blocky + "," + blockz + ".Location.Z", blockz);
|
||||
plugin.getChests().set("Storage." + blockx + "," + blocky + "," + blockz + ".Location.W", blockw);
|
||||
plugin.getChests().set("Storage." + blockx + "," + blocky + "," + blockz + ".ItemsInStorage", itemsinchest);
|
||||
plugin.getChests().set("Storage." + blockx + "," + blocky + "," + blockz + ".Arena", a);
|
||||
plugin.saveChests();
|
||||
p.sendMessage(ChatColor.GREEN + "Thank you for finding this undiscovered item Storage, it has been stored!!");
|
||||
if (plugin.config.getBoolean("ChestPay.enabled")) {
|
||||
for (ItemStack Rewards : plugin.ChestPay) {
|
||||
p.getInventory().addItem(Rewards);
|
||||
}
|
||||
}
|
||||
}
|
||||
plugin.reloadChests();
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
107
src/main/java/me/Travja/HungerArena/CommandBlock.java
Normal file
107
src/main/java/me/Travja/HungerArena/CommandBlock.java
Normal file
@@ -0,0 +1,107 @@
|
||||
package me.Travja.HungerArena;
|
||||
|
||||
import org.bukkit.Bukkit;
|
||||
import org.bukkit.ChatColor;
|
||||
import org.bukkit.entity.Player;
|
||||
import org.bukkit.event.EventHandler;
|
||||
import org.bukkit.event.EventPriority;
|
||||
import org.bukkit.event.Listener;
|
||||
import org.bukkit.event.player.PlayerCommandPreprocessEvent;
|
||||
|
||||
public class CommandBlock implements Listener {
|
||||
public Main plugin;
|
||||
|
||||
public CommandBlock(Main m) {
|
||||
this.plugin = m;
|
||||
}
|
||||
|
||||
@EventHandler(priority = EventPriority.MONITOR)
|
||||
public void CatchCommand(PlayerCommandPreprocessEvent event) {
|
||||
String cmd = event.getMessage();
|
||||
Player p = event.getPlayer();
|
||||
String pname = p.getName();
|
||||
for (int x : plugin.Watching.keySet()) {
|
||||
if (plugin.Watching.get(x).contains(p.getName())) {
|
||||
if (handleIngameCommands(p, cmd) == true) {
|
||||
event.setCancelled(true);
|
||||
}
|
||||
}
|
||||
}
|
||||
if (plugin.getArena(p) != null) {
|
||||
if (handleIngameCommands(p, cmd) == true) {
|
||||
event.setCancelled(true);
|
||||
}
|
||||
} else if (cmd.toLowerCase().trim().equals("/back")) {
|
||||
for (int u : plugin.Dead.keySet()) {
|
||||
if (plugin.Dead.get(u).contains(pname) && plugin.canjoin.get(u)) {
|
||||
plugin.Tele.add(p);
|
||||
}
|
||||
}
|
||||
}
|
||||
if (cmd.startsWith("/tp") || cmd.startsWith("/telep") || cmd.contains(":tp") || cmd.contains(":telep")) {
|
||||
String[] args = cmd.split(" ");
|
||||
Player player1 = null;
|
||||
Player player2 = null;
|
||||
if (args.length >= 2) {
|
||||
if (Bukkit.getPlayer(args[1]) != null) {
|
||||
player1 = Bukkit.getPlayer(args[1]);
|
||||
if (args.length >= 3 && Bukkit.getPlayer(args[2]) != null) {
|
||||
player2 = Bukkit.getPlayer(args[2]);
|
||||
}
|
||||
if (plugin.isSpectating(p)) {
|
||||
event.setCancelled(true);
|
||||
p.sendMessage(ChatColor.RED + "Invalid command for spectating, using /ha tp " + (player2 != null ? player2 : player1));
|
||||
p.performCommand("/ha tp " + (player2 != null ? player2 : player1));
|
||||
} else if (plugin.getArena(player1) != null || (args.length == 2 && plugin.getArena(p) != null) || (args.length >= 3 && plugin.getArena(player2) != null)) {
|
||||
event.setCancelled(true);
|
||||
p.sendMessage(ChatColor.RED + "You can't teleport to other tributes!");
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
private boolean handleIngameCommands(Player p, String cmd) {
|
||||
if (!p.hasPermission("HungerArena.UseCommands")) {
|
||||
if (!plugin.management.getStringList("commands.whitelist").isEmpty()) {
|
||||
for (String whitelist : plugin.management.getStringList("commands.whitelist")) {
|
||||
if (cmd.toLowerCase().startsWith(whitelist.toLowerCase())) {
|
||||
return false;
|
||||
}
|
||||
}
|
||||
}
|
||||
if (!cmd.toLowerCase().startsWith("/ha")) {
|
||||
p.sendMessage(ChatColor.RED + "You are only allowed to perform the following commands:");
|
||||
for (String whitelistfull : plugin.management.getStringList("commands.whitelist")) {
|
||||
p.sendMessage(ChatColor.AQUA + whitelistfull);
|
||||
}
|
||||
p.sendMessage(ChatColor.AQUA + "/ha");
|
||||
p.sendMessage(ChatColor.AQUA + "/ha close");
|
||||
p.sendMessage(ChatColor.AQUA + "/ha help");
|
||||
p.sendMessage(ChatColor.AQUA + "/ha join");
|
||||
p.sendMessage(ChatColor.AQUA + "/ha kick [Player]");
|
||||
p.sendMessage(ChatColor.AQUA + "/ha leave");
|
||||
p.sendMessage(ChatColor.AQUA + "/ha list");
|
||||
p.sendMessage(ChatColor.AQUA + "/ha open");
|
||||
p.sendMessage(ChatColor.AQUA + "/ha ready");
|
||||
p.sendMessage(ChatColor.AQUA + "/ha refill");
|
||||
p.sendMessage(ChatColor.AQUA + "/ha reload");
|
||||
p.sendMessage(ChatColor.AQUA + "/ha restart");
|
||||
p.sendMessage(ChatColor.AQUA + "/ha rlist");
|
||||
//p.sendMessage(ChatColor.AQUA + "/ha newarena"); //not during game...
|
||||
p.sendMessage(ChatColor.AQUA + "/ha setspawn");
|
||||
p.sendMessage(ChatColor.AQUA + "/ha start");
|
||||
p.sendMessage(ChatColor.AQUA + "/ha tp");
|
||||
p.sendMessage(ChatColor.AQUA + "/ha watch");
|
||||
p.sendMessage(ChatColor.AQUA + "/ha warpall");
|
||||
return true;
|
||||
}
|
||||
} else if (!cmd.toLowerCase().startsWith("/ha")) {
|
||||
if (cmd.toLowerCase().startsWith("/spawn") || cmd.toLowerCase().startsWith("/back")) {
|
||||
p.sendMessage("You have perms for all commands except this one!");
|
||||
return true;
|
||||
}
|
||||
}
|
||||
return false;
|
||||
}
|
||||
}
|
1222
src/main/java/me/Travja/HungerArena/HaCommands.java
Normal file
1222
src/main/java/me/Travja/HungerArena/HaCommands.java
Normal file
File diff suppressed because it is too large
Load Diff
282
src/main/java/me/Travja/HungerArena/Listeners/BlockStorage.java
Normal file
282
src/main/java/me/Travja/HungerArena/Listeners/BlockStorage.java
Normal file
@@ -0,0 +1,282 @@
|
||||
package me.Travja.HungerArena.Listeners;
|
||||
|
||||
import me.Travja.HungerArena.Main;
|
||||
import org.bukkit.ChatColor;
|
||||
import org.bukkit.Material;
|
||||
import org.bukkit.block.Block;
|
||||
import org.bukkit.block.BlockFace;
|
||||
import org.bukkit.block.data.BlockData;
|
||||
import org.bukkit.entity.Entity;
|
||||
import org.bukkit.entity.EntityType;
|
||||
import org.bukkit.entity.Player;
|
||||
import org.bukkit.event.EventHandler;
|
||||
import org.bukkit.event.EventPriority;
|
||||
import org.bukkit.event.Listener;
|
||||
import org.bukkit.event.block.BlockBreakEvent;
|
||||
import org.bukkit.event.block.BlockBurnEvent;
|
||||
import org.bukkit.event.block.BlockFadeEvent;
|
||||
import org.bukkit.event.block.BlockPlaceEvent;
|
||||
import org.bukkit.event.entity.EntityExplodeEvent;
|
||||
import org.bukkit.event.player.PlayerBucketEmptyEvent;
|
||||
import org.bukkit.event.player.PlayerBucketFillEvent;
|
||||
import org.bukkit.material.MaterialData;
|
||||
|
||||
import java.util.List;
|
||||
|
||||
public class BlockStorage implements Listener {
|
||||
public Main plugin;
|
||||
|
||||
public BlockStorage(Main m) {
|
||||
this.plugin = m;
|
||||
}
|
||||
|
||||
@EventHandler(priority = EventPriority.MONITOR)
|
||||
public void BlockBreak(BlockBreakEvent event) {
|
||||
Block b = event.getBlock();
|
||||
Player p = event.getPlayer();
|
||||
String pname = p.getName();
|
||||
boolean protall = false;
|
||||
if (!p.hasPermission("HungerArena.arena")) {
|
||||
protall = protall(); //true = protect allways!!
|
||||
}
|
||||
if ((plugin.getArena(p) != null) || (protall)) {
|
||||
//Jeppa: get a default arena if protall is true... (but use getArena if set...)
|
||||
int a = 1;
|
||||
if (protall) {
|
||||
String ThisWorld = p.getWorld().getName();
|
||||
for (int z : plugin.worldsNames.keySet()) {
|
||||
if (plugin.worldsNames.get(z) != null) {
|
||||
if (plugin.worldsNames.get(z).equals(ThisWorld)) {
|
||||
a = z;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
if (plugin.getArena(p) != null) {
|
||||
a = plugin.getArena(p);
|
||||
}
|
||||
if ((!event.isCancelled()) && (((plugin.Playing.get(a)).contains(pname)) || (protall))) {
|
||||
if (plugin.config.getString("Protected_Arena").equalsIgnoreCase("True")) {
|
||||
event.setCancelled(true);
|
||||
p.sendMessage(ChatColor.RED + "You can't break blocks while playing!");
|
||||
} else if ((plugin.canjoin.get(a) || protall) && ((!plugin.restricted) || ((plugin.restricted) && (plugin.worldsNames.values().contains(p.getWorld().getName()))))) {
|
||||
if (((plugin.management.getStringList("blocks.whitelist").isEmpty()) || ((!plugin.management.getStringList("blocks.whitelist").isEmpty()) && (!plugin.management.getStringList("blocks.whitelist").contains(String.valueOf(b.getType().name()))))) ^ (plugin.management.getBoolean("blocks.useWhitelistAsBlacklist"))) {
|
||||
event.setCancelled(true);
|
||||
p.sendMessage(ChatColor.RED + "That is an illegal block!");
|
||||
} else {
|
||||
String w = b.getWorld().getName();
|
||||
addDestroyedBlockToList(b, w, a);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@EventHandler(priority = EventPriority.LOWEST)
|
||||
public void Explosion(EntityExplodeEvent event) {
|
||||
List<Block> blocksd = event.blockList();
|
||||
Entity e = event.getEntity();
|
||||
if (!event.isCancelled()) {
|
||||
for (int i : plugin.canjoin.keySet()) {
|
||||
if (plugin.canjoin.get(i) || protall()) {
|
||||
String ThisWorld = e.getWorld().getName();
|
||||
if ((!plugin.restricted) || ((plugin.restricted) && plugin.worldsNames.get(i) != null && plugin.worldsNames.get(i).equalsIgnoreCase(ThisWorld))) {
|
||||
if (e.getType() == EntityType.PRIMED_TNT) {
|
||||
e.getLocation().getBlock().setType(Material.TNT);
|
||||
Block TNT = e.getLocation().getBlock();
|
||||
addDestroyedBlockToList(TNT, ThisWorld, i);
|
||||
TNT.setType(Material.AIR);
|
||||
}
|
||||
for (Block b : blocksd) {
|
||||
if (!b.getType().name().equalsIgnoreCase("AIR")) {
|
||||
addDestroyedBlockToList(b, ThisWorld, i);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@EventHandler(priority = EventPriority.LOWEST)
|
||||
public void burningBlocks(BlockBurnEvent event) {
|
||||
Block b = event.getBlock();
|
||||
if (!event.isCancelled()) {
|
||||
for (int i : plugin.canjoin.keySet()) {
|
||||
if (plugin.canjoin.get(i) || protall()) {
|
||||
if ((!plugin.restricted) || ((plugin.restricted) && (plugin.worldsNames.get(i) != null && plugin.worldsNames.get(i).equalsIgnoreCase(b.getWorld().getName())))) {
|
||||
String w = b.getWorld().getName();
|
||||
addDestroyedBlockToList(b, w, i);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@EventHandler(priority = EventPriority.MONITOR)
|
||||
public void blockPlace(BlockPlaceEvent event) {
|
||||
Block b = event.getBlock();
|
||||
Player p = event.getPlayer();
|
||||
boolean protall = false;
|
||||
if (!p.hasPermission("HungerArena.arena")) {
|
||||
protall = protall();
|
||||
}
|
||||
if ((plugin.getArena(p) != null) || (protall)) {
|
||||
int a = 1;
|
||||
if (protall) {
|
||||
String ThisWorld = p.getWorld().getName();
|
||||
for (int z : plugin.worldsNames.keySet()) {
|
||||
if (plugin.worldsNames.get(z) != null) {
|
||||
if (plugin.worldsNames.get(z).equals(ThisWorld)) {
|
||||
a = z;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
if (plugin.getArena(p) != null) {
|
||||
a = plugin.getArena(p);
|
||||
}
|
||||
if (!event.isCancelled()) {
|
||||
if (((plugin.Playing.get(a)).contains(p.getName())) || (protall)) {
|
||||
if ((plugin.canjoin.get(a)) || (protall)) {
|
||||
if ((!plugin.restricted) || ((plugin.restricted) && (plugin.worldsNames.values().contains(b.getWorld().getName())))) {
|
||||
if ((b.getType() == Material.SAND || b.getType() == Material.GRAVEL) && (b.getRelative(BlockFace.DOWN).getType() == Material.AIR || b.getRelative(BlockFace.DOWN).getType() == Material.WATER || b.getRelative(BlockFace.DOWN).getType() == Material.LAVA)) {
|
||||
int n = b.getY() - 1;
|
||||
while (b.getWorld().getBlockAt(b.getX(), n, b.getZ()).getType() == Material.AIR || b.getWorld().getBlockAt(b.getX(), n, b.getZ()).getType() == Material.WATER || b.getWorld().getBlockAt(b.getX(), n, b.getZ()).getType() == Material.LAVA) {
|
||||
n = n - 1;
|
||||
event.getPlayer().sendMessage(b.getWorld().getBlockAt(b.getX(), n, b.getZ()).getType().toString().toLowerCase());
|
||||
if (b.getWorld().getBlockAt(b.getX(), n, b.getZ()).getType() != Material.AIR || b.getWorld().getBlockAt(b.getX(), n, b.getZ()).getType() != Material.WATER || b.getWorld().getBlockAt(b.getX(), n, b.getZ()).getType() != Material.LAVA) {
|
||||
int l = n + 1;
|
||||
Block br = b.getWorld().getBlockAt(b.getX(), l, b.getZ());
|
||||
String w = br.getWorld().getName();
|
||||
|
||||
addPlacedBlockToList(br, w, a);
|
||||
}
|
||||
}
|
||||
} else {
|
||||
if (b.getType() != Material.SAND && b.getType() != Material.GRAVEL) {
|
||||
String w = b.getWorld().getName();
|
||||
|
||||
addPlacedBlockToList(b, w, a);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@EventHandler(priority = EventPriority.MONITOR)
|
||||
public void bucketEmpty(PlayerBucketEmptyEvent event) {
|
||||
if (plugin.getArena(event.getPlayer()) != null) {
|
||||
int a = plugin.getArena(event.getPlayer());
|
||||
if (!event.isCancelled()) {
|
||||
if (plugin.canjoin.get(a)) {
|
||||
if (plugin.Playing.get(a).contains(event.getPlayer().getName())) {
|
||||
if ((!plugin.restricted) || ((plugin.restricted) && (plugin.worldsNames.values().contains(event.getPlayer().getWorld().getName())))) {
|
||||
Block b = event.getBlockClicked().getRelative(event.getBlockFace());
|
||||
String w = b.getWorld().getName();
|
||||
addPlacedBlockToList(b, w, a);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@EventHandler(priority = EventPriority.MONITOR)
|
||||
public void bucketFill(PlayerBucketFillEvent event) {
|
||||
if (plugin.getArena(event.getPlayer()) != null) {
|
||||
int a = plugin.getArena(event.getPlayer());
|
||||
if (!event.isCancelled()) {
|
||||
if (plugin.canjoin.get(a)) {
|
||||
if (plugin.Playing.get(a).contains(event.getPlayer().getName())) {
|
||||
if ((!plugin.restricted) || ((plugin.restricted) && (plugin.worldsNames.values().contains(event.getPlayer().getWorld().getName())))) {
|
||||
Block b = event.getBlockClicked().getRelative(event.getBlockFace());
|
||||
String w = b.getWorld().getName();
|
||||
addDestroyedBlockToList(b, w, a);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@EventHandler(priority = EventPriority.MONITOR)
|
||||
public void blockMelt(BlockFadeEvent event) {
|
||||
if (!event.isCancelled()) {
|
||||
for (int i : plugin.canjoin.keySet()) {
|
||||
if (plugin.canjoin.get(i) || protall()) {
|
||||
if ((!plugin.restricted) || ((plugin.restricted) && (plugin.worldsNames.get(i) != null && plugin.worldsNames.get(i).equalsIgnoreCase(event.getBlock().getWorld().getName())))) {
|
||||
Block b = event.getBlock();
|
||||
String w = b.getWorld().getName();
|
||||
String d = b.getType().name();
|
||||
if (d.equalsIgnoreCase("FIRE") || d.equalsIgnoreCase("AIR")) {
|
||||
continue;
|
||||
}
|
||||
addDestroyedBlockToList(b, w, i);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
//SubRoutines:
|
||||
private boolean protall() {
|
||||
if (plugin.config.getString("Protected_Arena_Always").equalsIgnoreCase("True")) {
|
||||
return true;
|
||||
}
|
||||
return false;
|
||||
}
|
||||
|
||||
|
||||
private void addDestroyedBlockToList(Block b, String w, int a) {
|
||||
int x = b.getX();
|
||||
int y = b.getY();
|
||||
int z = b.getZ();
|
||||
String d = b.getType().name();
|
||||
byte m = 0;
|
||||
String BlDataString = null;
|
||||
String sp = ";";
|
||||
|
||||
String dir = "";
|
||||
try {
|
||||
if (b.getState().getBlockData() instanceof BlockData) {
|
||||
BlDataString = b.getBlockData().getAsString();
|
||||
}
|
||||
} catch (Exception | NoSuchMethodError ex) {
|
||||
m = b.getData();
|
||||
sp = ",";
|
||||
MaterialData mData = b.getState().getData();
|
||||
if (mData instanceof org.bukkit.material.Directional) {
|
||||
BlockFace Dir = ((org.bukkit.material.Directional) mData).getFacing();
|
||||
if (Dir != null) {
|
||||
dir = sp + (Dir.name());
|
||||
}
|
||||
}
|
||||
}
|
||||
String data = BlDataString != null ? BlDataString : String.valueOf(m);
|
||||
String coords = w + sp + x + sp + y + sp + z + sp + d + sp + data + sp + a + dir;
|
||||
List<String> blocks = plugin.data.getStringList("Blocks_Destroyed");
|
||||
if (!plugin.data.getStringList("Blocks_Placed").contains(w + "," + x + "," + y + "," + z + "," + a)) {
|
||||
blocks.add(coords);
|
||||
plugin.data.set("Blocks_Destroyed", blocks);
|
||||
plugin.saveData();
|
||||
}
|
||||
}
|
||||
|
||||
private void addPlacedBlockToList(Block br, String w, int a) {
|
||||
int x = br.getX();
|
||||
int y = br.getY();
|
||||
int z = br.getZ();
|
||||
String coords = w + "," + x + "," + y + "," + z + "," + a;
|
||||
List<String> blocks = plugin.data.getStringList("Blocks_Placed");
|
||||
if (!blocks.contains(coords)) {
|
||||
blocks.add(coords);
|
||||
plugin.data.set("Blocks_Placed", blocks);
|
||||
plugin.saveData();
|
||||
}
|
||||
}
|
||||
|
||||
}
|
@@ -0,0 +1,84 @@
|
||||
package me.Travja.HungerArena.Listeners;
|
||||
|
||||
import me.Travja.HungerArena.Main;
|
||||
import org.bukkit.Bukkit;
|
||||
import org.bukkit.ChatColor;
|
||||
import org.bukkit.Location;
|
||||
import org.bukkit.World;
|
||||
import org.bukkit.entity.Player;
|
||||
import org.bukkit.event.EventHandler;
|
||||
import org.bukkit.event.Listener;
|
||||
import org.bukkit.event.block.BlockBreakEvent;
|
||||
import org.bukkit.event.player.PlayerMoveEvent;
|
||||
|
||||
import java.util.Map;
|
||||
import java.util.Map.Entry;
|
||||
|
||||
public class Boundaries implements Listener {
|
||||
public Main plugin;
|
||||
|
||||
public Boundaries(Main m) {
|
||||
this.plugin = m;
|
||||
}
|
||||
|
||||
@EventHandler
|
||||
public void boundsCheck(PlayerMoveEvent event) {
|
||||
Player p = event.getPlayer();
|
||||
Boolean inGame = plugin.getArena(p) != null;
|
||||
Boolean spectating = plugin.isSpectating(p);
|
||||
if (plugin.config.getBoolean("WorldEdit")) {
|
||||
if (insideBounds(p.getLocation()) && (inGame || spectating) || (!insideBounds(p.getLocation()) && inGame)) {
|
||||
event.setCancelled(true);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@EventHandler
|
||||
public void blockBounds(BlockBreakEvent event) {
|
||||
Player p = event.getPlayer();
|
||||
if (plugin.getArena(p) == null) {
|
||||
if (plugin.config.getBoolean("WorldEdit")) {
|
||||
if (insideBounds(event.getBlock().getLocation())) {
|
||||
p.sendMessage(ChatColor.RED + "That block is protected by HungerArena!");
|
||||
event.setCancelled(true);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
public boolean insideBounds(Location l) {
|
||||
Location minl = null;
|
||||
Location maxl = null;
|
||||
if (plugin.spawns.get("Arena") != null) {
|
||||
Map<String, Object> temp = plugin.spawns.getConfigurationSection("Arena").getValues(false);
|
||||
for (Entry<String, Object> entry : temp.entrySet()) {
|
||||
if (plugin.spawns.getConfigurationSection("Arena." + entry.getKey()) != null) {
|
||||
String[] min = ((String) plugin.spawns.get("Arena." + entry.getKey()) + ".Min").split(",");
|
||||
String[] max = ((String) plugin.spawns.get("Arena." + entry.getKey()) + ".Max").split(",");
|
||||
try {
|
||||
World world = Bukkit.getWorld(min[0]);
|
||||
double x = Double.parseDouble(min[1]);
|
||||
double y = Double.parseDouble(min[2]);
|
||||
double z = Double.parseDouble(min[3]);
|
||||
minl = new Location(world, x, y, z);
|
||||
World world2 = Bukkit.getWorld(max[0]);
|
||||
double x2 = Double.parseDouble(max[1]);
|
||||
double y2 = Double.parseDouble(max[2]);
|
||||
double z2 = Double.parseDouble(max[3]);
|
||||
minl = new Location(world2, x2, y2, z2);
|
||||
} catch (Exception e) {
|
||||
System.out.println(e);
|
||||
return false;
|
||||
}
|
||||
if (minl != null && maxl != null) {
|
||||
return l.getX() >= minl.getBlockX()
|
||||
&& l.getX() < maxl.getBlockX() + 1 && l.getY() >= minl.getBlockY()
|
||||
&& l.getY() < maxl.getBlockY() + 1 && l.getZ() >= minl.getBlockZ()
|
||||
&& l.getZ() < maxl.getBlockZ() + 1;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
return false;
|
||||
}
|
||||
}
|
@@ -0,0 +1,54 @@
|
||||
package me.Travja.HungerArena.Listeners;
|
||||
|
||||
import me.Travja.HungerArena.Main;
|
||||
import org.bukkit.ChatColor;
|
||||
import org.bukkit.entity.Entity;
|
||||
import org.bukkit.entity.Player;
|
||||
import org.bukkit.event.EventHandler;
|
||||
import org.bukkit.event.Listener;
|
||||
import org.bukkit.event.player.AsyncPlayerChatEvent;
|
||||
|
||||
import java.util.List;
|
||||
|
||||
public class ChatListener implements Listener {
|
||||
public Main plugin;
|
||||
|
||||
public ChatListener(Main m) {
|
||||
this.plugin = m;
|
||||
}
|
||||
|
||||
@EventHandler
|
||||
public void TributeChat(AsyncPlayerChatEvent event) {
|
||||
Player p = event.getPlayer();
|
||||
String pname = p.getName();
|
||||
if (plugin.getArena(p) != null) {
|
||||
String msg = "<" + ChatColor.RED + "[Tribute] " + ChatColor.WHITE + pname + ">" + " " + event.getMessage();
|
||||
if (plugin.config.getString("ChatClose").equalsIgnoreCase("True")) {
|
||||
double radius = plugin.config.getDouble("ChatClose_Radius");
|
||||
List<Entity> near = p.getNearbyEntities(radius, radius, radius);
|
||||
event.setCancelled(true);
|
||||
if (!(near.size() == 0)) {
|
||||
p.sendMessage(msg);
|
||||
for (Entity e : near) {
|
||||
if (e instanceof Player) {
|
||||
((Player) e).sendMessage(msg);
|
||||
}
|
||||
}
|
||||
} else if (near.size() == 0) {
|
||||
p.sendMessage(msg);
|
||||
p.sendMessage(ChatColor.YELLOW + "No one near!");
|
||||
} else if (!(near.size() == 0)) {
|
||||
for (Entity en : near) {
|
||||
if (!(en instanceof Player)) {
|
||||
p.sendMessage(msg);
|
||||
p.sendMessage(ChatColor.YELLOW + "No one near!");
|
||||
}
|
||||
}
|
||||
}
|
||||
} else {
|
||||
event.setCancelled(true);
|
||||
plugin.getServer().broadcastMessage(msg);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
221
src/main/java/me/Travja/HungerArena/Listeners/DeathListener.java
Normal file
221
src/main/java/me/Travja/HungerArena/Listeners/DeathListener.java
Normal file
@@ -0,0 +1,221 @@
|
||||
package me.Travja.HungerArena.Listeners;
|
||||
|
||||
import me.Travja.HungerArena.Main;
|
||||
import org.bukkit.Bukkit;
|
||||
import org.bukkit.ChatColor;
|
||||
import org.bukkit.Location;
|
||||
import org.bukkit.Material;
|
||||
import org.bukkit.Server;
|
||||
import org.bukkit.World;
|
||||
import org.bukkit.configuration.file.FileConfiguration;
|
||||
import org.bukkit.entity.Player;
|
||||
import org.bukkit.event.EventHandler;
|
||||
import org.bukkit.event.EventPriority;
|
||||
import org.bukkit.event.Listener;
|
||||
import org.bukkit.event.entity.PlayerDeathEvent;
|
||||
import org.bukkit.event.player.PlayerRespawnEvent;
|
||||
import org.bukkit.scoreboard.DisplaySlot;
|
||||
|
||||
public class DeathListener implements Listener {
|
||||
public Main plugin;
|
||||
|
||||
public DeathListener(Main m) {
|
||||
this.plugin = m;
|
||||
}
|
||||
|
||||
public FileConfiguration config;
|
||||
int i = 0;
|
||||
int a = 0;
|
||||
|
||||
@EventHandler(priority = EventPriority.HIGHEST)
|
||||
public void onPlayerRespawn(PlayerRespawnEvent event) {
|
||||
final Player p = event.getPlayer();
|
||||
String pname = p.getName();
|
||||
|
||||
//get the arena the player has died in... (may be not the one he joined...)
|
||||
String ThisWorld = p.getWorld().getName();
|
||||
for (int z : plugin.worldsNames.keySet()) {
|
||||
if (plugin.worldsNames.get(z) != null) {
|
||||
if (plugin.worldsNames.get(z).equals(ThisWorld)) {
|
||||
a = z;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
//Jeppa: Fix for lonely players :)
|
||||
for (int i : plugin.Dead.keySet()) {
|
||||
if ((plugin.Dead.get(i) != null) && (plugin.Dead.get(i).contains(pname)) && (plugin.MatchRunning.get(i) == null)) {
|
||||
plugin.Dead.get(i).clear();
|
||||
}
|
||||
}
|
||||
|
||||
for (int i = 0; i < plugin.needInv.size(); i++) {
|
||||
if (plugin.needInv.contains(pname)) {
|
||||
RespawnDeadPlayer(p, a);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
private void RespawnDeadPlayer(Player p, int a) {
|
||||
final Player player = p;
|
||||
String[] Spawncoords = plugin.spawns.getString("Spawn_coords." + a).split(",");
|
||||
World spawnw = plugin.getServer().getWorld(Spawncoords[3]);
|
||||
double spawnx = Double.parseDouble(Spawncoords[0]);
|
||||
double spawny = Double.parseDouble(Spawncoords[1]);
|
||||
double spawnz = Double.parseDouble(Spawncoords[2]);
|
||||
final Location Spawn = new Location(spawnw, spawnx, spawny, spawnz);
|
||||
Bukkit.getServer().getScheduler().scheduleSyncDelayedTask(plugin, new Runnable() {
|
||||
public void run() {
|
||||
player.teleport(Spawn);
|
||||
plugin.RestoreInv(player, player.getName());
|
||||
}
|
||||
}, 10L);
|
||||
}
|
||||
|
||||
@EventHandler(priority = EventPriority.HIGHEST)
|
||||
public void onPlayerDeath(PlayerDeathEvent event) {
|
||||
Player p = event.getEntity();
|
||||
Server s = p.getServer();
|
||||
String pname = p.getName();
|
||||
if (plugin.getArena(p) != null) {
|
||||
a = plugin.getArena(p);
|
||||
int players = plugin.Playing.get(a).size() - 1;
|
||||
String leftmsg = null;
|
||||
clearInv(p);
|
||||
event.getDrops().clear();
|
||||
p.getScoreboard().clearSlot(DisplaySlot.SIDEBAR);
|
||||
plugin.scoreboards.remove(p.getName());
|
||||
if (!plugin.Frozen.get(a).isEmpty()) {
|
||||
if (plugin.Frozen.get(a).contains(pname)) {
|
||||
if (!(p.getKiller() instanceof Player)) {
|
||||
players = plugin.Playing.get(a).size() - 1;
|
||||
leftmsg = ChatColor.BLUE + "There are now " + players + " tributes left!";
|
||||
if (plugin.config.getString("Cannon_Death").equalsIgnoreCase("True")) {
|
||||
double y = p.getLocation().getY();
|
||||
double newy = y + 200;
|
||||
double x = p.getLocation().getX();
|
||||
double z = p.getLocation().getZ();
|
||||
Location strike = new Location(p.getWorld(), x, newy, z);
|
||||
p.getWorld().strikeLightning(strike);
|
||||
}
|
||||
event.setDeathMessage("");
|
||||
if (plugin.config.getBoolean("broadcastAll")) {
|
||||
p.getServer().broadcastMessage(pname + ChatColor.LIGHT_PURPLE + " Stepped off their pedestal too early!");
|
||||
} else {
|
||||
for (String gn : plugin.Playing.get(a)) {
|
||||
Player g = plugin.getServer().getPlayer(gn);
|
||||
g.sendMessage(pname + ChatColor.LIGHT_PURPLE + " Stepped off their pedestal too early!");
|
||||
}
|
||||
}
|
||||
plugin.Frozen.get(a).remove(pname);
|
||||
plugin.Playing.get(a).remove(pname);
|
||||
if (plugin.config.getBoolean("broadcastAll")) {
|
||||
p.getServer().broadcastMessage(leftmsg);
|
||||
} else {
|
||||
for (String gn : plugin.Playing.get(a)) {
|
||||
Player g = plugin.getServer().getPlayer(gn);
|
||||
g.sendMessage(leftmsg);
|
||||
}
|
||||
}
|
||||
plugin.winner(a);
|
||||
}
|
||||
}
|
||||
} else {
|
||||
players = plugin.Playing.get(a).size() - 1;
|
||||
leftmsg = ChatColor.BLUE + "There are now " + players + " tributes left!";
|
||||
if (plugin.config.getString("Cannon_Death").equalsIgnoreCase("True")) {
|
||||
double y = p.getLocation().getY();
|
||||
double newy = y + 200;
|
||||
double x = p.getLocation().getX();
|
||||
double z = p.getLocation().getZ();
|
||||
Location strike = new Location(p.getWorld(), x, newy, z);
|
||||
p.getWorld().strikeLightning(strike);
|
||||
}
|
||||
plugin.Dead.get(a).add(pname);
|
||||
plugin.Playing.get(a).remove(pname);
|
||||
if (p.getKiller() instanceof Player) {
|
||||
if (p.getKiller().getInventory().getItemInMainHand().getType() == Material.AIR) {
|
||||
Player killer = p.getKiller();
|
||||
String killername = killer.getName();
|
||||
event.setDeathMessage("");
|
||||
if (plugin.config.getBoolean("broadcastAll")) {
|
||||
s.broadcastMessage(ChatColor.LIGHT_PURPLE + "**BOOM** Tribute " + pname + " was killed by tribute " + killername + " with their FIST!");
|
||||
s.broadcastMessage(leftmsg);
|
||||
} else {
|
||||
for (String gn : plugin.Playing.get(a)) {
|
||||
Player g = plugin.getServer().getPlayer(gn);
|
||||
g.sendMessage(ChatColor.LIGHT_PURPLE + "**BOOM** Tribute " + pname + " was killed by tribute " + killername + " with their FIST!");
|
||||
g.sendMessage(leftmsg);
|
||||
}
|
||||
}
|
||||
if (plugin.Kills.containsKey(killername)) {
|
||||
plugin.Kills.put(killername, plugin.Kills.get(killername) + 1);
|
||||
} else {
|
||||
plugin.Kills.put(killername, 1);
|
||||
}
|
||||
if (plugin.Kills.containsKey("__SuM__")) {
|
||||
plugin.Kills.put("__SuM__", plugin.Kills.get("__SuM__") + 1);
|
||||
} else {
|
||||
plugin.Kills.put("__SuM__", 1);
|
||||
}
|
||||
plugin.winner(a);
|
||||
} else {
|
||||
Player killer = p.getKiller();
|
||||
String killername = killer.getName();
|
||||
String weapon = "a(n) " + killer.getInventory().getItemInMainHand().getType().name().replace('_', ' ');
|
||||
if (killer.getInventory().getItemInMainHand().hasItemMeta()) {
|
||||
if (killer.getInventory().getItemInMainHand().getItemMeta().hasDisplayName()) {
|
||||
weapon = killer.getInventory().getItemInMainHand().getItemMeta().getDisplayName();
|
||||
}
|
||||
}
|
||||
String msg = ChatColor.LIGHT_PURPLE + "**BOOM** Tribute " + pname + " was killed by tribute " + killername + " with " + weapon;
|
||||
event.setDeathMessage("");
|
||||
if (plugin.config.getBoolean("broadcastAll")) {
|
||||
s.broadcastMessage(msg);
|
||||
s.broadcastMessage(leftmsg);
|
||||
} else {
|
||||
for (String gn : plugin.Playing.get(a)) {
|
||||
Player g = plugin.getServer().getPlayer(gn);
|
||||
g.sendMessage(msg);
|
||||
g.sendMessage(leftmsg);
|
||||
}
|
||||
}
|
||||
if (plugin.Kills.containsKey(killername)) {
|
||||
plugin.Kills.put(killername, plugin.Kills.get(killername) + 1);
|
||||
} else {
|
||||
plugin.Kills.put(killername, 1);
|
||||
}
|
||||
if (plugin.Kills.containsKey("__SuM__")) {
|
||||
plugin.Kills.put("__SuM__", plugin.Kills.get("__SuM__") + 1);
|
||||
} else {
|
||||
plugin.Kills.put("__SuM__", 1);
|
||||
}
|
||||
plugin.winner(a);
|
||||
}
|
||||
} else {
|
||||
event.setDeathMessage("");
|
||||
if (plugin.config.getBoolean("broadcastAll")) {
|
||||
s.broadcastMessage(ChatColor.LIGHT_PURPLE + pname + " died of natural causes!");
|
||||
s.broadcastMessage(leftmsg);
|
||||
} else {
|
||||
for (String gn : plugin.Playing.get(a)) {
|
||||
Player g = plugin.getServer().getPlayer(gn);
|
||||
g.sendMessage(ChatColor.LIGHT_PURPLE + pname + " died of " + ChatColor.ITALIC + " probably " + ChatColor.LIGHT_PURPLE + "natural causes!");
|
||||
g.sendMessage(leftmsg);
|
||||
}
|
||||
}
|
||||
plugin.winner(a);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
private void clearInv(Player p) {
|
||||
p.getInventory().clear();
|
||||
p.getInventory().setBoots(null);
|
||||
p.getInventory().setChestplate(null);
|
||||
p.getInventory().setHelmet(null);
|
||||
p.getInventory().setLeggings(null);
|
||||
p.updateInventory();
|
||||
}
|
||||
}
|
@@ -0,0 +1,123 @@
|
||||
package me.Travja.HungerArena.Listeners;
|
||||
|
||||
import me.Travja.HungerArena.Main;
|
||||
import org.bukkit.ChatColor;
|
||||
import org.bukkit.Location;
|
||||
import org.bukkit.World;
|
||||
import org.bukkit.entity.Player;
|
||||
import org.bukkit.event.EventHandler;
|
||||
import org.bukkit.event.Listener;
|
||||
import org.bukkit.event.player.PlayerMoveEvent;
|
||||
import org.bukkit.metadata.MetadataValue;
|
||||
|
||||
import java.util.ArrayList;
|
||||
import java.util.HashMap;
|
||||
import java.util.List;
|
||||
|
||||
public class FreezeListener implements Listener {
|
||||
public Main plugin;
|
||||
|
||||
public FreezeListener(Main m) {
|
||||
this.plugin = m;
|
||||
}
|
||||
|
||||
int i = 0;
|
||||
int a = 0;
|
||||
private HashMap<Integer, Boolean> timeUp = new HashMap<Integer, Boolean>();
|
||||
private ArrayList<Integer> timing = new ArrayList<Integer>();
|
||||
|
||||
@EventHandler
|
||||
public void onPlayerMove(PlayerMoveEvent event) {
|
||||
Player p = event.getPlayer();
|
||||
String pname = p.getName();
|
||||
if (plugin.getArena(p) != null) {
|
||||
a = plugin.getArena(p);
|
||||
if (plugin.Frozen.get(a).contains(pname) && plugin.config.getString("Frozen_Teleport").equalsIgnoreCase("True")) {
|
||||
if (plugin.config.getString("Explode_on_Move").equalsIgnoreCase("true")) {
|
||||
timeUp.put(a, false);
|
||||
for (String players : plugin.Playing.get(a)) {
|
||||
Player playing = plugin.getServer().getPlayerExact(players);
|
||||
i = plugin.Playing.get(a).indexOf(players) + 1;
|
||||
if (!timeUp.get(a) && !timing.contains(a)) {
|
||||
timing.add(a);
|
||||
if (!playing.getLocation().getBlock().getLocation().equals(plugin.location.get(a).get(i).getBlock().getLocation())) {
|
||||
playing.teleport(plugin.location.get(a).get(i));
|
||||
plugin.getServer().getScheduler().scheduleSyncDelayedTask(plugin, new Runnable() {
|
||||
public void run() {
|
||||
if (!timeUp.get(a)) {
|
||||
timeUp.put(a, true);
|
||||
timing.remove(a);
|
||||
}
|
||||
}
|
||||
}, 30L);
|
||||
}
|
||||
} else {
|
||||
if (!playing.getLocation().getBlock().getLocation().equals(plugin.location.get(a).get(i).getBlock().getLocation())) {
|
||||
if (!plugin.Dead.get(a).contains(playing.getName())) {
|
||||
plugin.Dead.get(a).add(playing.getName());
|
||||
World world = playing.getLocation().getWorld();
|
||||
world.createExplosion(playing.getLocation(), 0.0F, false);
|
||||
playing.setHealth(0.0D);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
if (plugin.Dead.get(a).contains(pname) && plugin.Playing.get(a).contains(pname)) {
|
||||
int players = plugin.Playing.get(a).size() - 1;
|
||||
String leftmsg = ChatColor.BLUE + "There are now " + players + " tributes left!";
|
||||
if (plugin.config.getString("Cannon_Death").equalsIgnoreCase("True")) {
|
||||
double y = p.getLocation().getY();
|
||||
double newy = y + 200;
|
||||
double x = p.getLocation().getX();
|
||||
double z = p.getLocation().getZ();
|
||||
Location strike = new Location(p.getWorld(), x, newy, z);
|
||||
p.getWorld().strikeLightning(strike);
|
||||
}
|
||||
if (plugin.config.getBoolean("broadcastAll")) {
|
||||
p.getServer().broadcastMessage(pname + ChatColor.LIGHT_PURPLE + " Stepped off their pedestal too early!");
|
||||
} else {
|
||||
for (String gn : plugin.Playing.get(a)) {
|
||||
Player g = plugin.getServer().getPlayer(gn);
|
||||
g.sendMessage(pname + ChatColor.LIGHT_PURPLE + " Stepped off their pedestal too early!");
|
||||
}
|
||||
}
|
||||
plugin.Frozen.get(a).remove(pname);
|
||||
plugin.Playing.get(a).remove(pname);
|
||||
if (plugin.config.getBoolean("broadcastAll")) {
|
||||
p.getServer().broadcastMessage(leftmsg);
|
||||
} else {
|
||||
for (String gn : plugin.Playing.get(a)) {
|
||||
Player g = plugin.getServer().getPlayer(gn);
|
||||
g.sendMessage(leftmsg);
|
||||
}
|
||||
}
|
||||
plugin.winner(a);
|
||||
}
|
||||
} else {
|
||||
i = plugin.Playing.get(a).indexOf(pname) + 1;
|
||||
Location pLoc = null;
|
||||
if (p.hasMetadata("HA-Location")) {
|
||||
List<MetadataValue> l = p.getMetadata("HA-Location");
|
||||
if (l != null && l.size() != 0) {
|
||||
try {
|
||||
pLoc = (Location) l.get(0).value();
|
||||
} catch (Exception e) {
|
||||
}
|
||||
}
|
||||
if (pLoc != null) {
|
||||
if (p.getLocation().getBlockX() != (pLoc.getBlockX()) || p.getLocation().getBlockZ() != (pLoc.getBlockZ())) {
|
||||
pLoc.setX(pLoc.getBlock().getLocation().getX() + .5);
|
||||
pLoc.setZ(pLoc.getBlock().getLocation().getZ() + .5);
|
||||
p.teleport(pLoc);
|
||||
}
|
||||
} else {
|
||||
if (!p.getLocation().getBlock().getLocation().equals(plugin.location.get(a).get(i).getBlock().getLocation())) {
|
||||
p.teleport(plugin.location.get(a).get(i));
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
@@ -0,0 +1,204 @@
|
||||
package me.Travja.HungerArena.Listeners;
|
||||
|
||||
import me.Travja.HungerArena.HaCommands;
|
||||
import me.Travja.HungerArena.Main;
|
||||
|
||||
import org.bukkit.ChatColor;
|
||||
import org.bukkit.Location;
|
||||
import org.bukkit.World;
|
||||
import org.bukkit.entity.Player;
|
||||
import org.bukkit.event.EventHandler;
|
||||
import org.bukkit.event.Listener;
|
||||
import org.bukkit.event.player.PlayerJoinEvent;
|
||||
import org.bukkit.event.player.PlayerQuitEvent;
|
||||
import org.bukkit.scoreboard.DisplaySlot;
|
||||
|
||||
public class JoinAndQuitListener implements Listener {
|
||||
public Main plugin;
|
||||
|
||||
public JoinAndQuitListener(Main m) {
|
||||
this.plugin = m;
|
||||
}
|
||||
|
||||
public HaCommands commands;
|
||||
|
||||
public JoinAndQuitListener(HaCommands h) {
|
||||
this.commands = h;
|
||||
}
|
||||
|
||||
int a = 0;
|
||||
|
||||
@EventHandler
|
||||
public void onPlayerJoin(PlayerJoinEvent event) {
|
||||
final Player p = event.getPlayer();
|
||||
final String pname = p.getName();
|
||||
boolean pfound = false;
|
||||
for (int i : plugin.Watching.keySet()) {
|
||||
for (String s : plugin.Watching.get(i)) {
|
||||
Player spectator = plugin.getServer().getPlayerExact(s);
|
||||
p.hidePlayer(plugin, spectator);
|
||||
}
|
||||
}
|
||||
for (int i : plugin.Out.keySet()) {
|
||||
if (plugin.Out.get(i).contains(pname)) {
|
||||
plugin.Playing.get(i).add(pname);
|
||||
plugin.getServer().getScheduler().scheduleSyncDelayedTask(plugin, new Runnable() {
|
||||
public void run() {
|
||||
p.sendMessage(ChatColor.AQUA + "You have saved yourself from being ejected from the arena!");
|
||||
}
|
||||
}, 40L);
|
||||
plugin.Out.get(i).remove(pname);
|
||||
pfound = true;
|
||||
}
|
||||
}
|
||||
|
||||
for (final int i : plugin.Quit.keySet()) {
|
||||
if (plugin.Quit.get(i).contains(pname)) {
|
||||
String[] Spawncoords = plugin.spawns.getString("Spawn_coords." + i).split(",");
|
||||
String w = Spawncoords[3];
|
||||
World spawnw = plugin.getServer().getWorld(w);
|
||||
double spawnx = Double.parseDouble(Spawncoords[0]);
|
||||
double spawny = Double.parseDouble(Spawncoords[1]);
|
||||
double spawnz = Double.parseDouble(Spawncoords[2]);
|
||||
final Location Spawn = new Location(spawnw, spawnx, spawny, spawnz);
|
||||
plugin.getServer().getScheduler().scheduleSyncDelayedTask(plugin, new Runnable() {
|
||||
public void run() {
|
||||
p.teleport(Spawn);
|
||||
p.sendMessage(ChatColor.RED + "You have been teleported to last spawn because you quit/forfeited!");
|
||||
plugin.RestoreInv(p, p.getName());
|
||||
if (plugin.Quit.get(i) != null) {
|
||||
plugin.Quit.get(i).remove(p.getName());
|
||||
}
|
||||
}
|
||||
}, 40L);
|
||||
pfound = true;
|
||||
}
|
||||
}
|
||||
for (final int i : plugin.Dead.keySet()) {
|
||||
if (plugin.Dead.get(i).contains(pname)) {
|
||||
String[] Spawncoords = plugin.spawns.getString("Spawn_coords." + i).split(",");
|
||||
String w = Spawncoords[3];
|
||||
World spawnw = plugin.getServer().getWorld(w);
|
||||
double spawnx = Double.parseDouble(Spawncoords[0]);
|
||||
double spawny = Double.parseDouble(Spawncoords[1]);
|
||||
double spawnz = Double.parseDouble(Spawncoords[2]);
|
||||
final Location Spawn = new Location(spawnw, spawnx, spawny, spawnz);
|
||||
plugin.getServer().getScheduler().scheduleSyncDelayedTask(plugin, new Runnable() {
|
||||
public void run() {
|
||||
p.teleport(Spawn);
|
||||
p.sendMessage(ChatColor.RED + "You have been teleported to spawn because you quit/died/forfeited!!");
|
||||
plugin.RestoreInv(p, p.getName());
|
||||
if (plugin.Dead.get(i) != null) {
|
||||
plugin.Dead.get(i).remove(p.getName());
|
||||
}
|
||||
}
|
||||
}, 40L);
|
||||
pfound = true;
|
||||
}
|
||||
}
|
||||
for (final int i : plugin.inArena.keySet()) {
|
||||
if (plugin.inArena.get(i) != null) {
|
||||
if (plugin.inArena.get(i).contains(pname)) {
|
||||
String[] Spawncoords = plugin.spawns.getString("Spawn_coords." + i).split(",");
|
||||
String w = Spawncoords[3];
|
||||
World spawnw = plugin.getServer().getWorld(w);
|
||||
double spawnx = Double.parseDouble(Spawncoords[0]);
|
||||
double spawny = Double.parseDouble(Spawncoords[1]);
|
||||
double spawnz = Double.parseDouble(Spawncoords[2]);
|
||||
final Location Spawn = new Location(spawnw, spawnx, spawny, spawnz);
|
||||
plugin.getServer().getScheduler().scheduleSyncDelayedTask(plugin, new Runnable() {
|
||||
public void run() {
|
||||
p.teleport(Spawn);
|
||||
p.getInventory().clear();
|
||||
p.getInventory().setBoots(null);
|
||||
p.getInventory().setLeggings(null);
|
||||
p.getInventory().setChestplate(null);
|
||||
p.getInventory().setHelmet(null);
|
||||
plugin.inArena.remove(pname);
|
||||
p.sendMessage(ChatColor.RED + "You were still in the arena when you left and now the games are over.");
|
||||
plugin.RestoreInv(p, p.getName());
|
||||
if (plugin.inArena.get(i) != null) {
|
||||
plugin.inArena.get(i).remove(p.getName());
|
||||
}
|
||||
}
|
||||
}, 40L);
|
||||
pfound = true;
|
||||
}
|
||||
}
|
||||
}
|
||||
if ((plugin.restricted && plugin.worldsNames.values().contains(p.getWorld().getName())) || !plugin.restricted) {
|
||||
if (!pfound && plugin.config.getString("Force_Players_toSpawn").equalsIgnoreCase("True") && (plugin.spawns.getString("Spawn_coords.0") != null)) {
|
||||
String[] Spawncoords = plugin.spawns.getString("Spawn_coords.0").split(",");
|
||||
String w = Spawncoords[3];
|
||||
World spawnw = plugin.getServer().getWorld(w);
|
||||
double spawnx = Double.parseDouble(Spawncoords[0]);
|
||||
double spawny = Double.parseDouble(Spawncoords[1]);
|
||||
double spawnz = Double.parseDouble(Spawncoords[2]);
|
||||
final Location Spawn = new Location(spawnw, spawnx, spawny, spawnz);
|
||||
plugin.RestoreInv(p, p.getName());
|
||||
plugin.getServer().getScheduler().scheduleSyncDelayedTask(plugin, new Runnable() {
|
||||
public void run() {
|
||||
p.teleport(Spawn);
|
||||
p.sendMessage(ChatColor.RED + "You have been teleported to spawn!!");
|
||||
}
|
||||
}, 40L);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@EventHandler
|
||||
public void onQuit(PlayerQuitEvent evt) {
|
||||
Player p = evt.getPlayer();
|
||||
String pname = p.getName();
|
||||
for (int i : plugin.Frozen.keySet()) {
|
||||
if (plugin.Frozen.get(i).contains(pname)) {
|
||||
plugin.Frozen.remove(pname);
|
||||
String[] Spawncoords = plugin.spawns.getString("Spawn_coords.0").split(",");
|
||||
String w = Spawncoords[3];
|
||||
World spawnw = plugin.getServer().getWorld(w);
|
||||
double spawnx = Double.parseDouble(Spawncoords[0]);
|
||||
double spawny = Double.parseDouble(Spawncoords[1]);
|
||||
double spawnz = Double.parseDouble(Spawncoords[2]);
|
||||
Location Spawn = new Location(spawnw, spawnx, spawny, spawnz);
|
||||
p.teleport(Spawn);
|
||||
p.getScoreboard().clearSlot(DisplaySlot.SIDEBAR);
|
||||
if (plugin.scoreboards.containsKey(p.getName())) {
|
||||
plugin.scoreboards.remove(p.getName());
|
||||
}
|
||||
if (plugin.Kills.containsKey(p.getName())) {
|
||||
plugin.Kills.remove(p.getName());
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@EventHandler
|
||||
public void onPlayerQuit(PlayerQuitEvent event) {
|
||||
final Player p = event.getPlayer();
|
||||
final String pname = p.getName();
|
||||
if (plugin.getArena(p) != null) {
|
||||
a = plugin.getArena(p);
|
||||
plugin.Out.get(a).add(pname);
|
||||
plugin.Playing.get(a).remove(pname);
|
||||
plugin.getServer().getScheduler().scheduleSyncDelayedTask(plugin, new Runnable() {
|
||||
public void run() {
|
||||
if (plugin.Out.get(a).contains(pname)) {
|
||||
plugin.Quit.get(a).add(pname);
|
||||
plugin.Out.get(a).remove(pname);
|
||||
p.getScoreboard().clearSlot(DisplaySlot.SIDEBAR);
|
||||
if (plugin.scoreboards.containsKey(p.getName())) {
|
||||
plugin.scoreboards.remove(p.getName());
|
||||
}
|
||||
if (plugin.Kills.containsKey(p.getName())) {
|
||||
plugin.Kills.remove(p.getName());
|
||||
}
|
||||
plugin.winner(a);
|
||||
plugin.inArena.get(a).add(pname);
|
||||
} else if (plugin.getArena(p) == null) {
|
||||
plugin.Quit.get(a).add(pname);
|
||||
}
|
||||
}
|
||||
}, 1200L);
|
||||
}
|
||||
}
|
||||
}
|
106
src/main/java/me/Travja/HungerArena/Listeners/PvP.java
Normal file
106
src/main/java/me/Travja/HungerArena/Listeners/PvP.java
Normal file
@@ -0,0 +1,106 @@
|
||||
package me.Travja.HungerArena.Listeners;
|
||||
|
||||
import me.Travja.HungerArena.Main;
|
||||
import org.bukkit.entity.Entity;
|
||||
import org.bukkit.entity.Player;
|
||||
import org.bukkit.entity.Projectile;
|
||||
import org.bukkit.entity.Skeleton;
|
||||
import org.bukkit.event.EventHandler;
|
||||
import org.bukkit.event.EventPriority;
|
||||
import org.bukkit.event.Listener;
|
||||
import org.bukkit.event.entity.EntityDamageByEntityEvent;
|
||||
import org.bukkit.event.entity.EntityDamageEvent;
|
||||
|
||||
public class PvP implements Listener {
|
||||
public Main plugin;
|
||||
|
||||
public PvP(Main m) {
|
||||
this.plugin = m;
|
||||
}
|
||||
|
||||
int a = 0;
|
||||
|
||||
@EventHandler(priority = EventPriority.MONITOR)
|
||||
public void PlayerPvP(EntityDamageByEntityEvent event) {
|
||||
Entity pl = event.getEntity();
|
||||
Entity dl = event.getDamager();
|
||||
if (pl instanceof Player && dl instanceof Player) {
|
||||
Player p = (Player) pl;
|
||||
Player d = (Player) dl;
|
||||
if (plugin.getArena(p) != null && plugin.getArena(d) != null) {
|
||||
a = plugin.getArena(p);
|
||||
if (plugin.canjoin.get(a)) {
|
||||
if (event.isCancelled()) {
|
||||
event.setCancelled(false);
|
||||
}
|
||||
if (plugin.gp.get(plugin.getArena(p)) != null) {
|
||||
if (plugin.gp.get(plugin.getArena(p)) != 0) {
|
||||
event.setCancelled(true);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
if (plugin.getArena(p) != null) {
|
||||
a = plugin.getArena(p);
|
||||
if (!plugin.canjoin.get(a)) {
|
||||
if (!event.isCancelled()) {
|
||||
event.setCancelled(true);
|
||||
}
|
||||
}
|
||||
}
|
||||
if (plugin.getArena(p) == null && plugin.getArena(d) != null) {
|
||||
if (!event.isCancelled()) {
|
||||
event.setCancelled(true);
|
||||
}
|
||||
}
|
||||
} else if (pl instanceof Player && dl instanceof Projectile) {
|
||||
Projectile projectile = (Projectile) dl;
|
||||
Player p = (Player) pl;
|
||||
if (projectile.getShooter() instanceof Player) {
|
||||
if (plugin.getArena(p) != null) {
|
||||
Player shooter = (Player) projectile.getShooter();
|
||||
if (plugin.getArena(shooter) != null) {
|
||||
if (plugin.gp.get(plugin.getArena(p)) != null) {
|
||||
if (plugin.gp.get(plugin.getArena(p)) != 0) {
|
||||
event.setCancelled(true);
|
||||
} else {
|
||||
event.setCancelled(false);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
} else if (projectile.getShooter() instanceof Entity) {
|
||||
Entity e = (Entity) projectile.getShooter();
|
||||
if (e instanceof Skeleton) {
|
||||
if (plugin.getArena(p) != null) {
|
||||
if (plugin.gp.get(plugin.getArena((Player) e)) != null) {
|
||||
if (plugin.gp.get(plugin.getArena(p)) != 0) {
|
||||
event.setCancelled(true);
|
||||
} else {
|
||||
event.setCancelled(false);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@EventHandler
|
||||
public void PlayerDamage(EntityDamageEvent event) {
|
||||
Entity e = event.getEntity();
|
||||
if (e instanceof Player) {
|
||||
Player p = (Player) e;
|
||||
if (plugin.getArena(p) != null) {
|
||||
a = plugin.getArena(p);
|
||||
if (plugin.gp.get(a) != null && plugin.gp.get(a) != 0) {
|
||||
event.setCancelled(true);
|
||||
}
|
||||
if (plugin.Frozen.get(a) != null && plugin.Frozen.get(a).contains(p.getName())) {
|
||||
event.setCancelled(true);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
}
|
@@ -0,0 +1,94 @@
|
||||
package me.Travja.HungerArena.Listeners;
|
||||
|
||||
import me.Travja.HungerArena.Main;
|
||||
import org.bukkit.ChatColor;
|
||||
import org.bukkit.Tag;
|
||||
import org.bukkit.block.Block;
|
||||
import org.bukkit.entity.Player;
|
||||
import org.bukkit.event.EventHandler;
|
||||
import org.bukkit.event.Listener;
|
||||
import org.bukkit.event.block.Action;
|
||||
import org.bukkit.event.block.SignChangeEvent;
|
||||
import org.bukkit.event.player.PlayerInteractEvent;
|
||||
|
||||
public class SignsAndBeds implements Listener {
|
||||
public Main plugin;
|
||||
|
||||
public SignsAndBeds(Main m) {
|
||||
this.plugin = m;
|
||||
}
|
||||
|
||||
@EventHandler
|
||||
public void Sign(PlayerInteractEvent event) {
|
||||
Player p = event.getPlayer();
|
||||
Block b = event.getClickedBlock();
|
||||
if (b == null) {
|
||||
return;
|
||||
}
|
||||
if (event.getAction() == Action.RIGHT_CLICK_BLOCK) {
|
||||
//2019 1.14 Translate Materials:
|
||||
boolean foundSign = false;
|
||||
try {
|
||||
if (b.getState() instanceof org.bukkit.block.Sign) {
|
||||
foundSign = true;
|
||||
}
|
||||
} catch (Exception e) {
|
||||
if (!foundSign) {
|
||||
foundSign = Tag.SIGNS.isTagged(b.getType());
|
||||
}
|
||||
}
|
||||
if (foundSign) {
|
||||
org.bukkit.block.Sign sign = (org.bukkit.block.Sign) b.getState();
|
||||
String line1 = sign.getLine(0);
|
||||
String line2 = sign.getLine(1);
|
||||
String line3 = sign.getLine(2);
|
||||
String line4 = sign.getLine(3);
|
||||
if (line1.trim().equalsIgnoreCase(ChatColor.BLUE + "[HungerArena]") || line1.trim().equalsIgnoreCase(ChatColor.BLUE + "[HA]")) {
|
||||
if (!line2.equals("") && line3.equals("")) {
|
||||
p.performCommand("ha " + line2);
|
||||
} else if (line2.equals("") && !line3.equals("")) {
|
||||
p.performCommand("ha " + line3);
|
||||
} else if (!line2.equals("") && !line3.equals("")) {
|
||||
String commands = "close,join,kick,leave,list,open,ready,refill,reload,restart,rlist,tp,start,watch,warpall";
|
||||
if (commands.contains(line3.trim().toLowerCase())) {
|
||||
p.performCommand("ha " + line2);
|
||||
p.performCommand("ha " + line3);
|
||||
} else {
|
||||
p.performCommand("ha " + line2 + " " + line3);
|
||||
}
|
||||
} else {
|
||||
p.performCommand("ha");
|
||||
}
|
||||
}
|
||||
if (line1.trim().equalsIgnoreCase(ChatColor.BLUE + "[Sponsor]")) {
|
||||
p.performCommand("sponsor " + line2 + " " + line3 + " " + line4);
|
||||
}
|
||||
}
|
||||
|
||||
if (plugin.config.getString("DenyBedUsage").equalsIgnoreCase("True")) {
|
||||
boolean foundBed = false;
|
||||
try {
|
||||
if (b.getState() instanceof org.bukkit.block.Bed) {
|
||||
foundBed = true;
|
||||
}
|
||||
} catch (Exception e) {
|
||||
if (!foundBed) {
|
||||
foundBed = Tag.BEDS.isTagged(b.getType());
|
||||
}
|
||||
}
|
||||
if (foundBed) {
|
||||
event.setCancelled(true);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@EventHandler
|
||||
public void Create(SignChangeEvent event) {
|
||||
String top = event.getLine(0);
|
||||
if (top.equalsIgnoreCase("[HungerArena]") || top.equalsIgnoreCase("[HA]") || top.equalsIgnoreCase("[Sponsor]")) {
|
||||
event.setLine(0, ChatColor.BLUE + top);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
@@ -0,0 +1,72 @@
|
||||
package me.Travja.HungerArena.Listeners;
|
||||
|
||||
import me.Travja.HungerArena.Main;
|
||||
import org.bukkit.ChatColor;
|
||||
import org.bukkit.block.Block;
|
||||
import org.bukkit.entity.Player;
|
||||
import org.bukkit.event.EventHandler;
|
||||
import org.bukkit.event.Listener;
|
||||
import org.bukkit.event.block.Action;
|
||||
import org.bukkit.event.block.SignChangeEvent;
|
||||
import org.bukkit.event.player.PlayerInteractEvent;
|
||||
|
||||
public class SignsAndBedsOld implements Listener {
|
||||
public Main plugin;
|
||||
|
||||
public SignsAndBedsOld(Main m) {
|
||||
this.plugin = m;
|
||||
}
|
||||
|
||||
@SuppressWarnings("deprecation")
|
||||
@EventHandler
|
||||
public void Sign(PlayerInteractEvent event) {
|
||||
Player p = event.getPlayer();
|
||||
Block b = event.getClickedBlock();
|
||||
if (b == null) {
|
||||
return;
|
||||
}
|
||||
if (event.getAction() == Action.RIGHT_CLICK_BLOCK) {
|
||||
if (b.getState() instanceof org.bukkit.block.Sign) {
|
||||
org.bukkit.block.Sign sign = (org.bukkit.block.Sign) b.getState();
|
||||
String line1 = sign.getLine(0);
|
||||
String line2 = sign.getLine(1);
|
||||
String line3 = sign.getLine(2);
|
||||
String line4 = sign.getLine(3);
|
||||
if (line1.trim().equalsIgnoreCase(ChatColor.BLUE + "[HungerArena]") || line1.trim().equalsIgnoreCase(ChatColor.BLUE + "[HA]")) {
|
||||
if (!line2.equals("") && line3.equals("")) {
|
||||
p.performCommand("ha " + line2);
|
||||
} else if (line2.equals("") && !line3.equals("")) {
|
||||
p.performCommand("ha " + line3);
|
||||
} else if (!line2.equals("") && !line3.equals("")) {
|
||||
String commands = "close,join,kick,leave,list,open,ready,refill,reload,restart,rlist,tp,start,watch,warpall";
|
||||
if (commands.contains(line3.trim().toLowerCase())) {
|
||||
p.performCommand("ha " + line2);
|
||||
p.performCommand("ha " + line3);
|
||||
} else {
|
||||
p.performCommand("ha " + line2 + " " + line3);
|
||||
}
|
||||
} else {
|
||||
p.performCommand("ha");
|
||||
}
|
||||
}
|
||||
if (line1.trim().equalsIgnoreCase(ChatColor.BLUE + "[Sponsor]")) {
|
||||
p.performCommand("sponsor " + line2 + " " + line3 + " " + line4);
|
||||
}
|
||||
}
|
||||
|
||||
if (plugin.config.getString("DenyBedUsage").trim().equalsIgnoreCase("true")) {
|
||||
if (b.getState().getData() instanceof org.bukkit.material.Bed) {
|
||||
event.setCancelled(true);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@EventHandler
|
||||
public void Create(SignChangeEvent event) {
|
||||
String top = event.getLine(0);
|
||||
if (top.equalsIgnoreCase("[HungerArena]") || top.equalsIgnoreCase("[HA]") || top.equalsIgnoreCase("[Sponsor]")) {
|
||||
event.setLine(0, ChatColor.BLUE + top);
|
||||
}
|
||||
}
|
||||
}
|
@@ -0,0 +1,195 @@
|
||||
package me.Travja.HungerArena.Listeners;
|
||||
|
||||
import me.Travja.HungerArena.Main;
|
||||
import org.bukkit.ChatColor;
|
||||
import org.bukkit.Location;
|
||||
import org.bukkit.World;
|
||||
import org.bukkit.entity.Entity;
|
||||
import org.bukkit.entity.Player;
|
||||
import org.bukkit.entity.Projectile;
|
||||
import org.bukkit.event.EventHandler;
|
||||
import org.bukkit.event.Listener;
|
||||
import org.bukkit.event.block.BlockBreakEvent;
|
||||
import org.bukkit.event.block.BlockPlaceEvent;
|
||||
import org.bukkit.event.entity.EntityDamageByEntityEvent;
|
||||
import org.bukkit.event.entity.EntityPickupItemEvent;
|
||||
import org.bukkit.event.entity.EntityTargetEvent;
|
||||
import org.bukkit.event.player.PlayerDropItemEvent;
|
||||
import org.bukkit.event.player.PlayerInteractEntityEvent;
|
||||
import org.bukkit.event.player.PlayerInteractEvent;
|
||||
import org.bukkit.event.player.PlayerQuitEvent;
|
||||
import org.bukkit.projectiles.ProjectileSource;
|
||||
import org.bukkit.scoreboard.DisplaySlot;
|
||||
|
||||
public class SpectatorListener implements Listener {
|
||||
public Main plugin;
|
||||
|
||||
public SpectatorListener(Main m) {
|
||||
this.plugin = m;
|
||||
}
|
||||
|
||||
int i = 0;
|
||||
|
||||
@EventHandler
|
||||
public void SpectatorDrops(PlayerDropItemEvent event) {
|
||||
Player p = event.getPlayer();
|
||||
if (denyInteraction(p)) {
|
||||
event.setCancelled(true);
|
||||
p.sendMessage(ChatColor.RED + "You are spectating, you can't interfere with the game!");
|
||||
}
|
||||
}
|
||||
|
||||
@EventHandler
|
||||
public void SpectatorInteractBlock(PlayerInteractEvent event) {
|
||||
Player p = event.getPlayer();
|
||||
if (denyInteraction(p)) {
|
||||
event.setCancelled(true);
|
||||
p.sendMessage(ChatColor.RED + "You are spectating, you can't interfere with the game!");
|
||||
}
|
||||
}
|
||||
|
||||
@EventHandler
|
||||
public void SpectatorInteractEntity(PlayerInteractEntityEvent event) {
|
||||
Player p = event.getPlayer();
|
||||
if (denyInteraction(p)) {
|
||||
event.setCancelled(true);
|
||||
p.sendMessage(ChatColor.RED + "You are spectating, you can't interfere with the game!");
|
||||
}
|
||||
}
|
||||
|
||||
@EventHandler
|
||||
public void SpectatorItems(EntityPickupItemEvent event) {
|
||||
if (event.getEntity() instanceof Player) {
|
||||
Player p = (Player) event.getEntity();
|
||||
if (denyInteraction(p)) {
|
||||
event.setCancelled(true);
|
||||
p.sendMessage(ChatColor.RED + "You are spectating, you can't interfere with the game!");
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@EventHandler
|
||||
public void SpectatorPvP(EntityDamageByEntityEvent event) {
|
||||
Entity offense = event.getDamager();
|
||||
if (offense instanceof Player) {
|
||||
Player Attacker = (Player) event.getDamager();
|
||||
String attackerName = Attacker.getName();
|
||||
for (int i : plugin.Watching.keySet()) {
|
||||
if (plugin.Watching.get(i) != null) {
|
||||
if (plugin.Watching.get(i).contains(attackerName)) {
|
||||
event.setCancelled(true);
|
||||
Attacker.sendMessage(ChatColor.RED + "You are spectating, you can't interfere with the game!");
|
||||
return;
|
||||
}
|
||||
}
|
||||
}
|
||||
for (int i : plugin.Playing.keySet()) {
|
||||
if (plugin.Playing.get(i) != null) {
|
||||
if (plugin.Playing.get(i).contains(attackerName)) {
|
||||
event.setCancelled(true);
|
||||
}
|
||||
}
|
||||
}
|
||||
} else if (event.getDamager() instanceof Projectile) {
|
||||
Projectile arrow = (Projectile) offense;
|
||||
ProjectileSource shooter = arrow.getShooter();
|
||||
if (shooter instanceof Player) {
|
||||
Player BowMan = (Player) shooter;
|
||||
String bowManName = BowMan.getName();
|
||||
for (int i : plugin.Watching.keySet()) {
|
||||
if (plugin.Watching.get(i) != null) {
|
||||
if (plugin.Watching.get(i).contains(bowManName)) {
|
||||
event.setCancelled(true);
|
||||
BowMan.sendMessage(ChatColor.RED + "You are spectating, you can't interfere with the game!");
|
||||
return;
|
||||
}
|
||||
}
|
||||
}
|
||||
for (int i : plugin.Playing.keySet()) {
|
||||
if (plugin.Playing.get(i) != null) {
|
||||
if (plugin.Playing.get(i).contains(bowManName)) {
|
||||
event.setCancelled(true);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@EventHandler
|
||||
public void SpectatorBlockBreak(BlockBreakEvent event) {
|
||||
Player p = event.getPlayer();
|
||||
if (denyInteraction(p)) {
|
||||
event.setCancelled(true);
|
||||
p.sendMessage(ChatColor.RED + "You are spectating, you can't interfere with the game!");
|
||||
}
|
||||
}
|
||||
|
||||
@EventHandler
|
||||
public void SpectatorBlockPlace(BlockPlaceEvent event) {
|
||||
Player p = event.getPlayer();
|
||||
if (denyInteraction(p)) {
|
||||
event.setCancelled(true);
|
||||
p.sendMessage(ChatColor.RED + "You are spectating, you can't interfere with the game!");
|
||||
}
|
||||
}
|
||||
|
||||
@EventHandler
|
||||
public void SpectatorQuit(PlayerQuitEvent event) {
|
||||
Player p = event.getPlayer();
|
||||
String pname = p.getName();
|
||||
for (int i : plugin.Watching.keySet()) {
|
||||
if (plugin.Watching.get(i) != null) {
|
||||
if (plugin.Watching.get(i).contains(pname)) {
|
||||
plugin.Watching.get(i).remove(pname);
|
||||
String[] Spawncoords = plugin.spawns.getString("Spawn_coords.0").split(",");
|
||||
String w = Spawncoords[3];
|
||||
World spawnw = plugin.getServer().getWorld(w);
|
||||
double spawnx = Double.parseDouble(Spawncoords[0]);
|
||||
double spawny = Double.parseDouble(Spawncoords[1]);
|
||||
double spawnz = Double.parseDouble(Spawncoords[2]);
|
||||
final Location Spawn = new Location(spawnw, spawnx, spawny, spawnz);
|
||||
p.teleport(Spawn);
|
||||
p.getScoreboard().clearSlot(DisplaySlot.SIDEBAR);
|
||||
if (plugin.scoreboards.containsKey(p.getName())) {
|
||||
plugin.scoreboards.remove(p.getName());
|
||||
}
|
||||
if (plugin.Kills.containsKey(p.getName())) {
|
||||
plugin.Kills.remove(p.getName());
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@EventHandler
|
||||
public void MobNerf(EntityTargetEvent event) {
|
||||
Entity target = event.getTarget();
|
||||
Entity e = event.getEntity();
|
||||
if (e instanceof Player) {
|
||||
return;
|
||||
}
|
||||
if (target instanceof Player) {
|
||||
String targetName = ((Player) target).getName();
|
||||
for (int i : plugin.Watching.keySet()) {
|
||||
if (plugin.Watching.get(i) != null) {
|
||||
if (plugin.Watching.get(i).contains(targetName)) {
|
||||
event.setTarget(null);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
private boolean denyInteraction(Player p) {
|
||||
String pname = p.getName();
|
||||
for (int i : plugin.Watching.keySet()) {
|
||||
if (plugin.Watching.get(i) != null) {
|
||||
if (plugin.Watching.get(i).contains(pname)) {
|
||||
return true;
|
||||
}
|
||||
}
|
||||
}
|
||||
return false;
|
||||
}
|
||||
}
|
@@ -0,0 +1,193 @@
|
||||
package me.Travja.HungerArena.Listeners;
|
||||
|
||||
import me.Travja.HungerArena.Main;
|
||||
|
||||
import org.bukkit.ChatColor;
|
||||
import org.bukkit.Location;
|
||||
import org.bukkit.World;
|
||||
import org.bukkit.entity.Entity;
|
||||
import org.bukkit.entity.Player;
|
||||
import org.bukkit.entity.Projectile;
|
||||
import org.bukkit.event.EventHandler;
|
||||
import org.bukkit.event.Listener;
|
||||
import org.bukkit.event.block.BlockBreakEvent;
|
||||
import org.bukkit.event.block.BlockPlaceEvent;
|
||||
import org.bukkit.event.entity.EntityDamageByEntityEvent;
|
||||
import org.bukkit.event.entity.EntityTargetEvent;
|
||||
import org.bukkit.event.player.*;
|
||||
import org.bukkit.projectiles.ProjectileSource;
|
||||
import org.bukkit.scoreboard.DisplaySlot;
|
||||
|
||||
public class SpectatorListenerOld implements Listener {
|
||||
public Main plugin;
|
||||
|
||||
public SpectatorListenerOld(Main m) {
|
||||
this.plugin = m;
|
||||
}
|
||||
|
||||
int i = 0;
|
||||
|
||||
@EventHandler
|
||||
public void SpectatorDrops(PlayerDropItemEvent event) {
|
||||
Player p = event.getPlayer();
|
||||
if (denyInteraction(p)) {
|
||||
event.setCancelled(true);
|
||||
p.sendMessage(ChatColor.RED + "You are spectating, you can't interfere with the game!");
|
||||
}
|
||||
}
|
||||
|
||||
@EventHandler
|
||||
public void SpectatorInteractBlock(PlayerInteractEvent event) {
|
||||
Player p = event.getPlayer();
|
||||
if (denyInteraction(p)) {
|
||||
event.setCancelled(true);
|
||||
p.sendMessage(ChatColor.RED + "You are spectating, you can't interfere with the game!");
|
||||
}
|
||||
}
|
||||
|
||||
@EventHandler
|
||||
public void SpectatorInteractEntity(PlayerInteractEntityEvent event) {
|
||||
Player p = event.getPlayer();
|
||||
if (denyInteraction(p)) {
|
||||
event.setCancelled(true);
|
||||
p.sendMessage(ChatColor.RED + "You are spectating, you can't interfere with the game!");
|
||||
}
|
||||
}
|
||||
|
||||
@SuppressWarnings("deprecation")
|
||||
@EventHandler
|
||||
public void SpectatorItems(PlayerPickupItemEvent event) {
|
||||
Player p = event.getPlayer();
|
||||
if (denyInteraction(p)) {
|
||||
event.setCancelled(true);
|
||||
p.sendMessage(ChatColor.RED + "You are spectating, you can't interfere with the game!");
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
private boolean denyInteraction(Player p) {
|
||||
String pname = p.getName();
|
||||
for (int i : plugin.Watching.keySet()) {
|
||||
if (plugin.Watching.get(i) != null) {
|
||||
if (plugin.Watching.get(i).contains(pname)) {
|
||||
return true;
|
||||
}
|
||||
}
|
||||
}
|
||||
return false;
|
||||
}
|
||||
|
||||
|
||||
@EventHandler
|
||||
public void SpectatorPvP(EntityDamageByEntityEvent event) {
|
||||
Entity offense = event.getDamager();
|
||||
if (offense instanceof Player) {
|
||||
Player Attacker = (Player) event.getDamager();
|
||||
String attackerName = Attacker.getName();
|
||||
for (int i : plugin.Watching.keySet()) {
|
||||
if (plugin.Watching.get(i) != null) {
|
||||
if (plugin.Watching.get(i).contains(attackerName)) {
|
||||
event.setCancelled(true);
|
||||
Attacker.sendMessage(ChatColor.RED + "You are spectating, you can't interfere with the game!");
|
||||
return;
|
||||
}
|
||||
}
|
||||
}
|
||||
for (int i : plugin.Playing.keySet()) {
|
||||
if (plugin.Playing.get(i) != null) {
|
||||
if (plugin.Playing.get(i).contains(attackerName)) {
|
||||
event.setCancelled(true);
|
||||
}
|
||||
}
|
||||
}
|
||||
} else if (event.getDamager() instanceof Projectile) {
|
||||
Projectile arrow = (Projectile) offense;
|
||||
ProjectileSource shooter = arrow.getShooter();
|
||||
if (shooter instanceof Player) {
|
||||
Player BowMan = (Player) shooter;
|
||||
String bowManName = BowMan.getName();
|
||||
for (int i : plugin.Watching.keySet()) {
|
||||
if (plugin.Watching.get(i) != null) {
|
||||
if (plugin.Watching.get(i).contains(bowManName)) {
|
||||
event.setCancelled(true);
|
||||
BowMan.sendMessage(ChatColor.RED + "You are spectating, you can't interfere with the game!");
|
||||
return;
|
||||
}
|
||||
}
|
||||
}
|
||||
for (int i : plugin.Playing.keySet()) {
|
||||
if (plugin.Playing.get(i) != null) {
|
||||
if (plugin.Playing.get(i).contains(bowManName)) {
|
||||
event.setCancelled(true);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@EventHandler
|
||||
public void SpectatorBlockBreak(BlockBreakEvent event) {
|
||||
Player p = event.getPlayer();
|
||||
if (denyInteraction(p)) {
|
||||
event.setCancelled(true);
|
||||
p.sendMessage(ChatColor.RED + "You are spectating, you can't interfere with the game!");
|
||||
}
|
||||
}
|
||||
|
||||
@EventHandler
|
||||
public void SpectatorBlockPlace(BlockPlaceEvent event) {
|
||||
Player p = event.getPlayer();
|
||||
if (denyInteraction(p)) {
|
||||
event.setCancelled(true);
|
||||
p.sendMessage(ChatColor.RED + "You are spectating, you can't interfere with the game!");
|
||||
}
|
||||
}
|
||||
|
||||
@EventHandler
|
||||
public void SpectatorQuit(PlayerQuitEvent event) {
|
||||
Player p = event.getPlayer();
|
||||
String pname = p.getName();
|
||||
for (int i : plugin.Watching.keySet()) {
|
||||
if (plugin.Watching.get(i) != null) {
|
||||
if (plugin.Watching.get(i).contains(pname)) {
|
||||
plugin.Watching.get(i).remove(pname);
|
||||
String[] Spawncoords = plugin.spawns.getString("Spawn_coords.0").split(",");
|
||||
String w = Spawncoords[3];
|
||||
World spawnw = plugin.getServer().getWorld(w);
|
||||
double spawnx = Double.parseDouble(Spawncoords[0]);
|
||||
double spawny = Double.parseDouble(Spawncoords[1]);
|
||||
double spawnz = Double.parseDouble(Spawncoords[2]);
|
||||
final Location Spawn = new Location(spawnw, spawnx, spawny, spawnz);
|
||||
p.teleport(Spawn);
|
||||
p.getScoreboard().clearSlot(DisplaySlot.SIDEBAR);
|
||||
if (plugin.scoreboards.containsKey(p.getName())) {
|
||||
plugin.scoreboards.remove(p.getName());
|
||||
}
|
||||
if (plugin.Kills.containsKey(p.getName())) {
|
||||
plugin.Kills.remove(p.getName());
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@EventHandler
|
||||
public void MobNerf(EntityTargetEvent event) {
|
||||
Entity target = event.getTarget();
|
||||
Entity e = event.getEntity();
|
||||
if (e instanceof Player) {
|
||||
return;
|
||||
}
|
||||
if (target instanceof Player) {
|
||||
String targetName = ((Player) target).getName();
|
||||
for (int i : plugin.Watching.keySet()) {
|
||||
if (plugin.Watching.get(i) != null) {
|
||||
if (plugin.Watching.get(i).contains(targetName)) {
|
||||
event.setTarget(null);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
@@ -0,0 +1,33 @@
|
||||
package me.Travja.HungerArena.Listeners;
|
||||
|
||||
import me.Travja.HungerArena.Main;
|
||||
import org.bukkit.ChatColor;
|
||||
import org.bukkit.entity.Player;
|
||||
import org.bukkit.event.EventHandler;
|
||||
import org.bukkit.event.EventPriority;
|
||||
import org.bukkit.event.Listener;
|
||||
import org.bukkit.event.player.PlayerTeleportEvent;
|
||||
|
||||
public class TeleportListener implements Listener {
|
||||
|
||||
public Main plugin;
|
||||
|
||||
public TeleportListener(Main m) {
|
||||
this.plugin = m;
|
||||
}
|
||||
|
||||
@EventHandler(priority = EventPriority.MONITOR)
|
||||
public void onTP(PlayerTeleportEvent event) {
|
||||
Player p = event.getPlayer();
|
||||
if (plugin.worldsNames.values().contains(event.getTo().getWorld().getName()) && plugin.Tele.contains(p)) {
|
||||
event.setCancelled(true);
|
||||
p.sendMessage(ChatColor.RED + "You are a dead tribute... How are you supposed to get back into the arena....");
|
||||
plugin.Tele.remove(p);
|
||||
} else if (plugin.Tele.contains(p)) {
|
||||
if (event.isCancelled()) {
|
||||
event.setCancelled(false);
|
||||
plugin.Tele.remove(p);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
@@ -0,0 +1,58 @@
|
||||
package me.Travja.HungerArena.Listeners;
|
||||
|
||||
import me.Travja.HungerArena.Main;
|
||||
import org.bukkit.Location;
|
||||
import org.bukkit.entity.Player;
|
||||
import org.bukkit.event.EventHandler;
|
||||
import org.bukkit.event.EventPriority;
|
||||
import org.bukkit.event.Listener;
|
||||
import org.bukkit.event.player.PlayerChangedWorldEvent;
|
||||
|
||||
public class WorldChange implements Listener {
|
||||
public Main plugin;
|
||||
|
||||
public WorldChange(Main m) {
|
||||
plugin = m;
|
||||
}
|
||||
|
||||
@EventHandler(priority = EventPriority.LOWEST)
|
||||
public void worldChangeLow(PlayerChangedWorldEvent event) {
|
||||
Player p = event.getPlayer();
|
||||
String pname = p.getName();
|
||||
String ThisWorld = p.getWorld().getName();
|
||||
String FromWorld = event.getFrom().getName();
|
||||
if (!plugin.worldsNames.values().contains(ThisWorld) && plugin.worldsNames.values().contains(FromWorld)) {
|
||||
plugin.RestoreInv(p, pname);
|
||||
}
|
||||
}
|
||||
|
||||
@EventHandler(priority = EventPriority.HIGH)
|
||||
public void worldChangeHigh(PlayerChangedWorldEvent event) {
|
||||
Player p = event.getPlayer();
|
||||
String pname = p.getName();
|
||||
String ThisWorld = p.getWorld().getName();
|
||||
int a = 0;
|
||||
for (int i : plugin.worldsNames.keySet()) {
|
||||
if (plugin.worldsNames.get(i) != null) {
|
||||
if (plugin.worldsNames.get(i).equals(ThisWorld)) {
|
||||
a = i;
|
||||
if (plugin.Frozen.get(a) != null && plugin.Frozen.get(a).contains(pname)) {
|
||||
return;
|
||||
} else {
|
||||
plugin.RestoreInv(p, pname);
|
||||
if (plugin.config.getString("joinTeleport").equalsIgnoreCase("true")) {
|
||||
String[] Spawncoords = plugin.spawns.getString("Spawn_coords." + a).split(",");
|
||||
double spawnx = Double.parseDouble(Spawncoords[0]);
|
||||
double spawny = Double.parseDouble(Spawncoords[1]);
|
||||
double spawnz = Double.parseDouble(Spawncoords[2]);
|
||||
Location Spawn = new Location(p.getWorld(), spawnx, spawny, spawnz);
|
||||
if (!p.getLocation().getBlock().equals(Spawn.getBlock())) {
|
||||
p.teleport(Spawn);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
@@ -0,0 +1,61 @@
|
||||
package me.Travja.HungerArena.Listeners;
|
||||
|
||||
import me.Travja.HungerArena.Main;
|
||||
import org.bukkit.ChatColor;
|
||||
import org.bukkit.Location;
|
||||
import org.bukkit.entity.Player;
|
||||
import org.bukkit.event.EventHandler;
|
||||
import org.bukkit.event.Listener;
|
||||
import org.bukkit.event.block.Action;
|
||||
import org.bukkit.event.player.PlayerInteractEvent;
|
||||
|
||||
import java.util.Collection;
|
||||
|
||||
public class spawnsListener implements Listener {
|
||||
public Main plugin;
|
||||
|
||||
public spawnsListener(Main m) {
|
||||
this.plugin = m;
|
||||
}
|
||||
|
||||
@EventHandler
|
||||
public void interact(PlayerInteractEvent event) {
|
||||
Player p = event.getPlayer();
|
||||
if (plugin.setting.containsKey(p.getName())) {
|
||||
if (event.getAction() == Action.RIGHT_CLICK_BLOCK) {
|
||||
Location l = event.getClickedBlock().getLocation();
|
||||
String HandItem;
|
||||
try {
|
||||
HandItem = p.getInventory().getItemInMainHand().getType().name();
|
||||
} catch (Exception e) {
|
||||
HandItem = p.getItemInHand().getType().name();
|
||||
}
|
||||
if (HandItem == plugin.config.getString("spawnsTool")) {
|
||||
String[] info = plugin.setting.get(p.getName()).split("-");
|
||||
if (Integer.parseInt(info[1]) != plugin.config.getInt("maxPlayers") + 1) {
|
||||
String coords = l.getWorld().getName() + " " + ((double) l.getX() + .5) + " " + ((double) l.getY() + 1) + " " + ((double) l.getZ() + .5);
|
||||
|
||||
int arena = Integer.parseInt(info[0]);
|
||||
if (plugin.spawns.get("Spawns." + arena) != null) {
|
||||
Collection<Object> temp = plugin.spawns.getConfigurationSection("Spawns." + arena).getValues(false).values();
|
||||
if (temp.contains(coords.trim().replace(' ', ','))) {
|
||||
event.setCancelled(true);
|
||||
return;
|
||||
}
|
||||
}
|
||||
|
||||
p.performCommand("startpoint " + info[0] + " " + info[1] + " " + coords);
|
||||
|
||||
if (Integer.parseInt(info[1]) >= plugin.config.getInt("maxPlayers")) {
|
||||
p.sendMessage(ChatColor.DARK_AQUA + "[HungerArena] " + ChatColor.RED + "All spawns set!");
|
||||
plugin.setting.remove(p.getName());
|
||||
} else {
|
||||
plugin.setting.put(p.getName(), info[0] + "-" + (Integer.parseInt(info[1]) + 1));
|
||||
p.sendMessage(ChatColor.DARK_AQUA + "[HungerArena] " + ChatColor.RED + "Next starting point: " + (Integer.parseInt(info[1]) + 1));
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
1258
src/main/java/me/Travja/HungerArena/Main.java
Normal file
1258
src/main/java/me/Travja/HungerArena/Main.java
Normal file
File diff suppressed because it is too large
Load Diff
180
src/main/java/me/Travja/HungerArena/SpawnsCommand.java
Normal file
180
src/main/java/me/Travja/HungerArena/SpawnsCommand.java
Normal file
@@ -0,0 +1,180 @@
|
||||
package me.Travja.HungerArena;
|
||||
|
||||
import java.util.ArrayList;
|
||||
import java.util.HashMap;
|
||||
|
||||
import org.bukkit.Bukkit;
|
||||
import org.bukkit.ChatColor;
|
||||
import org.bukkit.Location;
|
||||
import org.bukkit.command.Command;
|
||||
import org.bukkit.command.CommandExecutor;
|
||||
import org.bukkit.command.CommandSender;
|
||||
import org.bukkit.entity.Player;
|
||||
|
||||
public class SpawnsCommand implements CommandExecutor {
|
||||
public Main plugin;
|
||||
int i = 0;
|
||||
int a = 0;
|
||||
boolean NoPlayerSpawns;
|
||||
|
||||
public SpawnsCommand(Main m) {
|
||||
this.plugin = m;
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean onCommand(CommandSender sender, Command cmd, String commandLabel, String[] args) {
|
||||
Player p = (Player) sender;
|
||||
String ThisWorld = p.getWorld().getName();
|
||||
NoPlayerSpawns = true;
|
||||
for (int i : plugin.worldsNames.keySet()) {
|
||||
if (plugin.worldsNames.get(i) != null) {
|
||||
if (plugin.worldsNames.get(i).equals(ThisWorld)) {
|
||||
a = i;
|
||||
NoPlayerSpawns = false;
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
||||
if (cmd.getName().equalsIgnoreCase("StartPoint")) {
|
||||
if (p.hasPermission("HungerArena.StartPoint")) {
|
||||
Location loc = null;
|
||||
double x;
|
||||
double y;
|
||||
double z;
|
||||
if (args.length == 6) {
|
||||
try {
|
||||
i = Integer.valueOf(args[1]);
|
||||
a = Integer.valueOf(args[0]);
|
||||
} catch (Exception e) {
|
||||
p.sendMessage(ChatColor.RED + "Argument not an integer!");
|
||||
return true;
|
||||
}
|
||||
|
||||
String world = args[2];
|
||||
x = Double.parseDouble(args[3]);
|
||||
y = Double.parseDouble(args[4]);
|
||||
z = Double.parseDouble(args[5]);
|
||||
loc = new Location(Bukkit.getWorld(world), x, y, z);
|
||||
if (plugin.location.get(a) != null) {
|
||||
plugin.location.get(a).put(i, loc);
|
||||
} else {
|
||||
plugin.location.put(a, new HashMap<Integer, Location>());
|
||||
plugin.location.get(a).put(i, loc);
|
||||
plugin.Playing.put(a, new ArrayList<String>());
|
||||
plugin.Ready.put(a, new ArrayList<String>());
|
||||
plugin.Dead.put(a, new ArrayList<String>());
|
||||
plugin.Quit.put(a, new ArrayList<String>());
|
||||
plugin.Out.put(a, new ArrayList<String>());
|
||||
plugin.Watching.put(a, new ArrayList<String>());
|
||||
plugin.NeedConfirm.put(a, new ArrayList<String>());
|
||||
plugin.inArena.put(a, new ArrayList<String>());
|
||||
plugin.Frozen.put(a, new ArrayList<String>());
|
||||
plugin.arena.put(a, new ArrayList<String>());
|
||||
plugin.canjoin.put(a, false);
|
||||
plugin.MatchRunning.put(a, null);
|
||||
plugin.open.put(a, true);
|
||||
}
|
||||
String coords = loc.getWorld().getName() + "," + (loc.getX()) + "," + loc.getY() + "," + (loc.getZ());
|
||||
p.sendMessage(coords);
|
||||
plugin.spawns.set("Spawns." + a + "" + i, coords);
|
||||
plugin.worldsNames.put(a, loc.getWorld().getName());
|
||||
plugin.saveSpawns();
|
||||
plugin.maxPlayers.put(a, plugin.location.get(a).size());
|
||||
p.sendMessage(ChatColor.AQUA + "You have set the spawn location of Tribute " + i + " in arena " + a + "!");
|
||||
this.plugin.reloadSpawnpoints(false);
|
||||
return true;
|
||||
}
|
||||
if (args.length >= 2) {
|
||||
try {
|
||||
i = Integer.valueOf(args[1]);
|
||||
a = Integer.valueOf(args[0]);
|
||||
} catch (Exception e) {
|
||||
p.sendMessage(ChatColor.RED + "Argument not an integer!");
|
||||
return true;
|
||||
}
|
||||
if (i >= 1 && i <= plugin.config.getInt("maxPlayers")) {
|
||||
if (!plugin.worldsNames.values().contains(p.getWorld().getName())) {
|
||||
p.sendMessage(ChatColor.GOLD + "You've added this world to the config ...");
|
||||
}
|
||||
loc = p.getLocation().getBlock().getLocation();
|
||||
x = loc.getX() + .5;
|
||||
y = loc.getY();
|
||||
z = loc.getZ() + .5;
|
||||
loc = new Location(loc.getWorld(), x, y, z);
|
||||
if (plugin.location.get(a) != null) {
|
||||
plugin.location.get(a).put(i, loc);
|
||||
} else {
|
||||
plugin.location.put(a, new HashMap<Integer, Location>());
|
||||
plugin.location.get(a).put(i, loc);
|
||||
plugin.Playing.put(a, new ArrayList<String>());
|
||||
plugin.Ready.put(a, new ArrayList<String>());
|
||||
plugin.Dead.put(a, new ArrayList<String>());
|
||||
plugin.Quit.put(a, new ArrayList<String>());
|
||||
plugin.Out.put(a, new ArrayList<String>());
|
||||
plugin.Watching.put(a, new ArrayList<String>());
|
||||
plugin.NeedConfirm.put(a, new ArrayList<String>());
|
||||
plugin.inArena.put(a, new ArrayList<String>());
|
||||
plugin.Frozen.put(a, new ArrayList<String>());
|
||||
plugin.arena.put(a, new ArrayList<String>());
|
||||
plugin.canjoin.put(a, false);
|
||||
plugin.MatchRunning.put(a, null);
|
||||
plugin.open.put(a, true);
|
||||
}
|
||||
String coords = loc.getWorld().getName() + "," + (loc.getX()) + "," + loc.getY() + "," + (loc.getZ());
|
||||
p.sendMessage(coords);
|
||||
plugin.spawns.set("Spawns." + a + "" + i, coords);
|
||||
plugin.worldsNames.put(a, loc.getWorld().getName());
|
||||
plugin.saveSpawns();
|
||||
plugin.maxPlayers.put(a, plugin.location.get(a).size());
|
||||
p.sendMessage(ChatColor.AQUA + "You have set the spawn location of Tribute " + i + " in arena " + a + "!");
|
||||
this.plugin.reloadSpawnpoints(false);
|
||||
} else {
|
||||
p.sendMessage(ChatColor.RED + "You can't go past " + plugin.config.getInt("maxPlayers") + " players!");
|
||||
}
|
||||
} else if (args.length == 1) {
|
||||
if (sender instanceof Player) {
|
||||
p = (Player) sender;
|
||||
if (NoPlayerSpawns) {
|
||||
try {
|
||||
a = Integer.parseInt(args[0]);
|
||||
} catch (Exception e) {
|
||||
p.sendMessage(ChatColor.RED + "Argument not an integer!");
|
||||
return true;
|
||||
}
|
||||
}
|
||||
if (plugin.spawns.get("Spawns." + a) != null) {
|
||||
int start = 1;
|
||||
while (start < plugin.config.getInt("maxPlayers") + 2) {
|
||||
if (plugin.spawns.get("Spawns." + a + "" + start) != null) {
|
||||
start = start + 1;
|
||||
if (start == plugin.config.getInt("maxPlayers") + 1) {
|
||||
p.sendMessage(ChatColor.DARK_AQUA + "[HungerArena] " + ChatColor.GREEN + "All spawns set, type /startpoint [Arena #] [Spawn #] to over-ride previous points!");
|
||||
return true;
|
||||
}
|
||||
} else {
|
||||
int sloc = start;
|
||||
start = plugin.config.getInt("maxPlayers") + 1;
|
||||
p.sendMessage(ChatColor.DARK_AQUA + "[HungerArena] " + ChatColor.RED + "Begin Setting For Arena " + a + " Starting From Point " + sloc);
|
||||
plugin.setting.put(p.getName(), a + "-" + sloc);
|
||||
return true;
|
||||
}
|
||||
}
|
||||
}
|
||||
p.sendMessage(ChatColor.DARK_AQUA + "[HungerArena] " + ChatColor.RED + "Begin Setting For Arena " + a + " Starting From Point " + 1);
|
||||
plugin.setting.put(p.getName(), a + "-" + 1);
|
||||
return true;
|
||||
} else {
|
||||
sender.sendMessage(ChatColor.BLUE + "This Can Only Be Sent As A Player");
|
||||
}
|
||||
} else {
|
||||
p.sendMessage(ChatColor.RED + "No argument given! \nUse command like this:\n/startpoint [Arena #] [Startpoint #] for setting your position as a startpoint.\n/startpoint [Arena #] [Startpoint #] [Mapname] [x] [y] [z] \nOr you can use /startpoint [Arena #] to use the 'spawntool': ID" + plugin.config.getInt("spawnsTool") + " for setting the startpoints!");
|
||||
return false;
|
||||
}
|
||||
} else {
|
||||
p.sendMessage(ChatColor.RED + "You don't have permission!");
|
||||
}
|
||||
}
|
||||
return false;
|
||||
}
|
||||
|
||||
}
|
152
src/main/java/me/Travja/HungerArena/SponsorCommands.java
Normal file
152
src/main/java/me/Travja/HungerArena/SponsorCommands.java
Normal file
@@ -0,0 +1,152 @@
|
||||
package me.Travja.HungerArena;
|
||||
|
||||
import org.bukkit.Bukkit;
|
||||
import org.bukkit.ChatColor;
|
||||
import org.bukkit.Material;
|
||||
import org.bukkit.command.Command;
|
||||
import org.bukkit.command.CommandExecutor;
|
||||
import org.bukkit.command.CommandSender;
|
||||
import org.bukkit.command.ConsoleCommandSender;
|
||||
import org.bukkit.entity.Player;
|
||||
import org.bukkit.inventory.ItemStack;
|
||||
|
||||
public class SponsorCommands implements CommandExecutor {
|
||||
public Main plugin;
|
||||
|
||||
public SponsorCommands(Main m) {
|
||||
this.plugin = m;
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean onCommand(CommandSender sender, Command cmd, String commandLabel, String[] args) {
|
||||
if (cmd.getName().equalsIgnoreCase("Sponsor")) {
|
||||
if (sender instanceof Player) {
|
||||
Player p = (Player) sender;
|
||||
if (p.hasPermission("HungerArena.Sponsor")) {
|
||||
if (plugin.getArena(p) == null) {
|
||||
if (args.length == 0) {
|
||||
p.sendMessage(ChatColor.RED + "You didn't specify a tribute!");
|
||||
return false;
|
||||
}
|
||||
if (args.length == 1) {
|
||||
p.sendMessage(ChatColor.RED + "You didn't specify an item!");
|
||||
}
|
||||
if (args.length == 2) {
|
||||
p.sendMessage(ChatColor.RED + "You didn't specify an amount!");
|
||||
}
|
||||
if (args.length >= 3) {
|
||||
Player target = Bukkit.getServer().getPlayer(args[0]);
|
||||
if (target == null || (target != null && plugin.getArena(target) == null)) {
|
||||
p.sendMessage(ChatColor.RED + "That person isn't playing!");
|
||||
} else {
|
||||
try {
|
||||
String ID = args[1].toUpperCase().trim();
|
||||
int amount = Integer.parseInt(args[2]);
|
||||
if ((!plugin.management.getStringList("sponsors.blacklist").isEmpty() && !plugin.management.getStringList("sponsors.blacklist").contains(ID)) || plugin.management.getStringList("sponsors.blacklist").isEmpty()) {
|
||||
handleItemsAndEco(p, args, ID, amount, target);
|
||||
} else {
|
||||
p.sendMessage(ChatColor.RED + "You can't sponsor that item!");
|
||||
p.sendMessage(ChatColor.GREEN + "Other items you can't sponsor are:");
|
||||
for (String blacklist : plugin.management.getStringList("sponsors.blacklist")) {
|
||||
p.sendMessage(ChatColor.AQUA + blacklist);
|
||||
}
|
||||
}
|
||||
} catch (Exception e) {
|
||||
p.sendMessage(ChatColor.RED + "Something went wrong there... Make sure that you do like this /sponsor [name] [item] [number]");
|
||||
}
|
||||
}
|
||||
}
|
||||
} else {
|
||||
p.sendMessage(ChatColor.RED + "You are playing, you can't sponsor yourself!");
|
||||
}
|
||||
} else {
|
||||
p.sendMessage(ChatColor.RED + "You don't have permission!");
|
||||
}
|
||||
} else if (sender instanceof ConsoleCommandSender) {
|
||||
if (args.length == 0) {
|
||||
sender.sendMessage(ChatColor.RED + "You didn't specify a tribute!");
|
||||
return false;
|
||||
}
|
||||
if (args.length == 1) {
|
||||
sender.sendMessage(ChatColor.RED + "You didn't specify an item!");
|
||||
}
|
||||
if (args.length == 2) {
|
||||
sender.sendMessage(ChatColor.RED + "You didn't specify an amount!");
|
||||
}
|
||||
if (args.length >= 3) {
|
||||
Player target = Bukkit.getPlayer(args[0]);
|
||||
String ID = args[1].toUpperCase().trim();
|
||||
int Amount = Integer.parseInt(args[2]);
|
||||
try {
|
||||
if ((!plugin.management.getStringList("sponsors.blacklist").isEmpty() && !plugin.management.getStringList("sponsors.blacklist").contains(ID)) || plugin.management.getStringList("sponsors.blacklist").isEmpty()) {
|
||||
ItemStack sponsoritem = new ItemStack(org.bukkit.Material.getMaterial(ID), Amount);
|
||||
if (plugin.getArena(target) == null) {
|
||||
sender.sendMessage(ChatColor.RED + "That person isn't playing!");
|
||||
} else {
|
||||
sender.sendMessage(ChatColor.RED + "You can't sponsor yourself!");
|
||||
target.sendMessage(ChatColor.AQUA + "You have been Sponsored!");
|
||||
target.getInventory().addItem(sponsoritem);
|
||||
sender.sendMessage("You have sponsored " + target.getName() + "!");
|
||||
}
|
||||
} else {
|
||||
sender.sendMessage(ChatColor.RED + "You can't sponsor that item!");
|
||||
sender.sendMessage(ChatColor.GREEN + "Other items you can't sponsor are:");
|
||||
for (String blacklist : plugin.management.getStringList("sponsors.blacklist")) {
|
||||
sender.sendMessage(ChatColor.AQUA + blacklist);
|
||||
}
|
||||
}
|
||||
} catch (Exception e) {
|
||||
sender.sendMessage(ChatColor.RED + "Something went wrong there... Make sure that you do like this /sponsor [name] [number] [number]");
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
return false;
|
||||
}
|
||||
|
||||
private void handleItemsAndEco(Player p, String[] args, String ID, int amount, Player target) {
|
||||
Material sponsMat = plugin.getNewMaterial(ID, 0);
|
||||
ItemStack sponsoritem;
|
||||
boolean done = false;
|
||||
if (sponsMat != null) {
|
||||
sponsoritem = new ItemStack(sponsMat, amount);
|
||||
} else {
|
||||
p.sendMessage(ChatColor.RED + "That item does not exist !!");
|
||||
return;
|
||||
}
|
||||
for (ItemStack Costs : plugin.Cost) {
|
||||
if (!p.getInventory().containsAtLeast(Costs, Costs.getAmount() * amount)) {
|
||||
p.sendMessage(ChatColor.RED + "You don't have the necessary items to sponsor!");
|
||||
return;
|
||||
}
|
||||
}
|
||||
if (args[0].equalsIgnoreCase(p.getName())) {
|
||||
p.sendMessage(ChatColor.RED + "You can't sponsor yourself!");
|
||||
} else {
|
||||
if (plugin.config.getBoolean("sponsorEco.enabled")) {
|
||||
if (!(plugin.econ.getBalance(p) < (plugin.config.getDouble("sponsorEco.cost") * amount))) {
|
||||
plugin.econ.withdrawPlayer(p, plugin.config.getDouble("sponsorEco.cost") * amount);
|
||||
done = true;
|
||||
} else {
|
||||
p.sendMessage(ChatColor.RED + "You don't have enough money to do that!");
|
||||
return;
|
||||
}
|
||||
}
|
||||
if (!plugin.Cost.isEmpty()) {
|
||||
for (ItemStack aCosts : plugin.Cost) {
|
||||
for (int x = 1; x <= amount; x++) {
|
||||
p.getInventory().removeItem(aCosts);
|
||||
done = true;
|
||||
}
|
||||
}
|
||||
}
|
||||
if (done) {
|
||||
target.getInventory().addItem(sponsoritem);
|
||||
target.sendMessage(ChatColor.AQUA + "You have been Sponsored!");
|
||||
p.sendMessage("You have sponsored " + target.getName() + "!");
|
||||
} else {
|
||||
p.sendMessage(ChatColor.RED + "Sponsoring is disabled!");
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
3
src/main/resources/Data.yml
Normal file
3
src/main/resources/Data.yml
Normal file
@@ -0,0 +1,3 @@
|
||||
# Stores all blocks to reset!
|
||||
Blocks_Destroyed: [ ]
|
||||
Blocks_Placed: [ ]
|
6
src/main/resources/Player.yml
Normal file
6
src/main/resources/Player.yml
Normal file
@@ -0,0 +1,6 @@
|
||||
# This is the default inventory file for storing players inventory during matches !
|
||||
# DO not Edit anything in here!!!
|
||||
|
||||
inv: [ ]
|
||||
armor: [ ]
|
||||
world: world
|
13
src/main/resources/commandAndBlockManagement.yml
Normal file
13
src/main/resources/commandAndBlockManagement.yml
Normal file
@@ -0,0 +1,13 @@
|
||||
# Make like this to whitelist/blacklist
|
||||
# whitelist:
|
||||
# - /broadcast
|
||||
# - /pm
|
||||
# Anything not in the whitelist will be counted as blacklist!
|
||||
|
||||
commands:
|
||||
whitelist: [ ]
|
||||
blocks:
|
||||
useWhitelistAsBlacklist: false
|
||||
whitelist: [ ]
|
||||
sponsors:
|
||||
blacklist: [ ]
|
126
src/main/resources/config.yml
Normal file
126
src/main/resources/config.yml
Normal file
@@ -0,0 +1,126 @@
|
||||
# default config.yml
|
||||
|
||||
#config version for us devs. DONT CHANGE THIS, or it will screw up some things PRETTY badly.
|
||||
config:
|
||||
version: 1.4
|
||||
|
||||
######################################
|
||||
######## Game Configuration #########
|
||||
######################################
|
||||
|
||||
# If all HA features are restricted to the HA-world(s) only .
|
||||
# If set to 'false' all worlds will be allowed.
|
||||
Restricted: true
|
||||
|
||||
# If left at 0 there will be no death match, fill in a time in minutes
|
||||
DeathMatch: 0
|
||||
|
||||
#Whether or not to broadcast game messages to all players
|
||||
broadcastAll: true
|
||||
|
||||
# The max amount of players that can be in a game, This is also dependent on the amount of startpoints you have set.
|
||||
maxPlayers: 24
|
||||
|
||||
# If the worlds spawn is not the same as your Arena spawn you can set this to true for players spawn at arena
|
||||
joinTeleport: 'false'
|
||||
|
||||
# Message to display when the games start
|
||||
Start_Message: '&bLet The Games Begin!'
|
||||
|
||||
# If the games should automatically restart at the end
|
||||
Auto_Restart: 'false'
|
||||
|
||||
# If it should automatically start the countdown on warping
|
||||
Auto_Start: 'false'
|
||||
|
||||
# If it should automatically warp players if there are enough (else wait for the command 'warpall')
|
||||
Auto_Warp: 'true'
|
||||
|
||||
# If tributes need to type /ha confirm to join
|
||||
Need_Confirm: 'true'
|
||||
|
||||
# Whether or not the countdown will start upon warping.
|
||||
Countdown: 'true'
|
||||
|
||||
# Duration of the countdown .
|
||||
Countdown_Timer: 15
|
||||
|
||||
# How long the grace period should last (seconds)
|
||||
Grace_Period: 60
|
||||
|
||||
# Whether or not players can break ANY blocks while playing
|
||||
Protected_Arena: 'true'
|
||||
|
||||
# Whether or not players (not playing) can break blocks while waiting
|
||||
Protected_Arena_Always: 'true'
|
||||
|
||||
# Whether new or unknown players on HA-maps should be forced to the spawn or not.
|
||||
Force_Players_toSpawn: 'true'
|
||||
|
||||
# Whether or not players will be frozen when they are teleported to their positions
|
||||
Frozen_Teleport: 'true'
|
||||
|
||||
# If the Tributes will get blown to bits when stepping off the pedestal
|
||||
Explode_on_Move: 'false'
|
||||
|
||||
# Whether or not thunder will sound upon a players death
|
||||
Cannon_Death: 'true'
|
||||
|
||||
# Whether players are allowed to use beds, or not!
|
||||
DenyBedUsage: 'true'
|
||||
|
||||
# Whether or not to have the arena be the world or the WorldEdit selection
|
||||
WorldEdit: false
|
||||
|
||||
# What item should be used to set spawns after /startpoint [arena#]
|
||||
spawnsTool: GOLDEN_AXE
|
||||
|
||||
######################################
|
||||
######################################
|
||||
######################################
|
||||
|
||||
################################
|
||||
###### Rewards/Sponsoring ######
|
||||
################################
|
||||
|
||||
# What the reward for winning is
|
||||
Reward:
|
||||
- DIAMOND,10
|
||||
Sponsor_Cost:
|
||||
- DIAMOND,1
|
||||
EntryFee:
|
||||
enabled: false
|
||||
eco: false
|
||||
cost: 50
|
||||
fee:
|
||||
- IRON_INGOT,1
|
||||
# True means give money to winner, false means don't.
|
||||
# How much money to give the winner.
|
||||
rewardEco:
|
||||
enabled: false
|
||||
reward: 100
|
||||
# What sponsors have to pay to sponsor tributes
|
||||
sponsorEco:
|
||||
enabled: false
|
||||
cost: 50
|
||||
# Pay the Players for finding chests etc.
|
||||
ChestPay:
|
||||
enabled: false
|
||||
items:
|
||||
- COOKED_BEEF,2
|
||||
################################
|
||||
################################
|
||||
################################
|
||||
|
||||
#############################
|
||||
####### Chat Related ########
|
||||
#############################
|
||||
|
||||
# If players will only talk to close players of the whole server
|
||||
ChatClose: 'true'
|
||||
|
||||
# How close the players have to be to talk to them
|
||||
ChatClose_Radius: 10
|
||||
#############################
|
||||
#############################
|
||||
#############################
|
18
src/main/resources/plugin.yml
Normal file
18
src/main/resources/plugin.yml
Normal file
@@ -0,0 +1,18 @@
|
||||
name: HungerArena
|
||||
main: me.Travja.HungerArena.Main
|
||||
version: 1.6_Jeppa
|
||||
api-version: 1.18
|
||||
description: A lightweight and powerful plugin to help with playing The Hunger Games!
|
||||
softdepend: [ Vault, WorldEdit, Multiverse-Core ]
|
||||
commands:
|
||||
Ha:
|
||||
description: Makes you join a game or start the game!
|
||||
StartPoint:
|
||||
description: Sets the starting point of a tribute.
|
||||
usage: /<command> [arenanumber] [startpointnumber]
|
||||
permission: HungerArena.StartPoint
|
||||
permission-message: §4[HungerArena]§rYou don't have permission!!!!
|
||||
Sponsor:
|
||||
description: Sponsors a Tribute
|
||||
permission: HungerArena.Sponsor
|
||||
permission-message: §4[HungerArena]§rYou don't have permission!!!!
|
9
src/main/resources/spawns.yml
Normal file
9
src/main/resources/spawns.yml
Normal file
@@ -0,0 +1,9 @@
|
||||
# This file stores all of the spawns!
|
||||
Spawn_coords: [ ]
|
||||
# If /ha setspawn has been run
|
||||
Spawns_set:
|
||||
0: 'false'
|
||||
Spawns:
|
||||
1:
|
||||
1:
|
||||
2:
|
Reference in New Issue
Block a user