Skip to content

Commit 6ffef67

Browse files
authored
Fixed certain commands that teleport the player or an entity to Folia. (#2919)
* Fixed certain commands that teleport the player or an entity to Folia. * I just saw a comment about the requirement to include its return value, so I simply stated that if the server was running Folia (see: https://github.com/EngineHub/WorldEdit/pull/2848/changes#r2552494430
1 parent 9741ae5 commit 6ffef67

2 files changed

Lines changed: 22 additions & 4 deletions

File tree

worldedit-bukkit/src/main/java/com/sk89q/worldedit/bukkit/BukkitEntity.java

Lines changed: 7 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -29,6 +29,7 @@
2929
import com.sk89q.worldedit.util.Location;
3030
import com.sk89q.worldedit.util.formatting.text.TranslatableComponent;
3131
import com.sk89q.worldedit.world.NullWorld;
32+
import io.papermc.lib.PaperLib;
3233

3334
import java.lang.ref.WeakReference;
3435
import javax.annotation.Nullable;
@@ -76,7 +77,12 @@ public Location getLocation() {
7677
public boolean setLocation(Location location) {
7778
org.bukkit.entity.Entity entity = entityRef.get();
7879
if (entity != null) {
79-
return entity.teleport(BukkitAdapter.adapt(location));
80+
if (WorldEditPlugin.getInstance().isFolia()) {
81+
var unused = PaperLib.teleportAsync(entity, BukkitAdapter.adapt(location));
82+
return true;
83+
} else {
84+
return entity.teleport(BukkitAdapter.adapt(location));
85+
}
8086
} else {
8187
return false;
8288
}

worldedit-bukkit/src/main/java/com/sk89q/worldedit/bukkit/BukkitPlayer.java

Lines changed: 15 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -45,6 +45,7 @@
4545
import com.sk89q.worldedit.world.block.BlockTypes;
4646
import com.sk89q.worldedit.world.gamemode.GameMode;
4747
import com.sk89q.worldedit.world.gamemode.GameModes;
48+
import io.papermc.lib.PaperLib;
4849
import org.bukkit.Bukkit;
4950
import org.bukkit.Location;
5051
import org.bukkit.entity.Player;
@@ -146,8 +147,14 @@ public void print(Component component) {
146147

147148
@Override
148149
public boolean trySetPosition(Vector3 pos, float pitch, float yaw) {
149-
return player.teleport(new Location(player.getWorld(), pos.x(), pos.y(),
150-
pos.z(), yaw, pitch));
150+
Location location = new Location(player.getWorld(), pos.x(), pos.y(),
151+
pos.z(), yaw, pitch);
152+
if (WorldEditPlugin.getInstance().isFolia()) {
153+
var unused = PaperLib.teleportAsync(player, location);
154+
return true;
155+
} else {
156+
return player.teleport(location);
157+
}
151158
}
152159

153160
@Override
@@ -224,7 +231,12 @@ public com.sk89q.worldedit.util.Location getLocation() {
224231

225232
@Override
226233
public boolean setLocation(com.sk89q.worldedit.util.Location location) {
227-
return player.teleport(BukkitAdapter.adapt(location));
234+
if (WorldEditPlugin.getInstance().isFolia()) {
235+
var unused = PaperLib.teleportAsync(player, BukkitAdapter.adapt(location));
236+
return true;
237+
} else {
238+
return player.teleport(BukkitAdapter.adapt(location));
239+
}
228240
}
229241

230242
@SuppressWarnings("deprecation") // Paper's deprecation, we need to support Spigot still

0 commit comments

Comments
 (0)