Помогите Вращение компаса

  • Автор темы Автор темы Flllame
  • Дата начала Дата начала

Flllame

Активный участник
Пользователь
Баллы
68
if (p.getInventory().getItemInMainHand().equals(tracker)) { //если компас в руке
Player target = tracks.get(p);
p.setCompassTarget(target.getLocation()); //то он указывает на игрока
} else { //если нет то
p.setCompassTarget( будет быстро вращаться по часовой стрелке с одинаковой скоростью );
}

есть ли способ сделать такую функцию ?
 
BukkitRunnable + немного геометрии(или тригонометрии)
 
Java:
        Location loc = p.getLocation();
        int radius = 6;
        for(double y = 0; y <= 50; y+=0.05) {
            double x = radius * Math.cos(y);
            double z = radius * Math.sin(y);
            Location l = new Location(player.getWorld(), (float) (loc.getX() + x), (float) (loc.getY() + y), (float) (loc.getZ() + z));
            player.setCompassTarget(l);
        }
 
Java:
        Location loc = p.getLocation();
        int radius = 6;
        for(double y = 0; y <= 50; y+=0.05) {
            double x = radius * Math.cos(y);
            double z = radius * Math.sin(y);
            Location l = new Location(player.getWorld(), (float) (loc.getX() + x), (float) (loc.getY() + y), (float) (loc.getZ() + z));
            player.setCompassTarget(l);
        }
Так этож всё мгновенно произойдёт. Или нет?
 
Java:
        Location loc = p.getLocation();
        int radius = 6;
        for(double y = 0; y <= 50; y+=0.05) {
            double x = radius * Math.cos(y);
            double z = radius * Math.sin(y);
            Location l = new Location(player.getWorld(), (float) (loc.getX() + x), (float) (loc.getY() + y), (float) (loc.getZ() + z));
            player.setCompassTarget(l);
        }
А как можно указать конкретные координаты ?
 
Учи Bukkit API тогда. С такой тупостью я ничем помочь не могу.
И да, ты - некропостер.
Я думал эффективнее написать свой вопрос в закреплённый пост .И простите, но не могли бы вы кинуть мне хороший письменный курс по Bukkit API ?
 
new Location(Bukkit.getWorld("World"), х, у, з); ??
Точно не знаю ,но вот мой код :
JavaScript:
package Ad.main;

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 CommandTarget implements CommandExecutor {

    @Override
    public boolean onCommand(CommandSender sender, Command cmd, String label, String[] args) {
            Player p = (Player) sender;
            if(sender instanceof Player)
            {
                if(cmd.getName().equalsIgnoreCase("lab"))
                {
                   
                    Location loc = p.getLocation();
                    loc.setZ(-20);
                    loc.setX(472);
                    p.setCompassTarget(loc);
                   
                }
     }
     return true;
    }

}
При этом пишет что команды /lab нету
 
Зато я знаю, замени p.getLocation() на new Location(Bukkit.getWorld("World"), х, у, з) и убери лок сеты
И покажи мне главный класс и onEnable, а ещё и плагин юмл можешь.
JavaScript:
name: LevelUP
main: Ad.main.AdStan
version: 1.0
commands:
    lab:
JavaScript:
package Ad.main;


import org.bukkit.Location;
import org.bukkit.command.Command;
import org.bukkit.command.CommandSender;
import org.bukkit.entity.Player;
import org.bukkit.plugin.java.JavaPlugin;

public class AdStan extends JavaPlugin {
    public void onEnable()
    {
        getLogger().info("Плагин On");
        getServer().getPluginManager().registerEvents(new jink(),this);
    }
    public void onDisable()
    {
        getLogger().info("Плагин Off");       
    }
    @Override
    public boolean onCommand(CommandSender sender, Command cmd, String label, String [] args)
    {
        Player p = (Player) sender;
        if(sender instanceof Player)
        {
            if(cmd.getName().equalsIgnoreCase("lab"))
            {
               
                Location loc = p.getLocation();
                loc.setZ(-20);
                loc.setX(472);
                p.setCompassTarget(loc);
               
            }
        }
        return true;
    }
}
JavaScript:
package Ad.main;

import org.bukkit.Bukkit;
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 CommandTarget implements CommandExecutor {

    @Override
    public boolean onCommand(CommandSender sender, Command cmd, String label, String[] args) {
            Player p = (Player) sender;
            if(sender instanceof Player)
            {
                if(cmd.getName().equalsIgnoreCase("lab"))
                {
                   
                    Location loc = new Location(Bukkit.getWorld("World"), 472, 60, -20);
                    p.setCompassTarget(loc);
                   
                }
     }
     return true;
    }

}
 
  1. @Override
  2. public boolean onCommand(CommandSender sender, Command cmd, String label, String [] args)
  3. {
  4. Player p = (Player) sender;
  5. if(sender instanceof Player)
  6. {
  7. if(cmd.getName().equalsIgnoreCase("lab"))
  8. {
  9. Location loc = p.getLocation();
  10. loc.setZ(-20);
  11. loc.setX(472);
  12. p.setCompassTarget(loc);
  13. }
  14. }
  15. return true;
  16. }
    Это удали
  17. в главном классе
  18. и зарегай команду в onEnable
 
  1. @Override
  2. public boolean onCommand(CommandSender sender, Command cmd, String label, String [] args)
  3. {
  4. Player p = (Player) sender;
  5. if(sender instanceof Player)
  6. {
  7. if(cmd.getName().equalsIgnoreCase("lab"))
  8. {
  9. Location loc = p.getLocation();
  10. loc.setZ(-20);
  11. loc.setX(472);
  12. p.setCompassTarget(loc);
  13. }
  14. }
  15. return true;
  16. }
    Это удали
  17. в главном классе
  18. и зарегай команду в onEnable
19 и 20 можете подсказать как ?
 
19 и 20 можете подсказать как ?
Твой главный класс должен выглядеть как-то так:
Java:
package Ad.main;
import org.bukkit.Location;
import org.bukkit.command.Command;
import org.bukkit.command.CommandSender;
import org.bukkit.entity.Player;
import org.bukkit.plugin.java.JavaPlugin;

public class AdStan extends JavaPlugin {
    public void onEnable()
   {
        getLogger().info("Плагин On");
        getServer().getPluginManager().registerEvents(new jink(),
        getCommand("lab").setExecutor(new CommandTarget(this);
   }
    public void onDisable()
   {
        getLogger().info("Плагин Off");    
   }
}
 
Назад
Верх