Как указать блок из другого мода forge modding

Версия Minecraft
1.16.5
API
Forge
Здравствуйте!
Делаю мод forge: при повышении уровня в игре вокруг игрока спавнится блок из мода lucky блок.
Я написал событие и сейчас у меня все работает и вокруг игрока спавнится блок КАМНЯ.

Вопрос: как указать чтобы спавнился блок из мода lucky block?
Уже все обыскал и ничего не нашел, очень надеюсь что вы знаете ответ, спасибо!



Скрипт события:
Java:
package net.mainMod.luckygen.events;

import net.minecraft.block.Block;
import net.minecraft.block.Blocks;
import net.minecraft.entity.LivingEntity;
import net.minecraft.util.math.BlockPos;
import net.minecraft.world.World;
import net.minecraftforge.api.distmarker.Dist;
import net.minecraftforge.event.entity.player.PlayerXpEvent;
import net.minecraftforge.eventbus.api.SubscribeEvent;
import net.minecraftforge.fml.common.Mod;
import net.mainMod.luckygen.luckygen;

@Mod.EventBusSubscriber(modid = luckygen.MOD_ID, bus = Mod.EventBusSubscriber.Bus.FORGE, value = Dist.CLIENT)
public class ModClientEvents {
    @SubscribeEvent
    public static void pickupXP(PlayerXpEvent.LevelChange event) {
        luckygen.LOGGER.info("test");
        LivingEntity player = event.getEntityLiving();
        World world = player.getEntity().getCommandSenderWorld();

        Block block = Blocks.STONE; //how to write a block from the 'Lucky Block' mod instead of a stone?

        double xcoord = player.getRandomX(3);
        double ycoord = player.getY();
        double zcoord = player.getRandomZ(3);
        BlockPos blockPos = new BlockPos(xcoord, ycoord, zcoord);
        world.setBlockAndUpdate(blockPos, block.defaultBlockState());
    }
}
 

Вложения

  • Y7taaFuLSPY.jpg
    Y7taaFuLSPY.jpg
    142.2 KB · Просмотры: 5
Решение
Спасибо, сработало.
Ты должен использовать "ForgeRegistries.BLOCKS", а не "ForgeRegistries.ITEMS" и разумеется записывать в переменную типа Block, а не ItemStack, а после указать в самом методе "setBlockAndUpdate()" BlockState полученного блока.

Вот код кода кому нужно:
Java:
@SubscribeEvent
    public static void pickupXP(PlayerXpEvent.LevelChange event) {
        LivingEntity player = event.getEntityLiving();
        World world = player.getEntity().getCommandSenderWorld();
        double xcoord = player.getRandomX(3);
        double ycoord = player.getY();
        double zcoord = player.getRandomZ(3);
        BlockPos blockPos = new BlockPos(xcoord, ycoord, zcoord);
        Block block = ForgeRegistries.BLOCKS.getValue(new...
122
4
6
ItemStack stack = new ItemStack(ForgeRegistries.ITEMS.getValue(new ResourceLocation("айди мода", "название предмета")), 1, 0);

patchouli:guide_book - просто пример
айди мода:название предмета

чтоб узнать ади блока/предмета нужно врубить расширенные подсказки
 
ItemStack stack = new ItemStack(ForgeRegistries.ITEMS.getValue(new ResourceLocation("айди мода", "название предмета")), 1, 0);

patchouli:guide_book - просто пример
айди мода:название предмета

чтоб узнать ади блока/предмета нужно врубить расширенные подсказки
Хочу сначала сделать снова на примере блока камня, потом уже поставлю блок с мода.
Какая-то ошибка в конце где 0, и как мне записать теперь этот stack в setBlockAndUpdate, или другой метод уже нужен1635671952817.png
 
Спасибо, сработало.
Ты должен использовать "ForgeRegistries.BLOCKS", а не "ForgeRegistries.ITEMS" и разумеется записывать в переменную типа Block, а не ItemStack, а после указать в самом методе "setBlockAndUpdate()" BlockState полученного блока.

Вот код кода кому нужно:
Java:
@SubscribeEvent
    public static void pickupXP(PlayerXpEvent.LevelChange event) {
        LivingEntity player = event.getEntityLiving();
        World world = player.getEntity().getCommandSenderWorld();
        double xcoord = player.getRandomX(3);
        double ycoord = player.getY();
        double zcoord = player.getRandomZ(3);
        BlockPos blockPos = new BlockPos(xcoord, ycoord, zcoord);
        Block block = ForgeRegistries.BLOCKS.getValue(new ResourceLocation("lucky", "lucky_block"));
        world.setBlockAndUpdate(blockPos, block.defaultBlockState());
    }
 
Сверху