Добавил я как бы "свой" предмет, точнее - ботинки, ускоряющие игрока. Все бы ничего, но ускоряли они его даже когда игрок держит их в руках, а это не совсем то что мне нужно. Отредактировал код, посыпались ошибки. Получилось следующее (за главный класс не бить, это просто тест):
1) Почему так? В доке это есть:
2) Как создать подобный предмет в предназначенном для него классе?
В Forge для этого есть регистратор предмета, но тут "новый" предмет является всего лишь слегка отредактированной версией старого. Вообще никаких мыслей по этому поводу.
Java:
package plugin;
import org.bukkit.Material;
import org.bukkit.attribute.Attribute;
import org.bukkit.attribute.AttributeModifier;
import org.bukkit.inventory.EquipmentSlot;
import org.bukkit.inventory.ItemStack;
import org.bukkit.inventory.ShapedRecipe;
import org.bukkit.inventory.meta.ItemMeta;
import org.bukkit.plugin.java.JavaPlugin;
public class Main extends JavaPlugin {
public void onEnable() {
ItemStack boots = new ItemStack(Material.LEATHER_BOOTS);
ItemMeta bootsmeta = boots.getItemMeta();
bootsmeta.setDisplayName("§eУлучшенные кожанные ботинки");
AttributeModifier movspeed = new AttributeModifier(1, "generic.Speed", 2, AttributeModifier.Operation.ADD_NUMBER, EquipmentSlot.FEET);
//ошибка The constructor AttributeModifier(int, String, int, AttributeModifier.Operation, EquipmentSlot) is undefined
bootsmeta.addAttributeModifier(Attribute.GENERIC_MOVEMENT_SPEED, movspeed);
boots.setItemMeta(bootsmeta);
ShapedRecipe bootsrec = (new ShapedRecipe(boots)).shape(new String[] { " ", "* *", "x x" })
.setIngredient('*', Material.DIAMOND_BLOCK).setIngredient('x', Material.RABBIT_FOOT);
getServer().addRecipe(bootsrec);
}
}
Java:
AttributeModifier(UUID uuid, String name, double amount, AttributeModifier.Operation operation, EquipmentSlot slot)
В Forge для этого есть регистратор предмета, но тут "новый" предмет является всего лишь слегка отредактированной версией старого. Вообще никаких мыслей по этому поводу.