Java 身份验证之前,AuthMe如何阻止Minecraft中的操作?
我想制作一个类似于AuthMe的插件,当玩家刚刚加入时,阻止所有的动作——放置/破坏块、更改库存、聊天——直到他使用命令登录 我不想使用AuthMe的原因是因为我希望它与我的网站通信,就像使用与网站上的帐户相同的密码一样。创建一个侦听所有要取消的事件的帐户 看看下面的不同包装。 你可能需要参与大多数活动 我建议您查看一下源代码,了解它是如何实现的。Java 身份验证之前,AuthMe如何阻止Minecraft中的操作?,java,bukkit,Java,Bukkit,我想制作一个类似于AuthMe的插件,当玩家刚刚加入时,阻止所有的动作——放置/破坏块、更改库存、聊天——直到他使用命令登录 我不想使用AuthMe的原因是因为我希望它与我的网站通信,就像使用与网站上的帐户相同的密码一样。创建一个侦听所有要取消的事件的帐户 看看下面的不同包装。 你可能需要参与大多数活动 我建议您查看一下源代码,了解它是如何实现的。 查看该软件包。我可以为您提供一些代码来完成这项工作,因为我自己编写了AuthMC副本 首先,您需要列出需要取消的事件。然后,您需要一组“已登录”的播
查看该软件包。我可以为您提供一些代码来完成这项工作,因为我自己编写了AuthMC副本 首先,您需要列出需要取消的事件。然后,您需要一组“已登录”的播放器。每个事件侦听器将检查播放机是否在哈希集中,如果不在哈希集中,则取消事件
HashSet<String> loggedInPlayers = new HashSet<String>();
public void blockBreak(BlockBreakEvent e) {
if(!logginInPlayers.contains(e.getPlayer().getName()) {
e.setCancelled(true);
}
}
正如人们之前所说,您所要做的就是侦听事件的发生,并检查它们是否在指定的列表中。不一定是列表,HashMap也可以。正如所建议的那样,哈希集也是如此。然而,让它连接到您的网站将有点困难,我无法回答如何做到这一点,因为我没有这方面的知识 当玩家聊天时取消事件的示例(我在自己的插件中使用它,并使用哈希集判断玩家是否登录): 只要重复我为其他活动提供的聊天示例,就可以了
public void playerQuit(PlayerQuitEvent e) {
loggedInPlayers.remove(e.getPlayer().getName();
}
HashSet<String> loggedIn = new HashSet<String>();
@EventHandler
public void onPlayerChat(PlayerChatEvent event) {
if (!loggedIn.contains(event.getPlayer().getName()) {
event.setCancelled(true);
event.getPlayer().sendMessage("You must log in to chat!"); //Optional
}
}
@EventHandler
public void onPlayerQuit(PlayerQuitEvent event) {
loggedIn.remove(event.getPlayer().getName());
}