1. Вы находитесь в сообществе Rubukkit. Мы - администраторы серверов Minecraft, разрабатываем собственные плагины и переводим на различные языки плагины наших коллег из других стран.
    Скрыть объявление
Скрыть объявление
В преддверии глобального обновления, мы проводим исследования, которые помогут нам сделать опыт пользования форумом ещё удобнее. Помогите нам, примите участие!

Помогите компас направить на какой-либо блок

Тема в разделе "Разработка плагинов для новичков", создана пользователем Boss90, 10 апр 2021.

Статус темы:
Закрыта.
  1. Автор темы
    Boss90

    Boss90 Активный участник Пользователь

    Баллы:
    66
    Имя в Minecraft:
    Boss90
    Здраствуйте всем!)
    У меня возник вопрос, как компас направить на какой-либо блок, попробовал сам, но не понял как именно работает .setCompassTarget(location); поэтому решил обратиться к вам.

    Код:
        e.getPlayer().getInventory().addItem(new ItemStack(Material.COMPASS));
          e.getPlayer().setCompassTarget(new Location(Bukkit.getWorld("world"), -181, 69, 121));
          System.out.println(e.getPlayer().getCompassTarget());
    И компас показывает на -192 64 125, почему?
     
  2. alexandrage

    alexandrage Старожил Пользователь

    Баллы:
    173
    Код:
            ItemStack stack = new ItemStack(Material.COMPASS);
            CompassMeta meta  = (CompassMeta) stack.getItemMeta();
            meta.setLodestone(new Location(Bukkit.getWorld("world"), -181, 69, 121));
            stack.setItemMeta(meta);
            e.getPlayer().getInventory().addItem(stack);
    
     
  3. Автор темы
    Boss90

    Boss90 Активный участник Пользователь

    Баллы:
    66
    Имя в Minecraft:
    Boss90
    "Вид" переменной CompassMeta нету :/
    upload_2021-4-10_23-33-22.png
     
  4. alexandrage

    alexandrage Старожил Пользователь

    Баллы:
    173
  5. Автор темы
    Boss90

    Boss90 Активный участник Пользователь

    Баллы:
    66
    Имя в Minecraft:
    Boss90
    Последнее редактирование: 11 апр 2021
  6. MurlikMurlik

    MurlikMurlik Активный участник Пользователь

    Баллы:
    96
    На 1.12.2 только Player#setCompassTarget(Location loc)
     
  7. Dymeth

    Dymeth Активный участник Пользователь

    Баллы:
    98
    Имя в Minecraft:
    Dymeth
    Должно нормально работать. Код вызывается? Что sout в консоли выводит?
    Можешь ещё полностью класс показать
     
  8. Автор темы
    Boss90

    Boss90 Активный участник Пользователь

    Баллы:
    66
    Имя в Minecraft:
    Boss90
    Класс:

    PHP:
    package Boss90.Events;

    import org.bukkit.Bukkit;
    import org.bukkit.Location;
    import org.bukkit.Material;
    import org.bukkit.event.EventHandler;
    import org.bukkit.event.Listener;
    import org.bukkit.event.player.PlayerJoinEvent;
    import org.*********ventory.ItemStack;

    public class 
    GPS implements Listener {
        @
    EventHandler
        
    public void OnGPS(PlayerJoinEvent e) {
            
    e.getPlayer().getInventory().addItem(new ItemStack(Material.COMPASS));
              
    e.getPlayer().setCompassTarget(new Location(Bukkit.getWorld("world"), -18169121));
              
    System.out.println(e.getPlayer().getCompassTarget());
        }
    }
    Код вызывается.

    Sout:
    Location{world=CraftWorld{name=world},x=-181.0,y=69.0,z=121.0,pitch=0.0,yaw=0.0}
     
  9. Dymeth

    Dymeth Активный участник Пользователь

    Баллы:
    98
    Имя в Minecraft:
    Dymeth
    После перезахода на сервер компас указывает на верную точку?
    Попробую обновить ядро
     
  10. swat1x

    swat1x Активный участник Пользователь

    Баллы:
    76
    Имя в Minecraft:
    swat1x
    player.setCompassTarget(location);
    Саму локацию по координатам думаю сам сможешь сделать
     
  11. swat1x

    swat1x Активный участник Пользователь

    Баллы:
    76
    Имя в Minecraft:
    swat1x
    Там погрешность на пол блока, ибо он показывает на его пересечение. И как ты определил высоту, если компасс может показывать только на X и Z координаты

    Код:
    package ru.swat1x.commands;
    
    import org.bukkit.Location;
    import org.bukkit.command.Command;
    import org.bukkit.command.CommandExecutor;
    import org.bukkit.command.CommandSender;
    import org.bukkit.entity.Player;
    
    public class Compass implements CommandExecutor{
    
        @Override
        public boolean onCommand(CommandSender sender, Command arg1, String label, String[] arg3) {
            Player player = (Player) sender;
            Location location = player.getLocation();
            player.setCompassTarget(location);
            sender.sendMessage("§eЦель компаса установлена на координаты: §a"+ (int)location.getX() +", "+(int)location.getZ());
            return false;
        }
    
    }
    
     
  12. MurlikMurlik

    MurlikMurlik Активный участник Пользователь

    Баллы:
    96
    Эта проблема решается добавлением 0.5 к x и z координатам. То есть например location.add(0.5d, 0, 0.5d);
     
  13. swat1x

    swat1x Активный участник Пользователь

    Баллы:
    76
    Имя в Minecraft:
    swat1x
    То, что это решается я не спорю, но у него вообще на блоков 5 уехали корды, а не на пол блока
     
  14. LOVEC3327

    LOVEC3327 Активный участник Пользователь

    Баллы:
    76
    Имя в Minecraft:
    LOVEC3327
    У меня все прекрасно работает.
    PHP:
    @EventHandler
    public void onInteract(PlayerInteractEvent e) {
        if (
    e.getAction() == Action.RIGHT_CLICK_BLOCK) {
            
    ItemStack stack e.getItem();
            if (
    stack == null)
                return;
            if (
    stack.getType() != Material.COMPASS)
                return;
            
    Block block e.getClickedBlock();
            
    double x block.getX() + 0.5,
                    
    block.getZ() + 0.5;
            
    Location location = new Location(block.getWorld(), x0z);
            
    Player player e.getPlayer();
            
    player.playSound(player.getLocation(), Sound.BLOCK_NOTE_BLOCK_PLING10.7f);
            
    player.setCompassTarget(location);
        }
    }
     
  15. Автор темы
    Boss90

    Boss90 Активный участник Пользователь

    Баллы:
    66
    Имя в Minecraft:
    Boss90
    Всем спасибо)
     
Статус темы:
Закрыта.

Поделиться этой страницей