some tomfoolery with rendering entities

This commit is contained in:
Halbear
2026-05-18 20:52:09 +01:00
parent bd5f58d9b7
commit d2c4776998
13 changed files with 3895 additions and 10 deletions
@@ -17,6 +17,7 @@ import net.minecraft.block.Block;
import studio.halbear.hem_custom.registry.ModEntities;
import studio.halbear.hem_custom.registry.ModStatics;
import studio.halbear.hem_custom.vehicles.Renderer.AeroplaneRenderer;
import studio.halbear.hem_custom.vehicles.Renderer.AirboatRenderer;
@Mod.EventBusSubscriber(modid = ModStatics.MOD_ID, bus = Mod.EventBusSubscriber.Bus.MOD, value = Dist.CLIENT)
public class ClientEventHandler {
@@ -30,5 +31,6 @@ public class ClientEventHandler {
@SubscribeEvent
public static void init(final FMLClientSetupEvent event) {
RenderingRegistry.registerEntityRenderingHandler(ModEntities.AEROPLANE, AeroplaneRenderer::new);
RenderingRegistry.registerEntityRenderingHandler(ModEntities.AIRBOAT, AirboatRenderer::new);
}
}
@@ -8,19 +8,26 @@ import net.minecraftforge.event.entity.EntityAttributeCreationEvent;
import net.minecraftforge.eventbus.api.SubscribeEvent;
import net.minecraftforge.fml.common.Mod;
import studio.halbear.hem_custom.vehicles.Entity.Aeroplane;
import studio.halbear.hem_custom.vehicles.Entity.Airboat;
@Mod.EventBusSubscriber(modid = "hem", bus = Mod.EventBusSubscriber.Bus.MOD)
public class ModEntities {
public static final EntityType<Aeroplane> AEROPLANE = null;
public static EntityType<Aeroplane> AEROPLANE;
public static EntityType<Airboat> AIRBOAT;
@SubscribeEvent
public static void registerEntities(final RegistryEvent.Register<EntityType<?>> event) {
EntityType<Aeroplane> entity = EntityType.Builder.create(Aeroplane::new, EntityClassification.MISC)
AEROPLANE = EntityType.Builder.create(Aeroplane::new, EntityClassification.MISC)
.size(2, 1.5F).build(new ResourceLocation(ModStatics.MOD_ID, "aeroplane").toString());
entity.setRegistryName(new ResourceLocation(ModStatics.MOD_ID, "aeroplane"));
event.getRegistry().register(entity);
AEROPLANE.setRegistryName(new ResourceLocation("hem", "aeroplane"));
event.getRegistry().register(AEROPLANE);
AIRBOAT = EntityType.Builder.create(Airboat::new, EntityClassification.MISC)
.size(7, 12F).build(new ResourceLocation(ModStatics.MOD_ID, "new_airboat").toString());
AIRBOAT.setRegistryName(new ResourceLocation("hem", "new_airboat"));
event.getRegistry().register(AIRBOAT);
}
@SubscribeEvent
@@ -2,4 +2,5 @@ package studio.halbear.hem_custom.registry;
public class ModStatics {
public final static String MOD_ID = "hem";
public final static float DegToRad = (float)Math.PI/180.0f;
}
@@ -0,0 +1,75 @@
package studio.halbear.hem_custom.registry.blocks;
import net.minecraft.block.AbstractBlock;
import net.minecraft.block.Block;
import net.minecraft.block.SoundType;
import net.minecraft.block.material.Material;
import net.minecraft.entity.EntityType;
import net.minecraft.item.BlockItem;
import net.minecraft.item.Item;
import net.minecraft.item.ItemGroup;
import net.minecraft.util.ResourceLocation;
import net.minecraftforge.common.ToolType;
import net.minecraftforge.event.RegistryEvent;
import net.minecraftforge.event.entity.EntityAttributeCreationEvent;
import net.minecraftforge.eventbus.api.IEventBus;
import net.minecraftforge.eventbus.api.SubscribeEvent;
import net.minecraftforge.fml.RegistryObject;
import net.minecraftforge.fml.common.Mod;
import net.minecraftforge.fml.javafmlmod.FMLJavaModLoadingContext;
import net.minecraftforge.registries.DeferredRegister;
import net.minecraftforge.registries.ForgeRegistries;
import net.minecraftforge.registries.ObjectHolder;
import studio.halbear.hem.HemMod;
import studio.halbear.hem.itemgroup.BlueleafTabItemGroup;
import studio.halbear.hem_custom.registry.items.ModItems;
import java.util.ArrayList;
import java.util.List;
import java.util.function.Supplier;
@ObjectHolder("hem")
@Mod.EventBusSubscriber(modid = "hem", bus = Mod.EventBusSubscriber.Bus.MOD)
public class ModBlocks {
//public static final DeferredRegister<Block> HEMBLOCKS = DeferredRegister.create(ForgeRegistries.BLOCKS, "hem");
/*public static final List<Block> HEMBLOCKS = new ArrayList<Block>(){
};
@SubscribeEvent
public static void registerBlocks(final RegistryEvent.Register<Block> event) {
HEMBLOCKS.add(new Block(AbstractBlock.Properties
.create(Material.IRON)
.sound(SoundType.METAL)
.hardnessAndResistance(2.0f, 1.0f)
.harvestTool(ToolType.PICKAXE)
).setRegistryName("test_block"));
//IEventBus bus = FMLJavaModLoadingContext.get().getModEventBus();
//HEMBLOCKS.register(bus);
HEMBLOCKS.forEach(block->event.getRegistry().register(block));
}
@SubscribeEvent
public static void registerBlockItems(final RegistryEvent.Register<Item> event) {
// Ensure the block is not null before creating its item counterpart
HEMBLOCKS.forEach(block-> {
if(block != null) {
BlockItem newBlockItem = new BlockItem(block, new Item.Properties().group(BlueleafTabItemGroup.tab));
newBlockItem.setRegistryName(block.getRegistryName());
event.getRegistry().register(newBlockItem);
}
});
}*/
//private static <T extends Block> RegistryObject<T> registerBlock(String name, Supplier<T> block){
// RegistryObject<T> toReturn = ModBlocks.HEMBLOCKS.register(name, block);
// registerBlockItem(name, toReturn);
// return toReturn;
// }
// private static <T extends Block> void registerBlockItem(String name, RegistryObject<T> block) {
// ModItems.ITEMS.register(name, () -> new BlockItem(block.get(),
// new Item.Properties().group(BlueleafTabItemGroup.tab)));
// }
}
@@ -0,0 +1,15 @@
package studio.halbear.hem_custom.registry.items;
import net.minecraft.item.Item;
import net.minecraftforge.fml.common.Mod;
import net.minecraftforge.registries.DeferredRegister;
import net.minecraftforge.registries.ForgeRegistries;
import net.minecraftforge.registries.ObjectHolder;
@ObjectHolder("hem")
@Mod.EventBusSubscriber(modid = "hem", bus = Mod.EventBusSubscriber.Bus.MOD)
public class ModItems {
// public static final DeferredRegister<Item> ITEMS = DeferredRegister.create(ForgeRegistries.ITEMS, "hem");
}
@@ -0,0 +1,167 @@
package studio.halbear.hem_custom.vehicles.Entity;
import net.minecraft.entity.Entity;
import net.minecraft.entity.EntityType;
import net.minecraft.entity.player.PlayerEntity;
import net.minecraft.nbt.CompoundNBT;
import net.minecraft.network.IPacket;
import net.minecraft.network.datasync.DataParameter;
import net.minecraft.network.datasync.DataSerializers;
import net.minecraft.network.datasync.EntityDataManager;
import net.minecraft.util.ActionResultType;
import net.minecraft.util.Hand;
import net.minecraft.util.math.vector.Vector3d;
import net.minecraft.world.World;
import net.minecraftforge.fml.network.NetworkHooks;
public class Airboat extends Entity {
private static final DataParameter<Float> ORIENTATION_ROLL = EntityDataManager.createKey(Airboat.class, DataSerializers.FLOAT);
private static final DataParameter<Float> TARGET_ORIENTATION_ROLL = EntityDataManager.createKey(Airboat.class, DataSerializers.FLOAT);
private static final DataParameter<Float> ORIENTATION_YAW = EntityDataManager.createKey(Airboat.class, DataSerializers.FLOAT);
private static final DataParameter<Float> TARGET_ORIENTATION_YAW = EntityDataManager.createKey(Airboat.class, DataSerializers.FLOAT);
private static final DataParameter<Float> ORIENTATION_PITCH = EntityDataManager.createKey(Airboat.class, DataSerializers.FLOAT);
private static final DataParameter<Float> TARGET_ORIENTATION_PITCH = EntityDataManager.createKey(Airboat.class, DataSerializers.FLOAT);
private static final DataParameter<Float> ENGINE1_RPM = EntityDataManager.createKey(Airboat.class, DataSerializers.FLOAT);
private static final DataParameter<Float> TARGET_ENGINE1_RPM = EntityDataManager.createKey(Airboat.class, DataSerializers.FLOAT);
private static final DataParameter<Float> ENGINE1_PROP_ANGLE = EntityDataManager.createKey(Airboat.class, DataSerializers.FLOAT);
private static final DataParameter<Float> ENGINE2_RPM = EntityDataManager.createKey(Airboat.class, DataSerializers.FLOAT);
private static final DataParameter<Float> TARGET_ENGINE2_RPM = EntityDataManager.createKey(Airboat.class, DataSerializers.FLOAT);
private static final DataParameter<Float> ENGINE2_PROP_ANGLE = EntityDataManager.createKey(Airboat.class, DataSerializers.FLOAT);
private static final DataParameter<Float> BALLOON_HEALTH = EntityDataManager.createKey(Airboat.class, DataSerializers.FLOAT);
private static final DataParameter<Float> BODY_HEALTH = EntityDataManager.createKey(Airboat.class, DataSerializers.FLOAT);
private static final DataParameter<Float> ROPES_HEALTH = EntityDataManager.createKey(Airboat.class, DataSerializers.FLOAT);
private static final DataParameter<Float> ELEVATOR_PITCH = EntityDataManager.createKey(Airboat.class, DataSerializers.FLOAT);
private static final DataParameter<Float> YAW_ANGLE = EntityDataManager.createKey(Airboat.class, DataSerializers.FLOAT);
public void SetVehicleRoll(float value){
this.dataManager.set(ORIENTATION_ROLL, value);
}
public void SetVehicleYaw(float value){
this.dataManager.set(ORIENTATION_YAW, value);
}
public void SetVehiclePitch(float value){
this.dataManager.set(ORIENTATION_PITCH, value);
}
public float GetVehicleRoll(){
return this.dataManager.get(ORIENTATION_ROLL);
}
public float GetVehicleYaw(){
return this.dataManager.get(ORIENTATION_YAW);
}
public float GetVehiclePitch(){
return this.dataManager.get(ORIENTATION_PITCH);
}
public void SetEngine1RPM(float value){
this.dataManager.set(ENGINE1_RPM, value);
}
public void SetEngine1PROPANGLE(float value){
this.dataManager.set(ENGINE1_PROP_ANGLE, value);
}
public void SetEngine2PROPANGLE(float value){
this.dataManager.set(ENGINE2_PROP_ANGLE, value);
}
public float GetEngine1RPM(){return this.dataManager.get(ENGINE1_RPM);}
public void SetEngine2RPM(float value){ this.dataManager.set(ENGINE2_RPM, value); }
public float GetEngine2RPM(){return this.dataManager.get(ENGINE2_RPM);}
public float GetEngine2PROPANGLE(){return this.dataManager.get(ENGINE2_PROP_ANGLE);}
public float GetEngine1PROPANGLE(){return this.dataManager.get(ENGINE1_PROP_ANGLE);}
public void SetBalloonHealth(float value){
this.dataManager.set(BALLOON_HEALTH, value);
}
public float GetBalloonHealth(){return this.dataManager.get(BALLOON_HEALTH);}
public void SetBodyHealth(float value){ this.dataManager.set(BODY_HEALTH, value); }
public float GetBodyHealth(){return this.dataManager.get(BODY_HEALTH);}
public void SetRopeHealth(float value){ this.dataManager.set(ROPES_HEALTH, value); }
public float GetRopeHealth(){return this.dataManager.get(ROPES_HEALTH);}
public void SetYawAngle(float value){ this.dataManager.set(YAW_ANGLE, value); }
public float GetYawAngl(){return this.dataManager.get(YAW_ANGLE);}
public void SetElevatorPitch(float value){ this.dataManager.set(ELEVATOR_PITCH, value); }
public float GetElevatorPitch(){return this.dataManager.get(ELEVATOR_PITCH);}
private static final Vector3d[] VehicleSeatOffsets = new Vector3d[]{
new Vector3d(0.0D, -6D, 0.0D),
new Vector3d(0.0D, -6D, 2.0D),
new Vector3d(0.0D, -6D, -2.0D),
};
public Airboat(EntityType<?> entityTypeIn, World worldIn) {
super(entityTypeIn, worldIn);
}
@Override
protected void registerData() {
this.dataManager.register(ORIENTATION_ROLL, (float)Math.floor(Math.random() * 360));
this.dataManager.register(ORIENTATION_PITCH, (float)Math.floor(Math.random() * 360));
this.dataManager.register(ORIENTATION_YAW, (float)Math.floor(Math.random() * 360));
this.dataManager.register(TARGET_ORIENTATION_ROLL, 0F);
this.dataManager.register(TARGET_ORIENTATION_YAW, 0F);
this.dataManager.register(TARGET_ORIENTATION_PITCH, 0F);
this.dataManager.register(ENGINE1_RPM, 0F);
this.dataManager.register(TARGET_ENGINE1_RPM, 0F);
this.dataManager.register(ENGINE2_RPM, 0F);
this.dataManager.register(TARGET_ENGINE2_RPM, 0F);
this.dataManager.register(BALLOON_HEALTH, (float)Math.floor(Math.random() * 2));
this.dataManager.register(BODY_HEALTH, (float)Math.floor(Math.random() * 2));
this.dataManager.register(ROPES_HEALTH, (float)Math.floor(Math.random() * 2));
this.dataManager.register(ENGINE1_PROP_ANGLE, (float)Math.floor(Math.random() * 360));
this.dataManager.register(ENGINE2_PROP_ANGLE, (float)Math.floor(Math.random() * 360));
this.dataManager.register(YAW_ANGLE, -45f + (float)Math.floor(Math.random() * 91));
this.dataManager.register(ELEVATOR_PITCH, -45f + (float)Math.floor(Math.random() * 91));
}
@Override
protected void readAdditional(CompoundNBT compound) {
}
@Override
protected void writeAdditional(CompoundNBT compound) {
}
@Override
public IPacket<?> createSpawnPacket() {
return NetworkHooks.getEntitySpawningPacket(this);
}
@Override
public boolean canBeCollidedWith(){return true;}
@Override
protected boolean canFitPassenger(Entity passenger) {
return this.getPassengers().size() < VehicleSeatOffsets.length;
}
@Override
public ActionResultType processInitialInteract(PlayerEntity player, Hand hand) {
if (this.getPassengers().size() < VehicleSeatOffsets.length && !player.isPassenger()) {
if (!this.world.isRemote()) {
return player.startRiding(this) ? ActionResultType.CONSUME : ActionResultType.PASS;
}
return ActionResultType.func_233537_a_(this.world.isRemote());
}
return ActionResultType.SUCCESS;
}
@Override
public Entity getControllingPassenger() {
return this.getPassengers().isEmpty() ? null : this.getPassengers().get(0);
}
@Override
public void updatePassenger(Entity passenger) {
if (this.isPassenger(passenger)) {
int seatIndex = this.getPassengers().indexOf(passenger);
if (seatIndex >= 0 && seatIndex < VehicleSeatOffsets.length) {
Vector3d localOffset = VehicleSeatOffsets[seatIndex];
Vector3d rotatedOffset = localOffset.rotateYaw((float) Math.toRadians(-this.rotationYaw));
passenger.setPosition(
this.getPosX() + rotatedOffset.x,
this.getPosY() + rotatedOffset.y + passenger.getMountedYOffset(),
this.getPosZ() + rotatedOffset.z
);
} else {
super.updatePassenger(passenger);
}
}
}
}
@@ -6,6 +6,7 @@ import net.minecraft.client.renderer.IRenderTypeBuffer;
import net.minecraft.client.renderer.culling.ClippingHelper;
import net.minecraft.client.renderer.entity.EntityRenderer;
import net.minecraft.client.renderer.entity.EntityRendererManager;
import net.minecraft.client.renderer.entity.model.EntityModel;
import net.minecraft.client.renderer.texture.OverlayTexture;
import net.minecraft.util.ResourceLocation;
import net.minecraft.util.math.vector.Vector3f;
@@ -16,6 +17,8 @@ import studio.halbear.hem_custom.vehicles.Entity.Aeroplane;
import studio.halbear.hem_custom.vehicles.Renderer.Models.AeroplaneModel;
import javax.annotation.Nonnull;
import java.util.ArrayList;
import java.util.List;
@OnlyIn(Dist.CLIENT)
public class AeroplaneRenderer extends EntityRenderer<Aeroplane> {
@@ -45,11 +48,42 @@ public class AeroplaneRenderer extends EntityRenderer<Aeroplane> {
@Override
@Nonnull
public ResourceLocation getEntityTexture(Aeroplane entity) {
return new ResourceLocation(ModStatics.MOD_ID,"textures/entities/aeroplane.png");
return new ResourceLocation(ModStatics.MOD_ID,"textures/entities/biplaneupdated.png");
}
/* @Override
public boolean shouldRender(Aeroplane livingEntity, ClippingHelper camera, double camX, double camY, double camZ) {
return true;
}*/
//i can use this to render mutliple models on one entity
/*private List<EntityModel<Aeroplane>> modelParts = new ArrayList<>();
public AeroplaneRenderer(EntityRendererManager renderManagerIn) {
super(renderManagerIn );
}
@Override
public void render(Aeroplane entity, float entityYaw, float partialTicks, MatrixStack matrixStack, IRenderTypeBuffer buffer, int packedLight) {
modelParts.add(new AeroplaneModel());
modelParts.add(new AeroplaneModel());
modelParts.add(new AeroplaneModel());
modelParts.add(new AeroplaneModel());
matrixStack.push();
matrixStack.rotate(Vector3f.YP.rotationDegrees(180.0F - entityYaw));
matrixStack.scale(-1.0F, -1.0F, 1.0F);
matrixStack.translate(0.0D, -1.5D, 0.0D);
for(int i = 0; i < modelParts.toArray().length; i++) {
IVertexBuilder vertexBuilder = buffer.getBuffer(this.modelParts.get(i).getRenderType(getEntityTexture(entity)));
this.modelParts.get(i).setRotationAngles(entity, 0.0F, 0.0F, 0.0F, 0.0F, 0.0F);
this.modelParts.get(i).render(matrixStack, vertexBuilder, packedLight, OverlayTexture.NO_OVERLAY, 1.0F, 1.0F, 1.0F, 1.0F);
}
matrixStack.pop();
super.render(entity, entityYaw, partialTicks, matrixStack, buffer, packedLight);
}*/
}
@@ -0,0 +1,56 @@
package studio.halbear.hem_custom.vehicles.Renderer;
import com.mojang.blaze3d.matrix.MatrixStack;
import com.mojang.blaze3d.vertex.IVertexBuilder;
import net.minecraft.client.renderer.IRenderTypeBuffer;
import net.minecraft.client.renderer.entity.EntityRenderer;
import net.minecraft.client.renderer.entity.EntityRendererManager;
import net.minecraft.client.renderer.texture.OverlayTexture;
import net.minecraft.util.ResourceLocation;
import net.minecraft.util.math.vector.Vector3f;
import net.minecraftforge.api.distmarker.Dist;
import net.minecraftforge.api.distmarker.OnlyIn;
import studio.halbear.hem_custom.registry.ModStatics;
import studio.halbear.hem_custom.vehicles.Entity.Aeroplane;
import studio.halbear.hem_custom.vehicles.Entity.Airboat;
import studio.halbear.hem_custom.vehicles.Renderer.Models.AeroplaneModel;
import studio.halbear.hem_custom.vehicles.Renderer.Models.AirboatModel;
import javax.annotation.Nonnull;
@OnlyIn(Dist.CLIENT)
public class AirboatRenderer extends EntityRenderer<Airboat> {
private AirboatModel model = new AirboatModel();
public AirboatRenderer(EntityRendererManager renderManagerIn) {
super(renderManagerIn );
}
@Override
public void render(Airboat entity, float entityYaw, float partialTicks, MatrixStack matrixStack, IRenderTypeBuffer buffer, int packedLight) {
matrixStack.push();
matrixStack.rotate(Vector3f.YP.rotationDegrees(180.0F - entityYaw));
matrixStack.scale(-1.0F, -1.0F, 1.0F);
matrixStack.translate(0.0D, -1.5D, 0.0D);
IVertexBuilder vertexBuilder = buffer.getBuffer(this.model.getRenderType(getEntityTexture(entity)));
this.model.setRotationAngles(entity, 0.0F, 0.0F, 0.0F, 0.0F, 0.0F);
this.model.render(matrixStack, vertexBuilder, packedLight, OverlayTexture.NO_OVERLAY, 1.0F, 1.0F, 1.0F, 1.0F);
matrixStack.pop();
super.render(entity, entityYaw, partialTicks, matrixStack, buffer, packedLight);
}
@Override
@Nonnull
public ResourceLocation getEntityTexture(Airboat entity) {
return new ResourceLocation(ModStatics.MOD_ID,"textures/entities/airboat.png");
}
/* @Override
public boolean shouldRender(Aeroplane livingEntity, ClippingHelper camera, double camX, double camY, double camZ) {
return true;
}*/
}
@@ -3,17 +3,314 @@ package studio.halbear.hem_custom.vehicles.Renderer.Models;
import com.mojang.blaze3d.matrix.MatrixStack;
import com.mojang.blaze3d.vertex.IVertexBuilder;
import net.minecraft.client.renderer.entity.model.EntityModel;
import net.minecraft.client.renderer.model.ModelRenderer;
import net.minecraft.entity.Entity;
import studio.halbear.hem_custom.registry.ModStatics;
import studio.halbear.hem_custom.vehicles.Entity.Aeroplane;
public class AeroplaneModel extends EntityModel<Aeroplane> {
@Override
public void setRotationAngles(Aeroplane aeroplane, float v, float v1, float v2, float v3, float v4) {
private final ModelRenderer Body;
private final ModelRenderer cube_r1;
private final ModelRenderer cube_r2;
private final ModelRenderer cube_r3;
private final ModelRenderer cube_r4;
private final ModelRenderer cube_r5;
private final ModelRenderer cube_r6;
private final ModelRenderer cube_r7;
private final ModelRenderer cube_r8;
private final ModelRenderer cube_r9;
private final ModelRenderer cube_r10;
private final ModelRenderer cube_r11;
private final ModelRenderer cube_r12;
private final ModelRenderer cube_r13;
private final ModelRenderer cube_r14;
private final ModelRenderer cube_r15;
private final ModelRenderer cube_r16;
private final ModelRenderer cube_r17;
private final ModelRenderer cube_r18;
private final ModelRenderer cube_r19;
private final ModelRenderer cube_r20;
private final ModelRenderer cube_r21;
private final ModelRenderer cube_r22;
private final ModelRenderer cube_r23;
private final ModelRenderer cube_r24;
private final ModelRenderer cube_r25;
private final ModelRenderer cube_r26;
private final ModelRenderer cube_r27;
private final ModelRenderer cube_r28;
private final ModelRenderer cube_r29;
private final ModelRenderer cube_r30;
private final ModelRenderer cube_r31;
private final ModelRenderer cube_r32;
private final ModelRenderer cube_r33;
private final ModelRenderer cube_r34;
private final ModelRenderer cube_r35;
private final ModelRenderer cube_r36;
private final ModelRenderer cube_r37;
private final ModelRenderer cube_r38;
private final ModelRenderer cube_r39;
private final ModelRenderer cube_r40;
private final ModelRenderer cube_r41;
private final ModelRenderer propeller;
private final ModelRenderer cube_r42;
public AeroplaneModel() {
textureWidth = 512;
textureHeight = 512;
Body = new ModelRenderer(this);
Body.setRotationPoint(0.0F, 3.0F, -9.0F);
Body.setTextureOffset(144, 0).addBox(-5.0F, 7.25F, -12.0F, 10.0F, 2.0F, 32.0F, 0.0F, false);
Body.setTextureOffset(96, 43).addBox(-2.0F, -6.0F, 34.0F, 4.0F, 2.0F, 10.0F, 0.0F, false);
Body.setTextureOffset(0, 92).addBox(-2.0F, -6.0F, 50.0F, 4.0F, 10.0F, 6.0F, 0.0F, false);
Body.setTextureOffset(0, 92).addBox(-26.0F, -18.0F, -7.0F, 52.0F, 2.0F, 24.0F, 0.0F, false);
Body.setTextureOffset(0, 92).addBox(-26.0F, 5.0F, -2.0F, 52.0F, 2.0F, 24.0F, 0.0F, false);
Body.setTextureOffset(292, 89).addBox(11.0F, 13.0F, -4.0F, 2.0F, 8.0F, 8.0F, 0.0F, false);
Body.setTextureOffset(9, 207).addBox(9.0F, 16.0F, -1.0F, 2.0F, 2.0F, 2.0F, 0.0F, false);
Body.setTextureOffset(292, 89).addBox(-13.0F, 13.0F, -4.0F, 2.0F, 8.0F, 8.0F, 0.0F, true);
Body.setTextureOffset(9, 207).addBox(-11.0F, 16.0F, -1.0F, 2.0F, 2.0F, 2.0F, 0.0F, true);
cube_r1 = new ModelRenderer(this);
cube_r1.setRotationPoint(-9.0F, 18.0F, 0.0F);
Body.addChild(cube_r1);
setRotationAngle(cube_r1, 0.0F, 0.0F, 0.4363F);
cube_r1.setTextureOffset(10, 205).addBox(-2.0F, -12.0F, -1.0F, 2.0F, 12.0F, 2.0F, 0.0F, true);
cube_r2 = new ModelRenderer(this);
cube_r2.setRotationPoint(9.0F, 18.0F, 0.0F);
Body.addChild(cube_r2);
setRotationAngle(cube_r2, 0.0F, 0.0F, -0.4363F);
cube_r2.setTextureOffset(10, 205).addBox(0.0F, -12.0F, -1.0F, 2.0F, 12.0F, 2.0F, 0.0F, false);
cube_r3 = new ModelRenderer(this);
cube_r3.setRotationPoint(-42.0F, 4.0F, 7.0F);
Body.addChild(cube_r3);
setRotationAngle(cube_r3, 0.1745F, 0.1745F, 0.0F);
cube_r3.setTextureOffset(52, 21).addBox(-1.0F, -22.0F, -6.0F, 2.0F, 23.0F, 2.0F, 0.0F, false);
cube_r4 = new ModelRenderer(this);
cube_r4.setRotationPoint(-39.0F, 4.0F, 26.0F);
Body.addChild(cube_r4);
setRotationAngle(cube_r4, 0.1745F, 0.1745F, 0.0F);
cube_r4.setTextureOffset(100, 203).addBox(-1.0F, -22.0F, -6.0F, 2.0F, 23.0F, 2.0F, 0.0F, false);
cube_r5 = new ModelRenderer(this);
cube_r5.setRotationPoint(39.0F, 4.0F, 26.0F);
Body.addChild(cube_r5);
setRotationAngle(cube_r5, 0.1745F, -0.1745F, 0.0F);
cube_r5.setTextureOffset(186, 177).addBox(-1.0F, -22.0F, -6.0F, 2.0F, 23.0F, 2.0F, 0.0F, false);
cube_r6 = new ModelRenderer(this);
cube_r6.setRotationPoint(-11.0F, 4.5F, 21.0F);
Body.addChild(cube_r6);
setRotationAngle(cube_r6, 0.2659F, 0.008F, -0.0169F);
cube_r6.setTextureOffset(162, 177).addBox(-1.0F, -22.5F, -2.0F, 2.0F, 24.0F, 2.0F, 0.0F, false);
cube_r7 = new ModelRenderer(this);
cube_r7.setRotationPoint(11.0F, 4.5F, 21.0F);
Body.addChild(cube_r7);
setRotationAngle(cube_r7, 0.2659F, -0.008F, 0.0169F);
cube_r7.setTextureOffset(170, 177).addBox(-1.0F, -22.5F, -2.0F, 2.0F, 24.0F, 2.0F, 0.0F, false);
cube_r8 = new ModelRenderer(this);
cube_r8.setRotationPoint(-11.1935F, -5.629F, -1.7596F);
Body.addChild(cube_r8);
setRotationAngle(cube_r8, 0.2223F, 0.008F, -0.0169F);
cube_r8.setTextureOffset(52, 21).addBox(-1.0F, -12.0F, -2.0F, 2.0F, 24.0F, 2.0F, 0.0F, false);
cube_r9 = new ModelRenderer(this);
cube_r9.setRotationPoint(11.1935F, -5.629F, -1.7596F);
Body.addChild(cube_r9);
setRotationAngle(cube_r9, 0.2223F, -0.008F, 0.0169F);
cube_r9.setTextureOffset(178, 177).addBox(-1.0F, -12.0F, -2.0F, 2.0F, 24.0F, 2.0F, 0.0F, false);
cube_r10 = new ModelRenderer(this);
cube_r10.setRotationPoint(42.0F, 4.0F, 7.0F);
Body.addChild(cube_r10);
setRotationAngle(cube_r10, 0.1745F, -0.1745F, 0.0F);
cube_r10.setTextureOffset(206, 177).addBox(-1.0F, -22.0F, -6.0F, 2.0F, 23.0F, 2.0F, 0.0F, false);
cube_r11 = new ModelRenderer(this);
cube_r11.setRotationPoint(-26.0F, -18.0F, -7.0F);
Body.addChild(cube_r11);
setRotationAngle(cube_r11, 0.0F, 0.1309F, 0.0F);
cube_r11.setTextureOffset(0, 118).addBox(-29.0F, -0.01F, 0.0F, 29.0F, 2.0F, 24.0F, 0.0F, false);
cube_r12 = new ModelRenderer(this);
cube_r12.setRotationPoint(26.0F, -18.0F, -7.0F);
Body.addChild(cube_r12);
setRotationAngle(cube_r12, 0.0F, -0.1309F, 0.0F);
cube_r12.setTextureOffset(0, 118).addBox(0.0F, -0.01F, 0.0F, 29.0F, 2.0F, 24.0F, 0.0F, true);
cube_r13 = new ModelRenderer(this);
cube_r13.setRotationPoint(-26.0F, 5.0F, -2.0F);
Body.addChild(cube_r13);
setRotationAngle(cube_r13, 0.0F, 0.1309F, 0.0F);
cube_r13.setTextureOffset(64, 177).addBox(-19.0F, -0.01F, 0.0F, 19.0F, 2.0F, 24.0F, 0.0F, false);
cube_r14 = new ModelRenderer(this);
cube_r14.setRotationPoint(26.0F, 5.0F, -2.0F);
Body.addChild(cube_r14);
setRotationAngle(cube_r14, 0.0F, -0.1309F, 0.0F);
cube_r14.setTextureOffset(64, 177).addBox(0.0F, -0.01F, 0.0F, 19.0F, 2.0F, 24.0F, 0.0F, true);
cube_r15 = new ModelRenderer(this);
cube_r15.setRotationPoint(-26.8737F, -5.0F, 6.9632F);
Body.addChild(cube_r15);
setRotationAngle(cube_r15, 0.1686F, 0.6551F, -0.0096F);
cube_r15.setTextureOffset(190, 90).addBox(-19.5F, -12.0F, 1.0F, 39.0F, 24.0F, 0.0F, 0.0F, true);
cube_r16 = new ModelRenderer(this);
cube_r16.setRotationPoint(-26.5867F, -6.1884F, 8.6681F);
Body.addChild(cube_r16);
setRotationAngle(cube_r16, 0.2164F, -0.4589F, -0.102F);
cube_r16.setTextureOffset(190, 90).addBox(-20.5F, -11.0F, 0.0F, 39.0F, 23.0F, 0.0F, 0.0F, true);
cube_r17 = new ModelRenderer(this);
cube_r17.setRotationPoint(26.5867F, -6.1884F, 8.6681F);
Body.addChild(cube_r17);
setRotationAngle(cube_r17, 0.2164F, 0.4589F, 0.102F);
cube_r17.setTextureOffset(190, 90).addBox(-18.5F, -11.0F, 0.0F, 39.0F, 23.0F, 0.0F, 0.0F, false);
cube_r18 = new ModelRenderer(this);
cube_r18.setRotationPoint(26.8737F, -5.0F, 6.9632F);
Body.addChild(cube_r18);
setRotationAngle(cube_r18, 0.1686F, -0.6551F, 0.0096F);
cube_r18.setTextureOffset(190, 90).addBox(-19.5F, -12.0F, 1.0F, 39.0F, 24.0F, 0.0F, 0.0F, false);
cube_r19 = new ModelRenderer(this);
cube_r19.setRotationPoint(0.0F, -1.5F, 0.0F);
Body.addChild(cube_r19);
setRotationAngle(cube_r19, -0.3491F, 0.0F, 0.0F);
cube_r19.setTextureOffset(0, 0).addBox(-0.5F, -2.5F, 1.0F, 1.0F, 9.0F, 1.0F, 0.0F, false);
cube_r20 = new ModelRenderer(this);
cube_r20.setRotationPoint(10.0F, -3.0F, 52.0F);
Body.addChild(cube_r20);
setRotationAngle(cube_r20, -0.3054F, 0.0F, 1.5708F);
cube_r20.setTextureOffset(144, 0).addBox(-1.0F, -9.0F, -6.0F, 2.0F, 18.0F, 12.0F, 0.0F, true);
cube_r21 = new ModelRenderer(this);
cube_r21.setRotationPoint(-10.0F, -3.0F, 52.0F);
Body.addChild(cube_r21);
setRotationAngle(cube_r21, -0.3054F, 0.0F, -1.5708F);
cube_r21.setTextureOffset(144, 0).addBox(-1.0F, -9.0F, -6.0F, 2.0F, 18.0F, 12.0F, 0.0F, false);
cube_r22 = new ModelRenderer(this);
cube_r22.setRotationPoint(0.0F, -15.0F, 50.0F);
Body.addChild(cube_r22);
setRotationAngle(cube_r22, -0.3054F, 0.0F, 0.0F);
cube_r22.setTextureOffset(54, 144).addBox(-1.0F, -6.0F, -4.0F, 2.0F, 18.0F, 12.0F, 0.0F, false);
cube_r23 = new ModelRenderer(this);
cube_r23.setRotationPoint(2.0F, 9.25F, 34.0F);
Body.addChild(cube_r23);
setRotationAngle(cube_r23, 0.2528F, -0.1733F, 0.5888F);
cube_r23.setTextureOffset(135, 133).addBox(-0.25F, -6.3007F, -0.9537F, 0.0F, 6.0F, 17.0F, 0.0F, true);
cube_r24 = new ModelRenderer(this);
cube_r24.setRotationPoint(-2.0F, 9.25F, 34.0F);
Body.addChild(cube_r24);
setRotationAngle(cube_r24, 0.2528F, 0.1733F, -0.5888F);
cube_r24.setTextureOffset(135, 133).addBox(0.25F, -6.3007F, -0.9537F, 0.0F, 6.0F, 17.0F, 0.0F, false);
cube_r25 = new ModelRenderer(this);
cube_r25.setRotationPoint(0.0F, 9.25F, 33.0F);
Body.addChild(cube_r25);
setRotationAngle(cube_r25, 0.2618F, 0.0F, 0.0F);
cube_r25.setTextureOffset(106, 144).addBox(-2.0F, -6.0F, 0.0F, 4.0F, 6.0F, 21.0F, 0.0F, false);
cube_r26 = new ModelRenderer(this);
cube_r26.setRotationPoint(-5.0F, 9.0F, 20.0F);
Body.addChild(cube_r26);
setRotationAngle(cube_r26, 0.0F, 0.1745F, 0.0F);
cube_r26.setTextureOffset(38, 201).addBox(0.0F, -1.75F, 0.0F, 5.0F, 2.0F, 14.0F, 0.0F, true);
cube_r27 = new ModelRenderer(this);
cube_r27.setRotationPoint(5.0F, 9.0F, 20.0F);
Body.addChild(cube_r27);
setRotationAngle(cube_r27, 0.0F, -0.1745F, 0.0F);
cube_r27.setTextureOffset(38, 201).addBox(-5.0F, -1.75F, 0.0F, 5.0F, 2.0F, 14.0F, 0.0F, false);
cube_r28 = new ModelRenderer(this);
cube_r28.setRotationPoint(-7.0F, -11.0F, 20.0F);
Body.addChild(cube_r28);
setRotationAngle(cube_r28, 0.3925F, -1.2393F, 1.1581F);
cube_r28.setTextureOffset(196, 64).addBox(0.0F, -7.0F, -5.0F, 18.0F, 7.0F, 5.0F, 0.0F, true);
cube_r29 = new ModelRenderer(this);
cube_r29.setRotationPoint(7.0F, -11.0F, 20.0F);
Body.addChild(cube_r29);
setRotationAngle(cube_r29, 0.3925F, 1.2393F, -1.1581F);
cube_r29.setTextureOffset(196, 64).addBox(-18.0F, -7.0F, -5.0F, 18.0F, 7.0F, 5.0F, 0.0F, false);
cube_r30 = new ModelRenderer(this);
cube_r30.setRotationPoint(0.0F, -6.0F, 9.0F);
Body.addChild(cube_r30);
setRotationAngle(cube_r30, 0.0F, 0.0F, -1.5708F);
cube_r30.setTextureOffset(42, 182).addBox(-10.0F, -7.0F, 6.0F, 15.0F, 14.0F, 5.0F, 0.0F, false);
cube_r30.setTextureOffset(0, 239).addBox(-15.0F, -7.0F, -28.0F, 15.0F, 14.0F, 0.0F, 0.0F, false);
cube_r30.setTextureOffset(0, 223).addBox(-15.0F, -7.0F, -27.0F, 15.0F, 14.0F, 0.0F, 0.0F, false);
cube_r30.setTextureOffset(96, 55).addBox(-9.0F, -2.0F, -28.0F, 4.0F, 4.0F, 7.0F, 0.0F, false);
cube_r30.setTextureOffset(0, 201).addBox(-14.0F, -7.0F, -26.0F, 14.0F, 14.0F, 5.0F, 0.0F, false);
cube_r30.setTextureOffset(144, 34).addBox(-16.0F, -9.0F, -28.0F, 18.0F, 2.0F, 7.0F, 0.0F, false);
cube_r30.setTextureOffset(42, 0).addBox(0.0F, -7.0F, -28.0F, 2.0F, 14.0F, 7.0F, 0.0F, false);
cube_r30.setTextureOffset(0, 0).addBox(-10.0F, -7.0F, -18.0F, 0.0F, 14.0F, 25.0F, 0.0F, false);
cube_r30.setTextureOffset(0, 0).addBox(1.0F, 0.0F, -26.0F, 15.0F, 0.0F, 66.0F, 0.0F, false);
cube_r30.setTextureOffset(0, 0).addBox(-10.0F, -7.0F, -21.0F, 11.0F, 14.0F, 10.0F, 0.0F, false);
cube_r30.setTextureOffset(54, 144).addBox(-10.0F, -8.0F, -21.0F, 10.0F, 1.0F, 32.0F, 0.0F, false);
cube_r31 = new ModelRenderer(this);
cube_r31.setRotationPoint(0.0F, -6.0F, 9.0F);
Body.addChild(cube_r31);
setRotationAngle(cube_r31, 0.0F, 0.0F, 1.5708F);
cube_r31.setTextureOffset(144, 34).addBox(-2.0F, -9.0F, -28.0F, 18.0F, 2.0F, 7.0F, 0.0F, true);
cube_r31.setTextureOffset(54, 144).addBox(0.0F, -8.0F, -21.0F, 10.0F, 1.0F, 32.0F, 0.0F, true);
cube_r32 = new ModelRenderer(this);
cube_r32.setRotationPoint(0.0F, 36.0F, 9.0F);
Body.addChild(cube_r32);
setRotationAngle(cube_r32, 0.0F, 0.0F, 1.5708F);
cube_r32.setTextureOffset(42, 0).addBox(-28.0F, -7.0F, -28.0F, 2.0F, 14.0F, 7.0F, 0.0F, false);
cube_r33 = new ModelRenderer(this);
cube_r33.setRotationPoint(0.0F, -7.0F, -5.0F);
Body.addChild(cube_r33);
setRotationAngle(cube_r33, 0.0F, -0.4363F, -1.5708F);
cube_r33.setTextureOffset(0, 118).addBox(0.0F, -7.0F, 0.0F, 7.0F, 14.0F, 1.0F, 0.0F, false);
cube_r34 = new ModelRenderer(this);
cube_r34.setRotationPoint(51.0F, -18.5F, 20.0F);
Body.addChild(cube_r34);
setRotationAngle(cube_r34, 0.7342F, -0.1119F, -1.4365F);
cube_r34.setTextureOffset(53, 0).addBox(-24.5F, 0.0F, 0.0F, 24.0F, 0.0F, 43.0F, 0.0F, false);
cube_r35 = new ModelRenderer(this);
cube_r35.setRotationPoint(-51.0F, -18.5F, 20.0F);
Body.addChild(cube_r35);
setRotationAngle(cube_r35, 0.7342F, 0.1119F, 1.4365F);
cube_r35.setTextureOffset(53, 0).addBox(0.5F, 0.0F, 0.0F, 24.0F, 0.0F, 43.0F, 0.0F, true);
cube_r36 = new ModelRenderer(this);
cube_r36.setRotationPoint(8.0F, 4.0F, 5.5F);
Body.addChild(cube_r36);
setRotationAngle(cube_r36, 0.0F, 0.0F, 2.0944F);
cube_r36.setTextureOffset(162, 178).addBox(0.0F, 0.0F, -17.5F, 6.0F, 1.0F, 32.0F, 0.0F, true);
cube_r37 = new ModelRenderer(this);
cube_r37.setRotationPoint(-8.0F, 4.0F, 5.5F);
Body.addChild(cube_r37);
setRotationAngle(cube_r37, 0.0F, 0.0F, -2.0944F);
cube_r37.setTextureOffset(162, 178).addBox(-6.0F, 0.0F, -17.5F, 6.0F, 1.0F, 32.0F, 0.0F, false);
cube_r38 = new ModelRenderer(this);
cube_r38.setRotationPoint(5.0F, 9.0F, 20.0F);
Body.addChild(cube_r38);
setRotationAngle(cube_r38, 0.1515F, -0.0869F, -1.0538F);
cube_r38.setTextureOffset(0, 182).addBox(-0.1927F, -3.9414F, -0.5209F, 6.0F, 4.0F, 15.0F, 0.0F, false);
cube_r39 = new ModelRenderer(this);
cube_r39.setRotationPoint(-5.0F, 9.0F, 20.0F);
Body.addChild(cube_r39);
setRotationAngle(cube_r39, 0.1515F, 0.0869F, 1.0538F);
cube_r39.setTextureOffset(82, 118).addBox(-5.8073F, -4.9414F, -0.5209F, 6.0F, 5.0F, 15.0F, 0.0F, false);
cube_r40 = new ModelRenderer(this);
cube_r40.setRotationPoint(-8.0F, 0.5F, 20.0F);
Body.addChild(cube_r40);
setRotationAngle(cube_r40, 0.1745F, 0.0F, 1.5708F);
cube_r40.setTextureOffset(0, 144).addBox(-6.5F, -4.0F, 0.0F, 10.0F, 4.0F, 34.0F, 0.0F, true);
cube_r41 = new ModelRenderer(this);
cube_r41.setRotationPoint(8.0F, 0.5F, 20.0F);
Body.addChild(cube_r41);
setRotationAngle(cube_r41, 0.1745F, 0.0F, -1.5708F);
cube_r41.setTextureOffset(0, 144).addBox(-3.5F, -4.0F, 0.0F, 10.0F, 4.0F, 34.0F, 0.0F, false);
propeller = new ModelRenderer(this);
propeller.setRotationPoint(0.0F, 1.0F, -20.5F);
Body.addChild(propeller);
cube_r42 = new ModelRenderer(this);
cube_r42.setRotationPoint(0.0F, -7.0F, 29.5F);
propeller.addChild(cube_r42);
setRotationAngle(cube_r42, 0.0F, 0.0F, -1.5708F);
cube_r42.setTextureOffset(32, 0).addBox(-9.0F, -2.0F, -32.0F, 4.0F, 4.0F, 3.0F, 0.0F, false);
cube_r42.setTextureOffset(0, 260).addBox(-22.0F, -15.0F, -29.0F, 30.0F, 30.0F, 0.0F, 0.0F, false);
cube_r42.setTextureOffset(4, 0).addBox(-8.0F, -1.0F, -29.0F, 2.0F, 2.0F, 1.0F, 0.0F, false);
}
@Override
public void render(MatrixStack matrixStack, IVertexBuilder iVertexBuilder, int i, int i1, float v, float v1, float v2, float v3) {
public void render(MatrixStack matrixStack, IVertexBuilder buffer, int packedLight, int packedOverlay, float red, float green, float blue,
float alpha) {
Body.render(matrixStack, buffer, packedLight, packedOverlay, red, green, blue, alpha);
}
public void setRotationAngle(ModelRenderer modelRenderer, float x, float y, float z) {
modelRenderer.rotateAngleX = x;
modelRenderer.rotateAngleY = y;
modelRenderer.rotateAngleZ = z;
}
@Override
public void setRotationAngles(Aeroplane entity, float f, float f1, float f2, float f3, float f4) {
Body.rotateAngleY = ((entity).GetVehicleYaw()) * ModStatics.DegToRad;
Body.rotateAngleX = ((entity).GetVehiclePitch()) * ModStatics.DegToRad;
Body.rotateAngleZ = ((entity).GetVehicleRoll()) * ModStatics.DegToRad;
}
//model to go here later
}
@@ -26,6 +26,7 @@ public class VehicleCameraSettings {
Minecraft minecraftInstance = Minecraft.getInstance();
if (minecraftInstance.player != null && minecraftInstance.player.isPassenger() && minecraftInstance.player.getRidingEntity() != null
&& CurrentEntity != minecraftInstance.player.getRidingEntity().getClass().getName()) {
CurrentEntity = minecraftInstance.player.getRidingEntity().getClass().getName();
HemVehicle = CurrentEntity.contains("studio.halbear.hem.entity");
switch (CurrentEntity) {
@@ -35,6 +36,12 @@ public class VehicleCameraSettings {
CamFOV = 70.0f;
CamFOVExternal = 80.0f;
break;
case "studio.halbear.hem.entity.TestPlaneEntity$CustomEntity" :
CamOffset = new Vector3f(0.0f, 0.0f, 4.5f);
CamTransformations = new Vector3f(0.0f, 0.0f, 0.0f);
CamFOV = 80.0f;
CamFOVExternal = 80.0f;
break;
case "studio.halbear.hem.entity.AirboatEntity$CustomEntity" :
CamOffset = new Vector3f(0.0f, 4.0f, 16.0f);
CamTransformations = new Vector3f(0.0f, 0.0f, 0.0f);
@@ -21,6 +21,7 @@
"biome.hem.heightend_blueleaf_plains": "Blueleaf Hilly Plains",
"entity.hem.dormant_emberleaf_military_bot": "Dormant Emberleaf Military Bot",
"block.hem.blueleaf_red_cap": "Blueleaf Red Cap Mushroom",
"item.hem.test_plane_spawn_egg": "Test Plane Spawn Egg",
"block.hem.blueleaf_redwood_log": "Blueleaf Redwood Log",
"block.hem.blueleaf_cobblestone_stairs": "Blueleaf Cobblestone Stairs",
"block.hem.blueleaf_stone_slab": "Blueleaf Stone Slab",
@@ -51,6 +52,7 @@
"entity.hem.airboat": "Airboat",
"entity.hem.emberleaf_military_bot": " Emberleaf Military Bot",
"item.hem.butterfly_spawn_egg": "Butterfly",
"entity.hem.test_plane": "Test Plane",
"item.hem.tiger_fish_item": "Tiger Fish",
"block.hem.blueleaf_sea_grass": "Blueleaf Sea Grass",
"key.hem.vehicle_strafe_right": "Strafe/Yaw Vehicle Right",
@@ -2,6 +2,7 @@
"replace": false,
"values": [
"hem:airboat",
"hem:test_plane",
"hem:hot_air_balloon"
]
}