Ir para conteúdo

Dúvida contabilidade


xLaionBr

Posts Recomendados

Olá, gostaria de uma ajuda como eu poderia começar um sistema de contabilidade de blocos, exemplo... Criar uma picareta e colocar um limite de blocos sla pode quebrar 5 blocos e depois não poderá quebrar mais! Quem poder me ajudar agradeceria.

Link para o comentário
Compartilhar em outros sites

criei um pequeno plugin para lhe dar um exemplo, eu usei tags NBT. Recomendo que analise o código, não apenas o cole.

	@Override
	public void onEnable() {
		Bukkit.getPluginManager().registerEvents(this, this);
	}
	
	@Override
	public boolean onCommand(CommandSender sender, Command command, String label, String[] args) {
		if (command.getName().equalsIgnoreCase("pickaxe") && sender instanceof Player) {
			Player player = (Player)sender;
			ItemStack picareta = new ItemStack(Material.DIAMOND_PICKAXE);
			ItemMeta meta = picareta.getItemMeta();
			meta.setDisplayName("§6Limited Pickaxe");
			picareta.setItemMeta(meta);
			net.minecraft.server.v1_8_R3.ItemStack nmsPicareta = CraftItemStack.asNMSCopy(picareta);
			NBTTagCompound tag = nmsPicareta.hasTag() ? nmsPicareta.getTag() : new NBTTagCompound();
			tag.setInt("blocks", 5);
			nmsPicareta.setTag(tag);
			player.getInventory().addItem(CraftItemStack.asBukkitCopy(nmsPicareta));
		}
		return false;
	}
	
	@EventHandler
	public void onBreak(BlockBreakEvent e) {
		ItemStack item = e.getPlayer().getItemInHand();
		if (item.hasItemMeta() && item.getItemMeta().hasDisplayName() && item.getItemMeta().getDisplayName().equals("§6Limited Pickaxe")) {
			net.minecraft.server.v1_8_R3.ItemStack nmsItem = CraftItemStack.asNMSCopy(item);
			NBTTagCompound tag = nmsItem.getTag();
			int blocks = tag.getInt("blocks") - 1;
			if (blocks == 0) {
				e.getPlayer().setItemInHand(null);
				sendBlocks(e.getPlayer(), blocks);
				return;
			}
			tag.setInt("blocks", blocks);
			nmsItem.setTag(tag);
			e.getPlayer().setItemInHand(CraftItemStack.asBukkitCopy(nmsItem));
			sendBlocks(e.getPlayer(), blocks);
		}
	}
	
	private void sendBlocks(Player player, int blocks) {
		IChatBaseComponent comp = IChatBaseComponent.ChatSerializer.a("{\"text\":\"§7Usos restantes: §e"+blocks+"§7/§e5\"}");
		PacketPlayOutChat packet = new PacketPlayOutChat(comp, (byte)2);
		((CraftPlayer)player).getHandle().playerConnection.sendPacket(packet);
	}

 

Link para o comentário
Compartilhar em outros sites

Visitante
Este tópico está impedido de receber novos posts.
×
×
  • Criar Novo...