Skip to content

Commit 5921f3b

Browse files
KaupenjoeKaupenjoe
authored andcommitted
sittable block
1 parent 020fdc2 commit 5921f3b

5 files changed

Lines changed: 96 additions & 4 deletions

File tree

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

Lines changed: 3 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -6,10 +6,7 @@
66
import net.fabricmc.fabric.api.client.rendering.v1.EntityRendererRegistry;
77
import net.kaupenjoe.tutorialmod.block.ModBlocks;
88
import net.kaupenjoe.tutorialmod.entity.ModEntities;
9-
import net.kaupenjoe.tutorialmod.entity.client.MantisModel;
10-
import net.kaupenjoe.tutorialmod.entity.client.MantisRenderer;
11-
import net.kaupenjoe.tutorialmod.entity.client.TomahawkProjectileModel;
12-
import net.kaupenjoe.tutorialmod.entity.client.TomahawkProjectileRenderer;
9+
import net.kaupenjoe.tutorialmod.entity.client.*;
1310
import net.kaupenjoe.tutorialmod.util.ModModelPredicates;
1411
import net.minecraft.client.render.RenderLayer;
1512

@@ -31,5 +28,7 @@ public void onInitializeClient() {
3128

3229
EntityModelLayerRegistry.registerModelLayer(TomahawkProjectileModel.TOMAHAWK, TomahawkProjectileModel::getTexturedModelData);
3330
EntityRendererRegistry.register(ModEntities.TOMAHAWK, TomahawkProjectileRenderer::new);
31+
32+
EntityRendererRegistry.register(ModEntities.CHAIR, ChairRenderer::new);
3433
}
3534
}

src/main/java/net/kaupenjoe/tutorialmod/block/custom/ChairBlock.java

Lines changed: 29 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,17 +1,29 @@
11
package net.kaupenjoe.tutorialmod.block.custom;
22

33
import com.mojang.serialization.MapCodec;
4+
import net.kaupenjoe.tutorialmod.entity.ModEntities;
5+
import net.kaupenjoe.tutorialmod.entity.custom.ChairEntity;
46
import net.minecraft.block.Block;
57
import net.minecraft.block.BlockState;
68
import net.minecraft.block.HorizontalFacingBlock;
79
import net.minecraft.block.ShapeContext;
10+
import net.minecraft.entity.Entity;
11+
import net.minecraft.entity.SpawnReason;
12+
import net.minecraft.entity.player.PlayerEntity;
813
import net.minecraft.item.ItemPlacementContext;
14+
import net.minecraft.server.world.ServerWorld;
915
import net.minecraft.state.StateManager;
16+
import net.minecraft.util.ActionResult;
17+
import net.minecraft.util.hit.BlockHitResult;
1018
import net.minecraft.util.math.BlockPos;
19+
import net.minecraft.util.math.Box;
1120
import net.minecraft.util.shape.VoxelShape;
1221
import net.minecraft.world.BlockView;
22+
import net.minecraft.world.World;
1323
import org.jetbrains.annotations.Nullable;
1424

