mirror of
https://github.com/MiniPlaceholders/MiniPlaceholders.git
synced 2026-11-07 09:52:42 -05:00
Compare commits
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
9a7f204308 | ||
|
|
8ec1f13661 | ||
|
|
2c96be8796 | ||
|
|
20a8c111f5 |
No files matched your search
+18
-4
@@ -29,14 +29,12 @@ jmh {
|
||||
fork.set(2)
|
||||
}
|
||||
java {
|
||||
sourceCompatibility = JavaVersion.VERSION_17
|
||||
targetCompatibility = JavaVersion.VERSION_17
|
||||
withSourcesJar()
|
||||
withJavadocJar()
|
||||
}
|
||||
|
||||
val projectGroup = project.group as String
|
||||
val projectVersion = project.version as String
|
||||
val projectGroup: String = project.group as String
|
||||
val projectVersion: String = project.version as String
|
||||
|
||||
publishing {
|
||||
publications {
|
||||
@@ -54,4 +52,20 @@ tasks.withType<Javadoc> {
|
||||
"https://jd.adventure.kyori.net/api/4.10.1/",
|
||||
"https://jd.adventure.kyori.net/text-minimessage/4.10.1/"
|
||||
)
|
||||
}
|
||||
|
||||
java.toolchain.languageVersion.set(JavaLanguageVersion.of(17))
|
||||
|
||||
tasks {
|
||||
compileJava {
|
||||
options.encoding = Charsets.UTF_8.name()
|
||||
|
||||
options.release.set(11)
|
||||
}
|
||||
javadoc {
|
||||
options.encoding = Charsets.UTF_8.name()
|
||||
}
|
||||
processResources {
|
||||
filteringCharset = Charsets.UTF_8.name()
|
||||
}
|
||||
}
|
||||
@@ -9,6 +9,7 @@ import java.util.function.Predicate;
|
||||
import me.dreamerzero.miniplaceholders.api.placeholder.AudiencePlaceholder;
|
||||
import me.dreamerzero.miniplaceholders.api.placeholder.RelationalPlaceholder;
|
||||
import net.kyori.adventure.audience.Audience;
|
||||
import net.kyori.adventure.builder.AbstractBuilder;
|
||||
import net.kyori.adventure.text.minimessage.Context;
|
||||
import net.kyori.adventure.text.minimessage.tag.Tag;
|
||||
import net.kyori.adventure.text.minimessage.tag.resolver.ArgumentQueue;
|
||||
@@ -47,7 +48,7 @@ public interface Expansion {
|
||||
* @return A TagResolver with variable placeholders of an Audience
|
||||
* @since 1.0.0
|
||||
*/
|
||||
@NotNull TagResolver audiencePlaceholders(@NotNull Audience audience);
|
||||
@NotNull TagResolver audiencePlaceholders(@NotNull final Audience audience);
|
||||
|
||||
/**
|
||||
* Get the relational placeholders based on two audiences
|
||||
@@ -60,7 +61,7 @@ public interface Expansion {
|
||||
* @return A TagResolver with variable placeholders between 2 {@link Audience}s
|
||||
* @since 1.0.0
|
||||
*/
|
||||
@NotNull TagResolver relationalPlaceholders(@NotNull Audience audience, @NotNull Audience otherAudience);
|
||||
@NotNull TagResolver relationalPlaceholders(@NotNull final Audience audience, @NotNull final Audience otherAudience);
|
||||
|
||||
/**
|
||||
* Get global placeholders
|
||||
@@ -81,7 +82,7 @@ public interface Expansion {
|
||||
* @return a new expansion builder
|
||||
* @since 1.0.0
|
||||
*/
|
||||
public static @NotNull Expansion.Builder builder(@NotNull String name){
|
||||
public static @NotNull Expansion.Builder builder(@NotNull final String name){
|
||||
return new ExpansionImpl.Builder(name);
|
||||
}
|
||||
|
||||
@@ -107,7 +108,7 @@ public interface Expansion {
|
||||
*
|
||||
* @since 1.0.0
|
||||
*/
|
||||
public static interface Builder {
|
||||
public static interface Builder extends AbstractBuilder<Expansion> {
|
||||
/**
|
||||
* Adds an audience placeholder
|
||||
*
|
||||
@@ -120,7 +121,7 @@ public interface Expansion {
|
||||
* @return the {@link Builder} itself
|
||||
* @since 1.0.0
|
||||
*/
|
||||
Builder audiencePlaceholder(@NotNull String key, @NotNull AudiencePlaceholder audiencePlaceholder);
|
||||
@NotNull Builder audiencePlaceholder(@NotNull final String key, @NotNull final AudiencePlaceholder audiencePlaceholder);
|
||||
|
||||
/**
|
||||
* Adds an Relational Placeholder based on two audiences
|
||||
@@ -138,7 +139,7 @@ public interface Expansion {
|
||||
* @return the {@link Builder} itself
|
||||
* @since 1.0.0
|
||||
*/
|
||||
Builder relationalPlaceholder(@NotNull String key, @NotNull RelationalPlaceholder relationalPlaceholder);
|
||||
@NotNull Builder relationalPlaceholder(@NotNull final String key, @NotNull final RelationalPlaceholder relationalPlaceholder);
|
||||
|
||||
/**
|
||||
* Adds a global placeholder
|
||||
@@ -150,7 +151,7 @@ public interface Expansion {
|
||||
* @return the {@link Builder} itself
|
||||
* @since 1.0.0
|
||||
*/
|
||||
Builder globalPlaceholder(@NotNull String key, BiFunction<ArgumentQueue, Context, Tag> function);
|
||||
@NotNull Builder globalPlaceholder(@NotNull final String key, final BiFunction<ArgumentQueue, Context, Tag> function);
|
||||
|
||||
/**
|
||||
* Filter the type of Audiences that this expansion can receive
|
||||
@@ -165,7 +166,7 @@ public interface Expansion {
|
||||
* @return the {@link Builder} itself
|
||||
* @since 1.0.0
|
||||
*/
|
||||
Builder filter(@Nullable Class<? extends Audience> clazz);
|
||||
@NotNull Builder filter(@Nullable final Class<? extends Audience> clazz);
|
||||
|
||||
/**
|
||||
* Filters the audiences that this expansion can receive through a Predicate
|
||||
@@ -179,13 +180,6 @@ public interface Expansion {
|
||||
* @return the {@link Builder} itself
|
||||
* @since 1.0.0
|
||||
*/
|
||||
Builder filter(@NotNull Predicate<Audience> predicate);
|
||||
|
||||
/**
|
||||
* Build the Expansion
|
||||
* @return a new {@link Expansion}
|
||||
* @since 1.0.0
|
||||
*/
|
||||
@NotNull Expansion build();
|
||||
@NotNull Builder filter(@NotNull final Predicate<Audience> predicate);
|
||||
}
|
||||
}
|
||||
@@ -1,5 +1,6 @@
|
||||
package me.dreamerzero.miniplaceholders.api;
|
||||
|
||||
import java.util.Collection;
|
||||
import java.util.HashSet;
|
||||
import java.util.Locale;
|
||||
import java.util.Objects;
|
||||
@@ -22,23 +23,29 @@ import net.kyori.adventure.text.minimessage.tag.resolver.TagResolver;
|
||||
|
||||
final class ExpansionImpl implements Expansion {
|
||||
private final String name;
|
||||
private final Set<Tags.Single> audiencePlaceholders;
|
||||
private final Set<Tags.Relational> relationalPlaceholders;
|
||||
private final Tags.Single[] audiencePlaceholders;
|
||||
private final Tags.Relational[] relationalPlaceholders;
|
||||
private final TagResolver globalPlaceholders;
|
||||
private final Class<? extends Audience> filterClass;
|
||||
private final Predicate<Audience> predicateFilter;
|
||||
|
||||
ExpansionImpl(
|
||||
@NotNull String expansionName,
|
||||
@Nullable Set<Tags.Single> audiencePlaceholders,
|
||||
@Nullable Set<Tags.Relational> relationalPlaceholders,
|
||||
@Nullable TagResolver globalPlaceholders,
|
||||
@Nullable Class<? extends Audience> filterClass,
|
||||
@Nullable Predicate<Audience> predicateFilter){
|
||||
@NotNull final String expansionName,
|
||||
@Nullable final Collection<Tags.Single> audiencePlaceholders,
|
||||
@Nullable final Collection<Tags.Relational> relationalPlaceholders,
|
||||
@Nullable final TagResolver globalPlaceholders,
|
||||
@Nullable final Class<? extends Audience> filterClass,
|
||||
@Nullable final Predicate<Audience> predicateFilter){
|
||||
this.name = expansionName+"-";
|
||||
this.audiencePlaceholders = audiencePlaceholders;
|
||||
this.relationalPlaceholders = relationalPlaceholders;
|
||||
this.globalPlaceholders = globalPlaceholders;
|
||||
this.audiencePlaceholders = audiencePlaceholders != null
|
||||
? audiencePlaceholders.toArray(Tags.Single[]::new)
|
||||
: new Tags.Single[0];
|
||||
this.relationalPlaceholders = relationalPlaceholders != null
|
||||
? relationalPlaceholders.toArray(Tags.Relational[]::new)
|
||||
: new Tags.Relational[0];
|
||||
this.globalPlaceholders = globalPlaceholders == null
|
||||
? TagResolver.empty()
|
||||
: globalPlaceholders;
|
||||
this.filterClass = filterClass;
|
||||
this.predicateFilter = predicateFilter;
|
||||
}
|
||||
@@ -49,49 +56,49 @@ final class ExpansionImpl implements Expansion {
|
||||
}
|
||||
|
||||
@Override
|
||||
public @NotNull TagResolver audiencePlaceholders(@NotNull Audience audience){
|
||||
if(audiencePlaceholders == null) return TagResolver.empty();
|
||||
public @NotNull TagResolver audiencePlaceholders(@NotNull final Audience audience){
|
||||
if(audiencePlaceholders.length == 0) return TagResolver.empty();
|
||||
|
||||
Objects.requireNonNull(audience, () -> "the audience cannot be null");
|
||||
|
||||
if(this.singleFilter(audience)) return TagResolver.empty();
|
||||
|
||||
TagResolver.Builder placeholders = TagResolver.builder();
|
||||
for(Tags.Single pl : this.audiencePlaceholders){
|
||||
final TagResolver.Builder placeholders = TagResolver.builder();
|
||||
for(final Tags.Single pl : this.audiencePlaceholders){
|
||||
placeholders.resolver(pl.of(audience));
|
||||
}
|
||||
return placeholders.build();
|
||||
}
|
||||
|
||||
private boolean singleFilter(Audience audience){
|
||||
private boolean singleFilter(final Audience audience){
|
||||
return filterClass != null && !filterClass.isInstance(audience)
|
||||
|| predicateFilter != null && predicateFilter.test(audience);
|
||||
}
|
||||
|
||||
@Override
|
||||
public @NotNull TagResolver relationalPlaceholders(@NotNull Audience audience, @NotNull Audience otherAudience){
|
||||
if(relationalPlaceholders == null) return TagResolver.empty();
|
||||
public @NotNull TagResolver relationalPlaceholders(@NotNull final Audience audience, @NotNull final Audience otherAudience){
|
||||
if(relationalPlaceholders.length == 0) return TagResolver.empty();
|
||||
|
||||
Objects.requireNonNull(audience, () -> "the audience cannot be null");
|
||||
Objects.requireNonNull(otherAudience, () -> "the other audience cannot be null");
|
||||
|
||||
if(this.relationalFilter(audience, otherAudience)) return TagResolver.empty();
|
||||
|
||||
TagResolver.Builder placeholders = TagResolver.builder();
|
||||
for(Tags.Relational pl : this.relationalPlaceholders){
|
||||
final TagResolver.Builder placeholders = TagResolver.builder();
|
||||
for(final Tags.Relational pl : this.relationalPlaceholders){
|
||||
placeholders.resolver(pl.of(audience, otherAudience));
|
||||
}
|
||||
return placeholders.build();
|
||||
}
|
||||
|
||||
private boolean relationalFilter(Audience audience, Audience otherAudience){
|
||||
private boolean relationalFilter(final Audience audience, final Audience otherAudience){
|
||||
return filterClass != null && (!filterClass.isInstance(audience) || !filterClass.isInstance(otherAudience))
|
||||
|| predicateFilter != null && (!predicateFilter.test(audience) || !predicateFilter.test(otherAudience));
|
||||
}
|
||||
|
||||
@Override
|
||||
public @NotNull TagResolver globalPlaceholders(){
|
||||
return this.globalPlaceholders != null ? this.globalPlaceholders : TagResolver.empty();
|
||||
return this.globalPlaceholders;
|
||||
}
|
||||
|
||||
@Override
|
||||
@@ -99,7 +106,7 @@ final class ExpansionImpl implements Expansion {
|
||||
MiniPlaceholders.expansions.add(this);
|
||||
}
|
||||
|
||||
static class Builder implements Expansion.Builder {
|
||||
static final class Builder implements Expansion.Builder {
|
||||
private final String expansionName;
|
||||
private Set<Tags.Single> audiencePlaceholders;
|
||||
private Set<Tags.Relational> relationalPlaceholders;
|
||||
@@ -107,13 +114,13 @@ final class ExpansionImpl implements Expansion {
|
||||
private Class<? extends Audience> filterClass;
|
||||
private Predicate<Audience> predicateFilter;
|
||||
|
||||
Builder(@NotNull String name){
|
||||
Builder(@NotNull final String name){
|
||||
this.expansionName = Conditions.nonNullOrEmptyString(name, () -> "expansion name")
|
||||
.toLowerCase(Locale.ROOT).concat("_");
|
||||
}
|
||||
|
||||
@Override
|
||||
public Builder audiencePlaceholder(@NotNull String key, @NotNull AudiencePlaceholder audiencePlaceholder){
|
||||
public Builder audiencePlaceholder(@NotNull final String key, @NotNull final AudiencePlaceholder audiencePlaceholder){
|
||||
Conditions.nonNullOrEmptyString(key, () -> "placeholder key");
|
||||
Objects.requireNonNull(audiencePlaceholder, () -> "the audience placeholder cannot be null");
|
||||
|
||||
@@ -124,7 +131,7 @@ final class ExpansionImpl implements Expansion {
|
||||
}
|
||||
|
||||
@Override
|
||||
public Builder relationalPlaceholder(@NotNull String key, @NotNull RelationalPlaceholder relationalPlaceholder){
|
||||
public Builder relationalPlaceholder(@NotNull final String key, @NotNull final RelationalPlaceholder relationalPlaceholder){
|
||||
Conditions.nonNullOrEmptyString(key, () -> "placeholder key");
|
||||
Objects.requireNonNull(relationalPlaceholder, () -> "the relational placeholder cannot be null");
|
||||
|
||||
@@ -135,8 +142,7 @@ final class ExpansionImpl implements Expansion {
|
||||
}
|
||||
|
||||
@Override
|
||||
public Builder globalPlaceholder(@NotNull String key,
|
||||
BiFunction<ArgumentQueue, Context, Tag> function){
|
||||
public Builder globalPlaceholder(@NotNull final String key, @NotNull final BiFunction<ArgumentQueue, Context, Tag> function){
|
||||
Conditions.nonNullOrEmptyString(key, () -> "placeholder key");
|
||||
Objects.requireNonNull(function, () -> "the global placeholder cannot be null");
|
||||
|
||||
@@ -147,13 +153,13 @@ final class ExpansionImpl implements Expansion {
|
||||
}
|
||||
|
||||
@Override
|
||||
public Builder filter(Class<? extends Audience> clazz) {
|
||||
public Builder filter(@Nullable final Class<? extends Audience> clazz) {
|
||||
this.filterClass = clazz;
|
||||
return this;
|
||||
}
|
||||
|
||||
@Override
|
||||
public Builder filter(Predicate<Audience> predicate){
|
||||
public Builder filter(@NotNull final Predicate<Audience> predicate){
|
||||
this.predicateFilter = predicate;
|
||||
return this;
|
||||
}
|
||||
|
||||
@@ -1,5 +1,7 @@
|
||||
package me.dreamerzero.miniplaceholders.api;
|
||||
|
||||
import java.util.Objects;
|
||||
|
||||
import org.jetbrains.annotations.NotNull;
|
||||
import org.jetbrains.annotations.Nullable;
|
||||
|
||||
@@ -15,11 +17,11 @@ import net.kyori.adventure.text.minimessage.tag.resolver.TagResolver;
|
||||
final class Tags {
|
||||
private Tags(){}
|
||||
|
||||
static Relational relational(String name, RelationalPlaceholder relationalPlaceholder){
|
||||
static Relational relational(@NotNull final String name, @NotNull final RelationalPlaceholder relationalPlaceholder){
|
||||
return new Tags.Relational(name, relationalPlaceholder);
|
||||
}
|
||||
|
||||
static Single single(String name, AudiencePlaceholder audiencePlaceholder){
|
||||
static Single single(@NotNull final String name, @NotNull final AudiencePlaceholder audiencePlaceholder){
|
||||
return new Single(name, audiencePlaceholder);
|
||||
}
|
||||
|
||||
@@ -27,27 +29,39 @@ final class Tags {
|
||||
private final RelationalPlaceholder relationalPlaceholder;
|
||||
private final String key;
|
||||
|
||||
Relational(String key, RelationalPlaceholder relationalPlaceholder){
|
||||
Relational(final String key, final RelationalPlaceholder relationalPlaceholder){
|
||||
this.relationalPlaceholder = relationalPlaceholder;
|
||||
this.key = key;
|
||||
}
|
||||
|
||||
TagResolver of(Audience audience, Audience otherAudience){
|
||||
return TagResolver.resolver(new TagResolver(){
|
||||
TagResolver of(@NotNull final Audience audience, @NotNull final Audience otherAudience){
|
||||
return new TagResolver(){
|
||||
@Override
|
||||
public @Nullable Tag resolve(@NotNull String name, @NotNull ArgumentQueue arguments,
|
||||
@NotNull Context ctx) throws ParsingException {
|
||||
if(this.has(name)){
|
||||
return relationalPlaceholder.tag(audience, otherAudience, arguments, ctx);
|
||||
}
|
||||
return null;
|
||||
|
||||
return this.has(name)
|
||||
? relationalPlaceholder.tag(audience, otherAudience, arguments, ctx)
|
||||
: null;
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean has(@NotNull String name) {
|
||||
return key.equalsIgnoreCase(name);
|
||||
}
|
||||
});
|
||||
};
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean equals(Object o){
|
||||
if(o == this) return true;
|
||||
if(!(o instanceof Relational)) return false;
|
||||
return ((Relational)o).key.equals(this.key);
|
||||
}
|
||||
|
||||
@Override
|
||||
public int hashCode(){
|
||||
return Objects.hash(key);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -55,25 +69,39 @@ final class Tags {
|
||||
private final AudiencePlaceholder audiencePlaceholder;
|
||||
private final String key;
|
||||
|
||||
private Single(String key, AudiencePlaceholder audiencePlaceholder){
|
||||
private Single(@NotNull final String key, @NotNull final AudiencePlaceholder audiencePlaceholder){
|
||||
this.key = key;
|
||||
this.audiencePlaceholder = audiencePlaceholder;
|
||||
}
|
||||
|
||||
public TagResolver of(Audience audience){
|
||||
return TagResolver.resolver(new TagResolver() {
|
||||
TagResolver of(@NotNull final Audience audience){
|
||||
return new TagResolver() {
|
||||
|
||||
@Override
|
||||
public @Nullable Tag resolve(@NotNull String name, @NotNull ArgumentQueue arguments,
|
||||
@NotNull Context ctx) throws ParsingException {
|
||||
return this.has(name) ? audiencePlaceholder.tag(audience, arguments, ctx) : null;
|
||||
return this.has(name)
|
||||
? audiencePlaceholder.tag(audience, arguments, ctx)
|
||||
: null;
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean has(@NotNull String name) {
|
||||
return key.equalsIgnoreCase(name);
|
||||
}
|
||||
});
|
||||
};
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean equals(Object o){
|
||||
if(o == this) return true;
|
||||
if(!(o instanceof Single)) return false;
|
||||
return ((Single)o).key.equals(this.key);
|
||||
}
|
||||
|
||||
@Override
|
||||
public int hashCode(){
|
||||
return Objects.hash(key);
|
||||
}
|
||||
}
|
||||
}
|
||||
+1
-1
@@ -8,7 +8,7 @@ plugins {
|
||||
allprojects {
|
||||
apply(plugin = "java")
|
||||
group = "me.dreamerzero.miniplaceholders"
|
||||
version = "1.0.0"
|
||||
version = "1.0.1"
|
||||
description = "MiniPlaceholders"
|
||||
}
|
||||
|
||||
|
||||
@@ -16,4 +16,12 @@ dependencies {
|
||||
blossom{
|
||||
replaceToken("{version}", version)
|
||||
replaceTokenIn("src/main/java/me/dreamerzero/miniplaceholders/common/PluginConstants.java")
|
||||
}
|
||||
|
||||
tasks {
|
||||
compileJava {
|
||||
options.encoding = Charsets.UTF_8.name()
|
||||
|
||||
options.release.set(17)
|
||||
}
|
||||
}
|
||||
@@ -10,14 +10,15 @@ dependencies {
|
||||
paperDevBundle("1.18.2-R0.1-SNAPSHOT")
|
||||
}
|
||||
|
||||
val pluginVersion = version
|
||||
val pluginVersion: String = version as String
|
||||
|
||||
bukkit {
|
||||
name = "MiniPlaceholders"
|
||||
main = "me.dreamerzero.miniplaceholders.paper.PaperPlugin"
|
||||
apiVersion = "1.18"
|
||||
website = "https://github.com/4drian3d/MiniPlaceholders"
|
||||
authors = listOf("4drian3d")
|
||||
version = pluginVersion as String
|
||||
version = pluginVersion
|
||||
}
|
||||
|
||||
java.toolchain.languageVersion.set(JavaLanguageVersion.of(17))
|
||||
|
||||
@@ -7,7 +7,6 @@ pluginManagement {
|
||||
|
||||
rootProject.name = "miniplaceholders-parent"
|
||||
|
||||
|
||||
include("miniplaceholders-api")
|
||||
include("miniplaceholders-common")
|
||||
include("miniplaceholders-paper")
|
||||
|
||||
@@ -5,4 +5,10 @@ dependencies {
|
||||
compileOnly(project(":miniplaceholders-api"))
|
||||
}
|
||||
|
||||
java.toolchain.languageVersion.set(JavaLanguageVersion.of(17))
|
||||
java.toolchain.languageVersion.set(JavaLanguageVersion.of(17))
|
||||
|
||||
tasks.compileJava {
|
||||
options.encoding = Charsets.UTF_8.name()
|
||||
|
||||
options.release.set(17)
|
||||
}
|
||||
Reference in new issue
Block a user