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
|
||||
* New chemical factory
|
||||
* New form factor, uses a smaller 5x5 footprint
|
||||
* 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
|
||||
* Steel trapdoor
|
||||
* When open with a ladder below it, it too will act like a ladder
|
||||
|
||||
## Changed
|
||||
* Updated chinese and ukrainian localizations
|
||||
* The DNT suit now has a damage threshold of 1,000
|
||||
* Compressed biomass now has a nice cube shape
|
||||
* The new chemical plant's indicator lights are now functional
|
||||
* 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
|
||||
* Updated chinese localization
|
||||
* Improved performance for many nodespace operations
|
||||
* .35 can now use a new ammo type
|
||||
* Balefire mini nukes are now craftable
|
||||
|
||||
## Fixed
|
||||
* Chemical plant ports. For real this time.
|
||||
* Fixed cable and pipe gauges returning the incomplete delta second value for OC and ROR readers
|
||||
* Fixed new chemical plant not saving power values to disk
|
||||
* 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
|
||||
* Fixed chemical plant recipe config defaulting to an output chance of 0%
|
||||
* 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 taint-tipped missile not correctly spawning taint most of the time
|
||||
@ -1,6 +1,6 @@
|
||||
mod_version=1.0.27
|
||||
# Empty build number makes a release type
|
||||
mod_build_number=5377
|
||||
mod_build_number=5378
|
||||
|
||||
credits=HbMinecraft,\
|
||||
\ rodolphito (explosion algorithms),\
|
||||
|
||||
@ -20,6 +20,8 @@ public class EntityFireLingering extends Entity {
|
||||
public static int TYPE_DIESEL = 0;
|
||||
public static int TYPE_BALEFIRE = 1;
|
||||
public static int TYPE_PHOSPHORUS = 2;
|
||||
public static int TYPE_OXY = 3;
|
||||
public static int TYPE_BLACK = 4;
|
||||
public int maxAge = 150;
|
||||
|
||||
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_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_BLACK) if(props.blackFire < 200) props.blackFire = 200; else props.blackFire += 5;
|
||||
} else {
|
||||
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_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_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() {
|
||||
if(!worldObj.isRemote && loaderTicket != null && loadedChunk != null) {
|
||||
if(!worldObj.isRemote && loaderTicket != null) {
|
||||
ForgeChunkManager.releaseTicket(loaderTicket);
|
||||
this.loaderTicket = null;
|
||||
}
|
||||
|
||||
@ -259,6 +259,10 @@ public class EntityNukeExplosionMK3 extends EntityExplosionChunkloading {
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
if(!entity.isDead) {
|
||||
entity.loadChunk((int) Math.floor(x / 16D), (int) Math.floor(z / 16D));
|
||||
}
|
||||
|
||||
return entity;
|
||||
}
|
||||
|
||||
@ -159,6 +159,7 @@ public class EntityNukeExplosionMK5 extends EntityExplosionChunkloading {
|
||||
mk5.speed = (int)Math.ceil(100000 / mk5.strength);
|
||||
mk5.setPosition(x, y, z);
|
||||
mk5.length = mk5.strength / 2;
|
||||
mk5.loadChunk((int) Math.floor(x / 16D), (int) Math.floor(z / 16D));
|
||||
return mk5;
|
||||
}
|
||||
|
||||
|
||||
@ -281,12 +281,12 @@ public abstract class EntityMissileBaseNT extends EntityThrowableInterp implemen
|
||||
@Override
|
||||
protected void onImpact(MovingObjectPosition mop) {
|
||||
if(mop != null && mop.typeOfHit == mop.typeOfHit.BLOCK) {
|
||||
this.onImpact();
|
||||
this.onMissileImpact(mop);
|
||||
this.setDead();
|
||||
}
|
||||
}
|
||||
|
||||
public abstract void onImpact();
|
||||
public abstract void onMissileImpact(MovingObjectPosition mop);
|
||||
public abstract List<ItemStack> getDebris();
|
||||
public abstract ItemStack getDebrisRareDrop();
|
||||
public void cluster() { }
|
||||
|
||||
@ -25,6 +25,7 @@ import net.minecraft.block.Block;
|
||||
import net.minecraft.item.Item;
|
||||
import net.minecraft.item.ItemStack;
|
||||
import net.minecraft.nbt.NBTTagCompound;
|
||||
import net.minecraft.util.MovingObjectPosition;
|
||||
import net.minecraft.util.Vec3;
|
||||
import net.minecraft.world.World;
|
||||
|
||||
@ -161,7 +162,7 @@ public class EntityMissileCustom extends EntityMissileBaseNT implements IChunkLo
|
||||
}
|
||||
|
||||
@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));
|
||||
|
||||
|
||||
@ -15,6 +15,7 @@ import cpw.mods.fml.common.network.NetworkRegistry.TargetPoint;
|
||||
import net.minecraft.init.Blocks;
|
||||
import net.minecraft.item.ItemStack;
|
||||
import net.minecraft.nbt.NBTTagCompound;
|
||||
import net.minecraft.util.MovingObjectPosition;
|
||||
import net.minecraft.world.World;
|
||||
|
||||
public class EntityMissileShuttle extends EntityMissileBaseNT {
|
||||
@ -28,7 +29,7 @@ public class EntityMissileShuttle extends EntityMissileBaseNT {
|
||||
}
|
||||
|
||||
@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);
|
||||
explosion.atttributes.add(ExAttrib.NOSOUND);
|
||||
explosion.atttributes.add(ExAttrib.NOPARTICLE);
|
||||
|
||||
@ -10,6 +10,7 @@ import com.hbm.particle.helper.ExplosionCreator;
|
||||
import com.hbm.items.ModItems;
|
||||
|
||||
import net.minecraft.item.ItemStack;
|
||||
import net.minecraft.util.MovingObjectPosition;
|
||||
import net.minecraft.world.World;
|
||||
|
||||
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 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); }
|
||||
|
||||
}
|
||||
|
||||
@ -16,11 +16,13 @@ import com.hbm.inventory.material.Mats;
|
||||
import com.hbm.items.ModItems;
|
||||
|
||||
import com.hbm.items.weapon.sedna.factory.GunFactory.EnumAmmo;
|
||||
import com.hbm.world.WorldUtil;
|
||||
|
||||
import net.minecraft.block.Block;
|
||||
import net.minecraft.init.Blocks;
|
||||
import net.minecraft.item.ItemStack;
|
||||
import net.minecraft.util.MathHelper;
|
||||
import net.minecraft.util.MovingObjectPosition;
|
||||
import net.minecraft.world.World;
|
||||
|
||||
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 getMissileItemForInfo() { return new ItemStack(ModItems.missile_test); }
|
||||
|
||||
@Override public void onImpact() {
|
||||
@Override public void onMissileImpact(MovingObjectPosition mop) {
|
||||
int x = (int) Math.floor(posX);
|
||||
int y = (int) Math.floor(posY);
|
||||
int z = (int) Math.floor(posZ);
|
||||
@ -80,7 +82,7 @@ public abstract class EntityMissileTier0 extends EntityMissileBaseNT {
|
||||
public static class EntityMissileMicro extends EntityMissileTier0 {
|
||||
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); }
|
||||
@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 getMissileItemForInfo() { return new ItemStack(ModItems.missile_micro); }
|
||||
}
|
||||
@ -88,10 +90,10 @@ public abstract class EntityMissileTier0 extends EntityMissileBaseNT {
|
||||
public static class EntityMissileSchrabidium extends EntityMissileTier0 {
|
||||
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); }
|
||||
@Override public void onImpact() {
|
||||
@Override public void onMissileImpact(MovingObjectPosition mop) {
|
||||
EntityNukeExplosionMK3 ex = EntityNukeExplosionMK3.statFacFleija(worldObj, posX, posY, posZ, BombConfig.aSchrabRadius);
|
||||
if(!ex.isDead) {
|
||||
worldObj.spawnEntityInWorld(ex);
|
||||
WorldUtil.loadAndSpawnEntityInWorld(ex);
|
||||
EntityCloudFleija cloud = new EntityCloudFleija(this.worldObj, BombConfig.aSchrabRadius);
|
||||
cloud.posX = this.posX;
|
||||
cloud.posY = this.posY;
|
||||
@ -106,7 +108,7 @@ public abstract class EntityMissileTier0 extends EntityMissileBaseNT {
|
||||
public static class EntityMissileBHole extends EntityMissileTier0 {
|
||||
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); }
|
||||
@Override public void onImpact() {
|
||||
@Override public void onMissileImpact(MovingObjectPosition mop) {
|
||||
this.worldObj.createExplosion(this, this.posX, this.posY, this.posZ, 1.5F, true);
|
||||
EntityBlackHole bl = new EntityBlackHole(this.worldObj, 1.5F);
|
||||
bl.posX = this.posX;
|
||||
@ -121,15 +123,15 @@ public abstract class EntityMissileTier0 extends EntityMissileBaseNT {
|
||||
public static class EntityMissileTaint extends EntityMissileTier0 {
|
||||
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); }
|
||||
@Override public void onImpact() {
|
||||
this.worldObj.createExplosion(this, this.posX, this.posY, this.posZ, 10.0F, true);
|
||||
@Override public void onMissileImpact(MovingObjectPosition mop) {
|
||||
this.worldObj.createExplosion(this, mop.hitVec.xCoord, mop.hitVec.yCoord, mop.hitVec.zCoord, 5.0F, true);
|
||||
for(int i = 0; i < 100; i++) {
|
||||
int a = rand.nextInt(11) + (int) this.posX - 5;
|
||||
int b = rand.nextInt(11) + (int) this.posY - 5;
|
||||
int c = rand.nextInt(11) + (int) this.posZ - 5;
|
||||
int a = rand.nextInt(11) + (int) mop.blockX - 5;
|
||||
int b = rand.nextInt(11) + (int) mop.blockY - 5;
|
||||
int c = rand.nextInt(11) + (int) mop.blockZ - 5;
|
||||
Block block = worldObj.getBlock(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 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); }
|
||||
@Override public void onImpact() {
|
||||
@Override public void onMissileImpact(MovingObjectPosition mop) {
|
||||
ExplosionNukeGeneric.empBlast(worldObj, (int)posX, (int)posY, (int)posZ, 50);
|
||||
EntityEMPBlast wave = new EntityEMPBlast(worldObj, 50);
|
||||
wave.posX = posX;
|
||||
|
||||
@ -10,6 +10,7 @@ import com.hbm.particle.helper.ExplosionCreator;
|
||||
|
||||
import api.hbm.entity.IRadarDetectableNT;
|
||||
import net.minecraft.item.ItemStack;
|
||||
import net.minecraft.util.MovingObjectPosition;
|
||||
import net.minecraft.world.World;
|
||||
|
||||
public abstract class EntityMissileTier1 extends EntityMissileBaseNT {
|
||||
@ -33,7 +34,7 @@ public abstract class EntityMissileTier1 extends EntityMissileBaseNT {
|
||||
public static class EntityMissileGeneric extends EntityMissileTier1 {
|
||||
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); }
|
||||
@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 getMissileItemForInfo() { return new ItemStack(ModItems.missile_generic); }
|
||||
}
|
||||
@ -41,7 +42,7 @@ public abstract class EntityMissileTier1 extends EntityMissileBaseNT {
|
||||
public static class EntityMissileDecoy extends EntityMissileTier1 {
|
||||
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); }
|
||||
@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 String getUnlocalizedName() { return "radar.target.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 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); }
|
||||
@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 getMissileItemForInfo() { return new ItemStack(ModItems.missile_incendiary); }
|
||||
}
|
||||
@ -59,11 +60,11 @@ public abstract class EntityMissileTier1 extends EntityMissileBaseNT {
|
||||
public static class EntityMissileCluster extends EntityMissileTier1 {
|
||||
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; }
|
||||
@Override public void onImpact() {
|
||||
@Override public void onMissileImpact(MovingObjectPosition mop) {
|
||||
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);
|
||||
}
|
||||
@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 getMissileItemForInfo() { return new ItemStack(ModItems.missile_cluster); }
|
||||
}
|
||||
@ -71,7 +72,7 @@ public abstract class EntityMissileTier1 extends EntityMissileBaseNT {
|
||||
public static class EntityMissileBunkerBuster extends EntityMissileTier1 {
|
||||
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); }
|
||||
@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);
|
||||
ExplosionLarge.spawnParticles(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 net.minecraft.item.ItemStack;
|
||||
import net.minecraft.util.MovingObjectPosition;
|
||||
import net.minecraft.world.World;
|
||||
|
||||
public abstract class EntityMissileTier2 extends EntityMissileBaseNT {
|
||||
@ -42,7 +43,7 @@ public abstract class EntityMissileTier2 extends EntityMissileBaseNT {
|
||||
public static class EntityMissileStrong extends EntityMissileTier2 {
|
||||
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); }
|
||||
@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 getMissileItemForInfo() { return new ItemStack(ModItems.missile_strong); }
|
||||
}
|
||||
@ -50,7 +51,7 @@ public abstract class EntityMissileTier2 extends EntityMissileBaseNT {
|
||||
public static class EntityMissileIncendiaryStrong extends EntityMissileTier2 {
|
||||
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); }
|
||||
@Override public void onImpact() {
|
||||
@Override public void onMissileImpact(MovingObjectPosition mop) {
|
||||
this.explodeStandard(30F, 32, true);
|
||||
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);
|
||||
@ -62,11 +63,11 @@ public abstract class EntityMissileTier2 extends EntityMissileBaseNT {
|
||||
public static class EntityMissileClusterStrong extends EntityMissileTier2 {
|
||||
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; }
|
||||
@Override public void onImpact() {
|
||||
@Override public void onMissileImpact(MovingObjectPosition mop) {
|
||||
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);
|
||||
}
|
||||
@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 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 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); }
|
||||
@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);
|
||||
ExplosionLarge.spawnParticles(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 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); }
|
||||
@Override public void onImpact() {
|
||||
@Override public void onMissileImpact(MovingObjectPosition mop) {
|
||||
EntityEMP emp = new EntityEMP(worldObj);
|
||||
emp.posX = posX;
|
||||
emp.posY = posY;
|
||||
|
||||
@ -12,6 +12,7 @@ import com.hbm.particle.helper.ExplosionCreator;
|
||||
|
||||
import api.hbm.entity.IRadarDetectableNT;
|
||||
import net.minecraft.item.ItemStack;
|
||||
import net.minecraft.util.MovingObjectPosition;
|
||||
import net.minecraft.util.Vec3;
|
||||
import net.minecraft.world.World;
|
||||
|
||||
@ -58,7 +59,7 @@ public abstract class EntityMissileTier3 extends EntityMissileBaseNT {
|
||||
public static class EntityMissileBurst extends EntityMissileTier3 {
|
||||
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); }
|
||||
@Override public void onImpact() {
|
||||
@Override public void onMissileImpact(MovingObjectPosition mop) {
|
||||
this.explodeStandard(50F, 48, false);
|
||||
ExplosionCreator.composeEffectLarge(worldObj, posX, posY, posZ);
|
||||
}
|
||||
@ -69,7 +70,7 @@ public abstract class EntityMissileTier3 extends EntityMissileBaseNT {
|
||||
public static class EntityMissileInferno extends EntityMissileTier3 {
|
||||
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); }
|
||||
@Override public void onImpact() {
|
||||
@Override public void onMissileImpact(MovingObjectPosition mop) {
|
||||
this.explodeStandard(50F, 48, true);
|
||||
ExplosionCreator.composeEffectLarge(worldObj, posX, posY, posZ);
|
||||
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 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; }
|
||||
@Override public void onImpact() {
|
||||
@Override public void onMissileImpact(MovingObjectPosition mop) {
|
||||
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);
|
||||
}
|
||||
@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 getMissileItemForInfo() { return new ItemStack(ModItems.missile_rain); }
|
||||
}
|
||||
@ -94,7 +95,7 @@ public abstract class EntityMissileTier3 extends EntityMissileBaseNT {
|
||||
public static class EntityMissileDrill extends EntityMissileTier3 {
|
||||
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); }
|
||||
@Override public void onImpact() {
|
||||
@Override public void onMissileImpact(MovingObjectPosition mop) {
|
||||
for(int i = 0; i < 30; i++) {
|
||||
ExplosionNT explosion = new ExplosionNT(worldObj, this, this.posX, this.posY - i, this.posZ, 10F);
|
||||
explosion.addAllAttrib(ExAttrib.ERRODE);
|
||||
|
||||
@ -9,9 +9,11 @@ import com.hbm.entity.effect.EntityNukeTorex;
|
||||
import com.hbm.entity.logic.EntityNukeExplosionMK5;
|
||||
import com.hbm.explosion.ExplosionLarge;
|
||||
import com.hbm.items.ModItems;
|
||||
import com.hbm.world.WorldUtil;
|
||||
|
||||
import api.hbm.entity.IRadarDetectableNT;
|
||||
import net.minecraft.item.ItemStack;
|
||||
import net.minecraft.util.MovingObjectPosition;
|
||||
import net.minecraft.util.Vec3;
|
||||
import net.minecraft.world.World;
|
||||
|
||||
@ -63,8 +65,8 @@ public abstract class EntityMissileTier4 extends EntityMissileBaseNT {
|
||||
public static class EntityMissileNuclear extends EntityMissileTier4 {
|
||||
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); }
|
||||
@Override public void onImpact() {
|
||||
this.worldObj.spawnEntityInWorld(EntityNukeExplosionMK5.statFac(worldObj, BombConfig.missileRadius, posX, posY, posZ));
|
||||
@Override public void onMissileImpact(MovingObjectPosition mop) {
|
||||
WorldUtil.loadAndSpawnEntityInWorld(EntityNukeExplosionMK5.statFac(worldObj, BombConfig.missileRadius, posX, posY, posZ));
|
||||
EntityNukeTorex.statFacStandard(worldObj, posX, posY, posZ, BombConfig.missileRadius);
|
||||
}
|
||||
@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 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); }
|
||||
@Override public void onImpact() {
|
||||
worldObj.spawnEntityInWorld(EntityNukeExplosionMK5.statFac(worldObj, BombConfig.missileRadius * 2, posX, posY, posZ));
|
||||
@Override public void onMissileImpact(MovingObjectPosition mop) {
|
||||
WorldUtil.loadAndSpawnEntityInWorld(EntityNukeExplosionMK5.statFac(worldObj, BombConfig.missileRadius * 2, posX, posY, posZ));
|
||||
EntityNukeTorex.statFacStandard(worldObj, posX, posY, posZ, BombConfig.missileRadius * 2);
|
||||
}
|
||||
@Override public List<ItemStack> getDebris() {
|
||||
@ -93,7 +95,7 @@ public abstract class EntityMissileTier4 extends EntityMissileBaseNT {
|
||||
public static class EntityMissileVolcano extends EntityMissileTier4 {
|
||||
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); }
|
||||
@Override public void onImpact() {
|
||||
@Override public void onMissileImpact(MovingObjectPosition mop) {
|
||||
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);
|
||||
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 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); }
|
||||
@Override public void onImpact() {
|
||||
this.worldObj.spawnEntityInWorld(EntityNukeExplosionMK5.statFac(worldObj, BombConfig.missileRadius * 2, posX, posY, posZ).moreFallout(100));
|
||||
@Override public void onMissileImpact(MovingObjectPosition mop) {
|
||||
WorldUtil.loadAndSpawnEntityInWorld(EntityNukeExplosionMK5.statFac(worldObj, BombConfig.missileRadius * 2, posX, posY, posZ).moreFallout(100));
|
||||
EntityNukeTorex.statFacStandard(worldObj, posX, posY, posZ, BombConfig.missileRadius * 2);
|
||||
}
|
||||
@Override public List<ItemStack> getDebris() { return null; }
|
||||
@ -118,8 +120,8 @@ public abstract class EntityMissileTier4 extends EntityMissileBaseNT {
|
||||
public static class EntityMissileDoomsdayRusted extends EntityMissileDoomsday {
|
||||
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); }
|
||||
@Override public void onImpact() {
|
||||
this.worldObj.spawnEntityInWorld(EntityNukeExplosionMK5.statFac(worldObj, BombConfig.missileRadius, posX, posY, posZ).moreFallout(100));
|
||||
@Override public void onMissileImpact(MovingObjectPosition mop) {
|
||||
WorldUtil.loadAndSpawnEntityInWorld(EntityNukeExplosionMK5.statFac(worldObj, BombConfig.missileRadius, posX, posY, posZ).moreFallout(100));
|
||||
EntityNukeTorex.statFacStandard(worldObj, posX, posY, posZ, BombConfig.missileRadius);
|
||||
}
|
||||
@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.main.MainRegistry;
|
||||
import com.hbm.packet.toclient.AuxParticlePacketNT;
|
||||
import com.hbm.world.WorldUtil;
|
||||
|
||||
import cpw.mods.fml.common.network.NetworkRegistry.TargetPoint;
|
||||
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.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.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) {
|
||||
float radMod = params.radiationLevel / 3F;
|
||||
|
||||
@ -51,6 +51,7 @@ public class HbmLivingProps implements IExtendedEntityProperties {
|
||||
public int fire;
|
||||
public int phosphorus;
|
||||
public int balefire;
|
||||
public int blackFire;
|
||||
private List<ContaminationEffect> contamination = new ArrayList();
|
||||
|
||||
public HbmLivingProps(EntityLivingBase entity) {
|
||||
@ -320,6 +321,7 @@ public class HbmLivingProps implements IExtendedEntityProperties {
|
||||
props.setInteger("hfr_fire", fire);
|
||||
props.setInteger("hfr_phosphorus", phosphorus);
|
||||
props.setInteger("hfr_balefire", balefire);
|
||||
props.setInteger("hfr_blackfire", blackFire);
|
||||
|
||||
props.setInteger("hfr_cont_count", this.contamination.size());
|
||||
|
||||
@ -347,6 +349,7 @@ public class HbmLivingProps implements IExtendedEntityProperties {
|
||||
fire = props.getInteger("hfr_fire");
|
||||
phosphorus = props.getInteger("hfr_phosphorus");
|
||||
balefire = props.getInteger("hfr_balefire");
|
||||
blackFire = props.getInteger("hfr_blackfire");
|
||||
|
||||
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);
|
||||
}
|
||||
|
||||
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);
|
||||
}
|
||||
|
||||
|
||||
@ -431,6 +431,10 @@ public class AmmoPressRecipes extends SerializableRecipe {
|
||||
null, he.copy(8), null,
|
||||
null, sBig.copy(2), 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),
|
||||
null, steel, null,
|
||||
|
||||
@ -24,6 +24,7 @@ import com.hbm.inventory.material.Mats;
|
||||
import com.hbm.inventory.material.Mats.MaterialStack;
|
||||
import com.hbm.inventory.recipes.loader.SerializableRecipe;
|
||||
import com.hbm.items.ItemEnums.EnumAshType;
|
||||
import com.hbm.items.ItemEnums.EnumChunkType;
|
||||
import com.hbm.items.ItemEnums.EnumPlantType;
|
||||
import com.hbm.items.ItemEnums.EnumTarType;
|
||||
import com.hbm.items.ModItems;
|
||||
@ -240,6 +241,8 @@ public class CrystallizerRecipes extends SerializableRecipe {
|
||||
if(dustCinnabar != null && !dustCinnabar.isEmpty()) {
|
||||
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()) {
|
||||
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.OreDictStack;
|
||||
import com.hbm.inventory.recipes.loader.SerializableRecipe;
|
||||
import com.hbm.items.ItemEnums.EnumChunkType;
|
||||
import com.hbm.items.ItemEnums.EnumSecretType;
|
||||
import com.hbm.items.food.ItemConserve.EnumFoodType;
|
||||
import com.hbm.items.ModItems;
|
||||
@ -94,9 +95,9 @@ public class PedestalRecipes extends SerializableRecipe {
|
||||
.extra(PedestalExtraCondition.GOOD_KARMA).set(1));
|
||||
|
||||
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 ComparableStack(ModItems.powder_magic), new ComparableStack(ModBlocks.moon_turf), 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),
|
||||
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))
|
||||
.extra(PedestalExtraCondition.FULL_MOON).set(1));
|
||||
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),
|
||||
@ -107,6 +108,10 @@ public class PedestalRecipes extends SerializableRecipe {
|
||||
null, null, null,
|
||||
null, new ComparableStack(ModItems.item_secret, 1, EnumSecretType.ABERRATOR), null,
|
||||
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) {
|
||||
|
||||
@ -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
|
||||
|
||||
public ItemStack stack;
|
||||
public float chance;
|
||||
public float chance = 1F;
|
||||
|
||||
public ChanceOutput() { super(0); } // for deserialization
|
||||
public ChanceOutput(ItemStack stack) { this(stack, 1F, 0); }
|
||||
|
||||
@ -53,7 +53,8 @@ public class ItemEnums {
|
||||
public static enum EnumChunkType {
|
||||
RARE,
|
||||
MALACHITE,
|
||||
CRYOLITE
|
||||
CRYOLITE,
|
||||
MOONSTONE
|
||||
}
|
||||
|
||||
public static enum EnumAchievementType {
|
||||
|
||||
@ -139,7 +139,7 @@ public class GunFactory {
|
||||
public static enum EnumAmmoSecret {
|
||||
FOLLY_SM, FOLLY_NUKE,
|
||||
M44_EQUESTRIAN, G12_EQUESTRIAN, BMG50_EQUESTRIAN,
|
||||
P35_800, BMG50_BLACK
|
||||
P35_800, BMG50_BLACK, P35_800_BL
|
||||
}
|
||||
|
||||
public static enum EnumModTest {
|
||||
|
||||
@ -224,6 +224,7 @@ public class GunFactoryClient {
|
||||
folly_nuke.setRenderer(LegoClient.RENDER_BIG_NUKE);
|
||||
|
||||
p35800.setRendererBeam(LegoClient.RENDER_CRACKLE);
|
||||
p35800_bl.setRendererBeam(LegoClient.RENDER_BLACK_LIGHTNING);
|
||||
|
||||
ct_hook.setRenderer(LegoClient.RENDER_CT_HOOK);
|
||||
ct_mortar.setRenderer(LegoClient.RENDER_CT_MORTAR);
|
||||
|
||||
@ -378,6 +378,26 @@ public class LegoClient {
|
||||
GL11.glPopMatrix();
|
||||
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) -> {
|
||||
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.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.weapon.sedna.BulletConfig;
|
||||
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.HbmAnimations.AnimType;
|
||||
|
||||
import net.minecraft.entity.Entity;
|
||||
import net.minecraft.entity.EntityLivingBase;
|
||||
import net.minecraft.item.ItemStack;
|
||||
import net.minecraft.util.MovingObjectPosition;
|
||||
|
||||
public class XFactory35800 {
|
||||
|
||||
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() {
|
||||
|
||||
|
||||
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);
|
||||
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()
|
||||
.dura(2_000).draw(10).inspect(26).crosshair(Crosshair.CIRCLE).smoke(Lego.LAMBDA_STANDARD_SMOKE)
|
||||
.rec(new Receiver(0)
|
||||
.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)
|
||||
.canFire(Lego.LAMBDA_STANDARD_CAN_FIRE).fire(Lego.LAMBDA_NOWEAR_FIRE).recoil(LAMBDA_RECOIL_ABERRATOR))
|
||||
.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)
|
||||
.rec(new Receiver(0)
|
||||
.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)
|
||||
.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)
|
||||
@ -55,7 +80,7 @@ public class XFactory35800 {
|
||||
new GunConfig().dura(2_000).draw(10).inspect(26).crosshair(Crosshair.CIRCLE).smoke(Lego.LAMBDA_STANDARD_SMOKE)
|
||||
.rec(new Receiver(0)
|
||||
.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)
|
||||
.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)
|
||||
|
||||
@ -3,7 +3,7 @@ package com.hbm.lib;
|
||||
public class RefStrings {
|
||||
public static final String MODID = "hbm";
|
||||
public static final String NAME = "Hbm's Nuclear Tech Mod";
|
||||
public static final String VERSION = "1.0.27 BETA (5377)";
|
||||
public static final String VERSION = "1.0.27 BETA (5378)";
|
||||
//HBM's Beta Naming Convention:
|
||||
//V T (X)
|
||||
//V -> next release version
|
||||
|
||||
@ -923,9 +923,10 @@ public class ModEventHandlerClient {
|
||||
ItemFluidDuct.class
|
||||
);
|
||||
|
||||
String prefix = "Slot ";
|
||||
//int gunScale = 8;
|
||||
int slotScale = 1;
|
||||
String prefix = "Gun ";
|
||||
int gunScale = 16;
|
||||
int defaultScale = 1;
|
||||
int slotScale = gunScale;
|
||||
boolean ignoreNonNTM = 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);
|
||||
} else if(type == FlameCreator.META_BLACK) {
|
||||
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);
|
||||
} else {
|
||||
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.m44_equestrian.name=.44 Magnum Schädelsprenger
|
||||
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_exp.name=.75 Bolzen (Explosiv)
|
||||
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.chunk_ore.cryolite.name=Kryolithbrocken
|
||||
item.chunk_ore.malachite.name=Malachitbrocken
|
||||
item.chunk_ore.moonstone.name=Mondstein
|
||||
item.chunk_ore.rare.name=Seltenerdenerz-Brocken
|
||||
item.cigarette.name=FFI-Markenzigarette
|
||||
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.m44_equestrian.name=.44 Magnum Head-Exploder
|
||||
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_exp.name=.75 Bolt (Explosive)
|
||||
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.chunk_ore.malachite.name=Malachite Chunk
|
||||
item.chunk_ore.rare.name=Rare Earth Ore Chunk
|
||||
item.chunk_ore.moonstone.name=Moonstone
|
||||
item.chunk_ore.cryolite.name=Cryolite Chunk
|
||||
item.cigarette.name=FFI-Brand Cigarette
|
||||
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