mirror of
https://github.com/tanyaofei/minecraft-fakeplayer.git
synced 2025-07-13 12:52:23 +08:00
PlaceholderAPI supporting
This commit is contained in:
parent
835f139132
commit
4b6fbcfb67
@ -10,9 +10,12 @@ import io.github.hello09x.fakeplayer.core.manager.FakeplayerManager;
|
||||
import io.github.hello09x.fakeplayer.core.manager.invsee.InvseeManager;
|
||||
import io.github.hello09x.fakeplayer.core.manager.invsee.OpenInvInvseeManagerImpl;
|
||||
import io.github.hello09x.fakeplayer.core.manager.invsee.SimpleInvseeManagerImpl;
|
||||
import io.github.hello09x.fakeplayer.core.placeholder.FakeplayerPlaceholderExpansion;
|
||||
import io.github.hello09x.fakeplayer.core.placeholder.FakeplayerPlaceholderExpansionImpl;
|
||||
import io.github.hello09x.fakeplayer.core.util.ClassUtils;
|
||||
import org.bukkit.Bukkit;
|
||||
import org.bukkit.plugin.Plugin;
|
||||
import org.jetbrains.annotations.Nullable;
|
||||
|
||||
import java.util.ServiceLoader;
|
||||
import java.util.logging.Logger;
|
||||
@ -59,4 +62,13 @@ public class FakeplayerModule extends AbstractModule {
|
||||
return bridge;
|
||||
}
|
||||
|
||||
@Singleton
|
||||
@Provides
|
||||
private @Nullable FakeplayerPlaceholderExpansion fakeplayerPlaceholderExpansion(FakeplayerManager fakeplayerManager) {
|
||||
if (!Bukkit.getPluginManager().isPluginEnabled("PlaceholderAPI") || !ClassUtils.isClassExists("me.clip.placeholderapi.expansion.PlaceholderExpansion")) {
|
||||
return null;
|
||||
}
|
||||
return new FakeplayerPlaceholderExpansionImpl(fakeplayerManager);
|
||||
}
|
||||
|
||||
}
|
||||
|
@ -17,6 +17,7 @@ import io.github.hello09x.fakeplayer.core.manager.FakeplayerAutofishManager;
|
||||
import io.github.hello09x.fakeplayer.core.manager.FakeplayerReplenishManager;
|
||||
import io.github.hello09x.fakeplayer.core.manager.WildFakeplayerManager;
|
||||
import io.github.hello09x.fakeplayer.core.manager.invsee.InvseeManager;
|
||||
import io.github.hello09x.fakeplayer.core.placeholder.FakeplayerPlaceholderExpansion;
|
||||
import io.github.hello09x.fakeplayer.core.util.update.UpdateChecker;
|
||||
import lombok.Getter;
|
||||
import org.bukkit.plugin.java.JavaPlugin;
|
||||
@ -67,6 +68,16 @@ public final class Main extends JavaPlugin {
|
||||
manager.registerEvents(injector.getInstance(InvseeManager.class), this);
|
||||
}
|
||||
|
||||
{
|
||||
var placeholderExpansion = injector.getInstance(FakeplayerPlaceholderExpansion.class);
|
||||
if (placeholderExpansion != null) {
|
||||
if (placeholderExpansion.register()) {
|
||||
getServer().getPluginManager().registerEvents(placeholderExpansion, this);
|
||||
getLogger().info("Successfully registered PlaceholderExpansion");
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
if (injector.getInstance(FakeplayerConfig.class).isCheckForUpdates()) {
|
||||
checkForUpdatesAsync();
|
||||
}
|
||||
|
@ -124,7 +124,7 @@ public class FakeplayerList {
|
||||
return this.playersByUUID.values().stream();
|
||||
}
|
||||
|
||||
public int count() {
|
||||
public int getSize() {
|
||||
return this.playersByUUID.size();
|
||||
}
|
||||
|
||||
|
@ -293,6 +293,10 @@ public class FakeplayerManager {
|
||||
return stream.toList();
|
||||
}
|
||||
|
||||
public int getSize() {
|
||||
return this.playerList.getSize();
|
||||
}
|
||||
|
||||
/**
|
||||
* 判断一名玩家是否是假人
|
||||
*
|
||||
@ -467,7 +471,7 @@ public class FakeplayerManager {
|
||||
return;
|
||||
}
|
||||
|
||||
if (this.playerList.count() >= this.config.getServerLimit()) {
|
||||
if (this.playerList.getSize() >= this.config.getServerLimit()) {
|
||||
throw new CommandException(translatable("fakeplayer.command.spawn.error.server-limit"));
|
||||
}
|
||||
|
||||
|
@ -0,0 +1,13 @@
|
||||
package io.github.hello09x.fakeplayer.core.placeholder;
|
||||
|
||||
import org.bukkit.event.Listener;
|
||||
|
||||
/**
|
||||
* @author tanyaofei
|
||||
* @since 2024/8/15
|
||||
**/
|
||||
public interface FakeplayerPlaceholderExpansion extends Listener {
|
||||
|
||||
boolean register();
|
||||
|
||||
}
|
@ -0,0 +1,69 @@
|
||||
package io.github.hello09x.fakeplayer.core.placeholder;
|
||||
|
||||
import com.google.common.collect.Iterables;
|
||||
import com.google.inject.Inject;
|
||||
import com.google.inject.Singleton;
|
||||
import io.github.hello09x.fakeplayer.core.Main;
|
||||
import io.github.hello09x.fakeplayer.core.manager.FakeplayerManager;
|
||||
import me.clip.placeholderapi.expansion.PlaceholderExpansion;
|
||||
import org.bukkit.entity.Player;
|
||||
import org.bukkit.event.EventHandler;
|
||||
import org.bukkit.event.Listener;
|
||||
import org.bukkit.event.server.PluginDisableEvent;
|
||||
import org.jetbrains.annotations.NotNull;
|
||||
import org.jetbrains.annotations.Nullable;
|
||||
|
||||
import java.util.Optional;
|
||||
|
||||
/**
|
||||
* @author tanyaofei
|
||||
* @since 2024/8/15
|
||||
**/
|
||||
@Singleton
|
||||
public class FakeplayerPlaceholderExpansionImpl extends PlaceholderExpansion implements FakeplayerPlaceholderExpansion, Listener {
|
||||
|
||||
private final FakeplayerManager manager;
|
||||
|
||||
@Inject
|
||||
public FakeplayerPlaceholderExpansionImpl(FakeplayerManager manager) {
|
||||
this.manager = manager;
|
||||
}
|
||||
|
||||
@Override
|
||||
public @NotNull String getIdentifier() {
|
||||
return Main.getInstance().getName();
|
||||
}
|
||||
|
||||
@Override
|
||||
public @NotNull String getAuthor() {
|
||||
return Iterables.getFirst(Main.getInstance().getPluginMeta().getAuthors(), "hello09x");
|
||||
}
|
||||
|
||||
@Override
|
||||
public @NotNull String getVersion() {
|
||||
return "1.0";
|
||||
}
|
||||
|
||||
@Override
|
||||
public @Nullable String onPlaceholderRequest(@Nullable Player player, @NotNull String params) {
|
||||
// /papi parse --null fakeplayer_total
|
||||
if (params.equalsIgnoreCase("total")) {
|
||||
return String.valueOf(manager.getSize());
|
||||
}
|
||||
|
||||
// /papi parse CONSOLE_1 fakeplayer_creator
|
||||
if (params.equalsIgnoreCase("creator") && player != null && manager.isFake(player)) {
|
||||
return Optional.ofNullable(manager.getCreatorName(player)).orElse(params);
|
||||
}
|
||||
|
||||
return params;
|
||||
|
||||
}
|
||||
|
||||
@EventHandler
|
||||
public void unregister(@NotNull PluginDisableEvent event) {
|
||||
if (event.getPlugin() == Main.getInstance()) {
|
||||
this.unregister();
|
||||
}
|
||||
}
|
||||
}
|
@ -9,6 +9,7 @@ depend:
|
||||
|
||||
softdepend:
|
||||
- OpenInv
|
||||
- PlaceholderAPI
|
||||
|
||||
permissions:
|
||||
fakeplayer.command.spawn:
|
||||
|
Loading…
Reference in New Issue
Block a user