Skip to content

Commit

Permalink
Paper 1.19: look command with relative tele
Browse files Browse the repository at this point in the history
  • Loading branch information
mcmonkey4eva committed Aug 14, 2022
1 parent 7b01abb commit 63ca530
Show file tree
Hide file tree
Showing 3 changed files with 30 additions and 2 deletions.
@@ -1,9 +1,11 @@
package com.denizenscript.denizen.paper.utilities;

import com.denizenscript.denizen.nms.NMSHandler;
import com.denizenscript.denizen.nms.NMSVersion;
import com.denizenscript.denizen.paper.PaperModule;
import com.denizenscript.denizen.utilities.AdvancedTextImpl;
import com.denizenscript.denizencore.utilities.CoreUtilities;
import io.papermc.paper.entity.RelativeTeleportFlag;
import net.kyori.adventure.text.Component;
import net.md_5.bungee.api.ChatColor;
import org.bukkit.Bukkit;
Expand All @@ -14,6 +16,7 @@
import org.bukkit.entity.Entity;
import org.bukkit.entity.Player;
import org.bukkit.event.inventory.InventoryType;
import org.bukkit.event.player.PlayerTeleportEvent;
import org.bukkit.inventory.Inventory;
import org.bukkit.inventory.InventoryHolder;
import org.bukkit.inventory.InventoryView;
Expand Down Expand Up @@ -123,4 +126,14 @@ public void sendConsoleMessage(CommandSender sender, String text) {
public InventoryView openAnvil(Player player, Location loc) {
return player.openAnvil(loc, true);
}

@Override
public void teleportPlayerRelative(Player player, Location loc) {
if (NMSHandler.getVersion().isAtLeast(NMSVersion.v1_19)) {
player.teleport(loc, PlayerTeleportEvent.TeleportCause.PLUGIN, true, false, RelativeTeleportFlag.values());
}
else {
super.teleportPlayerRelative(player, loc);
}
}
}
@@ -1,6 +1,7 @@
package com.denizenscript.denizen.scripts.commands.entity;

import com.denizenscript.denizen.Denizen;
import com.denizenscript.denizen.utilities.AdvancedTextImpl;
import com.denizenscript.denizen.utilities.Utilities;
import com.denizenscript.denizen.utilities.debugging.Debug;
import com.denizenscript.denizen.nms.NMSHandler;
Expand All @@ -14,6 +15,7 @@
import com.denizenscript.denizencore.objects.core.ListTag;
import com.denizenscript.denizencore.scripts.ScriptEntry;
import com.denizenscript.denizencore.scripts.commands.AbstractCommand;
import org.bukkit.Location;
import org.bukkit.scheduler.BukkitRunnable;
import org.bukkit.scheduler.BukkitTask;

Expand Down Expand Up @@ -103,7 +105,7 @@ else if (!scriptEntry.hasObject("entities")
scriptEntry.defaultObject("entities", Utilities.entryDefaultEntityList(scriptEntry, false));
}
if (!scriptEntry.hasObject("location") && !scriptEntry.hasObject("cancel") && !scriptEntry.hasObject("yaw")) {
throw new InvalidArgumentsException("Must specify a location or 'cancel'!");
throw new InvalidArgumentsException("Must specify a location, a yaw and pitch, or 'cancel'!");
}
if (!scriptEntry.hasObject("entities")) {
throw new InvalidArgumentsException("Must specify an entity!");
Expand Down Expand Up @@ -145,7 +147,15 @@ public void execute(ScriptEntry scriptEntry) {
NMSHandler.entityHelper.faceLocation(entity.getBukkitEntity(), loc);
}
else {
NMSHandler.entityHelper.rotate(entity.getBukkitEntity(), yawRaw, pitchRaw);
if (entity.isPlayer()) {
Location playerTeleDest = entity.getLocation().clone();
playerTeleDest.setYaw(yawRaw);
playerTeleDest.setPitch(pitchRaw);
AdvancedTextImpl.instance.teleportPlayerRelative(entity.getPlayer(), playerTeleDest);
}
else {
NMSHandler.entityHelper.rotate(entity.getBukkitEntity(), yawRaw, pitchRaw);
}
}
}
}
Expand Down
Expand Up @@ -11,6 +11,7 @@
import org.bukkit.entity.Entity;
import org.bukkit.entity.Player;
import org.bukkit.event.inventory.InventoryType;
import org.bukkit.event.player.PlayerTeleportEvent;
import org.bukkit.inventory.Inventory;
import org.bukkit.inventory.InventoryHolder;
import org.bukkit.inventory.InventoryView;
Expand Down Expand Up @@ -100,4 +101,8 @@ public void sendConsoleMessage(CommandSender sender, String text) {
public InventoryView openAnvil(Player player, Location loc) {
throw new UnsupportedOperationException();
}

public void teleportPlayerRelative(Player player, Location loc) {
player.teleport(loc, PlayerTeleportEvent.TeleportCause.PLUGIN);
}
}

0 comments on commit 63ca530

Please sign in to comment.