· 7 years ago · Sep 01, 2018, 02:04 PM
1package me.HistoryMC_Lobby.Anti_Hacked;
2
3import org.bukkit.entity.Player;
4import org.bukkit.event.EventHandler;
5import org.bukkit.event.Listener;
6import org.bukkit.event.block.BlockBreakEvent;
7import org.bukkit.event.block.BlockPlaceEvent;
8import org.bukkit.event.player.AsyncPlayerChatEvent;
9import org.bukkit.event.player.PlayerJoinEvent;
10import org.bukkit.event.player.PlayerMoveEvent;
11import org.bukkit.plugin.java.JavaPlugin;
12
13import java.rmi.activation.ActivationSystem;
14import java.util.ArrayList;
15import java.util.UUID;
16
17public class Events
18 implements Listener {
19
20 public static ArrayList<UUID> authlocked;
21
22 @EventHandler
23 public void onJoin(PlayerJoinEvent event) {
24 Player player = event.getPlayer();
25
26 if (!this.getConfig().contains("authcodes." + player.getUniqueId())) {
27 GoogleAuthenticator gAuth = new GoogleAuthenticator();
28 GoogleAuthenticatorKey key = gAuth.createCredentials();
29
30 player.sendMessage("§7Your §bGoogle Auth Code §7is §a" + key.getKey());
31 player.sendMessage("§7You must enter this code in the Google Authenticator App before leaving the server.");
32
33 this.getConfig().set("authcodes." + player.getUniqueId(), key.getKey());
34 this.saveConfig();
35 } else {
36 authlocked.add(player.getUniqueId());
37 player.sendMessage("§cPlease open the Google Authenticator App and provide the six digit code.");
38 }
39 }
40
41 private boolean playerInputCode(Player player, int code) {
42 String secretkey = this.getConfig().getString("authcodes." + player.getUniqueId());
43
44 GoogleAuthenticator gAuth = new GoogleAuthenticator();
45 boolean codeisvalid = gAuth.authorize(secretkey, code);
46
47
48 if (codeisvalid) {
49 authlocked.remove(player.getUniqueId());
50 return codeisvalid;
51 }
52
53 return codeisvalid;
54 }
55
56
57 @EventHandler
58 public void chat(AsyncPlayerChatEvent event) {
59 Player player = event.getPlayer();
60 String message = event.getMessage();
61
62 if (authlocked.contains(player.getUniqueId())) {
63 try {
64 Integer code = Integer.parseInt(message);
65 if (playerInputCode(player, code)) {
66 authlocked.remove(player.getUniqueId());
67 player.sendMessage("§a*Access Granted* §bWelcome to the server!");
68 } else {
69 player.sendMessage("§cIncorrect or expired code ** A code will only contain numbers **");
70
71 }
72 } catch (Exception e) {
73 player.sendMessage("§cIncorrect or expired code ** A code will only contain numbers **");
74 }
75 event.setCancelled(true);
76 }
77 }
78
79 @EventHandler
80 public void move(PlayerMoveEvent event) {
81 Player player = event.getPlayer();
82 if (authlocked.contains(player.getUniqueId())) {
83 event.setCancelled(true);
84 }
85 }
86
87 @EventHandler
88 public void blockbreak(BlockBreakEvent event) {
89 Player player = event.getPlayer();
90 if (authlocked.contains(player.getUniqueId())) {
91 event.setCancelled(true);
92 }
93 }
94
95 @EventHandler
96 public void blockplace(BlockPlaceEvent event) {
97 Player player = event.getPlayer();
98 if (authlocked.contains(player.getUniqueId())) {
99 event.setCancelled(true);
100 }
101 }
102}