mirror of
https://github.com/HbmMods/Hbm-s-Nuclear-Tech-GIT.git
synced 2026-01-25 10:32:49 +00:00
overhauled vomit physics
This commit is contained in:
parent
3722844400
commit
0ed5489e82
@ -33,7 +33,6 @@ import net.minecraft.potion.PotionEffect;
|
|||||||
import net.minecraft.util.DamageSource;
|
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;
|
||||||
import net.minecraft.world.chunk.Chunk;
|
|
||||||
|
|
||||||
public class EntityEffectHandler {
|
public class EntityEffectHandler {
|
||||||
|
|
||||||
@ -121,25 +120,35 @@ public class EntityEffectHandler {
|
|||||||
return;
|
return;
|
||||||
|
|
||||||
Random rand = new Random(entity.getEntityId());
|
Random rand = new Random(entity.getEntityId());
|
||||||
|
|
||||||
|
int r600 = rand.nextInt(600);
|
||||||
|
int r1200 = rand.nextInt(1200);
|
||||||
|
|
||||||
if(HbmLivingProps.getRadiation(entity) > 600 && (world.getTotalWorldTime() + rand.nextInt(600)) % 600 == 0) {
|
if(HbmLivingProps.getRadiation(entity) > 600) {
|
||||||
|
|
||||||
NBTTagCompound nbt = new NBTTagCompound();
|
if((world.getTotalWorldTime() + r600) % 600 < 20) {
|
||||||
nbt.setString("type", "bloodvomit");
|
NBTTagCompound nbt = new NBTTagCompound();
|
||||||
nbt.setInteger("entity", entity.getEntityId());
|
nbt.setString("type", "bloodvomit");
|
||||||
PacketDispatcher.wrapper.sendToAllAround(new AuxParticlePacketNT(nbt, 0, 0, 0), new TargetPoint(entity.dimension, entity.posX, entity.posY, entity.posZ, 25));
|
nbt.setInteger("entity", entity.getEntityId());
|
||||||
|
PacketDispatcher.wrapper.sendToAllAround(new AuxParticlePacketNT(nbt, 0, 0, 0), new TargetPoint(entity.dimension, entity.posX, entity.posY, entity.posZ, 25));
|
||||||
|
|
||||||
|
if((world.getTotalWorldTime() + r600) % 600 == 1) {
|
||||||
|
world.playSoundEffect(ix, iy, iz, "hbm:entity.vomit", 1.0F, 1.0F);
|
||||||
|
entity.addPotionEffect(new PotionEffect(Potion.hunger.id, 60, 19));
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
world.playSoundEffect(ix, iy, iz, "hbm:entity.vomit", 1.0F, 1.0F);
|
} else if(HbmLivingProps.getRadiation(entity) > 200 && (world.getTotalWorldTime() + r1200) % 1200 < 20) {
|
||||||
entity.addPotionEffect(new PotionEffect(Potion.hunger.id, 60, 19));
|
|
||||||
} else if(HbmLivingProps.getRadiation(entity) > 200 && (world.getTotalWorldTime() + rand.nextInt(1200)) % 1200 == 0) {
|
|
||||||
|
|
||||||
NBTTagCompound nbt = new NBTTagCompound();
|
NBTTagCompound nbt = new NBTTagCompound();
|
||||||
nbt.setString("type", "vomit");
|
nbt.setString("type", "vomit");
|
||||||
nbt.setInteger("entity", entity.getEntityId());
|
nbt.setInteger("entity", entity.getEntityId());
|
||||||
PacketDispatcher.wrapper.sendToAllAround(new AuxParticlePacketNT(nbt, 0, 0, 0), new TargetPoint(entity.dimension, entity.posX, entity.posY, entity.posZ, 25));
|
PacketDispatcher.wrapper.sendToAllAround(new AuxParticlePacketNT(nbt, 0, 0, 0), new TargetPoint(entity.dimension, entity.posX, entity.posY, entity.posZ, 25));
|
||||||
|
|
||||||
world.playSoundEffect(ix, iy, iz, "hbm:entity.vomit", 1.0F, 1.0F);
|
if((world.getTotalWorldTime() + r1200) % 1200 == 1) {
|
||||||
entity.addPotionEffect(new PotionEffect(Potion.hunger.id, 60, 19));
|
world.playSoundEffect(ix, iy, iz, "hbm:entity.vomit", 1.0F, 1.0F);
|
||||||
|
entity.addPotionEffect(new PotionEffect(Potion.hunger.id, 60, 19));
|
||||||
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -281,6 +290,16 @@ public class EntityEffectHandler {
|
|||||||
entity.attackEntityFrom(DamageSource.magic, 2F);
|
entity.attackEntityFrom(DamageSource.magic, 2F);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if(contagion < 30 * minute && (contagion + entity.getEntityId()) % 200 < 20) {
|
||||||
|
NBTTagCompound nbt = new NBTTagCompound();
|
||||||
|
nbt.setString("type", "bloodvomit");
|
||||||
|
nbt.setInteger("entity", entity.getEntityId());
|
||||||
|
PacketDispatcher.wrapper.sendToAllAround(new AuxParticlePacketNT(nbt, 0, 0, 0), new TargetPoint(entity.dimension, entity.posX, entity.posY, entity.posZ, 25));
|
||||||
|
|
||||||
|
if((contagion + entity.getEntityId()) % 200 == 19)
|
||||||
|
world.playSoundEffect(entity.posX, entity.posY, entity.posZ, "hbm:entity.vomit", 1.0F, 1.0F);
|
||||||
|
}
|
||||||
|
|
||||||
//end of contagion, drop dead
|
//end of contagion, drop dead
|
||||||
if(contagion == 0) {
|
if(contagion == 0) {
|
||||||
entity.attackEntityFrom(DamageSource.magic, 1000F);
|
entity.attackEntityFrom(DamageSource.magic, 1000F);
|
||||||
|
|||||||
@ -3,7 +3,6 @@ package com.hbm.handler;
|
|||||||
import java.io.BufferedReader;
|
import java.io.BufferedReader;
|
||||||
import java.io.IOException;
|
import java.io.IOException;
|
||||||
import java.io.InputStreamReader;
|
import java.io.InputStreamReader;
|
||||||
import java.net.MalformedURLException;
|
|
||||||
import java.net.URL;
|
import java.net.URL;
|
||||||
import java.util.ArrayList;
|
import java.util.ArrayList;
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
|
|||||||
@ -551,7 +551,9 @@ public class ItemSyringe extends Item {
|
|||||||
|
|
||||||
if(this == ModItems.syringe_mkunicorn) {
|
if(this == ModItems.syringe_mkunicorn) {
|
||||||
if(!world.isRemote) {
|
if(!world.isRemote) {
|
||||||
HbmLivingProps.setContagion(entity, 3 * 60 * 60 * 20);;
|
HbmLivingProps.setContagion(entity, 3 * 60 * 60 * 20);
|
||||||
|
world.playSoundAtEntity(entity, "hbm:item.syringe", 1.0F, 1.0F);
|
||||||
|
stack.stackSize--;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@ -1282,13 +1282,13 @@ public class ClientProxy extends ServerProxy {
|
|||||||
if(e instanceof EntityLivingBase) {
|
if(e instanceof EntityLivingBase) {
|
||||||
|
|
||||||
double ix = e.posX;
|
double ix = e.posX;
|
||||||
double iy = e.posY - e.getYOffset() + e.getEyeHeight() + 1;
|
double iy = e.posY - e.getYOffset() + e.getEyeHeight() + (e instanceof EntityPlayer ? 1 : 0);
|
||||||
double iz = e.posZ;
|
double iz = e.posZ;
|
||||||
|
|
||||||
Vec3 vec = e.getLookVec();
|
Vec3 vec = e.getLookVec();
|
||||||
|
|
||||||
for(int i = 0; i < 25; i++) {
|
for(int i = 0; i < 25; i++) {
|
||||||
EntityFX fx = new net.minecraft.client.particle.EntityBlockDustFX(world, ix, iy, iz, (vec.xCoord + rand.nextGaussian() * 0.2) * 0.2, (vec.yCoord + rand.nextGaussian() * 0.2) * 0.2, (vec.zCoord + rand.nextGaussian() * 0.2) * 0.2, Blocks.stained_hardened_clay, 13);
|
EntityFX fx = new net.minecraft.client.particle.EntityBlockDustFX(world, ix, iy, iz, (vec.xCoord + rand.nextGaussian() * 0.2) * 0.2, (vec.yCoord + rand.nextGaussian() * 0.2) * 0.2, (vec.zCoord + rand.nextGaussian() * 0.2) * 0.2, Blocks.stained_hardened_clay, (rand.nextBoolean() ? 5 : 13));
|
||||||
ReflectionHelper.setPrivateValue(EntityFX.class, fx, 150 + rand.nextInt(50), "particleMaxAge", "field_70547_e");
|
ReflectionHelper.setPrivateValue(EntityFX.class, fx, 150 + rand.nextInt(50), "particleMaxAge", "field_70547_e");
|
||||||
Minecraft.getMinecraft().effectRenderer.addEffect(fx);
|
Minecraft.getMinecraft().effectRenderer.addEffect(fx);
|
||||||
}
|
}
|
||||||
@ -1302,7 +1302,7 @@ public class ClientProxy extends ServerProxy {
|
|||||||
if(e instanceof EntityLivingBase) {
|
if(e instanceof EntityLivingBase) {
|
||||||
|
|
||||||
double ix = e.posX;
|
double ix = e.posX;
|
||||||
double iy = e.posY - e.getYOffset() + e.getEyeHeight() + 1;
|
double iy = e.posY - e.getYOffset() + e.getEyeHeight() + (e instanceof EntityPlayer ? 1 : 0);
|
||||||
double iz = e.posZ;
|
double iz = e.posZ;
|
||||||
|
|
||||||
Vec3 vec = e.getLookVec();
|
Vec3 vec = e.getLookVec();
|
||||||
|
|||||||
@ -33,7 +33,6 @@ import com.hbm.handler.ArmorModHandler;
|
|||||||
import com.hbm.handler.BossSpawnHandler;
|
import com.hbm.handler.BossSpawnHandler;
|
||||||
import com.hbm.handler.EntityEffectHandler;
|
import com.hbm.handler.EntityEffectHandler;
|
||||||
import com.hbm.handler.RadiationWorldHandler;
|
import com.hbm.handler.RadiationWorldHandler;
|
||||||
import com.hbm.handler.radiation.ChunkRadiationManager;
|
|
||||||
import com.hbm.interfaces.IBomb;
|
import com.hbm.interfaces.IBomb;
|
||||||
import com.hbm.handler.HTTPHandler;
|
import com.hbm.handler.HTTPHandler;
|
||||||
import com.hbm.items.IEquipReceiver;
|
import com.hbm.items.IEquipReceiver;
|
||||||
@ -700,7 +699,7 @@ public class ModEventHandler {
|
|||||||
|
|
||||||
EntityLivingBase e = event.entityLiving;
|
EntityLivingBase e = event.entityLiving;
|
||||||
|
|
||||||
if(HbmLivingProps.getContagion(e) > 0)
|
if(HbmLivingProps.getContagion(e) > 0 && event.ammount < 100)
|
||||||
event.ammount *= 2F;
|
event.ammount *= 2F;
|
||||||
|
|
||||||
for(int i = 1; i < 5; i++) {
|
for(int i = 1; i < 5; i++) {
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user