diff --git a/build.gradle b/build.gradle index 9deaffa..2051ddd 100644 --- a/build.gradle +++ b/build.gradle @@ -1,154 +1,72 @@ -plugins { - id 'eclipse' - id 'idea' - id 'maven-publish' - id 'net.minecraftforge.gradle' version '[6.0,6.2)' - id 'org.spongepowered.mixin' version '0.7.+' +buildscript { + repositories { + maven { url = 'https://maven.minecraftforge.net' } + maven {url = 'F:\\Hals Mod 1.0\\HalsVehicleFramework\\HalsVehicleFramework\\build'} + mavenCentral() + } + dependencies { + classpath group: 'net.minecraftforge.gradle', name: 'ForgeGradle', version: '6.0.+', changing: true + } } -version = mod_version -group = mod_group_id +apply plugin: 'net.minecraftforge.gradle' +apply plugin: 'eclipse' -base { - archivesName = mod_id - } +version = '1.0' +group = 'net.halbear.steampowered' +archivesBaseName = 'hals_steampowered' -// Mojang ships Java 17 to end users in 1.18+, so your mod should target Java 17. java.toolchain.languageVersion = JavaLanguageVersion.of(8) -println "Java: ${System.getProperty 'java.version'}, JVM: ${System.getProperty 'java.vm.version'} (${System.getProperty 'java.vendor'}), Arch: ${System.getProperty 'os.arch'}" +repositories { + flatDir { + dirs 'libs' + } +} + minecraft { mappings channel: mapping_channel, version: mapping_version - copyIdeResources = true runs { - // applies to all the run configs below - configureEach { + client { workingDirectory project.file('run') property 'forge.logging.markers', 'REGISTRIES' - - // Please read: https://stackoverflow.com/questions/2031163/when-to-use-the-different-log-levels property 'forge.logging.console.level', 'debug' + jvmArgs = [ + "--add-exports=java.base/sun.security.util=ALL-UNNAMED", + "--add-opens=java.base/java.util.jar=ALL-UNNAMED" + ] + mods { - "${mod_id}" { + hals_steampowered { source sourceSets.main } } } - client { - // this block needs to be here for runClient to exist - arg "-mixin.config=hals_steampowered.mixin.json" - } - server { - args '--nogui' - } + workingDirectory project.file('run') - data { - // example of overriding the workingDirectory set in configureEach above - workingDirectory project.file('run-data') + property 'forge.logging.markers', 'REGISTRIES' + property 'forge.logging.console.level', 'debug' - // Specify the modid for data generation, where to output the resulting resource, and where to look for existing resources. - args '--mod', mod_id, '--all', '--output', file('src/generated/resources/'), '--existing', file('src/main/resources/') + jvmArgs = [ + "--add-exports=java.base/sun.security.util=ALL-UNNAMED", + "--add-opens=java.base/java.util.jar=ALL-UNNAMED" + ] + + mods { + hals_steampowered { + source sourceSets.main + } + } } } } - -// Include resources generated by data generators. -sourceSets.main.resources { srcDir 'src/generated/resources' } - -repositories { - // Put repositories for dependencies here - // ForgeGradle automatically adds the Forge maven and Maven Central for you - // If you have mod jar dependencies in ./libs, you can declare them as a repository like so: - // flatDir { - // dir 'libs' - // } -} - dependencies { - // Specify the version of Minecraft to use. - // Any artifact can be supplied so long as it has a "userdev" classifier artifact and is a compatible patcher artifact. - // The "userdev" classifier will be requested and setup by ForgeGradle. - // If the group id is "net.minecraft" and the artifact id is one of ["client", "server", "joined"], - // then special handling is done to allow a setup of a vanilla dependency without the use of an external repository. - minecraft "net.minecraftforge:forge:${minecraft_version}-${forge_version}" - implementation 'org.spongepowered:mixingradle:0.7.+' - // Real mod deobf dependency examples - these get remapped to your current mappings - // compileOnly fg.deobf("mezz.jei:jei-${mc_version}:${jei_version}:api") // Adds JEI API as a compile dependency - // runtimeOnly fg.deobf("mezz.jei:jei-${mc_version}:${jei_version}") // Adds the full JEI mod as a runtime dependency - // implementation fg.deobf("com.tterrag.registrate:Registrate:MC${mc_version}-${registrate_version}") // Adds registrate as a dependency - - // Example mod dependency using a mod jar from ./libs with a flat dir repository - // This maps to ./libs/coolmod-${mc_version}-${coolmod_version}.jar - // The group id is ignored when searching -- in this case, it is "blank" - // implementation fg.deobf("blank:coolmod-${mc_version}:${coolmod_version}") - - // For more info: - // http://www.gradle.org/docs/current/userguide/artifact_dependencies_tutorial.html - // http://www.gradle.org/docs/current/userguide/dependency_management.html -} -// This block of code expands all declared replace properties in the specified resource targets. -// A missing property will result in an error. Properties are expanded using ${} Groovy notation. -// When "copyIdeResources" is enabled, this will also run before the game launches in IDE environments. -// See https://docs.gradle.org/current/dsl/org.gradle.language.jvm.tasks.ProcessResources.html -tasks.named('processResources', ProcessResources).configure { - var replaceProperties = [ - minecraft_version: minecraft_version, minecraft_version_range: minecraft_version_range, - forge_version: forge_version, forge_version_range: forge_version_range, - loader_version_range: loader_version_range, - mod_id: mod_id, mod_name: mod_name, mod_license: mod_license, mod_version: mod_version, - mod_authors: mod_authors, mod_description: mod_description, - ] - inputs.properties replaceProperties - - filesMatching(['META-INF/mods.toml', 'pack.mcmeta']) { - expand replaceProperties + [project: project] - } -} - -// Example for how to get properties into the manifest for reading at runtime. -tasks.named('jar', Jar).configure { - manifest { - attributes([ - 'Specification-Title' : mod_id, - 'Specification-Vendor' : mod_authors, - 'Specification-Version' : '1', // We are version 1 of ourselves - 'Implementation-Title' : project.name, - 'Implementation-Version' : project.jar.archiveVersion, - 'Implementation-Vendor' : mod_authors, - 'Implementation-Timestamp': new Date().format("yyyy-MM-dd'T'HH:mm:ssZ"), - 'TweakClass' : 'org.spongepowered.asm.launch.MixinTweaker', - 'TweakOrder' : 0, - 'MixinConfigs' : 'hals_steampowered.mixin.json' - ]) - } - rename 'mixin.refmap.json', 'hals_steampowered.mixin-refmap.json' -// This is the preferred method to reobfuscate your jar file - finalizedBy 'reobfJar' -} - -// However if you are in a multi-project build, dev time needs unobfed jar files, so you can delay the obfuscation until publishing by doing: -// tasks.named('publish').configure { -// dependsOn 'reobfJar' -// } - -publishing { - publications { - register('mavenJava', MavenPublication) { - artifact jar - } - } - repositories { - maven { - url "file://${project.projectDir}/mcmodsrepo" - } - } -} - -tasks.withType(JavaCompile).configureEach { - options.encoding = 'UTF-8' // Use the UTF-8 charset for Java compilation + minecraft 'net.minecraftforge:forge:1.16.5-36.2.26' + compileOnly fg.deobf("net.halbear.hvf:hals_vehicle_framework:1.0") + runtimeOnly fg.deobf("net.halbear.hvf:hals_vehicle_framework:1.0") } diff --git a/libs/hals_vehicle_framework-1.0.jar b/libs/hals_vehicle_framework-1.0.jar new file mode 100644 index 0000000..7772a71 Binary files /dev/null and b/libs/hals_vehicle_framework-1.0.jar differ diff --git a/src/main/java/net/halbear/steampowered/registry/entity/ModEntities.java b/src/main/java/net/halbear/steampowered/registry/entity/ModEntities.java index b8bf473..e4b4bba 100644 --- a/src/main/java/net/halbear/steampowered/registry/entity/ModEntities.java +++ b/src/main/java/net/halbear/steampowered/registry/entity/ModEntities.java @@ -1,7 +1,9 @@ package net.halbear.steampowered.registry.entity; +import net.halbear.hvf.Halsvehicleframework; +import net.halbear.hvf.UsageExamples.Aeroplane.Aeroplane; import net.halbear.steampowered.HalsSteampowered; -import net.halbear.steampowered.trains.Steam_Alice_040; +import net.halbear.steampowered.trains.rendering.SteamLocomotive; import net.minecraft.entity.EntityClassification; import net.minecraft.entity.EntityType; import net.minecraft.util.ResourceLocation; @@ -13,10 +15,9 @@ import net.minecraftforge.registries.ForgeRegistries; public class ModEntities { public static DeferredRegister> ENTITIES = DeferredRegister.create(ForgeRegistries.ENTITIES, HalsSteampowered.MODID); - public static final RegistryObject> STEAM_ALICE_040 = ENTITIES.register("steam_engine_welsh_0-4-0",()-> - EntityType.Builder.of(Steam_Alice_040::new, EntityClassification.MISC) - .sized(2f,1.5f) - .build(new ResourceLocation(HalsSteampowered.MODID, "steam_alice_040").toString())); + public static final RegistryObject> USA_040 = + ENTITIES.register("usa_040", ()-> EntityType.Builder.of(SteamLocomotive::new, + EntityClassification.MISC ).sized(1f,2f).build(new ResourceLocation(HalsSteampowered.MODID, "usa_040").toString())); public static void register(IEventBus eventBus){ ENTITIES.register(eventBus); diff --git a/src/main/java/net/halbear/steampowered/registry/utility/ClientEventHandler.java b/src/main/java/net/halbear/steampowered/registry/utility/ClientEventHandler.java index 1ccf1ee..26bc5df 100644 --- a/src/main/java/net/halbear/steampowered/registry/utility/ClientEventHandler.java +++ b/src/main/java/net/halbear/steampowered/registry/utility/ClientEventHandler.java @@ -1,7 +1,10 @@ package net.halbear.steampowered.registry.utility; +import net.halbear.steampowered.registry.entity.ModEntities; +import net.halbear.hvf.UsageExamples.Aeroplane.Renderer.AeroplaneRenderer; import net.halbear.steampowered.HalsSteampowered; import net.halbear.steampowered.registry.blocks.ModBlocks; +import net.halbear.steampowered.trains.rendering.renderers.SteamLocomotiveRenderer; import net.minecraft.block.Block; import net.minecraft.client.Minecraft; import net.minecraft.client.renderer.RenderType; @@ -13,6 +16,7 @@ import net.minecraftforge.api.distmarker.Dist; import net.minecraftforge.client.event.EntityViewRenderEvent; import net.minecraftforge.eventbus.api.SubscribeEvent; import net.minecraftforge.fml.RegistryObject; +import net.minecraftforge.fml.client.registry.RenderingRegistry; import net.minecraftforge.fml.common.Mod; import net.minecraftforge.fml.event.lifecycle.FMLClientSetupEvent; @@ -39,5 +43,6 @@ public class ClientEventHandler { ModBlocks.INCLINE_TRAIN_TRACK, ModBlocks.MOUNTAIN_INCLINE_TRAIN_TRACK ); + RenderingRegistry.registerEntityRenderingHandler(ModEntities.USA_040.get(), SteamLocomotiveRenderer::new); } } diff --git a/src/main/java/net/halbear/steampowered/registry/utility/mixin/CameraMixin.java b/src/main/java/net/halbear/steampowered/registry/utility/mixin/CameraMixin.java deleted file mode 100644 index bac13bf..0000000 --- a/src/main/java/net/halbear/steampowered/registry/utility/mixin/CameraMixin.java +++ /dev/null @@ -1,33 +0,0 @@ -package net.halbear.steampowered.registry.utility.mixin; - -import net.minecraft.client.Minecraft; -import net.minecraft.client.renderer.ActiveRenderInfo; -import net.minecraft.client.settings.PointOfView; -import net.minecraft.entity.Entity; -import net.minecraft.entity.LivingEntity; -import net.minecraft.util.Direction; -import net.minecraft.util.math.BlockPos; -import net.minecraft.util.math.MathHelper; -import net.minecraft.util.math.vector.Quaternion; -import net.minecraft.util.math.vector.Vector3d; -import net.minecraft.util.math.vector.Vector3f; -import net.minecraft.world.IBlockReader; -import org.spongepowered.asm.mixin.Mixin; -import org.spongepowered.asm.mixin.Shadow; -import org.spongepowered.asm.mixin.injection.At; -import org.spongepowered.asm.mixin.injection.Inject; -import org.spongepowered.asm.mixin.injection.callback.CallbackInfo; - -@Mixin(ActiveRenderInfo.class) -public abstract class CameraMixin { - - @Inject(method = "setup", at = @At(value = "TAIL"),cancellable = true) - private void setup(IBlockReader currentRenderedLevel, Entity entity, boolean isDetached, boolean isMirrored, float partialTicks, CallbackInfo ci){ - - //if(entity.isPassenger() && Minecraft.getInstance().options.getCameraType() != PointOfView.FIRST_PERSON){ //this was test code to make sure it works, it does work - //this.move(-this.getMaxZoom(8.0D), 1.0D, 0.0D); - //} - } - @Shadow protected abstract void move(double p_216782_1_, double p_216782_3_, double p_216782_5_); - @Shadow protected abstract double getMaxZoom(double p_216779_1_); -} diff --git a/src/main/java/net/halbear/steampowered/trains/AbstractTrainLocomotiveEntity.java b/src/main/java/net/halbear/steampowered/trains/AbstractTrainLocomotiveEntity.java deleted file mode 100644 index dd912f3..0000000 --- a/src/main/java/net/halbear/steampowered/trains/AbstractTrainLocomotiveEntity.java +++ /dev/null @@ -1,34 +0,0 @@ -package net.halbear.steampowered.trains; - -import net.minecraft.entity.Entity; -import net.minecraft.entity.EntityType; -import net.minecraft.nbt.CompoundNBT; -import net.minecraft.network.IPacket; -import net.minecraft.world.World; - -public class AbstractTrainLocomotiveEntity extends Entity implements ISteampoweredEntityTrainLocomotive{ - - public AbstractTrainLocomotiveEntity(EntityType EntityType, World World) { - super(EntityType, World); - } - - @Override - protected void defineSynchedData() { - - } - - @Override - protected void readAdditionalSaveData(CompoundNBT p_70037_1_) { - - } - - @Override - protected void addAdditionalSaveData(CompoundNBT p_213281_1_) { - - } - - @Override - public IPacket getAddEntityPacket() { - return null; - } -} diff --git a/src/main/java/net/halbear/steampowered/trains/ISteampoweredEntityTrainLocomotive.java b/src/main/java/net/halbear/steampowered/trains/ISteampoweredEntityTrainLocomotive.java deleted file mode 100644 index 80b6993..0000000 --- a/src/main/java/net/halbear/steampowered/trains/ISteampoweredEntityTrainLocomotive.java +++ /dev/null @@ -1,4 +0,0 @@ -package net.halbear.steampowered.trains; - -public interface ISteampoweredEntityTrainLocomotive { -} diff --git a/src/main/java/net/halbear/steampowered/trains/Steam_Alice_040.java b/src/main/java/net/halbear/steampowered/trains/Steam_Alice_040.java deleted file mode 100644 index 6032e8a..0000000 --- a/src/main/java/net/halbear/steampowered/trains/Steam_Alice_040.java +++ /dev/null @@ -1,18 +0,0 @@ -package net.halbear.steampowered.trains; - -import net.minecraft.entity.Entity; -import net.minecraft.entity.EntityType; -import net.minecraft.entity.MobEntity; -import net.minecraft.entity.ai.attributes.Attribute; -import net.minecraft.entity.ai.attributes.AttributeModifierMap; -import net.minecraft.entity.ai.attributes.Attributes; -import net.minecraft.entity.item.minecart.MinecartEntity; -import net.minecraft.world.World; - -public class Steam_Alice_040 extends AbstractTrainLocomotiveEntity { - - public Steam_Alice_040(EntityType EntityType, World World) { - super(EntityType, World); - } - -} diff --git a/src/main/java/net/halbear/steampowered/trains/Steam_USA_narrow_shunter_040.java b/src/main/java/net/halbear/steampowered/trains/Steam_USA_narrow_shunter_040.java deleted file mode 100644 index 3b91bba..0000000 --- a/src/main/java/net/halbear/steampowered/trains/Steam_USA_narrow_shunter_040.java +++ /dev/null @@ -1,12 +0,0 @@ -package net.halbear.steampowered.trains; - -import net.minecraft.entity.EntityType; -import net.minecraft.world.World; - -public class Steam_USA_narrow_shunter_040 extends AbstractTrainLocomotiveEntity { - - public Steam_USA_narrow_shunter_040(EntityType EntityType, World World) { - super(EntityType, World); - } - -} diff --git a/src/main/java/net/halbear/steampowered/trains/Steam_Welsh_Mountain_060.java b/src/main/java/net/halbear/steampowered/trains/Steam_Welsh_Mountain_060.java deleted file mode 100644 index 23fa543..0000000 --- a/src/main/java/net/halbear/steampowered/trains/Steam_Welsh_Mountain_060.java +++ /dev/null @@ -1,12 +0,0 @@ -package net.halbear.steampowered.trains; - -import net.minecraft.entity.EntityType; -import net.minecraft.world.World; - -public class Steam_Welsh_Mountain_060 extends AbstractTrainLocomotiveEntity { - - public Steam_Welsh_Mountain_060(EntityType EntityType, World World) { - super(EntityType, World); - } - -} diff --git a/src/main/java/net/halbear/steampowered/trains/rendering/SteamLocomotive.java b/src/main/java/net/halbear/steampowered/trains/rendering/SteamLocomotive.java new file mode 100644 index 0000000..b22e95d --- /dev/null +++ b/src/main/java/net/halbear/steampowered/trains/rendering/SteamLocomotive.java @@ -0,0 +1,32 @@ +package net.halbear.steampowered.trains.rendering; + +import net.halbear.hvf.Entity.VehicleBaseEntity; +import net.halbear.hvf.Util.Client.VehicleCameraPreset; +import net.halbear.hvf.Util.Client.VehicleCameraSettings; +import net.halbear.hvf.Util.VehicleData.FuelType; +import net.halbear.hvf.Util.VehicleData.VehicleBuildInfo; +import net.halbear.hvf.Util.VehicleData.VehicleClassification; +import net.minecraft.entity.EntityType; +import net.minecraft.util.math.vector.Vector3d; +import net.minecraft.util.math.vector.Vector3f; +import net.minecraft.world.World; + +public class SteamLocomotive extends VehicleBaseEntity { + + static VehicleBuildInfo vehicleBuildInfo = new VehicleBuildInfo(VehicleClassification.RailVehicle) + .SetFuelType(FuelType.FossilFuelsIncludingWood) + .AddFuelTank(1000f) + .SetPilotSeat(new Vector3d(0,-1.5D,-1D)); + + public SteamLocomotive(EntityType entityTypeIn, World worldIn) { + super(entityTypeIn, worldIn, vehicleBuildInfo); + VehicleCameraSettings.AddEntityCameraPreset(this.getType(), + new VehicleCameraPreset(new Vector3f(0,0,4.5f), + new Vector3f(0,0,0),70,60)); + } + + @Override + public void OnPunchedEvent(){ + SetRenderState("DAMAGED"); + } +} diff --git a/src/main/java/net/halbear/steampowered/trains/rendering/models/USA040_MCP.java b/src/main/java/net/halbear/steampowered/trains/rendering/models/USA040_MCP.java new file mode 100644 index 0000000..76bca8c --- /dev/null +++ b/src/main/java/net/halbear/steampowered/trains/rendering/models/USA040_MCP.java @@ -0,0 +1,224 @@ +package net.halbear.steampowered.trains.rendering.models;// Made with Blockbench 5.1.4 +// Exported for Minecraft version 1.15 - 1.16 with MCP mappings +// Paste this class into your mod and generate all required imports + + +import com.mojang.blaze3d.matrix.MatrixStack; +import com.mojang.blaze3d.vertex.IVertexBuilder; +import net.halbear.hvf.Entity.VehicleBaseEntity; +import net.minecraft.client.renderer.entity.model.EntityModel; +import net.minecraft.client.renderer.model.ModelRenderer; + +public class USA040_MCP extends EntityModel { + private final ModelRenderer train; + private final ModelRenderer piston2; + private final ModelRenderer cube_r1; + private final ModelRenderer cube_r2; + private final ModelRenderer piston; + private final ModelRenderer cube_r3; + private final ModelRenderer cube_r4; + private final ModelRenderer cabin; + private final ModelRenderer cube_r5; + private final ModelRenderer cube_r6; + private final ModelRenderer cube_r7; + private final ModelRenderer smokestack; + private final ModelRenderer boiler; + private final ModelRenderer cube_r8; + private final ModelRenderer cube_r9; + private final ModelRenderer cube_r10; + private final ModelRenderer cube_r11; + private final ModelRenderer buffer2; + private final ModelRenderer buffer; + private final ModelRenderer lamp; + private final ModelRenderer chasis; + private final ModelRenderer drivingwheelfront3; + private final ModelRenderer drivingwheelfront2; + + public USA040_MCP() { + texWidth = 256; + texHeight = 256; + + train = new ModelRenderer(this); + train.setPos(0.0F, 24.0F, 18.0F); + + + piston2 = new ModelRenderer(this); + piston2.setPos(-3.7381F, -8.4641F, -31.0F); + train.addChild(piston2); + piston2.texOffs(58, 4).addBox(-3.2619F, 4.4641F, -2.0F, 0.0F, 4.0F, 6.0F, 0.0F, false); + piston2.texOffs(0, 18).addBox(-1.7619F, 2.4641F, 4.0F, 0.0F, 6.0F, 17.0F, 0.0F, false); + + cube_r1 = new ModelRenderer(this); + cube_r1.setPos(-1.7619F, 4.9641F, 0.5F); + piston2.addChild(cube_r1); + setRotationAngle(cube_r1, 0.0F, 0.0F, -0.7418F); + cube_r1.texOffs(104, 92).addBox(-1.5F, -1.5F, -2.5F, 3.0F, 3.0F, 6.0F, 0.0F, true); + + cube_r2 = new ModelRenderer(this); + cube_r2.setPos(0.0F, 0.0F, 0.0F); + piston2.addChild(cube_r2); + setRotationAngle(cube_r2, 0.0F, 0.0F, -1.2217F); + cube_r2.texOffs(39, 21).addBox(-2.5F, 1.0F, -4.0F, 7.0F, 0.0F, 5.0F, 0.0F, false); + cube_r2.texOffs(46, 40).addBox(-4.5F, -1.0F, -1.0F, 9.0F, 2.0F, 2.0F, 0.0F, false); + + piston = new ModelRenderer(this); + piston.setPos(3.7381F, -8.4641F, -31.0F); + train.addChild(piston); + piston.texOffs(0, 18).addBox(1.7619F, 2.4641F, 4.0F, 0.0F, 6.0F, 17.0F, 0.0F, true); + piston.texOffs(58, 4).addBox(3.2619F, 4.4641F, -2.0F, 0.0F, 4.0F, 6.0F, 0.0F, true); + + cube_r3 = new ModelRenderer(this); + cube_r3.setPos(0.0F, 0.0F, 0.0F); + piston.addChild(cube_r3); + setRotationAngle(cube_r3, 0.0F, 0.0F, 1.2217F); + cube_r3.texOffs(46, 40).addBox(-4.5F, -1.0F, -1.0F, 9.0F, 2.0F, 2.0F, 0.0F, true); + cube_r3.texOffs(39, 21).addBox(-4.5F, 1.0F, -4.0F, 7.0F, 0.0F, 5.0F, 0.0F, true); + + cube_r4 = new ModelRenderer(this); + cube_r4.setPos(1.7619F, 4.9641F, 0.5F); + piston.addChild(cube_r4); + setRotationAngle(cube_r4, 0.0F, 0.0F, 0.7418F); + cube_r4.texOffs(104, 92).addBox(-1.5F, -1.5F, -2.5F, 3.0F, 3.0F, 6.0F, 0.0F, false); + + cabin = new ModelRenderer(this); + cabin.setPos(-5.5F, -3.5F, -30.5F); + train.addChild(cabin); + cabin.texOffs(222, 251).addBox(-2.5F, -29.5F, 35.5F, 16.0F, 4.0F, 1.0F, 0.0F, false); + cabin.texOffs(222, 251).addBox(-2.5F, -29.5F, 20.5F, 16.0F, 4.0F, 1.0F, 0.0F, false); + cabin.texOffs(32, 112).addBox(4.5F, -28.5F, 19.5F, 2.0F, 3.0F, 18.0F, 0.0F, false); + cabin.texOffs(160, 75).addBox(13.55F, -24.75F, 20.5F, 0.0F, 28.0F, 16.0F, 0.0F, true); + cabin.texOffs(160, 75).addBox(-2.55F, -24.75F, 20.5F, 0.0F, 28.0F, 16.0F, 0.0F, false); + cabin.texOffs(76, 75).addBox(-2.5F, -2.75F, 20.5F, 16.0F, 1.0F, 16.0F, 0.0F, false); + cabin.texOffs(88, 119).addBox(-2.5F, -25.5F, 35.5F, 16.0F, 23.0F, 1.0F, 0.0F, false); + cabin.texOffs(210, 93).addBox(-2.5F, -25.5F, 20.5F, 16.0F, 23.0F, 1.0F, 0.0F, false); + + cube_r5 = new ModelRenderer(this); + cube_r5.setPos(5.5F, -12.5F, 24.5F); + cabin.addChild(cube_r5); + setRotationAngle(cube_r5, 0.0F, 3.1416F, 0.0F); + cube_r5.texOffs(122, 119).addBox(-8.0F, -10.0F, 0.75F, 16.0F, 20.0F, 0.0F, 0.0F, false); + + cube_r6 = new ModelRenderer(this); + cube_r6.setPos(13.5F, -25.5F, 36.0F); + cabin.addChild(cube_r6); + setRotationAngle(cube_r6, 0.0F, 0.0F, 0.3491F); + cube_r6.texOffs(88, 52).addBox(-7.75F, -0.25F, -16.0F, 9.0F, 1.0F, 17.0F, 0.0F, true); + + cube_r7 = new ModelRenderer(this); + cube_r7.setPos(-2.5F, -25.5F, 36.0F); + cabin.addChild(cube_r7); + setRotationAngle(cube_r7, 0.0F, 0.0F, -0.3491F); + cube_r7.texOffs(88, 52).addBox(-1.25F, -0.25F, -16.0F, 9.0F, 1.0F, 17.0F, 0.0F, false); + + smokestack = new ModelRenderer(this); + smokestack.setPos(0.0F, 0.0F, -2.0F); + train.addChild(smokestack); + smokestack.texOffs(132, 36).addBox(-1.5F, -31.0F, -28.0F, 3.0F, 13.0F, 3.0F, 0.0F, false); + smokestack.texOffs(72, 125).addBox(-7.5F, -35.0F, -26.5F, 5.0F, 31.0F, 0.0F, 0.0F, false); + smokestack.texOffs(124, 79).addBox(-2.5F, -35.0F, -29.0F, 5.0F, 4.0F, 5.0F, 0.0F, false); + + boiler = new ModelRenderer(this); + boiler.setPos(0.0F, 0.0F, -2.0F); + train.addChild(boiler); + boiler.texOffs(124, 70).addBox(-2.5F, -22.0F, -22.0F, 5.0F, 4.0F, 5.0F, 0.0F, false); + boiler.texOffs(0, 12).addBox(-2.5F, -22.0F, -14.0625F, 5.0F, 5.0F, 6.0F, 0.0F, false); + boiler.texOffs(48, 133).addBox(-6.35F, -14.1F, -7.05F, 6.0F, 8.0F, 2.0F, 0.0F, false); + boiler.texOffs(32, 133).addBox(0.35F, -14.1F, -7.05F, 6.0F, 8.0F, 2.0F, 0.0F, false); + boiler.texOffs(0, 0).addBox(0.0F, -36.0F, -35.0F, 0.0F, 30.0F, 44.0F, 0.0F, false); + boiler.texOffs(36, 73).addBox(-5.0F, -27.0F, -9.0F, 0.0F, 21.0F, 18.0F, 0.0F, false); + boiler.texOffs(0, 73).addBox(5.0F, -27.0F, -9.0F, 0.0F, 21.0F, 18.0F, 0.0F, false); + boiler.texOffs(46, 51).addBox(-5.0F, -23.0F, -31.0F, 0.0F, 17.0F, 23.0F, 0.0F, false); + boiler.texOffs(46, 51).addBox(5.0F, -23.0F, -31.0F, 0.0F, 17.0F, 23.0F, 0.0F, true); + + cube_r8 = new ModelRenderer(this); + cube_r8.setPos(-5.0F, -18.0F, -19.5F); + boiler.addChild(cube_r8); + setRotationAngle(cube_r8, 0.0F, 0.0F, -0.3927F); + cube_r8.texOffs(188, 216).addBox(0.0F, -5.0F, -11.5F, 0.0F, 17.0F, 23.0F, 0.0F, false); + + cube_r9 = new ModelRenderer(this); + cube_r9.setPos(5.0F, -18.0F, -19.5F); + boiler.addChild(cube_r9); + setRotationAngle(cube_r9, 0.0F, 0.0F, 0.3927F); + cube_r9.texOffs(188, 216).addBox(0.0F, -5.0F, -11.5F, 0.0F, 17.0F, 23.0F, 0.0F, true); + + cube_r10 = new ModelRenderer(this); + cube_r10.setPos(0.0F, -10.5F, -4.75F); + boiler.addChild(cube_r10); + setRotationAngle(cube_r10, 3.1416F, 0.0F, 0.0F); + cube_r10.texOffs(126, 6).addBox(-4.0F, -4.5F, 0.0F, 8.0F, 9.0F, 0.0F, 0.0F, false); + + cube_r11 = new ModelRenderer(this); + cube_r11.setPos(0.0F, -12.0F, -18.5F); + boiler.addChild(cube_r11); + setRotationAngle(cube_r11, 0.0F, 0.0F, 0.7854F); + cube_r11.texOffs(0, 0).addBox(-6.0F, -6.0F, -12.5F, 9.0F, 9.0F, 26.0F, 0.0F, false); + cube_r11.texOffs(138, 15).addBox(-5.0F, -5.0F, -12.75F, 7.0F, 7.0F, 0.0F, 0.0F, false); + + buffer2 = new ModelRenderer(this); + buffer2.setPos(0.0F, 0.0F, -2.0F); + train.addChild(buffer2); + buffer2.texOffs(70, 7).addBox(-5.0F, -5.1F, -36.0F, 2.0F, 2.0F, 3.0F, 0.0F, false); + buffer2.texOffs(72, 0).addBox(-6.0F, -6.1F, -37.0F, 4.0F, 4.0F, 1.0F, 0.0F, false); + + buffer = new ModelRenderer(this); + buffer.setPos(0.0F, 0.0F, -2.0F); + train.addChild(buffer); + buffer.texOffs(21, 138).addBox(3.0F, -5.1F, -36.0F, 2.0F, 2.0F, 3.0F, 0.0F, false); + buffer.texOffs(11, 138).addBox(2.0F, -6.1F, -37.0F, 4.0F, 4.0F, 1.0F, 0.0F, false); + + lamp = new ModelRenderer(this); + lamp.setPos(0.0F, 0.0F, -2.0F); + train.addChild(lamp); + lamp.texOffs(0, 138).addBox(-1.5F, -23.1F, -33.0F, 3.0F, 3.0F, 5.0F, 0.0F, false); + lamp.texOffs(96, 29).addBox(-1.5F, -23.1F, -35.0F, 3.0F, 3.0F, 2.0F, 0.0F, false); + lamp.texOffs(9, 0).addBox(-2.5F, -20.0F, -34.0F, 5.0F, 0.0F, 6.0F, 0.0F, false); + lamp.texOffs(12, 17).addBox(-1.2F, -20.0F, -34.0F, 0.0F, 2.0F, 6.0F, 0.0F, false); + lamp.texOffs(12, 17).addBox(1.2F, -20.0F, -34.0F, 0.0F, 2.0F, 6.0F, 0.0F, true); + + chasis = new ModelRenderer(this); + chasis.setPos(0.0F, 0.0F, -2.0F); + train.addChild(chasis); + chasis.texOffs(65, 0).addBox(-7.0F, -9.1F, -24.0F, 14.0F, 0.0F, 17.0F, 0.0F, false); + chasis.texOffs(39, 0).addBox(-7.0F, -7.85F, -28.0F, 14.0F, 0.0F, 5.0F, 0.0F, false); + chasis.texOffs(105, 33).addBox(-7.0F, -6.1F, -33.0F, 14.0F, 5.0F, 1.0F, 0.0F, false); + chasis.texOffs(39, 5).addBox(-7.0F, -6.1F, -32.0F, 14.0F, 0.0F, 5.0F, 0.0F, false); + chasis.texOffs(47, 12).addBox(-3.0F, -6.0F, -31.0F, 6.0F, 5.0F, 23.0F, 0.0F, false); + chasis.texOffs(108, 15).addBox(-4.0F, -6.0F, -8.0F, 8.0F, 4.0F, 14.0F, 0.0F, false); + chasis.texOffs(76, 40).addBox(-10.0F, -4.0F, -6.0F, 20.0F, 0.0F, 12.0F, 0.0F, false); + chasis.texOffs(70, 17).addBox(-10.0F, -1.0F, -6.0F, 20.0F, 0.0F, 12.0F, 0.0F, false); + chasis.texOffs(44, 10).addBox(-2.0F, -10.0F, -14.0F, 4.0F, 5.0F, 6.0F, 0.0F, false); + chasis.texOffs(0, 0).addBox(-2.0F, -10.0F, -27.0F, 4.0F, 5.0F, 7.0F, 0.0F, false); + chasis.texOffs(16, 8).addBox(0.0F, -6.1F, -37.0F, 0.0F, 5.0F, 4.0F, 0.0F, false); + + drivingwheelfront3 = new ModelRenderer(this); + drivingwheelfront3.setPos(0.0F, -2.5F, -22.5F); + train.addChild(drivingwheelfront3); + drivingwheelfront3.texOffs(121, 2).addBox(-4.5F, -0.5F, -0.5F, 9.0F, 1.0F, 1.0F, 0.0F, false); + drivingwheelfront3.texOffs(123, 45).addBox(-5.0F, -3.5F, -3.5F, 1.0F, 7.0F, 7.0F, 0.0F, false); + drivingwheelfront3.texOffs(123, 45).addBox(4.0F, -3.5F, -3.5F, 1.0F, 7.0F, 7.0F, 0.0F, true); + + drivingwheelfront2 = new ModelRenderer(this); + drivingwheelfront2.setPos(0.0F, -2.5F, -14.0F); + train.addChild(drivingwheelfront2); + drivingwheelfront2.texOffs(125, 61).addBox(-4.5F, -0.5F, -0.5F, 9.0F, 1.0F, 1.0F, 0.0F, false); + drivingwheelfront2.texOffs(123, 45).addBox(-5.0F, -3.5F, -3.5F, 1.0F, 7.0F, 7.0F, 0.0F, false); + drivingwheelfront2.texOffs(123, 45).addBox(4.0F, -3.5F, -3.5F, 1.0F, 7.0F, 7.0F, 0.0F, true); + } + + @Override + public void setupAnim(VehicleBaseEntity entity, float limbSwing, float limbSwingAmount, float ageInTicks, float netHeadYaw, float headPitch){ + //previously the render function, render code was moved to a method below + } + + @Override + public void renderToBuffer(MatrixStack matrixStack, IVertexBuilder buffer, int packedLight, int packedOverlay, float red, float green, float blue, float alpha){ + train.render(matrixStack, buffer, packedLight, packedOverlay, red, green, blue, alpha); + } + + public void setRotationAngle(ModelRenderer modelRenderer, float x, float y, float z) { + modelRenderer.xRot = x; + modelRenderer.yRot = y; + modelRenderer.zRot = z; + } +} \ No newline at end of file diff --git a/src/main/java/net/halbear/steampowered/trains/rendering/models/USA040_MCP_DAMAGED.java b/src/main/java/net/halbear/steampowered/trains/rendering/models/USA040_MCP_DAMAGED.java new file mode 100644 index 0000000..287969a --- /dev/null +++ b/src/main/java/net/halbear/steampowered/trains/rendering/models/USA040_MCP_DAMAGED.java @@ -0,0 +1,265 @@ +package net.halbear.steampowered.trains.rendering.models;// Made with Blockbench 5.1.4 +// Exported for Minecraft version 1.15 - 1.16 with MCP mappings +// Paste this class into your mod and generate all required imports +import com.mojang.blaze3d.matrix.MatrixStack; +import com.mojang.blaze3d.vertex.IVertexBuilder; +import net.halbear.hvf.Entity.VehicleBaseEntity; +import net.minecraft.client.renderer.entity.model.EntityModel; +import net.minecraft.client.renderer.model.ModelRenderer; + + +public class USA040_MCP_DAMAGED extends EntityModel { + private final ModelRenderer train; + private final ModelRenderer piston2; + private final ModelRenderer cube_r1; + private final ModelRenderer cube_r2; + private final ModelRenderer piston; + private final ModelRenderer cube_r3; + private final ModelRenderer cube_r4; + private final ModelRenderer cabin; + private final ModelRenderer cube_r5; + private final ModelRenderer cube_r6; + private final ModelRenderer cube_r7; + private final ModelRenderer cube_r8; + private final ModelRenderer smokestack; + private final ModelRenderer boiler; + 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 buffer2; + private final ModelRenderer buffer; + private final ModelRenderer lamp; + private final ModelRenderer chasis; + private final ModelRenderer cube_r17; + private final ModelRenderer drivingwheelfront3; + private final ModelRenderer drivingwheelfront2; + + public USA040_MCP_DAMAGED() { + texWidth = 256; + texHeight = 256; + + train = new ModelRenderer(this); + train.setPos(0.0F, 24.0F, 18.0F); + + + piston2 = new ModelRenderer(this); + piston2.setPos(-3.7381F, -8.4641F, -31.0F); + train.addChild(piston2); + piston2.texOffs(58, 4).addBox(-3.2619F, 4.4641F, -2.0F, 0.0F, 4.0F, 6.0F, 0.0F, false); + piston2.texOffs(0, 18).addBox(-1.7619F, 2.4641F, 4.0F, 0.0F, 6.0F, 17.0F, 0.0F, false); + + cube_r1 = new ModelRenderer(this); + cube_r1.setPos(-1.7619F, 4.9641F, 0.5F); + piston2.addChild(cube_r1); + setRotationAngle(cube_r1, 0.0F, 0.0F, -0.7418F); + cube_r1.texOffs(104, 92).addBox(-1.5F, -1.5F, -2.5F, 3.0F, 3.0F, 6.0F, 0.0F, true); + + cube_r2 = new ModelRenderer(this); + cube_r2.setPos(0.0F, 0.0F, 0.0F); + piston2.addChild(cube_r2); + setRotationAngle(cube_r2, 0.0F, 0.0F, -1.2217F); + cube_r2.texOffs(39, 21).addBox(-2.5F, 1.0F, -4.0F, 7.0F, 0.0F, 5.0F, 0.0F, false); + cube_r2.texOffs(46, 40).addBox(-4.5F, -1.0F, -1.0F, 9.0F, 2.0F, 2.0F, 0.0F, false); + + piston = new ModelRenderer(this); + piston.setPos(3.7381F, -8.4641F, -31.0F); + train.addChild(piston); + piston.texOffs(0, 18).addBox(1.7619F, 2.4641F, 4.0F, 0.0F, 6.0F, 17.0F, 0.0F, true); + piston.texOffs(58, 4).addBox(3.2619F, 4.4641F, -2.0F, 0.0F, 4.0F, 6.0F, 0.0F, true); + + cube_r3 = new ModelRenderer(this); + cube_r3.setPos(0.0F, 0.0F, 0.0F); + piston.addChild(cube_r3); + setRotationAngle(cube_r3, 0.0F, 0.0F, 1.2217F); + cube_r3.texOffs(46, 40).addBox(-4.5F, -1.0F, -1.0F, 9.0F, 2.0F, 2.0F, 0.0F, true); + cube_r3.texOffs(39, 21).addBox(-4.5F, 1.0F, -4.0F, 7.0F, 0.0F, 5.0F, 0.0F, true); + + cube_r4 = new ModelRenderer(this); + cube_r4.setPos(1.7619F, 4.9641F, 0.5F); + piston.addChild(cube_r4); + setRotationAngle(cube_r4, 0.0F, 0.0F, 0.7418F); + cube_r4.texOffs(104, 92).addBox(-1.5F, -1.5F, -2.5F, 3.0F, 3.0F, 6.0F, 0.0F, false); + + cabin = new ModelRenderer(this); + cabin.setPos(-5.5F, -3.5F, -30.5F); + train.addChild(cabin); + + + cube_r5 = new ModelRenderer(this); + cube_r5.setPos(5.5F, -12.5F, 24.5F); + cabin.addChild(cube_r5); + setRotationAngle(cube_r5, 0.0F, 3.1416F, 0.0F); + cube_r5.texOffs(122, 119).addBox(-8.0F, -10.0F, 0.75F, 16.0F, 20.0F, 0.0F, 0.0F, false); + + cube_r6 = new ModelRenderer(this); + cube_r6.setPos(5.5F, -12.5F, 28.5F); + cabin.addChild(cube_r6); + setRotationAngle(cube_r6, -0.0435F, 0.0038F, 0.0872F); + cube_r6.texOffs(210, 93).addBox(-8.0F, -13.0F, -8.0F, 16.0F, 23.0F, 1.0F, 0.0F, false); + cube_r6.texOffs(88, 119).addBox(-8.0F, -13.0F, 7.0F, 16.0F, 23.0F, 1.0F, 0.0F, false); + cube_r6.texOffs(76, 75).addBox(-8.0F, 9.75F, -8.0F, 16.0F, 1.0F, 16.0F, 0.0F, false); + cube_r6.texOffs(160, 75).addBox(-8.05F, -12.25F, -8.0F, 0.0F, 28.0F, 16.0F, 0.0F, false); + cube_r6.texOffs(160, 75).addBox(8.05F, -12.25F, -8.0F, 0.0F, 28.0F, 16.0F, 0.0F, true); + cube_r6.texOffs(32, 112).addBox(-1.0F, -16.0F, -9.0F, 2.0F, 3.0F, 18.0F, 0.0F, false); + cube_r6.texOffs(222, 251).addBox(-8.0F, -17.0F, -8.0F, 16.0F, 4.0F, 1.0F, 0.0F, false); + cube_r6.texOffs(222, 251).addBox(-8.0F, -17.0F, 7.0F, 16.0F, 4.0F, 1.0F, 0.0F, false); + + cube_r7 = new ModelRenderer(this); + cube_r7.setPos(5.5F, -12.5F, 28.5F); + cabin.addChild(cube_r7); + setRotationAngle(cube_r7, -0.0395F, 0.0184F, 0.436F); + cube_r7.texOffs(88, 52).addBox(-4.6787F, -15.2022F, -8.5F, 9.0F, 1.0F, 17.0F, 0.0F, true); + + cube_r8 = new ModelRenderer(this); + cube_r8.setPos(5.5F, -12.5F, 28.5F); + cabin.addChild(cube_r8); + setRotationAngle(cube_r8, -0.0421F, -0.0113F, -0.2616F); + cube_r8.texOffs(88, 52).addBox(-4.3213F, -15.2022F, -8.5F, 9.0F, 1.0F, 17.0F, 0.0F, false); + + smokestack = new ModelRenderer(this); + smokestack.setPos(-2.0F, 0.0F, -2.0F); + train.addChild(smokestack); + setRotationAngle(smokestack, 0.0F, 0.0F, 0.1309F); + smokestack.texOffs(132, 36).addBox(-1.5F, -31.0F, -28.0F, 3.0F, 13.0F, 3.0F, 0.0F, false); + smokestack.texOffs(72, 125).addBox(-7.5F, -35.0F, -26.5F, 5.0F, 31.0F, 0.0F, 0.0F, false); + smokestack.texOffs(124, 79).addBox(-2.5F, -35.0F, -29.0F, 5.0F, 4.0F, 5.0F, 0.0F, false); + + boiler = new ModelRenderer(this); + boiler.setPos(0.0F, 0.0F, -2.0F); + train.addChild(boiler); + boiler.texOffs(124, 70).addBox(-2.5F, -22.0F, -22.0F, 5.0F, 4.0F, 5.0F, 0.0F, false); + boiler.texOffs(0, 12).addBox(-2.5F, -22.0F, -14.0625F, 5.0F, 5.0F, 6.0F, 0.0F, false); + boiler.texOffs(48, 133).addBox(-6.35F, -14.1F, -7.05F, 6.0F, 8.0F, 2.0F, 0.0F, false); + boiler.texOffs(32, 133).addBox(0.35F, -14.1F, -7.05F, 6.0F, 8.0F, 2.0F, 0.0F, false); + boiler.texOffs(46, 51).addBox(-5.0F, -23.0F, -31.0F, 0.0F, 17.0F, 23.0F, 0.0F, false); + boiler.texOffs(46, 51).addBox(5.0F, -23.0F, -31.0F, 0.0F, 17.0F, 23.0F, 0.0F, true); + + cube_r9 = new ModelRenderer(this); + cube_r9.setPos(-5.0F, -18.0F, -19.5F); + boiler.addChild(cube_r9); + setRotationAngle(cube_r9, 0.0F, 0.0F, -0.3927F); + cube_r9.texOffs(188, 216).addBox(0.0F, -5.0F, -11.5F, 0.0F, 17.0F, 23.0F, 0.0F, false); + + cube_r10 = new ModelRenderer(this); + cube_r10.setPos(5.0F, -18.0F, -19.5F); + boiler.addChild(cube_r10); + setRotationAngle(cube_r10, 0.0F, 0.0F, 0.3927F); + cube_r10.texOffs(188, 216).addBox(0.0F, -5.0F, -11.5F, 0.0F, 17.0F, 23.0F, 0.0F, true); + + cube_r11 = new ModelRenderer(this); + cube_r11.setPos(0.0F, -16.0F, 0.0F); + boiler.addChild(cube_r11); + setRotationAngle(cube_r11, -0.0435F, 0.0038F, 0.0872F); + cube_r11.texOffs(0, 73).addBox(5.0F, -11.0F, -9.0F, 0.0F, 21.0F, 18.0F, 0.0F, false); + cube_r11.texOffs(36, 73).addBox(-5.0F, -11.0F, -9.0F, 0.0F, 21.0F, 18.0F, 0.0F, false); + + cube_r12 = new ModelRenderer(this); + cube_r12.setPos(0.0F, -10.5F, -4.75F); + boiler.addChild(cube_r12); + setRotationAngle(cube_r12, 3.1416F, 0.0F, 0.0F); + cube_r12.texOffs(126, 6).addBox(-4.0F, -4.5F, 0.0F, 8.0F, 9.0F, 0.0F, 0.0F, false); + + cube_r13 = new ModelRenderer(this); + cube_r13.setPos(0.25F, -15.7145F, -31.75F); + boiler.addChild(cube_r13); + setRotationAngle(cube_r13, 0.0F, -0.1309F, 0.7854F); + cube_r13.texOffs(226, 0).addBox(-0.5F, -0.5F, -6.5F, 1.0F, 1.0F, 13.0F, 0.0F, false); + + cube_r14 = new ModelRenderer(this); + cube_r14.setPos(-1.75F, -14.7145F, -33.75F); + boiler.addChild(cube_r14); + setRotationAngle(cube_r14, 0.0F, 0.1309F, 0.7854F); + cube_r14.texOffs(226, 0).addBox(-0.5F, -0.5F, -6.5F, 1.0F, 1.0F, 13.0F, 0.0F, false); + + cube_r15 = new ModelRenderer(this); + cube_r15.setPos(1.25F, -12.7145F, -33.75F); + boiler.addChild(cube_r15); + setRotationAngle(cube_r15, 0.0F, -0.1745F, 0.7854F); + cube_r15.texOffs(226, 0).addBox(-0.5F, -0.5F, -6.5F, 1.0F, 1.0F, 13.0F, 0.0F, false); + + cube_r16 = new ModelRenderer(this); + cube_r16.setPos(0.0F, -12.0F, -18.5F); + boiler.addChild(cube_r16); + setRotationAngle(cube_r16, 0.0F, 0.0F, 0.7854F); + cube_r16.texOffs(0, 0).addBox(-6.0F, -6.0F, -12.5F, 9.0F, 9.0F, 26.0F, 0.0F, false); + + buffer2 = new ModelRenderer(this); + buffer2.setPos(0.0F, 0.0F, -2.0F); + train.addChild(buffer2); + buffer2.texOffs(70, 7).addBox(-5.0F, -5.1F, -36.0F, 2.0F, 2.0F, 3.0F, 0.0F, false); + buffer2.texOffs(72, 0).addBox(-6.0F, -6.1F, -37.0F, 4.0F, 4.0F, 1.0F, 0.0F, false); + + buffer = new ModelRenderer(this); + buffer.setPos(4.0F, -3.1F, -36.5F); + train.addChild(buffer); + setRotationAngle(buffer, 0.3054F, 0.0F, 0.0F); + buffer.texOffs(21, 138).addBox(-1.0F, -1.0F, -0.5F, 2.0F, 2.0F, 3.0F, 0.0F, false); + buffer.texOffs(11, 138).addBox(-2.0F, -2.0F, -1.5F, 4.0F, 4.0F, 1.0F, 0.0F, false); + + lamp = new ModelRenderer(this); + lamp.setPos(0.0F, 0.0F, -2.0F); + train.addChild(lamp); + lamp.texOffs(0, 138).addBox(-1.5F, -23.1F, -33.0F, 3.0F, 3.0F, 5.0F, 0.0F, false); + lamp.texOffs(96, 29).addBox(-1.5F, -23.1F, -35.0F, 3.0F, 3.0F, 2.0F, 0.0F, false); + lamp.texOffs(9, 0).addBox(-2.5F, -20.0F, -34.0F, 5.0F, 0.0F, 6.0F, 0.0F, false); + lamp.texOffs(12, 17).addBox(-1.2F, -20.0F, -34.0F, 0.0F, 2.0F, 6.0F, 0.0F, false); + lamp.texOffs(12, 17).addBox(1.2F, -20.0F, -34.0F, 0.0F, 2.0F, 6.0F, 0.0F, true); + + chasis = new ModelRenderer(this); + chasis.setPos(0.0F, 0.0F, -2.0F); + train.addChild(chasis); + chasis.texOffs(65, 0).addBox(-7.0F, -9.1F, -24.0F, 14.0F, 0.0F, 17.0F, 0.0F, false); + chasis.texOffs(39, 0).addBox(-7.0F, -7.85F, -28.0F, 14.0F, 0.0F, 5.0F, 0.0F, false); + chasis.texOffs(105, 33).addBox(-7.0F, -6.1F, -33.0F, 14.0F, 5.0F, 1.0F, 0.0F, false); + chasis.texOffs(39, 5).addBox(-7.0F, -6.1F, -32.0F, 14.0F, 0.0F, 5.0F, 0.0F, false); + chasis.texOffs(47, 12).addBox(-3.0F, -6.0F, -31.0F, 6.0F, 5.0F, 23.0F, 0.0F, false); + chasis.texOffs(44, 10).addBox(-2.0F, -10.0F, -14.0F, 4.0F, 5.0F, 6.0F, 0.0F, false); + chasis.texOffs(0, 0).addBox(-2.0F, -10.0F, -27.0F, 4.0F, 5.0F, 7.0F, 0.0F, false); + chasis.texOffs(16, 8).addBox(0.0F, -6.1F, -37.0F, 0.0F, 5.0F, 4.0F, 0.0F, false); + + cube_r17 = new ModelRenderer(this); + cube_r17.setPos(0.0F, -16.0F, 0.0F); + chasis.addChild(cube_r17); + setRotationAngle(cube_r17, -0.0435F, 0.0038F, 0.0872F); + cube_r17.texOffs(70, 17).addBox(-10.0F, 15.0F, -6.0F, 20.0F, 0.0F, 12.0F, 0.0F, false); + cube_r17.texOffs(76, 40).addBox(-10.0F, 12.0F, -6.0F, 20.0F, 0.0F, 12.0F, 0.0F, false); + cube_r17.texOffs(108, 15).addBox(-4.0F, 10.0F, -8.0F, 8.0F, 4.0F, 14.0F, 0.0F, false); + + drivingwheelfront3 = new ModelRenderer(this); + drivingwheelfront3.setPos(0.0F, -2.5F, -22.5F); + train.addChild(drivingwheelfront3); + setRotationAngle(drivingwheelfront3, 0.0F, 0.0436F, 0.0F); + drivingwheelfront3.texOffs(121, 2).addBox(-4.5F, -0.5F, -0.5F, 9.0F, 1.0F, 1.0F, 0.0F, false); + drivingwheelfront3.texOffs(123, 45).addBox(-5.0F, -3.5F, -3.5F, 1.0F, 7.0F, 7.0F, 0.0F, false); + drivingwheelfront3.texOffs(123, 45).addBox(4.0F, -3.5F, -3.5F, 1.0F, 7.0F, 7.0F, 0.0F, true); + + drivingwheelfront2 = new ModelRenderer(this); + drivingwheelfront2.setPos(0.0F, -2.5F, -14.0F); + train.addChild(drivingwheelfront2); + setRotationAngle(drivingwheelfront2, 0.0F, -0.0873F, 0.0873F); + drivingwheelfront2.texOffs(125, 61).addBox(-4.5F, -0.5F, -0.5F, 9.0F, 1.0F, 1.0F, 0.0F, false); + drivingwheelfront2.texOffs(123, 45).addBox(-5.0F, -3.5F, -3.5F, 1.0F, 7.0F, 7.0F, 0.0F, false); + drivingwheelfront2.texOffs(123, 45).addBox(4.0F, -3.5F, -3.5F, 1.0F, 7.0F, 7.0F, 0.0F, true); + } + @Override + public void setupAnim(VehicleBaseEntity entity, float limbSwing, float limbSwingAmount, float ageInTicks, float netHeadYaw, float headPitch){ + //previously the render function, render code was moved to a method below + } + + @Override + public void renderToBuffer(MatrixStack matrixStack, IVertexBuilder buffer, int packedLight, int packedOverlay, float red, float green, float blue, float alpha){ + train.render(matrixStack, buffer, packedLight, packedOverlay, red, green, blue, alpha); + } + + public void setRotationAngle(ModelRenderer modelRenderer, float x, float y, float z) { + modelRenderer.xRot = x; + modelRenderer.yRot = y; + modelRenderer.zRot = z; + } + +} \ No newline at end of file diff --git a/src/main/java/net/halbear/steampowered/trains/rendering/renderers/SteamLocomotiveRenderer.java b/src/main/java/net/halbear/steampowered/trains/rendering/renderers/SteamLocomotiveRenderer.java new file mode 100644 index 0000000..dfe838d --- /dev/null +++ b/src/main/java/net/halbear/steampowered/trains/rendering/renderers/SteamLocomotiveRenderer.java @@ -0,0 +1,18 @@ +package net.halbear.steampowered.trains.rendering.renderers; + +import net.halbear.hvf.Entity.Renderer.VehicleBaseRenderer; +import net.halbear.hvf.UsageExamples.Aeroplane.Renderer.Models.AeroplaneModel; +import net.halbear.hvf.UsageExamples.Aeroplane.Renderer.Models.DamagedPlane; +import net.halbear.steampowered.HalsSteampowered; +import net.halbear.steampowered.trains.rendering.models.USA040_MCP; +import net.halbear.steampowered.trains.rendering.models.USA040_MCP_DAMAGED; +import net.minecraft.client.renderer.entity.EntityRendererManager; +import net.minecraft.client.renderer.entity.model.EntityModel; + +public class SteamLocomotiveRenderer extends VehicleBaseRenderer { + + public SteamLocomotiveRenderer(EntityRendererManager renderManagerIn) { + super(renderManagerIn, new EntityModel[]{new USA040_MCP()}, "textures/entities/usa040.png", HalsSteampowered.MODID); + AddRendererState("DAMAGED", new EntityModel[]{new USA040_MCP_DAMAGED()}, "textures/entities/usa040_damaged.png"); + } +} diff --git a/src/main/resources/META-INF/mods.toml b/src/main/resources/META-INF/mods.toml index 0e18ee4..2f5c2cf 100644 --- a/src/main/resources/META-INF/mods.toml +++ b/src/main/resources/META-INF/mods.toml @@ -46,3 +46,10 @@ mandatory=true versionRange="1.16.5" ordering="NONE" side="BOTH" + +[[dependencies."hals_steampowered"]] +modId = "hals_vehicle_framework" +mandatory = true +versionRange = "1.16.5" +ordering = "NONE" +side = "BOTH" \ No newline at end of file diff --git a/src/main/resources/assets/hals_steampowered/textures/entities/usa040.png b/src/main/resources/assets/hals_steampowered/textures/entities/usa040.png new file mode 100644 index 0000000..762f09a Binary files /dev/null and b/src/main/resources/assets/hals_steampowered/textures/entities/usa040.png differ diff --git a/src/main/resources/assets/hals_steampowered/textures/entities/usa040_damaged.png b/src/main/resources/assets/hals_steampowered/textures/entities/usa040_damaged.png new file mode 100644 index 0000000..ad0c089 Binary files /dev/null and b/src/main/resources/assets/hals_steampowered/textures/entities/usa040_damaged.png differ diff --git a/src/main/resources/hals_steampowered.mixin.json b/src/main/resources/hals_steampowered.mixin.json deleted file mode 100644 index e596f29..0000000 --- a/src/main/resources/hals_steampowered.mixin.json +++ /dev/null @@ -1,12 +0,0 @@ -{ - "required": true, - "package": "net.halbear.steampowered.registry.utility.mixin", - "compatibilityLevel": "JAVA_8", - "client": [ - "CameraMixin" - ], - "injectors": { - "defaultRequire": 1 - }, - "refmap": "hals_steampowered.mixin-refmap.json" -}