Как покрасить броню

Discussion in 'Разработка плагинов' started by fromgate, 6/4/16.

  1. This site uses cookies. By continuing to use this site, you are agreeing to our use of cookies. Learn More.
Dismiss Notice
We welcome you on our site. This site is devoted to the Nukkit project and all that is connected with him. Here you can communicate, download plugins, also many other things get acquainted! Register the account right now :3
  1. fromgate

    fromgate Administrator

    Messages:
    665
    Likes Received:
    186
    Кто-то недавно задавал вопрос как покрасить броню. На всякий случай отвечу здесь, если это ещё актуально ;)

    Цвет брони, также как и в обычном майнкрафте прописан NBT-тагом. Но вот в остальном есть разница. В обычном Майнкрафте — это тег "color" вложенный в коллекцию тегов "display", а в MCPE, как выяснилось, это просто тег customColor.

    По результатам изысканий я сделал pull-request, который добавит возможность красить броню.

    После того как эти изменения будут приняты в проект, пользоваться можно будет таким образом:

    Code:
     @Override
    public boolean onCommand(CommandSender sender, Command command, String label, String[] args) {
    if (!command.getName().equalsIgnoreCase("test")) return false;
    
    [pre][code]    Player player = sender instanceof Player ? (Player) sender : null;
        ItemBootsLeather boots = new ItemBootsLeather();
        boots.setColor(255,0,0);
        player.getInventory().addItem(boots);
    
        ItemChestplateLeather chest = new ItemChestplateLeather();
        chest.setColor(0,255,0);
        player.getInventory().addItem(chest);
    
        ItemHelmetLeather helm = new ItemHelmetLeather();
        helm.setColor(0,0,255);
        player.getInventory().addItem(helm);
    }
    [/code][/pre]
    Ну а если Вам не терпится, то можете воспользоваться методом, который позволит красить броню и сейчас:
    Code:
    public Item setColor(Item leatherItem, int r, int g, int b){
    if (leatherItem.getTier()!=ItemArmor.TIER_LEATHER) return leatherItem;
    int rgb = r << 16 | g << 8 | b << 0;
    CompoundTag tag = leatherItem.hasCompoundTag() ? leatherItem.getNamedTag() : new CompoundTag();
    tag.putInt("customColor",rgb);
    leatherItem.setNamedTag(tag);
    return leatherItem;
    }
     
    Last edited: 6/4/16
    M4Gn1T and Tee7even like this.
  2. M4Gn1T

    M4Gn1T Developer (Level 2)

    Messages:
    43
    Likes Received:
    14
    Minecraft:
    M4Gn1T
    При этом коде вещи нужно красить вот так:
    Code:
    ItemChestplateLeather chest = new ItemChestplateLeather();
    setColor(chest, 0,0,255);
    player.getInventory().addItem(chest); 
     
    Last edited: 6/4/16
    fromgate likes this.
  3. fromgate

    fromgate Administrator

    Messages:
    665
    Likes Received:
    186
    M4Gn1T likes this.

Share This Page