Fix clipboard WorldEditRenderer with transform

This commit is contained in:
Lixfel
2024-11-29 13:02:35 +01:00
parent 891f4b0e9c
commit 46c2de43a4
4 changed files with 31 additions and 11 deletions
@@ -24,6 +24,7 @@ import com.sk89q.worldedit.IncompleteRegionException;
import com.sk89q.worldedit.LocalSession;
import com.sk89q.worldedit.bukkit.WorldEditPlugin;
import com.sk89q.worldedit.extent.clipboard.Clipboard;
import com.sk89q.worldedit.math.transform.Transform;
import com.sk89q.worldedit.regions.Region;
import com.sk89q.worldedit.regions.RegionSelector;
import com.sk89q.worldedit.world.World;
@@ -43,7 +44,7 @@ public class WorldEditRenderer {
private static final Vector ONES = new Vector(1, 1, 1);
private static final Material WAND = Material.valueOf(Core.getVersion() > 12 ? "WOODEN_AXE" : "WOOD_AXE");
private static final Material WAND = FlatteningWrapper.impl.getMaterial("WOOD_AXE");
private final WorldEditPlugin we;
@@ -62,13 +63,12 @@ public class WorldEditRenderer {
LocalSession session = we.getSession(player);
try {
Clipboard clipboard = session.getClipboard().getClipboard();
Vector pos = player.getLocation().toVector();
Region region = clipboard.getRegion();
Vector offset = player.getLocation().toVector().subtract(WorldEditWrapper.impl.getOrigin(clipboard));
drawCuboid(
WorldEditWrapper.impl.getMinimum(region).add(offset),
WorldEditWrapper.impl.getMaximum(region).add(offset),
Particle.VILLAGER_HAPPY, player
);
Transform transform = session.getClipboard().getTransform();
Vector a = WorldEditWrapper.impl.applyTransform(WorldEditWrapper.impl.getMinimum(region).subtract(WorldEditWrapper.impl.getOrigin(clipboard)), transform).add(pos);
Vector b = WorldEditWrapper.impl.applyTransform(WorldEditWrapper.impl.getMaximum(region).subtract(WorldEditWrapper.impl.getOrigin(clipboard)), transform).add(pos);
drawCuboid(Vector.getMinimum(a, b), Vector.getMaximum(a, b), Particle.VILLAGER_HAPPY, player);
} catch (EmptyClipboardException e) {
//ignore
}
@@ -21,6 +21,7 @@ package de.steamwar.core;
import com.sk89q.worldedit.bukkit.WorldEditPlugin;
import com.sk89q.worldedit.extent.clipboard.Clipboard;
import com.sk89q.worldedit.math.transform.Transform;
import com.sk89q.worldedit.regions.Region;
import org.bukkit.Bukkit;
import org.bukkit.entity.Player;
@@ -39,6 +40,7 @@ public interface WorldEditWrapper {
Vector getOrigin(Clipboard clipboard);
Vector getMinimum(Region region);
Vector getMaximum(Region region);
Vector applyTransform(Vector vector, Transform transform);
static WorldEditPlugin getWorldEditPlugin() {
return (WorldEditPlugin) Bukkit.getPluginManager().getPlugin("WorldEdit");