mirror of
https://github.com/CarmJos/MineConfiguration.git
synced 2024-09-19 20:05:49 +00:00
完成基础部分
This commit is contained in:
parent
d0a36a59d1
commit
7b140b5664
58
bukkit/common/pom.xml
Normal file
58
bukkit/common/pom.xml
Normal file
@ -0,0 +1,58 @@
|
|||||||
|
<?xml version="1.0" encoding="UTF-8"?>
|
||||||
|
<project xmlns="http://maven.apache.org/POM/4.0.0"
|
||||||
|
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
|
||||||
|
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
|
||||||
|
<parent>
|
||||||
|
<artifactId>MineConfiguration</artifactId>
|
||||||
|
<groupId>cc.carm.lib</groupId>
|
||||||
|
<version>1.0.0</version>
|
||||||
|
<relativePath>../../pom.xml</relativePath>
|
||||||
|
</parent>
|
||||||
|
<modelVersion>4.0.0</modelVersion>
|
||||||
|
<properties>
|
||||||
|
<maven.compiler.source>${java.version}</maven.compiler.source>
|
||||||
|
<maven.compiler.target>${java.version}</maven.compiler.target>
|
||||||
|
</properties>
|
||||||
|
<artifactId>mineconfiguration-bukkit-common</artifactId>
|
||||||
|
<packaging>jar</packaging>
|
||||||
|
|
||||||
|
<dependencies>
|
||||||
|
|
||||||
|
<dependency>
|
||||||
|
<groupId>${project.parent.groupId}</groupId>
|
||||||
|
<artifactId>easyconfiguration-core</artifactId>
|
||||||
|
<version>${easyconfiguration.version}</version>
|
||||||
|
<scope>compile</scope>
|
||||||
|
</dependency>
|
||||||
|
|
||||||
|
<dependency>
|
||||||
|
<groupId>org.spigotmc</groupId>
|
||||||
|
<artifactId>spigot-api</artifactId>
|
||||||
|
<version>1.8.8-R0.1-SNAPSHOT</version>
|
||||||
|
<scope>provided</scope>
|
||||||
|
</dependency>
|
||||||
|
|
||||||
|
</dependencies>
|
||||||
|
|
||||||
|
<build>
|
||||||
|
<plugins>
|
||||||
|
<plugin>
|
||||||
|
<groupId>org.apache.maven.plugins</groupId>
|
||||||
|
<artifactId>maven-compiler-plugin</artifactId>
|
||||||
|
</plugin>
|
||||||
|
<plugin>
|
||||||
|
<groupId>org.apache.maven.plugins</groupId>
|
||||||
|
<artifactId>maven-jar-plugin</artifactId>
|
||||||
|
</plugin>
|
||||||
|
<plugin>
|
||||||
|
<groupId>org.apache.maven.plugins</groupId>
|
||||||
|
<artifactId>maven-source-plugin</artifactId>
|
||||||
|
</plugin>
|
||||||
|
<plugin>
|
||||||
|
<groupId>org.apache.maven.plugins</groupId>
|
||||||
|
<artifactId>maven-javadoc-plugin</artifactId>
|
||||||
|
</plugin>
|
||||||
|
</plugins>
|
||||||
|
</build>
|
||||||
|
|
||||||
|
</project>
|
@ -0,0 +1,34 @@
|
|||||||
|
package cc.carm.lib.configuration.bukkit;
|
||||||
|
|
||||||
|
import cc.carm.lib.configuration.bukkit.builder.BukkitConfigBuilder;
|
||||||
|
import cc.carm.lib.configuration.bukkit.source.BukkitConfigProvider;
|
||||||
|
import cc.carm.lib.configuration.bukkit.source.BukkitSectionWrapper;
|
||||||
|
import cc.carm.lib.configuration.core.source.ConfigurationProvider;
|
||||||
|
import cc.carm.lib.configuration.core.value.impl.CachedConfigValue;
|
||||||
|
import org.jetbrains.annotations.NotNull;
|
||||||
|
import org.jetbrains.annotations.Nullable;
|
||||||
|
|
||||||
|
public abstract class BukkitConfigValue<T> extends CachedConfigValue<T> {
|
||||||
|
|
||||||
|
public static @NotNull BukkitConfigBuilder builder() {
|
||||||
|
return new BukkitConfigBuilder();
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
public BukkitConfigValue(@Nullable BukkitConfigProvider provider,
|
||||||
|
@Nullable String configPath, @NotNull String[] comments, @Nullable T defaultValue) {
|
||||||
|
super(provider, configPath, comments, defaultValue);
|
||||||
|
}
|
||||||
|
|
||||||
|
public BukkitConfigProvider<?, ?> getBukkitProvider() {
|
||||||
|
ConfigurationProvider<?> provider = getProvider();
|
||||||
|
if (provider instanceof BukkitConfigProvider) return (BukkitConfigProvider<?, ?>) getProvider();
|
||||||
|
else throw new IllegalStateException("Provider is not a SpigotConfigProvider");
|
||||||
|
}
|
||||||
|
|
||||||
|
public BukkitSectionWrapper getBukkitConfig() {
|
||||||
|
return getBukkitProvider().getConfiguration();
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
}
|
@ -0,0 +1,13 @@
|
|||||||
|
package cc.carm.lib.configuration.bukkit.builder;
|
||||||
|
|
||||||
|
import cc.carm.lib.configuration.bukkit.source.BukkitConfigProvider;
|
||||||
|
import cc.carm.lib.configuration.core.builder.AbstractConfigBuilder;
|
||||||
|
|
||||||
|
public abstract class AbstractBukkitBuilder<T, B extends AbstractBukkitBuilder<T, B>>
|
||||||
|
extends AbstractConfigBuilder<T, B, BukkitConfigProvider<?, ?>> {
|
||||||
|
|
||||||
|
public AbstractBukkitBuilder() {
|
||||||
|
super(BukkitConfigProvider.class);
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
@ -0,0 +1,19 @@
|
|||||||
|
package cc.carm.lib.configuration.bukkit.builder;
|
||||||
|
|
||||||
|
import cc.carm.lib.configuration.bukkit.builder.serializable.SerializableBuilder;
|
||||||
|
import cc.carm.lib.configuration.bukkit.builder.sound.SoundConfigBuilder;
|
||||||
|
import cc.carm.lib.configuration.core.builder.ConfigBuilder;
|
||||||
|
import org.bukkit.configuration.serialization.ConfigurationSerializable;
|
||||||
|
import org.jetbrains.annotations.NotNull;
|
||||||
|
|
||||||
|
public class BukkitConfigBuilder extends ConfigBuilder {
|
||||||
|
|
||||||
|
public @NotNull SoundConfigBuilder createSound() {
|
||||||
|
return new SoundConfigBuilder();
|
||||||
|
}
|
||||||
|
|
||||||
|
public <V extends ConfigurationSerializable> @NotNull SerializableBuilder<V> ofSerializable(@NotNull Class<V> valueClass) {
|
||||||
|
return new SerializableBuilder<>(valueClass);
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
@ -0,0 +1,28 @@
|
|||||||
|
package cc.carm.lib.configuration.bukkit.builder.serializable;
|
||||||
|
|
||||||
|
import cc.carm.lib.configuration.bukkit.builder.AbstractBukkitBuilder;
|
||||||
|
import cc.carm.lib.configuration.bukkit.value.ConfiguredSerializable;
|
||||||
|
import org.bukkit.configuration.serialization.ConfigurationSerializable;
|
||||||
|
import org.jetbrains.annotations.NotNull;
|
||||||
|
|
||||||
|
public class SerializableBuilder<T extends ConfigurationSerializable>
|
||||||
|
extends AbstractBukkitBuilder<T, SerializableBuilder<T>> {
|
||||||
|
|
||||||
|
protected final @NotNull Class<T> valueClass;
|
||||||
|
|
||||||
|
public SerializableBuilder(@NotNull Class<T> valueClass) {
|
||||||
|
this.valueClass = valueClass;
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
protected @NotNull SerializableBuilder<T> getThis() {
|
||||||
|
return this;
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public @NotNull ConfiguredSerializable<T> build() {
|
||||||
|
return new ConfiguredSerializable<>(this.provider, this.path, this.comments, this.valueClass, this.defaultValue);
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
|
@ -0,0 +1,34 @@
|
|||||||
|
package cc.carm.lib.configuration.bukkit.builder.sound;
|
||||||
|
|
||||||
|
import cc.carm.lib.configuration.bukkit.builder.AbstractBukkitBuilder;
|
||||||
|
import cc.carm.lib.configuration.bukkit.data.SoundConfig;
|
||||||
|
import cc.carm.lib.configuration.bukkit.value.ConfiguredSound;
|
||||||
|
import org.bukkit.Sound;
|
||||||
|
import org.jetbrains.annotations.NotNull;
|
||||||
|
|
||||||
|
public class SoundConfigBuilder extends AbstractBukkitBuilder<SoundConfig, SoundConfigBuilder> {
|
||||||
|
|
||||||
|
|
||||||
|
public @NotNull SoundConfigBuilder defaults(@NotNull Sound sound, float volume, float pitch) {
|
||||||
|
return defaults(new SoundConfig(sound, volume, pitch));
|
||||||
|
}
|
||||||
|
|
||||||
|
public @NotNull SoundConfigBuilder defaults(@NotNull Sound sound, float volume) {
|
||||||
|
return defaults(sound, volume, 1.0f);
|
||||||
|
}
|
||||||
|
|
||||||
|
public @NotNull SoundConfigBuilder defaults(@NotNull Sound sound) {
|
||||||
|
return defaults(sound, 1.0f);
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
protected @NotNull SoundConfigBuilder getThis() {
|
||||||
|
return this;
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public @NotNull ConfiguredSound build() {
|
||||||
|
return new ConfiguredSound(this.provider, this.path, this.comments, this.defaultValue);
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
File diff suppressed because it is too large
Load Diff
@ -0,0 +1,73 @@
|
|||||||
|
//package cc.carm.lib.configuration.bukkit.commented;
|
||||||
|
//
|
||||||
|
//import org.yaml.snakeyaml.DumperOptions;
|
||||||
|
//import org.yaml.snakeyaml.Yaml;
|
||||||
|
//import org.yaml.snakeyaml.constructor.BaseConstructor;
|
||||||
|
//import org.yaml.snakeyaml.error.YAMLException;
|
||||||
|
//import org.yaml.snakeyaml.nodes.Node;
|
||||||
|
//import org.yaml.snakeyaml.nodes.Tag;
|
||||||
|
//import org.yaml.snakeyaml.representer.Representer;
|
||||||
|
//import org.yaml.snakeyaml.serializer.Serializer;
|
||||||
|
//
|
||||||
|
//import java.io.IOException;
|
||||||
|
//import java.io.StringWriter;
|
||||||
|
//import java.io.Writer;
|
||||||
|
//import java.util.ArrayList;
|
||||||
|
//import java.util.Iterator;
|
||||||
|
//import java.util.List;
|
||||||
|
//
|
||||||
|
///**
|
||||||
|
// * A hacky extension of {@link Yaml} that allows to write comments when dumping.
|
||||||
|
// */
|
||||||
|
//public class CommentedYaml extends Yaml {
|
||||||
|
//
|
||||||
|
// private final CommentsProvider commentsProvider;
|
||||||
|
//
|
||||||
|
// public CommentedYaml(BaseConstructor constructor, Representer representer, DumperOptions dumperOptions, CommentsProvider commentsProvider) {
|
||||||
|
// super(constructor, representer, dumperOptions);
|
||||||
|
// this.commentsProvider = commentsProvider;
|
||||||
|
// }
|
||||||
|
//
|
||||||
|
// @Override
|
||||||
|
// public String dump(Object data) {
|
||||||
|
// List<Object> list = new ArrayList<>(1);
|
||||||
|
// list.add(data);
|
||||||
|
// return this.dumpAll(list.iterator());
|
||||||
|
// }
|
||||||
|
//
|
||||||
|
// @Override
|
||||||
|
// public void dump(Object data, Writer output) {
|
||||||
|
// List<Object> list = new ArrayList<>(1);
|
||||||
|
// list.add(data);
|
||||||
|
// this.dumpAll(list.iterator(), output, null);
|
||||||
|
// }
|
||||||
|
//
|
||||||
|
// @Override
|
||||||
|
// public String dumpAll(Iterator<?> data) {
|
||||||
|
// StringWriter buffer = new StringWriter();
|
||||||
|
// this.dumpAll(data, buffer, null);
|
||||||
|
// return buffer.toString();
|
||||||
|
// }
|
||||||
|
//
|
||||||
|
// @Override
|
||||||
|
// public void dumpAll(Iterator<?> data, Writer output) {
|
||||||
|
// this.dumpAll(data, output, null);
|
||||||
|
// }
|
||||||
|
//
|
||||||
|
// private void dumpAll(Iterator<?> data, Writer output, Tag rootTag) {
|
||||||
|
// Serializer serializer = new Serializer(new CommentedEmitter(output, this.dumperOptions, this.commentsProvider), this.resolver, this.dumperOptions, rootTag);
|
||||||
|
//
|
||||||
|
// try {
|
||||||
|
// serializer.open();
|
||||||
|
//
|
||||||
|
// while (data.hasNext()) {
|
||||||
|
// Node node = this.representer.represent(data.next());
|
||||||
|
// serializer.serialize(node);
|
||||||
|
// }
|
||||||
|
//
|
||||||
|
// serializer.close();
|
||||||
|
// } catch (IOException var6) {
|
||||||
|
// throw new YAMLException(var6);
|
||||||
|
// }
|
||||||
|
// }
|
||||||
|
//}
|
@ -0,0 +1,69 @@
|
|||||||
|
//package cc.carm.lib.configuration.bukkit.commented;
|
||||||
|
//
|
||||||
|
//import org.bukkit.configuration.InvalidConfigurationException;
|
||||||
|
//import org.bukkit.configuration.file.YamlConfiguration;
|
||||||
|
//import org.bukkit.configuration.file.YamlConstructor;
|
||||||
|
//import org.bukkit.configuration.file.YamlRepresenter;
|
||||||
|
//import org.jetbrains.annotations.NotNull;
|
||||||
|
//import org.yaml.snakeyaml.DumperOptions;
|
||||||
|
//import org.yaml.snakeyaml.representer.Representer;
|
||||||
|
//
|
||||||
|
//import java.io.File;
|
||||||
|
//import java.io.FileNotFoundException;
|
||||||
|
//import java.io.IOException;
|
||||||
|
//import java.io.Reader;
|
||||||
|
//
|
||||||
|
///**
|
||||||
|
// * A yaml file with comments on certain properties, as returned by the given {@link CommentsProvider}.
|
||||||
|
// * Unlike {@link YamlConfiguration}, this class does not provide a header support.
|
||||||
|
// */
|
||||||
|
//public class CommentedYamlConfiguration extends YamlConfiguration {
|
||||||
|
//
|
||||||
|
// private final DumperOptions yamlOptions = new DumperOptions();
|
||||||
|
// private final Representer yamlRepresenter = new YamlRepresenter();
|
||||||
|
// private final CommentedYaml yaml;
|
||||||
|
//
|
||||||
|
// public CommentedYamlConfiguration(CommentsProvider commentsProvider) {
|
||||||
|
// this.yaml = new CommentedYaml(new YamlConstructor(), this.yamlRepresenter, this.yamlOptions, commentsProvider);
|
||||||
|
// }
|
||||||
|
//
|
||||||
|
// public static CommentedYamlConfiguration loadConfiguration(CommentsProvider commentsProvider, File file) {
|
||||||
|
// CommentedYamlConfiguration config = new CommentedYamlConfiguration(commentsProvider);
|
||||||
|
//
|
||||||
|
// try {
|
||||||
|
// config.load(file);
|
||||||
|
// } catch (FileNotFoundException ignored) {
|
||||||
|
// } catch (IOException | InvalidConfigurationException var4) {
|
||||||
|
// var4.printStackTrace();
|
||||||
|
// }
|
||||||
|
//
|
||||||
|
// return config;
|
||||||
|
// }
|
||||||
|
//
|
||||||
|
// public static CommentedYamlConfiguration loadConfiguration(CommentsProvider commentsProvider, Reader reader) {
|
||||||
|
// CommentedYamlConfiguration config = new CommentedYamlConfiguration(commentsProvider);
|
||||||
|
//
|
||||||
|
// try {
|
||||||
|
// config.load(reader);
|
||||||
|
// } catch (IOException | InvalidConfigurationException ex) {
|
||||||
|
// ex.printStackTrace();
|
||||||
|
// }
|
||||||
|
//
|
||||||
|
// return config;
|
||||||
|
// }
|
||||||
|
//
|
||||||
|
// @Override
|
||||||
|
// public @NotNull String saveToString() {
|
||||||
|
// this.yamlOptions.setIndent(this.options().indent());
|
||||||
|
// this.yamlOptions.setDefaultFlowStyle(DumperOptions.FlowStyle.BLOCK);
|
||||||
|
// this.yamlRepresenter.setDefaultFlowStyle(DumperOptions.FlowStyle.BLOCK);
|
||||||
|
// String dump = this.yaml.dump(this.getValues(false));
|
||||||
|
// if (dump.equals("{}\n")) {
|
||||||
|
// dump = "";
|
||||||
|
// }
|
||||||
|
//
|
||||||
|
// // No header support.
|
||||||
|
//
|
||||||
|
// return dump;
|
||||||
|
// }
|
||||||
|
//}
|
@ -0,0 +1,7 @@
|
|||||||
|
package cc.carm.lib.configuration.bukkit.commented;
|
||||||
|
|
||||||
|
import java.util.function.Function;
|
||||||
|
|
||||||
|
|
||||||
|
public interface CommentsProvider extends Function<String, String[]> {
|
||||||
|
}
|
@ -0,0 +1,34 @@
|
|||||||
|
package cc.carm.lib.configuration.bukkit.commented;
|
||||||
|
|
||||||
|
import org.jetbrains.annotations.NotNull;
|
||||||
|
import org.jetbrains.annotations.Nullable;
|
||||||
|
|
||||||
|
import java.util.HashMap;
|
||||||
|
import java.util.Map;
|
||||||
|
|
||||||
|
public class ConfigComments implements CommentsProvider {
|
||||||
|
|
||||||
|
Map<String, String[]> comments = new HashMap<>();
|
||||||
|
|
||||||
|
protected Map<String, String[]> getComments() {
|
||||||
|
return comments;
|
||||||
|
}
|
||||||
|
|
||||||
|
public void set(@NotNull String path, @NotNull String... comments) {
|
||||||
|
if (comments.length == 0) {
|
||||||
|
getComments().remove(path);
|
||||||
|
} else {
|
||||||
|
getComments().put(path, comments);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
public @Nullable String[] get(@NotNull String path) {
|
||||||
|
return getComments().get(path);
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public String[] apply(String s) {
|
||||||
|
return get(s);
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
@ -0,0 +1,44 @@
|
|||||||
|
package cc.carm.lib.configuration.bukkit.data;
|
||||||
|
|
||||||
|
import org.bukkit.Material;
|
||||||
|
import org.jetbrains.annotations.NotNull;
|
||||||
|
import org.jetbrains.annotations.Nullable;
|
||||||
|
|
||||||
|
import java.util.List;
|
||||||
|
import java.util.Map;
|
||||||
|
|
||||||
|
public class ItemConfig {
|
||||||
|
|
||||||
|
@NotNull Material type;
|
||||||
|
@Nullable String name;
|
||||||
|
@Nullable List<String> lore;
|
||||||
|
@NotNull Map<String, List<String>> additional;
|
||||||
|
|
||||||
|
public ItemConfig(@NotNull Material type, @Nullable String name,
|
||||||
|
@Nullable List<String> lore, @NotNull Map<String, List<String>> additional) {
|
||||||
|
this.type = type;
|
||||||
|
this.name = name;
|
||||||
|
this.lore = lore;
|
||||||
|
this.additional = additional;
|
||||||
|
}
|
||||||
|
|
||||||
|
public @NotNull Material getType() {
|
||||||
|
return type;
|
||||||
|
}
|
||||||
|
|
||||||
|
public @Nullable String getName() {
|
||||||
|
return name;
|
||||||
|
}
|
||||||
|
|
||||||
|
public @Nullable List<String> getLore() {
|
||||||
|
return lore;
|
||||||
|
}
|
||||||
|
|
||||||
|
public @NotNull Map<String, List<String>> getAdditionalLore() {
|
||||||
|
return additional;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
}
|
@ -0,0 +1,8 @@
|
|||||||
|
package cc.carm.lib.configuration.bukkit.data;
|
||||||
|
|
||||||
|
public class MessageConfig {
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
}
|
@ -0,0 +1,67 @@
|
|||||||
|
package cc.carm.lib.configuration.bukkit.data;
|
||||||
|
|
||||||
|
import org.bukkit.Bukkit;
|
||||||
|
import org.bukkit.Sound;
|
||||||
|
import org.bukkit.entity.Player;
|
||||||
|
import org.jetbrains.annotations.Contract;
|
||||||
|
import org.jetbrains.annotations.NotNull;
|
||||||
|
import org.jetbrains.annotations.Nullable;
|
||||||
|
|
||||||
|
public class SoundConfig {
|
||||||
|
|
||||||
|
protected Sound type;
|
||||||
|
protected float volume;
|
||||||
|
protected float pitch;
|
||||||
|
|
||||||
|
public SoundConfig(Sound type) {
|
||||||
|
this(type, 1, 1);
|
||||||
|
}
|
||||||
|
|
||||||
|
public SoundConfig(Sound type, float volume) {
|
||||||
|
this(type, volume, 1);
|
||||||
|
}
|
||||||
|
|
||||||
|
public SoundConfig(Sound type, float volume, float pitch) {
|
||||||
|
this.type = type;
|
||||||
|
this.volume = volume;
|
||||||
|
this.pitch = pitch;
|
||||||
|
}
|
||||||
|
|
||||||
|
public void playTo(Player player) {
|
||||||
|
player.playSound(player.getLocation(), type, volume, pitch);
|
||||||
|
}
|
||||||
|
|
||||||
|
public void playToAll() {
|
||||||
|
Bukkit.getOnlinePlayers().forEach(this::playTo);
|
||||||
|
}
|
||||||
|
|
||||||
|
public @NotNull String serialize() {
|
||||||
|
if (pitch != 1) {
|
||||||
|
return type.name() + ":" + volume + ":" + pitch;
|
||||||
|
} else if (volume != 1) {
|
||||||
|
return type.name() + ":" + volume;
|
||||||
|
} else {
|
||||||
|
return type.name();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
@Contract("null -> null")
|
||||||
|
public static @Nullable SoundConfig deserialize(@Nullable String string) throws Exception {
|
||||||
|
if (string == null) return null;
|
||||||
|
|
||||||
|
String[] args = string.contains(":") ? string.split(":") : new String[]{string};
|
||||||
|
if (args.length < 1) return null;
|
||||||
|
|
||||||
|
try {
|
||||||
|
return new SoundConfig(
|
||||||
|
Sound.valueOf(args[0]),
|
||||||
|
(args.length >= 2) ? Float.parseFloat(args[1]) : 1,
|
||||||
|
(args.length >= 3) ? Float.parseFloat(args[2]) : 1
|
||||||
|
);
|
||||||
|
} catch (Exception exception) {
|
||||||
|
throw new Exception("Sound " + string + " wasn't configured correctly.", exception);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
}
|
@ -0,0 +1,40 @@
|
|||||||
|
package cc.carm.lib.configuration.bukkit.source;
|
||||||
|
|
||||||
|
import cc.carm.lib.configuration.core.ConfigInitializer;
|
||||||
|
import cc.carm.lib.configuration.core.source.impl.FileConfigProvider;
|
||||||
|
import org.bukkit.configuration.file.YamlConfiguration;
|
||||||
|
import org.jetbrains.annotations.NotNull;
|
||||||
|
|
||||||
|
import java.io.File;
|
||||||
|
|
||||||
|
public abstract class BukkitConfigProvider<W extends BukkitSectionWrapper, C extends YamlConfiguration>
|
||||||
|
extends FileConfigProvider<W> {
|
||||||
|
|
||||||
|
protected ConfigInitializer<? extends BukkitConfigProvider<W, C>> initializer;
|
||||||
|
protected C configuration;
|
||||||
|
|
||||||
|
public BukkitConfigProvider(@NotNull File file) {
|
||||||
|
super(file);
|
||||||
|
}
|
||||||
|
|
||||||
|
public abstract void initializeConfig();
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public abstract @NotNull W getConfiguration();
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void reload() throws Exception {
|
||||||
|
configuration.load(getFile());
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void save() throws Exception {
|
||||||
|
configuration.save(getFile());
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public @NotNull ConfigInitializer<? extends BukkitConfigProvider<W, C>> getInitializer() {
|
||||||
|
return this.initializer;
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
@ -0,0 +1,18 @@
|
|||||||
|
package cc.carm.lib.configuration.bukkit.source;
|
||||||
|
|
||||||
|
import cc.carm.lib.configuration.core.source.ConfigurationWrapper;
|
||||||
|
import org.bukkit.configuration.ConfigurationSection;
|
||||||
|
|
||||||
|
public abstract class BukkitSectionWrapper implements ConfigurationWrapper {
|
||||||
|
|
||||||
|
private final ConfigurationSection section;
|
||||||
|
|
||||||
|
private BukkitSectionWrapper(ConfigurationSection section) {
|
||||||
|
this.section = section;
|
||||||
|
}
|
||||||
|
|
||||||
|
public ConfigurationSection getSourceSection() {
|
||||||
|
return section;
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
@ -0,0 +1,24 @@
|
|||||||
|
package cc.carm.lib.configuration.bukkit.value;
|
||||||
|
|
||||||
|
import cc.carm.lib.configuration.bukkit.data.ItemConfig;
|
||||||
|
import cc.carm.lib.configuration.core.function.ConfigDataFunction;
|
||||||
|
import cc.carm.lib.configuration.core.function.ConfigValueParser;
|
||||||
|
import cc.carm.lib.configuration.core.source.ConfigurationProvider;
|
||||||
|
import cc.carm.lib.configuration.core.source.ConfigurationWrapper;
|
||||||
|
import cc.carm.lib.configuration.core.value.type.ConfiguredSection;
|
||||||
|
import org.jetbrains.annotations.NotNull;
|
||||||
|
import org.jetbrains.annotations.Nullable;
|
||||||
|
|
||||||
|
import java.util.Map;
|
||||||
|
|
||||||
|
public class ConfiguredItem extends ConfiguredSection<ItemConfig> {
|
||||||
|
|
||||||
|
public ConfiguredItem(@Nullable ConfigurationProvider<?> provider,
|
||||||
|
@Nullable String sectionPath, @NotNull String[] comments,
|
||||||
|
@NotNull Class<ItemConfig> valueClass, @Nullable ItemConfig defaultValue,
|
||||||
|
@NotNull ConfigValueParser<ConfigurationWrapper, ItemConfig> parser,
|
||||||
|
@NotNull ConfigDataFunction<ItemConfig, ? extends Map<String, Object>> serializer) {
|
||||||
|
super(provider, sectionPath, comments, valueClass, defaultValue, parser, serializer);
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
@ -0,0 +1,27 @@
|
|||||||
|
package cc.carm.lib.configuration.bukkit.value;
|
||||||
|
|
||||||
|
import cc.carm.lib.configuration.bukkit.data.MessageConfig;
|
||||||
|
import cc.carm.lib.configuration.core.source.ConfigurationProvider;
|
||||||
|
import cc.carm.lib.configuration.core.value.impl.CachedConfigValue;
|
||||||
|
import org.jetbrains.annotations.NotNull;
|
||||||
|
import org.jetbrains.annotations.Nullable;
|
||||||
|
|
||||||
|
public class ConfiguredMessage extends CachedConfigValue<MessageConfig> {
|
||||||
|
|
||||||
|
|
||||||
|
public ConfiguredMessage(@Nullable ConfigurationProvider<?> provider,
|
||||||
|
@Nullable String sectionPath, @NotNull String[] comments,
|
||||||
|
@Nullable MessageConfig defaultValue) {
|
||||||
|
super(provider, sectionPath, comments, defaultValue);
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public @Nullable MessageConfig get() {
|
||||||
|
return null;
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void set(@Nullable MessageConfig value) {
|
||||||
|
|
||||||
|
}
|
||||||
|
}
|
@ -0,0 +1,52 @@
|
|||||||
|
package cc.carm.lib.configuration.bukkit.value;
|
||||||
|
|
||||||
|
import cc.carm.lib.configuration.bukkit.BukkitConfigValue;
|
||||||
|
import cc.carm.lib.configuration.bukkit.source.BukkitConfigProvider;
|
||||||
|
import org.bukkit.configuration.serialization.ConfigurationSerializable;
|
||||||
|
import org.jetbrains.annotations.NotNull;
|
||||||
|
import org.jetbrains.annotations.Nullable;
|
||||||
|
|
||||||
|
import java.util.Optional;
|
||||||
|
|
||||||
|
public class ConfiguredSerializable<T extends ConfigurationSerializable> extends BukkitConfigValue<T> {
|
||||||
|
|
||||||
|
public static <V extends ConfigurationSerializable> ConfiguredSerializable<V> of(@NotNull Class<V> valueClass) {
|
||||||
|
return of(valueClass, null);
|
||||||
|
}
|
||||||
|
|
||||||
|
public static <V extends ConfigurationSerializable> ConfiguredSerializable<V> of(@NotNull Class<V> valueClass,
|
||||||
|
@Nullable V defaultValue) {
|
||||||
|
return builder().ofSerializable(valueClass).defaults(defaultValue).build();
|
||||||
|
}
|
||||||
|
|
||||||
|
protected final @NotNull Class<T> valueClass;
|
||||||
|
|
||||||
|
public ConfiguredSerializable(@Nullable BukkitConfigProvider provider,
|
||||||
|
@Nullable String configPath, @NotNull String[] comments,
|
||||||
|
@NotNull Class<T> valueClass, @Nullable T defaultValue) {
|
||||||
|
super(provider, configPath, comments, defaultValue);
|
||||||
|
this.valueClass = valueClass;
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public @Nullable T get() {
|
||||||
|
if (isExpired()) { // 已过时的数据,需要重新解析一次。
|
||||||
|
try {
|
||||||
|
// 若未出现错误,则直接更新缓存并返回。
|
||||||
|
return updateCache(getBukkitConfig().get(getConfigPath(), getDefaultValue(), valueClass));
|
||||||
|
} catch (Exception e) {
|
||||||
|
// 出现了解析错误,提示并返回默认值。
|
||||||
|
e.printStackTrace();
|
||||||
|
return useDefault();
|
||||||
|
}
|
||||||
|
} else return Optional.ofNullable(getCachedValue()).orElse(defaultValue);
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void set(@Nullable T value) {
|
||||||
|
updateCache(value);
|
||||||
|
setValue(value);
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
}
|
@ -0,0 +1,48 @@
|
|||||||
|
package cc.carm.lib.configuration.bukkit.value;
|
||||||
|
|
||||||
|
import cc.carm.lib.configuration.bukkit.BukkitConfigValue;
|
||||||
|
import cc.carm.lib.configuration.bukkit.data.SoundConfig;
|
||||||
|
import cc.carm.lib.configuration.core.function.ConfigValueParser;
|
||||||
|
import cc.carm.lib.configuration.core.source.ConfigurationProvider;
|
||||||
|
import cc.carm.lib.configuration.core.value.type.ConfiguredValue;
|
||||||
|
import org.bukkit.Sound;
|
||||||
|
import org.bukkit.entity.Player;
|
||||||
|
import org.jetbrains.annotations.NotNull;
|
||||||
|
import org.jetbrains.annotations.Nullable;
|
||||||
|
|
||||||
|
import java.util.Optional;
|
||||||
|
|
||||||
|
public class ConfiguredSound extends ConfiguredValue<SoundConfig> {
|
||||||
|
|
||||||
|
public static @NotNull ConfiguredSound of(Sound sound) {
|
||||||
|
return BukkitConfigValue.builder().createSound().defaults(sound).build();
|
||||||
|
}
|
||||||
|
|
||||||
|
public static @NotNull ConfiguredSound of(Sound sound, float volume) {
|
||||||
|
return BukkitConfigValue.builder().createSound().defaults(sound, volume).build();
|
||||||
|
}
|
||||||
|
|
||||||
|
public static @NotNull ConfiguredSound of(Sound sound, float volume, float pitch) {
|
||||||
|
return BukkitConfigValue.builder().createSound().defaults(sound, volume, pitch).build();
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
public ConfiguredSound(@Nullable ConfigurationProvider<?> provider,
|
||||||
|
@Nullable String sectionPath, @NotNull String[] comments,
|
||||||
|
@Nullable SoundConfig defaultValue) {
|
||||||
|
super(provider, sectionPath, comments, SoundConfig.class, defaultValue, getSoundParser(), SoundConfig::serialize);
|
||||||
|
}
|
||||||
|
|
||||||
|
public void playTo(@NotNull Player player) {
|
||||||
|
Optional.ofNullable(get()).ifPresent(c -> c.playTo(player));
|
||||||
|
}
|
||||||
|
|
||||||
|
public void playToAll() {
|
||||||
|
Optional.ofNullable(get()).ifPresent(SoundConfig::playToAll);
|
||||||
|
}
|
||||||
|
|
||||||
|
public static ConfigValueParser<Object, SoundConfig> getSoundParser() {
|
||||||
|
return ConfigValueParser.castToString().andThen((s, d) -> SoundConfig.deserialize(s));
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
66
bungee/pom.xml
Normal file
66
bungee/pom.xml
Normal file
@ -0,0 +1,66 @@
|
|||||||
|
<?xml version="1.0" encoding="UTF-8"?>
|
||||||
|
<project xmlns="http://maven.apache.org/POM/4.0.0"
|
||||||
|
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
|
||||||
|
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
|
||||||
|
<parent>
|
||||||
|
<artifactId>MineConfiguration</artifactId>
|
||||||
|
<groupId>cc.carm.lib</groupId>
|
||||||
|
<version>1.0.0</version>
|
||||||
|
</parent>
|
||||||
|
<modelVersion>4.0.0</modelVersion>
|
||||||
|
<properties>
|
||||||
|
<maven.compiler.source>${java.version}</maven.compiler.source>
|
||||||
|
<maven.compiler.target>${java.version}</maven.compiler.target>
|
||||||
|
</properties>
|
||||||
|
<artifactId>mineconfiguration-bungee</artifactId>
|
||||||
|
<packaging>jar</packaging>
|
||||||
|
|
||||||
|
<dependencies>
|
||||||
|
|
||||||
|
<dependency>
|
||||||
|
<groupId>${project.parent.groupId}</groupId>
|
||||||
|
<artifactId>easyconfiguration-core</artifactId>
|
||||||
|
<version>${easyconfiguration.version}</version>
|
||||||
|
<scope>compile</scope>
|
||||||
|
</dependency>
|
||||||
|
|
||||||
|
<dependency>
|
||||||
|
<groupId>net.md-5</groupId>
|
||||||
|
<artifactId>bungeecord-api</artifactId>
|
||||||
|
<version>1.18-R0.1-SNAPSHOT</version>
|
||||||
|
<type>jar</type>
|
||||||
|
<scope>provided</scope>
|
||||||
|
</dependency>
|
||||||
|
|
||||||
|
<dependency>
|
||||||
|
<groupId>net.md-5</groupId>
|
||||||
|
<artifactId>bungeecord-api</artifactId>
|
||||||
|
<version>1.18-R0.1-SNAPSHOT</version>
|
||||||
|
<type>javadoc</type>
|
||||||
|
<scope>provided</scope>
|
||||||
|
</dependency>
|
||||||
|
|
||||||
|
</dependencies>
|
||||||
|
|
||||||
|
<build>
|
||||||
|
<plugins>
|
||||||
|
<plugin>
|
||||||
|
<groupId>org.apache.maven.plugins</groupId>
|
||||||
|
<artifactId>maven-compiler-plugin</artifactId>
|
||||||
|
</plugin>
|
||||||
|
<plugin>
|
||||||
|
<groupId>org.apache.maven.plugins</groupId>
|
||||||
|
<artifactId>maven-jar-plugin</artifactId>
|
||||||
|
</plugin>
|
||||||
|
<plugin>
|
||||||
|
<groupId>org.apache.maven.plugins</groupId>
|
||||||
|
<artifactId>maven-source-plugin</artifactId>
|
||||||
|
</plugin>
|
||||||
|
<plugin>
|
||||||
|
<groupId>org.apache.maven.plugins</groupId>
|
||||||
|
<artifactId>maven-javadoc-plugin</artifactId>
|
||||||
|
</plugin>
|
||||||
|
</plugins>
|
||||||
|
</build>
|
||||||
|
|
||||||
|
</project>
|
@ -0,0 +1,74 @@
|
|||||||
|
package cc.carm.lib.configuration;
|
||||||
|
|
||||||
|
import cc.carm.lib.configuration.bungee.BungeeConfigProvider;
|
||||||
|
import net.md_5.bungee.config.ConfigurationProvider;
|
||||||
|
import net.md_5.bungee.config.JsonConfiguration;
|
||||||
|
import net.md_5.bungee.config.YamlConfiguration;
|
||||||
|
|
||||||
|
import java.io.File;
|
||||||
|
import java.io.IOException;
|
||||||
|
|
||||||
|
public class MineConfiguration {
|
||||||
|
|
||||||
|
protected static BungeeConfigProvider create(File file, String source, ConfigurationProvider loader) {
|
||||||
|
BungeeConfigProvider provider = new BungeeConfigProvider(file, loader);
|
||||||
|
try {
|
||||||
|
provider.initializeFile(source);
|
||||||
|
provider.initializeConfig();
|
||||||
|
} catch (IOException e) {
|
||||||
|
e.printStackTrace();
|
||||||
|
}
|
||||||
|
return provider;
|
||||||
|
}
|
||||||
|
|
||||||
|
public static BungeeConfigProvider from(File file, String source) {
|
||||||
|
return fromYAML(file, source);
|
||||||
|
}
|
||||||
|
|
||||||
|
public static BungeeConfigProvider from(File file) {
|
||||||
|
return from(file, file.getName());
|
||||||
|
}
|
||||||
|
|
||||||
|
public static BungeeConfigProvider from(String fileName) {
|
||||||
|
return from(fileName, fileName);
|
||||||
|
}
|
||||||
|
|
||||||
|
public static BungeeConfigProvider from(String fileName, String source) {
|
||||||
|
return from(new File(fileName), source);
|
||||||
|
}
|
||||||
|
|
||||||
|
public static BungeeConfigProvider fromYAML(File file, String source) {
|
||||||
|
return create(file, source, ConfigurationProvider.getProvider(YamlConfiguration.class));
|
||||||
|
}
|
||||||
|
|
||||||
|
public static BungeeConfigProvider fromYAML(String fileName, String source) {
|
||||||
|
return fromYAML(new File(fileName), source);
|
||||||
|
}
|
||||||
|
|
||||||
|
public static BungeeConfigProvider fromYAML(File file) {
|
||||||
|
return fromYAML(file, file.getName());
|
||||||
|
}
|
||||||
|
|
||||||
|
public static BungeeConfigProvider fromYAML(String fileName) {
|
||||||
|
return fromYAML(fileName, fileName);
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
public static BungeeConfigProvider fromJSON(File file, String source) {
|
||||||
|
return create(file, source, ConfigurationProvider.getProvider(JsonConfiguration.class));
|
||||||
|
}
|
||||||
|
|
||||||
|
public static BungeeConfigProvider fromJSON(String fileName, String source) {
|
||||||
|
return fromJSON(new File(fileName), source);
|
||||||
|
}
|
||||||
|
|
||||||
|
public static BungeeConfigProvider fromJSON(File file) {
|
||||||
|
return fromJSON(file, file.getName());
|
||||||
|
}
|
||||||
|
|
||||||
|
public static BungeeConfigProvider fromJSON(String fileName) {
|
||||||
|
return fromJSON(fileName, fileName);
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
}
|
@ -0,0 +1,63 @@
|
|||||||
|
package cc.carm.lib.configuration.bungee;
|
||||||
|
|
||||||
|
import cc.carm.lib.configuration.core.ConfigInitializer;
|
||||||
|
import cc.carm.lib.configuration.core.source.impl.FileConfigProvider;
|
||||||
|
import net.md_5.bungee.config.Configuration;
|
||||||
|
import net.md_5.bungee.config.ConfigurationProvider;
|
||||||
|
import org.jetbrains.annotations.NotNull;
|
||||||
|
import org.jetbrains.annotations.Nullable;
|
||||||
|
|
||||||
|
import java.io.File;
|
||||||
|
import java.io.IOException;
|
||||||
|
|
||||||
|
public class BungeeConfigProvider extends FileConfigProvider<BungeeSectionWrapper> {
|
||||||
|
|
||||||
|
protected ConfigurationProvider loader;
|
||||||
|
protected Configuration configuration;
|
||||||
|
protected ConfigInitializer<BungeeConfigProvider> initializer;
|
||||||
|
|
||||||
|
public BungeeConfigProvider(@NotNull File file, ConfigurationProvider loader) {
|
||||||
|
super(file);
|
||||||
|
this.loader = loader;
|
||||||
|
}
|
||||||
|
|
||||||
|
public void initializeConfig() throws IOException {
|
||||||
|
this.configuration = getLoader().load(file);
|
||||||
|
this.initializer = new ConfigInitializer<>(this);
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public @NotNull BungeeSectionWrapper getConfiguration() {
|
||||||
|
return BungeeSectionWrapper.of(configuration);
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void reload() throws Exception {
|
||||||
|
this.configuration = getLoader().load(file);
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void save() throws Exception {
|
||||||
|
getLoader().save(configuration, file);
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void setComments(@NotNull String path, @NotNull String... comments) {
|
||||||
|
// BungeeCord version doesn't support comments
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public @Nullable String[] getComments(@NotNull String path) {
|
||||||
|
// BungeeCord version doesn't support comments
|
||||||
|
return null;
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public @NotNull ConfigInitializer<BungeeConfigProvider> getInitializer() {
|
||||||
|
return this.initializer;
|
||||||
|
}
|
||||||
|
|
||||||
|
public ConfigurationProvider getLoader() {
|
||||||
|
return loader;
|
||||||
|
}
|
||||||
|
}
|
@ -0,0 +1,70 @@
|
|||||||
|
package cc.carm.lib.configuration.bungee;
|
||||||
|
|
||||||
|
import cc.carm.lib.configuration.core.source.ConfigurationWrapper;
|
||||||
|
import net.md_5.bungee.config.Configuration;
|
||||||
|
import org.jetbrains.annotations.Contract;
|
||||||
|
import org.jetbrains.annotations.NotNull;
|
||||||
|
import org.jetbrains.annotations.Nullable;
|
||||||
|
|
||||||
|
import java.util.*;
|
||||||
|
import java.util.stream.Collectors;
|
||||||
|
|
||||||
|
public class BungeeSectionWrapper implements ConfigurationWrapper {
|
||||||
|
|
||||||
|
private final Configuration section;
|
||||||
|
|
||||||
|
private BungeeSectionWrapper(@NotNull Configuration section) {
|
||||||
|
this.section = section;
|
||||||
|
}
|
||||||
|
|
||||||
|
@Contract("!null->!null")
|
||||||
|
public static @Nullable BungeeSectionWrapper of(@Nullable Configuration section) {
|
||||||
|
return section == null ? null : new BungeeSectionWrapper(section);
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public @NotNull Set<String> getKeys(boolean deep) {
|
||||||
|
return new LinkedHashSet<>(section.getKeys());
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public @NotNull Map<String, Object> getValues(boolean deep) {
|
||||||
|
return section.getKeys().stream()
|
||||||
|
.collect(Collectors.toMap(key -> key, section::get, (a, b) -> b, LinkedHashMap::new));
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void set(@NotNull String path, @Nullable Object value) {
|
||||||
|
this.section.set(path, value);
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public boolean contains(@NotNull String path) {
|
||||||
|
return this.section.contains(path);
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public @Nullable Object get(@NotNull String path) {
|
||||||
|
return this.section.get(path);
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public boolean isList(@NotNull String path) {
|
||||||
|
return get(path) instanceof List<?>;
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public @Nullable List<?> getList(@NotNull String path) {
|
||||||
|
return this.section.getList(path);
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public boolean isConfigurationSection(@NotNull String path) {
|
||||||
|
return get(path) instanceof Configuration;
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public @Nullable ConfigurationWrapper getConfigurationSection(@NotNull String path) {
|
||||||
|
return of(this.section.getSection(path));
|
||||||
|
}
|
||||||
|
}
|
6
pom.xml
6
pom.xml
@ -3,12 +3,18 @@
|
|||||||
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
|
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
|
||||||
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
|
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
|
||||||
<modelVersion>4.0.0</modelVersion>
|
<modelVersion>4.0.0</modelVersion>
|
||||||
|
<modules>
|
||||||
|
<module>bungee</module>
|
||||||
|
<module>bukkit/common</module>
|
||||||
|
</modules>
|
||||||
<properties>
|
<properties>
|
||||||
<java.version>1.8</java.version>
|
<java.version>1.8</java.version>
|
||||||
<maven.compiler.source>${java.version}</maven.compiler.source>
|
<maven.compiler.source>${java.version}</maven.compiler.source>
|
||||||
<maven.compiler.target>${java.version}</maven.compiler.target>
|
<maven.compiler.target>${java.version}</maven.compiler.target>
|
||||||
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
|
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
|
||||||
<maven.compiler.encoding>UTF-8</maven.compiler.encoding>
|
<maven.compiler.encoding>UTF-8</maven.compiler.encoding>
|
||||||
|
|
||||||
|
<easyconfiguration.version>1.1.0</easyconfiguration.version>
|
||||||
</properties>
|
</properties>
|
||||||
<groupId>cc.carm.lib</groupId>
|
<groupId>cc.carm.lib</groupId>
|
||||||
<artifactId>MineConfiguration</artifactId>
|
<artifactId>MineConfiguration</artifactId>
|
||||||
|
Loading…
Reference in New Issue
Block a user