Add back toggling the UI modes
This commit is contained in:
parent
ad88c581fd
commit
b1a5b7ffb6
|
@ -18,6 +18,7 @@ import net.md_5.bungee.api.chat.ComponentBuilder;
|
||||||
import net.md_5.bungee.api.chat.HoverEvent;
|
import net.md_5.bungee.api.chat.HoverEvent;
|
||||||
import net.md_5.bungee.api.chat.TextComponent;
|
import net.md_5.bungee.api.chat.TextComponent;
|
||||||
|
|
||||||
|
import org.bukkit.Sound;
|
||||||
import org.bukkit.entity.Player;
|
import org.bukkit.entity.Player;
|
||||||
import org.bukkit.event.EventHandler;
|
import org.bukkit.event.EventHandler;
|
||||||
import org.bukkit.event.player.PlayerJoinEvent;
|
import org.bukkit.event.player.PlayerJoinEvent;
|
||||||
|
@ -44,6 +45,7 @@ import mineplex.core.friend.ui.FriendShop;
|
||||||
import mineplex.core.portal.Portal;
|
import mineplex.core.portal.Portal;
|
||||||
import mineplex.core.preferences.Preference;
|
import mineplex.core.preferences.Preference;
|
||||||
import mineplex.core.preferences.PreferencesManager;
|
import mineplex.core.preferences.PreferencesManager;
|
||||||
|
import mineplex.core.preferences.UserPreferences;
|
||||||
import mineplex.core.updater.UpdateType;
|
import mineplex.core.updater.UpdateType;
|
||||||
import mineplex.core.updater.event.UpdateEvent;
|
import mineplex.core.updater.event.UpdateEvent;
|
||||||
import mineplex.serverdata.commands.ServerCommandManager;
|
import mineplex.serverdata.commands.ServerCommandManager;
|
||||||
|
@ -97,6 +99,8 @@ public class FriendManager extends MiniDbClientPlugin<List<FriendStatus>>
|
||||||
return FRIEND_SORTER;
|
return FRIEND_SORTER;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
private static final int FRIENDS_IN_CHAT = 2;
|
||||||
|
|
||||||
private final DonationManager _donationManager;
|
private final DonationManager _donationManager;
|
||||||
private final PreferencesManager _preferenceManager;
|
private final PreferencesManager _preferenceManager;
|
||||||
private final Portal _portal;
|
private final Portal _portal;
|
||||||
|
@ -150,11 +154,6 @@ public class FriendManager extends MiniDbClientPlugin<List<FriendStatus>>
|
||||||
return _donationManager;
|
return _donationManager;
|
||||||
}
|
}
|
||||||
|
|
||||||
public PreferencesManager getPreferenceManager()
|
|
||||||
{
|
|
||||||
return _preferenceManager;
|
|
||||||
}
|
|
||||||
|
|
||||||
public Portal getPortal()
|
public Portal getPortal()
|
||||||
{
|
{
|
||||||
return _portal;
|
return _portal;
|
||||||
|
@ -176,11 +175,6 @@ public class FriendManager extends MiniDbClientPlugin<List<FriendStatus>>
|
||||||
return Collections.emptyList();
|
return Collections.emptyList();
|
||||||
}
|
}
|
||||||
|
|
||||||
public void openShop(Player player)
|
|
||||||
{
|
|
||||||
_shop.attemptShopOpen(player);
|
|
||||||
}
|
|
||||||
|
|
||||||
@EventHandler
|
@EventHandler
|
||||||
public void updateFriends(UpdateEvent event)
|
public void updateFriends(UpdateEvent event)
|
||||||
{
|
{
|
||||||
|
@ -411,7 +405,7 @@ public class FriendManager extends MiniDbClientPlugin<List<FriendStatus>>
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
public void toggleFavourite(Player player, String target)
|
public void toggleFavourite(Player player, String target, Runnable onSuccess)
|
||||||
{
|
{
|
||||||
for (FriendStatus status : Get(player))
|
for (FriendStatus status : Get(player))
|
||||||
{
|
{
|
||||||
|
@ -421,7 +415,15 @@ public class FriendManager extends MiniDbClientPlugin<List<FriendStatus>>
|
||||||
{
|
{
|
||||||
if (_repository.updateFavourite(player.getName(), status.Name, !status.Favourite))
|
if (_repository.updateFavourite(player.getName(), status.Name, !status.Favourite))
|
||||||
{
|
{
|
||||||
runSync(() -> player.sendMessage(F.main(getName(), F.name(status.Name) + " is " + (status.Favourite ? "no longer" : "now") + " on your favourite friends.")));
|
runSync(() ->
|
||||||
|
{
|
||||||
|
player.sendMessage(F.main(getName(), F.name(status.Name) + " is " + (status.Favourite ? "no longer" : "now") + " on your favourite friends."));
|
||||||
|
|
||||||
|
if (onSuccess != null)
|
||||||
|
{
|
||||||
|
onSuccess.run();
|
||||||
|
}
|
||||||
|
});
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
|
|
||||||
|
@ -467,7 +469,33 @@ public class FriendManager extends MiniDbClientPlugin<List<FriendStatus>>
|
||||||
viewer.spigot().sendMessage(message);
|
viewer.spigot().sendMessage(message);
|
||||||
}
|
}
|
||||||
|
|
||||||
public void showFriends(Player caller)
|
public void showFriends(Player player, boolean toggle)
|
||||||
|
{
|
||||||
|
UserPreferences preferences = _preferenceManager.get(player);
|
||||||
|
|
||||||
|
if (toggle)
|
||||||
|
{
|
||||||
|
preferences.toggle(Preference.FRIENDS_DISPLAY_INVENTORY_UI);
|
||||||
|
_preferenceManager.save(preferences);
|
||||||
|
player.playSound(player.getLocation(), Sound.NOTE_PLING, 1, 1.6f);
|
||||||
|
}
|
||||||
|
|
||||||
|
if (preferences.isActive(Preference.FRIENDS_DISPLAY_INVENTORY_UI))
|
||||||
|
{
|
||||||
|
showFriendsInUI(player);
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
showFriendsInChat(player);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
public void showFriendsInUI(Player player)
|
||||||
|
{
|
||||||
|
_shop.attemptShopOpen(player);
|
||||||
|
}
|
||||||
|
|
||||||
|
public void showFriendsInChat(Player caller)
|
||||||
{
|
{
|
||||||
boolean isStaff = ClientManager.Get(caller).hasPermission(Perm.JOIN_STAFF);
|
boolean isStaff = ClientManager.Get(caller).hasPermission(Perm.JOIN_STAFF);
|
||||||
boolean showPending = _preferenceManager.get(caller).isActive(Preference.PENDING_FRIEND_REQUESTS);
|
boolean showPending = _preferenceManager.get(caller).isActive(Preference.PENDING_FRIEND_REQUESTS);
|
||||||
|
@ -475,8 +503,33 @@ public class FriendManager extends MiniDbClientPlugin<List<FriendStatus>>
|
||||||
List<FriendStatus> friendStatuses = Get(caller);
|
List<FriendStatus> friendStatuses = Get(caller);
|
||||||
friendStatuses.sort(getFriendSorter().reversed());
|
friendStatuses.sort(getFriendSorter().reversed());
|
||||||
|
|
||||||
|
boolean compress = friendStatuses.size() > FRIENDS_IN_CHAT;
|
||||||
|
|
||||||
caller.sendMessage(C.cAqua + C.Strike + "======================[" + C.cWhiteB + "Friends" + C.cAqua + C.Strike + "]======================");
|
caller.sendMessage(C.cAqua + C.Strike + "======================[" + C.cWhiteB + "Friends" + C.cAqua + C.Strike + "]======================");
|
||||||
|
|
||||||
|
if (compress)
|
||||||
|
{
|
||||||
|
int sent = 0, pending = 0;
|
||||||
|
|
||||||
|
for (FriendStatus friend : friendStatuses)
|
||||||
|
{
|
||||||
|
switch (friend.Status)
|
||||||
|
{
|
||||||
|
case Sent:
|
||||||
|
sent++;
|
||||||
|
break;
|
||||||
|
case Pending:
|
||||||
|
pending++;
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
TextComponent compressed = new TextComponent(C.cGray + "Sent: " + F.count(sent) + " Pending: " + F.count(pending));
|
||||||
|
compressed.setHoverEvent(new HoverEvent(HoverEvent.Action.SHOW_TEXT, new ComponentBuilder("Shows all friends.")
|
||||||
|
.create()));
|
||||||
|
compressed.setClickEvent(new ClickEvent(ClickEvent.Action.RUN_COMMAND, "/"));
|
||||||
|
}
|
||||||
|
|
||||||
// Use a LinkedHashMap so we maintain insertion order
|
// Use a LinkedHashMap so we maintain insertion order
|
||||||
Map<String, TextComponent> messages = new LinkedHashMap<>();
|
Map<String, TextComponent> messages = new LinkedHashMap<>();
|
||||||
String joinCommand = "/server ", friendCommand = "/" + AddFriend.COMMAND + " ", unfriendCommand = "/" + DeleteFriend.COMMAND + " ";
|
String joinCommand = "/server ", friendCommand = "/" + AddFriend.COMMAND + " ", unfriendCommand = "/" + DeleteFriend.COMMAND + " ";
|
||||||
|
@ -486,10 +539,20 @@ public class FriendManager extends MiniDbClientPlugin<List<FriendStatus>>
|
||||||
{
|
{
|
||||||
FriendStatusType type = friend.Status;
|
FriendStatusType type = friend.Status;
|
||||||
|
|
||||||
|
if (compress)
|
||||||
|
{
|
||||||
|
if (type != FriendStatusType.Accepted)
|
||||||
|
{
|
||||||
|
continue;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
if (type == FriendStatusType.Blocked || type == FriendStatusType.Denied || type == FriendStatusType.Pending && !showPending)
|
if (type == FriendStatusType.Blocked || type == FriendStatusType.Denied || type == FriendStatusType.Pending && !showPending)
|
||||||
{
|
{
|
||||||
continue;
|
continue;
|
||||||
}
|
}
|
||||||
|
}
|
||||||
|
|
||||||
TextComponent message = new TextComponent("");
|
TextComponent message = new TextComponent("");
|
||||||
boolean online = friend.Online && friend.Visibility != FriendVisibility.INVISIBLE;
|
boolean online = friend.Online && friend.Visibility != FriendVisibility.INVISIBLE;
|
||||||
|
|
|
@ -7,6 +7,7 @@ import org.bukkit.entity.Player;
|
||||||
|
|
||||||
import mineplex.core.command.CommandBase;
|
import mineplex.core.command.CommandBase;
|
||||||
import mineplex.core.friend.FriendManager;
|
import mineplex.core.friend.FriendManager;
|
||||||
|
import mineplex.core.friend.FriendManager.Perm;
|
||||||
import mineplex.core.preferences.Preference;
|
import mineplex.core.preferences.Preference;
|
||||||
|
|
||||||
public class AddFriend extends CommandBase<FriendManager>
|
public class AddFriend extends CommandBase<FriendManager>
|
||||||
|
@ -16,7 +17,7 @@ public class AddFriend extends CommandBase<FriendManager>
|
||||||
|
|
||||||
public AddFriend(FriendManager plugin)
|
public AddFriend(FriendManager plugin)
|
||||||
{
|
{
|
||||||
super(plugin, FriendManager.Perm.FRIEND_COMMAND, "friends", COMMAND, "f");
|
super(plugin, Perm.FRIEND_COMMAND, "friends", COMMAND, "f");
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
|
@ -24,14 +25,7 @@ public class AddFriend extends CommandBase<FriendManager>
|
||||||
{
|
{
|
||||||
if (args == null || args.length < 1)
|
if (args == null || args.length < 1)
|
||||||
{
|
{
|
||||||
if (Plugin.getPreferenceManager().get(caller).isActive(Preference.FRIENDS_DISPLAY_INVENTORY_UI))
|
Plugin.showFriends(caller, false);
|
||||||
{
|
|
||||||
Plugin.openShop(caller);
|
|
||||||
}
|
|
||||||
else
|
|
||||||
{
|
|
||||||
Plugin.showFriends(caller);
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
|
|
|
@ -6,6 +6,7 @@ import mineplex.core.command.CommandBase;
|
||||||
import mineplex.core.common.util.Callback;
|
import mineplex.core.common.util.Callback;
|
||||||
import mineplex.core.common.util.F;
|
import mineplex.core.common.util.F;
|
||||||
import mineplex.core.friend.FriendManager;
|
import mineplex.core.friend.FriendManager;
|
||||||
|
import mineplex.core.friend.FriendManager.Perm;
|
||||||
|
|
||||||
public class DeleteFriend extends CommandBase<FriendManager>
|
public class DeleteFriend extends CommandBase<FriendManager>
|
||||||
{
|
{
|
||||||
|
@ -14,7 +15,7 @@ public class DeleteFriend extends CommandBase<FriendManager>
|
||||||
|
|
||||||
public DeleteFriend(FriendManager plugin)
|
public DeleteFriend(FriendManager plugin)
|
||||||
{
|
{
|
||||||
super(plugin, FriendManager.Perm.FRIEND_COMMAND, COMMAND);
|
super(plugin, Perm.FRIEND_COMMAND, COMMAND);
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
|
|
|
@ -28,7 +28,7 @@ public class FriendFavouriteCommand extends CommandBase<FriendManager>
|
||||||
{
|
{
|
||||||
if (result != null)
|
if (result != null)
|
||||||
{
|
{
|
||||||
Plugin.toggleFavourite(caller, result);
|
Plugin.toggleFavourite(caller, result, null);
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
|
@ -1,12 +1,10 @@
|
||||||
package mineplex.core.friend.command;
|
package mineplex.core.friend.command;
|
||||||
|
|
||||||
import org.bukkit.Sound;
|
|
||||||
import org.bukkit.entity.Player;
|
import org.bukkit.entity.Player;
|
||||||
|
|
||||||
import mineplex.core.command.CommandBase;
|
import mineplex.core.command.CommandBase;
|
||||||
import mineplex.core.friend.FriendManager;
|
import mineplex.core.friend.FriendManager;
|
||||||
import mineplex.core.preferences.Preference;
|
import mineplex.core.friend.FriendManager.Perm;
|
||||||
import mineplex.core.preferences.UserPreferences;
|
|
||||||
|
|
||||||
public class FriendsDisplay extends CommandBase<FriendManager>
|
public class FriendsDisplay extends CommandBase<FriendManager>
|
||||||
{
|
{
|
||||||
|
@ -15,27 +13,12 @@ public class FriendsDisplay extends CommandBase<FriendManager>
|
||||||
|
|
||||||
public FriendsDisplay(FriendManager plugin)
|
public FriendsDisplay(FriendManager plugin)
|
||||||
{
|
{
|
||||||
super(plugin, FriendManager.Perm.FRIEND_COMMAND, COMMAND);
|
super(plugin, Perm.FRIEND_COMMAND, COMMAND);
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void Execute(Player caller, final String[] args)
|
public void Execute(Player caller, final String[] args)
|
||||||
{
|
{
|
||||||
UserPreferences preferences = Plugin.getPreferenceManager().get(caller);
|
Plugin.showFriends(caller, true);
|
||||||
|
|
||||||
preferences.toggle(Preference.FRIENDS_DISPLAY_INVENTORY_UI);
|
|
||||||
|
|
||||||
Plugin.getPreferenceManager().save(preferences);
|
|
||||||
|
|
||||||
caller.playSound(caller.getLocation(), Sound.NOTE_PLING, 1, 1.6f);
|
|
||||||
|
|
||||||
if (preferences.isActive(Preference.FRIENDS_DISPLAY_INVENTORY_UI))
|
|
||||||
{
|
|
||||||
|
|
||||||
}
|
|
||||||
else
|
|
||||||
{
|
|
||||||
Plugin.runAsync(() -> Plugin.showFriends(caller));
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
}
|
}
|
|
@ -67,7 +67,7 @@ public class FriendMainPage extends ShopPageBase<FriendManager, FriendShop>
|
||||||
@Override
|
@Override
|
||||||
protected void buildPage()
|
protected void buildPage()
|
||||||
{
|
{
|
||||||
int slot = 1;
|
int slot = 0;
|
||||||
|
|
||||||
for (FriendPageType pageType : FriendPageType.values())
|
for (FriendPageType pageType : FriendPageType.values())
|
||||||
{
|
{
|
||||||
|
@ -103,6 +103,17 @@ public class FriendMainPage extends ShopPageBase<FriendManager, FriendShop>
|
||||||
.openInventory();
|
.openInventory();
|
||||||
});
|
});
|
||||||
|
|
||||||
|
slot += 2;
|
||||||
|
|
||||||
|
addButton(slot, new ItemBuilder(Material.SIGN)
|
||||||
|
.setTitle(C.cDAquaB + "Toggle GUI")
|
||||||
|
.addLore("", "Click to display your friends in", "chat instead of this chest.")
|
||||||
|
.build(), (player, clickType) ->
|
||||||
|
{
|
||||||
|
player.closeInventory();
|
||||||
|
getPlugin().showFriends(player, true);
|
||||||
|
});
|
||||||
|
|
||||||
_pageManager.buildPage();
|
_pageManager.buildPage();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -180,7 +191,11 @@ public class FriendMainPage extends ShopPageBase<FriendManager, FriendShop>
|
||||||
if (clickType.isShiftClick())
|
if (clickType.isShiftClick())
|
||||||
{
|
{
|
||||||
playAcceptSound(player);
|
playAcceptSound(player);
|
||||||
getPlugin().toggleFavourite(player, status.Name);
|
getPlugin().toggleFavourite(player, status.Name, () ->
|
||||||
|
{
|
||||||
|
status.Favourite = !status.Favourite;
|
||||||
|
buildItem(status, slot);
|
||||||
|
});
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
|
|
Loading…
Reference in New Issue