Support taboolib plugin version

This commit is contained in:
坏黑
2019-07-12 01:48:15 +08:00
parent cd3ec3dbfa
commit 3d60301630
5 changed files with 90 additions and 12 deletions

View File

@@ -9,6 +9,7 @@ import org.bukkit.entity.Player;
import java.util.Collection;
import java.util.List;
import java.util.Map;
/**
* @Author 坏黑
@@ -63,4 +64,6 @@ public abstract class InternalPluginBridge {
abstract public boolean placeholderHooked();
abstract public boolean worldguardHooked();
abstract public Map<String, Object> taboolibTLocaleSerialize(Object in);
}

View File

@@ -1,5 +1,6 @@
package io.izzel.taboolib.common.plugin.bridge;
import com.google.common.collect.Maps;
import com.sk89q.worldedit.bukkit.BukkitAdapter;
import com.sk89q.worldguard.WorldGuard;
import com.sk89q.worldguard.bukkit.WorldGuardPlugin;
@@ -8,6 +9,7 @@ import com.sk89q.worldguard.protection.regions.ProtectedRegion;
import io.izzel.taboolib.common.plugin.InternalPluginBridge;
import io.izzel.taboolib.util.Reflection;
import me.clip.placeholderapi.PlaceholderAPI;
import me.skymc.taboolib.sound.SoundPack;
import net.milkbowl.vault.economy.Economy;
import net.milkbowl.vault.permission.Permission;
import org.bukkit.Bukkit;
@@ -20,6 +22,7 @@ import org.bukkit.plugin.RegisteredServiceProvider;
import java.lang.reflect.Method;
import java.util.Collection;
import java.util.List;
import java.util.Map;
import java.util.stream.Collectors;
public class BridgeImpl extends InternalPluginBridge {
@@ -51,7 +54,7 @@ public class BridgeImpl extends InternalPluginBridge {
@Override
public <T> T getRegisteredService(Class<? extends T> clazz) {
RegisteredServiceProvider registeredServiceProvider = Bukkit.getServer().getServicesManager().getRegistration(clazz);
return (T) registeredServiceProvider.getProvider();
return registeredServiceProvider == null ? null : (T) registeredServiceProvider.getProvider();
}
@Override
@@ -153,4 +156,45 @@ public class BridgeImpl extends InternalPluginBridge {
return worldguard;
}
@Override
public Map<String, Object> taboolibTLocaleSerialize(Object in) {
switch (in.getClass().getSimpleName()) {
case "TLocaleText": {
Map<String, Object> map = Maps.newHashMap();
try {
map.put("text", Reflection.getValue(in, true, "text"));
} catch (Throwable t) {
t.printStackTrace();
}
return map;
}
case "TLocaleSound": {
Map<String, Object> map = Maps.newHashMap();
try {
List<SoundPack> sounds = (List<SoundPack>) Reflection.getValue(in, true, "soundPacks");
map.put("sounds", sounds.stream().map(s -> s.getSound() + "-" + s.getA() + "-" + s.getB() + "-" + s.getDelay()).collect(Collectors.toList()));
} catch (Throwable t) {
t.printStackTrace();
}
return map;
}
case "TLocaleBossBar": {
Map<String, Object> map = Maps.newHashMap();
try {
map.put("text", Reflection.getValue(in, true, "text"));
map.put("color", Reflection.getValue(in, true, "color"));
map.put("style", Reflection.getValue(in, true, "style"));
map.put("progress", Reflection.getValue(in, true, "progress"));
map.put("timeout", Reflection.getValue(in, true, "timeout"));
map.put("timeoutInterval", Reflection.getValue(in, true, "timeoutInterval"));
map.put("papi", Reflection.getValue(in, true, "papi"));
} catch (Throwable t) {
t.printStackTrace();
}
return map;
}
default:
return ((com.ilummc.tlib.resources.TLocaleSerialize) in).serialize();
}
}
}