and some more fixes
14
changelog
@ -1,9 +1,21 @@
|
||||
## Added
|
||||
* ???
|
||||
|
||||
## Changed
|
||||
* Adjusted the model for the mining helmet
|
||||
* The ladders on the acidizer and fluid tanks are now climbable
|
||||
* Removed those unused blue dungeon bricks
|
||||
* Red phosphorus is no longer pyrophoric, meaning that multi purpose bomb kits no longer instantly explode
|
||||
* Adjusted M2's rotations
|
||||
|
||||
## Fixed
|
||||
* Fixed recipe conflict in the arc welder with the medium and large missile fuel tanks
|
||||
* Fixed recipe conflict in the arc welder with the medium and large missile fuel tanks
|
||||
* Fixed doomsday missile not being launchable
|
||||
* Fixed rocket artillery turret power connectors not working with cables
|
||||
* Fixed arc welder energy consumption check not taking upgrades into account
|
||||
* Fixed glyphid gland and 16k item barrels not having a proper container item set, effectively voiding the emtpy container when used in crafting
|
||||
* Fixed confusing item quantity display in the exposure chamber's NEI handler
|
||||
* Fixed pheromone being tagged as viscous and therefore not being dispersable, making modified pheromone useless
|
||||
* Fixed mobs not being able to pathfind through open doors
|
||||
* Fixed the benelli ejecting the casings wrong
|
||||
* Fixed casing ejection in general being inconsistent, sometimes flying off into the wrong direction
|
||||
@ -1,6 +1,6 @@
|
||||
mod_version=1.0.27
|
||||
# Empty build number makes a release type
|
||||
mod_build_number=4816
|
||||
mod_build_number=4824
|
||||
|
||||
credits=HbMinecraft, rodolphito (explosion algorithms), grangerave (explosion algorithms),\
|
||||
\ Hoboy (textures, models), Doctor17 (russian localization), Drillgon200 (effects, models,\
|
||||
|
||||
@ -91,6 +91,11 @@ public class BlockDoorGeneric extends BlockDummyable {
|
||||
// return;
|
||||
//super.addCollisionBoxesToList(worldIn, x, y, z, entityBox, collidingBoxes, entityIn);
|
||||
}
|
||||
|
||||
@Override //should fix AI pathfinding
|
||||
public boolean getBlocksMovement(IBlockAccess world, int x, int y, int z) { //btw the method name is the exact opposite of that it's doing, check net.minecraft.pathfinding.PathNavigate#512
|
||||
return hasExtra(world.getBlockMetadata(x, y, z)); //if it's open
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onNeighborBlockChange(World world, int x, int y, int z, Block blockIn){
|
||||
|
||||
@ -127,20 +127,17 @@ public class CasingEjector implements Cloneable {
|
||||
}
|
||||
|
||||
private static Vec3 rotateVector(Vec3 vector, float pitch, float yaw, float pitchFactor, float yawFactor) {
|
||||
// Apply randomness to vector
|
||||
vector.xCoord += rand.nextGaussian() * yawFactor;
|
||||
vector.yCoord += rand.nextGaussian() * pitchFactor;
|
||||
vector.zCoord += rand.nextGaussian() * yawFactor;
|
||||
|
||||
final Matrix4f pitchMatrix = new Matrix4f(), yawMatrix = new Matrix4f();
|
||||
|
||||
pitchMatrix.setIdentity();
|
||||
pitchMatrix.rotate(-pitch, new Vector3f(1, 0, 0));
|
||||
pitchMatrix.rotate(pitch, new Vector3f(1, 0, 0));
|
||||
|
||||
yawMatrix.setIdentity();
|
||||
yawMatrix.rotate(-yaw, new Vector3f(0, 1, 0));
|
||||
|
||||
final Vector4f vector4f = new Vector4f((float) vector.xCoord, (float) vector.yCoord, (float) vector.zCoord, 1);
|
||||
|
||||
// Apply randomness to vector
|
||||
final Vector4f vector4f = new Vector4f((float) (vector.xCoord + rand.nextGaussian() * yawFactor), (float) (vector.yCoord + rand.nextGaussian() * pitchFactor), (float) (vector.zCoord + rand.nextGaussian() * yawFactor), 1);
|
||||
|
||||
Matrix4f.transform(pitchMatrix, vector4f, vector4f);
|
||||
Matrix4f.transform(yawMatrix, vector4f, vector4f);
|
||||
|
||||
@ -39,7 +39,7 @@ public class Gun12GaugeFactory {
|
||||
static {
|
||||
EJECTOR_SPAS = new CasingEjector().setMotion(-0.4, 0.1, 0).setOffset(-0.35, 0, 0.5).setAngleRange(0.01F, 0.03F).setDelay(12);
|
||||
EJECTOR_SPAS_ALT = new CasingEjector().setMotion(-0.4, 0.1, 0).setOffset(-0.35, 0, 0.5).setAngleRange(0.01F, 0.03F).setDelay(12).setAmount(2);
|
||||
EJECTOR_BENELLI = new CasingEjector().setMotion(-0.4, 0.1, 0).setOffset(-0.3, 1, 0).setAngleRange(0.01F, 0.03F);
|
||||
EJECTOR_BENELLI = new CasingEjector().setMotion(-0.4, 0.3, 0).setOffset(-0.3, 0, 0.5).setAngleRange(0.01F, 0.03F);
|
||||
EJECTOR_UBOINIK = new CasingEjector().setMotion(-0.4, 0.1, 0).setOffset(-0.35, -0.3, 0.5).setAngleRange(0.01F, 0.03F);
|
||||
EJECTOR_SSG = new CasingEjector().setMotion(0.2, 0, -0.2).setOffset(0.8, 0, 0).setAngleRange(0.05F, 0.02F).setDelay(20).setAmount(2);
|
||||
|
||||
|
||||
@ -422,7 +422,7 @@ public class OreDictManager {
|
||||
* PHOSPHORUS
|
||||
*/
|
||||
P_WHITE .hot(5) .ingot(ingot_phosphorus) .block(block_white_phosphorus);
|
||||
P_RED .hot(2) .dust(powder_fire) .block(block_red_phosphorus);
|
||||
P_RED .dust(powder_fire) .block(block_red_phosphorus);
|
||||
|
||||
/*
|
||||
* RARE METALS
|
||||
|
||||
@ -331,9 +331,9 @@ public class Fluids {
|
||||
THORIUM_SALT = new FluidType("THORIUM_SALT", 0x7A5542, 2, 0, 3, EnumSymbol.NONE).setTemp(800).addTraits(LIQUID, VISCOUS, new FT_Corrosive(65));
|
||||
THORIUM_SALT_HOT = new FluidType("THORIUM_SALT_HOT", 0x3E3627, 2, 0, 3, EnumSymbol.NONE).setTemp(1600).addTraits(LIQUID, VISCOUS, new FT_Corrosive(65));
|
||||
THORIUM_SALT_DEPLETED = new FluidType("THORIUM_SALT_DEPLETED", 0x302D1C, 2, 0, 3, EnumSymbol.NONE).setTemp(800).addTraits(LIQUID, VISCOUS, new FT_Corrosive(65));
|
||||
FULLERENE = new FluidType("FULLERENE", 0xFF7FED, 3, 3, 3, EnumSymbol.NONE).addTraits(LIQUID, new FT_Corrosive(65));
|
||||
PHEROMONE = new FluidType("PHEROMONE", 0x5FA6E8, 0, 0, 0, EnumSymbol.NONE).addTraits(LIQUID, VISCOUS, new FT_Pheromone(1));
|
||||
PHEROMONE_M = new FluidType(132, "PHEROMONE_M", 0x48C9B0 , 0, 0, 0, EnumSymbol.NONE).addTraits(LIQUID, VISCOUS, new FT_Pheromone(2));
|
||||
FULLERENE = new FluidType("FULLERENE", 0xFF7FED, 3, 3, 3, EnumSymbol.NONE).addTraits(LIQUID, new FT_Corrosive(65));
|
||||
PHEROMONE = new FluidType("PHEROMONE", 0x5FA6E8, 0, 0, 0, EnumSymbol.NONE).addTraits(LIQUID, new FT_Pheromone(1));
|
||||
PHEROMONE_M = new FluidType(132, "PHEROMONE_M", 0x48C9B0 , 0, 0, 0, EnumSymbol.NONE).addTraits(LIQUID, new FT_Pheromone(2));
|
||||
// ^ ^ ^ ^ ^ ^ ^ ^
|
||||
//ADD NEW FLUIDS HERE
|
||||
|
||||
|
||||
@ -46,8 +46,10 @@ public class ExposureChamberRecipes extends SerializableRecipe {
|
||||
AStack stack = recipe.ingredient.copy();
|
||||
stack.stacksize = 8;
|
||||
array[0] = stack;
|
||||
ItemStack output = recipe.output.copy();
|
||||
output.stackSize = 8;
|
||||
|
||||
recipes.put(array, recipe.output);
|
||||
recipes.put(array, output);
|
||||
}
|
||||
|
||||
return recipes;
|
||||
|
||||
@ -4647,15 +4647,15 @@ public class ModItems {
|
||||
fluid_tank_full = new ItemFluidTank().setUnlocalizedName("fluid_tank_full").setContainerItem(ModItems.fluid_tank_empty).setCreativeTab(MainRegistry.controlTab).setTextureName(RefStrings.MODID + ":fluid_tank");
|
||||
fluid_tank_lead_empty = new Item().setUnlocalizedName("fluid_tank_lead_empty").setCreativeTab(MainRegistry.controlTab).setTextureName(RefStrings.MODID + ":fluid_tank_lead");
|
||||
fluid_tank_lead_full = new ItemFluidTank().setUnlocalizedName("fluid_tank_lead_full").setContainerItem(ModItems.fluid_tank_lead_empty).setCreativeTab(MainRegistry.controlTab).setTextureName(RefStrings.MODID + ":fluid_tank_lead");
|
||||
fluid_barrel_full = new ItemFluidTank().setUnlocalizedName("fluid_barrel_full").setContainerItem(ModItems.fluid_barrel_empty).setCreativeTab(MainRegistry.controlTab).setTextureName(RefStrings.MODID + ":fluid_barrel");
|
||||
fluid_barrel_empty = new Item().setUnlocalizedName("fluid_barrel_empty").setCreativeTab(MainRegistry.controlTab).setTextureName(RefStrings.MODID + ":fluid_barrel");
|
||||
fluid_barrel_full = new ItemFluidTank().setUnlocalizedName("fluid_barrel_full").setContainerItem(ModItems.fluid_barrel_empty).setCreativeTab(MainRegistry.controlTab).setTextureName(RefStrings.MODID + ":fluid_barrel");
|
||||
fluid_barrel_infinite = new ItemInfiniteFluid(null, 1_000_000_000).setUnlocalizedName("fluid_barrel_infinite").setMaxStackSize(1).setCreativeTab(MainRegistry.controlTab).setTextureName(RefStrings.MODID + ":fluid_barrel_infinite");
|
||||
|
||||
disperser_canister_empty = new Item().setUnlocalizedName("disperser_canister_empty").setCreativeTab(MainRegistry.weaponTab).setTextureName(RefStrings.MODID + ":disperser_canister");
|
||||
disperser_canister = new ItemDisperser().setUnlocalizedName("disperser_canister").setContainerItem(ModItems.disperser_canister_empty).setCreativeTab(MainRegistry.weaponTab).setTextureName(RefStrings.MODID + ":disperser_canister");
|
||||
|
||||
glyphid_gland = new ItemDisperser().setUnlocalizedName("glyphid_gland").setContainerItem(ModItems.glyphid_gland_empty).setCreativeTab(MainRegistry.weaponTab).setTextureName(RefStrings.MODID + ":glyphid_gland");
|
||||
glyphid_gland_empty = new Item().setUnlocalizedName("glyphid_gland_empty").setCreativeTab(MainRegistry.weaponTab).setTextureName(RefStrings.MODID + ":glyphid_gland");
|
||||
glyphid_gland = new ItemDisperser().setUnlocalizedName("glyphid_gland").setContainerItem(ModItems.glyphid_gland_empty).setCreativeTab(MainRegistry.weaponTab).setTextureName(RefStrings.MODID + ":glyphid_gland");
|
||||
|
||||
siren_track = new ItemCassette().setUnlocalizedName("siren_track").setMaxStackSize(1).setCreativeTab(MainRegistry.templateTab).setTextureName(RefStrings.MODID + ":cassette");
|
||||
fluid_duct = new ItemFluidDuct().setUnlocalizedName("fluid_duct").setCreativeTab(MainRegistry.templateTab).setTextureName(RefStrings.MODID + ":duct");
|
||||
|
||||
@ -27,16 +27,16 @@ public class ItemPollutionDetector extends Item {
|
||||
float soot = data.pollution[PollutionType.SOOT.ordinal()];
|
||||
float poison = data.pollution[PollutionType.POISON.ordinal()];
|
||||
float heavymetal = data.pollution[PollutionType.HEAVYMETAL.ordinal()];
|
||||
float fallout = data.pollution[PollutionType.FALLOUT.ordinal()];
|
||||
//float fallout = data.pollution[PollutionType.FALLOUT.ordinal()];
|
||||
|
||||
soot = ((int) (soot * 100)) / 100F;
|
||||
poison = ((int) (poison * 100)) / 100F;
|
||||
heavymetal = ((int) (heavymetal * 100)) / 100F;
|
||||
fallout = ((int) (fallout * 100)) / 100F;
|
||||
//fallout = ((int) (fallout * 100)) / 100F;
|
||||
|
||||
PacketDispatcher.wrapper.sendTo(new PlayerInformPacket(ChatBuilder.start("Soot: " + soot).color(EnumChatFormatting.YELLOW).flush(), 100, 4000), (EntityPlayerMP) entity);
|
||||
PacketDispatcher.wrapper.sendTo(new PlayerInformPacket(ChatBuilder.start("Poison: " + poison).color(EnumChatFormatting.YELLOW).flush(), 101, 4000), (EntityPlayerMP) entity);
|
||||
PacketDispatcher.wrapper.sendTo(new PlayerInformPacket(ChatBuilder.start("Heavy metal: " + heavymetal).color(EnumChatFormatting.YELLOW).flush(), 102, 4000), (EntityPlayerMP) entity);
|
||||
PacketDispatcher.wrapper.sendTo(new PlayerInformPacket(ChatBuilder.start("Fallout: " + fallout).color(EnumChatFormatting.YELLOW).flush(), 103, 4000), (EntityPlayerMP) entity);
|
||||
//PacketDispatcher.wrapper.sendTo(new PlayerInformPacket(ChatBuilder.start("Fallout: " + fallout).color(EnumChatFormatting.YELLOW).flush(), 103, 4000), (EntityPlayerMP) entity);
|
||||
}
|
||||
}
|
||||
|
||||
@ -741,6 +741,16 @@ public class HbmWorldGen implements IWorldGenerator {
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
if(rand.nextInt(4) == 0) {
|
||||
int x = i + rand.nextInt(16) + 8;
|
||||
int y = 6 + rand.nextInt(13);
|
||||
int z = j + rand.nextInt(16) + 8;
|
||||
|
||||
if(world.getBlock(x, y, z).isReplaceableOreGen(world, x, y, z, Blocks.stone)) {
|
||||
world.setBlock(x, y, z, ModBlocks.stone_keyhole);
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
|
||||
@ -3,7 +3,7 @@ package com.hbm.lib;
|
||||
public class RefStrings {
|
||||
public static final String MODID = "hbm";
|
||||
public static final String NAME = "Hbm's Nuclear Tech Mod";
|
||||
public static final String VERSION = "1.0.27 BETA (4816)";
|
||||
public static final String VERSION = "1.0.27 BETA (4824)";
|
||||
//HBM's Beta Naming Convention:
|
||||
//V T (X)
|
||||
//V -> next release version
|
||||
|
||||
@ -30,11 +30,11 @@ public class ItemRenderM2 extends ItemRenderBase {
|
||||
GL11.glRotatef(30, 1, 0, 0);
|
||||
break;
|
||||
case EQUIPPED_FIRST_PERSON:
|
||||
GL11.glRotatef(-90, 0, 1, 0);
|
||||
|
||||
if (Minecraft.getMinecraft().thePlayer.isSneaking()) {
|
||||
GL11.glRotatef(-90, 0, 1, 0);
|
||||
GL11.glTranslatef(-0.96f, -0.9f, -2);
|
||||
GL11.glRotatef(-5.6f, 0, 1, 1);
|
||||
GL11.glRotatef(-5.75f, 0, 1, 1);// Just of by 0.15
|
||||
|
||||
/* vvv remove to restore original look vvv */
|
||||
GL11.glRotatef(1.9F, 0, 0, 1);
|
||||
@ -44,6 +44,7 @@ public class ItemRenderM2 extends ItemRenderBase {
|
||||
GL11.glTranslatef(0, 1.15F, -1.75F);
|
||||
|
||||
} else {
|
||||
GL11.glRotatef(-95, 0, 1, 0);
|
||||
GL11.glTranslatef(0, -1, -3);
|
||||
}
|
||||
GL11.glRotatef(25, 1, 0, 0);
|
||||
|
||||
@ -10,6 +10,7 @@ import com.hbm.config.GeneralConfig;
|
||||
import com.hbm.entity.missile.EntityCarrier;
|
||||
import com.hbm.entity.missile.EntityMissileAntiBallistic;
|
||||
import com.hbm.entity.missile.EntityMissileBaseNT;
|
||||
import com.hbm.entity.missile.EntityMissileDoomsday;
|
||||
import com.hbm.entity.missile.EntityMissileShuttle;
|
||||
import com.hbm.entity.missile.EntityMissileTier0.*;
|
||||
import com.hbm.entity.missile.EntityMissileTier1.*;
|
||||
@ -87,6 +88,8 @@ public class TileEntityLaunchPad extends TileEntityMachineBase implements IEnerg
|
||||
missiles.put(new ComparableStack(ModItems.missile_nuclear), EntityMissileNuclear.class);
|
||||
missiles.put(new ComparableStack(ModItems.missile_nuclear_cluster), EntityMissileMirv.class);
|
||||
missiles.put(new ComparableStack(ModItems.missile_volcano), EntityMissileVolcano.class);
|
||||
|
||||
missiles.put(new ComparableStack(ModItems.missile_doomsday), EntityMissileDoomsday.class);
|
||||
}
|
||||
|
||||
public ItemStack toRender;
|
||||
|
||||
@ -142,7 +142,7 @@ public class TileEntityMachineArcWelder extends TileEntityMachineBase implements
|
||||
|
||||
public boolean canProcess(ArcWelderRecipe recipe) {
|
||||
|
||||
if(this.power < recipe.consumption) return false;
|
||||
if(this.power < this.consumption) return false;
|
||||
|
||||
if(recipe.fluid != null) {
|
||||
if(this.tank.getTankType() != recipe.fluid.type) return false;
|
||||
|
||||
@ -3,7 +3,6 @@ package com.hbm.tileentity.turret;
|
||||
import java.util.ArrayList;
|
||||
import java.util.List;
|
||||
|
||||
import com.hbm.blocks.BlockDummyable;
|
||||
import com.hbm.entity.projectile.EntityArtilleryShell;
|
||||
import com.hbm.handler.CasingEjector;
|
||||
import com.hbm.inventory.container.ContainerTurretBase;
|
||||
@ -27,7 +26,6 @@ import net.minecraft.item.ItemStack;
|
||||
import net.minecraft.nbt.NBTTagCompound;
|
||||
import net.minecraft.util.Vec3;
|
||||
import net.minecraft.world.World;
|
||||
import net.minecraftforge.common.util.ForgeDirection;
|
||||
|
||||
public class TileEntityTurretArty extends TileEntityTurretBaseArtillery implements IGUIProvider {
|
||||
|
||||
@ -221,20 +219,6 @@ public class TileEntityTurretArty extends TileEntityTurretBaseArtillery implemen
|
||||
return 7;
|
||||
}
|
||||
|
||||
protected void updateConnections() {
|
||||
ForgeDirection dir = ForgeDirection.getOrientation(this.getBlockMetadata() - BlockDummyable.offset).getOpposite();
|
||||
ForgeDirection rot = dir.getRotation(ForgeDirection.UP);
|
||||
|
||||
for(int i = 0; i < 2; i++) {
|
||||
for(int j = 0; j < 4; j++) {
|
||||
this.trySubscribe(worldObj, xCoord + dir.offsetX * (-1 + j) + rot.offsetX * -3, yCoord + i, zCoord + dir.offsetZ * (-1 + j) + rot.offsetZ * -3, ForgeDirection.SOUTH);
|
||||
this.trySubscribe(worldObj, xCoord + dir.offsetX * (-1 + j) + rot.offsetX * 2, yCoord + i, zCoord + dir.offsetZ * (-1 + j) + rot.offsetZ * 2, ForgeDirection.NORTH);
|
||||
this.trySubscribe(worldObj, xCoord + dir.offsetX * -2 + rot.offsetX * (1 - j), yCoord + i, zCoord + dir.offsetZ * -2 + rot.offsetZ * (1 - j), ForgeDirection.EAST);
|
||||
this.trySubscribe(worldObj, xCoord + dir.offsetX * 3 + rot.offsetX * (1 - j), yCoord + i, zCoord + dir.offsetZ * 3 + rot.offsetZ * (1 - j), ForgeDirection.WEST);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
public void updateEntity() {
|
||||
|
||||
|
||||
@ -3,10 +3,12 @@ package com.hbm.tileentity.turret;
|
||||
import java.util.ArrayList;
|
||||
import java.util.List;
|
||||
|
||||
import com.hbm.blocks.BlockDummyable;
|
||||
import com.hbm.tileentity.IRadarCommandReceiver;
|
||||
|
||||
import net.minecraft.entity.Entity;
|
||||
import net.minecraft.util.Vec3;
|
||||
import net.minecraftforge.common.util.ForgeDirection;
|
||||
|
||||
public abstract class TileEntityTurretBaseArtillery extends TileEntityTurretBaseNT implements IRadarCommandReceiver {
|
||||
|
||||
@ -52,4 +54,19 @@ public abstract class TileEntityTurretBaseArtillery extends TileEntityTurretBase
|
||||
return height < (e.posY + e.height);
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
protected void updateConnections() {
|
||||
ForgeDirection dir = ForgeDirection.getOrientation(this.getBlockMetadata() - BlockDummyable.offset).getOpposite();
|
||||
ForgeDirection rot = dir.getRotation(ForgeDirection.UP);
|
||||
|
||||
for(int i = 0; i < 2; i++) {
|
||||
for(int j = 0; j < 4; j++) {
|
||||
this.trySubscribe(worldObj, xCoord + dir.offsetX * (-1 + j) + rot.offsetX * -3, yCoord + i, zCoord + dir.offsetZ * (-1 + j) + rot.offsetZ * -3, ForgeDirection.SOUTH);
|
||||
this.trySubscribe(worldObj, xCoord + dir.offsetX * (-1 + j) + rot.offsetX * 2, yCoord + i, zCoord + dir.offsetZ * (-1 + j) + rot.offsetZ * 2, ForgeDirection.NORTH);
|
||||
this.trySubscribe(worldObj, xCoord + dir.offsetX * -2 + rot.offsetX * (1 - j), yCoord + i, zCoord + dir.offsetZ * -2 + rot.offsetZ * (1 - j), ForgeDirection.EAST);
|
||||
this.trySubscribe(worldObj, xCoord + dir.offsetX * 3 + rot.offsetX * (1 - j), yCoord + i, zCoord + dir.offsetZ * 3 + rot.offsetZ * (1 - j), ForgeDirection.WEST);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
Before Width: | Height: | Size: 218 B |
|
Before Width: | Height: | Size: 375 B |
|
Before Width: | Height: | Size: 495 B |
|
Before Width: | Height: | Size: 392 B |
|
Before Width: | Height: | Size: 553 B |
|
Before Width: | Height: | Size: 407 B |
|
Before Width: | Height: | Size: 568 B |
|
Before Width: | Height: | Size: 383 B |
|
Before Width: | Height: | Size: 486 B |
|
Before Width: | Height: | Size: 296 B |
|
Before Width: | Height: | Size: 274 B |
|
Before Width: | Height: | Size: 297 B After Width: | Height: | Size: 549 B |