mirror of
https://github.com/HbmMods/Hbm-s-Nuclear-Tech-GIT.git
synced 2026-01-25 10:32:49 +00:00
some fixes, finalized ExVNT code
This commit is contained in:
parent
47be4e97b6
commit
70299728da
@ -1,7 +1,6 @@
|
|||||||
package com.hbm.blocks.bomb;
|
package com.hbm.blocks.bomb;
|
||||||
|
|
||||||
import com.hbm.explosion.ExplosionLarge;
|
import com.hbm.explosion.vanillant.ExplosionVNT;
|
||||||
import com.hbm.explosion.ExplosionNT;
|
|
||||||
|
|
||||||
import cpw.mods.fml.client.registry.RenderingRegistry;
|
import cpw.mods.fml.client.registry.RenderingRegistry;
|
||||||
import net.minecraft.world.World;
|
import net.minecraft.world.World;
|
||||||
@ -15,9 +14,9 @@ public class BlockChargeC4 extends BlockChargeBase {
|
|||||||
safe = true;
|
safe = true;
|
||||||
world.setBlockToAir(x, y, z);
|
world.setBlockToAir(x, y, z);
|
||||||
safe = false;
|
safe = false;
|
||||||
ExplosionNT exp = new ExplosionNT(world, null, x + 0.5, y + 0.5, z + 0.5, 4F);
|
|
||||||
exp.explode();
|
ExplosionVNT xnt = new ExplosionVNT(world, x + 0.5, y + 0.5, z + 0.5, 10F).makeStandard();
|
||||||
ExplosionLarge.spawnParticles(world, x + 0.5, y + 0.5, z + 0.5, 20);
|
xnt.explode();
|
||||||
|
|
||||||
return BombReturnCode.DETONATED;
|
return BombReturnCode.DETONATED;
|
||||||
}
|
}
|
||||||
|
|||||||
@ -56,7 +56,7 @@ public class EntityMinerRocket extends Entity {
|
|||||||
|
|
||||||
if(dataWatcher.getWatchableObjectInt(16) == 1) {
|
if(dataWatcher.getWatchableObjectInt(16) == 1) {
|
||||||
|
|
||||||
if(ticksExisted % 2 == 0)
|
if(!worldObj.isRemote && ticksExisted % 4 == 0)
|
||||||
ExplosionLarge.spawnShock(worldObj, posX, posY, posZ, 1 + rand.nextInt(3), 1 + rand.nextGaussian());
|
ExplosionLarge.spawnShock(worldObj, posX, posY, posZ, 1 + rand.nextInt(3), 1 + rand.nextGaussian());
|
||||||
|
|
||||||
timer++;
|
timer++;
|
||||||
|
|||||||
@ -10,6 +10,7 @@ import net.minecraft.entity.EntityLeashKnot;
|
|||||||
import net.minecraft.entity.EntityLivingBase;
|
import net.minecraft.entity.EntityLivingBase;
|
||||||
import net.minecraft.entity.boss.IBossDisplayData;
|
import net.minecraft.entity.boss.IBossDisplayData;
|
||||||
import net.minecraft.entity.player.EntityPlayer;
|
import net.minecraft.entity.player.EntityPlayer;
|
||||||
|
import net.minecraft.util.DamageSource;
|
||||||
import net.minecraft.util.MathHelper;
|
import net.minecraft.util.MathHelper;
|
||||||
import net.minecraft.world.World;
|
import net.minecraft.world.World;
|
||||||
|
|
||||||
@ -148,6 +149,12 @@ public class EntityQuackos extends EntityDuck implements IBossDisplayData {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* BOW
|
||||||
|
*/
|
||||||
|
@Override
|
||||||
|
public void onDeath(DamageSource sourceOrRatherLackThereof) { }
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
protected void updateLeashedState() {
|
protected void updateLeashedState() {
|
||||||
|
|
||||||
|
|||||||
@ -11,11 +11,24 @@ import net.minecraft.world.World;
|
|||||||
public class BlockProcessorStandard implements IBlockProcessor {
|
public class BlockProcessorStandard implements IBlockProcessor {
|
||||||
|
|
||||||
protected IDropChanceMutator chance;
|
protected IDropChanceMutator chance;
|
||||||
|
protected IFortuneMutator fortune;
|
||||||
|
protected IBlockMutator convert;
|
||||||
|
|
||||||
public BlockProcessorStandard() { }
|
public BlockProcessorStandard() { }
|
||||||
|
|
||||||
public BlockProcessorStandard(IDropChanceMutator chance) {
|
public BlockProcessorStandard withChance(IDropChanceMutator chance) {
|
||||||
this.chance = chance;
|
this.chance = chance;
|
||||||
|
return this;
|
||||||
|
}
|
||||||
|
|
||||||
|
public BlockProcessorStandard withFortune(IFortuneMutator fortune) {
|
||||||
|
this.fortune = fortune;
|
||||||
|
return this;
|
||||||
|
}
|
||||||
|
|
||||||
|
public BlockProcessorStandard withBlockEffect(IBlockMutator convert) {
|
||||||
|
this.convert = convert;
|
||||||
|
return this;
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
@ -23,27 +36,46 @@ public class BlockProcessorStandard implements IBlockProcessor {
|
|||||||
|
|
||||||
Iterator iterator = affectedBlocks.iterator();
|
Iterator iterator = affectedBlocks.iterator();
|
||||||
float dropChance = 1.0F / explosion.size;
|
float dropChance = 1.0F / explosion.size;
|
||||||
|
|
||||||
while(iterator.hasNext()) {
|
while(iterator.hasNext()) {
|
||||||
ChunkPosition chunkposition = (ChunkPosition) iterator.next();
|
ChunkPosition chunkposition = (ChunkPosition) iterator.next();
|
||||||
int blockX = chunkposition.chunkPosX;
|
int blockX = chunkposition.chunkPosX;
|
||||||
int blockY = chunkposition.chunkPosY;
|
int blockY = chunkposition.chunkPosY;
|
||||||
int blockZ = chunkposition.chunkPosZ;
|
int blockZ = chunkposition.chunkPosZ;
|
||||||
Block block = world.getBlock(blockX, blockY, blockZ);
|
Block block = world.getBlock(blockX, blockY, blockZ);
|
||||||
|
|
||||||
if(block.getMaterial() != Material.air) {
|
if(block.getMaterial() != Material.air) {
|
||||||
if(block.canDropFromExplosion(null)) {
|
if(block.canDropFromExplosion(null)) {
|
||||||
|
|
||||||
if(chance != null) {
|
if(chance != null) {
|
||||||
dropChance = chance.mutateDropChance(explosion, block, blockX, blockY, blockZ, dropChance);
|
dropChance = chance.mutateDropChance(explosion, block, blockX, blockY, blockZ, dropChance);
|
||||||
}
|
}
|
||||||
|
|
||||||
block.dropBlockAsItemWithChance(world, blockX, blockY, blockZ, world.getBlockMetadata(blockX, blockY, blockZ), dropChance, 0);
|
int dropFortune = fortune == null ? 0 : fortune.mutateFortune(explosion, block, blockX, blockY, blockZ);
|
||||||
|
|
||||||
|
block.dropBlockAsItemWithChance(world, blockX, blockY, blockZ, world.getBlockMetadata(blockX, blockY, blockZ), dropChance, dropFortune);
|
||||||
}
|
}
|
||||||
|
|
||||||
block.onBlockExploded(world, blockX, blockY, blockZ, null);
|
block.onBlockExploded(world, blockX, blockY, blockZ, null);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
if(this.convert != null) {
|
||||||
|
iterator = affectedBlocks.iterator();
|
||||||
|
|
||||||
|
while(iterator.hasNext()) {
|
||||||
|
ChunkPosition chunkposition = (ChunkPosition) iterator.next();
|
||||||
|
int blockX = chunkposition.chunkPosX;
|
||||||
|
int blockY = chunkposition.chunkPosY;
|
||||||
|
int blockZ = chunkposition.chunkPosZ;
|
||||||
|
Block block = world.getBlock(blockX, blockY, blockZ);
|
||||||
|
|
||||||
|
if(block.getMaterial() == Material.air) {
|
||||||
|
this.convert.mutateAtPosition(explosion, blockX, blockY, blockZ);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
public BlockProcessorStandard setNoDrop() {
|
public BlockProcessorStandard setNoDrop() {
|
||||||
|
|||||||
@ -32,7 +32,7 @@ public class ExplosionVNT {
|
|||||||
protected float size;
|
protected float size;
|
||||||
public Entity exploder;
|
public Entity exploder;
|
||||||
|
|
||||||
public Explosion compat;
|
public Explosion compat; //TODO: override and implement getters for the EVNT's data
|
||||||
|
|
||||||
public ExplosionVNT(World world, double x, double y, double z, float size) {
|
public ExplosionVNT(World world, double x, double y, double z, float size) {
|
||||||
this(world, x, y, z, size, null);
|
this(world, x, y, z, size, null);
|
||||||
@ -55,13 +55,13 @@ public class ExplosionVNT {
|
|||||||
boolean processEntities = entityProcessor != null && playerProcessor != null;
|
boolean processEntities = entityProcessor != null && playerProcessor != null;
|
||||||
|
|
||||||
HashSet<ChunkPosition> affectedBlocks = null;
|
HashSet<ChunkPosition> affectedBlocks = null;
|
||||||
HashMap<EntityPlayer, Vec3> affectedEntities = null;
|
HashMap<EntityPlayer, Vec3> affectedPlayers = null;
|
||||||
|
|
||||||
if(processBlocks) affectedBlocks = blockAllocator.allocate(this, world, posX, posY, posZ, size);
|
if(processBlocks) affectedBlocks = blockAllocator.allocate(this, world, posX, posY, posZ, size);
|
||||||
if(processEntities) affectedEntities = entityProcessor.process(this, world, posX, posY, posZ, size);
|
if(processEntities) affectedPlayers = entityProcessor.process(this, world, posX, posY, posZ, size);
|
||||||
|
|
||||||
if(processBlocks) blockProcessor.process(this, world, posX, posY, posZ, affectedBlocks);
|
if(processBlocks) blockProcessor.process(this, world, posX, posY, posZ, affectedBlocks);
|
||||||
if(processEntities) playerProcessor.process(this, world, posX, posY, posZ, affectedEntities);
|
if(processEntities) playerProcessor.process(this, world, posX, posY, posZ, affectedPlayers);
|
||||||
|
|
||||||
if(sfx != null) {
|
if(sfx != null) {
|
||||||
for(IExplosionSFX fx : sfx) {
|
for(IExplosionSFX fx : sfx) {
|
||||||
@ -90,4 +90,12 @@ public class ExplosionVNT {
|
|||||||
this.sfx = sfx;
|
this.sfx = sfx;
|
||||||
return this;
|
return this;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public ExplosionVNT makeStandard() {
|
||||||
|
this.setBlockAllocator(new BlockAllocatorStandard());
|
||||||
|
this.setBlockProcessor(new BlockProcessorStandard());
|
||||||
|
this.setEntityProcessor(new EntityProcessorStandard());
|
||||||
|
this.setPlayerProcessor(new PlayerProcessorStandard());
|
||||||
|
return this;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@ -0,0 +1,6 @@
|
|||||||
|
package com.hbm.explosion.vanillant;
|
||||||
|
|
||||||
|
public interface IBlockMutator {
|
||||||
|
|
||||||
|
public int mutateAtPosition(ExplosionVNT explosion, int x, int y, int z);
|
||||||
|
}
|
||||||
@ -0,0 +1,8 @@
|
|||||||
|
package com.hbm.explosion.vanillant;
|
||||||
|
|
||||||
|
import net.minecraft.block.Block;
|
||||||
|
|
||||||
|
public interface IFortuneMutator {
|
||||||
|
|
||||||
|
public int mutateFortune(ExplosionVNT explosion, Block block, int x, int y, int z);
|
||||||
|
}
|
||||||
@ -1,12 +1,12 @@
|
|||||||
package com.hbm.util;
|
package com.hbm.util;
|
||||||
|
|
||||||
import com.hbm.config.GeneralConfig;
|
import com.hbm.config.GeneralConfig;
|
||||||
|
import com.hbm.entity.mob.EntityDuck;
|
||||||
import com.hbm.entity.mob.EntityNuclearCreeper;
|
import com.hbm.entity.mob.EntityNuclearCreeper;
|
||||||
import com.hbm.entity.mob.EntityQuackos;
|
import com.hbm.entity.mob.EntityQuackos;
|
||||||
import com.hbm.extprop.HbmLivingProps;
|
import com.hbm.extprop.HbmLivingProps;
|
||||||
import com.hbm.handler.HazmatRegistry;
|
import com.hbm.handler.HazmatRegistry;
|
||||||
import com.hbm.handler.radiation.ChunkRadiationManager;
|
import com.hbm.handler.radiation.ChunkRadiationManager;
|
||||||
import com.hbm.lib.ModDamageSource;
|
|
||||||
import com.hbm.potion.HbmPotion;
|
import com.hbm.potion.HbmPotion;
|
||||||
import com.hbm.util.ArmorRegistry.HazardClass;
|
import com.hbm.util.ArmorRegistry.HazardClass;
|
||||||
|
|
||||||
@ -23,7 +23,6 @@ import net.minecraft.util.ChatComponentTranslation;
|
|||||||
import net.minecraft.util.ChatStyle;
|
import net.minecraft.util.ChatStyle;
|
||||||
import net.minecraft.util.EnumChatFormatting;
|
import net.minecraft.util.EnumChatFormatting;
|
||||||
import net.minecraft.world.World;
|
import net.minecraft.world.World;
|
||||||
import net.minecraft.world.chunk.Chunk;
|
|
||||||
|
|
||||||
public class ContaminationUtil {
|
public class ContaminationUtil {
|
||||||
|
|
||||||
@ -44,44 +43,6 @@ public class ContaminationUtil {
|
|||||||
return 1;
|
return 1;
|
||||||
}
|
}
|
||||||
|
|
||||||
/// RADIATION ///
|
|
||||||
private static void applyRadData(Entity e, float f) {
|
|
||||||
|
|
||||||
if(!(e instanceof EntityLivingBase))
|
|
||||||
return;
|
|
||||||
|
|
||||||
if(isRadImmune(e))
|
|
||||||
return;
|
|
||||||
|
|
||||||
EntityLivingBase entity = (EntityLivingBase)e;
|
|
||||||
|
|
||||||
if(e instanceof EntityPlayer && ((EntityPlayer)e).capabilities.isCreativeMode)
|
|
||||||
return;
|
|
||||||
|
|
||||||
if(e instanceof EntityPlayer && e.ticksExisted < 200)
|
|
||||||
return;
|
|
||||||
|
|
||||||
f *= calculateRadiationMod(entity);
|
|
||||||
|
|
||||||
HbmLivingProps.incrementRadiation(entity, f);
|
|
||||||
}
|
|
||||||
|
|
||||||
private static void applyRadDirect(Entity e, float f) {
|
|
||||||
|
|
||||||
if(!(e instanceof EntityLivingBase))
|
|
||||||
return;
|
|
||||||
|
|
||||||
EntityLivingBase entity = (EntityLivingBase)e;
|
|
||||||
|
|
||||||
if(isRadImmune(e))
|
|
||||||
return;
|
|
||||||
|
|
||||||
if(e instanceof EntityPlayer && ((EntityPlayer)e).capabilities.isCreativeMode)
|
|
||||||
return;
|
|
||||||
|
|
||||||
HbmLivingProps.incrementRadiation(entity, f);
|
|
||||||
}
|
|
||||||
|
|
||||||
public static float getRads(Entity e) {
|
public static float getRads(Entity e) {
|
||||||
|
|
||||||
if(!(e instanceof EntityLivingBase))
|
if(!(e instanceof EntityLivingBase))
|
||||||
@ -135,6 +96,9 @@ public class ContaminationUtil {
|
|||||||
if(!(e instanceof EntityLivingBase))
|
if(!(e instanceof EntityLivingBase))
|
||||||
return;
|
return;
|
||||||
|
|
||||||
|
if(e instanceof EntityDuck || e instanceof EntityOcelot)
|
||||||
|
return;
|
||||||
|
|
||||||
if(e instanceof EntityPlayer && ((EntityPlayer)e).capabilities.isCreativeMode)
|
if(e instanceof EntityPlayer && ((EntityPlayer)e).capabilities.isCreativeMode)
|
||||||
return;
|
return;
|
||||||
|
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user