use of mc.dragons.core.gameobject.user.User in project DragonsOnline by UniverseCraft.
the class ChannelCommand method onCommand.
@Override
public boolean onCommand(CommandSender sender, Command command, String label, String[] args) {
if (!requirePlayer(sender))
return true;
User user = user(sender);
boolean staff = hasPermission(sender, PermissionLevel.BUILDER);
if (handleAlias(sender, label))
return true;
if (args.length == 0) {
openGUI(user);
return true;
}
if (args.length == 1) {
ChatChannel channel = parse(sender, staff, args[0]);
if (channel == null)
return true;
if (user.getActiveChatChannels().contains(channel)) {
user.removeActiveChatChannel(channel);
sender.sendMessage(ChatColor.GREEN + "You are no longer " + (user.getSpeakingChannel() == channel ? "speaking or " : "") + "listening on " + channel);
} else {
user.setSpeakingChannel(channel);
user.addActiveChatChannel(channel);
sender.sendMessage(ChatColor.GREEN + "You are now speaking and listening on " + channel);
if (user.getActiveChatChannels().size() > 1) {
List<ChatChannel> others = new ArrayList<>(user.getActiveChatChannels());
others.remove(channel);
sender.sendMessage(ChatColor.GRAY + "You are also listening on " + StringUtil.parseList(others.stream().map(c -> c.toString()).collect(Collectors.toList())));
}
}
return true;
}
ChatChannel channel = parse(sender, staff, args[1]);
if (channel == null)
return true;
if (args[0].equalsIgnoreCase("speak") || args[0].equalsIgnoreCase("s")) {
if (user.getSpeakingChannel() == channel) {
sender.sendMessage(ChatColor.RED + "You are already speaking on " + channel);
}
user.setSpeakingChannel(channel);
sender.sendMessage(ChatColor.GREEN + "Now speaking and listening on " + channel);
if (!user.getActiveChatChannels().contains(channel)) {
user.addActiveChatChannel(channel);
// sender.sendMessage(ChatColor.GREEN + "You are now listening to this channel as well.");
}
} else if (args[0].equalsIgnoreCase("listen") || args[0].equalsIgnoreCase("l")) {
if (user.getActiveChatChannels().contains(channel)) {
user.removeActiveChatChannel(channel);
sender.sendMessage(ChatColor.GREEN + "You are no longer listening on " + channel);
return true;
}
user.addActiveChatChannel(channel);
sender.sendMessage(ChatColor.GREEN + "You are now listening on " + channel);
} else {
sender.sendMessage(ChatColor.RED + "Invalid arguments! /channel");
}
return true;
}
use of mc.dragons.core.gameobject.user.User in project DragonsOnline by UniverseCraft.
the class ChannelCommand method openGUI.
private void openGUI(User user) {
boolean staff = hasPermission(user, PermissionLevel.BUILDER);
GUI gui = new GUI(5, ChatColor.WHITE + "Chat Channels");
gui.add(new GUIElement(4, Material.BOOK, ChatColor.AQUA + "Chat Channels", List.of(ChatColor.WHITE + "Channels are different streams of chat", ChatColor.WHITE + "that you can speak or listen on.", "", ChatColor.WHITE + "You can listen to multiple channels,", ChatColor.WHITE + "but can only speak on one.", "", ChatColor.WHITE + "Do " + ChatColor.GRAY + "/channel <channel> " + ChatColor.WHITE + "to manually", ChatColor.WHITE + "change channels."), 1, u -> {
}));
// Assume we have 7 or fewer channels, otherwise overflow occurs
int i = 10;
for (ChatChannel channel : ChatChannel.values()) {
if (channel == ChatChannel.STAFF && !staff)
continue;
boolean speaking = user.getSpeakingChannel() == channel;
boolean listening = user.getActiveChatChannels().contains(channel);
gui.add(new GUIElement(i, Material.OAK_SIGN, ChatColor.YELLOW + "" + ChatColor.BOLD + channel, List.of(ChatColor.GRAY + channel.getDescription(), ChatColor.GRAY + "- " + (speaking ? ChatColor.GREEN + "You are speaking on this channel" : ChatColor.RED + "You are not speaking on this channel"), ChatColor.GRAY + "- " + (listening ? ChatColor.GREEN + "You are listening to this channel" : ChatColor.RED + "You are not speaking to this channel")), 1, u -> {
}));
gui.add(new GUIElement(i + 9, speaking ? Material.EMERALD_BLOCK : Material.STONE, speaking ? ChatColor.GRAY + "You are currently speaking on this channel" : ChatColor.GREEN + "Click to speak on " + channel, ChatColor.GRAY + "You can only speak on one channel at a time", u -> {
u.setSpeakingChannel(channel);
if (!u.getActiveChatChannels().contains(channel)) {
u.addActiveChatChannel(channel);
}
openGUI(u);
}));
gui.add(new GUIElement(i + 9 * 2, listening ? Material.EMERALD_BLOCK : Material.REDSTONE_BLOCK, listening ? speaking ? ChatColor.RED + "You must listen to the channel you're speaking on" : ChatColor.RED + "Click to stop listening to " + channel : ChatColor.GREEN + "Click to listen to " + channel, ChatColor.GRAY + "You can listen to multiple channels at once", u -> {
if (speaking && listening)
return;
if (listening) {
u.removeActiveChatChannel(channel);
} else {
u.addActiveChatChannel(channel);
}
openGUI(u);
}));
i++;
}
gui.open(user);
}
use of mc.dragons.core.gameobject.user.User in project DragonsOnline by UniverseCraft.
the class SocialUserHook method onVerifiedJoin.
@Override
public void onVerifiedJoin(User user) {
/* Send guild welcome(s) */
Bukkit.getScheduler().scheduleSyncDelayedTask(instance, () -> {
List<Guild> guilds = guildLoader.getAllGuildsWithRaw(user.getUUID());
boolean shown = false;
for (Guild guild : guilds) {
if (!guild.getMOTD().equals("")) {
if (!shown) {
user.getPlayer().sendMessage(" ");
user.getPlayer().sendMessage(ChatColor.GREEN + "---[ " + ChatColor.GOLD + "Guild Messages" + ChatColor.GREEN + " ]---");
}
shown = true;
user.getPlayer().sendMessage(guild.getThemeColor().primary() + "" + ChatColor.BOLD + guild.getName());
user.getPlayer().sendMessage(guild.getThemeColor().secondary() + guild.getMOTD());
user.getPlayer().sendMessage(" ");
}
}
}, 20L);
/* Warn if others are online but cannot hear the user */
boolean anyCanHear = false;
for (User test : UserLoader.allUsers()) {
if (test.equals(user))
continue;
for (ChatChannel ch : test.getActiveChatChannels()) {
if (ch.canHear(test, user)) {
anyCanHear = true;
break;
}
}
}
if (!anyCanHear && Bukkit.getOnlinePlayers().size() > 1) {
Bukkit.getScheduler().scheduleSyncDelayedTask(instance, () -> {
user.getPlayer().sendMessage(ChatColor.DARK_RED + "" + ChatColor.BOLD + "Warning: " + ChatColor.RED + "Nobody else can hear you in the channel you're speaking in.");
user.getPlayer().sendMessage(ChatColor.GRAY + "Do " + ChatColor.RESET + "/channel " + ChatColor.GRAY + "to manage channels.");
}, 20L * 2);
}
}
use of mc.dragons.core.gameobject.user.User in project DragonsOnline by UniverseCraft.
the class SocialUserHook method onDeath.
@Override
public boolean onDeath(User user) {
for (Set<User> dueling : DuelCommands.getActive()) {
if (dueling.contains(user)) {
User loser = user;
dueling.remove(user);
User winner = user;
if (dueling.size() > 0) {
winner = (User) dueling.toArray()[0];
}
String[] endMessage = new String[] { " ", DuelCommands.DUEL_MESSAGE_HEADER, ChatColor.GOLD + "" + ChatColor.BOLD + "DUEL ENDED", ChatColor.YELLOW + "Winner: " + ChatColor.GRAY + winner.getName(), ChatColor.RED + "Loser: " + ChatColor.GRAY + loser.getName(), DuelCommands.DUEL_MESSAGE_HEADER, " " };
winner.getPlayer().sendMessage(endMessage);
loser.getPlayer().sendMessage(endMessage);
final User fWinner = winner;
Bukkit.getScheduler().scheduleSyncDelayedTask(instance, () -> {
DuelCommands.restore(fWinner);
DuelCommands.restore(loser);
DuelCommands.getActive().remove(dueling);
}, 20L);
return false;
}
}
return true;
}
use of mc.dragons.core.gameobject.user.User in project DragonsOnline by UniverseCraft.
the class PrivateMessageCommands method privateMessageCommand.
private void privateMessageCommand(User user, String to, String message) {
User target = lookupUser(user.getPlayer(), to);
if (target == null)
return;
target.safeResyncData();
if (user.equals(target) && !user.getLocalData().getBoolean("canSelfMessage", false)) {
user.getPlayer().sendMessage(ChatColor.RED + "You can't message yourself!");
} else if (target.hasActiveDialogue()) {
user.getPlayer().sendMessage(ChatColor.RED + "That player is in active dialogue and cannot hear you.");
} else if (target.getBlockedUsers().contains(user)) {
user.getPlayer().sendMessage(ChatColor.RED + "That player has blocked you.");
} else if (user.getBlockedUsers().contains(target)) {
user.getPlayer().sendMessage(ChatColor.RED + "You can't send messages to players you've blocked.");
} else if (!FriendUtil.getFriends(user).contains(target) && user.getData().getBoolean("messageFriendsOnly", false) && !hasPermission(user, PermissionLevel.HELPER) && !hasPermission(target, PermissionLevel.HELPER)) {
user.getPlayer().sendMessage(ChatColor.RED + "You can't send or receive messages from non-friends. Use /togglemsg to change this.");
} else if (!FriendUtil.getFriends(user).contains(target) && target.getData().getBoolean("messageFriendsOnly", false) && !hasPermission(user, PermissionLevel.HELPER) && !hasPermission(target, PermissionLevel.HELPER)) {
user.getPlayer().sendMessage(ChatColor.RED + "This user has blocked private messages from non-friends.");
} else {
handler.send(user, target, message);
}
}
Aggregations