diff --git a/src/main/java/com/createcivilization/capitol/common/data/TeamRole.java b/src/main/java/com/createcivilization/capitol/common/data/TeamRole.java index 3b21122..df30ba6 100644 --- a/src/main/java/com/createcivilization/capitol/common/data/TeamRole.java +++ b/src/main/java/com/createcivilization/capitol/common/data/TeamRole.java @@ -7,12 +7,16 @@ public record TeamRole(int id, UUID teamId, String name, long permissions) { public static final String OWNER_ROLE_NAME = "owner"; + public static final String MEMBER_ROLE_NAME = "member"; public static final String DEFAULT_ROLE_NAME = "default"; public boolean isOwner() { return OWNER_ROLE_NAME.equals(name); } + public boolean isMemberRole() { + return MEMBER_ROLE_NAME.equals(name); + } public boolean isDefaultRole() { return DEFAULT_ROLE_NAME.equals(name); } @@ -34,7 +38,10 @@ public static long ownerPermissions() { return Permission.of(Permission.values()); } + public static long memberPermissions() { + return 0b111111111111111111100000000L; + } public static long defaultPermissions() { - return Permission.of(); + return 0; } } \ No newline at end of file diff --git a/src/main/java/com/createcivilization/capitol/common/modules/database/CapitolDatabase.java b/src/main/java/com/createcivilization/capitol/common/modules/database/CapitolDatabase.java index 0c52f20..e1cc6a9 100644 --- a/src/main/java/com/createcivilization/capitol/common/modules/database/CapitolDatabase.java +++ b/src/main/java/com/createcivilization/capitol/common/modules/database/CapitolDatabase.java @@ -165,6 +165,16 @@ public TeamRole getDefaultRole(Team team) { return getRoleByName(team, TeamRole.DEFAULT_ROLE_NAME); } + /** + * Convenience method that returns the "member" role for a team. + * + * @param team the team to query + * @return the default {@link TeamRole}, or {@code null} if not found + */ + public TeamRole getMemberRole(Team team) { + return getRoleByName(team, TeamRole.MEMBER_ROLE_NAME); + } + /** * Updates the permission bitfield for a role identified by team and role name. * @@ -309,6 +319,7 @@ public void addTeam(Team team) { } addRole(team, TeamRole.OWNER_ROLE_NAME, TeamRole.ownerPermissions()); + addRole(team, TeamRole.MEMBER_ROLE_NAME, TeamRole.memberPermissions()); addRole(team, TeamRole.DEFAULT_ROLE_NAME, TeamRole.defaultPermissions()); } diff --git a/src/main/java/com/createcivilization/capitol/server/commands/invite/InviteCommand.java b/src/main/java/com/createcivilization/capitol/server/commands/invite/InviteCommand.java index 2c4fad9..fe4cbfa 100644 --- a/src/main/java/com/createcivilization/capitol/server/commands/invite/InviteCommand.java +++ b/src/main/java/com/createcivilization/capitol/server/commands/invite/InviteCommand.java @@ -44,7 +44,7 @@ private static int acceptInvite(CommandContext context) { Team team = resolveInvitedTeam(context, player); if (team == null) return 0; - TeamRole role = DatabaseManager.database.getDefaultRole(team); + TeamRole role = DatabaseManager.database.getMemberRole(team); DatabaseManager.database.addPlayerToTeam(player, team, role); InviteHandler.clearInvites(player); diff --git a/src/main/java/com/createcivilization/capitol/server/commands/team/TeamRoleCommand.java b/src/main/java/com/createcivilization/capitol/server/commands/team/TeamRoleCommand.java index d7b7912..4ed22ef 100644 --- a/src/main/java/com/createcivilization/capitol/server/commands/team/TeamRoleCommand.java +++ b/src/main/java/com/createcivilization/capitol/server/commands/team/TeamRoleCommand.java @@ -124,6 +124,10 @@ private static int removeRole(CommandContext context) { return failCommand(context, "commands.capitol.team.role.remove.default"); } + if (Objects.equals(roleName, TeamRole.MEMBER_ROLE_NAME)) { + return failCommand(context, "commands.capitol.team.role.remove.member"); + } + TeamRole role = database.getRoleByName(team, roleName); if (role == null) { diff --git a/src/main/resources/assets/capitol/lang/en_us.json b/src/main/resources/assets/capitol/lang/en_us.json index 515e35d..3e42ada 100644 --- a/src/main/resources/assets/capitol/lang/en_us.json +++ b/src/main/resources/assets/capitol/lang/en_us.json @@ -62,6 +62,7 @@ "commands.capitol.team.role.remove.owner": "You cannot remove owner role.", "commands.capitol.team.role.remove.default": "You cannot remove default role.", + "commands.capitol.team.role.remove.member": "You cannot remove member role.", "commands.capitol.team.role.remove.success": "Deleted role %s", "commands.capitol.team.role.assign.no_permission": "You do not have permission to assign roles",