如题,我按照官方的教程在做一个方块实体时打算尝试制作一个容器,但是出现一个问题:
这个是代码:
复制代码出现的问题是:
请问怎么解决呢
这个是代码:
- package net.Star_Era.BlockEntity;
- import net.Star_Era.Inventories.ImplementedInventory;
- import net.Star_Era.api.Era_BlockEntity;
- import net.minecraft.block.BlockState;
- import net.minecraft.block.entity.BlockEntity;
- import net.minecraft.entity.player.PlayerEntity;
- import net.minecraft.entity.player.PlayerInventory;
- import net.minecraft.inventory.Inventories;
- import net.minecraft.item.ItemStack;
- import net.minecraft.nbt.NbtCompound;
- import net.minecraft.screen.NamedScreenHandlerFactory;
- import net.minecraft.screen.ScreenHandler;
- import net.minecraft.text.Text;
- import net.minecraft.text.TranslatableText;
- import net.minecraft.util.collection.DefaultedList;
- import net.minecraft.util.math.BlockPos;
- public class Storage_BinEntity extends BlockEntity implements NamedScreenHandlerFactory, ImplementedInventory {
- private final DefaultedList<ItemStack> inventory = DefaultedList.ofSize(27, ItemStack.EMPTY);
- public Storage_BinEntity(BlockPos pos, BlockState state) {
- super(Era_BlockEntity.STORAGE_BIN_ENTITY, pos, state);
- }
- @Override
- public DefaultedList<ItemStack> getItems() {
- return inventory;
- }
- //These Methods are from the NamedScreenHandlerFactory Interface
- //createMenu creates the ScreenHandler itself
- //getDisplayName will Provide its name which is normally shown at the top
- @Override
- public ScreenHandler createMenu(int syncId, PlayerInventory playerInventory, PlayerEntity player) {
- //We provide *this* to the screenHandler as our class Implements Inventory
- //Only the Server has the Inventory at the start, this will be synced to the client in the ScreenHandler
- return new Storage_BinScreenHandler(syncId, playerInventory, this);
- }
- @Override
- public Text getDisplayName() {
- return new TranslatableText(getCachedState().getBlock().getTranslationKey());
- }
- @Override
- public void readNbt(NbtCompound nbt) {
- super.readNbt(nbt);
- Inventories.readNbt(nbt, this.inventory);
- }
- @Override
- public <u><font color="Black">NbtCompound</font></u> writeNbt(NbtCompound nbt) {
- super.writeNbt(nbt);
- Inventories.writeNbt(nbt, this.inventory);
- return nbt;
- }
- }


请问怎么解决呢
我去翻了下yarn,这个父类方法的签名是void writeNbt(NbtCompound nbt)
你如果要重写父类方法,应该将重写方法的签名也改成void writeNbt(NbtCompound nbt)
如果要重载方法,应该让重载方法的形参与被重载方法有区别
你如果要重写父类方法,应该将重写方法的签名也改成void writeNbt(NbtCompound nbt)
如果要重载方法,应该让重载方法的形参与被重载方法有区别
Sunbread 发表于 2022-2-2 14:57
我去翻了下yarn,这个父类方法的签名是void writeNbt(NbtCompound nbt)
你如果要重写父类方法,应该将重写 ...

呃,主要是这个方法我在yarm那看过了,按照IDEA的修改方案改的,然后就是他不能返回值,导致如果我把return nbt去掉的话,容器在minecraft里就不能运行
356448356448356448356448356448
Minecraft_HT 发表于 2022-2-3 10:41
呃,主要是这个方法我在yarm那看过了,按照IDEA的修改方案改的,然后就是他不能返回值,导致如果我把ret ...
我不太明白你写这段的目的