CoreBuilder class
Пакет: com.hypixel.hytale.common.plugin
Файл: com/hypixel/hytale/common/plugin/PluginManifest.java
Поля (8)
| Модификаторы | Тип | Имя |
|---|---|---|
|
private final Map<PluginIdentifier, SemverRange> |
dependencies |
|
private String |
description |
|
private final String |
group |
|
private final Map<PluginIdentifier, SemverRange> |
loadBefore |
|
private final String |
main |
|
private final String |
name |
|
private final Map<PluginIdentifier, SemverRange> |
optionalDependencies |
|
private final Semver |
version |
Методы (9)
| Модификаторы | Возврат | Сигнатура |
|---|---|---|
|
public PluginManifest |
buildpublic PluginManifest build() |
|
public static PluginManifest.CoreBuilder |
corePluginpublic static PluginManifest.CoreBuilder corePlugin(@Nonnull Class<?> var0) |
|
public final PluginManifest.CoreBuilder |
dependspublic final PluginManifest.CoreBuilder depends(@Nonnull Class<?>... var1) |
|
public PluginManifest.CoreBuilder |
descriptionpublic PluginManifest.CoreBuilder description(@Nonnull String var1) |
|
|
for for(Class var5 : var1) |
|
|
for for(Class var5 : var1) |
|
|
for for(Class var5 : var1) |
|
public final PluginManifest.CoreBuilder |
loadsBeforepublic final PluginManifest.CoreBuilder loadsBefore(@Nonnull Class<?>... var1) |
|
public final PluginManifest.CoreBuilder |
optDependspublic final PluginManifest.CoreBuilder optDepends(@Nonnull Class<?>... var1) |
Исходный код
Показать/скрыть
class="kw">package com.hypixel.hytale.common.plugin;
class="kw">import com.hypixel.hytale.codec.Codec;
class="kw">import com.hypixel.hytale.codec.KeyedCodec;
class="kw">import com.hypixel.hytale.codec.builder.BuilderCodec;
class="kw">import com.hypixel.hytale.codec.codecs.array.ArrayCodec;
class="kw">import com.hypixel.hytale.codec.codecs.map.ObjectMapCodec;
class="kw">import com.hypixel.hytale.codec.validation.Validators;
class="kw">import com.hypixel.hytale.common.semver.Semver;
class="kw">import com.hypixel.hytale.common.semver.SemverRange;
class="kw">import com.hypixel.hytale.common.semver.SemverRangeCodec;
class="kw">import com.hypixel.hytale.common.util.java.ManifestUtil;
class="kw">import com.hypixel.hytale.logger.HytaleLogger;
class="kw">import it.unimi.dsi.fastutil.objects.Object2ObjectLinkedOpenHashMap;
class="kw">import it.unimi.dsi.fastutil.objects.ObjectArrayList;
class="kw">import java.util.ArrayList;
class="kw">import java.util.Collections;
class="kw">import java.util.List;
class="kw">import java.util.Map;
class="kw">import java.util.logging.Level;
class="kw">import java.util.regex.Pattern;
class="kw">import javax.annotation.Nonnull;
class="kw">import javax.annotation.Nullable;
class="kw">public class PluginManifest {
@Nonnull
class="kw">private class="kw">static class="kw">final HytaleLogger LOGGER = HytaleLogger.forEnclosingClass();
@Nonnull
class="kw">private class="kw">static class="kw">final BuilderCodec.Builder<PluginManifest> BUILDER = BuilderCodec.builder(PluginManifest.class, PluginManifest::new);
class="kw">private class="kw">static class="kw">final Pattern LEGACY_DATED_VERSION = Pattern.compile("^\\d{4}\\.\\d{2}\\.\\d{2}-.+");
@Nonnull
class="kw">private class="kw">static class="kw">final Codec<SemverRange> SERVER_VERSION_CODEC = new SemverRangeCodec() {
@Override
class="kw">protected SemverRange parse(String var1) {
if (PluginManifest.LEGACY_DATED_VERSION.matcher(var1).matches()) {
PluginManifest.LOGGER
.at(Level.WARNING)
.log(
"Manifest ServerVersion '%s' is in the pre-semver YYYY.MM.DD-<sha> format. Treated as wildcard for backward compatibility. Update to a SemverRange.",
var1
);
class="kw">return SemverRange.WILDCARD;
} else {
class="kw">return super.parse(var1);
}
}
};
@Nonnull
class="kw">public class="kw">static class="kw">final Codec<PluginManifest> CODEC = BUILDER.append(
new KeyedCodec<>("Group", Codec.STRING), (var0, var1) -> var0.group = var1, var0 -> var0.group
)
.add()
.<String>append(new KeyedCodec<>("Name", Codec.STRING), (var0, var1) -> var0.name = var1, var0 -> var0.name)
.addValidator(Validators.nonNull())
.add()
.append(new KeyedCodec<>("Version", Semver.CODEC), (var0, var1) -> var0.version = var1, var0 -> var0.version)
.add()
.append(new KeyedCodec<>("Description", Codec.STRING), (var0, var1) -> var0.description = var1, var0 -> var0.description)
.add()
.append(
new KeyedCodec<>("Authors", new ArrayCodec<>(AuthorInfo.CODEC, AuthorInfo[]::new)),
(var0, var1) -> var0.authors = List.of(var1),
var0 -> var0.authors.toArray(AuthorInfo[]::new)
)
.add()
.append(new KeyedCodec<>("Website", Codec.STRING), (var0, var1) -> var0.website = var1, var0 -> var0.website)
.add()
.append(new KeyedCodec<>("Main", Codec.STRING), (var0, var1) -> var0.main = var1, var0 -> var0.main)
.add()
.append(new KeyedCodec<>("ServerVersion", SERVER_VERSION_CODEC), (var0, var1) -> var0.serverVersion = var1, var0 -> var0.serverVersion)
.add()
.append(
new KeyedCodec<>(
"Dependencies",
new ObjectMapCodec<>(SemverRange.CODEC, Object2ObjectLinkedOpenHashMap::new, PluginIdentifier::toString, PluginIdentifier::fromString)
),
(var0, var1) -> var0.dependencies = var1,
var0 -> var0.dependencies
)
.add()
.append(
new KeyedCodec<>(
"OptionalDependencies",
new ObjectMapCodec<>(SemverRange.CODEC, Object2ObjectLinkedOpenHashMap::new, PluginIdentifier::toString, PluginIdentifier::fromString)
),
(var0, var1) -> var0.optionalDependencies = var1,
var0 -> var0.optionalDependencies
)
.add()
.append(
new KeyedCodec<>(
"LoadBefore",
new ObjectMapCodec<>(SemverRange.CODEC, Object2ObjectLinkedOpenHashMap::new, PluginIdentifier::toString, PluginIdentifier::fromString)
),
(var0, var1) -> var0.loadBefore = var1,
var0 -> var0.loadBefore
)
.add()
.append(new KeyedCodec<>("DisabledByDefault", Codec.BOOLEAN), (var0, var1) -> var0.disabledByDefault = var1, var0 -> var0.disabledByDefault)
.add()
.append(new KeyedCodec<>("IncludesAssetPack", Codec.BOOLEAN), (var0, var1) -> var0.includesAssetPack = var1, var0 -> var0.includesAssetPack)
.add()
.build();
@Nonnull
class="kw">public class="kw">static class="kw">final Codec<PluginManifest[]> ARRAY_CODEC = new ArrayCodec<>(CODEC, PluginManifest[]::new);
class="kw">public class="kw">static class="kw">final String CORE_GROUP = "Hytale";
class="kw">private class="kw">static class="kw">final Semver CORE_VERSION = Semver.fromString(ManifestUtil.getVersion() == null ? "0.0.0-dev" : ManifestUtil.getVersion());
class="kw">private String group;
class="kw">private String name;
class="kw">private Semver version;
@Nullable
class="kw">private String description;
@Nonnull
class="kw">private List<AuthorInfo> authors = new ObjectArrayList();
@Nullable
class="kw">private String website;
@Nullable
class="kw">private String main;
@Nullable
class="kw">private SemverRange serverVersion;
@Nonnull
class="kw">private Map<PluginIdentifier, SemverRange> dependencies = new Object2ObjectLinkedOpenHashMap();
@Nonnull
class="kw">private Map<PluginIdentifier, SemverRange> optionalDependencies = new Object2ObjectLinkedOpenHashMap();
@Nonnull
class="kw">private Map<PluginIdentifier, SemverRange> loadBefore = new Object2ObjectLinkedOpenHashMap();
@Nonnull
class="kw">private List<PluginManifest> subPlugins = new ArrayList<>();
class="kw">private boolean disabledByDefault = false;
class="kw">private boolean includesAssetPack = false;
@Nonnull
class="kw">public class="kw">static PluginManifest.ServerVersionCheck checkServerVersionCompatibility(@Nullable SemverRange var0, @Nullable String var1) {
if (var0 == null) {
class="kw">return PluginManifest.ServerVersionCheck.MISSING;
}
if (var1 == null) {
class="kw">return PluginManifest.ServerVersionCheck.PARSE_FAILED;
}
try {
class="kw">return var0.satisfies(Semver.fromString(var1)) ? PluginManifest.ServerVersionCheck.COMPATIBLE : PluginManifest.ServerVersionCheck.INCOMPATIBLE;
} catch (IllegalArgumentException var3) {
class="kw">return PluginManifest.ServerVersionCheck.PARSE_FAILED;
}
}
class="kw">public PluginManifest() {
}
class="kw">public PluginManifest(
@Nonnull String var1,
@Nonnull String var2,
@Nonnull Semver var3,
@Nullable String var4,
@Nonnull List<AuthorInfo> var5,
@Nullable String var6,
@Nullable String var7,
@Nonnull SemverRange var8,
@Nonnull Map<PluginIdentifier, SemverRange> var9,
@Nonnull Map<PluginIdentifier, SemverRange> var10,
@Nonnull Map<PluginIdentifier, SemverRange> var11,
@Nonnull List<PluginManifest> var12,
boolean var13
) {
this.group = var1;
this.name = var2;
this.version = var3;
this.description = var4;
this.authors = var5;
this.website = var6;
this.main = var7;
this.serverVersion = var8;
this.dependencies = var9;
this.optionalDependencies = var10;
this.loadBefore = var11;
this.subPlugins = var12;
this.disabledByDefault = var13;
}
class="kw">public String getGroup() {
class="kw">return this.group;
}
class="kw">public String getName() {
class="kw">return this.name;
}
class="kw">public Semver getVersion() {
class="kw">return this.version;
}
@Nullable
class="kw">public String getDescription() {
class="kw">return this.description;
}
@Nonnull
class="kw">public List<AuthorInfo> getAuthors() {
class="kw">return Collections.unmodifiableList(this.authors);
}
@Nullable
class="kw">public String getWebsite() {
class="kw">return this.website;
}
class="kw">public void setGroup(@Nonnull String var1) {
this.group = var1;
}
class="kw">public void setName(@Nonnull String var1) {
this.name = var1;
}
class="kw">public void setVersion(@Nullable Semver var1) {
this.version = var1;
}
class="kw">public void setDescription(@Nullable String var1) {
this.description = var1;
}
class="kw">public void setAuthors(@Nonnull List<AuthorInfo> var1) {
this.authors = var1;
}
class="kw">public void setWebsite(@Nullable String var1) {
this.website = var1;
}
@Nullable
class="kw">public String getMain() {
class="kw">return this.main;
}
class="kw">public SemverRange getServerVersion() {
class="kw">return this.serverVersion;
}
class="kw">public void setServerVersion(@Nullable SemverRange var1) {
this.serverVersion = var1;
}
@Nonnull
class="kw">public Map<PluginIdentifier, SemverRange> getDependencies() {
class="kw">return Collections.unmodifiableMap(this.dependencies);
}
class="kw">public void injectDependency(PluginIdentifier var1, SemverRange var2) {
this.dependencies.put(var1, var2);
}
@Nonnull
class="kw">public Map<PluginIdentifier, SemverRange> getOptionalDependencies() {
class="kw">return Collections.unmodifiableMap(this.optionalDependencies);
}
@Nonnull
class="kw">public Map<PluginIdentifier, SemverRange> getLoadBefore() {
class="kw">return Collections.unmodifiableMap(this.loadBefore);
}
class="kw">public boolean isDisabledByDefault() {
class="kw">return this.disabledByDefault;
}
class="kw">public boolean includesAssetPack() {
class="kw">return this.includesAssetPack;
}
@Nonnull
class="kw">public List<PluginManifest> getSubPlugins() {
class="kw">return Collections.unmodifiableList(this.subPlugins);
}
class="kw">public void inherit(@Nonnull PluginManifest var1) {
if (this.group == null) {
this.group = var1.group;
}
if (this.version == null) {
this.version = var1.version;
}
if (this.description == null) {
this.description = var1.description;
}
if (this.authors.isEmpty()) {
this.authors = var1.authors;
}
if (this.website == null) {
this.website = var1.website;
}
if (!this.disabledByDefault) {
this.disabledByDefault = var1.disabledByDefault;
}
this.dependencies.put(new PluginIdentifier(var1), SemverRange.exact(var1.version));
}
@Nonnull
@Override
class="kw">public String toString() {
class="kw">return "PluginManifest{group='"
+ this.group
+ "', name='"
+ this.name
+ "', version='"
+ this.version
+ "', description='"
+ this.description
+ "', authors="
+ this.authors
+ ", website='"
+ this.website
+ "', main='"
+ this.main
+ "', serverVersion="
+ this.serverVersion
+ ", dependencies="
+ this.dependencies
+ ", optionalDependencies="
+ this.optionalDependencies
+ ", disabledByDefault="
+ this.disabledByDefault
+ "}";
}
@Nonnull
class="kw">public class="kw">static PluginManifest.CoreBuilder corePlugin(@Nonnull Class<?> var0) {
class="kw">return new PluginManifest.CoreBuilder("Hytale", var0.getSimpleName(), CORE_VERSION, var0.getName());
}
class="kw">static {
BUILDER.append(
new KeyedCodec<>("SubPlugins", new ArrayCodec<>(CODEC, PluginManifest[]::new)),
(var0, var1) -> var0.subPlugins = List.of(var1),
var0 -> var0.subPlugins.toArray(PluginManifest[]::new)
)
.add();
}
class="kw">public class="kw">static class CoreBuilder {
@Nonnull
class="kw">private class="kw">final String group;
@Nonnull
class="kw">private class="kw">final String name;
@Nonnull
class="kw">private class="kw">final Semver version;
@Nullable
class="kw">private String description;
@Nonnull
class="kw">private class="kw">final String main;
@Nonnull
class="kw">private class="kw">final Map<PluginIdentifier, SemverRange> dependencies = new Object2ObjectLinkedOpenHashMap();
@Nonnull
class="kw">private class="kw">final Map<PluginIdentifier, SemverRange> optionalDependencies = new Object2ObjectLinkedOpenHashMap();
@Nonnull
class="kw">private class="kw">final Map<PluginIdentifier, SemverRange> loadBefore = new Object2ObjectLinkedOpenHashMap();
@Nonnull
class="kw">public class="kw">static PluginManifest.CoreBuilder corePlugin(@Nonnull Class<?> var0) {
class="kw">return new PluginManifest.CoreBuilder("Hytale", var0.getSimpleName(), PluginManifest.CORE_VERSION, var0.getName());
}
class="kw">private CoreBuilder(@Nonnull String var1, @Nonnull String var2, @Nonnull Semver var3, @Nonnull String var4) {
this.group = var1;
this.name = var2;
this.version = var3;
this.main = var4;
}
@Nonnull
class="kw">public PluginManifest.CoreBuilder description(@Nonnull String var1) {
this.description = var1;
class="kw">return this;
}
@Nonnull
@SafeVarargs
class="kw">public class="kw">final PluginManifest.CoreBuilder depends(@Nonnull Class<?>... var1) {
for (Class var5 : var1) {
this.dependencies.put(new PluginIdentifier("Hytale", var5.getSimpleName()), SemverRange.WILDCARD);
}
class="kw">return this;
}
@Nonnull
@SafeVarargs
class="kw">public class="kw">final PluginManifest.CoreBuilder optDepends(@Nonnull Class<?>... var1) {
for (Class var5 : var1) {
this.optionalDependencies.put(new PluginIdentifier("Hytale", var5.getSimpleName()), SemverRange.WILDCARD);
}
class="kw">return this;
}
@Nonnull
@SafeVarargs
class="kw">public class="kw">final PluginManifest.CoreBuilder loadsBefore(@Nonnull Class<?>... var1) {
for (Class var5 : var1) {
this.loadBefore.put(new PluginIdentifier("Hytale", var5.getSimpleName()), SemverRange.WILDCARD);
}
class="kw">return this;
}
@Nonnull
class="kw">public PluginManifest build() {
class="kw">return new PluginManifest(
this.group,
this.name,
this.version,
this.description,
Collections.emptyList(),
null,
this.main,
SemverRange.WILDCARD,
this.dependencies,
this.optionalDependencies,
this.loadBefore,
Collections.emptyList(),
false
);
}
}
class="kw">public enum ServerVersionCheck {
COMPATIBLE,
MISSING,
PARSE_FAILED,
INCOMPATIBLE;
ServerVersionCheck() {
}
}
}