Войти или зарегистрироваться
  • Вы находитесь в сообществе Rubukkit. Мы - администраторы серверов Minecraft, разрабатываем собственные плагины и переводим на различные языки плагины наших коллег из других стран.

.

Статус
Закрыто для дальнейших ответов.
Про это я знаю, но от 0 мне не подходит, мне нужно четко в диапазонею
int number = r.nextInt(ширина диапазона) + сколько не хватает до нижней границы.
Пример:
Нужно от 5 до 10:
int number = r.nextInt(5) + 5;
 
Написать еще один метод? Или не вариант?
Фиг его знает.. Наверно попробую.
Пасаны, подхелпуйте, опять та же хрень, у всех предметов 100% прочность.
JavaScript:
package ua.roboman.plugin;

import org.bukkit.Bukkit;
import org.bukkit.ChatColor;
import org.bukkit.Material;
import org.bukkit.enchantments.Enchantment;
import org.bukkit.entity.Player;
import org.*********ventory.ItemStack;
import org.*********ventory.meta.ItemMeta;

import java.util.ArrayList;
import java.util.List;
import java.util.Random;

public class Items
{
    private ArrayList<ItemStack> randomItems = new ArrayList<ItemStack>();
    private String chatPrefix = ChatColor.translateAlternateColorCodes('&', "&c&l[&2&lCase&a&ls&c&l] &7");

    public Items()
    {

    }

    private String generateRandomDurabilityM()
    {
        int Min = 1;
        int Max = 100;
        int fortune = Min + (int)(Math.random() * ((Max - Min) + 1));
        if (fortune <= 30) return ChatColor.translateAlternateColorCodes('&', "&4Закаленный в боях");
        else if (fortune <= 55) return ChatColor.translateAlternateColorCodes('&', "&cПоношенный");
        else if (fortune <= 75) return ChatColor.translateAlternateColorCodes('&', "&5&lПосле полевых испытаний");
        else if (fortune <= 90) return ChatColor.translateAlternateColorCodes('&', "&a&lНемного поношенный");
        else if (fortune <= 100)return ChatColor.translateAlternateColorCodes('&', "&2&lПрямо с завода");
        else return ChatColor.translateAlternateColorCodes('&', "&e&lЭкстраординарный");
    }

    private List<String> getRandomDurabilityToLore()
    {
        ArrayList<String> list = new ArrayList<String>();
        list.add(generateRandomDurabilityM());
        return list;
    }

    private Short getDurability(short max, String durability)
    {
        if (durability.equals(ChatColor.translateAlternateColorCodes('&', "&4Закаленный в боях")))
        {
            return (short) (max / 2.);
        }
        else if (durability.equals(ChatColor.translateAlternateColorCodes('&', "&cПоношенный")))
        {
            return (short) (max * 3. / 4);
        }
        else if (durability.equals(ChatColor.translateAlternateColorCodes('&', "&5После полевых испытаний")))
        {
            return (short) (max * 5. / 6);
        }
        else if (durability.equals(ChatColor.translateAlternateColorCodes('&', "&a&lНемного поношенный")))
        {
            return (short) (max * 9. / 10);
        }
        else if (durability.equals(ChatColor.translateAlternateColorCodes('&', "&2&lПрямо с завода")))
        {
            return max;
        }
        return -1;
    }

