mirror of
https://github.com/HbmMods/Hbm-s-Nuclear-Tech-GIT.git
synced 2026-01-25 10:32:49 +00:00
fixes, fluid trait improvements
This commit is contained in:
parent
b50a2a6e4b
commit
8e1b32cb42
@ -3,6 +3,7 @@ package com.hbm.entity.projectile;
|
|||||||
import java.awt.Color;
|
import java.awt.Color;
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
|
|
||||||
|
import com.hbm.blocks.ModBlocks;
|
||||||
import com.hbm.extprop.HbmLivingProps;
|
import com.hbm.extprop.HbmLivingProps;
|
||||||
import com.hbm.handler.radiation.ChunkRadiationManager;
|
import com.hbm.handler.radiation.ChunkRadiationManager;
|
||||||
import com.hbm.inventory.fluid.FluidType;
|
import com.hbm.inventory.fluid.FluidType;
|
||||||
@ -10,11 +11,13 @@ import com.hbm.inventory.fluid.Fluids;
|
|||||||
import com.hbm.inventory.fluid.trait.FT_Combustible;
|
import com.hbm.inventory.fluid.trait.FT_Combustible;
|
||||||
import com.hbm.inventory.fluid.trait.FT_Corrosive;
|
import com.hbm.inventory.fluid.trait.FT_Corrosive;
|
||||||
import com.hbm.inventory.fluid.trait.FT_Flammable;
|
import com.hbm.inventory.fluid.trait.FT_Flammable;
|
||||||
|
import com.hbm.inventory.fluid.trait.FT_Poison;
|
||||||
import com.hbm.inventory.fluid.trait.FT_VentRadiation;
|
import com.hbm.inventory.fluid.trait.FT_VentRadiation;
|
||||||
import com.hbm.lib.ModDamageSource;
|
import com.hbm.lib.ModDamageSource;
|
||||||
import com.hbm.main.MainRegistry;
|
import com.hbm.main.MainRegistry;
|
||||||
import com.hbm.util.ArmorUtil;
|
import com.hbm.util.ArmorUtil;
|
||||||
import com.hbm.util.ContaminationUtil;
|
import com.hbm.util.ContaminationUtil;
|
||||||
|
import com.hbm.util.EnchantmentUtil;
|
||||||
import com.hbm.util.ContaminationUtil.ContaminationType;
|
import com.hbm.util.ContaminationUtil.ContaminationType;
|
||||||
import com.hbm.util.ContaminationUtil.HazardType;
|
import com.hbm.util.ContaminationUtil.HazardType;
|
||||||
import com.hbm.util.EntityDamageUtil;
|
import com.hbm.util.EntityDamageUtil;
|
||||||
@ -22,12 +25,14 @@ import com.hbm.util.EntityDamageUtil;
|
|||||||
import net.minecraft.block.Block;
|
import net.minecraft.block.Block;
|
||||||
import net.minecraft.entity.Entity;
|
import net.minecraft.entity.Entity;
|
||||||
import net.minecraft.entity.EntityLivingBase;
|
import net.minecraft.entity.EntityLivingBase;
|
||||||
|
import net.minecraft.entity.player.EntityPlayer;
|
||||||
import net.minecraft.init.Blocks;
|
import net.minecraft.init.Blocks;
|
||||||
import net.minecraft.nbt.NBTTagCompound;
|
import net.minecraft.nbt.NBTTagCompound;
|
||||||
import net.minecraft.potion.Potion;
|
import net.minecraft.potion.Potion;
|
||||||
import net.minecraft.potion.PotionEffect;
|
import net.minecraft.potion.PotionEffect;
|
||||||
import net.minecraft.util.DamageSource;
|
import net.minecraft.util.DamageSource;
|
||||||
import net.minecraft.util.EntityDamageSourceIndirect;
|
import net.minecraft.util.EntityDamageSourceIndirect;
|
||||||
|
import net.minecraft.util.MathHelper;
|
||||||
import net.minecraft.util.MovingObjectPosition;
|
import net.minecraft.util.MovingObjectPosition;
|
||||||
import net.minecraft.util.Vec3;
|
import net.minecraft.util.Vec3;
|
||||||
import net.minecraft.world.World;
|
import net.minecraft.world.World;
|
||||||
@ -146,6 +151,7 @@ public class EntityChemical extends EntityThrowableNT {
|
|||||||
intensity = 1D;
|
intensity = 1D;
|
||||||
|
|
||||||
if(style == ChemicalStyle.AMAT) {
|
if(style == ChemicalStyle.AMAT) {
|
||||||
|
EntityDamageUtil.attackEntityFromIgnoreIFrame(e, ModDamageSource.radiation, 1F);
|
||||||
if(living != null) {
|
if(living != null) {
|
||||||
ContaminationUtil.contaminate(living, HazardType.RADIATION, ContaminationType.CREATIVE, 50F * (float) intensity);
|
ContaminationUtil.contaminate(living, HazardType.RADIATION, ContaminationType.CREATIVE, 50F * (float) intensity);
|
||||||
return;
|
return;
|
||||||
@ -182,14 +188,13 @@ public class EntityChemical extends EntityThrowableNT {
|
|||||||
if(living != null) {
|
if(living != null) {
|
||||||
HbmLivingProps.setOil(living, 300); //doused in oil for 15 seconds
|
HbmLivingProps.setOil(living, 300); //doused in oil for 15 seconds
|
||||||
}
|
}
|
||||||
} else {
|
|
||||||
|
|
||||||
if(type.temperature < 50) {
|
|
||||||
e.extinguish(); //if it's a cold non-flammable liquid (that isn't burning), extinguish
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if(this.isExtinguishing()) {
|
||||||
|
e.extinguish();
|
||||||
|
}
|
||||||
|
|
||||||
if(style == ChemicalStyle.BURNING) {
|
if(style == ChemicalStyle.BURNING) {
|
||||||
FT_Combustible trait = type.getTrait(FT_Combustible.class);
|
FT_Combustible trait = type.getTrait(FT_Combustible.class);
|
||||||
EntityDamageUtil.attackEntityFromIgnoreIFrame(e, getDamage(ModDamageSource.s_flamethrower), 2F + (trait != null ? (trait.getCombustionEnergy() / 100_000F) : 0));
|
EntityDamageUtil.attackEntityFromIgnoreIFrame(e, getDamage(ModDamageSource.s_flamethrower), 2F + (trait != null ? (trait.getCombustionEnergy() / 100_000F) : 0));
|
||||||
@ -224,6 +229,30 @@ public class EntityChemical extends EntityThrowableNT {
|
|||||||
}
|
}
|
||||||
ChunkRadiationManager.proxy.incrementRad(worldObj, (int) Math.floor(e.posX), (int) Math.floor(e.posY), (int) Math.floor(e.posZ), trait.getRadPerMB() * 5);
|
ChunkRadiationManager.proxy.incrementRad(worldObj, (int) Math.floor(e.posX), (int) Math.floor(e.posY), (int) Math.floor(e.posZ), trait.getRadPerMB() * 5);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if(type.hasTrait(FT_Poison.class)) {
|
||||||
|
FT_Poison trait = type.getTrait(FT_Poison.class);
|
||||||
|
|
||||||
|
if(living != null) {
|
||||||
|
living.addPotionEffect(new PotionEffect(trait.isWithering() ? Potion.wither.id : Potion.poison.id, (int) (5 * 20 * intensity)));
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
if(type == Fluids.XPJUICE) {
|
||||||
|
|
||||||
|
if(e instanceof EntityPlayer) {
|
||||||
|
EnchantmentUtil.addExperience((EntityPlayer) e, 1, false);
|
||||||
|
this.setDead();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
if(type == Fluids.ENDERJUICE) {
|
||||||
|
this.teleportRandomly(e);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
protected boolean isExtinguishing() {
|
||||||
|
return this.getStyle() == ChemicalStyle.LIQUID && this.getType().temperature < 50 && !this.getType().hasTrait(FT_Flammable.class);
|
||||||
}
|
}
|
||||||
|
|
||||||
protected DamageSource getDamage(String name) {
|
protected DamageSource getDamage(String name) {
|
||||||
@ -234,6 +263,73 @@ public class EntityChemical extends EntityThrowableNT {
|
|||||||
return new DamageSource(name);
|
return new DamageSource(name);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
//terribly copy-pasted from EntityEnderman.class
|
||||||
|
protected boolean teleportRandomly(Entity e) {
|
||||||
|
double x = this.posX + (this.rand.nextDouble() - 0.5D) * 64.0D;
|
||||||
|
double y = this.posY + (double) (this.rand.nextInt(64) - 32);
|
||||||
|
double z = this.posZ + (this.rand.nextDouble() - 0.5D) * 64.0D;
|
||||||
|
return this.teleportTo(e, x, y, z);
|
||||||
|
}
|
||||||
|
|
||||||
|
protected boolean teleportTo(Entity e, double x, double y, double z) {
|
||||||
|
|
||||||
|
double targetX = e.posX;
|
||||||
|
double targetY = e.posY;
|
||||||
|
double targetZ = e.posZ;
|
||||||
|
e.posX = x;
|
||||||
|
e.posY = y;
|
||||||
|
e.posZ = z;
|
||||||
|
boolean flag = false;
|
||||||
|
int i = MathHelper.floor_double(e.posX);
|
||||||
|
int j = MathHelper.floor_double(e.posY);
|
||||||
|
int k = MathHelper.floor_double(e.posZ);
|
||||||
|
|
||||||
|
if(e.worldObj.blockExists(i, j, k)) {
|
||||||
|
boolean flag1 = false;
|
||||||
|
|
||||||
|
while(!flag1 && j > 0) {
|
||||||
|
Block block = e.worldObj.getBlock(i, j - 1, k);
|
||||||
|
|
||||||
|
if(block.getMaterial().blocksMovement()) {
|
||||||
|
flag1 = true;
|
||||||
|
} else {
|
||||||
|
--e.posY;
|
||||||
|
--j;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
if(flag1) {
|
||||||
|
e.setPosition(e.posX, e.posY, e.posZ);
|
||||||
|
|
||||||
|
if(e.worldObj.getCollidingBoundingBoxes(e, e.boundingBox).isEmpty() && !e.worldObj.isAnyLiquid(e.boundingBox)) {
|
||||||
|
flag = true;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
if(!flag) {
|
||||||
|
e.setPosition(targetX, targetY, targetZ);
|
||||||
|
return false;
|
||||||
|
} else {
|
||||||
|
short short1 = 128;
|
||||||
|
|
||||||
|
for(int l = 0; l < short1; ++l) {
|
||||||
|
double d6 = (double) l / ((double) short1 - 1.0D);
|
||||||
|
float f = (this.rand.nextFloat() - 0.5F) * 0.2F;
|
||||||
|
float f1 = (this.rand.nextFloat() - 0.5F) * 0.2F;
|
||||||
|
float f2 = (this.rand.nextFloat() - 0.5F) * 0.2F;
|
||||||
|
double d7 = targetX + (e.posX - targetX) * d6 + (this.rand.nextDouble() - 0.5D) * (double) e.width * 2.0D;
|
||||||
|
double d8 = targetY + (e.posY - targetY) * d6 + this.rand.nextDouble() * (double) e.height;
|
||||||
|
double d9 = targetZ + (e.posZ - targetZ) * d6 + (this.rand.nextDouble() - 0.5D) * (double) e.width * 2.0D;
|
||||||
|
e.worldObj.spawnParticle("portal", d7, d8, d9, (double) f, (double) f1, (double) f2);
|
||||||
|
}
|
||||||
|
|
||||||
|
e.worldObj.playSoundEffect(targetX, targetY, targetZ, "mob.endermen.portal", 1.0F, 1.0F);
|
||||||
|
e.playSound("mob.endermen.portal", 1.0F, 1.0F);
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
protected void onImpact(MovingObjectPosition mop) {
|
protected void onImpact(MovingObjectPosition mop) {
|
||||||
@ -261,8 +357,24 @@ public class EntityChemical extends EntityThrowableNT {
|
|||||||
int z = mop.blockZ;
|
int z = mop.blockZ;
|
||||||
|
|
||||||
for(ForgeDirection dir : ForgeDirection.VALID_DIRECTIONS) {
|
for(ForgeDirection dir : ForgeDirection.VALID_DIRECTIONS) {
|
||||||
|
|
||||||
|
Block fire = type == Fluids.BALEFIRE ? ModBlocks.balefire : Blocks.fire;
|
||||||
|
|
||||||
if(worldObj.getBlock(x + dir.offsetX, y + dir.offsetY, z + dir.offsetZ).isAir(worldObj, x + dir.offsetX, y + dir.offsetY, z + dir.offsetZ)) {
|
if(worldObj.getBlock(x + dir.offsetX, y + dir.offsetY, z + dir.offsetZ).isAir(worldObj, x + dir.offsetX, y + dir.offsetY, z + dir.offsetZ)) {
|
||||||
worldObj.setBlock(x + dir.offsetX, y + dir.offsetY, z + dir.offsetZ, Blocks.fire);
|
worldObj.setBlock(x + dir.offsetX, y + dir.offsetY, z + dir.offsetZ, fire);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
if(this.isExtinguishing()) {
|
||||||
|
int x = mop.blockX;
|
||||||
|
int y = mop.blockY;
|
||||||
|
int z = mop.blockZ;
|
||||||
|
|
||||||
|
for(ForgeDirection dir : ForgeDirection.VALID_DIRECTIONS) {
|
||||||
|
|
||||||
|
if(worldObj.getBlock(x + dir.offsetX, y + dir.offsetY, z + dir.offsetZ) == Blocks.fire) {
|
||||||
|
worldObj.setBlock(x + dir.offsetX, y + dir.offsetY, z + dir.offsetZ, Blocks.air);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -302,9 +414,8 @@ public class EntityChemical extends EntityThrowableNT {
|
|||||||
case GAS: return 60;
|
case GAS: return 60;
|
||||||
case GASFLAME: return 20;
|
case GASFLAME: return 20;
|
||||||
case LIQUID: return 600;
|
case LIQUID: return 600;
|
||||||
|
default: return 100;
|
||||||
}
|
}
|
||||||
|
|
||||||
return 100;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
|
|||||||
@ -143,7 +143,7 @@ public class Fluids {
|
|||||||
NAPHTHA = new FluidType("NAPHTHA", 0x595744, 2, 1, 0, EnumSymbol.NONE).addContainers(0x5F6D44, ExtContainer.CANISTER).addTraits(new FT_Flammable(125_000), new FT_Combustible(FuelGrade.MEDIUM, 200_000), LIQUID);
|
NAPHTHA = new FluidType("NAPHTHA", 0x595744, 2, 1, 0, EnumSymbol.NONE).addContainers(0x5F6D44, ExtContainer.CANISTER).addTraits(new FT_Flammable(125_000), new FT_Combustible(FuelGrade.MEDIUM, 200_000), LIQUID);
|
||||||
DIESEL = new FluidType("DIESEL", 0xf2eed5, 1, 2, 0, EnumSymbol.NONE).addContainers(0xFF2C2C, ExtContainer.CANISTER).addTraits(new FT_Flammable(200_000), new FT_Combustible(FuelGrade.HIGH, 500_000), LIQUID);
|
DIESEL = new FluidType("DIESEL", 0xf2eed5, 1, 2, 0, EnumSymbol.NONE).addContainers(0xFF2C2C, ExtContainer.CANISTER).addTraits(new FT_Flammable(200_000), new FT_Combustible(FuelGrade.HIGH, 500_000), LIQUID);
|
||||||
LIGHTOIL = new FluidType("LIGHTOIL", 0x8c7451, 1, 2, 0, EnumSymbol.NONE).addContainers(0xB46B52, ExtContainer.CANISTER).addTraits(new FT_Flammable(200_000), new FT_Combustible(FuelGrade.MEDIUM, 500_000), LIQUID);
|
LIGHTOIL = new FluidType("LIGHTOIL", 0x8c7451, 1, 2, 0, EnumSymbol.NONE).addContainers(0xB46B52, ExtContainer.CANISTER).addTraits(new FT_Flammable(200_000), new FT_Combustible(FuelGrade.MEDIUM, 500_000), LIQUID);
|
||||||
KEROSENE = new FluidType("KEROSENE", 0xffa5d2, 1, 2, 0, EnumSymbol.NONE).addContainers(0xFF377D, ExtContainer.CANISTER).addTraits(new FT_Flammable(300_000), new FT_Combustible(FuelGrade.AERO, 1_250_000));
|
KEROSENE = new FluidType("KEROSENE", 0xffa5d2, 1, 2, 0, EnumSymbol.NONE).addContainers(0xFF377D, ExtContainer.CANISTER).addTraits(new FT_Flammable(300_000), new FT_Combustible(FuelGrade.AERO, 1_250_000), LIQUID);
|
||||||
GAS = new FluidType("GAS", 0xfffeed, 1, 4, 1, EnumSymbol.NONE).addTraits(new FT_Flammable(10_000), GASEOUS);
|
GAS = new FluidType("GAS", 0xfffeed, 1, 4, 1, EnumSymbol.NONE).addTraits(new FT_Flammable(10_000), GASEOUS);
|
||||||
PETROLEUM = new FluidType("PETROLEUM", 0x7cb7c9, 1, 4, 1, EnumSymbol.NONE).addTraits(new FT_Flammable(25_000), GASEOUS);
|
PETROLEUM = new FluidType("PETROLEUM", 0x7cb7c9, 1, 4, 1, EnumSymbol.NONE).addTraits(new FT_Flammable(25_000), GASEOUS);
|
||||||
LPG = new FluidType("LPG", 0x4747EA, 1, 3, 1, EnumSymbol.NONE).addTraits(new FT_Flammable(200_000), new FT_Combustible(FuelGrade.HIGH, 400_000), LIQUID);
|
LPG = new FluidType("LPG", 0x4747EA, 1, 3, 1, EnumSymbol.NONE).addTraits(new FT_Flammable(200_000), new FT_Combustible(FuelGrade.HIGH, 400_000), LIQUID);
|
||||||
@ -153,24 +153,24 @@ public class Fluids {
|
|||||||
UF6 = new FluidType("UF6", 0xD1CEBE, 4, 0, 2, EnumSymbol.RADIATION).addTraits(new FT_VentRadiation(0.2F), new FT_Corrosive(15), GASEOUS);
|
UF6 = new FluidType("UF6", 0xD1CEBE, 4, 0, 2, EnumSymbol.RADIATION).addTraits(new FT_VentRadiation(0.2F), new FT_Corrosive(15), GASEOUS);
|
||||||
PUF6 = new FluidType("PUF6", 0x4C4C4C, 4, 0, 4, EnumSymbol.RADIATION).addTraits(new FT_VentRadiation(0.1F), new FT_Corrosive(15), GASEOUS);
|
PUF6 = new FluidType("PUF6", 0x4C4C4C, 4, 0, 4, EnumSymbol.RADIATION).addTraits(new FT_VentRadiation(0.1F), new FT_Corrosive(15), GASEOUS);
|
||||||
SAS3 = new FluidType("SAS3", 0x4ffffc, 5, 0, 4, EnumSymbol.RADIATION).addTraits(new FT_VentRadiation(1F), new FT_Corrosive(30), LIQUID);
|
SAS3 = new FluidType("SAS3", 0x4ffffc, 5, 0, 4, EnumSymbol.RADIATION).addTraits(new FT_VentRadiation(1F), new FT_Corrosive(30), LIQUID);
|
||||||
SCHRABIDIC = new FluidType("SCHRABIDIC", 0x006B6B, 5, 0, 5, EnumSymbol.ACID).addTraits(new FT_VentRadiation(1F), new FT_Corrosive(75), LIQUID);
|
SCHRABIDIC = new FluidType("SCHRABIDIC", 0x006B6B, 5, 0, 5, EnumSymbol.ACID).addTraits(new FT_VentRadiation(1F), new FT_Corrosive(75), new FT_Poison(true, 2), LIQUID);
|
||||||
AMAT = new FluidType("AMAT", 0x010101, 5, 0, 5, EnumSymbol.ANTIMATTER).addTraits(ANTI, GASEOUS);
|
AMAT = new FluidType("AMAT", 0x010101, 5, 0, 5, EnumSymbol.ANTIMATTER).addTraits(ANTI, GASEOUS);
|
||||||
ASCHRAB = new FluidType("ASCHRAB", 0xb50000, 5, 0, 5, EnumSymbol.ANTIMATTER).addTraits(ANTI, GASEOUS);
|
ASCHRAB = new FluidType("ASCHRAB", 0xb50000, 5, 0, 5, EnumSymbol.ANTIMATTER).addTraits(ANTI, GASEOUS);
|
||||||
ACID = new FluidType("ACID", 0xfff7aa, 3, 0, 3, EnumSymbol.OXIDIZER).addTraits(new FT_Corrosive(40), LIQUID);
|
ACID = new FluidType("ACID", 0xfff7aa, 3, 0, 3, EnumSymbol.OXIDIZER).addTraits(new FT_Corrosive(40), LIQUID);
|
||||||
WATZ = new FluidType("WATZ", 0x86653E, 4, 0, 3, EnumSymbol.ACID).addTraits(new FT_Corrosive(60), LIQUID);
|
WATZ = new FluidType("WATZ", 0x86653E, 4, 0, 3, EnumSymbol.ACID).addTraits(new FT_Corrosive(60), new FT_VentRadiation(0.1F), LIQUID);
|
||||||
CRYOGEL = new FluidType("CRYOGEL", 0x32ffff, 2, 0, 0, EnumSymbol.CROYGENIC).setTemp(-170).addTraits(LIQUID);
|
CRYOGEL = new FluidType("CRYOGEL", 0x32ffff, 2, 0, 0, EnumSymbol.CROYGENIC).setTemp(-170).addTraits(LIQUID);
|
||||||
HYDROGEN = new FluidType("HYDROGEN", 0x4286f4, 3, 4, 0, EnumSymbol.CROYGENIC).setTemp(-260).addTraits(new FT_Flammable(5_000), new FT_Combustible(FuelGrade.HIGH, 10_000), LIQUID, EVAP);
|
HYDROGEN = new FluidType("HYDROGEN", 0x4286f4, 3, 4, 0, EnumSymbol.CROYGENIC).setTemp(-260).addTraits(new FT_Flammable(5_000), new FT_Combustible(FuelGrade.HIGH, 10_000), LIQUID, EVAP);
|
||||||
OXYGEN = new FluidType("OXYGEN", 0x98bdf9, 3, 0, 0, EnumSymbol.CROYGENIC).setTemp(-100).addTraits(LIQUID, EVAP);
|
OXYGEN = new FluidType("OXYGEN", 0x98bdf9, 3, 0, 0, EnumSymbol.CROYGENIC).setTemp(-100).addTraits(LIQUID, EVAP);
|
||||||
XENON = new FluidType("XENON", 0xba45e8, 0, 0, 0, EnumSymbol.ASPHYXIANT).addTraits(GASEOUS);
|
XENON = new FluidType("XENON", 0xba45e8, 0, 0, 0, EnumSymbol.ASPHYXIANT).addTraits(GASEOUS);
|
||||||
BALEFIRE = new FluidType("BALEFIRE", 0x28e02e, 4, 4, 3, EnumSymbol.RADIATION).setTemp(1500).addTraits(new FT_Corrosive(50), new FT_Flammable(1_000_000), new FT_Combustible(FuelGrade.HIGH, 2_500_000), LIQUID);
|
BALEFIRE = new FluidType("BALEFIRE", 0x28e02e, 4, 4, 3, EnumSymbol.RADIATION).setTemp(1500).addTraits(new FT_Corrosive(50), new FT_Flammable(1_000_000), new FT_Combustible(FuelGrade.HIGH, 2_500_000), LIQUID);
|
||||||
MERCURY = new FluidType("MERCURY", 0x808080, 2, 0, 0, EnumSymbol.NONE).addTraits(LIQUID);
|
MERCURY = new FluidType("MERCURY", 0x808080, 2, 0, 0, EnumSymbol.NONE).addTraits(LIQUID, new FT_Poison(false, 2));
|
||||||
PAIN = new FluidType("PAIN", 0x938541, 2, 0, 1, EnumSymbol.ACID).setTemp(300).addTraits(new FT_Corrosive(30));
|
PAIN = new FluidType("PAIN", 0x938541, 2, 0, 1, EnumSymbol.ACID).setTemp(300).addTraits(new FT_Corrosive(30), new FT_Poison(true, 2), LIQUID);
|
||||||
WASTEFLUID = new FluidType("WASTEFLUID", 0x544400, 2, 0, 1, EnumSymbol.RADIATION).addTraits(new FT_VentRadiation(0.5F), NOCON, LIQUID);
|
WASTEFLUID = new FluidType("WASTEFLUID", 0x544400, 2, 0, 1, EnumSymbol.RADIATION).addTraits(new FT_VentRadiation(0.5F), NOCON, LIQUID);
|
||||||
WASTEGAS = new FluidType("WASTEGAS", 0xB8B8B8, 2, 0, 1, EnumSymbol.RADIATION).addTraits(new FT_VentRadiation(0.5F), NOCON, GASEOUS);
|
WASTEGAS = new FluidType("WASTEGAS", 0xB8B8B8, 2, 0, 1, EnumSymbol.RADIATION).addTraits(new FT_VentRadiation(0.5F), NOCON, GASEOUS);
|
||||||
GASOLINE = new FluidType("GASOLINE", 0x445772, 1, 2, 0, EnumSymbol.NONE).addContainers(0x2F7747, ExtContainer.CANISTER).addTraits(new FT_Flammable(400_000), new FT_Combustible(FuelGrade.HIGH, 1_000_000), LIQUID);
|
GASOLINE = new FluidType("GASOLINE", 0x445772, 1, 2, 0, EnumSymbol.NONE).addContainers(0x2F7747, ExtContainer.CANISTER).addTraits(new FT_Flammable(400_000), new FT_Combustible(FuelGrade.HIGH, 1_000_000), LIQUID);
|
||||||
COALGAS = new FluidType("COALGAS", 0x445772, 1, 2, 0, EnumSymbol.NONE).addContainers(0x2E155F, ExtContainer.CANISTER).addTraits(new FT_Flammable(75_000), new FT_Combustible(FuelGrade.MEDIUM, 150_000), LIQUID);
|
COALGAS = new FluidType("COALGAS", 0x445772, 1, 2, 0, EnumSymbol.NONE).addContainers(0x2E155F, ExtContainer.CANISTER).addTraits(new FT_Flammable(75_000), new FT_Combustible(FuelGrade.MEDIUM, 150_000), LIQUID);
|
||||||
SPENTSTEAM = new FluidType("SPENTSTEAM", 0x445772, 2, 0, 0, EnumSymbol.NONE).setCompression(1D).addTraits(NOCON, GASEOUS);
|
SPENTSTEAM = new FluidType("SPENTSTEAM", 0x445772, 2, 0, 0, EnumSymbol.NONE).setCompression(1D).addTraits(NOCON, GASEOUS);
|
||||||
FRACKSOL = new FluidType("FRACKSOL", 0x798A6B, 1, 3, 3, EnumSymbol.ACID).addContainers(0x4F887F, ExtContainer.CANISTER).addTraits(new FT_Corrosive(15), LIQUID);
|
FRACKSOL = new FluidType("FRACKSOL", 0x798A6B, 1, 3, 3, EnumSymbol.ACID).addContainers(0x4F887F, ExtContainer.CANISTER).addTraits(new FT_Corrosive(15), new FT_Poison(false, 0), LIQUID);
|
||||||
PLASMA_DT = new FluidType("PLASMA_DT", 0xF7AFDE, 0, 4, 0, EnumSymbol.RADIATION).setTemp(3250).addTraits(NOCON, NOID, PLASMA);
|
PLASMA_DT = new FluidType("PLASMA_DT", 0xF7AFDE, 0, 4, 0, EnumSymbol.RADIATION).setTemp(3250).addTraits(NOCON, NOID, PLASMA);
|
||||||
PLASMA_HD = new FluidType("PLASMA_HD", 0xF0ADF4, 0, 4, 0, EnumSymbol.RADIATION).setTemp(2500).addTraits(NOCON, NOID, PLASMA);
|
PLASMA_HD = new FluidType("PLASMA_HD", 0xF0ADF4, 0, 4, 0, EnumSymbol.RADIATION).setTemp(2500).addTraits(NOCON, NOID, PLASMA);
|
||||||
PLASMA_HT = new FluidType("PLASMA_HT", 0xD1ABF2, 0, 4, 0, EnumSymbol.RADIATION).setTemp(3000).addTraits(NOCON, NOID, PLASMA);
|
PLASMA_HT = new FluidType("PLASMA_HT", 0xD1ABF2, 0, 4, 0, EnumSymbol.RADIATION).setTemp(3000).addTraits(NOCON, NOID, PLASMA);
|
||||||
@ -179,7 +179,7 @@ public class Fluids {
|
|||||||
CARBONDIOXIDE = new FluidType("CARBONDIOXIDE", 0x404040, 3, 0, 0, EnumSymbol.ASPHYXIANT).addTraits(GASEOUS);
|
CARBONDIOXIDE = new FluidType("CARBONDIOXIDE", 0x404040, 3, 0, 0, EnumSymbol.ASPHYXIANT).addTraits(GASEOUS);
|
||||||
PLASMA_DH3 = new FluidType("PLASMA_DH3", 0xFF83AA, 0, 4, 0, EnumSymbol.RADIATION).setTemp(3480).addTraits(NOCON, NOID, PLASMA);
|
PLASMA_DH3 = new FluidType("PLASMA_DH3", 0xFF83AA, 0, 4, 0, EnumSymbol.RADIATION).setTemp(3480).addTraits(NOCON, NOID, PLASMA);
|
||||||
HELIUM3 = new FluidType("HELIUM3", 0xFCF0C4, 3, 4, 0, EnumSymbol.ASPHYXIANT).addTraits(GASEOUS);
|
HELIUM3 = new FluidType("HELIUM3", 0xFCF0C4, 3, 4, 0, EnumSymbol.ASPHYXIANT).addTraits(GASEOUS);
|
||||||
DEATH = new FluidType("DEATH", 0x717A88, 2, 0, 1, EnumSymbol.ACID).setTemp(300).addTraits(new FT_Corrosive(80), LEADCON, LIQUID);
|
DEATH = new FluidType("DEATH", 0x717A88, 2, 0, 1, EnumSymbol.ACID).setTemp(300).addTraits(new FT_Corrosive(80), new FT_Poison(true, 4), LEADCON, LIQUID);
|
||||||
ETHANOL = new FluidType("ETHANOL", 0xe0ffff, 2, 3, 0, EnumSymbol.NONE).addContainers(0xEAFFF3, ExtContainer.CANISTER).addTraits(new FT_Flammable(75_000), new FT_Combustible(FuelGrade.HIGH, 200_000), LIQUID);
|
ETHANOL = new FluidType("ETHANOL", 0xe0ffff, 2, 3, 0, EnumSymbol.NONE).addContainers(0xEAFFF3, ExtContainer.CANISTER).addTraits(new FT_Flammable(75_000), new FT_Combustible(FuelGrade.HIGH, 200_000), LIQUID);
|
||||||
HEAVYWATER = new FluidType("HEAVYWATER", 0x00a0b0, 1, 0, 0, EnumSymbol.NONE).addTraits(LIQUID);
|
HEAVYWATER = new FluidType("HEAVYWATER", 0x00a0b0, 1, 0, 0, EnumSymbol.NONE).addTraits(LIQUID);
|
||||||
CRACKOIL = new FluidType("CRACKOIL", 0x020202, 2, 1, 0, EnumSymbol.NONE).addContainers(0x424242, ExtContainer.CANISTER).addTraits(new FT_Flammable(10_000), LIQUID);
|
CRACKOIL = new FluidType("CRACKOIL", 0x020202, 2, 1, 0, EnumSymbol.NONE).addContainers(0x424242, ExtContainer.CANISTER).addTraits(new FT_Flammable(10_000), LIQUID);
|
||||||
|
|||||||
@ -1,5 +1,11 @@
|
|||||||
package com.hbm.inventory.fluid.trait;
|
package com.hbm.inventory.fluid.trait;
|
||||||
|
|
||||||
|
import java.util.List;
|
||||||
|
|
||||||
|
import com.hbm.util.BobMathUtil;
|
||||||
|
|
||||||
|
import net.minecraft.util.EnumChatFormatting;
|
||||||
|
|
||||||
public class FT_Flammable extends FluidTrait {
|
public class FT_Flammable extends FluidTrait {
|
||||||
|
|
||||||
/** How much heat energy (usually translates into HE 1:1) 1000mB hold */
|
/** How much heat energy (usually translates into HE 1:1) 1000mB hold */
|
||||||
@ -12,4 +18,14 @@ public class FT_Flammable extends FluidTrait {
|
|||||||
public long getHeatEnergy() {
|
public long getHeatEnergy() {
|
||||||
return this.energy;
|
return this.energy;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void addInfo(List<String> info) {
|
||||||
|
super.addInfo(info);
|
||||||
|
|
||||||
|
info.add(EnumChatFormatting.YELLOW + "[Flammable]");
|
||||||
|
|
||||||
|
if(energy > 0)
|
||||||
|
info.add(EnumChatFormatting.YELLOW + "Provides " + EnumChatFormatting.RED + "" + BobMathUtil.getShortNumber(energy) + "TU " + EnumChatFormatting.YELLOW + "per bucket");
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
29
src/main/java/com/hbm/inventory/fluid/trait/FT_Poison.java
Normal file
29
src/main/java/com/hbm/inventory/fluid/trait/FT_Poison.java
Normal file
@ -0,0 +1,29 @@
|
|||||||
|
package com.hbm.inventory.fluid.trait;
|
||||||
|
|
||||||
|
import java.util.List;
|
||||||
|
|
||||||
|
import net.minecraft.util.EnumChatFormatting;
|
||||||
|
|
||||||
|
public class FT_Poison extends FluidTrait {
|
||||||
|
|
||||||
|
protected boolean withering = false;
|
||||||
|
protected int level = 0;
|
||||||
|
|
||||||
|
public FT_Poison(boolean withering, int level) {
|
||||||
|
this.withering = withering;
|
||||||
|
this.level = level;
|
||||||
|
}
|
||||||
|
|
||||||
|
public boolean isWithering() {
|
||||||
|
return this.withering;
|
||||||
|
}
|
||||||
|
|
||||||
|
public int getLevel() {
|
||||||
|
return this.level;
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void addInfoHidden(List<String> info) {
|
||||||
|
info.add(EnumChatFormatting.GREEN + "[Toxic Fumes]");
|
||||||
|
}
|
||||||
|
}
|
||||||
@ -39,11 +39,10 @@ public class GUIMachineBattery extends GuiInfoContainer {
|
|||||||
|
|
||||||
this.drawElectricityInfo(this, mouseX, mouseY, guiLeft + 62, guiTop + 69 - 52, 52, 52, battery.power, battery.getMaxPower());
|
this.drawElectricityInfo(this, mouseX, mouseY, guiLeft + 62, guiTop + 69 - 52, 52, 52, battery.power, battery.getMaxPower());
|
||||||
|
|
||||||
long delta = battery.log[19] - battery.log[0];
|
String deltaText = BobMathUtil.getShortNumber(Math.abs(battery.delta)) + "HE/s";
|
||||||
String deltaText = BobMathUtil.getShortNumber(Math.abs(delta)) + "HE/s";
|
|
||||||
|
|
||||||
if(delta > 0) deltaText = EnumChatFormatting.GREEN + "+" + deltaText;
|
if(battery.delta > 0) deltaText = EnumChatFormatting.GREEN + "+" + deltaText;
|
||||||
else if(delta < 0) deltaText = EnumChatFormatting.RED + "-" + deltaText;
|
else if(battery.delta < 0) deltaText = EnumChatFormatting.RED + "-" + deltaText;
|
||||||
else deltaText = EnumChatFormatting.YELLOW + "+" + deltaText;
|
else deltaText = EnumChatFormatting.YELLOW + "+" + deltaText;
|
||||||
|
|
||||||
String[] info = { BobMathUtil.getShortNumber(battery.power) + "/" + BobMathUtil.getShortNumber(battery.getMaxPower()) + "HE", deltaText };
|
String[] info = { BobMathUtil.getShortNumber(battery.power) + "/" + BobMathUtil.getShortNumber(battery.getMaxPower()) + "HE", deltaText };
|
||||||
|
|||||||
@ -16,7 +16,6 @@ import com.hbm.inventory.RecipesCommon.OreDictStack;
|
|||||||
import com.hbm.inventory.recipes.loader.SerializableRecipe;
|
import com.hbm.inventory.recipes.loader.SerializableRecipe;
|
||||||
import com.hbm.items.ModItems;
|
import com.hbm.items.ModItems;
|
||||||
import com.hbm.main.MainRegistry;
|
import com.hbm.main.MainRegistry;
|
||||||
import com.hbm.util.ItemStackUtil;
|
|
||||||
import com.hbm.util.Tuple.Pair;
|
import com.hbm.util.Tuple.Pair;
|
||||||
|
|
||||||
import net.minecraft.item.ItemStack;
|
import net.minecraft.item.ItemStack;
|
||||||
@ -116,7 +115,17 @@ public class CyclotronRecipes extends SerializableRecipe {
|
|||||||
ComparableStack boxStack = new ComparableStack(box).makeSingular();
|
ComparableStack boxStack = new ComparableStack(box).makeSingular();
|
||||||
ComparableStack comp = new ComparableStack(stack).makeSingular();
|
ComparableStack comp = new ComparableStack(stack).makeSingular();
|
||||||
|
|
||||||
Pair<ItemStack, Integer> output = recipes.get(new Pair(boxStack, comp));
|
//boo hoo we iterate over a hash map, cry me a river
|
||||||
|
for(Entry<Pair<ComparableStack, AStack>, Pair<ItemStack, Integer>> entry : recipes.entrySet()) {
|
||||||
|
|
||||||
|
if(entry.getKey().getKey().isApplicable(boxStack) && entry.getKey().getValue().isApplicable(comp)) {
|
||||||
|
return new Object[] { entry.getValue().getKey(), entry.getValue().getValue() };
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
//there's literally 0 reason why this doesn't work yet it refuses, fuck this
|
||||||
|
|
||||||
|
/*Pair<ItemStack, Integer> output = recipes.get(new Pair(boxStack, comp));
|
||||||
|
|
||||||
if(output != null) {
|
if(output != null) {
|
||||||
return new Object[] { output.getKey().copy(), output.getValue() };
|
return new Object[] { output.getKey().copy(), output.getValue() };
|
||||||
@ -124,12 +133,12 @@ public class CyclotronRecipes extends SerializableRecipe {
|
|||||||
|
|
||||||
for(String name : ItemStackUtil.getOreDictNames(stack)) {
|
for(String name : ItemStackUtil.getOreDictNames(stack)) {
|
||||||
OreDictStack ods = new OreDictStack(name);
|
OreDictStack ods = new OreDictStack(name);
|
||||||
output = recipes.get(new Pair(boxStack, comp));
|
output = recipes.get(new Pair(new ComparableStack(ModItems.part_beryllium), new OreDictStack("dustCobalt")));
|
||||||
|
|
||||||
if(output != null) {
|
if(output != null) {
|
||||||
return new Object[] { output.getKey().copy(), output.getValue() };
|
return new Object[] { output.getKey().copy(), output.getValue() };
|
||||||
}
|
}
|
||||||
}
|
}*/
|
||||||
|
|
||||||
return null;
|
return null;
|
||||||
}
|
}
|
||||||
|
|||||||
@ -3,7 +3,7 @@ package com.hbm.lib;
|
|||||||
public class RefStrings {
|
public class RefStrings {
|
||||||
public static final String MODID = "hbm";
|
public static final String MODID = "hbm";
|
||||||
public static final String NAME = "Hbm's Nuclear Tech Mod";
|
public static final String NAME = "Hbm's Nuclear Tech Mod";
|
||||||
public static final String VERSION = "1.0.27 BETA (4333)";
|
public static final String VERSION = "1.0.27 BETA (4334)";
|
||||||
//HBM's Beta Naming Convention:
|
//HBM's Beta Naming Convention:
|
||||||
//V T (X)
|
//V T (X)
|
||||||
//V -> next release version
|
//V -> next release version
|
||||||
|
|||||||
@ -25,6 +25,7 @@ import li.cil.oc.api.network.SimpleComponent;
|
|||||||
public class TileEntityMachineBattery extends TileEntityMachineBase implements IEnergyUser, IPersistentNBT, SimpleComponent {
|
public class TileEntityMachineBattery extends TileEntityMachineBase implements IEnergyUser, IPersistentNBT, SimpleComponent {
|
||||||
|
|
||||||
public long[] log = new long[20];
|
public long[] log = new long[20];
|
||||||
|
public long delta = 0;
|
||||||
public long power = 0;
|
public long power = 0;
|
||||||
|
|
||||||
//0: input only
|
//0: input only
|
||||||
@ -161,22 +162,22 @@ public class TileEntityMachineBattery extends TileEntityMachineBase implements I
|
|||||||
|
|
||||||
power = Library.chargeTEFromItems(slots, 0, power, getMaxPower());
|
power = Library.chargeTEFromItems(slots, 0, power, getMaxPower());
|
||||||
power = Library.chargeItemsFromTE(slots, 1, power, getMaxPower());
|
power = Library.chargeItemsFromTE(slots, 1, power, getMaxPower());
|
||||||
|
|
||||||
NBTTagCompound nbt = new NBTTagCompound();
|
this.delta = this.power - this.log[0];
|
||||||
nbt.setLong("power", (power + prevPower) / 2);
|
|
||||||
nbt.setShort("redLow", redLow);
|
|
||||||
nbt.setShort("redHigh", redHigh);
|
|
||||||
nbt.setByte("priority", (byte) this.priority.ordinal());
|
|
||||||
this.networkPack(nbt, 20);
|
|
||||||
}
|
|
||||||
|
|
||||||
if(worldObj.isRemote) {
|
|
||||||
|
|
||||||
for(int i = 1; i < this.log.length; i++) {
|
for(int i = 1; i < this.log.length; i++) {
|
||||||
this.log[i - 1] = this.log[i];
|
this.log[i - 1] = this.log[i];
|
||||||
}
|
}
|
||||||
|
|
||||||
this.log[19] = this.power;
|
this.log[19] = this.power;
|
||||||
|
|
||||||
|
NBTTagCompound nbt = new NBTTagCompound();
|
||||||
|
nbt.setLong("power", (power + prevPower) / 2);
|
||||||
|
nbt.setLong("delta", delta);
|
||||||
|
nbt.setShort("redLow", redLow);
|
||||||
|
nbt.setShort("redHigh", redHigh);
|
||||||
|
nbt.setByte("priority", (byte) this.priority.ordinal());
|
||||||
|
this.networkPack(nbt, 20);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -227,6 +228,7 @@ public class TileEntityMachineBattery extends TileEntityMachineBase implements I
|
|||||||
public void networkUnpack(NBTTagCompound nbt) {
|
public void networkUnpack(NBTTagCompound nbt) {
|
||||||
|
|
||||||
this.power = nbt.getLong("power");
|
this.power = nbt.getLong("power");
|
||||||
|
this.delta = nbt.getLong("delta");
|
||||||
this.redLow = nbt.getShort("redLow");
|
this.redLow = nbt.getShort("redLow");
|
||||||
this.redHigh = nbt.getShort("redHigh");
|
this.redHigh = nbt.getShort("redHigh");
|
||||||
this.priority = ConnectionPriority.values()[nbt.getByte("priority")];
|
this.priority = ConnectionPriority.values()[nbt.getByte("priority")];
|
||||||
|
|||||||
@ -3,7 +3,7 @@
|
|||||||
"modid": "hbm",
|
"modid": "hbm",
|
||||||
"name": "Hbm's Nuclear Tech",
|
"name": "Hbm's Nuclear Tech",
|
||||||
"description": "A mod that adds weapons, nuclear themed stuff and machines",
|
"description": "A mod that adds weapons, nuclear themed stuff and machines",
|
||||||
"version":"1.0.27_X4333",
|
"version":"1.0.27_X4334",
|
||||||
"mcversion": "1.7.10",
|
"mcversion": "1.7.10",
|
||||||
"url": "",
|
"url": "",
|
||||||
"updateUrl": "",
|
"updateUrl": "",
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user