增强充电站功能

This commit is contained in:
Light_Quanta 2025-03-30 13:01:18 +08:00
parent 52a342541b
commit 44d33495db
No known key found for this signature in database
GPG key ID: 11A39A1B8C890959
11 changed files with 257 additions and 14 deletions

View file

@ -3,8 +3,15 @@ package com.atsuishio.superbwarfare.block;
import com.atsuishio.superbwarfare.block.entity.CreativeChargingStationBlockEntity; import com.atsuishio.superbwarfare.block.entity.CreativeChargingStationBlockEntity;
import com.atsuishio.superbwarfare.init.ModBlockEntities; import com.atsuishio.superbwarfare.init.ModBlockEntities;
import com.mojang.serialization.MapCodec; import com.mojang.serialization.MapCodec;
import net.minecraft.ChatFormatting;
import net.minecraft.core.BlockPos; import net.minecraft.core.BlockPos;
import net.minecraft.core.Direction; import net.minecraft.core.Direction;
import net.minecraft.network.chat.Component;
import net.minecraft.world.InteractionHand;
import net.minecraft.world.InteractionResult;
import net.minecraft.world.ItemInteractionResult;
import net.minecraft.world.entity.player.Player;
import net.minecraft.world.item.ItemStack;
import net.minecraft.world.item.context.BlockPlaceContext; import net.minecraft.world.item.context.BlockPlaceContext;
import net.minecraft.world.level.Level; import net.minecraft.world.level.Level;
import net.minecraft.world.level.block.*; import net.minecraft.world.level.block.*;
@ -14,7 +21,10 @@ import net.minecraft.world.level.block.entity.BlockEntityType;
import net.minecraft.world.level.block.state.BlockBehaviour; import net.minecraft.world.level.block.state.BlockBehaviour;
import net.minecraft.world.level.block.state.BlockState; import net.minecraft.world.level.block.state.BlockState;
import net.minecraft.world.level.block.state.StateDefinition; 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.level.block.state.properties.DirectionProperty;
import net.minecraft.world.phys.BlockHitResult;
import net.neoforged.neoforge.capabilities.Capabilities;
import org.jetbrains.annotations.NotNull; import org.jetbrains.annotations.NotNull;
import org.jetbrains.annotations.Nullable; import org.jetbrains.annotations.Nullable;
@ -23,9 +33,11 @@ import javax.annotation.ParametersAreNonnullByDefault;
public class CreativeChargingStationBlock extends BaseEntityBlock { public class CreativeChargingStationBlock extends BaseEntityBlock {
public static final DirectionProperty FACING = HorizontalDirectionalBlock.FACING; public static final DirectionProperty FACING = HorizontalDirectionalBlock.FACING;
public static final BooleanProperty SHOW_RANGE = BooleanProperty.create("show_range");
public CreativeChargingStationBlock() { public CreativeChargingStationBlock() {
this(Properties.of().sound(SoundType.METAL).strength(3.0f).requiresCorrectToolForDrops()); this(Properties.of().sound(SoundType.METAL).strength(3.0f).requiresCorrectToolForDrops());
this.registerDefaultState(this.stateDefinition.any().setValue(FACING, Direction.NORTH).setValue(SHOW_RANGE, false));
} }
public CreativeChargingStationBlock(BlockBehaviour.Properties properties) { public CreativeChargingStationBlock(BlockBehaviour.Properties properties) {
@ -76,14 +88,57 @@ public class CreativeChargingStationBlock extends BaseEntityBlock {
super.onRemove(pState, pLevel, pPos, pNewState, pMovedByPiston); super.onRemove(pState, pLevel, pPos, pNewState, pMovedByPiston);
} }
@Override
@ParametersAreNonnullByDefault
protected @NotNull ItemInteractionResult useItemOn(ItemStack stack, BlockState state, Level level, BlockPos pos, Player player, InteractionHand hand, BlockHitResult hitResult) {
var cap = stack.getCapability(Capabilities.EnergyStorage.ITEM);
if (cap == null) return ItemInteractionResult.FAIL;
if (cap.canReceive() && cap.getEnergyStored() < cap.getMaxEnergyStored()) {
cap.receiveEnergy(Integer.MAX_VALUE, false);
if (!level.isClientSide) {
player.displayClientMessage(Component.translatable("des.superbwarfare.creative_charging_station.charge.success").withStyle(ChatFormatting.GREEN), true);
}
} else if (cap.canExtract()) {
cap.extractEnergy(Integer.MAX_VALUE, false);
if (!level.isClientSide) {
player.displayClientMessage(Component.translatable("des.superbwarfare.creative_charging_station.extract.success").withStyle(ChatFormatting.GREEN), true);
}
} else {
if (!level.isClientSide) {
player.displayClientMessage(Component.translatable("des.superbwarfare.creative_charging_station.fail").withStyle(ChatFormatting.RED), true);
}
return ItemInteractionResult.FAIL;
}
return ItemInteractionResult.SUCCESS;
}
// TODO 如何交互
@Override
@ParametersAreNonnullByDefault
protected @NotNull InteractionResult useWithoutItem(BlockState state, Level level, BlockPos pos, Player player, BlockHitResult hitResult) {
var blockEntity = level.getBlockEntity(pos);
if (blockEntity instanceof CreativeChargingStationBlockEntity station) {
if (level.isClientSide) {
return InteractionResult.SUCCESS;
}
station.showRange = !station.showRange;
level.sendBlockUpdated(pos, state, state, Block.UPDATE_CLIENTS);
return InteractionResult.SUCCESS;
}
return InteractionResult.sidedSuccess(level.isClientSide);
}
@Override @Override
protected void createBlockStateDefinition(StateDefinition.Builder<Block, BlockState> pBuilder) { protected void createBlockStateDefinition(StateDefinition.Builder<Block, BlockState> pBuilder) {
pBuilder.add(FACING); pBuilder.add(FACING).add(SHOW_RANGE);
} }
@Nullable @Nullable
@Override @Override
public BlockState getStateForPlacement(BlockPlaceContext pContext) { 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);
} }
} }