    public void playerOpenCase(Player player)
    {
        int Min = 1;
        int Max = 5;
        int fortune = Min + (int) (Math.random() * ((Max - Min) + 1));
        String name;
        ItemStack item;
        if (fortune == 1)
        {
            name = ChatColor.translateAlternateColorCodes('&', "&9Золотой меч");
            item = new ItemStack(Material.GOLD_SWORD);
        }
        else if (fortune == 2)
        {
            name = ChatColor.translateAlternateColorCodes('&', "&1Деревянный меч");
            item = new ItemStack(Material.WOOD_SWORD);
        }
        else if (fortune == 3)
        {
            name = ChatColor.translateAlternateColorCodes('&', "&dКаменный меч");
            item = new ItemStack(Material.STONE_SWORD);
        }
        else if (fortune == 4)
        {
            name = ChatColor.translateAlternateColorCodes('&', "&5Железный меч");
            item = new ItemStack(Material.IRON_SWORD);
        }
        else if (fortune == 5)
        {
            name = ChatColor.translateAlternateColorCodes('&', "&4Алмазный меч");
            item = new ItemStack(Material.DIAMOND_SWORD);
        }
        else return;
        ItemMeta meta = item.getItemMeta();
        if (new Random().nextBoolean()) meta.addEnchant(Enchantment.DAMAGE_ALL, new Random().nextInt(29)+1, true);
        if (new Random().nextBoolean()) meta.addEnchant(Enchantment.KNOCKBACK, new Random().nextInt(19)+1, true);
        if (new Random().nextBoolean()) meta.addEnchant(Enchantment.FIRE_ASPECT, new Random().nextInt(19)+1, true);
        if (new Random().nextBoolean()) meta.addEnchant(Enchantment.LOOT_BONUS_MOBS, new Random().nextInt(19)+1, true);
        if (new Random().nextBoolean()) meta.addEnchant(Enchantment.DURABILITY, new Random().nextInt(29)+1, true);
        meta.setDisplayName(name);
        List<String> lore = getRandomDurabilityToLore();
        meta.setLore(lore);
        item.setDurability(getDurability(item.getType().getMaxDurability(), ChatColor.translateAlternateColorCodes('&', name)));
        item.setItemMeta(meta);
        player.getInventory().setItemInHand(item);
        Bukkit.broadcastMessage(ChatColor.translateAlternateColorCodes('&', chatPrefix + "Игрок &9" + player.getName() + "&7 открыл кейс и получил: " + name.toLowerCase() + " " + meta.getLore().get(0).toLowerCase()));
    }
}

UP
 
Извините,оффтоп: Mr_RoboMan,Добавь в скайп, tiberium_1111, вопросик есть)
Шабы ты мне рекламил свой сервер 1.5.2? Ну ок...
И да UP
И можете подсказать... Почему даже первая проверка не работает?
JavaScript:
    @EventHandler
    public void checkOpenCase(PlayerInteractEvent event)
    {
        if (event.getClickedBlock().getType().equals(Material.CHEST))
        {
            Bukkit.broadcastMessage("ПервыйТест");
            if (event.getPlayer().getInventory().getItemInHand().getItemMeta().getDisplayName().equals(ChatColor.translateAlternateColorCodes('&', "&aКейс")))
            {
                Bukkit.broadcastMessage("ВторойТест");
                if (((Chest) event.getClickedBlock()).getInventory().getName().equals(ChatColor.translateAlternateColorCodes('&', "&cКлюч")))
                {
                    Bukkit.broadcastMessage("ТретийТест");
                    event.getPlayer().getInventory().setItemInHand(new ItemStack(Material.AIR));
                    event.getClickedBlock().setTypeId(0);
                    new Items().playerOpenCase(event.getPlayer());
                }
                else event.getPlayer().sendMessage(ChatColor.translateAlternateColorCodes('&', chatPrefix + "Чтобы открыть кейс нужно держать ключ в руке."));
            }
        }
    }

UP
 
У меня уже ночь и мозги отключены, но материал.чест надо проверять в гетБлокСтейт
 
У меня уже ночь и мозги отключены, но материал.чест надо проверять в гетБлокСтейт
getBlockChest() ? Это где такой метод есть?..
Даже так ничего не пишет в чат...
JavaScript:
    @EventHandler
    public void checkOpenCase(PlayerInteractEvent event)
    {
        Bukkit.broadcastMessage("Просто тест");
        if (event.getClickedBlock().getType().getId() == 54)
        {
            Bukkit.broadcastMessage("ПервыйТест");
            if (event.getPlayer().getInventory().getItemInHand().getItemMeta().getDisplayName().equals(ChatColor.translateAlternateColorCodes('&', "&aКейс")))
            {
                Bukkit.broadcastMessage("ВторойТест");
                if (((Chest) event.getClickedBlock()).getBlockInventory().getName().equals(ChatColor.translateAlternateColorCodes('&', "&cКлюч")))
                {
                    Bukkit.broadcastMessage("ТретийТест");
                    event.getPlayer().getInventory().setItemInHand(new ItemStack(Material.AIR));
                    event.getClickedBlock().setTypeId(0);
                    new Items().playerOpenCase(event.getPlayer());
                }
                else event.getPlayer().sendMessage(ChatColor.translateAlternateColorCodes('&', chatPrefix + "Чтобы открыть кейс нужно держать ключ в руке."));
            }
        }
    }

