eternal fire in 528 mode, more pile stuff

This commit is contained in:
Bob 2021-09-01 23:43:58 +02:00
parent d6f2cd97da
commit 4d435c90ab
8 changed files with 119 additions and 17 deletions

View File

@ -0,0 +1,6 @@
package api.hbm.block;
public interface IPileNeutronReceiver {
public void receiveNeutrons(int n);
}

View File

@ -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 {

View File

@ -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;

View File

@ -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;
}
}

View File

@ -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;
}
}

View File

@ -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;
}
}

View File

@ -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) {

View File

@ -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;
}
}
}
}