Помогите Как сделать проверку всех значений из конфига?

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

Raidark

Активный участник
Пользователь
Баллы
61
Имя в Minecraft
Raidark
Всем привет! Я пытаюсь написать свой первый плагин. Плагин дает опыт когда ломаешь блок( значение опыта и id блока берется из конфига)
Код:
1:
 id: "GRASS"
 amount: 50
2:
 id: "STONE"
 amount: 500
3:
 id: "CHEST"
 amount: 5000

Исходя из кода видно, что берется только первый элемент из конфига. Как сделать, чтобы учитывались все элементы из конфига? В будущем их будет несколько сотен.

Код:
@EventHandler
    public void giveExp(BlockBreakEvent e) {
        Player p = e.getPlayer();
        Block b = e.getBlock();
        String id = plugin.getConfig().getString("1"+".id");
        String exp1 = plugin.getConfig().getString("1"+ ".amount");
        int exp = Integer.parseInt (exp1);
       
        if(b.getType() != Material.getMaterial(id)) return; e.setExpToDrop(exp);
 
Смени цифру и выведет другое. Логично же с твоим конфигом.
 
Так мне нужно, чтобы он все цифры из конфига учитывал, а они в дальнейшем будут еще добавляться.
Тогда юзай в качестве ключа сам материал. Так проще же нет? Если ты не знаешь какой номер куда ведет.
 
Тогда юзай в качестве ключа сам материал. Так проще же нет? Если ты не знаешь какой номер куда ведет.
Суть в том, что в конфиге будет, например, 500 блоков и у каждого блока свое значение опыта. Нужно сделать так, чтобы когда игрок добывает блоки, учитывались сразу все 500 блоков из конфига и ему начислялся опыт.
 
Суть в том, что в конфиге будет, например, 500 блоков и у каждого блока свое значение опыта. Нужно сделать так, чтобы когда игрок добывает блоки, учитывались сразу все 500 блоков из конфига и ему начислялся опыт.
Код:
GRASS:
 amount: 50
STONE:
 amount: 500
CHEST:
 amount: 5000
 
Код:
GRASS:
 amount: 50
STONE:
 amount: 500
CHEST:
 amount: 5000
даже если так, мне что сюда тогда прописывать, я же могу написать сюда только один материал из 500.
Код:
String id = plugin.getConfig().getString("GRASS");
 
даже если так, мне что сюда тогда прописывать, я же могу написать сюда только один материал из 500.
Код:
String id = plugin.getConfig().getString("GRASS");
Код:
ConfigurationSection section = plugin.getConfig().getConfigurationSection(block.getType().name());
section.getInt("amount");
 
Код:
ConfigurationSection section = plugin.getConfig().getConfigurationSection(block.getType().name());
section.getInt("amount");
что-то я совсем запутался, теперь непонятно что прописывать вместо id и exp
Код:
if(b.getType() != Material.getMaterial(id)) return; e.setExpToDrop(exp);
 
что-то я совсем запутался, теперь непонятно что прописывать вместо id и exp
Код:
if(b.getType() != Material.getMaterial(id)) return; e.setExpToDrop(exp);
Код:
ConfigurationSection section = plugin.getConfig().getConfigurationSection(b.getType().name());
e.setExpToDrop(section.getInt("amount"))
 
Ну и проверну на null добавишь, если в списке не все блоки кубача будут.
 
Ну и проверну на null добавишь, если в списке не все блоки кубача будут.
Не хотел в тот раз больше напрягать тебя и пробовал сделать проверку на null сам, но уже сколько мучаюсь, не выходит. Вот что у меня получилось, но это естественно не работает.
Код:
if (b.getType().name() != null ) e.setExpToDrop(0);
 
Не хотел в тот раз больше напрягать тебя и пробовал сделать проверку на null сам, но уже сколько мучаюсь, не выходит. Вот что у меня получилось, но это естественно не работает.
Код:
if (b.getType().name() != null ) e.setExpToDrop(0);
if (plugin.getConfig().getConfigurationSection(b.getType().name()) != null)
 
что именно? Конкретнее код и ошибку
теперь вообще не начисляется опыт и та же ошибка в консоли.
Вот код:
Код:
@EventHandler
    public void giveExp(BlockBreakEvent e) {
        Block b = e.getBlock();      
        if (plugin.getConfig().getConfigurationSection(b.getType().name())!= null);  
       
        else {
        ConfigurationSection section1 = plugin.getConfig().getConfigurationSection(b.getType().name());
        e.setExpToDrop(section1.getInt("amount"));
} } }
Вот ошибка:

