/
WorldGuardRegionRequirement.java
69 lines (55 loc) · 2.15 KB
/
WorldGuardRegionRequirement.java
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
package net.aufdemrand.denizen.scripts.requirements.core;
import net.aufdemrand.denizen.exceptions.RequirementCheckException;
import net.aufdemrand.denizen.scripts.requirements.AbstractRequirement;
import net.aufdemrand.denizen.scripts.requirements.RequirementsContext;
import net.aufdemrand.denizen.objects.aH;
import net.aufdemrand.denizen.objects.aH.ArgumentType;
import net.aufdemrand.denizen.utilities.debugging.dB;
import net.aufdemrand.denizen.utilities.depends.WorldGuardUtilities;
import java.util.List;
/**
* Checks if Player is inside specified WorldGuard region.
*
* @author Mason Adkins
*/
public class WorldGuardRegionRequirement extends AbstractRequirement {
/* INREGION [NAME:regionname]
/* Arguments: [] - Required, () - Optional
* [NAME:regionname] region to check if player is in.
*
* Example usages:
* INREGION NAME:ilovejeebiss
*/
@Override
public boolean check(RequirementsContext context, List<String> args) throws RequirementCheckException {
/*
* Instalize variables
*/
String region = null;
boolean outcome = false;
/*
* If there are no arguments, throw an exception.
*/
if (args == null || args.size() < 1)
throw new RequirementCheckException("Must provide a NAME:regionname!");
/*
* Parse through the given arguments
*/
for (String arg : args) {
if (aH.matchesValueArg("NAME, N", arg, ArgumentType.String)) {
region = aH.getStringFrom(arg);
dB.echoDebug("...region set as: " + region);
} else throw new RequirementCheckException("Invalid argument specified!");
}
/*
* Check if player is in the given region.
*/
outcome = WorldGuardUtilities.inRegion(context.getPlayer().getPlayerEntity().getLocation(), region);
/*
* Display proper debug output
*/
if (outcome) dB.echoDebug("...player in region!");
else dB.echoDebug("...player is not in region!");
return outcome;
}
}