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/util | |
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/util')
-rw-r--r-- | src/main/java/net/tylermurphy/hideAndSeek/game/util/Disguise.java | 74 |
1 files changed, 31 insertions, 43 deletions
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); |