use of net.minecraft.util.DamageSource in project NyaSamaRailway by NSDN.
the class RailMonoMagnetReceptionAnti method onRailPowered.
@Override
public void onRailPowered(World world, int x, int y, int z, int meta, boolean hasCart) {
boolean playerDetectable = false;
if (!checkNearbySameRail(world, x, y, z))
playerDetectable = true;
if (playerDetectable) {
TileEntityRail rail = null;
if (world.getTileEntity(x, y, z) instanceof TileEntityRail) {
rail = (TileEntityRail) world.getTileEntity(x, y, z);
}
if (rail != null) {
if (!rail.cartType.isEmpty() && !world.isRemote) {
if (!hasCart && (isRailPowered(world, x - 1, y, z) || isRailPowered(world, x, y, z + 1))) {
spawnCart(world, x, y, z);
rail.delay = 0;
rail.enable = false;
}
if (hasCart && (isRailPowered(world, x + 1, y, z) || isRailPowered(world, x, y, z - 1))) {
EntityMinecart cart = getMinecart(world, x, y, z);
if (cart == null)
return;
cart.killMinecart(new DamageSource("nsr"));
}
}
}
}
}
use of net.minecraft.util.DamageSource in project NyaSamaRailway by NSDN.
the class BlockRailReception method onMinecartPass.
@Override
public void onMinecartPass(World world, EntityMinecart cart, int x, int y, int z) {
boolean playerDetectable = false;
boolean hasPlayer = false;
EntityPlayer player = null;
if (!checkNearbySameRail(world, x, y, z))
playerDetectable = true;
if (cart.riddenByEntity instanceof EntityPlayer) {
player = (EntityPlayer) cart.riddenByEntity;
ItemStack stack = ((EntityPlayer) cart.riddenByEntity).getCurrentEquippedItem();
if (stack != null) {
if (stack.getItem() instanceof ItemNTP8Bit || stack.getItem() instanceof ItemNTP32Bit) {
return;
}
}
hasPlayer = true;
} else if (cart.riddenByEntity instanceof EntityMinecart) {
EntityMinecart ncart = (EntityMinecart) cart.riddenByEntity;
if (ncart.riddenByEntity instanceof EntityPlayer) {
player = (EntityPlayer) ncart.riddenByEntity;
ItemStack stack = ((EntityPlayer) ncart.riddenByEntity).getCurrentEquippedItem();
if (stack != null) {
if (stack.getItem() instanceof ItemNTP8Bit || stack.getItem() instanceof ItemNTP32Bit) {
return;
}
}
hasPlayer = true;
}
}
double maxV;
if (!playerDetectable) {
maxV = 0.1;
if (isRailPowered(world, x, y, z)) {
if (getRailDirection(world, x, y, z) == RailDirection.NS) {
if (cart.motionZ > maxV) {
// cart.motionZ > maxV
if (cart.motionZ < maxV * 1.5)
cart.motionZ = maxV * 1.5;
} else {
if (cart.motionZ >= 0)
cart.motionZ = -0.005;
if (cart.motionZ > -maxV)
cart.motionZ = -Dynamics.LocoMotions.calcVelocityUp(Math.abs(cart.motionZ), 0.1, 1.0, 0.1, 0.02);
}
} else {
if (cart.motionX < -maxV) {
// cart.motionX < -maxV
if (cart.motionX > -maxV * 1.5)
cart.motionX = -maxV * 1.5;
} else {
if (cart.motionX <= 0)
cart.motionX = 0.005;
if (cart.motionX < maxV)
cart.motionX = Dynamics.LocoMotions.calcVelocityUp(Math.abs(cart.motionX), 0.1, 1.0, 0.1, 0.02);
}
}
} else {
if (Math.abs(cart.motionX) > maxV || Math.abs(cart.motionZ) > maxV) {
cart.motionX = Math.signum(cart.motionX) * Dynamics.LocoMotions.calcVelocityDown(Math.abs(cart.motionX), 0.1, 1.0, 1.0, 1.0, 0.05, 0.02);
cart.motionZ = Math.signum(cart.motionZ) * Dynamics.LocoMotions.calcVelocityDown(Math.abs(cart.motionZ), 0.1, 1.0, 1.0, 1.0, 0.05, 0.02);
} else {
if (getRailDirection(world, x, y, z) == RailDirection.NS) {
cart.motionZ = 0.0D;
} else {
cart.motionX = 0.0D;
}
}
}
} else {
maxV = 0.2;
TileEntityRailReception rail = null;
if (world.getTileEntity(x, y, z) instanceof TileEntityRailReception) {
rail = (TileEntityRailReception) world.getTileEntity(x, y, z);
}
if (rail != null) {
if (rail.cartType.equals("loco")) {
return;
}
if (rail.cartType.isEmpty() && (cart.motionX * cart.motionX + cart.motionZ * cart.motionZ == 0))
registerCart(rail, cart);
if (!world.isBlockIndirectlyGettingPowered(x, y, z)) {
if (hasPlayer) {
if ((cart.motionX * cart.motionX + cart.motionZ * cart.motionZ > 0) && !rail.enable) {
if ((Math.abs(cart.motionX) > maxV / 2) || (Math.abs(cart.motionZ) > maxV / 2)) {
cart.motionX = (Math.signum(cart.motionX) * Dynamics.LocoMotions.calcVelocityDown(Math.abs(cart.motionX), 0.1D, 1.0D, 1.0D, 1.0D, 0.05D, 0.02D));
cart.motionZ = (Math.signum(cart.motionZ) * Dynamics.LocoMotions.calcVelocityDown(Math.abs(cart.motionZ), 0.1D, 1.0D, 1.0D, 1.0D, 0.05D, 0.02D));
} else {
rail.enable = true;
if (getRailDirection(world, x, y, z) == RailDirection.NS) {
cart.motionZ = 0.0D;
} else {
cart.motionX = 0.0D;
}
cart.setPosition(x + 0.5, y + 0.5, z + 0.5);
if (player instanceof EntityPlayerMP) {
player.addChatComponentMessage(new ChatComponentTranslation("info.reception.pause", DELAY_TIME));
world.playSoundAtEntity(cart, "nyasamarailway:info.reception.pause", 0.5F, 1.0F);
}
}
} else {
if (rail.delay < DELAY_TIME * 20 && rail.enable) {
boolean isEnabled = false;
if (world.getTileEntity(x, y, z) instanceof TileEntityReceiver) {
TileEntityReceiver railReceiver = (TileEntityReceiver) world.getTileEntity(x, y, z);
if (railReceiver.senderIsPowered())
isEnabled = true;
}
if (!isEnabled)
rail.delay += 1;
else {
rail.count += 1;
if (rail.delay + rail.count == DELAY_TIME * 15) {
rail.delay = DELAY_TIME * 15 - 1;
rail.count += 1;
if (player instanceof EntityPlayerMP) {
player.addChatComponentMessage(new ChatComponentTranslation("info.reception.delay"));
world.playSoundAtEntity(cart, "nyasamarailway:info.reception.delay", 0.5F, 1.0F);
}
}
}
if (rail.delay == DELAY_TIME * 15) {
rail.count = 0;
if (player instanceof EntityPlayerMP) {
player.addChatComponentMessage(new ChatComponentTranslation("info.reception.ready"));
world.playSoundAtEntity(cart, "nyasamarailway:info.reception.ready", 0.5F, 1.0F);
}
}
cart.motionX = 0.0D;
cart.motionZ = 0.0D;
cart.setPosition(x + 0.5, y + 0.5, z + 0.5);
} else {
if (getRailDirection(world, x, y, z) == RailDirection.NS) {
if (cart.motionZ > maxV) {
if (cart.motionZ < maxV * 1.5D)
cart.motionZ = (maxV * 1.5D);
} else {
if (cart.motionZ >= 0.0D)
cart.motionZ = -0.005D;
if (cart.motionZ > -maxV) {
cart.motionZ = -Dynamics.LocoMotions.calcVelocityUp(Math.abs(cart.motionZ), 0.1D, 1.0D, 0.1D, 0.02D);
}
}
} else {
if (cart.motionX < -maxV) {
if (cart.motionX > -maxV * 1.5D)
cart.motionX = (-maxV * 1.5D);
} else {
if (cart.motionX <= 0.0D)
cart.motionX = 0.005D;
if (cart.motionX < maxV) {
cart.motionX = Dynamics.LocoMotions.calcVelocityUp(Math.abs(cart.motionX), 0.1D, 1.0D, 0.1D, 0.02D);
}
}
}
}
}
} else {
cart.motionX = 0.0D;
cart.motionZ = 0.0D;
cart.setPosition(x + 0.5, y + 0.5, z + 0.5);
rail.delay = 0;
rail.count = 0;
rail.enable = false;
}
} else {
if (cart.motionX * cart.motionX + cart.motionZ * cart.motionZ > 0) {
if (getRailDirection(world, x, y, z) == RailDirection.NS) {
if (cart.posZ - 0.5 > z) {
cart.killMinecart(new DamageSource("nsr"));
}
} else {
if (cart.posX - 0.5 < x) {
cart.killMinecart(new DamageSource("nsr"));
}
}
}
}
}
}
}
use of net.minecraft.util.DamageSource in project ConvenientAdditions by Necr0.
the class PotionThorns method onDamageTaken.
@SubscribeEvent
public void onDamageTaken(LivingAttackEvent event) {
EntityLivingBase attacked = event.getEntityLiving();
PotionEffect effect = attacked.getActivePotionEffect(this);
DamageSource source = event.getSource();
if (effect == null || source.getEntity() == null || !(source.getEntity() instanceof EntityLivingBase) || source.getDamageType().equals("thorns") || source.isDamageAbsolute() || source.isMagicDamage() || source.isFireDamage() || source.isExplosion() || source.isProjectile() || source.isUnblockable())
return;
EntityLivingBase attacker = (EntityLivingBase) source.getEntity();
attacker.attackEntityFrom(DamageSource.causeThornsDamage(attacked), event.getAmount() * 0.2f * (effect.getAmplifier() + 1));
}
use of net.minecraft.util.DamageSource in project ImmersiveEngineering by BluSunrize.
the class ThermalFoundationHelper method init.
@Override
public void init() {
ChemthrowerHandler.registerEffect("coal", new ChemthrowerEffect_Potion(null, 0, IEPotions.flammable, 100, 0));
ChemthrowerHandler.registerFlammable("coal");
ChemthrowerHandler.registerEffect("crude_oil", new ChemthrowerEffect_Potion(null, 0, new PotionEffect(IEPotions.flammable, 140, 0), new PotionEffect(MobEffects.BLINDNESS, 80, 1)));
ChemthrowerHandler.registerFlammable("crude_oil");
ChemthrowerHandler.registerEffect("refined_oil", new ChemthrowerEffect_Potion(null, 0, IEPotions.flammable, 100, 1));
ChemthrowerHandler.registerFlammable("refined_oil");
ChemthrowerHandler.registerEffect("resin", new ChemthrowerEffect_Potion(null, 0, IEPotions.sticky, 100, 1));
ChemthrowerHandler.registerEffect("tree_oil", new ChemthrowerEffect_Potion(null, 0, IEPotions.flammable, 120, 0));
ChemthrowerHandler.registerFlammable("tree_oil");
ChemthrowerHandler.registerEffect("redstone", new ChemthrowerEffect_Potion(null, 0, IEPotions.conductive, 100, 1));
ChemthrowerHandler.registerEffect("glowstone", new ChemthrowerEffect_Potion(null, 0, new PotionEffect(MobEffects.GLOWING, 120, 0), new PotionEffect(MobEffects.SPEED, 120, 0), new PotionEffect(MobEffects.JUMP_BOOST, 120, 0)));
ChemthrowerHandler.registerEffect("ender", new ChemthrowerEffect_RandomTeleport(null, 0, 1));
try {
Class c_DamageHelper = Class.forName("cofh.lib.util.helpers.DamageHelper");
DamageSource pyrotheum = (DamageSource) c_DamageHelper.getDeclaredField("pyrotheum").get(null);
Field f_explodeCreepers = Class.forName("cofh.thermalfoundation.fluid.BlockFluidPyrotheum").getDeclaredField("effect");
f_explodeCreepers.setAccessible(true);
if ((boolean) f_explodeCreepers.get(null))
ChemthrowerHandler.registerEffect("pyrotheum", new ChemthrowerEffect_Damage(pyrotheum, 3) {
@Override
public void applyToEntity(EntityLivingBase target, @Nullable EntityPlayer shooter, ItemStack thrower, Fluid fluid) {
super.applyToEntity(target, shooter, thrower, fluid);
if (target instanceof EntityCreeper) {
target.getEntityWorld().createExplosion(target, target.posX, target.posY, target.posZ, 6.0F, target.getEntityWorld().getGameRules().getBoolean("mobGriefing"));
target.setDead();
}
}
});
else
ChemthrowerHandler.registerEffect("pyrotheum", new ChemthrowerEffect_Damage(pyrotheum, 3));
DamageSource cryotheum = (DamageSource) c_DamageHelper.getDeclaredField("cryotheum").get(null);
ChemthrowerHandler.registerEffect("cryotheum", new ChemthrowerEffect_Potion(cryotheum, 2, MobEffects.SLOWNESS, 50, 3));
} catch (Exception e) {
}
ChemthrowerHandler.registerEffect("aerotheum", new ChemthrowerEffect_Potion(null, 0, new PotionEffect(MobEffects.INVISIBILITY, 60, 0), new PotionEffect(MobEffects.WATER_BREATHING, 300, 0)));
ChemthrowerHandler.registerEffect("petrotheum", new ChemthrowerEffect_Potion(null, 0, new PotionEffect(MobEffects.HASTE, 300, 2), new PotionEffect(MobEffects.NIGHT_VISION, 300, 0), new PotionEffect(MobEffects.RESISTANCE, 300, 1)) {
@Override
public void applyToBlock(World worldObj, RayTraceResult mop, @Nullable EntityPlayer shooter, ItemStack thrower, Fluid fluid) {
IBlockState state = worldObj.getBlockState(mop.getBlockPos());
if (state.getBlock() == Blocks.STONE || state.getBlock() == Blocks.COBBLESTONE || state.getBlock() == Blocks.STONEBRICK || state.getBlock() == Blocks.MOSSY_COBBLESTONE)
worldObj.setBlockState(mop.getBlockPos(), Blocks.GRAVEL.getDefaultState());
}
});
ChemthrowerHandler.registerEffect("mana", new ChemthrowerEffect_RandomTeleport(null, 0, .01f));
}
use of net.minecraft.util.DamageSource in project NyaSamaRailway by NSDN.
the class BlockRailReception method onRailPowered.
@Override
public void onRailPowered(World world, int x, int y, int z, int meta, boolean hasCart) {
boolean playerDetectable = false;
if (!checkNearbySameRail(world, x, y, z))
playerDetectable = true;
if (playerDetectable) {
TileEntityRailReception rail = null;
if (world.getTileEntity(x, y, z) instanceof TileEntityRailReception) {
rail = (TileEntityRailReception) world.getTileEntity(x, y, z);
}
if (rail != null) {
if (!rail.cartType.isEmpty() && !world.isRemote) {
if (rail.cartType.equals("loco")) {
return;
}
if (!hasCart && (isRailPowered(world, x + 1, y, z) || isRailPowered(world, x, y, z - 1))) {
spawnCart(world, x, y, z);
rail.delay = 0;
rail.enable = false;
}
if (hasCart && (isRailPowered(world, x - 1, y, z) || isRailPowered(world, x, y, z + 1))) {
EntityMinecart cart = getMinecart(world, x, y, z);
if (cart == null)
return;
cart.killMinecart(new DamageSource("nsr"));
}
}
}
}
}
Aggregations