Skip to content

Commit fd1d62c

Browse files
KaupenjoeKaupenjoe
authored andcommitted
crafting block entity
1 parent 14f6e2c commit fd1d62c

22 files changed

Lines changed: 508 additions & 2 deletions

File tree

src/generated/resources/.cache/413029547eff04357dd66df1ba8615b193c39dc3

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
// 1.21.1 2024-11-27T16:00:24.2456943 Block States: tutorialmod
1+
// 1.21.1 2025-03-02T13:32:59.6490414 Block States: tutorialmod
22
fc4b73d7d5429cd1c496b45459a243216fd5ce35 assets/tutorialmod/blockstates/bismuth_block.json
33
12833e7b89e5c0f2e9106085dcf9d9e11cf75b57 assets/tutorialmod/blockstates/bismuth_button.json
44
b4895c3f5396f7c4c029762f48f46f1369cf5748 assets/tutorialmod/blockstates/bismuth_deepslate_ore.json
@@ -20,6 +20,7 @@ a5684b332541303f689be2ab2e93be8d036d413e assets/tutorialmod/blockstates/bismuth_
2020
1f0f76351cc18e6be9204d2660e009554301d69c assets/tutorialmod/blockstates/bloodwood_sapling.json
2121
fefe189b831db8137b11ec7a8afd27b743ec6d05 assets/tutorialmod/blockstates/bloodwood_wood.json
2222
678ad5927264542f395cb4bb78bfff6e9cf51c27 assets/tutorialmod/blockstates/goji_berry_bush.json
23+
4115fbde62c46de50c9bdd4c5185774b7caa3744 assets/tutorialmod/blockstates/growth_chamber.json
2324
2d316979b5247b802b0590d94b40bac75fde6974 assets/tutorialmod/blockstates/magic_block.json
2425
369ff19f0ddd34b3501a422ca9ba6eee50c28c09 assets/tutorialmod/blockstates/radish_crop.json
2526
7dd30551d813f162772924280c020ca1cc01e1dd assets/tutorialmod/blockstates/stripped_bloodwood_log.json
@@ -71,6 +72,7 @@ e1e61688ca1f2feefaa0b0c185cccfd8a453578c assets/tutorialmod/models/block/bloodwo
7172
e93da9b475de64e8afb17566f8498c098af3c98a assets/tutorialmod/models/block/goji_berry_bush_stage1.json
7273
f0cb39d26a55b71b3d81dfb60e0b5e6a97d7242e assets/tutorialmod/models/block/goji_berry_bush_stage2.json
7374
78e06d5c1c0a01fe0d6e5583c7829a6f1d9efd5b assets/tutorialmod/models/block/goji_berry_bush_stage3.json
75+
cbb3bc31e1f24886a4fb63da2c924e96efc143b3 assets/tutorialmod/models/block/growth_chamber.json
7476
ed27aaa00c275028e1495bb6d6bfdcea1851067b assets/tutorialmod/models/block/magic_block.json
7577
31185a07fc2dc6f1371a066ffe41a03981a51692 assets/tutorialmod/models/block/radish_crop_stage0.json
7678
130f25109def058713c7d74bf283b7c097ae5425 assets/tutorialmod/models/block/radish_crop_stage1.json
@@ -95,6 +97,7 @@ dd4a645bc99c347acebb56246c637bf91b6cd81c assets/tutorialmod/models/item/bismuth_
9597
1f8bb7b86c2503131f02292893d331e0bfef90ee assets/tutorialmod/models/item/bloodwood_log.json
9698
591101ebb706f0ed4333349e8bd6b2eecd2f262e assets/tutorialmod/models/item/bloodwood_planks.json
9799
c8086309b2a1464b733893baee32144133e69d14 assets/tutorialmod/models/item/bloodwood_wood.json
100+
f68e1da70ddf5ed5d9ff551c1ed71028ce7c0907 assets/tutorialmod/models/item/growth_chamber.json
98101
db3c7fd404543728f8b989bee0ca68018dac6e79 assets/tutorialmod/models/item/magic_block.json
99102
e66c51a1dca784aeeac346150bf7dc79a5bebb3e assets/tutorialmod/models/item/stripped_bloodwood_log.json
100103
115e11183e95bd020de0fb4e315934647f972e07 assets/tutorialmod/models/item/stripped_bloodwood_wood.json

