some conveyor belt improvements, reworked orbital death ray

This commit is contained in:
Bob 2021-01-17 22:09:22 +01:00
parent 96065ca523
commit 3fc90bca44
22 changed files with 357 additions and 206 deletions

View File

@ -1,80 +1,91 @@
# Blender v2.76 (sub 0) OBJ File: '' # Blender v2.79 (sub 0) OBJ File: ''
# www.blender.org # www.blender.org
o Plane o Plane
v -0.250000 0.125000 -0.500000
v 0.250000 0.125000 -0.500000
v 0.500000 0.125000 0.000000
v 0.000000 0.125000 0.500000
v 0.000000 0.000000 0.500000
v -0.500000 0.000000 0.000000 v -0.500000 0.000000 0.000000
v 0.500000 0.000000 0.000000
v 0.250000 0.000000 -0.500000
v -0.500000 0.125000 0.000000 v -0.500000 0.125000 0.000000
v -0.250000 0.000000 -0.500000
v 0.250000 0.000000 0.000000
v -0.250000 0.125000 0.000000 v -0.250000 0.125000 0.000000
v -0.250000 0.000000 0.000000 v 0.250000 0.000000 -0.500000
v 0.250000 0.125000 -0.500000
v 0.250000 0.125000 0.000000 v 0.250000 0.125000 0.000000
vt 0.494975 0.819349 v 0.000000 0.125000 0.500000
vt 0.424264 0.819349 v 0.000000 -0.000000 0.500000
vt 0.424264 0.638698 v 0.500000 0.000000 0.000000
vt 0.141422 1.000000 v 0.500000 0.125000 0.000000
vt 0.070711 1.000000 v 0.250000 0.000000 0.000000
vt 0.070711 0.638698 v -0.250000 0.000000 0.000000
vt 0.700000 0.510958 v -0.250000 0.125000 -0.500000
vt 0.900000 0.255479 v -0.250000 0.000000 -0.500000
vt 1.000000 0.638698 vt 0.333302 0.666510
vt 0.353554 1.000000 vt 0.000094 0.666510
vt 0.282843 1.000000 vt 0.000094 0.000094
vt 0.282843 0.638698 vt 0.176982 0.000077
vt 0.000000 1.000000 vt 0.353731 0.000077
vt 0.000000 0.638698 vt 0.353731 0.707075
vt 0.353554 0.819349 vt 0.250050 0.500000
vt 0.353554 0.638698 vt 0.749950 0.500000
vt 0.400000 0.255479 vt 0.500000 0.999900
vt 0.500000 0.638698 vt 0.999923 0.000077
vt 0.200000 0.510958 vt 0.999923 0.176827
vt 0.212132 1.000000 vt 0.000077 0.176827
vt 0.141422 0.638698 vt 0.000077 0.000077
vt 0.212132 0.638698 vt 0.176827 0.000077
vt 0.494975 0.638698 vt 0.176827 0.999923
vt 0.500000 0.255479 vt 0.000094 0.999906
vt 0.700000 0.000000 vt 0.000094 0.666698
vt 0.600000 0.638698 vt 0.666510 0.666698
vt 1.000000 0.127740 vt 0.749950 0.500000
vt 0.500000 0.127740 vt 0.500000 0.999900
vt 0.000000 0.255479 vt 0.250050 0.500000
vt 0.200000 0.000000 vt 0.176827 0.883979
vt 0.100000 0.638698 vt 0.000077 0.883979
vn 0.000000 0.000000 -1.000000 vt 0.000077 0.176982
vn 1.000000 0.000000 0.000000 vt 0.000050 0.250025
vn 0.000000 1.000000 0.000000 vt 0.000050 0.000050
vn -0.707100 0.000000 0.707100 vt 0.999950 0.000050
vn 0.707100 0.000000 0.707100 vt 0.333302 0.000094
vn 0.000000 -1.000000 0.000000 vt 0.176982 0.707075
vn -1.000000 0.000000 0.000000 vt 0.250050 0.000100
s off vt 0.749950 0.000100
f 6/1/1 9/2/1 12/3/1 vt 0.000100 0.500000
f 8/4/2 2/5/2 14/6/2 vt 0.999900 0.500000
f 14/7/3 12/8/3 4/9/3 vt 0.000077 0.000077
f 5/10/4 4/11/4 9/12/4 vt 0.000077 0.999923
f 7/5/5 3/13/5 4/14/5 vt 0.666510 0.999906
f 11/2/1 14/15/1 3/16/1 vt 0.999900 0.500000
f 11/17/6 5/18/6 13/19/6 vt 0.250050 0.000100
f 13/20/7 12/4/7 1/21/7 vt 0.749950 0.000100
f 10/22/1 1/12/1 2/11/1 vt 0.000100 0.500000
f 13/23/1 6/1/1 12/3/1 vt 0.176827 0.176982
f 11/21/2 8/4/2 14/6/2 vt 0.999950 0.250025
f 14/7/3 2/24/3 1/25/3 vn 0.0000 0.0000 -1.0000
f 4/9/3 3/26/3 14/7/3 vn 1.0000 0.0000 0.0000
f 12/8/3 9/27/3 4/9/3 vn 0.0000 1.0000 0.0000
f 14/7/3 1/25/3 12/8/3 vn -0.7071 0.0000 0.7071
f 6/16/4 5/10/4 9/12/4 vn 0.7071 0.0000 0.7071
f 5/6/5 7/5/5 4/14/5 vn 0.0000 -1.0000 -0.0000
f 7/3/1 11/2/1 3/16/1 vn -1.0000 0.0000 0.0000
f 11/17/6 7/28/6 5/18/6 s 1
f 10/29/6 8/30/6 11/17/6 f 1/1/1 2/2/1 3/3/1
f 5/18/6 6/31/6 13/19/6 f 4/4/2 5/5/2 6/6/2
f 13/19/6 10/29/6 11/17/6 f 6/7/3 3/8/3 7/9/3
f 10/22/7 13/20/7 1/21/7 f 8/10/4 7/11/4 2/12/4
f 8/20/1 10/22/1 2/11/1 f 9/13/5 10/14/5 7/15/5
f 11/16/1 6/17/1 10/18/1
f 11/19/6 8/20/6 12/21/6
f 12/22/7 3/23/7 13/24/7
f 14/25/1 13/26/1 5/27/1
f 12/28/1 1/1/1 3/3/1
f 11/29/2 4/4/2 6/6/2
f 6/7/3 5/30/3 13/31/3
f 7/9/3 10/32/3 6/7/3
f 3/8/3 2/33/3 7/9/3
f 6/7/3 13/31/3 3/8/3
f 1/34/4 8/10/4 2/12/4
f 8/35/5 9/13/5 7/15/5
f 9/36/1 11/16/1 10/18/1
f 11/19/6 9/37/6 8/20/6
f 14/38/6 4/39/6 11/19/6
f 8/20/6 1/40/6 12/21/6
f 12/21/6 14/38/6 11/19/6
f 14/41/7 12/22/7 13/24/7
f 4/42/1 14/25/1 5/27/1

