Помогите Написал плагин на bossbar, но что-то не работает.

Nilfgaard.

Активный участник
Пользователь
Баллы
61
// MainClass.java - это мэйн класс:


package rmbb.main;

import org.bukkit.plugin.java.JavaPlugin;
import org.bukkit.Bukkit;
import org.bukkit.entity.Player;
import org.bukkit.event.Listener;
import org.bukkit.event.player.PlayerJoinEvent;

public class MainClass extends JavaPlugin implements Listener{

public Bar bar;

@Override
public void onEnable() {
this.getServer().getPluginManager().registerEvents(this, this);
bar = new Bar(this);
bar.createBar();



if (Bukkit.getOnlinePlayers().size() > 0)
for (Player on : Bukkit.getOnlinePlayers())
bar.addPlayer(on);
}

@Override
public void onDisable() {
bar.getBar().removeAll();
}

public void onJoin(PlayerJoinEvent event) {
if (!bar.getBar().getPlayers().contains(event.getPlayer()))
bar.addPlayer(event.getPlayer());
}
}


// Bar.java - это 2 класс с говнокодой:


package rmbb.main;

import org.bukkit.Bukkit;
import org.bukkit.boss.BarColor;
import org.bukkit.boss.BarStyle;
import org.bukkit.boss.BossBar;
import org.bukkit.entity.Player;
import org.bukkit.ChatColor;

public class Bar {

private int taskID = -1;
private final MainClass plugin;
private BossBar bar;

public Bar(MainClass plugin) {
this.plugin = plugin;
}

public void addPlayer(Player player) {
bar.addPlayer(player);
}

public BossBar getBar() {
return bar;
}

public void createBar() {
bar = Bukkit.createBossBar(format("&cПокупать донат только на &brabbitmine.ru"), BarColor.RED, BarStyle.SOLID);
bar.setVisible(true);
cast();
}


public void cast() {
setTaskID(Bukkit.getScheduler().scheduleSyncRepeatingTask(plugin, new Runnable() {

int count = -1;
double progress = 1.0;
double time = 1.0 /(20);

@Override
public void run() {
bar.setProgress(progress);

switch(count) {
case -1:
break;
case 0:
bar.setColor(BarColor.PINK);
bar.setTitle(format("&dВ честь открытия сервера скидки на донат &c9999999999%&d!!!"));
break;
case 1:
bar.setColor(BarColor.BLUE);
bar.setTitle(format("&3При покупке доната &l&4Господь Бог &r&3вы получаете минет от гл.админов и по ****у бесплатно"));
break;
case 2:
bar.setColor(BarColor.GREEN);
bar.setTitle(format("&dауе!!!"));
break;
case 3:
default:
bar.setColor(BarColor.RED);
bar.setTitle(format("&cУляля-уляля пчелы пчелы"));
count = -1;
break;

}

progress = progress - time;
if (progress <= 0) {
count++;
progress = 1.0;
}

}

}, 0, 20));
}

private String format(String msg) {
return ChatColor.translateAlternateColorCodes('&', msg);
}

public int getTaskID() {
return taskID;
}

public void setTaskID(int taskID) {
this.taskID = taskID;
}
}
 
Так в чем ошибка?)) Кодировка? Или русска мана не поддерживается?
 
Как-то так:
PHP:
package rmbb.main;

import org.bukkit.plugin.java.JavaPlugin;

public class MainClass extends JavaPlugin {

    public Bar bar;

    @Override
    public void onEnable() {
        bar = new BarProvider(this);
        bar.buildBar();
        this.getServer().getPluginManager().registerEvents(new OnJoinListener(bar), this);

    }
}
PHP:
package rmbb.main;

import org.bukkit.boss.BossBar;
import org.bukkit.entity.Player;

public interface Bar {

    public void viewBar(Player player);

    public BossBar getBar();

    public void buildBar();

    public void startPorgress();
 
 


}
PHP:
package rmbb.main;

import org.bukkit.Bukkit;
import org.bukkit.ChatColor;
import org.bukkit.boss.BarColor;
import org.bukkit.boss.BarStyle;
import org.bukkit.boss.BossBar;
import org.bukkit.entity.Player;

public class BarProvider implements Bar {

    private BossBar bar;
    private MainClass plugin;
    private int taskId = 0;

    public BarProvider(MainClass instance) {
        this.plugin = instance;
    }

    @Override
    public void viewBar(Player player) {
        this.bar.addPlayer(player);
    }

    @Override
    public BossBar getBar() {
        return this.bar;
    }

    @Override
    public void buildBar() {
        bar = Bukkit.createBossBar(format("&cПокупать донат только на &brabbitmine.ru"), BarColor.RED, BarStyle.SOLID);
        bar.setVisible(true);
    }

    @Override
    public void startPorgress() {
        setTaskId(Bukkit.getScheduler().scheduleSyncRepeatingTask(plugin, new BarRunnable(getBar()) {

        }, 0, 20));

    }

    public int getTaskId() {
        return taskId;
    }

    public void setTaskId(int taskId) {
        this.taskId = taskId;
    }
 
    private String format(String msg) {
        return ChatColor.translateAlternateColorCodes('&', msg);
    }

}
PHP:
package rmbb.main;

import org.bukkit.ChatColor;
import org.bukkit.boss.BarColor;
import org.bukkit.boss.BossBar;

public class BarRunnable implements Runnable {

    int count = -1;
    double progress = 1.0;
    double time = 1.0 / (20);

    public BossBar bar;

    public BarRunnable(BossBar bar) {
        this.bar = bar;
    }

