diff --git a/src/main/java/com/atsuishio/superbwarfare/block/entity/FuMO25BlockEntity.java b/src/main/java/com/atsuishio/superbwarfare/block/entity/FuMO25BlockEntity.java index 4625b2fbe..aad8581ad 100644 --- a/src/main/java/com/atsuishio/superbwarfare/block/entity/FuMO25BlockEntity.java +++ b/src/main/java/com/atsuishio/superbwarfare/block/entity/FuMO25BlockEntity.java @@ -35,6 +35,8 @@ public class FuMO25BlockEntity extends BlockEntity implements MenuProvider { public static final int DEFAULT_ENERGY_COST = 256; public static final int MAX_ENERGY_COST = 1024; + public static final int DEFAULT_MIN_ENERGY = 64000; + public static final int MAX_DATA_COUNT = 3; private LazyOptional energyHandler; @@ -78,7 +80,15 @@ public class FuMO25BlockEntity extends BlockEntity implements MenuProvider { public static void serverTick(Level pLevel, BlockPos pPos, BlockState pState, FuMO25BlockEntity blockEntity) { int energy = blockEntity.energyHandler.map(EnergyStorage::getEnergyStored).orElse(0); - if (energy <= 0) { + FuncType funcType = blockEntity.type; + int energyCost; + if (funcType == FuncType.WIDER) { + energyCost = MAX_ENERGY_COST; + } else { + energyCost = DEFAULT_ENERGY_COST; + } + + if (energy < energyCost) { if (pState.getValue(FuMO25Block.POWERED)) { pLevel.setBlockAndUpdate(pPos, pState.setValue(FuMO25Block.POWERED, false)); setChanged(pLevel, pPos, pState); @@ -89,22 +99,16 @@ public class FuMO25BlockEntity extends BlockEntity implements MenuProvider { } } else { if (!pState.getValue(FuMO25Block.POWERED)) { - pLevel.setBlockAndUpdate(pPos, pState.setValue(FuMO25Block.POWERED, true)); - setChanged(pLevel, pPos, pState); - } - - FuncType funcType = blockEntity.type; - int energyCost; - if (funcType == FuncType.WIDER) { - energyCost = MAX_ENERGY_COST; + if (energy >= DEFAULT_MIN_ENERGY) { + pLevel.setBlockAndUpdate(pPos, pState.setValue(FuMO25Block.POWERED, true)); + setChanged(pLevel, pPos, pState); + } } else { - energyCost = DEFAULT_ENERGY_COST; - } - blockEntity.energyHandler.ifPresent(handler -> handler.extractEnergy(energyCost, false)); - - if (blockEntity.time > 0) { - blockEntity.time--; - blockEntity.setChanged(); + blockEntity.energyHandler.ifPresent(handler -> handler.extractEnergy(energyCost, false)); + if (blockEntity.time > 0) { + blockEntity.time--; + blockEntity.setChanged(); + } } } diff --git a/src/main/java/com/atsuishio/superbwarfare/client/model/block/FuMO25Model.java b/src/main/java/com/atsuishio/superbwarfare/client/model/block/FuMO25Model.java index abc6530a2..d7df5b199 100644 --- a/src/main/java/com/atsuishio/superbwarfare/client/model/block/FuMO25Model.java +++ b/src/main/java/com/atsuishio/superbwarfare/client/model/block/FuMO25Model.java @@ -633,8 +633,12 @@ public class FuMO25Model extends EntityModel { poseStack.popPose(); } - // TODO 添加旋转 public void render(PoseStack poseStack, VertexConsumer vertexConsumer, int packedLight, int packedOverlay, float red, float green, float blue, float alpha, boolean roll) { + if (roll) { + this.yundongjian.yRot = (System.currentTimeMillis() % 36000000) / 1200f; + } else { + this.yundongjian.yRot = 0; + } renderToBuffer(poseStack, vertexConsumer, packedLight, packedOverlay, red, green, blue, alpha); } } \ No newline at end of file diff --git a/src/main/java/com/atsuishio/superbwarfare/client/renderer/block/FuMO25BlockEntityRenderer.java b/src/main/java/com/atsuishio/superbwarfare/client/renderer/block/FuMO25BlockEntityRenderer.java index e2f99ef2a..c11b0198a 100644 --- a/src/main/java/com/atsuishio/superbwarfare/client/renderer/block/FuMO25BlockEntityRenderer.java +++ b/src/main/java/com/atsuishio/superbwarfare/client/renderer/block/FuMO25BlockEntityRenderer.java @@ -1,6 +1,7 @@ package com.atsuishio.superbwarfare.client.renderer.block; import com.atsuishio.superbwarfare.ModUtils; +import com.atsuishio.superbwarfare.block.FuMO25Block; import com.atsuishio.superbwarfare.block.entity.FuMO25BlockEntity; import com.atsuishio.superbwarfare.client.model.block.FuMO25Model; import com.mojang.blaze3d.vertex.PoseStack; @@ -32,7 +33,8 @@ public class FuMO25BlockEntityRenderer implements BlockEntityRenderer