/
EntityCustomName.java
129 lines (110 loc) · 3.8 KB
/
EntityCustomName.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
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
package net.aufdemrand.denizen.objects.properties.entity;
import net.aufdemrand.denizen.objects.dEntity;
import net.aufdemrand.denizencore.objects.Element;
import net.aufdemrand.denizencore.objects.Mechanism;
import net.aufdemrand.denizencore.objects.dObject;
import net.aufdemrand.denizencore.objects.properties.Property;
import net.aufdemrand.denizencore.tags.Attribute;
public class EntityCustomName implements Property {
public static boolean describes(dObject entity) {
return entity instanceof dEntity;
}
public static EntityCustomName getFrom(dObject entity) {
if (!describes(entity)) {
return null;
}
return new EntityCustomName((dEntity) entity);
}
public static final String[] handledTags = new String[] {
"custom_name_visible", "custom_name"
};
public static final String[] handledMechs = new String[] {
"custom_name_visibility", "custom_name_visible", "custom_name"
};
private EntityCustomName(dEntity ent) {
entity = ent;
}
dEntity entity;
@Override
public String getPropertyString() {
String name = entity.getBukkitEntity().getCustomName();
if (name == null) {
return null;
}
else {
return name;
}
}
@Override
public String getPropertyId() {
return "custom_name";
}
@Override
public String getAttribute(Attribute attribute) {
if (attribute == null) {
return null;
}
// <--[tag]
// @attribute <e@entity.custom_name_visible>
// @returns Element(Boolean)
// @group attributes
// @description
// Returns true if the entity's custom name is visible.
// -->
if (attribute.startsWith("custom_name_visible") || attribute.startsWith("custom_name.visible")) {
int fulfilled = 1;
if (attribute.startsWith("custom_name.visible")) {
fulfilled = 2;
}
return new Element(entity.getBukkitEntity().isCustomNameVisible()).getAttribute(attribute.fulfill(fulfilled));
}
// <--[tag]
// @attribute <e@entity.custom_name>
// @returns Element
// @group attributes
// @description
// Returns the entity's custom name, if any.
// -->
else if (attribute.startsWith("custom_name")) {
String name = entity.getBukkitEntity().getCustomName();
if (name == null) {
return null;
}
else {
return new Element(name).getAttribute(attribute.fulfill(1));
}
}
else
{
return null;
}
}
@Override
public void adjust(Mechanism mechanism) {
// <--[mechanism]
// @object dEntity
// @name custom_name_visible
// @input Element(Boolean)
// @description
// Sets whether the custom name is visible.
// @tags
// <e@entity.custom_name_visible>
// -->
if ((mechanism.matches("custom_name_visibility") || mechanism.matches("custom_name_visible"))
&& mechanism.requireBoolean()) {
entity.getBukkitEntity().setCustomNameVisible(mechanism.getValue().asBoolean());
}
// <--[mechanism]
// @object dEntity
// @name custom_name
// @input Element
// @description
// Sets the custom name of the entity.
// @tags
// <e@entity.custom_name>
// -->
else if (mechanism.matches("custom_name")) {
entity.getBukkitEntity().setCustomName(mechanism.getValue().asString());
}
}
}