Skip to content

Commit

Permalink
fix: some changes
Browse files Browse the repository at this point in the history
  • Loading branch information
Josscoder committed Jan 1, 2023
1 parent 6aff923 commit fcddab3
Show file tree
Hide file tree
Showing 14 changed files with 335 additions and 20 deletions.
6 changes: 6 additions & 0 deletions pom.xml
Original file line number Diff line number Diff line change
Expand Up @@ -85,6 +85,12 @@
<version>8e648c504e</version>
<scope>compile</scope>
</dependency>
<dependency>
<groupId>com.github.Josscoder.JBridge</groupId>
<artifactId>jbridge-nukkit</artifactId>
<version>v1.0.7</version>
<scope>provided</scope>
</dependency>
<dependency>
<groupId>net.luckperms</groupId>
<artifactId>api</artifactId>
Expand Down
23 changes: 16 additions & 7 deletions src/main/java/me/josscoder/jessentials/JEssentialsPlugin.java
Original file line number Diff line number Diff line change
Expand Up @@ -6,12 +6,15 @@
import com.denzelcode.form.FormAPI;
import lombok.Getter;
import me.iwareq.scoreboard.ScoreboardAPI;
import me.josscoder.jessentials.customitem.ItemManager;
import me.josscoder.jessentials.luckperms.LuckPermsAPI;
import me.josscoder.jessentials.luckformat.LuckFormatCommand;
import me.josscoder.jessentials.luckformat.LuckFormatManager;
import me.josscoder.jessentials.worldprotect.WorldProtectCommand;
import me.josscoder.jessentials.worldprotect.WorldProtectManager;
import me.josscoder.jessentials.command.LobbySelectorCommand;
import me.josscoder.jessentials.utils.customitem.ItemManager;
import me.josscoder.jessentials.utils.lobby.LobbyCommand;
import me.josscoder.jessentials.utils.lobby.LobbyManager;
import me.josscoder.jessentials.utils.LuckPermsAPI;
import me.josscoder.jessentials.utils.luckformat.LuckFormatCommand;
import me.josscoder.jessentials.utils.luckformat.LuckFormatManager;
import me.josscoder.jessentials.utils.worldprotect.WorldProtectCommand;
import me.josscoder.jessentials.utils.worldprotect.WorldProtectManager;

import java.util.Arrays;

Expand All @@ -24,6 +27,7 @@ public class JEssentialsPlugin extends PluginBase {
private LuckFormatManager luckFormatManager;
private ItemManager itemManager;
private WorldProtectManager worldProtectManager;
private LobbyManager lobbyManager;

@Override
public void onLoad() {
Expand All @@ -48,7 +52,9 @@ public void onEnable() {

registerCommand(
new LuckFormatCommand(),
new WorldProtectCommand()
new WorldProtectCommand(),
new LobbyCommand(),
new LobbySelectorCommand()
);
}

Expand Down Expand Up @@ -87,6 +93,9 @@ private void loadManagers() {
luckFormatManager = new LuckFormatManager();
luckFormatManager.init();

lobbyManager = new LobbyManager();
lobbyManager.init();

itemManager = new ItemManager();
itemManager.init();

Expand Down
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;
}
}
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
package me.josscoder.jessentials.luckperms;
package me.josscoder.jessentials.utils;

import cn.nukkit.Player;
import cn.nukkit.utils.TextFormat;
Expand Down
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
package me.josscoder.jessentials.customitem;
package me.josscoder.jessentials.utils.customitem;

import cn.nukkit.Player;
import cn.nukkit.event.Cancellable;
Expand Down
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
package me.josscoder.jessentials.customitem;
package me.josscoder.jessentials.utils.customitem;

import cn.nukkit.Player;
import cn.nukkit.event.EventHandler;
Expand All @@ -20,9 +20,13 @@ public class ItemManager extends Manager implements Listener {
@Getter
private final Map<String, ItemBuilder> items = new HashMap<>();

@Getter
private static ItemManager instance;

public ItemManager() {
super(JEssentialsPlugin.getInstance().getConfig());
this.itemSection = config.getSection("items");
instance = this;
}

@Override
Expand Down
115 changes: 115 additions & 0 deletions src/main/java/me/josscoder/jessentials/utils/lobby/LobbyCommand.java
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));
}
}
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() {}
}
Original file line number Diff line number Diff line change
@@ -1,9 +1,8 @@
package me.josscoder.jessentials.luckformat;
package me.josscoder.jessentials.utils.luckformat;

import cn.nukkit.command.Command;
import cn.nukkit.command.CommandSender;
import cn.nukkit.utils.TextFormat;
import me.josscoder.jessentials.JEssentialsPlugin;

public class LuckFormatCommand extends Command {

Expand All @@ -25,7 +24,7 @@ public boolean execute(CommandSender sender, String label, String[] args) {
return false;
}

LuckFormatManager manager = JEssentialsPlugin.getInstance().getLuckFormatManager();
LuckFormatManager manager = LuckFormatManager.getInstance();

String childArg = args[0].toLowerCase();

Expand Down
Loading

0 comments on commit fcddab3

Please sign in to comment.