Хостинг серверов Minecraft playvds.com
  1. Вы находитесь в русском сообществе Bukkit. Мы - администраторы серверов Minecraft, разрабатываем собственные плагины и переводим на русский язык плагины наших собратьев из других стран.
    Скрыть объявление

Помогите Material.getMaterial(String) и создание рецепта...

Тема в разделе "Разработка плагинов для новичков", создана пользователем Mr_RoboMan, 29 июн 2015.

  1. Автор темы
    Mr_RoboMan

    Mr_RoboMan Старожил Пользователь

    Баллы:
    123
    Что надо писать раньше при создании рецепта? shape или setIngridients?
    И когда используешь Material.getMaterial(String) как правильно написать, Material.STONE или просто STONE?
     
  2. Хостинг MineCraft
    <
  3. BeYkeR

    BeYkeR Старожил Девелопер Пользователь

    Баллы:
    173
    По туториалам сначала shape, потом setIngredient.
    Вроде прост "STONE".
     
  4. Автор темы
    Mr_RoboMan

    Mr_RoboMan Старожил Пользователь

    Баллы:
    123
    А почему тогда мой код выбивает ошибку?((
    Код:
            try
            {
                caseRecipe.shape("ABC", "DEF", "GHI");
                caseRecipe.setIngredient('A', Material.getMaterial(config.getString("Crafts.Case.FirstMaterial")));
                caseRecipe.setIngredient('B', Material.getMaterial(config.getString("Crafts.Case.SecondMaterial")));
                caseRecipe.setIngredient('C', Material.getMaterial(config.getString("Crafts.Case.ThirdMaterial")));
                caseRecipe.setIngredient('D', Material.getMaterial(config.getString("Crafts.Case.FourthMaterial")));
                caseRecipe.setIngredient('E', Material.getMaterial(config.getString("Crafts.Case.FifthMaterial")));
                caseRecipe.setIngredient('F', Material.getMaterial(config.getString("Crafts.Case.SixthMaterial")));
                caseRecipe.setIngredient('G', Material.getMaterial(config.getString("Crafts.Case.SeventhMaterial")));
                caseRecipe.setIngredient('H', Material.getMaterial(config.getString("Crafts.Case.EighthMaterial")));
                caseRecipe.setIngredient('I', Material.getMaterial(config.getString("Crafts.Case.NinthMaterial")));
                getServer().addRecipe(caseRecipe);
            }
            catch (Exception e)
            {
                broadcast.logToConsole(language.getTextOnTrueLanguage("CraftCaseError"));
                e.printStackTrace();
                getServer().getPluginManager().disablePlugin(this);
            }
    
            try
            {
                keyRecipe.shape("ABC", "DEF", "GHI");
                keyRecipe.setIngredient('A', Material.getMaterial(config.getString("Crafts.Key.FirstMaterial")));
                keyRecipe.setIngredient('B', Material.getMaterial(config.getString("Crafts.Key.SecondMaterial")));
                keyRecipe.setIngredient('C', Material.getMaterial(config.getString("Crafts.Key.ThirdMaterial")));
                keyRecipe.setIngredient('D', Material.getMaterial(config.getString("Crafts.Key.FourthMaterial")));
                keyRecipe.setIngredient('E', Material.getMaterial(config.getString("Crafts.Key.FifthMaterial")));
                keyRecipe.setIngredient('F', Material.getMaterial(config.getString("Crafts.Key.SixthMaterial")));
                keyRecipe.setIngredient('G', Material.getMaterial(config.getString("Crafts.Key.SeventhMaterial")));
                keyRecipe.setIngredient('H', Material.getMaterial(config.getString("Crafts.Key.EighthMaterial")));
                keyRecipe.setIngredient('I', Material.getMaterial(config.getString("Crafts.Key.NinthMaterial")));
                getServer().addRecipe(keyRecipe);
            }
            catch (Exception e)
            {
                broadcast.logToConsole(language.getTextOnTrueLanguage("CraftKeyError"));
                e.printStackTrace();
                getServer().getPluginManager().disablePlugin(this);
            }
    
    Код:
    Crafts:
    #1/2/3
    #4/5/6
    #7/8/9
        Case:
            FirstMaterial: WOOD
            SecondMaterial: WOOD
            ThirdMaterial: WOOD
            FourthMaterial: WOOD
            FifthMaterial: ENDER_PEARL
            SixthMaterial: WOOD
            SeventhMaterial: WOOD
            EighthMaterial: WOOD
            NinthMaterial: WOOD
        Key:
            FirstMaterial: AIR
            SecondMaterial: IRON_BLOCK
            ThirdMaterial: AIR
            FourthMaterial: AIR
            FifthMaterial: STICK
            SixthMaterial: AIR
            SeventhMaterial: AIR
            EighthMaterial: DIAMOND
            NinthMaterial: AIR
     
  5. serega6531

    serega6531 Старожил Девелопер Пользователь

    Баллы:
    173
    Skype:
    shkurovs
    А ошибка какая?
     
  6. Автор темы
    Mr_RoboMan

    Mr_RoboMan Старожил Пользователь

    Баллы:
    123
    Большая
    Код:
    [15:02:07] [Server thread/INFO]: [RandomCase] Enabling RandomCase v1.9
    [15:02:07] [Server thread/INFO]: [29\06\2015 15:02:00 RandomCase] Can't add case recipe, wrong recipe!
    [15:02:07] [Server thread/WARN]: java.lang.NullPointerException
    [15:02:07] [Server thread/WARN]:     at org.bukkit.inventory.ItemStack.<init>(ItemStack.java:94)
    [15:02:07] [Server thread/WARN]:     at org.bukkit.inventory.ShapedRecipe.setIngredient(ShapedRecipe.java:110)
    [15:02:07] [Server thread/WARN]:     at org.bukkit.inventory.ShapedRecipe.setIngredient(ShapedRecipe.java:89)
    [15:02:07] [Server thread/WARN]:     at ua.roboman.plugin.Main.onEnable(Main.java:95)
    [15:02:07] [Server thread/WARN]:     at org.bukkit.plugin.java.JavaPlugin.setEnabled(JavaPlugin.java:250)
    [15:02:07] [Server thread/WARN]:     at org.bukkit.plugin.java.JavaPluginLoader.enablePlugin(JavaPluginLoader.java:350)
    [15:02:07] [Server thread/WARN]:     at org.bukkit.plugin.SimplePluginManager.enablePlugin(SimplePluginManager.java:389)
    [15:02:07] [Server thread/WARN]:     at org.bukkit.craftbukkit.v1_7_R1.CraftServer.loadPlugin(CraftServer.java:439)
    [15:02:07] [Server thread/WARN]:     at org.bukkit.craftbukkit.v1_7_R1.CraftServer.enablePlugins(CraftServer.java:375)
    [15:02:07] [Server thread/WARN]:     at net.minecraft.server.v1_7_R1.MinecraftServer.m(MinecraftServer.java:342)
    [15:02:07] [Server thread/WARN]:     at net.minecraft.server.v1_7_R1.MinecraftServer.g(MinecraftServer.java:319)
    [15:02:07] [Server thread/WARN]:     at net.minecraft.server.v1_7_R1.MinecraftServer.a(MinecraftServer.java:275)
    [15:02:07] [Server thread/WARN]:     at net.minecraft.server.v1_7_R1.DedicatedServer.init(DedicatedServer.java:175)
    [15:02:07] [Server thread/WARN]:     at net.minecraft.server.v1_7_R1.MinecraftServer.run(MinecraftServer.java:424)
    [15:02:07] [Server thread/WARN]:     at net.minecraft.server.v1_7_R1.ThreadServerApplication.run(SourceFile:617)
    [15:02:07] [Server thread/INFO]: [RandomCase] Disabling RandomCase v1.9
    [15:02:07] [Server thread/INFO]: [29\06\2015 15:02:00 RandomCase] The plugin was successfully disabled.
    [15:02:07] [Server thread/INFO]: [29\06\2015 15:02:00 RandomCase] Can't add key recipe, wrong recipe!
    [15:02:07] [Server thread/WARN]: java.lang.NullPointerException
    [15:02:07] [Server thread/WARN]:     at org.bukkit.inventory.ItemStack.<init>(ItemStack.java:94)
    [15:02:07] [Server thread/WARN]:     at org.bukkit.inventory.ShapedRecipe.setIngredient(ShapedRecipe.java:110)
    [15:02:07] [Server thread/WARN]:     at org.bukkit.inventory.ShapedRecipe.setIngredient(ShapedRecipe.java:89)
    [15:02:07] [Server thread/WARN]:     at ua.roboman.plugin.Main.onEnable(Main.java:116)
    [15:02:07] [Server thread/WARN]:     at org.bukkit.plugin.java.JavaPlugin.setEnabled(JavaPlugin.java:250)
    [15:02:07] [Server thread/WARN]:     at org.bukkit.plugin.java.JavaPluginLoader.enablePlugin(JavaPluginLoader.java:350)
    [15:02:07] [Server thread/WARN]:     at org.bukkit.plugin.SimplePluginManager.enablePlugin(SimplePluginManager.java:389)
    [15:02:07] [Server thread/WARN]:     at org.bukkit.craftbukkit.v1_7_R1.CraftServer.loadPlugin(CraftServer.java:439)
    [15:02:07] [Server thread/WARN]:     at org.bukkit.craftbukkit.v1_7_R1.CraftServer.enablePlugins(CraftServer.java:375)
    [15:02:07] [Server thread/WARN]:     at net.minecraft.server.v1_7_R1.MinecraftServer.m(MinecraftServer.java:342)
    [15:02:07] [Server thread/WARN]:     at net.minecraft.server.v1_7_R1.MinecraftServer.g(MinecraftServer.java:319)
    [15:02:07] [Server thread/WARN]:     at net.minecraft.server.v1_7_R1.MinecraftServer.a(MinecraftServer.java:275)
    [15:02:07] [Server thread/WARN]:     at net.minecraft.server.v1_7_R1.DedicatedServer.init(DedicatedServer.java:175)
    [15:02:07] [Server thread/WARN]:     at net.minecraft.server.v1_7_R1.MinecraftServer.run(MinecraftServer.java:424)
    [15:02:07] [Server thread/WARN]:     at net.minecraft.server.v1_7_R1.ThreadServerApplication.run(SourceFile:617)
    [15:02:07] [Server thread/INFO]: [29\06\2015 15:02:00 RandomCase] The plugin was successfully enabled.
     
  7. serega6531

    serega6531 Старожил Девелопер Пользователь

    Баллы:
    173
    Skype:
    shkurovs
    Material == null?
     
  8. Автор темы
    Mr_RoboMan

    Mr_RoboMan Старожил Пользователь

    Баллы:
    123
    Та вроде не....Я все 18 Material (9 на один крафт и 9 на другой) беру из конфига, а там вроде все правильно...
    Или в рецепт нельзя совать Material.AIR?
     
  9. serega6531

    serega6531 Старожил Девелопер Пользователь

    Баллы:
    173
    Skype:
    shkurovs
    Не знаю. Проверьте.
     
  10. CraftCoder

    CraftCoder Старожил Пользователь

    Баллы:
    108
    Имя в Minecraft:
    CraftCoderr
    Отдебаж или ифами проверь все на null.
     
  11. Автор темы
    Mr_RoboMan

    Mr_RoboMan Старожил Пользователь

    Баллы:
    123
    OK понял сделаю..[DOUBLEPOST=1435741252,1435582303][/DOUBLEPOST]
    Ага... Material = null ...
    И вправду...
    При таком коде тесты выводятся, и после них выводится null...
    Код:
    System.out.println("Первый тест");
                caseRecipe.shape("ABC", "DEF", "GHI");
                System.out.println("Второй тест");
                System.out.println(Material.getMaterial(config.getString("Crafts.Case.FirstMaterial")));
                caseRecipe.setIngredient('A', Material.getMaterial(config.getString("Crafts.Case.FirstMaterial")));
    В конфиге пробовал что WOOD что Material.WOOD все-равно null...
    Что делать?(
     
  12. CraftCoder

    CraftCoder Старожил Пользователь

    Баллы:
    108
    Имя в Minecraft:
    CraftCoderr
    Material.valueOf(string.toUpperCase());
     
  13. Автор темы
    Mr_RoboMan

    Mr_RoboMan Старожил Пользователь

    Баллы:
    123
    Все также кидает NPE...
    Код:
                caseRecipe.setIngredient('A', Material.valueOf(config.getString("Crafts.Case.FirstMaterial").toUpperCase()));
                caseRecipe.setIngredient('B', Material.valueOf(config.getString("Crafts.Case.SecondMaterial").toUpperCase()));
                caseRecipe.setIngredient('C', Material.valueOf(config.getString("Crafts.Case.ThirdMaterial").toUpperCase()));
                caseRecipe.setIngredient('D', Material.valueOf(config.getString("Crafts.Case.FourthMaterial").toUpperCase()));
                caseRecipe.setIngredient('E', Material.valueOf(config.getString("Crafts.Case.FifthMaterial").toUpperCase()));
                caseRecipe.setIngredient('F', Material.valueOf(config.getString("Crafts.Case.SixthMaterial").toUpperCase()));
                caseRecipe.setIngredient('G', Material.valueOf(config.getString("Crafts.Case.SeventhMaterial").toUpperCase()));
                caseRecipe.setIngredient('H', Material.valueOf(config.getString("Crafts.Case.EighthMaterial").toUpperCase()));
                caseRecipe.setIngredient('I', Material.valueOf(config.getString("Crafts.Case.NinthMaterial").toUpperCase()));
    
    Вот это также NPE кидает:
    Код:
                System.out.println(Material.valueOf(config.getString("Crafts.Case.FirstMaterial").toUpperCase()));
    
     
  14. CraftCoder

    CraftCoder Старожил Пользователь

    Баллы:
    108
    Имя в Minecraft:
    CraftCoderr
    А сама строка не null?
     
  15. Den_Abr

    Den_Abr Старожил Девелопер Пользователь

    Баллы:
    173
    Skype:
    Den_Abr
    Имя в Minecraft:
    Den_Abr
    Не надо юзать метод valueOf когда есть специальные getMaterial или matchMaterial(предпочтительнее)
     

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