ProjectAres/Lobby/src/main/java/tc/oc/lobby/bukkit/Settings.java

70 lines
2.5 KiB
Java

package tc.oc.lobby.bukkit;
import me.anxuiz.settings.*;
import me.anxuiz.settings.bukkit.PlayerSettingCallback;
import me.anxuiz.settings.bukkit.PlayerSettings;
import me.anxuiz.settings.types.EnumType;
import org.bukkit.entity.Player;
import tc.oc.commons.bukkit.hologram.Hologram;
import tc.oc.commons.bukkit.hologram.content.HologramAnimation;
import javax.annotation.Nonnull;
public class Settings {
private final Lobby plugin;
public Settings(Lobby plugin) {
this.plugin = plugin;
}
public void register() {
SettingRegistry registry = PlayerSettings.getRegistry();
SettingCallbackManager callbacks = PlayerSettings.getCallbackManager();
registry.register(HOLOGRAMS);
/* 1.8 - disable
callbacks.addCallback(HOLOGRAMS, new PlayerSettingCallback() {
@Override
public void notifyChange(@Nonnull Player player, @Nonnull Setting setting, @Nonnull Object o, @Nonnull Object o2) {
HologramOption option = (HologramOption) o2;
for (Hologram hologram : plugin.holograms) {
if (option == Settings.HologramOption.ALL || (!(hologram.getContent() instanceof HologramAnimation) && option == Settings.HologramOption.STATIC)) {
hologram.show(player);
} else {
hologram.hide(player);
}
}
}
});
*/
}
public static enum HologramOption {ALL, STATIC, NONE}
public static final Setting HOLOGRAMS = new SettingBuilder()
.name("Holograms").alias("hologram").alias("holo")
.summary("Enables the visibility of holograms")
.type(
new EnumType<HologramOption>("hologram options", HologramOption.class) {
// migration
@Override
public Object parse(String raw) throws TypeParseException {
try {
return super.parse(raw);
} catch (TypeParseException e) {
if (raw.equalsIgnoreCase("true")) {
return HologramOption.STATIC;
} else if (raw.equalsIgnoreCase("false")) {
return HologramOption.NONE;
} else {
throw e;
}
}
}
}
)
.defaultValue(HologramOption.NONE).get();
}