src/generated/resources/.cache/59eb3dbb5f86130e09b3c62d89b9525ee01cf52d

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
// 1.21.1 2025-02-10T16:33:41.540365 Loot Tables
1+
// 1.21.1 2025-03-02T13:32:59.6470412 Loot Tables
22
ea33c2a1e420da7916da2626364d946e161c2f6c data/tutorialmod/loot_table/blocks/bismuth_block.json
33
63b39624969e53a57f98de95c0d38077aa71266c data/tutorialmod/loot_table/blocks/bismuth_button.json
44
fd34a70d43389eb067a721582f8a89c3b58d29ab data/tutorialmod/loot_table/blocks/bismuth_deepslate_ore.json
@@ -21,6 +21,8 @@ a09dda360357f8df5b81eb30c6623c64e484211d data/tutorialmod/loot_table/blocks/bloo
2121
bbf7c75cbc8b681248065c223f0849db279d57ef data/tutorialmod/loot_table/blocks/bloodwood_wood.json
2222
b1b90ee2a4a3ed439bf88673d91b911796a43ba5 data/tutorialmod/loot_table/blocks/chair.json
2323
8f5d307b68f65f6c0465ccc6f5ebdaf06af8f461 data/tutorialmod/loot_table/blocks/goji_berry_bush.json
24+
4f1efb8da89a2838693b6df2a685fabebdd44d2b data/tutorialmod/loot_table/blocks/growth_chamber.json
25+
f86699c8dc14a6860f20848e86fb53f071baf9d5 data/tutorialmod/loot_table/blocks/pedestal.json
2426
36b9bcd239fc7b8ab4aeafcbd04a4e2528293936 data/tutorialmod/loot_table/blocks/radish_crop.json
2527
1481019b709527c870fc227a77f886a0a7a60f43 data/tutorialmod/loot_table/blocks/stripped_bloodwood_log.json
2628
c47b02b40ab3c810cc2ba8e8453e868a9d276828 data/tutorialmod/loot_table/blocks/stripped_bloodwood_wood.json
Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,7 @@
1+
{
2+
"variants": {
3+
"": {
4+
"model": "tutorialmod:block/growth_chamber"
5+
}
6+
}
7+
}
Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,6 @@
1+
{
2+
"parent": "minecraft:block/cube_all",
3+
"textures": {
4+
"all": "tutorialmod:block/growth_chamber"
5+
}
6+
}
Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,3 @@
1+
{
2+
"parent": "tutorialmod:block/growth_chamber"
3+
}
Lines changed: 21 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,21 @@
1+
{
2+
"type": "minecraft:block",
3+
"pools": [
4+
{
5+
"bonus_rolls": 0.0,
6+
"conditions": [
7+
{
8+
"condition": "minecraft:survives_explosion"
9+
}
10+
],
11+
"entries": [
12+
{
13+
"type": "minecraft:item",
14+
"name": "tutorialmod:growth_chamber"
15+
}
16+
],
17+
"rolls": 1.0
18+
}
19+
],
20+
"random_sequence": "tutorialmod:blocks/growth_chamber"
21+
}
Lines changed: 21 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,21 @@
1+
{
2+
"type": "minecraft:block",
3+
"pools": [
4+
{
5+
"bonus_rolls": 0.0,
6+
"conditions": [
7+
{
8+
"condition": "minecraft:survives_explosion"
9+
}
10+
],
11+
"entries": [
12+
{
13+
"type": "minecraft:item",
14+
"name": "tutorialmod:pedestal"
15+
}
16+
],
17+
"rolls": 1.0
18+
}
19+
],
20+
"random_sequence": "tutorialmod:blocks/pedestal"
21+
}

src/main/java/net/kaupenjoe/tutorialmod/TutorialMod.java

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -17,6 +17,7 @@
1717
import net.kaupenjoe.tutorialmod.particle.ModParticles;
1818
import net.kaupenjoe.tutorialmod.potion.ModPotions;
1919
import net.kaupenjoe.tutorialmod.screen.ModMenuTypes;
20+
import net.kaupenjoe.tutorialmod.screen.custom.GrowthChamberScreen;
2021
import net.kaupenjoe.tutorialmod.screen.custom.PedestalScreen;
2122
import net.kaupenjoe.tutorialmod.sound.ModSounds;
2223
import net.kaupenjoe.tutorialmod.util.ModItemProperties;
@@ -137,6 +138,7 @@ public static void registerBER(EntityRenderersEvent.RegisterRenderers event) {
137138
@SubscribeEvent
138139
public static void registerScreens(RegisterMenuScreensEvent event) {
139140
event.register(ModMenuTypes.PEDESTAL_MENU.get(), PedestalScreen::new);
141+
event.register(ModMenuTypes.GROWTH_CHAMBER_MENU.get(), GrowthChamberScreen::new);
140142
}
141143
}
142144
}

