#Getting the age of stem crop

27 messages · Page 1 of 1 (latest)

cerulean elk
#

Any ideas how to get the age of crop?

near grottoBOT
#

Once your ticket has been resolved, please close it with </ticket close:1054771505520717835> command!

buoyant scroll
#

const block = event.block
const properties = block.properties
const age = Number(properties.age)

if (age == 7) {
thing
}

#

let block = event.block
if (block.hasTag('minecraft:crops')) {
let mcLevel = event.level.minecraftLevel
let blockState = mcLevel.getBlockState(block.pos)
let mcBlock = blockState.block
let mcPlayer = event.player.minecraftPlayer
if (mcBlock.isMaxAge(blockState)) {

    }
cerulean elk
#

There isn't any age suggestion

buoyant scroll
#

i dont have the suggestion thing

cerulean elk
#

There is no .isMaxAge or .getMaxAge or .getAge here:

inland turtle
grave narwhalBOT
#

ProbeJS is an addon mod for KubeJS that generates typings files for VSCode, allowing VSCode to offer autocompletions for a ton of things!

Mod by @main fable

lavish yarrow
#

@cerulean elk are you still on bonemeal stuff?
Which step are you in?

cerulean elk
#
onEvent('block.right_click', event => {
    var oItem = event.getItem();
    var oPlayer = event.getPlayer();
    var oBlock = event.getBlock();
    
    var helmetId = 'ssrp:farmer_hat';
    var chestplateId = 'ssrp:farmer_chestplate';
    var leggingsId = 'ssrp:farmer_leggings';
    var bootsId = 'ssrp:farmer_boots';

    var hasHelmet = oPlayer.getHeadArmorItem() && oPlayer.getHeadArmorItem().getId() === helmetId;
    var hasChestplate = oPlayer.getChestArmorItem() && oPlayer.getChestArmorItem().getId() == chestplateId;
    var hasLeggings = oPlayer.getLegsArmorItem() && oPlayer.getLegsArmorItem().getId() == leggingsId;
    var hasBoots = oPlayer.getFeetArmorItem() && oPlayer.getFeetArmorItem().getId() == bootsId;

    if (hasHelmet && hasChestplate && hasLeggings && hasBoots && oItem.getId() === 'minecraft:bone_meal') {
        var aList = [
            'minecraft:grass_block',
            'minecraft:grass',
            'minecraft:rose_bush',
            'minecraft:peony',
            'minecraft:melon_stem',
            'minecraft:pumpkin_stem',
            'minecraft:mooshroom',
            'minecraft:red_mushroom',
            'minecraft:brown_mushroom',
            'minecraft:sweet_berries',
            'minecraft:sunflower',
            'minecraft:lilac',
            'minecraft:azalea',
            'minecraft:flowering_azalea'
        ];
        //If age of stem is == 7, don't count++
        //If grass_block has something on it, don't count++
        var oBlockState = oBlock.getBlockState();
        let found = aList.find(item => item === oBlock.getId() || item.includes('sapling'));
        console.log("Using bonemeal on: " + oBlock.getId());
        if (!oBlockState.getMaterial().isLiquid() && !oBlockState.isAir() && !!found) {
            oItem.count++;
        }
    }
});
#

I have two more issues to solve -> //If age of stem is == 7, don't count++
//If grass_block has something on it, don't count++

#

if you can help with any of the cases 🙂

lavish yarrow
#

I think this is getting out of hand

I would use applyBonemeal
helper function that the bonemeal item have

let me try that in my instance

#

it will return if it applied or not

cerulean elk
#

How to get the block above right_clicked block -_-

#

I tried to set the block's y to y+1 and then to get the upper block

#

but it tells me that I cannot change the y of the clicked block

#
let oBlockPos = oBlock.getPos();
console.log("Clicked block: " + oBlockPos.getX());
console.log("Clicked block: " + oBlockPos.getY());
console.log("Clicked block: " + oBlockPos.getZ());
oBlockPos.y = oBlockPos.y + 1;
console.log("Above block Y: " + oBlockPos.getY());
lavish yarrow
#
const $UseOnContext = java("net.minecraft.world.item.context.UseOnContext")
const $BlockHitResult = java("net.minecraft.world.phys.BlockHitResult")

onEvent('block.right_click', event => {
  var oItem = event.getItem();
  var oPlayer = event.getPlayer();
  var oBlock = event.getBlock();
  
  var helmetId = 'ssrp:farmer_hat';
  var chestplateId = 'ssrp:farmer_chestplate';
  var leggingsId = 'ssrp:farmer_leggings';
  var bootsId = 'ssrp:farmer_boots';

  var hasHelmet = oPlayer.getHeadArmorItem() && oPlayer.getHeadArmorItem().getId() === helmetId;
  var hasChestplate = oPlayer.getChestArmorItem() && oPlayer.getChestArmorItem().getId() == chestplateId;
  var hasLeggings = oPlayer.getLegsArmorItem() && oPlayer.getLegsArmorItem().getId() == leggingsId;
  var hasBoots = oPlayer.getFeetArmorItem() && oPlayer.getFeetArmorItem().getId() == bootsId;

  if (hasHelmet && hasChestplate && hasLeggings && hasBoots && oItem.getId() === 'minecraft:bone_meal') {
    let vec3 = new Vec3(oPlayer.rayTrace().hitX, oPlayer.rayTrace().hitY, oPlayer.rayTrace().hitZ)
    let blockHitResult = new $BlockHitResult(vec3, event.facing, oBlock.pos, false)
    let context = new $UseOnContext(oPlayer.minecraftPlayer, event.hand, blockHitResult)
    console.log("Using bonemeal on: " + oBlock.getId());
    let result = oItem.item.useOn(context)
    if (result == "CONSUME"){
      console.log("Bonemeal was successfuly used")
      oItem.count++
      event.cancel()
    } else {
      console.log("Bonemeal was not applied on block " + event.block)
    }
  }
});

can you test this?

#

@cerulean elk it is working perfectly for me

cerulean elk
#

perfect

#

thanks