@@ -81,6 +81,8 @@ public void addMember(CommandContext args, Actor sender) throws CommandException
8181 DomainInputResolver resolver = new DomainInputResolver (
8282 WorldGuard .getInstance ().getProfileService (), args .getParsedPaddedSlice (1 , 0 ));
8383 resolver .setLocatorPolicy (args .hasFlag ('n' ) ? UserLocatorPolicy .NAME_ONLY : UserLocatorPolicy .UUID_ONLY );
84+ resolver .setActor (sender );
85+ resolver .setRegion (region );
8486
8587
8688 final String description = String .format ("Adding members to the region '%s' on '%s'" , region .getId (), world .getName ());
@@ -115,7 +117,8 @@ public void addOwner(CommandContext args, Actor sender) throws CommandException
115117 DomainInputResolver resolver = new DomainInputResolver (
116118 WorldGuard .getInstance ().getProfileService (), args .getParsedPaddedSlice (1 , 0 ));
117119 resolver .setLocatorPolicy (args .hasFlag ('n' ) ? UserLocatorPolicy .NAME_ONLY : UserLocatorPolicy .UUID_ONLY );
118-
120+ resolver .setActor (sender );
121+ resolver .setRegion (region );
119122
120123 final String description = String .format ("Adding owners to the region '%s' on '%s'" , region .getId (), world .getName ());
121124 AsyncCommandBuilder .wrap (checkedAddOwners (sender , manager , region , world , resolver ), sender )
@@ -188,6 +191,8 @@ public void removeMember(CommandContext args, Actor sender) throws CommandExcept
188191 DomainInputResolver resolver = new DomainInputResolver (
189192 WorldGuard .getInstance ().getProfileService (), args .getParsedPaddedSlice (1 , 0 ));
190193 resolver .setLocatorPolicy (args .hasFlag ('n' ) ? UserLocatorPolicy .NAME_ONLY : UserLocatorPolicy .UUID_AND_NAME );
194+ resolver .setActor (sender );
195+ resolver .setRegion (region );
191196
192197 callable = resolver ;
193198 }
@@ -231,6 +236,8 @@ public void removeOwner(CommandContext args, Actor sender) throws CommandExcepti
231236 DomainInputResolver resolver = new DomainInputResolver (
232237 WorldGuard .getInstance ().getProfileService (), args .getParsedPaddedSlice (1 , 0 ));
233238 resolver .setLocatorPolicy (args .hasFlag ('n' ) ? UserLocatorPolicy .NAME_ONLY : UserLocatorPolicy .UUID_AND_NAME );
239+ resolver .setActor (sender );
240+ resolver .setRegion (region );
234241
235242 callable = resolver ;
236243 }
@@ -244,98 +251,7 @@ public void removeOwner(CommandContext args, Actor sender) throws CommandExcepti
244251 .buildAndExec (worldGuard .getExecutorService ());
245252 }
246253
247-
248- /**
249- * Modify a custom domain for owner.
250- *
251- * @param args the arguments
252- * @param sender the sender
253- * @throws CommandException any error
254- */
255- @ Command (aliases = {"ownerdomain" },
256- usage = "<id> <domain> [-w world] [value]" ,
257- flags = "w:" ,
258- desc = "Set flags" ,
259- min = 2 )
260- public void ownerDomain (CommandContext args , Actor sender ) throws CommandException {
261- domain (args , sender , true );
262- }
263-
264- /**
265- * Modify a custom domain for member.
266- *
267- * @param args the arguments
268- * @param sender the sender
269- * @throws CommandException any error
270- */
271- @ Command (aliases = {"memberdomain" },
272- usage = "<id> <domain> [-w world] [value]" ,
273- flags = "w:" ,
274- desc = "Set flags" ,
275- min = 2 )
276- public void onMemberDomain (CommandContext args , Actor sender ) throws CommandException {
277- domain (args , sender , false );
278- }
279-
280- private void domain (CommandContext args , Actor sender , boolean isOwner ) throws CommandException {
281- warnAboutSaveFailures (sender );
282-
283- World world = checkWorld (args , sender , 'w' ); // Get the world
284- String domainName = args .getString (1 );
285- String value = args .argsLength () >= 3 ? args .getJoinedStrings (2 ) : null ;
286- DomainRegistry domainRegistry = WorldGuard .getInstance ().getDomainRegistry ();
287- RegionPermissionModel permModel = getPermissionModel (sender );
288-
289- // Lookup the existing region
290- RegionManager manager = checkRegionManager (world );
291- ProtectedRegion existing = checkExistingRegion (manager , args .getString (0 ), true );
292-
293- // Check permissions
294- if (!permModel .mayModifyCustomDomain (existing , isOwner , domainName )) {
295- throw new CommandPermissionsException ();
296- }
297- String regionId = existing .getId ();
298-
299- DomainFactory <?> domainFactory = domainRegistry .get (domainName );
300-
301- // We didn't find the domain, so let's print a list of domains that the user
302- // can use, and do nothing afterwards
303- if (domainFactory == null ) {
304- AsyncCommandBuilder .wrap (new DomainListBuilder (domainRegistry , permModel , existing , world ,
305- regionId , sender , domainName , isOwner ), sender )
306- .registerWithSupervisor (WorldGuard .getInstance ().getSupervisor (), "Domain list for invalid domain command." )
307- .onSuccess ((Component ) null , sender ::print )
308- .onFailure ((Component ) null , WorldGuard .getInstance ().getExceptionConverter ())
309- .buildAndExec (WorldGuard .getInstance ().getExecutorService ());
310- return ;
311- }
312-
313- DefaultDomain usedDomain = isOwner ? existing .getOwners () : existing .getMembers ();
314-
315- // Set the flag value if a value was set
316- if (value != null ) {
317- // Set the flag if [value] was given even if [-g group] was given as well
318- try {
319- CustomDomain customDomain = domainFactory .create (domainName );
320- setDomain (existing , usedDomain , customDomain , sender , value );
321- } catch (InvalidDomainFormat e ) {
322- throw new CommandException (e .getMessage ());
323- }
324- // No value? Clear the flag, if -g isn't specified
325- } else {
326- usedDomain .removeCustomDomain (domainName );
327- }
328-
329- RegionPrintoutBuilder printout = new RegionPrintoutBuilder (world .getName (), existing , null , sender );
330- printout .append (SubtleFormat .wrap ("(Current domains:" ));
331- printout .newline ();
332- printout .appendDomain ();
333- printout .append (SubtleFormat .wrap (")" ));
334- printout .send (sender );
335- checkSpawnOverlap (sender , world , existing );
336-
337- }
338-
254+ // TODO: Implement a list for available domains. Maybe /rg domains? or /rg addmembers/addowners/delmembers/delowners?
339255 private static class DomainListBuilder implements Callable <Component > {
340256 private final DomainRegistry domainRegistry ;
341257 private final RegionPermissionModel permModel ;
@@ -375,11 +291,11 @@ public Component call() {
375291
376292 final HoverEvent clickToSet = HoverEvent .of (HoverEvent .Action .SHOW_TEXT , TextComponent .of ("Click to set" ));
377293 for (int i = 0 ; i < domainList .size (); i ++) {
378- String flag = domainList .get (i );
294+ String domainName = domainList .get (i );
379295
380- builder .append (TextComponent .of (flag , i % 2 == 0 ? TextColor .GRAY : TextColor .WHITE )
296+ builder .append (TextComponent .of (domainName , i % 2 == 0 ? TextColor .GRAY : TextColor .WHITE )
381297 .hoverEvent (clickToSet ).clickEvent (ClickEvent .of (ClickEvent .Action .SUGGEST_COMMAND ,
382- "/rg " + (isOwner ? "ownerdomains " : "memberdomains " ) +" -w \" " + world .getName () + "\" " + regionId + " " + flag + " " )));
298+ "/rg " + (isOwner ? "addowner " : "addmember " ) +" -w \" " + world .getName () + "\" " + regionId + " " + domainName + ": " )));
383299 if (i < domainList .size () + 1 ) {
384300 builder .append (TextComponent .of (", " ));
385301 }
0 commit comments