Плагин Minecraft CustomModelDataJAVA

Программисты JAVA общаются здесь
Anonymous
Плагин Minecraft CustomModelData

Сообщение Anonymous »


public class CreeperBucketListener implements Listener {

private final JavaPlugin plugin;
private final NamespacedKey keyItemModel;
private final NamespacedKey keyCustomModel;

public CreeperBucketListener(JavaPlugin plugin) {
this.plugin = plugin;
this.keyItemModel = new NamespacedKey(plugin, "item_model");
this.keyCustomModel = new NamespacedKey(plugin, "custom_model_data");
}

@EventHandler
public void onCaptureCreeper(PlayerInteractEntityEvent event) {
if (event.getHand() != EquipmentSlot.HAND) return;

Player player = event.getPlayer();
Entity clicked = event.getRightClicked();
if (!(clicked instanceof Creeper)) return;

ItemStack hand = player.getInventory().getItemInMainHand();
if (hand.getType() != Material.BUCKET) return;

clicked.remove();
if (hand.getAmount() == 1) player.getInventory().setItemInMainHand(null);
else hand.setAmount(hand.getAmount() - 1);

Bukkit.getScheduler().runTaskLater(plugin, () -> {
ItemStack paper = new ItemStack(Material.PAPER);
ItemMeta meta = paper.getItemMeta();
if (meta != null) {
meta.setDisplayName("§aCreeper in a Bucket");

PersistentDataContainer
meta.getPersistentDataContainer().set(keyItemModel, PersistentDataType.STRING, "creeper_bucket");
meta.getPersistentDataContainer().set(keyCustomModel, PersistentDataType.STRING, "entity_bucket");

paper.setItemMeta(meta);
}

Map leftover = player.getInventory().addItem(paper);
if (!leftover.isEmpty()) {
leftover.values().forEach(item -> player.getWorld().dropItemNaturally(player.getLocation(), item));
}
}, 1L);
}

@EventHandler
public void onUseCreeperPaper(PlayerInteractEvent event) {
if (event.getAction() != Action.RIGHT_CLICK_BLOCK) return;
if (event.getHand() != EquipmentSlot.HAND) return;

Player player = event.getPlayer();
ItemStack item = event.getItem();
if (item == null || item.getType() != Material.PAPER) return;

ItemMeta meta = item.getItemMeta();
if (meta == null) return;

String tag1 = meta.getPersistentDataContainer().get(keyItemModel, PersistentDataType.STRING);
String tag2 = meta.getPersistentDataContainer().get(keyCustomModel, PersistentDataType.STRING);
if (!"creeper_bucket".equals(tag1) || !"entity_bucket".equals(tag2)) return;

Block clickedBlock = event.getClickedBlock();
if (clickedBlock == null) return;

Location loc = clickedBlock.getRelative(event.getBlockFace()).getLocation().add(0.5, 0, 0.5);
loc.getWorld().spawn(loc, Creeper.class);
player.playSound(loc, Sound.ITEM_BUCKET_EMPTY, 1f, 1f);

item.setAmount(item.getAmount() - 1);
ItemStack bucket = new ItemStack(Material.BUCKET);
if (item.getAmount()
Команда в Minecraft IS /Give @P Minecraft: Paper [Minecraft: item_model = "minecraft: equer_bucket", minecraft: custom_model_data = {Strings: [entity_bucket]}] < /code> < /p>
я стараюсь, чтобы сделать Mine -Creeers, и Presecters и Code> < /p>
Используйте пользовательские данные модели из пакета ресурсов, но так как команда была реорганизована в 1.21.4, я не знаю, как поместить NBT в код.


Подробнее здесь: https://stackoverflow.com/questions/796 ... mmodeldata

Вернуться в «JAVA»