-
-
Notifications
You must be signed in to change notification settings - Fork 115
Expand file tree
/
Copy pathMultiVersionHelper1_19.java
More file actions
80 lines (72 loc) · 3.31 KB
/
MultiVersionHelper1_19.java
File metadata and controls
80 lines (72 loc) · 3.31 KB
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
74
75
76
77
78
79
80
package com.denizenscript.denizen.utilities;
import com.denizenscript.denizen.nms.NMSHandler;
import com.denizenscript.denizen.nms.NMSVersion;
import com.denizenscript.denizen.objects.PlayerTag;
import com.denizenscript.denizencore.objects.Mechanism;
import com.denizenscript.denizencore.objects.core.DurationTag;
import com.denizenscript.denizencore.objects.core.ElementTag;
import com.denizenscript.denizencore.objects.core.ListTag;
import com.denizenscript.denizencore.objects.core.MapTag;
import org.bukkit.World;
import org.bukkit.entity.*;
public class MultiVersionHelper1_19 {
public static boolean colorIsApplicable(EntityType type) {
return type == EntityType.FROG || Boat.class.isAssignableFrom(type.getEntityClass());
}
// TODO Frog variants technically have registries on all supported versions
public static String getColor(Entity entity, boolean includeDeprecated) {
if (entity instanceof Frog frog) {
if (NMSHandler.getVersion().isAtLeast(NMSVersion.v1_21)) {
return Utilities.namespacedKeyToString(frog.getVariant().getKey());
}
return frog.getVariant().toString();
}
else if (entity instanceof Boat boat) {
if (NMSHandler.getVersion().isAtLeast(NMSVersion.v1_21)) {
if (!includeDeprecated) {
return null;
}
BukkitImplDeprecations.gettingBoatType.warn();
}
return boat.getBoatType().name();
}
return null;
}
public static ListTag getAllowedColors(EntityType type) {
if (type == EntityType.FROG) {
return Utilities.listTypes(Frog.Variant.class);
}
else if (Boat.class.isAssignableFrom(type.getEntityClass())) {
if (NMSHandler.getVersion().isAtLeast(NMSVersion.v1_21)) {
BukkitImplDeprecations.gettingBoatType.warn();
}
return Utilities.listTypes(Boat.Type.class);
}
return null;
}
public static void setColor(Entity entity, Mechanism mech) {
if (entity instanceof Frog frog && Utilities.requireEnumlike(mech, Frog.Variant.class)) {
frog.setVariant(Utilities.elementToEnumlike(mech.getValue(), Frog.Variant.class));
}
else if (entity instanceof Boat boat && mech.requireEnum(Boat.Type.class)) {
if (NMSHandler.getVersion().isAtLeast(NMSVersion.v1_21)) {
BukkitImplDeprecations.settingBoatType.warn(mech.context);
return;
}
boat.setBoatType(mech.getValue().asEnum(Boat.Type.class));
}
}
public static MapTag interactionToMap(Interaction.PreviousInteraction interaction, World world) {
if (interaction == null) {
return null;
}
MapTag result = new MapTag();
result.putObject("player", new PlayerTag(interaction.getPlayer()));
result.putObject("duration", new DurationTag((world.getGameTime() - interaction.getTimestamp()) / 20d));
result.putObject("raw_game_time", new ElementTag(interaction.getTimestamp()));
return result;
}
public static ElementTag getWardenAngerLevel(Warden warden) {
return new ElementTag(warden.getAngerLevel());
}
}