Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- package me.TopTobster5.Relative;
- import java.util.HashMap;
- import java.util.Map;
- import org.bukkit.Bukkit;
- import org.bukkit.ChatColor;
- import org.bukkit.Location;
- import org.bukkit.command.Command;
- import org.bukkit.command.CommandSender;
- import org.bukkit.entity.Player;
- import org.bukkit.event.Listener;
- import org.bukkit.event.block.BlockBreakEvent;
- import org.bukkit.event.player.PlayerJoinEvent;
- import org.bukkit.event.player.PlayerQuitEvent;
- import org.bukkit.plugin.java.JavaPlugin;
- public class Relative extends JavaPlugin implements Listener{
- Map<String, Location> loc = new HashMap <String, Location>();
- Map<String, Integer> Mode = new HashMap <String, Integer>();
- int diffx;
- int diffy;
- int diffz;
- public void onEnable() {
- this.getServer().getPluginManager().registerEvents(this, this);
- getLogger().info("Relative has been enabled!");
- for (Player player : Bukkit.getOnlinePlayers()) {
- Mode.put(player.getName(), 0);
- }
- }
- public void onDisable() {
- Mode.clear();
- getLogger().info("Relative has been disabled");
- }
- public boolean onCommand(CommandSender sender, Command cmd, String label, String[] args) {
- if (label.equalsIgnoreCase("relative")) {
- if (sender instanceof Player) {
- Player player = (Player) sender;
- String name = player.getName();
- if (player.hasPermission("relative.get")) {
- int mode = Mode.get(name);
- if (mode == 0) {
- Mode.put(name, 1);
- player.sendMessage(ChatColor.AQUA + "Break to select a block, and then break to select the relative command block.");
- return true;
- } else {
- Mode.put(name, 0);
- player.sendMessage(ChatColor.AQUA + "Selecting cancelled.");
- return true;
- }
- } else {
- player.sendMessage(ChatColor.AQUA + "You don't have permission to do that!");
- return true;
- }
- } else {
- sender.sendMessage(ChatColor.AQUA + "Only players can do that!");
- return true;
- }
- } else {
- return false;
- }
- }
- public void onPlayerJoin (PlayerJoinEvent event) {
- Mode.put(event.getPlayer().getName(), 0);
- }
- public void onPlayerLeave (PlayerQuitEvent event) {
- Mode.remove(event.getPlayer().getName());
- }
- public void onBlockBreak(BlockBreakEvent event) {
- event.getPlayer().sendMessage("Running");
- String name = event.getPlayer().getName();
- if (Mode.get(name) == 1) {
- Location loc1 = event.getBlock().getLocation();
- loc.put(name, loc1);
- event.getPlayer().sendMessage(ChatColor.AQUA + "Block selected. Now select the relative command block by breaking it.");
- Mode.put(name, 2);
- event.setCancelled(true);
- } else if (Mode.get(name) == 2) {
- Location loc1 = loc.get(name);
- Location loc2 = event.getBlock().getLocation();
- diffx = loc1.getBlockX() - loc2.getBlockX();
- diffy = loc1.getBlockY() - loc2.getBlockY();
- diffz = loc1.getBlockZ() - loc2.getBlockZ();
- event.getPlayer().sendMessage(ChatColor.AQUA + "Block selected. The relative coordanates are X:"+ ChatColor.RED + "~" + diffx + ChatColor.AQUA + "Y:" + ChatColor.RED + "~" + diffy + ChatColor.AQUA + "Z:" + ChatColor.RED + "~" + diffz);
- Mode.put(name, 0);
- event.setCancelled(true);
- }
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement