forked from SteamWar/SteamWar
Fix some stuff
This commit is contained in:
@@ -26,7 +26,6 @@ import org.bukkit.block.data.BlockData;
|
||||
import org.bukkit.entity.Player;
|
||||
import org.bukkit.util.Vector;
|
||||
|
||||
import java.util.Collections;
|
||||
import java.util.HashMap;
|
||||
import java.util.Map;
|
||||
|
||||
@@ -63,31 +62,26 @@ public class WorldEditRendererWrapper20 implements WorldEditRendererWrapper {
|
||||
}
|
||||
|
||||
private static final Map<Player, REntityServer> servers = new HashMap<>();
|
||||
private static final Map<Player, Map<Player, BoxPair>> boxes = new HashMap<>();
|
||||
private static final Map<Player, BoxPair> boxes = new HashMap<>();
|
||||
|
||||
@Override
|
||||
public void draw(Player player, Player owner, boolean clipboard, Vector pos1, Vector pos2) {
|
||||
public void draw(Player player, boolean scheduled, boolean clipboard, Vector pos1, Vector pos2) {
|
||||
REntityServer server = servers.computeIfAbsent(player, __ -> {
|
||||
REntityServer entityServer = new REntityServer();
|
||||
entityServer.addPlayer(player);
|
||||
return entityServer;
|
||||
});
|
||||
|
||||
WorldEditRendererCUIEditor.Type type;
|
||||
if (player == owner) {
|
||||
type = clipboard ? WorldEditRendererCUIEditor.Type.CLIPBOARD : WorldEditRendererCUIEditor.Type.SELECTION;
|
||||
} else {
|
||||
type = clipboard ? WorldEditRendererCUIEditor.Type.CLIPBOARD_OTHER : WorldEditRendererCUIEditor.Type.SELECTION_OTHER;
|
||||
}
|
||||
WorldEditRendererCUIEditor.Type type = clipboard ? WorldEditRendererCUIEditor.Type.CLIPBOARD : WorldEditRendererCUIEditor.Type.SELECTION;
|
||||
float width = type.getWidth(player).value;
|
||||
Material material = type.getMaterial(player);
|
||||
if (material == Material.BARRIER) {
|
||||
hide(player, owner, clipboard, true);
|
||||
hide(player, clipboard, true);
|
||||
return;
|
||||
}
|
||||
BlockData block = material.createBlockData();
|
||||
|
||||
BoxPair boxPair = boxes.computeIfAbsent(player, __ -> new HashMap<>()).computeIfAbsent(owner, __ -> new BoxPair());
|
||||
BoxPair boxPair = boxes.computeIfAbsent(player, __ -> new BoxPair());
|
||||
CWireframe box = boxPair.get(clipboard);
|
||||
if (box == null) {
|
||||
box = new CWireframe(server);
|
||||
@@ -107,35 +101,18 @@ public class WorldEditRendererWrapper20 implements WorldEditRendererWrapper {
|
||||
}
|
||||
|
||||
@Override
|
||||
public void hide(Player player, Player owner, boolean clipboard, boolean hide) {
|
||||
Map<Player, BoxPair> pairs = boxes.getOrDefault(player, Collections.emptyMap());
|
||||
if (owner != null) {
|
||||
BoxPair boxPair = pairs.get(owner);
|
||||
if (boxPair == null) return;
|
||||
CWireframe box = boxPair.get(clipboard);
|
||||
if (box != null) box.hide(hide);
|
||||
} else {
|
||||
pairs.values().forEach(boxPair -> {
|
||||
CWireframe box = boxPair.get(clipboard);
|
||||
if (box != null) box.hide(hide);
|
||||
});
|
||||
}
|
||||
public void hide(Player player, boolean clipboard, boolean hide) {
|
||||
BoxPair boxPair = boxes.get(player);
|
||||
if (boxPair == null) return;
|
||||
CWireframe box = boxPair.get(clipboard);
|
||||
if (box == null) return;
|
||||
box.hide(hide);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void remove(Player player) {
|
||||
Map<Player, BoxPair> removed = boxes.remove(player);
|
||||
if (removed != null) {
|
||||
removed.values().forEach(boxPair -> {
|
||||
boxPair.die();
|
||||
});
|
||||
}
|
||||
boxes.values().forEach(map -> {
|
||||
BoxPair boxPair = map.remove(player);
|
||||
if (boxPair == null) return;
|
||||
boxPair.die();
|
||||
});
|
||||
|
||||
BoxPair boxPair = boxes.remove(player);
|
||||
if (boxPair != null) boxPair.die();
|
||||
REntityServer server = servers.remove(player);
|
||||
if (server != null) server.close();
|
||||
}
|
||||
|
||||
@@ -25,7 +25,7 @@ import org.bukkit.util.Vector;
|
||||
public class WorldEditRendererWrapper8 implements WorldEditRendererWrapper {
|
||||
|
||||
@Override
|
||||
public void draw(Player player, Player owner, boolean clipboard, Vector pos1, Vector pos2) {
|
||||
public void draw(Player player, boolean scheduled, boolean clipboard, Vector pos1, Vector pos2) {
|
||||
}
|
||||
|
||||
@Override
|
||||
@@ -33,7 +33,7 @@ public class WorldEditRendererWrapper8 implements WorldEditRendererWrapper {
|
||||
}
|
||||
|
||||
@Override
|
||||
public void hide(Player player, Player owner, boolean clipboard, boolean hide) {
|
||||
public void hide(Player player, boolean clipboard, boolean hide) {
|
||||
}
|
||||
|
||||
@Override
|
||||
|
||||
@@ -34,34 +34,32 @@ public class WorldEditRendererWrapper9 implements WorldEditRendererWrapper {
|
||||
private static final Vector STEPS = new Vector(STEP_SIZE, STEP_SIZE, STEP_SIZE);
|
||||
|
||||
@Override
|
||||
public void draw(Player player, Player owner, boolean clipboard, Vector min, Vector max) {
|
||||
public void draw(Player player, boolean scheduled, boolean clipboard, Vector min, Vector max) {
|
||||
if (!scheduled) return;
|
||||
|
||||
max = max.clone().add(ONES);
|
||||
drawLine(player, owner, clipboard, new Vector(min.getX(), min.getY(), min.getZ()), new Vector(max.getX(), min.getY(), min.getZ()));
|
||||
drawLine(player, owner, clipboard, new Vector(min.getX(), max.getY(), min.getZ()), new Vector(max.getX(), max.getY(), min.getZ()));
|
||||
drawLine(player, owner, clipboard, new Vector(min.getX(), min.getY(), max.getZ()), new Vector(max.getX(), min.getY(), max.getZ()));
|
||||
drawLine(player, owner, clipboard, new Vector(min.getX(), max.getY(), max.getZ()), new Vector(max.getX(), max.getY(), max.getZ()));
|
||||
drawLine(player, clipboard, new Vector(min.getX(), min.getY(), min.getZ()), new Vector(max.getX(), min.getY(), min.getZ()));
|
||||
drawLine(player, clipboard, new Vector(min.getX(), max.getY(), min.getZ()), new Vector(max.getX(), max.getY(), min.getZ()));
|
||||
drawLine(player, clipboard, new Vector(min.getX(), min.getY(), max.getZ()), new Vector(max.getX(), min.getY(), max.getZ()));
|
||||
drawLine(player, clipboard, new Vector(min.getX(), max.getY(), max.getZ()), new Vector(max.getX(), max.getY(), max.getZ()));
|
||||
|
||||
drawLine(player, owner, clipboard, new Vector(min.getX(), min.getY(), min.getZ()), new Vector(min.getX(), max.getY(), min.getZ()));
|
||||
drawLine(player, owner, clipboard, new Vector(max.getX(), min.getY(), min.getZ()), new Vector(max.getX(), max.getY(), min.getZ()));
|
||||
drawLine(player, owner, clipboard, new Vector(min.getX(), min.getY(), max.getZ()), new Vector(min.getX(), max.getY(), max.getZ()));
|
||||
drawLine(player, owner, clipboard, new Vector(max.getX(), min.getY(), max.getZ()), new Vector(max.getX(), max.getY(), max.getZ()));
|
||||
drawLine(player, clipboard, new Vector(min.getX(), min.getY(), min.getZ()), new Vector(min.getX(), max.getY(), min.getZ()));
|
||||
drawLine(player, clipboard, new Vector(max.getX(), min.getY(), min.getZ()), new Vector(max.getX(), max.getY(), min.getZ()));
|
||||
drawLine(player, clipboard, new Vector(min.getX(), min.getY(), max.getZ()), new Vector(min.getX(), max.getY(), max.getZ()));
|
||||
drawLine(player, clipboard, new Vector(max.getX(), min.getY(), max.getZ()), new Vector(max.getX(), max.getY(), max.getZ()));
|
||||
|
||||
drawLine(player, owner, clipboard, new Vector(min.getX(), min.getY(), min.getZ()), new Vector(min.getX(), min.getY(), max.getZ()));
|
||||
drawLine(player, owner, clipboard, new Vector(max.getX(), min.getY(), min.getZ()), new Vector(max.getX(), min.getY(), max.getZ()));
|
||||
drawLine(player, owner, clipboard, new Vector(min.getX(), max.getY(), min.getZ()), new Vector(min.getX(), max.getY(), max.getZ()));
|
||||
drawLine(player, owner, clipboard, new Vector(max.getX(), max.getY(), min.getZ()), new Vector(max.getX(), max.getY(), max.getZ()));
|
||||
drawLine(player, clipboard, new Vector(min.getX(), min.getY(), min.getZ()), new Vector(min.getX(), min.getY(), max.getZ()));
|
||||
drawLine(player, clipboard, new Vector(max.getX(), min.getY(), min.getZ()), new Vector(max.getX(), min.getY(), max.getZ()));
|
||||
drawLine(player, clipboard, new Vector(min.getX(), max.getY(), min.getZ()), new Vector(min.getX(), max.getY(), max.getZ()));
|
||||
drawLine(player, clipboard, new Vector(max.getX(), max.getY(), min.getZ()), new Vector(max.getX(), max.getY(), max.getZ()));
|
||||
}
|
||||
|
||||
private void drawLine(Player player, Player owner, boolean clipboard, Vector min, Vector max) {
|
||||
private void drawLine(Player player, boolean clipboard, Vector min, Vector max) {
|
||||
Particle particle;
|
||||
if (player == owner) {
|
||||
if (clipboard) {
|
||||
particle = TrickyParticleWrapper.impl.getVillagerHappy();
|
||||
} else {
|
||||
particle = Particle.DRAGON_BREATH;
|
||||
}
|
||||
if (clipboard) {
|
||||
particle = TrickyParticleWrapper.impl.getVillagerHappy();
|
||||
} else {
|
||||
particle = Particle.TOWN_AURA;
|
||||
particle = Particle.DRAGON_BREATH;
|
||||
}
|
||||
|
||||
Vector stepSize = max.clone().subtract(min).normalize().multiply(STEPS);
|
||||
@@ -85,7 +83,7 @@ public class WorldEditRendererWrapper9 implements WorldEditRendererWrapper {
|
||||
}
|
||||
|
||||
@Override
|
||||
public void hide(Player player, Player owner, boolean clipboard, boolean hide) {
|
||||
public void hide(Player player, boolean clipboard, boolean hide) {
|
||||
}
|
||||
|
||||
@Override
|
||||
|
||||
@@ -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);
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user