Binary file not shown.

Before

Width:  |  Height:  |  Size: 2.8 KiB

After

Width:  |  Height:  |  Size: 3.5 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 237 B

View File

@ -0,0 +1,3 @@
{
"animation": { }
}

Binary file not shown.

After

Width:  |  Height:  |  Size: 246 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 256 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 177 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 134 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 230 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 302 B

View File

@ -1286,7 +1286,7 @@ public class ModBlocks {
gas_duct_solid = new GasDuctSolid(Material.iron).setBlockName("gas_duct_solid").setHardness(5.0F).setResistance(10.0F).setCreativeTab(MainRegistry.machineTab).setBlockTextureName(RefStrings.MODID + ":gas_duct_solid"); gas_duct_solid = new GasDuctSolid(Material.iron).setBlockName("gas_duct_solid").setHardness(5.0F).setResistance(10.0F).setCreativeTab(MainRegistry.machineTab).setBlockTextureName(RefStrings.MODID + ":gas_duct_solid");
gas_duct = new BlockGasDuct(Material.iron).setBlockName("gas_duct").setHardness(5.0F).setResistance(10.0F).setCreativeTab(MainRegistry.machineTab).setBlockTextureName(RefStrings.MODID + ":gas_duct_icon"); gas_duct = new BlockGasDuct(Material.iron).setBlockName("gas_duct").setHardness(5.0F).setResistance(10.0F).setCreativeTab(MainRegistry.machineTab).setBlockTextureName(RefStrings.MODID + ":gas_duct_icon");
fluid_duct = new BlockFluidDuct(Material.iron).setBlockName("fluid_duct").setHardness(5.0F).setResistance(10.0F).setCreativeTab(MainRegistry.machineTab).setBlockTextureName(RefStrings.MODID + ":fluid_duct_icon"); fluid_duct = new BlockFluidDuct(Material.iron).setBlockName("fluid_duct").setHardness(5.0F).setResistance(10.0F).setCreativeTab(MainRegistry.machineTab).setBlockTextureName(RefStrings.MODID + ":fluid_duct_icon");
conveyor = new BlockConveyor(Material.iron).setBlockName("conveyor").setHardness(0.0F).setResistance(2.0F).setCreativeTab(MainRegistry.machineTab).setBlockTextureName(RefStrings.MODID + ":block_reiium"); conveyor = new BlockConveyor(Material.iron).setBlockName("conveyor").setHardness(0.0F).setResistance(2.0F).setCreativeTab(MainRegistry.machineTab).setBlockTextureName(RefStrings.MODID + ":conveyor");
chain = new BlockChain(Material.iron).setBlockName("dungeon_chain").setHardness(0.25F).setResistance(2.0F).setCreativeTab(MainRegistry.blockTab).setBlockTextureName(RefStrings.MODID + ":chain"); chain = new BlockChain(Material.iron).setBlockName("dungeon_chain").setHardness(0.25F).setResistance(2.0F).setCreativeTab(MainRegistry.blockTab).setBlockTextureName(RefStrings.MODID + ":chain");

View File

@ -61,7 +61,7 @@ public class BlockConveyor extends Block {
@Override @Override
public AxisAlignedBB getCollisionBoundingBoxFromPool(World world, int x, int y, int z) { public AxisAlignedBB getCollisionBoundingBoxFromPool(World world, int x, int y, int z) {
return null; return AxisAlignedBB.getBoundingBox(x, y, z, x + 1, y, z + 1);
} }
@Override @Override

View File

@ -48,8 +48,8 @@ public class EntityMovingItem extends Entity {
public boolean attackEntityFrom(DamageSource source, float amount) { public boolean attackEntityFrom(DamageSource source, float amount) {
if(!worldObj.isRemote) { if(!worldObj.isRemote) {
worldObj.spawnEntityInWorld(new EntityItem(worldObj, posX, posY, posZ, this.getItemStack()));
this.setDead(); this.setDead();
worldObj.spawnEntityInWorld(new EntityItem(worldObj, posX, posY, posZ, this.getItemStack()));
} }
return true; return true;
} }
@ -80,7 +80,12 @@ public class EntityMovingItem extends Entity {
if(worldObj.getBlock((int)Math.floor(posX), (int)Math.floor(posY), (int)Math.floor(posZ)) != ModBlocks.conveyor) { if(worldObj.getBlock((int)Math.floor(posX), (int)Math.floor(posY), (int)Math.floor(posZ)) != ModBlocks.conveyor) {
this.setDead(); this.setDead();
worldObj.spawnEntityInWorld(new EntityItem(worldObj, posX, posY, posZ, this.getItemStack())); EntityItem item = new EntityItem(worldObj, posX, posY, posZ, this.getItemStack());
item.motionX = this.motionX * 3;
item.motionY = 0.1;
item.motionZ = this.motionZ * 3;
item.velocityChanged = true;
worldObj.spawnEntityInWorld(item);
return; return;
} }
} }
@ -104,9 +109,15 @@ public class EntityMovingItem extends Entity {
motionX = -speed * dir.offsetX; motionX = -speed * dir.offsetX;
motionY = -speed * dir.offsetY; motionY = -speed * dir.offsetY;
motionZ = -speed * dir.offsetZ; motionZ = -speed * dir.offsetZ;
this.velocityChanged = true;
} }
this.moveEntity(motionX, motionY, motionZ); this.lastTickPosX = this.prevPosX = this.posX;
this.lastTickPosY = this.prevPosY = this.posY;
this.lastTickPosZ = this.prevPosZ = this.posZ;
this.setPosition(posX + motionX, posY + motionY, posZ + motionZ);
schedule--; schedule--;
} }
} }

