mirror of
https://github.com/HbmMods/Hbm-s-Nuclear-Tech-GIT.git
synced 2026-01-25 10:32:49 +00:00
eternal fire in 528 mode, more pile stuff
This commit is contained in:
parent
d6f2cd97da
commit
4d435c90ab
6
src/main/java/api/hbm/block/IPileNeutronReceiver.java
Normal file
6
src/main/java/api/hbm/block/IPileNeutronReceiver.java
Normal file
@ -0,0 +1,6 @@
|
||||
package api.hbm.block;
|
||||
|
||||
public interface IPileNeutronReceiver {
|
||||
|
||||
public void receiveNeutrons(int n);
|
||||
}
|
||||
@ -1,18 +1,11 @@
|
||||
package com.hbm.blocks.machine.pile;
|
||||
|
||||
import com.hbm.blocks.ModBlocks;
|
||||
import com.hbm.blocks.generic.BlockFlammable;
|
||||
import com.hbm.items.ModItems;
|
||||
import com.hbm.lib.RefStrings;
|
||||
|
||||
import cpw.mods.fml.relauncher.Side;
|
||||
import cpw.mods.fml.relauncher.SideOnly;
|
||||
import net.minecraft.block.Block;
|
||||
import net.minecraft.block.material.Material;
|
||||
import net.minecraft.client.renderer.texture.IIconRegister;
|
||||
import net.minecraft.entity.player.EntityPlayer;
|
||||
import net.minecraft.item.Item;
|
||||
import net.minecraft.util.IIcon;
|
||||
import net.minecraft.world.World;
|
||||
|
||||
public class BlockGraphiteDrilled extends BlockGraphiteDrilledBase {
|
||||
|
||||
@ -1,7 +1,6 @@
|
||||
package com.hbm.blocks.machine.pile;
|
||||
|
||||
import java.util.ArrayList;
|
||||
import java.util.List;
|
||||
import java.util.Random;
|
||||
|
||||
import com.hbm.blocks.ModBlocks;
|
||||
@ -11,7 +10,6 @@ import com.hbm.lib.RefStrings;
|
||||
|
||||
import cpw.mods.fml.relauncher.Side;
|
||||
import cpw.mods.fml.relauncher.SideOnly;
|
||||
import net.minecraft.block.material.Material;
|
||||
import net.minecraft.client.renderer.texture.IIconRegister;
|
||||
import net.minecraft.entity.item.EntityItem;
|
||||
import net.minecraft.item.Item;
|
||||
|
||||
@ -2,15 +2,18 @@ package com.hbm.blocks.machine.pile;
|
||||
|
||||
import java.util.ArrayList;
|
||||
|
||||
import com.hbm.blocks.ModBlocks;
|
||||
import com.hbm.items.ModItems;
|
||||
import com.hbm.tileentity.machine.pile.TileEntityPileFuel;
|
||||
|
||||
import net.minecraft.block.material.Material;
|
||||
import api.hbm.block.IToolable;
|
||||
import net.minecraft.entity.player.EntityPlayer;
|
||||
import net.minecraft.item.ItemStack;
|
||||
import net.minecraft.tileentity.TileEntity;
|
||||
import net.minecraft.world.World;
|
||||
import net.minecraftforge.common.util.ForgeDirection;
|
||||
|
||||
public class BlockGraphiteFuel extends BlockGraphiteDrilledTE {
|
||||
public class BlockGraphiteFuel extends BlockGraphiteDrilledTE implements IToolable {
|
||||
|
||||
@Override
|
||||
public TileEntity createNewTileEntity(World world, int mets) {
|
||||
@ -23,4 +26,23 @@ public class BlockGraphiteFuel extends BlockGraphiteDrilledTE {
|
||||
drops.add(new ItemStack(ModItems.pile_rod_uranium)); //TODO: adjust for core progress
|
||||
return drops;
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean onScrew(World world, EntityPlayer player, int x, int y, int z, int side, float fX, float fY, float fZ, ToolType tool) {
|
||||
|
||||
if(tool != ToolType.SCREWDRIVER)
|
||||
return false;
|
||||
|
||||
if(!world.isRemote) {
|
||||
|
||||
int meta = world.getBlockMetadata(x, y, z) & 3;
|
||||
|
||||
if(side == meta * 2 || side == meta * 2 + 1) {
|
||||
world.setBlock(x, y, z, ModBlocks.block_graphite_drilled, meta, 3);
|
||||
this.ejectItem(world, x, y, z, ForgeDirection.getOrientation(side), new ItemStack(ModItems.pile_rod_uranium));
|
||||
}
|
||||
}
|
||||
|
||||
return true;
|
||||
}
|
||||
}
|
||||
|
||||
@ -9,7 +9,6 @@ import com.hbm.lib.RefStrings;
|
||||
import api.hbm.block.IToolable;
|
||||
import cpw.mods.fml.relauncher.Side;
|
||||
import cpw.mods.fml.relauncher.SideOnly;
|
||||
import net.minecraft.block.material.Material;
|
||||
import net.minecraft.client.renderer.texture.IIconRegister;
|
||||
import net.minecraft.entity.player.EntityPlayer;
|
||||
import net.minecraft.item.ItemStack;
|
||||
@ -66,17 +65,18 @@ public class BlockGraphiteRod extends BlockGraphiteDrilledBase implements IToola
|
||||
|
||||
for(int i = -1; i <= 1; i += 1) {
|
||||
|
||||
int ix = x + dir.offsetX * i;
|
||||
//why is XZ switched? i don't know, man
|
||||
int ix = x + dir.offsetZ * i;
|
||||
int iy = y + dir.offsetY * i;
|
||||
int iz = z + dir.offsetZ * i;
|
||||
int iz = z + dir.offsetX * i;
|
||||
|
||||
while(world.getBlock(ix, iy, iz) == this && world.getBlockMetadata(ix, iy, iz) == oldMeta) {
|
||||
|
||||
world.setBlockMetadataWithNotify(ix, iy, iz, newMeta, 3);
|
||||
|
||||
ix += dir.offsetX * i;
|
||||
ix += dir.offsetZ * i;
|
||||
iy += dir.offsetY * i;
|
||||
iz += dir.offsetZ * i;
|
||||
iz += dir.offsetX * i;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@ -2,14 +2,18 @@ package com.hbm.blocks.machine.pile;
|
||||
|
||||
import java.util.ArrayList;
|
||||
|
||||
import com.hbm.blocks.ModBlocks;
|
||||
import com.hbm.items.ModItems;
|
||||
import com.hbm.tileentity.machine.pile.TileEntityPileSource;
|
||||
|
||||
import api.hbm.block.IToolable;
|
||||
import net.minecraft.entity.player.EntityPlayer;
|
||||
import net.minecraft.item.ItemStack;
|
||||
import net.minecraft.tileentity.TileEntity;
|
||||
import net.minecraft.world.World;
|
||||
import net.minecraftforge.common.util.ForgeDirection;
|
||||
|
||||
public class BlockGraphiteSource extends BlockGraphiteDrilledTE {
|
||||
public class BlockGraphiteSource extends BlockGraphiteDrilledTE implements IToolable {
|
||||
|
||||
@Override
|
||||
public TileEntity createNewTileEntity(World world, int mets) {
|
||||
@ -22,4 +26,23 @@ public class BlockGraphiteSource extends BlockGraphiteDrilledTE {
|
||||
drops.add(new ItemStack(ModItems.pile_rod_source));
|
||||
return drops;
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean onScrew(World world, EntityPlayer player, int x, int y, int z, int side, float fX, float fY, float fZ, ToolType tool) {
|
||||
|
||||
if(tool != ToolType.SCREWDRIVER)
|
||||
return false;
|
||||
|
||||
if(!world.isRemote) {
|
||||
|
||||
int meta = world.getBlockMetadata(x, y, z) & 3;
|
||||
|
||||
if(side == meta * 2 || side == meta * 2 + 1) {
|
||||
world.setBlock(x, y, z, ModBlocks.block_graphite_drilled, meta, 3);
|
||||
this.ejectItem(world, x, y, z, ForgeDirection.getOrientation(side), new ItemStack(ModItems.pile_rod_source));
|
||||
}
|
||||
}
|
||||
|
||||
return true;
|
||||
}
|
||||
}
|
||||
|
||||
@ -4,6 +4,7 @@ import java.util.ArrayList;
|
||||
import java.util.List;
|
||||
import java.util.Random;
|
||||
|
||||
import com.hbm.config.GeneralConfig;
|
||||
import com.hbm.config.RadiationConfig;
|
||||
import com.hbm.explosion.ExplosionNukeSmall;
|
||||
import com.hbm.extprop.HbmLivingProps;
|
||||
@ -67,6 +68,10 @@ public class EntityEffectHandler {
|
||||
handleContagion(entity);
|
||||
handleRadiation(entity);
|
||||
handleDigamma(entity);
|
||||
|
||||
if(GeneralConfig.enable528 && entity instanceof EntityLivingBase && !entity.isImmuneToFire() && entity.worldObj.provider.isHellWorld) {
|
||||
entity.setFire(5);
|
||||
}
|
||||
}
|
||||
|
||||
private static void handleContamination(EntityLivingBase entity) {
|
||||
|
||||
@ -1,7 +1,62 @@
|
||||
package com.hbm.tileentity.machine.pile;
|
||||
|
||||
import java.util.Random;
|
||||
|
||||
import com.hbm.blocks.ModBlocks;
|
||||
|
||||
import api.hbm.block.IPileNeutronReceiver;
|
||||
import net.minecraft.block.Block;
|
||||
import net.minecraft.tileentity.TileEntity;
|
||||
import net.minecraft.util.Vec3;
|
||||
|
||||
public abstract class TileEntityPileBase extends TileEntity {
|
||||
|
||||
@Override
|
||||
public void updateEntity() {
|
||||
|
||||
}
|
||||
|
||||
protected void castRay(int flux, int range) {
|
||||
|
||||
Random rand = worldObj.rand;
|
||||
Vec3 vec = Vec3.createVectorHelper(1, 0, 0);
|
||||
vec.rotateAroundZ((float)(rand.nextDouble() * Math.PI * 2D));
|
||||
vec.rotateAroundY((float)(rand.nextDouble() * Math.PI * 2D));
|
||||
|
||||
int prevX = xCoord;
|
||||
int prevY = yCoord;
|
||||
int prevZ = zCoord;
|
||||
|
||||
for(float i = 1; i <= range; i += 0.5F) {
|
||||
|
||||
int x = (int)Math.floor(xCoord + 0.5 + vec.xCoord * i);
|
||||
int y = (int)Math.floor(yCoord + 0.5 + vec.yCoord * i);
|
||||
int z = (int)Math.floor(zCoord + 0.5 + vec.zCoord * i);
|
||||
|
||||
if(x == prevX && y == prevY && z == prevZ)
|
||||
continue;
|
||||
|
||||
prevX = x;
|
||||
prevY = y;
|
||||
prevZ = z;
|
||||
|
||||
Block b = worldObj.getBlock(x, y, z);
|
||||
|
||||
if(b == ModBlocks.block_boron)
|
||||
return;
|
||||
|
||||
int meta = worldObj.getBlockMetadata(x, y, z);
|
||||
|
||||
if(b == ModBlocks.block_graphite_rod && (meta & 4) == 0)
|
||||
return;
|
||||
|
||||
TileEntity te = worldObj.getTileEntity(x, y, z);
|
||||
|
||||
if(te instanceof IPileNeutronReceiver) {
|
||||
IPileNeutronReceiver rec = (IPileNeutronReceiver) te;
|
||||
rec.receiveNeutrons(flux);
|
||||
return;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user