Skip to content

Commit

Permalink
perf: Ignore resolvers if empty
Browse files Browse the repository at this point in the history
api: Implement Resolvers utility class
  • Loading branch information
4drian3d committed Jun 18, 2022
1 parent 24a7591 commit 0bb6f62
Show file tree
Hide file tree
Showing 3 changed files with 77 additions and 18 deletions.
Expand Up @@ -9,6 +9,7 @@
import org.jetbrains.annotations.NotNull;

import me.dreamerzero.miniplaceholders.api.enums.Platform;
import me.dreamerzero.miniplaceholders.api.utils.Resolvers;
import me.dreamerzero.miniplaceholders.connect.InternalPlatform;
import net.kyori.adventure.audience.Audience;
import net.kyori.adventure.text.minimessage.tag.resolver.TagResolver;
Expand All @@ -34,7 +35,7 @@ private MiniPlaceholders(){}
* @return the platform
* @since 1.0.0
*/
public static @NotNull Platform getPlatform(){
public static @NotNull Platform getPlatform() {
return InternalPlatform.platform() == InternalPlatform.PAPER
? Platform.PAPER
: Platform.VELOCITY;
Expand All @@ -51,10 +52,13 @@ private MiniPlaceholders(){}
* @since 1.0.0
*/
public static @NotNull TagResolver getGlobalPlaceholders() {
final TagResolver.Builder resolvers = TagResolver.builder();
expansions.forEach(exp -> resolvers.resolver(exp.globalPlaceholders()));

return resolvers.build();
final TagResolver.Builder builder = TagResolver.builder();
for (final Expansion expansion : expansions) {
final TagResolver resolver = expansion.globalPlaceholders();
if (resolver != TagResolver.empty())
builder.resolver(resolver);
}
return builder.build();
}

/**
Expand All @@ -72,8 +76,11 @@ private MiniPlaceholders(){}
Objects.requireNonNull(audience, () -> "audience cannot be null");

final TagResolver.Builder resolvers = TagResolver.builder();
expansions.forEach(exp -> resolvers.resolver(exp.audiencePlaceholders(audience)));

for (Expansion expansion : expansions) {
final TagResolver resolver = expansion.audiencePlaceholders(audience);
if (resolver != TagResolver.empty())
resolvers.resolver(resolver);
}
return resolvers.build();
}

Expand All @@ -93,10 +100,15 @@ private MiniPlaceholders(){}
Objects.requireNonNull(audience, () -> "audience cannot be null");
Objects.requireNonNull(otherAudience, () -> "otherAudience cannot be null");

final TagResolver.Builder resolvers = TagResolver.builder();
expansions.forEach(exp -> resolvers.resolver(exp.relationalPlaceholders(audience, otherAudience)));
final TagResolver.Builder builder = TagResolver.builder();
for (final Expansion expansion : expansions) {
Resolvers.applyIfNotEmpty(
expansion.relationalPlaceholders(audience, otherAudience),
builder
);
}

return resolvers.build();
return builder.build();
}

/**
Expand All @@ -122,9 +134,9 @@ private MiniPlaceholders(){}
Objects.requireNonNull(audience, () -> "audience cannot be null");
final TagResolver.Builder builder = TagResolver.builder();

for(final Expansion expansion : expansions) {
builder.resolver(expansion.audiencePlaceholders(audience));
builder.resolver(expansion.globalPlaceholders());
for (final Expansion expansion : expansions) {
Resolvers.applyIfNotEmpty(expansion.audiencePlaceholders(audience), builder);
Resolvers.applyIfNotEmpty(expansion.globalPlaceholders(), builder);
}

return builder.build();
Expand Down Expand Up @@ -157,10 +169,10 @@ private MiniPlaceholders(){}
Objects.requireNonNull(otherAudience, () -> "otherAudience cannot be null");

final TagResolver.Builder builder = TagResolver.builder();
for(final Expansion expansion : expansions) {
builder.resolver(expansion.audiencePlaceholders(audience));
builder.resolver(expansion.relationalPlaceholders(audience, otherAudience));
builder.resolver(expansion.globalPlaceholders());
for (final Expansion expansion : expansions) {
Resolvers.applyIfNotEmpty(expansion.audiencePlaceholders(audience), builder);
Resolvers.applyIfNotEmpty(expansion.relationalPlaceholders(audience, otherAudience), builder);
Resolvers.applyIfNotEmpty(expansion.globalPlaceholders(), builder);
}

return builder.build();
Expand Down
@@ -0,0 +1,47 @@
package me.dreamerzero.miniplaceholders.api.utils;

import org.jetbrains.annotations.NotNull;

import net.kyori.adventure.text.minimessage.tag.resolver.TagResolver;

/**
* Class of utilities to manage TagResolvers
* @since 1.2.0
*/
public final class Resolvers {
private Resolvers() {}

/**
* Check if the TagResolver is an instance of TagResolver.empty(),
* that is, it will always return null
* @param resolver the resolver to check
* @return true if the TagResolver is the same as TagResolver.empty(), else false
* @since 1.2.0
*/
public static boolean isEmpty(final @NotNull TagResolver resolver) {
return resolver == TagResolver.empty();
}

/**
* Checks if the TagResolver provided is not a TagResolver.empty()
* @param resolver the resolver to check
* @return false if the TagResolver is the same as TagResolver.empty(), else true
* @since 1.2.0
*
*/
public static boolean isNotEmpty(final @NotNull TagResolver resolver) {
return resolver != TagResolver.empty();
}

/**
* Applies a TagResolver to a TagResolver.Builder in case it is not a TagResolver.empty()
* @param resolver the resolver to check
* @param builder the resolver that can be added to the builder
* @since 1.2.0
*/
public static void applyIfNotEmpty(final @NotNull TagResolver resolver, final @NotNull TagResolver.Builder builder) {
if (isNotEmpty(resolver)) {
builder.resolver(resolver);
}
}
}
2 changes: 1 addition & 1 deletion build.gradle.kts
Expand Up @@ -8,7 +8,7 @@ plugins {
allprojects {
apply(plugin = "java")
group = "me.dreamerzero.miniplaceholders"
version = "1.1.1"
version = "1.2.0-SNAPSHOT"
description = "MiniPlaceholders"
}

Expand Down

0 comments on commit 0bb6f62

Please sign in to comment.