3
0
Mirror von https://github.com/ViaVersion/ViaVersion.git synchronisiert 2024-12-27 08:30:09 +01:00

Merge branch 'master' into 1.10

Dieser Commit ist enthalten in:
Myles 2016-05-21 22:12:10 +01:00
Commit 9052946c45
3 geänderte Dateien mit 39 neuen und 8 gelöschten Zeilen

Datei anzeigen

@ -47,11 +47,14 @@ public class ViaVersionPlugin extends JavaPlugin implements ViaVersionAPI, ViaVe
private ViaCommandHandler commandHandler; private ViaCommandHandler commandHandler;
private boolean debug = false; private boolean debug = false;
private boolean compatSpigotBuild = false; private boolean compatSpigotBuild = false;
private boolean spigot = true;
@Override @Override
public void onLoad() { public void onLoad() {
ViaVersion.setInstance(this); ViaVersion.setInstance(this);
// Config magic
generateConfig(); generateConfig();
// Handle reloads
if (System.getProperty("ViaVersion") != null) { if (System.getProperty("ViaVersion") != null) {
if (Bukkit.getPluginManager().getPlugin("ProtocolLib") != null) { if (Bukkit.getPluginManager().getPlugin("ProtocolLib") != null) {
getLogger().severe("ViaVersion is already loaded, we're going to kick all the players... because otherwise we'll crash because of ProtocolLib."); getLogger().severe("ViaVersion is already loaded, we're going to kick all the players... because otherwise we'll crash because of ProtocolLib.");
@ -64,6 +67,12 @@ public class ViaVersionPlugin extends JavaPlugin implements ViaVersionAPI, ViaVe
} }
} }
// Spigot detector
try {
Class.forName("org.spigotmc.SpigotConfig");
} catch (ClassNotFoundException e) {
spigot = false;
}
// Check if it's a spigot build with a protocol mod // Check if it's a spigot build with a protocol mod
try { try {
compatSpigotBuild = ReflectionUtil.nms("PacketEncoder").getDeclaredField("version") != null; compatSpigotBuild = ReflectionUtil.nms("PacketEncoder").getDeclaredField("version") != null;
@ -105,6 +114,11 @@ public class ViaVersionPlugin extends JavaPlugin implements ViaVersionAPI, ViaVe
// Register Protocol Listeners // Register Protocol Listeners
ProtocolRegistry.registerListeners(); ProtocolRegistry.registerListeners();
// Warn them if they have anti-xray on and they aren't using spigot
if(isAntiXRay() && !spigot){
getLogger().info("You have anti-xray on in your config, since you're not using spigot it won't fix xray!");
}
} }
@Override @Override
@ -366,6 +380,11 @@ public class ViaVersionPlugin extends JavaPlugin implements ViaVersionAPI, ViaVe
return ProtocolRegistry.getSupportedVersions(); return ProtocolRegistry.getSupportedVersions();
} }
@Override
public boolean isSpigot() {
return this.spigot;
}
public boolean isCheckForUpdates() { public boolean isCheckForUpdates() {
return getConfig().getBoolean("checkforupdates", true); return getConfig().getBoolean("checkforupdates", true);
} }

Datei anzeigen

@ -117,4 +117,12 @@ public interface ViaVersionAPI {
* @return a list of protocol versions * @return a list of protocol versions
*/ */
SortedSet<Integer> getSupportedVersions(); SortedSet<Integer> getSupportedVersions();
/**
* Gets if the server uses spigot
*
* Note: Will only work after ViaVersion load
* @return True if spigot
*/
boolean isSpigot();
} }

Datei anzeigen

@ -51,17 +51,21 @@ public class ClientChunks extends StoredObject {
int[] zcoords = mapChunkBulkRef.getFieldValue("b", packet, int[].class); int[] zcoords = mapChunkBulkRef.getFieldValue("b", packet, int[].class);
Object[] chunkMaps = mapChunkBulkRef.getFieldValue("c", packet, Object[].class); Object[] chunkMaps = mapChunkBulkRef.getFieldValue("c", packet, Object[].class);
if (ViaVersion.getConfig().isAntiXRay()) { //Spigot anti-xray patch if (ViaVersion.getConfig().isAntiXRay() && ViaVersion.getInstance().isSpigot()) { //Spigot anti-xray patch
Object world = mapChunkBulkRef.getFieldValue("world", packet, Object.class); try {
Object world = mapChunkBulkRef.getFieldValue("world", packet, Object.class);
for (int i = 0; i < xcoords.length; ++i) { for (int i = 0; i < xcoords.length; ++i) {
Object spigotConfig = ReflectionUtil.getPublic(world, "spigotConfig", Object.class); Object spigotConfig = ReflectionUtil.getPublic(world, "spigotConfig", Object.class);
Object antiXrayInstance = ReflectionUtil.getPublic(spigotConfig, "antiXrayInstance", Object.class); Object antiXrayInstance = ReflectionUtil.getPublic(spigotConfig, "antiXrayInstance", Object.class);
Object b = ReflectionUtil.get(chunkMaps[i], "b", Object.class); Object b = ReflectionUtil.get(chunkMaps[i], "b", Object.class);
Object a = ReflectionUtil.get(chunkMaps[i], "a", Object.class); Object a = ReflectionUtil.get(chunkMaps[i], "a", Object.class);
obfuscateRef.invoke(antiXrayInstance, xcoords[i], zcoords[i], b, a, world); obfuscateRef.invoke(antiXrayInstance, xcoords[i], zcoords[i], b, a, world);
}
} catch (Exception e) {
// not spigot, or it failed.
} }
} }
for (int i = 0; i < chunkMaps.length; i++) { for (int i = 0; i < chunkMaps.length; i++) {