本帖最后由 隔壁老吕 于 2018-3-16 22:05 编辑 
—————————————————Yzm—————————————————
验证码插件
指令:
/yzm 验证码
详细信息:
当玩家进入游戏时向玩家聊天栏发送一个随机4位数字字符串
要求玩家输入/yzm 验证码
进行验证,通过验证后才能进行游戏
以下是几种基于未输入验证码被踢出服务器(非ban的情况)1
1.输入其他指令
2.聊天
3.移动
4.输错
游戏截图:
接下来是喜闻乐见的下载:
接下来是无人问津的源代码:
| 
 package yzm;
 import java.util.Random;
 import org.bukkit.command.Command;
 import org.bukkit.command.CommandSender;
 import org.bukkit.entity.Player;
 import org.bukkit.event.EventHandler;
 import org.bukkit.plugin.java.JavaPlugin;
 import org.bukkit.event.Listener;
 import org.bukkit.event.player.PlayerJoinEvent;
 import org.bukkit.event.player.PlayerKickEvent;
 import org.bukkit.event.player.AsyncPlayerChatEvent;
 import org.bukkit.event.player.PlayerMoveEvent;
 import java.util.List;
 import java.util.ArrayList;
 
 public final class Yzm extends JavaPlugin implements Listener
 {
 List <Player> pList;
 @Override
 public void onEnable()      //插件启动时
 {
 getLogger().info("Yzm已被加载!");     //显示消息
 this.getServer().getPluginManager().registerEvents(this,this);
 pList = new ArrayList();
 }
 @Override
 public void onDisable()     //插件卸载时
 {
 getLogger().info("Yzm已被卸载。");     //显示消息
 }
 public String getYzm()
 {
 String y = "";
 for(int a = 0;a<4;a++)
 {
 Random rnd = new Random();
 int num = rnd.nextInt(9);
 y += String.valueOf(num);
 }
 return y;
 }
 String yzm;
 Player player;
 @EventHandler
 public void onJoin(PlayerJoinEvent event)
 {
 yzm = getYzm();
 player = event.getPlayer();     //获取玩家指示符
 player.sendMessage("§e[§a验证码§e]§e§l请输入验证码:"+yzm);
 }
 @EventHandler
 public void onKick(PlayerKickEvent event)
 {
 yzm = getYzm();
 player = event.getPlayer();     //获取玩家指示符
 if(pList.indexOf(player)!=-1)
 {
 pList.remove(player);
 }
 }
 @EventHandler
 public void onMove(PlayerMoveEvent event)
 {
 player = event.getPlayer();     //获取玩家指示符
 if(pList.indexOf(player)==-1)
 {
 player.kickPlayer("§4你因为未输入验证码或者输错了而被踢出服务器!");
 }
 }
 @EventHandler
 public void onChat(AsyncPlayerChatEvent event)
 {
 player = event.getPlayer();     //获取玩家指示符
 if(pList.indexOf(player)==-1)
 {
 player.kickPlayer("§4你因为未输入验证码或者输错了而被踢出服务器!");
 event.setCancelled(true);
 }
 }
 @Override
 public boolean onCommand(CommandSender sender, Command command, String label, String[] args)        //创建命令执行器
 {
 player = (Player)sender;
 if (label.equalsIgnoreCase("yzm") && pList.indexOf(player)==-1)
 {
 if(pList.indexOf(player)==-1)
 {
 if (args[0].equalsIgnoreCase(yzm))
 {
 player.sendMessage("§e[§a验证码§e]§e§l验证成功");
 pList.add(player);
 yzm = getYzm();
 return true;
 }
 else
 {
 player.kickPlayer("§4你因为未输入验证码或者输错了而被踢出服务器!");
 return true;
 }
 }
 else
 {
 player.sendMessage("§e[§a验证码§e]§e§l你已经输入过验证码了");
 }
 }
 else
 {
 player.kickPlayer("§4你因为未输入验证码或者输错了而被踢出服务器!");
 return true;
 }
 return false;
 }
 }
 
 
 | 
本插件所用所有代码均为原创,不存在借用/抄袭等行为