View File

@ -1,11 +1,17 @@
package com.hbm.entity.logic; package com.hbm.entity.logic;
import com.hbm.explosion.ExplosionLarge; import com.hbm.entity.projectile.EntityBulletBase;
import com.hbm.explosion.ExplosionNT;
import com.hbm.handler.BulletConfigSyncingUtil;
import com.hbm.packet.AuxParticlePacketNT;
import com.hbm.packet.PacketDispatcher;
import cpw.mods.fml.common.network.NetworkRegistry.TargetPoint;
import cpw.mods.fml.relauncher.Side; import cpw.mods.fml.relauncher.Side;
import cpw.mods.fml.relauncher.SideOnly; import cpw.mods.fml.relauncher.SideOnly;
import net.minecraft.entity.Entity; import net.minecraft.entity.Entity;
import net.minecraft.nbt.NBTTagCompound; import net.minecraft.nbt.NBTTagCompound;
import net.minecraft.util.Vec3;
import net.minecraft.world.World; import net.minecraft.world.World;
public class EntityDeathBlast extends Entity { public class EntityDeathBlast extends Entity {
@ -32,7 +38,35 @@ public class EntityDeathBlast extends Entity {
if(this.ticksExisted >= maxAge && !worldObj.isRemote) { if(this.ticksExisted >= maxAge && !worldObj.isRemote) {
this.setDead(); this.setDead();
ExplosionLarge.explodeFire(worldObj, posX, posY, posZ, 25, true, true, true); /*new ExplosionNT(worldObj, null, posX, posY, posZ, 35).addAllAttrib(ExplosionNT.nukeAttribs).explode();
new ExplosionNT(worldObj, null, posX + 10, posY, posZ, 20).addAllAttrib(ExplosionNT.nukeAttribs).explode();
new ExplosionNT(worldObj, null, posX - 10, posY, posZ, 20).addAllAttrib(ExplosionNT.nukeAttribs).explode();
new ExplosionNT(worldObj, null, posX, posY, posZ + 10, 20).addAllAttrib(ExplosionNT.nukeAttribs).explode();
new ExplosionNT(worldObj, null, posX, posY, posZ - 10, 20).addAllAttrib(ExplosionNT.nukeAttribs).explode();
for(int k = 1; k < 6; k++)
new ExplosionNT(worldObj, null, posX, posY - k * 7, posZ, 20).addAllAttrib(ExplosionNT.nukeAttribs).explode();*/
worldObj.spawnEntityInWorld(EntityNukeExplosionMK4.statFacNoRad(worldObj, 40, posX, posY, posZ).mute());
int count = 100;
for(int i = 0; i < count; i++) {
Vec3 vec = Vec3.createVectorHelper(0.2, 0, 0);
vec.rotateAroundY((float)(2 * Math.PI * i / (float)count));
EntityBulletBase laser = new EntityBulletBase(worldObj, BulletConfigSyncingUtil.MASKMAN_BOLT);
laser.setPosition(posX, posY + 2, posZ);
laser.motionX = vec.xCoord;
laser.motionZ = vec.zCoord;
laser.motionY = -0.01;
worldObj.spawnEntityInWorld(laser);
}
NBTTagCompound data = new NBTTagCompound();
data.setString("type", "muke");
PacketDispatcher.wrapper.sendToAllAround(new AuxParticlePacketNT(data, posX, posY + 0.5, posZ), new TargetPoint(worldObj.provider.dimensionId, posX, posY, posZ, 250));
worldObj.playSoundEffect(posX, posY, posZ, "hbm:weapon.mukeExplosion", 25.0F, 0.9F);
} }
} }

View File

@ -0,0 +1,90 @@
package com.hbm.handler;
import com.hbm.config.RadiationConfig;
import com.hbm.extprop.HbmLivingProps;
import com.hbm.packet.AuxParticlePacketNT;
import com.hbm.packet.PacketDispatcher;
import com.hbm.packet.ExtPropPacket;
import com.hbm.saveddata.AuxSavedData;
import com.hbm.saveddata.RadiationSavedData;
import com.hbm.util.ContaminationUtil;
import cpw.mods.fml.common.network.NetworkRegistry.TargetPoint;
import net.minecraft.entity.EntityLivingBase;
import net.minecraft.entity.player.EntityPlayer;
import net.minecraft.entity.player.EntityPlayerMP;
import net.minecraft.nbt.NBTTagCompound;
import net.minecraft.util.MathHelper;
import net.minecraft.world.World;
import net.minecraft.world.chunk.Chunk;
public class EntityEffectHandler {
public static void onUpdate(EntityLivingBase entity) {
if(!entity.worldObj.isRemote && entity instanceof EntityPlayerMP) {
NBTTagCompound data = new NBTTagCompound();
HbmLivingProps props = HbmLivingProps.getData(entity);
props.saveNBTData(data);
PacketDispatcher.wrapper.sendTo(new ExtPropPacket(data), (EntityPlayerMP) entity);
}
if(HbmLivingProps.getRadiation(entity) > 0)
handleRadiation(entity);
if(HbmLivingProps.getDigamma(entity) > 0)
handleDigamma(entity);
}
private static void handleRadiation(EntityLivingBase entity) {
World world = entity.worldObj;
if(world.isRemote)
return;
if(entity instanceof EntityPlayer && ((EntityPlayer)entity).capabilities.isCreativeMode)
return;
RadiationSavedData data = RadiationSavedData.getData(world);
int ix = (int)MathHelper.floor_double(entity.posX);
int iy = (int)MathHelper.floor_double(entity.posY);
int iz = (int)MathHelper.floor_double(entity.posZ);
if(world.getTotalWorldTime() % 20 == 0) {
Chunk chunk = world.getChunkFromBlockCoords(ix, iz);
float rad = data.getRadNumFromCoord(chunk.xPosition, chunk.zPosition);
if(world.provider.isHellWorld && RadiationConfig.hellRad > 0 && rad < RadiationConfig.hellRad)
rad = RadiationConfig.hellRad;
if(rad > 0) {
ContaminationUtil.applyRadData(entity, rad);
}
if(entity.worldObj.isRaining() && RadiationConfig.cont > 0 && AuxSavedData.getThunder(entity.worldObj) > 0 && entity.worldObj.canBlockSeeTheSky(ix, iy, iz)) {
ContaminationUtil.applyRadData(entity, RadiationConfig.cont * 0.01F);
}
}
}
private static void handleDigamma(EntityLivingBase entity) {
if(!entity.worldObj.isRemote) {
float digamma = HbmLivingProps.getDigamma(entity);
int chance = Math.max(10 - (int)(digamma), 1);
if(chance == 1 || entity.getRNG().nextInt(chance) == 0) {
NBTTagCompound data = new NBTTagCompound();
data.setString("type", "digammaDecay");
data.setInteger("entity", entity.getEntityId());
PacketDispatcher.wrapper.sendToAllAround(new AuxParticlePacketNT(data, 0, 0, 0), new TargetPoint(entity.dimension, entity.posX, entity.posY, entity.posZ, 25));
}
}
}
}

View File

@ -12,7 +12,9 @@ import net.minecraft.client.particle.EntityReddustFX;
import net.minecraft.client.renderer.entity.RenderSnowball; import net.minecraft.client.renderer.entity.RenderSnowball;
import net.minecraft.client.renderer.texture.TextureManager; import net.minecraft.client.renderer.texture.TextureManager;
import net.minecraft.entity.Entity; import net.minecraft.entity.Entity;
import net.minecraft.entity.EntityLivingBase;
import net.minecraft.entity.player.EntityPlayer; import net.minecraft.entity.player.EntityPlayer;
import net.minecraft.init.Blocks;
import net.minecraft.item.Item; import net.minecraft.item.Item;
import net.minecraft.nbt.NBTTagCompound; import net.minecraft.nbt.NBTTagCompound;
import net.minecraft.util.MovingObjectPosition; import net.minecraft.util.MovingObjectPosition;
@ -1051,30 +1053,26 @@ public class ClientProxy extends ServerProxy {
player.attackedAtYaw = 0F; player.attackedAtYaw = 0F;
} }
if("digammaDecay".equals(type)) {
Entity e = world.getEntityByID(data.getInteger("entity"));
if(e instanceof EntityLivingBase) {
double ix = e.boundingBox.minX - 0.2 + (e.boundingBox.maxX - e.boundingBox.minX + 0.4) * rand.nextDouble();
double iy = e.boundingBox.minY + (e.boundingBox.maxY - e.boundingBox.minY + 0.2) * rand.nextDouble();
double iz = e.boundingBox.minZ - 0.2 + (e.boundingBox.maxZ - e.boundingBox.minZ + 0.4) * rand.nextDouble();
EntityFX fx = new net.minecraft.client.particle.EntityBlockDustFX(world, ix, iy, iz, 0, 0, 0, Blocks.soul_sand, 0);
ReflectionHelper.setPrivateValue(EntityFX.class, fx, 150 + rand.nextInt(50), "particleMaxAge", "field_70547_e");
Minecraft.getMinecraft().effectRenderer.addEffect(fx);
}
}
if("hadron".equals(type)) { if("hadron".equals(type)) {
/*for(int i = 0; i < 30; i++) {
EntityFX fx = null;
if(i % 3 == 0) {
fx = new net.minecraft.client.particle.EntityReddustFX(world, x, y, z, 0.0F, 0.0F, 0.0F);
}
if(i % 3 == 1) {
fx = new net.minecraft.client.particle.EntityReddustFX(world, x, y, z, 0.01F, 0.01F, 1F);
}
if(i % 3 == 2) {
fx = new net.minecraft.client.particle.EntityReddustFX(world, x, y, z, 1F, 1F, 0.1F);
}
if(fx != null) {
fx.motionX = rand.nextGaussian() * 0.1;
fx.motionY = rand.nextGaussian() * 0.1;
fx.motionZ = rand.nextGaussian() * 0.1;
Minecraft.getMinecraft().effectRenderer.addEffect(fx);
}
}*/
Minecraft.getMinecraft().effectRenderer.addEffect(new ParticleHadron(man, world, x, y, z)); Minecraft.getMinecraft().effectRenderer.addEffect(new ParticleHadron(man, world, x, y, z));
} }
} }

