Skip to content

Commit f15eccd

Browse files
committed
added new lift entity and fixed wrong networking identifier usage
1 parent e13ef05 commit f15eccd

File tree

8 files changed

+207
-3
lines changed

8 files changed

+207
-3
lines changed

src/main/java/net/shirojr/nemuelch/NeMuelchClient.java

+1
Original file line numberDiff line numberDiff line change
@@ -62,6 +62,7 @@ private static void registerBlockRendering() {
6262
private static void registerEntityRendering() {
6363
EntityRendererRegistry.register(NeMuelchEntities.DROP_POT, DropPotEntityRenderer::new);
6464
EntityRendererRegistry.register(NeMuelchEntities.POT_LAUNCHER, PotLauncherEntityRenderer::new);
65+
EntityRendererRegistry.register(NeMuelchEntities.LIFT_PLATFORM, LiftPlatformRenderer::new);
6566
EntityRendererRegistry.register(NeMuelchEntities.ONION, OnionRenderer::new);
6667
EntityRendererRegistry.register(NeMuelchEntities.ARKADUSCANE_PROJECTILE, ArkaduscaneProjectileEntityRenderer::new);
6768
EntityRendererRegistry.register(NeMuelchEntities.SLIME_ITEM, SlimeItemEntityRenderer::new);
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,89 @@
1+
package net.shirojr.nemuelch.entity.client;
2+
3+
import net.minecraft.client.model.*;
4+
import net.minecraft.client.render.RenderLayer;
5+
import net.minecraft.client.render.VertexConsumer;
6+
import net.minecraft.client.render.entity.model.SinglePartEntityModel;
7+
import net.minecraft.client.util.math.MatrixStack;
8+
import net.shirojr.nemuelch.entity.custom.LiftPlatformEntity;
9+
10+
public class LiftPlatformModel<T extends LiftPlatformEntity> extends SinglePartEntityModel<T> {
11+
private final ModelPart base, palette, planks, connectorPlanks, straps, diagonal, top, holder;
12+
13+
public LiftPlatformModel(ModelPart root) {
14+
super(RenderLayer::getEntityCutoutNoCull);
15+
this.base = root.getChild("base");
16+
this.palette = this.base.getChild("palette");
17+
this.connectorPlanks = this.palette.getChild("connector_planks");
18+
this.planks = this.palette.getChild("planks");
19+
this.straps = this.base.getChild("straps");
20+
this.diagonal = this.straps.getChild("diagonal");
21+
this.top = this.straps.getChild("top");
22+
this.holder = this.base.getChild("holder");
23+
}
24+
25+
@SuppressWarnings("unused")
26+
public static TexturedModelData getTexturedModelData() {
27+
ModelData modelData = new ModelData();
28+
ModelPartData modelPartData = modelData.getRoot();
29+
ModelPartData base = modelPartData.addChild("base", ModelPartBuilder.create(), ModelTransform.pivot(0.0F, 0.0F, 0.0F));
30+
31+
ModelPartData palette = base.addChild("palette", ModelPartBuilder.create(), ModelTransform.pivot(0.0F, 0.0F, 0.0F));
32+
33+
ModelPartData connectorPlanks = palette.addChild("connector_planks", ModelPartBuilder.create().uv(0, 0).cuboid(20.0F, 0.0F, -22.0F, 6.0F, 2.0F, 44.0F, new Dilation(0.0F))
34+
.uv(0, 0).cuboid(-2.0F, 0.0F, -22.0F, 6.0F, 2.0F, 44.0F, new Dilation(0.0F)), ModelTransform.pivot(-12.0F, 0.0F, 0.0F));
35+
36+
ModelPartData planks = palette.addChild("planks", ModelPartBuilder.create().uv(3, 49).cuboid(-16.0F, 0.0F, 39.0F, 32.0F, 2.0F, 6.0F, new Dilation(0.0F))
37+
.uv(3, 49).cuboid(-16.0F, 0.0F, 46.0F, 32.0F, 2.0F, 6.0F, new Dilation(0.0F))
38+
.uv(3, 49).mirrored().cuboid(-16.0F, 0.0F, 32.0F, 32.0F, 2.0F, 6.0F, new Dilation(0.0F)).mirrored(false)
39+
.uv(3, 49).mirrored().cuboid(-16.0F, 0.0F, 25.0F, 32.0F, 2.0F, 6.0F, new Dilation(0.0F)).mirrored(false)
40+
.uv(3, 49).cuboid(-16.0F, 0.0F, 4.0F, 32.0F, 2.0F, 6.0F, new Dilation(0.0F))
41+
.uv(3, 49).mirrored().cuboid(-16.0F, 0.0F, 11.0F, 32.0F, 2.0F, 6.0F, new Dilation(0.0F)).mirrored(false)
42+
.uv(3, 49).cuboid(-16.0F, 0.0F, 18.0F, 32.0F, 2.0F, 6.0F, new Dilation(0.0F)), ModelTransform.pivot(0.0F, 1.0F, -28.0F));
43+
44+
ModelPartData straps = base.addChild("straps", ModelPartBuilder.create(), ModelTransform.pivot(0.0F, -1.75F, 0.0F));
45+
46+
ModelPartData diagonal = straps.addChild("diagonal", ModelPartBuilder.create(), ModelTransform.pivot(-11.0F, 4.0F, 21.0F));
47+
48+
ModelPartData cube_r1 = diagonal.addChild("cube_r1", ModelPartBuilder.create().uv(2, 0).mirrored().cuboid(0.0F, -30.0F, -1.0F, 0.0F, 30.0F, 2.0F, new Dilation(0.0F)).mirrored(false), ModelTransform.of(23.5F, 21.75F, -22.0F, -2.3562F, 0.0F, 3.1416F));
49+
50+
ModelPartData cube_r2 = diagonal.addChild("cube_r2", ModelPartBuilder.create().uv(2, 0).cuboid(0.0F, -30.0F, -1.0F, 0.0F, 30.0F, 2.0F, new Dilation(0.0F)), ModelTransform.of(-1.5F, 21.75F, -22.0F, -2.3562F, 0.0F, -3.1416F));
51+
52+
ModelPartData cube_r3 = diagonal.addChild("cube_r3", ModelPartBuilder.create().uv(2, 0).cuboid(0.0F, -30.0F, -1.0F, 0.0F, 30.0F, 2.0F, new Dilation(0.0F)), ModelTransform.of(-1.5F, 21.75F, -20.0F, 0.7854F, 0.0F, 0.0F));
53+
54+
ModelPartData cube_r4 = diagonal.addChild("cube_r4", ModelPartBuilder.create().uv(2, 0).mirrored().cuboid(0.0F, -30.0F, -1.0F, 0.0F, 30.0F, 2.0F, new Dilation(0.0F)).mirrored(false), ModelTransform.of(23.5F, 21.75F, -20.0F, 0.7854F, 0.0F, 0.0F));
55+
56+
ModelPartData top = straps.addChild("top", ModelPartBuilder.create(), ModelTransform.pivot(0.0F, 0.0F, 0.0F));
57+
58+
ModelPartData cube_r5 = top.addChild("cube_r5", ModelPartBuilder.create().uv(15, 20).cuboid(-1.5F, -1.0F, -1.5F, 3.0F, 1.0F, 3.0F, new Dilation(0.0F)), ModelTransform.of(1.0F, 26.75F, 0.0F, 0.0F, -0.7854F, 1.5708F));
59+
60+
ModelPartData cube_r6 = top.addChild("cube_r6", ModelPartBuilder.create().uv(15, 20).mirrored().cuboid(-1.5F, -1.0F, -1.5F, 3.0F, 1.0F, 3.0F, new Dilation(0.0F)).mirrored(false), ModelTransform.of(-1.0F, 26.75F, 0.0F, 0.0F, 0.7854F, -1.5708F));
61+
62+
ModelPartData cube_r7 = top.addChild("cube_r7", ModelPartBuilder.create().uv(15, 20).mirrored().cuboid(-1.5F, -1.0F, -1.5F, 3.0F, 1.0F, 3.0F, new Dilation(0.0F)).mirrored(false), ModelTransform.of(-13.0F, 26.75F, 0.0F, 0.0F, 0.7854F, -1.5708F));
63+
64+
ModelPartData cube_r8 = top.addChild("cube_r8", ModelPartBuilder.create().uv(15, 20).cuboid(-1.5F, -1.0F, -1.5F, 3.0F, 1.0F, 3.0F, new Dilation(0.0F)), ModelTransform.of(13.0F, 26.75F, 0.0F, 0.0F, -0.7854F, 1.5708F));
65+
66+
ModelPartData cube_r9 = top.addChild("cube_r9", ModelPartBuilder.create().uv(3, 63).cuboid(-17.0F, -0.9571F, -0.9571F, 34.0F, 2.0F, 2.0F, new Dilation(0.0F)), ModelTransform.of(0.0F, 26.7071F, -0.0429F, -0.7854F, 0.0F, 0.0F));
67+
68+
ModelPartData holder = base.addChild("holder", ModelPartBuilder.create().uv(16, 16).cuboid(11.5F, 3.0F, -23.0F, 2.0F, 1.0F, 3.0F, new Dilation(0.0F))
69+
.uv(16, 16).cuboid(-13.5F, 3.0F, -23.0F, 2.0F, 1.0F, 3.0F, new Dilation(0.0F))
70+
.uv(16, 16).cuboid(-13.5F, 3.0F, 20.0F, 2.0F, 1.0F, 3.0F, new Dilation(0.0F))
71+
.uv(16, 16).cuboid(11.5F, 3.0F, 20.0F, 2.0F, 1.0F, 3.0F, new Dilation(0.0F)), ModelTransform.pivot(0.0F, 0.0F, 0.0F));
72+
return TexturedModelData.of(modelData, 256, 256);
73+
}
74+
75+
@Override
76+
public ModelPart getPart() {
77+
return this.base;
78+
}
79+
80+
@Override
81+
public void setAngles(T entity, float limbAngle, float limbDistance, float animationProgress, float headYaw, float headPitch) {
82+
83+
}
84+
85+
@Override
86+
public void render(MatrixStack matrices, VertexConsumer vertices, int light, int overlay, float red, float green, float blue, float alpha) {
87+
this.base.render(matrices, vertices, light, overlay, red, green, blue, alpha);
88+
}
89+
}
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,43 @@
1+
package net.shirojr.nemuelch.entity.client;
2+
3+
import net.minecraft.client.render.Frustum;
4+
import net.minecraft.client.render.OverlayTexture;
5+
import net.minecraft.client.render.VertexConsumer;
6+
import net.minecraft.client.render.VertexConsumerProvider;
7+
import net.minecraft.client.render.entity.EntityRenderer;
8+
import net.minecraft.client.render.entity.EntityRendererFactory;
9+
import net.minecraft.client.util.math.MatrixStack;
10+
import net.minecraft.util.Identifier;
11+
import net.shirojr.nemuelch.NeMuelch;
12+
import net.shirojr.nemuelch.entity.custom.LiftPlatformEntity;
13+
import net.shirojr.nemuelch.init.NeMuelchEntityModelLayers;
14+
15+
public class LiftPlatformRenderer extends EntityRenderer<LiftPlatformEntity> {
16+
private final LiftPlatformModel<LiftPlatformEntity> baseModel;
17+
18+
public LiftPlatformRenderer(EntityRendererFactory.Context ctx) {
19+
super(ctx);
20+
this.baseModel = new LiftPlatformModel<>(ctx.getPart(NeMuelchEntityModelLayers.LIFT_PLATFORM));
21+
}
22+
23+
@Override
24+
public Identifier getTexture(LiftPlatformEntity entity) {
25+
return new Identifier(NeMuelch.MOD_ID, "textures/entity/lift_platform.png");
26+
}
27+
28+
@Override
29+
public boolean shouldRender(LiftPlatformEntity entity, Frustum frustum, double x, double y, double z) {
30+
return true;
31+
}
32+
33+
@Override
34+
public void render(LiftPlatformEntity entity, float yaw, float tickDelta, MatrixStack matrices, VertexConsumerProvider vertexConsumers, int light) {
35+
matrices.push();
36+
// matrices.multiply(Vec3f.POSITIVE_Y.getDegreesQuaternion((entity.age + tickDelta) % 360));
37+
VertexConsumer vertexConsumer = vertexConsumers.getBuffer(this.baseModel.getLayer(getTexture(entity)));
38+
this.baseModel.render(matrices, vertexConsumer, light, OverlayTexture.DEFAULT_UV, 1.0F, 1.0F, 1.0F, 1.0F);
39+
40+
matrices.pop();
41+
super.render(entity, yaw, tickDelta, matrices, vertexConsumers, light);
42+
}
43+
}
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,65 @@
1+
package net.shirojr.nemuelch.entity.custom;
2+
3+
import net.minecraft.block.Block;
4+
import net.minecraft.entity.Entity;
5+
import net.minecraft.entity.EntityType;
6+
import net.minecraft.item.ItemStack;
7+
import net.minecraft.nbt.NbtCompound;
8+
import net.minecraft.network.Packet;
9+
import net.minecraft.network.packet.s2c.play.EntitySpawnS2CPacket;
10+
import net.minecraft.util.collection.DefaultedList;
11+
import net.minecraft.world.World;
12+
13+
import java.util.HashMap;
14+
15+
public class LiftPlatformEntity extends Entity {
16+
public final HashMap<DefaultedList<ItemStack>, Block> storedInventories = new HashMap<>();
17+
18+
public LiftPlatformEntity(EntityType<?> type, World world) {
19+
super(type, world);
20+
}
21+
22+
@Override
23+
protected void initDataTracker() {
24+
25+
}
26+
27+
@Override
28+
public boolean collidesWith(Entity other) {
29+
return canCollide(this, other);
30+
}
31+
32+
public static boolean canCollide(Entity entity, Entity other) {
33+
return (other.isCollidable() || other.isPushable()) && !entity.isConnectedThroughVehicle(other) && !entity.getType().equals(other.getType());
34+
}
35+
36+
@Override
37+
public boolean collides() {
38+
return true;
39+
}
40+
41+
@Override
42+
public boolean isCollidable() {
43+
return true;
44+
}
45+
46+
@Override
47+
public void onRemoved() {
48+
super.onRemoved();
49+
}
50+
51+
@Override
52+
protected void readCustomDataFromNbt(NbtCompound nbt) {
53+
54+
}
55+
56+
@Override
57+
protected void writeCustomDataToNbt(NbtCompound nbt) {
58+
59+
}
60+
61+
@Override
62+
public Packet<?> createSpawnPacket() {
63+
return new EntitySpawnS2CPacket(this);
64+
}
65+
}

src/main/java/net/shirojr/nemuelch/event/custom/SleepEvents.java

+1-2
Original file line numberDiff line numberDiff line change
@@ -35,7 +35,6 @@ public static void register() {
3535
EntitySleepEvents.START_SLEEPING.register((entity, sleepingPos) -> {
3636
if (entity instanceof ServerPlayerEntity player) {
3737
float delay = entity.getWorld().getRandom().nextFloat(10, 60);
38-
3938
PacketByteBuf buf = PacketByteBufs.create();
4039
buf.writeFloat(delay);
4140
buf.writeBlockPos(sleepingPos);
@@ -46,7 +45,7 @@ public static void register() {
4645
EntitySleepEvents.STOP_SLEEPING.register((entity, sleepingPos) -> {
4746
if (entity instanceof ServerPlayerEntity player) {
4847
PacketByteBuf buf = PacketByteBufs.create();
49-
ServerPlayNetworking.send(player, NetworkIdentifiers.SLEEP_EVENT_S2C, buf);
48+
ServerPlayNetworking.send(player, NetworkIdentifiers.CANCEL_SLEEP_EVENT_S2C, buf);
5049
}
5150
});
5251
}

src/main/java/net/shirojr/nemuelch/init/NeMuelchEntities.java

+5-1
Original file line numberDiff line numberDiff line change
@@ -6,6 +6,7 @@
66
import net.minecraft.util.Identifier;
77
import net.minecraft.util.registry.Registry;
88
import net.shirojr.nemuelch.NeMuelch;
9+
import net.shirojr.nemuelch.entity.custom.LiftPlatformEntity;
910
import net.shirojr.nemuelch.entity.custom.OnionEntity;
1011
import net.shirojr.nemuelch.entity.custom.PotLauncherEntity;
1112
import net.shirojr.nemuelch.entity.custom.projectile.ArkaduscaneProjectileEntity;
@@ -45,11 +46,14 @@ public class NeMuelchEntities {
4546
entityBuilder -> entityBuilder.dimensions(EntityDimensions.fixed(PotLauncherEntity.WIDTH, PotLauncherEntity.HEIGHT))
4647
);
4748

49+
public static EntityType<LiftPlatformEntity> LIFT_PLATFORM = register("lift_platform", SpawnGroup.MISC, LiftPlatformEntity::new,
50+
builder -> builder.dimensions(EntityDimensions.fixed(4.0f, 0.3f))
51+
);
52+
4853

4954
@SuppressWarnings("SameParameterValue")
5055
private static <T extends Entity> EntityType<T> register(String name, SpawnGroup spawnGroup, EntityType.EntityFactory<T> factory,
5156
Consumer<FabricEntityTypeBuilder<T>> builderConsumer) {
52-
5357
FabricEntityTypeBuilder<T> entityTypeBuilder = FabricEntityTypeBuilder.create(spawnGroup, factory);
5458
builderConsumer.accept(entityTypeBuilder);
5559
return Registry.register(Registry.ENTITY_TYPE, new Identifier(NeMuelch.MOD_ID, name), entityTypeBuilder.build());

src/main/java/net/shirojr/nemuelch/init/NeMuelchEntityModelLayers.java

+3
Original file line numberDiff line numberDiff line change
@@ -6,11 +6,14 @@
66
import net.minecraft.util.Identifier;
77
import net.shirojr.nemuelch.NeMuelch;
88
import net.shirojr.nemuelch.entity.client.DropPotEntityModel;
9+
import net.shirojr.nemuelch.entity.client.LiftPlatformModel;
910
import net.shirojr.nemuelch.entity.client.PotLauncherEntityModel;
1011

1112
public class NeMuelchEntityModelLayers {
1213
public static final EntityModelLayer DROP_POT = register("drop_pot_entity", DropPotEntityModel.getTexturedModelData());
1314
public static final EntityModelLayer POT_LAUNCHER = register("pot_launcher_entity", PotLauncherEntityModel.getTexturedModelData());
15+
public static final EntityModelLayer LIFT_PLATFORM = register("lift_platform_entity", LiftPlatformModel.getTexturedModelData());
16+
1417

1518
private static EntityModelLayer register(String name, TexturedModelData data) {
1619
EntityModelLayer layer = new EntityModelLayer(new Identifier(NeMuelch.MOD_ID, name), "main");
Loading

0 commit comments

Comments
 (0)