『西西』
package com.wsseieiei.noise_redstone.guis;

import com.wsseieiei.noise_redstone.blocks.auto_bell.AutoBellBlock;
import com.wsseieiei.noise_redstone.blocks.auto_bell.AutoBellBlockEntity;
import net.minecraft.client.gui.GuiGraphics;
import net.minecraft.client.gui.components.Button;
import net.minecraft.client.gui.screens.Screen;
import net.minecraft.core.BlockPos;
import net.minecraft.network.chat.Component;
import net.minecraft.network.chat.MutableComponent;
import net.minecraft.world.item.ItemStack;
import net.minecraft.world.item.Items;
import net.minecraft.world.level.Level;
import net.minecraft.world.level.block.state.BlockState;
import net.minecraftforge.client.gui.widget.ForgeSlider;
import org.jetbrains.annotations.NotNull;

import java.util.function.Supplier;

public class AutoBellGui extends Screen {

    Level level;
    BlockPos pos;
    BlockState state;
    ForgeSlider slider;
    Button button;


    public AutoBellGui(Level level,BlockPos pos) {
        super(Component.empty());
        this.level=level;
        this.pos=pos;
        this.state=level.getBlockState(pos);
    }

    @Override
    protected void init(){
        this.slider=new ForgeSlider(this.width/2-150,100,300,20,Component.nullToEmpty(""),Component.nullToEmpty("ticks"),0D,100D,state.getValue(AutoBellBlock.AutoBell.WAIT),true);
        this.addRenderableWidget(this.slider);
        this.button=new Button.Builder(Component.nullToEmpty("OK"), new Button.OnPress() {
            @Override
            public void onPress(@NotNull Button p_93751_) {
                level.setBlock(pos,state.setValue(AutoBellBlock.AutoBell.WAIT,(int)slider.getValue()),3);
                state=level.getBlockState(pos);
            }
        }).pos(this.width/2-29,200).size(58, 20).build();
        this.addRenderableWidget(this.button);
    }

    @Override
    public void render(@NotNull GuiGraphics graphics, int mouseX, int mouseY, float partialTicks) {
        this.state=level.getBlockState(pos);
        this.renderBackground(graphics);
        graphics.drawString(this.font, Component.translatable("block.noise_redstone.auto_bell"), 40, 30, 0xffffff, false);
        graphics.renderFakeItem(new ItemStack(Items.BELL),20,26);
        this.button.active=this.slider.getValue() != state.getValue(AutoBellBlock.AutoBell.WAIT);
        super.render(graphics, mouseX, mouseY, partialTicks);
    }
}
复制代码
这是我的代码,在第43行中修改了一个方块
                level.setBlock(pos,state.setValue(AutoBellBlock.AutoBell.WAIT,(int)slider.getValue()),3);
复制代码
但是因为这行代码在GUI内,只在客户端执行了,请问如何将这行代码改为在服务端修改这个方块

第一页 上一页 下一页 最后一页