Идея Шерсть из полярного медведя

  • Автор темы Автор темы chief
  • Дата начала Дата начала
Статус
Закрыто для дальнейших ответов.

chief

Активный участник
Пользователь
Баллы
76
Нужно сделать, чтобы с полярного медведя выпадала 1-2 блока шерсти с шансом 3/4
 
Запросто, ща чайку налью и сделаю.
Cкачать - WoolFromBear
Могу рыбу очистить, чтобы не падала.
 
Последнее редактирование:
Могу рыбу очистить, чтобы не падала
Было бы прекрасно, если бы вы еще дроп рыбы убрать

Игроки озадачила меня вопросом "а откуда с него рыба выпадает". Майнкрафт не поддается логике :creeper:
@Derik Спасибо за плагин ☕
 
Можно замутить еще там название свое и описание. Чтобы не тупо шерсть было написано. А там например ... - "Медвежья шерсть". И лоры с описаниями ниже.. И все это в конфиг вынести.
 
Можно замутить еще там название свое и описание. Чтобы не тупо шерсть было написано. А там например ... - "Медвежья шерсть". И лоры с описаниями ниже.. И все это в конфиг вынести.
Действительно. Эта идея интересная и оригинальная
 
Можно делать свое название и описание в конфиге.

Cкачать - WoolFromBear- v1.2

Fdbvm5Tn_Gg.jpg
 
Последнее редактирование:
upload_2016-7-18_6-7-41.png
Зачем загружать каждый раз когда кого то убивают сделай в onEnable загрузку один раз
 
Можно делать свое название и описание в конфиге.

Cкачать - WoolFromBear- v1.2
При использовании JavaPlugin#saveDefaultConfig() не нужно проверять наличие конфига. Так же не нужно использовать JavaPlugin#getConfig().options().copyDefaults(true) - оно не нужно в твоём случае.
Регистрировать слушатели лучше после того, как ты закончил с нужной работой (тут - подгрузил конфиг).
Как и сказал @DiamondDen - не нужно в слушателях дёргать конфиг, лучше в onEnable сохранять значения.
И не жлобься использовать ChatColor.translateAlternateChatColor(char, String) - символ '§' может быть неверно воспринят сервером (потому что не умеем читать текстовые файлы) и в итоге будет грустно.

Ну и по плагину - почему только шерсть? Медведь из шерсти одной состоит? Даёшь говядинки 1-3 штуки!
 
@DiamondDen @Dereku Пожалуйста, покажите как правильно. Я учу джава но без примера понять не могу
Java:
public class Main extends JavaPlugin implements Listener {
   Logger log = this.getLogger();

   public void onEnable() {
      Bukkit.getPluginManager().registerEvents(this, this);
      File config = new File(this.getDataFolder() + File.separator + "config.yml");
      if(!config.exists()) {
         this.getConfig().options().copyDefaults(true);
         this.saveDefaultConfig();
         this.log.info("Creating config file...");
      }

   }

   @EventHandler
   public void dropBear(EntityDeathEvent e) {
      EntityType type = e.getEntityType();
      int droprandom = this.getConfig().getInt("drop");
      int pcsmax = this.getConfig().getInt("pcsmax");
      String name = this.getConfig().getString("name");
      List<String> lore = this.getConfig().getStringList("lore");
      if(type == EntityType.POLAR_BEAR) {
         e.getDrops().clear();
         Random rng = new Random();
         int rand = rng.nextInt(pcsmax) + 1;
         int random = rng.nextInt(droprandom);
         if(random == 0) {
            ItemStack item = new ItemStack(Material.WOOL, rand);
            ItemMeta meta = item.getItemMeta();
            meta.setDisplayName(name);
            meta.setLore(lore);
            item.setItemMeta(meta);
            e.getDrops().add(item);
         }

      }
   }
}

Ну и по плагину - почему только шерсть? Медведь из шерсти одной состоит? Даёшь говядинки 1-3 штуки!
Плотоядные животные несъедобны
 
