Ir para conteúdo

Pegando o número de drops de um bloco ao ser quebrado com uma picareta de fortuna


MrPowerGamerBR

Posts Recomendados

	public static int getDropCount(int enchantmentLevel, Block block) {
		if (block.getType().name().contains("ORE")) {
			net.minecraft.server.v1_7_R4.BlockOre nmsBlock = (BlockOre) CraftMagicNumbers.getBlock(block);
			Random rand = new Random();

			if(enchantmentLevel > 0 && Item.getItemOf(nmsBlock) != nmsBlock.getDropType(0, rand, enchantmentLevel)) {
				int j = rand.nextInt(enchantmentLevel + 2) - 1;
				if(j < 0) {
					j = 0;
				}

				return nmsBlock.a(rand) * (j + 1);
			} else {
				return nmsBlock.a(rand);
			}
		} else {
			return 1;
		}
	}

Requer NMS, então você terá que usar Reflection caso você queira que funcione em várias versões do Minecraft sem precisar alterar o código.

 

Criar um Random estático em vez de usar new Random() também seria bom para economizar memória e CPU.

Link para o comentário
Compartilhar em outros sites

Eu nunca precisei pegar o número de drops da fortuna, mas eu pensei que tinha como usando e.getDrops no BlockBreakEvent..

Sim, esse método retorna os drops do bloco, mas sem considerar o encantamento da ferramenta que o player está utilizando.

Link para o comentário
Compartilhar em outros sites

Guest zCouDray

Sim, esse método retorna os drops do bloco, mas sem considerar o encantamento da ferramenta que o player está utilizando.

É mais fácil o cara criar um método pra comparar o encantamento da picareta e criar um número random de acordo com o nível da picareta pra retornar uma quantia, do que ter que criar um Reflection para todas as versões kk

Link para o comentário
Compartilhar em outros sites

É mais fácil o cara criar um método pra comparar o encantamento da picareta e criar um número random de acordo com o nível da picareta pra retornar uma quantia, do que ter que criar um Reflection para todas as versões kk

Como se fosse tão difícil usar Reflection, né?

 

Isso é um método para quem quer pegar o valor random igual ao do Minecraft, sim, você pode fazer um sistema que gera um número aleatório entre 1 e 4, mas será igual ao vanilla? Não.

Link para o comentário
Compartilhar em outros sites

Guest zCouDray

Como se fosse tão difícil usar Reflection, né?

 

Isso é um método para quem quer pegar o valor random igual ao do Minecraft, sim, você pode fazer um sistema que gera um número aleatório entre 1 e 4, mas será igual ao vanilla? Não.

É só dar uma olhada na wiki dos encantamentos e tentar fazer um random mais próximo possível...

Link para o comentário
Compartilhar em outros sites

Como se fosse tão difícil usar Reflection, né?

 

Isso é um método para quem quer pegar o valor random igual ao do Minecraft, sim, você pode fazer um sistema que gera um número aleatório entre 1 e 4, mas será igual ao vanilla? Não.

Se tu implementar o mesmo algorítimo vai ser sim igual o do vanilla.

 

E é bem melhor do que usar Reflection só pra isso.

Link para o comentário
Compartilhar em outros sites

Participe da Conversa

Você pode postar agora e se cadastrar mais tarde. Se você tiver uma conta, a class='ipsType_brandedLink' href='https://gamersboard.com.br/login/' data-ipsDialog data-ipsDialog-size='medium' data-ipsDialog-title='Sign In Now'>acesse agora para postar com sua conta.
Observação: sua postagem exigirá aprovação do moderador antes de ficar visível.

Visitante
Responder

×   Você colou conteúdo com formatação.   Remover formatação

  Apenas 75 emoticons são permitidos.

×   Seu link foi incorporado automaticamente.   Exibir como um link em vez disso

×   Seu conteúdo anterior foi restaurado.   Limpar Editor

×   Você não pode colar imagens diretamente. Carregar ou inserir imagens do URL.

Processando...
×
×
  • Criar Novo...