summaryrefslogtreewikicommitdiff
path: root/src/main/java/net/tylermurphy
diff options
context:
space:
mode:
Diffstat (limited to 'src/main/java/net/tylermurphy')
-rw-r--r--src/main/java/net/tylermurphy/hideAndSeek/CommandHandler.java24
-rw-r--r--src/main/java/net/tylermurphy/hideAndSeek/Store.java97
-rw-r--r--src/main/java/net/tylermurphy/hideAndSeek/commands/Help.java2
-rw-r--r--src/main/java/net/tylermurphy/hideAndSeek/commands/Start.java4
-rw-r--r--src/main/java/net/tylermurphy/hideAndSeek/events/EventListener.java127
5 files changed, 218 insertions, 36 deletions
diff --git a/src/main/java/net/tylermurphy/hideAndSeek/CommandHandler.java b/src/main/java/net/tylermurphy/hideAndSeek/CommandHandler.java
index b1a6f89..d62d153 100644
--- a/src/main/java/net/tylermurphy/hideAndSeek/CommandHandler.java
+++ b/src/main/java/net/tylermurphy/hideAndSeek/CommandHandler.java
@@ -36,16 +36,22 @@ public class CommandHandler {
public static boolean handleCommand(CommandSender sender, Command cmd, String label, String[] args) {
if(sender instanceof Player == false) {
sender.sendMessage(errorPrefix + "This command can only be run as a player.");
- } else if(args.length < 1) {
- COMMAND_REGISTER.get("about").execute(sender, new String[0]);
- } else if(!COMMAND_REGISTER.containsKey(args[0].toLowerCase())) {
- COMMAND_REGISTER.get("about").execute(sender, Arrays.copyOfRange(args, 1, args.length));
+ } else if(args.length < 1 || !COMMAND_REGISTER.containsKey(args[0].toLowerCase()) ) {
+ if(permissionsRequired && !sender.hasPermission("hideandseek.about")) {
+ sender.sendMessage(errorPrefix + "You are not allowed to run this command.");
+ } else {
+ COMMAND_REGISTER.get("about").execute(sender, null);
+ }
} else {
- try {
- COMMAND_REGISTER.get(args[0].toLowerCase()).execute(sender,Arrays.copyOfRange(args, 1, args.length));
- } catch (Exception e) {
- sender.sendMessage(errorPrefix + "An error has occured.");
- e.printStackTrace();
+ if(permissionsRequired && !sender.hasPermission("hideandseek."+args[0].toLowerCase())) {
+ sender.sendMessage(errorPrefix + "You are not allowed to run this command.");
+ } else {
+ try {
+ COMMAND_REGISTER.get(args[0].toLowerCase()).execute(sender,Arrays.copyOfRange(args, 1, args.length));
+ } catch (Exception e) {
+ sender.sendMessage(errorPrefix + "An error has occured.");
+ e.printStackTrace();
+ }
}
}
return true;
diff --git a/src/main/java/net/tylermurphy/hideAndSeek/Store.java b/src/main/java/net/tylermurphy/hideAndSeek/Store.java
index afbb79c..1014c0e 100644
--- a/src/main/java/net/tylermurphy/hideAndSeek/Store.java
+++ b/src/main/java/net/tylermurphy/hideAndSeek/Store.java
@@ -15,31 +15,56 @@ import org.bukkit.util.Vector;
public class Store {
- public static Map<String,Player> playerList = new HashMap<String,Player>();
+ public static Map<String,Player>
+ playerList = new HashMap<String,Player>();
- public static Scoreboard board;
- public static Team Hider,Seeker,Spectator;
+ public static Scoreboard
+ board;
- public static String status = "Setup";
+ public static Team
+ Hider,
+ Seeker,
+ Spectator;
- public static String messagePrefix,errorPrefix,tauntPrefix,worldborderPrefix,abortPrefix,gameoverPrefix;
+ public static String
+ messagePrefix,
+ errorPrefix,
+ tauntPrefix,
+ worldborderPrefix,
+ abortPrefix,
+ gameoverPrefix,
+ spawnWorld,
+ status = "Setup",
+ tauntPlayer = "";
- public static Vector spawnPosition;
- public static String spawnWorld;
+ public static Vector
+ spawnPosition,
+ worldborderPosition;
- public static Vector worldborderPosition;
- public static int worldborderSize,worldborderDelay,currentWorldborderSize;
- public static boolean worldborderEnabled = false, decreaseBorder = false;
+ public static List<String>
+ blockedCommands;
- public static List<String> blockedCommands;
+ public static boolean
+ nametagsVisible,
+ permissionsRequired,
+ unbreakableArmorstands,
+ unbreakablePaintings,
+ unbreakableItemframes,
+ interactableArmorstands,
+ interactableItemframes,
+ interactableDoors,
+ interactableTrapdoors,
+ interactableFencegate,
+ worldborderEnabled = false,
+ decreaseBorder = false;
- public static boolean nametagsVisible;
-
- public static String tauntPlayer = "";
-
- public static int glowTime = 0;
-
- public static int gameId = 0;
+ public static int
+ minPlayers,
+ glowTime = 0,
+ gameId = 0,
+ worldborderSize,
+ worldborderDelay,
+ currentWorldborderSize;
public static FileConfiguration getConfig() {
return Main.plugin.getConfig();
@@ -53,6 +78,7 @@ public class Store {
Main.plugin.reloadConfig();
+ //Default
getConfig().addDefault("spawn.x", 0);
getConfig().addDefault("spawn.y", 0);
getConfig().addDefault("spawn.z", 0);
@@ -70,25 +96,37 @@ public class Store {
getConfig().addDefault("prefix.abort", "&cAbort > &f");
getConfig().addDefault("prefix.gameover", "&aGame Over > &f");
getConfig().addDefault("nametagsVisible", false);
+ getConfig().addDefault("permissionsRequired", true);
+ getConfig().addDefault("blockSettings.unbreakable.painting", false);
+ getConfig().addDefault("blockSettings.unbreakable.armorstand", false);
+ getConfig().addDefault("blockSettings.unbreakable.itemframe", false);
+ getConfig().addDefault("blockSettings.interactable.armorstand", true);
+ getConfig().addDefault("blockSettings.interactable.itemframe", true);
+ getConfig().addDefault("blockSettings.interactable.door", true);
+ getConfig().addDefault("blockSettings.interactable.trapdoor", true);
+ getConfig().addDefault("blockSettings.interactable.fence", true);
+ getConfig().addDefault("minPlayers", 2);
+ //Spawn
spawnPosition = new Vector(
getConfig().getDouble("spawn.x"),
- getConfig().getDouble("spawn.y"),
+ Math.max(0,Math.min(255,getConfig().getDouble("spawn.y"))),
getConfig().getDouble("spawn.z")
);
spawnWorld = getConfig().getString("spawn.world");
+ //World border
worldborderPosition = new Vector(
getConfig().getInt("worldBorder.x"),
0,
getConfig().getInt("worldBorder.z")
);
- worldborderSize = getConfig().getInt("worldBorder.size");
- worldborderDelay = getConfig().getInt("worldBorder.delay");
+ worldborderSize = Math.max(100,getConfig().getInt("worldBorder.size"));
+ worldborderDelay = Math.max(1,getConfig().getInt("worldBorder.delay"));
worldborderEnabled = getConfig().getBoolean("worldBorder.enabled");
-
blockedCommands = getConfig().getStringList("blockedCommands");
+ //Prefix
char SYMBOLE = '\u00A7';
String SYMBOLE_STRING = new String(new char[] {SYMBOLE});
@@ -99,13 +137,26 @@ public class Store {
abortPrefix = getConfig().getString("prefix.abort").replace("&", SYMBOLE_STRING);
gameoverPrefix = getConfig().getString("prefix.gameover").replace("&", SYMBOLE_STRING);
+ //Other
nametagsVisible = getConfig().getBoolean("nametagsVisible");
+ permissionsRequired = getConfig().getBoolean("permissionsRequired");
+ unbreakablePaintings = getConfig().getBoolean("blockSettings.unbreakable.painting");
+ unbreakableArmorstands = getConfig().getBoolean("blockSettings.unbreakable.armorstand");
+ unbreakableItemframes = getConfig().getBoolean("blockSettings.unbreakable.itemframe");
+ interactableArmorstands = getConfig().getBoolean("blockSettings.interactable.armorstand");
+ interactableItemframes = getConfig().getBoolean("blockSettings.interactable.itemframe");
+ interactableDoors = getConfig().getBoolean("blockSettings.interactable.door");
+ interactableTrapdoors = getConfig().getBoolean("blockSettings.interactable.trapdoor");
+ interactableFencegate = getConfig().getBoolean("blockSettings.interactable.fence");
+ minPlayers = Math.max(2,getConfig().getInt("minPlayers"));
getConfig().options().copyDefaults(true);
saveConfig();
if(spawnPosition.getBlockX() != 0 || spawnPosition.getBlockY() != 0 || spawnPosition.getBlockZ() != 0) {
- status = "Standby";
+ if(status.equals("Setup")) {
+ status = "Standby";
+ }
}
}
diff --git a/src/main/java/net/tylermurphy/hideAndSeek/commands/Help.java b/src/main/java/net/tylermurphy/hideAndSeek/commands/Help.java
index a74464e..a998a11 100644
--- a/src/main/java/net/tylermurphy/hideAndSeek/commands/Help.java
+++ b/src/main/java/net/tylermurphy/hideAndSeek/commands/Help.java
@@ -13,7 +13,7 @@ public class Help implements ICommand {
for(ICommand command : CommandHandler.COMMAND_REGISTER.values()) {
message += String.format("%s/hs %s%s %s%s\n %s%s%s", ChatColor.AQUA, ChatColor.WHITE, command.getLabel().toLowerCase(), ChatColor.BLUE, command.getUsage(), ChatColor.GRAY, ChatColor.ITALIC, command.getDescription()+"\n");
}
- message = message.substring(0, message.length()-2);
+ message = message.substring(0, message.length()-1);
sender.sendMessage(message);
}
diff --git a/src/main/java/net/tylermurphy/hideAndSeek/commands/Start.java b/src/main/java/net/tylermurphy/hideAndSeek/commands/Start.java
index 58d6143..063ba35 100644
--- a/src/main/java/net/tylermurphy/hideAndSeek/commands/Start.java
+++ b/src/main/java/net/tylermurphy/hideAndSeek/commands/Start.java
@@ -28,8 +28,8 @@ public class Start implements ICommand {
sender.sendMessage(errorPrefix + "Game is already in session");
return;
}
- if(playerList.size() < 2) {
- sender.sendMessage(errorPrefix + "You must have at least 2 players to start");
+ if(playerList.size() < minPlayers) {
+ sender.sendMessage(errorPrefix + "You must have at least "+minPlayers+" players to start");
return;
}
diff --git a/src/main/java/net/tylermurphy/hideAndSeek/events/EventListener.java b/src/main/java/net/tylermurphy/hideAndSeek/events/EventListener.java
index 8ac7d29..541dc68 100644
--- a/src/main/java/net/tylermurphy/hideAndSeek/events/EventListener.java
+++ b/src/main/java/net/tylermurphy/hideAndSeek/events/EventListener.java
@@ -8,16 +8,23 @@ import org.bukkit.Location;
import org.bukkit.Material;
import org.bukkit.Sound;
import org.bukkit.attribute.Attribute;
+import org.bukkit.entity.ArmorStand;
+import org.bukkit.entity.ItemFrame;
+import org.bukkit.entity.Painting;
import org.bukkit.entity.Player;
import org.bukkit.entity.Snowball;
import org.bukkit.event.EventHandler;
import org.bukkit.event.Listener;
+import org.bukkit.event.entity.EntityDamageByEntityEvent;
import org.bukkit.event.entity.EntityDamageEvent;
import org.bukkit.event.entity.EntityRegainHealthEvent;
import org.bukkit.event.entity.EntityRegainHealthEvent.RegainReason;
import org.bukkit.event.entity.FoodLevelChangeEvent;
import org.bukkit.event.entity.ProjectileLaunchEvent;
+import org.bukkit.event.hanging.HangingBreakByEntityEvent;
import org.bukkit.event.player.PlayerCommandPreprocessEvent;
+import org.bukkit.event.player.PlayerInteractEntityEvent;
+import org.bukkit.event.player.PlayerInteractEvent;
import org.bukkit.event.player.PlayerJoinEvent;
import org.bukkit.event.player.PlayerQuitEvent;
import org.bukkit.potion.PotionEffect;
@@ -54,7 +61,7 @@ public class EventListener implements Listener {
}
@EventHandler
- public void onPlayerDamage(EntityDamageEvent event) {
+ public void onEntityDamage(EntityDamageEvent event) {
if(event.getEntity() instanceof Player) {
if(!status.equals("Playing")) {
event.setCancelled(true);
@@ -81,6 +88,124 @@ public class EventListener implements Listener {
}
@EventHandler
+ public void onEntityDamageByEntity(EntityDamageByEntityEvent event) {
+ if(event.getEntity() instanceof ArmorStand) {
+ if(unbreakableArmorstands) {
+ if(event.getDamager() instanceof Player) {
+ Player player = (Player) event.getDamager();
+ if(status.equals("Playing") || status.equals("Starting") || !player.hasPermission("hideandseek.blockbypass")) {
+ System.out.println('t');
+ event.setCancelled(true);
+ }
+ } else {
+ event.setCancelled(true);
+ }
+ }
+ }
+ }
+
+ @EventHandler
+ public void onPlayerInteractEntity(PlayerInteractEntityEvent event) {
+ if(!interactableArmorstands) {
+ if(event.getRightClicked() instanceof ArmorStand) {
+ if(status.equals("Playing") || status.equals("Starting") || !event.getPlayer().hasPermission("hideandseek.blockbypass")) {
+ event.setCancelled(true);
+ }
+ }
+ }
+ if(!interactableItemframes) {
+ if(event.getRightClicked() instanceof ItemFrame) {
+ if(status.equals("Playing") || status.equals("Starting") || !event.getPlayer().hasPermission("hideandseek.blockbypass")) {
+ event.setCancelled(true);
+ }
+ }
+ }
+ }
+
+ @EventHandler
+ public void onPlayerInteractBlock(PlayerInteractEvent event) {
+ if(!interactableDoors) {
+ if(
+ event.getClickedBlock().getType() == Material.ACACIA_DOOR ||
+ event.getClickedBlock().getType() == Material.BIRCH_DOOR ||
+ event.getClickedBlock().getType() == Material.CRIMSON_DOOR ||
+ event.getClickedBlock().getType() == Material.DARK_OAK_DOOR ||
+ event.getClickedBlock().getType() == Material.IRON_DOOR ||
+ event.getClickedBlock().getType() == Material.JUNGLE_DOOR ||
+ event.getClickedBlock().getType() == Material.OAK_DOOR ||
+ event.getClickedBlock().getType() == Material.SPRUCE_DOOR ||
+ event.getClickedBlock().getType() == Material.WARPED_DOOR
+ ) {
+ if(status.equals("Playing") || status.equals("Starting") || !event.getPlayer().hasPermission("hideandseek.blockbypass")) {
+ event.setCancelled(true);
+ }
+ }
+ }
+ if(!interactableTrapdoors) {
+ if(
+ event.getClickedBlock().getType() == Material.ACACIA_TRAPDOOR ||
+ event.getClickedBlock().getType() == Material.BIRCH_TRAPDOOR ||
+ event.getClickedBlock().getType() == Material.CRIMSON_TRAPDOOR ||
+ event.getClickedBlock().getType() == Material.DARK_OAK_TRAPDOOR ||
+ event.getClickedBlock().getType() == Material.IRON_TRAPDOOR ||
+ event.getClickedBlock().getType() == Material.JUNGLE_TRAPDOOR ||
+ event.getClickedBlock().getType() == Material.OAK_TRAPDOOR ||
+ event.getClickedBlock().getType() == Material.SPRUCE_TRAPDOOR ||
+ event.getClickedBlock().getType() == Material.WARPED_TRAPDOOR
+ ) {
+ if(status.equals("Playing") || status.equals("Starting") || !event.getPlayer().hasPermission("hideandseek.blockbypass")) {
+ event.setCancelled(true);
+ }
+ }
+ }
+ if(!interactableFencegate) {
+ if(
+ event.getClickedBlock().getType() == Material.ACACIA_FENCE_GATE ||
+ event.getClickedBlock().getType() == Material.BIRCH_FENCE_GATE ||
+ event.getClickedBlock().getType() == Material.CRIMSON_FENCE_GATE ||
+ event.getClickedBlock().getType() == Material.DARK_OAK_FENCE_GATE ||
+ event.getClickedBlock().getType() == Material.JUNGLE_FENCE_GATE ||
+ event.getClickedBlock().getType() == Material.OAK_FENCE_GATE ||
+ event.getClickedBlock().getType() == Material.SPRUCE_FENCE_GATE ||
+ event.getClickedBlock().getType() == Material.WARPED_FENCE_GATE
+ ) {
+ if(status.equals("Playing") || status.equals("Starting") || !event.getPlayer().hasPermission("hideandseek.blockbypass")) {
+ event.setCancelled(true);
+ }
+ }
+ }
+ }
+
+ @EventHandler
+ public void onHangingBreakByEntity(HangingBreakByEntityEvent event) {
+ if(event.getEntity() instanceof ItemFrame) {
+ if(unbreakableItemframes) {
+ if(event.getRemover() instanceof Player) {
+ Player player = (Player) event.getRemover();
+ if(status.equals("Playing") || status.equals("Starting") || !player.hasPermission("hideandseek.blockbypass")) {
+ event.setCancelled(true);
+ }
+ } else {
+ event.setCancelled(true);
+ }
+
+ }
+ }
+ if(event.getEntity() instanceof Painting) {
+ if(unbreakableArmorstands) {
+ if(event.getRemover() instanceof Player) {
+ Player player = (Player) event.getRemover();
+ if(status.equals("Playing") || status.equals("Starting") || !player.hasPermission("hideandseek.blockbypass")) {
+ event.setCancelled(true);
+ }
+ } else {
+ event.setCancelled(true);
+ }
+ }
+ }
+ }
+
+ @EventHandler
public void onProjectile(ProjectileLaunchEvent event) {
if(!status.equals("Playing")) return;
if(event.getEntity() instanceof Snowball) {