tutorial:screenhandler
Differences
This shows you the differences between two versions of the page.
Both sides previous revisionPrevious revisionNext revision | Previous revisionNext revisionBoth sides next revision | ||
tutorial:screenhandler [2020/08/15 19:45] – technici4n | tutorial:screenhandler [2021/06/17 12:24] – Update to 1.17 redgrapefruit | ||
---|---|---|---|
Line 1: | Line 1: | ||
- | ====== Creating a Container Block (DRAFT) (NEW) ====== | + | ====== Creating a Container Block====== |
In this tutorial we will create simple storage block similar to a dispenser, explaining how to build a user interface with the '' | In this tutorial we will create simple storage block similar to a dispenser, explaining how to build a user interface with the '' | ||
Line 23: | Line 23: | ||
@Override | @Override | ||
- | public BlockEntity createBlockEntity(BlockView world) { | + | public BlockEntity createBlockEntity(BlockPos pos, BlockState state) { |
- | return new BoxBlockEntity(); | + | return new BoxBlockEntity(pos, state); |
} | } | ||
Line 36: | Line 36: | ||
public ActionResult onUse(BlockState state, World world, BlockPos pos, PlayerEntity player, Hand hand, BlockHitResult hit) { | public ActionResult onUse(BlockState state, World world, BlockPos pos, PlayerEntity player, Hand hand, BlockHitResult hit) { | ||
if (!world.isClient) { | if (!world.isClient) { | ||
- | //This will call the createScreenHandlerFactory method from blockWithEntity, which will return our blockEntity casted | + | //This will call the createScreenHandlerFactory method from BlockWithEntity, which will return our blockEntity casted |
- | //to a namedScreenHandlerFactory | + | //a namedScreenHandlerFactory. If your block class does not extend BlockWithEntity, |
NamedScreenHandlerFactory screenHandlerFactory = state.createScreenHandlerFactory(world, | NamedScreenHandlerFactory screenHandlerFactory = state.createScreenHandlerFactory(world, | ||
Line 70: | Line 70: | ||
@Override | @Override | ||
public int getComparatorOutput(BlockState state, World world, BlockPos pos) { | public int getComparatorOutput(BlockState state, World world, BlockPos pos) { | ||
- | return ScreenHandler.calculateComparatorOutput(world.getBlockEntity(pos)) | + | return ScreenHandler.calculateComparatorOutput(world.getBlockEntity(pos)); |
} | } | ||
} | } | ||
Line 81: | Line 81: | ||
private final DefaultedList< | private final DefaultedList< | ||
- | public BoxBlockEntity() { | + | public BoxBlockEntity(BlockPos pos, BlockState state) { |
- | super(ExampleMod.BOX_BLOCK_ENTITY); | + | super(ExampleMod.BOX_BLOCK_ENTITY, pos, state); |
} | } | ||
Line 111: | Line 111: | ||
| | ||
@Override | @Override | ||
- | public void fromTag(BlockState state, CompoundTag tag) { | + | public void readNbt(NbtCompound nbt) { |
- | super.fromTag(state, tag); | + | super.readNbt(nbt); |
- | inventory = DefaultedList.ofSize(invsize, | + | Inventories.readNbt(nbt, this.inventory); |
- | Inventories.fromTag(tag, this.inventory); | + | |
} | } | ||
@Override | @Override | ||
- | public | + | public |
- | super.toTag(tag); | + | super.writeNbt(nbt); |
- | Inventories.toTag(tag, this.inventory); | + | Inventories.writeNbt(nbt, this.inventory); |
- | return | + | return |
} | } | ||
} | } | ||
Line 251: | Line 250: | ||
@Override | @Override | ||
protected void drawBackground(MatrixStack matrices, float delta, int mouseX, int mouseY) { | protected void drawBackground(MatrixStack matrices, float delta, int mouseX, int mouseY) { | ||
- | RenderSystem.color4f(1.0F, 1.0F, 1.0F, 1.0F); | + | RenderSystem.setShader(GameRenderer:: |
- | | + | RenderSystem.setShaderColor(1.0F, 1.0F, 1.0F, 1.0F); |
+ | | ||
int x = (width - backgroundWidth) / 2; | int x = (width - backgroundWidth) / 2; | ||
int y = (height - backgroundHeight) / 2; | int y = (height - backgroundHeight) / 2; | ||
Line 289: | Line 289: | ||
} | } | ||
+ | </ | ||
+ | |||
+ | Don't forget to register this entrypoint in '' | ||
+ | <code json> | ||
+ | /* ... */ | ||
+ | " | ||
+ | /* ... */ | ||
+ | " | ||
+ | " | ||
+ | ] | ||
+ | }, | ||
</ | </ | ||
tutorial/screenhandler.txt · Last modified: 2024/02/19 02:51 by netuserget