    @Override
    public void run() {
        switch (count) {
        case -1:
            break;
        case 0:
            bar.setColor(BarColor.PINK);
            bar.setTitle(format("&dВ честь открытия сервера скидки на донат &c9999999999%&d!!!"));
            break;
        case 1:
            bar.setColor(BarColor.BLUE);
            bar.setTitle(format(
                    "&3При покупке доната &l&4Господь Бог &r&3вы получаете минет от гл.админов и по ****у бесплатно"));
            break;
        case 2:
            bar.setColor(BarColor.GREEN);
            bar.setTitle(format("&dауе!!!"));
            break;
        case 3:
        default:
            bar.setColor(BarColor.RED);
            bar.setTitle(format("&cУляля-уляля пчелы пчелы"));
            count = -1;
            break;

        }

        progress = progress - time;
        if (progress <= 0) {
            count++;
            progress = 1.0;
        }
    }

    private String format(String msg) {
        return ChatColor.translateAlternateColorCodes('&', msg);
    }

}
PHP:
package rmbb.main;

import org.bukkit.event.EventHandler;
import org.bukkit.event.Listener;
import org.bukkit.event.player.PlayerJoinEvent;

public class OnJoinListener implements Listener {
 
    private Bar bar;

    public OnJoinListener(Bar bar) {
        this.bar = bar;
    }
 
    @EventHandler
    public void onJoin(PlayerJoinEvent e) {
        bar.viewBar(e.getPlayer());
    }

}
 
Как-то так:
PHP:
package rmbb.main;

import org.bukkit.plugin.java.JavaPlugin;

public class MainClass extends JavaPlugin {

    public Bar bar;

    @Override
    public void onEnable() {
        bar = new BarProvider(this);
        bar.buildBar();
        this.getServer().getPluginManager().registerEvents(new OnJoinListener(bar), this);

    }
}
PHP:
package rmbb.main;

import org.bukkit.boss.BossBar;
import org.bukkit.entity.Player;

public interface Bar {

    public void viewBar(Player player);

    public BossBar getBar();

    public void buildBar();

    public void startPorgress();
 
 


}
PHP:
package rmbb.main;

import org.bukkit.Bukkit;
import org.bukkit.ChatColor;
import org.bukkit.boss.BarColor;
import org.bukkit.boss.BarStyle;
import org.bukkit.boss.BossBar;
import org.bukkit.entity.Player;

public class BarProvider implements Bar {

    private BossBar bar;
    private MainClass plugin;
    private int taskId = 0;

    public BarProvider(MainClass instance) {
        this.plugin = instance;
    }

    @Override
    public void viewBar(Player player) {
        this.bar.addPlayer(player);
    }

    @Override
    public BossBar getBar() {
        return this.bar;
    }

    @Override
    public void buildBar() {
        bar = Bukkit.createBossBar(format("&cПокупать донат только на &brabbitmine.ru"), BarColor.RED, BarStyle.SOLID);
        bar.setVisible(true);
    }

    @Override
    public void startPorgress() {
        setTaskId(Bukkit.getScheduler().scheduleSyncRepeatingTask(plugin, new BarRunnable(getBar()) {

        }, 0, 20));

    }

    public int getTaskId() {
        return taskId;
    }

    public void setTaskId(int taskId) {
        this.taskId = taskId;
    }
 
    private String format(String msg) {
        return ChatColor.translateAlternateColorCodes('&', msg);
    }

}
PHP:
package rmbb.main;

import org.bukkit.ChatColor;
import org.bukkit.boss.BarColor;
import org.bukkit.boss.BossBar;

public class BarRunnable implements Runnable {

    int count = -1;
    double progress = 1.0;
    double time = 1.0 / (20);

    public BossBar bar;

    public BarRunnable(BossBar bar) {
        this.bar = bar;
    }

    @Override
    public void run() {
        switch (count) {
        case -1:
            break;
        case 0:
            bar.setColor(BarColor.PINK);
            bar.setTitle(format("&dВ честь открытия сервера скидки на донат &c9999999999%&d!!!"));
            break;
        case 1:
            bar.setColor(BarColor.BLUE);
            bar.setTitle(format(
                    "&3При покупке доната &l&4Господь Бог &r&3вы получаете минет от гл.админов и по ****у бесплатно"));
            break;
        case 2:
            bar.setColor(BarColor.GREEN);
            bar.setTitle(format("&dауе!!!"));
            break;
        case 3:
        default:
            bar.setColor(BarColor.RED);
            bar.setTitle(format("&cУляля-уляля пчелы пчелы"));
            count = -1;
            break;

        }

        progress = progress - time;
        if (progress <= 0) {
            count++;
            progress = 1.0;
        }
    }

    private String format(String msg) {
        return ChatColor.translateAlternateColorCodes('&', msg);
    }

}
PHP:
package rmbb.main;

import org.bukkit.event.EventHandler;
import org.bukkit.event.Listener;
import org.bukkit.event.player.PlayerJoinEvent;

public class OnJoinListener implements Listener {
 
    private Bar bar;

    public OnJoinListener(Bar bar) {
        this.bar = bar;
    }
 
    @EventHandler
    public void onJoin(PlayerJoinEvent e) {
        bar.viewBar(e.getPlayer());
    }

}
чет не работает, сервер даже за плагин не считает это творение ¯\_(ツ)_/¯
 
Исправляй BarRunnable. Я не знаю, что ты хочешь сделать, поэтому прошлый код сюда запихал.
Хочу сделать, чтобы полоса боссбара ползла, и изменялся цвет и текст. Хотя бы что-то похожее как на хайпиксиль.
 
Назад
Верх