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

fromgate

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

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

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

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

Java:
	@Override
	public boolean onCommand(CommandSender sender, Command command, String label, String[] args) {
		if (!command.getName().equalsIgnoreCase("test")) return false;
 
		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);
	}

Ну а если Вам не терпится, то можете воспользоваться методом, который позволит красить броню и сейчас:
Java:
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:

M4Gn1T

Developer (Level 2)
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;
}
При этом коде вещи нужно красить вот так:
Code:
ItemChestplateLeather chest = new ItemChestplateLeather();
setColor(chest, 0,0,255);
player.getInventory().addItem(chest);
 
Last edited:
Top