first commit
Build AsminVoicechat / prepare-release (push) Successful in 14s
Build AsminVoicechat / build-and-test (17) (push) Canceled after 0s
Build AsminVoicechat / build-and-test (18) (push) Canceled after 0s
Build AsminVoicechat / build-and-test (19) (push) Canceled after 0s
Build AsminVoicechat / build-and-test (20) (push) Canceled after 0s
Build AsminVoicechat / build-and-test (21) (push) Canceled after 0s
Build AsminVoicechat / build-and-test (22) (push) Canceled after 0s
Build AsminVoicechat / build-and-test (23) (push) Canceled after 0s
Build AsminVoicechat / build-and-test (24) (push) Canceled after 0s
Build AsminVoicechat / build-and-test (25) (push) Canceled after 0s
Build AsminVoicechat / build-and-test (26) (push) Canceled after 0s
Build AsminVoicechat / build-and-test (27-ea) (push) Canceled after 0s
Build AsminVoicechat / build-and-test (16) (push) Canceled after 38s

This commit is contained in:
asminme committed 2026-10-24 15:18:03 +02:00
commit bbccd4a815
454 files changed
+45050

No files matched your search

@@ -0,0 +1,173 @@
/*
* Decompiled with CFR 0.152.
*
* Could not load the following classes:
* javax.annotation.Nullable
* org.bukkit.Bukkit
*/
package de.maxhenkel.voicechat.compatibility;
import de.maxhenkel.voicechat.Version;
import de.maxhenkel.voicechat.Voicechat;
import de.maxhenkel.voicechat.compatibility.Compatibility;
import de.maxhenkel.voicechat.compatibility.Compatibility1_12;
import de.maxhenkel.voicechat.compatibility.Compatibility1_16;
import de.maxhenkel.voicechat.compatibility.Compatibility1_17;
import de.maxhenkel.voicechat.compatibility.Compatibility1_18;
import de.maxhenkel.voicechat.compatibility.Compatibility1_19;
import de.maxhenkel.voicechat.compatibility.Compatibility1_19_1;
import de.maxhenkel.voicechat.compatibility.Compatibility1_20;
import de.maxhenkel.voicechat.compatibility.Compatibility1_20_2;
import de.maxhenkel.voicechat.compatibility.Compatibility1_20_3;
import de.maxhenkel.voicechat.compatibility.Compatibility1_21_5;
import de.maxhenkel.voicechat.compatibility.Compatibility1_8;
import de.maxhenkel.voicechat.compatibility.CompatibilityReflectionException;
import de.maxhenkel.voicechat.compatibility.FallbackCompatibility;
import de.maxhenkel.voicechat.compatibility.SpigotCompatibility;
import java.util.HashMap;
import java.util.Map;
import javax.annotation.Nullable;
import org.bukkit.Bukkit;
public class BukkitCompatibilityManager {
private static final Map<Version, Compatibility> COMPATIBILITIES = new HashMap<Version, Compatibility>();
@Nullable
public static Compatibility loadCompatibility() {
Version forcedVersion = BukkitCompatibilityManager.getForcedVersion();
Version version = forcedVersion != null ? forcedVersion : Version.getVersion();
if (version == null) {
Voicechat.LOGGER.info("Failed to parse version {}, trying to fall back to Spigot API compatibility mode", Bukkit.getBukkitVersion());
return BukkitCompatibilityManager.tryLoadSpigot();
}
Voicechat.LOGGER.info("Initializing compatibility for version {}", version);
if (version.getMajor() == 1 && version.getMinor() <= 7) {
Voicechat.LOGGER.fatal("You are running a server that's too old to be able to join with any voice chat client", new Object[0]);
return null;
}
Compatibility compatibility = COMPATIBILITIES.get(version);
if (compatibility != null) {
try {
compatibility.init();
}
catch (Throwable t) {
compatibility = null;
Voicechat.LOGGER.warn("Failed to load compatibility for version {}", version, t);
}
}
if (compatibility == null) {
Voicechat.LOGGER.warn("Incompatible version {}, trying to fall back to Spigot API compatibility mode", version);
compatibility = BukkitCompatibilityManager.tryLoadSpigot();
}
if (compatibility == null) {
compatibility = FallbackCompatibility.INSTANCE;
try {
compatibility.init();
Voicechat.LOGGER.warn("Falling back to Bukkit compatibility mode, expect issues and lack of features", new Object[0]);
Voicechat.LOGGER.warn("Chat messages won't be translatable", new Object[0]);
}
catch (CompatibilityReflectionException e) {
compatibility = null;
Voicechat.LOGGER.warn("Failed to load Bukkit compatibility mode: {}", e.getMessage());
}
catch (Throwable t) {
compatibility = null;
Voicechat.LOGGER.warn("Failed to load Bukkit compatibility mode", t);
}
}
if (compatibility == null) {
Voicechat.LOGGER.fatal("Could not load any compatibility for {}", version);
}
return compatibility;
}
@Nullable
private static Compatibility tryLoadSpigot() {
if (!SpigotCompatibility.isSpigotCompatible()) {
Voicechat.LOGGER.warn("Spigot API not found", new Object[0]);
return null;
}
SpigotCompatibility compatibility = SpigotCompatibility.INSTANCE;
try {
compatibility.init();
Voicechat.LOGGER.warn("Falling back to Spigot API compatibility mode, expect issues and lack of features", new Object[0]);
}
catch (CompatibilityReflectionException e) {
compatibility = null;
Voicechat.LOGGER.warn("Failed to load Spigot API compatibility mode: {}", e.getMessage());
}
catch (Throwable t) {
compatibility = null;
Voicechat.LOGGER.warn("Failed to load Spigot API compatibility mode", t);
}
return compatibility;
}
@Nullable
public static Version getForcedVersion() {
String property = System.getProperty("voicechat.compatibility");
if (property == null) {
return null;
}
Version forcedVersion = Version.parse(property);
if (forcedVersion == null) {
Voicechat.LOGGER.warn("Failed to parse forced compatibility version: {}", property);
return null;
}
Voicechat.LOGGER.info("Forcing compatibility for {}", forcedVersion);
Voicechat.LOGGER.warn("Forcing version compatibility could lead to issues - use with caution!", new Object[0]);
return forcedVersion;
}
static {
COMPATIBILITIES.put(Compatibility1_21_5.VERSION_PAPER_26_3, Compatibility1_21_5.INSTANCE);
COMPATIBILITIES.put(Compatibility1_21_5.VERSION_26_3, Compatibility1_21_5.INSTANCE);
COMPATIBILITIES.put(Compatibility1_21_5.VERSION_PAPER_26_2, Compatibility1_21_5.INSTANCE);
COMPATIBILITIES.put(Compatibility1_21_5.VERSION_26_2, Compatibility1_21_5.INSTANCE);
COMPATIBILITIES.put(Compatibility1_21_5.VERSION_PAPER_26_1_2, Compatibility1_21_5.INSTANCE);
COMPATIBILITIES.put(Compatibility1_21_5.VERSION_26_1_2, Compatibility1_21_5.INSTANCE);
COMPATIBILITIES.put(Compatibility1_21_5.VERSION_PAPER_26_1_1, Compatibility1_21_5.INSTANCE);
COMPATIBILITIES.put(Compatibility1_21_5.VERSION_26_1_1, Compatibility1_21_5.INSTANCE);
COMPATIBILITIES.put(Compatibility1_21_5.VERSION_26_1, Compatibility1_21_5.INSTANCE);
COMPATIBILITIES.put(Compatibility1_21_5.VERSION_1_21_11, Compatibility1_21_5.INSTANCE);
COMPATIBILITIES.put(Compatibility1_21_5.VERSION_1_21_10, Compatibility1_21_5.INSTANCE);
COMPATIBILITIES.put(Compatibility1_21_5.VERSION_1_21_9, Compatibility1_21_5.INSTANCE);
COMPATIBILITIES.put(Compatibility1_21_5.VERSION_1_21_8, Compatibility1_21_5.INSTANCE);
COMPATIBILITIES.put(Compatibility1_21_5.VERSION_1_21_7, Compatibility1_21_5.INSTANCE);
COMPATIBILITIES.put(Compatibility1_21_5.VERSION_1_21_6, Compatibility1_21_5.INSTANCE);
COMPATIBILITIES.put(Compatibility1_21_5.VERSION_1_21_5, Compatibility1_21_5.INSTANCE);
COMPATIBILITIES.put(Compatibility1_20_3.VERSION_1_21_4, Compatibility1_20_3.INSTANCE);
COMPATIBILITIES.put(Compatibility1_20_3.VERSION_1_21_3, Compatibility1_20_3.INSTANCE);
COMPATIBILITIES.put(Compatibility1_20_3.VERSION_1_21_2, Compatibility1_20_3.INSTANCE);
COMPATIBILITIES.put(Compatibility1_20_3.VERSION_1_21_1, Compatibility1_20_3.INSTANCE);
COMPATIBILITIES.put(Compatibility1_20_3.VERSION_1_21, Compatibility1_20_3.INSTANCE);
COMPATIBILITIES.put(Compatibility1_20_3.VERSION_1_20_6, Compatibility1_20_3.INSTANCE);
COMPATIBILITIES.put(Compatibility1_20_3.VERSION_1_20_5, Compatibility1_20_3.INSTANCE);
COMPATIBILITIES.put(Compatibility1_20_3.VERSION_1_20_4, Compatibility1_20_3.INSTANCE);
COMPATIBILITIES.put(Compatibility1_20_3.VERSION_1_20_3, Compatibility1_20_3.INSTANCE);
COMPATIBILITIES.put(Compatibility1_20_2.VERSION_1_20_2, Compatibility1_20_2.INSTANCE);
COMPATIBILITIES.put(Compatibility1_20.VERSION_1_20_1, Compatibility1_20.INSTANCE);
COMPATIBILITIES.put(Compatibility1_20.VERSION_1_20, Compatibility1_20.INSTANCE);
COMPATIBILITIES.put(Compatibility1_19_1.VERSION_1_19_4, Compatibility1_19_1.INSTANCE);
COMPATIBILITIES.put(Compatibility1_19_1.VERSION_1_19_3, Compatibility1_19_1.INSTANCE);
COMPATIBILITIES.put(Compatibility1_19_1.VERSION_1_19_2, Compatibility1_19_1.INSTANCE);
COMPATIBILITIES.put(Compatibility1_19_1.VERSION_1_19_1, Compatibility1_19_1.INSTANCE);
COMPATIBILITIES.put(Compatibility1_19.VERSION_1_19, Compatibility1_19.INSTANCE);
COMPATIBILITIES.put(Compatibility1_18.VERSION_1_18_2, Compatibility1_18.INSTANCE);
COMPATIBILITIES.put(Compatibility1_18.VERSION_1_18_1, Compatibility1_18.INSTANCE);
COMPATIBILITIES.put(Compatibility1_18.VERSION_1_18, Compatibility1_18.INSTANCE);
COMPATIBILITIES.put(Compatibility1_17.VERSION_1_17_1, Compatibility1_17.INSTANCE);
COMPATIBILITIES.put(Compatibility1_17.VERSION_1_17, Compatibility1_17.INSTANCE);
COMPATIBILITIES.put(Compatibility1_16.VERSION_1_16_5, Compatibility1_16.INSTANCE);
COMPATIBILITIES.put(Compatibility1_16.VERSION_1_16_4, Compatibility1_16.INSTANCE);
COMPATIBILITIES.put(Compatibility1_16.VERSION_1_16_3, Compatibility1_16.INSTANCE);
COMPATIBILITIES.put(Compatibility1_16.VERSION_1_16_2, Compatibility1_16.INSTANCE);
COMPATIBILITIES.put(Compatibility1_16.VERSION_1_16_1, Compatibility1_16.INSTANCE);
COMPATIBILITIES.put(Compatibility1_16.VERSION_1_16, Compatibility1_16.INSTANCE);
COMPATIBILITIES.put(Compatibility1_12.VERSION_1_12_2, Compatibility1_12.INSTANCE);
COMPATIBILITIES.put(Compatibility1_12.VERSION_1_12_1, Compatibility1_12.INSTANCE);
COMPATIBILITIES.put(Compatibility1_12.VERSION_1_12, Compatibility1_12.INSTANCE);
COMPATIBILITIES.put(Compatibility1_8.VERSION_1_8_8, Compatibility1_8.INSTANCE);
}
}