#Getting the age of stem crop
27 messages · Page 1 of 1 (latest)
Once your ticket has been resolved, please close it with </ticket close:1054771505520717835> command!
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)) {
}
let me check
i dont have the suggestion thing
There is no .isMaxAge or .getMaxAge or .getAge here:
use probeJS
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
@cerulean elk are you still on bonemeal stuff?
Which step are you in?
Wait
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 🙂
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
you can access this on
oItem.item.applyBonemeal(...)
on 1.18 it is just a pain to get those arguments but not impossible)
it will return if it applied or not
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());
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