Код:
public class Main extends JavaPlugin implements Listener {
   Logger log = this.getLogger();
   int droprandom;
   int pcsmax;
   String name;
   List<String> lore;
   FileConfiguration config;
   public void onEnable() {
      saveDefaultConfig();
      config = getConfig();
      Bukkit.getPluginManager().registerEvents(this, this);
      droprandom = config.getInt("drop");
      pcsmax = config.getInt("pcsmax");
      name = config.getString("name");
      lore = config.getStringList("lore");
   }
   @EventHandler
   public void dropBear(EntityDeathEvent e) {
      EntityType type = e.getEntityType();
      if(type == EntityType.POLAR_BEAR) {
         e.getDrops().clear();
         Random rng = new Random();
         int rand = rng.nextInt(pcsmax) + 1;
         int random = rng.nextInt(droprandom);
         if(random == 0) {
            ItemStack item = new ItemStack(Material.WOOL, rand);
            ItemMeta meta = item.getItemMeta();
            meta.setDisplayName(name);
            meta.setLore(lore);
            item.setItemMeta(meta);
            e.getDrops().add(item);
         }
      }
   }
}
Кинь готовый config.yml в плагин (где plugin.yml находится ту даже)
 
Последнее редактирование:
Код:
public class Main extends JavaPlugin implements Listener {
   Logger log = this.getLogger();
   int droprandom;
   int pcsmax;
   String name;
   List<String> lore;
   FileConfiguration config;

   @Override
   public void onEnable()
   {
      saveDefaultConfig();
      config = getConfig();
      Bukkit.getPluginManager().registerEvents(this, this);
      droprandom = config.getInt("drop");
      pcsmax = config.getInt("pcsmax");
      name = config.getString("name");
      lore = config.getStringList("lore");
   }

   @EventHandler
   public void dropBear(EntityDeathEvent e) {
      EntityType type = e.getEntityType();
      if(type == EntityType.POLAR_BEAR) {
         e.getDrops().clear();
         Random rng = new Random();
         int rand = rng.nextInt(pcsmax) + 1;
         int random = rng.nextInt(droprandom);
         if(random == 0) {
            ItemStack item = new ItemStack(Material.WOOL, rand);
            ItemMeta meta = item.getItemMeta();
            meta.setDisplayName(name);
            meta.setLore(lore);
            item.setItemMeta(meta);
            e.getDrops().add(item);
         }
      }
   }
}
Кинь готовый config.yml в плагин (где plugin.yml находится ту даже)
Фу, говнокод.
Java:
public class Main
extends JavaPlugin
implements Listener
{
   private static final Logger log = this.getLogger();
   private static final int droprandom;
   private static final int pcsmax;
   private static final String name;
   private static final List<String> lore;
   private static final Random random = new Random();
   private FileConfiguration config;

   @Override
   public void onEnable()
   {
      saveDefaultConfig();
      config = getConfig();
      Bukkit.getPluginManager().registerEvents(this, this);
      droprandom = config.getInt("drop");
      pcsmax = config.getInt("pcsmax");
      name = config.getString("name");
      lore = config.getStringList("lore");
   }

   @EventHandler
   public void dropBear(EntityDeathEvent event)
   {
       if (event.getType() == EntityType.POLAR_BEAR)
       {
          event.getDrops().clear();
          int rand = random.nextInt(pcsmax);
          int random = rng.nextInt(droprandom);

          if (random == 0)
          {
               ItemStack item = new ItemStack(Material.WOOL, rand);
               ItemMeta meta = item.getItemMeta();
               meta.setDisplayName(name);
               meta.setLore(lore);
               item.setItemMeta(meta);
               e.getDrops().add(item);
           }
       }
   }
}
 