View File

@ -28,6 +28,7 @@ import com.hbm.entity.projectile.EntityMeteor;
import com.hbm.extprop.HbmLivingProps; import com.hbm.extprop.HbmLivingProps;
import com.hbm.extprop.HbmPlayerProps; import com.hbm.extprop.HbmPlayerProps;
import com.hbm.handler.BossSpawnHandler; import com.hbm.handler.BossSpawnHandler;
import com.hbm.handler.EntityEffectHandler;
import com.hbm.handler.RadiationWorldHandler; import com.hbm.handler.RadiationWorldHandler;
import com.hbm.handler.HTTPHandler; import com.hbm.handler.HTTPHandler;
import com.hbm.items.ModItems; import com.hbm.items.ModItems;
@ -39,7 +40,7 @@ import com.hbm.lib.ModDamageSource;
import com.hbm.lib.RefStrings; import com.hbm.lib.RefStrings;
import com.hbm.packet.PacketDispatcher; import com.hbm.packet.PacketDispatcher;
import com.hbm.packet.PlayerInformPacket; import com.hbm.packet.PlayerInformPacket;
import com.hbm.packet.RadSurveyPacket; import com.hbm.packet.ExtPropPacket;
import com.hbm.saveddata.AuxSavedData; import com.hbm.saveddata.AuxSavedData;
import com.hbm.saveddata.RadiationSavedData; import com.hbm.saveddata.RadiationSavedData;
import com.hbm.util.ArmorUtil; import com.hbm.util.ArmorUtil;
@ -91,6 +92,7 @@ import net.minecraftforge.event.entity.EntityJoinWorldEvent;
import net.minecraftforge.event.entity.living.LivingAttackEvent; import net.minecraftforge.event.entity.living.LivingAttackEvent;
import net.minecraftforge.event.entity.living.LivingDeathEvent; import net.minecraftforge.event.entity.living.LivingDeathEvent;
import net.minecraftforge.event.entity.living.LivingEvent.LivingJumpEvent; import net.minecraftforge.event.entity.living.LivingEvent.LivingJumpEvent;
import net.minecraftforge.event.entity.living.LivingEvent.LivingUpdateEvent;
import net.minecraftforge.event.entity.living.LivingFallEvent; import net.minecraftforge.event.entity.living.LivingFallEvent;
import net.minecraftforge.event.entity.living.LivingHurtEvent; import net.minecraftforge.event.entity.living.LivingHurtEvent;
import net.minecraftforge.event.entity.living.LivingSpawnEvent; import net.minecraftforge.event.entity.living.LivingSpawnEvent;
@ -222,6 +224,11 @@ public class ModEventHandler
} }
} }
@SubscribeEvent
public void onLivingUpdate(LivingUpdateEvent event) {
EntityEffectHandler.onUpdate(event.entityLiving);
}
@SubscribeEvent @SubscribeEvent
public void worldTick(WorldTickEvent event) { public void worldTick(WorldTickEvent event) {
@ -281,15 +288,6 @@ public class ModEventHandler
data.worldObj = event.world; data.worldObj = event.world;
} }
for(Object o : event.world.playerEntities) {
if(o instanceof EntityPlayerMP) {
EntityPlayerMP player = (EntityPlayerMP)o;
//TODO: replace with packet that sends all to-sync data
PacketDispatcher.wrapper.sendTo(new RadSurveyPacket(HbmLivingProps.getRadiation(player)), player);
}
}
if(event.world.getTotalWorldTime() % 20 == 0 && event.phase == Phase.START) { if(event.world.getTotalWorldTime() % 20 == 0 && event.phase == Phase.START) {
data.updateSystem(); data.updateSystem();
} }
@ -297,6 +295,10 @@ public class ModEventHandler
List<Object> oList = new ArrayList<Object>(); List<Object> oList = new ArrayList<Object>();
oList.addAll(event.world.loadedEntityList); oList.addAll(event.world.loadedEntityList);
/**
* REMOVE THIS V V V
*/
for(Object e : oList) { for(Object e : oList) {
if(e instanceof EntityLivingBase) { if(e instanceof EntityLivingBase) {
@ -306,25 +308,6 @@ public class ModEventHandler
if(entity instanceof EntityPlayer && ((EntityPlayer)entity).capabilities.isCreativeMode) if(entity instanceof EntityPlayer && ((EntityPlayer)entity).capabilities.isCreativeMode)
continue; continue;
if(event.world.getTotalWorldTime() % 20 == 0) {
Chunk chunk = entity.worldObj.getChunkFromBlockCoords((int)entity.posX, (int)entity.posZ);
float rad = data.getRadNumFromCoord(chunk.xPosition, chunk.zPosition);
if(event.world.provider.isHellWorld && RadiationConfig.hellRad > 0 && rad < RadiationConfig.hellRad)
rad = RadiationConfig.hellRad;
if(rad > 0) {
ContaminationUtil.applyRadData(entity, rad / 2);
}
if(entity.worldObj.isRaining() && RadiationConfig.cont > 0 && AuxSavedData.getThunder(entity.worldObj) > 0 &&
entity.worldObj.canBlockSeeTheSky(MathHelper.floor_double(entity.posX), MathHelper.floor_double(entity.posY), MathHelper.floor_double(entity.posZ))) {
ContaminationUtil.applyRadData(entity, RadiationConfig.cont * 0.005F);
}
}
float eRad = HbmLivingProps.getRadiation(entity); float eRad = HbmLivingProps.getRadiation(entity);
if(entity instanceof EntityCreeper && eRad >= 200 && entity.getHealth() > 0) { if(entity instanceof EntityCreeper && eRad >= 200 && entity.getHealth() > 0) {
@ -445,6 +428,9 @@ public class ModEventHandler
} }
} }
} }
/**
* REMOVE THIS ^ ^ ^
*/
} }
} }
/// RADIATION STUFF END /// /// RADIATION STUFF END ///

