Created teleportation method for V1_12_R1.
This commit is contained in:
parent
1a99cfd2e6
commit
a3136e4d00
|
@ -162,4 +162,13 @@ public abstract class NPC {
|
|||
|
||||
// Internal method.
|
||||
protected abstract void sendHidePackets(Player player);
|
||||
|
||||
public void teleport(Player player, Location location) {
|
||||
this.location = location;
|
||||
|
||||
sendTeleportationPackets(player);
|
||||
}
|
||||
|
||||
// Internal method.
|
||||
public abstract void sendTeleportationPackets(Player player);
|
||||
}
|
||||
|
|
|
@ -6,10 +6,7 @@ package net.jitse.npclib.nms.v1_12_R1;
|
|||
|
||||
import net.jitse.npclib.api.NPC;
|
||||
import net.jitse.npclib.nms.holograms.Hologram;
|
||||
import net.jitse.npclib.nms.v1_12_R1.packets.PacketPlayOutEntityHeadRotationWrapper;
|
||||
import net.jitse.npclib.nms.v1_12_R1.packets.PacketPlayOutNamedEntitySpawnWrapper;
|
||||
import net.jitse.npclib.nms.v1_12_R1.packets.PacketPlayOutPlayerInfoWrapper;
|
||||
import net.jitse.npclib.nms.v1_12_R1.packets.PacketPlayOutScoreboardTeamWrapper;
|
||||
import net.jitse.npclib.nms.v1_12_R1.packets.*;
|
||||
import net.jitse.npclib.skin.Skin;
|
||||
import net.minecraft.server.v1_12_R1.*;
|
||||
import org.bukkit.Bukkit;
|
||||
|
@ -100,4 +97,13 @@ public class NPC_V1_12_R1 extends NPC {
|
|||
Bukkit.getScheduler().runTaskLater(plugin, () ->
|
||||
playerConnection.sendPacket(packetPlayOutScoreboardTeamUnregister), 5);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void sendTeleportationPackets(Player player) {
|
||||
PlayerConnection playerConnection = ((CraftPlayer) player).getHandle().playerConnection;
|
||||
|
||||
PacketPlayOutEntityTeleport packetPlayOutEntityTeleport = new PacketPlayOutEntityTeleportWrapper().create(entityId, location);
|
||||
|
||||
playerConnection.sendPacket(packetPlayOutEntityTeleport);
|
||||
}
|
||||
}
|
||||
|
|
|
@ -4,10 +4,35 @@
|
|||
|
||||
package net.jitse.npclib.nms.v1_12_R1.packets;
|
||||
|
||||
import com.comphenix.tinyprotocol.Reflection;
|
||||
import net.minecraft.server.v1_12_R1.PacketPlayOutEntityTeleport;
|
||||
import org.bukkit.Location;
|
||||
import org.bukkit.Material;
|
||||
import org.bukkit.block.BlockFace;
|
||||
|
||||
/**
|
||||
* @author Jitse Boonstra
|
||||
*/
|
||||
public class PacketPlayOutEntityTeleportWrapper {
|
||||
|
||||
public PacketPlayOutEntityTeleport create(int entityId, Location location) {
|
||||
PacketPlayOutEntityTeleport packetPlayOutEntityTeleport = new PacketPlayOutEntityTeleport();
|
||||
|
||||
Reflection.getField(packetPlayOutEntityTeleport.getClass(), "a", int.class)
|
||||
.set(packetPlayOutEntityTeleport, entityId);
|
||||
Reflection.getField(packetPlayOutEntityTeleport.getClass(), "b", double.class)
|
||||
.set(packetPlayOutEntityTeleport, location.getX());
|
||||
Reflection.getField(packetPlayOutEntityTeleport.getClass(), "c", double.class)
|
||||
.set(packetPlayOutEntityTeleport, location.getY());
|
||||
Reflection.getField(packetPlayOutEntityTeleport.getClass(), "d", double.class)
|
||||
.set(packetPlayOutEntityTeleport, location.getZ());
|
||||
Reflection.getField(packetPlayOutEntityTeleport.getClass(), "e", byte.class)
|
||||
.set(packetPlayOutEntityTeleport, (byte) ((int) (location.getYaw() * 256.0F / 360.0F)));
|
||||
Reflection.getField(packetPlayOutEntityTeleport.getClass(), "f", byte.class)
|
||||
.set(packetPlayOutEntityTeleport, (byte) ((int) (location.getPitch() * 256.0F / 360.0F)));
|
||||
Reflection.getField(packetPlayOutEntityTeleport.getClass(), "g", boolean.class)
|
||||
.set(packetPlayOutEntityTeleport, location.getBlock().getRelative(BlockFace.DOWN).getType() != Material.AIR);
|
||||
|
||||
return packetPlayOutEntityTeleport;
|
||||
}
|
||||
}
|
||||
|
|
Loading…
Reference in New Issue