diff options
author | Tyler Murphy <tylermurphy534@gmail.com> | 2022-07-30 18:49:18 -0400 |
---|---|---|
committer | Tyler Murphy <tylermurphy534@gmail.com> | 2022-07-30 18:49:18 -0400 |
commit | a353e29246f2d86ccd771734791f525420c1cf34 (patch) | |
tree | bddea92785b30e7e57a0d332e8029a04be4bbcab /src/main/java/net/tylermurphy/hideAndSeek/game | |
parent | better hitboxes for blockhunt (diff) | |
download | kenshinshideandseek-a353e29246f2d86ccd771734791f525420c1cf34.tar.gz kenshinshideandseek-a353e29246f2d86ccd771734791f525420c1cf34.tar.bz2 kenshinshideandseek-a353e29246f2d86ccd771734791f525420c1cf34.zip |
refactoring and blockhunt disguise bug fixes
Diffstat (limited to 'src/main/java/net/tylermurphy/hideAndSeek/game')
9 files changed, 58 insertions, 73 deletions
diff --git a/src/main/java/net/tylermurphy/hideAndSeek/game/Board.java b/src/main/java/net/tylermurphy/hideAndSeek/game/Board.java index cf91c23..6bf0bfb 100644 --- a/src/main/java/net/tylermurphy/hideAndSeek/game/Board.java +++ b/src/main/java/net/tylermurphy/hideAndSeek/game/Board.java @@ -35,6 +35,7 @@ import java.util.stream.Collectors; import static net.tylermurphy.hideAndSeek.configuration.Config.*; import static net.tylermurphy.hideAndSeek.configuration.Localization.message; +@SuppressWarnings("deprecation") public class Board { private final List<String> Hider = new ArrayList<>(), Seeker = new ArrayList<>(), Spectator = new ArrayList<>(); @@ -363,6 +364,7 @@ public class Board { } +@SuppressWarnings("deprecation") class CustomBoard { private final Scoreboard board; diff --git a/src/main/java/net/tylermurphy/hideAndSeek/game/EntityHider.java b/src/main/java/net/tylermurphy/hideAndSeek/game/EntityHider.java index 9dcb0ab..8274655 100644 --- a/src/main/java/net/tylermurphy/hideAndSeek/game/EntityHider.java +++ b/src/main/java/net/tylermurphy/hideAndSeek/game/EntityHider.java @@ -3,7 +3,7 @@ package net.tylermurphy.hideAndSeek.game; import static com.comphenix.protocol.PacketType.Play.Server.*; import java.lang.reflect.InvocationTargetException; -import java.util.Arrays; +import java.util.Collections; import java.util.Map; import org.bukkit.entity.Entity; @@ -30,9 +30,9 @@ public class EntityHider implements Listener { protected Table<Integer, Integer, Boolean> observerEntityMap = HashBasedTable.create(); private static final PacketType[] ENTITY_PACKETS = { - ENTITY_EQUIPMENT, BED, ANIMATION, NAMED_ENTITY_SPAWN, + ENTITY_EQUIPMENT, ANIMATION, NAMED_ENTITY_SPAWN, COLLECT, SPAWN_ENTITY, SPAWN_ENTITY_LIVING, SPAWN_ENTITY_PAINTING, SPAWN_ENTITY_EXPERIENCE_ORB, - ENTITY_VELOCITY, REL_ENTITY_MOVE, ENTITY_LOOK, ENTITY_MOVE_LOOK, ENTITY_MOVE_LOOK, + ENTITY_VELOCITY, REL_ENTITY_MOVE, ENTITY_LOOK, ENTITY_TELEPORT, ENTITY_HEAD_ROTATION, ENTITY_STATUS, ATTACH_ENTITY, ENTITY_METADATA, ENTITY_EFFECT, REMOVE_ENTITY_EFFECT, BLOCK_BREAK_ANIMATION }; @@ -193,6 +193,7 @@ public class EntityHider implements Listener { * @param entity - the entity to toggle. * @return TRUE if the entity was visible before, FALSE otherwise. */ + @SuppressWarnings("unused") public final boolean toggleEntity(Player observer, Entity entity) { if (isVisible(observer, entity.getEntityId())) { return hideEntity(observer, entity); @@ -213,7 +214,7 @@ public class EntityHider implements Listener { // Resend packets if (manager != null && hiddenBefore) { - manager.updateEntity(entity, Arrays.asList(observer)); + manager.updateEntity(entity, Collections.singletonList(observer)); } return hiddenBefore; } @@ -253,6 +254,7 @@ public class EntityHider implements Listener { * @param entity - the entity that may be hidden. * @return TRUE if the player may see the entity, FALSE if the entity has been hidden. */ + @SuppressWarnings("unused") public final boolean canSee(Player observer, Entity entity) { validate(observer, entity); @@ -268,10 +270,12 @@ public class EntityHider implements Listener { * Retrieve the current visibility policy. * @return The current visibility policy. */ + @SuppressWarnings("unused") public Policy getPolicy() { return policy; } + @SuppressWarnings("unused") public void close() { if (manager != null) { HandlerList.unregisterAll(bukkitListener); diff --git a/src/main/java/net/tylermurphy/hideAndSeek/game/Game.java b/src/main/java/net/tylermurphy/hideAndSeek/game/Game.java index 87fa4a2..b3fd457 100644 --- a/src/main/java/net/tylermurphy/hideAndSeek/game/Game.java +++ b/src/main/java/net/tylermurphy/hideAndSeek/game/Game.java @@ -107,7 +107,8 @@ public class Game { public void start() { try { Optional<Player> rand = board.getPlayers().stream().skip(new Random().nextInt(board.size())).findFirst(); - String seekerName = rand.get().getName(); + Player picked = rand.orElse(board.getPlayers().get(0)); + String seekerName = picked.getName(); Player temp = Bukkit.getPlayer(seekerName); Player seeker = board.getPlayer(temp.getUniqueId()); start(seeker); @@ -210,6 +211,7 @@ public class Game { handleBungeeLeave(player); } + @SuppressWarnings("UnstableApiUsage") private void handleBungeeLeave(Player player) { if (bungeeLeave) { ByteArrayDataOutput out = ByteStreams.newDataOutput(); diff --git a/src/main/java/net/tylermurphy/hideAndSeek/game/PlayerLoader.java b/src/main/java/net/tylermurphy/hideAndSeek/game/PlayerLoader.java index 0447111..bd35ab5 100644 --- a/src/main/java/net/tylermurphy/hideAndSeek/game/PlayerLoader.java +++ b/src/main/java/net/tylermurphy/hideAndSeek/game/PlayerLoader.java @@ -19,7 +19,6 @@ package net.tylermurphy.hideAndSeek.game; -import com.cryptomorin.xseries.XItemStack; import com.cryptomorin.xseries.messages.Titles; import net.md_5.bungee.api.ChatColor; import net.tylermurphy.hideAndSeek.Main; @@ -27,7 +26,6 @@ import net.tylermurphy.hideAndSeek.configuration.Items; import org.bukkit.Bukkit; import org.bukkit.GameMode; import org.bukkit.Location; -import org.bukkit.Material; import org.bukkit.attribute.Attribute; import org.bukkit.attribute.AttributeInstance; import org.bukkit.entity.Player; @@ -40,6 +38,7 @@ import static net.tylermurphy.hideAndSeek.configuration.Config.*; import static net.tylermurphy.hideAndSeek.configuration.Config.lobbyPosition; import static net.tylermurphy.hideAndSeek.configuration.Localization.message; +@SuppressWarnings("deprecation") public class PlayerLoader { public static void loadHider(Player player, String gameWorld){ @@ -69,9 +68,7 @@ public class PlayerLoader { player.setFallDistance(0.0F); player.getInventory().setItem(flightToggleItemPosition, flightToggleItem); player.getInventory().setItem(teleportItemPosition, teleportItem); - Main.getInstance().getBoard().getPlayers().forEach(otherPlayer -> { - otherPlayer.hidePlayer(player); - }); + Main.getInstance().getBoard().getPlayers().forEach(otherPlayer -> otherPlayer.hidePlayer(player)); Titles.sendTitle(player, 10, 70, 20, ChatColor.GRAY + "" + ChatColor.BOLD + "SPECTATING", ChatColor.WHITE + message("SPECTATOR_SUBTITLE").toString()); } 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 587fab9..50c45fb 100644 --- a/src/main/java/net/tylermurphy/hideAndSeek/game/listener/DisguiseHandler.java +++ b/src/main/java/net/tylermurphy/hideAndSeek/game/listener/DisguiseHandler.java @@ -7,7 +7,6 @@ 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.comphenix.protocol.wrappers.BlockPosition; import com.cryptomorin.xseries.XMaterial; import net.tylermurphy.hideAndSeek.Main; import net.tylermurphy.hideAndSeek.game.util.Disguise; @@ -27,19 +26,17 @@ import org.bukkit.inventory.Inventory; import org.bukkit.inventory.ItemStack; import org.bukkit.potion.PotionEffect; import org.bukkit.potion.PotionEffectType; -import org.bukkit.util.BlockVector; import java.util.ArrayList; import java.util.List; +@SuppressWarnings("deprecation") public class DisguiseHandler implements Listener { private static final ProtocolManager protocolManager = ProtocolLibrary.getProtocolManager(); - private final PacketAdapter packetListener; public DisguiseHandler(){ - packetListener = createProtocol(); - protocolManager.addPacketListener(packetListener); + protocolManager.addPacketListener(createProtocol()); } @EventHandler(priority = EventPriority.HIGHEST) diff --git a/src/main/java/net/tylermurphy/hideAndSeek/game/listener/InteractHandler.java b/src/main/java/net/tylermurphy/hideAndSeek/game/listener/InteractHandler.java index c8dd488..3440780 100644 --- a/src/main/java/net/tylermurphy/hideAndSeek/game/listener/InteractHandler.java +++ b/src/main/java/net/tylermurphy/hideAndSeek/game/listener/InteractHandler.java @@ -22,6 +22,7 @@ import static net.tylermurphy.hideAndSeek.configuration.Config.*; import static net.tylermurphy.hideAndSeek.configuration.Config.glowPowerupItem; import static net.tylermurphy.hideAndSeek.configuration.Localization.message; +@SuppressWarnings("deprecation") public class InteractHandler implements Listener { @EventHandler(priority = EventPriority.HIGHEST) @@ -96,25 +97,21 @@ public class InteractHandler implements Listener { int amount = Main.getInstance().getBoard().getHiders().size() + Main.getInstance().getBoard().getSeekers().size(); Inventory teleportMenu = Main.getInstance().getServer().createInventory(null, 9*(((amount-1)/9)+1), ChatColor.stripColor(teleportItem.getItemMeta().getDisplayName())); List<String> hider_lore = new ArrayList<>(); hider_lore.add(message("HIDER_TEAM_NAME").toString()); - Main.getInstance().getBoard().getHiders().forEach(hider -> { - teleportMenu.addItem(getSkull(hider, hider_lore)); - }); + Main.getInstance().getBoard().getHiders().forEach(hider -> teleportMenu.addItem(getSkull(hider, hider_lore))); List<String> seeker_lore = new ArrayList<>(); seeker_lore.add(message("SEEKER_TEAM_NAME").toString()); - Main.getInstance().getBoard().getSeekers().forEach(seeker -> { - teleportMenu.addItem(getSkull(seeker, seeker_lore)); - }); + Main.getInstance().getBoard().getSeekers().forEach(seeker -> teleportMenu.addItem(getSkull(seeker, seeker_lore))); event.getPlayer().openInventory(teleportMenu); } } private ItemStack getSkull(Player player, List<String> lore){ assert XMaterial.PLAYER_HEAD.parseMaterial() != null; - ItemStack playerhead = new ItemStack(XMaterial.PLAYER_HEAD.parseMaterial(), 1, (byte) 3); - SkullMeta playerheadmeta = (SkullMeta) playerhead.getItemMeta(); - playerheadmeta.setOwner(player.getName()); - playerheadmeta.setDisplayName(player.getName()); - playerheadmeta.setLore(lore); - playerhead.setItemMeta(playerheadmeta); - return playerhead; + ItemStack playerHead = new ItemStack(XMaterial.PLAYER_HEAD.parseMaterial(), 1, (byte) 3); + SkullMeta playerHeadMeta = (SkullMeta) playerHead.getItemMeta(); + playerHeadMeta.setOwner(player.getName()); + playerHeadMeta.setDisplayName(player.getName()); + playerHeadMeta.setLore(lore); + playerHead.setItemMeta(playerHeadMeta); + return playerHead; } } diff --git a/src/main/java/net/tylermurphy/hideAndSeek/game/listener/JoinLeaveHandler.java b/src/main/java/net/tylermurphy/hideAndSeek/game/listener/JoinLeaveHandler.java index 82369c8..6d88ebf 100644 --- a/src/main/java/net/tylermurphy/hideAndSeek/game/listener/JoinLeaveHandler.java +++ b/src/main/java/net/tylermurphy/hideAndSeek/game/listener/JoinLeaveHandler.java @@ -15,7 +15,6 @@ import org.bukkit.event.player.PlayerJoinEvent; import org.bukkit.event.player.PlayerKickEvent; import org.bukkit.event.player.PlayerQuitEvent; import org.bukkit.inventory.ItemStack; -import org.bukkit.potion.PotionEffect; import static net.tylermurphy.hideAndSeek.configuration.Config.*; import static net.tylermurphy.hideAndSeek.configuration.Config.exitPosition; diff --git a/src/main/java/net/tylermurphy/hideAndSeek/game/listener/MovementHandler.java b/src/main/java/net/tylermurphy/hideAndSeek/game/listener/MovementHandler.java index d38c512..e6e32f6 100644 --- a/src/main/java/net/tylermurphy/hideAndSeek/game/listener/MovementHandler.java +++ b/src/main/java/net/tylermurphy/hideAndSeek/game/listener/MovementHandler.java @@ -1,6 +1,5 @@ package net.tylermurphy.hideAndSeek.game.listener; -import com.comphenix.protocol.PacketType; import com.google.common.collect.Sets; import net.tylermurphy.hideAndSeek.Main; import net.tylermurphy.hideAndSeek.game.listener.events.PlayerJumpEvent; diff --git a/src/main/java/net/tylermurphy/hideAndSeek/game/util/Disguise.java b/src/main/java/net/tylermurphy/hideAndSeek/game/util/Disguise.java index 330aefe..b0f18a9 100644 --- a/src/main/java/net/tylermurphy/hideAndSeek/game/util/Disguise.java +++ b/src/main/java/net/tylermurphy/hideAndSeek/game/util/Disguise.java @@ -1,12 +1,8 @@ package net.tylermurphy.hideAndSeek.game.util; -import com.comphenix.protocol.PacketType; -import com.comphenix.protocol.ProtocolLibrary; -import com.comphenix.protocol.ProtocolManager; -import com.comphenix.protocol.events.PacketContainer; -import com.comphenix.protocol.wrappers.BlockPosition; -import com.comphenix.protocol.wrappers.WrappedBlockData; import net.tylermurphy.hideAndSeek.Main; +import net.tylermurphy.hideAndSeek.util.packet.BlockChangePacket; +import net.tylermurphy.hideAndSeek.util.packet.EntityTeleportPacket; import org.bukkit.Bukkit; import org.bukkit.Location; import org.bukkit.Material; @@ -16,17 +12,14 @@ import org.bukkit.potion.PotionEffectType; import org.bukkit.scoreboard.Scoreboard; import org.bukkit.scoreboard.Team; -import java.lang.reflect.InvocationTargetException; - +@SuppressWarnings("deprecation") public class Disguise { - private static final ProtocolManager protocolManager = ProtocolLibrary.getProtocolManager(); - final Player hider; final Material material; FallingBlock block; Horse hitBox; - Location solidLocation; + Location blockLocation; boolean solid, solidify; static Team hidden; @@ -64,7 +57,7 @@ public class Disguise { hitBox.remove(); } if(solid) - sendBlockUpdate(Material.AIR); + sendBlockUpdate(blockLocation, Material.AIR); hider.removePotionEffect(PotionEffectType.INVISIBILITY); if(Main.getInstance().supports(9)) { hidden.removeEntry(hider.getName()); @@ -97,18 +90,18 @@ public class Disguise { if(solidify){ if(!solid) { solid = true; - solidLocation = hider.getLocation().getBlock().getLocation(); - respawnHotbox(); - teleportEntity(hitBox, false); + blockLocation = hider.getLocation().getBlock().getLocation(); + respawnHitbox(); + teleportEntity(hitBox, true); } - sendBlockUpdate(material); + sendBlockUpdate(blockLocation, material); } else if(solid){ solid = false; if(Main.getInstance().supports(9)) hidden.removeEntry(hitBox.getUniqueId().toString()); hitBox.remove(); hitBox = null; - sendBlockUpdate(Material.AIR); + sendBlockUpdate(blockLocation, Material.AIR); } toggleEntityVisibility(block, !solid); teleportEntity(block, solid); @@ -118,38 +111,33 @@ public class Disguise { this.solidify = value; } - private void sendBlockUpdate(Material material){ - final PacketContainer packet = protocolManager.createPacket(PacketType.Play.Server.BLOCK_CHANGE); - packet.getModifier().writeDefaults(); - packet.getBlockPositionModifier().write(0, new BlockPosition(solidLocation.toVector())); - packet.getBlockData().write(0, WrappedBlockData.createData(material)); + private void sendBlockUpdate(Location location, Material material){ + BlockChangePacket packet = new BlockChangePacket(); + packet.setBlockPosition(location); + packet.setMaterial(material); Bukkit.getOnlinePlayers().forEach(receiver -> { - if(receiver == hider) return; - try { - protocolManager.sendServerPacket(receiver, packet); - } catch (InvocationTargetException ignored) {} + if(receiver.getName().equals(hider.getName())) return; + packet.send(receiver); }); } private void teleportEntity(Entity entity, boolean center) { - final PacketContainer packet = protocolManager.createPacket(PacketType.Play.Server.ENTITY_TELEPORT); - Location location = hider.getLocation(); - packet.getModifier().writeDefaults(); - packet.getIntegers().write(0, entity.getEntityId()); + EntityTeleportPacket packet = new EntityTeleportPacket(); + packet.setEntity(entity); + double x,y,z; if(center){ - packet.getDoubles().write(0, Math.round(location.getX()+.5)-.5); - packet.getDoubles().write(1, (double)Math.round(location.getY())); - packet.getDoubles().write(2, Math.round(location.getZ()+.5)-.5); + x = Math.round(hider.getLocation().getX()+.5)-.5; + y = Math.round(hider.getLocation().getY()); + z = Math.round(hider.getLocation().getZ()+.5)-.5; } else { - packet.getDoubles().write(0, location.getX()); - packet.getDoubles().write(1, location.getY()); - packet.getDoubles().write(2, location.getZ()); + x = hider.getLocation().getX(); + y = hider.getLocation().getY(); + z = hider.getLocation().getZ(); } - Bukkit.getOnlinePlayers().forEach(receiver -> { - try { - protocolManager.sendServerPacket(receiver, packet); - } catch (InvocationTargetException ignored) {} - }); + packet.setX(x); + packet.setY(y); + packet.setZ(z); + Bukkit.getOnlinePlayers().forEach(packet::send); } private void toggleEntityVisibility(Entity entity, boolean show){ @@ -164,13 +152,13 @@ public class Disguise { } private void respawnFallingBlock(){ - block = hider.getLocation().getWorld().spawnFallingBlock(hider.getLocation(), material, (byte)0); + block = hider.getLocation().getWorld().spawnFallingBlock(hider.getLocation().add(0, 1000, 0), material, (byte)0); block.setGravity(false); block.setDropItem(false); block.setInvulnerable(true); } - private void respawnHotbox(){ + private void respawnHitbox(){ hitBox = (Horse) hider.getLocation().getWorld().spawnEntity(hider.getLocation().add(0, 1000, 0), EntityType.HORSE); hitBox.setAI(false); hitBox.setGravity(false); |