girthier meatier more sensual missiles

This commit is contained in:
Bob 2024-02-12 21:18:37 +01:00
parent 6f00c68051
commit e2807f0721
16 changed files with 1617 additions and 109 deletions

View File

@ -122,15 +122,6 @@ public class ExplosionNukeRayBatched {
}
if(res <= 0 || i + 1 >= this.length || i == length - 1) {
/*NBTTagCompound fx = new NBTTagCompound();
fx.setString("type", "debugline");
fx.setDouble("mX", vec.xCoord * i);
fx.setDouble("mY", vec.yCoord * i);
fx.setDouble("mZ", vec.zCoord * i);
fx.setInteger("color", 0xff0000);
PacketDispatcher.wrapper.sendToAllAround(new AuxParticlePacketNT(fx, posX, posY, posZ), new TargetPoint(world.provider.dimensionId, posX, posY, posZ, 200));*/
break;
}
}
@ -180,7 +171,7 @@ public class ExplosionNukeRayBatched {
int diff1 = Math.abs((chunkX - o1.chunkXPos)) + Math.abs((chunkZ - o1.chunkZPos));
int diff2 = Math.abs((chunkX - o2.chunkXPos)) + Math.abs((chunkZ - o2.chunkZPos));
return diff1 > diff2 ? 1 : diff1 < diff2 ? -1 : 0;
return diff1 - diff2;
}
}
@ -191,6 +182,7 @@ public class ExplosionNukeRayBatched {
ChunkCoordIntPair coord = orderedChunks.get(0);
List<FloatTriplet> list = perChunk.get(coord);
HashSet<BlockPos> toRem = new HashSet();
HashSet<BlockPos> toRemTips = new HashSet();
//List<BlockPos> toRem = new ArrayList();
int chunkX = coord.chunkXPos;
int chunkZ = coord.chunkZPos;
@ -209,6 +201,10 @@ public class ExplosionNukeRayBatched {
double pX = vec.xCoord / vec.lengthVector();
double pY = vec.yCoord / vec.lengthVector();
double pZ = vec.zCoord / vec.lengthVector();
int tipX = (int) Math.floor(x);
int tipY = (int) Math.floor(y);
int tipZ = (int) Math.floor(z);
boolean inChunk = false;
for(int i = enter; i < vec.lengthVector(); i++) {
@ -227,14 +223,18 @@ public class ExplosionNukeRayBatched {
inChunk = true;
if(!world.isAirBlock(x0, y0, z0)) {
toRem.add(new BlockPos(x0, y0, z0));
BlockPos pos = new BlockPos(x0, y0, z0);
if(x0 == tipX && y0 == tipY && z0 == tipZ) {
toRemTips.add(pos);
}
toRem.add(pos);
}
}
}
for(BlockPos pos : toRem) {
world.setBlock(pos.getX(), pos.getY(), pos.getZ(), Blocks.air);
}
for(BlockPos pos : toRem) world.setBlock(pos.getX(), pos.getY(), pos.getZ(), Blocks.air, 0, toRemTips.contains(pos) ? 3 : 2);
perChunk.remove(coord);
orderedChunks.remove(0);

View File

@ -63,7 +63,7 @@ public class GUILaunchPadLarge extends GuiInfoContainer {
case V2: scale = 1.75D; break;
case STRONG: scale = 1.375D; break;
case HUGE: scale = 0.925D; break;
case ATLAS: break;
case ATLAS: scale = 0.875D; break;
case OTHER: break;
}
if(missile == ModItems.missile_stealth) scale = 1.125D;

View File

@ -988,6 +988,16 @@ public class AssemblerRecipes {
new ComparableStack(ModItems.motor, 1),
new ComparableStack(ModItems.circuit_red_copper, 3)
}, 200);
makeRecipe(new ComparableStack(ModBlocks.machine_hydrotreater, 1), new AStack[] {
!exp ? new OreDictStack(STEEL.plateWelded(), 8) : new OreDictStack(STEEL.heavyComp(), 4),
!exp ? new OreDictStack(CU.plateCast(), 4) : new OreDictStack(CU.heavyComp(), 2),
new OreDictStack(NB.ingot(), 8),
new OreDictStack(ANY_RESISTANTALLOY.ingot(), 4),
new ComparableStack(ModItems.hull_big_steel, 2),
new ComparableStack(ModItems.pipes_steel, 1),
new ComparableStack(ModItems.motor_desh, 2),
new ComparableStack(ModItems.circuit_red_copper, 3)
}, 200);
makeRecipe(new ComparableStack(ModBlocks.machine_compressor, 1), new AStack[] {
new OreDictStack(STEEL.plateCast(), 8),

View File

@ -443,7 +443,7 @@ public class ClientProxy extends ServerProxy {
MinecraftForgeClient.registerItemRenderer(ModItems.missile_nuclear, new ItemRenderMissileGeneric(RenderMissileType.TYPE_NUCLEAR));
MinecraftForgeClient.registerItemRenderer(ModItems.missile_nuclear_cluster, new ItemRenderMissileGeneric(RenderMissileType.TYPE_NUCLEAR));
MinecraftForgeClient.registerItemRenderer(ModItems.missile_volcano, new ItemRenderMissileGeneric(RenderMissileType.TYPE_NUCLEAR));
MinecraftForgeClient.registerItemRenderer(ModItems.missile_doomsday, new ItemRenderMissileGeneric(RenderMissileType.TYPE_DOOMSDAY));
MinecraftForgeClient.registerItemRenderer(ModItems.missile_doomsday, new ItemRenderMissileGeneric(RenderMissileType.TYPE_NUCLEAR));
MinecraftForgeClient.registerItemRenderer(ModItems.missile_carrier, new ItemRenderMissileGeneric(RenderMissileType.TYPE_CARRIER));
MinecraftForgeClient.registerItemRenderer(ModItems.missile_shuttle, new ItemRenderMissileGeneric(RenderMissileType.TYPE_ROBIN));
@ -705,10 +705,10 @@ public class ClientProxy extends ServerProxy {
RenderingRegistry.registerEntityRenderingHandler(EntityMissileRain.class, new RenderMissileHuge());
RenderingRegistry.registerEntityRenderingHandler(EntityMissileDrill.class, new RenderMissileHuge());
RenderingRegistry.registerEntityRenderingHandler(EntityMissileNuclear.class, new RenderMissileNuclear());
RenderingRegistry.registerEntityRenderingHandler(EntityMissileMirv.class, new RenderMissileMirv());
RenderingRegistry.registerEntityRenderingHandler(EntityMissileMirv.class, new RenderMissileNuclear());
RenderingRegistry.registerEntityRenderingHandler(EntityMissileVolcano.class, new RenderMissileNuclear());
RenderingRegistry.registerEntityRenderingHandler(EntityMIRV.class, new RenderMirv());
RenderingRegistry.registerEntityRenderingHandler(EntityMissileDoomsday.class, new RenderMissileDoomsday());
RenderingRegistry.registerEntityRenderingHandler(EntityMissileDoomsday.class, new RenderMissileNuclear());
RenderingRegistry.registerEntityRenderingHandler(EntityCarrier.class, new RenderCarrierMissile());
RenderingRegistry.registerEntityRenderingHandler(EntityBooster.class, new RenderBoosterMissile());
RenderingRegistry.registerEntityRenderingHandler(EntitySoyuz.class, new RenderSoyuz());

View File

@ -1070,8 +1070,7 @@ public class ResourceManager {
public static final IModelCustom missileStealth = new HFRWavefrontObject(new ResourceLocation(RefStrings.MODID, "models/missile_stealth.obj"), false).asDisplayList();
public static final IModelCustom missileStrong = new HFRWavefrontObject(new ResourceLocation(RefStrings.MODID, "models/missile_strong.obj")).asDisplayList();
public static final IModelCustom missileHuge = new HFRWavefrontObject(new ResourceLocation(RefStrings.MODID, "models/missile_huge.obj")).asDisplayList();
public static final IModelCustom missileNuclear = AdvancedModelLoader.loadModel(new ResourceLocation(RefStrings.MODID, "models/missileNeon.obj"));
public static final IModelCustom missileDoomsday = AdvancedModelLoader.loadModel(new ResourceLocation(RefStrings.MODID, "models/missileDoomsday.obj"));
public static final IModelCustom missileNuclear = new HFRWavefrontObject(new ResourceLocation(RefStrings.MODID, "models/missile_atlas.obj")).asDisplayList();
public static final IModelCustom missileMicro = new HFRWavefrontObject(new ResourceLocation(RefStrings.MODID, "models/missile_micro.obj")).asDisplayList();
public static final IModelCustom missileShuttle = AdvancedModelLoader.loadModel(new ResourceLocation(RefStrings.MODID, "models/missileShuttle.obj"));
public static final IModelCustom missileCarrier = AdvancedModelLoader.loadModel(new ResourceLocation(RefStrings.MODID, "models/missileCarrier.obj"));
@ -1221,10 +1220,10 @@ public class ResourceManager {
public static final ResourceLocation missileHuge_IN_tex = new ResourceLocation(RefStrings.MODID, "textures/models/missile_huge_inc.png");
public static final ResourceLocation missileHuge_CL_tex = new ResourceLocation(RefStrings.MODID, "textures/models/missile_huge_cl.png");
public static final ResourceLocation missileHuge_BU_tex = new ResourceLocation(RefStrings.MODID, "textures/models/missile_huge_bu.png");
public static final ResourceLocation missileNuclear_tex = new ResourceLocation(RefStrings.MODID, "textures/models/missileNeon.png");
public static final ResourceLocation missileMIRV_tex = new ResourceLocation(RefStrings.MODID, "textures/models/missileNeonH.png");
public static final ResourceLocation missileVolcano_tex = new ResourceLocation(RefStrings.MODID, "textures/models/missileNeonV.png");
public static final ResourceLocation missileDoomsday_tex = new ResourceLocation(RefStrings.MODID, "textures/models/missileDoomsday.png");
public static final ResourceLocation missileNuclear_tex = new ResourceLocation(RefStrings.MODID, "textures/models/missile_atlas_nuclear.png");
public static final ResourceLocation missileMIRV_tex = new ResourceLocation(RefStrings.MODID, "textures/models/missile_atlas_thermo.png");
public static final ResourceLocation missileVolcano_tex = new ResourceLocation(RefStrings.MODID, "textures/models/missile_atlas_tectonic.png");
public static final ResourceLocation missileDoomsday_tex = new ResourceLocation(RefStrings.MODID, "textures/models/missile_atlas_doomsday.png");
public static final ResourceLocation missileTaint_tex = new ResourceLocation(RefStrings.MODID, "textures/models/missile_micro_taint.png");
public static final ResourceLocation missileShuttle_tex = new ResourceLocation(RefStrings.MODID, "textures/models/missileShuttle.png");
public static final ResourceLocation missileMicro_tex = new ResourceLocation(RefStrings.MODID, "textures/models/missile_micro.png");

View File

@ -1,37 +0,0 @@
package com.hbm.render.entity.rocket;
import org.lwjgl.opengl.GL11;
import com.hbm.main.ResourceManager;
import net.minecraft.client.renderer.entity.Render;
import net.minecraft.entity.Entity;
import net.minecraft.util.ResourceLocation;
public class RenderMissileDoomsday extends Render {
public RenderMissileDoomsday() {
}
@Override
public void doRender(Entity entity, double x, double y, double z, float p_76986_8_, float interp) {
GL11.glPushMatrix();
GL11.glTranslatef((float) x, (float) y, (float) z);
GL11.glRotatef(entity.prevRotationYaw + (entity.rotationYaw - entity.prevRotationYaw) * interp - 90.0F, 0.0F, 1.0F, 0.0F);
GL11.glRotatef(entity.prevRotationPitch + (entity.rotationPitch - entity.prevRotationPitch) * interp, 0.0F, 0.0F, 1.0F);
GL11.glRotatef(entity.prevRotationYaw + (entity.rotationYaw - entity.prevRotationYaw) * interp - 90.0F, 0.0F, -1.0F, 0.0F);
GL11.glScalef(2F, 2F, 2F);
GL11.glDisable(GL11.GL_CULL_FACE);
bindTexture(ResourceManager.missileDoomsday_tex);
ResourceManager.missileDoomsday.renderAll();
GL11.glEnable(GL11.GL_CULL_FACE);
GL11.glPopMatrix();
}
@Override
protected ResourceLocation getEntityTexture(Entity p_110775_1_) {
return ResourceManager.missileDoomsday_tex;
}
}

View File

@ -1,34 +0,0 @@
package com.hbm.render.entity.rocket;
import org.lwjgl.opengl.GL11;
import com.hbm.main.ResourceManager;
import net.minecraft.client.renderer.entity.Render;
import net.minecraft.entity.Entity;
import net.minecraft.util.ResourceLocation;
public class RenderMissileMirv extends Render {
public RenderMissileMirv() { }
@Override
public void doRender(Entity entity, double x, double y, double z, float p_76986_8_, float interp) {
GL11.glPushMatrix();
GL11.glTranslatef((float) x, (float) y, (float) z);
GL11.glRotatef(entity.prevRotationYaw + (entity.rotationYaw - entity.prevRotationYaw) * interp - 90.0F, 0.0F, 1.0F, 0.0F);
GL11.glRotatef(entity.prevRotationPitch + (entity.rotationPitch - entity.prevRotationPitch) * interp, 0.0F, 0.0F, 1.0F);
GL11.glRotatef(entity.prevRotationYaw + (entity.rotationYaw - entity.prevRotationYaw) * interp - 90.0F, 0.0F, -1.0F, 0.0F);
GL11.glScalef(1.5F, 1.5F, 1.5F);
bindTexture(ResourceManager.missileMIRV_tex);
ResourceManager.missileNuclear.renderAll();
GL11.glPopMatrix();
}
@Override
protected ResourceLocation getEntityTexture(Entity p_110775_1_) {
return ResourceManager.missileMIRV_tex;
}
}

View File

@ -2,6 +2,9 @@ package com.hbm.render.entity.rocket;
import org.lwjgl.opengl.GL11;
import com.hbm.entity.missile.EntityMissileDoomsday;
import com.hbm.entity.missile.EntityMissileTier4.EntityMissileMirv;
import com.hbm.entity.missile.EntityMissileTier4.EntityMissileNuclear;
import com.hbm.entity.missile.EntityMissileTier4.EntityMissileVolcano;
import com.hbm.main.ResourceManager;
@ -21,14 +24,16 @@ public class RenderMissileNuclear extends Render {
GL11.glRotatef(entity.prevRotationYaw + (entity.rotationYaw - entity.prevRotationYaw) * interp - 90.0F, 0.0F, 1.0F, 0.0F);
GL11.glRotatef(entity.prevRotationPitch + (entity.rotationPitch - entity.prevRotationPitch) * interp, 0.0F, 0.0F, 1.0F);
GL11.glRotatef(entity.prevRotationYaw + (entity.rotationYaw - entity.prevRotationYaw) * interp - 90.0F, 0.0F, -1.0F, 0.0F);
GL11.glScalef(1.5F, 1.5F, 1.5F);
if(entity instanceof EntityMissileVolcano)
bindTexture(ResourceManager.missileVolcano_tex);
else
bindTexture(ResourceManager.missileNuclear_tex);
if(entity instanceof EntityMissileNuclear) bindTexture(ResourceManager.missileNuclear_tex);
if(entity instanceof EntityMissileMirv) bindTexture(ResourceManager.missileMIRV_tex);
if(entity instanceof EntityMissileDoomsday) bindTexture(ResourceManager.missileDoomsday_tex);
if(entity instanceof EntityMissileVolcano) bindTexture(ResourceManager.missileVolcano_tex);
GL11.glShadeModel(GL11.GL_SMOOTH);
ResourceManager.missileNuclear.renderAll();
GL11.glShadeModel(GL11.GL_FLAT);
GL11.glPopMatrix();
}

View File

@ -31,7 +31,6 @@ public class ItemRenderMissileGeneric implements IItemRenderer {
TYPE_STEALTH,
TYPE_ABM,
TYPE_NUCLEAR,
TYPE_DOOMSDAY,
TYPE_CARRIER,
TYPE_ROBIN
}
@ -75,8 +74,7 @@ public class ItemRenderMissileGeneric implements IItemRenderer {
case TYPE_TIER3: guiScale = 1.25D; guiOffset = 1D; break;
case TYPE_STEALTH: guiScale = 1.75D; guiOffset = 4.75D; break;
case TYPE_ABM: guiScale = 2.25D; guiOffset = 7D; break;
case TYPE_NUCLEAR: guiScale = 1.75D; guiOffset = 4D; break;
case TYPE_DOOMSDAY: guiScale = 1.5D; guiOffset = 3D; break;
case TYPE_NUCLEAR: guiScale = 1.375D; guiOffset = 1.5D; break;
case TYPE_CARRIER: guiScale = 0.625D; guiOffset = -17D; break;
case TYPE_ROBIN: guiScale = 1.25D; guiOffset = 2D; break;
}
@ -162,11 +160,10 @@ public class ItemRenderMissileGeneric implements IItemRenderer {
renderers.put(new ComparableStack(ModItems.missile_rain), generateStandard(ResourceManager.missileHuge_CL_tex, ResourceManager.missileHuge));
renderers.put(new ComparableStack(ModItems.missile_drill), generateStandard(ResourceManager.missileHuge_BU_tex, ResourceManager.missileHuge));
renderers.put(new ComparableStack(ModItems.missile_nuclear), generateLarge(ResourceManager.missileNuclear_tex, ResourceManager.missileNuclear));
renderers.put(new ComparableStack(ModItems.missile_nuclear_cluster), generateLarge(ResourceManager.missileMIRV_tex, ResourceManager.missileNuclear));
renderers.put(new ComparableStack(ModItems.missile_volcano), generateLarge(ResourceManager.missileVolcano_tex, ResourceManager.missileNuclear));
renderers.put(new ComparableStack(ModItems.missile_doomsday), generateDouble(ResourceManager.missileDoomsday_tex, ResourceManager.missileDoomsday));
renderers.put(new ComparableStack(ModItems.missile_nuclear), generateStandard(ResourceManager.missileNuclear_tex, ResourceManager.missileNuclear));
renderers.put(new ComparableStack(ModItems.missile_nuclear_cluster), generateStandard(ResourceManager.missileMIRV_tex, ResourceManager.missileNuclear));
renderers.put(new ComparableStack(ModItems.missile_volcano), generateStandard(ResourceManager.missileVolcano_tex, ResourceManager.missileNuclear));
renderers.put(new ComparableStack(ModItems.missile_doomsday), generateStandard(ResourceManager.missileDoomsday_tex, ResourceManager.missileNuclear));
renderers.put(new ComparableStack(ModItems.missile_carrier), x -> {
GL11.glScalef(2F, 2F, 2F);

View File

@ -5,6 +5,9 @@ import com.hbm.inventory.fluid.Fluids;
import com.hbm.inventory.fluid.tank.FluidTank;
import com.hbm.inventory.gui.GUILaunchPadLarge;
import com.hbm.items.weapon.ItemMissile;
import com.hbm.items.weapon.ItemMissile.MissileFormFactor;
import com.hbm.main.MainRegistry;
import com.hbm.sound.AudioWrapper;
import com.hbm.tileentity.IGUIProvider;
import com.hbm.tileentity.IRadarCommandReceiver;
import com.hbm.tileentity.TileEntityMachineBase;
@ -47,6 +50,12 @@ public class TileEntityLaunchPadLarge extends TileEntityMachineBase implements I
public long power;
public final long maxPower = 100_000;
private AudioWrapper audioLift;
private AudioWrapper audioErector;
protected boolean liftMoving = false;
protected boolean erectorMoving = false;
public FluidTank[] tanks;
public TileEntityLaunchPadLarge() {
@ -65,6 +74,9 @@ public class TileEntityLaunchPadLarge extends TileEntityMachineBase implements I
public void updateEntity() {
if(!worldObj.isRemote) {
this.prevLift = this.lift;
this.prevErector = this.erector;
float erectorSpeed = 1.5F;
float liftSpeed = 0.025F;
@ -74,6 +86,11 @@ public class TileEntityLaunchPadLarge extends TileEntityMachineBase implements I
ItemMissile missile = (ItemMissile) slots[0].getItem();
this.formFactor = missile.formFactor.ordinal();
setFuel(missile);
if(missile.formFactor == MissileFormFactor.ATLAS || missile.formFactor == MissileFormFactor.HUGE) {
erectorSpeed /= 2F;
liftSpeed /= 2F;
}
}
if(this.erector == 90F && this.lift == 1F) {
@ -144,6 +161,16 @@ public class TileEntityLaunchPadLarge extends TileEntityMachineBase implements I
}
}
boolean prevLiftMoving = this.liftMoving;
boolean prevErectorMoving = this.erectorMoving;
this.liftMoving = false;
this.erectorMoving = false;
if(this.prevLift != this.lift) this.liftMoving = true;
if(this.prevErector != this.erector) this.erectorMoving = true;
if(prevLiftMoving && !this.liftMoving) worldObj.playSoundEffect(xCoord, yCoord, zCoord, "hbm:door.wgh_stop", 2F, 1F);
if(prevErectorMoving && !this.erectorMoving) worldObj.playSoundEffect(xCoord, yCoord, zCoord, "hbm:door.garage_stop", 2F, 1F);
this.networkPackNT(250);
} else {
@ -158,6 +185,36 @@ public class TileEntityLaunchPadLarge extends TileEntityMachineBase implements I
this.lift = this.syncLift;
this.erector = this.syncErector;
}
if(this.liftMoving) {
if(this.audioLift == null) {
this.audioLift = MainRegistry.proxy.getLoopedSound("hbm:door.wgh_start", xCoord, yCoord, zCoord, 0.75F, 25F, 1.0F, 5);
this.audioLift.startSound();
} else if(!this.audioLift.isPlaying()) {
this.audioLift.startSound();
}
this.audioLift.keepAlive();
} else {
if(this.audioLift != null) {
this.audioLift.stopSound();
this.audioLift = null;
}
}
if(this.erectorMoving) {
if(this.audioErector == null) {
this.audioErector = MainRegistry.proxy.getLoopedSound("hbm:door.garage_move", xCoord, yCoord, zCoord, 1.5F, 25F, 1.0F, 5);
this.audioErector.startSound();
} else if(!this.audioErector.isPlaying()) {
this.audioErector.startSound();
}
this.audioErector.keepAlive();
} else {
if(this.audioErector != null) {
this.audioErector.stopSound();
this.audioErector = null;
}
}
}
}
@ -187,6 +244,9 @@ public class TileEntityLaunchPadLarge extends TileEntityMachineBase implements I
public void serialize(ByteBuf buf) {
super.serialize(buf);
buf.writeBoolean(this.liftMoving);
buf.writeBoolean(this.erectorMoving);
if(slots[0] != null) {
buf.writeBoolean(true);
buf.writeInt(Item.getIdFromItem(slots[0].getItem()));
@ -205,6 +265,9 @@ public class TileEntityLaunchPadLarge extends TileEntityMachineBase implements I
@Override
public void deserialize(ByteBuf buf) {
super.deserialize(buf);
this.liftMoving = buf.readBoolean();
this.erectorMoving = buf.readBoolean();
if(buf.readBoolean()) {
this.toRender = new ItemStack(Item.getItemById(buf.readInt()), 1, buf.readShort());

File diff suppressed because it is too large Load Diff

Binary file not shown.

After

Width:  |  Height:  |  Size: 33 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 55 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 29 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 33 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 31 KiB