-
-
Notifications
You must be signed in to change notification settings - Fork 352
/
CondIsSheared.java
73 lines (66 loc) · 2.46 KB
/
CondIsSheared.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
70
71
72
73
/**
* This file is part of Skript.
*
* Skript is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation, either version 3 of the License, or
* (at your option) any later version.
*
* Skript is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with Skript. If not, see <http://www.gnu.org/licenses/>.
*
* Copyright Peter Güttinger, SkriptLang team and contributors
*/
package ch.njol.skript.conditions;
import ch.njol.skript.Skript;
import ch.njol.skript.conditions.base.PropertyCondition;
import ch.njol.skript.doc.Description;
import ch.njol.skript.doc.Examples;
import ch.njol.skript.doc.Name;
import ch.njol.skript.doc.RequiredPlugins;
import ch.njol.skript.doc.Since;
import io.papermc.paper.entity.Shearable;
import org.bukkit.entity.Cow;
import org.bukkit.entity.LivingEntity;
import org.bukkit.entity.Sheep;
import org.bukkit.entity.Snowman;
import org.bukkit.event.entity.CreatureSpawnEvent;
@Name("Entity Is Sheared")
@Description("Checks whether entities are sheared. This condition only works on cows, sheep and snowmen for versions below 1.19.4.")
@Examples({
"if targeted entity of player is sheared:",
"\tsend \"This entity has nothing left to shear!\" to player"
})
@Since("2.8.0")
@RequiredPlugins("MC 1.13+ (cows, sheep & snowmen), Paper 1.19.4+ (all shearable entities)")
public class CondIsSheared extends PropertyCondition<LivingEntity> {
private static final boolean INTERFACE_METHOD = Skript.classExists("io.papermc.paper.entity.Shearable");
static {
register(CondIsSheared.class, "(sheared|shorn)", "livingentities");
}
@Override
public boolean check(LivingEntity entity) {
if (entity instanceof Cow) {
return entity.getEntitySpawnReason() == CreatureSpawnEvent.SpawnReason.SHEARED;
} else if (INTERFACE_METHOD) {
if (!(entity instanceof Shearable)) {
return false;
}
return !((Shearable) entity).readyToBeSheared();
} else if (entity instanceof Sheep) {
return ((Sheep) entity).isSheared();
} else if (entity instanceof Snowman) {
return ((Snowman) entity).isDerp();
}
return false;
}
@Override
protected String getPropertyName() {
return "sheared";
}
}