- 11
- 0
Как поставить блок именно для сервера? Ну то-есть в одиночной игре я хочу что бы у меня ставились блоки куда мне нужно, но по какой-то причине блоки не ставятся для сервера, вот код:
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);
}
}
}
}
}
}
}
}
}
}
}