View file

@ -4,6 +4,11 @@ import com.atsuishio.superbwarfare.capability.energy.InfinityEnergyStorage;
import com.atsuishio.superbwarfare.init.ModBlockEntities; import com.atsuishio.superbwarfare.init.ModBlockEntities;
import net.minecraft.core.BlockPos; import net.minecraft.core.BlockPos;
import net.minecraft.core.Direction; import net.minecraft.core.Direction;
import net.minecraft.core.HolderLookup;
import net.minecraft.nbt.CompoundTag;
import net.minecraft.network.Connection;
import net.minecraft.network.protocol.Packet;
import net.minecraft.network.protocol.game.ClientGamePacketListener;
import net.minecraft.network.protocol.game.ClientboundBlockEntityDataPacket; import net.minecraft.network.protocol.game.ClientboundBlockEntityDataPacket;
import net.minecraft.world.entity.Entity; import net.minecraft.world.entity.Entity;
import net.minecraft.world.level.block.entity.BlockEntity; import net.minecraft.world.level.block.entity.BlockEntity;
@ -11,8 +16,10 @@ import net.minecraft.world.level.block.state.BlockState;
import net.minecraft.world.phys.AABB; import net.minecraft.world.phys.AABB;
import net.neoforged.neoforge.capabilities.Capabilities; import net.neoforged.neoforge.capabilities.Capabilities;
import net.neoforged.neoforge.energy.IEnergyStorage; import net.neoforged.neoforge.energy.IEnergyStorage;
import org.jetbrains.annotations.NotNull;
import org.jetbrains.annotations.Nullable; import org.jetbrains.annotations.Nullable;
import javax.annotation.ParametersAreNonnullByDefault;
import java.util.List; import java.util.List;
/** /**
@ -22,6 +29,27 @@ public class CreativeChargingStationBlockEntity extends BlockEntity {
public static final int CHARGE_RADIUS = 8; public static final int CHARGE_RADIUS = 8;
public boolean showRange = false;
@Override
public @NotNull CompoundTag getUpdateTag(HolderLookup.@NotNull Provider registries) {
CompoundTag tag = new CompoundTag();
tag.putBoolean("ShowRange", this.showRange);
saveAdditional(tag, registries);
return tag;
}
@Override
public Packet<ClientGamePacketListener> getUpdatePacket() {
return ClientboundBlockEntityDataPacket.create(this);
}
@Override
@ParametersAreNonnullByDefault
public void onDataPacket(Connection connection, ClientboundBlockEntityDataPacket packet, HolderLookup.Provider registries) {
super.onDataPacket(connection, packet, registries);
this.showRange = packet.getTag().getBoolean("ShowRange");
}
public CreativeChargingStationBlockEntity(BlockPos pos, BlockState state) { public CreativeChargingStationBlockEntity(BlockPos pos, BlockState state) {
super(ModBlockEntities.CREATIVE_CHARGING_STATION.get(), pos, state); super(ModBlockEntities.CREATIVE_CHARGING_STATION.get(), pos, state);
@ -64,11 +92,6 @@ public class CreativeChargingStationBlockEntity extends BlockEntity {
} }
} }
@Override
public ClientboundBlockEntityDataPacket getUpdatePacket() {
return ClientboundBlockEntityDataPacket.create(this);
}
private final IEnergyStorage energyStorage = new InfinityEnergyStorage(); private final IEnergyStorage energyStorage = new InfinityEnergyStorage();
@Nullable @Nullable

View file

@ -1,9 +1,6 @@
package com.atsuishio.superbwarfare.client; package com.atsuishio.superbwarfare.client;
import com.atsuishio.superbwarfare.client.renderer.block.ChargingStationBlockEntityRenderer; import com.atsuishio.superbwarfare.client.renderer.block.*;
import com.atsuishio.superbwarfare.client.renderer.block.ContainerBlockEntityRenderer;
import com.atsuishio.superbwarfare.client.renderer.block.FuMO25BlockEntityRenderer;
import com.atsuishio.superbwarfare.client.renderer.block.SmallContainerBlockEntityRenderer;
import com.atsuishio.superbwarfare.client.tooltip.*; import com.atsuishio.superbwarfare.client.tooltip.*;
import com.atsuishio.superbwarfare.client.tooltip.component.*; import com.atsuishio.superbwarfare.client.tooltip.component.*;
import com.atsuishio.superbwarfare.init.ModBlockEntities; import com.atsuishio.superbwarfare.init.ModBlockEntities;
@ -34,6 +31,7 @@ public class ClientRenderHandler {
event.registerBlockEntityRenderer(ModBlockEntities.CONTAINER.get(), context -> new ContainerBlockEntityRenderer()); event.registerBlockEntityRenderer(ModBlockEntities.CONTAINER.get(), context -> new ContainerBlockEntityRenderer());
event.registerBlockEntityRenderer(ModBlockEntities.FUMO_25.get(), context -> new FuMO25BlockEntityRenderer()); event.registerBlockEntityRenderer(ModBlockEntities.FUMO_25.get(), context -> new FuMO25BlockEntityRenderer());
event.registerBlockEntityRenderer(ModBlockEntities.CHARGING_STATION.get(), context -> new ChargingStationBlockEntityRenderer()); event.registerBlockEntityRenderer(ModBlockEntities.CHARGING_STATION.get(), context -> new ChargingStationBlockEntityRenderer());
event.registerBlockEntityRenderer(ModBlockEntities.CREATIVE_CHARGING_STATION.get(), context -> new CreativeChargingStationBlockEntityRenderer());
event.registerBlockEntityRenderer(ModBlockEntities.SMALL_CONTAINER.get(), context -> new SmallContainerBlockEntityRenderer()); event.registerBlockEntityRenderer(ModBlockEntities.SMALL_CONTAINER.get(), context -> new SmallContainerBlockEntityRenderer());
} }
} }

View file

@ -18,7 +18,7 @@ import javax.annotation.ParametersAreNonnullByDefault;
public class ChargingStationBlockEntityRenderer implements BlockEntityRenderer<ChargingStationBlockEntity> { public class ChargingStationBlockEntityRenderer implements BlockEntityRenderer<ChargingStationBlockEntity> {
@Override @Override
public void render(ChargingStationBlockEntity blockEntity, float partialTick, @NotNull PoseStack poseStack, MultiBufferSource bufferSource, int packedLight, int packedOverlay) { public void render(ChargingStationBlockEntity blockEntity, float partialTick, @NotNull PoseStack poseStack, @NotNull MultiBufferSource bufferSource, int packedLight, int packedOverlay) {
if (!blockEntity.getBlockState().getValue(ChargingStationBlock.SHOW_RANGE)) return; if (!blockEntity.getBlockState().getValue(ChargingStationBlock.SHOW_RANGE)) return;
poseStack.pushPose(); poseStack.pushPose();

View file

@ -0,0 +1,97 @@
package com.atsuishio.superbwarfare.client.renderer.block;
import com.atsuishio.superbwarfare.block.ChargingStationBlock;
import com.atsuishio.superbwarfare.block.entity.CreativeChargingStationBlockEntity;
import com.atsuishio.superbwarfare.client.renderer.CustomRenderType;
import com.mojang.blaze3d.vertex.PoseStack;
import net.minecraft.client.renderer.MultiBufferSource;
import net.minecraft.client.renderer.blockentity.BlockEntityRenderer;
import net.minecraft.world.phys.AABB;
import net.minecraft.world.phys.Vec3;
import net.neoforged.api.distmarker.Dist;
import net.neoforged.api.distmarker.OnlyIn;
import org.jetbrains.annotations.NotNull;
import javax.annotation.ParametersAreNonnullByDefault;
@OnlyIn(Dist.CLIENT)
public class CreativeChargingStationBlockEntityRenderer implements BlockEntityRenderer<CreativeChargingStationBlockEntity> {
@Override
public void render(CreativeChargingStationBlockEntity blockEntity, float partialTick, @NotNull PoseStack poseStack, @NotNull MultiBufferSource bufferSource, int packedLight, int packedOverlay) {
if (!blockEntity.getBlockState().hasProperty(ChargingStationBlock.SHOW_RANGE) || !blockEntity.getBlockState().getValue(ChargingStationBlock.SHOW_RANGE))
return;
poseStack.pushPose();
var pos = blockEntity.getBlockPos();
poseStack.translate(-pos.getX(), -pos.getY(), -pos.getZ());
var aabb = new AABB(pos).inflate(CreativeChargingStationBlockEntity.CHARGE_RADIUS);
float startX = (float) aabb.minX - 0.001f;
float startY = (float) aabb.minY - 0.001f;
float startZ = (float) aabb.minZ - 0.001f;
float endX = (float) aabb.maxX + 0.001f;
float endY = (float) aabb.maxY + 0.001f;
float endZ = (float) aabb.maxZ + 0.001f;
var red = 0.0f;
var green = 1.0f;
var blue = 0.0f;
var alpha = 0.2f;
var builder = bufferSource.getBuffer(CustomRenderType.BLOCK_OVERLAY);
var m4f = poseStack.last().pose();
// east
builder.addVertex(m4f, startX, startY, startZ).setColor(red, green, blue, alpha);
builder.addVertex(m4f, startX, endY, startZ).setColor(red, green, blue, alpha);
builder.addVertex(m4f, endX, endY, startZ).setColor(red, green, blue, alpha);
builder.addVertex(m4f, endX, startY, startZ).setColor(red, green, blue, alpha);
// west
builder.addVertex(m4f, startX, startY, endZ).setColor(red, green, blue, alpha);
builder.addVertex(m4f, endX, startY, endZ).setColor(red, green, blue, alpha);
builder.addVertex(m4f, endX, endY, endZ).setColor(red, green, blue, alpha);
builder.addVertex(m4f, startX, endY, endZ).setColor(red, green, blue, alpha);
// south
builder.addVertex(m4f, endX, startY, startZ).setColor(red, green, blue, alpha);
builder.addVertex(m4f, endX, endY, startZ).setColor(red, green, blue, alpha);
builder.addVertex(m4f, endX, endY, endZ).setColor(red, green, blue, alpha);
builder.addVertex(m4f, endX, startY, endZ).setColor(red, green, blue, alpha);
// north
builder.addVertex(m4f, startX, startY, startZ).setColor(red, green, blue, alpha);
builder.addVertex(m4f, startX, startY, endZ).setColor(red, green, blue, alpha);
builder.addVertex(m4f, startX, endY, endZ).setColor(red, green, blue, alpha);
builder.addVertex(m4f, startX, endY, startZ).setColor(red, green, blue, alpha);
// top
builder.addVertex(m4f, startX, endY, startZ).setColor(red, green, blue, alpha);
builder.addVertex(m4f, endX, endY, startZ).setColor(red, green, blue, alpha);
builder.addVertex(m4f, endX, endY, endZ).setColor(red, green, blue, alpha);
builder.addVertex(m4f, startX, endY, endZ).setColor(red, green, blue, alpha);
// bottom
builder.addVertex(m4f, startX, startY, startZ).setColor(red, green, blue, alpha);
builder.addVertex(m4f, endX, startY, startZ).setColor(red, green, blue, alpha);
builder.addVertex(m4f, endX, startY, endZ).setColor(red, green, blue, alpha);
builder.addVertex(m4f, startX, startY, endZ).setColor(red, green, blue, alpha);
poseStack.popPose();
}
@Override
public boolean shouldRenderOffScreen(@NotNull CreativeChargingStationBlockEntity blockEntity) {
return true;
}
@Override
@ParametersAreNonnullByDefault
public boolean shouldRender(CreativeChargingStationBlockEntity blockEntity, Vec3 pCameraPos) {
return true;
}
}

View file

@ -3,6 +3,7 @@ package com.atsuishio.superbwarfare.client.screens;
import com.atsuishio.superbwarfare.Mod; import com.atsuishio.superbwarfare.Mod;
import com.atsuishio.superbwarfare.block.entity.ChargingStationBlockEntity; import com.atsuishio.superbwarfare.block.entity.ChargingStationBlockEntity;
import com.atsuishio.superbwarfare.menu.ChargingStationMenu; import com.atsuishio.superbwarfare.menu.ChargingStationMenu;
import com.atsuishio.superbwarfare.network.message.send.ShowChargingRangeMessage;
import net.minecraft.client.gui.GuiGraphics; import net.minecraft.client.gui.GuiGraphics;
import net.minecraft.client.gui.components.AbstractButton; import net.minecraft.client.gui.components.AbstractButton;
import net.minecraft.client.gui.narration.NarrationElementOutput; import net.minecraft.client.gui.narration.NarrationElementOutput;
@ -12,6 +13,7 @@ import net.minecraft.resources.ResourceLocation;
import net.minecraft.world.entity.player.Inventory; import net.minecraft.world.entity.player.Inventory;
import net.neoforged.api.distmarker.Dist; import net.neoforged.api.distmarker.Dist;
import net.neoforged.api.distmarker.OnlyIn; import net.neoforged.api.distmarker.OnlyIn;
import net.neoforged.neoforge.network.PacketDistributor;
import org.jetbrains.annotations.NotNull; import org.jetbrains.annotations.NotNull;
import java.util.ArrayList; import java.util.ArrayList;
@ -91,8 +93,7 @@ public class ChargingStationScreen extends AbstractContainerScreen<ChargingStati
@Override @Override
public void onPress() { public void onPress() {
// TODO show range message PacketDistributor.sendToServer(new ShowChargingRangeMessage(!ChargingStationScreen.this.menu.showRange()));
// PacketDistributor.sendToServer(new ShowChargingRangeMessage(!ChargingStationScreen.this.menu.showRange()));
} }
@Override @Override

View file

@ -2,13 +2,18 @@ package com.atsuishio.superbwarfare.item;
import com.atsuishio.superbwarfare.client.tooltip.component.ChargingStationImageComponent; import com.atsuishio.superbwarfare.client.tooltip.component.ChargingStationImageComponent;
import com.atsuishio.superbwarfare.init.ModBlocks; import com.atsuishio.superbwarfare.init.ModBlocks;
import net.minecraft.ChatFormatting;
import net.minecraft.core.component.DataComponents; import net.minecraft.core.component.DataComponents;
import net.minecraft.nbt.CompoundTag; import net.minecraft.nbt.CompoundTag;
import net.minecraft.network.chat.Component;
import net.minecraft.world.inventory.tooltip.TooltipComponent; import net.minecraft.world.inventory.tooltip.TooltipComponent;
import net.minecraft.world.item.BlockItem; import net.minecraft.world.item.BlockItem;
import net.minecraft.world.item.ItemStack; import net.minecraft.world.item.ItemStack;
import net.minecraft.world.item.TooltipFlag;
import org.jetbrains.annotations.NotNull; import org.jetbrains.annotations.NotNull;
import javax.annotation.ParametersAreNonnullByDefault;
import java.util.List;
import java.util.Optional; import java.util.Optional;
public class ChargingStationBlockItem extends BlockItem { public class ChargingStationBlockItem extends BlockItem {
@ -44,4 +49,10 @@ public class ChargingStationBlockItem extends BlockItem {
public @NotNull Optional<TooltipComponent> getTooltipImage(@NotNull ItemStack pStack) { public @NotNull Optional<TooltipComponent> getTooltipImage(@NotNull ItemStack pStack) {
return Optional.of(new ChargingStationImageComponent(pStack)); return Optional.of(new ChargingStationImageComponent(pStack));
} }
@Override
@ParametersAreNonnullByDefault
public void appendHoverText(ItemStack stack, TooltipContext context, List<Component> tooltipComponents, TooltipFlag tooltipFlag) {
tooltipComponents.add(Component.translatable("des.superbwarfare.charging_station").withStyle(ChatFormatting.GRAY));
}
} }

View file

@ -2,11 +2,18 @@ package com.atsuishio.superbwarfare.item;
import com.atsuishio.superbwarfare.capability.energy.InfinityEnergyStorage; import com.atsuishio.superbwarfare.capability.energy.InfinityEnergyStorage;
import com.atsuishio.superbwarfare.init.ModBlocks; import com.atsuishio.superbwarfare.init.ModBlocks;
import net.minecraft.ChatFormatting;
import net.minecraft.network.chat.Component;
import net.minecraft.world.item.BlockItem; import net.minecraft.world.item.BlockItem;
import net.minecraft.world.item.ItemStack;
import net.minecraft.world.item.Rarity; import net.minecraft.world.item.Rarity;
import net.minecraft.world.item.TooltipFlag;
import net.neoforged.neoforge.energy.IEnergyStorage; import net.neoforged.neoforge.energy.IEnergyStorage;
import org.jetbrains.annotations.Nullable; import org.jetbrains.annotations.Nullable;
import javax.annotation.ParametersAreNonnullByDefault;
import java.util.List;
public class CreativeChargingStationBlockItem extends BlockItem { public class CreativeChargingStationBlockItem extends BlockItem {
public CreativeChargingStationBlockItem() { public CreativeChargingStationBlockItem() {
@ -19,4 +26,9 @@ public class CreativeChargingStationBlockItem extends BlockItem {
return energy; return energy;
} }
@Override
@ParametersAreNonnullByDefault
public void appendHoverText(ItemStack stack, TooltipContext context, List<Component> tooltipComponents, TooltipFlag tooltipFlag) {
tooltipComponents.add(Component.translatable("des.superbwarfare.creative_charging_station").withStyle(ChatFormatting.GRAY));
}
} }

View file

@ -0,0 +1,36 @@
package com.atsuishio.superbwarfare.network.message.send;
import com.atsuishio.superbwarfare.Mod;
import com.atsuishio.superbwarfare.menu.ChargingStationMenu;
import io.netty.buffer.ByteBuf;
import net.minecraft.network.codec.ByteBufCodecs;
import net.minecraft.network.codec.StreamCodec;
import net.minecraft.network.protocol.common.custom.CustomPacketPayload;
import net.neoforged.neoforge.network.handling.IPayloadContext;
import org.jetbrains.annotations.NotNull;
public record ShowChargingRangeMessage(boolean operation) implements CustomPacketPayload {
public static final Type<ShowChargingRangeMessage> TYPE = new Type<>(Mod.loc("show_charging_range"));
public static final StreamCodec<ByteBuf, ShowChargingRangeMessage> STREAM_CODEC = StreamCodec.composite(
ByteBufCodecs.BOOL,
ShowChargingRangeMessage::operation,
ShowChargingRangeMessage::new
);
public static void handler(ShowChargingRangeMessage message, final IPayloadContext context) {
var player = context.player();
var menu = player.containerMenu;
if (menu instanceof ChargingStationMenu chargingStationMenu) {
if (!chargingStationMenu.stillValid(player)) return;
chargingStationMenu.setShowRange(message.operation);
}
}
@Override
public @NotNull Type<? extends CustomPacketPayload> type() {
return TYPE;
}
}

View file

@ -235,10 +235,15 @@
"block.superbwarfare.silver_block": "Silver Block", "block.superbwarfare.silver_block": "Silver Block",
"block.superbwarfare.cemented_carbide_block": "Cemented Carbide Block", "block.superbwarfare.cemented_carbide_block": "Cemented Carbide Block",
"block.superbwarfare.charging_station": "Charging Station", "block.superbwarfare.charging_station": "Charging Station",
"des.superbwarfare.charging_station": "Charge nearby entities and adjacent blocks",
"container.superbwarfare.charging_station.show_range": "Show Range", "container.superbwarfare.charging_station.show_range": "Show Range",
"container.superbwarfare.charging_station.hide_range": "Hide Range", "container.superbwarfare.charging_station.hide_range": "Hide Range",
"des.superbwarfare.charging_station.energy": "Energy: %1$s / %2$s FE", "des.superbwarfare.charging_station.energy": "Energy: %1$s / %2$s FE",
"block.superbwarfare.creative_charging_station": "Creative Charging Station", "block.superbwarfare.creative_charging_station": "Creative Charging Station",
"des.superbwarfare.creative_charging_station": "Charge nearby entities and adjacent blocks, can also be used as a power source item",
"des.superbwarfare.creative_charging_station.charge.success": "Successfully charged this item!",
"des.superbwarfare.creative_charging_station.extract.success": "Successfully cleared energy from this item!",
"des.superbwarfare.creative_charging_station.fail": "Unable to operate this item!",
"block.superbwarfare.fumo_25": "FuMO25 Fire Control Radar", "block.superbwarfare.fumo_25": "FuMO25 Fire Control Radar",
"des.superbwarfare.fumo_25.current_pos": "Current Pos: %1$s", "des.superbwarfare.fumo_25.current_pos": "Current Pos: %1$s",
"des.superbwarfare.fumo_25.current_target": "Target: %1$s", "des.superbwarfare.fumo_25.current_target": "Target: %1$s",

View file

@ -235,8 +235,13 @@
"block.superbwarfare.cemented_carbide_block": "硬质合金块", "block.superbwarfare.cemented_carbide_block": "硬质合金块",
"block.superbwarfare.steel_block": "钢块", "block.superbwarfare.steel_block": "钢块",
"block.superbwarfare.charging_station": "充电站", "block.superbwarfare.charging_station": "充电站",
"des.superbwarfare.charging_station": "充能附近的实体和相邻方块",
"des.superbwarfare.charging_station.energy": "能量:%1$s / %2$s FE", "des.superbwarfare.charging_station.energy": "能量:%1$s / %2$s FE",
"block.superbwarfare.creative_charging_station": "创造模式充电站", "block.superbwarfare.creative_charging_station": "创造模式充电站",
"des.superbwarfare.creative_charging_station": "充能附近的实体和相邻方块,也可以作为电源物品使用",
"des.superbwarfare.creative_charging_station.charge.success": "成功充能该物品!",
"des.superbwarfare.creative_charging_station.extract.success": "成功清空该物品的能量!",
"des.superbwarfare.creative_charging_station.fail": "无法操作该物品!",
"block.superbwarfare.fumo_25": "FuMO25火控雷达", "block.superbwarfare.fumo_25": "FuMO25火控雷达",
"des.superbwarfare.fumo_25.current_pos": "当前坐标:%1$s", "des.superbwarfare.fumo_25.current_pos": "当前坐标:%1$s",
"des.superbwarfare.fumo_25.current_target": "目标:%1$s", "des.superbwarfare.fumo_25.current_target": "目标:%1$s",