mirror of
https://github.com/Freezy-Studios/BlazeSMP.git
synced 2025-04-21 20:54:04 +02:00
commit
428bdb5597
6 changed files with 161 additions and 5 deletions
|
@ -2,11 +2,15 @@ package me.freezy.plugins.papermc.blazesmp;
|
||||||
|
|
||||||
import lombok.Getter;
|
import lombok.Getter;
|
||||||
import me.freezy.plugins.papermc.blazesmp.command.ClanCommand;
|
import me.freezy.plugins.papermc.blazesmp.command.ClanCommand;
|
||||||
|
import me.freezy.plugins.papermc.blazesmp.listener.JoinListener;
|
||||||
import me.freezy.plugins.papermc.blazesmp.module.manager.Clans;
|
import me.freezy.plugins.papermc.blazesmp.module.manager.Clans;
|
||||||
import me.freezy.plugins.papermc.blazesmp.module.manager.Homes;
|
import me.freezy.plugins.papermc.blazesmp.module.manager.Homes;
|
||||||
import me.freezy.plugins.papermc.blazesmp.module.manager.ProtectedBlocks;
|
import me.freezy.plugins.papermc.blazesmp.module.manager.ProtectedBlocks;
|
||||||
|
import me.freezy.plugins.papermc.blazesmp.tasks.PlayerNameUpdate;
|
||||||
import org.bukkit.configuration.file.FileConfiguration;
|
import org.bukkit.configuration.file.FileConfiguration;
|
||||||
|
import org.bukkit.plugin.PluginManager;
|
||||||
import org.bukkit.plugin.java.JavaPlugin;
|
import org.bukkit.plugin.java.JavaPlugin;
|
||||||
|
import org.bukkit.scheduler.BukkitTask;
|
||||||
import org.slf4j.Logger;
|
import org.slf4j.Logger;
|
||||||
|
|
||||||
public final class BlazeSMP extends JavaPlugin {
|
public final class BlazeSMP extends JavaPlugin {
|
||||||
|
@ -16,11 +20,14 @@ public final class BlazeSMP extends JavaPlugin {
|
||||||
@Getter private Clans clans;
|
@Getter private Clans clans;
|
||||||
@Getter private FileConfiguration configuration;
|
@Getter private FileConfiguration configuration;
|
||||||
@Getter private Logger log;
|
@Getter private Logger log;
|
||||||
|
@Getter private BukkitTask nameUpdateTask;
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void onLoad() {
|
public void onLoad() {
|
||||||
this.log=getSLF4JLogger();
|
this.log=getSLF4JLogger();
|
||||||
|
|
||||||
|
this.log.info("Loading BlazeSMP...");
|
||||||
|
|
||||||
this.log.info("Loading Homes...");
|
this.log.info("Loading Homes...");
|
||||||
this.homes=new Homes();
|
this.homes=new Homes();
|
||||||
this.homes.load();
|
this.homes.load();
|
||||||
|
@ -41,19 +48,52 @@ public final class BlazeSMP extends JavaPlugin {
|
||||||
this.configuration= getConfig();
|
this.configuration= getConfig();
|
||||||
saveConfig();
|
saveConfig();
|
||||||
this.log.info("Loaded config!");
|
this.log.info("Loaded config!");
|
||||||
|
|
||||||
|
this.log.info("Loaded BlazeSMP!");
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void onEnable() {
|
public void onEnable() {
|
||||||
BlazeSMP.instance=this;
|
BlazeSMP.instance=this;
|
||||||
|
|
||||||
|
this.log.info("Enabling BlazeSMP...");
|
||||||
|
|
||||||
this.log.info("Registering Commands...");
|
this.log.info("Registering Commands...");
|
||||||
new ClanCommand().register();
|
new ClanCommand().register();
|
||||||
this.log.info("Registered Commands!");
|
this.log.info("Registered Commands!");
|
||||||
|
|
||||||
|
this.log.info("Registering EventListeners...");
|
||||||
|
PluginManager pm = getServer().getPluginManager();
|
||||||
|
pm.registerEvents(new JoinListener(), this);
|
||||||
|
this.log.info("Registered EventListeners!");
|
||||||
|
|
||||||
|
this.log.info("Starting Timer tasks...");
|
||||||
|
this.nameUpdateTask = new PlayerNameUpdate().runTaskTimer(this, 0L, 20L);
|
||||||
|
this.log.info("Started Timer tasks!");
|
||||||
|
|
||||||
|
this.log.info("Enabled BlazeSMP!");
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void onDisable() {
|
public void onDisable() {
|
||||||
// Plugin shutdown logic
|
this.log.info("Disabling BlazeSMP...");
|
||||||
|
|
||||||
|
this.log.info("Cancelling Timer tasks...");
|
||||||
|
this.nameUpdateTask.cancel();
|
||||||
|
this.log.info("Cancelled Timer tasks!");
|
||||||
|
|
||||||
|
this.log.info("Saving Homes...");
|
||||||
|
this.homes.save();
|
||||||
|
this.log.info("Saved Homes!");
|
||||||
|
|
||||||
|
this.log.info("Saving ProtectedBlocks...");
|
||||||
|
this.protectedBlocks.save();
|
||||||
|
this.log.info("Saved ProtectedBlocks!");
|
||||||
|
|
||||||
|
this.log.info("Saving Clans...");
|
||||||
|
this.clans.saveAllClans();
|
||||||
|
this.log.info("Saved Clans!");
|
||||||
|
|
||||||
|
this.log.info("Disabling BlazeSMP!");
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -65,7 +65,7 @@ public class ClanCommand extends SimpleCommand {
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
String clanName = args[1];
|
String clanName = args[1];
|
||||||
String clanTag = args[2];
|
String clanTag = String.join(" ", Arrays.copyOfRange(args, 2, args.length));
|
||||||
Component tagComponent = miniMessage().deserialize(clanTag);
|
Component tagComponent = miniMessage().deserialize(clanTag);
|
||||||
|
|
||||||
Clan newClan = new Clan(clanName, tagComponent, playerUUID);
|
Clan newClan = new Clan(clanName, tagComponent, playerUUID);
|
||||||
|
@ -667,7 +667,7 @@ public class ClanCommand extends SimpleCommand {
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
String whatToModify = args[1].toLowerCase();
|
String whatToModify = args[1].toLowerCase();
|
||||||
String newValue = args[2];
|
String newValue = String.join(" ", Arrays.copyOfRange(args, 2, args.length));
|
||||||
|
|
||||||
Clan currentClan = clans.getClanByMember(playerUUID);
|
Clan currentClan = clans.getClanByMember(playerUUID);
|
||||||
if (currentClan == null) {
|
if (currentClan == null) {
|
||||||
|
|
|
@ -0,0 +1,15 @@
|
||||||
|
package me.freezy.plugins.papermc.blazesmp.listener;
|
||||||
|
|
||||||
|
import me.freezy.plugins.papermc.blazesmp.manager.PlayerManager;
|
||||||
|
import org.bukkit.entity.Player;
|
||||||
|
import org.bukkit.event.EventHandler;
|
||||||
|
import org.bukkit.event.Listener;
|
||||||
|
import org.bukkit.event.player.PlayerJoinEvent;
|
||||||
|
|
||||||
|
public class JoinListener implements Listener {
|
||||||
|
@EventHandler
|
||||||
|
public void onJoin(PlayerJoinEvent event) {
|
||||||
|
Player player = event.getPlayer();
|
||||||
|
new PlayerManager().setPlayerTeam(player);
|
||||||
|
}
|
||||||
|
}
|
|
@ -0,0 +1,87 @@
|
||||||
|
package me.freezy.plugins.papermc.blazesmp.manager;
|
||||||
|
|
||||||
|
import me.freezy.plugins.papermc.blazesmp.BlazeSMP;
|
||||||
|
import me.freezy.plugins.papermc.blazesmp.module.Clan;
|
||||||
|
import me.freezy.plugins.papermc.blazesmp.module.manager.Clans;
|
||||||
|
import net.kyori.adventure.text.Component;
|
||||||
|
import net.kyori.adventure.text.minimessage.MiniMessage;
|
||||||
|
import org.bukkit.entity.Player;
|
||||||
|
import org.bukkit.scoreboard.Scoreboard;
|
||||||
|
import org.bukkit.scoreboard.Team;
|
||||||
|
|
||||||
|
import java.security.SecureRandom;
|
||||||
|
import java.util.LinkedHashMap;
|
||||||
|
import java.util.LinkedList;
|
||||||
|
import java.util.UUID;
|
||||||
|
|
||||||
|
public class PlayerManager {
|
||||||
|
private final LinkedHashMap<Clan, String> clanChars = new LinkedHashMap<>();
|
||||||
|
{
|
||||||
|
Clans clans = BlazeSMP.getInstance().getClans();
|
||||||
|
LinkedList<Clan> clansList = clans.getClans();
|
||||||
|
clansList.forEach(clan -> {
|
||||||
|
int clanPlace = clansList.indexOf(clan);
|
||||||
|
char first = (char) ('a' + (clanPlace / (26 * 26)) % 26);
|
||||||
|
char second = (char) ('a' + (clanPlace / 26) % 26);
|
||||||
|
char third = (char) ('a' + clanPlace % 26);
|
||||||
|
clanChars.put(clan, ""+first+second+third);
|
||||||
|
});
|
||||||
|
}
|
||||||
|
public void setPlayerTeam(Player player) {
|
||||||
|
Clans clans = BlazeSMP.getInstance().getClans();
|
||||||
|
UUID playerUUID = player.getUniqueId();
|
||||||
|
player.setScoreboard(player.getServer().getScoreboardManager().getNewScoreboard());
|
||||||
|
Scoreboard scoreboard = player.getScoreboard();
|
||||||
|
String teamName;
|
||||||
|
if (clans.isInClan(playerUUID)) {
|
||||||
|
teamName=clanChars.get(clans.getClanByMember(playerUUID));
|
||||||
|
if (clans.isLeader(playerUUID)) {
|
||||||
|
teamName+="a";
|
||||||
|
} else if (clans.isVice(playerUUID)) {
|
||||||
|
teamName+="b";
|
||||||
|
} else {
|
||||||
|
teamName+="c";
|
||||||
|
}
|
||||||
|
} else {
|
||||||
|
teamName="zzzm";
|
||||||
|
}
|
||||||
|
teamName+=generateRandomString(12);
|
||||||
|
if (!scoreboard.getTeams().isEmpty()) scoreboard.getTeams().clear();
|
||||||
|
Team team = scoreboard.getTeam(teamName);
|
||||||
|
if (team == null) {
|
||||||
|
team = scoreboard.registerNewTeam(teamName);
|
||||||
|
}
|
||||||
|
Component prefix = player.isOp() ?
|
||||||
|
MiniMessage.miniMessage().deserialize(
|
||||||
|
BlazeSMP.getInstance().getConfiguration().getString("op-prefix",
|
||||||
|
"<color:dark_gray>[</color><gradient:#ffa600:#ffb700><b>Team</b></gradient><color:dark_gray>]</color> "
|
||||||
|
)
|
||||||
|
)
|
||||||
|
:
|
||||||
|
MiniMessage.miniMessage().deserialize(
|
||||||
|
BlazeSMP.getInstance().getConfiguration().getString("player-prefix",
|
||||||
|
"<color:dark_gray>[</color><gradient:#747e80:#828d8f><b>Player</b></gradient><color:dark_gray>]</color> "
|
||||||
|
)
|
||||||
|
);
|
||||||
|
team.prefix(prefix);
|
||||||
|
Clan clan = clans.getClanByMember(playerUUID);
|
||||||
|
if (clan != null) {
|
||||||
|
team.suffix(Component.text(" ").append(clan.getTag()));
|
||||||
|
} else {
|
||||||
|
team.suffix(Component.empty());
|
||||||
|
}
|
||||||
|
team.addEntity(player);
|
||||||
|
}
|
||||||
|
|
||||||
|
private String generateRandomString(int length) {
|
||||||
|
String CHARACTERS = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789";
|
||||||
|
SecureRandom RANDOM = new SecureRandom();
|
||||||
|
StringBuilder sb = new StringBuilder(length);
|
||||||
|
|
||||||
|
for (int i = 0; i < length; i++) {
|
||||||
|
sb.append(CHARACTERS.charAt(RANDOM.nextInt(CHARACTERS.length())));
|
||||||
|
}
|
||||||
|
|
||||||
|
return sb.toString();
|
||||||
|
}
|
||||||
|
}
|
|
@ -0,0 +1,14 @@
|
||||||
|
package me.freezy.plugins.papermc.blazesmp.tasks;
|
||||||
|
|
||||||
|
import me.freezy.plugins.papermc.blazesmp.manager.PlayerManager;
|
||||||
|
import org.bukkit.Bukkit;
|
||||||
|
import org.bukkit.scheduler.BukkitRunnable;
|
||||||
|
|
||||||
|
public class PlayerNameUpdate extends BukkitRunnable {
|
||||||
|
@Override
|
||||||
|
public void run() {
|
||||||
|
Bukkit.getOnlinePlayers().forEach(player -> {
|
||||||
|
new PlayerManager().setPlayerTeam(player);
|
||||||
|
});
|
||||||
|
}
|
||||||
|
}
|
|
@ -1,2 +1,2 @@
|
||||||
op-prefix: '<color:dark_gray>[</color><gradient:#ffa600:#ffb700><b>Team</b></gradient><color:dark_gray>]</color>'
|
op-prefix: '<color:dark_gray>[</color><gradient:#ffa600:#ffb700><b>Team</b></gradient><color:dark_gray>]</color> '
|
||||||
player-prefix: '<color:dark_gray>[</color><gradient:#747e80:#828d8f><b>Player</b></gradient><color:dark_gray>]</color>'
|
player-prefix: '<color:dark_gray>[</color><gradient:#747e80:#828d8f><b>Player</b></gradient><color:dark_gray>]</color> '
|
Loading…
Add table
Add a link
Reference in a new issue