- Баллы
- 66
- Имя в Minecraft
- Serega007
Здравствуйте, пишу свой плагин под ивенты (мини-игры) конкретно под Spleef, и проблема такая что почему-то сообщения повторяются именно там где я использовал таймер BukkitScheduler. Причём если на сервере будет 2 игрока, оно будет повторяться по 2 раза, если 10 игроков будет, оно повториться по 10 раз а мне надо что б по одному сообщению писало.
Собсна исходники
Собсна исходники
Код:
name: Events
version: 1.0
description: Данный плагин реализует всю техническую часть ивентов (мини-игр)
main: klaster.main.Events
author: Serega007
commands:
event:
permission: events.event
permission-message: Ю дон'т хев пермисион
description: Основная команда плагина Events
usage: /event <broadcast|start|stop> <название ивента>
Код:
package klaster.main;
import org.bukkit.plugin.java.JavaPlugin;
public class Events extends JavaPlugin {
public void onEnable() {
getCommand("event").setExecutor(new Commandevent(this));
}
}
Код:
package klaster.main;
import java.util.ArrayList;
import java.util.List;
import org.bukkit.Bukkit;
import org.bukkit.ChatColor;
import org.bukkit.Location;
import org.bukkit.Material;
import org.bukkit.World;
import org.bukkit.block.Block;
import org.bukkit.command.Command;
import org.bukkit.command.CommandExecutor;
import org.bukkit.command.CommandSender;
import org.bukkit.enchantments.Enchantment;
import org.bukkit.entity.Player;
import org.*********ventory.ItemStack;
import org.*********ventory.meta.ItemMeta;
import org.bukkit.scheduler.BukkitScheduler;
public class Commandevent implements CommandExecutor {
private Events plugin;
public Commandevent(Events plugin) {
this.plugin = plugin;
}
@SuppressWarnings("deprecation")
@Override
public boolean onCommand(CommandSender sender, Command cmd, String label, String[] args) {
if(args.length == 0) {
return false;
}
else if(args[0].equals("start")) {
if(args.length == 1) {
sender.sendMessage("Укажите название ивента (Spleef)");
return true;
}
if(args[0].equals("start") && args[1].equals("Spleef")) {
//broadcast о ивенте
Bukkit.broadcastMessage(ChatColor.DARK_RED + ChatColor.BOLD.toString() + "[" + ChatColor.DARK_PURPLE + ChatColor.BOLD.toString() + "Spleef" + ChatColor.DARK_RED + ChatColor.BOLD.toString() + "] " + ChatColor.DARK_AQUA + ChatColor.BOLD.toString() + "Ивент " + ChatColor.GOLD + ChatColor.BOLD.toString() + "Spleef "+ ChatColor.DARK_AQUA + ChatColor.BOLD.toString() + "начался!");
//Телепортация всех игроков на арену
World world = Bukkit.getWorld("world");;
Location e = new Location(world, -5, 81, -128);
for(Player p : Bukkit.getOnlinePlayers()){
p.teleport(e);
//Выдача лопаты
ItemStack items = new ItemStack(Material.DIAMOND_SPADE);
items.addEnchantment(Enchantment.DURABILITY, 3);
items.addEnchantment(Enchantment.DIG_SPEED, 5);
List<String> lores = new ArrayList<String>();
lores.add("§3Копает быстро");
String myDisplayName = "§3§lЛопата §5§lСплифера";
ItemMeta im = items.getItemMeta();
im.setDisplayName(myDisplayName);
im.setLore(lores);
items.setItemMeta(im);
p.getInventory().addItem(items);
//Собсна отсчёт до начала ивента (всего 16 секунд)
BukkitScheduler time15 = Bukkit.getServer().getScheduler();
time15.scheduleSyncDelayedTask (plugin, new Runnable() {
public void run(){
Bukkit.broadcastMessage(ChatColor.DARK_RED + ChatColor.BOLD.toString() + "[" + ChatColor.DARK_PURPLE + ChatColor.BOLD.toString() + "Spleef" + ChatColor.DARK_RED + ChatColor.BOLD.toString() + "] " + ChatColor.DARK_AQUA + ChatColor.BOLD.toString() + "Начинаем через " + ChatColor.DARK_RED + ChatColor.BOLD.toString() + "15 "+ ChatColor.DARK_AQUA + ChatColor.BOLD.toString() + "секунд");
}
}, 20L);
BukkitScheduler time10 = Bukkit.getServer().getScheduler();
time10.scheduleSyncDelayedTask (plugin, new Runnable() {
public void run(){
Bukkit.broadcastMessage(ChatColor.DARK_RED + ChatColor.BOLD.toString() + "[" + ChatColor.DARK_PURPLE + ChatColor.BOLD.toString() + "Spleef" + ChatColor.DARK_RED + ChatColor.BOLD.toString() + "] " + ChatColor.DARK_AQUA + ChatColor.BOLD.toString() + "Начинаем через " + ChatColor.DARK_RED + ChatColor.BOLD.toString() + "10 "+ ChatColor.DARK_AQUA + ChatColor.BOLD.toString() + "секунд");
}
}, 120L);
BukkitScheduler time5 = Bukkit.getServer().getScheduler();
time5.scheduleSyncDelayedTask (plugin, new Runnable() {
public void run(){
Bukkit.broadcastMessage(ChatColor.DARK_RED + ChatColor.BOLD.toString() + "[" + ChatColor.DARK_PURPLE + ChatColor.BOLD.toString() + "Spleef" + ChatColor.DARK_RED + ChatColor.BOLD.toString() + "] " + ChatColor.DARK_AQUA + ChatColor.BOLD.toString() + "Начинаем через " + ChatColor.DARK_RED + ChatColor.BOLD.toString() + "5 "+ ChatColor.DARK_AQUA + ChatColor.BOLD.toString() + "секунд");
}
}, 220L);
BukkitScheduler time4 = Bukkit.getServer().getScheduler();
time4.scheduleSyncDelayedTask (plugin, new Runnable() {
public void run(){
Bukkit.broadcastMessage(ChatColor.DARK_RED + ChatColor.BOLD.toString() + "[" + ChatColor.DARK_PURPLE + ChatColor.BOLD.toString() + "Spleef" + ChatColor.DARK_RED + ChatColor.BOLD.toString() + "] " + ChatColor.DARK_RED + ChatColor.BOLD.toString() + "4 "+ ChatColor.DARK_AQUA + ChatColor.BOLD.toString() + "секунды");
}
}, 240L);
BukkitScheduler time3 = Bukkit.getServer().getScheduler();
time3.scheduleSyncDelayedTask (plugin, new Runnable() {
public void run(){
Bukkit.broadcastMessage(ChatColor.DARK_RED + ChatColor.BOLD.toString() + "[" + ChatColor.DARK_PURPLE + ChatColor.BOLD.toString() + "Spleef" + ChatColor.DARK_RED + ChatColor.BOLD.toString() + "] " + ChatColor.DARK_RED + ChatColor.BOLD.toString() + "3");
}
}, 260L);
BukkitScheduler time2 = Bukkit.getServer().getScheduler();
time2.scheduleSyncDelayedTask (plugin, new Runnable() {
public void run(){
Bukkit.broadcastMessage(ChatColor.DARK_RED + ChatColor.BOLD.toString() + "[" + ChatColor.DARK_PURPLE + ChatColor.BOLD.toString() + "Spleef" + ChatColor.DARK_RED + ChatColor.BOLD.toString() + "] " + ChatColor.DARK_RED + ChatColor.BOLD.toString() + "2");
}
}, 280L);
BukkitScheduler time1 = Bukkit.getServer().getScheduler();
time1.scheduleSyncDelayedTask (plugin, new Runnable() {
public void run(){
Bukkit.broadcastMessage(ChatColor.DARK_RED + ChatColor.BOLD.toString() + "[" + ChatColor.DARK_PURPLE + ChatColor.BOLD.toString() + "Spleef" + ChatColor.DARK_RED + ChatColor.BOLD.toString() + "] " + ChatColor.DARK_RED + ChatColor.BOLD.toString() + "1");
}
}, 300L);
BukkitScheduler time0 = Bukkit.getServer().getScheduler();
time0.scheduleSyncDelayedTask (plugin, new Runnable() {
public void run(){
Bukkit.broadcastMessage(ChatColor.DARK_RED + ChatColor.BOLD.toString() + "[" + ChatColor.DARK_PURPLE + ChatColor.BOLD.toString() + "Spleef" + ChatColor.DARK_RED + ChatColor.BOLD.toString() + "] " + ChatColor.DARK_RED + ChatColor.BOLD.toString() + "GO"+ ChatColor.DARK_AQUA + ChatColor.BOLD.toString() + "!");
}
}, 320L);
//Регенерация арены на блок снега
Location s = new Location(world, -44, 79, -172);
int x1 = s.getBlockX();
int y1 = s.getBlockY();
int z1 = s.getBlockZ();
int length = 76;
int x2 = x1 + length;
int y2 = y1;
int z2 = z1 + length;
World world1 = s.getWorld();
for (int xPoint = x1; xPoint <= x2; xPoint++) {
for (int yPoint = y1; yPoint <= y2; yPoint++) {
for (int zPoint = z1; zPoint <= z2; zPoint++) {
Block currentBlock = world1.getBlockAt(xPoint, yPoint, zPoint);
currentBlock.setType(Material.SNOW_BLOCK);
}}}
}
return true;
}
}
else if(args[0].equals("broadcast")) {
if(args.length == 1) {
sender.sendMessage("Укажите название ивента (Spleef)");
return true;
}
if(args[0].equals("broadcast") && args[1].equals("Spleef")) {
Bukkit.broadcastMessage(ChatColor.DARK_RED + ChatColor.BOLD.toString() + "[" + ChatColor.DARK_PURPLE + ChatColor.BOLD.toString() + "Spleef" + ChatColor.DARK_RED + ChatColor.BOLD.toString() + "] " + ChatColor.DARK_AQUA + ChatColor.BOLD.toString() + "Скоро начнётся ивент " + ChatColor.GOLD + ChatColor.BOLD.toString() + "Spleef"+ ChatColor.DARK_AQUA + ChatColor.BOLD.toString() + "!");
return true;
}
}
else if(args[0].equals("stop")) {
if(args.length == 1) {
sender.sendMessage("Укажите название ивента (Spleef)");
return true;
}
if(args.length == 2) {
sender.sendMessage(ChatColor.RED + "Данная команда в разработке!");
return true;
}
}
return true;
}
}
Последнее редактирование:
