Merge pull request #9 from Freezy-Studios/dev

Dev
This commit is contained in:
DaTTV 2025-02-17 17:59:33 +01:00 committed by GitHub
commit 428bdb5597
No known key found for this signature in database
GPG key ID: B5690EEEBB952194
6 changed files with 161 additions and 5 deletions

View file

@ -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!");
} }
} }

View file

@ -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) {

View file

@ -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);
}
}

View file

@ -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();
}
}

View file

@ -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);
});
}
}

View file

@ -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> '