summaryrefslogtreecommitdiffstats
path: root/Essentials/src/net/ess3/api/IUser.java
blob: 007290a0c453fc4be05e7e688310f6ae628dd977 (plain)
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
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
package net.ess3.api;

import java.util.List;
import java.util.Set;
import net.ess3.storage.IStorageObjectHolder;
import net.ess3.user.CooldownException;
import net.ess3.user.UserData;
import org.bukkit.Location;
import org.bukkit.OfflinePlayer;
import org.bukkit.command.CommandSender;
import org.bukkit.entity.Player;
import org.bukkit.inventory.ItemStack;


public interface IUser extends OfflinePlayer, CommandSender, IStorageObjectHolder<UserData>, IReload, IReplyTo, Comparable<IUser>
{
	/**
	 * Get the amount of money in a users account
	 *
	 * @return
	 */
	double getMoney();

	/**
	 * Remove money from the account
	 *
	 * @param value
	 */
	void takeMoney(double value);

	void takeMoney(double value, CommandSender initiator);

	void giveMoney(double value);

	void giveMoney(double value, CommandSender initiator);

	void giveItems(ItemStack itemStack, Boolean canSpew) throws ChargeException;

	void giveItems(List<ItemStack> itemStacks, Boolean canSpew) throws ChargeException;

	void setMoney(double value);

	void payUser(final IUser receiver, final double value) throws Exception;

	void setLastLocation();

	Location getHome(String name) throws Exception;

	Location getHome(Location loc);

	//boolean isHidden(); TODO: implement this?
	ITeleport getTeleport();

	void checkCooldown(UserData.TimestampType cooldownType, double cooldown, boolean set, IPermission bypassPermission) throws CooldownException;

	boolean toggleAfk();

	void updateActivity(boolean broadcast);

	void updateDisplayName();

	void setDisplayNick();

	boolean checkJailTimeout(long currentTime);

	boolean checkMuteTimeout(long currentTime);

	boolean checkBanTimeout(long currentTime);

	long getTimestamp(UserData.TimestampType name);

	void setTimestamp(UserData.TimestampType name, long value);

	void setLastOnlineActivity(long currentTime);

	void checkActivity();

	long getLastOnlineActivity();

	boolean isGodModeEnabled();

	boolean isIgnoringPlayer(IUser user);

	void setIgnoredPlayer(IUser user, boolean set);

	Location getAfkPosition();

	void updateCompass();

	Set<String> getHomes();

	void addMail(String string);

	void setMuted(boolean mute);

	void requestTeleport(IUser user, boolean b);

	boolean isTpRequestHere();

	IUser getTeleportRequester();

	long getTeleportRequestTime();

	boolean gotMailInfo();

	List<String> getMails();

	boolean canAfford(double money);

	void updateMoneyCache(double userMoney);

	boolean canAfford(double amount, boolean b);

	boolean isVanished();

	void resetInvulnerabilityAfterTeleport();

	void toggleVanished();

	boolean isInvSee();

	void setInvSee(boolean invsee);

	boolean isEnderSee();

	void setEnderSee(boolean endersee);

	boolean hasInvulnerabilityAfterTeleport();

	void setGodModeEnabled(boolean set);

	void setVanished(boolean set);

	boolean checkSignThrottle(int throttle);

	boolean isRecipeSee();

	void setRecipeSee(boolean recipeSee);

	/**
	 * Since the Player object should not be stored for a long time, this method should be called again with a null
	 * value.
	 *
	 * @param player
	 */
	void setPlayerCache(Player player);

	/**
	 * If this is not cached using the setPlayerCache method, this call is slow and should not be called often.
	 * <p/>
	 * It iterates over all players, that are online and does a equal check on their names.
	 *
	 * @return
	 */
	@Override
	Player getPlayer();
}