summaryrefslogtreewikicommitdiff
path: root/src/main/java/net/tylermurphy/hideAndSeek/game
diff options
context:
space:
mode:
Diffstat (limited to '')
-rw-r--r--src/main/java/net/tylermurphy/hideAndSeek/game/Board.java12
-rw-r--r--src/main/java/net/tylermurphy/hideAndSeek/game/Game.java13
-rw-r--r--src/main/java/net/tylermurphy/hideAndSeek/game/PlayerLoader.java5
-rw-r--r--src/main/java/net/tylermurphy/hideAndSeek/game/listener/DamageHandler.java14
-rw-r--r--src/main/java/net/tylermurphy/hideAndSeek/game/listener/DisguiseHandler.java94
5 files changed, 24 insertions, 114 deletions
diff --git a/src/main/java/net/tylermurphy/hideAndSeek/game/Board.java b/src/main/java/net/tylermurphy/hideAndSeek/game/Board.java
index 6bf0bfb..55dfa3c 100644
--- a/src/main/java/net/tylermurphy/hideAndSeek/game/Board.java
+++ b/src/main/java/net/tylermurphy/hideAndSeek/game/Board.java
@@ -104,9 +104,6 @@ public class Board {
}
public void addHider(Player player) {
- if(!Main.getInstance().supports(9)){
- player.spigot().setCollidesWithEntities(false);
- }
Hider.add(player.getUniqueId().toString());
Seeker.remove(player.getUniqueId().toString());
Spectator.remove(player.getUniqueId().toString());
@@ -114,9 +111,6 @@ public class Board {
}
public void addSeeker(Player player) {
- if(!Main.getInstance().supports(9)){
- player.spigot().setCollidesWithEntities(false);
- }
Hider.remove(player.getUniqueId().toString());
Seeker.add(player.getUniqueId().toString());
Spectator.remove(player.getUniqueId().toString());
@@ -124,9 +118,6 @@ public class Board {
}
public void addSpectator(Player player) {
- if(!Main.getInstance().supports(9)){
- player.spigot().setCollidesWithEntities(false);
- }
Hider.remove(player.getUniqueId().toString());
Seeker.remove(player.getUniqueId().toString());
Spectator.add(player.getUniqueId().toString());
@@ -134,9 +125,6 @@ public class Board {
}
public void remove(Player player) {
- if(!Main.getInstance().supports(9)){
- player.spigot().setCollidesWithEntities(true);
- }
Hider.remove(player.getUniqueId().toString());
Seeker.remove(player.getUniqueId().toString());
Spectator.remove(player.getUniqueId().toString());
diff --git a/src/main/java/net/tylermurphy/hideAndSeek/game/Game.java b/src/main/java/net/tylermurphy/hideAndSeek/game/Game.java
index b3fd457..71c3e84 100644
--- a/src/main/java/net/tylermurphy/hideAndSeek/game/Game.java
+++ b/src/main/java/net/tylermurphy/hideAndSeek/game/Game.java
@@ -107,10 +107,7 @@ public class Game {
public void start() {
try {
Optional<Player> rand = board.getPlayers().stream().skip(new Random().nextInt(board.size())).findFirst();
- Player picked = rand.orElse(board.getPlayers().get(0));
- String seekerName = picked.getName();
- Player temp = Bukkit.getPlayer(seekerName);
- Player seeker = board.getPlayer(temp.getUniqueId());
+ Player seeker = rand.orElse(board.getPlayers().get(0));
start(seeker);
} catch (Exception e){
Main.getInstance().getLogger().warning("Failed to select random seeker.");
@@ -257,7 +254,12 @@ public class Game {
if (startingTimer == 0) {
message = message("START").toString();
status = Status.PLAYING;
- board.getPlayers().forEach(player -> PlayerLoader.resetPlayer(player, board));
+ board.getPlayers().forEach(player -> {
+ PlayerLoader.resetPlayer(player, board);
+ if(board.isSeeker(player)){
+ player.teleport(new Location(Bukkit.getWorld(getGameWorld()), spawnPosition.getX(), spawnPosition.getY(), spawnPosition.getZ()));
+ }
+ });
} else if (startingTimer == 1){
message = message("START_COUNTDOWN_LAST").addAmount(startingTimer).toString();
} else {
@@ -333,6 +335,7 @@ public class Game {
if (spawnPosition.getBlockX() == 0 && spawnPosition.getBlockY() == 0 && spawnPosition.getBlockZ() == 0) return true;
if (lobbyPosition.getBlockX() == 0 && lobbyPosition.getBlockY() == 0 && lobbyPosition.getBlockZ() == 0) return true;
if (exitPosition.getBlockX() == 0 && exitPosition.getBlockY() == 0 && exitPosition.getBlockZ() == 0) return true;
+ if (seekerLobbyPosition.getBlockX() == 0 && seekerLobbyPosition.getBlockY() == 0 && seekerLobbyPosition.getBlockZ() == 0) return true;
if (mapSaveEnabled) {
File destination = new File(Main.getInstance().getWorldContainer() + File.separator + getGameWorld());
if (!destination.exists()) return true;
diff --git a/src/main/java/net/tylermurphy/hideAndSeek/game/PlayerLoader.java b/src/main/java/net/tylermurphy/hideAndSeek/game/PlayerLoader.java
index bd35ab5..eedfabe 100644
--- a/src/main/java/net/tylermurphy/hideAndSeek/game/PlayerLoader.java
+++ b/src/main/java/net/tylermurphy/hideAndSeek/game/PlayerLoader.java
@@ -52,11 +52,8 @@ public class PlayerLoader {
}
public static void loadSeeker(Player player, String gameWorld){
- player.teleport(new Location(Bukkit.getWorld(gameWorld), spawnPosition.getX(),spawnPosition.getY(),spawnPosition.getZ()));
+ player.teleport(new Location(Bukkit.getWorld(gameWorld), seekerLobbyPosition.getX(),seekerLobbyPosition.getY(),seekerLobbyPosition.getZ()));
loadPlayer(player);
- player.addPotionEffect(new PotionEffect(PotionEffectType.BLINDNESS,1000000,127,false,false));
- player.addPotionEffect(new PotionEffect(PotionEffectType.SLOW,1000000,127,false,false));
- player.addPotionEffect(new PotionEffect(PotionEffectType.JUMP,1000000,128,false,false));
Titles.sendTitle(player, 10, 70, 20, ChatColor.WHITE + "" + message("SEEKER_TEAM_NAME"), ChatColor.WHITE + message("SEEKERS_SUBTITLE").toString());
}
diff --git a/src/main/java/net/tylermurphy/hideAndSeek/game/listener/DamageHandler.java b/src/main/java/net/tylermurphy/hideAndSeek/game/listener/DamageHandler.java
index cb4cba5..d03d5d6 100644
--- a/src/main/java/net/tylermurphy/hideAndSeek/game/listener/DamageHandler.java
+++ b/src/main/java/net/tylermurphy/hideAndSeek/game/listener/DamageHandler.java
@@ -80,7 +80,7 @@ public class DamageHandler implements Listener {
return;
}
// Players cannot take damage while game is not in session
- if (board.contains(player) && (game.getStatus() == Status.STANDBY || game.getStatus() == Status.STARTING)){
+ if (board.contains(player) && game.getStatus() != Status.PLAYING){
event.setCancelled(true);
return;
}
@@ -97,7 +97,17 @@ public class DamageHandler implements Listener {
// Reveal player if they are disguised
Main.getInstance().getDisguiser().reveal(player);
// Teleport player to seeker spawn
- player.teleport(new Location(Bukkit.getWorld(game.getGameWorld()), spawnPosition.getX(), spawnPosition.getY(), spawnPosition.getZ()));
+ if(delayedRespawn){
+ player.teleport(new Location(Bukkit.getWorld(game.getGameWorld()), seekerLobbyPosition.getX(), seekerLobbyPosition.getY(), seekerLobbyPosition.getZ()));
+ player.sendMessage(messagePrefix + message("RESPAWN_NOTICE").addAmount(delayedRespawnDelay));
+ Bukkit.getServer().getScheduler().scheduleSyncDelayedTask(Main.getInstance(), () -> {
+ if(game.getStatus() == Status.PLAYING){
+ player.teleport(new Location(Bukkit.getWorld(game.getGameWorld()), spawnPosition.getX(), spawnPosition.getY(), spawnPosition.getZ()));
+ }
+ }, delayedRespawnDelay * 20L);
+ } else {
+ player.teleport(new Location(Bukkit.getWorld(game.getGameWorld()), spawnPosition.getX(), spawnPosition.getY(), spawnPosition.getZ()));
+ }
// Add leaderboard stats
board.addDeath(player.getUniqueId());
if (attacker != null) board.addKill(attacker.getUniqueId());
diff --git a/src/main/java/net/tylermurphy/hideAndSeek/game/listener/DisguiseHandler.java b/src/main/java/net/tylermurphy/hideAndSeek/game/listener/DisguiseHandler.java
index 10db324..cb8ad04 100644
--- a/src/main/java/net/tylermurphy/hideAndSeek/game/listener/DisguiseHandler.java
+++ b/src/main/java/net/tylermurphy/hideAndSeek/game/listener/DisguiseHandler.java
@@ -1,21 +1,19 @@
package net.tylermurphy.hideAndSeek.game.listener;
import static com.comphenix.protocol.PacketType.Play.Client.*;
+import static net.tylermurphy.hideAndSeek.configuration.Config.solidifyTime;
import com.comphenix.protocol.ProtocolLibrary;
import com.comphenix.protocol.ProtocolManager;
import com.comphenix.protocol.events.PacketAdapter;
import com.comphenix.protocol.events.PacketContainer;
import com.comphenix.protocol.events.PacketEvent;
-import com.cryptomorin.xseries.XMaterial;
import net.tylermurphy.hideAndSeek.Main;
import net.tylermurphy.hideAndSeek.game.util.Disguise;
import org.bukkit.Bukkit;
import org.bukkit.GameMode;
import org.bukkit.Location;
-import org.bukkit.Material;
import org.bukkit.attribute.Attribute;
-import org.bukkit.enchantments.Enchantment;
import org.bukkit.entity.Player;
import org.bukkit.event.EventHandler;
import org.bukkit.event.EventPriority;
@@ -23,15 +21,9 @@ import org.bukkit.event.Listener;
import org.bukkit.event.entity.EntityDamageByEntityEvent;
import org.bukkit.event.entity.EntityDamageEvent;
import org.bukkit.event.player.PlayerMoveEvent;
-import org.bukkit.inventory.Inventory;
-import org.bukkit.inventory.ItemStack;
-import org.bukkit.potion.PotionEffect;
-import org.bukkit.potion.PotionEffectType;
-
import java.util.ArrayList;
import java.util.List;
-@SuppressWarnings("deprecation")
public class DisguiseHandler implements Listener {
private static final ProtocolManager protocolManager = ProtocolLibrary.getProtocolManager();
@@ -50,18 +42,11 @@ public class DisguiseHandler implements Listener {
if(lastLocation.getWorld() != currentLocation.getWorld()) return;
double distance = lastLocation.distance(currentLocation);
disguise.setSolidify(distance < .1);
- }, 40L);
+ }, solidifyTime);
if(event.getFrom().distance(event.getTo()) > .1)
disguise.setSolidify(false);
}
-// @EventHandler(priority = EventPriority.MONITOR)
-// public void onInteract(PlayerInteractEvent event) {
-// Action action = event.getAction();
-// Player player = event.getPlayer();
-// Block block = event.
-// }
-
private PacketAdapter createProtocol(){
return new PacketAdapter(Main.getInstance(), USE_ENTITY) {
@@ -69,7 +54,6 @@ public class DisguiseHandler implements Listener {
public void onPacketReceiving(PacketEvent event){
PacketContainer packet = event.getPacket();
Player player = event.getPlayer();
-// if(!Main.getInstance().getBoard().isSeeker(player)) return;
int id = packet.getIntegers().read(0);
Disguise disguise = Main.getInstance().getDisguiser().getByEntityID(id);
if(disguise == null) disguise = Main.getInstance().getDisguiser().getByHitBoxID(id);
@@ -91,7 +75,7 @@ public class DisguiseHandler implements Listener {
if(Main.getInstance().supports(9)) {
amount = seeker.getAttribute(Attribute.GENERIC_ATTACK_DAMAGE).getValue();
} else {
- amount = getItemDamageValue(seeker.getItemInHand(), disguise.getPlayer(), seeker);
+ return; //1.8 is not supported in Blockhunt yet!!!
}
disguise.setSolidify(false);
@@ -112,76 +96,4 @@ public class DisguiseHandler implements Listener {
Bukkit.getScheduler().scheduleSyncDelayedTask(Main.getInstance(), () -> debounce.remove(disguise.getPlayer()), 10);
}
- private int getItemDamageValue(ItemStack is, Player damaged, Player attacker) {
- double damageValue = 0;
- if (is != null) {
- if (is.getType() == XMaterial.WOODEN_SWORD.parseMaterial()) {
- damageValue = 5;
- } else if (is.getType() == Material.STONE_SWORD) {
- damageValue = 6;
- } else if (is.getType() == Material.IRON_SWORD) {
- damageValue = 7;
- } else if (is.getType() == Material.DIAMOND_SWORD) {
- damageValue = 8;
- } else {
- damageValue = 1;
- }
- damageValue += is.getEnchantmentLevel(Enchantment.DAMAGE_ALL);
- }
-
- if (damaged != null) {
- Inventory i = damaged.getInventory();
- Material helmet = i.getItem(39).getType();
- Material chestplate = i.getItem(40).getType();
- Material leggings = i.getItem(41).getType();
- Material boots = i.getItem(42).getType();
- if (helmet == Material.LEATHER_HELMET)
- damageValue -= (0.5 / 1.5);
- // value shown at bar above the health bar / 1.5
- else if (helmet == Material.CHAINMAIL_HELMET
- || helmet == Material.IRON_HELMET
- || helmet == Material.DIAMOND_HELMET
- || helmet == XMaterial.GOLDEN_HELMET.parseMaterial())
- damageValue -= (1 / 1.5);
-
- if (chestplate == Material.LEATHER_CHESTPLATE)
- damageValue -= (1.0);
- else if (chestplate == Material.CHAINMAIL_CHESTPLATE
- || chestplate == XMaterial.GOLDEN_CHESTPLATE.parseMaterial())
- damageValue -= (2.5 / 1.5);
- else if (chestplate == Material.IRON_CHESTPLATE)
- damageValue -= (3 / 1.5);
- else if (chestplate == Material.DIAMOND_CHESTPLATE)
- damageValue -= (4 / 1.5);
-
- if (leggings == Material.LEATHER_LEGGINGS)
- damageValue -= (1 / 1.5);
- else if (leggings == XMaterial.GOLDEN_LEGGINGS.parseMaterial())
- damageValue -= (1.0);
- else if (leggings == Material.CHAINMAIL_LEGGINGS)
- damageValue -= (2 / 1.5);
- else if (leggings == Material.IRON_LEGGINGS)
- damageValue -= (2.5 / 1.5);
- else if (leggings == Material.DIAMOND_LEGGINGS)
- damageValue -= (3 / 1.5);
-
- if (boots == Material.LEATHER_BOOTS
- || boots == XMaterial.GOLDEN_BOOTS.parseMaterial()
- || boots == Material.CHAINMAIL_BOOTS)
- damageValue -= (0.5 / 1.5);
- else if (boots == Material.IRON_BOOTS)
- damageValue -= (1 / 1.5);
- else if (boots == Material.DIAMOND_BOOTS)
- damageValue -= (1.0);
- }
-
- for (PotionEffect effect : attacker.getActivePotionEffects()){
- if (effect.getType() == PotionEffectType.HARM) {
- damageValue += effect.getAmplifier()*1.5;
- }
- }
-
- return (int) Math.round(Math.max(damageValue, 0.0));
- }
-
}