RuneHive-Tarnish
Neural OSRS Enhancement Framework
Loading...
Searching...
No Matches
PlayerManagement.java
1package com.osroyale.content.staff;
2
3import com.osroyale.Config;
4import com.osroyale.content.dialogue.DialogueFactory;
5import com.osroyale.game.world.InterfaceConstants;
6import com.osroyale.game.world.World;
7import com.osroyale.game.world.entity.mob.Mob;
8import com.osroyale.game.world.entity.mob.UpdateFlag;
9import com.osroyale.game.world.entity.mob.npc.definition.NpcDefinition;
10import com.osroyale.game.world.entity.mob.player.Player;
11import com.osroyale.game.world.entity.mob.player.PlayerRight;
12import com.osroyale.game.world.entity.mob.player.persist.PlayerSerializer;
13import com.osroyale.game.world.entity.mob.player.profile.ProfileRepository;
14import com.osroyale.game.world.entity.skill.Skill;
15import com.osroyale.game.world.items.containers.pricechecker.PriceType;
16import com.osroyale.net.packet.out.SendInputAmount;
17import com.osroyale.net.packet.out.SendInputMessage;
18import com.osroyale.net.packet.out.SendItemOnInterface;
19import com.osroyale.net.packet.out.SendString;
20import com.osroyale.util.Utility;
21
22import java.util.List;
23import java.util.concurrent.TimeUnit;
24
25import static com.osroyale.game.world.entity.mob.player.PlayerRight.*;
26
53
54public enum PlayerManagement implements ActionEffect {
55 TELEPORT_TO(PlayerRight.getColor(MODERATOR) + "Teleport To") {
56 @Override
57 public void handle(Player player) {
58 if (PlayerRight.isModerator(player) && player.managing.isPresent()) {
59 Player other = player.managing.get();
60
61 player.move(other.getPosition());
62 player.instance = other.instance;
63 player.pvpInstance = other.pvpInstance;
64 }
65 }
66 },
67 TELEPORT_TO_ME(PlayerRight.getColor(MODERATOR) + "Teleport To Me") {
68 @Override
69 public void handle(Player player) {
70 if (PlayerRight.isModerator(player) && player.managing.isPresent()) {
71 Player other = player.managing.get();
72
73 other.move(player.getPosition());
74 other.instance = player.instance;
75 other.pvpInstance = player.pvpInstance;
76 other.message("<col=FF0D5D>You have been force teleported to " + player.getName() + ".");
77 }
78 }
79 },
80 MOVE_HOME(PlayerRight.getColor(MODERATOR) + "Move Home") {
81 @Override
82 public void handle(Player player) {
83 if (PlayerRight.isModerator(player) && player.managing.isPresent()) {
84 Player other = player.managing.get();
85
87 other.instance = Mob.DEFAULT_INSTANCE;
88 other.pvpInstance = false;
89 other.message("<col=FF0D5D>You have been force teleported home by " + player.getName() + ".");
90 }
91 }
92 },
93 KICK(PlayerRight.getColor(MODERATOR) + "Kick") {
94 @Override
95 public void handle(Player player) {
96 if (PlayerRight.isModerator(player) && player.managing.isPresent()) {
97 Player other = player.managing.get();
98
99 confirm(player, () -> {
100 World.kickPlayer(other);
101 player.message("<col=FF0D5D>You have force kicked: " + other.getName() + ".");
102 });
103 }
104 }
105 },
106 JAIL(PlayerRight.getColor(MODERATOR) + "Jail") {
107 @Override
108 public void handle(Player player) {
109 if (PlayerRight.isModerator(player) && player.managing.isPresent()) {
110 Player other = player.managing.get();
111
112 confirm(player, () -> {
113 DialogueFactory factory = player.dialogueFactory;
114 factory.sendOption("Jail by day", () -> {
115 factory.onAction(() -> player.send(new SendInputAmount("How long do you want this jail to last for?", 2, input -> {
116 other.punishment.jail(Integer.parseInt(input), TimeUnit.DAYS);
117 factory.clear();
118 })));
119 }, "Jail by hour", () -> {
120 factory.onAction(() -> player.send(new SendInputAmount("How long do you want this jail to last for?", 3, input -> {
121 other.punishment.jail(Integer.parseInt(input), TimeUnit.HOURS);
122 factory.clear();
123 })));
124 }, "Jail by minute", () -> {
125 factory.onAction(() -> player.send(new SendInputAmount("How long do you want this jail to last for?", 3, input -> {
126 other.punishment.jail(Integer.parseInt(input), TimeUnit.MINUTES);
127 factory.clear();
128 })));
129 }, "Jail forever", () -> {
130 factory.onAction(() -> {
131 other.punishment.jail(9999, TimeUnit.DAYS);
132 factory.clear();
133 });
134 });
135 });
136 }
137 }
138 },
139 UNJAIL(PlayerRight.getColor(MODERATOR) + "Un-Jail") {
140 @Override
141 public void handle(Player player) {
142 if (PlayerRight.isModerator(player) && player.managing.isPresent()) {
143 Player other = player.managing.get();
144
145 other.punishment.unJail();
146 other.dialogueFactory.sendStatement("You have been unjailed!").execute();
147 other.message("<col=FF0D5D>You have been unjailed by: " + player.getName());
148 player.message("<col=FF0D5D>You have unjailed: " + other.getName());
149 }
150 }
151 },
152 MUTE(PlayerRight.getColor(MODERATOR) + "Mute") {
153 @Override
154 public void handle(Player player) {
155 if (PlayerRight.isModerator(player) && player.managing.isPresent()) {
156 Player other = player.managing.get();
157
158 confirm(player, () -> {
159 DialogueFactory factory = player.dialogueFactory;
160 factory.sendOption("Mute by day", () -> {
161 factory.onAction(() -> player.send(new SendInputAmount("How long do you want this mute to last for?", 2, input -> {
162 other.punishment.mute(Integer.parseInt(input), TimeUnit.DAYS);
163 factory.clear();
164 })));
165 }, "Mute by hour", () -> {
166 factory.onAction(() -> player.send(new SendInputAmount("How long do you want this mute to last for?", 3, input -> {
167 other.punishment.mute(Integer.parseInt(input), TimeUnit.HOURS);
168 factory.clear();
169 })));
170 }, "Mute by minute", () -> {
171 factory.onAction(() -> player.send(new SendInputAmount("How long do you want this mute to last for?", 3, input -> {
172 other.punishment.mute(Integer.parseInt(input), TimeUnit.MINUTES);
173 factory.clear();
174 })));
175 }, "Mute forever", () -> {
176 factory.onAction(() -> {
177 other.punishment.mute(9999, TimeUnit.DAYS);
178 factory.clear();
179 });
180 });
181 });
182 }
183 }
184 },
185 UNMUTE(PlayerRight.getColor(MODERATOR) + "Un-Mute") {
186 @Override
187 public void handle(Player player) {
188 if (PlayerRight.isModerator(player) && player.managing.isPresent()) {
189 Player other = player.managing.get();
190
191 other.punishment.unmute();
192 other.dialogueFactory.sendStatement("You have been unmuted!").execute();
193 other.message("<col=FF0D5D>You have been unmuted by: " + player.getName());
194 player.message("<col=FF0D5D>You have unmuted: " + other.getName());
195 }
196 }
197 },
198 CHECK_BANK(PlayerRight.getColor(MODERATOR) + "Check Bank") {
199 @Override
200 public void handle(Player player) {
201 if (PlayerRight.isModerator(player) && player.managing.isPresent()) {
202 Player other = player.managing.get();
203 long totalValue = other.bank.containerValue(PriceType.VALUE);
204 long vaultCoins = other.bankVault.coinsContainer;
205 long vaultBM = other.bankVault.bloodMoneyContainer;
206
207 player.interfaceManager.openInventory(60000, 5063);
208 player.send(new SendItemOnInterface(InterfaceConstants.WITHDRAW_BANK, other.bank.tabAmounts, other.bank.toArray()));
209 player.send(new SendItemOnInterface(InterfaceConstants.INVENTORY_STORE, other.inventory.toArray()));
210 player.send(new SendString("", 60_079));
211 player.dialogueFactory.sendInformationBox(other.getName() + "'s Bank:", "Bank Value: " + (totalValue), "Bank Vault (Coins): " + (vaultCoins), "Bank Vault (BM): " + (vaultBM)).execute();
212 }
213 }
214 },
215 LINKED_ACCOUNTS(PlayerRight.getColor(MODERATOR) + "Linked Accounts") {
216 @Override
217 public void handle(Player player) {
218 if (PlayerRight.isModerator(player) && player.managing.isPresent()) {
219 Player other = player.managing.get();
220 List<String> list = ProfileRepository.getRegistry(other.lastHost);
221
222 if (!list.isEmpty()) {
223 for (int index = 0; index < 50; index++) {
224 String name = index >= list.size() ? "" : list.get(index);
225 player.send(new SendString(name, 37111 + index));
226 }
227
228 player.message("<col=FF0D5D>There are " + list.size() + " accounts linked to " + Utility.formatName(other.getName()) + ".");
229 player.send(new SendString("Profiles:\\n" + list.size(), 37107));
230 player.send(new SendString(other.getName(), 37103));
231 player.interfaceManager.open(37100);
232 }
233 }
234 }
235 },
236 PROMOTE(PlayerRight.getColor(ADMINISTRATOR) + "Promote") {
237 @Override
238 public void handle(Player player) {
239 if (PlayerRight.isAdministrator(player) && player.managing.isPresent()) {
240 Player other = player.managing.get();
241
242 player.dialogueFactory.sendOption("Helper", () -> {
243 other.right = PlayerRight.HELPER;
244 other.updateFlags.add(UpdateFlag.APPEARANCE);
245 other.dialogueFactory.sendStatement("You were promoted to helper by " + player.getName()).execute();
246 player.message("You have promoted " + other.getName() + " to helper.");
247 }, "Moderator", () -> {
248 other.right = PlayerRight.MODERATOR;
249 other.updateFlags.add(UpdateFlag.APPEARANCE);
250 other.dialogueFactory.sendStatement("You were promoted to moderator by " + player.getName()).execute();
251 player.message("You have promoted " + other.getName() + " to moderator.");
252 }, "Administrator", () -> {
253 other.right = PlayerRight.ADMINISTRATOR;
254 other.updateFlags.add(UpdateFlag.APPEARANCE);
255 other.dialogueFactory.sendStatement("You were promoted to administrator by " + player.getName()).execute();
256 player.message("You have promoted " + other.getName() + " to administrator.");
257 }).execute();
258 }
259 }
260 },
261 DEMOTE(PlayerRight.getColor(ADMINISTRATOR) + "Demote") {
262 @Override
263 public void handle(Player player) {
264 if (PlayerRight.isAdministrator(player) && player.managing.isPresent()) {
265 Player other = player.managing.get();
266
267 other.right = PlayerRight.PLAYER;
268 other.updateFlags.add(UpdateFlag.APPEARANCE);
269 other.dialogueFactory.sendStatement("You were demoted by " + player.getName()).execute();
270 player.message("You have demoted " + other.getName() + ".");
271 }
272 }
273 },
274 COPY(PlayerRight.getColor(ADMINISTRATOR) + "Copy") {
275 @Override
276 public void handle(Player player) {
277 if (PlayerRight.isAdministrator(player) && player.managing.isPresent()) {
278 Player other = player.managing.get();
279
280 player.playerAssistant.copy(other);
281 player.updateFlags.add(UpdateFlag.APPEARANCE);
282 player.message("<col=FF0D5D>You have copied " + other.getName() + ".");
283 }
284 }
285 },
286 COPY_ME(PlayerRight.getColor(OWNER) + "Copy Me") {
287 @Override
288 public void handle(Player player) {
289 if (PlayerRight.isOwner(player) && player.managing.isPresent()) {
290 Player other = player.managing.get();
291
292 other.playerAssistant.copy(player);
293 other.updateFlags.add(UpdateFlag.APPEARANCE);
294 player.message("<col=FF0D5D>You have X-copied " + other.getName() + ".");
295 }
296 }
297 },
298 CLEAR(PlayerRight.getColor(OWNER) + "Clear Account") {
299 @Override
300 public void handle(Player player) {
301 if (PlayerRight.isOwner(player) && player.managing.isPresent()) {
302 Player other = player.managing.get();
303
304 confirm(player, () -> {
305 other.bank.clear();
306 other.inventory.clear();
307
308 for (int index = 0; index < Skill.SKILL_COUNT; index++) {
309 other.skills.setLevel(index, index == 3 ? 10 : 1);
310 other.skills.setMaxLevel(index, index == 3 ? 10 : 1);
311 }
312
313 other.skills.setCombatLevel();
314 other.updateFlags.add(UpdateFlag.APPEARANCE);
315 });
316 }
317 }
318 },
319 PNPCS(PlayerRight.getColor(OWNER) + "Transform") {
320 @Override
321 public void handle(Player player) {
322 if (PlayerRight.isOwner(player) && player.managing.isPresent()) {
323 Player other = player.managing.get();
324
325 player.send(new SendInputAmount("Enter NPC ID:", 4, input -> {
326 int id = Integer.parseInt(input);
327 if (id == 0)
328 id = -1;
329 other.playerAssistant.transform(id);
330 player.message("<col=FF0D5D>You have turned " + other.getName() + " into " + NpcDefinition.get(id).getName() + ".");
331 }));
332 }
333 }
334 },
335 CHANGE_USERNAME(PlayerRight.getColor(OWNER) + "Change Username") {
336 @Override
337 public void handle(Player player) {
338 if (PlayerRight.isOwner(player) && player.managing.isPresent()) {
339 Player other = player.managing.get();
340
341 player.send(new SendInputMessage("Enter their new username", 12, input -> {
342 if (ProfileRepository.exist(input)) {
343 player.dialogueFactory.sendStatement("The name " + input + " is already taken.").execute();
344 return;
345 }
346 other.setUsername(input);
347 other.updateFlags.add(UpdateFlag.APPEARANCE);
348 PlayerSerializer.save(other);
349 player.dialogueFactory.sendStatement("You have successfully changed their username.").execute();
350 }));
351 }
352 }
353 },;
354
355
356 public final String string;
357
358 PlayerManagement(String string) {
359 this.string = string;
360 }
361
362 public static void confirm(Player player, Runnable runnable) {
363 DialogueFactory factory = player.dialogueFactory;
364 factory.sendStatement("Are you sure you want to execute this action?");
365 factory.sendOption("Confirm action", runnable, "Nevermind", factory::clear);
366 factory.execute();
367 }
368
369 public static PlayerManagement forOrdinal(int ordinal) {
370 for (PlayerManagement management : values()) {
371 if (management.ordinal() == ordinal) {
372 return management;
373 }
374 }
375 return null;
376 }
377}
static final Position DEFAULT_POSITION
Definition Config.java:235
final DialogueFactory sendStatement(String... lines)
final DialogueFactory sendOption(String option1, Runnable action1, String option2, Runnable action2)
final DialogueFactory onAction(Runnable action)
void move(Position position)
Definition Mob.java:377
void handle(final Player player)