Помогите Создание Класса Медик.

Кизяка

Активный участник
Баллы
61
Всем привет, как сделать класс медик, суть класса, Тебе даётся книга, и ты должен ее активировать, после активации, каждый 5 сек будет даваться 4 сердца, в радиусе 5 блоков, люди что стоят этом радиусе вылечится.
Заранее спасибо.
 
В чём сложность? Даёшь книгу, проверяешь активацию и каждые 5 сек шедулером давай в радиусе 5 блоков по 4 сердца
 
Всем привет, как сделать класс медик, суть класса, Тебе даётся книга, и ты должен ее активировать, после активации, каждый 5 сек будет даваться 4 сердца, в радиусе 5 блоков, люди что стоят этом радиусе вылечится.
Заранее спасибо.
Тебе для анни?
 
Код:
public class Cleric extends ConfigurableKit{

    private String in1 = "Кинга " + ChatColor.RED + "Выключено";
    private String in2 = "Кинга " + ChatColor.GREEN + "Включено";
    private HashMap<String, Long> TimeCoolDown = new HashMap<String, Long>();
    private HashMap<UUID, Integer> SID = new HashMap<UUID, Integer>();
    private HashMap<UUID, Long> lastuse = new HashMap<UUID, Long>();
    
    public Cleric() {
        this.Initialize();
    }
    
    @Override
    protected List<String> getDefaultDescription() {
        final List<String> l = new ArrayList<String>();
        this.addToList(l, this.aqua + "С включенной книгой, вы");
        this.addToList(l, this.aqua + "Раз в 10 секунд");
        this.addToList(l, this.aqua + "Восстанавливаете 2 сердца");
        this.addToList(l, this.aqua + "Себе и союзникам неподалеку");
        return l;
    }

    @Override
    protected ItemStack getDefaultIcon() {
        return new ItemStack(Material.ENCHANTED_BOOK);
    }

    @Override
    protected Loadout getFinalLoadout() {
        ItemStack cs = new ItemStack(Material.ENCHANTED_BOOK);
        ItemMeta csMeta = cs.getItemMeta();
        csMeta.setDisplayName(in1);
        cs.setItemMeta(csMeta);
        return new Loadout().addGoldSword().addWoodPick().addWoodAxe().addClassUndropabbleSoulboundItem(cs);
    }

    @Override
    protected String getInternalName() {
        return ChatColor.GREEN + "Cleric";
    }

    @Override
    protected void loadFromConfig(ConfigurationSection arg0) {
        // TODO Автоматически созданная заглушка метода
        
    }

    @Override
    protected void onPlayerRespawn(Player p, AnniPlayer ap) {
        if (SID.containsKey(p.getUniqueId())) {
            Bukkit.getScheduler().cancelTask(SID.get(p.getUniqueId()));
        }
    }

    @Override
    protected int setDefaults(ConfigurationSection arg0) {
        // TODO Автоматически созданная заглушка метода
        return 0;
    }

    @Override
    protected void setUp() {
        // TODO Автоматически созданная заглушка метода
        
    }

    @Override
    public void cleanup(Player p) {
        if (SID.containsKey(p.getUniqueId())) {
            Bukkit.getScheduler().cancelTask(SID.get(p.getUniqueId()));
        }
    }

    @Override
    public boolean onItemClick(Inventory inv, AnniPlayer arg1) {
        this.addLoadoutToInventory(inv);
        return true;
    }

    protected boolean isSpecialItem1(final ItemStack stack) {
        if (stack != null && stack.hasItemMeta() && stack.getItemMeta().hasDisplayName()) {
            final String name = stack.getItemMeta().getDisplayName();
            if (name.contains(in1) && KitUtils.isClassUndropabbleSoulbound(stack)) {
                return true;
            }
        }
        return false;
    }
    
    protected boolean isSpecialItem2(final ItemStack stack) {
        if (stack != null && stack.hasItemMeta() && stack.getItemMeta().hasDisplayName()) {
            final String name = stack.getItemMeta().getDisplayName();
            if (name.contains(in2) && KitUtils.isClassUndropabbleSoulbound(stack)) {
                return true;
            }
        }
        return false;
    }
    