Последнее редактирование:
Фу, говнокод.
Java:
public class Main
extends JavaPlugin
implements Listener
{
   private static final Logger log = this.getLogger();
   private static final int droprandom;
   private static final int pcsmax;
   private static final String name;
   private static final List<String> lore;
   private static final Random random = new Random();
   private FileConfiguration config;

   @Override
   public void onEnable()
   {
      saveDefaultConfig();
      config = getConfig();
      Bukkit.getPluginManager().registerEvents(this, this);
      droprandom = config.getInt("drop");
      pcsmax = config.getInt("pcsmax");
      name = config.getString("name");
      lore = config.getStringList("lore");
   }

   @EventHandler
   public void dropBear(EntityDeathEvent event)
   {
       if (event.getType() == EntityType.POLAR_BEAR)
       {
          event.getDrops().clear();
          int rand = rng.nextInt(pcsmax) + 1;
          int random = rng.nextInt(droprandom);

          if (random == 0)
          {
               ItemStack item = new ItemStack(Material.WOOL, rand);
               ItemMeta meta = item.getItemMeta();
               meta.setDisplayName(name);
               meta.setLore(lore);
               item.setItemMeta(meta);
               e.getDrops().add(item);
           }
       }
   }
}
Зачем static? это же всё в одном классе.
 
