Fix some stuff

This commit is contained in:
2025-06-26 21:01:00 +02:00
parent 4383e541d8
commit c6ecab5aa8
6 changed files with 74 additions and 106 deletions
@@ -47,22 +47,20 @@ public class WorldEditRenderer implements Listener {
we = WorldEditWrapper.getWorldEditPlugin();
Bukkit.getPluginManager().registerEvents(this, Core.getInstance());
Bukkit.getScheduler().runTaskTimer(Core.getInstance(), this::render, 20, 20);
Bukkit.getScheduler().runTaskTimer(Core.getInstance(), () -> {
for (Player player : Bukkit.getOnlinePlayers()) {
renderPlayer(player, true);
}
}, 20, 20);
}
private void render() {
for(Player player : Bukkit.getOnlinePlayers()) {
renderPlayer(player);
}
}
private void renderPlayer(Player player) {
private void renderPlayer(Player player, boolean scheduled) {
LocalSession session = we.getSession(player);
renderClipboard(player, session);
renderRegion(player, session);
renderClipboard(player, session, scheduled);
renderRegion(player, session, scheduled);
}
private void renderClipboard(Player player, LocalSession session) {
private void renderClipboard(Player player, LocalSession session, boolean scheduled) {
try {
Clipboard clipboard = session.getClipboard().getClipboard();
Vector pos = player.getLocation().toVector();
@@ -72,36 +70,34 @@ public class WorldEditRenderer implements Listener {
Vector b = WorldEditWrapper.impl.applyTransform(WorldEditWrapper.impl.getMaximum(region).subtract(WorldEditWrapper.impl.getOrigin(clipboard)), transform).add(pos);
a = new Vector(a.getBlockX(), a.getBlockY(), a.getBlockZ());
b = new Vector(b.getBlockX(), b.getBlockY(), b.getBlockZ());
drawCuboid(Vector.getMinimum(a, b), Vector.getMaximum(a, b), true, player);
drawCuboid(Vector.getMinimum(a, b), Vector.getMaximum(a, b), scheduled, true, player);
} catch (EmptyClipboardException e) {
WorldEditRendererWrapper.impl.hide(player, player, true, true);
WorldEditRendererWrapper.impl.hide(player, true, true);
}
}
private void renderRegion(Player player, LocalSession session) {
private void renderRegion(Player player, LocalSession session, boolean scheduled) {
World world = session.getSelectionWorld();
if(world != null) {
RegionSelector regionSelector = session.getRegionSelector(world);
try {
Region region = regionSelector.getRegion();
drawCuboid(WorldEditWrapper.impl.getMinimum(region), WorldEditWrapper.impl.getMaximum(region), false, player);
drawCuboid(WorldEditWrapper.impl.getMinimum(region), WorldEditWrapper.impl.getMaximum(region), scheduled, false, player);
} catch (IncompleteRegionException e) {
WorldEditRendererWrapper.impl.hide(player, player, false, true);
WorldEditRendererWrapper.impl.hide(player, false, true);
}
}
}
private void drawCuboid(Vector min, Vector max, boolean clipboard, Player owner) {
for (Player player : Bukkit.getOnlinePlayers()) {
//noinspection deprecation
if(player.getItemInHand().getType() != WAND) {
WorldEditRendererWrapper.impl.hide(player, owner, true, true);
WorldEditRendererWrapper.impl.hide(player, owner, false, true);
} else {
WorldEditRendererWrapper.impl.hide(player, owner, true, false);
WorldEditRendererWrapper.impl.hide(player, owner, false, false);
WorldEditRendererWrapper.safeDraw(player, owner, clipboard, min, max);
}
private void drawCuboid(Vector min, Vector max, boolean scheduled, boolean clipboard, Player owner) {
//noinspection deprecation
if(owner.getItemInHand().getType() != WAND) {
WorldEditRendererWrapper.impl.hide(owner, true, true);
WorldEditRendererWrapper.impl.hide(owner, false, true);
} else {
WorldEditRendererWrapper.impl.hide(owner, true, false);
WorldEditRendererWrapper.impl.hide(owner, false, false);
WorldEditRendererWrapper.safeDraw(owner, scheduled, clipboard, min, max);
}
}
@@ -110,20 +106,20 @@ public class WorldEditRenderer implements Listener {
if(event.getPlayer().getItemInHand().getType() == WAND) {
WorldEditRendererWrapper.impl.tick(event.getPlayer());
}
renderClipboard(event.getPlayer(), we.getSession(event.getPlayer()));
renderClipboard(event.getPlayer(), we.getSession(event.getPlayer()), false);
}
@EventHandler
public void onPlayerInteract(PlayerInteractEvent event) {
Bukkit.getScheduler().runTaskLater(Core.getInstance(), () -> {
renderRegion(event.getPlayer(), we.getSession(event.getPlayer()));
renderRegion(event.getPlayer(), we.getSession(event.getPlayer()), false);
}, 0);
}
@EventHandler
public void onBlockBreak(BlockBreakEvent event) {
Bukkit.getScheduler().runTaskLater(Core.getInstance(), () -> {
renderRegion(event.getPlayer(), we.getSession(event.getPlayer()));
renderRegion(event.getPlayer(), we.getSession(event.getPlayer()), false);
}, 0);
}
@@ -132,8 +128,8 @@ public class WorldEditRenderer implements Listener {
if (event.getMessage().startsWith("//")) {
Bukkit.getScheduler().runTaskLater(Core.getInstance(), () -> {
LocalSession session = we.getSession(event.getPlayer());
renderRegion(event.getPlayer(), session);
renderClipboard(event.getPlayer(), session);
renderRegion(event.getPlayer(), session, false);
renderClipboard(event.getPlayer(), session, false);
}, 5);
}
}
@@ -141,19 +137,19 @@ public class WorldEditRenderer implements Listener {
@EventHandler
public void onPlayerSwapHandItems(PlayerSwapHandItemsEvent event) {
Bukkit.getScheduler().runTaskLater(Core.getInstance(), () -> {
renderPlayer(event.getPlayer());
renderPlayer(event.getPlayer(), false);
}, 1);
}
@EventHandler
public void onPlayerDropItem(PlayerDropItemEvent event) {
renderPlayer(event.getPlayer());
renderPlayer(event.getPlayer(), false);
}
@EventHandler
public void onPlayerItemHeld(PlayerItemHeldEvent event) {
Bukkit.getScheduler().runTaskLater(Core.getInstance(), () -> {
renderPlayer(event.getPlayer());
renderPlayer(event.getPlayer(), false);
}, 1);
}
@@ -41,8 +41,7 @@ public class WorldEditRendererCUIEditor {
public enum Type {
SELECTION("cui_selection_material", "cui_selection_width", Material.PURPLE_CONCRETE, Width.LARGE),
CLIPBOARD("cui_clipboard_material", "cui_clipboard_width", Material.LIME_CONCRETE, Width.LARGE),
SELECTION_OTHER("cui_selection_other_material", "cui_selection_other_width", Material.GRAY_CONCRETE, Width.SLIM),
CLIPBOARD_OTHER("cui_clipboard_other_material", "cui_clipboard_other_width", Material.GRAY_CONCRETE, Width.SLIM);
;
private final String configMaterial;
private final String configWidth;
@@ -103,10 +102,8 @@ public class WorldEditRendererCUIEditor {
@Register
public void cuiEditor(Player player) {
SWInventory inv = new SWInventory(player, 9 * 2, Core.MESSAGE.parse("WORLDEDIT_CUI_TITLE", player));
setElement(inv, player, 1, "WORLDEDIT_CUI_SELECTION", Type.SELECTION);
setElement(inv, player, 3, "WORLDEDIT_CUI_CLIPBOARD", Type.CLIPBOARD);
setElement(inv, player, 5, "WORLDEDIT_CUI_SELECTION_OTHER", Type.SELECTION_OTHER);
setElement(inv, player, 7, "WORLDEDIT_CUI_CLIPBOARD_OTHER", Type.CLIPBOARD_OTHER);
setElement(inv, player, 3, "WORLDEDIT_CUI_SELECTION", Type.SELECTION);
setElement(inv, player, 5, "WORLDEDIT_CUI_CLIPBOARD", Type.CLIPBOARD);
inv.open();
}
@@ -26,19 +26,19 @@ public interface WorldEditRendererWrapper {
WorldEditRendererWrapper fallback = VersionDependent.getVersionImpl(Core.getInstance(), 9);
WorldEditRendererWrapper impl = VersionDependent.getVersionImpl(Core.getInstance());
static void safeDraw(Player player, Player owner, boolean clipboard, Vector pos1, Vector pos2) {
static void safeDraw(Player player, boolean scheduled, boolean clipboard, Vector pos1, Vector pos2) {
if (Core.isBedrockPlayer(player) || PlayerVersion.getVersion(player) < 20) {
fallback.draw(player, owner, clipboard, pos1, pos2);
fallback.draw(player, scheduled, clipboard, pos1, pos2);
} else {
impl.draw(player, owner, clipboard, pos1, pos2);
impl.draw(player, scheduled, clipboard, pos1, pos2);
}
}
void draw(Player player, Player owner, boolean clipboard, Vector pos1, Vector pos2);
void draw(Player player, boolean scheduled, boolean clipboard, Vector pos1, Vector pos2);
void tick(Player player);
void hide(Player player, Player owner, boolean clipboard, boolean hide);
void hide(Player player, boolean clipboard, boolean hide);
void remove(Player player);
}