Есть проблемы в создании своего чара!

Версия Minecraft
1.16.X
Ядро
Paper

Любитель Метала

Заблокирован
Сообщения
24
Решения
1
Другие ядра
  1. Purpur
Хотел создать зачарование Бур, но когда я писал код по советам друга, он ушел так и не помог мне до конца, что делать с данной ошибкой?


  1. package org.reintmase.rmtestplugin;

  2. import org.bukkit.Bukkit;
  3. import org.bukkit.Material;
  4. import org.bukkit.block.Block;
  5. import org.bukkit.enchantments.Enchantment;
  6. import org.bukkit.entity.Player;
  7. import org.bukkit.event.EventHandler;
  8. import org.bukkit.event.Listener;
  9. import org.bukkit.event.block.BlockBreakEvent;
  10. import org.bukkit.event.enchantment.PrepareItemEnchantEvent;
  11. import org.bukkit.inventory.ItemStack;
  12. import org.bukkit.plugin.java.JavaPlugin;

  13. import java.util.HashMap;
  14. import java.util.Map;

  15. public final class RmTestPlugin extends JavaPlugin implements Listener {

  16. private Map<Enchantment, Integer> customEnchantments = new HashMap<>();

  17. @EventHandler
  18. public void Pickaxe(BlockBreakEvent event) {

  19. Player player = event.getPlayer();
  20. Block brokenBlock = event.getBlock();
  21. ItemStack ItemInHand = player.getInventory().getItemInMainHand();

  22. if(ItemInHand.getType().toString().endsWith("_PICKAXE")) {

  23. Block targetBlock = player.getTargetBlock(null, 5);

  24. for(int x = -1; x <= 1; x++){
  25. for(int y = -1; y <= 1; y++){
  26. for(int z = -1; z <= 1; z++){
  27. Block blockBreak = targetBlock.getRelative(x, y, z);
  28. blockBreak.breakNaturally(ItemInHand);
  29. }
  30. }
  31. }

  32. }
  33. }


  34. private void registerCustomEnchantments() {
  35. // Добавление кастомных зачарований в карту
  36. customEnchantments.put(Enchantment.PROTECTION_ENVIRONMENTAL, 3);
  37. // Добавьте другие кастомные зачарования по аналогии
  38. }

  39. @EventHandler
  40. public void onPrepareItemEnchant(PrepareItemEnchantEvent event) {
  41. // Получение игрока и предмета
  42. Player player = event.getEnchanter();
  43. ItemStack item = event.getItem();

  44. // Проверка, является ли предмет книгой
  45. if (item == null || item.getType() != Material.BOOK) return;

  46. // Удаление стандартных зачарований
  47. event.getEnchantsToAdd().clear();

  48. // Добавление кастомных зачарований
  49. for (Map.Entry<Enchantment, Integer> entry : customEnchantments.entrySet()) {
  50. event.getEnchantsToAdd().put(entry.getKey(), entry.getValue());
  51. }
  52. }

  53. @Override
  54. public void onEnable() {
  55. getServer().getPluginManager().registerEvents(this, this);
  56. }

  57. @Override
  58. public void onDisable() {
  59. // Plugin shutdown logic
  60. }
}


Ошибки:
62: Cannot resolve method 'getEnchantsToAdd' in 'PrepareItemEnchantEvent'
66: Cannot resolve method 'getEnchantsToAdd' in 'PrepareItemEnchantEvent'
 
Java:
import org.bukkit.Material;
import org.bukkit.block.Block;
import org.bukkit.enchantments.Enchantment;
import org.bukkit.enchantments.EnchantmentOffer;
import org.bukkit.entity.Player;
import org.bukkit.event.EventHandler;
import org.bukkit.event.Listener;
import org.bukkit.event.block.BlockBreakEvent;
import org.bukkit.event.enchantment.PrepareItemEnchantEvent;
import org.bukkit.inventory.ItemStack;
import org.bukkit.plugin.java.JavaPlugin;

public final class RmTestPlugin extends JavaPlugin implements Listener {

    private EnchantmentOffer customEnchantments = null;

    @EventHandler
    public void Pickaxe(BlockBreakEvent event) {

        Player player = event.getPlayer();
        Block brokenBlock = event.getBlock();
        ItemStack ItemInHand = player.getInventory().getItemInMainHand();

        if (ItemInHand.getType().toString().endsWith("_PICKAXE")) {

            Block targetBlock = player.getTargetBlock(null, 5);

            for (int x = -1; x <= 1; x++) {
                for (int y = -1; y <= 1; y++) {
                    for (int z = -1; z <= 1; z++) {
                        Block blockBreak = targetBlock.getRelative(x, y, z);
                        blockBreak.breakNaturally(ItemInHand);
                    }
                }
            }

        }
    }


    private void registerCustomEnchantments() {
        int level = 5;
        int cost = 30;

        customEnchantments = new EnchantmentOffer(Enchantment.PROTECTION_ENVIRONMENTAL, level, cost);
    }

    @EventHandler
    public void onPrepareItemEnchant(PrepareItemEnchantEvent event) {
        ItemStack item = event.getItem();

        if (item.getType() != Material.BOOK) return;

        EnchantmentOffer[] enchantmentOffers = event.getOffers();
        enchantmentOffers[0] = customEnchantments;
    }

    @Override
    public void onEnable() {
        getServer().getPluginManager().registerEvents(this, this);
        registerCustomEnchantments();
    }

    @Override
    public void onDisable() {
    }
}
 
Назад
Сверху Снизу