src/main/java/net/kaupenjoe/tutorialmod/block/ModBlocks.java

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -136,6 +136,9 @@ public int getFireSpreadSpeed(BlockState state, BlockGetter level, BlockPos pos,
136136
public static final DeferredBlock<Block> PEDESTAL = registerBlock("pedestal",
137137
() -> new PedestalBlock(BlockBehaviour.Properties.of().noOcclusion()));
138138

139+
public static final DeferredBlock<Block> GROWTH_CHAMBER = registerBlock("growth_chamber",
140+
() -> new GrowthChamberBlock(BlockBehaviour.Properties.of()));
141+
139142

140143
private static <T extends Block> DeferredBlock<T> registerBlock(String name, Supplier<T> block) {
141144
DeferredBlock<T> toReturn = BLOCKS.register(name, block);
Lines changed: 84 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,84 @@
1+
package net.kaupenjoe.tutorialmod.block.custom;
2+
3+
import com.mojang.serialization.MapCodec;
4+
import net.kaupenjoe.tutorialmod.block.entity.GrowthChamberBlockEntity;
5+
import net.kaupenjoe.tutorialmod.block.entity.ModBlockEntities;
6+
import net.minecraft.core.BlockPos;
7+
import net.minecraft.network.chat.Component;
8+
import net.minecraft.server.level.ServerPlayer;
9+
import net.minecraft.world.InteractionHand;
10+
import net.minecraft.world.ItemInteractionResult;
11+
import net.minecraft.world.SimpleMenuProvider;
12+
import net.minecraft.world.entity.player.Player;
13+
import net.minecraft.world.item.ItemStack;
14+
import net.minecraft.world.level.Level;
15+
import net.minecraft.world.level.block.BaseEntityBlock;
16+
import net.minecraft.world.level.block.RenderShape;
17+
import net.minecraft.world.level.block.entity.BlockEntity;
18+
import net.minecraft.world.level.block.entity.BlockEntityTicker;
19+
import net.minecraft.world.level.block.entity.BlockEntityType;
20+
import net.minecraft.world.level.block.state.BlockState;
21+
import net.minecraft.world.phys.BlockHitResult;
22+
import org.jetbrains.annotations.Nullable;
23+
24+
public class GrowthChamberBlock extends BaseEntityBlock {
25+
public static final MapCodec<GrowthChamberBlock> CODEC = simpleCodec(GrowthChamberBlock::new);
26+
27+
public GrowthChamberBlock(Properties properties) {
28+
super(properties);
29+
}
30+
31+
@Override
32+
protected MapCodec<? extends BaseEntityBlock> codec() {
33+
return CODEC;
34+
}
35+
36+
@Nullable
37+
@Override
38+
public BlockEntity newBlockEntity(BlockPos blockPos, BlockState blockState) {
39+
return new GrowthChamberBlockEntity(blockPos, blockState);
40+
}
41+
42+
@Override
43+
protected RenderShape getRenderShape(BlockState state) {
44+
return RenderShape.MODEL;
45+
}
46+
47+
@Override
48+
public void onRemove(BlockState pState, Level pLevel, BlockPos pPos, BlockState pNewState, boolean pIsMoving) {
49+
if (pState.getBlock() != pNewState.getBlock()) {
50+
BlockEntity blockEntity = pLevel.getBlockEntity(pPos);
51+
if (blockEntity instanceof GrowthChamberBlockEntity growthChamberBlockEntity) {
52+
growthChamberBlockEntity.drops();
53+
}
54+
}
55+
56+
super.onRemove(pState, pLevel, pPos, pNewState, pIsMoving);
57+
}
58+
59+
@Override
60+
protected ItemInteractionResult useItemOn(ItemStack pStack, BlockState pState, Level pLevel, BlockPos pPos,
61+
Player pPlayer, InteractionHand pHand, BlockHitResult pHitResult) {
62+
if (!pLevel.isClientSide()) {
63+
BlockEntity entity = pLevel.getBlockEntity(pPos);
64+
if(entity instanceof GrowthChamberBlockEntity growthChamberBlockEntity) {
65+
((ServerPlayer) pPlayer).openMenu(new SimpleMenuProvider(growthChamberBlockEntity, Component.literal("Growth Chamber")), pPos);
66+
} else {
67+
throw new IllegalStateException("Our Container provider is missing!");
68+
}
69+
}
70+
71+
return ItemInteractionResult.sidedSuccess(pLevel.isClientSide());
72+
}
73+
74+
@Nullable
75+
@Override
76+
public <T extends BlockEntity> BlockEntityTicker<T> getTicker(Level level, BlockState state, BlockEntityType<T> blockEntityType) {
77+
if(level.isClientSide()) {
78+
return null;
79+
}
80+
81+
return createTickerHelper(blockEntityType, ModBlockEntities.GROWTH_CHAMBER_BE.get(),
82+
(level1, blockPos, blockState, blockEntity) -> blockEntity.tick(level1, blockPos, blockState));
83+
}
84+
}

0 commit comments

Comments
 (0)