2727
2828public class GuildDialogService
2929{
30- private static final UUID MEMBER_PERMISSION_PROBE = new UUID (0L , 0L );
31-
3230 public void openHome (Player player , Guild guild )
3331 {
3432 player .showDialog (dialog (
@@ -40,7 +38,7 @@ public void openHome(Player player, Guild guild)
4038 List .of (
4139 button ("Members" , "View online status and manage members" , audience -> player (audience , viewer -> openMembers (viewer , guild ))),
4240 button ("Guild World" , "Load and enter your ASP guild world" , audience -> player (audience , viewer -> enterWorld (viewer , guild ))),
43- button ("Permissions" , "Configure member block permissions" , audience -> player (audience , viewer -> openPermissions (viewer , guild )))
41+ button ("Permissions" , "Configure role block permissions" , audience -> player (audience , viewer -> openPermissions (viewer , guild )))
4442 ),
4543 1
4644 ));
@@ -102,27 +100,52 @@ public void openPermissions(Player player, Guild guild)
102100 return ;
103101 }
104102 List <ActionButton > buttons = new ArrayList <>();
105- for (GuildPermission permission : GuildPermission .values ())
103+ for (GuildRole role : GuildRole .values ())
106104 {
107- boolean enabled = guild .hasPermission (MEMBER_PERMISSION_PROBE , permission );
108105 buttons .add (button (
109- permission . displayName () + ": " + ( enabled ? "Enabled" : "Disabled" ),
110- "Click to toggle " + permission . displayName ().toLowerCase (),
111- audience -> player (audience , viewer -> togglePermission (viewer , guild , permission ))
106+ role . name ( ),
107+ "Edit " + role . name ().toLowerCase () + " permissions" ,
108+ audience -> player (audience , viewer -> openRolePermissions (viewer , guild , role ))
112109 ));
113110 }
114111 buttons .add (button ("Back" , "Return to the guild menu" , audience -> player (audience , viewer -> openHome (viewer , guild ))));
115112 player .showDialog (dialog (
116- title ("Member Permissions" ),
113+ title ("Role Permissions" ),
117114 List .of (
118- body ("These permissions apply to regular guild members in the guild world ." , NamedTextColor .GRAY ),
119- body ("Owners always bypass these restrictions ." , NamedTextColor .GOLD )
115+ body ("Choose a guild role to configure ." , NamedTextColor .GRAY ),
116+ body ("Permissions apply inside the guild world ." , NamedTextColor .DARK_AQUA )
120117 ),
121118 buttons ,
122119 1
123120 ));
124121 }
125122
123+ private void openRolePermissions (Player player , Guild guild , GuildRole role )
124+ {
125+ if (!guild .isOwner (player .getUniqueId ()))
126+ {
127+ player .sendMessage (Guilds .get ().messageComponent ("guildNotOwner" ));
128+ return ;
129+ }
130+ List <ActionButton > buttons = new ArrayList <>();
131+ for (GuildPermission permission : GuildPermission .values ())
132+ {
133+ boolean enabled = guild .permissions (role ).hasPermission (permission );
134+ buttons .add (button (
135+ permission .displayName () + ": " + (enabled ? "Enabled" : "Disabled" ),
136+ "Click to toggle " + permission .displayName ().toLowerCase (),
137+ audience -> player (audience , viewer -> togglePermission (viewer , guild , role , permission ))
138+ ));
139+ }
140+ buttons .add (button ("Back" , "Return to role list" , audience -> player (audience , viewer -> openPermissions (viewer , guild ))));
141+ player .showDialog (dialog (
142+ title (role .name () + " Permissions" ),
143+ List .of (body ("Configure " + role .name ().toLowerCase () + " permissions for this guild world." , NamedTextColor .GRAY )),
144+ buttons ,
145+ 1
146+ ));
147+ }
148+
126149 private void enterWorld (Player player , Guild guild )
127150 {
128151 player .sendMessage (Guilds .get ().messageComponent ("guildWorldLoading" ));
@@ -151,6 +174,7 @@ private void kickMember(Player player, Guild guild, Member member)
151174 {
152175 if (throwable != null )
153176 {
177+ Guilds .get ().getLogger ().error ("Failed to update guild role permission" , throwable );
154178 player .sendMessage (Guilds .get ().messageComponent ("guildStorageFailed" ));
155179 return ;
156180 }
@@ -187,18 +211,18 @@ private void transferOwner(Player player, Guild guild, Member member)
187211 });
188212 }
189213
190- private void togglePermission (Player player , Guild guild , GuildPermission permission )
214+ private void togglePermission (Player player , Guild guild , GuildRole role , GuildPermission permission )
191215 {
192- boolean enabled = !guild .hasPermission (MEMBER_PERMISSION_PROBE , permission );
193- guild .setPermission (permission , enabled );
194- Guilds .get ().getGuildRepository ().updateMemberPermission (guild .getGuildUuid (), permission , enabled ).whenComplete ((unused , throwable ) ->
216+ boolean enabled = !guild .permissions ( role ). hasPermission (permission );
217+ guild .setPermission (role , permission , enabled );
218+ Guilds .get ().getGuildRepository ().updateRolePermission (guild .getGuildUuid (), role , permission , enabled ).whenComplete ((unused , throwable ) ->
195219 {
196220 if (throwable != null )
197221 {
198222 player .sendMessage (Guilds .get ().messageComponent ("guildStorageFailed" ));
199223 return ;
200224 }
201- openPermissions (player , guild );
225+ openRolePermissions (player , guild , role );
202226 });
203227 }
204228
0 commit comments