From db95b322b471cbb9702d095292ca604f51d37e72 Mon Sep 17 00:00:00 2001 From: 17146 <1714673995@qq.com> Date: Thu, 9 Jan 2025 21:45:01 +0800 Subject: [PATCH] =?UTF-8?q?=E4=BF=AE=E5=A4=8D=E5=85=85=E7=94=B5=E7=AB=99?= =?UTF-8?q?=E8=8C=83=E5=9B=B4=E6=98=BE=E7=A4=BA=E9=97=AE=E9=A2=98?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../f93f628a3b0902e77de76541bcff68d1e5e3578f | 4 ++-- .../blockstates/charging_station.json | 23 +++++++++++++++---- .../block/ChargingStationBlock.java | 15 ++++++++---- .../entity/ChargingStationBlockEntity.java | 12 +++++++++- .../ChargingStationBlockEntityRenderer.java | 4 ++-- 5 files changed, 44 insertions(+), 14 deletions(-) diff --git a/src/generated/resources/.cache/f93f628a3b0902e77de76541bcff68d1e5e3578f b/src/generated/resources/.cache/f93f628a3b0902e77de76541bcff68d1e5e3578f index c0c31e441..eefaa4196 100644 --- a/src/generated/resources/.cache/f93f628a3b0902e77de76541bcff68d1e5e3578f +++ b/src/generated/resources/.cache/f93f628a3b0902e77de76541bcff68d1e5e3578f @@ -1,7 +1,7 @@ -// 1.20.1 2024-12-20T00:15:37.2171993 Block States: superbwarfare +// 1.20.1 2025-01-09T21:37:53.6258664 Block States: superbwarfare f3b778ca36ca78c3d80f1b778078897f59bdb0c5 assets/superbwarfare/blockstates/barbed_wire.json 0cfad4f53a8047c402edf978d0c8cf6269f063cb assets/superbwarfare/blockstates/cemented_carbide_block.json -13e5bd940f02c3719459d17722b79619e98194e5 assets/superbwarfare/blockstates/charging_station.json +472c06e6b43ad09925edaa88e9376bfd27ab267f assets/superbwarfare/blockstates/charging_station.json 921500c7cf6c92da0e656486126068bbf5e30348 assets/superbwarfare/blockstates/container.json 62fb0464ca59ac21693639c406e08730427d87b3 assets/superbwarfare/blockstates/deepslate_galena_ore.json b8b7cdea6c8626c74d652d0b300b3afe19c60674 assets/superbwarfare/blockstates/deepslate_scheelite_ore.json diff --git a/src/generated/resources/assets/superbwarfare/blockstates/charging_station.json b/src/generated/resources/assets/superbwarfare/blockstates/charging_station.json index a837ef0d5..792f0adac 100644 --- a/src/generated/resources/assets/superbwarfare/blockstates/charging_station.json +++ b/src/generated/resources/assets/superbwarfare/blockstates/charging_station.json @@ -1,17 +1,32 @@ { "variants": { - "facing=east": { + "facing=east,show_range=false": { "model": "superbwarfare:block/charging_station", "y": 90 }, - "facing=north": { + "facing=east,show_range=true": { + "model": "superbwarfare:block/charging_station", + "y": 90 + }, + "facing=north,show_range=false": { "model": "superbwarfare:block/charging_station" }, - "facing=south": { + "facing=north,show_range=true": { + "model": "superbwarfare:block/charging_station" + }, + "facing=south,show_range=false": { "model": "superbwarfare:block/charging_station", "y": 180 }, - "facing=west": { + "facing=south,show_range=true": { + "model": "superbwarfare:block/charging_station", + "y": 180 + }, + "facing=west,show_range=false": { + "model": "superbwarfare:block/charging_station", + "y": 270 + }, + "facing=west,show_range=true": { "model": "superbwarfare:block/charging_station", "y": 270 } diff --git a/src/main/java/com/atsuishio/superbwarfare/block/ChargingStationBlock.java b/src/main/java/com/atsuishio/superbwarfare/block/ChargingStationBlock.java index d8be257ac..696785b1c 100644 --- a/src/main/java/com/atsuishio/superbwarfare/block/ChargingStationBlock.java +++ b/src/main/java/com/atsuishio/superbwarfare/block/ChargingStationBlock.java @@ -18,6 +18,7 @@ import net.minecraft.world.level.block.entity.BlockEntityType; import net.minecraft.world.level.block.state.BlockBehaviour; import net.minecraft.world.level.block.state.BlockState; import net.minecraft.world.level.block.state.StateDefinition; +import net.minecraft.world.level.block.state.properties.BooleanProperty; import net.minecraft.world.level.block.state.properties.DirectionProperty; import net.minecraft.world.phys.BlockHitResult; import org.jetbrains.annotations.Nullable; @@ -26,10 +27,11 @@ import org.jetbrains.annotations.Nullable; public class ChargingStationBlock extends BaseEntityBlock { public static final DirectionProperty FACING = HorizontalDirectionalBlock.FACING; + public static final BooleanProperty SHOW_RANGE = BooleanProperty.create("show_range"); public ChargingStationBlock() { super(BlockBehaviour.Properties.of().sound(SoundType.METAL).strength(3.0f).requiresCorrectToolForDrops()); - this.registerDefaultState(this.stateDefinition.any().setValue(FACING, Direction.NORTH)); + this.registerDefaultState(this.stateDefinition.any().setValue(FACING, Direction.NORTH).setValue(SHOW_RANGE, false)); } @Override @@ -71,10 +73,13 @@ public class ChargingStationBlock extends BaseEntityBlock { @Override public void onRemove(BlockState pState, Level pLevel, BlockPos pPos, BlockState pNewState, boolean pMovedByPiston) { - if (pLevel instanceof ServerLevel serverLevel) { + if (!pState.is(pNewState.getBlock())) { BlockEntity blockentity = pLevel.getBlockEntity(pPos); if (blockentity instanceof ChargingStationBlockEntity blockEntity) { - Containers.dropContents(serverLevel, pPos, blockEntity); + if (pLevel instanceof ServerLevel serverLevel) { + Containers.dropContents(serverLevel, pPos, blockEntity); + } + pLevel.updateNeighbourForOutputSignal(pPos, this); } } @@ -83,12 +88,12 @@ public class ChargingStationBlock extends BaseEntityBlock { @Override protected void createBlockStateDefinition(StateDefinition.Builder pBuilder) { - pBuilder.add(FACING); + pBuilder.add(FACING).add(SHOW_RANGE); } @Nullable @Override public BlockState getStateForPlacement(BlockPlaceContext pContext) { - return this.defaultBlockState().setValue(FACING, pContext.getHorizontalDirection().getOpposite()); + return this.defaultBlockState().setValue(FACING, pContext.getHorizontalDirection().getOpposite()).setValue(SHOW_RANGE, false); } } diff --git a/src/main/java/com/atsuishio/superbwarfare/block/entity/ChargingStationBlockEntity.java b/src/main/java/com/atsuishio/superbwarfare/block/entity/ChargingStationBlockEntity.java index 7e4e4e71c..5a10ca021 100644 --- a/src/main/java/com/atsuishio/superbwarfare/block/entity/ChargingStationBlockEntity.java +++ b/src/main/java/com/atsuishio/superbwarfare/block/entity/ChargingStationBlockEntity.java @@ -1,5 +1,6 @@ package com.atsuishio.superbwarfare.block.entity; +import com.atsuishio.superbwarfare.block.ChargingStationBlock; import com.atsuishio.superbwarfare.entity.vehicle.IChargeEntity; import com.atsuishio.superbwarfare.init.ModBlockEntities; import com.atsuishio.superbwarfare.menu.ChargingStationMenu; @@ -58,7 +59,6 @@ public class ChargingStationBlockEntity extends BlockEntity implements WorldlyCo public int fuelTick = 0; public int maxFuelTick = DEFAULT_FUEL_TIME; - public boolean showRange = false; protected final ContainerEnergyData dataAccess = new ContainerEnergyData() { @@ -105,6 +105,15 @@ public class ChargingStationBlockEntity extends BlockEntity implements WorldlyCo } public static void serverTick(Level pLevel, BlockPos pPos, BlockState pState, ChargingStationBlockEntity blockEntity) { + if (blockEntity.showRange && !pState.getValue(ChargingStationBlock.SHOW_RANGE)) { + pLevel.setBlockAndUpdate(pPos, pState.setValue(ChargingStationBlock.SHOW_RANGE, true)); + setChanged(pLevel, pPos, pState); + } + if (!blockEntity.showRange && pState.getValue(ChargingStationBlock.SHOW_RANGE)) { + pLevel.setBlockAndUpdate(pPos, pState.setValue(ChargingStationBlock.SHOW_RANGE, false)); + setChanged(pLevel, pPos, pState); + } + blockEntity.energyHandler.ifPresent(handler -> { int energy = handler.getEnergyStored(); if (energy > 0) { @@ -329,6 +338,7 @@ public class ChargingStationBlockEntity extends BlockEntity implements WorldlyCo public CompoundTag getUpdateTag() { CompoundTag compoundtag = new CompoundTag(); ContainerHelper.saveAllItems(compoundtag, this.items, true); + compoundtag.putBoolean("ShowRange", this.showRange); return compoundtag; } diff --git a/src/main/java/com/atsuishio/superbwarfare/client/renderer/block/ChargingStationBlockEntityRenderer.java b/src/main/java/com/atsuishio/superbwarfare/client/renderer/block/ChargingStationBlockEntityRenderer.java index 38ab9768d..3a0c73d75 100644 --- a/src/main/java/com/atsuishio/superbwarfare/client/renderer/block/ChargingStationBlockEntityRenderer.java +++ b/src/main/java/com/atsuishio/superbwarfare/client/renderer/block/ChargingStationBlockEntityRenderer.java @@ -1,5 +1,6 @@ package com.atsuishio.superbwarfare.client.renderer.block; +import com.atsuishio.superbwarfare.block.ChargingStationBlock; import com.atsuishio.superbwarfare.block.entity.ChargingStationBlockEntity; import com.atsuishio.superbwarfare.client.renderer.CustomRenderType; import com.mojang.blaze3d.vertex.PoseStack; @@ -15,8 +16,7 @@ public class ChargingStationBlockEntityRenderer implements BlockEntityRenderer