some conveyor belt improvements, reworked orbital death ray
@ -1,80 +1,91 @@
|
||||
# Blender v2.76 (sub 0) OBJ File: ''
|
||||
# Blender v2.79 (sub 0) OBJ File: ''
|
||||
# www.blender.org
|
||||
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.250000 0.000000 -0.500000
|
||||
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.000000 0.000000
|
||||
v 0.250000 0.000000 -0.500000
|
||||
v 0.250000 0.125000 -0.500000
|
||||
v 0.250000 0.125000 0.000000
|
||||
vt 0.494975 0.819349
|
||||
vt 0.424264 0.819349
|
||||
vt 0.424264 0.638698
|
||||
vt 0.141422 1.000000
|
||||
vt 0.070711 1.000000
|
||||
vt 0.070711 0.638698
|
||||
vt 0.700000 0.510958
|
||||
vt 0.900000 0.255479
|
||||
vt 1.000000 0.638698
|
||||
vt 0.353554 1.000000
|
||||
vt 0.282843 1.000000
|
||||
vt 0.282843 0.638698
|
||||
vt 0.000000 1.000000
|
||||
vt 0.000000 0.638698
|
||||
vt 0.353554 0.819349
|
||||
vt 0.353554 0.638698
|
||||
vt 0.400000 0.255479
|
||||
vt 0.500000 0.638698
|
||||
vt 0.200000 0.510958
|
||||
vt 0.212132 1.000000
|
||||
vt 0.141422 0.638698
|
||||
vt 0.212132 0.638698
|
||||
vt 0.494975 0.638698
|
||||
vt 0.500000 0.255479
|
||||
vt 0.700000 0.000000
|
||||
vt 0.600000 0.638698
|
||||
vt 1.000000 0.127740
|
||||
vt 0.500000 0.127740
|
||||
vt 0.000000 0.255479
|
||||
vt 0.200000 0.000000
|
||||
vt 0.100000 0.638698
|
||||
vn 0.000000 0.000000 -1.000000
|
||||
vn 1.000000 0.000000 0.000000
|
||||
vn 0.000000 1.000000 0.000000
|
||||
vn -0.707100 0.000000 0.707100
|
||||
vn 0.707100 0.000000 0.707100
|
||||
vn 0.000000 -1.000000 0.000000
|
||||
vn -1.000000 0.000000 0.000000
|
||||
s off
|
||||
f 6/1/1 9/2/1 12/3/1
|
||||
f 8/4/2 2/5/2 14/6/2
|
||||
f 14/7/3 12/8/3 4/9/3
|
||||
f 5/10/4 4/11/4 9/12/4
|
||||
f 7/5/5 3/13/5 4/14/5
|
||||
f 11/2/1 14/15/1 3/16/1
|
||||
f 11/17/6 5/18/6 13/19/6
|
||||
f 13/20/7 12/4/7 1/21/7
|
||||
f 10/22/1 1/12/1 2/11/1
|
||||
f 13/23/1 6/1/1 12/3/1
|
||||
f 11/21/2 8/4/2 14/6/2
|
||||
f 14/7/3 2/24/3 1/25/3
|
||||
f 4/9/3 3/26/3 14/7/3
|
||||
f 12/8/3 9/27/3 4/9/3
|
||||
f 14/7/3 1/25/3 12/8/3
|
||||
f 6/16/4 5/10/4 9/12/4
|
||||
f 5/6/5 7/5/5 4/14/5
|
||||
f 7/3/1 11/2/1 3/16/1
|
||||
f 11/17/6 7/28/6 5/18/6
|
||||
f 10/29/6 8/30/6 11/17/6
|
||||
f 5/18/6 6/31/6 13/19/6
|
||||
f 13/19/6 10/29/6 11/17/6
|
||||
f 10/22/7 13/20/7 1/21/7
|
||||
f 8/20/1 10/22/1 2/11/1
|
||||
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.125000 0.000000
|
||||
v 0.250000 0.000000 0.000000
|
||||
v -0.250000 0.000000 0.000000
|
||||
v -0.250000 0.125000 -0.500000
|
||||
v -0.250000 0.000000 -0.500000
|
||||
vt 0.333302 0.666510
|
||||
vt 0.000094 0.666510
|
||||
vt 0.000094 0.000094
|
||||
vt 0.176982 0.000077
|
||||
vt 0.353731 0.000077
|
||||
vt 0.353731 0.707075
|
||||
vt 0.250050 0.500000
|
||||
vt 0.749950 0.500000
|
||||
vt 0.500000 0.999900
|
||||
vt 0.999923 0.000077
|
||||
vt 0.999923 0.176827
|
||||
vt 0.000077 0.176827
|
||||
vt 0.000077 0.000077
|
||||
vt 0.176827 0.000077
|
||||
vt 0.176827 0.999923
|
||||
vt 0.000094 0.999906
|
||||
vt 0.000094 0.666698
|
||||
vt 0.666510 0.666698
|
||||
vt 0.749950 0.500000
|
||||
vt 0.500000 0.999900
|
||||
vt 0.250050 0.500000
|
||||
vt 0.176827 0.883979
|
||||
vt 0.000077 0.883979
|
||||
vt 0.000077 0.176982
|
||||
vt 0.000050 0.250025
|
||||
vt 0.000050 0.000050
|
||||
vt 0.999950 0.000050
|
||||
vt 0.333302 0.000094
|
||||
vt 0.176982 0.707075
|
||||
vt 0.250050 0.000100
|
||||
vt 0.749950 0.000100
|
||||
vt 0.000100 0.500000
|
||||
vt 0.999900 0.500000
|
||||
vt 0.000077 0.000077
|
||||
vt 0.000077 0.999923
|
||||
vt 0.666510 0.999906
|
||||
vt 0.999900 0.500000
|
||||
vt 0.250050 0.000100
|
||||
vt 0.749950 0.000100
|
||||
vt 0.000100 0.500000
|
||||
vt 0.176827 0.176982
|
||||
vt 0.999950 0.250025
|
||||
vn 0.0000 0.0000 -1.0000
|
||||
vn 1.0000 0.0000 0.0000
|
||||
vn 0.0000 1.0000 0.0000
|
||||
vn -0.7071 0.0000 0.7071
|
||||
vn 0.7071 0.0000 0.7071
|
||||
vn 0.0000 -1.0000 -0.0000
|
||||
vn -1.0000 0.0000 0.0000
|
||||
s 1
|
||||
f 1/1/1 2/2/1 3/3/1
|
||||
f 4/4/2 5/5/2 6/6/2
|
||||
f 6/7/3 3/8/3 7/9/3
|
||||
f 8/10/4 7/11/4 2/12/4
|
||||
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
|
||||
|
||||
|
Before Width: | Height: | Size: 2.8 KiB After Width: | Height: | Size: 3.5 KiB |
BIN
src/main/java/assets/hbm/textures/blocks/conveyor.png
Normal file
|
After Width: | Height: | Size: 237 B |
@ -0,0 +1,3 @@
|
||||
{
|
||||
"animation": { }
|
||||
}
|
||||
BIN
src/main/java/assets/hbm/textures/blocks/crane_in.png
Normal file
|
After Width: | Height: | Size: 246 B |
BIN
src/main/java/assets/hbm/textures/blocks/crane_out.png
Normal file
|
After Width: | Height: | Size: 256 B |
BIN
src/main/java/assets/hbm/textures/blocks/crane_side.png
Normal file
|
After Width: | Height: | Size: 177 B |
BIN
src/main/java/assets/hbm/textures/blocks/crane_top.png
Normal file
|
After Width: | Height: | Size: 134 B |
|
After Width: | Height: | Size: 230 B |
BIN
src/main/java/assets/hbm/textures/blocks/crate_entangled_top.png
Normal file
|
After Width: | Height: | Size: 302 B |
@ -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 = 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");
|
||||
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");
|
||||
|
||||
|
||||
@ -61,7 +61,7 @@ public class BlockConveyor extends Block {
|
||||
|
||||
@Override
|
||||
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
|
||||
|
||||
@ -48,8 +48,8 @@ public class EntityMovingItem extends Entity {
|
||||
public boolean attackEntityFrom(DamageSource source, float amount) {
|
||||
|
||||
if(!worldObj.isRemote) {
|
||||
worldObj.spawnEntityInWorld(new EntityItem(worldObj, posX, posY, posZ, this.getItemStack()));
|
||||
this.setDead();
|
||||
worldObj.spawnEntityInWorld(new EntityItem(worldObj, posX, posY, posZ, this.getItemStack()));
|
||||
}
|
||||
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) {
|
||||
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;
|
||||
}
|
||||
}
|
||||
@ -104,9 +109,15 @@ public class EntityMovingItem extends Entity {
|
||||
motionX = -speed * dir.offsetX;
|
||||
motionY = -speed * dir.offsetY;
|
||||
motionZ = -speed * dir.offsetZ;
|
||||
|
||||
this.velocityChanged = true;
|
||||
}
|
||||
|
||||
this.lastTickPosX = this.prevPosX = this.posX;
|
||||
this.lastTickPosY = this.prevPosY = this.posY;
|
||||
this.lastTickPosZ = this.prevPosZ = this.posZ;
|
||||
|
||||
this.moveEntity(motionX, motionY, motionZ);
|
||||
this.setPosition(posX + motionX, posY + motionY, posZ + motionZ);
|
||||
schedule--;
|
||||
}
|
||||
}
|
||||
|
||||
@ -1,11 +1,17 @@
|
||||
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.SideOnly;
|
||||
import net.minecraft.entity.Entity;
|
||||
import net.minecraft.nbt.NBTTagCompound;
|
||||
import net.minecraft.util.Vec3;
|
||||
import net.minecraft.world.World;
|
||||
|
||||
public class EntityDeathBlast extends Entity {
|
||||
@ -31,8 +37,36 @@ public class EntityDeathBlast extends Entity {
|
||||
|
||||
if(this.ticksExisted >= maxAge && !worldObj.isRemote) {
|
||||
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);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
90
src/main/java/com/hbm/handler/EntityEffectHandler.java
Normal 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));
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
@ -12,7 +12,9 @@ import net.minecraft.client.particle.EntityReddustFX;
|
||||
import net.minecraft.client.renderer.entity.RenderSnowball;
|
||||
import net.minecraft.client.renderer.texture.TextureManager;
|
||||
import net.minecraft.entity.Entity;
|
||||
import net.minecraft.entity.EntityLivingBase;
|
||||
import net.minecraft.entity.player.EntityPlayer;
|
||||
import net.minecraft.init.Blocks;
|
||||
import net.minecraft.item.Item;
|
||||
import net.minecraft.nbt.NBTTagCompound;
|
||||
import net.minecraft.util.MovingObjectPosition;
|
||||
@ -1051,29 +1053,25 @@ public class ClientProxy extends ServerProxy {
|
||||
player.attackedAtYaw = 0F;
|
||||
}
|
||||
|
||||
if("hadron".equals(type)) {
|
||||
if("digammaDecay".equals(type)) {
|
||||
|
||||
/*for(int i = 0; i < 30; i++) {
|
||||
|
||||
EntityFX fx = null;
|
||||
Entity e = world.getEntityByID(data.getInteger("entity"));
|
||||
|
||||
if(e instanceof EntityLivingBase) {
|
||||
|
||||
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);
|
||||
}
|
||||
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();
|
||||
|
||||
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);
|
||||
}
|
||||
}*/
|
||||
|
||||
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)) {
|
||||
|
||||
Minecraft.getMinecraft().effectRenderer.addEffect(new ParticleHadron(man, world, x, y, z));
|
||||
}
|
||||
|
||||
@ -28,6 +28,7 @@ import com.hbm.entity.projectile.EntityMeteor;
|
||||
import com.hbm.extprop.HbmLivingProps;
|
||||
import com.hbm.extprop.HbmPlayerProps;
|
||||
import com.hbm.handler.BossSpawnHandler;
|
||||
import com.hbm.handler.EntityEffectHandler;
|
||||
import com.hbm.handler.RadiationWorldHandler;
|
||||
import com.hbm.handler.HTTPHandler;
|
||||
import com.hbm.items.ModItems;
|
||||
@ -39,7 +40,7 @@ import com.hbm.lib.ModDamageSource;
|
||||
import com.hbm.lib.RefStrings;
|
||||
import com.hbm.packet.PacketDispatcher;
|
||||
import com.hbm.packet.PlayerInformPacket;
|
||||
import com.hbm.packet.RadSurveyPacket;
|
||||
import com.hbm.packet.ExtPropPacket;
|
||||
import com.hbm.saveddata.AuxSavedData;
|
||||
import com.hbm.saveddata.RadiationSavedData;
|
||||
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.LivingDeathEvent;
|
||||
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.LivingHurtEvent;
|
||||
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
|
||||
public void worldTick(WorldTickEvent event) {
|
||||
|
||||
@ -281,15 +288,6 @@ public class ModEventHandler
|
||||
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) {
|
||||
data.updateSystem();
|
||||
}
|
||||
@ -297,6 +295,10 @@ public class ModEventHandler
|
||||
List<Object> oList = new ArrayList<Object>();
|
||||
oList.addAll(event.world.loadedEntityList);
|
||||
|
||||
|
||||
/**
|
||||
* REMOVE THIS V V V
|
||||
*/
|
||||
for(Object e : oList) {
|
||||
if(e instanceof EntityLivingBase) {
|
||||
|
||||
@ -305,25 +307,6 @@ public class ModEventHandler
|
||||
|
||||
if(entity instanceof EntityPlayer && ((EntityPlayer)entity).capabilities.isCreativeMode)
|
||||
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);
|
||||
|
||||
@ -445,6 +428,9 @@ public class ModEventHandler
|
||||
}
|
||||
}
|
||||
}
|
||||
/**
|
||||
* REMOVE THIS ^ ^ ^
|
||||
*/
|
||||
}
|
||||
}
|
||||
/// RADIATION STUFF END ///
|
||||
|
||||
76
src/main/java/com/hbm/packet/ExtPropPacket.java
Normal 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;
|
||||
}
|
||||
}
|
||||
}
|
||||
@ -70,7 +70,7 @@ public class PacketDispatcher {
|
||||
//Packet to send block break particles
|
||||
wrapper.registerMessage(ParticleBurstPacket.Handler.class, ParticleBurstPacket.class, i++, Side.CLIENT);
|
||||
//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
|
||||
wrapper.registerMessage(LoopedEntitySoundPacket.Handler.class, LoopedEntitySoundPacket.class, i++, Side.CLIENT);
|
||||
//Entity sound packet that keeps client and server separated
|
||||
|
||||
@ -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;
|
||||
}
|
||||
}
|
||||
}
|
||||
@ -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) {
|
||||
|
||||
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.setColorOpaque_F(1, 1, 1);
|
||||
|
||||
if (renderer.hasOverrideBlockTexture())
|
||||
{
|
||||
iicon = renderer.overrideBlockTexture;
|
||||
}
|
||||
|
||||
float rotation = 0;
|
||||
|
||||
if(world.getBlockMetadata(x, y, z) == 3)
|
||||
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);
|
||||
if(meta == 2)
|
||||
renderer.uvRotateTop = 3;
|
||||
if(meta == 3)
|
||||
renderer.uvRotateTop = 0;
|
||||
if(meta == 4)
|
||||
renderer.uvRotateTop = 1;
|
||||
if(meta == 5)
|
||||
renderer.uvRotateTop = 2;
|
||||
|
||||
renderer.setRenderBounds((double)0, 0.0D, (double)0, (double)1, 0.125D, (double)1);
|
||||
renderer.renderStandardBlock(block, x, y, z);
|
||||
renderer.uvRotateTop = 0;
|
||||
|
||||
return true;
|
||||
}
|
||||
|
||||
@ -6,6 +6,7 @@ import com.hbm.main.ResourceManager;
|
||||
import com.hbm.render.loader.ModelRendererObj;
|
||||
|
||||
import net.minecraft.client.Minecraft;
|
||||
import net.minecraft.client.renderer.OpenGlHelper;
|
||||
import net.minecraft.entity.Entity;
|
||||
|
||||
public class ModelArmorDigamma extends ModelArmorBase {
|
||||
@ -43,6 +44,8 @@ public class ModelArmorDigamma extends ModelArmorBase {
|
||||
if(type == 1) {
|
||||
Minecraft.getMinecraft().renderEngine.bindTexture(ResourceManager.fau_chest);
|
||||
body.render(par7);
|
||||
GL11.glEnable(GL11.GL_BLEND);
|
||||
OpenGlHelper.glBlendFunc(770, 771, 1, 0);
|
||||
Minecraft.getMinecraft().renderEngine.bindTexture(ResourceManager.fau_cassette);
|
||||
cassette.render(par7);
|
||||
Minecraft.getMinecraft().renderEngine.bindTexture(ResourceManager.fau_arm);
|
||||
|
||||