Récupérer le "stage" d'une plante



  • Bonjour, pouvez-vous me donner le petit morceau de code que je cherche en vain svp, voici ce que j'ai fait, c'est un pnj qui plante des graines, et je souhaiterait récupérer le "stage" d'une plante afin de la remplaçer quand elle a poussé.

    	@Override
    	public void onLivingUpdate() {
    		super.onLivingUpdate();
    		if(timer == 5) {
    			setAIMoveSpeed(0F);
    			int x = getPosition().getX();
    			int y = getPosition().getY()-1;
    			int y1 = getPosition().getY();
    			int z = getPosition().getZ();
    			BlockPos posfarm = new BlockPos(x, y, z);
    			BlockPos pos = new BlockPos(x, y1, z);
    		    int[] xi = {-1,0,1,-1,0,1,-1,0,1};
    		    int[] zi = {1,1,1,0,0,0,-1,-1,-1};
    		    int resultat = 0;
    		    for(int i=0; i < zi.length; i++) {
    		    	BlockPos poss = new BlockPos(x + xi[i], y, z + zi[i]);
    		    	BlockPos poss1 = new BlockPos(x + xi[i], y1, z + zi[i]);
    		    	if(getEntityWorld().getBlockState(poss).getBlock().equals(Blocks.FARMLAND)) {
    			    	if(!getEntityWorld().getBlockState(poss1).getBlock().equals(Blocks.WHEAT)) {
    			    		BlockPos poss2 = new BlockPos(x + xi[i], y1, z + zi[i]);
    			    		moveToBlockPosAndAngles(poss2, getPitchYaw().x, getPitchYaw().y);
    						timermove = 120;
    						setAIMoveSpeed(0F);
    			    	}
    		    	}
    		    }
    			if(getEntityWorld().getBlockState(posfarm).getBlock().equals(Blocks.FARMLAND)) {
    				if(!getEntityWorld().getBlockState(pos).getBlock().equals(Blocks.WHEAT)) {
    					getEntityWorld().setBlockState(pos, Blocks.WHEAT.getDefaultState());
    				}
    			}
    			timer = 0;
    		//	getEntityWorld().setBlockState(pos, Blocks.OBSIDIAN.getDefaultState());
    			getEntityWorld().getBlockState(posfarm);
    			
    		}else {
    			timer++;
    		}
    		
    		if(timermove!=0) {
    			timermove--;
    		}else {
    			setAIMoveSpeed(0.2F);
    		}
    	}
    

    Merci de votre réponse et bonne journée 🙂



  • Si ta plante change de block quand elle pousse c'est easy je pense pour toi.Mais si c'est avec les BlockStates je vais verif quel est la variable qui interesse et je reviens



  • Dans BlockCrops, il y a la méthode isMaxAge qui te permet de savoir si une plante est poussé au max ou pas à partir du blockstate



  • Merci pour vos réponses, j'ai trouvé la solution qui étais

    getEntityWorld().getBlockState(poss1).getValue(BlockCrops.AGE).intValue() == 7
    

Log in to reply