Код:
org.bukkit.event.EventException: null
        at org.bukkit.plugin.java.JavaPluginLoader$1.execute(JavaPluginLoader.java:306) ~[spigot-1.12.2.jar:git-Spigot-dcd1643-e60fc34]
        at org.bukkit.plugin.RegisteredListener.callEvent(RegisteredListener.java:62) ~[spigot-1.12.2.jar:git-Spigot-dcd1643-e60fc34]
        at org.bukkit.plugin.SimplePluginManager.fireEvent(SimplePluginManager.java:500) [spigot-1.12.2.jar:git-Spigot-dcd1643-e60fc34]
        at org.bukkit.plugin.SimplePluginManager.callEvent(SimplePluginManager.java:485) [spigot-1.12.2.jar:git-Spigot-dcd1643-e60fc34]
        at net.minecraft.server.v1_12_R1.PlayerInteractManager.breakBlock(PlayerInteractManager.java:290) [spigot-1.12.2.jar:git-Spigot-dcd1643-e60fc34]
        at net.minecraft.server.v1_12_R1.PlayerInteractManager.a(PlayerInteractManager.java:123) [spigot-1.12.2.jar:git-Spigot-dcd1643-e60fc34]
        at net.minecraft.server.v1_12_R1.PlayerConnection.a(PlayerConnection.java:877) [spigot-1.12.2.jar:git-Spigot-dcd1643-e60fc34]
        at net.minecraft.server.v1_12_R1.PacketPlayInBlockDig.a(SourceFile:40) [spigot-1.12.2.jar:git-Spigot-dcd1643-e60fc34]
        at net.minecraft.server.v1_12_R1.PacketPlayInBlockDig.a(SourceFile:10) [spigot-1.12.2.jar:git-Spigot-dcd1643-e60fc34]
        at net.minecraft.server.v1_12_R1.PlayerConnectionUtils$1.run(SourceFile:13) [spigot-1.12.2.jar:git-Spigot-dcd1643-e60fc34]
        at java.util.concurrent.Executors$RunnableAdapter.call(Unknown Source) [?:1.8.0_111]
        at java.util.concurrent.FutureTask.run(Unknown Source) [?:1.8.0_111]
        at net.minecraft.server.v1_12_R1.SystemUtils.a(SourceFile:46) [spigot-1.12.2.jar:git-Spigot-dcd1643-e60fc34]
        at net.minecraft.server.v1_12_R1.MinecraftServer.D(MinecraftServer.java:748) [spigot-1.12.2.jar:git-Spigot-dcd1643-e60fc34]
        at net.minecraft.server.v1_12_R1.DedicatedServer.D(DedicatedServer.java:406) [spigot-1.12.2.jar:git-Spigot-dcd1643-e60fc34]
        at net.minecraft.server.v1_12_R1.MinecraftServer.C(MinecraftServer.java:679) [spigot-1.12.2.jar:git-Spigot-dcd1643-e60fc34]
        at net.minecraft.server.v1_12_R1.MinecraftServer.run(MinecraftServer.java:577) [spigot-1.12.2.jar:git-Spigot-dcd1643-e60fc34]
        at java.lang.Thread.run(Unknown Source) [?:1.8.0_111]
Caused by: java.lang.NullPointerException
        at main.Handler.giveExp?(Handler.java:22) ~[?:?]
        at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) ~[?:1.8.0_111]
        at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source) ~[?:1.8.0_111]
        at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source) ~[?:1.8.0_111]
        at java.lang.reflect.Method.invoke(Unknown Source) ~[?:1.8.0_111]
        at org.bukkit.plugin.java.JavaPluginLoader$1.execute(JavaPluginLoader.java:302) ~[spigot-1.12.2.jar:git-Spigot-dcd1643-e60fc34]
        ... 17 more
 
чо ты за хню написал?
Код:
@EventHandler
public void onBreak(BlockBreakEvent e) {
    Block b = e.getBlock();
    if (plugin.getConfig().getConfigurationSection(b.getType().name()) != null) {
        ConfigurationSection section1 = plugin.getConfig().getConfigurationSection(b.getType().name());
        e.setExpToDrop(section1.getInt("amount"));
    }
}
 
Статус
Закрыто для дальнейших ответов.
Назад
Верх