diff --git a/build.gradle b/build.gradle index a6f1ea9..81859f1 100644 --- a/build.gradle +++ b/build.gradle @@ -2,25 +2,32 @@ buildscript { repositories { maven { url = 'https://maven.minecraftforge.net' } maven { url = 'https://maven.parchmentmc.org' } + maven { url = 'https://repo.spongepowered.org/maven' } mavenCentral() } dependencies { classpath group: 'net.minecraftforge.gradle', name: 'ForgeGradle', version: '5.1.+', changing: true classpath 'org.parchmentmc:librarian:1.+' + classpath 'org.spongepowered:mixingradle:0.7.+' } } apply plugin: 'net.minecraftforge.gradle' +apply plugin: 'org.spongepowered.mixin' apply plugin: 'org.parchmentmc.librarian.forgegradle' apply plugin: 'eclipse' apply plugin: 'maven-publish' version = '1.16.5-0.1' -group = 'dev.halbear1.supernova' // http://maven.apache.org/guides/mini/guide-naming-conventions.html +group = 'net.halbear.supernova' // http://maven.apache.org/guides/mini/guide-naming-conventions.html archivesBaseName = 'supernova' java.toolchain.languageVersion = JavaLanguageVersion.of(8) // Mojang ships Java 8 to end users, so your mod should target Java 8. +mixin { + add sourceSets.main, "supernova.mixin-refmap.json" +} + println('Java: ' + System.getProperty('java.version') + ' JVM: ' + System.getProperty('java.vm.version') + '(' + System.getProperty('java.vendor') + ') Arch: ' + System.getProperty('os.arch')) minecraft { @@ -29,7 +36,11 @@ minecraft { runs { client { workingDirectory project.file('run') + property 'mixin.env.remapRefMap', 'true' + property 'mixin.env.refMapRemappingFile', "${projectDir}/build/createSrgToMcp/output.srg" + + arg "-mixin.config=supernova.mixin.json" property 'forge.logging.markers', 'REGISTRIES' property 'forge.logging.console.level', 'debug' @@ -85,13 +96,14 @@ dependencies { jar { manifest { attributes([ - "Specification-Title": "supernova", - "Specification-Vendor": "supernovasareus", - "Specification-Version": "1", // We are version 1 of ourselves - "Implementation-Title": project.name, - "Implementation-Version": "${version}", - "Implementation-Vendor" :"supernovasareus", - "Implementation-Timestamp": new Date().format("yyyy-MM-dd'T'HH:mm:ssZ") + "Specification-Title" : "supernova", + "Specification-Vendor" : "halbear", + "Specification-Version" : "1", + "Implementation-Title" : project.name, + "Implementation-Version" : "${version}", + "Implementation-Vendor" : "halbear", + "Implementation-Timestamp": new Date().format("yyyy-MM-dd'T'HH:mm:ssZ"), + "MixinConfigs" : "supernova.mixin.json" ]) } } diff --git a/src/main/java/dev/halbear1/supernova/custom/fluid/SupernovaOverlayRenderer.java b/src/main/java/dev/halbear1/supernova/custom/fluid/SupernovaOverlayRenderer.java deleted file mode 100644 index 0f73896..0000000 --- a/src/main/java/dev/halbear1/supernova/custom/fluid/SupernovaOverlayRenderer.java +++ /dev/null @@ -1,4 +0,0 @@ -package dev.halbear1.supernova.custom.fluid; - -public class SupernovaOverlayRenderer { -} diff --git a/src/main/java/dev/halbear1/supernova/data/DataGenerators.java b/src/main/java/dev/halbear1/supernova/data/DataGenerators.java deleted file mode 100644 index 344ed70..0000000 --- a/src/main/java/dev/halbear1/supernova/data/DataGenerators.java +++ /dev/null @@ -1,12 +0,0 @@ -package dev.halbear1.supernova.data; - -import dev.halbear1.supernova.SuperNova; -import net.minecraft.data.DataGenerator; -import net.minecraftforge.eventbus.api.SubscribeEvent; -import net.minecraftforge.fml.common.Mod; -import net.minecraftforge.fml.event.lifecycle.GatherDataEvent; - -@Mod.EventBusSubscriber(modid = SuperNova.MOD_ID, bus = Mod.EventBusSubscriber.Bus.MOD) -public class DataGenerators { - -} diff --git a/src/main/java/dev/halbear1/supernova/registry/ModEntities.java b/src/main/java/dev/halbear1/supernova/registry/ModEntities.java deleted file mode 100644 index e0b8691..0000000 --- a/src/main/java/dev/halbear1/supernova/registry/ModEntities.java +++ /dev/null @@ -1,4 +0,0 @@ -package dev.halbear1.supernova.registry; - -public class ModEntities { -} diff --git a/src/main/java/dev/halbear1/supernova/registry/worldgen/ModFeatures.java b/src/main/java/dev/halbear1/supernova/registry/worldgen/ModFeatures.java deleted file mode 100644 index 5d38c19..0000000 --- a/src/main/java/dev/halbear1/supernova/registry/worldgen/ModFeatures.java +++ /dev/null @@ -1,4 +0,0 @@ -package dev.halbear1.supernova.registry.worldgen; - -public class ModFeatures { -} diff --git a/src/main/java/dev/halbear1/supernova/world/gen/ores/OreInCave.java b/src/main/java/dev/halbear1/supernova/world/gen/ores/OreInCave.java deleted file mode 100644 index 228079b..0000000 --- a/src/main/java/dev/halbear1/supernova/world/gen/ores/OreInCave.java +++ /dev/null @@ -1,4 +0,0 @@ -package dev.halbear1.supernova.world.gen.ores; - -public class OreInCave { -} diff --git a/src/main/java/dev/halbear1/supernova/SuperNova.java b/src/main/java/net/halbear/supernova/SuperNova.java similarity index 86% rename from src/main/java/dev/halbear1/supernova/SuperNova.java rename to src/main/java/net/halbear/supernova/SuperNova.java index 9520c35..78505e0 100644 --- a/src/main/java/dev/halbear1/supernova/SuperNova.java +++ b/src/main/java/net/halbear/supernova/SuperNova.java @@ -1,20 +1,16 @@ -package dev.halbear1.supernova; +package net.halbear.supernova; -import dev.halbear1.supernova.registry.ModParticles; -import dev.halbear1.supernova.registry.blocks.ModBlocks; -import dev.halbear1.supernova.registry.blocks.ModFluids; -import dev.halbear1.supernova.registry.items.ModItems; -import dev.halbear1.supernova.registry.util.ModSoundEvents; -import dev.halbear1.supernova.registry.worldgen.ModBiomes; -import dev.halbear1.supernova.registry.worldgen.ModConfiguredFeatures; +import net.halbear.supernova.registry.ModEntities; +import net.halbear.supernova.registry.ModParticles; +import net.halbear.supernova.registry.blocks.ModBlocks; +import net.halbear.supernova.registry.blocks.ModFluids; +import net.halbear.supernova.registry.items.ModItems; +import net.halbear.supernova.registry.util.ModSoundEvents; +import net.halbear.supernova.registry.worldgen.ModBiomes; +import net.halbear.supernova.registry.worldgen.ModConfiguredFeatures; import net.minecraft.block.Block; -import net.minecraft.entity.player.PlayerEntity; -import net.minecraft.util.RegistryKey; -import net.minecraft.util.ResourceLocation; -import net.minecraft.util.registry.Registry; import net.minecraftforge.common.MinecraftForge; import net.minecraftforge.event.RegistryEvent; -import net.minecraftforge.event.entity.player.PlayerEvent; import net.minecraftforge.eventbus.api.IEventBus; import net.minecraftforge.eventbus.api.SubscribeEvent; import net.minecraftforge.fml.InterModComms; @@ -39,10 +35,14 @@ public class SuperNova // to chef, peaceful and pal, no touchy // Directly reference a log4j logger. private static final Logger LOGGER = LogManager.getLogger(); + public static float DegToRad = (float)Math.PI/180.0F; + public static float RadToDeg = 180.0F/(float)Math.PI; + public SuperNova() { //hal //creates a mod event bus IEventBus bus = FMLJavaModLoadingContext.get().getModEventBus(); //register the mod elements on the mod event bus (loads them) + ModEntities.ENTITY_TYPES.register(bus); ModBlocks.BLOCKS.register(bus); ModItems.ITEMS.register(bus); ModFluids.FLUIDS.register(bus); diff --git a/src/main/java/dev/halbear1/supernova/custom/block/ArcFurnace.java b/src/main/java/net/halbear/supernova/custom/block/ArcFurnace.java similarity index 95% rename from src/main/java/dev/halbear1/supernova/custom/block/ArcFurnace.java rename to src/main/java/net/halbear/supernova/custom/block/ArcFurnace.java index 0d5a90f..024c241 100644 --- a/src/main/java/dev/halbear1/supernova/custom/block/ArcFurnace.java +++ b/src/main/java/net/halbear/supernova/custom/block/ArcFurnace.java @@ -1,4 +1,4 @@ -package dev.halbear1.supernova.custom.block; +package net.halbear.supernova.custom.block; import net.minecraft.block.*; import net.minecraft.item.BlockItemUseContext; diff --git a/src/main/java/dev/halbear1/supernova/custom/block/DebugPortalBlock.java b/src/main/java/net/halbear/supernova/custom/block/DebugPortalBlock.java similarity index 94% rename from src/main/java/dev/halbear1/supernova/custom/block/DebugPortalBlock.java rename to src/main/java/net/halbear/supernova/custom/block/DebugPortalBlock.java index 97ef958..6c85e89 100644 --- a/src/main/java/dev/halbear1/supernova/custom/block/DebugPortalBlock.java +++ b/src/main/java/net/halbear/supernova/custom/block/DebugPortalBlock.java @@ -1,8 +1,8 @@ -package dev.halbear1.supernova.custom.block; +package net.halbear.supernova.custom.block; -import dev.halbear1.supernova.registry.blocks.ModBlocks; -import dev.halbear1.supernova.registry.worldgen.ModDimensions; -import dev.halbear1.supernova.world.dimension.DebugTeleporter; +import net.halbear.supernova.registry.blocks.ModBlocks; +import net.halbear.supernova.registry.worldgen.ModDimensions; +import net.halbear.supernova.world.dimension.DebugTeleporter; import net.minecraft.block.Block; import net.minecraft.block.BlockState; import net.minecraft.entity.player.PlayerEntity; diff --git a/src/main/java/dev/halbear1/supernova/custom/block/HorizontalRotationalDecorBlock.java b/src/main/java/net/halbear/supernova/custom/block/HorizontalRotationalDecorBlock.java similarity index 95% rename from src/main/java/dev/halbear1/supernova/custom/block/HorizontalRotationalDecorBlock.java rename to src/main/java/net/halbear/supernova/custom/block/HorizontalRotationalDecorBlock.java index aa61c71..6a7f0cd 100644 --- a/src/main/java/dev/halbear1/supernova/custom/block/HorizontalRotationalDecorBlock.java +++ b/src/main/java/net/halbear/supernova/custom/block/HorizontalRotationalDecorBlock.java @@ -1,4 +1,4 @@ -package dev.halbear1.supernova.custom.block; +package net.halbear.supernova.custom.block; import net.minecraft.block.*; import net.minecraft.item.BlockItemUseContext; diff --git a/src/main/java/dev/halbear1/supernova/custom/block/StraightSteelPipe.java b/src/main/java/net/halbear/supernova/custom/block/StraightSteelPipe.java similarity index 94% rename from src/main/java/dev/halbear1/supernova/custom/block/StraightSteelPipe.java rename to src/main/java/net/halbear/supernova/custom/block/StraightSteelPipe.java index 44241f5..b3a3132 100644 --- a/src/main/java/dev/halbear1/supernova/custom/block/StraightSteelPipe.java +++ b/src/main/java/net/halbear/supernova/custom/block/StraightSteelPipe.java @@ -1,14 +1,14 @@ -package dev.halbear1.supernova.custom.block; +package net.halbear.supernova.custom.block; -import dev.halbear1.supernova.custom.block.blockstate_stuff.SupernovaBlockstates; -import dev.halbear1.supernova.registry.blocks.ModBlocks; +import net.halbear.supernova.custom.block.blockstate_stuff.SupernovaBlockstates; +import net.halbear.supernova.registry.blocks.ModBlocks; import net.minecraft.block.*; import net.minecraft.block.material.Material; import net.minecraft.item.BlockItemUseContext; import net.minecraft.state.BooleanProperty; import net.minecraft.state.DirectionProperty; import net.minecraft.state.EnumProperty; -import dev.halbear1.supernova.custom.block.blockstate_stuff.enums.PipeContents; +import net.halbear.supernova.custom.block.blockstate_stuff.enums.PipeContents; import net.minecraft.state.StateContainer; import net.minecraft.state.properties.BlockStateProperties; import net.minecraft.util.Direction; diff --git a/src/main/java/dev/halbear1/supernova/custom/block/blockstate_stuff/SupernovaBlockstates.java b/src/main/java/net/halbear/supernova/custom/block/blockstate_stuff/SupernovaBlockstates.java similarity index 84% rename from src/main/java/dev/halbear1/supernova/custom/block/blockstate_stuff/SupernovaBlockstates.java rename to src/main/java/net/halbear/supernova/custom/block/blockstate_stuff/SupernovaBlockstates.java index 86da407..62c8490 100644 --- a/src/main/java/dev/halbear1/supernova/custom/block/blockstate_stuff/SupernovaBlockstates.java +++ b/src/main/java/net/halbear/supernova/custom/block/blockstate_stuff/SupernovaBlockstates.java @@ -1,6 +1,6 @@ -package dev.halbear1.supernova.custom.block.blockstate_stuff; +package net.halbear.supernova.custom.block.blockstate_stuff; -import dev.halbear1.supernova.custom.block.blockstate_stuff.enums.PipeContents; +import net.halbear.supernova.custom.block.blockstate_stuff.enums.PipeContents; import net.minecraft.state.EnumProperty; public class SupernovaBlockstates { diff --git a/src/main/java/dev/halbear1/supernova/custom/block/blockstate_stuff/enums/PipeContents.java b/src/main/java/net/halbear/supernova/custom/block/blockstate_stuff/enums/PipeContents.java similarity index 85% rename from src/main/java/dev/halbear1/supernova/custom/block/blockstate_stuff/enums/PipeContents.java rename to src/main/java/net/halbear/supernova/custom/block/blockstate_stuff/enums/PipeContents.java index f797d12..599912b 100644 --- a/src/main/java/dev/halbear1/supernova/custom/block/blockstate_stuff/enums/PipeContents.java +++ b/src/main/java/net/halbear/supernova/custom/block/blockstate_stuff/enums/PipeContents.java @@ -1,4 +1,4 @@ -package dev.halbear1.supernova.custom.block.blockstate_stuff.enums; +package net.halbear.supernova.custom.block.blockstate_stuff.enums; import net.minecraft.util.IStringSerializable; diff --git a/src/main/java/dev/halbear1/supernova/custom/fluid/FlammableFluid.java b/src/main/java/net/halbear/supernova/custom/fluid/FlammableFluid.java similarity index 77% rename from src/main/java/dev/halbear1/supernova/custom/fluid/FlammableFluid.java rename to src/main/java/net/halbear/supernova/custom/fluid/FlammableFluid.java index 95a05eb..f6df38b 100644 --- a/src/main/java/dev/halbear1/supernova/custom/fluid/FlammableFluid.java +++ b/src/main/java/net/halbear/supernova/custom/fluid/FlammableFluid.java @@ -1,7 +1,6 @@ -package dev.halbear1.supernova.custom.fluid; +package net.halbear.supernova.custom.fluid; import net.minecraft.block.FlowingFluidBlock; -import net.minecraft.fluid.FlowingFluid; import java.util.function.Supplier; diff --git a/src/main/java/dev/halbear1/supernova/custom/fluid/SupernovaFlowingFluid.java b/src/main/java/net/halbear/supernova/custom/fluid/SupernovaFlowingFluid.java similarity index 98% rename from src/main/java/dev/halbear1/supernova/custom/fluid/SupernovaFlowingFluid.java rename to src/main/java/net/halbear/supernova/custom/fluid/SupernovaFlowingFluid.java index 7c93e7e..ba4ccfd 100644 --- a/src/main/java/dev/halbear1/supernova/custom/fluid/SupernovaFlowingFluid.java +++ b/src/main/java/net/halbear/supernova/custom/fluid/SupernovaFlowingFluid.java @@ -1,4 +1,4 @@ -package dev.halbear1.supernova.custom.fluid; +package net.halbear.supernova.custom.fluid; import net.minecraft.block.Block; import net.minecraft.block.BlockState; @@ -18,7 +18,6 @@ import net.minecraft.world.IBlockReader; import net.minecraft.world.IWorld; import net.minecraft.world.IWorldReader; import net.minecraftforge.fluids.FluidAttributes; -import net.minecraftforge.fluids.ForgeFlowingFluid; import javax.annotation.Nullable; import java.util.function.Supplier; diff --git a/src/main/java/dev/halbear1/supernova/custom/fluid/SupernovaFluidAttributes.java b/src/main/java/net/halbear/supernova/custom/fluid/SupernovaFluidAttributes.java similarity index 85% rename from src/main/java/dev/halbear1/supernova/custom/fluid/SupernovaFluidAttributes.java rename to src/main/java/net/halbear/supernova/custom/fluid/SupernovaFluidAttributes.java index 8ec5646..e85d49e 100644 --- a/src/main/java/dev/halbear1/supernova/custom/fluid/SupernovaFluidAttributes.java +++ b/src/main/java/net/halbear/supernova/custom/fluid/SupernovaFluidAttributes.java @@ -1,12 +1,7 @@ -package dev.halbear1.supernova.custom.fluid; +package net.halbear.supernova.custom.fluid; -import dev.halbear1.supernova.registry.blocks.ModBlocks; -import jdk.nashorn.internal.ir.Block; import net.minecraft.fluid.Fluid; -import net.minecraft.item.Rarity; import net.minecraft.util.ResourceLocation; -import net.minecraft.util.SoundEvent; -import net.minecraftforge.fluids.FluidAttributes; import java.util.function.BiFunction; diff --git a/src/main/java/net/halbear/supernova/custom/fluid/SupernovaOverlayRenderer.java b/src/main/java/net/halbear/supernova/custom/fluid/SupernovaOverlayRenderer.java new file mode 100644 index 0000000..b778cac --- /dev/null +++ b/src/main/java/net/halbear/supernova/custom/fluid/SupernovaOverlayRenderer.java @@ -0,0 +1,4 @@ +package net.halbear.supernova.custom.fluid; + +public class SupernovaOverlayRenderer { +} diff --git a/src/main/java/net/halbear/supernova/data/DataGenerators.java b/src/main/java/net/halbear/supernova/data/DataGenerators.java new file mode 100644 index 0000000..c8fe97a --- /dev/null +++ b/src/main/java/net/halbear/supernova/data/DataGenerators.java @@ -0,0 +1,9 @@ +package net.halbear.supernova.data; + +import net.halbear.supernova.SuperNova; +import net.minecraftforge.fml.common.Mod; + +@Mod.EventBusSubscriber(modid = SuperNova.MOD_ID, bus = Mod.EventBusSubscriber.Bus.MOD) +public class DataGenerators { + +} diff --git a/src/main/java/net/halbear/supernova/entity/EntityRenderers/SpaceshipRenderer.java b/src/main/java/net/halbear/supernova/entity/EntityRenderers/SpaceshipRenderer.java new file mode 100644 index 0000000..456aeb4 --- /dev/null +++ b/src/main/java/net/halbear/supernova/entity/EntityRenderers/SpaceshipRenderer.java @@ -0,0 +1,1197 @@ +package net.halbear.supernova.entity.EntityRenderers; + +import com.mojang.blaze3d.matrix.MatrixStack; +import com.mojang.blaze3d.vertex.IVertexBuilder; +import net.halbear.supernova.SuperNova; +import net.halbear.supernova.entity.Spaceship; +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.LivingRenderer; +import net.minecraft.client.renderer.entity.MobRenderer; +import net.minecraft.client.renderer.entity.model.EntityModel; +import net.minecraft.client.renderer.model.ModelRenderer; +import net.minecraft.client.renderer.texture.OverlayTexture; +import net.minecraft.entity.Entity; +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 javax.annotation.Nonnull; + +@OnlyIn(Dist.CLIENT) +public class SpaceshipRenderer extends EntityRenderer { + + private SpaceshipModel model = new SpaceshipModel(); + + public SpaceshipRenderer(EntityRendererManager renderManagerIn) { + super(renderManagerIn ); + } + + @Override + public void render(Spaceship 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(Spaceship entity) { + return new ResourceLocation(SuperNova.MOD_ID,"textures/entity/spaceship.png"); + } + + //makes it so the spaceship ALWAYS renders, not good for an entity that has many instances of itself like a mob but for something like this it makes sure it renders even when hundreds of blocks away + @Override + public boolean shouldRender(Spaceship livingEntity, ClippingHelper camera, double camX, double camY, double camZ) { + return true; + } + + public static class SpaceshipModel extends EntityModel { + private final ModelRenderer RocketShip; + private final ModelRenderer Boosters; + private final ModelRenderer bone5; + private final ModelRenderer booster; + 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 bone7; + 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 booster4; + private final ModelRenderer bone21; + private final ModelRenderer bone4; + private final ModelRenderer booster2; + 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 bone6; + 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 bone8; + private final ModelRenderer booster3; + private final ModelRenderer cube_r41; + private final ModelRenderer cube_r42; + private final ModelRenderer cube_r43; + private final ModelRenderer cube_r44; + private final ModelRenderer cube_r45; + private final ModelRenderer cube_r46; + private final ModelRenderer cube_r47; + private final ModelRenderer cube_r48; + private final ModelRenderer cube_r49; + private final ModelRenderer cube_r50; + private final ModelRenderer cube_r51; + private final ModelRenderer cube_r52; + private final ModelRenderer bone9; + private final ModelRenderer cube_r53; + private final ModelRenderer cube_r54; + private final ModelRenderer cube_r55; + private final ModelRenderer cube_r56; + private final ModelRenderer cube_r57; + private final ModelRenderer cube_r58; + private final ModelRenderer cube_r59; + private final ModelRenderer cube_r60; + private final ModelRenderer ShuttleMain; + private final ModelRenderer Engine; + private final ModelRenderer cube_r61; + private final ModelRenderer cube_r62; + private final ModelRenderer cube_r63; + private final ModelRenderer cube_r64; + private final ModelRenderer cube_r65; + private final ModelRenderer cube_r66; + private final ModelRenderer cube_r67; + private final ModelRenderer cube_r68; + private final ModelRenderer cube_r69; + private final ModelRenderer cube_r70; + private final ModelRenderer cube_r71; + private final ModelRenderer cube_r72; + private final ModelRenderer bone2; + private final ModelRenderer cube_r73; + private final ModelRenderer cube_r74; + private final ModelRenderer cube_r75; + private final ModelRenderer cube_r76; + private final ModelRenderer bone3; + private final ModelRenderer cube_r77; + private final ModelRenderer cube_r78; + private final ModelRenderer cube_r79; + private final ModelRenderer cube_r80; + private final ModelRenderer Body; + private final ModelRenderer ShuttleTop; + private final ModelRenderer bone19; + private final ModelRenderer cube_r81; + private final ModelRenderer cube_r82; + private final ModelRenderer cube_r83; + private final ModelRenderer cube_r84; + private final ModelRenderer cube_r85; + private final ModelRenderer cube_r86; + private final ModelRenderer cube_r87; + private final ModelRenderer cube_r88; + private final ModelRenderer bone20; + private final ModelRenderer cube_r89; + private final ModelRenderer cube_r90; + private final ModelRenderer cube_r91; + private final ModelRenderer cube_r92; + private final ModelRenderer cube_r93; + private final ModelRenderer cube_r94; + private final ModelRenderer cube_r95; + private final ModelRenderer cube_r96; + private final ModelRenderer bone15; + private final ModelRenderer bone13; + private final ModelRenderer cube_r97; + private final ModelRenderer bone14; + private final ModelRenderer cube_r98; + private final ModelRenderer bone16; + private final ModelRenderer bone17; + private final ModelRenderer cube_r99; + private final ModelRenderer bone18; + private final ModelRenderer cube_r100; + private final ModelRenderer Compartmentroof; + private final ModelRenderer bone; + private final ModelRenderer cube_r101; + private final ModelRenderer cube_r102; + private final ModelRenderer cube_r103; + private final ModelRenderer cube_r104; + private final ModelRenderer bone10; + private final ModelRenderer cube_r105; + private final ModelRenderer cube_r106; + private final ModelRenderer cube_r107; + private final ModelRenderer cube_r108; + private final ModelRenderer bone11; + private final ModelRenderer cube_r109; + private final ModelRenderer cube_r110; + private final ModelRenderer bone12; + private final ModelRenderer cube_r111; + private final ModelRenderer cube_r112; + private final ModelRenderer panes; + private final ModelRenderer cube_r113; + private final ModelRenderer Interior; + private final ModelRenderer bone22; + private final ModelRenderer cube_r114; + private final ModelRenderer cube_r115; + private final ModelRenderer cube_r116; + private final ModelRenderer bone23; + private final ModelRenderer cube_r117; + private final ModelRenderer cube_r118; + private final ModelRenderer cube_r119; + + public SpaceshipModel() { + textureWidth = 1024; + textureHeight = 1024; + + RocketShip = new ModelRenderer(this); + RocketShip.setRotationPoint(0.0F, -59.0F, 0.0F); + setRotationAngle(RocketShip, 0.0F, 1.5708F, 0.0F); + + + Boosters = new ModelRenderer(this); + Boosters.setRotationPoint(0.0F, 83.0F, 0.0F); + RocketShip.addChild(Boosters); + + + bone5 = new ModelRenderer(this); + bone5.setRotationPoint(1.0F, 0.0F, -4.0F); + Boosters.addChild(bone5); + setRotationAngle(bone5, 0.0F, -2.0944F, 0.0F); + + + booster = new ModelRenderer(this); + booster.setRotationPoint(25.0F, -12.0F, -7.0F); + bone5.addChild(booster); + booster.setTextureOffset(0, 591).addBox(-1.0F, -41.0F, -1.0F, 16.0F, 39.0F, 16.0F, 0.0F, false); + booster.setTextureOffset(50, 542).addBox(4.0F, -59.0F, 4.0F, 6.0F, 16.0F, 6.0F, 0.0F, false); + booster.setTextureOffset(133, 257).addBox(0.0F, -41.0F, 0.0F, 14.0F, 39.0F, 14.0F, 0.0F, false); + booster.setTextureOffset(439, 339).addBox(-0.5F, -2.0F, -0.5F, 15.0F, 2.0F, 15.0F, 0.0F, false); + booster.setTextureOffset(165, 420).addBox(-0.5F, -43.0F, -0.5F, 15.0F, 2.0F, 15.0F, 0.0F, false); + booster.setTextureOffset(454, 0).addBox(4.0F, -0.4F, 4.0F, 6.0F, 10.0F, 6.0F, 0.0F, false); + booster.setTextureOffset(485, 339).addBox(3.5F, 9.6F, 3.5F, 7.0F, 2.0F, 7.0F, 0.0F, false); + booster.setTextureOffset(331, 470).addBox(3.5F, -60.4F, 3.5F, 7.0F, 2.0F, 7.0F, 0.0F, false); + booster.setTextureOffset(379, 0).addBox(-7.0F, -61.0F, 6.0F, 11.0F, 55.0F, 2.0F, 0.0F, false); + + cube_r1 = new ModelRenderer(this); + cube_r1.setRotationPoint(0.0F, 0.0F, 14.0F); + booster.addChild(cube_r1); + setRotationAngle(cube_r1, -0.3319F, -0.043F, -0.3389F); + cube_r1.setTextureOffset(478, 565).addBox(0.0F, 0.0F, -2.0F, 2.0F, 12.0F, 2.0F, 0.0F, false); + + cube_r2 = new ModelRenderer(this); + cube_r2.setRotationPoint(14.0F, 0.0F, 14.0F); + booster.addChild(cube_r2); + setRotationAngle(cube_r2, -0.3319F, 0.043F, 0.3389F); + cube_r2.setTextureOffset(487, 565).addBox(-2.0F, 0.0F, -2.0F, 2.0F, 12.0F, 2.0F, 0.0F, false); + + cube_r3 = new ModelRenderer(this); + cube_r3.setRotationPoint(14.0F, 0.0F, 0.0F); + booster.addChild(cube_r3); + setRotationAngle(cube_r3, 0.3319F, -0.043F, 0.3389F); + cube_r3.setTextureOffset(496, 565).addBox(-2.0F, 0.0F, 0.0F, 2.0F, 12.0F, 2.0F, 0.0F, false); + + cube_r4 = new ModelRenderer(this); + cube_r4.setRotationPoint(0.0F, 0.0F, 0.0F); + booster.addChild(cube_r4); + setRotationAngle(cube_r4, 0.3319F, 0.043F, -0.3389F); + cube_r4.setTextureOffset(566, 0).addBox(0.0F, 0.0F, 0.0F, 2.0F, 12.0F, 2.0F, 0.0F, false); + + cube_r5 = new ModelRenderer(this); + cube_r5.setRotationPoint(10.3F, 9.6F, 7.0F); + booster.addChild(cube_r5); + setRotationAngle(cube_r5, 0.0F, 0.0F, 0.3491F); + cube_r5.setTextureOffset(543, 496).addBox(0.0F, -11.0F, -5.0F, 0.0F, 11.0F, 10.0F, 0.0F, false); + + cube_r6 = new ModelRenderer(this); + cube_r6.setRotationPoint(3.7F, 9.6F, 7.0F); + booster.addChild(cube_r6); + setRotationAngle(cube_r6, 0.0F, 0.0F, -0.3491F); + cube_r6.setTextureOffset(543, 496).addBox(0.0F, -11.0F, -5.0F, 0.0F, 11.0F, 10.0F, 0.0F, false); + + cube_r7 = new ModelRenderer(this); + cube_r7.setRotationPoint(7.0F, 9.6F, 10.3F); + booster.addChild(cube_r7); + setRotationAngle(cube_r7, -0.3491F, 0.0F, 0.0F); + cube_r7.setTextureOffset(543, 506).addBox(-5.0F, -11.0F, 0.0F, 10.0F, 11.0F, 0.0F, 0.0F, false); + + cube_r8 = new ModelRenderer(this); + cube_r8.setRotationPoint(7.0F, 9.6F, 3.7F); + booster.addChild(cube_r8); + setRotationAngle(cube_r8, 0.3491F, 0.0F, 0.0F); + cube_r8.setTextureOffset(543, 506).addBox(-5.0F, -11.0F, 0.0F, 10.0F, 11.0F, 0.0F, 0.0F, false); + + cube_r9 = new ModelRenderer(this); + cube_r9.setRotationPoint(14.0F, -43.0F, 7.0F); + booster.addChild(cube_r9); + setRotationAngle(cube_r9, 0.0F, 0.0F, -0.2339F); + cube_r9.setTextureOffset(511, 536).addBox(0.0F, -16.0F, -5.5F, 0.0F, 16.0F, 11.0F, 0.0F, false); + + cube_r10 = new ModelRenderer(this); + cube_r10.setRotationPoint(0.0F, -43.0F, 7.0F); + booster.addChild(cube_r10); + setRotationAngle(cube_r10, 0.0F, 0.0F, 0.2339F); + cube_r10.setTextureOffset(511, 536).addBox(0.0F, -16.0F, -5.5F, 0.0F, 16.0F, 11.0F, 0.0F, false); + + cube_r11 = new ModelRenderer(this); + cube_r11.setRotationPoint(7.0F, -43.0F, 14.0F); + booster.addChild(cube_r11); + setRotationAngle(cube_r11, 0.2339F, 0.0F, 0.0F); + cube_r11.setTextureOffset(511, 547).addBox(-5.5F, -16.0F, 0.0F, 11.0F, 16.0F, 0.0F, 0.0F, false); + + cube_r12 = new ModelRenderer(this); + cube_r12.setRotationPoint(7.0F, -43.0F, 0.0F); + booster.addChild(cube_r12); + setRotationAngle(cube_r12, -0.2339F, 0.0F, 0.0F); + cube_r12.setTextureOffset(511, 547).addBox(-5.5F, -16.0F, 0.0F, 11.0F, 16.0F, 0.0F, 0.0F, false); + + bone7 = new ModelRenderer(this); + bone7.setRotationPoint(14.0F, -43.0F, 14.0F); + booster.addChild(bone7); + + + cube_r13 = new ModelRenderer(this); + cube_r13.setRotationPoint(-14.0F, 0.0F, 0.0F); + bone7.addChild(cube_r13); + setRotationAngle(cube_r13, 0.2269F, 0.0F, 0.2269F); + cube_r13.setTextureOffset(518, 564).addBox(0.0F, -18.0F, -2.0F, 2.0F, 18.0F, 2.0F, 0.0F, false); + + cube_r14 = new ModelRenderer(this); + cube_r14.setRotationPoint(-14.0F, 0.0F, 0.0F); + bone7.addChild(cube_r14); + setRotationAngle(cube_r14, 0.2277F, -0.085F, 0.2072F); + cube_r14.setTextureOffset(527, 564).addBox(0.0F, -18.0F, -2.0F, 2.0F, 18.0F, 2.0F, 0.0F, false); + + cube_r15 = new ModelRenderer(this); + cube_r15.setRotationPoint(0.0F, 0.0F, -14.0F); + bone7.addChild(cube_r15); + setRotationAngle(cube_r15, -0.2269F, 0.0F, -0.2269F); + cube_r15.setTextureOffset(536, 564).addBox(-2.0F, -18.0F, 0.0F, 2.0F, 18.0F, 2.0F, 0.0F, false); + + cube_r16 = new ModelRenderer(this); + cube_r16.setRotationPoint(0.0F, 0.0F, -14.0F); + bone7.addChild(cube_r16); + setRotationAngle(cube_r16, -0.2277F, -0.085F, -0.2072F); + cube_r16.setTextureOffset(545, 564).addBox(-2.0F, -18.0F, 0.0F, 2.0F, 18.0F, 2.0F, 0.0F, false); + + cube_r17 = new ModelRenderer(this); + cube_r17.setRotationPoint(-14.0F, 0.0F, -14.0F); + bone7.addChild(cube_r17); + setRotationAngle(cube_r17, -0.2269F, 0.0F, 0.2269F); + cube_r17.setTextureOffset(564, 562).addBox(0.0F, -18.0F, 0.0F, 2.0F, 18.0F, 2.0F, 0.0F, false); + + cube_r18 = new ModelRenderer(this); + cube_r18.setRotationPoint(-14.0F, 0.0F, -14.0F); + bone7.addChild(cube_r18); + setRotationAngle(cube_r18, -0.2277F, 0.085F, 0.2072F); + cube_r18.setTextureOffset(0, 565).addBox(0.0F, -18.0F, 0.0F, 2.0F, 18.0F, 2.0F, 0.0F, false); + + cube_r19 = new ModelRenderer(this); + cube_r19.setRotationPoint(0.0F, 0.0F, 0.0F); + bone7.addChild(cube_r19); + setRotationAngle(cube_r19, 0.2269F, 0.0F, -0.2269F); + cube_r19.setTextureOffset(9, 565).addBox(-2.0F, -18.0F, -2.0F, 2.0F, 18.0F, 2.0F, 0.0F, false); + + cube_r20 = new ModelRenderer(this); + cube_r20.setRotationPoint(0.0F, 0.0F, 0.0F); + bone7.addChild(cube_r20); + setRotationAngle(cube_r20, 0.2277F, 0.085F, -0.2072F); + cube_r20.setTextureOffset(18, 565).addBox(-2.0F, -18.0F, -2.0F, 2.0F, 18.0F, 2.0F, 0.0F, false); + + booster4 = new ModelRenderer(this); + booster4.setRotationPoint(25.0F, -12.0F, -7.0F); + bone5.addChild(booster4); + + + bone21 = new ModelRenderer(this); + bone21.setRotationPoint(14.0F, -43.0F, 14.0F); + booster4.addChild(bone21); + + + bone4 = new ModelRenderer(this); + bone4.setRotationPoint(0.0F, 0.0F, 4.0F); + Boosters.addChild(bone4); + + + booster2 = new ModelRenderer(this); + booster2.setRotationPoint(26.0F, -12.0F, -11.0F); + bone4.addChild(booster2); + booster2.setTextureOffset(0, 591).addBox(-1.0F, -41.0F, -1.0F, 16.0F, 39.0F, 16.0F, 0.0F, false); + booster2.setTextureOffset(50, 542).addBox(4.0F, -59.0F, 4.0F, 6.0F, 16.0F, 6.0F, 0.0F, false); + booster2.setTextureOffset(133, 257).addBox(0.0F, -41.0F, 0.0F, 14.0F, 39.0F, 14.0F, 0.0F, false); + booster2.setTextureOffset(439, 339).addBox(-0.5F, -2.0F, -0.5F, 15.0F, 2.0F, 15.0F, 0.0F, false); + booster2.setTextureOffset(165, 420).addBox(-0.5F, -43.0F, -0.5F, 15.0F, 2.0F, 15.0F, 0.0F, false); + booster2.setTextureOffset(454, 0).addBox(4.0F, -0.4F, 4.0F, 6.0F, 10.0F, 6.0F, 0.0F, false); + booster2.setTextureOffset(485, 339).addBox(3.5F, 9.6F, 3.5F, 7.0F, 2.0F, 7.0F, 0.0F, false); + booster2.setTextureOffset(331, 470).addBox(3.5F, -60.4F, 3.5F, 7.0F, 2.0F, 7.0F, 0.0F, false); + booster2.setTextureOffset(379, 0).addBox(-7.0F, -61.0F, 6.0F, 11.0F, 55.0F, 2.0F, 0.0F, false); + + cube_r21 = new ModelRenderer(this); + cube_r21.setRotationPoint(0.0F, 0.0F, 14.0F); + booster2.addChild(cube_r21); + setRotationAngle(cube_r21, -0.3319F, -0.043F, -0.3389F); + cube_r21.setTextureOffset(478, 565).addBox(0.0F, 0.0F, -2.0F, 2.0F, 12.0F, 2.0F, 0.0F, false); + + cube_r22 = new ModelRenderer(this); + cube_r22.setRotationPoint(14.0F, 0.0F, 14.0F); + booster2.addChild(cube_r22); + setRotationAngle(cube_r22, -0.3319F, 0.043F, 0.3389F); + cube_r22.setTextureOffset(487, 565).addBox(-2.0F, 0.0F, -2.0F, 2.0F, 12.0F, 2.0F, 0.0F, false); + + cube_r23 = new ModelRenderer(this); + cube_r23.setRotationPoint(14.0F, 0.0F, 0.0F); + booster2.addChild(cube_r23); + setRotationAngle(cube_r23, 0.3319F, -0.043F, 0.3389F); + cube_r23.setTextureOffset(496, 565).addBox(-2.0F, 0.0F, 0.0F, 2.0F, 12.0F, 2.0F, 0.0F, false); + + cube_r24 = new ModelRenderer(this); + cube_r24.setRotationPoint(0.0F, 0.0F, 0.0F); + booster2.addChild(cube_r24); + setRotationAngle(cube_r24, 0.3319F, 0.043F, -0.3389F); + cube_r24.setTextureOffset(566, 0).addBox(0.0F, 0.0F, 0.0F, 2.0F, 12.0F, 2.0F, 0.0F, false); + + cube_r25 = new ModelRenderer(this); + cube_r25.setRotationPoint(10.3F, 9.6F, 7.0F); + booster2.addChild(cube_r25); + setRotationAngle(cube_r25, 0.0F, 0.0F, 0.3491F); + cube_r25.setTextureOffset(543, 496).addBox(0.0F, -11.0F, -5.0F, 0.0F, 11.0F, 10.0F, 0.0F, false); + + cube_r26 = new ModelRenderer(this); + cube_r26.setRotationPoint(3.7F, 9.6F, 7.0F); + booster2.addChild(cube_r26); + setRotationAngle(cube_r26, 0.0F, 0.0F, -0.3491F); + cube_r26.setTextureOffset(543, 496).addBox(0.0F, -11.0F, -5.0F, 0.0F, 11.0F, 10.0F, 0.0F, false); + + cube_r27 = new ModelRenderer(this); + cube_r27.setRotationPoint(7.0F, 9.6F, 10.3F); + booster2.addChild(cube_r27); + setRotationAngle(cube_r27, -0.3491F, 0.0F, 0.0F); + cube_r27.setTextureOffset(543, 506).addBox(-5.0F, -11.0F, 0.0F, 10.0F, 11.0F, 0.0F, 0.0F, false); + + cube_r28 = new ModelRenderer(this); + cube_r28.setRotationPoint(7.0F, 9.6F, 3.7F); + booster2.addChild(cube_r28); + setRotationAngle(cube_r28, 0.3491F, 0.0F, 0.0F); + cube_r28.setTextureOffset(543, 506).addBox(-5.0F, -11.0F, 0.0F, 10.0F, 11.0F, 0.0F, 0.0F, false); + + cube_r29 = new ModelRenderer(this); + cube_r29.setRotationPoint(14.0F, -43.0F, 7.0F); + booster2.addChild(cube_r29); + setRotationAngle(cube_r29, 0.0F, 0.0F, -0.2339F); + cube_r29.setTextureOffset(511, 536).addBox(0.0F, -16.0F, -5.5F, 0.0F, 16.0F, 11.0F, 0.0F, false); + + cube_r30 = new ModelRenderer(this); + cube_r30.setRotationPoint(0.0F, -43.0F, 7.0F); + booster2.addChild(cube_r30); + setRotationAngle(cube_r30, 0.0F, 0.0F, 0.2339F); + cube_r30.setTextureOffset(511, 536).addBox(0.0F, -16.0F, -5.5F, 0.0F, 16.0F, 11.0F, 0.0F, false); + + cube_r31 = new ModelRenderer(this); + cube_r31.setRotationPoint(7.0F, -43.0F, 14.0F); + booster2.addChild(cube_r31); + setRotationAngle(cube_r31, 0.2339F, 0.0F, 0.0F); + cube_r31.setTextureOffset(511, 547).addBox(-5.5F, -16.0F, 0.0F, 11.0F, 16.0F, 0.0F, 0.0F, false); + + cube_r32 = new ModelRenderer(this); + cube_r32.setRotationPoint(7.0F, -43.0F, 0.0F); + booster2.addChild(cube_r32); + setRotationAngle(cube_r32, -0.2339F, 0.0F, 0.0F); + cube_r32.setTextureOffset(511, 547).addBox(-5.5F, -16.0F, 0.0F, 11.0F, 16.0F, 0.0F, 0.0F, false); + + bone6 = new ModelRenderer(this); + bone6.setRotationPoint(14.0F, -43.0F, 14.0F); + booster2.addChild(bone6); + + + cube_r33 = new ModelRenderer(this); + cube_r33.setRotationPoint(-14.0F, 0.0F, 0.0F); + bone6.addChild(cube_r33); + setRotationAngle(cube_r33, 0.2269F, 0.0F, 0.2269F); + cube_r33.setTextureOffset(518, 564).addBox(0.0F, -18.0F, -2.0F, 2.0F, 18.0F, 2.0F, 0.0F, false); + + cube_r34 = new ModelRenderer(this); + cube_r34.setRotationPoint(-14.0F, 0.0F, 0.0F); + bone6.addChild(cube_r34); + setRotationAngle(cube_r34, 0.2277F, -0.085F, 0.2072F); + cube_r34.setTextureOffset(527, 564).addBox(0.0F, -18.0F, -2.0F, 2.0F, 18.0F, 2.0F, 0.0F, false); + + cube_r35 = new ModelRenderer(this); + cube_r35.setRotationPoint(0.0F, 0.0F, -14.0F); + bone6.addChild(cube_r35); + setRotationAngle(cube_r35, -0.2269F, 0.0F, -0.2269F); + cube_r35.setTextureOffset(536, 564).addBox(-2.0F, -18.0F, 0.0F, 2.0F, 18.0F, 2.0F, 0.0F, false); + + cube_r36 = new ModelRenderer(this); + cube_r36.setRotationPoint(0.0F, 0.0F, -14.0F); + bone6.addChild(cube_r36); + setRotationAngle(cube_r36, -0.2277F, -0.085F, -0.2072F); + cube_r36.setTextureOffset(545, 564).addBox(-2.0F, -18.0F, 0.0F, 2.0F, 18.0F, 2.0F, 0.0F, false); + + cube_r37 = new ModelRenderer(this); + cube_r37.setRotationPoint(-14.0F, 0.0F, -14.0F); + bone6.addChild(cube_r37); + setRotationAngle(cube_r37, -0.2269F, 0.0F, 0.2269F); + cube_r37.setTextureOffset(564, 562).addBox(0.0F, -18.0F, 0.0F, 2.0F, 18.0F, 2.0F, 0.0F, false); + + cube_r38 = new ModelRenderer(this); + cube_r38.setRotationPoint(-14.0F, 0.0F, -14.0F); + bone6.addChild(cube_r38); + setRotationAngle(cube_r38, -0.2277F, 0.085F, 0.2072F); + cube_r38.setTextureOffset(0, 565).addBox(0.0F, -18.0F, 0.0F, 2.0F, 18.0F, 2.0F, 0.0F, false); + + cube_r39 = new ModelRenderer(this); + cube_r39.setRotationPoint(0.0F, 0.0F, 0.0F); + bone6.addChild(cube_r39); + setRotationAngle(cube_r39, 0.2269F, 0.0F, -0.2269F); + cube_r39.setTextureOffset(9, 565).addBox(-2.0F, -18.0F, -2.0F, 2.0F, 18.0F, 2.0F, 0.0F, false); + + cube_r40 = new ModelRenderer(this); + cube_r40.setRotationPoint(0.0F, 0.0F, 0.0F); + bone6.addChild(cube_r40); + setRotationAngle(cube_r40, 0.2277F, 0.085F, -0.2072F); + cube_r40.setTextureOffset(18, 565).addBox(-2.0F, -18.0F, -2.0F, 2.0F, 18.0F, 2.0F, 0.0F, false); + + bone8 = new ModelRenderer(this); + bone8.setRotationPoint(1.1F, 0.0F, 5.7F); + Boosters.addChild(bone8); + setRotationAngle(bone8, 0.0F, 2.0944F, 0.0F); + + + booster3 = new ModelRenderer(this); + booster3.setRotationPoint(25.0F, -12.0F, 7.0F); + bone8.addChild(booster3); + booster3.setTextureOffset(0, 591).addBox(0.5F, -41.0F, -14.15F, 16.0F, 39.0F, 16.0F, 0.0F, false); + booster3.setTextureOffset(50, 542).addBox(5.5F, -59.0F, -9.15F, 6.0F, 16.0F, 6.0F, 0.0F, false); + booster3.setTextureOffset(133, 257).addBox(1.5F, -41.0F, -13.15F, 14.0F, 39.0F, 14.0F, 0.0F, false); + booster3.setTextureOffset(439, 339).addBox(1.0F, -2.0F, -13.65F, 15.0F, 2.0F, 15.0F, 0.0F, false); + booster3.setTextureOffset(165, 420).addBox(1.0F, -43.0F, -13.65F, 15.0F, 2.0F, 15.0F, 0.0F, false); + booster3.setTextureOffset(454, 0).addBox(5.5F, -0.4F, -9.15F, 6.0F, 10.0F, 6.0F, 0.0F, false); + booster3.setTextureOffset(485, 339).addBox(5.0F, 9.6F, -9.65F, 7.0F, 2.0F, 7.0F, 0.0F, false); + booster3.setTextureOffset(331, 470).addBox(5.0F, -60.4F, -9.65F, 7.0F, 2.0F, 7.0F, 0.0F, false); + booster3.setTextureOffset(379, 0).addBox(-5.5F, -61.0F, -7.15F, 11.0F, 55.0F, 2.0F, 0.0F, false); + + cube_r41 = new ModelRenderer(this); + cube_r41.setRotationPoint(1.5F, 0.0F, 0.85F); + booster3.addChild(cube_r41); + setRotationAngle(cube_r41, -0.3319F, -0.043F, -0.3389F); + cube_r41.setTextureOffset(478, 565).addBox(0.0F, 0.0F, -2.0F, 2.0F, 12.0F, 2.0F, 0.0F, false); + + cube_r42 = new ModelRenderer(this); + cube_r42.setRotationPoint(15.5F, 0.0F, 0.85F); + booster3.addChild(cube_r42); + setRotationAngle(cube_r42, -0.3319F, 0.043F, 0.3389F); + cube_r42.setTextureOffset(487, 565).addBox(-2.0F, 0.0F, -2.0F, 2.0F, 12.0F, 2.0F, 0.0F, false); + + cube_r43 = new ModelRenderer(this); + cube_r43.setRotationPoint(15.5F, 0.0F, -13.15F); + booster3.addChild(cube_r43); + setRotationAngle(cube_r43, 0.3319F, -0.043F, 0.3389F); + cube_r43.setTextureOffset(496, 565).addBox(-2.0F, 0.0F, 0.0F, 2.0F, 12.0F, 2.0F, 0.0F, false); + + cube_r44 = new ModelRenderer(this); + cube_r44.setRotationPoint(1.5F, 0.0F, -13.15F); + booster3.addChild(cube_r44); + setRotationAngle(cube_r44, 0.3319F, 0.043F, -0.3389F); + cube_r44.setTextureOffset(566, 0).addBox(0.0F, 0.0F, 0.0F, 2.0F, 12.0F, 2.0F, 0.0F, false); + + cube_r45 = new ModelRenderer(this); + cube_r45.setRotationPoint(11.8F, 9.6F, -6.15F); + booster3.addChild(cube_r45); + setRotationAngle(cube_r45, 0.0F, 0.0F, 0.3491F); + cube_r45.setTextureOffset(543, 496).addBox(0.0F, -11.0F, -5.0F, 0.0F, 11.0F, 10.0F, 0.0F, false); + + cube_r46 = new ModelRenderer(this); + cube_r46.setRotationPoint(5.2F, 9.6F, -6.15F); + booster3.addChild(cube_r46); + setRotationAngle(cube_r46, 0.0F, 0.0F, -0.3491F); + cube_r46.setTextureOffset(543, 496).addBox(0.0F, -11.0F, -5.0F, 0.0F, 11.0F, 10.0F, 0.0F, false); + + cube_r47 = new ModelRenderer(this); + cube_r47.setRotationPoint(8.5F, 9.6F, -2.85F); + booster3.addChild(cube_r47); + setRotationAngle(cube_r47, -0.3491F, 0.0F, 0.0F); + cube_r47.setTextureOffset(543, 506).addBox(-5.0F, -11.0F, 0.0F, 10.0F, 11.0F, 0.0F, 0.0F, false); + + cube_r48 = new ModelRenderer(this); + cube_r48.setRotationPoint(8.5F, 9.6F, -9.45F); + booster3.addChild(cube_r48); + setRotationAngle(cube_r48, 0.3491F, 0.0F, 0.0F); + cube_r48.setTextureOffset(543, 506).addBox(-5.0F, -11.0F, 0.0F, 10.0F, 11.0F, 0.0F, 0.0F, false); + + cube_r49 = new ModelRenderer(this); + cube_r49.setRotationPoint(15.5F, -43.0F, -6.15F); + booster3.addChild(cube_r49); + setRotationAngle(cube_r49, 0.0F, 0.0F, -0.2339F); + cube_r49.setTextureOffset(511, 536).addBox(0.0F, -16.0F, -5.5F, 0.0F, 16.0F, 11.0F, 0.0F, false); + + cube_r50 = new ModelRenderer(this); + cube_r50.setRotationPoint(1.5F, -43.0F, -6.15F); + booster3.addChild(cube_r50); + setRotationAngle(cube_r50, 0.0F, 0.0F, 0.2339F); + cube_r50.setTextureOffset(511, 536).addBox(0.0F, -16.0F, -5.5F, 0.0F, 16.0F, 11.0F, 0.0F, false); + + cube_r51 = new ModelRenderer(this); + cube_r51.setRotationPoint(8.5F, -43.0F, 0.85F); + booster3.addChild(cube_r51); + setRotationAngle(cube_r51, 0.2339F, 0.0F, 0.0F); + cube_r51.setTextureOffset(511, 547).addBox(-5.5F, -16.0F, 0.0F, 11.0F, 16.0F, 0.0F, 0.0F, false); + + cube_r52 = new ModelRenderer(this); + cube_r52.setRotationPoint(8.5F, -43.0F, -13.15F); + booster3.addChild(cube_r52); + setRotationAngle(cube_r52, -0.2339F, 0.0F, 0.0F); + cube_r52.setTextureOffset(511, 547).addBox(-5.5F, -16.0F, 0.0F, 11.0F, 16.0F, 0.0F, 0.0F, false); + + bone9 = new ModelRenderer(this); + bone9.setRotationPoint(15.5F, -43.0F, 0.85F); + booster3.addChild(bone9); + + + cube_r53 = new ModelRenderer(this); + cube_r53.setRotationPoint(-14.0F, 0.0F, 0.0F); + bone9.addChild(cube_r53); + setRotationAngle(cube_r53, 0.2269F, 0.0F, 0.2269F); + cube_r53.setTextureOffset(518, 564).addBox(0.0F, -18.0F, -2.0F, 2.0F, 18.0F, 2.0F, 0.0F, false); + + cube_r54 = new ModelRenderer(this); + cube_r54.setRotationPoint(-14.0F, 0.0F, 0.0F); + bone9.addChild(cube_r54); + setRotationAngle(cube_r54, 0.2277F, -0.085F, 0.2072F); + cube_r54.setTextureOffset(527, 564).addBox(0.0F, -18.0F, -2.0F, 2.0F, 18.0F, 2.0F, 0.0F, false); + + cube_r55 = new ModelRenderer(this); + cube_r55.setRotationPoint(0.0F, 0.0F, -14.0F); + bone9.addChild(cube_r55); + setRotationAngle(cube_r55, -0.2269F, 0.0F, -0.2269F); + cube_r55.setTextureOffset(536, 564).addBox(-2.0F, -18.0F, 0.0F, 2.0F, 18.0F, 2.0F, 0.0F, false); + + cube_r56 = new ModelRenderer(this); + cube_r56.setRotationPoint(0.0F, 0.0F, -14.0F); + bone9.addChild(cube_r56); + setRotationAngle(cube_r56, -0.2277F, -0.085F, -0.2072F); + cube_r56.setTextureOffset(545, 564).addBox(-2.0F, -18.0F, 0.0F, 2.0F, 18.0F, 2.0F, 0.0F, false); + + cube_r57 = new ModelRenderer(this); + cube_r57.setRotationPoint(-14.0F, 0.0F, -14.0F); + bone9.addChild(cube_r57); + setRotationAngle(cube_r57, -0.2269F, 0.0F, 0.2269F); + cube_r57.setTextureOffset(564, 562).addBox(0.0F, -18.0F, 0.0F, 2.0F, 18.0F, 2.0F, 0.0F, false); + + cube_r58 = new ModelRenderer(this); + cube_r58.setRotationPoint(-14.0F, 0.0F, -14.0F); + bone9.addChild(cube_r58); + setRotationAngle(cube_r58, -0.2277F, 0.085F, 0.2072F); + cube_r58.setTextureOffset(0, 565).addBox(0.0F, -18.0F, 0.0F, 2.0F, 18.0F, 2.0F, 0.0F, false); + + cube_r59 = new ModelRenderer(this); + cube_r59.setRotationPoint(0.0F, 0.0F, 0.0F); + bone9.addChild(cube_r59); + setRotationAngle(cube_r59, 0.2269F, 0.0F, -0.2269F); + cube_r59.setTextureOffset(9, 565).addBox(-2.0F, -18.0F, -2.0F, 2.0F, 18.0F, 2.0F, 0.0F, false); + + cube_r60 = new ModelRenderer(this); + cube_r60.setRotationPoint(0.0F, 0.0F, 0.0F); + bone9.addChild(cube_r60); + setRotationAngle(cube_r60, 0.2277F, 0.085F, -0.2072F); + cube_r60.setTextureOffset(18, 565).addBox(-2.0F, -18.0F, -2.0F, 2.0F, 18.0F, 2.0F, 0.0F, false); + + ShuttleMain = new ModelRenderer(this); + ShuttleMain.setRotationPoint(-43.0F, 72.0F, 30.0F); + RocketShip.addChild(ShuttleMain); + + + Engine = new ModelRenderer(this); + Engine.setRotationPoint(43.0F, -13.658F, -30.0F); + ShuttleMain.addChild(Engine); + setRotationAngle(Engine, 0.0F, 0.7854F, 0.0F); + Engine.setTextureOffset(227, 29).addBox(-10.0F, 6.658F, -10.0F, 20.0F, 5.0F, 20.0F, 0.0F, false); + Engine.setTextureOffset(122, 311).addBox(-5.0F, -7.342F, -5.0F, 10.0F, 3.0F, 10.0F, 0.0F, false); + Engine.setTextureOffset(500, 339).addBox(-7.0F, -12.342F, -7.0F, 14.0F, 5.0F, 14.0F, 0.0F, false); + Engine.setTextureOffset(76, 36).addBox(-15.0F, -25.342F, -15.0F, 30.0F, 5.0F, 30.0F, 0.0F, false); + + cube_r61 = new ModelRenderer(this); + cube_r61.setRotationPoint(4.5F, -4.342F, -4.5F); + Engine.addChild(cube_r61); + setRotationAngle(cube_r61, -0.2094F, 0.0F, -0.2094F); + cube_r61.setTextureOffset(0, 54).addBox(-2.0F, -1.0F, 0.0F, 2.0F, 13.0F, 2.0F, 0.0F, false); + + cube_r62 = new ModelRenderer(this); + cube_r62.setRotationPoint(4.5F, -4.342F, 4.5F); + Engine.addChild(cube_r62); + setRotationAngle(cube_r62, 0.2094F, 0.0F, -0.2094F); + cube_r62.setTextureOffset(276, 55).addBox(-2.0F, -1.0F, -2.0F, 2.0F, 13.0F, 2.0F, 0.0F, false); + + cube_r63 = new ModelRenderer(this); + cube_r63.setRotationPoint(-4.5F, -4.342F, 4.5F); + Engine.addChild(cube_r63); + setRotationAngle(cube_r63, 0.2094F, 0.0F, 0.2094F); + cube_r63.setTextureOffset(0, 311).addBox(0.0F, -1.0F, -2.0F, 2.0F, 13.0F, 2.0F, 0.0F, false); + + cube_r64 = new ModelRenderer(this); + cube_r64.setRotationPoint(0.0F, -12.342F, -6.9F); + Engine.addChild(cube_r64); + setRotationAngle(cube_r64, 0.5934F, 0.0F, 0.0F); + cube_r64.setTextureOffset(107, 539).addBox(-9.0F, -11.0F, 0.0F, 18.0F, 11.0F, 0.0F, 0.0F, false); + + cube_r65 = new ModelRenderer(this); + cube_r65.setRotationPoint(0.0F, -12.342F, 6.9F); + Engine.addChild(cube_r65); + setRotationAngle(cube_r65, -0.5934F, 0.0F, 0.0F); + cube_r65.setTextureOffset(107, 539).addBox(-9.0F, -11.0F, 0.0F, 18.0F, 11.0F, 0.0F, 0.0F, false); + + cube_r66 = new ModelRenderer(this); + cube_r66.setRotationPoint(-9.5357F, -16.9284F, 0.0F); + Engine.addChild(cube_r66); + setRotationAngle(cube_r66, 0.0F, 1.5708F, -0.5323F); + cube_r66.setTextureOffset(107, 539).addBox(-9.0F, -5.5F, 0.0F, 18.0F, 11.0F, 0.0F, 0.0F, true); + + cube_r67 = new ModelRenderer(this); + cube_r67.setRotationPoint(9.5357F, -16.9284F, 0.0F); + Engine.addChild(cube_r67); + setRotationAngle(cube_r67, 0.0F, 1.5708F, 0.5323F); + cube_r67.setTextureOffset(107, 539).addBox(-9.0F, -5.5F, 0.0F, 18.0F, 11.0F, 0.0F, 0.0F, false); + + cube_r68 = new ModelRenderer(this); + cube_r68.setRotationPoint(6.5F, 6.658F, 0.0F); + Engine.addChild(cube_r68); + setRotationAngle(cube_r68, 0.0F, 0.0F, -0.2094F); + cube_r68.setTextureOffset(94, 539).addBox(0.0F, -13.0F, -6.0F, 0.0F, 13.0F, 12.0F, 0.0F, false); + + cube_r69 = new ModelRenderer(this); + cube_r69.setRotationPoint(-6.5F, 6.658F, 0.0F); + Engine.addChild(cube_r69); + setRotationAngle(cube_r69, 0.0F, 0.0F, 0.2094F); + cube_r69.setTextureOffset(94, 539).addBox(0.0F, -13.0F, -6.0F, 0.0F, 13.0F, 12.0F, 0.0F, false); + + cube_r70 = new ModelRenderer(this); + cube_r70.setRotationPoint(0.0F, 6.658F, -6.5F); + Engine.addChild(cube_r70); + setRotationAngle(cube_r70, -0.2094F, 0.0F, 0.0F); + cube_r70.setTextureOffset(94, 551).addBox(-6.0F, -13.0F, 0.0F, 12.0F, 13.0F, 0.0F, 0.0F, false); + + cube_r71 = new ModelRenderer(this); + cube_r71.setRotationPoint(0.0F, 6.658F, 6.5F); + Engine.addChild(cube_r71); + setRotationAngle(cube_r71, 0.2094F, 0.0F, 0.0F); + cube_r71.setTextureOffset(94, 551).addBox(-6.0F, -13.0F, 0.0F, 12.0F, 13.0F, 0.0F, 0.0F, false); + + cube_r72 = new ModelRenderer(this); + cube_r72.setRotationPoint(-4.5F, -4.342F, -4.5F); + Engine.addChild(cube_r72); + setRotationAngle(cube_r72, -0.2094F, 0.0F, 0.2094F); + cube_r72.setTextureOffset(227, 55).addBox(0.0F, -1.0F, 0.0F, 2.0F, 13.0F, 2.0F, 0.0F, false); + + bone2 = new ModelRenderer(this); + bone2.setRotationPoint(-7.0F, -12.342F, 7.0F); + Engine.addChild(bone2); + + + cube_r73 = new ModelRenderer(this); + cube_r73.setRotationPoint(0.0F, 0.0F, -14.0F); + bone2.addChild(cube_r73); + setRotationAngle(cube_r73, 0.5236F, 0.0F, -0.5236F); + cube_r73.setTextureOffset(435, 0).addBox(0.0F, -11.0F, 0.0F, 3.0F, 14.0F, 3.0F, 0.0F, false); + + cube_r74 = new ModelRenderer(this); + cube_r74.setRotationPoint(0.0F, 0.0F, -14.0F); + bone2.addChild(cube_r74); + setRotationAngle(cube_r74, 0.5409F, 0.241F, -0.3812F); + cube_r74.setTextureOffset(180, 394).addBox(0.0F, -11.0F, 0.0F, 3.0F, 14.0F, 3.0F, 0.0F, false); + + cube_r75 = new ModelRenderer(this); + cube_r75.setRotationPoint(0.0F, 0.0F, 0.0F); + bone2.addChild(cube_r75); + setRotationAngle(cube_r75, -0.5236F, 0.0F, -0.5236F); + cube_r75.setTextureOffset(406, 562).addBox(0.0F, -11.0F, -3.0F, 3.0F, 14.0F, 3.0F, 0.0F, false); + + cube_r76 = new ModelRenderer(this); + cube_r76.setRotationPoint(0.0F, 0.0F, 0.0F); + bone2.addChild(cube_r76); + setRotationAngle(cube_r76, -0.5409F, -0.241F, -0.3812F); + cube_r76.setTextureOffset(302, 495).addBox(0.0F, -11.0F, -3.0F, 3.0F, 14.0F, 3.0F, 0.0F, false); + + bone3 = new ModelRenderer(this); + bone3.setRotationPoint(7.0F, -12.342F, 7.0F); + Engine.addChild(bone3); + + + cube_r77 = new ModelRenderer(this); + cube_r77.setRotationPoint(0.0F, 0.0F, -14.0F); + bone3.addChild(cube_r77); + setRotationAngle(cube_r77, 0.5236F, 0.0F, 0.5236F); + cube_r77.setTextureOffset(362, 57).addBox(-3.0F, -11.0F, 0.0F, 3.0F, 14.0F, 3.0F, 0.0F, false); + + cube_r78 = new ModelRenderer(this); + cube_r78.setRotationPoint(0.0F, 0.0F, -14.0F); + bone3.addChild(cube_r78); + setRotationAngle(cube_r78, 0.5409F, -0.241F, 0.3812F); + cube_r78.setTextureOffset(227, 29).addBox(-3.0F, -11.0F, 0.0F, 3.0F, 14.0F, 3.0F, 0.0F, false); + + cube_r79 = new ModelRenderer(this); + cube_r79.setRotationPoint(0.0F, 0.0F, 0.0F); + bone3.addChild(cube_r79); + setRotationAngle(cube_r79, -0.5236F, 0.0F, 0.5236F); + cube_r79.setTextureOffset(331, 440).addBox(-3.0F, -11.0F, -3.0F, 3.0F, 14.0F, 3.0F, 0.0F, false); + + cube_r80 = new ModelRenderer(this); + cube_r80.setRotationPoint(0.0F, 0.0F, 0.0F); + bone3.addChild(cube_r80); + setRotationAngle(cube_r80, -0.5409F, 0.241F, 0.3812F); + cube_r80.setTextureOffset(445, 296).addBox(-3.0F, -11.0F, -3.0F, 3.0F, 14.0F, 3.0F, 0.0F, false); + + Body = new ModelRenderer(this); + Body.setRotationPoint(43.0F, 0.0F, -30.0F); + ShuttleMain.addChild(Body); + setRotationAngle(Body, 0.0F, 0.7854F, 0.0F); + Body.setTextureOffset(454, 85).addBox(-14.0F, -93.0F, -14.0F, 28.0F, 54.0F, 28.0F, 0.0F, false); + Body.setTextureOffset(454, 0).addBox(-15.0F, -93.0F, -15.0F, 30.0F, 54.0F, 30.0F, 0.0F, false); + Body.setTextureOffset(227, 0).addBox(-14.0F, -67.0F, -14.0F, 28.0F, 0.0F, 28.0F, 0.0F, false); + + ShuttleTop = new ModelRenderer(this); + ShuttleTop.setRotationPoint(-7.5F, -137.0F, -7.5F); + Body.addChild(ShuttleTop); + ShuttleTop.setTextureOffset(0, 0).addBox(0.0F, 1.0F, 0.0F, 15.0F, 38.0F, 15.0F, 0.0F, false); + ShuttleTop.setTextureOffset(276, 57).addBox(-0.5F, 0.0F, -0.5F, 16.0F, 1.0F, 16.0F, 0.0F, false); + ShuttleTop.setTextureOffset(227, 55).addBox(-0.5F, 12.0F, -0.5F, 16.0F, 1.0F, 16.0F, 0.0F, false); + ShuttleTop.setTextureOffset(180, 365).addBox(6.0F, -25.0F, 6.0F, 3.0F, 25.0F, 3.0F, 0.0F, false); + ShuttleTop.setTextureOffset(9, 0).addBox(7.0F, -35.0F, 7.0F, 1.0F, 10.0F, 1.0F, 0.0F, false); + + bone19 = new ModelRenderer(this); + bone19.setRotationPoint(0.0F, 0.0F, 15.0F); + ShuttleTop.addChild(bone19); + + + cube_r81 = new ModelRenderer(this); + cube_r81.setRotationPoint(15.0F, 0.0F, 0.0F); + bone19.addChild(cube_r81); + setRotationAngle(cube_r81, 0.2618F, 0.0F, -0.2618F); + cube_r81.setTextureOffset(437, 30).addBox(-2.0F, -25.0F, -2.0F, 2.0F, 25.0F, 2.0F, 0.0F, true); + + cube_r82 = new ModelRenderer(this); + cube_r82.setRotationPoint(15.25F, 0.0F, 0.25F); + bone19.addChild(cube_r82); + setRotationAngle(cube_r82, 0.2618F, 0.0F, -0.2618F); + cube_r82.setTextureOffset(8, 440).addBox(-2.0F, -25.0F, -2.0F, 2.0F, 25.0F, 2.0F, 0.0F, true); + + cube_r83 = new ModelRenderer(this); + cube_r83.setRotationPoint(15.0F, 0.0F, 0.0F); + bone19.addChild(cube_r83); + setRotationAngle(cube_r83, 0.2624F, 0.0674F, -0.2437F); + cube_r83.setTextureOffset(367, 24).addBox(-2.0F, -25.0F, -2.0F, 2.0F, 25.0F, 2.0F, 0.0F, true); + + cube_r84 = new ModelRenderer(this); + cube_r84.setRotationPoint(15.25F, 0.0F, 0.25F); + bone19.addChild(cube_r84); + setRotationAngle(cube_r84, 0.2624F, 0.0674F, -0.2437F); + cube_r84.setTextureOffset(17, 440).addBox(-2.0F, -25.0F, -2.0F, 2.0F, 25.0F, 2.0F, 0.0F, true); + + cube_r85 = new ModelRenderer(this); + cube_r85.setRotationPoint(-0.25F, 0.0F, 0.25F); + bone19.addChild(cube_r85); + setRotationAngle(cube_r85, 0.2624F, -0.0674F, 0.2437F); + cube_r85.setTextureOffset(17, 440).addBox(0.0F, -25.0F, -2.0F, 2.0F, 25.0F, 2.0F, 0.0F, false); + + cube_r86 = new ModelRenderer(this); + cube_r86.setRotationPoint(0.0F, 0.0F, 0.0F); + bone19.addChild(cube_r86); + setRotationAngle(cube_r86, 0.2624F, -0.0674F, 0.2437F); + cube_r86.setTextureOffset(367, 24).addBox(0.0F, -25.0F, -2.0F, 2.0F, 25.0F, 2.0F, 0.0F, false); + + cube_r87 = new ModelRenderer(this); + cube_r87.setRotationPoint(-0.25F, 0.0F, 0.25F); + bone19.addChild(cube_r87); + setRotationAngle(cube_r87, 0.2618F, 0.0F, 0.2618F); + cube_r87.setTextureOffset(8, 440).addBox(0.0F, -25.0F, -2.0F, 2.0F, 25.0F, 2.0F, 0.0F, false); + + cube_r88 = new ModelRenderer(this); + cube_r88.setRotationPoint(0.0F, 0.0F, 0.0F); + bone19.addChild(cube_r88); + setRotationAngle(cube_r88, 0.2618F, 0.0F, 0.2618F); + cube_r88.setTextureOffset(437, 30).addBox(0.0F, -25.0F, -2.0F, 2.0F, 25.0F, 2.0F, 0.0F, false); + + bone20 = new ModelRenderer(this); + bone20.setRotationPoint(7.5F, 0.0F, 7.5F); + ShuttleTop.addChild(bone20); + setRotationAngle(bone20, 0.0F, 3.1416F, 0.0F); + + + cube_r89 = new ModelRenderer(this); + cube_r89.setRotationPoint(7.5F, 0.0F, 7.5F); + bone20.addChild(cube_r89); + setRotationAngle(cube_r89, 0.2618F, 0.0F, -0.2618F); + cube_r89.setTextureOffset(437, 30).addBox(-2.0F, -25.0F, -2.0F, 2.0F, 25.0F, 2.0F, 0.0F, true); + + cube_r90 = new ModelRenderer(this); + cube_r90.setRotationPoint(7.75F, 0.0F, 7.75F); + bone20.addChild(cube_r90); + setRotationAngle(cube_r90, 0.2618F, 0.0F, -0.2618F); + cube_r90.setTextureOffset(8, 440).addBox(-2.0F, -25.0F, -2.0F, 2.0F, 25.0F, 2.0F, 0.0F, true); + + cube_r91 = new ModelRenderer(this); + cube_r91.setRotationPoint(7.5F, 0.0F, 7.5F); + bone20.addChild(cube_r91); + setRotationAngle(cube_r91, 0.2624F, 0.0674F, -0.2437F); + cube_r91.setTextureOffset(367, 24).addBox(-2.0F, -25.0F, -2.0F, 2.0F, 25.0F, 2.0F, 0.0F, true); + + cube_r92 = new ModelRenderer(this); + cube_r92.setRotationPoint(7.75F, 0.0F, 7.75F); + bone20.addChild(cube_r92); + setRotationAngle(cube_r92, 0.2624F, 0.0674F, -0.2437F); + cube_r92.setTextureOffset(17, 440).addBox(-2.0F, -25.0F, -2.0F, 2.0F, 25.0F, 2.0F, 0.0F, true); + + cube_r93 = new ModelRenderer(this); + cube_r93.setRotationPoint(-7.75F, 0.0F, 7.75F); + bone20.addChild(cube_r93); + setRotationAngle(cube_r93, 0.2624F, -0.0674F, 0.2437F); + cube_r93.setTextureOffset(17, 440).addBox(0.0F, -25.0F, -2.0F, 2.0F, 25.0F, 2.0F, 0.0F, false); + + cube_r94 = new ModelRenderer(this); + cube_r94.setRotationPoint(-7.5F, 0.0F, 7.5F); + bone20.addChild(cube_r94); + setRotationAngle(cube_r94, 0.2624F, -0.0674F, 0.2437F); + cube_r94.setTextureOffset(367, 24).addBox(0.0F, -25.0F, -2.0F, 2.0F, 25.0F, 2.0F, 0.0F, false); + + cube_r95 = new ModelRenderer(this); + cube_r95.setRotationPoint(-7.75F, 0.0F, 7.75F); + bone20.addChild(cube_r95); + setRotationAngle(cube_r95, 0.2618F, 0.0F, 0.2618F); + cube_r95.setTextureOffset(8, 440).addBox(0.0F, -25.0F, -2.0F, 2.0F, 25.0F, 2.0F, 0.0F, false); + + cube_r96 = new ModelRenderer(this); + cube_r96.setRotationPoint(-7.5F, 0.0F, 7.5F); + bone20.addChild(cube_r96); + setRotationAngle(cube_r96, 0.2618F, 0.0F, 0.2618F); + cube_r96.setTextureOffset(437, 30).addBox(0.0F, -25.0F, -2.0F, 2.0F, 25.0F, 2.0F, 0.0F, false); + + bone15 = new ModelRenderer(this); + bone15.setRotationPoint(7.5F, 0.0F, 7.5F); + ShuttleTop.addChild(bone15); + setRotationAngle(bone15, 0.0F, 1.6144F, 0.0F); + + + bone13 = new ModelRenderer(this); + bone13.setRotationPoint(0.0F, 0.0F, -7.25F); + bone15.addChild(bone13); + + + cube_r97 = new ModelRenderer(this); + cube_r97.setRotationPoint(0.0F, 0.0F, 0.0F); + bone13.addChild(cube_r97); + setRotationAngle(cube_r97, -0.2618F, 0.0F, 0.0F); + cube_r97.setTextureOffset(537, 521).addBox(-6.0F, -25.0F, 0.0F, 12.0F, 25.0F, 0.0F, 0.0F, false); + + bone14 = new ModelRenderer(this); + bone14.setRotationPoint(0.0F, 0.0F, 0.0F); + bone15.addChild(bone14); + setRotationAngle(bone14, 0.0F, 3.1416F, 0.0F); + + + cube_r98 = new ModelRenderer(this); + cube_r98.setRotationPoint(0.0F, 0.0F, -7.25F); + bone14.addChild(cube_r98); + setRotationAngle(cube_r98, -0.2618F, 0.0F, 0.0F); + cube_r98.setTextureOffset(537, 521).addBox(-6.0F, -25.0F, 0.0F, 12.0F, 25.0F, 0.0F, 0.0F, false); + + bone16 = new ModelRenderer(this); + bone16.setRotationPoint(7.5F, 0.0F, 0.25F); + ShuttleTop.addChild(bone16); + + + bone17 = new ModelRenderer(this); + bone17.setRotationPoint(0.0F, 0.0F, 0.0F); + bone16.addChild(bone17); + + + cube_r99 = new ModelRenderer(this); + cube_r99.setRotationPoint(0.0F, 0.0F, 0.0F); + bone17.addChild(cube_r99); + setRotationAngle(cube_r99, -0.2618F, 0.0F, 0.0F); + cube_r99.setTextureOffset(537, 521).addBox(-6.0F, -25.0F, 0.0F, 12.0F, 25.0F, 0.0F, 0.0F, false); + + bone18 = new ModelRenderer(this); + bone18.setRotationPoint(0.0F, 0.0F, 7.25F); + bone16.addChild(bone18); + setRotationAngle(bone18, 0.0F, 3.1416F, 0.0F); + + + cube_r100 = new ModelRenderer(this); + cube_r100.setRotationPoint(0.0F, 0.0F, -7.25F); + bone18.addChild(cube_r100); + setRotationAngle(cube_r100, -0.2618F, 0.0F, 0.0F); + cube_r100.setTextureOffset(537, 521).addBox(-6.0F, -25.0F, 0.0F, 12.0F, 25.0F, 0.0F, 0.0F, false); + + Compartmentroof = new ModelRenderer(this); + Compartmentroof.setRotationPoint(-14.0F, -98.0F, 0.0F); + Body.addChild(Compartmentroof); + Compartmentroof.setTextureOffset(76, 0).addBox(-1.0F, 0.0F, -15.0F, 30.0F, 5.0F, 30.0F, 0.0F, false); + + bone = new ModelRenderer(this); + bone.setRotationPoint(-0.5F, 0.0F, 14.5F); + Compartmentroof.addChild(bone); + + + cube_r101 = new ModelRenderer(this); + cube_r101.setRotationPoint(0.0F, 0.0F, 0.0F); + bone.addChild(cube_r101); + setRotationAngle(cube_r101, 0.2618F, 0.0F, 0.2618F); + cube_r101.setTextureOffset(218, 315).addBox(0.0F, -39.0F, -2.0F, 2.0F, 39.0F, 2.0F, 0.0F, true); + + cube_r102 = new ModelRenderer(this); + cube_r102.setRotationPoint(28.5F, 0.0F, -0.5F); + bone.addChild(cube_r102); + setRotationAngle(cube_r102, 0.2618F, 0.0F, -0.2618F); + cube_r102.setTextureOffset(0, 465).addBox(-3.0F, -39.0F, -3.0F, 4.0F, 39.0F, 4.0F, 0.0F, false); + + cube_r103 = new ModelRenderer(this); + cube_r103.setRotationPoint(29.0F, 0.0F, 0.0F); + bone.addChild(cube_r103); + setRotationAngle(cube_r103, 0.2618F, 0.0F, -0.2618F); + cube_r103.setTextureOffset(218, 315).addBox(-2.0F, -39.0F, -2.0F, 2.0F, 39.0F, 2.0F, 0.0F, false); + + cube_r104 = new ModelRenderer(this); + cube_r104.setRotationPoint(0.5F, 0.0F, -0.5F); + bone.addChild(cube_r104); + setRotationAngle(cube_r104, 0.2618F, 0.0F, 0.2618F); + cube_r104.setTextureOffset(0, 465).addBox(-1.0F, -39.0F, -3.0F, 4.0F, 39.0F, 4.0F, 0.0F, true); + + bone10 = new ModelRenderer(this); + bone10.setRotationPoint(14.0F, 0.0F, 0.0F); + Compartmentroof.addChild(bone10); + setRotationAngle(bone10, 0.0F, 3.1416F, 0.0F); + + + cube_r105 = new ModelRenderer(this); + cube_r105.setRotationPoint(-14.5F, 0.0F, 14.5F); + bone10.addChild(cube_r105); + setRotationAngle(cube_r105, 0.2618F, 0.0F, 0.2618F); + cube_r105.setTextureOffset(218, 315).addBox(0.0F, -39.0F, -2.0F, 2.0F, 39.0F, 2.0F, 0.0F, true); + + cube_r106 = new ModelRenderer(this); + cube_r106.setRotationPoint(14.0F, 0.0F, 14.0F); + bone10.addChild(cube_r106); + setRotationAngle(cube_r106, 0.2618F, 0.0F, -0.2618F); + cube_r106.setTextureOffset(0, 465).addBox(-3.0F, -39.0F, -3.0F, 4.0F, 39.0F, 4.0F, 0.0F, false); + + cube_r107 = new ModelRenderer(this); + cube_r107.setRotationPoint(14.5F, 0.0F, 14.5F); + bone10.addChild(cube_r107); + setRotationAngle(cube_r107, 0.2618F, 0.0F, -0.2618F); + cube_r107.setTextureOffset(218, 315).addBox(-2.0F, -39.0F, -2.0F, 2.0F, 39.0F, 2.0F, 0.0F, false); + + cube_r108 = new ModelRenderer(this); + cube_r108.setRotationPoint(-14.0F, 0.0F, 14.0F); + bone10.addChild(cube_r108); + setRotationAngle(cube_r108, 0.2618F, 0.0F, 0.2618F); + cube_r108.setTextureOffset(0, 465).addBox(-1.0F, -39.0F, -3.0F, 4.0F, 39.0F, 4.0F, 0.0F, true); + + bone11 = new ModelRenderer(this); + bone11.setRotationPoint(28.0F, 0.0F, 0.0F); + Compartmentroof.addChild(bone11); + + + cube_r109 = new ModelRenderer(this); + cube_r109.setRotationPoint(0.0F, 0.0F, 0.0F); + bone11.addChild(cube_r109); + setRotationAngle(cube_r109, 0.0F, 0.0F, -0.2618F); + cube_r109.setTextureOffset(0, 488).addBox(0.0F, -27.0F, -13.0F, 0.0F, 27.0F, 26.0F, 0.0F, true); + + cube_r110 = new ModelRenderer(this); + cube_r110.setRotationPoint(-28.0F, 0.0F, 0.0F); + bone11.addChild(cube_r110); + setRotationAngle(cube_r110, 0.0F, 0.0F, 0.2618F); + cube_r110.setTextureOffset(0, 488).addBox(0.0F, -27.0F, -13.0F, 0.0F, 27.0F, 26.0F, 0.0F, false); + + bone12 = new ModelRenderer(this); + bone12.setRotationPoint(14.0F, 0.0F, 0.0F); + Compartmentroof.addChild(bone12); + setRotationAngle(bone12, 0.0F, 1.5708F, 0.0F); + + + cube_r111 = new ModelRenderer(this); + cube_r111.setRotationPoint(14.0F, 0.0F, 0.0F); + bone12.addChild(cube_r111); + setRotationAngle(cube_r111, 0.0F, 0.0F, -0.2618F); + cube_r111.setTextureOffset(0, 488).addBox(0.0F, -27.0F, -13.0F, 0.0F, 27.0F, 26.0F, 0.0F, true); + + cube_r112 = new ModelRenderer(this); + cube_r112.setRotationPoint(-14.0F, 0.0F, 0.0F); + bone12.addChild(cube_r112); + setRotationAngle(cube_r112, 0.0F, 0.0F, 0.2618F); + cube_r112.setTextureOffset(0, 488).addBox(0.0F, -27.0F, -13.0F, 0.0F, 27.0F, 26.0F, 0.0F, false); + + panes = new ModelRenderer(this); + panes.setRotationPoint(35.0F, 11.0F, -36.0F); + ShuttleMain.addChild(panes); + panes.setTextureOffset(151, 0).addBox(17.0F, -181.0F, -33.0F, 0.0F, 181.0F, 75.0F, 0.0F, false); + + cube_r113 = new ModelRenderer(this); + cube_r113.setRotationPoint(0.0F, 0.0F, 0.0F); + panes.addChild(cube_r113); + setRotationAngle(cube_r113, -3.1416F, 0.7854F, 3.1416F); + cube_r113.setTextureOffset(0, 0).addBox(0.0F, -181.0F, -39.0F, 0.0F, 181.0F, 75.0F, 0.0F, false); + + Interior = new ModelRenderer(this); + Interior.setRotationPoint(0.0F, -18.5F, 0.0F); + RocketShip.addChild(Interior); + setRotationAngle(Interior, 0.0F, 1.5708F, 0.0F); + + + bone22 = new ModelRenderer(this); + bone22.setRotationPoint(-16.0F, 23.5F, 11.0F); + Interior.addChild(bone22); + bone22.setTextureOffset(442, 521).addBox(21.0F, -9.0F, -18.0F, 4.0F, 9.0F, 14.0F, 0.0F, false); + bone22.setTextureOffset(442, 521).addBox(7.0F, -9.0F, -18.0F, 4.0F, 9.0F, 14.0F, 0.0F, true); + bone22.setTextureOffset(442, 521).addBox(7.0F, 19.0F, -18.0F, 4.0F, 9.0F, 14.0F, 0.0F, true); + bone22.setTextureOffset(291, 525).addBox(9.0F, -3.2F, -18.0F, 14.0F, 3.0F, 17.0F, 0.0F, false); + bone22.setTextureOffset(291, 525).addBox(9.0F, 25.0F, -18.0F, 14.0F, 3.0F, 17.0F, 0.0F, false); + bone22.setTextureOffset(343, 559).addBox(13.0F, -26.0F, 1.1F, 6.0F, 10.0F, 4.0F, 0.0F, false); + bone22.setTextureOffset(61, 0).addBox(13.0F, -26.0F, 5.0F, 6.0F, 27.0F, 0.0F, 0.0F, false); + bone22.setTextureOffset(194, 351).addBox(4.0F, -26.0F, -18.0F, 0.0F, 26.0F, 14.0F, 0.0F, false); + bone22.setTextureOffset(406, 0).addBox(9.0F, -26.0F, -23.0F, 14.0F, 26.0F, 0.0F, 0.0F, false); + bone22.setTextureOffset(151, 365).addBox(28.0F, -26.0F, -18.0F, 0.0F, 26.0F, 14.0F, 0.0F, false); + bone22.setTextureOffset(302, 440).addBox(9.0F, -26.0F, 1.0F, 14.0F, 26.0F, 0.0F, 0.0F, false); + + cube_r114 = new ModelRenderer(this); + cube_r114.setRotationPoint(7.0F, -23.5F, -9.0F); + bone22.addChild(cube_r114); + setRotationAngle(cube_r114, 0.0F, 0.0F, 0.5236F); + cube_r114.setTextureOffset(479, 521).addBox(-2.0F, -4.5F, -8.0F, 4.0F, 9.0F, 12.0F, 0.0F, false); + + cube_r115 = new ModelRenderer(this); + cube_r115.setRotationPoint(25.0F, -23.5F, -9.0F); + bone22.addChild(cube_r115); + setRotationAngle(cube_r115, 0.0F, 0.0F, -0.5236F); + cube_r115.setTextureOffset(424, 304).addBox(-2.0F, -4.5F, -8.0F, 4.0F, 9.0F, 12.0F, 0.0F, false); + + cube_r116 = new ModelRenderer(this); + cube_r116.setRotationPoint(16.0F, -9.75F, -18.0F); + bone22.addChild(cube_r116); + setRotationAngle(cube_r116, 0.2618F, 0.0F, 0.0F); + cube_r116.setTextureOffset(302, 521).addBox(-7.0F, -9.0F, -3.0F, 14.0F, 18.0F, 6.0F, 0.0F, false); + + bone23 = new ModelRenderer(this); + bone23.setRotationPoint(-16.0F, 51.5F, 11.0F); + Interior.addChild(bone23); + bone23.setTextureOffset(442, 521).addBox(21.0F, -9.0F, -18.0F, 4.0F, 9.0F, 14.0F, 0.0F, false); + bone23.setTextureOffset(343, 559).addBox(13.0F, -27.0F, 1.1F, 6.0F, 10.0F, 4.0F, 0.0F, false); + bone23.setTextureOffset(61, 0).addBox(13.0F, -26.0F, 5.0F, 6.0F, 27.0F, 0.0F, 0.0F, false); + bone23.setTextureOffset(194, 351).addBox(4.0F, -26.0F, -18.0F, 0.0F, 26.0F, 14.0F, 0.0F, false); + bone23.setTextureOffset(406, 0).addBox(9.0F, -26.0F, -23.0F, 14.0F, 26.0F, 0.0F, 0.0F, false); + bone23.setTextureOffset(151, 365).addBox(28.0F, -26.0F, -18.0F, 0.0F, 26.0F, 14.0F, 0.0F, false); + bone23.setTextureOffset(302, 440).addBox(9.0F, -27.0F, 1.0F, 14.0F, 26.0F, 0.0F, 0.0F, false); + + cube_r117 = new ModelRenderer(this); + cube_r117.setRotationPoint(7.0F, -23.5F, -9.0F); + bone23.addChild(cube_r117); + setRotationAngle(cube_r117, 0.0F, 0.0F, 0.5236F); + cube_r117.setTextureOffset(479, 521).addBox(-2.0F, -4.5F, -8.0F, 4.0F, 9.0F, 12.0F, 0.0F, false); + + cube_r118 = new ModelRenderer(this); + cube_r118.setRotationPoint(25.0F, -23.5F, -9.0F); + bone23.addChild(cube_r118); + setRotationAngle(cube_r118, 0.0F, 0.0F, -0.5236F); + cube_r118.setTextureOffset(424, 304).addBox(-2.0F, -4.5F, -8.0F, 4.0F, 9.0F, 12.0F, 0.0F, false); + + cube_r119 = new ModelRenderer(this); + cube_r119.setRotationPoint(16.0F, -9.0F, -18.0F); + bone23.addChild(cube_r119); + setRotationAngle(cube_r119, 0.2618F, 0.0F, 0.0F); + cube_r119.setTextureOffset(302, 521).addBox(-7.0F, -9.0F, -3.0F, 14.0F, 18.0F, 6.0F, 0.0F, false); + } + + @Override + public void setRotationAngles(Spaceship entity, float limbSwing, float limbSwingAmount, float ageInTicks, float netHeadYaw, float headPitch) { + RocketShip.rotateAngleY = (((Spaceship)entity).GetVehicleYaw()) * SuperNova.DegToRad; + RocketShip.rotateAngleX = (((Spaceship)entity).GetVehiclePitch()) * SuperNova.DegToRad; + RocketShip.rotateAngleZ = (((Spaceship)entity).GetVehicleRoll()) * SuperNova.DegToRad; + } + + @Override + public void render(MatrixStack matrixStack, IVertexBuilder buffer, int packedLight, int packedOverlay, float red, float green, float blue, float alpha) { + RocketShip.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; + } + + } +} \ No newline at end of file diff --git a/src/main/java/net/halbear/supernova/entity/Spaceship.java b/src/main/java/net/halbear/supernova/entity/Spaceship.java new file mode 100644 index 0000000..b8a2695 --- /dev/null +++ b/src/main/java/net/halbear/supernova/entity/Spaceship.java @@ -0,0 +1,124 @@ +package net.halbear.supernova.entity; + +import net.minecraft.entity.player.PlayerEntity; +import net.minecraft.network.datasync.DataParameter; +import net.minecraft.entity.Entity; +import net.minecraft.entity.EntityType; +import net.minecraft.nbt.CompoundNBT; +import net.minecraft.network.IPacket; +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; + +import javax.annotation.Nonnull; + +public class Spaceship extends Entity { + private static final DataParameter ORIENTATION_ROLL = EntityDataManager.createKey(Spaceship.class, DataSerializers.FLOAT); + private static final DataParameter ORIENTATION_YAW = EntityDataManager.createKey(Spaceship.class, DataSerializers.FLOAT); + private static final DataParameter ORIENTATION_PITCH = EntityDataManager.createKey(Spaceship.class, DataSerializers.FLOAT); + + private static final Vector3d[] VehicleSeatOffsets = new Vector3d[]{ + new Vector3d(0.0D, 3D, 0.0D), + new Vector3d(0.0D, 1.5D, 0.0D), + }; + + public Spaceship(EntityType type, World worldIn) { + super(type, worldIn); + } + + 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 float[] GetVehicleRotations(){ + return new float[]{GetVehicleYaw(),GetVehiclePitch(),GetVehicleRoll()}; + } + public void SetVehicleRotations(float Yaw, float Pitch, float Roll){ + SetVehicleRoll(Roll); + SetVehicleYaw(Yaw); + SetVehiclePitch(Pitch); + } + @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); + } + } + } + + @Override + protected void registerData() { + this.dataManager.register(ORIENTATION_ROLL, 0F); + this.dataManager.register(ORIENTATION_PITCH, 0F); + this.dataManager.register(ORIENTATION_YAW, 0F); + } + + @Override + protected void readAdditional(CompoundNBT compoundNBT) { + + } + + @Override + protected void writeAdditional(CompoundNBT compoundNBT) { + + } + + @Override + @Nonnull + public IPacket createSpawnPacket() { + return NetworkHooks.getEntitySpawningPacket(this); + } + +} diff --git a/src/main/java/dev/halbear1/supernova/loot_modifiers/ModReplaceLootDrop.java b/src/main/java/net/halbear/supernova/loot_modifiers/ModReplaceLootDrop.java similarity index 97% rename from src/main/java/dev/halbear1/supernova/loot_modifiers/ModReplaceLootDrop.java rename to src/main/java/net/halbear/supernova/loot_modifiers/ModReplaceLootDrop.java index 63cef9c..3a5fb1c 100644 --- a/src/main/java/dev/halbear1/supernova/loot_modifiers/ModReplaceLootDrop.java +++ b/src/main/java/net/halbear/supernova/loot_modifiers/ModReplaceLootDrop.java @@ -1,4 +1,4 @@ -package dev.halbear1.supernova.loot_modifiers; +package net.halbear.supernova.loot_modifiers; import com.google.gson.JsonObject; import net.minecraft.item.Item; import net.minecraft.item.ItemStack; diff --git a/src/main/java/net/halbear/supernova/mixin/CameraMixin.java b/src/main/java/net/halbear/supernova/mixin/CameraMixin.java new file mode 100644 index 0000000..6fa6895 --- /dev/null +++ b/src/main/java/net/halbear/supernova/mixin/CameraMixin.java @@ -0,0 +1,31 @@ +package net.halbear.supernova.mixin; + +import net.halbear.supernova.SuperNova; +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.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; + +import static net.halbear.supernova.vehicle.VehicleCameraSetup.GetCameraOffsets; + +@Mixin(ActiveRenderInfo.class) +public abstract class CameraMixin { + @Inject(method = {"update", "func_216772_a"}, at = @At(value = "TAIL"),cancellable = true, remap = true) + private void update(IBlockReader currentRenderedLevel, Entity entity, boolean isDetached, boolean isMirrored, float partialTicks, CallbackInfo ci){ + + if(entity.isPassenger() && Minecraft.getInstance().gameSettings.getPointOfView() != PointOfView.FIRST_PERSON && entity.getRidingEntity().getType().getRegistryName().getNamespace().equals(SuperNova.MOD_ID)){ + Vector3f Position = GetCameraOffsets(); + this.movePosition(-this.calcCameraDistance(Position.getZ()), Position.getY(), Position.getX()); + } + } + @Shadow(aliases = {"move", "func_216782_a"}) + protected abstract void movePosition(double p_216782_1_, double p_216782_3_, double p_216782_5_); + @Shadow(aliases = {"getMaxZoom", "func_216779_a"}) protected abstract double calcCameraDistance(double p_216779_1_); +} diff --git a/src/main/java/dev/halbear1/supernova/registry/ModArmourMaterial.java b/src/main/java/net/halbear/supernova/registry/ModArmourMaterial.java similarity index 96% rename from src/main/java/dev/halbear1/supernova/registry/ModArmourMaterial.java rename to src/main/java/net/halbear/supernova/registry/ModArmourMaterial.java index d90136c..b28c25d 100644 --- a/src/main/java/dev/halbear1/supernova/registry/ModArmourMaterial.java +++ b/src/main/java/net/halbear/supernova/registry/ModArmourMaterial.java @@ -1,6 +1,6 @@ -package dev.halbear1.supernova.registry; +package net.halbear.supernova.registry; -import dev.halbear1.supernova.SuperNova; +import net.halbear.supernova.SuperNova; import net.minecraft.inventory.EquipmentSlotType; import net.minecraft.item.IArmorMaterial; import net.minecraft.item.crafting.Ingredient; diff --git a/src/main/java/net/halbear/supernova/registry/ModEntities.java b/src/main/java/net/halbear/supernova/registry/ModEntities.java new file mode 100644 index 0000000..0493ecf --- /dev/null +++ b/src/main/java/net/halbear/supernova/registry/ModEntities.java @@ -0,0 +1,18 @@ +package net.halbear.supernova.registry; + +import net.halbear.supernova.SuperNova; +import net.halbear.supernova.entity.Spaceship; +import net.minecraft.entity.EntityClassification; +import net.minecraft.entity.EntityType; +import net.minecraft.util.ResourceLocation; +import net.minecraftforge.fml.RegistryObject; +import net.minecraftforge.registries.DeferredRegister; +import net.minecraftforge.registries.ForgeRegistries; + +public class ModEntities { + public static DeferredRegister> ENTITY_TYPES = DeferredRegister.create(ForgeRegistries.ENTITIES, SuperNova.MOD_ID); + + public static final RegistryObject> SPACESHIP = + ENTITY_TYPES.register("spaceship", ()-> EntityType.Builder.create(Spaceship::new, + EntityClassification.MISC ).size(3f,8f).build(new ResourceLocation(SuperNova.MOD_ID, "spaceship").toString())); +} diff --git a/src/main/java/dev/halbear1/supernova/registry/ModEventBusEvents.java b/src/main/java/net/halbear/supernova/registry/ModEventBusEvents.java similarity index 55% rename from src/main/java/dev/halbear1/supernova/registry/ModEventBusEvents.java rename to src/main/java/net/halbear/supernova/registry/ModEventBusEvents.java index fe33063..1e1c0ff 100644 --- a/src/main/java/dev/halbear1/supernova/registry/ModEventBusEvents.java +++ b/src/main/java/net/halbear/supernova/registry/ModEventBusEvents.java @@ -1,28 +1,13 @@ -package dev.halbear1.supernova.registry; +package net.halbear.supernova.registry; -import dev.halbear1.supernova.*; -import dev.halbear1.supernova.loot_modifiers.ModReplaceLootDrop; -import dev.halbear1.supernova.registry.worldgen.ModDimensions; -import net.minecraft.entity.Entity; -import net.minecraft.entity.player.PlayerEntity; -import net.minecraft.entity.player.ServerPlayerEntity; -import net.minecraft.server.MinecraftServer; -import net.minecraft.util.RegistryKey; +import net.halbear.supernova.*; +import net.halbear.supernova.SuperNova; +import net.halbear.supernova.loot_modifiers.ModReplaceLootDrop; import net.minecraft.util.ResourceLocation; -import net.minecraft.util.Util; -import net.minecraft.util.registry.Registry; -import net.minecraft.util.text.ChatType; -import net.minecraft.util.text.StringTextComponent; -import net.minecraft.world.World; -import net.minecraftforge.client.event.RenderGameOverlayEvent; import net.minecraftforge.common.loot.GlobalLootModifierSerializer; import net.minecraftforge.event.RegistryEvent; -import net.minecraftforge.event.ServerChatEvent; -import net.minecraftforge.event.entity.player.PlayerEvent; -import net.minecraftforge.eventbus.api.Event; import net.minecraftforge.eventbus.api.SubscribeEvent; import net.minecraftforge.fml.common.Mod; -import net.minecraftforge.fml.server.ServerLifecycleHooks; import javax.annotation.Nonnull; diff --git a/src/main/java/dev/halbear1/supernova/registry/ModParticles.java b/src/main/java/net/halbear/supernova/registry/ModParticles.java similarity index 73% rename from src/main/java/dev/halbear1/supernova/registry/ModParticles.java rename to src/main/java/net/halbear/supernova/registry/ModParticles.java index 348118f..7a4e7e9 100644 --- a/src/main/java/dev/halbear1/supernova/registry/ModParticles.java +++ b/src/main/java/net/halbear/supernova/registry/ModParticles.java @@ -1,9 +1,7 @@ -package dev.halbear1.supernova.registry; +package net.halbear.supernova.registry; -import dev.halbear1.supernova.SuperNova; -import net.minecraft.particles.BasicParticleType; +import net.halbear.supernova.SuperNova; import net.minecraft.particles.ParticleType; -import net.minecraftforge.fml.RegistryObject; import net.minecraftforge.registries.DeferredRegister; import net.minecraftforge.registries.ForgeRegistries; diff --git a/src/main/java/dev/halbear1/supernova/registry/blocks/ModBlocks.java b/src/main/java/net/halbear/supernova/registry/blocks/ModBlocks.java similarity index 95% rename from src/main/java/dev/halbear1/supernova/registry/blocks/ModBlocks.java rename to src/main/java/net/halbear/supernova/registry/blocks/ModBlocks.java index 8da32b4..17797aa 100644 --- a/src/main/java/dev/halbear1/supernova/registry/blocks/ModBlocks.java +++ b/src/main/java/net/halbear/supernova/registry/blocks/ModBlocks.java @@ -1,12 +1,12 @@ -package dev.halbear1.supernova.registry.blocks; +package net.halbear.supernova.registry.blocks; -import dev.halbear1.supernova.SuperNova; +import net.halbear.supernova.SuperNova; -import dev.halbear1.supernova.custom.block.ArcFurnace; -import dev.halbear1.supernova.custom.block.DebugPortalBlock; -import dev.halbear1.supernova.custom.block.StraightSteelPipe; -import dev.halbear1.supernova.registry.items.ModItems; -import dev.halbear1.supernova.registry.items.ItemGroups; +import net.halbear.supernova.custom.block.ArcFurnace; +import net.halbear.supernova.custom.block.DebugPortalBlock; +import net.halbear.supernova.custom.block.StraightSteelPipe; +import net.halbear.supernova.registry.items.ModItems; +import net.halbear.supernova.registry.items.ItemGroups; import net.minecraft.block.*; import net.minecraft.block.material.Material; import net.minecraft.item.BlockItem; diff --git a/src/main/java/dev/halbear1/supernova/registry/blocks/ModFluids.java b/src/main/java/net/halbear/supernova/registry/blocks/ModFluids.java similarity index 95% rename from src/main/java/dev/halbear1/supernova/registry/blocks/ModFluids.java rename to src/main/java/net/halbear/supernova/registry/blocks/ModFluids.java index 98e8fa8..5503c9b 100644 --- a/src/main/java/dev/halbear1/supernova/registry/blocks/ModFluids.java +++ b/src/main/java/net/halbear/supernova/registry/blocks/ModFluids.java @@ -1,10 +1,10 @@ -package dev.halbear1.supernova.registry.blocks; +package net.halbear.supernova.registry.blocks; -import dev.halbear1.supernova.SuperNova; -import dev.halbear1.supernova.custom.fluid.FlammableFluid; -import dev.halbear1.supernova.custom.fluid.SupernovaFlowingFluid; -import dev.halbear1.supernova.custom.fluid.SupernovaFluidAttributes; -import dev.halbear1.supernova.registry.items.ModItems; +import net.halbear.supernova.SuperNova; +import net.halbear.supernova.custom.fluid.FlammableFluid; +import net.halbear.supernova.custom.fluid.SupernovaFlowingFluid; +import net.halbear.supernova.custom.fluid.SupernovaFluidAttributes; +import net.halbear.supernova.registry.items.ModItems; import net.minecraft.block.AbstractBlock; import net.minecraft.block.FlowingFluidBlock; import net.minecraft.block.material.Material; @@ -12,7 +12,6 @@ import net.minecraft.fluid.FlowingFluid; import net.minecraft.fluid.Fluid; import net.minecraft.util.ResourceLocation; import net.minecraft.util.SoundEvents; -import net.minecraftforge.eventbus.api.IEventBus; import net.minecraftforge.fluids.FluidAttributes; import net.minecraftforge.fluids.ForgeFlowingFluid; import net.minecraftforge.fml.RegistryObject; diff --git a/src/main/java/dev/halbear1/supernova/registry/items/ItemGroups.java b/src/main/java/net/halbear/supernova/registry/items/ItemGroups.java similarity index 84% rename from src/main/java/dev/halbear1/supernova/registry/items/ItemGroups.java rename to src/main/java/net/halbear/supernova/registry/items/ItemGroups.java index b6bdab2..87814f4 100644 --- a/src/main/java/dev/halbear1/supernova/registry/items/ItemGroups.java +++ b/src/main/java/net/halbear/supernova/registry/items/ItemGroups.java @@ -1,6 +1,6 @@ -package dev.halbear1.supernova.registry.items; +package net.halbear.supernova.registry.items; -import dev.halbear1.supernova.registry.blocks.ModBlocks; +import net.halbear.supernova.registry.blocks.ModBlocks; import net.minecraft.item.ItemGroup; import net.minecraft.item.ItemStack; diff --git a/src/main/java/dev/halbear1/supernova/registry/items/ModItems.java b/src/main/java/net/halbear/supernova/registry/items/ModItems.java similarity index 97% rename from src/main/java/dev/halbear1/supernova/registry/items/ModItems.java rename to src/main/java/net/halbear/supernova/registry/items/ModItems.java index 2bbea3f..0cc2b72 100644 --- a/src/main/java/dev/halbear1/supernova/registry/items/ModItems.java +++ b/src/main/java/net/halbear/supernova/registry/items/ModItems.java @@ -1,15 +1,14 @@ -package dev.halbear1.supernova.registry.items; +package net.halbear.supernova.registry.items; -import dev.halbear1.supernova.SuperNova; -import dev.halbear1.supernova.registry.blocks.ModFluids; -import dev.halbear1.supernova.registry.util.ModSoundEvents; +import net.halbear.supernova.SuperNova; +import net.halbear.supernova.registry.blocks.ModFluids; +import net.halbear.supernova.registry.util.ModSoundEvents; import net.minecraft.client.gui.screen.Screen; import net.minecraft.client.util.ITooltipFlag; import net.minecraft.item.*; import net.minecraft.util.text.ITextComponent; import net.minecraft.util.text.TranslationTextComponent; import net.minecraft.world.World; -import net.minecraftforge.common.ToolType; import net.minecraftforge.fml.RegistryObject; import net.minecraftforge.registries.DeferredRegister; import net.minecraftforge.registries.ForgeRegistries; diff --git a/src/main/java/dev/halbear1/supernova/registry/util/ClientEventHandler.java b/src/main/java/net/halbear/supernova/registry/util/ClientEventHandler.java similarity index 68% rename from src/main/java/dev/halbear1/supernova/registry/util/ClientEventHandler.java rename to src/main/java/net/halbear/supernova/registry/util/ClientEventHandler.java index 038af12..5cb91fb 100644 --- a/src/main/java/dev/halbear1/supernova/registry/util/ClientEventHandler.java +++ b/src/main/java/net/halbear/supernova/registry/util/ClientEventHandler.java @@ -1,48 +1,26 @@ -package dev.halbear1.supernova.registry.util; +package net.halbear.supernova.registry.util; -import dev.halbear1.supernova.SuperNova; +import net.halbear.supernova.SuperNova; //import dev.halbear1.supernova.custom.particle.StarSparkle; -import dev.halbear1.supernova.registry.ModParticles; -import dev.halbear1.supernova.registry.blocks.ModBlocks; -import dev.halbear1.supernova.registry.blocks.ModFluids; -import dev.halbear1.supernova.registry.worldgen.ModBiomes; -import dev.halbear1.supernova.registry.worldgen.ModDimensions; -import net.minecraft.client.Minecraft; -import net.minecraft.client.particle.IParticleFactory; +import net.halbear.supernova.entity.EntityRenderers.SpaceshipRenderer; +import net.halbear.supernova.entity.Spaceship; +import net.halbear.supernova.registry.ModEntities; +import net.halbear.supernova.registry.blocks.ModBlocks; +import net.halbear.supernova.registry.blocks.ModFluids; import net.minecraft.client.renderer.RenderType; import net.minecraft.client.renderer.RenderTypeLookup; -import net.minecraft.client.world.DimensionRenderInfo; +import net.minecraft.client.renderer.entity.EntityRenderer; +import net.minecraft.client.renderer.entity.EntityRendererManager; +import net.minecraft.client.renderer.entity.MobRenderer; import net.minecraft.entity.Entity; -import net.minecraft.entity.LivingEntity; -import net.minecraft.entity.player.PlayerEntity; -import net.minecraft.fluid.FluidState; -import net.minecraft.server.MinecraftServer; -import net.minecraft.util.RegistryKey; import net.minecraft.util.ResourceLocation; -import net.minecraft.util.Util; -import net.minecraft.util.math.BlockPos; -import net.minecraft.util.registry.Registry; -import net.minecraft.util.text.ChatType; -import net.minecraft.util.text.StringTextComponent; -import net.minecraft.world.Dimension; -import net.minecraft.world.World; import net.minecraftforge.api.distmarker.Dist; -import net.minecraftforge.client.event.EntityViewRenderEvent; -import net.minecraftforge.client.event.ParticleFactoryRegisterEvent; -import net.minecraftforge.event.TickEvent; -import net.minecraftforge.event.entity.living.LivingEntityUseItemEvent; -import net.minecraftforge.event.entity.player.PlayerEvent; 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; import net.minecraft.block.Block; -import net.minecraftforge.fml.server.ServerLifecycleHooks; - -import java.util.AbstractMap; -import java.util.HashMap; -import java.util.Map; -import java.util.stream.Stream; @Mod.EventBusSubscriber(modid = SuperNova.MOD_ID, bus = Mod.EventBusSubscriber.Bus.MOD, value = Dist.CLIENT) public class ClientEventHandler { @@ -75,6 +53,7 @@ public class ClientEventHandler { RenderTypeLookup.setRenderLayer(ModFluids.KEROSENE_FLOWING.get(), RenderType.getTranslucent()); RenderTypeLookup.setRenderLayer(ModFluids.KEROSENE_BLOCK.get(), RenderType.getTranslucent()); + RenderingRegistry.registerEntityRenderingHandler(ModEntities.SPACESHIP.get(), SpaceshipRenderer::new); /*SetCollectionRenderType(RenderType.getCutoutMipped(), // Cutout Mipped: Cutout but with mipmapping. Textures from far away are simplified for performance. //blocks here ); diff --git a/src/main/java/dev/halbear1/supernova/registry/util/ModSoundEvents.java b/src/main/java/net/halbear/supernova/registry/util/ModSoundEvents.java similarity index 93% rename from src/main/java/dev/halbear1/supernova/registry/util/ModSoundEvents.java rename to src/main/java/net/halbear/supernova/registry/util/ModSoundEvents.java index d5939ed..c4def3e 100644 --- a/src/main/java/dev/halbear1/supernova/registry/util/ModSoundEvents.java +++ b/src/main/java/net/halbear/supernova/registry/util/ModSoundEvents.java @@ -1,6 +1,6 @@ -package dev.halbear1.supernova.registry.util; +package net.halbear.supernova.registry.util; -import dev.halbear1.supernova.SuperNova; +import net.halbear.supernova.SuperNova; import net.minecraft.util.ResourceLocation; import net.minecraft.util.SoundEvent; import net.minecraftforge.fml.RegistryObject; diff --git a/src/main/java/dev/halbear1/supernova/registry/util/ServerEventHandler.java b/src/main/java/net/halbear/supernova/registry/util/ServerEventHandler.java similarity index 96% rename from src/main/java/dev/halbear1/supernova/registry/util/ServerEventHandler.java rename to src/main/java/net/halbear/supernova/registry/util/ServerEventHandler.java index 267b96c..0f5159f 100644 --- a/src/main/java/dev/halbear1/supernova/registry/util/ServerEventHandler.java +++ b/src/main/java/net/halbear/supernova/registry/util/ServerEventHandler.java @@ -1,7 +1,7 @@ -package dev.halbear1.supernova.registry.util; -import dev.halbear1.supernova.SuperNova; +package net.halbear.supernova.registry.util; +import net.halbear.supernova.SuperNova; -import dev.halbear1.supernova.registry.blocks.ModFluids; +import net.halbear.supernova.registry.blocks.ModFluids; import net.minecraft.client.Minecraft; import net.minecraft.entity.Entity; import net.minecraft.entity.player.PlayerEntity; diff --git a/src/main/java/dev/halbear1/supernova/registry/worldgen/ModBiomes.java b/src/main/java/net/halbear/supernova/registry/worldgen/ModBiomes.java similarity index 93% rename from src/main/java/dev/halbear1/supernova/registry/worldgen/ModBiomes.java rename to src/main/java/net/halbear/supernova/registry/worldgen/ModBiomes.java index 443a410..7c7b722 100644 --- a/src/main/java/dev/halbear1/supernova/registry/worldgen/ModBiomes.java +++ b/src/main/java/net/halbear/supernova/registry/worldgen/ModBiomes.java @@ -1,6 +1,6 @@ -package dev.halbear1.supernova.registry.worldgen; +package net.halbear.supernova.registry.worldgen; -import dev.halbear1.supernova.SuperNova; +import net.halbear.supernova.SuperNova; import net.minecraft.util.RegistryKey; import net.minecraft.util.ResourceLocation; import net.minecraft.util.registry.Registry; diff --git a/src/main/java/dev/halbear1/supernova/registry/worldgen/ModConfiguredFeatures.java b/src/main/java/net/halbear/supernova/registry/worldgen/ModConfiguredFeatures.java similarity index 92% rename from src/main/java/dev/halbear1/supernova/registry/worldgen/ModConfiguredFeatures.java rename to src/main/java/net/halbear/supernova/registry/worldgen/ModConfiguredFeatures.java index 4962d50..7acf69f 100644 --- a/src/main/java/dev/halbear1/supernova/registry/worldgen/ModConfiguredFeatures.java +++ b/src/main/java/net/halbear/supernova/registry/worldgen/ModConfiguredFeatures.java @@ -1,7 +1,7 @@ -package dev.halbear1.supernova.registry.worldgen; +package net.halbear.supernova.registry.worldgen; -import dev.halbear1.supernova.SuperNova; -import dev.halbear1.supernova.registry.blocks.ModBlocks; +import net.halbear.supernova.SuperNova; +import net.halbear.supernova.registry.blocks.ModBlocks; import net.minecraft.util.ResourceLocation; import net.minecraft.util.registry.Registry; import net.minecraft.util.registry.WorldGenRegistries; diff --git a/src/main/java/dev/halbear1/supernova/registry/worldgen/ModDimensions.java b/src/main/java/net/halbear/supernova/registry/worldgen/ModDimensions.java similarity index 91% rename from src/main/java/dev/halbear1/supernova/registry/worldgen/ModDimensions.java rename to src/main/java/net/halbear/supernova/registry/worldgen/ModDimensions.java index edf7a05..1768068 100644 --- a/src/main/java/dev/halbear1/supernova/registry/worldgen/ModDimensions.java +++ b/src/main/java/net/halbear/supernova/registry/worldgen/ModDimensions.java @@ -1,6 +1,6 @@ -package dev.halbear1.supernova.registry.worldgen; +package net.halbear.supernova.registry.worldgen; -import dev.halbear1.supernova.SuperNova; +import net.halbear.supernova.SuperNova; import net.minecraft.entity.player.PlayerEntity; import net.minecraft.server.MinecraftServer; import net.minecraft.util.RegistryKey; @@ -11,7 +11,6 @@ import net.minecraft.util.text.ChatType; import net.minecraft.util.text.StringTextComponent; import net.minecraft.world.World; import net.minecraftforge.event.entity.player.PlayerEvent; -import net.minecraftforge.eventbus.api.IEventBus; import net.minecraftforge.eventbus.api.SubscribeEvent; import net.minecraftforge.fml.server.ServerLifecycleHooks; diff --git a/src/main/java/net/halbear/supernova/registry/worldgen/ModFeatures.java b/src/main/java/net/halbear/supernova/registry/worldgen/ModFeatures.java new file mode 100644 index 0000000..d7974a4 --- /dev/null +++ b/src/main/java/net/halbear/supernova/registry/worldgen/ModFeatures.java @@ -0,0 +1,4 @@ +package net.halbear.supernova.registry.worldgen; + +public class ModFeatures { +} diff --git a/src/main/java/dev/halbear1/supernova/registry/worldgen/ModSurfaceBuilders.java b/src/main/java/net/halbear/supernova/registry/worldgen/ModSurfaceBuilders.java similarity index 80% rename from src/main/java/dev/halbear1/supernova/registry/worldgen/ModSurfaceBuilders.java rename to src/main/java/net/halbear/supernova/registry/worldgen/ModSurfaceBuilders.java index 6a1cca4..b7c8b33 100644 --- a/src/main/java/dev/halbear1/supernova/registry/worldgen/ModSurfaceBuilders.java +++ b/src/main/java/net/halbear/supernova/registry/worldgen/ModSurfaceBuilders.java @@ -1,6 +1,6 @@ -package dev.halbear1.supernova.registry.worldgen; +package net.halbear.supernova.registry.worldgen; -import dev.halbear1.supernova.SuperNova; +import net.halbear.supernova.SuperNova; import net.minecraft.world.gen.surfacebuilders.SurfaceBuilder; import net.minecraftforge.registries.DeferredRegister; import net.minecraftforge.registries.ForgeRegistries; diff --git a/src/main/java/dev/halbear1/supernova/setup/CommonEventHandler.java b/src/main/java/net/halbear/supernova/setup/CommonEventHandler.java similarity index 76% rename from src/main/java/dev/halbear1/supernova/setup/CommonEventHandler.java rename to src/main/java/net/halbear/supernova/setup/CommonEventHandler.java index e9601d4..ed2b227 100644 --- a/src/main/java/dev/halbear1/supernova/setup/CommonEventHandler.java +++ b/src/main/java/net/halbear/supernova/setup/CommonEventHandler.java @@ -1,10 +1,7 @@ -package dev.halbear1.supernova.setup; -import dev.halbear1.supernova.SuperNova; -import dev.halbear1.supernova.registry.worldgen.ModConfiguredFeatures; -import dev.halbear1.supernova.registry.worldgen.ModDimensions; -import net.minecraft.entity.player.PlayerEntity; +package net.halbear.supernova.setup; +import net.halbear.supernova.SuperNova; +import net.halbear.supernova.registry.worldgen.ModConfiguredFeatures; import net.minecraft.world.gen.GenerationStage; -import net.minecraftforge.event.entity.player.PlayerEvent; import net.minecraftforge.event.world.BiomeLoadingEvent; import net.minecraftforge.eventbus.api.SubscribeEvent; import net.minecraftforge.fml.common.Mod; diff --git a/src/main/java/net/halbear/supernova/setup/ModEventHandler.java b/src/main/java/net/halbear/supernova/setup/ModEventHandler.java new file mode 100644 index 0000000..3de6077 --- /dev/null +++ b/src/main/java/net/halbear/supernova/setup/ModEventHandler.java @@ -0,0 +1,24 @@ +package net.halbear.supernova.setup; +import net.halbear.supernova.SuperNova; +import net.halbear.supernova.entity.Spaceship; +import net.halbear.supernova.registry.ModEntities; +import net.halbear.supernova.registry.worldgen.ModConfiguredFeatures; +import net.minecraft.entity.EntityType; +import net.minecraft.world.gen.GenerationStage; +import net.minecraftforge.event.RegistryEvent; +import net.minecraftforge.event.entity.EntityAttributeCreationEvent; +import net.minecraftforge.event.world.BiomeLoadingEvent; +import net.minecraftforge.eventbus.api.SubscribeEvent; +import net.minecraftforge.fml.common.Mod; + +@Mod.EventBusSubscriber(modid = SuperNova.MOD_ID, bus = Mod.EventBusSubscriber.Bus.MOD) +public class ModEventHandler { + @SubscribeEvent + public static void addEntityAttributes(EntityAttributeCreationEvent event){ + } + + @SubscribeEvent + public static void onRegisterEntities(RegistryEvent.Register> event){ + + } +} diff --git a/src/main/java/net/halbear/supernova/vehicle/VehicleCameraSetup.java b/src/main/java/net/halbear/supernova/vehicle/VehicleCameraSetup.java new file mode 100644 index 0000000..53f7559 --- /dev/null +++ b/src/main/java/net/halbear/supernova/vehicle/VehicleCameraSetup.java @@ -0,0 +1,62 @@ +package net.halbear.supernova.vehicle; + +import net.halbear.supernova.*; +import net.halbear.supernova.entity.Spaceship; +import net.halbear.supernova.registry.ModEntities; +import net.minecraft.client.Minecraft; +import net.minecraft.util.math.vector.Vector3f; +import net.minecraftforge.client.event.EntityViewRenderEvent; +import net.minecraftforge.event.TickEvent; +import net.minecraftforge.eventbus.api.SubscribeEvent; +import net.minecraftforge.fml.common.Mod; + +@Mod.EventBusSubscriber +public class VehicleCameraSetup { + private static Vector3f CamOffset = new Vector3f(0.0f, 0.0f, 0.0f); + private static Vector3f CamTransformations = new Vector3f(0.0f, 0.0f, 0.0f); + private static float CamFOV = 0.0f; + private static float CamFOVExternal = 0.0f; + private static String CurrentEntity = ""; + private static boolean SupernovaVehicle = false; + public static Vector3f GetCameraOffsets(){ + return CamOffset; + } + + @SubscribeEvent + public static void PlayerTickEvent(TickEvent.PlayerTickEvent event) { + + Minecraft minecraftInstance = Minecraft.getInstance(); + if (minecraftInstance.player != null && minecraftInstance.player.isPassenger() && minecraftInstance.player.getRidingEntity() != null + && CurrentEntity != minecraftInstance.player.getRidingEntity().getType().getRegistryName().toString()) { + CurrentEntity = minecraftInstance.player.getRidingEntity().getType().getRegistryName().toString(); + SupernovaVehicle = minecraftInstance.player.getRidingEntity().getType().getRegistryName().getNamespace().equals(SuperNova.MOD_ID); + if (CurrentEntity.equals(ModEntities.SPACESHIP.get().getRegistryName().toString())) { + CamOffset = new Vector3f(0.0f, -0.75f, 6.5f); + CamTransformations = new Vector3f(0.0f, 0.0f, 0.0f); + CamFOV = 70.0f; + CamFOVExternal = 60.0f; + } + } + if (minecraftInstance.player != null && (!minecraftInstance.player.isPassenger() || !SupernovaVehicle) + && (CamFOVExternal != (float) Minecraft.getInstance().gameSettings.fov + || CamFOV != (float) Minecraft.getInstance().gameSettings.fov || CamOffset.getX() != 0 || CamOffset.getY() != 0 + || CamOffset.getZ() != 0 || CamTransformations.getX() != 0 || CamTransformations.getY() != 0 + || CamTransformations.getZ() != 0)) { + CamOffset = new Vector3f(0.0f, 0.0f, 0.0f);// reset if the players not riding an entity and if any the values aren't 0 + CamTransformations = new Vector3f(0.0f, 0.0f, 0.0f); + CamFOV = (float) Minecraft.getInstance().gameSettings.fov; + CamFOVExternal = (float) Minecraft.getInstance().gameSettings.fov; + if (!minecraftInstance.player.isPassenger()) + CurrentEntity = ""; + } + } + + @SubscribeEvent + public static void onCameraSetup(EntityViewRenderEvent.CameraSetup event) { + if (SupernovaVehicle) { + event.setRoll(event.getRoll() + CamTransformations.getX()); + event.setYaw(event.getYaw() + CamTransformations.getY()); + event.setPitch(event.getPitch() + CamTransformations.getZ()); + } + } +} diff --git a/src/main/java/dev/halbear1/supernova/world/dimension/DebugTeleporter.java b/src/main/java/net/halbear/supernova/world/dimension/DebugTeleporter.java similarity index 93% rename from src/main/java/dev/halbear1/supernova/world/dimension/DebugTeleporter.java rename to src/main/java/net/halbear/supernova/world/dimension/DebugTeleporter.java index addfb9f..f9a67b8 100644 --- a/src/main/java/dev/halbear1/supernova/world/dimension/DebugTeleporter.java +++ b/src/main/java/net/halbear/supernova/world/dimension/DebugTeleporter.java @@ -1,7 +1,7 @@ -package dev.halbear1.supernova.world.dimension; +package net.halbear.supernova.world.dimension; -import dev.halbear1.supernova.custom.block.ArcFurnace; -import dev.halbear1.supernova.registry.blocks.ModBlocks; +import net.halbear.supernova.custom.block.ArcFurnace; +import net.halbear.supernova.registry.blocks.ModBlocks; import net.minecraft.block.material.Material; import net.minecraft.entity.Entity; import net.minecraft.fluid.Fluids; diff --git a/src/main/java/net/halbear/supernova/world/gen/ores/OreInCave.java b/src/main/java/net/halbear/supernova/world/gen/ores/OreInCave.java new file mode 100644 index 0000000..bc773d3 --- /dev/null +++ b/src/main/java/net/halbear/supernova/world/gen/ores/OreInCave.java @@ -0,0 +1,4 @@ +package net.halbear.supernova.world.gen.ores; + +public class OreInCave { +} diff --git a/src/main/resources/META-INF/mods.toml b/src/main/resources/META-INF/mods.toml index 0d6b395..b3acf1b 100644 --- a/src/main/resources/META-INF/mods.toml +++ b/src/main/resources/META-INF/mods.toml @@ -29,9 +29,9 @@ displayName="SuperNova" #mandatory # A file name (in the root of the mod JAR) containing a logo for display logoFile="SuperNova.png" #optional # A text field displayed in the mod UI -credits="halbear1, Masterchefreal, TechyKnight, Peacefulgamer_, Billz_Game" #optional +credits="halbear1, TechyKnight, Billz_Game" #optional # A text field displayed in the mod UI -authors="halbear1" #optional +authors="Halbear Networking & Software Ltd" #optional # The description text for the mod (multi line!) (#mandatory) description=''' SuperNova Space travel mod developed by Iron Horse Game Development (visit https://iron-horse.games/ to find out more) diff --git a/src/main/resources/assets/supernova/textures/entity/rocketship.png b/src/main/resources/assets/supernova/textures/entity/rocketship.png new file mode 100644 index 0000000..e69de29 diff --git a/src/main/resources/assets/supernova/textures/entity/spaceship.png b/src/main/resources/assets/supernova/textures/entity/spaceship.png new file mode 100644 index 0000000..038ff80 Binary files /dev/null and b/src/main/resources/assets/supernova/textures/entity/spaceship.png differ diff --git a/src/main/resources/supernova.mixin.json b/src/main/resources/supernova.mixin.json new file mode 100644 index 0000000..0e75706 --- /dev/null +++ b/src/main/resources/supernova.mixin.json @@ -0,0 +1,12 @@ +{ + "required": true, + "package": "net.halbear.supernova.mixin", + "refmap": "supernova.mixin-refmap.json", + "compatibilityLevel": "JAVA_8", + "client": [ + "CameraMixin" + ], + "injectors": { + "defaultRequire": 1 + } +}