mirror of
https://github.com/HbmMods/Hbm-s-Nuclear-Tech-GIT.git
synced 2026-01-25 10:32:49 +00:00
the moon is cheese that makes you trip balls
This commit is contained in:
parent
90813de8cc
commit
c55c8c5da1
74
changelog
74
changelog
@ -1,70 +1,14 @@
|
|||||||
## Added
|
## Added
|
||||||
* New chemical factory
|
* Steel trapdoor
|
||||||
* New form factor, uses a smaller 5x5 footprint
|
* When open with a ladder below it, it too will act like a ladder
|
||||||
* Only does four recipes instead of eight
|
|
||||||
* Double base speed, but also double power draw
|
|
||||||
* Three upgrade slots, upgrades follow the same rules as on the new chemplant
|
|
||||||
* Upgrades stack with the double base speed
|
|
||||||
* Stackable!
|
|
||||||
* Water consumption rate is fixed at 100mB/t for each active recipe
|
|
||||||
* Has a dedicated coolant line, so that the coolant water doesn't get used up by recipes
|
|
||||||
* Coolant line has a tooltip which should make it clear that the machine uses water and produces LPS
|
|
||||||
* Also has sound, unlike the old chemical factory
|
|
||||||
* Output fluids are now automatically sent to input tanks, at a rate of up to 50mB/t for somewhat fair fluid sharing
|
|
||||||
* This means that a chemical factory can make hydrogen peroxide, sulfuric acid and nitric acid, and the only fluid input needed is water
|
|
||||||
* Paintable exhaust pipe
|
|
||||||
* Full block exhaust pipe that behaves like paintable cables and ducts
|
|
||||||
* Rangefinder
|
|
||||||
* A simple tool for checking the distance to a block
|
|
||||||
* Is now used as the base ingredient for long range target designatory, artillery remotes and airstrike designators
|
|
||||||
|
|
||||||
## Changed
|
## Changed
|
||||||
* Updated chinese and ukrainian localizations
|
* Updated chinese localization
|
||||||
* The DNT suit now has a damage threshold of 1,000
|
* Improved performance for many nodespace operations
|
||||||
* Compressed biomass now has a nice cube shape
|
* .35 can now use a new ammo type
|
||||||
* The new chemical plant's indicator lights are now functional
|
* Balefire mini nukes are now craftable
|
||||||
* The new chemical plant can now use upgrades
|
|
||||||
* Reeds now drop sticks when broken
|
|
||||||
* Switching the recipe in the new chemplant now annihilates residual fluid that is not overwritten by the new recipe
|
|
||||||
* I don't know why people wanted this, but here you go
|
|
||||||
* The alternate recipe for oxyhydrogen now uses compressed air instead of nothing
|
|
||||||
* Improved threaded Mk5, should be a smidge faster now
|
|
||||||
* Spires no longer progress phases on peaceful difficulty
|
|
||||||
* Spires now have a 20% chance of coming with instructions
|
|
||||||
* New chemical plant now has sound
|
|
||||||
* Old chemical plant and factory have been renamed and their recipes removed
|
|
||||||
* The new recipe selector no longer changes recipe instantly on click, rather as soon as the selector GUI is closed. This should prevent issues when misclicking, which would destroy buffered fluids
|
|
||||||
* The memespoon is now safe(tm)
|
|
||||||
* Instead of using a bugged instakill implementation, a fall distance of >2 now deals 50 extra melee damage
|
|
||||||
* Instead of blowing up like a nuke with a fall distance of >20, it now explodes similarly to a non-HE artillery grenade. This deals 150 damage in an AoE, has armor piercing properties and is, like the original functionality, still lethal to the user
|
|
||||||
* The fuel port on the rotary furnace now has a tooltip showing that it can be used for automation
|
|
||||||
* Shredders will now prioritize NTM items when automatically generating recipes
|
|
||||||
* The priority for what mods' items should be chosen can be configured
|
|
||||||
* Mass storage units' stockpiles can now be directly accessed by ME systems
|
|
||||||
* Inserters can now be suspended by applying a redstone signal
|
|
||||||
* The legendary variant of the auto shotgun is no longer a simple reskin, it now has a completely unique model and animations
|
|
||||||
* Added alcoholism
|
|
||||||
* Open doors can now be interacted through
|
|
||||||
* Area abilities on tools now drop all mined blocks in the center
|
|
||||||
* Tools with AoE now come with the new "flat AoE" ability, which is the same but the area is only 1 block tall
|
|
||||||
* Atomic airstrike now requires a control unit
|
|
||||||
* Parallelized explosions have been temporarily disabled, regardless of config option, explosions will use the previous system
|
|
||||||
|
|
||||||
## Fixed
|
## Fixed
|
||||||
* Chemical plant ports. For real this time.
|
* Fixed chemical plant recipe config defaulting to an output chance of 0%
|
||||||
* Fixed cable and pipe gauges returning the incomplete delta second value for OC and ROR readers
|
* Potentially fixed an issue where chunks aren't properly force loaded when a nuclear explosion spawns, causing missiles to not work most of the time
|
||||||
* Fixed new chemical plant not saving power values to disk
|
* Fixed taint-tipped missile not correctly spawning taint most of the time
|
||||||
* Fixed laser rifle scope texture being missing
|
|
||||||
* Potentially fixed shift clicking issue with the new chemical plant
|
|
||||||
* Fixed blowtorch having a minimum gas requirement of 1,000mB despite only using 250mB
|
|
||||||
* The gas turbine now uses audio with a 20 tick timeout, fixing a rare issue where the loop gets stuck and never ends
|
|
||||||
* Potentially fixed a dupe caused by using InventoryBogoSorter in combination with crates
|
|
||||||
* Rapidly spinning dyx should no longer have a state leak that would rotate lighting of unrelated TESRs with it
|
|
||||||
* Fixed issue where mining strange stone with silk touch ability would cause a desync. It also now drops cobblestone, as if silk touch wasn't active at all
|
|
||||||
* Fixed issue where applying a filter to a mask that doesn't support certain protection types would permanently remove those types from the filter until the game is restarted
|
|
||||||
* Fixed InventoryBogoSorter being able to move held crates
|
|
||||||
* Fixed tier 2 pickaxes mining depth rock causing a desync with the depth rock not actually being broken
|
|
||||||
* Replaced paintabble cables in the lighthouse with regular ones, fixing an issue where the paint would ID shift
|
|
||||||
* Fixed light blocks being considered solid for NPC pathfinding
|
|
||||||
* Fixed issue regarding locked slots when using crates
|
|
||||||
* Fixed MK3 explosions crashing when spawned with invalid size or when not being deserialized correctly
|
|
||||||
@ -1,6 +1,6 @@
|
|||||||
mod_version=1.0.27
|
mod_version=1.0.27
|
||||||
# Empty build number makes a release type
|
# Empty build number makes a release type
|
||||||
mod_build_number=5377
|
mod_build_number=5378
|
||||||
|
|
||||||
credits=HbMinecraft,\
|
credits=HbMinecraft,\
|
||||||
\ rodolphito (explosion algorithms),\
|
\ rodolphito (explosion algorithms),\
|
||||||
|
|||||||
@ -20,6 +20,8 @@ public class EntityFireLingering extends Entity {
|
|||||||
public static int TYPE_DIESEL = 0;
|
public static int TYPE_DIESEL = 0;
|
||||||
public static int TYPE_BALEFIRE = 1;
|
public static int TYPE_BALEFIRE = 1;
|
||||||
public static int TYPE_PHOSPHORUS = 2;
|
public static int TYPE_PHOSPHORUS = 2;
|
||||||
|
public static int TYPE_OXY = 3;
|
||||||
|
public static int TYPE_BLACK = 4;
|
||||||
public int maxAge = 150;
|
public int maxAge = 150;
|
||||||
|
|
||||||
public EntityFireLingering(World world) {
|
public EntityFireLingering(World world) {
|
||||||
@ -75,6 +77,7 @@ public class EntityFireLingering extends Entity {
|
|||||||
if(this.getType() == this.TYPE_DIESEL) if(props.fire < 60) props.fire = 60;
|
if(this.getType() == this.TYPE_DIESEL) if(props.fire < 60) props.fire = 60;
|
||||||
if(this.getType() == this.TYPE_PHOSPHORUS) if(props.fire < 300) props.fire = 300;
|
if(this.getType() == this.TYPE_PHOSPHORUS) if(props.fire < 300) props.fire = 300;
|
||||||
if(this.getType() == this.TYPE_BALEFIRE) if(props.balefire < 100) props.balefire = 100;
|
if(this.getType() == this.TYPE_BALEFIRE) if(props.balefire < 100) props.balefire = 100;
|
||||||
|
if(this.getType() == this.TYPE_BLACK) if(props.blackFire < 200) props.blackFire = 200; else props.blackFire += 5;
|
||||||
} else {
|
} else {
|
||||||
e.setFire(4);
|
e.setFire(4);
|
||||||
}
|
}
|
||||||
@ -92,6 +95,7 @@ public class EntityFireLingering extends Entity {
|
|||||||
if(this.getType() == this.TYPE_DIESEL) FlameCreator.composeEffectClient(worldObj, x, down.yCoord, z, FlameCreator.META_FIRE);
|
if(this.getType() == this.TYPE_DIESEL) FlameCreator.composeEffectClient(worldObj, x, down.yCoord, z, FlameCreator.META_FIRE);
|
||||||
if(this.getType() == this.TYPE_PHOSPHORUS) FlameCreator.composeEffectClient(worldObj, x, down.yCoord, z, FlameCreator.META_FIRE);
|
if(this.getType() == this.TYPE_PHOSPHORUS) FlameCreator.composeEffectClient(worldObj, x, down.yCoord, z, FlameCreator.META_FIRE);
|
||||||
if(this.getType() == this.TYPE_BALEFIRE) FlameCreator.composeEffectClient(worldObj, x, down.yCoord, z, FlameCreator.META_BALEFIRE);
|
if(this.getType() == this.TYPE_BALEFIRE) FlameCreator.composeEffectClient(worldObj, x, down.yCoord, z, FlameCreator.META_BALEFIRE);
|
||||||
|
if(this.getType() == this.TYPE_BLACK) FlameCreator.composeEffectClient(worldObj, x, down.yCoord, z, FlameCreator.META_BLACK);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@ -44,7 +44,7 @@ public abstract class EntityExplosionChunkloading extends Entity implements IChu
|
|||||||
}
|
}
|
||||||
|
|
||||||
public void clearChunkLoader() {
|
public void clearChunkLoader() {
|
||||||
if(!worldObj.isRemote && loaderTicket != null && loadedChunk != null) {
|
if(!worldObj.isRemote && loaderTicket != null) {
|
||||||
ForgeChunkManager.releaseTicket(loaderTicket);
|
ForgeChunkManager.releaseTicket(loaderTicket);
|
||||||
this.loaderTicket = null;
|
this.loaderTicket = null;
|
||||||
}
|
}
|
||||||
|
|||||||
@ -259,6 +259,10 @@ public class EntityNukeExplosionMK3 extends EntityExplosionChunkloading {
|
|||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if(!entity.isDead) {
|
||||||
|
entity.loadChunk((int) Math.floor(x / 16D), (int) Math.floor(z / 16D));
|
||||||
|
}
|
||||||
|
|
||||||
return entity;
|
return entity;
|
||||||
}
|
}
|
||||||
|
|||||||
@ -159,6 +159,7 @@ public class EntityNukeExplosionMK5 extends EntityExplosionChunkloading {
|
|||||||
mk5.speed = (int)Math.ceil(100000 / mk5.strength);
|
mk5.speed = (int)Math.ceil(100000 / mk5.strength);
|
||||||
mk5.setPosition(x, y, z);
|
mk5.setPosition(x, y, z);
|
||||||
mk5.length = mk5.strength / 2;
|
mk5.length = mk5.strength / 2;
|
||||||
|
mk5.loadChunk((int) Math.floor(x / 16D), (int) Math.floor(z / 16D));
|
||||||
return mk5;
|
return mk5;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@ -281,12 +281,12 @@ public abstract class EntityMissileBaseNT extends EntityThrowableInterp implemen
|
|||||||
@Override
|
@Override
|
||||||
protected void onImpact(MovingObjectPosition mop) {
|
protected void onImpact(MovingObjectPosition mop) {
|
||||||
if(mop != null && mop.typeOfHit == mop.typeOfHit.BLOCK) {
|
if(mop != null && mop.typeOfHit == mop.typeOfHit.BLOCK) {
|
||||||
this.onImpact();
|
this.onMissileImpact(mop);
|
||||||
this.setDead();
|
this.setDead();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
public abstract void onImpact();
|
public abstract void onMissileImpact(MovingObjectPosition mop);
|
||||||
public abstract List<ItemStack> getDebris();
|
public abstract List<ItemStack> getDebris();
|
||||||
public abstract ItemStack getDebrisRareDrop();
|
public abstract ItemStack getDebrisRareDrop();
|
||||||
public void cluster() { }
|
public void cluster() { }
|
||||||
|
|||||||
@ -25,6 +25,7 @@ import net.minecraft.block.Block;
|
|||||||
import net.minecraft.item.Item;
|
import net.minecraft.item.Item;
|
||||||
import net.minecraft.item.ItemStack;
|
import net.minecraft.item.ItemStack;
|
||||||
import net.minecraft.nbt.NBTTagCompound;
|
import net.minecraft.nbt.NBTTagCompound;
|
||||||
|
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;
|
||||||
|
|
||||||
@ -161,7 +162,7 @@ public class EntityMissileCustom extends EntityMissileBaseNT implements IChunkLo
|
|||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void onImpact() { //TODO: demolish this steaming pile of shit
|
public void onMissileImpact(MovingObjectPosition mop) { //TODO: demolish this steaming pile of shit
|
||||||
|
|
||||||
ItemCustomMissilePart part = (ItemCustomMissilePart) Item.getItemById(this.dataWatcher.getWatchableObjectInt(9));
|
ItemCustomMissilePart part = (ItemCustomMissilePart) Item.getItemById(this.dataWatcher.getWatchableObjectInt(9));
|
||||||
|
|
||||||
|
|||||||
@ -15,6 +15,7 @@ import cpw.mods.fml.common.network.NetworkRegistry.TargetPoint;
|
|||||||
import net.minecraft.init.Blocks;
|
import net.minecraft.init.Blocks;
|
||||||
import net.minecraft.item.ItemStack;
|
import net.minecraft.item.ItemStack;
|
||||||
import net.minecraft.nbt.NBTTagCompound;
|
import net.minecraft.nbt.NBTTagCompound;
|
||||||
|
import net.minecraft.util.MovingObjectPosition;
|
||||||
import net.minecraft.world.World;
|
import net.minecraft.world.World;
|
||||||
|
|
||||||
public class EntityMissileShuttle extends EntityMissileBaseNT {
|
public class EntityMissileShuttle extends EntityMissileBaseNT {
|
||||||
@ -28,7 +29,7 @@ public class EntityMissileShuttle extends EntityMissileBaseNT {
|
|||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void onImpact() {
|
public void onMissileImpact(MovingObjectPosition mop) {
|
||||||
ExplosionNT explosion = new ExplosionNT(worldObj, null, this.posX + 0.5F, this.posY + 0.5F, this.posZ + 0.5F, 20.0F).overrideResolution(64);
|
ExplosionNT explosion = new ExplosionNT(worldObj, null, this.posX + 0.5F, this.posY + 0.5F, this.posZ + 0.5F, 20.0F).overrideResolution(64);
|
||||||
explosion.atttributes.add(ExAttrib.NOSOUND);
|
explosion.atttributes.add(ExAttrib.NOSOUND);
|
||||||
explosion.atttributes.add(ExAttrib.NOPARTICLE);
|
explosion.atttributes.add(ExAttrib.NOPARTICLE);
|
||||||
|
|||||||
@ -10,6 +10,7 @@ import com.hbm.particle.helper.ExplosionCreator;
|
|||||||
import com.hbm.items.ModItems;
|
import com.hbm.items.ModItems;
|
||||||
|
|
||||||
import net.minecraft.item.ItemStack;
|
import net.minecraft.item.ItemStack;
|
||||||
|
import net.minecraft.util.MovingObjectPosition;
|
||||||
import net.minecraft.world.World;
|
import net.minecraft.world.World;
|
||||||
|
|
||||||
public class EntityMissileStealth extends EntityMissileBaseNT {
|
public class EntityMissileStealth extends EntityMissileBaseNT {
|
||||||
@ -27,7 +28,7 @@ public class EntityMissileStealth extends EntityMissileBaseNT {
|
|||||||
@Override public ItemStack getMissileItemForInfo() { return new ItemStack(ModItems.missile_stealth); }
|
@Override public ItemStack getMissileItemForInfo() { return new ItemStack(ModItems.missile_stealth); }
|
||||||
@Override public boolean canBeSeenBy(Object radar) { return false; }
|
@Override public boolean canBeSeenBy(Object radar) { return false; }
|
||||||
|
|
||||||
@Override public void onImpact() { this.explodeStandard(20F, 24, false); ExplosionCreator.composeEffectStandard(worldObj, posX, posY, posZ); }
|
@Override public void onMissileImpact(MovingObjectPosition mop) { this.explodeStandard(20F, 24, false); ExplosionCreator.composeEffectStandard(worldObj, posX, posY, posZ); }
|
||||||
@Override public ItemStack getDebrisRareDrop() { return DictFrame.fromOne(ModItems.powder_ash, EnumAshType.MISC); }
|
@Override public ItemStack getDebrisRareDrop() { return DictFrame.fromOne(ModItems.powder_ash, EnumAshType.MISC); }
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|||||||
@ -16,11 +16,13 @@ import com.hbm.inventory.material.Mats;
|
|||||||
import com.hbm.items.ModItems;
|
import com.hbm.items.ModItems;
|
||||||
|
|
||||||
import com.hbm.items.weapon.sedna.factory.GunFactory.EnumAmmo;
|
import com.hbm.items.weapon.sedna.factory.GunFactory.EnumAmmo;
|
||||||
|
import com.hbm.world.WorldUtil;
|
||||||
|
|
||||||
import net.minecraft.block.Block;
|
import net.minecraft.block.Block;
|
||||||
import net.minecraft.init.Blocks;
|
import net.minecraft.init.Blocks;
|
||||||
import net.minecraft.item.ItemStack;
|
import net.minecraft.item.ItemStack;
|
||||||
import net.minecraft.util.MathHelper;
|
import net.minecraft.util.MathHelper;
|
||||||
|
import net.minecraft.util.MovingObjectPosition;
|
||||||
import net.minecraft.world.World;
|
import net.minecraft.world.World;
|
||||||
|
|
||||||
public abstract class EntityMissileTier0 extends EntityMissileBaseNT {
|
public abstract class EntityMissileTier0 extends EntityMissileBaseNT {
|
||||||
@ -49,7 +51,7 @@ public abstract class EntityMissileTier0 extends EntityMissileBaseNT {
|
|||||||
@Override public ItemStack getDebrisRareDrop() { return null; }
|
@Override public ItemStack getDebrisRareDrop() { return null; }
|
||||||
@Override public ItemStack getMissileItemForInfo() { return new ItemStack(ModItems.missile_test); }
|
@Override public ItemStack getMissileItemForInfo() { return new ItemStack(ModItems.missile_test); }
|
||||||
|
|
||||||
@Override public void onImpact() {
|
@Override public void onMissileImpact(MovingObjectPosition mop) {
|
||||||
int x = (int) Math.floor(posX);
|
int x = (int) Math.floor(posX);
|
||||||
int y = (int) Math.floor(posY);
|
int y = (int) Math.floor(posY);
|
||||||
int z = (int) Math.floor(posZ);
|
int z = (int) Math.floor(posZ);
|
||||||
@ -80,7 +82,7 @@ public abstract class EntityMissileTier0 extends EntityMissileBaseNT {
|
|||||||
public static class EntityMissileMicro extends EntityMissileTier0 {
|
public static class EntityMissileMicro extends EntityMissileTier0 {
|
||||||
public EntityMissileMicro(World world) { super(world); }
|
public EntityMissileMicro(World world) { super(world); }
|
||||||
public EntityMissileMicro(World world, float x, float y, float z, int a, int b) { super(world, x, y, z, a, b); }
|
public EntityMissileMicro(World world, float x, float y, float z, int a, int b) { super(world, x, y, z, a, b); }
|
||||||
@Override public void onImpact() { ExplosionNukeSmall.explode(worldObj, posX, posY + 0.5, posZ, ExplosionNukeSmall.PARAMS_HIGH); }
|
@Override public void onMissileImpact(MovingObjectPosition mop) { ExplosionNukeSmall.explode(worldObj, posX, posY + 0.5, posZ, ExplosionNukeSmall.PARAMS_HIGH); }
|
||||||
@Override public ItemStack getDebrisRareDrop() { return DictFrame.fromOne(ModItems.ammo_standard, EnumAmmo.NUKE_HIGH); }
|
@Override public ItemStack getDebrisRareDrop() { return DictFrame.fromOne(ModItems.ammo_standard, EnumAmmo.NUKE_HIGH); }
|
||||||
@Override public ItemStack getMissileItemForInfo() { return new ItemStack(ModItems.missile_micro); }
|
@Override public ItemStack getMissileItemForInfo() { return new ItemStack(ModItems.missile_micro); }
|
||||||
}
|
}
|
||||||
@ -88,10 +90,10 @@ public abstract class EntityMissileTier0 extends EntityMissileBaseNT {
|
|||||||
public static class EntityMissileSchrabidium extends EntityMissileTier0 {
|
public static class EntityMissileSchrabidium extends EntityMissileTier0 {
|
||||||
public EntityMissileSchrabidium(World world) { super(world); }
|
public EntityMissileSchrabidium(World world) { super(world); }
|
||||||
public EntityMissileSchrabidium(World world, float x, float y, float z, int a, int b) { super(world, x, y, z, a, b); }
|
public EntityMissileSchrabidium(World world, float x, float y, float z, int a, int b) { super(world, x, y, z, a, b); }
|
||||||
@Override public void onImpact() {
|
@Override public void onMissileImpact(MovingObjectPosition mop) {
|
||||||
EntityNukeExplosionMK3 ex = EntityNukeExplosionMK3.statFacFleija(worldObj, posX, posY, posZ, BombConfig.aSchrabRadius);
|
EntityNukeExplosionMK3 ex = EntityNukeExplosionMK3.statFacFleija(worldObj, posX, posY, posZ, BombConfig.aSchrabRadius);
|
||||||
if(!ex.isDead) {
|
if(!ex.isDead) {
|
||||||
worldObj.spawnEntityInWorld(ex);
|
WorldUtil.loadAndSpawnEntityInWorld(ex);
|
||||||
EntityCloudFleija cloud = new EntityCloudFleija(this.worldObj, BombConfig.aSchrabRadius);
|
EntityCloudFleija cloud = new EntityCloudFleija(this.worldObj, BombConfig.aSchrabRadius);
|
||||||
cloud.posX = this.posX;
|
cloud.posX = this.posX;
|
||||||
cloud.posY = this.posY;
|
cloud.posY = this.posY;
|
||||||
@ -106,7 +108,7 @@ public abstract class EntityMissileTier0 extends EntityMissileBaseNT {
|
|||||||
public static class EntityMissileBHole extends EntityMissileTier0 {
|
public static class EntityMissileBHole extends EntityMissileTier0 {
|
||||||
public EntityMissileBHole(World world) { super(world); }
|
public EntityMissileBHole(World world) { super(world); }
|
||||||
public EntityMissileBHole(World world, float x, float y, float z, int a, int b) { super(world, x, y, z, a, b); }
|
public EntityMissileBHole(World world, float x, float y, float z, int a, int b) { super(world, x, y, z, a, b); }
|
||||||
@Override public void onImpact() {
|
@Override public void onMissileImpact(MovingObjectPosition mop) {
|
||||||
this.worldObj.createExplosion(this, this.posX, this.posY, this.posZ, 1.5F, true);
|
this.worldObj.createExplosion(this, this.posX, this.posY, this.posZ, 1.5F, true);
|
||||||
EntityBlackHole bl = new EntityBlackHole(this.worldObj, 1.5F);
|
EntityBlackHole bl = new EntityBlackHole(this.worldObj, 1.5F);
|
||||||
bl.posX = this.posX;
|
bl.posX = this.posX;
|
||||||
@ -121,15 +123,15 @@ public abstract class EntityMissileTier0 extends EntityMissileBaseNT {
|
|||||||
public static class EntityMissileTaint extends EntityMissileTier0 {
|
public static class EntityMissileTaint extends EntityMissileTier0 {
|
||||||
public EntityMissileTaint(World world) { super(world); }
|
public EntityMissileTaint(World world) { super(world); }
|
||||||
public EntityMissileTaint(World world, float x, float y, float z, int a, int b) { super(world, x, y, z, a, b); }
|
public EntityMissileTaint(World world, float x, float y, float z, int a, int b) { super(world, x, y, z, a, b); }
|
||||||
@Override public void onImpact() {
|
@Override public void onMissileImpact(MovingObjectPosition mop) {
|
||||||
this.worldObj.createExplosion(this, this.posX, this.posY, this.posZ, 10.0F, true);
|
this.worldObj.createExplosion(this, mop.hitVec.xCoord, mop.hitVec.yCoord, mop.hitVec.zCoord, 5.0F, true);
|
||||||
for(int i = 0; i < 100; i++) {
|
for(int i = 0; i < 100; i++) {
|
||||||
int a = rand.nextInt(11) + (int) this.posX - 5;
|
int a = rand.nextInt(11) + (int) mop.blockX - 5;
|
||||||
int b = rand.nextInt(11) + (int) this.posY - 5;
|
int b = rand.nextInt(11) + (int) mop.blockY - 5;
|
||||||
int c = rand.nextInt(11) + (int) this.posZ - 5;
|
int c = rand.nextInt(11) + (int) mop.blockZ - 5;
|
||||||
Block block = worldObj.getBlock(a, b, c);
|
Block block = worldObj.getBlock(a, b, c);
|
||||||
if(block.isNormalCube() && !block.isAir(worldObj, a, b, c)) {
|
if(block.isNormalCube() && !block.isAir(worldObj, a, b, c)) {
|
||||||
worldObj.setBlock(a, b, c, ModBlocks.taint, rand.nextInt(3) + 4, 2);
|
worldObj.setBlock(a, b, c, ModBlocks.taint, 0, 2);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -140,7 +142,7 @@ public abstract class EntityMissileTier0 extends EntityMissileBaseNT {
|
|||||||
public static class EntityMissileEMP extends EntityMissileTier0 {
|
public static class EntityMissileEMP extends EntityMissileTier0 {
|
||||||
public EntityMissileEMP(World world) { super(world); }
|
public EntityMissileEMP(World world) { super(world); }
|
||||||
public EntityMissileEMP(World world, float x, float y, float z, int a, int b) { super(world, x, y, z, a, b); }
|
public EntityMissileEMP(World world, float x, float y, float z, int a, int b) { super(world, x, y, z, a, b); }
|
||||||
@Override public void onImpact() {
|
@Override public void onMissileImpact(MovingObjectPosition mop) {
|
||||||
ExplosionNukeGeneric.empBlast(worldObj, (int)posX, (int)posY, (int)posZ, 50);
|
ExplosionNukeGeneric.empBlast(worldObj, (int)posX, (int)posY, (int)posZ, 50);
|
||||||
EntityEMPBlast wave = new EntityEMPBlast(worldObj, 50);
|
EntityEMPBlast wave = new EntityEMPBlast(worldObj, 50);
|
||||||
wave.posX = posX;
|
wave.posX = posX;
|
||||||
|
|||||||
@ -10,6 +10,7 @@ import com.hbm.particle.helper.ExplosionCreator;
|
|||||||
|
|
||||||
import api.hbm.entity.IRadarDetectableNT;
|
import api.hbm.entity.IRadarDetectableNT;
|
||||||
import net.minecraft.item.ItemStack;
|
import net.minecraft.item.ItemStack;
|
||||||
|
import net.minecraft.util.MovingObjectPosition;
|
||||||
import net.minecraft.world.World;
|
import net.minecraft.world.World;
|
||||||
|
|
||||||
public abstract class EntityMissileTier1 extends EntityMissileBaseNT {
|
public abstract class EntityMissileTier1 extends EntityMissileBaseNT {
|
||||||
@ -33,7 +34,7 @@ public abstract class EntityMissileTier1 extends EntityMissileBaseNT {
|
|||||||
public static class EntityMissileGeneric extends EntityMissileTier1 {
|
public static class EntityMissileGeneric extends EntityMissileTier1 {
|
||||||
public EntityMissileGeneric(World world) { super(world); }
|
public EntityMissileGeneric(World world) { super(world); }
|
||||||
public EntityMissileGeneric(World world, float x, float y, float z, int a, int b) { super(world, x, y, z, a, b); }
|
public EntityMissileGeneric(World world, float x, float y, float z, int a, int b) { super(world, x, y, z, a, b); }
|
||||||
@Override public void onImpact() { this.explodeStandard(15F, 24, false); ExplosionCreator.composeEffectSmall(worldObj, posX, posY, posZ); }
|
@Override public void onMissileImpact(MovingObjectPosition mop) { this.explodeStandard(15F, 24, false); ExplosionCreator.composeEffectSmall(worldObj, posX, posY, posZ); }
|
||||||
@Override public ItemStack getDebrisRareDrop() { return new ItemStack(ModItems.warhead_generic_small); }
|
@Override public ItemStack getDebrisRareDrop() { return new ItemStack(ModItems.warhead_generic_small); }
|
||||||
@Override public ItemStack getMissileItemForInfo() { return new ItemStack(ModItems.missile_generic); }
|
@Override public ItemStack getMissileItemForInfo() { return new ItemStack(ModItems.missile_generic); }
|
||||||
}
|
}
|
||||||
@ -41,7 +42,7 @@ public abstract class EntityMissileTier1 extends EntityMissileBaseNT {
|
|||||||
public static class EntityMissileDecoy extends EntityMissileTier1 {
|
public static class EntityMissileDecoy extends EntityMissileTier1 {
|
||||||
public EntityMissileDecoy(World world) { super(world); }
|
public EntityMissileDecoy(World world) { super(world); }
|
||||||
public EntityMissileDecoy(World world, float x, float y, float z, int a, int b) { super(world, x, y, z, a, b); }
|
public EntityMissileDecoy(World world, float x, float y, float z, int a, int b) { super(world, x, y, z, a, b); }
|
||||||
@Override public void onImpact() { worldObj.newExplosion(this, posX, posY, posZ, 4F, false, false); }
|
@Override public void onMissileImpact(MovingObjectPosition mop) { worldObj.newExplosion(this, posX, posY, posZ, 4F, false, false); }
|
||||||
@Override public ItemStack getDebrisRareDrop() { return new ItemStack(ModItems.ingot_steel); }
|
@Override public ItemStack getDebrisRareDrop() { return new ItemStack(ModItems.ingot_steel); }
|
||||||
@Override public String getUnlocalizedName() { return "radar.target.tier4"; }
|
@Override public String getUnlocalizedName() { return "radar.target.tier4"; }
|
||||||
@Override public int getBlipLevel() { return IRadarDetectableNT.TIER4; }
|
@Override public int getBlipLevel() { return IRadarDetectableNT.TIER4; }
|
||||||
@ -51,7 +52,7 @@ public abstract class EntityMissileTier1 extends EntityMissileBaseNT {
|
|||||||
public static class EntityMissileIncendiary extends EntityMissileTier1 {
|
public static class EntityMissileIncendiary extends EntityMissileTier1 {
|
||||||
public EntityMissileIncendiary(World world) { super(world); }
|
public EntityMissileIncendiary(World world) { super(world); }
|
||||||
public EntityMissileIncendiary(World world, float x, float y, float z, int a, int b) { super(world, x, y, z, a, b); }
|
public EntityMissileIncendiary(World world, float x, float y, float z, int a, int b) { super(world, x, y, z, a, b); }
|
||||||
@Override public void onImpact() { this.explodeStandard(15F, 24, true); ExplosionCreator.composeEffectSmall(worldObj, posX, posY, posZ); }
|
@Override public void onMissileImpact(MovingObjectPosition mop) { this.explodeStandard(15F, 24, true); ExplosionCreator.composeEffectSmall(worldObj, posX, posY, posZ); }
|
||||||
@Override public ItemStack getDebrisRareDrop() { return new ItemStack(ModItems.warhead_incendiary_small); }
|
@Override public ItemStack getDebrisRareDrop() { return new ItemStack(ModItems.warhead_incendiary_small); }
|
||||||
@Override public ItemStack getMissileItemForInfo() { return new ItemStack(ModItems.missile_incendiary); }
|
@Override public ItemStack getMissileItemForInfo() { return new ItemStack(ModItems.missile_incendiary); }
|
||||||
}
|
}
|
||||||
@ -59,11 +60,11 @@ public abstract class EntityMissileTier1 extends EntityMissileBaseNT {
|
|||||||
public static class EntityMissileCluster extends EntityMissileTier1 {
|
public static class EntityMissileCluster extends EntityMissileTier1 {
|
||||||
public EntityMissileCluster(World world) { super(world); }
|
public EntityMissileCluster(World world) { super(world); }
|
||||||
public EntityMissileCluster(World world, float x, float y, float z, int a, int b) { super(world, x, y, z, a, b); this.isCluster = true; }
|
public EntityMissileCluster(World world, float x, float y, float z, int a, int b) { super(world, x, y, z, a, b); this.isCluster = true; }
|
||||||
@Override public void onImpact() {
|
@Override public void onMissileImpact(MovingObjectPosition mop) {
|
||||||
this.worldObj.createExplosion(this, this.posX, this.posY, this.posZ, 5F, true);
|
this.worldObj.createExplosion(this, this.posX, this.posY, this.posZ, 5F, true);
|
||||||
ExplosionChaos.cluster(this.worldObj, (int)this.posX, (int)this.posY, (int)this.posZ, 25, 100);
|
ExplosionChaos.cluster(this.worldObj, (int)this.posX, (int)this.posY, (int)this.posZ, 25, 100);
|
||||||
}
|
}
|
||||||
@Override public void cluster() { this.onImpact(); }
|
@Override public void cluster() { this.onMissileImpact(null); }
|
||||||
@Override public ItemStack getDebrisRareDrop() { return new ItemStack(ModItems.warhead_cluster_small); }
|
@Override public ItemStack getDebrisRareDrop() { return new ItemStack(ModItems.warhead_cluster_small); }
|
||||||
@Override public ItemStack getMissileItemForInfo() { return new ItemStack(ModItems.missile_cluster); }
|
@Override public ItemStack getMissileItemForInfo() { return new ItemStack(ModItems.missile_cluster); }
|
||||||
}
|
}
|
||||||
@ -71,7 +72,7 @@ public abstract class EntityMissileTier1 extends EntityMissileBaseNT {
|
|||||||
public static class EntityMissileBunkerBuster extends EntityMissileTier1 {
|
public static class EntityMissileBunkerBuster extends EntityMissileTier1 {
|
||||||
public EntityMissileBunkerBuster(World world) { super(world); }
|
public EntityMissileBunkerBuster(World world) { super(world); }
|
||||||
public EntityMissileBunkerBuster(World world, float x, float y, float z, int a, int b) { super(world, x, y, z, a, b); }
|
public EntityMissileBunkerBuster(World world, float x, float y, float z, int a, int b) { super(world, x, y, z, a, b); }
|
||||||
@Override public void onImpact() {
|
@Override public void onMissileImpact(MovingObjectPosition mop) {
|
||||||
for(int i = 0; i < 15; i++) this.worldObj.createExplosion(this, this.posX, this.posY - i, this.posZ, 5F, true);
|
for(int i = 0; i < 15; i++) this.worldObj.createExplosion(this, this.posX, this.posY - i, this.posZ, 5F, true);
|
||||||
ExplosionLarge.spawnParticles(worldObj, this.posX, this.posY, this.posZ, 5);
|
ExplosionLarge.spawnParticles(worldObj, this.posX, this.posY, this.posZ, 5);
|
||||||
ExplosionLarge.spawnShrapnels(worldObj, this.posX, this.posY, this.posZ, 5);
|
ExplosionLarge.spawnShrapnels(worldObj, this.posX, this.posY, this.posZ, 5);
|
||||||
|
|||||||
@ -11,6 +11,7 @@ import com.hbm.particle.helper.ExplosionCreator;
|
|||||||
|
|
||||||
import api.hbm.entity.IRadarDetectableNT;
|
import api.hbm.entity.IRadarDetectableNT;
|
||||||
import net.minecraft.item.ItemStack;
|
import net.minecraft.item.ItemStack;
|
||||||
|
import net.minecraft.util.MovingObjectPosition;
|
||||||
import net.minecraft.world.World;
|
import net.minecraft.world.World;
|
||||||
|
|
||||||
public abstract class EntityMissileTier2 extends EntityMissileBaseNT {
|
public abstract class EntityMissileTier2 extends EntityMissileBaseNT {
|
||||||
@ -42,7 +43,7 @@ public abstract class EntityMissileTier2 extends EntityMissileBaseNT {
|
|||||||
public static class EntityMissileStrong extends EntityMissileTier2 {
|
public static class EntityMissileStrong extends EntityMissileTier2 {
|
||||||
public EntityMissileStrong(World world) { super(world); }
|
public EntityMissileStrong(World world) { super(world); }
|
||||||
public EntityMissileStrong(World world, float x, float y, float z, int a, int b) { super(world, x, y, z, a, b); }
|
public EntityMissileStrong(World world, float x, float y, float z, int a, int b) { super(world, x, y, z, a, b); }
|
||||||
@Override public void onImpact() { this.explodeStandard(30F, 32, false); ExplosionCreator.composeEffectStandard(worldObj, posX, posY, posZ); }
|
@Override public void onMissileImpact(MovingObjectPosition mop) { this.explodeStandard(30F, 32, false); ExplosionCreator.composeEffectStandard(worldObj, posX, posY, posZ); }
|
||||||
@Override public ItemStack getDebrisRareDrop() { return new ItemStack(ModItems.warhead_generic_medium); }
|
@Override public ItemStack getDebrisRareDrop() { return new ItemStack(ModItems.warhead_generic_medium); }
|
||||||
@Override public ItemStack getMissileItemForInfo() { return new ItemStack(ModItems.missile_strong); }
|
@Override public ItemStack getMissileItemForInfo() { return new ItemStack(ModItems.missile_strong); }
|
||||||
}
|
}
|
||||||
@ -50,7 +51,7 @@ public abstract class EntityMissileTier2 extends EntityMissileBaseNT {
|
|||||||
public static class EntityMissileIncendiaryStrong extends EntityMissileTier2 {
|
public static class EntityMissileIncendiaryStrong extends EntityMissileTier2 {
|
||||||
public EntityMissileIncendiaryStrong(World world) { super(world); }
|
public EntityMissileIncendiaryStrong(World world) { super(world); }
|
||||||
public EntityMissileIncendiaryStrong(World world, float x, float y, float z, int a, int b) { super(world, x, y, z, a, b); }
|
public EntityMissileIncendiaryStrong(World world, float x, float y, float z, int a, int b) { super(world, x, y, z, a, b); }
|
||||||
@Override public void onImpact() {
|
@Override public void onMissileImpact(MovingObjectPosition mop) {
|
||||||
this.explodeStandard(30F, 32, true);
|
this.explodeStandard(30F, 32, true);
|
||||||
ExplosionCreator.composeEffectStandard(worldObj, posX, posY, posZ);
|
ExplosionCreator.composeEffectStandard(worldObj, posX, posY, posZ);
|
||||||
ExplosionChaos.flameDeath(this.worldObj, (int)((float)this.posX + 0.5F), (int)((float)this.posY + 0.5F), (int)((float)this.posZ + 0.5F), 25);
|
ExplosionChaos.flameDeath(this.worldObj, (int)((float)this.posX + 0.5F), (int)((float)this.posY + 0.5F), (int)((float)this.posZ + 0.5F), 25);
|
||||||
@ -62,11 +63,11 @@ public abstract class EntityMissileTier2 extends EntityMissileBaseNT {
|
|||||||
public static class EntityMissileClusterStrong extends EntityMissileTier2 {
|
public static class EntityMissileClusterStrong extends EntityMissileTier2 {
|
||||||
public EntityMissileClusterStrong(World world) { super(world); }
|
public EntityMissileClusterStrong(World world) { super(world); }
|
||||||
public EntityMissileClusterStrong(World world, float x, float y, float z, int a, int b) { super(world, x, y, z, a, b); this.isCluster = true; }
|
public EntityMissileClusterStrong(World world, float x, float y, float z, int a, int b) { super(world, x, y, z, a, b); this.isCluster = true; }
|
||||||
@Override public void onImpact() {
|
@Override public void onMissileImpact(MovingObjectPosition mop) {
|
||||||
this.worldObj.createExplosion(this, this.posX, this.posY, this.posZ, 15F, true);
|
this.worldObj.createExplosion(this, this.posX, this.posY, this.posZ, 15F, true);
|
||||||
ExplosionChaos.cluster(this.worldObj, (int)this.posX, (int)this.posY, (int)this.posZ, 50, 100);
|
ExplosionChaos.cluster(this.worldObj, (int)this.posX, (int)this.posY, (int)this.posZ, 50, 100);
|
||||||
}
|
}
|
||||||
@Override public void cluster() { this.onImpact(); }
|
@Override public void cluster() { this.onMissileImpact(null); }
|
||||||
@Override public ItemStack getDebrisRareDrop() { return new ItemStack(ModItems.warhead_cluster_medium); }
|
@Override public ItemStack getDebrisRareDrop() { return new ItemStack(ModItems.warhead_cluster_medium); }
|
||||||
@Override public ItemStack getMissileItemForInfo() { return new ItemStack(ModItems.missile_cluster_strong); }
|
@Override public ItemStack getMissileItemForInfo() { return new ItemStack(ModItems.missile_cluster_strong); }
|
||||||
}
|
}
|
||||||
@ -74,7 +75,7 @@ public abstract class EntityMissileTier2 extends EntityMissileBaseNT {
|
|||||||
public static class EntityMissileBusterStrong extends EntityMissileTier2 {
|
public static class EntityMissileBusterStrong extends EntityMissileTier2 {
|
||||||
public EntityMissileBusterStrong(World world) { super(world); }
|
public EntityMissileBusterStrong(World world) { super(world); }
|
||||||
public EntityMissileBusterStrong(World world, float x, float y, float z, int a, int b) { super(world, x, y, z, a, b); }
|
public EntityMissileBusterStrong(World world, float x, float y, float z, int a, int b) { super(world, x, y, z, a, b); }
|
||||||
@Override public void onImpact() {
|
@Override public void onMissileImpact(MovingObjectPosition mop) {
|
||||||
for(int i = 0; i < 20; i++) this.worldObj.createExplosion(this, this.posX, this.posY - i, this.posZ, 7.5F, true);
|
for(int i = 0; i < 20; i++) this.worldObj.createExplosion(this, this.posX, this.posY - i, this.posZ, 7.5F, true);
|
||||||
ExplosionLarge.spawnParticles(worldObj, this.posX, this.posY, this.posZ, 8);
|
ExplosionLarge.spawnParticles(worldObj, this.posX, this.posY, this.posZ, 8);
|
||||||
ExplosionLarge.spawnShrapnels(worldObj, this.posX, this.posY, this.posZ, 8);
|
ExplosionLarge.spawnShrapnels(worldObj, this.posX, this.posY, this.posZ, 8);
|
||||||
@ -87,7 +88,7 @@ public abstract class EntityMissileTier2 extends EntityMissileBaseNT {
|
|||||||
public static class EntityMissileEMPStrong extends EntityMissileTier2 {
|
public static class EntityMissileEMPStrong extends EntityMissileTier2 {
|
||||||
public EntityMissileEMPStrong(World world) { super(world); }
|
public EntityMissileEMPStrong(World world) { super(world); }
|
||||||
public EntityMissileEMPStrong(World world, float x, float y, float z, int a, int b) { super(world, x, y, z, a, b); }
|
public EntityMissileEMPStrong(World world, float x, float y, float z, int a, int b) { super(world, x, y, z, a, b); }
|
||||||
@Override public void onImpact() {
|
@Override public void onMissileImpact(MovingObjectPosition mop) {
|
||||||
EntityEMP emp = new EntityEMP(worldObj);
|
EntityEMP emp = new EntityEMP(worldObj);
|
||||||
emp.posX = posX;
|
emp.posX = posX;
|
||||||
emp.posY = posY;
|
emp.posY = posY;
|
||||||
|
|||||||
@ -12,6 +12,7 @@ import com.hbm.particle.helper.ExplosionCreator;
|
|||||||
|
|
||||||
import api.hbm.entity.IRadarDetectableNT;
|
import api.hbm.entity.IRadarDetectableNT;
|
||||||
import net.minecraft.item.ItemStack;
|
import net.minecraft.item.ItemStack;
|
||||||
|
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;
|
||||||
|
|
||||||
@ -58,7 +59,7 @@ public abstract class EntityMissileTier3 extends EntityMissileBaseNT {
|
|||||||
public static class EntityMissileBurst extends EntityMissileTier3 {
|
public static class EntityMissileBurst extends EntityMissileTier3 {
|
||||||
public EntityMissileBurst(World world) { super(world); }
|
public EntityMissileBurst(World world) { super(world); }
|
||||||
public EntityMissileBurst(World world, float x, float y, float z, int a, int b) { super(world, x, y, z, a, b); }
|
public EntityMissileBurst(World world, float x, float y, float z, int a, int b) { super(world, x, y, z, a, b); }
|
||||||
@Override public void onImpact() {
|
@Override public void onMissileImpact(MovingObjectPosition mop) {
|
||||||
this.explodeStandard(50F, 48, false);
|
this.explodeStandard(50F, 48, false);
|
||||||
ExplosionCreator.composeEffectLarge(worldObj, posX, posY, posZ);
|
ExplosionCreator.composeEffectLarge(worldObj, posX, posY, posZ);
|
||||||
}
|
}
|
||||||
@ -69,7 +70,7 @@ public abstract class EntityMissileTier3 extends EntityMissileBaseNT {
|
|||||||
public static class EntityMissileInferno extends EntityMissileTier3 {
|
public static class EntityMissileInferno extends EntityMissileTier3 {
|
||||||
public EntityMissileInferno(World world) { super(world); }
|
public EntityMissileInferno(World world) { super(world); }
|
||||||
public EntityMissileInferno(World world, float x, float y, float z, int a, int b) { super(world, x, y, z, a, b); }
|
public EntityMissileInferno(World world, float x, float y, float z, int a, int b) { super(world, x, y, z, a, b); }
|
||||||
@Override public void onImpact() {
|
@Override public void onMissileImpact(MovingObjectPosition mop) {
|
||||||
this.explodeStandard(50F, 48, true);
|
this.explodeStandard(50F, 48, true);
|
||||||
ExplosionCreator.composeEffectLarge(worldObj, posX, posY, posZ);
|
ExplosionCreator.composeEffectLarge(worldObj, posX, posY, posZ);
|
||||||
ExplosionChaos.burn(this.worldObj, (int)this.posX, (int)this.posY, (int)this.posZ, 10);
|
ExplosionChaos.burn(this.worldObj, (int)this.posX, (int)this.posY, (int)this.posZ, 10);
|
||||||
@ -82,11 +83,11 @@ public abstract class EntityMissileTier3 extends EntityMissileBaseNT {
|
|||||||
public static class EntityMissileRain extends EntityMissileTier3 {
|
public static class EntityMissileRain extends EntityMissileTier3 {
|
||||||
public EntityMissileRain(World world) { super(world); }
|
public EntityMissileRain(World world) { super(world); }
|
||||||
public EntityMissileRain(World world, float x, float y, float z, int a, int b) { super(world, x, y, z, a, b); this.isCluster = true; }
|
public EntityMissileRain(World world, float x, float y, float z, int a, int b) { super(world, x, y, z, a, b); this.isCluster = true; }
|
||||||
@Override public void onImpact() {
|
@Override public void onMissileImpact(MovingObjectPosition mop) {
|
||||||
this.worldObj.createExplosion(this, this.posX, this.posY, this.posZ, 25F, true);
|
this.worldObj.createExplosion(this, this.posX, this.posY, this.posZ, 25F, true);
|
||||||
ExplosionChaos.cluster(this.worldObj, (int)this.posX, (int)this.posY, (int)this.posZ, 100, 100);
|
ExplosionChaos.cluster(this.worldObj, (int)this.posX, (int)this.posY, (int)this.posZ, 100, 100);
|
||||||
}
|
}
|
||||||
@Override public void cluster() { this.onImpact(); }
|
@Override public void cluster() { this.onMissileImpact(null); }
|
||||||
@Override public ItemStack getDebrisRareDrop() { return new ItemStack(ModItems.warhead_cluster_large); }
|
@Override public ItemStack getDebrisRareDrop() { return new ItemStack(ModItems.warhead_cluster_large); }
|
||||||
@Override public ItemStack getMissileItemForInfo() { return new ItemStack(ModItems.missile_rain); }
|
@Override public ItemStack getMissileItemForInfo() { return new ItemStack(ModItems.missile_rain); }
|
||||||
}
|
}
|
||||||
@ -94,7 +95,7 @@ public abstract class EntityMissileTier3 extends EntityMissileBaseNT {
|
|||||||
public static class EntityMissileDrill extends EntityMissileTier3 {
|
public static class EntityMissileDrill extends EntityMissileTier3 {
|
||||||
public EntityMissileDrill(World world) { super(world); }
|
public EntityMissileDrill(World world) { super(world); }
|
||||||
public EntityMissileDrill(World world, float x, float y, float z, int a, int b) { super(world, x, y, z, a, b); }
|
public EntityMissileDrill(World world, float x, float y, float z, int a, int b) { super(world, x, y, z, a, b); }
|
||||||
@Override public void onImpact() {
|
@Override public void onMissileImpact(MovingObjectPosition mop) {
|
||||||
for(int i = 0; i < 30; i++) {
|
for(int i = 0; i < 30; i++) {
|
||||||
ExplosionNT explosion = new ExplosionNT(worldObj, this, this.posX, this.posY - i, this.posZ, 10F);
|
ExplosionNT explosion = new ExplosionNT(worldObj, this, this.posX, this.posY - i, this.posZ, 10F);
|
||||||
explosion.addAllAttrib(ExAttrib.ERRODE);
|
explosion.addAllAttrib(ExAttrib.ERRODE);
|
||||||
|
|||||||
@ -9,9 +9,11 @@ import com.hbm.entity.effect.EntityNukeTorex;
|
|||||||
import com.hbm.entity.logic.EntityNukeExplosionMK5;
|
import com.hbm.entity.logic.EntityNukeExplosionMK5;
|
||||||
import com.hbm.explosion.ExplosionLarge;
|
import com.hbm.explosion.ExplosionLarge;
|
||||||
import com.hbm.items.ModItems;
|
import com.hbm.items.ModItems;
|
||||||
|
import com.hbm.world.WorldUtil;
|
||||||
|
|
||||||
import api.hbm.entity.IRadarDetectableNT;
|
import api.hbm.entity.IRadarDetectableNT;
|
||||||
import net.minecraft.item.ItemStack;
|
import net.minecraft.item.ItemStack;
|
||||||
|
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;
|
||||||
|
|
||||||
@ -63,8 +65,8 @@ public abstract class EntityMissileTier4 extends EntityMissileBaseNT {
|
|||||||
public static class EntityMissileNuclear extends EntityMissileTier4 {
|
public static class EntityMissileNuclear extends EntityMissileTier4 {
|
||||||
public EntityMissileNuclear(World world) { super(world); }
|
public EntityMissileNuclear(World world) { super(world); }
|
||||||
public EntityMissileNuclear(World world, float x, float y, float z, int a, int b) { super(world, x, y, z, a, b); }
|
public EntityMissileNuclear(World world, float x, float y, float z, int a, int b) { super(world, x, y, z, a, b); }
|
||||||
@Override public void onImpact() {
|
@Override public void onMissileImpact(MovingObjectPosition mop) {
|
||||||
this.worldObj.spawnEntityInWorld(EntityNukeExplosionMK5.statFac(worldObj, BombConfig.missileRadius, posX, posY, posZ));
|
WorldUtil.loadAndSpawnEntityInWorld(EntityNukeExplosionMK5.statFac(worldObj, BombConfig.missileRadius, posX, posY, posZ));
|
||||||
EntityNukeTorex.statFacStandard(worldObj, posX, posY, posZ, BombConfig.missileRadius);
|
EntityNukeTorex.statFacStandard(worldObj, posX, posY, posZ, BombConfig.missileRadius);
|
||||||
}
|
}
|
||||||
@Override public ItemStack getDebrisRareDrop() { return new ItemStack(ModItems.warhead_nuclear); }
|
@Override public ItemStack getDebrisRareDrop() { return new ItemStack(ModItems.warhead_nuclear); }
|
||||||
@ -74,8 +76,8 @@ public abstract class EntityMissileTier4 extends EntityMissileBaseNT {
|
|||||||
public static class EntityMissileMirv extends EntityMissileTier4 {
|
public static class EntityMissileMirv extends EntityMissileTier4 {
|
||||||
public EntityMissileMirv(World world) { super(world); }
|
public EntityMissileMirv(World world) { super(world); }
|
||||||
public EntityMissileMirv(World world, float x, float y, float z, int a, int b) { super(world, x, y, z, a, b); }
|
public EntityMissileMirv(World world, float x, float y, float z, int a, int b) { super(world, x, y, z, a, b); }
|
||||||
@Override public void onImpact() {
|
@Override public void onMissileImpact(MovingObjectPosition mop) {
|
||||||
worldObj.spawnEntityInWorld(EntityNukeExplosionMK5.statFac(worldObj, BombConfig.missileRadius * 2, posX, posY, posZ));
|
WorldUtil.loadAndSpawnEntityInWorld(EntityNukeExplosionMK5.statFac(worldObj, BombConfig.missileRadius * 2, posX, posY, posZ));
|
||||||
EntityNukeTorex.statFacStandard(worldObj, posX, posY, posZ, BombConfig.missileRadius * 2);
|
EntityNukeTorex.statFacStandard(worldObj, posX, posY, posZ, BombConfig.missileRadius * 2);
|
||||||
}
|
}
|
||||||
@Override public List<ItemStack> getDebris() {
|
@Override public List<ItemStack> getDebris() {
|
||||||
@ -93,7 +95,7 @@ public abstract class EntityMissileTier4 extends EntityMissileBaseNT {
|
|||||||
public static class EntityMissileVolcano extends EntityMissileTier4 {
|
public static class EntityMissileVolcano extends EntityMissileTier4 {
|
||||||
public EntityMissileVolcano(World world) { super(world); }
|
public EntityMissileVolcano(World world) { super(world); }
|
||||||
public EntityMissileVolcano(World world, float x, float y, float z, int a, int b) { super(world, x, y, z, a, b); }
|
public EntityMissileVolcano(World world, float x, float y, float z, int a, int b) { super(world, x, y, z, a, b); }
|
||||||
@Override public void onImpact() {
|
@Override public void onMissileImpact(MovingObjectPosition mop) {
|
||||||
ExplosionLarge.explode(worldObj, posX, posY, posZ, 10.0F, true, true, true);
|
ExplosionLarge.explode(worldObj, posX, posY, posZ, 10.0F, true, true, true);
|
||||||
for(int x = -1; x <= 1; x++) for(int y = -1; y <= 1; y++) for(int z = -1; z <= 1; z++) worldObj.setBlock((int)Math.floor(posX + x), (int)Math.floor(posY + y), (int)Math.floor(posZ + z), ModBlocks.volcanic_lava_block);
|
for(int x = -1; x <= 1; x++) for(int y = -1; y <= 1; y++) for(int z = -1; z <= 1; z++) worldObj.setBlock((int)Math.floor(posX + x), (int)Math.floor(posY + y), (int)Math.floor(posZ + z), ModBlocks.volcanic_lava_block);
|
||||||
worldObj.setBlock((int)Math.floor(posX), (int)Math.floor(posY), (int)Math.floor(posZ), ModBlocks.volcano_core);
|
worldObj.setBlock((int)Math.floor(posX), (int)Math.floor(posY), (int)Math.floor(posZ), ModBlocks.volcano_core);
|
||||||
@ -105,8 +107,8 @@ public abstract class EntityMissileTier4 extends EntityMissileBaseNT {
|
|||||||
public static class EntityMissileDoomsday extends EntityMissileTier4 {
|
public static class EntityMissileDoomsday extends EntityMissileTier4 {
|
||||||
public EntityMissileDoomsday(World world) { super(world); }
|
public EntityMissileDoomsday(World world) { super(world); }
|
||||||
public EntityMissileDoomsday(World world, float x, float y, float z, int a, int b) { super(world, x, y, z, a, b); }
|
public EntityMissileDoomsday(World world, float x, float y, float z, int a, int b) { super(world, x, y, z, a, b); }
|
||||||
@Override public void onImpact() {
|
@Override public void onMissileImpact(MovingObjectPosition mop) {
|
||||||
this.worldObj.spawnEntityInWorld(EntityNukeExplosionMK5.statFac(worldObj, BombConfig.missileRadius * 2, posX, posY, posZ).moreFallout(100));
|
WorldUtil.loadAndSpawnEntityInWorld(EntityNukeExplosionMK5.statFac(worldObj, BombConfig.missileRadius * 2, posX, posY, posZ).moreFallout(100));
|
||||||
EntityNukeTorex.statFacStandard(worldObj, posX, posY, posZ, BombConfig.missileRadius * 2);
|
EntityNukeTorex.statFacStandard(worldObj, posX, posY, posZ, BombConfig.missileRadius * 2);
|
||||||
}
|
}
|
||||||
@Override public List<ItemStack> getDebris() { return null; }
|
@Override public List<ItemStack> getDebris() { return null; }
|
||||||
@ -118,8 +120,8 @@ public abstract class EntityMissileTier4 extends EntityMissileBaseNT {
|
|||||||
public static class EntityMissileDoomsdayRusted extends EntityMissileDoomsday {
|
public static class EntityMissileDoomsdayRusted extends EntityMissileDoomsday {
|
||||||
public EntityMissileDoomsdayRusted(World world) { super(world); }
|
public EntityMissileDoomsdayRusted(World world) { super(world); }
|
||||||
public EntityMissileDoomsdayRusted(World world, float x, float y, float z, int a, int b) { super(world, x, y, z, a, b); }
|
public EntityMissileDoomsdayRusted(World world, float x, float y, float z, int a, int b) { super(world, x, y, z, a, b); }
|
||||||
@Override public void onImpact() {
|
@Override public void onMissileImpact(MovingObjectPosition mop) {
|
||||||
this.worldObj.spawnEntityInWorld(EntityNukeExplosionMK5.statFac(worldObj, BombConfig.missileRadius, posX, posY, posZ).moreFallout(100));
|
WorldUtil.loadAndSpawnEntityInWorld(EntityNukeExplosionMK5.statFac(worldObj, BombConfig.missileRadius, posX, posY, posZ).moreFallout(100));
|
||||||
EntityNukeTorex.statFacStandard(worldObj, posX, posY, posZ, BombConfig.missileRadius);
|
EntityNukeTorex.statFacStandard(worldObj, posX, posY, posZ, BombConfig.missileRadius);
|
||||||
}
|
}
|
||||||
@Override public ItemStack getMissileItemForInfo() { return new ItemStack(ModItems.missile_doomsday_rusted); }
|
@Override public ItemStack getMissileItemForInfo() { return new ItemStack(ModItems.missile_doomsday_rusted); }
|
||||||
|
|||||||
@ -7,6 +7,7 @@ import com.hbm.handler.radiation.ChunkRadiationManager;
|
|||||||
import com.hbm.handler.threading.PacketThreading;
|
import com.hbm.handler.threading.PacketThreading;
|
||||||
import com.hbm.main.MainRegistry;
|
import com.hbm.main.MainRegistry;
|
||||||
import com.hbm.packet.toclient.AuxParticlePacketNT;
|
import com.hbm.packet.toclient.AuxParticlePacketNT;
|
||||||
|
import com.hbm.world.WorldUtil;
|
||||||
|
|
||||||
import cpw.mods.fml.common.network.NetworkRegistry.TargetPoint;
|
import cpw.mods.fml.common.network.NetworkRegistry.TargetPoint;
|
||||||
import net.minecraft.nbt.NBTTagCompound;
|
import net.minecraft.nbt.NBTTagCompound;
|
||||||
@ -33,7 +34,7 @@ import net.minecraft.world.World;
|
|||||||
if(params.shrapnelCount > 0) ExplosionLarge.spawnShrapnels(world, posX, posY, posZ, params.shrapnelCount);
|
if(params.shrapnelCount > 0) ExplosionLarge.spawnShrapnels(world, posX, posY, posZ, params.shrapnelCount);
|
||||||
if(params.miniNuke && !params.safe) new ExplosionNT(world, null, posX, posY, posZ, params.blastRadius).addAllAttrib(params.explosionAttribs).overrideResolution(params.resolution).explode();
|
if(params.miniNuke && !params.safe) new ExplosionNT(world, null, posX, posY, posZ, params.blastRadius).addAllAttrib(params.explosionAttribs).overrideResolution(params.resolution).explode();
|
||||||
if(params.killRadius > 0) ExplosionNukeGeneric.dealDamage(world, posX, posY, posZ, params.killRadius);
|
if(params.killRadius > 0) ExplosionNukeGeneric.dealDamage(world, posX, posY, posZ, params.killRadius);
|
||||||
if(!params.miniNuke) world.spawnEntityInWorld(EntityNukeExplosionMK5.statFac(world, (int) params.blastRadius, posX, posY, posZ));
|
if(!params.miniNuke) WorldUtil.loadAndSpawnEntityInWorld(EntityNukeExplosionMK5.statFac(world, (int) params.blastRadius, posX, posY, posZ));
|
||||||
|
|
||||||
if(params.miniNuke) {
|
if(params.miniNuke) {
|
||||||
float radMod = params.radiationLevel / 3F;
|
float radMod = params.radiationLevel / 3F;
|
||||||
|
|||||||
@ -51,6 +51,7 @@ public class HbmLivingProps implements IExtendedEntityProperties {
|
|||||||
public int fire;
|
public int fire;
|
||||||
public int phosphorus;
|
public int phosphorus;
|
||||||
public int balefire;
|
public int balefire;
|
||||||
|
public int blackFire;
|
||||||
private List<ContaminationEffect> contamination = new ArrayList();
|
private List<ContaminationEffect> contamination = new ArrayList();
|
||||||
|
|
||||||
public HbmLivingProps(EntityLivingBase entity) {
|
public HbmLivingProps(EntityLivingBase entity) {
|
||||||
@ -320,6 +321,7 @@ public class HbmLivingProps implements IExtendedEntityProperties {
|
|||||||
props.setInteger("hfr_fire", fire);
|
props.setInteger("hfr_fire", fire);
|
||||||
props.setInteger("hfr_phosphorus", phosphorus);
|
props.setInteger("hfr_phosphorus", phosphorus);
|
||||||
props.setInteger("hfr_balefire", balefire);
|
props.setInteger("hfr_balefire", balefire);
|
||||||
|
props.setInteger("hfr_blackfire", blackFire);
|
||||||
|
|
||||||
props.setInteger("hfr_cont_count", this.contamination.size());
|
props.setInteger("hfr_cont_count", this.contamination.size());
|
||||||
|
|
||||||
@ -347,6 +349,7 @@ public class HbmLivingProps implements IExtendedEntityProperties {
|
|||||||
fire = props.getInteger("hfr_fire");
|
fire = props.getInteger("hfr_fire");
|
||||||
phosphorus = props.getInteger("hfr_phosphorus");
|
phosphorus = props.getInteger("hfr_phosphorus");
|
||||||
balefire = props.getInteger("hfr_balefire");
|
balefire = props.getInteger("hfr_balefire");
|
||||||
|
blackFire = props.getInteger("hfr_blackfire");
|
||||||
|
|
||||||
int cont = props.getInteger("hfr_cont_count");
|
int cont = props.getInteger("hfr_cont_count");
|
||||||
|
|
||||||
|
|||||||
@ -668,6 +668,14 @@ public class EntityEffectHandler {
|
|||||||
FlameCreator.composeEffect(entity.worldObj, x - living.width / 2 + living.width * rand.nextDouble(), y + rand.nextDouble() * living.height, z - living.width / 2 + living.width * rand.nextDouble(), FlameCreator.META_BALEFIRE);
|
FlameCreator.composeEffect(entity.worldObj, x - living.width / 2 + living.width * rand.nextDouble(), y + rand.nextDouble() * living.height, z - living.width / 2 + living.width * rand.nextDouble(), FlameCreator.META_BALEFIRE);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if(props.blackFire > 0) {
|
||||||
|
props.blackFire--;
|
||||||
|
if((living.ticksExisted + living.getEntityId()) % 10 == 0) living.worldObj.playSoundEffect(living.posX, living.posY + living.height / 2, living.posZ, "random.fizz", 1F, 1.5F + rand.nextFloat() * 0.5F);
|
||||||
|
ContaminationUtil.contaminate(living, HazardType.RADIATION, ContaminationType.CREATIVE, 5F);
|
||||||
|
if((living.ticksExisted + living.getEntityId()) % 10 == 0) living.attackEntityFrom(DamageSource.onFire, 10F);
|
||||||
|
FlameCreator.composeEffect(entity.worldObj, x - living.width / 2 + living.width * rand.nextDouble(), y + rand.nextDouble() * living.height, z - living.width / 2 + living.width * rand.nextDouble(), FlameCreator.META_BLACK);
|
||||||
|
}
|
||||||
|
|
||||||
if(props.fire > 0 || props.phosphorus > 0 || props.balefire > 0) if(!entity.isEntityAlive()) ConfettiUtil.decideConfetti(living, DamageSource.onFire);
|
if(props.fire > 0 || props.phosphorus > 0 || props.balefire > 0) if(!entity.isEntityAlive()) ConfettiUtil.decideConfetti(living, DamageSource.onFire);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@ -431,6 +431,10 @@ public class AmmoPressRecipes extends SerializableRecipe {
|
|||||||
null, he.copy(8), null,
|
null, he.copy(8), null,
|
||||||
null, sBig.copy(2), null,
|
null, sBig.copy(2), null,
|
||||||
null, sPlate.copy(4), null));
|
null, sPlate.copy(4), null));
|
||||||
|
recipes.add(new AmmoPressRecipe(DictFrame.fromOne(ModItems.ammo_standard, EnumAmmo.NUKE_BALEFIRE, 1),
|
||||||
|
null, new ComparableStack(ModItems.egg_balefire_shard), null,
|
||||||
|
null, shell, null,
|
||||||
|
null, null , null));
|
||||||
|
|
||||||
recipes.add(new AmmoPressRecipe(DictFrame.fromOne(ModItems.ammo_standard, EnumAmmo.CT_HOOK, 16),
|
recipes.add(new AmmoPressRecipe(DictFrame.fromOne(ModItems.ammo_standard, EnumAmmo.CT_HOOK, 16),
|
||||||
null, steel, null,
|
null, steel, null,
|
||||||
|
|||||||
@ -24,6 +24,7 @@ import com.hbm.inventory.material.Mats;
|
|||||||
import com.hbm.inventory.material.Mats.MaterialStack;
|
import com.hbm.inventory.material.Mats.MaterialStack;
|
||||||
import com.hbm.inventory.recipes.loader.SerializableRecipe;
|
import com.hbm.inventory.recipes.loader.SerializableRecipe;
|
||||||
import com.hbm.items.ItemEnums.EnumAshType;
|
import com.hbm.items.ItemEnums.EnumAshType;
|
||||||
|
import com.hbm.items.ItemEnums.EnumChunkType;
|
||||||
import com.hbm.items.ItemEnums.EnumPlantType;
|
import com.hbm.items.ItemEnums.EnumPlantType;
|
||||||
import com.hbm.items.ItemEnums.EnumTarType;
|
import com.hbm.items.ItemEnums.EnumTarType;
|
||||||
import com.hbm.items.ModItems;
|
import com.hbm.items.ModItems;
|
||||||
@ -240,6 +241,8 @@ public class CrystallizerRecipes extends SerializableRecipe {
|
|||||||
if(dustCinnabar != null && !dustCinnabar.isEmpty()) {
|
if(dustCinnabar != null && !dustCinnabar.isEmpty()) {
|
||||||
registerRecipe(CINNABAR.dust(), new CrystallizerRecipe(new ItemStack(ModItems.cinnebar), utilityTime), new FluidStack(Fluids.PEROXIDE, 50));
|
registerRecipe(CINNABAR.dust(), new CrystallizerRecipe(new ItemStack(ModItems.cinnebar), utilityTime), new FluidStack(Fluids.PEROXIDE, 50));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
registerRecipe(new ComparableStack(ModBlocks.moon_turf, 16), new CrystallizerRecipe(new ItemStack(ModItems.chunk_ore, 1, EnumChunkType.MOONSTONE.ordinal()), 1200));
|
||||||
|
|
||||||
if(!IMCCrystallizer.buffer.isEmpty()) {
|
if(!IMCCrystallizer.buffer.isEmpty()) {
|
||||||
recipes.putAll(IMCCrystallizer.buffer);
|
recipes.putAll(IMCCrystallizer.buffer);
|
||||||
|
|||||||
@ -15,6 +15,7 @@ import com.hbm.inventory.RecipesCommon.AStack;
|
|||||||
import com.hbm.inventory.RecipesCommon.ComparableStack;
|
import com.hbm.inventory.RecipesCommon.ComparableStack;
|
||||||
import com.hbm.inventory.RecipesCommon.OreDictStack;
|
import com.hbm.inventory.RecipesCommon.OreDictStack;
|
||||||
import com.hbm.inventory.recipes.loader.SerializableRecipe;
|
import com.hbm.inventory.recipes.loader.SerializableRecipe;
|
||||||
|
import com.hbm.items.ItemEnums.EnumChunkType;
|
||||||
import com.hbm.items.ItemEnums.EnumSecretType;
|
import com.hbm.items.ItemEnums.EnumSecretType;
|
||||||
import com.hbm.items.food.ItemConserve.EnumFoodType;
|
import com.hbm.items.food.ItemConserve.EnumFoodType;
|
||||||
import com.hbm.items.ModItems;
|
import com.hbm.items.ModItems;
|
||||||
@ -94,9 +95,9 @@ public class PedestalRecipes extends SerializableRecipe {
|
|||||||
.extra(PedestalExtraCondition.GOOD_KARMA).set(1));
|
.extra(PedestalExtraCondition.GOOD_KARMA).set(1));
|
||||||
|
|
||||||
register(new PedestalRecipe(new ItemStack(ModItems.ammo_secret, 1, EnumAmmoSecret.FOLLY_SM.ordinal()),
|
register(new PedestalRecipe(new ItemStack(ModItems.ammo_secret, 1, EnumAmmoSecret.FOLLY_SM.ordinal()),
|
||||||
new OreDictStack(STAR.ingot(), 1), new ComparableStack(ModItems.powder_magic), new OreDictStack(STAR.ingot(), 1),
|
new OreDictStack(STAR.ingot(), 1), new ComparableStack(ModItems.powder_magic), new OreDictStack(STAR.ingot(), 1),
|
||||||
new ComparableStack(ModItems.powder_magic), new ComparableStack(ModBlocks.moon_turf), new ComparableStack(ModItems.powder_magic),
|
new ComparableStack(ModItems.powder_magic), new ComparableStack(ModItems.chunk_ore, 1, EnumChunkType.MOONSTONE), new ComparableStack(ModItems.powder_magic),
|
||||||
new OreDictStack(STAR.ingot(), 1), new ComparableStack(ModItems.powder_magic), new OreDictStack(STAR.ingot(), 1))
|
new OreDictStack(STAR.ingot(), 1), new ComparableStack(ModItems.powder_magic), new OreDictStack(STAR.ingot(), 1))
|
||||||
.extra(PedestalExtraCondition.FULL_MOON).set(1));
|
.extra(PedestalExtraCondition.FULL_MOON).set(1));
|
||||||
register(new PedestalRecipe(new ItemStack(ModItems.ammo_secret, 1, EnumAmmoSecret.FOLLY_NUKE.ordinal()),
|
register(new PedestalRecipe(new ItemStack(ModItems.ammo_secret, 1, EnumAmmoSecret.FOLLY_NUKE.ordinal()),
|
||||||
new OreDictStack(STAR.ingot(), 1), new ComparableStack(ModItems.powder_magic), new OreDictStack(STAR.ingot(), 1),
|
new OreDictStack(STAR.ingot(), 1), new ComparableStack(ModItems.powder_magic), new OreDictStack(STAR.ingot(), 1),
|
||||||
@ -107,6 +108,10 @@ public class PedestalRecipes extends SerializableRecipe {
|
|||||||
null, null, null,
|
null, null, null,
|
||||||
null, new ComparableStack(ModItems.item_secret, 1, EnumSecretType.ABERRATOR), null,
|
null, new ComparableStack(ModItems.item_secret, 1, EnumSecretType.ABERRATOR), null,
|
||||||
null, null, null).set(1));
|
null, null, null).set(1));
|
||||||
|
register(new PedestalRecipe(new ItemStack(ModItems.ammo_secret, 10, EnumAmmoSecret.P35_800_BL.ordinal()),
|
||||||
|
null, null, null,
|
||||||
|
null, new ComparableStack(ModItems.item_secret, 3, EnumSecretType.ABERRATOR), null,
|
||||||
|
null, null, null).set(1));
|
||||||
}
|
}
|
||||||
|
|
||||||
public static void register(PedestalRecipe recipe) {
|
public static void register(PedestalRecipe recipe) {
|
||||||
|
|||||||
@ -175,7 +175,7 @@ public abstract class GenericRecipes<T extends GenericRecipe> extends Serializab
|
|||||||
// a weight of 0 means this output is not part of a weighted output
|
// a weight of 0 means this output is not part of a weighted output
|
||||||
|
|
||||||
public ItemStack stack;
|
public ItemStack stack;
|
||||||
public float chance;
|
public float chance = 1F;
|
||||||
|
|
||||||
public ChanceOutput() { super(0); } // for deserialization
|
public ChanceOutput() { super(0); } // for deserialization
|
||||||
public ChanceOutput(ItemStack stack) { this(stack, 1F, 0); }
|
public ChanceOutput(ItemStack stack) { this(stack, 1F, 0); }
|
||||||
|
|||||||
@ -53,7 +53,8 @@ public class ItemEnums {
|
|||||||
public static enum EnumChunkType {
|
public static enum EnumChunkType {
|
||||||
RARE,
|
RARE,
|
||||||
MALACHITE,
|
MALACHITE,
|
||||||
CRYOLITE
|
CRYOLITE,
|
||||||
|
MOONSTONE
|
||||||
}
|
}
|
||||||
|
|
||||||
public static enum EnumAchievementType {
|
public static enum EnumAchievementType {
|
||||||
|
|||||||
@ -139,7 +139,7 @@ public class GunFactory {
|
|||||||
public static enum EnumAmmoSecret {
|
public static enum EnumAmmoSecret {
|
||||||
FOLLY_SM, FOLLY_NUKE,
|
FOLLY_SM, FOLLY_NUKE,
|
||||||
M44_EQUESTRIAN, G12_EQUESTRIAN, BMG50_EQUESTRIAN,
|
M44_EQUESTRIAN, G12_EQUESTRIAN, BMG50_EQUESTRIAN,
|
||||||
P35_800, BMG50_BLACK
|
P35_800, BMG50_BLACK, P35_800_BL
|
||||||
}
|
}
|
||||||
|
|
||||||
public static enum EnumModTest {
|
public static enum EnumModTest {
|
||||||
|
|||||||
@ -224,6 +224,7 @@ public class GunFactoryClient {
|
|||||||
folly_nuke.setRenderer(LegoClient.RENDER_BIG_NUKE);
|
folly_nuke.setRenderer(LegoClient.RENDER_BIG_NUKE);
|
||||||
|
|
||||||
p35800.setRendererBeam(LegoClient.RENDER_CRACKLE);
|
p35800.setRendererBeam(LegoClient.RENDER_CRACKLE);
|
||||||
|
p35800_bl.setRendererBeam(LegoClient.RENDER_BLACK_LIGHTNING);
|
||||||
|
|
||||||
ct_hook.setRenderer(LegoClient.RENDER_CT_HOOK);
|
ct_hook.setRenderer(LegoClient.RENDER_CT_HOOK);
|
||||||
ct_mortar.setRenderer(LegoClient.RENDER_CT_MORTAR);
|
ct_mortar.setRenderer(LegoClient.RENDER_CT_MORTAR);
|
||||||
|
|||||||
@ -378,6 +378,26 @@ public class LegoClient {
|
|||||||
GL11.glPopMatrix();
|
GL11.glPopMatrix();
|
||||||
RenderArcFurnace.fullbright(false);
|
RenderArcFurnace.fullbright(false);
|
||||||
};
|
};
|
||||||
|
|
||||||
|
public static BiConsumer<EntityBulletBeamBase, Float> RENDER_BLACK_LIGHTNING = (bullet, interp) -> {
|
||||||
|
|
||||||
|
RenderArcFurnace.fullbright(true);
|
||||||
|
double age = MathHelper.clamp_double(1D - ((double) bullet.ticksExisted - 2 + interp) / (double) bullet.getBulletConfig().expires, 0, 1);
|
||||||
|
double col = MathHelper.clamp_double(1D - ((double) bullet.ticksExisted + interp) / (double) bullet.getBulletConfig().expires, 0, 1);
|
||||||
|
|
||||||
|
GL11.glPushMatrix();
|
||||||
|
GL11.glRotatef(180 - bullet.rotationYaw, 0, 1F, 0);
|
||||||
|
GL11.glRotatef(-bullet.rotationPitch - 90, 1F, 0, 0);
|
||||||
|
|
||||||
|
double scale = 5D;
|
||||||
|
GL11.glScaled(age * scale, 1, age * scale);
|
||||||
|
GL11.glTranslated(0, bullet.beamLength, 0);
|
||||||
|
GL11.glRotatef(-90, 0, 0, 1);
|
||||||
|
renderBulletStandard(Tessellator.instance, 0x4C3093, 0x000000, bullet.beamLength, true);
|
||||||
|
|
||||||
|
GL11.glPopMatrix();
|
||||||
|
RenderArcFurnace.fullbright(false);
|
||||||
|
};
|
||||||
|
|
||||||
public static BiConsumer<EntityBulletBeamBase, Float> RENDER_LASER_RED = (bullet, interp) -> {
|
public static BiConsumer<EntityBulletBeamBase, Float> RENDER_LASER_RED = (bullet, interp) -> {
|
||||||
renderStandardLaser(bullet, interp, 0x80, 0x15, 0x15);
|
renderStandardLaser(bullet, interp, 0x80, 0x15, 0x15);
|
||||||
|
|||||||
@ -3,6 +3,9 @@ package com.hbm.items.weapon.sedna.factory;
|
|||||||
import java.util.function.BiConsumer;
|
import java.util.function.BiConsumer;
|
||||||
import java.util.function.BiFunction;
|
import java.util.function.BiFunction;
|
||||||
|
|
||||||
|
import com.hbm.entity.effect.EntityFireLingering;
|
||||||
|
import com.hbm.entity.projectile.EntityBulletBeamBase;
|
||||||
|
import com.hbm.extprop.HbmLivingProps;
|
||||||
import com.hbm.items.ModItems;
|
import com.hbm.items.ModItems;
|
||||||
import com.hbm.items.weapon.sedna.BulletConfig;
|
import com.hbm.items.weapon.sedna.BulletConfig;
|
||||||
import com.hbm.items.weapon.sedna.Crosshair;
|
import com.hbm.items.weapon.sedna.Crosshair;
|
||||||
@ -20,22 +23,44 @@ import com.hbm.render.anim.BusAnimationSequence;
|
|||||||
import com.hbm.render.anim.BusAnimationKeyframe.IType;
|
import com.hbm.render.anim.BusAnimationKeyframe.IType;
|
||||||
import com.hbm.render.anim.HbmAnimations.AnimType;
|
import com.hbm.render.anim.HbmAnimations.AnimType;
|
||||||
|
|
||||||
|
import net.minecraft.entity.Entity;
|
||||||
|
import net.minecraft.entity.EntityLivingBase;
|
||||||
import net.minecraft.item.ItemStack;
|
import net.minecraft.item.ItemStack;
|
||||||
|
import net.minecraft.util.MovingObjectPosition;
|
||||||
|
|
||||||
public class XFactory35800 {
|
public class XFactory35800 {
|
||||||
|
|
||||||
public static BulletConfig p35800;
|
public static BulletConfig p35800;
|
||||||
|
public static BulletConfig p35800_bl;
|
||||||
|
|
||||||
|
public static BiConsumer<EntityBulletBeamBase, MovingObjectPosition> LAMBDA_BLACK_IMPACT = (bullet, mop) -> {
|
||||||
|
if(mop.typeOfHit == mop.typeOfHit.ENTITY) {
|
||||||
|
Entity hit = mop.entityHit;
|
||||||
|
if(hit instanceof EntityLivingBase) {
|
||||||
|
HbmLivingProps.getData((EntityLivingBase) hit).blackFire += 200;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
if(mop.typeOfHit == mop.typeOfHit.BLOCK) {
|
||||||
|
EntityFireLingering fire = new EntityFireLingering(bullet.worldObj).setArea(7.5F, 2F).setDuration(200).setType(EntityFireLingering.TYPE_BLACK);
|
||||||
|
fire.setPosition(mop.hitVec.xCoord, mop.hitVec.yCoord, mop.hitVec.zCoord);
|
||||||
|
bullet.worldObj.spawnEntityInWorld(fire);
|
||||||
|
}
|
||||||
|
|
||||||
|
BulletConfig.LAMBDA_STANDARD_BEAM_HIT.accept(bullet, mop);
|
||||||
|
};
|
||||||
|
|
||||||
public static void init() {
|
public static void init() {
|
||||||
|
|
||||||
p35800 = new BulletConfig().setItem(EnumAmmoSecret.P35_800).setArmorPiercing(0.5F).setThresholdNegation(50F).setBeam().setSpread(0.0F).setLife(3).setRenderRotations(false)
|
p35800 = new BulletConfig().setItem(EnumAmmoSecret.P35_800).setArmorPiercing(0.5F).setThresholdNegation(50F).setBeam().setSpread(0.0F).setLife(3).setRenderRotations(false)
|
||||||
.setCasing(new SpentCasing(CasingType.STRAIGHT).setColor(0xCEB78E).register("35-800")).setOnBeamImpact(BulletConfig.LAMBDA_STANDARD_BEAM_HIT);
|
.setCasing(new SpentCasing(CasingType.STRAIGHT).setColor(0xCEB78E).register("35-800")).setOnBeamImpact(BulletConfig.LAMBDA_STANDARD_BEAM_HIT);
|
||||||
|
p35800_bl = new BulletConfig().setItem(EnumAmmoSecret.P35_800_BL).setArmorPiercing(0.5F).setThresholdNegation(50F).setBeam().setSpread(0.0F).setLife(3).setRenderRotations(false)
|
||||||
|
.setCasing(new SpentCasing(CasingType.STRAIGHT).setColor(0xCEB78E).register("35-800")).setOnBeamImpact(LAMBDA_BLACK_IMPACT);
|
||||||
|
|
||||||
ModItems.gun_aberrator = new ItemGunBaseNT(WeaponQuality.SECRET, new GunConfig()
|
ModItems.gun_aberrator = new ItemGunBaseNT(WeaponQuality.SECRET, new GunConfig()
|
||||||
.dura(2_000).draw(10).inspect(26).crosshair(Crosshair.CIRCLE).smoke(Lego.LAMBDA_STANDARD_SMOKE)
|
.dura(2_000).draw(10).inspect(26).crosshair(Crosshair.CIRCLE).smoke(Lego.LAMBDA_STANDARD_SMOKE)
|
||||||
.rec(new Receiver(0)
|
.rec(new Receiver(0)
|
||||||
.dmg(100F).delay(13).dry(21).reload(51).sound("hbm:weapon.fire.aberrator", 1.0F, 1.0F)
|
.dmg(100F).delay(13).dry(21).reload(51).sound("hbm:weapon.fire.aberrator", 1.0F, 1.0F)
|
||||||
.mag(new MagazineFullReload(0, 5).addConfigs(p35800))
|
.mag(new MagazineFullReload(0, 5).addConfigs(p35800, p35800_bl))
|
||||||
.offset(0.75, -0.0625 * 1.5, -0.1875)
|
.offset(0.75, -0.0625 * 1.5, -0.1875)
|
||||||
.canFire(Lego.LAMBDA_STANDARD_CAN_FIRE).fire(Lego.LAMBDA_NOWEAR_FIRE).recoil(LAMBDA_RECOIL_ABERRATOR))
|
.canFire(Lego.LAMBDA_STANDARD_CAN_FIRE).fire(Lego.LAMBDA_NOWEAR_FIRE).recoil(LAMBDA_RECOIL_ABERRATOR))
|
||||||
.setupStandardConfiguration()
|
.setupStandardConfiguration()
|
||||||
@ -46,7 +71,7 @@ public class XFactory35800 {
|
|||||||
new GunConfig().dura(2_000).draw(10).inspect(26).crosshair(Crosshair.CIRCLE).smoke(Lego.LAMBDA_STANDARD_SMOKE)
|
new GunConfig().dura(2_000).draw(10).inspect(26).crosshair(Crosshair.CIRCLE).smoke(Lego.LAMBDA_STANDARD_SMOKE)
|
||||||
.rec(new Receiver(0)
|
.rec(new Receiver(0)
|
||||||
.dmg(100F).spreadHipfire(0F).delay(13).dry(21).reload(51).sound("hbm:weapon.fire.aberrator", 1.0F, 1.0F)
|
.dmg(100F).spreadHipfire(0F).delay(13).dry(21).reload(51).sound("hbm:weapon.fire.aberrator", 1.0F, 1.0F)
|
||||||
.mag(new MagazineFullReload(0, 5).addConfigs(p35800))
|
.mag(new MagazineFullReload(0, 5).addConfigs(p35800, p35800_bl))
|
||||||
.offset(0.75, -0.0625 * 1.5, 0.1875)
|
.offset(0.75, -0.0625 * 1.5, 0.1875)
|
||||||
.canFire(Lego.LAMBDA_STANDARD_CAN_FIRE).fire(Lego.LAMBDA_NOWEAR_FIRE).recoil(LAMBDA_RECOIL_ABERRATOR))
|
.canFire(Lego.LAMBDA_STANDARD_CAN_FIRE).fire(Lego.LAMBDA_NOWEAR_FIRE).recoil(LAMBDA_RECOIL_ABERRATOR))
|
||||||
.pp(Lego.LAMBDA_STANDARD_CLICK_PRIMARY).pr(Lego.LAMBDA_STANDARD_RELOAD)
|
.pp(Lego.LAMBDA_STANDARD_CLICK_PRIMARY).pr(Lego.LAMBDA_STANDARD_RELOAD)
|
||||||
@ -55,7 +80,7 @@ public class XFactory35800 {
|
|||||||
new GunConfig().dura(2_000).draw(10).inspect(26).crosshair(Crosshair.CIRCLE).smoke(Lego.LAMBDA_STANDARD_SMOKE)
|
new GunConfig().dura(2_000).draw(10).inspect(26).crosshair(Crosshair.CIRCLE).smoke(Lego.LAMBDA_STANDARD_SMOKE)
|
||||||
.rec(new Receiver(0)
|
.rec(new Receiver(0)
|
||||||
.dmg(100F).spreadHipfire(0F).delay(13).dry(21).reload(51).sound("hbm:weapon.fire.aberrator", 1.0F, 1.0F)
|
.dmg(100F).spreadHipfire(0F).delay(13).dry(21).reload(51).sound("hbm:weapon.fire.aberrator", 1.0F, 1.0F)
|
||||||
.mag(new MagazineFullReload(1, 5).addConfigs(p35800))
|
.mag(new MagazineFullReload(1, 5).addConfigs(p35800, p35800_bl))
|
||||||
.offset(0.75, -0.0625 * 1.5, -0.1875)
|
.offset(0.75, -0.0625 * 1.5, -0.1875)
|
||||||
.canFire(Lego.LAMBDA_STANDARD_CAN_FIRE).fire(Lego.LAMBDA_NOWEAR_FIRE).recoil(LAMBDA_RECOIL_ABERRATOR))
|
.canFire(Lego.LAMBDA_STANDARD_CAN_FIRE).fire(Lego.LAMBDA_NOWEAR_FIRE).recoil(LAMBDA_RECOIL_ABERRATOR))
|
||||||
.ps(Lego.LAMBDA_STANDARD_CLICK_PRIMARY).pr(Lego.LAMBDA_STANDARD_RELOAD)
|
.ps(Lego.LAMBDA_STANDARD_CLICK_PRIMARY).pr(Lego.LAMBDA_STANDARD_RELOAD)
|
||||||
|
|||||||
@ -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 (5377)";
|
public static final String VERSION = "1.0.27 BETA (5378)";
|
||||||
//HBM's Beta Naming Convention:
|
//HBM's Beta Naming Convention:
|
||||||
//V T (X)
|
//V T (X)
|
||||||
//V -> next release version
|
//V -> next release version
|
||||||
|
|||||||
@ -923,9 +923,10 @@ public class ModEventHandlerClient {
|
|||||||
ItemFluidDuct.class
|
ItemFluidDuct.class
|
||||||
);
|
);
|
||||||
|
|
||||||
String prefix = "Slot ";
|
String prefix = "Gun ";
|
||||||
//int gunScale = 8;
|
int gunScale = 16;
|
||||||
int slotScale = 1;
|
int defaultScale = 1;
|
||||||
|
int slotScale = gunScale;
|
||||||
boolean ignoreNonNTM = true;
|
boolean ignoreNonNTM = true;
|
||||||
boolean onlyGuns = true;
|
boolean onlyGuns = true;
|
||||||
|
|
||||||
|
|||||||
@ -73,7 +73,7 @@ public class ParticleFlamethrower extends EntityFXRotating {
|
|||||||
tess.setColorRGBA_F(this.particleRed - add, this.particleGreen - add * 0.75F, this.particleBlue, this.particleAlpha);
|
tess.setColorRGBA_F(this.particleRed - add, this.particleGreen - add * 0.75F, this.particleBlue, this.particleAlpha);
|
||||||
} else if(type == FlameCreator.META_BLACK) {
|
} else if(type == FlameCreator.META_BLACK) {
|
||||||
this.particleAlpha = (float) (1 - ageScaled);
|
this.particleAlpha = (float) (1 - ageScaled);
|
||||||
float add = (float) ageScaled * 4F - 1F;
|
float add = (float) ageScaled * 2F - 0.25F;
|
||||||
tess.setColorRGBA_F(this.particleRed - add * 0.75F, this.particleGreen - add, this.particleBlue - add * 0.5F, this.particleAlpha);
|
tess.setColorRGBA_F(this.particleRed - add * 0.75F, this.particleGreen - add, this.particleBlue - add * 0.5F, this.particleAlpha);
|
||||||
} else {
|
} else {
|
||||||
this.particleAlpha = (float) Math.pow(1 - Math.min(ageScaled, 1), 0.5);
|
this.particleAlpha = (float) Math.pow(1 - Math.min(ageScaled, 1), 0.5);
|
||||||
|
|||||||
@ -1080,6 +1080,7 @@ item.ammo_secret.folly_sm.name=Silberne Kugel
|
|||||||
item.ammo_secret.g12_equestrian.name=Kaliber 12 Gleisnägel
|
item.ammo_secret.g12_equestrian.name=Kaliber 12 Gleisnägel
|
||||||
item.ammo_secret.m44_equestrian.name=.44 Magnum Schädelsprenger
|
item.ammo_secret.m44_equestrian.name=.44 Magnum Schädelsprenger
|
||||||
item.ammo_secret.p35_800.name=.35-800 V9
|
item.ammo_secret.p35_800.name=.35-800 V9
|
||||||
|
item.ammo_secret.p35_800_bl.name=.35-800 V9 (Schwarzer Blitz)
|
||||||
item.ammo_standard.b75.name=.75 Bolzen
|
item.ammo_standard.b75.name=.75 Bolzen
|
||||||
item.ammo_standard.b75_exp.name=.75 Bolzen (Explosiv)
|
item.ammo_standard.b75_exp.name=.75 Bolzen (Explosiv)
|
||||||
item.ammo_standard.b75_inc.name=.75 Bolzen (Brand)
|
item.ammo_standard.b75_inc.name=.75 Bolzen (Brand)
|
||||||
@ -1614,6 +1615,7 @@ item.chopper_torso.name=Jagdschrauber Rumpf
|
|||||||
item.chopper_wing.name=Jagdschrauber Seitentragfläche
|
item.chopper_wing.name=Jagdschrauber Seitentragfläche
|
||||||
item.chunk_ore.cryolite.name=Kryolithbrocken
|
item.chunk_ore.cryolite.name=Kryolithbrocken
|
||||||
item.chunk_ore.malachite.name=Malachitbrocken
|
item.chunk_ore.malachite.name=Malachitbrocken
|
||||||
|
item.chunk_ore.moonstone.name=Mondstein
|
||||||
item.chunk_ore.rare.name=Seltenerdenerz-Brocken
|
item.chunk_ore.rare.name=Seltenerdenerz-Brocken
|
||||||
item.cigarette.name=FFI-Markenzigarette
|
item.cigarette.name=FFI-Markenzigarette
|
||||||
item.cinnebar.name=Zinnober
|
item.cinnebar.name=Zinnober
|
||||||
|
|||||||
@ -1805,6 +1805,7 @@ item.ammo_secret.folly_sm.name=Silver Bullet
|
|||||||
item.ammo_secret.g12_equestrian.name=12 Gauge Railway Spike Shot
|
item.ammo_secret.g12_equestrian.name=12 Gauge Railway Spike Shot
|
||||||
item.ammo_secret.m44_equestrian.name=.44 Magnum Head-Exploder
|
item.ammo_secret.m44_equestrian.name=.44 Magnum Head-Exploder
|
||||||
item.ammo_secret.p35_800.name=.35-800 V9
|
item.ammo_secret.p35_800.name=.35-800 V9
|
||||||
|
item.ammo_secret.p35_800_bl.name=.35-800 V9 (Black Lightning)
|
||||||
item.ammo_standard.b75.name=.75 Bolt
|
item.ammo_standard.b75.name=.75 Bolt
|
||||||
item.ammo_standard.b75_exp.name=.75 Bolt (Explosive)
|
item.ammo_standard.b75_exp.name=.75 Bolt (Explosive)
|
||||||
item.ammo_standard.b75_inc.name=.75 Bolt (Incendiary)
|
item.ammo_standard.b75_inc.name=.75 Bolt (Incendiary)
|
||||||
@ -2389,6 +2390,7 @@ item.chopper_torso.name=Hunter Chopper Body
|
|||||||
item.chopper_wing.name=Hunter Chopper Wing
|
item.chopper_wing.name=Hunter Chopper Wing
|
||||||
item.chunk_ore.malachite.name=Malachite Chunk
|
item.chunk_ore.malachite.name=Malachite Chunk
|
||||||
item.chunk_ore.rare.name=Rare Earth Ore Chunk
|
item.chunk_ore.rare.name=Rare Earth Ore Chunk
|
||||||
|
item.chunk_ore.moonstone.name=Moonstone
|
||||||
item.chunk_ore.cryolite.name=Cryolite Chunk
|
item.chunk_ore.cryolite.name=Cryolite Chunk
|
||||||
item.cigarette.name=FFI-Brand Cigarette
|
item.cigarette.name=FFI-Brand Cigarette
|
||||||
item.cinnebar.name=Cinnabar
|
item.cinnebar.name=Cinnabar
|
||||||
|
|||||||
Binary file not shown.
|
After Width: | Height: | Size: 296 B |
Binary file not shown.
|
After Width: | Height: | Size: 313 B |
Loading…
x
Reference in New Issue
Block a user