Compare commits

..

No commits in common. "master" and "95cb00efb64cfb412b8a97f56ffc55b3d8976f9a" have entirely different histories.

6 changed files with 101 additions and 177 deletions

13
LICENSE
View file

@ -1,13 +0,0 @@
DO WHAT THE FUCK YOU WANT TO PUBLIC LICENSE
Version 2, December 2004
Copyright (C) 2004 Sam Hocevar <sam@hocevar.net>
Everyone is permitted to copy and distribute verbatim or modified
copies of this license document, and changing it is allowed as long
as the name is changed.
DO WHAT THE FUCK YOU WANT TO PUBLIC LICENSE
TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION
0. You just DO WHAT THE FUCK YOU WANT TO.

0
gradlew vendored Executable file → Normal file
View file

View file

@ -45,28 +45,13 @@ import trinity.handler.Vec3;
import trinity.init.ModBlocks;
public class EntityShockwave extends Entity {
private static final DataParameter<Integer> SCALE = EntityDataManager.<Integer>createKey(EntityShockwave.class, DataSerializers.VARINT);
public int revProgress;
public int radProgress;
private int iCounter = 0;
private boolean needsInit = true;
private int blastState = 0; // Not started
private int blastCount = 0;
private MutableBlockPos pos;
private MutableBlockPos pos2;
private MutableBlockPos pos3;
private MutableBlockPos pos4;
private MutableBlockPos pos5;
private double dist;
private double circum;
public EntityShockwave(World p_i1582_1_) {
super(p_i1582_1_);
this.setSize(0, 0);
@ -98,117 +83,87 @@ public class EntityShockwave extends Entity {
return bb;
//return this.getEntityBoundingBox();
}
@Override
public void onUpdate() {
if(!world.isRemote) {
if(needsInit) {
pos = new BlockPos.MutableBlockPos();
pos2 = new BlockPos.MutableBlockPos();
pos3 = new BlockPos.MutableBlockPos();
pos4 = new BlockPos.MutableBlockPos();
pos5 = new BlockPos.MutableBlockPos();
needsInit = false;
}
if(iCounter < 512*3) {
if(blastState == 0) { // Not started
Vec3 vec = Vec3.createVectorHelper(radProgress * 0.5, 0, 0);
circum = radProgress * 2 * Math.PI * 2;
///
if(circum == 0)
circum = 1;
///
double part = 360D / circum;
vec.rotateAroundY((float) (part * revProgress));
int x = (int) (posX + vec.xCoord);
int z = (int) (posZ + vec.zCoord);
dist = radProgress * 100 / getScale() * 0.5;
pos.setPos(x, posY, z);
pos2.setPos(x-1, posY, z);
pos3.setPos(x+1, posY, z);
pos4.setPos(x, posY, z-1);
pos5.setPos(x, posY, z-1);
blastState = 1;
} else if(blastState == 1) {
switch(blastCount) {
case 0:
blast(pos, dist);
blastCount++;
break;
case 1:
blast(pos2, dist);
blastCount++;
break;
case 2:
blast(pos3, dist);
blastCount++;
break;
case 3:
blast(pos4, dist);
blastCount++;
break;
case 4:
blast(pos5, dist);
blastCount++;
break;
case 5:
blastState = 2;
blastCount = 0;
break;
}
} else if(blastState == 2) {
revProgress++;
if(revProgress > circum) {
revProgress = 0;
radProgress++;
}
if(radProgress > getScale() * 2D) {
this.setDead();
blastState = 4;
}
blastState = 0;
}
MutableBlockPos pos = new BlockPos.MutableBlockPos();
MutableBlockPos pos2 = new BlockPos.MutableBlockPos();
MutableBlockPos pos3 = new BlockPos.MutableBlockPos();
MutableBlockPos pos4 = new BlockPos.MutableBlockPos();
MutableBlockPos pos5 = new BlockPos.MutableBlockPos();
for(int i = 0; i < 512; i++) {
Vec3 vec = Vec3.createVectorHelper(radProgress * 0.5, 0, 0);
double circum = radProgress * 2 * Math.PI * 2;
///
if(circum == 0)
circum = 1;
///
double part = 360D / circum;
vec.rotateAroundY((float) (part * revProgress));
int x = (int) (posX + vec.xCoord);
int z = (int) (posZ + vec.zCoord);
double dist = radProgress * 100 / getScale() * 0.5;
pos.setPos(x, posY, z);
pos2.setPos(x-1, posY, z);
pos3.setPos(x+1, posY, z);
pos4.setPos(x, posY, z-1);
pos5.setPos(x, posY, z-1);
blast(pos, dist);
blast(pos2, dist);
blast(pos3, dist);
blast(pos4, dist);
blast(pos5, dist);
revProgress++;
if(revProgress > circum) {
revProgress = 0;
radProgress++;
}
if(radProgress > getScale() * 2D) {
this.setDead();
}
}
iCounter++;
}
}
private void blast(MutableBlockPos pos, double dist) {
int depth = 0;
int topBlock =world.getTopSolidOrLiquidBlock(pos).getY();
for(int y = (topBlock-8); y <= topBlock+48; y++) {
pos.setY(y);
IBlockState b = world.getBlockState(pos);
//int meta = world.getBlockMetadata(x, y, z);
BlockPos left = new BlockPos(pos.getX()+1,pos.getY(),pos.getZ());
BlockPos right = new BlockPos(pos.getX()-1,pos.getY(),pos.getZ());
BlockPos up = new BlockPos(pos.getX(),pos.getY()+1,pos.getZ());
//BlockPos down = pos.add(0, -1, 0);
BlockPos down2 = new BlockPos(pos.getX(),pos.getY()-1,pos.getZ());
BlockPos front = pos.add(0, 0, 1);
BlockPos back = pos.add(0, 0, -1);
BlockPos back = pos.add(0, 0, -1);
boolean LR = (world.isAirBlock(left) && world.isAirBlock(right));
//boolean UD = (world.isAirBlock(up) && world.isAirBlock(down));
boolean FB = (world.isAirBlock(front) && world.isAirBlock(back));
IBlockState bd = world.getBlockState(down2);
if((b.getMaterial() != Material.AIR || (b.getBlock()instanceof BlockFluidClassic)) && bd.getMaterial() == Material.AIR)
{
if(b.getBlock().getExplosionResistance(null)<=100)
@ -219,13 +174,13 @@ public class EntityShockwave extends Entity {
continue;
}
}
if(b.getMaterial() != Material.AIR && (LR || FB))
{
world.setBlockToAir(pos);
continue;
}
if(b.getMaterial() == Material.AIR)
continue;
@ -251,7 +206,7 @@ public class EntityShockwave extends Entity {
p_70014_1_.setInteger("scale", getScale());
p_70014_1_.setInteger("revProgress", revProgress);
p_70014_1_.setInteger("radProgress", radProgress);
}
public void setScale(int i) {
@ -261,7 +216,7 @@ public class EntityShockwave extends Entity {
public int getScale() {
int scale = this.dataManager.get(SCALE);
return scale == 0 ? 1 : scale;
}
}

View file

@ -2,9 +2,9 @@ package trinity.entities;
import java.util.List;
import icbm.classic.api.refs.ICBMExplosives;
import icbm.classic.content.blast.BlastEMP;
// import icbm.classic.content.blast.threaded.BlastNuclear;
//import icbm.classic.api.ExplosiveRefs;
//import icbm.classic.content.blast.BlastEMP;
//import icbm.classic.content.blast.threaded.BlastNuclear;
import nc.init.NCBlocks;
import nc.worldgen.biome.NCBiomes;
import net.minecraft.block.Block;
@ -65,7 +65,6 @@ public class EntityThermonuclearBlast extends Entity {
public int age = 0;
public int destructionRange = 0;
public int falloutIntensity = 0;
//public ExplosionBalefire exp;
public int speed = 1;
public boolean did = false;
@ -74,7 +73,6 @@ public class EntityThermonuclearBlast extends Entity {
protected void readEntityFromNBT(NBTTagCompound nbt) {
age = nbt.getInteger("age");
destructionRange = nbt.getInteger("destructionRange");
falloutIntensity = nbt.getInteger("falloutIntensity");
speed = nbt.getInteger("speed");
did = nbt.getBoolean("did");
@ -90,7 +88,6 @@ public class EntityThermonuclearBlast extends Entity {
protected void writeEntityToNBT(NBTTagCompound nbt) {
nbt.setInteger("age", age);
nbt.setInteger("destructionRange", destructionRange);
nbt.setInteger("falloutIntensity", falloutIntensity);
nbt.setInteger("speed", speed);
nbt.setBoolean("did", did);
@ -111,53 +108,29 @@ public class EntityThermonuclearBlast extends Entity {
{
//if(GeneralConfig.enableExtendedLogging && !world.isRemote)
// MainRegistry.logger.log(Level.INFO, "[NUKE] Initialized BF explosion at " + posX + " / " + posY + " / " + posZ + " with strength " + destructionRange + "!");
exp = new ExplosionThermonuclear((int)this.posX, (int)this.posY, (int)this.posZ, this.world, getScale());
EntityFalloutRain fallout = new EntityFalloutRain(this.world);
fallout.posX = this.posX;
fallout.posY = this.posY;
fallout.posZ = this.posZ;
fallout.setScale((int)(this.getScale() * TrinityConfig.fallout_multiplier));
fallout.setThermonuclear(true);
fallout.setIntensity(this.getIntensity());
this.world.spawnEntity(fallout);
EntityShockwave shock = new EntityShockwave(this.world);
shock.posX = this.posX;
shock.posY = this.posY;
shock.posZ = this.posZ;
shock.setScale(this.getScale() * 2);
this.world.spawnEntity(shock);
if(Trinity.ICBMLoaded)
{
new BlastEMP().setBlastWorld(this.world).setBlastSource(this).setBlastPosition(this.posX, this.posY, this.posZ)
.setBlastSize(getScale()*2)
.setExplosiveData(ICBMExplosives.EMP)
.buildBlast().runBlast();
}
exp = new ExplosionThermonuclear((int)this.posX, (int)this.posY, (int)this.posZ, this.world, this.destructionRange);
this.did = true;
}
speed += 1; //increase speed to keep up with expansion
boolean shouldDie = false;
boolean flag = false;
for(int i = 0; i < this.speed; i++)
{
shouldDie = exp.update();
if(shouldDie) {
flag = exp.update();
if(flag) {
this.setDead();
}
}
if(rand.nextInt(5) == 0)
this.world.playSound(null, this.posX, this.posY, this.posZ, SoundEvents.ENTITY_GENERIC_EXPLODE, SoundCategory.AMBIENT, 10000.0F, 0.8F + this.rand.nextFloat() * 0.2F);
if(!shouldDie)
if(!flag)
{
this.world.playSound(null, this.posX, this.posY, this.posZ, SoundEvents.ENTITY_LIGHTNING_THUNDER, SoundCategory.AMBIENT, 10000.0F, 0.8F + this.rand.nextFloat() * 0.2F);
ExplosionNukeGeneric.dealDamage(this.world, (int)this.posX, (int)this.posY, (int)this.posZ, this.destructionRange * 2);
@ -365,24 +338,33 @@ public class EntityThermonuclearBlast extends Entity {
}
*/
public void setIntensity(int i) {
this.falloutIntensity = i;
this.dataManager.set(INTENSITY, Integer.valueOf(i));
}
public int getIntensity() {
int intensity = this.falloutIntensity;
int intensity = this.dataManager.get(INTENSITY);
return intensity == 0 ? 1 : intensity;
}
public void setScale(int i) {
this.destructionRange = i;
this.dataManager.set(SCALE, Integer.valueOf(i));
/*if(Trinity.ICBMLoaded)
{
new BlastEMP().setBlastWorld(this.world).setBlastSource(this).setBlastPosition(this.posX, this.posY, this.posZ)
.setBlastSize(i*2)
.setExplosiveData(ExplosiveRefs.EMP)
.buildBlast().runBlast();
}*/
}
public int getScale() {
int scale = this.destructionRange;
int scale = this.dataManager.get(SCALE);
return scale == 0 ? 1 : scale;
}
}

View file

@ -4,7 +4,7 @@ package trinity.init;
import java.util.List;
import icbm.classic.api.EnumTier;
import icbm.classic.api.refs.ICBMExplosives;
import icbm.classic.api.ExplosiveRefs;
import icbm.classic.content.blast.BlastEMP;
import icbm.classic.content.blast.threaded.BlastAntimatter;
import icbm.classic.content.blast.threaded.BlastNuclear;
@ -41,7 +41,7 @@ public class ICBMEvents {
Item item = stack.getItem();
if(item instanceof ItemBlockExplosive || item instanceof ItemMissile)
{
if(stack.getItemDamage() == ICBMExplosives.NUCLEAR.getRegistryID())
if(stack.getItemDamage() == ExplosiveRefs.NUCLEAR.getRegistryID())
{
addNukeTooltip(event.getToolTip(), stack);
}
@ -76,7 +76,7 @@ public class ICBMEvents {
// world.setBlockToAir(pos);
new BlastEMP().setBlastWorld(event.getWorld()).setBlastSource(exp.getExplosivePlacedBy()).setBlastPosition(((BlastNuclear) exp).location.x(), ((BlastNuclear) exp).location.y(), ((BlastNuclear) exp).location.z())
.setBlastSize(((BlastNuclear) exp).getBlastRadius()*2)
.setExplosiveData(ICBMExplosives.EMP)
.setExplosiveData(ExplosiveRefs.EMP)
.buildBlast().runBlast();
ExplosionNukeGeneric.irradiate(world, (int)position.x, (int)position.y, (int)position.z, Math.min(TrinityConfig.icbm_radius,TrinityConfig.max_radius)*2);
world.spawnEntity(EntityNuclearExplosion.statFac(world, Math.min(TrinityConfig.icbm_radius,TrinityConfig.max_radius), position.x, position.y, position.z));
@ -98,7 +98,7 @@ public class ICBMEvents {
world.spawnEntity(EntityNuclearExplosion.statFacAntimatter(world, Math.min(TrinityConfig.antimatter_radius,TrinityConfig.max_radius), position.x, position.y, position.z));
new BlastEMP().setBlastWorld(event.getWorld()).setBlastSource(exp.getExplosivePlacedBy()).setBlastPosition(((BlastNuclear) exp).location.x(), ((BlastNuclear) exp).location.y(), ((BlastNuclear) exp).location.z())
.setBlastSize(((BlastNuclear) exp).getBlastRadius()*2)
.setExplosiveData(ICBMExplosives.EMP)
.setExplosiveData(ExplosiveRefs.EMP)
.buildBlast().runBlast();
//System.out.println("If you are seeing this line, this means your blast detector is at least partially working.");
}

View file

@ -6,7 +6,7 @@ import java.util.List;
import org.lwjgl.opengl.GL11;
//import icbm.classic.api.EnumTier;
//import icbm.classic.api.refs.ICBMExplosives;
//import icbm.classic.api.ExplosiveRefs;
//import icbm.classic.content.blast.BlastEMP;
//import icbm.classic.content.blast.threaded.BlastAntimatter;
//import icbm.classic.content.blast.threaded.BlastNuclear;
@ -189,7 +189,7 @@ public class ModEvents {
Item item = stack.getItem();
if(item instanceof ItemBlockExplosive || item instanceof ItemMissile)
{
if(stack.getItemDamage() == ICBMExplosives.NUCLEAR.getRegistryID())
if(stack.getItemDamage() == ExplosiveRefs.NUCLEAR.getRegistryID())
{
addNukeTooltip(event.getToolTip(), stack);
}
@ -223,7 +223,7 @@ public class ModEvents {
// exp.world.setBlockToAir(pos);
new BlastEMP().setBlastWorld(event.getWorld()).setBlastSource(exp.exploder).setBlastPosition(((BlastNuclear) exp).location.x(), ((BlastNuclear) exp).location.y(), ((BlastNuclear) exp).location.z())
.setBlastSize(((BlastNuclear) exp).getBlastRadius()*2)
.setExplosiveData(ICBMExplosives.EMP)
.setExplosiveData(ExplosiveRefs.EMP)
.buildBlast().runBlast();
ExplosionNukeGeneric.irradiate(exp.world, (int)exp.x, (int)exp.y, (int)exp.z, Math.min(TrinityConfig.icbm_radius,TrinityConfig.max_radius)*2);
exp.world.spawnEntity(EntityNuclearExplosion.statFac(exp.world, Math.min(TrinityConfig.icbm_radius,TrinityConfig.max_radius), exp.x + 0.0, exp.y + 0.0, exp.z + 0.0));
@ -245,7 +245,7 @@ public class ModEvents {
exp.world.spawnEntity(EntityNuclearExplosion.statFacAntimatter(exp.world, Math.min(TrinityConfig.antimatter_radius,TrinityConfig.max_radius), exp.x + 0.0, exp.y + 0.0, exp.z + 0.0));
new BlastEMP().setBlastWorld(event.getWorld()).setBlastSource(exp.exploder).setBlastPosition(((BlastNuclear) exp).location.x(), ((BlastNuclear) exp).location.y(), ((BlastNuclear) exp).location.z())
.setBlastSize(((BlastNuclear) exp).getBlastRadius()*2)
.setExplosiveData(ICBMExplosives.EMP)
.setExplosiveData(ExplosiveRefs.EMP)
.buildBlast().runBlast();
//System.out.println("If you are seeing this line, this means your blast detector is at least partially working.");
//}