View File

@ -0,0 +1,76 @@
package com.hbm.packet;
import java.io.IOException;
import com.hbm.extprop.HbmLivingProps;
import cpw.mods.fml.common.network.simpleimpl.IMessage;
import cpw.mods.fml.common.network.simpleimpl.IMessageHandler;
import cpw.mods.fml.common.network.simpleimpl.MessageContext;
import cpw.mods.fml.relauncher.Side;
import cpw.mods.fml.relauncher.SideOnly;
import io.netty.buffer.ByteBuf;
import io.netty.buffer.Unpooled;
import net.minecraft.client.Minecraft;
import net.minecraft.nbt.NBTTagCompound;
import net.minecraft.network.PacketBuffer;
public class ExtPropPacket implements IMessage {
PacketBuffer buffer;
public ExtPropPacket() { }
public ExtPropPacket(NBTTagCompound nbt) {
this.buffer = new PacketBuffer(Unpooled.buffer());
try {
buffer.writeNBTTagCompoundToBuffer(nbt);
} catch (IOException e) {
e.printStackTrace();
}
}
@Override
public void fromBytes(ByteBuf buf) {
if (buffer == null) {
buffer = new PacketBuffer(Unpooled.buffer());
}
buffer.writeBytes(buf);
}
@Override
public void toBytes(ByteBuf buf) {
if (buffer == null) {
buffer = new PacketBuffer(Unpooled.buffer());
}
buf.writeBytes(buffer);
}
public static class Handler implements IMessageHandler<ExtPropPacket, IMessage> {
@Override
@SideOnly(Side.CLIENT)
public IMessage onMessage(ExtPropPacket m, MessageContext ctx) {
if(Minecraft.getMinecraft().theWorld == null)
return null;
try {
NBTTagCompound nbt = m.buffer.readNBTTagCompoundFromBuffer();
HbmLivingProps props = HbmLivingProps.getData(Minecraft.getMinecraft().thePlayer);
props.loadNBTData(nbt);
} catch (IOException e) {
e.printStackTrace();
}
return null;
}
}
}

