/
HoldingRequirement.java
45 lines (33 loc) · 1.62 KB
/
HoldingRequirement.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
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.dItem;
import net.aufdemrand.denizen.objects.aH;
import net.aufdemrand.denizen.utilities.debugging.dB;
import java.util.List;
public class HoldingRequirement extends AbstractRequirement{
@Override
public boolean check(RequirementsContext context, List<String> args) throws RequirementCheckException {
boolean outcome = false;
boolean exact = false;
int quantity = 1;
dItem itemToCheck = null;
for (String thisArg : args) {
if (aH.matchesQuantity(thisArg))
quantity = aH.getIntegerFrom(thisArg);
else if(aH.matchesArg("EXACT, EXACTLY, EQUALS", thisArg)) {
exact = true;
}
else itemToCheck = aH.getItemFrom(thisArg);
}
if (itemToCheck != null)
itemToCheck.getItemStack().setAmount(quantity);
if (exact)
outcome = context.getPlayer().getPlayerEntity().getItemInHand().equals(itemToCheck.getItemStack());
else
outcome = context.getPlayer().getPlayerEntity().getItemInHand().isSimilar(itemToCheck.getItemStack());
dB.echoDebug(context.getScriptContainer(), "Outcome: " + ((outcome) ? (exact) ? "Player is holding exact item" : "Player is holding item" : ""));
return outcome;
}
}