-
Notifications
You must be signed in to change notification settings - Fork 0
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
- Loading branch information
Showing
14 changed files
with
335 additions
and
20 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
52 changes: 52 additions & 0 deletions
52
src/main/java/me/josscoder/jessentials/command/LobbySelectorCommand.java
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,52 @@ | ||
package me.josscoder.jessentials.command; | ||
|
||
import cn.nukkit.Player; | ||
import cn.nukkit.command.Command; | ||
import cn.nukkit.command.CommandSender; | ||
import cn.nukkit.utils.TextFormat; | ||
import com.denzelcode.form.window.SimpleWindowForm; | ||
import me.josscoder.jbridge.nukkit.JBridgeNukkit; | ||
import me.josscoder.jessentials.utils.lobby.LobbyManager; | ||
|
||
import java.util.concurrent.atomic.AtomicInteger; | ||
|
||
public class LobbySelectorCommand extends Command { | ||
public LobbySelectorCommand() { | ||
super("lobbyselector", | ||
"Select a lobby", | ||
"/lobbyselector", | ||
new String[]{"lobbyswitcher"} | ||
); | ||
} | ||
|
||
@Override | ||
public boolean execute(CommandSender sender, String label, String[] args) { | ||
if (!(sender instanceof Player)) return false; | ||
Player player = (Player) sender; | ||
|
||
SimpleWindowForm windowForm = new SimpleWindowForm("Lobby Selector"); | ||
|
||
AtomicInteger i = new AtomicInteger(1); | ||
LobbyManager.getInstance().getLobbyServices().forEach(lobby -> { | ||
boolean containsPlayer = lobby.containsPlayer(player.getName()); | ||
|
||
windowForm.addButton(lobby.getShortId(), | ||
TextFormat.colorize(String.format("&bLobby #%s &8(%s/%s)\n%s", | ||
i, | ||
lobby.getPlayersOnline(), | ||
lobby.getMaxPlayers(), | ||
containsPlayer ? "&cConnected" : "&2Click to connect" | ||
)), | ||
"textures/items/" + (containsPlayer ? "door_iron" : "door_wood") + ".png" | ||
); | ||
i.getAndIncrement(); | ||
}); | ||
windowForm.addHandler(e -> { | ||
if (e.wasClosed()) return; | ||
JBridgeNukkit.getInstance().transferPlayer(player, e.getButton().getName()); | ||
}); | ||
windowForm.sendTo(player); | ||
|
||
return true; | ||
} | ||
} |
2 changes: 1 addition & 1 deletion
2
...r/jessentials/luckperms/LuckPermsAPI.java → ...coder/jessentials/utils/LuckPermsAPI.java
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
2 changes: 1 addition & 1 deletion
2
...r/jessentials/customitem/ItemBuilder.java → ...entials/utils/customitem/ItemBuilder.java
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
115 changes: 115 additions & 0 deletions
115
src/main/java/me/josscoder/jessentials/utils/lobby/LobbyCommand.java
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,115 @@ | ||
package me.josscoder.jessentials.utils.lobby; | ||
|
||
import cn.nukkit.Player; | ||
import cn.nukkit.command.Command; | ||
import cn.nukkit.command.CommandSender; | ||
import cn.nukkit.utils.TextFormat; | ||
import me.josscoder.jbridge.nukkit.JBridgeNukkit; | ||
|
||
public class LobbyCommand extends Command { | ||
|
||
public LobbyCommand() { | ||
super("lobby", | ||
"Return to lobby", | ||
"/lobby", | ||
new String[]{"hub"} | ||
); | ||
} | ||
|
||
@Override | ||
public boolean execute(CommandSender sender, String label, String[] args) { | ||
LobbyManager manager = LobbyManager.getInstance(); | ||
|
||
if (sender.isPlayer() && args.length == 0) { | ||
Player player = (Player) sender; | ||
|
||
String sortedLobbyService = manager.geSortedLobbyServiceShortId(); | ||
|
||
//TODO: impl party | ||
|
||
if (sortedLobbyService.isEmpty()) { | ||
player.sendMessage(TextFormat.RED + "No rotating lobby servers!"); | ||
return false; | ||
} | ||
|
||
JBridgeNukkit.getInstance().transferPlayer(player, sortedLobbyService); | ||
return true; | ||
} | ||
|
||
if (sender.hasPermission("lobby.permission") && args.length > 0) { | ||
String childArg = args[0].toLowerCase(); | ||
|
||
switch (childArg) { | ||
case "help": | ||
sendCommandList(sender, label); | ||
break; | ||
case "reload": | ||
manager.reloadFromConfig(); | ||
sender.sendMessage(TextFormat.AQUA + "Lobby reloaded successfully!"); | ||
break; | ||
case "allowselector": | ||
boolean allow = !manager.isAllowSelector(); | ||
manager.setAllowSelector(allow); | ||
|
||
if (allow) { | ||
sender.sendMessage(TextFormat.GREEN + "You have allowed the lobby selector!"); | ||
} else { | ||
sender.sendMessage(TextFormat.RED + "You have restricted the lobby selector!"); | ||
} | ||
break; | ||
default: | ||
if (args.length == 2) { | ||
String value = args[1]; | ||
|
||
if (childArg.equalsIgnoreCase("addgroup")) { | ||
if (manager.containsGroup(value)) { | ||
sender.sendMessage(TextFormat.RED + "That group has already been added!"); | ||
return false; | ||
} | ||
|
||
manager.addGroup(value); | ||
sender.sendMessage(TextFormat.GREEN + String.format("You have added the %s group", value)); | ||
} else if (childArg.equalsIgnoreCase("removegroup")) { | ||
if (!manager.containsGroup(value)) { | ||
sender.sendMessage(TextFormat.RED + "That group has not been added!"); | ||
return false; | ||
} | ||
|
||
manager.removeGroup(value); | ||
sender.sendMessage(TextFormat.GREEN + String.format("You have removed the %s group", value)); | ||
} else if (childArg.equalsIgnoreCase("setsortmode")) { | ||
manager.setSortMode(value); | ||
sender.sendMessage(TextFormat.GREEN + "You have set the sortmode to " + value); | ||
} | ||
|
||
return true; | ||
} | ||
|
||
sender.sendMessage(TextFormat.RED + String.format( | ||
"Usage: /%s <addgroup|removegroup|setsortmode> <value>", | ||
label | ||
)); | ||
break; | ||
} | ||
|
||
return true; | ||
} | ||
|
||
return true; | ||
} | ||
|
||
private void sendCommandList(CommandSender sender, String label) { | ||
sender.sendMessage(TextFormat.colorize("&9&lLobby Plugin&r" + | ||
"\n" + | ||
"&7- /% help: &fShow command list" + | ||
"\n" + | ||
"&7- /% reload: &fReload the configuration" + | ||
"\n" + | ||
"&7- /% addgroup <group>: &fAdd group" + | ||
"\n" + | ||
"&7- /% removegroup <group>: &fRemove group" + | ||
"\n" + | ||
"&7- /% setsortmode <RANDOM|LOWEST|FILL>: &fSet sortmode" | ||
).replace("%", label)); | ||
} | ||
} |
98 changes: 98 additions & 0 deletions
98
src/main/java/me/josscoder/jessentials/utils/lobby/LobbyManager.java
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,98 @@ | ||
package me.josscoder.jessentials.utils.lobby; | ||
|
||
import cn.nukkit.utils.ConfigSection; | ||
import lombok.Getter; | ||
import me.josscoder.jbridge.JBridgeCore; | ||
import me.josscoder.jbridge.service.ServiceHandler; | ||
import me.josscoder.jbridge.service.ServiceInfo; | ||
import me.josscoder.jessentials.JEssentialsPlugin; | ||
import me.josscoder.jessentials.manager.Manager; | ||
|
||
import java.util.ArrayList; | ||
import java.util.List; | ||
|
||
public class LobbyManager extends Manager { | ||
|
||
private final ConfigSection lobbySection; | ||
|
||
private List<String> lobbyGroups; | ||
private String sortMode; | ||
private boolean allowSelector; | ||
|
||
@Getter | ||
private static LobbyManager instance; | ||
|
||
public LobbyManager() { | ||
super(JEssentialsPlugin.getInstance().getConfig()); | ||
this.lobbySection = config.getSection("lobby"); | ||
instance = this; | ||
} | ||
|
||
@Override | ||
public void init() { | ||
lobbyGroups = lobbySection.getStringList("groups"); | ||
sortMode = lobbySection.getString("sort-mode"); | ||
} | ||
|
||
public boolean containsGroup(String group) { | ||
return lobbyGroups.contains(group); | ||
} | ||
|
||
public void addGroup(String group) { | ||
lobbyGroups.add(group); | ||
updateGroups(); | ||
} | ||
|
||
public void removeGroup(String group) { | ||
lobbyGroups.remove(group); | ||
updateGroups(); | ||
} | ||
|
||
private void updateGroups() { | ||
lobbySection.set("groups", lobbyGroups); | ||
config.save(); | ||
} | ||
|
||
public void setSortMode(String sortMode) { | ||
this.sortMode = sortMode; | ||
lobbySection.set("sort-mode", sortMode.toUpperCase()); | ||
config.save(); | ||
} | ||
|
||
public boolean isAllowSelector() { | ||
return allowSelector; | ||
} | ||
|
||
public void setAllowSelector(boolean allowSelector) { | ||
this.allowSelector = allowSelector; | ||
lobbySection.set("allow-selector", allowSelector); | ||
config.save(); | ||
} | ||
|
||
public List<ServiceInfo> getLobbyServices() { | ||
List<ServiceInfo> services = new ArrayList<>(); | ||
lobbyGroups.forEach(lobbyGroup -> services.addAll( | ||
JBridgeCore.getInstance().getServiceHandler().getGroupServices(lobbyGroup) | ||
)); | ||
|
||
return services; | ||
} | ||
|
||
public ServiceInfo getSortedLobbyService() { | ||
return JBridgeCore.getInstance() | ||
.getServiceHandler() | ||
.getSortedServiceFromList(getLobbyServices(), ServiceHandler.SortMode.valueOf(sortMode)); | ||
} | ||
|
||
public String geSortedLobbyServiceShortId() { | ||
ServiceInfo serviceInfo = getSortedLobbyService(); | ||
return serviceInfo == null ? "" : serviceInfo.getShortId(); | ||
} | ||
|
||
public void reloadFromConfig() { | ||
init(); | ||
} | ||
|
||
@Override | ||
public void close() {} | ||
} |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Oops, something went wrong.