View File

@ -70,7 +70,7 @@ public class PacketDispatcher {
//Packet to send block break particles //Packet to send block break particles
wrapper.registerMessage(ParticleBurstPacket.Handler.class, ParticleBurstPacket.class, i++, Side.CLIENT); wrapper.registerMessage(ParticleBurstPacket.Handler.class, ParticleBurstPacket.class, i++, Side.CLIENT);
//Packet to send chunk radiation info to individual players //Packet to send chunk radiation info to individual players
wrapper.registerMessage(RadSurveyPacket.Handler.class, RadSurveyPacket.class, i++, Side.CLIENT); wrapper.registerMessage(ExtPropPacket.Handler.class, ExtPropPacket.class, i++, Side.CLIENT);
//Entity sound packet that keeps client and server separated //Entity sound packet that keeps client and server separated
wrapper.registerMessage(LoopedEntitySoundPacket.Handler.class, LoopedEntitySoundPacket.class, i++, Side.CLIENT); wrapper.registerMessage(LoopedEntitySoundPacket.Handler.class, LoopedEntitySoundPacket.class, i++, Side.CLIENT);
//Entity sound packet that keeps client and server separated //Entity sound packet that keeps client and server separated

View File

@ -1,54 +0,0 @@
package com.hbm.packet;
import com.hbm.extprop.HbmLivingProps;
import cpw.mods.fml.common.network.simpleimpl.IMessage;
import cpw.mods.fml.common.network.simpleimpl.IMessageHandler;
import cpw.mods.fml.common.network.simpleimpl.MessageContext;
import cpw.mods.fml.relauncher.Side;
import cpw.mods.fml.relauncher.SideOnly;
import io.netty.buffer.ByteBuf;
import net.minecraft.client.Minecraft;
import net.minecraft.entity.player.EntityPlayer;
public class RadSurveyPacket implements IMessage {
float rad;
public RadSurveyPacket()
{
}
public RadSurveyPacket(float rad)
{
this.rad = rad;
}
@Override
public void fromBytes(ByteBuf buf) {
rad = buf.readFloat();
}
@Override
public void toBytes(ByteBuf buf) {
buf.writeFloat(rad);
}
public static class Handler implements IMessageHandler<RadSurveyPacket, IMessage> {
@Override
@SideOnly(Side.CLIENT)
public IMessage onMessage(RadSurveyPacket m, MessageContext ctx) {
try {
EntityPlayer player = Minecraft.getMinecraft().thePlayer;
HbmLivingProps.setRadiation(player, m.rad);
} catch (Exception x) { }
return null;
}
}
}

View File

@ -41,30 +41,23 @@ public class RenderConveyor implements ISimpleBlockRenderingHandler {
public boolean renderWorldBlock(IBlockAccess world, int x, int y, int z, Block block, int modelId, RenderBlocks renderer) { public boolean renderWorldBlock(IBlockAccess world, int x, int y, int z, Block block, int modelId, RenderBlocks renderer) {
Tessellator tessellator = Tessellator.instance; Tessellator tessellator = Tessellator.instance;
IIcon iicon = block.getIcon(0, world.getBlockMetadata(x, y, z)); int meta = world.getBlockMetadata(x, y, z);
tessellator.setBrightness(block.getMixedBrightnessForBlock(world, x, y, z)); tessellator.setBrightness(block.getMixedBrightnessForBlock(world, x, y, z));
tessellator.setColorOpaque_F(1, 1, 1); tessellator.setColorOpaque_F(1, 1, 1);
if (renderer.hasOverrideBlockTexture()) if(meta == 2)
{ renderer.uvRotateTop = 3;
iicon = renderer.overrideBlockTexture; if(meta == 3)
} renderer.uvRotateTop = 0;
if(meta == 4)
renderer.uvRotateTop = 1;
if(meta == 5)
renderer.uvRotateTop = 2;
float rotation = 0; renderer.setRenderBounds((double)0, 0.0D, (double)0, (double)1, 0.125D, (double)1);
renderer.renderStandardBlock(block, x, y, z);
if(world.getBlockMetadata(x, y, z) == 3) renderer.uvRotateTop = 0;
rotation = 180F / 180F * (float)Math.PI;
if(world.getBlockMetadata(x, y, z) == 4)
rotation = 90F / 180F * (float)Math.PI;
if(world.getBlockMetadata(x, y, z) == 5)
rotation = 270F / 180F * (float)Math.PI;
tessellator.addTranslation(x + 0.5F, y, z + 0.5F);
ObjUtil.renderWithIcon((WavefrontObject) ResourceManager.arrow, iicon, tessellator, rotation, true);
tessellator.addTranslation(-x - 0.5F, -y, -z - 0.5F);
return true; return true;
} }

View File

@ -6,6 +6,7 @@ import com.hbm.main.ResourceManager;
import com.hbm.render.loader.ModelRendererObj; import com.hbm.render.loader.ModelRendererObj;
import net.minecraft.client.Minecraft; import net.minecraft.client.Minecraft;
import net.minecraft.client.renderer.OpenGlHelper;
import net.minecraft.entity.Entity; import net.minecraft.entity.Entity;
public class ModelArmorDigamma extends ModelArmorBase { public class ModelArmorDigamma extends ModelArmorBase {
@ -43,6 +44,8 @@ public class ModelArmorDigamma extends ModelArmorBase {
if(type == 1) { if(type == 1) {
Minecraft.getMinecraft().renderEngine.bindTexture(ResourceManager.fau_chest); Minecraft.getMinecraft().renderEngine.bindTexture(ResourceManager.fau_chest);
body.render(par7); body.render(par7);
GL11.glEnable(GL11.GL_BLEND);
OpenGlHelper.glBlendFunc(770, 771, 1, 0);
Minecraft.getMinecraft().renderEngine.bindTexture(ResourceManager.fau_cassette); Minecraft.getMinecraft().renderEngine.bindTexture(ResourceManager.fau_cassette);
cassette.render(par7); cassette.render(par7);
Minecraft.getMinecraft().renderEngine.bindTexture(ResourceManager.fau_arm); Minecraft.getMinecraft().renderEngine.bindTexture(ResourceManager.fau_arm);