Skip to content

Commit

Permalink
1.6.1 rework, compass uses lodestone technique
Browse files Browse the repository at this point in the history
  • Loading branch information
7isenko committed Jul 20, 2020
1 parent 51b66b3 commit e13b410
Show file tree
Hide file tree
Showing 4 changed files with 39 additions and 16 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -10,8 +10,7 @@
import org.bukkit.command.CommandSender;
import org.bukkit.entity.Player;
import org.bukkit.inventory.ItemStack;

import java.util.Objects;
import org.bukkit.inventory.meta.CompassMeta;

public class CompassCommand implements CommandExecutor {
@Override
Expand All @@ -30,10 +29,14 @@ public boolean onCommand(CommandSender sender, Command command, String label, St
Player target = Bukkit.getPlayer(name);
if (target != null) {
DreamCompass.hunters.put(player, name);
player.getInventory().addItem(new ItemStack(Material.COMPASS));
player.setCompassTarget(target.getLocation());
ItemStack compass = new ItemStack(Material.COMPASS);
CompassMeta meta = (CompassMeta) compass.getItemMeta();
meta.setLodestone(target.getLocation());
meta.setLodestoneTracked(false);
meta.setDisplayName(target.getName());
compass.setItemMeta(meta);
player.getInventory().addItem(compass);
sender.sendMessage(ChatColor.GOLD + "Compass is pointing to " + name);
Objects.requireNonNull(player.getPlayer()).spigot().sendMessage(ChatMessageType.ACTION_BAR, new TextComponent(ChatColor.translateAlternateColorCodes('&', "&3&lY: &b" + target.getLocation().getBlockY())));
return true;
}
sendMessageWithColors(sender, "&c&lPlayer &4&l" + name + "&c&l is offline");
Expand Down
15 changes: 15 additions & 0 deletions src/main/java/io/github/_7isenko/dreamcompass/CompassHelper.java
Original file line number Diff line number Diff line change
@@ -0,0 +1,15 @@
package io.github._7isenko.dreamcompass;

import org.bukkit.entity.Player;
import org.bukkit.inventory.ItemStack;
import org.bukkit.inventory.meta.CompassMeta;

public class CompassHelper {
public static void setTarget(ItemStack compass, Player target) {
if (target != null) {
CompassMeta meta = (CompassMeta) compass.getItemMeta();
meta.setLodestone(target.getLocation());
compass.setItemMeta(meta);
}
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -9,20 +9,25 @@
import org.bukkit.event.EventHandler;
import org.bukkit.event.Listener;
import org.bukkit.event.player.PlayerInteractEvent;
import org.bukkit.inventory.ItemStack;

public class CompassInteractListener implements Listener {

@EventHandler
public void onEvent(PlayerInteractEvent e) {
if (DreamCompass.hunters.containsKey(e.getPlayer()) && (e.getPlayer().getInventory().getItemInMainHand().getType() == Material.COMPASS || e.getPlayer().getInventory().getItemInOffHand().getType() == Material.COMPASS)) {
Player target = Bukkit.getPlayer(DreamCompass.hunters.get(e.getPlayer()));
if (target != null) {
e.getPlayer().setCompassTarget(target.getLocation());
e.getPlayer().sendMessage(ChatColor.GOLD + "Compass is pointing to " + DreamCompass.hunters.get(e.getPlayer()));
e.getPlayer().spigot().sendMessage(ChatMessageType.ACTION_BAR, new TextComponent(ChatColor.translateAlternateColorCodes('&', "&3&lY: &b" + target.getLocation().getBlockY())));
} else {
e.getPlayer().sendMessage(ChatColor.translateAlternateColorCodes('&', "&c&lPlayer &4&l" + DreamCompass.hunters.get(e.getPlayer()) + "&c&l is offline"));
}
if (DreamCompass.hunters.containsKey(e.getPlayer())) {
Player player = e.getPlayer();
Player target;
ItemStack compass;
if (e.getPlayer().getInventory().getItemInMainHand().getType() == Material.COMPASS) {
target = Bukkit.getPlayer(player.getInventory().getItemInMainHand().getItemMeta().getDisplayName());
compass = player.getInventory().getItemInMainHand();
} else if (e.getPlayer().getInventory().getItemInOffHand().getType() == Material.COMPASS) {
target = Bukkit.getPlayer(player.getInventory().getItemInOffHand().getItemMeta().getDisplayName());
compass = player.getInventory().getItemInOffHand();
} else return;
CompassHelper.setTarget(compass, target);
player.spigot().sendMessage(ChatMessageType.ACTION_BAR, new TextComponent(ChatColor.translateAlternateColorCodes('&', "&3&bCompass is pointing to " + compass.getItemMeta().getDisplayName())));
}
}
}
}
2 changes: 1 addition & 1 deletion src/main/resources/plugin.yml
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
name: DreamCompass
version: "2.0"
version: "3.0"
main: io.github._7isenko.dreamcompass.DreamCompass
authors: [prosteDeni, 7isenko]
description: Gives you compass always pointing to specified player
Expand Down

0 comments on commit e13b410

Please sign in to comment.