diff --git a/pom.xml b/pom.xml
index 5bb2251..945b092 100644
--- a/pom.xml
+++ b/pom.xml
@@ -5,8 +5,8 @@
master
- 1.6
- 1.6
+ 1.7
+ 1.7
diff --git a/src/main/java/pw/kaboom/icontrolu/Commands.java b/src/main/java/pw/kaboom/icontrolu/Commands.java
index 20583a3..d70a626 100644
--- a/src/main/java/pw/kaboom/icontrolu/Commands.java
+++ b/src/main/java/pw/kaboom/icontrolu/Commands.java
@@ -10,22 +10,21 @@ import org.bukkit.command.ConsoleCommandSender;
import org.bukkit.entity.Player;
+import org.bukkit.plugin.java.JavaPlugin;
+
import org.bukkit.potion.PotionEffectType;
+import org.bukkit.scheduler.BukkitRunnable;
+
import org.bukkit.scoreboard.Scoreboard;
import org.bukkit.scoreboard.Team;
class CommandIcu implements CommandExecutor {
- Main main;
- CommandIcu(Main main) {
- this.main = main;
- }
-
public boolean onCommand(CommandSender sender, Command command, String label, String[] args) {
if (sender instanceof ConsoleCommandSender) {
sender.sendMessage("Command has to be run by a player");
} else {
- Player controller = (Player) sender;
+ final Player controller = (Player) sender;
if (args.length == 0) {
controller.sendMessage(ChatColor.RED + "Usage: /" + label + " ");
@@ -33,25 +32,26 @@ class CommandIcu implements CommandExecutor {
if (args.length == 1) {
controller.sendMessage(ChatColor.RED + "Usage: /" + label + " control ");
} else {
- Player target = Bukkit.getPlayer(args[1]);
+ final Player target = Bukkit.getPlayer(args[1]);
+
if (target != null) {
if (target == controller) {
controller.sendMessage("You are already controlling yourself");
- } else if (main.targetFor.containsKey(controller.getUniqueId())) {
+ } else if (Main.targetFor.containsKey(controller.getUniqueId())) {
controller.sendMessage("You are already controlling \"" + target.getName() + "\"");
- } else if (main.controllerFor.containsKey(target.getUniqueId())) {
+ } else if (Main.controllerFor.containsKey(target.getUniqueId())) {
controller.sendMessage("Player \"" + target.getName() + "\" is already being controlled");
- } else if (main.targetFor.containsKey(target.getUniqueId())) {
+ } else if (Main.targetFor.containsKey(target.getUniqueId())) {
controller.sendMessage("Player \"" + target.getName() + "\" is already controlling another player");
- } else if (controller.canSee(target) == false) {
+ } else if (!controller.canSee(target)) {
controller.sendMessage("You may not control this player");
} else {
- controller.teleport(target);
+ controller.teleportAsync(target.getLocation());
controller.getInventory().setContents(target.getInventory().getContents());
-
- main.targetFor.put(controller.getUniqueId(), target);
- main.controllerFor.put(target.getUniqueId(), controller);
+
+ Main.targetFor.put(controller.getUniqueId(), target);
+ Main.controllerFor.put(target.getUniqueId(), controller);
controller.sendMessage("You are now controlling \"" + target.getName() + "\"");
}
@@ -60,30 +60,28 @@ class CommandIcu implements CommandExecutor {
}
}
} else if (args[0].equalsIgnoreCase("stop")) {
- Player target = main.targetFor.get(controller.getUniqueId());
+ final Player target = Main.targetFor.get(controller.getUniqueId());
if (target != null) {
- main.targetFor.remove(controller.getUniqueId());
- main.controllerFor.remove(target.getUniqueId());
-
- final Player controllerRun = controller;
-
- Bukkit.getScheduler().scheduleSyncDelayedTask(main, new Runnable() {
+ Main.targetFor.remove(controller.getUniqueId());
+ Main.controllerFor.remove(target.getUniqueId());
+
+ new BukkitRunnable() {
public void run() {
for (Player player: Bukkit.getOnlinePlayers()) {
- player.showPlayer(main, controllerRun);
+ player.showPlayer(JavaPlugin.getPlugin(Main.class), controller);
}
Scoreboard scoreboard = Bukkit.getScoreboardManager().getMainScoreboard();
- Team team = scoreboard.getTeam("iControlU_List");
- if (team != null && team.hasEntry(controllerRun.getName()) == true) {
- team.removeEntry(controllerRun.getName());
+ Team team = scoreboard.getTeam("icuDisableCollision");
+ if (team != null && team.hasEntry(controller.getName())) {
+ team.removeEntry(controller.getName());
}
- controllerRun.removePotionEffect(PotionEffectType.INVISIBILITY);
- controllerRun.sendMessage("You are now visible");
+ controller.removePotionEffect(PotionEffectType.INVISIBILITY);
+ controller.sendMessage("You are now visible");
}
- }, 200L);
+ }.runTaskLater(JavaPlugin.getPlugin(Main.class), 200);
controller.sendMessage("You are no longer controlling \"" + target.getName() + "\". You are invisible for 10 seconds.");
} else {
diff --git a/src/main/java/pw/kaboom/icontrolu/Events.java b/src/main/java/pw/kaboom/icontrolu/Events.java
index 1125a6f..96f56e6 100644
--- a/src/main/java/pw/kaboom/icontrolu/Events.java
+++ b/src/main/java/pw/kaboom/icontrolu/Events.java
@@ -18,9 +18,13 @@ import org.bukkit.event.player.PlayerMoveEvent;
import org.bukkit.event.player.PlayerQuitEvent;
import org.bukkit.event.player.PlayerRespawnEvent;
+import org.bukkit.plugin.java.JavaPlugin;
+
import org.bukkit.potion.PotionEffect;
import org.bukkit.potion.PotionEffectType;
+import org.bukkit.scheduler.BukkitRunnable;
+
import org.bukkit.scoreboard.Scoreboard;
import org.bukkit.scoreboard.Team;
import org.bukkit.scoreboard.Team.Option;
@@ -29,24 +33,18 @@ import org.bukkit.scoreboard.Team.OptionStatus;
import org.bukkit.scheduler.BukkitRunnable;
class Tick extends BukkitRunnable {
- Main main;
- Tick(Main main) {
- this.main = main;
- }
-
public void run() {
for (Player target: Bukkit.getOnlinePlayers()) {
- Player controller = main.controllerFor.get(target.getUniqueId());
+ final Player controller = Main.controllerFor.get(target.getUniqueId());
+
if (controller != null) {
- for (int i = 0; i < 40; ++i) {
+ for (int i = 0; i < controller.getInventory().getSize(); i++) {
if (controller.getInventory().getItem(i) != null) {
- if (target.getInventory().getItem(i) != controller.getInventory().getItem(i)) {
+ if (!controller.getInventory().getItem(i).equals(target.getInventory().getItem(i))) {
target.getInventory().setItem(i, controller.getInventory().getItem(i));
}
} else {
- if (target.getInventory().getItem(i) != null) {
- target.getInventory().setItem(i, null);
- }
+ target.getInventory().setItem(i, null);
}
}
@@ -58,50 +56,56 @@ class Tick extends BukkitRunnable {
target.setExhaustion(controller.getExhaustion());
target.setFlying(controller.isFlying());
target.setFoodLevel(controller.getFoodLevel());
+ target.setMaxHealth(controller.getMaxHealth());
target.setHealth(controller.getHealth());
target.setLevel(controller.getLevel());
target.setSneaking(controller.isSneaking());
target.setSprinting(controller.isSprinting());
for (Player player: Bukkit.getOnlinePlayers()) {
- player.hidePlayer(main, controller);
+ player.hidePlayer(JavaPlugin.getPlugin(Main.class), controller);
}
- Scoreboard scoreboard = Bukkit.getScoreboardManager().getMainScoreboard();
- Team team = scoreboard.getTeam("iControlU_List");
+ final Scoreboard scoreboard = Bukkit.getScoreboardManager().getMainScoreboard();
+ Team team = scoreboard.getTeam("icuDisableCollision");
+
if (team == null) {
- team = scoreboard.registerNewTeam("iControlU_List");
+ team = scoreboard.registerNewTeam("icuDisableCollision");
}
team.setCanSeeFriendlyInvisibles​(false);
team.setOption(Team.Option.COLLISION_RULE, Team.OptionStatus.NEVER);
- if (team.hasEntry(controller.getName()) == false) {
+ if (!team.hasEntry(controller.getName())) {
team.addEntry(controller.getName());
}
- controller.addPotionEffect(new PotionEffect(PotionEffectType.INVISIBILITY, 99999, 0, false, false));
+ controller.addPotionEffect(
+ new PotionEffect(
+ PotionEffectType.INVISIBILITY,
+ 99999,
+ 0,
+ false,
+ false
+ )
+ );
}
}
}
}
class Events implements Listener {
- Main main;
- Events(Main main) {
- this.main = main;
- }
-
@EventHandler
void onAsyncPlayerChat(AsyncPlayerChatEvent event) {
- Player player = event.getPlayer();
+ final Player player = event.getPlayer();
- if (main.controllerFor.containsKey(player.getUniqueId())) {
+ if (Main.controllerFor.containsKey(player.getUniqueId())) {
event.setCancelled(true);
}
- if (main.targetFor.containsKey(player.getUniqueId())) {
- Player target = main.targetFor.get(player.getUniqueId());
+ if (Main.targetFor.containsKey(player.getUniqueId())) {
+ final Player target = Main.targetFor.get(player.getUniqueId());
+
target.chat(event.getMessage());
event.setCancelled(true);
}
@@ -109,105 +113,100 @@ class Events implements Listener {
@EventHandler
void onEntityDamage(EntityDamageEvent event) {
- Entity player = event.getEntity();
+ final Entity player = event.getEntity();
- if (main.targetFor.containsKey(player.getUniqueId())) {
+ if (Main.targetFor.containsKey(player.getUniqueId())) {
event.setCancelled(true);
}
}
- /*@EventHandler
- void onPlayerAnimation(PlayerAnimationEvent event) {
- Player controller = event.getPlayer();
- Player target = main.targetFor.get(controller.getUniqueId());
-
- if (target != null) {
- event.setCancelled(true);
- }
- }*/
-
@EventHandler
void onPlayerCommandPreprocess(PlayerCommandPreprocessEvent event) {
- Player player = event.getPlayer();
+ final Player player = event.getPlayer();
- if (main.controllerFor.containsKey(player.getUniqueId())) {
+ if (Main.controllerFor.containsKey(player.getUniqueId())) {
event.setCancelled(true);
}
}
@EventHandler
void onPlayerDropItem(PlayerDropItemEvent event) {
- Player player = event.getPlayer();
+ final Player player = event.getPlayer();
- if (main.controllerFor.containsKey(player.getUniqueId())) {
+ if (Main.controllerFor.containsKey(player.getUniqueId())) {
event.setCancelled(true);
}
}
@EventHandler
void onPlayerInteract(PlayerInteractEvent event) {
- Player player = event.getPlayer();
+ final Player player = event.getPlayer();
- if (main.controllerFor.containsKey(player.getUniqueId())) {
+ if (Main.controllerFor.containsKey(player.getUniqueId())) {
event.setCancelled(true);
}
}
@EventHandler
void onPlayerMove(PlayerMoveEvent event) {
- Player player = event.getPlayer();
+ final Player player = event.getPlayer();
- if (main.controllerFor.containsKey(player.getUniqueId())) {
+ if (Main.controllerFor.containsKey(player.getUniqueId())) {
event.setCancelled(true);
}
}
@EventHandler
void onPlayerQuit(PlayerQuitEvent event) {
- Player player = event.getPlayer();
+ final Player player = event.getPlayer();
for (Player otherPlayer: Bukkit.getOnlinePlayers()) {
/* Target disconnects */
- if (main.controllerFor.containsKey(player.getUniqueId()) && main.controllerFor.get(player.getUniqueId()).equals(otherPlayer)) {
- main.targetFor.remove(otherPlayer.getUniqueId());
- main.controllerFor.remove(player.getUniqueId());
+ if (Main.controllerFor.containsKey(player.getUniqueId()) &&
+ Main.controllerFor.get(player.getUniqueId()).equals(otherPlayer)) {
+ Main.targetFor.remove(otherPlayer.getUniqueId());
+ Main.controllerFor.remove(player.getUniqueId());
final Player controller = otherPlayer;
- Bukkit.getScheduler().scheduleSyncDelayedTask(main, new Runnable() {
+ new BukkitRunnable() {
public void run() {
for (Player allPlayers: Bukkit.getOnlinePlayers()) {
- allPlayers.showPlayer(main, controller);
+ allPlayers.showPlayer(JavaPlugin.getPlugin(Main.class), controller);
}
- Scoreboard scoreboard = Bukkit.getScoreboardManager().getMainScoreboard();
- Team team = scoreboard.getTeam("iControlU_List");
- if (team != null && team.hasEntry(controller.getName()) == true) {
+ final Scoreboard scoreboard = Bukkit.getScoreboardManager().getMainScoreboard();
+ final Team team = scoreboard.getTeam("icuDisableCollision");
+
+ if (team != null &&
+ team.hasEntry(controller.getName()) == true) {
team.removeEntry(controller.getName());
}
controller.removePotionEffect(PotionEffectType.INVISIBILITY);
controller.sendMessage("You are now visible");
}
- }, 200L);
+ }.runTaskLater(JavaPlugin.getPlugin(Main.class), 200);
otherPlayer.sendMessage("The player you were controlling has disconnected. You are invisible for 10 seconds.");
}
/* Controller disconnects */
- if (main.targetFor.containsKey(player.getUniqueId()) && main.targetFor.get(player.getUniqueId()).equals(otherPlayer)) {
- main.targetFor.remove(player.getUniqueId());
- main.controllerFor.remove(otherPlayer.getUniqueId());
+ if (Main.targetFor.containsKey(player.getUniqueId()) &&
+ Main.targetFor.get(player.getUniqueId()).equals(otherPlayer)) {
+ Main.targetFor.remove(player.getUniqueId());
+ Main.controllerFor.remove(otherPlayer.getUniqueId());
}
}
}
@EventHandler
void onPlayerRespawn(PlayerRespawnEvent event) {
- Player player = event.getPlayer();
+ final Player player = event.getPlayer();
+
+ if (Main.controllerFor.containsKey(player.getUniqueId())) {
+ final Player controller = Main.controllerFor.get(player.getUniqueId());
- if (main.controllerFor.containsKey(player.getUniqueId())) {
- Player controller = main.controllerFor.get(player.getUniqueId());
controller.teleportAsync(player.getLocation());
}
}
diff --git a/src/main/java/pw/kaboom/icontrolu/Main.java b/src/main/java/pw/kaboom/icontrolu/Main.java
index 08fb70d..427e173 100644
--- a/src/main/java/pw/kaboom/icontrolu/Main.java
+++ b/src/main/java/pw/kaboom/icontrolu/Main.java
@@ -15,32 +15,36 @@ import org.bukkit.scoreboard.Scoreboard;
import org.bukkit.scoreboard.Team;
public class Main extends JavaPlugin {
- static HashMap controllerFor = new HashMap();
- static HashMap targetFor = new HashMap();
+ static HashMap controllerFor = new HashMap<>();
+ static HashMap targetFor = new HashMap<>();
public void onEnable() {
- Scoreboard scoreboard = Bukkit.getScoreboardManager().getMainScoreboard();
- Team team = scoreboard.getTeam("iControlU_List");
+ /* Setup scoreboard team to prevent player collisions */
+ final Scoreboard scoreboard = Bukkit.getScoreboardManager().getMainScoreboard();
+ final Team team = scoreboard.getTeam("icuDisableCollision");
if (team != null) {
team.unregister();
}
- this.getCommand("icu").setExecutor(new CommandIcu(this));
+ /* Commands */
+ this.getCommand("icu").setExecutor(new CommandIcu());
- new Tick(this).runTaskTimer(this, 0, 1);
- this.getServer().getPluginManager().registerEvents(new Events(this), this);
+ new Tick().runTaskTimer(this, 0, 1);
+ this.getServer().getPluginManager().registerEvents(new Events(), this);
}
public void onDisable() {
for (Player controller: Bukkit.getOnlinePlayers()) {
- Player target = Main.targetFor.get(controller.getUniqueId());
+ final Player target = Main.targetFor.get(controller.getUniqueId());
+
if (target != null) {
for (Player player: Bukkit.getOnlinePlayers()) {
player.showPlayer(this, controller);
}
- Scoreboard scoreboard = Bukkit.getScoreboardManager().getMainScoreboard();
- Team team = scoreboard.getTeam("iControlU_List");
+ final Scoreboard scoreboard = Bukkit.getScoreboardManager().getMainScoreboard();
+ final Team team = scoreboard.getTeam("icuDisableCollision");
+
if (team != null) {
team.unregister();
}