Зачем static? это же всё в одном классе.
Лол, не думал что ты такой тупой. Читай что такое static. Внимательно.
И да, круто, когда при каждом вызове евента создаётся экземпляр класса Random.
Java:
public class Main
extends JavaPlugin
implements Listener
{
   private static Logger log = this.getLogger();
   private static int droprandom;
   private static int pcsmax;
   private static String name;
   private static List<String> lore;
   private static Random random = new Random();
   private static FileConfiguration config;

   @Override
   public void onEnable()
   {
      saveDefaultConfig();
      config = getConfig();

      Bukkit.getPluginManager().registerEvents(this, this);

      droprandom = config.getInt("drop");
      pcsmax = config.getInt("pcsmax");
      name = config.getString("name");
      lore = config.getStringList("lore");
   }

   @EventHandler
   public void dropBear(EntityDeathEvent event)
   {
      if (event.getType() == EntityType.POLAR_BEAR)
      {
         event.getDrops().clear();

         int rand = random.nextInt(pcsmax);
         int rnd = random.nextInt(droprandom);

         if (random == 0)
         {
              ItemStack item = new ItemStack(Material.WOOL, rand);
              ItemMeta meta = item.getItemMeta();
              meta.setDisplayName(name);
              ArrayList<String> lores = Utils.setLore(lore);
              meta.setLore(lores);
              item.setItemMeta(meta);

              event.getDrops().add(item);
         }
      }
   }
}
Utils.java
Java:
public class Utils
{
    public static ArrayList<String> setLore(List<String> list)
    {
        ArrayList<String> lore = new ArrayList<String> ();
      
        for (String methodLore : list)
        {
            lore.add(ChatColor.translateAlternateColorCodes('&', methodLore);
        }
      
        return lore;
    }
}
Убрал final, дабы переменные небыли константами. Вдруг захочешь конфиг перезагрузить, а у тебя все поля финальные 🙂
Написал нормальный, рабочий код, на костях кода diamondDen.
Можешь использовать.
 
Последнее редактирование:
Лол, не думал что ты такой тупой. Читай что такое static. Внимательно.
И да, круто, когда при каждом вызове евента создаётся экземпляр класса Random.
Java:
public class Main
extends JavaPlugin
implements Listener
{
   private static Logger log = this.getLogger();
   private static int droprandom;
   private static int pcsmax;
   private static String name;
   private static List<String> lore;
   private static Random random = new Random();
   private static FileConfiguration config;

   @Override
   public void onEnable()
   {
      saveDefaultConfig();
      config = getConfig();

      Bukkit.getPluginManager().registerEvents(this, this);

      droprandom = config.getInt("drop");
      pcsmax = config.getInt("pcsmax");
      name = config.getString("name");
      lore = config.getStringList("lore");
   }

   @EventHandler
   public void dropBear(EntityDeathEvent event)
   {
      if (event.getType() == EntityType.POLAR_BEAR)
      {
         event.getDrops().clear();

         int rand = random.nextInt(pcsmax);
         int rnd = random.nextInt(droprandom);

         if (random == 0)
         {
              ItemStack item = new ItemStack(Material.WOOL, rand);
              ItemMeta meta = item.getItemMeta();
              meta.setDisplayName(name);
              ArrayList<String> lores = Utils.setLore(lore);
              meta.setLore(lores);
              item.setItemMeta(meta);

              event.getDrops().add(item);
         }
      }
   }
}
Utils.java
Java:
public class Utils
{
    public static ArrayList<String> setLore(List<String> list)
    {
        ArrayList<String> lore = new ArrayList<String> ();
     
        for (String methodLore : list)
        {
            lore.add(ChatColor.translateAlternateColorCodes('&', methodLore);
        }
     
        return lore;
    }
}
Убрал final, дабы переменные небыли константами. Вдруг захочешь конфиг перезагрузить, а у тебя все поля финальные 🙂
Написал нормальный, рабочий код, на костях кода diamondDen.
Можешь использовать.
Код:
public class Main
extends JavaPlugin
implements Listener
{
   private static Logger log = this.getLogger();
   private static int droprandom;
   private static int pcsmax;
   private static String name;
   private static List<String> lore;
   private static Random random = new Random();
   private static FileConfiguration config;
   @Override
   public void onEnable()
   {
      saveDefaultConfig();
      config = getConfig();
      Bukkit.getPluginManager().registerEvents(this, this);
      droprandom = config.getInt("drop");
      pcsmax = config.getInt("pcsmax");
      name = config.getString("name");
      lore = Utils.setLore(config.getStringList("lore"));
   }
   @EventHandler
   public void dropBear(EntityDeathEvent event)
   {
      if (event.getType() == EntityType.POLAR_BEAR)
      {
         event.getDrops().clear();
         int rand = random.nextInt(pcsmax);
         int rnd = random.nextInt(droprandom);
         if (random == 0)
         {
              ItemStack item = new ItemStack(Material.WOOL, rand);
              ItemMeta meta = item.getItemMeta();
              meta.setDisplayName(name);
              meta.setLore(lore);
              item.setItemMeta(meta);
              event.getDrops().add(item);
         }
      }
   }
}
 
Код:
public class Main
extends JavaPlugin
implements Listener
{
   private static Logger log = this.getLogger();
   private static int droprandom;
   private static int pcsmax;
   private static String name;
   private static List<String> lore;
   private static Random random = new Random();
   private static FileConfiguration config;
   @Override
   public void onEnable()
   {
      saveDefaultConfig();
      config = getConfig();
      Bukkit.getPluginManager().registerEvents(this, this);
      droprandom = config.getInt("drop");
      pcsmax = config.getInt("pcsmax");
      name = config.getString("name");
      lore = Utils.setLore(config.getStringList("lore"));
   }
   @EventHandler
   public void dropBear(EntityDeathEvent event)
   {
      if (event.getType() == EntityType.POLAR_BEAR)
      {
         event.getDrops().clear();
         int rand = random.nextInt(pcsmax);
         int rnd = random.nextInt(droprandom);
         if (random == 0)
         {
              ItemStack item = new ItemStack(Material.WOOL, rand);
              ItemMeta meta = item.getItemMeta();
              meta.setDisplayName(name);
              meta.setLore(lore);
              item.setItemMeta(meta);
              event.getDrops().add(item);
         }
      }
   }
}
Да ты нериально крут, чел. Просто перекопировать мой код - это достойно всех похвал.
Только вот lore у тебя никогда цветным не будет, да.
 
Да ты нериально крут, чел. Просто перекопировать мой код - это достойно всех похвал.
Только вот lore у тебя никогда цветным не будет, да.
upload_2016-7-18_16-35-19.png
Зачем создавать несколько раз лист
 
Статус
Закрыто для дальнейших ответов.
Назад
Верх