Skip to content

Commit

Permalink
add MiniPlaceholders hook
Browse files Browse the repository at this point in the history
  • Loading branch information
HSGamer committed Jan 31, 2025
1 parent e877708 commit 62672c0
Show file tree
Hide file tree
Showing 9 changed files with 122 additions and 11 deletions.
19 changes: 19 additions & 0 deletions spigot/plugin/pom.xml
Original file line number Diff line number Diff line change
Expand Up @@ -90,6 +90,10 @@
<id>placeholderapi</id>
<url>https://repo.extendedclip.com/releases/</url>
</repository>
<repository>
<id>papermc</id>
<url>https://repo.papermc.io/repository/maven-public/</url>
</repository>
</repositories>

<dependencies>
Expand Down Expand Up @@ -195,5 +199,20 @@
<version>2.11.6</version>
<scope>provided</scope>
</dependency>
<dependency>
<groupId>io.github.miniplaceholders</groupId>
<artifactId>miniplaceholders-api</artifactId>
<version>2.2.3</version>
<scope>provided</scope>
</dependency>

<!-- For MiniPlaceholders -->
<!--suppress VulnerableLibrariesLocal -->
<dependency>
<groupId>io.papermc.paper</groupId>
<artifactId>paper-api</artifactId>
<version>1.19.4-R0.1-SNAPSHOT</version>
<scope>provided</scope>
</dependency>
</dependencies>
</project>
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,8 @@

import io.github.projectunified.minelib.plugin.base.Loadable;
import me.hsgamer.topper.spigot.plugin.TopperPlugin;
import me.hsgamer.topper.spigot.plugin.hook.papi.PlaceholderAPIHook;
import me.hsgamer.topper.spigot.plugin.hook.miniplaceholders.MiniPlaceholdersHook;
import me.hsgamer.topper.spigot.plugin.hook.placeholderapi.PlaceholderAPIHook;

import java.util.ArrayList;
import java.util.List;
Expand All @@ -23,6 +24,9 @@ private void registerHooks() {
if (isPluginLoaded("PlaceholderAPI")) {
hooks.add(new PlaceholderAPIHook(instance));
}
if (isPluginLoaded("MiniPlaceholders")) {
hooks.add(new MiniPlaceholdersHook(instance));
}
}

@Override
Expand Down
Original file line number Diff line number Diff line change
@@ -0,0 +1,43 @@
package me.hsgamer.topper.spigot.plugin.hook.miniplaceholders;

import io.github.miniplaceholders.api.MiniPlaceholders;
import me.hsgamer.topper.spigot.plugin.TopperPlugin;
import me.hsgamer.topper.spigot.plugin.holder.provider.NumberStringValueProvider;
import net.kyori.adventure.text.Component;
import net.kyori.adventure.text.minimessage.MiniMessage;
import net.kyori.adventure.text.minimessage.tag.resolver.TagResolver;
import net.kyori.adventure.text.serializer.plain.PlainTextComponentSerializer;
import org.bukkit.entity.Player;

import java.util.Map;
import java.util.Optional;
import java.util.UUID;

