Skip to content
Open
Show file tree
Hide file tree
Changes from 1 commit
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Original file line number Diff line number Diff line change
Expand Up @@ -125,10 +125,16 @@ public static void autoExecute(ScriptEntry scriptEntry,
final float pitchRaw = pitch == null ? 0 : pitch.asFloat();
for (EntityTag entity : entities) {
if (entity.isSpawned()) {
if (loc != null) {
NMSHandler.entityHelper.faceLocation(entity.getBukkitEntity(), loc);
org.bukkit.entity.Entity bukkitEntity = entity.getBukkitEntity();

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Can clean up FQN for these.

org.bukkit.entity.Entity vehicle = bukkitEntity.getVehicle();

if (vehicle != null) {
bukkitEntity.leaveVehicle();
}
else {

if (loc != null) {
NMSHandler.entityHelper.faceLocation(bukkitEntity, loc);
} else {

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Newline after each }.

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Can make this else if (entity.isPlayer)) { and shift the below sections over.

if (entity.isPlayer()) {
Location playerTeleDest = entity.getLocation().clone();
float relYaw = (yawRaw - playerTeleDest.getYaw()) % 360;
Expand All @@ -140,40 +146,68 @@ public static void autoExecute(ScriptEntry scriptEntry,
playerTeleDest.setYaw(yawRaw);
playerTeleDest.setPitch(pitchRaw);
Player player = entity.getPlayer();
if (NMSHandler.getVersion().isAtLeast(NMSVersion.v1_19)) {
NetworkInterceptHelper.enable();
NMSHandler.packetHelper.sendRelativeLookPacket(player, actualRelYaw, relPitch);
}
else {

if (vehicle != null) {
PaperAPITools.instance.teleport(player, playerTeleDest, PlayerTeleportEvent.TeleportCause.PLUGIN, null, Arrays.asList(TeleportCommand.Relative.values()));
}
if (offthreadRepeats != null) {
NetworkInterceptHelper.enable();
int times = offthreadRepeats.asInt();
int ms = 50 / (times + 1);
DenizenCore.runAsync(() -> {
try {
for (int i = 0; i < times; i++) {
Thread.sleep(ms);
NMSHandler.packetHelper.sendRelativeLookPacket(player, actualRelYaw, relPitch);
} else {
final int times = offthreadRepeats != null ? offthreadRepeats.asInt() : 0;
final float stepYaw = times > 0 ? actualRelYaw / (times + 1) : actualRelYaw;
final float stepPitch = times > 0 ? relPitch / (times + 1) : relPitch;

if (NMSHandler.getVersion().isAtLeast(NMSVersion.v1_19)) {
NetworkInterceptHelper.enable();
NMSHandler.packetHelper.sendRelativeLookPacket(player, stepYaw, stepPitch);
} else {
PaperAPITools.instance.teleport(player, playerTeleDest, PlayerTeleportEvent.TeleportCause.PLUGIN, null, Arrays.asList(TeleportCommand.Relative.values()));
}

if (offthreadRepeats != null) {
NetworkInterceptHelper.enable();
int ms = 50 / (times + 1);
DenizenCore.runAsync(() -> {
try {
for (int i = 0; i < times; i++) {
Thread.sleep(ms);
NMSHandler.packetHelper.sendRelativeLookPacket(player, stepYaw, stepPitch);
}
} catch (Throwable ex) {
Debug.echoError(ex);
}
}
catch (Throwable ex) {
Debug.echoError(ex);
}
});
});
}
}
} else {
NMSHandler.entityHelper.rotate(bukkitEntity, yawRaw, pitchRaw);
}
else {
NMSHandler.entityHelper.rotate(entity.getBukkitEntity(), yawRaw, pitchRaw);
}

if (vehicle != null) {
Location vLoc = vehicle.getLocation().clone();
if (loc != null) {
org.bukkit.util.Vector dir = loc.toVector().subtract(vLoc.toVector());
if (dir.lengthSquared() > 0) {
vLoc.setDirection(dir);
}
} else {
vLoc.setYaw(yawRaw);
vLoc.setPitch(pitchRaw);
}

vehicle.teleport(vLoc, PlayerTeleportEvent.TeleportCause.PLUGIN);

org.bukkit.Bukkit.getScheduler().runTask(com.denizenscript.denizen.Denizen.getInstance(), () -> {
if (vehicle.isValid() && bukkitEntity.isValid()) {
vehicle.addPassenger(bukkitEntity);
}
});
}
}
}
if (duration != null && duration.getTicks() > 1) {
for (EntityTag entity : entities) {
BukkitRunnable task = new BukkitRunnable() {
long bounces = 0;

public void run() {
bounces++;
if (bounces > duration.getTicks()) {
Expand All @@ -182,11 +216,19 @@ public void run() {
return;
}
if (entity.isSpawned()) {
org.bukkit.entity.Entity target = entity.getBukkitEntity();
org.bukkit.entity.Entity vehicle = target.getVehicle();

if (loc != null) {
NMSHandler.entityHelper.faceLocation(entity.getBukkitEntity(), loc);
}
else {
NMSHandler.entityHelper.rotate(entity.getBukkitEntity(), yawRaw, pitchRaw);
NMSHandler.entityHelper.faceLocation(target, loc);
if (vehicle != null) {
NMSHandler.entityHelper.faceLocation(vehicle, loc);
}
} else {
NMSHandler.entityHelper.rotate(target, yawRaw, pitchRaw);
if (vehicle != null) {
NMSHandler.entityHelper.rotate(vehicle, yawRaw, pitchRaw);
}
}
}
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -153,9 +153,23 @@ else if (entityList.identify().startsWith("l@")) { // Compensate for legacy enti
Debug.echoError("Cannot interpret object '" + entityObj + "' as an EntityTag.");
continue;
}
org.bukkit.entity.Entity bukkitEntity = entity.getBukkitEntity();
org.bukkit.entity.Entity vehicle = bukkitEntity.getVehicle();
if (vehicle != null) {
bukkitEntity.leaveVehicle();
}

if (entity.isFake && entity.getWorld().equals(location.getWorld())) {
NMSHandler.entityHelper.snapPositionTo(entity.getBukkitEntity(), location.toVector());
NMSHandler.entityHelper.look(entity.getBukkitEntity(), location.getYaw(), location.getPitch());
NMSHandler.entityHelper.snapPositionTo(bukkitEntity, location.toVector());
NMSHandler.entityHelper.look(bukkitEntity, location.getYaw(), location.getPitch());
if (vehicle != null) {
vehicle.teleport(location, cause);
org.bukkit.Bukkit.getScheduler().runTask(com.denizenscript.denizen.Denizen.getInstance(), () -> {
if (vehicle.isValid() && bukkitEntity.isValid()) {
vehicle.addPassenger(bukkitEntity);
}
});
}
return;
}
if (offthreadRepeats != null && relativeAxes != null && entity.isPlayer()) {
Expand Down Expand Up @@ -187,6 +201,16 @@ else if (entityList.identify().startsWith("l@")) { // Compensate for legacy enti
}
List<Relative> finalRelativeAxes = relativeAxes;
NMSHandler.packetHelper.sendRelativePositionPacket(player, x, y, z, yaw, pitch, finalRelativeAxes);

if (vehicle != null) {
vehicle.teleport(location, cause);
org.bukkit.Bukkit.getScheduler().runTask(com.denizenscript.denizen.Denizen.getInstance(), () -> {
if (vehicle.isValid() && bukkitEntity.isValid()) {
vehicle.addPassenger(bukkitEntity);
}
});
}

DenizenCore.runAsync(() -> {
try {
for (int i = 0; i < times - 1; i++) {
Expand All @@ -201,10 +225,20 @@ else if (entityList.identify().startsWith("l@")) { // Compensate for legacy enti
continue;
}
if (entityOptions != null || relativeAxes != null) {
PaperAPITools.instance.teleport(entity.getBukkitEntity(), location, cause, entityOptions, relativeAxes);
continue;
PaperAPITools.instance.teleport(bukkitEntity, location, cause, entityOptions, relativeAxes);
}
else {
entity.teleport(location, cause);
}

if (vehicle != null) {
vehicle.teleport(location, cause);
org.bukkit.Bukkit.getScheduler().runTask(com.denizenscript.denizen.Denizen.getInstance(), () -> {
if (vehicle.isValid() && bukkitEntity.isValid()) {
vehicle.addPassenger(bukkitEntity);
}
});
}
entity.teleport(location, cause);
}
}
}