Rework of the Codesite Group System #139
@ -58,53 +58,24 @@ public class ConnectionListener extends BasicListener {
|
||||
public void onPostLogin(PostLoginEvent event) {
|
||||
ProxiedPlayer player = event.getPlayer();
|
||||
SteamwarUser user = SteamwarUser.get(player.getUniqueId());
|
||||
player.removeGroups("Admin", "team");
|
||||
switch(user.getUserGroup()){
|
||||
case "Admin":
|
||||
player.addGroups(ADMIN_GROUP, TEAM_GROUP);
|
||||
player.setPermission("bungeecore.group.admin", true);
|
||||
player.setPermission(CHECK_PERMISSION, true);
|
||||
player.setPermission(YOUTUBER_MODS, true);
|
||||
player.setDisplayName("§4Admin " + player.getName() + "§r");
|
||||
break;
|
||||
case "Developer":
|
||||
player.addGroups(ADMIN_GROUP, TEAM_GROUP);
|
||||
player.setPermission("bungeecore.group.developer", true);
|
||||
player.setPermission(CHECK_PERMISSION, true);
|
||||
player.setPermission(YOUTUBER_MODS, true);
|
||||
player.setDisplayName("§3Developer " + player.getName() + "§r");
|
||||
break;
|
||||
case "Moderator":
|
||||
player.addGroups(ADMIN_GROUP, TEAM_GROUP);
|
||||
player.setPermission("bungeecore.group.moderator", true);
|
||||
player.setPermission(CHECK_PERMISSION, true);
|
||||
player.setPermission(YOUTUBER_MODS, true);
|
||||
player.setDisplayName("§bModerator " + player.getName() + "§r");
|
||||
break;
|
||||
case "Supporter":
|
||||
player.addGroups(TEAM_GROUP);
|
||||
player.setPermission("bungeecore.group.supporter", true);
|
||||
player.setPermission(CHECK_PERMISSION, true);
|
||||
player.setPermission(YOUTUBER_MODS, true);
|
||||
player.setDisplayName("§1Supporter " + player.getName() + "§r");
|
||||
break;
|
||||
case "Builder":
|
||||
player.addGroups(TEAM_GROUP);
|
||||
player.setPermission("bungeecore.group.builder", true);
|
||||
player.setPermission(YOUTUBER_MODS, true);
|
||||
player.setDisplayName("§2Architekt " + player.getName() + "§r");
|
||||
break;
|
||||
case "Youtuber":
|
||||
player.setPermission("bungeecore.group.youtuber", true);
|
||||
player.setPermission(YOUTUBER_MODS, true);
|
||||
player.setDisplayName("§5Youtuber " + player.getName() + "§r");
|
||||
break;
|
||||
case "Member":
|
||||
default:
|
||||
player.setDisplayName(player.getName());
|
||||
break;
|
||||
}
|
||||
|
||||
player.removeGroups("Admin", "team");
|
||||
player.setDisplayName(player.getName());
|
||||
|
||||
if(user.getUserGroup().isAdminGroup())
|
||||
player.addGroups(ADMIN_GROUP, TEAM_GROUP);
|
||||
|
||||
if(user.getUserGroup().isTeamGroup())
|
||||
player.addGroups(TEAM_GROUP);
|
||||
|
||||
if(user.getUserGroup().isCheckSchematics())
|
||||
player.setPermission(CHECK_PERMISSION, true);
|
||||
|
||||
if(user.getUserGroup() != SteamwarUser.UserGroup.MEMBER) {
|
||||
player.setPermission(YOUTUBER_MODS, true);
|
||||
player.setDisplayName(user.getUserGroup().getColorCode() + user.getUserGroup().getDisplayName() + " " + player.getName() + "§r");
|
||||
player.setPermission("bungeecore.group." + user.getUserGroup().getDisplayName().toLowerCase(), true);
|
||||
}
|
||||
|
||||
for(Subserver subserver : Subserver.getServerList()){
|
||||
if(subserver.getType() == Servertype.ARENA){
|
||||
|
@ -25,6 +25,7 @@ import codecrafter47.bungeetablistplus.tablist.DefaultCustomTablist;
|
||||
import de.steamwar.bungeecore.BungeeCore;
|
||||
import de.steamwar.bungeecore.Servertype;
|
||||
import de.steamwar.bungeecore.Subserver;
|
||||
import de.steamwar.bungeecore.sql.SteamwarUser;
|
||||
import net.md_5.bungee.api.ProxyServer;
|
||||
import net.md_5.bungee.api.config.ServerInfo;
|
||||
import net.md_5.bungee.api.connection.ProxiedPlayer;
|
||||
@ -197,15 +198,13 @@ public class TablistManager extends BasicListener {
|
||||
|
||||
private String getTablistName(ProxiedPlayer p, boolean sameServer) {
|
||||
StringBuilder st = new StringBuilder();
|
||||
if (p.hasPermission("bungeecore.group.admin")) st.append("§4");
|
||||
else if (p.hasPermission("bungeecore.group.developer")) st.append("§3");
|
||||
else if (p.hasPermission("bungeecore.group.moderator")) st.append("§b");
|
||||
else if (p.hasPermission("bungeecore.group.supporter")) st.append("§1");
|
||||
else if (p.hasPermission("bungeecore.group.builder")) st.append("§2");
|
||||
else if (p.hasPermission("bungeecore.group.youtuber")) st.append("§5");
|
||||
SteamwarUser.UserGroup group = SteamwarUser.UserGroup.getUserGroupByPermission(p);
|
||||
|
||||
//else st.append("§7");
|
||||
else if (sameServer) st.append("§f");
|
||||
else st.append("§7");
|
||||
if(group == SteamwarUser.UserGroup.MEMBER && sameServer)
|
||||
st.append("§f");
|
||||
else
|
||||
st.append(group.getColorCode());
|
||||
|
||||
// if (!sameServer) st.append("§o");
|
||||
return st.append(p.getName()).toString();
|
||||
|
@ -42,7 +42,7 @@ public class SteamwarUser {
|
||||
private final int id;
|
||||
private final UUID uuid;
|
||||
private String userName;
|
||||
private String userGroup;
|
||||
private UserGroup userGroup;
|
||||
private Timestamp banTime;
|
||||
private String banReason;
|
||||
private int team;
|
||||
@ -68,7 +68,7 @@ public class SteamwarUser {
|
||||
id = rs.getInt("id");
|
||||
uuid = UUID.fromString(rs.getString("UUID"));
|
||||
userName = rs.getString("UserName");
|
||||
userGroup = rs.getString("UserGroup");
|
||||
userGroup = UserGroup.valueOf(rs.getString("UserGroup").toUpperCase());
|
||||
|
||||
banTime = rs.getTimestamp("BanTime");
|
||||
banReason = rs.getString("BanReason");
|
||||
team = rs.getInt("Team");
|
||||
@ -90,7 +90,7 @@ public class SteamwarUser {
|
||||
user.userName = userName;
|
||||
}
|
||||
}else{
|
||||
SQL.update("INSERT INTO UserData (UUID, UserName, UserGroup) VALUES (?, ?, 'Member')", connection.getUniqueId().toString(), connection.getName());
|
||||
SQL.update("INSERT INTO UserData (UUID, UserName, UserGroup) VALUES (?, ?, ?)", connection.getUniqueId().toString(), connection.getName(), UserGroup.STANDARD_GROUP.getDisplayName());
|
||||
Lixfel
hat
Warum kann die Zeile nicht einfach bei der alten Zeile bleiben? Warum kann die Zeile nicht einfach bei der alten Zeile bleiben?
|
||||
user = dbInit(SQL.select("SELECT * FROM UserData WHERE UUID = ?", connection.getUniqueId().toString()));
|
||||
if(user == null)
|
||||
throw new SecurityException("user == null");
|
||||
@ -148,7 +148,7 @@ public class SteamwarUser {
|
||||
return userName;
|
||||
}
|
||||
|
||||
public String getUserGroup() {
|
||||
public UserGroup getUserGroup() {
|
||||
return userGroup;
|
||||
}
|
||||
|
||||
@ -254,4 +254,58 @@ public class SteamwarUser {
|
||||
throw new SecurityException("Could not load First Join");
|
||||
}
|
||||
}
|
||||
|
||||
public enum UserGroup {
|
||||
Lixfel
hat
Ich glaube, als separate Datei wäre das ganze angenehmer. Ich glaube, als separate Datei wäre das ganze angenehmer.
|
||||
|
||||
ADMIN("Admin", "§4", true, true, true),
|
||||
DEVELOPER("Developer", "§3", true, true, true),
|
||||
MODERATOR("Moderator", "§b", true, true, true),
|
||||
SUPPORTER("Supporter", "§1", false, true, true),
|
||||
BUILDER("Builder", "§2", false, true, false),
|
||||
YOUTUBER("Youtuber", "§5", false, false, false),
|
||||
MEMBER("Member", "§7", false, false, false);
|
||||
|
||||
public static final UserGroup STANDARD_GROUP = UserGroup.MEMBER;
|
||||
Lixfel
hat
Man kann immer Member als Standardgroup annehmen (kein separater Wert nötig), da es schlicht und ergreifend derzeit unvorstellbar ist, dass sich das mal ändert. Man kann immer Member als Standardgroup annehmen (kein separater Wert nötig), da es schlicht und ergreifend derzeit unvorstellbar ist, dass sich das mal ändert.
|
||||
|
||||
private final String displayName;
|
||||
Lixfel
hat
Statt DisplayName separat zu haben, wäre es da nicht angenehmer, auf .name() (also den internen Namen) zurückzugreifen und diesen dann genauso entsprechend mit Groß- und Kleinschreibung anzupassen/zu setzen? Statt DisplayName separat zu haben, wäre es da nicht angenehmer, auf .name() (also den internen Namen) zurückzugreifen und diesen dann genauso entsprechend mit Groß- und Kleinschreibung anzupassen/zu setzen?
|
||||
private final String colorCode;
|
||||
private final boolean adminGroup;
|
||||
private final boolean teamGroup;
|
||||
private final boolean checkSchematics;
|
||||
|
||||
UserGroup(String displayName, String colorCode, boolean adminGroup, boolean teamGroup, boolean checkSchematics) {
|
||||
this.displayName = displayName;
|
||||
this.colorCode = colorCode;
|
||||
this.adminGroup = adminGroup;
|
||||
this.teamGroup = teamGroup;
|
||||
this.checkSchematics = checkSchematics;
|
||||
}
|
||||
|
||||
public String getDisplayName() {
|
||||
return displayName;
|
||||
}
|
||||
|
||||
public String getColorCode() {
|
||||
return colorCode;
|
||||
}
|
||||
|
||||
public boolean isAdminGroup() {
|
||||
return adminGroup;
|
||||
}
|
||||
|
||||
public boolean isTeamGroup() {
|
||||
return teamGroup;
|
||||
}
|
||||
|
||||
public boolean isCheckSchematics() {
|
||||
return checkSchematics;
|
||||
}
|
||||
|
||||
public static UserGroup getUserGroupByPermission(ProxiedPlayer p) {
|
||||
Lixfel
hat
Wenn man den ProxiedPlayer hat, sollte der Weg eigentlich über SteamwarUser.get(p).getUserGroup() laufen, und nicht über das BungeeCord-Permissionsystem. Wenn man den ProxiedPlayer hat, sollte der Weg eigentlich über SteamwarUser.get(p).getUserGroup() laufen, und nicht über das BungeeCord-Permissionsystem.
|
||||
for (UserGroup group : UserGroup.values()) {
|
||||
if (p.hasPermission("bungeecore.group." + group.getDisplayName().toLowerCase())) return group;
|
||||
}
|
||||
return UserGroup.STANDARD_GROUP;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
In neuem Issue referenzieren
Einen Benutzer sperren
Das gibt NPEs.