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();
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user