-
-
Notifications
You must be signed in to change notification settings - Fork 103
/
NMSHandler.java
151 lines (119 loc) · 5.19 KB
/
NMSHandler.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
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
package com.denizenscript.denizen.nms;
import com.denizenscript.denizen.nms.abstracts.*;
import com.denizenscript.denizen.nms.interfaces.*;
import com.denizenscript.denizen.nms.util.PlayerProfile;
import com.denizenscript.denizen.nms.util.jnbt.CompoundTag;
import com.denizenscript.denizen.nms.util.jnbt.Tag;
import com.denizenscript.denizencore.utilities.ReflectionHelper;
import net.md_5.bungee.api.chat.HoverEvent;
import org.bukkit.Location;
import org.bukkit.World;
import org.bukkit.block.Block;
import org.bukkit.boss.BossBar;
import org.bukkit.entity.Player;
import org.bukkit.inventory.Inventory;
import org.bukkit.inventory.InventoryView;
import org.bukkit.persistence.PersistentDataContainer;
import org.bukkit.plugin.java.JavaPlugin;
import java.util.ArrayList;
import java.util.List;
import java.util.Map;
import java.util.UUID;
public abstract class NMSHandler {
public static NMSHandler instance;
private static NMSVersion version;
private static JavaPlugin javaPlugin;
public static boolean debugPackets = false;
public static String debugPacketFilter = "";
public static boolean initialize(JavaPlugin plugin) {
javaPlugin = plugin;
Class<?> serverClass = javaPlugin.getServer().getClass();
ReflectionHelper.giveReflectiveAccess(serverClass, ReflectionHelper.class);
String packageName = serverClass.getPackage().getName();
int indexOfSubRevision = packageName.indexOf('R');
if (indexOfSubRevision > 0) {
// "v1_14_R1" should become "v1_14"
packageName = packageName.substring(0, indexOfSubRevision - 1);
}
try {
// Check if we support this MC version
version = NMSVersion.valueOf(packageName.substring(packageName.lastIndexOf('.') + 1));
}
catch (Exception e) {
version = NMSVersion.NOT_SUPPORTED;
instance = null;
return false;
}
try {
// Get the class of our handler for this version
final Class<?> clazz = Class.forName("com.denizenscript.denizen.nms." + version.name() + ".Handler");
if (NMSHandler.class.isAssignableFrom(clazz)) {
// Found and loaded - good to go!
instance = (NMSHandler) clazz.newInstance();
return true;
}
}
catch (Exception e) {
e.printStackTrace();
}
// Someone made an oopsie and didn't implement this version properly :(
version = NMSVersion.NOT_SUPPORTED;
instance = null;
return false;
}
public static NMSHandler getInstance() {
return instance;
}
public static NMSVersion getVersion() {
return version;
}
public static JavaPlugin getJavaPlugin() {
return javaPlugin;
}
public static AdvancementHelper advancementHelper;
public static AnimationHelper animationHelper;
public static BlockHelper blockHelper;
public static ChunkHelper chunkHelper;
public static CustomEntityHelper customEntityHelper;
public static EntityHelper entityHelper;
public static FishingHelper fishingHelper;
public static ItemHelper itemHelper;
public static PacketHelper packetHelper;
public static ParticleHelper particleHelper;
public static PlayerHelper playerHelper;
public static WorldHelper worldHelper;
public static EnchantmentHelper enchantmentHelper;
public boolean isCorrectMappingsCode() {
return true;
}
public abstract void disableAsyncCatcher();
public abstract void undisableAsyncCatcher();
public abstract Sidebar createSidebar(Player player);
public abstract BlockLight createBlockLight(Location location, int lightLevel, long ticks);
public abstract PlayerProfile fillPlayerProfile(PlayerProfile playerProfile);
public abstract PlayerProfile getPlayerProfile(Player player);
public abstract ProfileEditor getProfileEditor();
public List<BiomeNMS> getBiomes(World world) {
throw new UnsupportedOperationException();
}
public abstract BiomeNMS getBiomeNMS(World world, String name);
public BiomeNMS getBiomeAt(Block block) {
return NMSHandler.instance.getBiomeNMS(block.getWorld(), block.getBiome().name());
}
public abstract double[] getRecentTps();
public abstract CompoundTag createCompoundTag(Map<String, Tag> value);
public abstract int getPort();
public abstract String getTitle(Inventory inventory);
public void setInventoryTitle(InventoryView view, String title) {
throw new UnsupportedOperationException();
}
public abstract String stringForHover(HoverEvent hover);
public abstract ArrayList<String> containerListFlags(PersistentDataContainer container, String prefix);
public abstract boolean containerHas(PersistentDataContainer container, String key);
public abstract String containerGetString(PersistentDataContainer container, String key);
public UUID getBossbarUUID(BossBar bar) {
return null;
}
public void setBossbarUUID(BossBar bar, UUID id) {
}
}