plane update and stuff

This commit is contained in:
2026-02-25 18:56:58 +01:00
parent 21f3acba86
commit 284cd1a547
12 changed files with 294 additions and 94 deletions

View File

@@ -6,7 +6,9 @@ import net.minecraft.client.render.*;
import net.minecraft.client.render.entity.*;
import net.minecraft.client.render.entity.model.EntityModelLayer;
import net.minecraft.client.util.math.MatrixStack;
import net.minecraft.entity.Entity;
import net.minecraft.util.Identifier;
import net.minecraft.util.math.RotationAxis;
public class PlaneEntityRenderer extends EntityRenderer<PlaneEntity> {
@@ -35,26 +37,48 @@ public class PlaneEntityRenderer extends EntityRenderer<PlaneEntity> {
int light
) {
matrices.push();
// Smooth interpolation of rotation
float interpolatedYaw = entity.prevYaw + (entity.getYaw() - entity.prevYaw) * tickDelta;
float interpolatedPitch = entity.prevPitch + (entity.getPitch() - entity.prevPitch) * tickDelta;
// Scale
matrices.scale(4.0F, 4.0F, 4.0F);
// Move model to correct pivot point
matrices.translate(0.0, 1.5, 0.0);
// Rotate to match hitbox exactly
matrices.multiply(RotationAxis.POSITIVE_Y.rotationDegrees(-interpolatedYaw));
matrices.multiply(RotationAxis.POSITIVE_X.rotationDegrees(interpolatedPitch));
// Rotate 180° to fix backwards-facing
matrices.multiply(RotationAxis.POSITIVE_Y.rotationDegrees(180.0F));
// Flip model upright (Minecraft model fix)
matrices.scale(-1.0F, -1.0F, 1.0F);
// Set model angles
model.setAngles(
entity,
0,
0,
entity.age + tickDelta,
0,
0
interpolatedYaw,
interpolatedPitch
);
VertexConsumer consumer =
vertices.getBuffer(RenderLayer.getEntityCutout(getTexture(entity)));
model.render(matrices, consumer, light, OverlayTexture.DEFAULT_UV,
1.0F, 1.0F, 1.0F, 1.0F);
model.render(
matrices,
consumer,
light,
OverlayTexture.DEFAULT_UV,
1.0F, 1.0F, 1.0F, 1.0F
);
matrices.pop();
super.render(entity, yaw, tickDelta, matrices, vertices, light);
}
}

View File

@@ -11,6 +11,7 @@ import net.fabricmc.fabric.api.client.networking.v1.ClientPlayNetworking;
import net.fabricmc.fabric.api.client.rendering.v1.EntityModelLayerRegistry;
import net.fabricmc.fabric.api.client.rendering.v1.EntityRendererRegistry;
import net.fabricmc.fabric.api.client.rendering.v1.HudRenderCallback;
import net.fabricmc.fabric.api.networking.v1.PacketByteBufs;
import net.fabricmc.fabric.api.object.builder.v1.client.model.FabricModelPredicateProviderRegistry;
import net.minecraft.client.MinecraftClient;
import net.minecraft.client.option.KeyBinding;
@@ -26,6 +27,7 @@ import net.minecraft.client.render.*;
import net.minecraft.client.world.ClientWorld;
import net.minecraft.entity.Entity;
import net.minecraft.item.ItemStack;
import net.minecraft.network.PacketByteBuf;
import net.minecraft.sound.SoundCategory;
import net.minecraft.sound.SoundEvent;
import net.minecraft.util.Identifier;
@@ -73,6 +75,18 @@ public class SzarClient implements ClientModInitializer {
int loopStart = startOffset + startLength;
@Override
public void onInitializeClient() {
ClientTickEvents.END_CLIENT_TICK.register(client -> {
if (client.player == null) return;
boolean forward = client.options.attackKey.isPressed();
boolean backward = client.options.useKey.isPressed();
PacketByteBuf buf = PacketByteBufs.create();
buf.writeBoolean(forward);
buf.writeBoolean(backward);
ClientPlayNetworking.send(PlayerMovementManager.PACKET_ID, buf);
});
ClientPlayNetworking.registerGlobalReceiver(SYNC_PACKET, (client, handler, buf, responseSender) -> {
// First read the player UUID
UUID playerUuid = buf.readUuid();