增强充电站功能
This commit is contained in:
parent
52a342541b
commit
44d33495db
11 changed files with 257 additions and 14 deletions
|
@ -3,8 +3,15 @@ package com.atsuishio.superbwarfare.block;
|
|||
import com.atsuishio.superbwarfare.block.entity.CreativeChargingStationBlockEntity;
|
||||
import com.atsuishio.superbwarfare.init.ModBlockEntities;
|
||||
import com.mojang.serialization.MapCodec;
|
||||
import net.minecraft.ChatFormatting;
|
||||
import net.minecraft.core.BlockPos;
|
||||
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.level.Level;
|
||||
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.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 net.neoforged.neoforge.capabilities.Capabilities;
|
||||
import org.jetbrains.annotations.NotNull;
|
||||
import org.jetbrains.annotations.Nullable;
|
||||
|
||||
|
@ -23,9 +33,11 @@ import javax.annotation.ParametersAreNonnullByDefault;
|
|||
public class CreativeChargingStationBlock extends BaseEntityBlock {
|
||||
|
||||
public static final DirectionProperty FACING = HorizontalDirectionalBlock.FACING;
|
||||
public static final BooleanProperty SHOW_RANGE = BooleanProperty.create("show_range");
|
||||
|
||||
public CreativeChargingStationBlock() {
|
||||
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) {
|
||||
|
@ -76,14 +88,57 @@ public class CreativeChargingStationBlock extends BaseEntityBlock {
|
|||
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
|
||||
protected void createBlockStateDefinition(StateDefinition.Builder<Block, BlockState> 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);
|
||||
}
|
||||
}
|
||||
|
|
|
@ -4,6 +4,11 @@ import com.atsuishio.superbwarfare.capability.energy.InfinityEnergyStorage;
|
|||
import com.atsuishio.superbwarfare.init.ModBlockEntities;
|
||||
import net.minecraft.core.BlockPos;
|
||||
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.world.entity.Entity;
|
||||
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.neoforged.neoforge.capabilities.Capabilities;
|
||||
import net.neoforged.neoforge.energy.IEnergyStorage;
|
||||
import org.jetbrains.annotations.NotNull;
|
||||
import org.jetbrains.annotations.Nullable;
|
||||
|
||||
import javax.annotation.ParametersAreNonnullByDefault;
|
||||
import java.util.List;
|
||||
|
||||
/**
|
||||
|
@ -22,6 +29,27 @@ public class CreativeChargingStationBlockEntity extends BlockEntity {
|
|||
|
||||
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) {
|
||||
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();
|
||||
|
||||
@Nullable
|
||||
|
|
|
@ -1,9 +1,6 @@
|
|||
package com.atsuishio.superbwarfare.client;
|
||||
|
||||
import com.atsuishio.superbwarfare.client.renderer.block.ChargingStationBlockEntityRenderer;
|
||||
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.renderer.block.*;
|
||||
import com.atsuishio.superbwarfare.client.tooltip.*;
|
||||
import com.atsuishio.superbwarfare.client.tooltip.component.*;
|
||||
import com.atsuishio.superbwarfare.init.ModBlockEntities;
|
||||
|
@ -34,6 +31,7 @@ public class ClientRenderHandler {
|
|||
event.registerBlockEntityRenderer(ModBlockEntities.CONTAINER.get(), context -> new ContainerBlockEntityRenderer());
|
||||
event.registerBlockEntityRenderer(ModBlockEntities.FUMO_25.get(), context -> new FuMO25BlockEntityRenderer());
|
||||
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());
|
||||
}
|
||||
}
|
||||
|
|
|
@ -18,7 +18,7 @@ import javax.annotation.ParametersAreNonnullByDefault;
|
|||
public class ChargingStationBlockEntityRenderer implements BlockEntityRenderer<ChargingStationBlockEntity> {
|
||||
|
||||
@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;
|
||||
|
||||
poseStack.pushPose();
|
||||
|
|
|
@ -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;
|
||||
}
|
||||
|
||||
}
|
|
@ -3,6 +3,7 @@ package com.atsuishio.superbwarfare.client.screens;
|
|||
import com.atsuishio.superbwarfare.Mod;
|
||||
import com.atsuishio.superbwarfare.block.entity.ChargingStationBlockEntity;
|
||||
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.components.AbstractButton;
|
||||
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.neoforged.api.distmarker.Dist;
|
||||
import net.neoforged.api.distmarker.OnlyIn;
|
||||
import net.neoforged.neoforge.network.PacketDistributor;
|
||||
import org.jetbrains.annotations.NotNull;
|
||||
|
||||
import java.util.ArrayList;
|
||||
|
@ -91,8 +93,7 @@ public class ChargingStationScreen extends AbstractContainerScreen<ChargingStati
|
|||
|
||||
@Override
|
||||
public void onPress() {
|
||||
// TODO show range message
|
||||
// PacketDistributor.sendToServer(new ShowChargingRangeMessage(!ChargingStationScreen.this.menu.showRange()));
|
||||
PacketDistributor.sendToServer(new ShowChargingRangeMessage(!ChargingStationScreen.this.menu.showRange()));
|
||||
}
|
||||
|
||||
@Override
|
||||
|
|
|
@ -2,13 +2,18 @@ package com.atsuishio.superbwarfare.item;
|
|||
|
||||
import com.atsuishio.superbwarfare.client.tooltip.component.ChargingStationImageComponent;
|
||||
import com.atsuishio.superbwarfare.init.ModBlocks;
|
||||
import net.minecraft.ChatFormatting;
|
||||
import net.minecraft.core.component.DataComponents;
|
||||
import net.minecraft.nbt.CompoundTag;
|
||||
import net.minecraft.network.chat.Component;
|
||||
import net.minecraft.world.inventory.tooltip.TooltipComponent;
|
||||
import net.minecraft.world.item.BlockItem;
|
||||
import net.minecraft.world.item.ItemStack;
|
||||
import net.minecraft.world.item.TooltipFlag;
|
||||
import org.jetbrains.annotations.NotNull;
|
||||
|
||||
import javax.annotation.ParametersAreNonnullByDefault;
|
||||
import java.util.List;
|
||||
import java.util.Optional;
|
||||
|
||||
public class ChargingStationBlockItem extends BlockItem {
|
||||
|
@ -44,4 +49,10 @@ public class ChargingStationBlockItem extends BlockItem {
|
|||
public @NotNull Optional<TooltipComponent> getTooltipImage(@NotNull ItemStack 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));
|
||||
}
|
||||
}
|
||||
|
|
|
@ -2,11 +2,18 @@ package com.atsuishio.superbwarfare.item;
|
|||
|
||||
import com.atsuishio.superbwarfare.capability.energy.InfinityEnergyStorage;
|
||||
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.ItemStack;
|
||||
import net.minecraft.world.item.Rarity;
|
||||
import net.minecraft.world.item.TooltipFlag;
|
||||
import net.neoforged.neoforge.energy.IEnergyStorage;
|
||||
import org.jetbrains.annotations.Nullable;
|
||||
|
||||
import javax.annotation.ParametersAreNonnullByDefault;
|
||||
import java.util.List;
|
||||
|
||||
public class CreativeChargingStationBlockItem extends BlockItem {
|
||||
|
||||
public CreativeChargingStationBlockItem() {
|
||||
|
@ -19,4 +26,9 @@ public class CreativeChargingStationBlockItem extends BlockItem {
|
|||
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));
|
||||
}
|
||||
}
|
||||
|
|
|
@ -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;
|
||||
}
|
||||
}
|
|
@ -235,10 +235,15 @@
|
|||
"block.superbwarfare.silver_block": "Silver Block",
|
||||
"block.superbwarfare.cemented_carbide_block": "Cemented Carbide Block",
|
||||
"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.hide_range": "Hide Range",
|
||||
"des.superbwarfare.charging_station.energy": "Energy: %1$s / %2$s FE",
|
||||
"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",
|
||||
"des.superbwarfare.fumo_25.current_pos": "Current Pos: %1$s",
|
||||
"des.superbwarfare.fumo_25.current_target": "Target: %1$s",
|
||||
|
|
|
@ -235,8 +235,13 @@
|
|||
"block.superbwarfare.cemented_carbide_block": "硬质合金块",
|
||||
"block.superbwarfare.steel_block": "钢块",
|
||||
"block.superbwarfare.charging_station": "充电站",
|
||||
"des.superbwarfare.charging_station": "充能附近的实体和相邻方块",
|
||||
"des.superbwarfare.charging_station.energy": "能量:%1$s / %2$s FE",
|
||||
"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火控雷达",
|
||||
"des.superbwarfare.fumo_25.current_pos": "当前坐标:%1$s",
|
||||
"des.superbwarfare.fumo_25.current_target": "目标:%1$s",
|
||||
|
|
Loading…
Add table
Reference in a new issue