diff options
author | Tyler Murphy <tylermurphy534@gmail.com> | 2022-08-16 20:10:36 -0400 |
---|---|---|
committer | GitHub <noreply@github.com> | 2022-08-16 20:10:36 -0400 |
commit | 725db2875c3ddb7829ebe8f7e68886eec83337f9 (patch) | |
tree | 12d39d7e1e2c09e0db81c7c3d1313ec79b01991a /src/main/java/net/tylermurphy/hideAndSeek/game | |
parent | Merge pull request #72 from tylermurphy534/1.6.0 (diff) | |
parent | delayed respawn (diff) | |
download | kenshinshideandseek-725db2875c3ddb7829ebe8f7e68886eec83337f9.tar.gz kenshinshideandseek-725db2875c3ddb7829ebe8f7e68886eec83337f9.tar.bz2 kenshinshideandseek-725db2875c3ddb7829ebe8f7e68886eec83337f9.zip |
Merge pull request #76 from tylermurphy534/1.6.1
1.6.1
Diffstat (limited to 'src/main/java/net/tylermurphy/hideAndSeek/game')
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)); - } - } |