converted mod to use Hals Vehicle Framework

This commit is contained in:
Halbear
2026-05-27 22:19:11 +01:00
parent 81d757f056
commit b931f6ae2b
18 changed files with 600 additions and 255 deletions
+40 -122
View File
@@ -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/')
}
}
}
// 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,
jvmArgs = [
"--add-exports=java.base/sun.security.util=ALL-UNNAMED",
"--add-opens=java.base/java.util.jar=ALL-UNNAMED"
]
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
mods {
hals_steampowered {
source sourceSets.main
}
}
repositories {
maven {
url "file://${project.projectDir}/mcmodsrepo"
}
}
}
tasks.withType(JavaCompile).configureEach {
options.encoding = 'UTF-8' // Use the UTF-8 charset for Java compilation
dependencies {
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")
}
Binary file not shown.
@@ -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<EntityType<?>> ENTITIES = DeferredRegister.create(ForgeRegistries.ENTITIES, HalsSteampowered.MODID);
public static final RegistryObject<EntityType<Steam_Alice_040>> 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<EntityType<SteamLocomotive>> 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);
@@ -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);
}
}
@@ -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_);
}
@@ -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;
}
}
@@ -1,4 +0,0 @@
package net.halbear.steampowered.trains;
public interface ISteampoweredEntityTrainLocomotive {
}
@@ -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);
}
}
@@ -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);
}
}
@@ -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);
}
}
@@ -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");
}
}
@@ -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<VehicleBaseEntity> {
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;
}
}
@@ -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<VehicleBaseEntity> {
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;
}
}
@@ -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");
}
}
+7
View File
@@ -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"
Binary file not shown.

After

Width:  |  Height:  |  Size: 8.2 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 11 KiB

@@ -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"
}