Эй, поэтому я просто хотел, чтобы скелетная лошадь в Minecraft постоянно обретала частицы всплеска. Я не могу понять, как его зацикливать, чтобы он не размножал частицы огня. То, что я сделал до сих пор, ниже.
package survivalcraft.FireHorse;
import java.util.logging.Logger;
import org.bukkit.plugin.java.JavaPlugin;
import org.bukkit.plugin.PluginDescriptionFile;
import org.bukkit.command.CommandSender;
import org.bukkit.command.Command;
import org.bukkit.entity.EntityType;
import org.bukkit.entity.Horse.Variant;
import org.bukkit.entity.Player;
import org.bukkit.entity.Horse;
import org.bukkit.Effect;
public class Main extends JavaPlugin{
public static Main plugin;
public final Logger logger = Logger.getLogger("Minecraft");
@Override
public void onDisable(){
PluginDescriptionFile pdf = this.getDescription();
this.logger.info(pdf.getName() + " version " + pdf.getVersion() + " has been disabled! Neigh! ;D");
}
@Override
public void onEnable(){
PluginDescriptionFile pdf = this.getDescription();
this.logger.info(pdf.getName() + " version " + pdf.getVersion() + " has been enabled!");
}
@Override
public boolean onCommand(CommandSender sender, Command cmd, String commandLabel, String[] args){
Player player = (Player) sender;
if(commandLabel.equalsIgnoreCase("firehorse") || commandLabel.equalsIgnoreCase("fh")){
Horse horse = (Horse) player.getWorld().spawnEntity(player.getLocation(), EntityType.HORSE);
horse.setBreed(true);
horse.setAdult();
horse.setVariant(Variant.SKELETON_HORSE);
horse.setCustomName(player.getDisplayName() + " Fire Horse");
horse.getWorld().playEffect(horse.getLocation(), Effect.MOBSPAWNER_FLAMES, 0);
}
return false;
}
}
Посмотрите на использование Планировщика. Вы можете создать повторяющуюся задачу, которая порождает частицы каждой пары:
getServer().getScheduler().runTaskTimer(this, new Runnable() {
public void run() {
horse.getWorld().playEffect(horse.getLocation(), Effect.MOBSPAWNER_FLAMES, 0);
}
}, 0L, 10L);
Просто замените вашу текущую линию playEffect
на это и сделайте конечную horse
.
Если вы хотите создать цикл, вы должны использовать Bukkit встроенный SchedulerAPI - здесь объясняется.
Вот пример использования вашего кода:
Создайте новый класс под названием HorseTimer (или что хотите). Внесите его в класс Runnable.
public class HorseTimer implements Runnable {
@Override
public void run() {
}
}
Затем добавьте конструктор, чтобы класс знал, какой объект должен всплывать вокруг частиц.
public class HorseTimer implements Runnable {
private Horse horse;
public HorseTimer(Horse horse) {
this.horse = horse;
}
@Override
public void run() {
}
}
Теперь вы можете порождать частицы вокруг лошади (например, вы делаете это только один раз).
public class HorseTimer implements Runnable {
private Horse horse;
public HorseTimer(Horse horse) {
this.horse = horse;
}
@Override
public void run() {
// Do stuff with the horse, will be in the loop.
}
}
Наконец, нам нужно запустить цикл в классе Main. Поместите этот код в конец вашего оператора if в свой метод onCommand (...).
Bukkit.getScheduler().scheduleSyncRepeatingTask(this, new HorseTimer(horse), 0l, <DELAY BETWEEN REPEATS IN TICKS HERE>l);