mirror of
https://github.com/HbmMods/Hbm-s-Nuclear-Tech-GIT.git
synced 2026-01-25 10:32:49 +00:00
falling custom nuke, new rad system, fixed analzyer
This commit is contained in:
parent
fa60933ae7
commit
6e6685fa98
@ -220,6 +220,7 @@ item.custom_hydro.name=AB - Wasserstoffelement
|
|||||||
item.custom_amat.name=AB - Antimaterie-Element
|
item.custom_amat.name=AB - Antimaterie-Element
|
||||||
item.custom_dirty.name=AB - Schmutziges Element
|
item.custom_dirty.name=AB - Schmutziges Element
|
||||||
item.custom_schrab.name=AB - Schrabidiumelement
|
item.custom_schrab.name=AB - Schrabidiumelement
|
||||||
|
item.custom_fall.name=AB - Abwurf-Upgrade
|
||||||
|
|
||||||
container.nukeGadget=The Gadget
|
container.nukeGadget=The Gadget
|
||||||
container.nukeBoy=Little Boy
|
container.nukeBoy=Little Boy
|
||||||
|
|||||||
@ -220,6 +220,7 @@ item.custom_hydro.name=Custom Nuke Hydrogen Rod
|
|||||||
item.custom_amat.name=Custom Nuke Antimatter Rod
|
item.custom_amat.name=Custom Nuke Antimatter Rod
|
||||||
item.custom_dirty.name=Custom Nuke Dirty Rod
|
item.custom_dirty.name=Custom Nuke Dirty Rod
|
||||||
item.custom_schrab.name=Custom Nuke Schrabidium Rod
|
item.custom_schrab.name=Custom Nuke Schrabidium Rod
|
||||||
|
item.custom_fall.name=Custom Nuke Drop Upgrade
|
||||||
|
|
||||||
container.nukeGadget=The Gadget
|
container.nukeGadget=The Gadget
|
||||||
container.nukeBoy=Little Boy
|
container.nukeBoy=Little Boy
|
||||||
|
|||||||
BIN
assets/hbm/textures/blocks/machine_boiler_nuclear.png
Normal file
BIN
assets/hbm/textures/blocks/machine_boiler_nuclear.png
Normal file
Binary file not shown.
|
After Width: | Height: | Size: 345 B |
BIN
assets/hbm/textures/blocks/machine_boiler_nuclear_front.png
Normal file
BIN
assets/hbm/textures/blocks/machine_boiler_nuclear_front.png
Normal file
Binary file not shown.
|
After Width: | Height: | Size: 369 B |
BIN
assets/hbm/textures/blocks/machine_boiler_nuclear_front_lit.png
Normal file
BIN
assets/hbm/textures/blocks/machine_boiler_nuclear_front_lit.png
Normal file
Binary file not shown.
|
After Width: | Height: | Size: 419 B |
BIN
assets/hbm/textures/items/custom_fall.png
Normal file
BIN
assets/hbm/textures/items/custom_fall.png
Normal file
Binary file not shown.
|
After Width: | Height: | Size: 403 B |
BIN
assets/hbm/textures/misc/overlay_misc.png
Normal file
BIN
assets/hbm/textures/misc/overlay_misc.png
Normal file
Binary file not shown.
|
After Width: | Height: | Size: 2.6 KiB |
@ -9,6 +9,10 @@ import com.hbm.entity.effect.EntityNukeCloudNoShroom;
|
|||||||
import com.hbm.entity.effect.EntityNukeCloudSmall;
|
import com.hbm.entity.effect.EntityNukeCloudSmall;
|
||||||
import com.hbm.entity.grenade.EntityGrenadeZOMG;
|
import com.hbm.entity.grenade.EntityGrenadeZOMG;
|
||||||
import com.hbm.entity.logic.EntityNukeExplosionPlus;
|
import com.hbm.entity.logic.EntityNukeExplosionPlus;
|
||||||
|
import com.hbm.entity.missile.EntityMIRV;
|
||||||
|
import com.hbm.entity.particle.EntityDSmokeFX;
|
||||||
|
import com.hbm.entity.particle.EntitySmokeFX;
|
||||||
|
import com.hbm.entity.projectile.EntityFallingNuke;
|
||||||
import com.hbm.explosion.ExplosionChaos;
|
import com.hbm.explosion.ExplosionChaos;
|
||||||
import com.hbm.explosion.ExplosionLarge;
|
import com.hbm.explosion.ExplosionLarge;
|
||||||
import com.hbm.explosion.ExplosionParticle;
|
import com.hbm.explosion.ExplosionParticle;
|
||||||
@ -124,218 +128,234 @@ public class NukeCustom extends BlockContainer implements IBomb {
|
|||||||
if (p_149695_1_.isBlockIndirectlyGettingPowered(x, y, z) && !p_149695_1_.isRemote) {
|
if (p_149695_1_.isBlockIndirectlyGettingPowered(x, y, z) && !p_149695_1_.isRemote) {
|
||||||
if (entity.isReady()) {
|
if (entity.isReady()) {
|
||||||
float[] f = entity.returnAllValues();
|
float[] f = entity.returnAllValues();
|
||||||
|
boolean fall = entity.falls;
|
||||||
|
int meta = p_149695_1_.getBlockMetadata(x, y, z);
|
||||||
this.onBlockDestroyedByPlayer(p_149695_1_, x, y, z, 1);
|
this.onBlockDestroyedByPlayer(p_149695_1_, x, y, z, 1);
|
||||||
entity.clearSlots();
|
entity.clearSlots();
|
||||||
p_149695_1_.setBlockToAir(x, y, z);
|
p_149695_1_.setBlockToAir(x, y, z);
|
||||||
igniteTestBomb(p_149695_1_, x, y, z, f);
|
igniteTestBomb(p_149695_1_, x, y, z, f, fall, meta);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
public boolean igniteTestBomb(World world, int x, int y, int z, float[] f) {
|
public boolean igniteTestBomb(World world, int x, int y, int z, float[] f, boolean fall, int meta) {
|
||||||
if (!world.isRemote) {
|
if (!world.isRemote) {
|
||||||
world.playSoundEffect(x, y, z, "random.explode", 1.0f, world.rand.nextFloat() * 0.1F + 0.9F); // x,y,z,sound,volume,pitch
|
|
||||||
|
|
||||||
float tnt = f[0];
|
float tnt = f[0];
|
||||||
float nuke = f[1];
|
float nuke = f[1];
|
||||||
float hydro = f[2];;
|
float hydro = f[2];
|
||||||
float amat = f[3];
|
float amat = f[3];
|
||||||
float dirty = f[4];
|
float dirty = f[4];
|
||||||
float schrab = f[5];
|
float schrab = f[5];
|
||||||
float euph = f[6];
|
float euph = f[6];
|
||||||
|
|
||||||
if(euph > 0) {
|
if(!fall) {
|
||||||
EntityGrenadeZOMG zomg = new EntityGrenadeZOMG(world);
|
|
||||||
zomg.posX = x + 0.5;
|
|
||||||
zomg.posY = y + 0.5;
|
|
||||||
zomg.posZ = z + 0.5;
|
|
||||||
ExplosionChaos.zomgMeSinPi(world, x, y, z, 1000, null, zomg);
|
|
||||||
} else if(schrab > 0) {
|
|
||||||
nuke += (tnt/2);
|
|
||||||
hydro += (nuke/2);
|
|
||||||
amat += (hydro/2);
|
|
||||||
schrab += (amat/2);
|
|
||||||
|
|
||||||
if(schrab > 300)
|
explodeCustom(world, x + 0.5, y + 0.5, z + 0.5, tnt, nuke, hydro, amat, dirty, schrab, euph);
|
||||||
schrab = 300;
|
world.playSoundEffect(x, y, z, "random.explode", 1.0f, world.rand.nextFloat() * 0.1F + 0.9F);
|
||||||
|
|
||||||
EntityNukeExplosionPlus entity = new EntityNukeExplosionPlus(world);
|
} else {
|
||||||
entity.posX = x + 0.5;
|
EntityFallingNuke bomb = new EntityFallingNuke(world, tnt, nuke, hydro, amat, dirty, schrab, euph);
|
||||||
entity.posY = y + 0.5;
|
bomb.getDataWatcher().updateObject(20, (byte)meta);
|
||||||
entity.posZ = z + 0.5;
|
bomb.setPositionAndRotation(x + 0.5, y, z + 0.5, 0, 0);
|
||||||
entity.destructionRange = (int)schrab;
|
|
||||||
entity.speed = MainRegistry.blastSpeed;
|
|
||||||
entity.coefficient = 1.0F;
|
|
||||||
entity.waste = false;
|
|
||||||
|
|
||||||
world.spawnEntityInWorld(entity);
|
|
||||||
|
|
||||||
EntityCloudFleija cloud = new EntityCloudFleija(world, (int)schrab);
|
|
||||||
cloud.posX = x + 0.5;
|
|
||||||
cloud.posY = y + 0.5;
|
|
||||||
cloud.posZ = z + 0.5;
|
|
||||||
world.spawnEntityInWorld(cloud);
|
|
||||||
|
|
||||||
} else if (amat > 0) {
|
world.spawnEntityInWorld(bomb);
|
||||||
nuke += (tnt/2);
|
|
||||||
hydro += (nuke/2);
|
|
||||||
amat += (hydro/2);
|
|
||||||
|
|
||||||
if(amat > 350)
|
|
||||||
amat = 350;
|
|
||||||
|
|
||||||
EntityNukeExplosionPlus entity = new EntityNukeExplosionPlus(world);
|
|
||||||
entity.posX = x + 0.5;
|
|
||||||
entity.posY = y + 0.5;
|
|
||||||
entity.posZ = z + 0.5;
|
|
||||||
entity.destructionRange = (int)amat;
|
|
||||||
entity.speed = 25;
|
|
||||||
entity.coefficient = 10.0F;
|
|
||||||
entity.wasteRange = (int) (amat * 1.4) + (int) dirty;
|
|
||||||
|
|
||||||
world.spawnEntityInWorld(entity);
|
|
||||||
|
|
||||||
if(amat < 75) {
|
|
||||||
ExplosionParticleB.spawnMush(world, x, y - ((int)amat / 10), z);
|
|
||||||
} else if(amat < 200) {
|
|
||||||
if(MainRegistry.enableNukeClouds) {
|
|
||||||
EntityNukeCloudSmall entity2 = new EntityNukeCloudSmall(world, 1000, amat * 0.005F);
|
|
||||||
entity2.posX = x;
|
|
||||||
entity2.posY = y - (amat/10);
|
|
||||||
entity2.posZ = z;
|
|
||||||
world.spawnEntityInWorld(entity2);
|
|
||||||
} else {
|
|
||||||
EntityNukeCloudSmall entity2 = new EntityNukeCloudNoShroom(world, 1000);
|
|
||||||
entity2.posX = x;
|
|
||||||
entity2.posY = y - (amat/10);
|
|
||||||
entity2.posZ = z;
|
|
||||||
world.spawnEntityInWorld(entity2);
|
|
||||||
}
|
|
||||||
} else {
|
|
||||||
if(MainRegistry.enableNukeClouds) {
|
|
||||||
EntityNukeCloudBig entity2 = new EntityNukeCloudBig(world, 1000);
|
|
||||||
entity2.posX = x;
|
|
||||||
entity2.posY = y - (amat/10);
|
|
||||||
entity2.posZ = z;
|
|
||||||
world.spawnEntityInWorld(entity2);
|
|
||||||
} else {
|
|
||||||
EntityNukeCloudSmall entity2 = new EntityNukeCloudNoShroom(world, 1000);
|
|
||||||
entity2.posX = x;
|
|
||||||
entity2.posY = y - (amat/10);
|
|
||||||
entity2.posZ = z;
|
|
||||||
world.spawnEntityInWorld(entity2);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
} else if(hydro > 0) {
|
|
||||||
nuke += (tnt/2);
|
|
||||||
hydro += (nuke/2);
|
|
||||||
|
|
||||||
if(hydro > 350)
|
|
||||||
hydro = 350;
|
|
||||||
|
|
||||||
EntityNukeExplosionPlus entity = new EntityNukeExplosionPlus(world);
|
|
||||||
entity.posX = x + 0.5;
|
|
||||||
entity.posY = y + 0.5;
|
|
||||||
entity.posZ = z + 0.5;
|
|
||||||
entity.destructionRange = (int)hydro;
|
|
||||||
entity.speed = 25;
|
|
||||||
entity.coefficient = 10.0F;
|
|
||||||
entity.wasteRange = (int) (hydro * 1.4) + (int) dirty;
|
|
||||||
|
|
||||||
world.spawnEntityInWorld(entity);
|
|
||||||
|
|
||||||
if(hydro < 75) {
|
|
||||||
ExplosionParticle.spawnMush(world, x, y - ((int)hydro / 10), z);
|
|
||||||
} else if(hydro < 200) {
|
|
||||||
if(MainRegistry.enableNukeClouds) {
|
|
||||||
EntityNukeCloudSmall entity2 = new EntityNukeCloudSmall(world, 1000, hydro * 0.005F);
|
|
||||||
entity2.posX = x;
|
|
||||||
entity2.posY = y - (hydro/10);
|
|
||||||
entity2.posZ = z;
|
|
||||||
world.spawnEntityInWorld(entity2);
|
|
||||||
} else {
|
|
||||||
EntityNukeCloudSmall entity2 = new EntityNukeCloudNoShroom(world, 1000);
|
|
||||||
entity2.posX = x;
|
|
||||||
entity2.posY = y - (hydro/10);
|
|
||||||
entity2.posZ = z;
|
|
||||||
world.spawnEntityInWorld(entity2);
|
|
||||||
}
|
|
||||||
} else {
|
|
||||||
if(MainRegistry.enableNukeClouds) {
|
|
||||||
EntityNukeCloudBig entity2 = new EntityNukeCloudBig(world, 1000);
|
|
||||||
entity2.posX = x;
|
|
||||||
entity2.posY = y - (hydro/10);
|
|
||||||
entity2.posZ = z;
|
|
||||||
world.spawnEntityInWorld(entity2);
|
|
||||||
} else {
|
|
||||||
EntityNukeCloudSmall entity2 = new EntityNukeCloudNoShroom(world, 1000);
|
|
||||||
entity2.posX = x;
|
|
||||||
entity2.posY = y - (hydro/10);
|
|
||||||
entity2.posZ = z;
|
|
||||||
world.spawnEntityInWorld(entity2);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
} else if(nuke > 0) {
|
|
||||||
nuke += (tnt/2);
|
|
||||||
|
|
||||||
if(nuke > 350)
|
|
||||||
nuke = 350;
|
|
||||||
|
|
||||||
EntityNukeExplosionPlus entity = new EntityNukeExplosionPlus(world);
|
|
||||||
entity.posX = x + 0.5;
|
|
||||||
entity.posY = y + 0.5;
|
|
||||||
entity.posZ = z + 0.5;
|
|
||||||
entity.destructionRange = (int)nuke;
|
|
||||||
entity.speed = 25;
|
|
||||||
entity.coefficient = 10.0F;
|
|
||||||
entity.wasteRange = (int) (nuke * 1.4) + (int) dirty;
|
|
||||||
|
|
||||||
world.spawnEntityInWorld(entity);
|
|
||||||
|
|
||||||
if(nuke < 75) {
|
|
||||||
ExplosionParticle.spawnMush(world, x, y - ((int)nuke / 10), z);
|
|
||||||
} else if(nuke < 200) {
|
|
||||||
if(MainRegistry.enableNukeClouds) {
|
|
||||||
EntityNukeCloudSmall entity2 = new EntityNukeCloudSmall(world, 1000, nuke * 0.005F);
|
|
||||||
entity2.posX = x;
|
|
||||||
entity2.posY = y - (nuke/10);
|
|
||||||
entity2.posZ = z;
|
|
||||||
world.spawnEntityInWorld(entity2);
|
|
||||||
} else {
|
|
||||||
EntityNukeCloudSmall entity2 = new EntityNukeCloudNoShroom(world, 1000);
|
|
||||||
entity2.posX = x;
|
|
||||||
entity2.posY = y - (nuke/10);
|
|
||||||
entity2.posZ = z;
|
|
||||||
world.spawnEntityInWorld(entity2);
|
|
||||||
}
|
|
||||||
} else {
|
|
||||||
if(MainRegistry.enableNukeClouds) {
|
|
||||||
EntityNukeCloudBig entity2 = new EntityNukeCloudBig(world, 1000);
|
|
||||||
entity2.posX = x;
|
|
||||||
entity2.posY = y - (nuke/10);
|
|
||||||
entity2.posZ = z;
|
|
||||||
world.spawnEntityInWorld(entity2);
|
|
||||||
} else {
|
|
||||||
EntityNukeCloudSmall entity2 = new EntityNukeCloudNoShroom(world, 1000);
|
|
||||||
entity2.posX = x;
|
|
||||||
entity2.posY = y - (nuke/10);
|
|
||||||
entity2.posZ = z;
|
|
||||||
world.spawnEntityInWorld(entity2);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
} else if(tnt > 0) {
|
|
||||||
|
|
||||||
if(tnt > 100)
|
|
||||||
tnt = 100;
|
|
||||||
//world.newExplosion((Entity)null, x + 0.5F, y + 0.5F, z + 0.5F, tnt, field_149933_a.nextInt(5) == 0 ? true : false, true);
|
|
||||||
ExplosionLarge.explode(world, x, y, z, tnt, true, true, true);
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public static void explodeCustom(World world, double posX, double posY, double posZ, float tnt, float nuke, float hydro, float amat, float dirty, float schrab, float euph) {
|
||||||
|
|
||||||
|
if(euph > 0) {
|
||||||
|
EntityGrenadeZOMG zomg = new EntityGrenadeZOMG(world);
|
||||||
|
zomg.posX = posX;
|
||||||
|
zomg.posY = posY;
|
||||||
|
zomg.posZ = posZ;
|
||||||
|
ExplosionChaos.zomgMeSinPi(world, posX, posY, posZ, 1000, null, zomg);
|
||||||
|
} else if(schrab > 0) {
|
||||||
|
nuke += (tnt/2);
|
||||||
|
hydro += (nuke/2);
|
||||||
|
amat += (hydro/2);
|
||||||
|
schrab += (amat/2);
|
||||||
|
|
||||||
|
if(schrab > 300)
|
||||||
|
schrab = 300;
|
||||||
|
|
||||||
|
EntityNukeExplosionPlus entity = new EntityNukeExplosionPlus(world);
|
||||||
|
entity.posX = posX;
|
||||||
|
entity.posY = posY;
|
||||||
|
entity.posZ = posZ;
|
||||||
|
entity.destructionRange = (int)schrab;
|
||||||
|
entity.speed = MainRegistry.blastSpeed;
|
||||||
|
entity.coefficient = 1.0F;
|
||||||
|
entity.waste = false;
|
||||||
|
|
||||||
|
world.spawnEntityInWorld(entity);
|
||||||
|
|
||||||
|
EntityCloudFleija cloud = new EntityCloudFleija(world, (int)schrab);
|
||||||
|
cloud.posX = posX;
|
||||||
|
cloud.posY = posY;
|
||||||
|
cloud.posZ = posZ;
|
||||||
|
world.spawnEntityInWorld(cloud);
|
||||||
|
|
||||||
|
} else if (amat > 0) {
|
||||||
|
nuke += (tnt/2);
|
||||||
|
hydro += (nuke/2);
|
||||||
|
amat += (hydro/2);
|
||||||
|
|
||||||
|
if(amat > 350)
|
||||||
|
amat = 350;
|
||||||
|
|
||||||
|
EntityNukeExplosionPlus entity = new EntityNukeExplosionPlus(world);
|
||||||
|
entity.posX = posX;
|
||||||
|
entity.posY = posY;
|
||||||
|
entity.posZ = posZ;
|
||||||
|
entity.destructionRange = (int)amat;
|
||||||
|
entity.speed = 25;
|
||||||
|
entity.coefficient = 10.0F;
|
||||||
|
entity.wasteRange = (int) (amat * 1.4) + (int) dirty;
|
||||||
|
|
||||||
|
world.spawnEntityInWorld(entity);
|
||||||
|
|
||||||
|
if(amat < 75) {
|
||||||
|
ExplosionParticleB.spawnMush(world, posX, posY, posZ);
|
||||||
|
} else if(amat < 200) {
|
||||||
|
if(MainRegistry.enableNukeClouds) {
|
||||||
|
EntityNukeCloudSmall entity2 = new EntityNukeCloudSmall(world, 1000, amat * 0.005F);
|
||||||
|
entity2.posX = posX;
|
||||||
|
entity2.posY = posY;
|
||||||
|
entity2.posZ = posZ;
|
||||||
|
world.spawnEntityInWorld(entity2);
|
||||||
|
} else {
|
||||||
|
EntityNukeCloudSmall entity2 = new EntityNukeCloudNoShroom(world, 1000);
|
||||||
|
entity2.posX = posX;
|
||||||
|
entity2.posY = posY;
|
||||||
|
entity2.posZ = posZ;
|
||||||
|
world.spawnEntityInWorld(entity2);
|
||||||
|
}
|
||||||
|
} else {
|
||||||
|
if(MainRegistry.enableNukeClouds) {
|
||||||
|
EntityNukeCloudBig entity2 = new EntityNukeCloudBig(world, 1000);
|
||||||
|
entity2.posX = posX;
|
||||||
|
entity2.posY = posY;
|
||||||
|
entity2.posZ = posZ;
|
||||||
|
world.spawnEntityInWorld(entity2);
|
||||||
|
} else {
|
||||||
|
EntityNukeCloudSmall entity2 = new EntityNukeCloudNoShroom(world, 1000);
|
||||||
|
entity2.posX = posX;
|
||||||
|
entity2.posY = posY;
|
||||||
|
entity2.posZ = posZ;
|
||||||
|
world.spawnEntityInWorld(entity2);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
} else if(hydro > 0) {
|
||||||
|
nuke += (tnt/2);
|
||||||
|
hydro += (nuke/2);
|
||||||
|
|
||||||
|
if(hydro > 350)
|
||||||
|
hydro = 350;
|
||||||
|
|
||||||
|
EntityNukeExplosionPlus entity = new EntityNukeExplosionPlus(world);
|
||||||
|
entity.posX = posX;
|
||||||
|
entity.posY = posY;
|
||||||
|
entity.posZ = posZ;
|
||||||
|
entity.destructionRange = (int)hydro;
|
||||||
|
entity.speed = 25;
|
||||||
|
entity.coefficient = 10.0F;
|
||||||
|
entity.wasteRange = (int) (hydro * 1.4) + (int) dirty;
|
||||||
|
|
||||||
|
world.spawnEntityInWorld(entity);
|
||||||
|
|
||||||
|
if(hydro < 75) {
|
||||||
|
ExplosionParticle.spawnMush(world, posX, posY, posZ);
|
||||||
|
} else if(hydro < 200) {
|
||||||
|
if(MainRegistry.enableNukeClouds) {
|
||||||
|
EntityNukeCloudSmall entity2 = new EntityNukeCloudSmall(world, 1000, hydro * 0.005F);
|
||||||
|
entity2.posX = posX;
|
||||||
|
entity2.posY = posY;
|
||||||
|
entity2.posZ = posZ;
|
||||||
|
world.spawnEntityInWorld(entity2);
|
||||||
|
} else {
|
||||||
|
EntityNukeCloudSmall entity2 = new EntityNukeCloudNoShroom(world, 1000);
|
||||||
|
entity2.posX = posX;
|
||||||
|
entity2.posY = posY;
|
||||||
|
entity2.posZ = posZ;
|
||||||
|
world.spawnEntityInWorld(entity2);
|
||||||
|
}
|
||||||
|
} else {
|
||||||
|
if(MainRegistry.enableNukeClouds) {
|
||||||
|
EntityNukeCloudBig entity2 = new EntityNukeCloudBig(world, 1000);
|
||||||
|
entity2.posX = posX;
|
||||||
|
entity2.posY = posY;
|
||||||
|
entity2.posZ = posZ;
|
||||||
|
world.spawnEntityInWorld(entity2);
|
||||||
|
} else {
|
||||||
|
EntityNukeCloudSmall entity2 = new EntityNukeCloudNoShroom(world, 1000);
|
||||||
|
entity2.posX = posX;
|
||||||
|
entity2.posY = posY;
|
||||||
|
entity2.posZ = posZ;
|
||||||
|
world.spawnEntityInWorld(entity2);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
} else if(nuke > 0) {
|
||||||
|
nuke += (tnt/2);
|
||||||
|
|
||||||
|
if(nuke > 350)
|
||||||
|
nuke = 350;
|
||||||
|
|
||||||
|
EntityNukeExplosionPlus entity = new EntityNukeExplosionPlus(world);
|
||||||
|
entity.posX = posX;
|
||||||
|
entity.posY = posY;
|
||||||
|
entity.posZ = posZ;
|
||||||
|
entity.destructionRange = (int)nuke;
|
||||||
|
entity.speed = 25;
|
||||||
|
entity.coefficient = 10.0F;
|
||||||
|
entity.wasteRange = (int) (nuke * 1.4) + (int) dirty;
|
||||||
|
|
||||||
|
world.spawnEntityInWorld(entity);
|
||||||
|
|
||||||
|
if(nuke < 75) {
|
||||||
|
ExplosionParticle.spawnMush(world, posX, posY, posZ);
|
||||||
|
} else if(nuke < 200) {
|
||||||
|
if(MainRegistry.enableNukeClouds) {
|
||||||
|
EntityNukeCloudSmall entity2 = new EntityNukeCloudSmall(world, 1000, nuke * 0.005F);
|
||||||
|
entity2.posX = posX;
|
||||||
|
entity2.posY = posY;
|
||||||
|
entity2.posZ = posZ;
|
||||||
|
world.spawnEntityInWorld(entity2);
|
||||||
|
} else {
|
||||||
|
EntityNukeCloudSmall entity2 = new EntityNukeCloudNoShroom(world, 1000);
|
||||||
|
entity2.posX = posX;
|
||||||
|
entity2.posY = posY;
|
||||||
|
entity2.posZ = posZ;
|
||||||
|
world.spawnEntityInWorld(entity2);
|
||||||
|
}
|
||||||
|
} else {
|
||||||
|
if(MainRegistry.enableNukeClouds) {
|
||||||
|
EntityNukeCloudBig entity2 = new EntityNukeCloudBig(world, 1000);
|
||||||
|
entity2.posX = posX;
|
||||||
|
entity2.posY = posY;
|
||||||
|
entity2.posZ = posZ;
|
||||||
|
world.spawnEntityInWorld(entity2);
|
||||||
|
} else {
|
||||||
|
EntityNukeCloudSmall entity2 = new EntityNukeCloudNoShroom(world, 1000);
|
||||||
|
entity2.posX = posX;
|
||||||
|
entity2.posY = posY;
|
||||||
|
entity2.posZ = posZ;
|
||||||
|
world.spawnEntityInWorld(entity2);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
} else if(tnt > 0) {
|
||||||
|
|
||||||
|
if(tnt > 100)
|
||||||
|
tnt = 100;
|
||||||
|
ExplosionLarge.explode(world, posX, posY, posZ, tnt, true, true, true);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public int getRenderType() {
|
public int getRenderType() {
|
||||||
@ -376,10 +396,12 @@ public class NukeCustom extends BlockContainer implements IBomb {
|
|||||||
{
|
{
|
||||||
if (entity.isReady()) {
|
if (entity.isReady()) {
|
||||||
float[] f = entity.returnAllValues();
|
float[] f = entity.returnAllValues();
|
||||||
|
boolean fall = entity.falls;
|
||||||
|
int meta = world.getBlockMetadata(x, y, z);
|
||||||
this.onBlockDestroyedByPlayer(world, x, y, z, 1);
|
this.onBlockDestroyedByPlayer(world, x, y, z, 1);
|
||||||
entity.clearSlots();
|
entity.clearSlots();
|
||||||
world.setBlockToAir(x, y, z);
|
world.setBlockToAir(x, y, z);
|
||||||
igniteTestBomb(world, x, y, z, f);
|
igniteTestBomb(world, x, y, z, f, fall, meta);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@ -20,6 +20,8 @@ import com.hbm.lib.HbmChestContents;
|
|||||||
import com.hbm.main.MainRegistry;
|
import com.hbm.main.MainRegistry;
|
||||||
import com.hbm.main.ModEventHandler;
|
import com.hbm.main.ModEventHandler;
|
||||||
import com.hbm.potion.HbmPotion;
|
import com.hbm.potion.HbmPotion;
|
||||||
|
import com.hbm.saveddata.RadiationSaveStructure;
|
||||||
|
import com.hbm.saveddata.RadiationSavedData;
|
||||||
import com.hbm.saveddata.SatelliteSaveStructure;
|
import com.hbm.saveddata.SatelliteSaveStructure;
|
||||||
import com.hbm.saveddata.SatelliteSavedData;
|
import com.hbm.saveddata.SatelliteSavedData;
|
||||||
import com.hbm.tileentity.machine.TileEntityCrateSteel;
|
import com.hbm.tileentity.machine.TileEntityCrateSteel;
|
||||||
@ -190,7 +192,57 @@ public class TestEventTester extends Block {
|
|||||||
if(!worldObj.isRemote)
|
if(!worldObj.isRemote)
|
||||||
worldObj.spawnEntityInWorld(rainbow);*/
|
worldObj.spawnEntityInWorld(rainbow);*/
|
||||||
|
|
||||||
|
RadiationSavedData data = RadiationSavedData.getData(worldObj);
|
||||||
|
|
||||||
|
//ALU SETS RAD TO 1000
|
||||||
|
//BER PRINTS RAD LEVEL
|
||||||
|
//COP INITIATES CYCLE
|
||||||
|
//RED FLUSHES ALL RAD
|
||||||
|
//STE PRINTS RAD CHUNKS
|
||||||
|
//URA PRINTS TOTAL RAD
|
||||||
|
|
||||||
|
if(worldObj.getBlock(x1, y1 - 1, z1) == ModBlocks.block_aluminium) {
|
||||||
|
|
||||||
|
Chunk chunk = worldObj.getChunkFromBlockCoords(x1, z1);
|
||||||
|
|
||||||
|
data.setRadForCoord(chunk.xPosition, chunk.zPosition, 1000000);
|
||||||
|
|
||||||
|
System.out.println(data.getRadNumFromCoord(chunk.xPosition, chunk.zPosition));
|
||||||
|
}
|
||||||
|
|
||||||
|
if(worldObj.getBlock(x1, y1 - 1, z1) == ModBlocks.block_beryllium) {
|
||||||
|
|
||||||
|
Chunk chunk = worldObj.getChunkFromBlockCoords(x1, z1);
|
||||||
|
|
||||||
|
System.out.println(data.getRadNumFromCoord(chunk.xPosition, chunk.zPosition));
|
||||||
|
}
|
||||||
|
|
||||||
|
if(worldObj.getBlock(x1, y1 - 1, z1) == ModBlocks.block_copper) {
|
||||||
|
data.updateSystem();
|
||||||
|
}
|
||||||
|
|
||||||
|
if(worldObj.getBlock(x1, y1 - 1, z1) == ModBlocks.block_red_copper) {
|
||||||
|
|
||||||
|
Chunk chunk = worldObj.getChunkFromBlockCoords(x1, z1);
|
||||||
|
|
||||||
|
data.jettisonData();
|
||||||
|
}
|
||||||
|
|
||||||
|
if(worldObj.getBlock(x1, y1 - 1, z1) == ModBlocks.block_steel) {
|
||||||
|
|
||||||
|
System.out.println(data.count);
|
||||||
|
}
|
||||||
|
|
||||||
|
if(worldObj.getBlock(x1, y1 - 1, z1) == ModBlocks.block_uranium) {
|
||||||
|
|
||||||
|
float r = 0;
|
||||||
|
|
||||||
|
for(RadiationSaveStructure st : data.contamination) {
|
||||||
|
r += st.radiation;
|
||||||
|
}
|
||||||
|
|
||||||
|
System.out.println(r);
|
||||||
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@ -41,7 +41,6 @@ public class EntityMissileNuclear extends EntityMissileBaseAdvanced {
|
|||||||
entity2.posX = this.posX;
|
entity2.posX = this.posX;
|
||||||
entity2.posY = this.posY/* - 9*/;
|
entity2.posY = this.posY/* - 9*/;
|
||||||
entity2.posZ = this.posZ;
|
entity2.posZ = this.posZ;
|
||||||
entity2.getDataWatcher().updateObject(18, 2F);
|
|
||||||
this.worldObj.spawnEntityInWorld(entity2);
|
this.worldObj.spawnEntityInWorld(entity2);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
103
com/hbm/entity/projectile/EntityFallingNuke.java
Normal file
103
com/hbm/entity/projectile/EntityFallingNuke.java
Normal file
@ -0,0 +1,103 @@
|
|||||||
|
package com.hbm.entity.projectile;
|
||||||
|
|
||||||
|
import com.hbm.blocks.bomb.NukeCustom;
|
||||||
|
import com.hbm.entity.logic.EntityNukeExplosionMK4;
|
||||||
|
import com.hbm.entity.missile.EntityBombletSelena;
|
||||||
|
import com.hbm.entity.particle.EntitySSmokeFX;
|
||||||
|
import com.hbm.explosion.ExplosionChaos;
|
||||||
|
import com.hbm.explosion.ExplosionLarge;
|
||||||
|
import com.hbm.explosion.ExplosionParticle;
|
||||||
|
import com.hbm.explosion.ExplosionParticleB;
|
||||||
|
import com.hbm.main.MainRegistry;
|
||||||
|
|
||||||
|
import cpw.mods.fml.relauncher.Side;
|
||||||
|
import cpw.mods.fml.relauncher.SideOnly;
|
||||||
|
import net.minecraft.entity.projectile.EntityThrowable;
|
||||||
|
import net.minecraft.init.Blocks;
|
||||||
|
import net.minecraft.util.MathHelper;
|
||||||
|
import net.minecraft.util.MovingObjectPosition;
|
||||||
|
import net.minecraft.util.Vec3;
|
||||||
|
import net.minecraft.world.World;
|
||||||
|
|
||||||
|
public class EntityFallingNuke extends EntityThrowable {
|
||||||
|
|
||||||
|
float tnt;
|
||||||
|
float nuke;
|
||||||
|
float hydro;
|
||||||
|
float amat;
|
||||||
|
float dirty;
|
||||||
|
float schrab;
|
||||||
|
float euph;
|
||||||
|
|
||||||
|
public EntityFallingNuke(World p_i1582_1_) {
|
||||||
|
super(p_i1582_1_);
|
||||||
|
this.ignoreFrustumCheck = true;
|
||||||
|
}
|
||||||
|
|
||||||
|
public EntityFallingNuke(World p_i1582_1_, float tnt, float nuke, float hydro, float amat, float dirty, float schrab, float euph) {
|
||||||
|
super(p_i1582_1_);
|
||||||
|
this.ignoreFrustumCheck = true;
|
||||||
|
|
||||||
|
this.tnt = tnt;
|
||||||
|
this.nuke = nuke;
|
||||||
|
this.hydro = hydro;
|
||||||
|
this.amat = amat;
|
||||||
|
this.dirty = dirty;
|
||||||
|
this.schrab = schrab;
|
||||||
|
this.euph = euph;
|
||||||
|
this.prevRotationYaw = this.rotationYaw = 90;
|
||||||
|
this.prevRotationPitch = this.rotationPitch = 90;
|
||||||
|
}
|
||||||
|
|
||||||
|
protected void entityInit() {
|
||||||
|
this.dataWatcher.addObject(20, Byte.valueOf((byte)0));
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void onUpdate() {
|
||||||
|
this.prevPosX = this.posX;
|
||||||
|
this.prevPosY = this.posY;
|
||||||
|
this.prevPosZ = this.posZ;
|
||||||
|
|
||||||
|
this.posX += this.motionX;
|
||||||
|
this.posY += this.motionY;
|
||||||
|
this.posZ += this.motionZ;
|
||||||
|
|
||||||
|
this.motionX *= 0.99;
|
||||||
|
this.motionZ *= 0.99;
|
||||||
|
this.motionY -= 0.05D;
|
||||||
|
|
||||||
|
if(motionY < -1)
|
||||||
|
motionY = -1;
|
||||||
|
|
||||||
|
this.rotation();
|
||||||
|
|
||||||
|
if(this.worldObj.getBlock((int)this.posX, (int)this.posY, (int)this.posZ) != Blocks.air)
|
||||||
|
{
|
||||||
|
if(!this.worldObj.isRemote)
|
||||||
|
{
|
||||||
|
NukeCustom.explodeCustom(worldObj, posX, posY, posZ, tnt, nuke, hydro, amat, dirty, schrab, euph);
|
||||||
|
this.setDead();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
public void rotation() {
|
||||||
|
|
||||||
|
this.prevRotationPitch = rotationPitch;
|
||||||
|
|
||||||
|
if(rotationPitch > -75)
|
||||||
|
this.rotationPitch -= 2;
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
protected void onImpact(MovingObjectPosition p_70184_1_) {
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
@SideOnly(Side.CLIENT)
|
||||||
|
public boolean isInRangeToRenderDist(double distance)
|
||||||
|
{
|
||||||
|
return distance < 25000;
|
||||||
|
}
|
||||||
|
}
|
||||||
@ -920,7 +920,7 @@ public class ModItems {
|
|||||||
public static Item custom_amat;
|
public static Item custom_amat;
|
||||||
public static Item custom_dirty;
|
public static Item custom_dirty;
|
||||||
public static Item custom_schrab;
|
public static Item custom_schrab;
|
||||||
|
public static Item custom_fall;
|
||||||
|
|
||||||
public static Item battery_generic;
|
public static Item battery_generic;
|
||||||
public static Item battery_advanced;
|
public static Item battery_advanced;
|
||||||
@ -2210,6 +2210,7 @@ public class ModItems {
|
|||||||
custom_amat = new ItemCustomLore().setUnlocalizedName("custom_amat").setMaxStackSize(1).setCreativeTab(MainRegistry.nukeTab).setTextureName(RefStrings.MODID + ":custom_amat");
|
custom_amat = new ItemCustomLore().setUnlocalizedName("custom_amat").setMaxStackSize(1).setCreativeTab(MainRegistry.nukeTab).setTextureName(RefStrings.MODID + ":custom_amat");
|
||||||
custom_dirty = new ItemCustomLore().setUnlocalizedName("custom_dirty").setMaxStackSize(1).setCreativeTab(MainRegistry.nukeTab).setTextureName(RefStrings.MODID + ":custom_dirty");
|
custom_dirty = new ItemCustomLore().setUnlocalizedName("custom_dirty").setMaxStackSize(1).setCreativeTab(MainRegistry.nukeTab).setTextureName(RefStrings.MODID + ":custom_dirty");
|
||||||
custom_schrab = new ItemCustomLore().setUnlocalizedName("custom_schrab").setMaxStackSize(1).setCreativeTab(MainRegistry.nukeTab).setTextureName(RefStrings.MODID + ":custom_schrab");
|
custom_schrab = new ItemCustomLore().setUnlocalizedName("custom_schrab").setMaxStackSize(1).setCreativeTab(MainRegistry.nukeTab).setTextureName(RefStrings.MODID + ":custom_schrab");
|
||||||
|
custom_fall = new ItemCustomLore().setUnlocalizedName("custom_fall").setMaxStackSize(1).setCreativeTab(MainRegistry.nukeTab).setTextureName(RefStrings.MODID + ":custom_fall");
|
||||||
|
|
||||||
battery_generic = new ItemBattery(50, 1, 1).setUnlocalizedName("battery_generic").setMaxStackSize(1).setCreativeTab(MainRegistry.controlTab).setTextureName(RefStrings.MODID + ":battery_generic");
|
battery_generic = new ItemBattery(50, 1, 1).setUnlocalizedName("battery_generic").setMaxStackSize(1).setCreativeTab(MainRegistry.controlTab).setTextureName(RefStrings.MODID + ":battery_generic");
|
||||||
battery_advanced = new ItemBattery(200, 5, 5).setUnlocalizedName("battery_advanced").setMaxStackSize(1).setCreativeTab(MainRegistry.controlTab).setTextureName(RefStrings.MODID + ":battery_advanced");
|
battery_advanced = new ItemBattery(200, 5, 5).setUnlocalizedName("battery_advanced").setMaxStackSize(1).setCreativeTab(MainRegistry.controlTab).setTextureName(RefStrings.MODID + ":battery_advanced");
|
||||||
@ -3876,6 +3877,7 @@ public class ModItems {
|
|||||||
GameRegistry.registerItem(custom_amat, custom_amat.getUnlocalizedName());
|
GameRegistry.registerItem(custom_amat, custom_amat.getUnlocalizedName());
|
||||||
GameRegistry.registerItem(custom_dirty, custom_dirty.getUnlocalizedName());
|
GameRegistry.registerItem(custom_dirty, custom_dirty.getUnlocalizedName());
|
||||||
GameRegistry.registerItem(custom_schrab, custom_schrab.getUnlocalizedName());
|
GameRegistry.registerItem(custom_schrab, custom_schrab.getUnlocalizedName());
|
||||||
|
GameRegistry.registerItem(custom_fall, custom_fall.getUnlocalizedName());
|
||||||
|
|
||||||
//Power Armor
|
//Power Armor
|
||||||
GameRegistry.registerItem(t45_helmet, t45_helmet.getUnlocalizedName());
|
GameRegistry.registerItem(t45_helmet, t45_helmet.getUnlocalizedName());
|
||||||
|
|||||||
@ -639,6 +639,12 @@ public class ItemCustomLore extends ItemRadioactive {
|
|||||||
list.add("Removes fallout");
|
list.add("Removes fallout");
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if(this == ModItems.custom_fall)
|
||||||
|
{
|
||||||
|
list.add("That's what you've aaaaaaall been waiting for!");
|
||||||
|
list.add("Makes bomb drop upon activation");
|
||||||
|
}
|
||||||
|
|
||||||
if(this == ModItems.pin)
|
if(this == ModItems.pin)
|
||||||
{
|
{
|
||||||
list.add("Can be used with a screwdriver to pick locks.");
|
list.add("Can be used with a screwdriver to pick locks.");
|
||||||
|
|||||||
@ -30,7 +30,7 @@ public class ItemAnalyzer extends Item {
|
|||||||
Block block = world.getBlock(x, y, z);
|
Block block = world.getBlock(x, y, z);
|
||||||
TileEntity te = world.getTileEntity(x, y, z);
|
TileEntity te = world.getTileEntity(x, y, z);
|
||||||
|
|
||||||
if(!world.isRemote) {
|
if(world.isRemote) {
|
||||||
player.addChatMessage(new ChatComponentText(
|
player.addChatMessage(new ChatComponentText(
|
||||||
"Block: " + I18n.format(block.getUnlocalizedName() + ".name") + " (" + block.getUnlocalizedName() + ")"
|
"Block: " + I18n.format(block.getUnlocalizedName() + ".name") + " (" + block.getUnlocalizedName() + ")"
|
||||||
));
|
));
|
||||||
@ -38,6 +38,9 @@ public class ItemAnalyzer extends Item {
|
|||||||
player.addChatMessage(new ChatComponentText(
|
player.addChatMessage(new ChatComponentText(
|
||||||
"Meta: " + world.getBlockMetadata(x, y, z)
|
"Meta: " + world.getBlockMetadata(x, y, z)
|
||||||
));
|
));
|
||||||
|
}
|
||||||
|
|
||||||
|
if(!world.isRemote) {
|
||||||
|
|
||||||
if(te == null) {
|
if(te == null) {
|
||||||
player.addChatMessage(new ChatComponentText(
|
player.addChatMessage(new ChatComponentText(
|
||||||
|
|||||||
@ -62,7 +62,7 @@ public class ItemGeigerCounter extends Item {
|
|||||||
stack.stackTagCompound.setInteger(name, i);
|
stack.stackTagCompound.setInteger(name, i);
|
||||||
}
|
}
|
||||||
|
|
||||||
static int getInt(ItemStack stack, String name) {
|
public static int getInt(ItemStack stack, String name) {
|
||||||
if(stack.hasTagCompound())
|
if(stack.hasTagCompound())
|
||||||
return stack.stackTagCompound.getInteger(name);
|
return stack.stackTagCompound.getInteger(name);
|
||||||
|
|
||||||
|
|||||||
@ -328,6 +328,7 @@ public class ClientProxy extends ServerProxy
|
|||||||
RenderingRegistry.registerEntityRenderingHandler(EntityBooster.class, new RenderBoosterMissile());
|
RenderingRegistry.registerEntityRenderingHandler(EntityBooster.class, new RenderBoosterMissile());
|
||||||
RenderingRegistry.registerEntityRenderingHandler(EntityBomber.class, new RenderBomber());
|
RenderingRegistry.registerEntityRenderingHandler(EntityBomber.class, new RenderBomber());
|
||||||
RenderingRegistry.registerEntityRenderingHandler(EntityBurningFOEQ.class, new RenderFOEQ());
|
RenderingRegistry.registerEntityRenderingHandler(EntityBurningFOEQ.class, new RenderFOEQ());
|
||||||
|
RenderingRegistry.registerEntityRenderingHandler(EntityFallingNuke.class, new RenderFallingNuke());
|
||||||
|
|
||||||
RenderingRegistry.registerEntityRenderingHandler(EntityMissileTaint.class, new RenderMissileTaint());
|
RenderingRegistry.registerEntityRenderingHandler(EntityMissileTaint.class, new RenderMissileTaint());
|
||||||
RenderingRegistry.registerEntityRenderingHandler(EntityMissileMicro.class, new RenderMissileTaint());
|
RenderingRegistry.registerEntityRenderingHandler(EntityMissileMicro.class, new RenderMissileTaint());
|
||||||
|
|||||||
@ -170,6 +170,7 @@ import com.hbm.entity.projectile.EntityChopperMine;
|
|||||||
import com.hbm.entity.projectile.EntityCombineBall;
|
import com.hbm.entity.projectile.EntityCombineBall;
|
||||||
import com.hbm.entity.projectile.EntityDischarge;
|
import com.hbm.entity.projectile.EntityDischarge;
|
||||||
import com.hbm.entity.projectile.EntityExplosiveBeam;
|
import com.hbm.entity.projectile.EntityExplosiveBeam;
|
||||||
|
import com.hbm.entity.projectile.EntityFallingNuke;
|
||||||
import com.hbm.entity.projectile.EntityFire;
|
import com.hbm.entity.projectile.EntityFire;
|
||||||
import com.hbm.entity.projectile.EntityLN2;
|
import com.hbm.entity.projectile.EntityLN2;
|
||||||
import com.hbm.entity.projectile.EntityLaser;
|
import com.hbm.entity.projectile.EntityLaser;
|
||||||
@ -859,6 +860,7 @@ public class MainRegistry
|
|||||||
EntityRegistry.registerModEntity(EntityGrenadeIFSpark.class, "entity_grenade_ironshod", 127, this, 250, 1, true);
|
EntityRegistry.registerModEntity(EntityGrenadeIFSpark.class, "entity_grenade_ironshod", 127, this, 250, 1, true);
|
||||||
EntityRegistry.registerModEntity(EntityGrenadeIFHopwire.class, "entity_grenade_ironshod", 128, this, 250, 1, true);
|
EntityRegistry.registerModEntity(EntityGrenadeIFHopwire.class, "entity_grenade_ironshod", 128, this, 250, 1, true);
|
||||||
EntityRegistry.registerModEntity(EntityGrenadeIFNull.class, "entity_grenade_ironshod", 129, this, 250, 1, true);
|
EntityRegistry.registerModEntity(EntityGrenadeIFNull.class, "entity_grenade_ironshod", 129, this, 250, 1, true);
|
||||||
|
EntityRegistry.registerModEntity(EntityFallingNuke.class, "entity_falling_bomb", 130, this, 1000, 1, true);
|
||||||
|
|
||||||
EntityRegistry.registerGlobalEntityID(EntityNuclearCreeper.class, "entity_mob_nuclear_creeper", EntityRegistry.findGlobalUniqueEntityId(), 0x204131, 0x75CE00);
|
EntityRegistry.registerGlobalEntityID(EntityNuclearCreeper.class, "entity_mob_nuclear_creeper", EntityRegistry.findGlobalUniqueEntityId(), 0x204131, 0x75CE00);
|
||||||
EntityRegistry.registerGlobalEntityID(EntityTaintedCreeper.class, "entity_mob_tainted_creeper", EntityRegistry.findGlobalUniqueEntityId(), 0x813b9b, 0xd71fdd);
|
EntityRegistry.registerGlobalEntityID(EntityTaintedCreeper.class, "entity_mob_tainted_creeper", EntityRegistry.findGlobalUniqueEntityId(), 0x813b9b, 0xd71fdd);
|
||||||
|
|||||||
@ -10,7 +10,10 @@ import com.hbm.entity.projectile.EntityMeteor;
|
|||||||
import com.hbm.items.ModItems;
|
import com.hbm.items.ModItems;
|
||||||
import com.hbm.lib.ModDamageSource;
|
import com.hbm.lib.ModDamageSource;
|
||||||
import com.hbm.lib.RefStrings;
|
import com.hbm.lib.RefStrings;
|
||||||
|
import com.hbm.packet.PacketDispatcher;
|
||||||
|
import com.hbm.packet.RadSurveyPacket;
|
||||||
import com.hbm.potion.HbmPotion;
|
import com.hbm.potion.HbmPotion;
|
||||||
|
import com.hbm.saveddata.RadiationSavedData;
|
||||||
|
|
||||||
import cpw.mods.fml.common.eventhandler.SubscribeEvent;
|
import cpw.mods.fml.common.eventhandler.SubscribeEvent;
|
||||||
import cpw.mods.fml.common.gameevent.PlayerEvent;
|
import cpw.mods.fml.common.gameevent.PlayerEvent;
|
||||||
@ -25,12 +28,14 @@ import net.minecraft.entity.passive.EntityCow;
|
|||||||
import net.minecraft.entity.passive.EntityMooshroom;
|
import net.minecraft.entity.passive.EntityMooshroom;
|
||||||
import net.minecraft.entity.passive.EntityVillager;
|
import net.minecraft.entity.passive.EntityVillager;
|
||||||
import net.minecraft.entity.player.EntityPlayer;
|
import net.minecraft.entity.player.EntityPlayer;
|
||||||
|
import net.minecraft.entity.player.EntityPlayerMP;
|
||||||
import net.minecraft.item.Item;
|
import net.minecraft.item.Item;
|
||||||
import net.minecraft.item.ItemStack;
|
import net.minecraft.item.ItemStack;
|
||||||
import net.minecraft.potion.Potion;
|
import net.minecraft.potion.Potion;
|
||||||
import net.minecraft.potion.PotionEffect;
|
import net.minecraft.potion.PotionEffect;
|
||||||
import net.minecraft.util.ChatComponentText;
|
import net.minecraft.util.ChatComponentText;
|
||||||
import net.minecraft.world.World;
|
import net.minecraft.world.World;
|
||||||
|
import net.minecraft.world.chunk.Chunk;
|
||||||
import net.minecraftforge.event.entity.EntityEvent.EnteringChunk;
|
import net.minecraftforge.event.entity.EntityEvent.EnteringChunk;
|
||||||
import net.minecraftforge.event.entity.living.LivingSpawnEvent;
|
import net.minecraftforge.event.entity.living.LivingSpawnEvent;
|
||||||
|
|
||||||
@ -94,6 +99,31 @@ public class ModEventHandler
|
|||||||
//try {
|
//try {
|
||||||
/////
|
/////
|
||||||
|
|
||||||
|
if(event.world != null && !event.world.isRemote) {
|
||||||
|
if(!event.world.playerEntities.isEmpty()) {
|
||||||
|
|
||||||
|
for(Object o : event.world.playerEntities) {
|
||||||
|
EntityPlayer player = (EntityPlayer)o;
|
||||||
|
|
||||||
|
RadiationSavedData data = RadiationSavedData.getData(player.worldObj);
|
||||||
|
Chunk chunk = player.worldObj.getChunkFromBlockCoords((int)player.posX, (int)player.posZ);
|
||||||
|
|
||||||
|
float[] rads = new float[9];
|
||||||
|
rads[0] = data.getRadNumFromCoord(chunk.xPosition + 1, chunk.zPosition + 1);
|
||||||
|
rads[1] = data.getRadNumFromCoord(chunk.xPosition, chunk.zPosition + 1);
|
||||||
|
rads[2] = data.getRadNumFromCoord(chunk.xPosition - 1, chunk.zPosition + 1);
|
||||||
|
rads[3] = data.getRadNumFromCoord(chunk.xPosition - 1, chunk.zPosition);
|
||||||
|
rads[4] = data.getRadNumFromCoord(chunk.xPosition - 1, chunk.zPosition - 1);
|
||||||
|
rads[5] = data.getRadNumFromCoord(chunk.xPosition, chunk.zPosition - 1);
|
||||||
|
rads[6] = data.getRadNumFromCoord(chunk.xPosition + 1, chunk.zPosition - 1);
|
||||||
|
rads[7] = data.getRadNumFromCoord(chunk.xPosition + 1, chunk.zPosition);
|
||||||
|
rads[8] = data.getRadNumFromCoord(chunk.xPosition, chunk.zPosition);
|
||||||
|
|
||||||
|
PacketDispatcher.wrapper.sendTo(new RadSurveyPacket(rads), (EntityPlayerMP) player);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
if(event.world != null && !event.world.isRemote && event.world.provider.isSurfaceWorld() && MainRegistry.enableMeteorStrikes) {
|
if(event.world != null && !event.world.isRemote && event.world.provider.isSurfaceWorld() && MainRegistry.enableMeteorStrikes) {
|
||||||
if(event.world.rand.nextInt(meteorShower > 0 ? MainRegistry.meteorShowerChance : MainRegistry.meteorStrikeChance) == 0) {
|
if(event.world.rand.nextInt(meteorShower > 0 ? MainRegistry.meteorShowerChance : MainRegistry.meteorStrikeChance) == 0) {
|
||||||
if(!event.world.playerEntities.isEmpty()) {
|
if(!event.world.playerEntities.isEmpty()) {
|
||||||
|
|||||||
@ -2,7 +2,11 @@ package com.hbm.main;
|
|||||||
|
|
||||||
import com.hbm.entity.mob.EntityHunterChopper;
|
import com.hbm.entity.mob.EntityHunterChopper;
|
||||||
import com.hbm.entity.projectile.EntityChopperMine;
|
import com.hbm.entity.projectile.EntityChopperMine;
|
||||||
|
import com.hbm.items.ModItems;
|
||||||
|
import com.hbm.items.tool.ItemGeigerCounter;
|
||||||
import com.hbm.lib.Library;
|
import com.hbm.lib.Library;
|
||||||
|
import com.hbm.render.misc.RenderScreenOverlay;
|
||||||
|
import com.hbm.saveddata.RadiationSavedData;
|
||||||
import com.hbm.sound.MovingSoundChopper;
|
import com.hbm.sound.MovingSoundChopper;
|
||||||
import com.hbm.sound.MovingSoundChopperMine;
|
import com.hbm.sound.MovingSoundChopperMine;
|
||||||
import com.hbm.sound.MovingSoundCrashing;
|
import com.hbm.sound.MovingSoundCrashing;
|
||||||
@ -14,10 +18,49 @@ import cpw.mods.fml.common.eventhandler.SubscribeEvent;
|
|||||||
import net.minecraft.client.Minecraft;
|
import net.minecraft.client.Minecraft;
|
||||||
import net.minecraft.client.multiplayer.WorldClient;
|
import net.minecraft.client.multiplayer.WorldClient;
|
||||||
import net.minecraft.entity.player.EntityPlayer;
|
import net.minecraft.entity.player.EntityPlayer;
|
||||||
|
import net.minecraft.util.ChunkCoordinates;
|
||||||
import net.minecraft.util.ResourceLocation;
|
import net.minecraft.util.ResourceLocation;
|
||||||
|
import net.minecraft.world.chunk.Chunk;
|
||||||
|
import net.minecraftforge.client.event.RenderGameOverlayEvent;
|
||||||
|
import net.minecraftforge.client.event.RenderGameOverlayEvent.ElementType;
|
||||||
import net.minecraftforge.client.event.sound.PlaySoundEvent17;
|
import net.minecraftforge.client.event.sound.PlaySoundEvent17;
|
||||||
|
|
||||||
public class ModEventHandlerClient {
|
public class ModEventHandlerClient {
|
||||||
|
|
||||||
|
@SubscribeEvent
|
||||||
|
public void onOverlayRender(RenderGameOverlayEvent event) {
|
||||||
|
|
||||||
|
if(event.type == ElementType.HOTBAR) {
|
||||||
|
|
||||||
|
EntityPlayer player = Minecraft.getMinecraft().thePlayer;
|
||||||
|
|
||||||
|
if(player.inventory.hasItem(ModItems.geiger_counter)) {
|
||||||
|
|
||||||
|
float rads = 0;
|
||||||
|
|
||||||
|
for(int i = 0; i < player.inventory.getSizeInventory(); i++) {
|
||||||
|
|
||||||
|
if(player.inventory.getStackInSlot(i) != null && player.inventory.getStackInSlot(i).getItem() == ModItems.geiger_counter) {
|
||||||
|
rads = ItemGeigerCounter.getInt(player.inventory.getStackInSlot(i), "ticker");
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
////TEST
|
||||||
|
|
||||||
|
RadiationSavedData data = RadiationSavedData.getData(player.worldObj);
|
||||||
|
Chunk chunk = player.worldObj.getChunkFromBlockCoords((int)player.posX, (int)player.posZ);
|
||||||
|
rads = data.getRadNumFromCoord(chunk.xPosition, chunk.zPosition);
|
||||||
|
|
||||||
|
////TEST
|
||||||
|
|
||||||
|
//if(player.worldObj.rand.nextInt(100) == 0)
|
||||||
|
// System.out.println(rads);
|
||||||
|
|
||||||
|
RenderScreenOverlay.renderRadCounter(event.resolution, rads, Minecraft.getMinecraft().ingameGUI);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
@SubscribeEvent
|
@SubscribeEvent
|
||||||
public void onPlaySound(PlaySoundEvent17 e) {
|
public void onPlaySound(PlaySoundEvent17 e) {
|
||||||
|
|||||||
@ -2,6 +2,7 @@ package com.hbm.packet;
|
|||||||
|
|
||||||
import com.hbm.interfaces.IConsumer;
|
import com.hbm.interfaces.IConsumer;
|
||||||
import com.hbm.interfaces.ISource;
|
import com.hbm.interfaces.ISource;
|
||||||
|
import com.hbm.tileentity.bomb.TileEntityNukeCustom;
|
||||||
import com.hbm.tileentity.bomb.TileEntityTurretCIWS;
|
import com.hbm.tileentity.bomb.TileEntityTurretCIWS;
|
||||||
import com.hbm.tileentity.bomb.TileEntityTurretCheapo;
|
import com.hbm.tileentity.bomb.TileEntityTurretCheapo;
|
||||||
import com.hbm.tileentity.deco.TileEntityBomber;
|
import com.hbm.tileentity.deco.TileEntityBomber;
|
||||||
@ -197,6 +198,11 @@ public class AuxGaugePacket implements IMessage {
|
|||||||
if(m.id == 0)
|
if(m.id == 0)
|
||||||
boiler.heat = m.value;
|
boiler.heat = m.value;
|
||||||
}
|
}
|
||||||
|
if (te instanceof TileEntityNukeCustom) {
|
||||||
|
TileEntityNukeCustom nuke = (TileEntityNukeCustom)te;
|
||||||
|
|
||||||
|
nuke.falls = m.value == 1;
|
||||||
|
}
|
||||||
|
|
||||||
} catch (Exception x) {}
|
} catch (Exception x) {}
|
||||||
return null;
|
return null;
|
||||||
|
|||||||
@ -71,6 +71,8 @@ public class PacketDispatcher {
|
|||||||
wrapper.registerMessage(SatPanelPacket.Handler.class, SatPanelPacket.class, i++, Side.CLIENT);
|
wrapper.registerMessage(SatPanelPacket.Handler.class, SatPanelPacket.class, i++, Side.CLIENT);
|
||||||
//Packet to send block break particles
|
//Packet to send block break particles
|
||||||
wrapper.registerMessage(ParticleBurstPacket.Handler.class, ParticleBurstPacket.class, i++, Side.CLIENT);
|
wrapper.registerMessage(ParticleBurstPacket.Handler.class, ParticleBurstPacket.class, i++, Side.CLIENT);
|
||||||
|
//Packet to send chunk radiation info to individual players
|
||||||
|
wrapper.registerMessage(RadSurveyPacket.Handler.class, RadSurveyPacket.class, i++, Side.CLIENT);
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|||||||
81
com/hbm/packet/RadSurveyPacket.java
Normal file
81
com/hbm/packet/RadSurveyPacket.java
Normal file
@ -0,0 +1,81 @@
|
|||||||
|
package com.hbm.packet;
|
||||||
|
|
||||||
|
import com.hbm.interfaces.IConsumer;
|
||||||
|
import com.hbm.interfaces.ISource;
|
||||||
|
import com.hbm.saveddata.RadiationSavedData;
|
||||||
|
import com.hbm.tileentity.machine.TileEntityMachinePress;
|
||||||
|
|
||||||
|
import cpw.mods.fml.common.network.simpleimpl.IMessage;
|
||||||
|
import cpw.mods.fml.common.network.simpleimpl.IMessageHandler;
|
||||||
|
import cpw.mods.fml.common.network.simpleimpl.MessageContext;
|
||||||
|
import cpw.mods.fml.relauncher.Side;
|
||||||
|
import cpw.mods.fml.relauncher.SideOnly;
|
||||||
|
import io.netty.buffer.ByteBuf;
|
||||||
|
import net.minecraft.client.Minecraft;
|
||||||
|
import net.minecraft.entity.player.EntityPlayer;
|
||||||
|
import net.minecraft.item.Item;
|
||||||
|
import net.minecraft.item.ItemStack;
|
||||||
|
import net.minecraft.tileentity.TileEntity;
|
||||||
|
import net.minecraft.world.chunk.Chunk;
|
||||||
|
|
||||||
|
public class RadSurveyPacket implements IMessage {
|
||||||
|
|
||||||
|
float[] rad;
|
||||||
|
|
||||||
|
public RadSurveyPacket()
|
||||||
|
{
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
public RadSurveyPacket(float[] rad)
|
||||||
|
{
|
||||||
|
this.rad = rad;
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void fromBytes(ByteBuf buf) {
|
||||||
|
|
||||||
|
rad = new float[9];
|
||||||
|
|
||||||
|
for(int i = 0; i < 9; i++)
|
||||||
|
rad[i] = buf.readFloat();
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void toBytes(ByteBuf buf) {
|
||||||
|
|
||||||
|
for(int i = 0; i < 9; i++)
|
||||||
|
buf.writeFloat(rad[i]);
|
||||||
|
}
|
||||||
|
|
||||||
|
public static class Handler implements IMessageHandler<RadSurveyPacket, IMessage> {
|
||||||
|
|
||||||
|
@Override
|
||||||
|
@SideOnly(Side.CLIENT)
|
||||||
|
public IMessage onMessage(RadSurveyPacket m, MessageContext ctx) {
|
||||||
|
try {
|
||||||
|
|
||||||
|
EntityPlayer player = Minecraft.getMinecraft().thePlayer;
|
||||||
|
RadiationSavedData data = RadiationSavedData.getData(player.worldObj);
|
||||||
|
data.jettisonData();
|
||||||
|
|
||||||
|
Chunk[] chunks = new Chunk[9];
|
||||||
|
|
||||||
|
chunks[0] = player.worldObj.getChunkFromBlockCoords((int)player.posX + 16, (int)player.posZ + 16);
|
||||||
|
chunks[1] = player.worldObj.getChunkFromBlockCoords((int)player.posX, (int)player.posZ + 16);
|
||||||
|
chunks[2] = player.worldObj.getChunkFromBlockCoords((int)player.posX - 16, (int)player.posZ + 16);
|
||||||
|
chunks[3] = player.worldObj.getChunkFromBlockCoords((int)player.posX - 16, (int)player.posZ);
|
||||||
|
chunks[4] = player.worldObj.getChunkFromBlockCoords((int)player.posX - 16, (int)player.posZ - 16);
|
||||||
|
chunks[5] = player.worldObj.getChunkFromBlockCoords((int)player.posX, (int)player.posZ - 16);
|
||||||
|
chunks[6] = player.worldObj.getChunkFromBlockCoords((int)player.posX + 16, (int)player.posZ - 16);
|
||||||
|
chunks[7] = player.worldObj.getChunkFromBlockCoords((int)player.posX + 16, (int)player.posZ);
|
||||||
|
chunks[8] = player.worldObj.getChunkFromBlockCoords((int)player.posX, (int)player.posZ);
|
||||||
|
|
||||||
|
for(int i = 0; i < 9; i++)
|
||||||
|
data.createEntry(chunks[i].xPosition, chunks[i].zPosition, m.rad[i]);
|
||||||
|
|
||||||
|
} catch (Exception x) { }
|
||||||
|
return null;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
64
com/hbm/render/entity/RenderFallingNuke.java
Normal file
64
com/hbm/render/entity/RenderFallingNuke.java
Normal file
@ -0,0 +1,64 @@
|
|||||||
|
package com.hbm.render.entity;
|
||||||
|
|
||||||
|
import org.lwjgl.opengl.GL11;
|
||||||
|
|
||||||
|
import com.hbm.lib.RefStrings;
|
||||||
|
|
||||||
|
import net.minecraft.client.renderer.entity.Render;
|
||||||
|
import net.minecraft.entity.Entity;
|
||||||
|
import net.minecraft.util.ResourceLocation;
|
||||||
|
import net.minecraftforge.client.model.AdvancedModelLoader;
|
||||||
|
import net.minecraftforge.client.model.IModelCustom;
|
||||||
|
|
||||||
|
public class RenderFallingNuke extends Render {
|
||||||
|
|
||||||
|
private static final ResourceLocation objTesterModelRL = new ResourceLocation(/*"/assets/" + */RefStrings.MODID, "models/LilBoy1.obj");
|
||||||
|
private IModelCustom boyModel;
|
||||||
|
private ResourceLocation boyTexture;
|
||||||
|
|
||||||
|
public RenderFallingNuke() {
|
||||||
|
boyModel = AdvancedModelLoader.loadModel(objTesterModelRL);
|
||||||
|
boyTexture = new ResourceLocation(RefStrings.MODID, "textures/models/CustomNuke.png");
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void doRender(Entity p_76986_1_, double p_76986_2_, double p_76986_4_, double p_76986_6_, float p_76986_8_, float p_76986_9_) {
|
||||||
|
|
||||||
|
GL11.glPushMatrix();
|
||||||
|
GL11.glTranslatef((float)p_76986_2_, (float)p_76986_4_, (float)p_76986_6_);
|
||||||
|
|
||||||
|
switch(p_76986_1_.getDataWatcher().getWatchableObjectByte(20))
|
||||||
|
{
|
||||||
|
case 2:
|
||||||
|
GL11.glRotatef(90, 0F, 1F, 0F);
|
||||||
|
GL11.glTranslated(-2.0D, 0.0D, 0.0D); break;
|
||||||
|
case 4:
|
||||||
|
GL11.glRotatef(180, 0F, 1F, 0F);
|
||||||
|
GL11.glTranslated(-2.0D, 0.0D, 0.0D); break;
|
||||||
|
case 3:
|
||||||
|
GL11.glRotatef(270, 0F, 1F, 0F);
|
||||||
|
GL11.glTranslated(-2.0D, 0.0D, 0.0D); break;
|
||||||
|
case 5:
|
||||||
|
GL11.glRotatef(0, 0F, 1F, 0F);
|
||||||
|
GL11.glTranslated(-2.0D, 0.0D, 0.0D); break;
|
||||||
|
}
|
||||||
|
|
||||||
|
float f = p_76986_1_.prevRotationPitch + (p_76986_1_.rotationPitch - p_76986_1_.prevRotationPitch) * p_76986_9_;
|
||||||
|
|
||||||
|
if(f < -80)
|
||||||
|
f = 0;
|
||||||
|
|
||||||
|
//GL11.glRotatef(p_76986_1_.prevRotationYaw + (p_76986_1_.rotationYaw - p_76986_1_.prevRotationYaw) * p_76986_9_ - 90.0F, 0.0F, 1.0F, 0.0F);
|
||||||
|
GL11.glRotatef(f, 0.0F, 0.0F, 1.0F);
|
||||||
|
|
||||||
|
bindTexture(boyTexture);
|
||||||
|
boyModel.renderAll();
|
||||||
|
|
||||||
|
GL11.glPopMatrix();
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
protected ResourceLocation getEntityTexture(Entity p_110775_1_) {
|
||||||
|
return new ResourceLocation(RefStrings.MODID +":textures/models/TheGadget3_.png");
|
||||||
|
}
|
||||||
|
}
|
||||||
71
com/hbm/render/misc/RenderScreenOverlay.java
Normal file
71
com/hbm/render/misc/RenderScreenOverlay.java
Normal file
@ -0,0 +1,71 @@
|
|||||||
|
package com.hbm.render.misc;
|
||||||
|
|
||||||
|
import org.lwjgl.opengl.GL11;
|
||||||
|
|
||||||
|
import com.hbm.lib.RefStrings;
|
||||||
|
|
||||||
|
import net.minecraft.client.Minecraft;
|
||||||
|
import net.minecraft.client.gui.Gui;
|
||||||
|
import net.minecraft.client.gui.ScaledResolution;
|
||||||
|
import net.minecraft.client.renderer.OpenGlHelper;
|
||||||
|
import net.minecraft.util.ResourceLocation;
|
||||||
|
|
||||||
|
public class RenderScreenOverlay {
|
||||||
|
|
||||||
|
private static final ResourceLocation misc = new ResourceLocation(RefStrings.MODID + ":textures/misc/overlay_misc.png");
|
||||||
|
|
||||||
|
public static void renderRadCounter(ScaledResolution resolution, float radiation, Gui gui) {
|
||||||
|
GL11.glPushMatrix();
|
||||||
|
|
||||||
|
GL11.glEnable(GL11.GL_BLEND);
|
||||||
|
GL11.glDisable(GL11.GL_DEPTH_TEST);
|
||||||
|
GL11.glDepthMask(false);
|
||||||
|
OpenGlHelper.glBlendFunc(770, 771, 1, 0);
|
||||||
|
GL11.glColor4f(1.0F, 1.0F, 1.0F, 1.0F);
|
||||||
|
GL11.glDisable(GL11.GL_ALPHA_TEST);
|
||||||
|
|
||||||
|
int length = 74;
|
||||||
|
int maxRad = 1000;
|
||||||
|
|
||||||
|
int bar = getScaled(radiation, maxRad, 74);
|
||||||
|
|
||||||
|
if(radiation >= 1 && radiation <= 999)
|
||||||
|
bar -= (2 + Minecraft.getMinecraft().theWorld.rand.nextInt(5));
|
||||||
|
|
||||||
|
int posX = 16;
|
||||||
|
int posY = resolution.getScaledHeight() - 18 - 2;
|
||||||
|
|
||||||
|
Minecraft.getMinecraft().renderEngine.bindTexture(misc);
|
||||||
|
gui.drawTexturedModalRect(posX, posY, 0, 0, 94, 18);
|
||||||
|
gui.drawTexturedModalRect(posX + 1, posY + 1, 1, 19, bar, 16);
|
||||||
|
|
||||||
|
if(radiation >= maxRad * 0.75) {
|
||||||
|
gui.drawTexturedModalRect(posX + length + 2, posY - 18, 36, 36, 18, 18);
|
||||||
|
|
||||||
|
} else if(radiation >= maxRad * 0.5) {
|
||||||
|
gui.drawTexturedModalRect(posX + length + 2, posY - 18, 18, 36, 18, 18);
|
||||||
|
|
||||||
|
} else if(radiation >= maxRad * 0.25) {
|
||||||
|
gui.drawTexturedModalRect(posX + length + 2, posY - 18, 0, 36, 18, 18);
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
if(radiation > 1000) {
|
||||||
|
Minecraft.getMinecraft().fontRenderer.drawString(">1000 RAD/s", posX, posY - 8, 0xFF0000);
|
||||||
|
} else if(radiation >= 1) {
|
||||||
|
Minecraft.getMinecraft().fontRenderer.drawString(((int)Math.round(radiation)) + " RAD/s", posX, posY - 8, 0xFF0000);
|
||||||
|
} else if(radiation > 0) {
|
||||||
|
Minecraft.getMinecraft().fontRenderer.drawString("<1 RAD/s", posX, posY - 8, 0xFF0000);
|
||||||
|
}
|
||||||
|
|
||||||
|
GL11.glEnable(GL11.GL_DEPTH_TEST);
|
||||||
|
GL11.glDepthMask(true);
|
||||||
|
GL11.glPopMatrix();
|
||||||
|
}
|
||||||
|
|
||||||
|
private static int getScaled(double cur, double max, double scale) {
|
||||||
|
|
||||||
|
return (int) Math.min(cur / max * scale, scale);
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
35
com/hbm/saveddata/RadiationSaveStructure.java
Normal file
35
com/hbm/saveddata/RadiationSaveStructure.java
Normal file
@ -0,0 +1,35 @@
|
|||||||
|
package com.hbm.saveddata;
|
||||||
|
|
||||||
|
import java.util.Arrays;
|
||||||
|
|
||||||
|
import com.hbm.handler.FluidTypeHandler.FluidType;
|
||||||
|
|
||||||
|
import net.minecraft.nbt.NBTTagCompound;
|
||||||
|
|
||||||
|
public class RadiationSaveStructure {
|
||||||
|
|
||||||
|
public int chunkX;
|
||||||
|
public int chunkY;
|
||||||
|
public float radiation;
|
||||||
|
|
||||||
|
public RadiationSaveStructure() { }
|
||||||
|
|
||||||
|
public RadiationSaveStructure(int x, int y, float rad) {
|
||||||
|
chunkX = x;
|
||||||
|
chunkY = y;
|
||||||
|
radiation = rad;
|
||||||
|
}
|
||||||
|
|
||||||
|
public void readFromNBT(NBTTagCompound nbt, int index) {
|
||||||
|
chunkX = nbt.getInteger("rad_" + index + "_x");
|
||||||
|
chunkY = nbt.getInteger("rad_" + index + "_y");
|
||||||
|
radiation = nbt.getFloat("rad_" + index + "_level");
|
||||||
|
}
|
||||||
|
|
||||||
|
public void writeToNBT(NBTTagCompound nbt, int index) {
|
||||||
|
nbt.setInteger("rad_" + index + "_x", chunkX);
|
||||||
|
nbt.setInteger("rad_" + index + "_y", chunkY);
|
||||||
|
nbt.setFloat("rad_" + index + "_level", radiation);
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
173
com/hbm/saveddata/RadiationSavedData.java
Normal file
173
com/hbm/saveddata/RadiationSavedData.java
Normal file
@ -0,0 +1,173 @@
|
|||||||
|
package com.hbm.saveddata;
|
||||||
|
|
||||||
|
import java.util.ArrayList;
|
||||||
|
import java.util.List;
|
||||||
|
|
||||||
|
import net.minecraft.nbt.NBTTagCompound;
|
||||||
|
import net.minecraft.world.World;
|
||||||
|
import net.minecraft.world.WorldSavedData;
|
||||||
|
|
||||||
|
public class RadiationSavedData extends WorldSavedData {
|
||||||
|
|
||||||
|
public int count;
|
||||||
|
|
||||||
|
public List<RadiationSaveStructure> contamination = new ArrayList();
|
||||||
|
|
||||||
|
private World worldObj;
|
||||||
|
|
||||||
|
public RadiationSavedData(String p_i2141_1_) {
|
||||||
|
super(p_i2141_1_);
|
||||||
|
}
|
||||||
|
|
||||||
|
public RadiationSavedData(World p_i1678_1_)
|
||||||
|
{
|
||||||
|
super("radiation");
|
||||||
|
this.worldObj = p_i1678_1_;
|
||||||
|
this.markDirty();
|
||||||
|
}
|
||||||
|
|
||||||
|
public boolean doesEntryExist(int x, int y) {
|
||||||
|
|
||||||
|
return getRadFromCoord(x, y) != null;
|
||||||
|
}
|
||||||
|
|
||||||
|
public void createEntry(int x, int y, float rad) {
|
||||||
|
|
||||||
|
contamination.add(new RadiationSaveStructure(x, y, rad));
|
||||||
|
count = contamination.size();
|
||||||
|
}
|
||||||
|
|
||||||
|
public void deleteEntry(RadiationSaveStructure struct) {
|
||||||
|
|
||||||
|
contamination.remove(struct);
|
||||||
|
count = contamination.size();
|
||||||
|
}
|
||||||
|
|
||||||
|
public void jettisonData() {
|
||||||
|
|
||||||
|
contamination.clear();
|
||||||
|
count = contamination.size();
|
||||||
|
}
|
||||||
|
|
||||||
|
public void setRadForCoord(int x, int y, float radiation) {
|
||||||
|
|
||||||
|
RadiationSaveStructure entry = null;
|
||||||
|
|
||||||
|
for(RadiationSaveStructure rad : contamination)
|
||||||
|
if(rad.chunkX == x && rad.chunkY == y) {
|
||||||
|
entry = rad;
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
|
||||||
|
if(entry == null) {
|
||||||
|
|
||||||
|
entry = new RadiationSaveStructure(x, y, radiation);
|
||||||
|
contamination.add(entry);
|
||||||
|
count = contamination.size();
|
||||||
|
}
|
||||||
|
|
||||||
|
entry.radiation = radiation;
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
public RadiationSaveStructure getRadFromCoord(int x, int y) {
|
||||||
|
|
||||||
|
for(RadiationSaveStructure rad : contamination)
|
||||||
|
if(rad.chunkX == x && rad.chunkY == y)
|
||||||
|
return rad;
|
||||||
|
|
||||||
|
return null;
|
||||||
|
}
|
||||||
|
|
||||||
|
public float getRadNumFromCoord(int x, int y) {
|
||||||
|
|
||||||
|
for(RadiationSaveStructure rad : contamination)
|
||||||
|
if(rad.chunkX == x && rad.chunkY == y)
|
||||||
|
return rad.radiation;
|
||||||
|
|
||||||
|
return 0F;
|
||||||
|
}
|
||||||
|
|
||||||
|
public void updateSystem() {
|
||||||
|
|
||||||
|
List<RadiationSaveStructure> tempList = new ArrayList(contamination);
|
||||||
|
|
||||||
|
contamination.clear();
|
||||||
|
|
||||||
|
for(RadiationSaveStructure struct : tempList) {
|
||||||
|
|
||||||
|
if(struct.radiation != 0) {
|
||||||
|
|
||||||
|
if(struct.radiation > 1) {
|
||||||
|
|
||||||
|
float[] rads = new float[9];
|
||||||
|
|
||||||
|
rads[0] = getRadNumFromCoord(struct.chunkX + 1, struct.chunkY + 1);
|
||||||
|
rads[1] = getRadNumFromCoord(struct.chunkX, struct.chunkY + 1);
|
||||||
|
rads[2] = getRadNumFromCoord(struct.chunkX - 1, struct.chunkY + 1);
|
||||||
|
rads[3] = getRadNumFromCoord(struct.chunkX - 1, struct.chunkY);
|
||||||
|
rads[4] = getRadNumFromCoord(struct.chunkX - 1, struct.chunkY - 1);
|
||||||
|
rads[5] = getRadNumFromCoord(struct.chunkX, struct.chunkY - 1);
|
||||||
|
rads[6] = getRadNumFromCoord(struct.chunkX + 1, struct.chunkY - 1);
|
||||||
|
rads[7] = getRadNumFromCoord(struct.chunkX + 1, struct.chunkY);
|
||||||
|
rads[8] = getRadNumFromCoord(struct.chunkX, struct.chunkY);
|
||||||
|
|
||||||
|
float main = 0.6F;
|
||||||
|
float side = 0.075F;
|
||||||
|
float corner = 0.025F;
|
||||||
|
|
||||||
|
setRadForCoord(struct.chunkX + 1, struct.chunkY + 1, rads[0] + struct.radiation * corner);
|
||||||
|
setRadForCoord(struct.chunkX, struct.chunkY + 1, rads[1] + struct.radiation * side);
|
||||||
|
setRadForCoord(struct.chunkX - 1, struct.chunkY + 1, rads[2] + struct.radiation * corner);
|
||||||
|
setRadForCoord(struct.chunkX - 1, struct.chunkY, rads[3] + struct.radiation * side);
|
||||||
|
setRadForCoord(struct.chunkX - 1, struct.chunkY - 1, rads[4] + struct.radiation * corner);
|
||||||
|
setRadForCoord(struct.chunkX, struct.chunkY - 1, rads[5] + struct.radiation * side);
|
||||||
|
setRadForCoord(struct.chunkX + 1, struct.chunkY - 1, rads[6] + struct.radiation * corner);
|
||||||
|
setRadForCoord(struct.chunkX + 1, struct.chunkY, rads[7] + struct.radiation * side);
|
||||||
|
setRadForCoord(struct.chunkX, struct.chunkY, rads[8] + struct.radiation * main);
|
||||||
|
|
||||||
|
} else {
|
||||||
|
|
||||||
|
this.setRadForCoord(struct.chunkX, struct.chunkY, getRadNumFromCoord(struct.chunkX, struct.chunkY) + struct.radiation);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
count = contamination.size();
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void readFromNBT(NBTTagCompound nbt) {
|
||||||
|
count = nbt.getInteger("radCount");
|
||||||
|
|
||||||
|
for(int i = 0; i < count; i++) {
|
||||||
|
RadiationSaveStructure struct = new RadiationSaveStructure();
|
||||||
|
struct.readFromNBT(nbt, i);
|
||||||
|
|
||||||
|
createEntry(struct.chunkX, struct.chunkY, struct.radiation);
|
||||||
|
//contamination.add(struct);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void writeToNBT(NBTTagCompound nbt) {
|
||||||
|
nbt.setInteger("radCount", contamination.size());
|
||||||
|
|
||||||
|
for(int i = 0; i < contamination.size(); i++) {
|
||||||
|
contamination.get(i).writeToNBT(nbt, i);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
public static RadiationSavedData getData(World worldObj) {
|
||||||
|
|
||||||
|
RadiationSavedData data = (RadiationSavedData)worldObj.perWorldStorage.loadData(RadiationSavedData.class, "radiation");
|
||||||
|
if(data == null) {
|
||||||
|
worldObj.perWorldStorage.setData("radiation", new RadiationSavedData(worldObj));
|
||||||
|
|
||||||
|
data = (RadiationSavedData)worldObj.perWorldStorage.loadData(RadiationSavedData.class, "radiation");
|
||||||
|
}
|
||||||
|
|
||||||
|
return data;
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
@ -2,6 +2,8 @@ package com.hbm.tileentity.bomb;
|
|||||||
|
|
||||||
import com.hbm.blocks.ModBlocks;
|
import com.hbm.blocks.ModBlocks;
|
||||||
import com.hbm.items.ModItems;
|
import com.hbm.items.ModItems;
|
||||||
|
import com.hbm.packet.AuxGaugePacket;
|
||||||
|
import com.hbm.packet.PacketDispatcher;
|
||||||
|
|
||||||
import cpw.mods.fml.relauncher.Side;
|
import cpw.mods.fml.relauncher.Side;
|
||||||
import cpw.mods.fml.relauncher.SideOnly;
|
import cpw.mods.fml.relauncher.SideOnly;
|
||||||
@ -27,6 +29,7 @@ public class TileEntityNukeCustom extends TileEntity implements ISidedInventory
|
|||||||
public float dirtyStrength;
|
public float dirtyStrength;
|
||||||
public float schrabStrength;
|
public float schrabStrength;
|
||||||
public float euphStrength;
|
public float euphStrength;
|
||||||
|
public boolean falls;
|
||||||
|
|
||||||
public TileEntityNukeCustom() {
|
public TileEntityNukeCustom() {
|
||||||
slots = new ItemStack[27];
|
slots = new ItemStack[27];
|
||||||
@ -37,6 +40,7 @@ public class TileEntityNukeCustom extends TileEntity implements ISidedInventory
|
|||||||
dirtyStrength = 0;
|
dirtyStrength = 0;
|
||||||
schrabStrength = 0;
|
schrabStrength = 0;
|
||||||
euphStrength = 0;
|
euphStrength = 0;
|
||||||
|
falls = false;
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
@ -354,6 +358,10 @@ public class TileEntityNukeCustom extends TileEntity implements ISidedInventory
|
|||||||
if(item == ModItems.ingot_euphemium) {
|
if(item == ModItems.ingot_euphemium) {
|
||||||
this.euphStrength += 1F;
|
this.euphStrength += 1F;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if(item == ModItems.custom_fall) {
|
||||||
|
this.falls = true;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -473,7 +481,7 @@ public class TileEntityNukeCustom extends TileEntity implements ISidedInventory
|
|||||||
}
|
}
|
||||||
|
|
||||||
public float[] returnAllValues() {
|
public float[] returnAllValues() {
|
||||||
return new float[] { this.tntStrength, this.nukeStrength, this.hydroStrength, this.amatStrength, this.dirtyStrength, this.schrabStrength, this.euphStrength};
|
return new float[] { this.tntStrength, this.nukeStrength, this.hydroStrength, this.amatStrength, this.dirtyStrength, this.schrabStrength, this.euphStrength };
|
||||||
}
|
}
|
||||||
|
|
||||||
public void clearSlots() {
|
public void clearSlots() {
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user