    protected void Cler(Player p, int L) {
        Runnable cler = new Runnable() {
            @Override
            public void run() {
                for (Entity ent : p.getWorld().getNearbyEntities(p.getLocation(), 5, 5, 5)) {
                    if (ent.getType() != EntityType.PLAYER)continue;
                    Player ep = (Player) ent;
                    if (!AnniPlayer.getPlayer(p).getTeam().equals(AnniPlayer.getPlayer(ep).getTeam()))continue;
                    if (ep.getHealth() > 16) {
                        ep.setHealth(20);
                    }else {
                        ep.setHealth(ep.getHealth() + 4);
                    }
                    ep.getWorld().spigot().playEffect(p.getLocation(), Effect.HEART, 0, 0, 0f, 1.0f, 0f, 0f, 5, 30);
                }
                p.getWorld().playSound(p.getLocation(), Sound.LEVEL_UP, 1F, 1F);
                Long time = Long.valueOf(System.currentTimeMillis());
                lastuse.put(p.getUniqueId(), time);
            }
        };int id = Bukkit.getScheduler().scheduleSyncRepeatingTask(AnnihilationMain.INSTANCE, cler, L, 200);
        SID.put(p.getUniqueId(), id);
    }
    
    @EventHandler
    public void pie(PlayerInteractEvent e) {
        if (e.getAction() != Action.RIGHT_CLICK_AIR && e.getAction() != Action.RIGHT_CLICK_BLOCK)return;
        if (AnniPlayer.getPlayer(e.getPlayer()).getKit().equals((Object)this) && (isSpecialItem1(e.getPlayer().getItemInHand()) || isSpecialItem2(e.getPlayer().getItemInHand()))) {
            Player p = e.getPlayer();
            Long time = Long.valueOf(System.currentTimeMillis());
            if(this.TimeCoolDown.containsKey(p.getName())) {
                Long LastUse = this.TimeCoolDown.get(p.getName());
                if(LastUse.longValue() + 2000L > time.longValue()) {
                    return;
                }
            }
            this.TimeCoolDown.put(p.getName(), time);
            if (isSpecialItem1(p.getItemInHand())) {
                ItemMeta m = p.getItemInHand().getItemMeta();
                m.setDisplayName(in2);
                p.getItemInHand().setItemMeta(m);
                if (lastuse.containsKey(p.getUniqueId())) {
                    Long LastU = this.lastuse.get(p.getUniqueId());
                    if (time - LastU < 10000L) {
                        Cler(p, (int) (200-((time - LastU)/50)));
                    }else {
                        Cler(p, 20);
                    }
                }else {
                    Cler(p, 20);
                }
            }else {
                if (isSpecialItem2(p.getItemInHand())) {
                    ItemMeta m = p.getItemInHand().getItemMeta();
                    m.setDisplayName(in1);
                    p.getItemInHand().setItemMeta(m);
                    if (SID.containsKey(p.getUniqueId())) {
                        Bukkit.getScheduler().cancelTask(SID.get(p.getUniqueId()));
                        SID.remove(p.getUniqueId());
                    }
                }
            }
        }
    }
}
 
Код:
public class Cleric extends ConfigurableKit{

    private String in1 = "Кинга " + ChatColor.RED + "Выключено";
    private String in2 = "Кинга " + ChatColor.GREEN + "Включено";
    private HashMap<String, Long> TimeCoolDown = new HashMap<String, Long>();
    private HashMap<UUID, Integer> SID = new HashMap<UUID, Integer>();
    private HashMap<UUID, Long> lastuse = new HashMap<UUID, Long>();
   
    public Cleric() {
        this.Initialize();
    }
   
    @Override
    protected List<String> getDefaultDescription() {
        final List<String> l = new ArrayList<String>();
        this.addToList(l, this.aqua + "С включенной книгой, вы");
        this.addToList(l, this.aqua + "Раз в 10 секунд");
        this.addToList(l, this.aqua + "Восстанавливаете 2 сердца");
        this.addToList(l, this.aqua + "Себе и союзникам неподалеку");
        return l;
    }

