/
MapCursor.java
67 lines (55 loc) · 2.35 KB
/
MapCursor.java
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
package net.aufdemrand.denizen.utilities.maps;
import net.aufdemrand.denizen.objects.dPlayer;
import net.aufdemrand.denizencore.objects.aH;
import org.bukkit.map.MapCanvas;
import org.bukkit.map.MapView;
import java.util.HashMap;
import java.util.Map;
import java.util.UUID;
public class MapCursor extends MapObject {
protected String directionTag;
protected String typeTag;
protected Map<UUID, org.bukkit.map.MapCursor> cursors = new HashMap<UUID, org.bukkit.map.MapCursor>();
public MapCursor(String xTag, String yTag, String visibilityTag, boolean debug, String directionTag, String typeTag) {
super(xTag, yTag, visibilityTag, debug);
this.directionTag = directionTag;
this.typeTag = typeTag;
}
public byte getDirection(dPlayer player) {
return yawToDirection(aH.getDoubleFrom(tag(directionTag, player)));
}
public org.bukkit.map.MapCursor.Type getType(dPlayer player) {
return org.bukkit.map.MapCursor.Type.valueOf(tag(typeTag, player).toUpperCase());
}
private byte yawToDirection(double yaw) {
return (byte) (Math.floor((yaw / 22.5) + 0.5) % 16);
}
@Override
public void update(dPlayer player, UUID uuid) {
super.update(player, uuid);
if (cursors.containsKey(uuid)) {
org.bukkit.map.MapCursor cursor = cursors.get(uuid);
cursor.setX((byte) getX(player, uuid));
cursor.setY((byte) getY(player, uuid));
cursor.setVisible(isVisibleTo(player, uuid));
cursor.setDirection(getDirection(player));
cursor.setType(getType(player));
}
}
@Override
public Map<String, Object> getSaveData() {
Map<String, Object> data = super.getSaveData();
data.put("type", "CURSOR");
data.put("direction", directionTag);
data.put("cursor", typeTag);
return data;
}
@Override
public void render(MapView mapView, MapCanvas mapCanvas, dPlayer player, UUID uuid) {
org.bukkit.map.MapCursor cursor = new org.bukkit.map.MapCursor((byte) getX(player, uuid),
(byte) getY(player, uuid), getDirection(player), getType(player).getValue(),
isVisibleTo(player, uuid));
mapCanvas.getCursors().addCursor(cursor);
cursors.put(uuid, cursor);
}
}