25+
import java.util.List;
26+
1527
public class ChairBlock extends HorizontalFacingBlock {
1628
public static final MapCodec<ChairBlock> CODEC = createCodec(ChairBlock::new);
1729
private static final VoxelShape SHAPE = Block.createCuboidShape(3.0, 0.0, 3.0, 13.0, 16.0, 13.0);
@@ -20,6 +32,23 @@ public ChairBlock(Settings settings) {
2032
super(settings);
2133
}
2234

35+
@Override
36+
public ActionResult onUse(BlockState state, World world, BlockPos pos, PlayerEntity player, BlockHitResult hit) {
37+
if(!world.isClient()) {
38+
Entity entity = null;
39+
List<ChairEntity> entities = world.getEntitiesByType(ModEntities.CHAIR, new Box(pos), chair -> true);
40+
if(entities.isEmpty()) {
41+
entity = ModEntities.CHAIR.spawn((ServerWorld) world, pos, SpawnReason.TRIGGERED);
42+
} else {
43+
entity = entities.get(0);
44+
}
45+
46+
player.startRiding(entity);
47+
}
48+
49+
return ActionResult.SUCCESS;
50+
}
51+
2352
@Override
2453
protected VoxelShape getOutlineShape(BlockState state, BlockView world, BlockPos pos, ShapeContext context) {
2554
return SHAPE;

src/main/java/net/kaupenjoe/tutorialmod/entity/ModEntities.java

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,7 @@
11
package net.kaupenjoe.tutorialmod.entity;
22

33
import net.kaupenjoe.tutorialmod.TutorialMod;
4+
import net.kaupenjoe.tutorialmod.entity.custom.ChairEntity;
45
import net.kaupenjoe.tutorialmod.entity.custom.MantisEntity;
56
import net.kaupenjoe.tutorialmod.entity.custom.TomahawkProjectileEntity;
67
import net.minecraft.entity.EntityType;
@@ -20,6 +21,12 @@ public class ModEntities {
2021
EntityType.Builder.<TomahawkProjectileEntity>create(TomahawkProjectileEntity::new, SpawnGroup.MISC)
2122
.dimensions(0.5f, 1.15f).build());
2223

24+
public static final EntityType<ChairEntity> CHAIR = Registry.register(Registries.ENTITY_TYPE,
25+
Identifier.of(TutorialMod.MOD_ID, "chair_entity"),
26+
EntityType.Builder.create(ChairEntity::new, SpawnGroup.MISC)
27+
.dimensions(0.5f, 0.5f).build());
28+
29+
2330

2431
public static void registerModEntities() {
2532
TutorialMod.LOGGER.info("Registering Mod Entities for " + TutorialMod.MOD_ID);
Lines changed: 23 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,23 @@
1+
package net.kaupenjoe.tutorialmod.entity.client;
2+
3+
import net.kaupenjoe.tutorialmod.entity.custom.ChairEntity;
4+
import net.minecraft.client.render.Frustum;
5+
import net.minecraft.client.render.entity.EntityRenderer;
6+
import net.minecraft.client.render.entity.EntityRendererFactory;
7+
import net.minecraft.util.Identifier;
8+
9+
public class ChairRenderer extends EntityRenderer<ChairEntity> {
10+
public ChairRenderer(EntityRendererFactory.Context ctx) {
11+
super(ctx);
12+
}
13+
14+
@Override
15+
public Identifier getTexture(ChairEntity entity) {
16+
return null;
17+
}
18+
19+
@Override
20+
public boolean shouldRender(ChairEntity entity, Frustum frustum, double x, double y, double z) {
21+
return true;
22+
}
23+
}
Lines changed: 34 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,34 @@
1+
package net.kaupenjoe.tutorialmod.entity.custom;
2+
3+
import net.minecraft.entity.Entity;
4+
import net.minecraft.entity.EntityType;
5+
import net.minecraft.entity.data.DataTracker;
6+
import net.minecraft.nbt.NbtCompound;
7+
import net.minecraft.world.World;
8+
9+
public class ChairEntity extends Entity {
10+
public ChairEntity(EntityType<?> type, World world) {
11+
super(type, world);
12+
}
13+
14+
@Override
15+
protected void initDataTracker(DataTracker.Builder builder) {
16+
17+
}
18+
19+
@Override
20+
protected void readCustomDataFromNbt(NbtCompound nbt) {
21+
22+
}
23+
24+
@Override
25+
protected void writeCustomDataToNbt(NbtCompound nbt) {
26+
27+
}
28+
29+
@Override
30+
protected void removePassenger(Entity passenger) {
31+
super.removePassenger(passenger);
32+
this.kill();
33+
}
34+
}

0 commit comments

Comments
 (0)