    @Override
    protected ItemStack getDefaultIcon() {
        return new ItemStack(Material.ENCHANTED_BOOK);
    }

    @Override
    protected Loadout getFinalLoadout() {
        ItemStack cs = new ItemStack(Material.ENCHANTED_BOOK);
        ItemMeta csMeta = cs.getItemMeta();
        csMeta.setDisplayName(in1);
        cs.setItemMeta(csMeta);
        return new Loadout().addGoldSword().addWoodPick().addWoodAxe().addClassUndropabbleSoulboundItem(cs);
    }

    @Override
    protected String getInternalName() {
        return ChatColor.GREEN + "Cleric";
    }

    @Override
    protected void loadFromConfig(ConfigurationSection arg0) {
        // TODO Автоматически созданная заглушка метода
       
    }

    @Override
    protected void onPlayerRespawn(Player p, AnniPlayer ap) {
        if (SID.containsKey(p.getUniqueId())) {
            Bukkit.getScheduler().cancelTask(SID.get(p.getUniqueId()));
        }
    }

    @Override
    protected int setDefaults(ConfigurationSection arg0) {
        // TODO Автоматически созданная заглушка метода
        return 0;
    }

    @Override
    protected void setUp() {
        // TODO Автоматически созданная заглушка метода
       
    }

    @Override
    public void cleanup(Player p) {
        if (SID.containsKey(p.getUniqueId())) {
            Bukkit.getScheduler().cancelTask(SID.get(p.getUniqueId()));
        }
    }

    @Override
    public boolean onItemClick(Inventory inv, AnniPlayer arg1) {
        this.addLoadoutToInventory(inv);
        return true;
    }

    protected boolean isSpecialItem1(final ItemStack stack) {
        if (stack != null && stack.hasItemMeta() && stack.getItemMeta().hasDisplayName()) {
            final String name = stack.getItemMeta().getDisplayName();
            if (name.contains(in1) && KitUtils.isClassUndropabbleSoulbound(stack)) {
                return true;
            }
        }
        return false;
    }
   
    protected boolean isSpecialItem2(final ItemStack stack) {
        if (stack != null && stack.hasItemMeta() && stack.getItemMeta().hasDisplayName()) {
            final String name = stack.getItemMeta().getDisplayName();
            if (name.contains(in2) && KitUtils.isClassUndropabbleSoulbound(stack)) {
                return true;
            }
        }
        return false;
    }
   
    protected void Cler(Player p, int L) {
        Runnable cler = new Runnable() {
            @Override
            public void run() {
                for (Entity ent : p.getWorld().getNearbyEntities(p.getLocation(), 5, 5, 5)) {
                    if (ent.getType() != EntityType.PLAYER)continue;
                    Player ep = (Player) ent;
                    if (!AnniPlayer.getPlayer(p).getTeam().equals(AnniPlayer.getPlayer(ep).getTeam()))continue;
                    if (ep.getHealth() > 16) {
                        ep.setHealth(20);
                    }else {
                        ep.setHealth(ep.getHealth() + 4);
                    }
                    ep.getWorld().spigot().playEffect(p.getLocation(), Effect.HEART, 0, 0, 0f, 1.0f, 0f, 0f, 5, 30);
                }
                p.getWorld().playSound(p.getLocation(), Sound.LEVEL_UP, 1F, 1F);
                Long time = Long.valueOf(System.currentTimeMillis());
                lastuse.put(p.getUniqueId(), time);
            }
        };int id = Bukkit.getScheduler().scheduleSyncRepeatingTask(AnnihilationMain.INSTANCE, cler, L, 200);
        SID.put(p.getUniqueId(), id);
    }
   
