-
-
Notifications
You must be signed in to change notification settings - Fork 102
/
EntityCustomName.java
129 lines (111 loc) · 3.97 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 com.denizenscript.denizen.objects.properties.entity;
import com.denizenscript.denizen.objects.EntityTag;
import com.denizenscript.denizencore.objects.core.ElementTag;
import com.denizenscript.denizencore.objects.Mechanism;
import com.denizenscript.denizencore.objects.ObjectTag;
import com.denizenscript.denizencore.objects.properties.Property;
import com.denizenscript.denizencore.tags.Attribute;
public class EntityCustomName implements Property {
public static boolean describes(ObjectTag entity) {
return entity instanceof EntityTag;
}
public static EntityCustomName getFrom(ObjectTag entity) {
if (!describes(entity)) {
return null;
}
return new EntityCustomName((EntityTag) 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(EntityTag ent) {
entity = ent;
}
EntityTag 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 ObjectTag getObjectAttribute(Attribute attribute) {
if (attribute == null) {
return null;
}
// <--[tag]
// @attribute <EntityTag.custom_name_visible>
// @returns ElementTag(Boolean)
// @mechanism EntityTag.custom_name_visible
// @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 ElementTag(entity.getBukkitEntity().isCustomNameVisible()).getObjectAttribute(attribute.fulfill(fulfilled));
}
// <--[tag]
// @attribute <EntityTag.custom_name>
// @returns ElementTag
// @mechanism EntityTag.custom_name
// @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 ElementTag(name).getObjectAttribute(attribute.fulfill(1));
}
}
else {
return null;
}
}
@Override
public void adjust(Mechanism mechanism) {
// <--[mechanism]
// @object EntityTag
// @name custom_name_visible
// @input ElementTag(Boolean)
// @description
// Sets whether the custom name is visible.
// @tags
// <EntityTag.custom_name_visible>
// -->
if ((mechanism.matches("custom_name_visibility") || mechanism.matches("custom_name_visible"))
&& mechanism.requireBoolean()) {
entity.getBukkitEntity().setCustomNameVisible(mechanism.getValue().asBoolean());
}
// <--[mechanism]
// @object EntityTag
// @name custom_name
// @input Element
// @description
// Sets the custom name of the entity.
// @tags
// <EntityTag.custom_name>
// -->
else if (mechanism.matches("custom_name")) {
entity.getBukkitEntity().setCustomName(mechanism.getValue().asString());
}
}
}