public class MiniPlaceholderValueProvider extends NumberStringValueProvider {
private final String placeholder;

public MiniPlaceholderValueProvider(TopperPlugin plugin, Map<String, Object> map) {
super(plugin, map);
placeholder = Optional.ofNullable(map.get("placeholder")).map(Object::toString).orElse("");
}

@Override
protected String getDisplayName() {
return placeholder;
}

@Override
protected Optional<String> getString(UUID uuid) {
Player player = plugin.getServer().getPlayer(uuid);
if (player == null) {
return Optional.empty();
}

TagResolver resolver = MiniPlaceholders.getAudiencePlaceholders(player);

Component component = MiniMessage.miniMessage().deserialize(placeholder, resolver);
String parsed = PlainTextComponentSerializer.plainText().serialize(component).trim();

return Optional.of(parsed);
}
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,46 @@
package me.hsgamer.topper.spigot.plugin.hook.miniplaceholders;

import io.github.miniplaceholders.api.Expansion;
import io.github.miniplaceholders.api.utils.TagsUtils;
import io.github.projectunified.minelib.plugin.base.Loadable;
import me.hsgamer.topper.spigot.plugin.TopperPlugin;
import me.hsgamer.topper.spigot.plugin.builder.ValueProviderBuilder;
import me.hsgamer.topper.spigot.plugin.manager.TopQueryManager;
import org.bukkit.entity.Player;

public class MiniPlaceholdersHook implements Loadable {
private final TopperPlugin plugin;
private final Expansion expansion;

public MiniPlaceholdersHook(TopperPlugin plugin) {
this.plugin = plugin;
this.expansion = Expansion.builder("topper")
.filter(Player.class)
.audiencePlaceholder("query", (audience, queue, ctx) -> {
Player player = (Player) audience;
String query = queue.popOr("You need to specify the query").value();
String result = plugin.get(TopQueryManager.class).get(player, query);
if (result == null) {
return TagsUtils.EMPTY_TAG;
} else {
return TagsUtils.staticTag(result);
}
})
.build();
}

@Override
public void load() {
plugin.get(ValueProviderBuilder.class).register(map -> new MiniPlaceholderValueProvider(plugin, map), "miniplaceholders");
}

@Override
public void enable() {
expansion.register();
}

@Override
public void disable() {
expansion.unregister();
}
}
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
package me.hsgamer.topper.spigot.plugin.hook.papi;
package me.hsgamer.topper.spigot.plugin.hook.placeholderapi;

import io.github.projectunified.minelib.plugin.base.Loadable;
import me.hsgamer.topper.spigot.plugin.TopperPlugin;
Expand Down
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
package me.hsgamer.topper.spigot.plugin.hook.papi;
package me.hsgamer.topper.spigot.plugin.hook.placeholderapi;

import me.clip.placeholderapi.PlaceholderAPI;
import me.hsgamer.topper.spigot.plugin.TopperPlugin;
Expand All @@ -9,11 +9,11 @@
import java.util.Optional;
import java.util.UUID;

public class PlaceholderValueProvider extends NumberStringValueProvider {
class PlaceholderValueProvider extends NumberStringValueProvider {
private final String placeholder;
private final boolean isOnlineOnly;

public PlaceholderValueProvider(TopperPlugin plugin, Map<String, Object> map) {
PlaceholderValueProvider(TopperPlugin plugin, Map<String, Object> map) {
super(plugin, map);
placeholder = Optional.ofNullable(map.get("placeholder")).map(Object::toString).orElse("");
isOnlineOnly = Optional.ofNullable(map.get("online"))
Expand Down
Original file line number Diff line number Diff line change
@@ -1,15 +1,15 @@
package me.hsgamer.topper.spigot.plugin.hook.papi;
package me.hsgamer.topper.spigot.plugin.hook.placeholderapi;

import me.clip.placeholderapi.expansion.PlaceholderExpansion;
import me.hsgamer.topper.spigot.plugin.TopperPlugin;
import me.hsgamer.topper.spigot.plugin.manager.TopQueryManager;
import org.bukkit.OfflinePlayer;
import org.jetbrains.annotations.NotNull;

public class TopPlaceholderExpansion extends PlaceholderExpansion {
class TopPlaceholderExpansion extends PlaceholderExpansion {
private final TopperPlugin instance;

public TopPlaceholderExpansion(TopperPlugin instance) {
TopPlaceholderExpansion(TopperPlugin instance) {
this.instance = instance;
}

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -9,7 +9,6 @@
import me.hsgamer.topper.spigot.plugin.holder.NumberTopHolder;
import org.bukkit.OfflinePlayer;
import org.jetbrains.annotations.NotNull;
import org.jetbrains.annotations.Nullable;

import java.util.Optional;
import java.util.UUID;
Expand All @@ -28,7 +27,7 @@ protected Optional<NumberTopHolder> getHolder(@NotNull String name) {
}

@Override
protected @Nullable UUID getKey(@NotNull OfflinePlayer actor, @NotNull Context<UUID, Double, NumberTopHolder> context) {
protected @NotNull UUID getKey(@NotNull OfflinePlayer actor, @NotNull Context<UUID, Double, NumberTopHolder> context) {
return actor.getUniqueId();
}
});
Expand Down
2 changes: 1 addition & 1 deletion spigot/plugin/src/main/resources/plugin.yml
Original file line number Diff line number Diff line change
Expand Up @@ -4,5 +4,5 @@ main: me.hsgamer.topper.spigot.plugin.TopperPlugin
api-version: 1.13
softdepend:
- PlaceholderAPI
- VarBlocks
- MiniPlaceholders
folia-supported: true

0 comments on commit 62672c0

Please sign in to comment.