mirror of
https://github.com/tanyaofei/minecraft-fakeplayer.git
synced 2025-07-13 21:02:27 +08:00
Nothing important
This commit is contained in:
parent
a00b1d22b9
commit
640ef370b3
@ -1,9 +1,13 @@
|
||||
package io.github.hello09x.fakeplayer.core;
|
||||
|
||||
import com.google.inject.AbstractModule;
|
||||
import com.google.inject.Provides;
|
||||
import com.google.inject.Singleton;
|
||||
import io.github.hello09x.fakeplayer.api.spi.NMSBridge;
|
||||
import io.github.hello09x.fakeplayer.core.manager.invsee.DefaultInvseeImpl;
|
||||
import io.github.hello09x.fakeplayer.core.manager.invsee.Invsee;
|
||||
import io.github.hello09x.fakeplayer.core.manager.FakeplayerList;
|
||||
import io.github.hello09x.fakeplayer.core.manager.FakeplayerManager;
|
||||
import io.github.hello09x.fakeplayer.core.manager.invsee.DefaultInvseeManagerImpl;
|
||||
import io.github.hello09x.fakeplayer.core.manager.invsee.InvseeManager;
|
||||
import org.bukkit.Bukkit;
|
||||
import org.bukkit.plugin.Plugin;
|
||||
|
||||
@ -14,10 +18,16 @@ public class FakeplayerModule extends AbstractModule {
|
||||
@Override
|
||||
protected void configure() {
|
||||
super.bind(Plugin.class).toInstance(Main.getInstance());
|
||||
super.bind(NMSBridge.class).toInstance(this.nmsBridge());
|
||||
super.bind(Invsee.class).to(DefaultInvseeImpl.class);
|
||||
}
|
||||
|
||||
@Provides
|
||||
@Singleton
|
||||
public InvseeManager invseeManager(FakeplayerManager fakeplayerManager, FakeplayerList fakeplayerList) {
|
||||
return new DefaultInvseeManagerImpl(fakeplayerManager, fakeplayerList);
|
||||
}
|
||||
|
||||
@Provides
|
||||
@Singleton
|
||||
private NMSBridge nmsBridge() {
|
||||
var bridge = ServiceLoader
|
||||
.load(NMSBridge.class, NMSBridge.class.getClassLoader())
|
||||
|
@ -14,10 +14,9 @@ import io.github.hello09x.fakeplayer.core.listener.FakeplayerLifecycleListener;
|
||||
import io.github.hello09x.fakeplayer.core.listener.FakeplayerListener;
|
||||
import io.github.hello09x.fakeplayer.core.listener.PlayerListener;
|
||||
import io.github.hello09x.fakeplayer.core.manager.FakeplayerAutofishManager;
|
||||
import io.github.hello09x.fakeplayer.core.manager.FakeplayerManager;
|
||||
import io.github.hello09x.fakeplayer.core.manager.FakeplayerReplenishManager;
|
||||
import io.github.hello09x.fakeplayer.core.manager.WildFakeplayerManager;
|
||||
import io.github.hello09x.fakeplayer.core.repository.UsedIdRepository;
|
||||
import io.github.hello09x.fakeplayer.core.manager.invsee.InvseeManager;
|
||||
import io.github.hello09x.fakeplayer.core.util.update.UpdateChecker;
|
||||
import lombok.Getter;
|
||||
import org.bukkit.plugin.java.JavaPlugin;
|
||||
@ -66,6 +65,7 @@ public final class Main extends JavaPlugin {
|
||||
manager.registerEvents(injector.getInstance(FakeplayerListener.class), this);
|
||||
manager.registerEvents(injector.getInstance(FakeplayerAutofishManager.class), this);
|
||||
manager.registerEvents(injector.getInstance(FakeplayerReplenishManager.class), this);
|
||||
manager.registerEvents(injector.getInstance(InvseeManager.class), this);
|
||||
}
|
||||
|
||||
if (injector.getInstance(FakeplayerConfig.class).isCheckForUpdates()) {
|
||||
@ -106,10 +106,6 @@ public final class Main extends JavaPlugin {
|
||||
|
||||
@Override
|
||||
public void onDisable() {
|
||||
{
|
||||
Exceptions.suppress(this, () -> injector.getInstance(FakeplayerManager.class).onDisable());
|
||||
Exceptions.suppress(this, () -> injector.getInstance(UsedIdRepository.class).onDisable());
|
||||
}
|
||||
{
|
||||
Exceptions.suppress(this, () -> {
|
||||
var messenger = getServer().getMessenger();
|
||||
|
@ -119,7 +119,7 @@ public class CommandRegistry {
|
||||
.withPermission(Permission.kill)
|
||||
.withShortDescription("fakeplayer.command.kill.description")
|
||||
.withRequirement(CommandSupports::hasFakeplayer)
|
||||
.withOptionalArguments(targets("names"))
|
||||
.withOptionalArguments(fakeplayers("names"))
|
||||
.executes(killCommand::kill),
|
||||
command("list")
|
||||
.withPermission(Permission.list)
|
||||
|
@ -37,22 +37,26 @@ public abstract class CommandSupports {
|
||||
public static @NotNull CommandAPICommand[] newActionCommands(@NotNull ActionType action) {
|
||||
return new CommandAPICommand[]{
|
||||
command("once")
|
||||
.withShortDescription("fakeplayer.command.action.once")
|
||||
.withOptionalArguments(fakeplayer("name"))
|
||||
.executes(actionCommand.action(action, ActionSetting.once())),
|
||||
command("continuous")
|
||||
.withShortDescription("fakeplayer.command.action.continuous")
|
||||
.withOptionalArguments(fakeplayer("name"))
|
||||
.executes(actionCommand.action(action, ActionSetting.continuous())),
|
||||
command("stop")
|
||||
.withOptionalArguments(fakeplayer("name"))
|
||||
.executes(actionCommand.action(action, ActionSetting.stop())),
|
||||
command("interval")
|
||||
.withShortDescription("fakeplayer.command.action.interval")
|
||||
.withOptionalArguments(
|
||||
int32("interval", 1),
|
||||
int32("ticks", 1),
|
||||
fakeplayer("name"))
|
||||
.executes((sender, args) -> {
|
||||
int interval = (int) args.getOptional("interval").orElse(1);
|
||||
int interval = (int) args.getOptional("ticks").orElse(1);
|
||||
actionCommand.action(sender, args, action, ActionSetting.interval(interval));
|
||||
})
|
||||
}),
|
||||
command("stop")
|
||||
.withShortDescription("fakeplayer.command.action.stop")
|
||||
.withOptionalArguments(fakeplayer("name"))
|
||||
.executes(actionCommand.action(action, ActionSetting.stop()))
|
||||
};
|
||||
}
|
||||
|
||||
@ -88,7 +92,7 @@ public abstract class CommandSupports {
|
||||
return fakeplayer(nodeName, null);
|
||||
}
|
||||
|
||||
public static @NotNull Argument<List<Player>> targets(@NotNull String nodeName) {
|
||||
public static @NotNull Argument<List<Player>> fakeplayers(@NotNull String nodeName) {
|
||||
return new CustomArgument<List<Player>, String>(new StringArgument(nodeName), info -> {
|
||||
var sender = info.sender();
|
||||
var arg = info.currentInput();
|
||||
@ -174,7 +178,7 @@ public abstract class CommandSupports {
|
||||
}
|
||||
|
||||
public static boolean isCmdAvailable(@NotNull CommandSender sender) {
|
||||
return hasFakeplayer(sender) && (sender.hasPermission(Permission.cmd) || !config.getAllowCommands().isEmpty());
|
||||
return (sender.hasPermission(Permission.cmd) || !config.getAllowCommands().isEmpty()) && hasFakeplayer(sender);
|
||||
}
|
||||
|
||||
}
|
||||
|
@ -1,11 +1,13 @@
|
||||
package io.github.hello09x.fakeplayer.core.command.impl;
|
||||
|
||||
import com.google.inject.Inject;
|
||||
import com.google.inject.Singleton;
|
||||
import dev.jorel.commandapi.CommandAPI;
|
||||
import dev.jorel.commandapi.exceptions.WrapperCommandSyntaxException;
|
||||
import dev.jorel.commandapi.executors.CommandArguments;
|
||||
import io.github.hello09x.devtools.core.translation.TranslatorUtils;
|
||||
import io.github.hello09x.devtools.core.utils.ComponentUtils;
|
||||
import io.github.hello09x.fakeplayer.core.manager.invsee.InvseeManager;
|
||||
import org.bukkit.entity.Player;
|
||||
import org.jetbrains.annotations.NotNull;
|
||||
|
||||
@ -16,6 +18,12 @@ import static net.kyori.adventure.text.Component.translatable;
|
||||
@Singleton
|
||||
public class InvseeCommand extends AbstractCommand {
|
||||
|
||||
private final InvseeManager invseeManager;
|
||||
|
||||
@Inject
|
||||
public InvseeCommand(InvseeManager invseeManager) {
|
||||
this.invseeManager = invseeManager;
|
||||
}
|
||||
|
||||
/**
|
||||
* 查看背包
|
||||
@ -28,7 +36,7 @@ public class InvseeCommand extends AbstractCommand {
|
||||
TranslatorUtils.getLocale(sender)
|
||||
));
|
||||
}
|
||||
manager.openInventory(sender, fake);
|
||||
invseeManager.invsee(sender, fake);
|
||||
}
|
||||
|
||||
}
|
||||
|
@ -5,6 +5,7 @@ import dev.jorel.commandapi.executors.CommandExecutor;
|
||||
import io.github.hello09x.fakeplayer.core.Main;
|
||||
import org.bukkit.scheduler.BukkitRunnable;
|
||||
import org.bukkit.scheduler.BukkitTask;
|
||||
import org.jetbrains.annotations.Range;
|
||||
|
||||
import java.util.HashMap;
|
||||
import java.util.Map;
|
||||
@ -18,7 +19,7 @@ public class MoveCommand extends AbstractCommand {
|
||||
/**
|
||||
* 假人移动
|
||||
*/
|
||||
public CommandExecutor move(float forward, float strafing) {
|
||||
public CommandExecutor move(@Range(from = 0, to = 1) float forward, @Range(from = 0, to = 1) float strafing) {
|
||||
return (sender, args) -> {
|
||||
var fake = getFakeplayer(sender, args);
|
||||
var handle = bridge.fromPlayer(fake);
|
||||
|
@ -3,6 +3,7 @@ package io.github.hello09x.fakeplayer.core.listener;
|
||||
import com.google.inject.Inject;
|
||||
import com.google.inject.Singleton;
|
||||
import io.github.hello09x.devtools.core.utils.ComponentUtils;
|
||||
import io.github.hello09x.devtools.core.utils.Exceptions;
|
||||
import io.github.hello09x.devtools.core.utils.MetadataUtils;
|
||||
import io.github.hello09x.fakeplayer.core.Main;
|
||||
import io.github.hello09x.fakeplayer.core.config.FakeplayerConfig;
|
||||
@ -21,6 +22,7 @@ import org.bukkit.event.entity.PlayerDeathEvent;
|
||||
import org.bukkit.event.player.PlayerKickEvent;
|
||||
import org.bukkit.event.player.PlayerLoginEvent;
|
||||
import org.bukkit.event.player.PlayerQuitEvent;
|
||||
import org.bukkit.event.server.PluginDisableEvent;
|
||||
import org.bukkit.metadata.MetadataValue;
|
||||
import org.jetbrains.annotations.NotNull;
|
||||
|
||||
@ -159,4 +161,12 @@ public class FakeplayerListener implements Listener {
|
||||
}
|
||||
}
|
||||
|
||||
@EventHandler
|
||||
public void onPluginDisable(@NotNull PluginDisableEvent event) {
|
||||
if (event.getPlugin() == Main.getInstance()) {
|
||||
Exceptions.suppress(Main.getInstance(), manager::onDisable);
|
||||
Exceptions.suppress(Main.getInstance(), usedIdRepository::onDisable);
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
|
@ -7,9 +7,6 @@ import org.bukkit.entity.Player;
|
||||
import org.bukkit.event.EventHandler;
|
||||
import org.bukkit.event.EventPriority;
|
||||
import org.bukkit.event.Listener;
|
||||
import org.bukkit.event.inventory.InventoryDragEvent;
|
||||
import org.bukkit.event.inventory.InventoryType;
|
||||
import org.bukkit.event.player.PlayerInteractAtEntityEvent;
|
||||
import org.bukkit.event.player.PlayerToggleSneakEvent;
|
||||
import org.jetbrains.annotations.NotNull;
|
||||
|
||||
@ -44,31 +41,4 @@ public class PlayerListener implements Listener {
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* 右键假人打开其背包
|
||||
*/
|
||||
@EventHandler(ignoreCancelled = true, priority = EventPriority.LOWEST)
|
||||
public void invsee(@NotNull PlayerInteractAtEntityEvent event) {
|
||||
if (!(event.getRightClicked() instanceof Player target) || manager.isNotFake(target)) {
|
||||
return;
|
||||
}
|
||||
|
||||
manager.openInventory(event.getPlayer(), target);
|
||||
}
|
||||
|
||||
|
||||
|
||||
/**
|
||||
* 客户端操作假人背包时(将假人的背包物品移动到玩家背包时)的时候,如果是拖拽的, 会被处理成放置到假人的盔甲栏上
|
||||
*/
|
||||
@EventHandler(ignoreCancelled = true, priority = EventPriority.LOWEST)
|
||||
public void onDragInventory(@NotNull InventoryDragEvent event) {
|
||||
var top = event.getView().getTopInventory();
|
||||
if (top.getType() == InventoryType.PLAYER && top.getHolder() instanceof Player player && manager.isFake(player)) {
|
||||
if (event.getNewItems().keySet().stream().anyMatch(slot -> slot > 35)) { // > 35 表示从假人背包移动到玩家背包
|
||||
event.setCancelled(true);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
|
@ -13,7 +13,6 @@ import io.github.hello09x.fakeplayer.core.config.FakeplayerConfig;
|
||||
import io.github.hello09x.fakeplayer.core.constant.MetadataKeys;
|
||||
import io.github.hello09x.fakeplayer.core.entity.Fakeplayer;
|
||||
import io.github.hello09x.fakeplayer.core.entity.SpawnOption;
|
||||
import io.github.hello09x.fakeplayer.core.manager.invsee.Invsee;
|
||||
import io.github.hello09x.fakeplayer.core.manager.naming.NameManager;
|
||||
import io.github.hello09x.fakeplayer.core.repository.model.Config;
|
||||
import io.github.hello09x.fakeplayer.core.util.AddressUtils;
|
||||
@ -21,8 +20,6 @@ import io.github.hello09x.fakeplayer.core.util.Commands;
|
||||
import net.kyori.adventure.text.Component;
|
||||
import org.bukkit.Bukkit;
|
||||
import org.bukkit.Location;
|
||||
import org.bukkit.Sound;
|
||||
import org.bukkit.SoundCategory;
|
||||
import org.bukkit.command.CommandSender;
|
||||
import org.bukkit.entity.Player;
|
||||
import org.bukkit.metadata.FixedMetadataValue;
|
||||
@ -51,7 +48,6 @@ public class FakeplayerManager {
|
||||
public final static String REMOVAL_REASON_PREFIX = "[fakeplayer] ";
|
||||
|
||||
private final static Logger log = Main.getInstance().getLogger();
|
||||
private final Invsee invsee;
|
||||
|
||||
private final NameManager nameManager;
|
||||
private final FakeplayerList playerList;
|
||||
@ -61,8 +57,7 @@ public class FakeplayerManager {
|
||||
private final ScheduledExecutorService lagMonitor;
|
||||
|
||||
@Inject
|
||||
public FakeplayerManager(Invsee invsee, NameManager nameManager, FakeplayerList playerList, UserConfigManager configManager, NMSBridge nms, FakeplayerConfig config) {
|
||||
this.invsee = invsee;
|
||||
public FakeplayerManager(NameManager nameManager, FakeplayerList playerList, UserConfigManager configManager, NMSBridge nms, FakeplayerConfig config) {
|
||||
this.nameManager = nameManager;
|
||||
this.playerList = playerList;
|
||||
this.configManager = configManager;
|
||||
@ -461,28 +456,6 @@ public class FakeplayerManager {
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* 让玩家打开假人背包
|
||||
*
|
||||
* @param viewer 玩家
|
||||
* @param target 假人
|
||||
* @return 是否打开成功
|
||||
*/
|
||||
public boolean openInventory(@NotNull Player viewer, @NotNull Player target) {
|
||||
var fp = this.playerList.getByName(target.getName());
|
||||
if (fp == null) {
|
||||
return false;
|
||||
}
|
||||
if (!viewer.isOp() && !fp.isCreatedBy(viewer)) {
|
||||
return false;
|
||||
}
|
||||
|
||||
this.invsee.openInventory(viewer, target);
|
||||
var pos = target.getLocation();
|
||||
pos.getWorld().playSound(pos, Sound.BLOCK_CHEST_OPEN, SoundCategory.BLOCKS, 0.3f, 1.0f);
|
||||
return true;
|
||||
}
|
||||
|
||||
/**
|
||||
* 检测限制, 不满足条件则抛出异常
|
||||
*
|
||||
|
@ -1,42 +0,0 @@
|
||||
package io.github.hello09x.fakeplayer.core.manager.invsee;
|
||||
|
||||
import io.github.hello09x.devtools.core.translation.PluginTranslator;
|
||||
import io.github.hello09x.devtools.core.translation.TranslatorUtils;
|
||||
import io.github.hello09x.devtools.core.utils.ComponentUtils;
|
||||
import io.github.hello09x.devtools.core.utils.SingletonSupplier;
|
||||
import io.github.hello09x.fakeplayer.core.Main;
|
||||
import io.github.hello09x.fakeplayer.core.manager.FakeplayerManager;
|
||||
import org.bukkit.entity.Player;
|
||||
import org.bukkit.inventory.InventoryView;
|
||||
import org.jetbrains.annotations.NotNull;
|
||||
import org.jetbrains.annotations.Nullable;
|
||||
|
||||
import java.util.Optional;
|
||||
|
||||
import static net.kyori.adventure.text.Component.text;
|
||||
import static net.kyori.adventure.text.Component.translatable;
|
||||
|
||||
public abstract class AbstractInvsee implements Invsee {
|
||||
|
||||
protected final PluginTranslator translator;
|
||||
|
||||
protected final static SingletonSupplier<FakeplayerManager> manager = new SingletonSupplier<>(() -> Main.getInjector().getInstance(FakeplayerManager.class));
|
||||
|
||||
protected AbstractInvsee(PluginTranslator translator) {
|
||||
this.translator = translator;
|
||||
}
|
||||
|
||||
protected void setTitle(@Nullable InventoryView view, @NotNull Player owner) {
|
||||
if (view == null) {
|
||||
return;
|
||||
}
|
||||
|
||||
var locale = Optional.ofNullable(manager.get().getCreator(owner)).map(TranslatorUtils::getLocale).orElseGet(() -> TranslatorUtils.getDefaultLocale(Main.getInstance()));
|
||||
view.setTitle(ComponentUtils.toString(translatable(
|
||||
"fakeplayer.manager.inventory.title",
|
||||
text(owner.getName())
|
||||
), locale));
|
||||
}
|
||||
|
||||
|
||||
}
|
@ -0,0 +1,81 @@
|
||||
package io.github.hello09x.fakeplayer.core.manager.invsee;
|
||||
|
||||
import io.github.hello09x.devtools.core.utils.ComponentUtils;
|
||||
import io.github.hello09x.fakeplayer.core.manager.FakeplayerList;
|
||||
import io.github.hello09x.fakeplayer.core.manager.FakeplayerManager;
|
||||
import org.bukkit.Sound;
|
||||
import org.bukkit.SoundCategory;
|
||||
import org.bukkit.entity.Player;
|
||||
import org.bukkit.event.EventHandler;
|
||||
import org.bukkit.event.EventPriority;
|
||||
import org.bukkit.event.inventory.InventoryDragEvent;
|
||||
import org.bukkit.event.inventory.InventoryType;
|
||||
import org.bukkit.event.player.PlayerInteractAtEntityEvent;
|
||||
import org.bukkit.inventory.InventoryView;
|
||||
import org.jetbrains.annotations.NotNull;
|
||||
import org.jetbrains.annotations.Nullable;
|
||||
|
||||
import static net.kyori.adventure.text.Component.text;
|
||||
import static net.kyori.adventure.text.Component.translatable;
|
||||
|
||||
/**
|
||||
* @author tanyaofei
|
||||
* @since 2024/8/12
|
||||
**/
|
||||
public abstract class AbstractInvseeManager implements InvseeManager {
|
||||
|
||||
protected final FakeplayerManager manager;
|
||||
protected final FakeplayerList fakeplayerList;
|
||||
|
||||
protected AbstractInvseeManager(FakeplayerManager manager, FakeplayerList fakeplayerList) {
|
||||
this.manager = manager;
|
||||
this.fakeplayerList = fakeplayerList;
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean invsee(@NotNull Player viewer, @NotNull Player whom) {
|
||||
var fp = fakeplayerList.getByUUID(whom.getUniqueId());
|
||||
if (fp == null) {
|
||||
return false;
|
||||
}
|
||||
if (!viewer.isOp() && !fp.isCreatedBy(viewer)) {
|
||||
return false;
|
||||
}
|
||||
var view = this.openInventory(viewer, whom);
|
||||
if (view == null) {
|
||||
return false;
|
||||
}
|
||||
whom.getLocation().getWorld().playSound(
|
||||
whom.getLocation(),
|
||||
Sound.BLOCK_CHEST_OPEN,
|
||||
SoundCategory.BLOCKS,
|
||||
0.3F, 1.0F
|
||||
);
|
||||
view.setTitle(ComponentUtils.toString(translatable(
|
||||
"fakeplayer.manager.inventory.title",
|
||||
text(whom.getName())
|
||||
), viewer.locale()));
|
||||
return true;
|
||||
}
|
||||
|
||||
protected abstract @Nullable InventoryView openInventory(@NotNull Player viewer, @NotNull Player whom);
|
||||
|
||||
@EventHandler(ignoreCancelled = true, priority = EventPriority.MONITOR)
|
||||
public void rightClickToInvsee(@NotNull PlayerInteractAtEntityEvent event) {
|
||||
if (!((event.getRightClicked()) instanceof Player whom)) {
|
||||
return;
|
||||
}
|
||||
|
||||
this.invsee(event.getPlayer(), whom); // fakeplayer check here
|
||||
}
|
||||
|
||||
@EventHandler(ignoreCancelled = true, priority = EventPriority.LOWEST)
|
||||
public void fixDragInventory(@NotNull InventoryDragEvent event) {
|
||||
var top = event.getView().getTopInventory();
|
||||
if (top.getType() == InventoryType.PLAYER && top.getHolder() instanceof Player whom && manager.isFake(whom)) {
|
||||
if (event.getNewItems().keySet().stream().anyMatch(slot -> slot > 35)) { // > 35 表示从假人背包拖动到玩家背包, 这种操作会出现问题
|
||||
event.setCancelled(true);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
@ -1,23 +0,0 @@
|
||||
package io.github.hello09x.fakeplayer.core.manager.invsee;
|
||||
|
||||
import com.google.inject.Inject;
|
||||
import com.google.inject.Singleton;
|
||||
import io.github.hello09x.devtools.core.translation.PluginTranslator;
|
||||
import org.bukkit.entity.Player;
|
||||
import org.jetbrains.annotations.NotNull;
|
||||
|
||||
@Singleton
|
||||
public class DefaultInvseeImpl extends AbstractInvsee {
|
||||
|
||||
@Inject
|
||||
public DefaultInvseeImpl(PluginTranslator translator) {
|
||||
super(translator);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void openInventory(@NotNull Player visitor, @NotNull Player visited) {
|
||||
var view = visitor.openInventory(visited.getInventory());
|
||||
super.setTitle(view, visited);
|
||||
}
|
||||
|
||||
}
|
@ -0,0 +1,32 @@
|
||||
package io.github.hello09x.fakeplayer.core.manager.invsee;
|
||||
|
||||
import com.google.inject.Inject;
|
||||
import com.google.inject.Singleton;
|
||||
import io.github.hello09x.fakeplayer.core.manager.FakeplayerList;
|
||||
import io.github.hello09x.fakeplayer.core.manager.FakeplayerManager;
|
||||
import org.bukkit.entity.Player;
|
||||
import org.bukkit.inventory.InventoryView;
|
||||
import org.jetbrains.annotations.NotNull;
|
||||
import org.jetbrains.annotations.Nullable;
|
||||
|
||||
/**
|
||||
* 默认实现, 无法看到装备栏
|
||||
*
|
||||
* @author tanyaofei
|
||||
* @since 2024/8/12
|
||||
**/
|
||||
@Singleton
|
||||
public class DefaultInvseeManagerImpl extends AbstractInvseeManager {
|
||||
|
||||
@Inject
|
||||
public DefaultInvseeManagerImpl(FakeplayerManager manager, FakeplayerList fakeplayerList) {
|
||||
super(manager, fakeplayerList);
|
||||
}
|
||||
|
||||
@Override
|
||||
protected @Nullable InventoryView openInventory(@NotNull Player viewer, @NotNull Player whom) {
|
||||
return viewer.openInventory(whom.getInventory());
|
||||
}
|
||||
|
||||
|
||||
}
|
@ -1,11 +0,0 @@
|
||||
package io.github.hello09x.fakeplayer.core.manager.invsee;
|
||||
|
||||
import org.bukkit.entity.Player;
|
||||
import org.jetbrains.annotations.NotNull;
|
||||
|
||||
|
||||
public interface Invsee {
|
||||
|
||||
void openInventory(@NotNull Player visitor, @NotNull Player visited);
|
||||
|
||||
}
|
@ -0,0 +1,15 @@
|
||||
package io.github.hello09x.fakeplayer.core.manager.invsee;
|
||||
|
||||
import org.bukkit.entity.Player;
|
||||
import org.bukkit.event.Listener;
|
||||
import org.jetbrains.annotations.NotNull;
|
||||
|
||||
/**
|
||||
* @author tanyaofei
|
||||
* @since 2024/8/12
|
||||
**/
|
||||
public interface InvseeManager extends Listener {
|
||||
|
||||
boolean invsee(@NotNull Player viewer, @NotNull Player whom);
|
||||
|
||||
}
|
@ -6,6 +6,10 @@ fakeplayer.action.jump=jumping
|
||||
fakeplayer.action.look-at-entity=looking at nearby entities
|
||||
fakeplayer.action.mine=digging
|
||||
fakeplayer.action.use=using item or interacting
|
||||
fakeplayer.command.action.continuous=Do it every tick
|
||||
fakeplayer.command.action.interval=Do it every specified ticks
|
||||
fakeplayer.command.action.once=Do it once
|
||||
fakeplayer.command.action.stop=Stop
|
||||
fakeplayer.command.attack.description=Attack entity
|
||||
fakeplayer.command.cmd.description=Execute command
|
||||
fakeplayer.command.cmd.error.execute-failed=Failed to execute the command. Please check whether the command is correct or whether the fake player has permission
|
||||
|
@ -6,6 +6,10 @@ fakeplayer.action.jump=\u8DF3\u8DC3
|
||||
fakeplayer.action.look-at-entity=\u770B\u5411\u9644\u8FD1\u5B9E\u4F53
|
||||
fakeplayer.action.mine=\u6316\u6398
|
||||
fakeplayer.action.use=\u4F7F\u7528\u7269\u54C1\u6216\u4EA4\u4E92
|
||||
fakeplayer.command.action.continuous=\u6BCF 1 tick \u6267\u884C\u4E00\u6B21
|
||||
fakeplayer.command.action.interval=\u6307\u5B9A\u95F4\u9694\u6267\u884C
|
||||
fakeplayer.command.action.once=\u6267\u884C\u4E00\u6B21
|
||||
fakeplayer.command.action.stop=\u505C\u6B62
|
||||
fakeplayer.command.attack.description=\u653B\u51FB
|
||||
fakeplayer.command.cmd.description=\u6267\u884C\u547D\u4EE4
|
||||
fakeplayer.command.cmd.error.execute-failed=\u6267\u884C\u547D\u4EE4\u5931\u8D25, \u8BF7\u68C0\u67E5\u547D\u4EE4\u662F\u5426\u6B63\u786E\u6216\u5047\u4EBA\u662F\u5426\u6709\u6743\u9650
|
||||
|
@ -6,6 +6,10 @@ fakeplayer.action.jump=\u8DF3\u8E8D
|
||||
fakeplayer.action.look-at-entity=\u7747\u5411\u9644\u8FD1\u5BE6\u9AD4
|
||||
fakeplayer.action.mine=\u6316\u6398
|
||||
fakeplayer.action.use=\u4F7F\u7528\u7269\u54C1\u6216\u4EA4\u4E92
|
||||
fakeplayer.command.action.continuous=\u6BCF 1 tick \u57F7\u884C\u4E00\u6B21
|
||||
fakeplayer.command.action.interval=\u6307\u5B9A\u9593\u9694\u57F7\u884C
|
||||
fakeplayer.command.action.once=\u57F7\u884C\u4E00\u6B21
|
||||
fakeplayer.command.action.stop=\u505C\u6B62
|
||||
fakeplayer.command.attack.description=\u653B\u64CA
|
||||
fakeplayer.command.cmd.description=\u57F7\u884C\u6307\u4EE4
|
||||
fakeplayer.command.cmd.error.execute-failed=\u57F7\u884C\u6307\u4EE4\u5931\u6557, \u8ACB\u6AA2\u67E5\u6307\u4EE4\u662F\u5426\u6B63\u78BA\u6216\u8005\u5047\u4EBA\u6709\u5187\u6B0A\u9650
|
||||
|
@ -6,6 +6,10 @@ fakeplayer.action.jump=\u8DF3\u8E8D
|
||||
fakeplayer.action.look-at-entity=\u770B\u5411\u9644\u8FD1\u5BE6\u9AD4
|
||||
fakeplayer.action.mine=\u6316\u6398
|
||||
fakeplayer.action.use=\u4F7F\u7528\u7269\u54C1\u6216\u4EA4\u4E92
|
||||
fakeplayer.command.action.continuous=\u6BCF 1 tick \u57F7\u884C\u4E00\u6B21
|
||||
fakeplayer.command.action.interval=\u6307\u5B9A\u9593\u9694\u57F7\u884C
|
||||
fakeplayer.command.action.once=\u57F7\u884C\u4E00\u6B21
|
||||
fakeplayer.command.action.stop=\u505C\u6B62
|
||||
fakeplayer.command.attack.description=\u653B\u64CA
|
||||
fakeplayer.command.cmd.description=\u57F7\u884C\u547D\u4EE4
|
||||
fakeplayer.command.cmd.error.execute-failed=\u57F7\u884C\u547D\u4EE4\u5931\u6557, \u8ACB\u6AA2\u67E5\u547D\u4EE4\u662F\u5426\u6B63\u78BA\u6216\u5047\u4EBA\u662F\u5426\u6709\u6B0A\u9650
|
||||
|
Loading…
Reference in New Issue
Block a user