    @EventHandler
    public void pie(PlayerInteractEvent e) {
        if (e.getAction() != Action.RIGHT_CLICK_AIR && e.getAction() != Action.RIGHT_CLICK_BLOCK)return;
        if (AnniPlayer.getPlayer(e.getPlayer()).getKit().equals((Object)this) && (isSpecialItem1(e.getPlayer().getItemInHand()) || isSpecialItem2(e.getPlayer().getItemInHand()))) {
            Player p = e.getPlayer();
            Long time = Long.valueOf(System.currentTimeMillis());
            if(this.TimeCoolDown.containsKey(p.getName())) {
                Long LastUse = this.TimeCoolDown.get(p.getName());
                if(LastUse.longValue() + 2000L > time.longValue()) {
                    return;
                }
            }
            this.TimeCoolDown.put(p.getName(), time);
            if (isSpecialItem1(p.getItemInHand())) {
                ItemMeta m = p.getItemInHand().getItemMeta();
                m.setDisplayName(in2);
                p.getItemInHand().setItemMeta(m);
                if (lastuse.containsKey(p.getUniqueId())) {
                    Long LastU = this.lastuse.get(p.getUniqueId());
                    if (time - LastU < 10000L) {
                        Cler(p, (int) (200-((time - LastU)/50)));
                    }else {
                        Cler(p, 20);
                    }
                }else {
                    Cler(p, 20);
                }
            }else {
                if (isSpecialItem2(p.getItemInHand())) {
                    ItemMeta m = p.getItemInHand().getItemMeta();
                    m.setDisplayName(in1);
                    p.getItemInHand().setItemMeta(m);
                    if (SID.containsKey(p.getUniqueId())) {
                        Bukkit.getScheduler().cancelTask(SID.get(p.getUniqueId()));
                        SID.remove(p.getUniqueId());
                    }
                }
            }
        }
    }
}
Можешь дать еще
import, а то ошибок дх.
 
Код:
import org.bukkit.Bukkit;
import org.bukkit.ChatColor;
import org.bukkit.Effect;
import org.bukkit.Material;
import org.bukkit.Sound;
import org.bukkit.configuration.ConfigurationSection;
import org.bukkit.entity.Entity;
import org.bukkit.entity.EntityType;
import org.bukkit.entity.Player;
import org.bukkit.event.EventHandler;
import org.bukkit.event.block.Action;
import org.bukkit.event.player.PlayerInteractEvent;
import org.*********ventory.Inventory;
import org.*********ventory.ItemStack;
import org.*********ventory.meta.ItemMeta;

import com.hotmail.AdrianSRJose.AnniPro.anniGame.AnniPlayer;
import com.hotmail.AdrianSRJose.AnniPro.kits.KitUtils;
import com.hotmail.AdrianSRJose.AnniPro.kits.Loadout;
import com.hotmail.AdrianSRJose.AnniPro.main.AnnihilationMain;
import com.hotmail.AdrianSRJose.base.ConfigurableKit;
 
Код:
import org.bukkit.Bukkit;
import org.bukkit.ChatColor;
import org.bukkit.Effect;
import org.bukkit.Material;
import org.bukkit.Sound;
import org.bukkit.configuration.ConfigurationSection;
import org.bukkit.entity.Entity;
import org.bukkit.entity.EntityType;
import org.bukkit.entity.Player;
import org.bukkit.event.EventHandler;
import org.bukkit.event.block.Action;
import org.bukkit.event.player.PlayerInteractEvent;
import org.*********ventory.Inventory;
import org.*********ventory.ItemStack;
import org.*********ventory.meta.ItemMeta;

import com.hotmail.AdrianSRJose.AnniPro.anniGame.AnniPlayer;
import com.hotmail.AdrianSRJose.AnniPro.kits.KitUtils;
import com.hotmail.AdrianSRJose.AnniPro.kits.Loadout;
import com.hotmail.AdrianSRJose.AnniPro.main.AnnihilationMain;
import com.hotmail.AdrianSRJose.base.ConfigurableKit;
А какое ядро использовали?
Просто в этой строке ошибка пишет

ep.getWorld().spigot().playEffect(p.getLocation(), Effect.HEART, 0, 0, 0f, 1.0f, 0f, 0f, 5, 30);
Ошика: playEffect, Effect.HEART
 
А какое ядро использовали?
Просто в этой строке ошибка пишет

ep.getWorld().spigot().playEffect(p.getLocation(), Effect.HEART, 0, 0, 0f, 1.0f, 0f, 0f, 5, 30);
Ошика: playEffect, Effect.HEART
1.8.9, сделай под свою версию или удали строку
 
Назад
Верх