Спавн блока под игроком

Версия Minecraft
1.16.5
API
Forge
Я только начала изучать все по модам. Как создать блок под игроком. Написала, но код не работает. Может кто помочь и разъяснить, что поменять? Также буду рада любым источникам информации, где можно будет поизучать все по моддингу на 1.16
Java:
package com.foxyfine.my_test_mod.items;

import com.foxyfine.my_test_mod.TestMod;
import net.minecraft.entity.player.PlayerEntity;
import net.minecraft.util.math.BlockPos;
import net.minecraft.util.math.vector.Vector3d;
import net.minecraft.world.World;
import net.minecraftforge.api.distmarker.Dist;
import net.minecraftforge.common.Tags;
import net.minecraftforge.event.entity.player.PlayerFlyableFallEvent;
import net.minecraftforge.eventbus.api.SubscribeEvent;
import net.minecraftforge.fml.common.Mod;

@Mod.EventBusSubscriber(modid = TestMod.MOD_ID, bus = Mod.EventBusSubscriber.Bus.MOD, value = Dist.CLIENT)
public class TutEventHandler {
    Vector3d playerPos;

    @SubscribeEvent
    public void event(PlayerFlyableFallEvent event) {
        if (event.getPlayer() instanceof PlayerEntity) {
            PlayerEntity player = event.getPlayer();
            World world = player.getCommandSenderWorld();


            int x = (int) player.getX();
            int y = (int) player.getY();
            int z = (int) player.getZ();
            new BlockPos(x,y - 1,z);
            Tags.Blocks.GLASS.isDefaulted();
        }

    }
}
 
88
4
6
Смотри, ты не дописала функцию.

Если я правильно помню, то в World есть метод setBlock. Какие аргументы, я не помню (давно на 1.16 не писал + не с IDE).
Если что, отпиши мне в ДС (AlgorithmLX#7376), помогу
 
У цьому коді немає жодного кола, але є одна помилка, а саме:
new BlockPos(x,y - 1,z);
У цьому рядку створюється новий об'єкт класу BlockPos, але його не зберігають в змінну, і тому він не використовується далі в коді. Якщо потрібно використовувати цей об'єкт, то потрібно зберегти його у змінну, наприклад так:
BlockPos blockPos = new BlockPos(x, y - 1, z);
Або використати безпосередньо:
Tags.Blocks.GLASS.isTagged(world.getBlockState(new BlockPos(x, y - 1, z)).getBlock());
 
88
4
6
цьому коді немає жодного кола, але є одна помилка, а саме:
new BlockPos(x,y - 1,z);
У цьому рядку створюється новий об'єкт класу BlockPos, але його не зберігають в змінну, і тому він не використовується далі в коді. Якщо потрібно використовувати цей об'єкт, то потрібно зберегти його у змінну, наприклад так:
BlockPos blockPos = new BlockPos(x, y - 1, z);
Або використати безпосередньо:
Tags.Blocks.GLASS.isTagged(world.getBlockState(new BlockPos(x, y - 1, z)).getBlock());
А по русски можно, пожалуйста? Я не хочу использовать переводчик
 

Icosider

Kotliner
Администратор
3,603
99
664
У цьому коді немає жодного кола, але є одна помилка, а саме:
new BlockPos(x,y - 1,z);
У цьому рядку створюється новий об'єкт класу BlockPos, але його не зберігають в змінну, і тому він не використовується далі в коді. Якщо потрібно використовувати цей об'єкт, то потрібно зберегти його у змінну, наприклад так:
BlockPos blockPos = new BlockPos(x, y - 1, z);
Або використати безпосередньо:
Tags.Blocks.GLASS.isTagged(world.getBlockState(new BlockPos(x, y - 1, z)).getBlock());
Убедительная просьба использовать русский язык при написании комментариев.
 
201
6
32
@Mod.EventBusSubscriber(modid = TestMod.MOD_ID, bus = Mod.EventBusSubscriber.Bus.MOD, value = Dist.CLIENT)

value = Dist.CLIENT - выполняет действия обработчика только на клиенте. Блок устанавливать надо на сервере, убери этот параметр.
А для установки самого блока необходимо дописать установку. Ты создала объект позиции и блока.
Выше комментарием есть ответ установки.
 
Сверху