Как создать блок?

Версия Minecraft
1.20.6
API
Forge
Как поставить блок именно для сервера? Ну то-есть в одиночной игре я хочу что бы у меня ставились блоки куда мне нужно, но по какой-то причине блоки не ставятся для сервера, вот код:

2:
package com.example.examplemod.survival.handler;

import com.example.examplemod.Config;
import net.minecraft.client.Minecraft;
import net.minecraft.core.BlockPos;
import net.minecraft.network.protocol.game.ClientboundBlockUpdatePacket;
import net.minecraft.server.commands.SetBlockCommand;
import net.minecraft.world.level.block.CropBlock;
import net.minecraft.world.level.block.state.BlockState;
import net.minecraft.world.level.block.state.properties.IntegerProperty;
import net.minecraft.world.level.gameevent.GameEvent;
import net.minecraftforge.client.event.InputEvent;
import net.minecraftforge.eventbus.api.SubscribeEvent;

public class VegetationHandler implements Handler {

    private final int radius = Config.RADIUS.get();

    @SubscribeEvent
    public void playerEvent(InputEvent.Key e) {
        if (e.getKey() == mc.options.keyShift.getKey().getValue() && e.getAction() == 1) {
            double playerX = mc.player.getX();
            double playerY = mc.player.getY();
            double playerZ = mc.player.getZ();

            int centerX = (int) Math.floor(playerX);
            int centerY = (int) Math.floor(playerZ);

            for (int i = centerX - radius; i <= centerX + radius; ++i) {
                for (int j = centerY - radius; j <= centerY + radius; ++j) {
                    for (int o = (int) (playerY - 1); o <= playerY + 1; ++o) {
                        if ((i - centerX) * (i - centerX) + (j - centerY) * (j - centerY) <= radius * radius) {
                            BlockPos blockPos = new BlockPos(i, o, j);
                            if (mc.level.isLoaded(blockPos)) {
                                BlockState blockState = mc.level.getBlockState(blockPos);
                                if (blockState.getBlock() instanceof CropBlock cropBlock) {
                                    IntegerProperty ageProperty = (IntegerProperty) blockState.getBlock().getStateDefinition().getProperty("age");
                                    if (ageProperty != null) {
                                        int currentAge = blockState.getValue(ageProperty);
                                        if (currentAge < cropBlock.getMaxAge()) {
                                            int newAge = currentAge + 1;
                                            mc.level.setBlockAndUpdate(blockPos, blockState.setValue(ageProperty, newAge));
                                            mc.level.sendBlockUpdated(blockPos, blockState, blockState, 3);
                                            mc.level.levelEvent(1505, blockPos, 15);
                                            mc.player.gameEvent(GameEvent.ITEM_INTERACT_FINISH);
                                        }
                                    }
                                }
                            }
                        }
                    }
                }
            }
        }
    }
}
 
Как поставить блок именно для сервера? Ну то-есть в одиночной игре я хочу что бы у меня ставились блоки куда мне нужно, но по какой-то причине блоки не ставятся для сервера, вот код:
Используй пакеты.
Отправил пакет на сервер -> Принял пакет на сервере -> Прочитал данные -> Изменил блоки ->Сервер автоматически отправил клиенту нужные пакеты, и у него обновились блоки
 
в 1.20 нету автоматической связки клиент-сервер для блоков? Я чет сильно сомневаюсь. Автор иди читать гайды
 
в 1.20 нету автоматической связки клиент-сервер для блоков?
Этот гейний ставит блоки чисто на клиентской части. А как мы помним, данные о мире хранит и считает именно сервер. Так что никакой апдейт блока со стороны клиента ему не проходит.
Так что да, в таких случаях всё ещё нужны пакеты.
 
Назад
Сверху