UPчхи, что делать? Мой плагин болеет!!!
На любой блок ПКМ/ЛКМ - никакой реакции(((
 
Выучите Java'у для начала, а потом уже беритесь за плагины.
 
Выучите Java'у для начала, а потом уже беритесь за плагины.
За совет спасибо, тем не менее я предпочитаю это делать параллельно.
((Chest)event.getClickedBlock().getState())
Спасибо, зароботало.
Кароче ребята, ну опять таже проблема, не правильные прочности...
У закаленного я боях самая большая прочность, у прямо с завода самая маленьькая....
Что делать, как сделать чтоб было правильно?
JavaScript:
package ua.roboman.plugin;

import org.bukkit.Bukkit;
import org.bukkit.ChatColor;
import org.bukkit.Material;
import org.bukkit.block.Chest;
import org.bukkit.enchantments.Enchantment;
import org.bukkit.event.EventHandler;
import org.bukkit.event.Listener;
import org.bukkit.event.player.PlayerInteractEvent;
import org.*********ventory.ItemStack;
import org.*********ventory.ShapedRecipe;
import org.*********ventory.meta.ItemMeta;
import org.bukkit.plugin.java.JavaPlugin;

import java.util.ArrayList;
import java.util.logging.Logger;

public class RandomCase extends JavaPlugin implements Listener
{
    protected String loggerPrefix = "[RandomCase] ";
    protected String chatPrefix = ChatColor.translateAlternateColorCodes('&', "&c&l[&2&lCase&a&ls&c&l] &7");
    protected Logger logger = Logger.getLogger("RandomCase");

    @Override
    public void onEnable()
    {
        getServer().getPluginManager().registerEvents(this, this);
        logger.info(loggerPrefix + "Плагин успешно включен.");
        ArrayList<String> loreCase = new ArrayList<String>();
        loreCase.add(ChatColor.translateAlternateColorCodes('&', "&a&lОружейный кейс"));

        ItemStack itemCase = new ItemStack(Material.CHEST);
        ItemMeta caseMeta = itemCase.getItemMeta();

        caseMeta.addEnchant(Enchantment.DURABILITY, 1, true);
        caseMeta.setDisplayName(ChatColor.translateAlternateColorCodes('&', "&aКейс"));
        caseMeta.setLore(loreCase);

        itemCase.setItemMeta(caseMeta);
        ShapedRecipe recipeCase = new ShapedRecipe(itemCase);
        recipeCase.shape("WWW", "WEW", "WWW");
        recipeCase.setIngredient('W', Material.WOOD);
        recipeCase.setIngredient('E', Material.ENDER_PEARL);
        getServer().addRecipe(recipeCase);

        //==============================================================================================================

        ArrayList<String> loreKey = new ArrayList<String>();
        loreKey.add(ChatColor.translateAlternateColorCodes('&', "&c&lКлюч к кейсу"));

        ItemStack itemKey = new ItemStack(Material.TRIPWIRE_HOOK);
        ItemMeta keyMeta = itemKey.getItemMeta();

        keyMeta.addEnchant(Enchantment.DURABILITY, 1, true);
        keyMeta.setDisplayName(ChatColor.translateAlternateColorCodes('&', "&cКлюч"));
        keyMeta.setLore(loreKey);

        itemKey.setItemMeta(keyMeta);
        ShapedRecipe recipeKey = new ShapedRecipe(itemKey);
        recipeKey.shape("SIS", "SDS", "SSS");
        recipeKey.setIngredient('S', Material.STICK);
        recipeKey.setIngredient('I', Material.IRON_BLOCK);
        recipeKey.setIngredient('D', Material.DIAMOND);
        getServer().addRecipe(recipeKey);
    }

    @EventHandler
    public void checkOpenCase(PlayerInteractEvent event)
    {
        Bukkit.broadcastMessage("Просто тест");
        if (event.getClickedBlock().getType().getId() == 54)
        {
            Bukkit.broadcastMessage("ПервыйТест");
            if (event.getPlayer().getInventory().getItemInHand().getItemMeta().getDisplayName().equals(ChatColor.translateAlternateColorCodes('&', "&cКлюч")))
            {
                Bukkit.broadcastMessage("ВторойТест");
                if (((Chest)event.getClickedBlock().getState()).getInventory().getName().equals(ChatColor.translateAlternateColorCodes('&', "&aКейс")))
                {
                    Bukkit.broadcastMessage("ТретийТест");
                    event.getPlayer().getInventory().setItemInHand(null);
                    event.getClickedBlock().breakNaturally();
                    new Items().playerOpenCase(event.getPlayer());
                }
                else event.getPlayer().sendMessage(ChatColor.translateAlternateColorCodes('&', chatPrefix + "Чтобы открыть кейс нужно держать ключ в руке."));

            }
        }
    }
}
JavaScript:
package ua.roboman.plugin;

import org.bukkit.Bukkit;
import org.bukkit.ChatColor;
import org.bukkit.Material;
import org.bukkit.enchantments.Enchantment;
import org.bukkit.entity.Player;
import org.*********ventory.ItemStack;
import org.*********ventory.meta.ItemMeta;

import java.util.ArrayList;
import java.util.Random;

public class Items
{
    private String chatPrefix = ChatColor.translateAlternateColorCodes('&', "&c&l[&2&lCase&a&ls&c&l] &7");

    public Items()
    {

    }

    public ItemStack setLoreAndDurability(ItemStack item, int goCase)
    {
        ItemMeta meta = item.getItemMeta();
        short durability = item.getType().getMaxDurability();
        int fortune = new Random().nextInt(99)+1;
        ArrayList<String> bs = new ArrayList<String>(), ww = new ArrayList<String>(), ft = new ArrayList<String>(), mw = new ArrayList<String>(), fn = new ArrayList<String>();

        switch (goCase) {
            case 1:
                bs.add(ChatColor.translateAlternateColorCodes('&', "&4Закаленный в боях"));
                ww.add(ChatColor.translateAlternateColorCodes('&', "&cПоношенный"));
                ft.add(ChatColor.translateAlternateColorCodes('&', "&5После полевых испытаний"));
                mw.add(ChatColor.translateAlternateColorCodes('&', "&a&lНемного поношенный"));
                fn.add(ChatColor.translateAlternateColorCodes('&', "&2&lПрямо с завода"));
                break;
            case 2:
                bs.add(ChatColor.translateAlternateColorCodes('&', "&4Закаленная в огороде"));
                ww.add(ChatColor.translateAlternateColorCodes('&', "&cПоношенная"));
                ft.add(ChatColor.translateAlternateColorCodes('&', "&5После полевых испытаний"));
                mw.add(ChatColor.translateAlternateColorCodes('&', "&a&lНемного поношенная"));
                fn.add(ChatColor.translateAlternateColorCodes('&', "&2&lПрямо с кузни"));
                break;
            case 3:
                bs.add(ChatColor.translateAlternateColorCodes('&', "&4Закаленный в древесине"));
                ww.add(ChatColor.translateAlternateColorCodes('&', "&cПоношенный"));
                ft.add(ChatColor.translateAlternateColorCodes('&', "&5После полевых испытаний"));
                mw.add(ChatColor.translateAlternateColorCodes('&', "&a&lНемного поношенный"));
                fn.add(ChatColor.translateAlternateColorCodes('&', "&2&lПрямо с завода"));
                break;
            case 4:
                bs.add(ChatColor.translateAlternateColorCodes('&', "&4Закаленные в боях"));
                ww.add(ChatColor.translateAlternateColorCodes('&', "&cПоношенные"));
                ft.add(ChatColor.translateAlternateColorCodes('&', "&5После полевых испытаний"));
                mw.add(ChatColor.translateAlternateColorCodes('&', "&a&lНемного поношенные"));
                fn.add(ChatColor.translateAlternateColorCodes('&', "&2&lПрямо с завода"));
                break;
        }

        if (fortune <= 30) {
            meta.setLore(bs);
            item.setDurability((short) (durability / 2.));
        } else if (fortune <= 55) {
            meta.setLore(ww);
            item.setDurability((short) (durability * 3. / 4));
        } else if (fortune <= 75) {
            meta.setLore(ft);
            item.setDurability((short) (durability * 5. / 6));
        } else if (fortune <= 90) {
            meta.setLore(mw);
            item.setDurability((short) (durability * 9. / 10));
        } else {
            meta.setLore(fn);
            item.setDurability(durability);
        }
        item.setItemMeta(meta);
        return item;
    }

    public ItemStack getRandomItem()
    {
        Random random = new Random();
        Integer fortuneOne = random.nextInt(2)+1;
        switch (fortuneOne) {
            case 1: {
                ItemStack firstItem = new ItemStack(Material.GOLD_SWORD);
                ItemMeta firstMeta = firstItem.getItemMeta();
                if (random.nextBoolean()) firstMeta.addEnchant(Enchantment.DAMAGE_ALL, random.nextInt(4)+1, true);
                if (random.nextBoolean()) firstMeta.addEnchant(Enchantment.KNOCKBACK, random.nextInt(1) + 1, true);
                if (random.nextBoolean()) firstMeta.addEnchant(Enchantment.FIRE_ASPECT, random.nextInt(1) + 1, true);
                if (random.nextBoolean()) firstMeta.addEnchant(Enchantment.LOOT_BONUS_MOBS, random.nextInt(1) + 1, true);
                if (random.nextBoolean()) firstMeta.addEnchant(Enchantment.DURABILITY, random.nextInt(2)+1, true);
                firstMeta.setDisplayName(ChatColor.translateAlternateColorCodes('&', "&9Золотой меч"));
                firstItem.setItemMeta(firstMeta);
                firstItem = setLoreAndDurability(firstItem, 1);
                return firstItem;
            } case 2: {
                ItemStack secondItem = new ItemStack(Material.WOOD_SWORD);
                ItemMeta secondMeta = secondItem.getItemMeta();
                if (random.nextBoolean()) secondMeta.addEnchant(Enchantment.DAMAGE_ALL, random.nextInt(4) + 1, true);
                if (random.nextBoolean()) secondMeta.addEnchant(Enchantment.KNOCKBACK, random.nextInt(1) + 1, true);
                if (random.nextBoolean()) secondMeta.addEnchant(Enchantment.FIRE_ASPECT, random.nextInt(1) + 1, true);
                if (random.nextBoolean()) secondMeta.addEnchant(Enchantment.LOOT_BONUS_MOBS, random.nextInt(1) + 1, true);
                if (random.nextBoolean()) secondMeta.addEnchant(Enchantment.DURABILITY, random.nextInt(2) + 1, true);
                secondMeta.setDisplayName(ChatColor.translateAlternateColorCodes('&', "&1Деревянный меч"));
                secondItem.setItemMeta(secondMeta);
                secondItem = setLoreAndDurability(secondItem, 1);
                return secondItem;
            }
        }
        return null;
    }

    public void playerOpenCase(Player player)
    {
        ItemStack item = getRandomItem();
        player.getInventory().setItemInHand(item);
        Bukkit.broadcastMessage(ChatColor.translateAlternateColorCodes('&', chatPrefix + "Игрок &9" + player.getName() + "&7 открыл кейс и получил: " + item.getItemMeta().getDisplayName().toLowerCase() + " " + item.getItemMeta().getLore().get(0).toLowerCase()));
    }
}

UP
UP
UP
UP
UP
 
Не надейтесь что кто-то даст Вам готовый рабочий код. Мой Вам совет - перекопайте весь код от начала до конца, если при этом Вы не найдёте ошибок, то попробуйте полностью переписать плагин с нуля.
 
Последнее редактирование:
Статус
Закрыто для дальнейших ответов.

Поделиться этой страницей

Назад
Верх