-
-
Notifications
You must be signed in to change notification settings - Fork 55
/
Owner.java
129 lines (113 loc) · 3.34 KB
/
Owner.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.citizensnpcs.api.trait.trait;
import java.util.UUID;
import net.citizensnpcs.api.exception.NPCLoadException;
import net.citizensnpcs.api.trait.Trait;
import net.citizensnpcs.api.util.DataKey;
import org.bukkit.command.CommandSender;
import org.bukkit.entity.Player;
/**
* Represents the owner of an NPC.
*/
public class Owner extends Trait {
private String owner = SERVER;
private UUID uuid = null;
public Owner() {
super("owner");
}
/**
* Gets the owner.
*
* @return The owner's name
*/
public String getOwner() {
return owner;
}
/**
* @return The owner's UUID, or <code>null</code> if the owner is the server
* or a UUID has not been collected for the owner.
*/
public UUID getOwnerId() {
return uuid;
}
/**
* Gets if the given {@link CommandSender} is the owner of an NPC.
*
* @param sender
* Sender to check
* @return Whether the sender is the owner of an NPC
*/
public boolean isOwnedBy(CommandSender sender) {
if (sender instanceof Player) {
if (owner.equalsIgnoreCase(sender.getName())) {
if (uuid == null) {
uuid = ((Player) sender).getUniqueId();
} else if (uuid.equals(((Player) sender).getUniqueId())) {
return true;
}
}
return sender.hasPermission("citizens.admin")
|| (owner.equals(SERVER) && sender.hasPermission("citizens.admin"));
}
return owner.equals(SERVER);
}
public boolean isOwnedBy(String name) {
return owner.equalsIgnoreCase(name);
}
@Override
public void load(DataKey key) throws NPCLoadException {
if (key.keyExists("owner")) {
owner = key.getString("owner");
if (key.keyExists("uuid") && !key.getString("uuid").isEmpty()) {
uuid = UUID.fromString(key.getString("uuid"));
}
} else {
try {
owner = key.getString("");
uuid = null;
} catch (Exception ex) {
owner = SERVER;
uuid = null;
throw new NPCLoadException("Invalid owner.");
}
}
}
@Override
public void save(DataKey key) {
if (key.getString("") != null && !key.getString("").isEmpty()) {
key.removeKey("");
}
key.setString("owner", owner);
key.setString("uuid", uuid == null ? "" : uuid.toString());
}
public void setOwner(CommandSender sender) {
this.owner = sender.getName();
if (sender instanceof Player) {
this.uuid = ((Player) sender).getUniqueId();
}
}
/**
* Sets the owner of an NPC.
*
* @param owner
* Name of the player to set as owner of an NPC
*/
public void setOwner(String owner) {
setOwner(owner, null);
}
/**
* Sets the owner of an NPC.
* @param owner
* Name of the owner
* @param uuid
* UUID of the owner
*/
public void setOwner(String owner, UUID uuid) {
this.owner = owner;
this.uuid = uuid;
}
@Override
public String toString() {
return "Owner{" + owner + "}";
}
public static final String SERVER = "server";
}