the malicious gigglefish from the silly dimension

This commit is contained in:
Bob 2023-08-27 19:29:37 +02:00
parent ba8aa1e4b1
commit 4482e10999
61 changed files with 340 additions and 334 deletions

View File

@ -4,6 +4,7 @@
* Has some design similarities with the RBMK, but in 3D
* Relatively easy to build and safe to operate
* Does not use any tile entity rendering and all math is pre-calculated when the reactor is assembled, making this one even more performant than the old large reactor
* Balancing might change, so keep that in mind when updating in the future
* Sodalite
* A gem that can be extracted from fluorite or lapis ore
* Can be heated in the combination oven to make sodium and chlorine
@ -27,6 +28,16 @@
* Fluorite ore is now centrifugable
* Fluorite crystals now centrifuge into slightly less fluorite but also yield sodalite
* Blast resistance values for most resistant blocks have been changed, most blocks now have much lower resistance which means there's now a practical difference between concrete and ducrete. Resistance values also match the block's cost more closely.
* Using a screwdriver, the input and output sides of conveyor cranes (inserters, ejectors, etc) can now be configured, allowing them to operate around corners
* Sandstone's blast resistance is now as high as stone's, but only against nuclear explosions
* The tsar bomba model has been updated
* The nuclear explosion animation has been replaced with the TOREX system, instead of a static model that moves around, the mushroom clouds are now made of simulated particles
* Sellafite now uses random ticks instead of scheduled ticks every second, while this does reduce its radioactivity quite a bit, it prevents the tick queue from slowing down to a crawl with large amounts of sellafite from nuclear explosions
* Conveyor blocks now have tooltips explaining what they do and how they can be configured
* The large reactor still works despite the PWR being added, but the parts have been made uncraftable
* Unused watz parts have been hidden from the creative inventory
* Removed the bedrok coltan ore, since it was replaced by generic bedrock ores anyway
* Updated decal on the congo lake grenade launcher
## Fixed
* Fixed FEnSU's IO limit not working properly
@ -40,3 +51,4 @@
* Corium is now a finite fluid, fixing an issue where a single fuel rod can be used to create a giant blob of corium, lagging out the server
* Fixed bullets not being able to pass things like tall grass
* Whether the player has received a guide book is now saved as part of the extprop which might fix an issue where offline mode players get a new book on every start
* Fixed electrolyser fluid recipes not showing the input amount

View File

@ -1,6 +1,6 @@
mod_version=1.0.27
# Empty build number makes a release type
mod_build_number=4690
mod_build_number=4704
credits=HbMinecraft, rodolphito (explosion algorithms), grangerave (explosion algorithms),\
\ Hoboy (textures, models), Doctor17 (russian localization), Drillgon200 (effects, models,\
@ -8,11 +8,11 @@ credits=HbMinecraft, rodolphito (explosion algorithms), grangerave (explosion al
\ (chinese localization), Frooz (models), Minecreep (models), VT-6/24 (models, textures), Pheo (textures,\
\ various machines, models, weapons), Vær (gas centrifuges, better worldgen, ZIRNOX, CP-1 parts, starter guide),\
\ Adam29 (liquid petroleum, ethanol, electric furnace), Pashtet (russian localization), MartinTheDragon\
\ (calculator, chunk-based fallout), haru315 (spiral point algorithm), Sten89 (models), Pixelguru26\
\ (textures), TheBlueHat (textures), Alcater (GUI textures, porting), impbk2002 (project settings),\
\ (calculator, chunk-based fallout, bendable cranes), haru315 (spiral point algorithm), Sten89 (models), Pixelguru26\
\ (textures), TheBlueHat (textures), Alcater (GUI textures, porting), impbk2002 (project settings), Nos (models),\
\ Burningwater202 (laminate glass), OvermindDL1 (project settings), TehTemmie (reacher radiation function),\
\ Toshayo (satellite loot system, project settings, gradle curse task), Silly541 (config for safe ME drives),\
\ Voxelstice (OpenComputers integration, turbine spinup), BallOfEnergy1 (OpenComputers integration), martemen\
\ (project settings), Pvndols (thorium fuel recipe, gas turbine), JamesH2 (blood mechanics, nitric acid,\
\ particle emitter), sdddddf80 (recipe configs, chinese localization, custom machine holograms),\
\ SuperCraftAlex (tooltips) LePeep (coilgun model, BDCL QC), Maksymisio (polish localization)
\ SuperCraftAlex (tooltips) LePeep (coilgun model, BDCL QC), 70k (textures), Maksymisio (polish localization)

View File

@ -88,8 +88,6 @@ public class ModBlocks {
public static Block ore_bedrock;
public static Block ore_volcano;
public static Block ore_bedrock_coltan;
public static Block ore_nether_coal;
public static Block ore_nether_smoldering;
public static Block ore_nether_uranium;
@ -1398,8 +1396,6 @@ public class ModBlocks {
ore_cinnebar = new BlockOre(Material.rock).setBlockName("ore_cinnebar").setCreativeTab(MainRegistry.blockTab).setHardness(5.0F).setResistance(10.0F).setBlockTextureName(RefStrings.MODID + ":ore_cinnebar");
ore_coltan = new BlockOre(Material.rock).setBlockName("ore_coltan").setCreativeTab(MainRegistry.blockTab).setHardness(15.0F).setResistance(10.0F).setBlockTextureName(RefStrings.MODID + ":ore_coltan");
ore_bedrock_coltan = new BlockBedrockOre().setBlockName("ore_bedrock_coltan").setCreativeTab(null).setBlockUnbreakable().setResistance(1_000_000).setBlockTextureName(RefStrings.MODID + ":ore_bedrock_coltan");
ore_oil = new BlockOre(Material.rock).setBlockName("ore_oil").setCreativeTab(MainRegistry.blockTab).setHardness(5.0F).setResistance(10.0F).setBlockTextureName(RefStrings.MODID + ":ore_oil");
ore_oil_empty = new BlockGeneric(Material.rock).setBlockName("ore_oil_empty").setCreativeTab(MainRegistry.blockTab).setHardness(5.0F).setResistance(10.0F).setBlockTextureName(RefStrings.MODID + ":ore_oil_empty");
ore_oil_sand = new BlockFalling(Material.sand).setBlockName("ore_oil_sand").setCreativeTab(MainRegistry.blockTab).setStepSound(Block.soundTypeSand).setHardness(0.5F).setResistance(1.0F).setBlockTextureName(RefStrings.MODID + ":ore_oil_sand_alt");
@ -1579,7 +1575,7 @@ public class ModBlocks {
brick_concrete_cracked = new BlockGeneric(Material.rock).setBlockName("brick_concrete_cracked").setCreativeTab(MainRegistry.blockTab).setHardness(15.0F).setResistance(60.0F).setBlockTextureName(RefStrings.MODID + ":brick_concrete_cracked");
brick_concrete_broken = new BlockGeneric(Material.rock).setBlockName("brick_concrete_broken").setCreativeTab(MainRegistry.blockTab).setHardness(15.0F).setResistance(45.0F).setBlockTextureName(RefStrings.MODID + ":brick_concrete_broken");
brick_concrete_marked = new BlockWriting(Material.rock, RefStrings.MODID + ":brick_concrete").setBlockName("brick_concrete_marked").setCreativeTab(MainRegistry.blockTab).setHardness(15.0F).setResistance(160.0F).setBlockTextureName(RefStrings.MODID + ":brick_concrete_marked");
brick_obsidian = new BlockGeneric(Material.rock).setBlockName("brick_obsidian").setCreativeTab(MainRegistry.blockTab).setLightOpacity(15).setHardness(15.0F).setResistance(2400.0F).setBlockTextureName(RefStrings.MODID + ":brick_obsidian");
brick_obsidian = new BlockGeneric(Material.rock).setBlockName("brick_obsidian").setCreativeTab(MainRegistry.blockTab).setLightOpacity(15).setHardness(15.0F).setResistance(120.0F).setBlockTextureName(RefStrings.MODID + ":brick_obsidian");
brick_light = new BlockGeneric(Material.rock).setBlockName("brick_light").setCreativeTab(MainRegistry.blockTab).setHardness(5.0F).setResistance(20.0F).setBlockTextureName(RefStrings.MODID + ":brick_light");
brick_compound = new BlockGeneric(Material.rock).setBlockName("brick_compound").setCreativeTab(MainRegistry.blockTab).setHardness(15.0F).setResistance(400.0F).setBlockTextureName(RefStrings.MODID + ":brick_compound");
cmb_brick = new BlockGeneric(Material.rock).setBlockName("cmb_brick").setCreativeTab(MainRegistry.blockTab).setHardness(25.0F).setResistance(5000.0F).setBlockTextureName(RefStrings.MODID + ":cmb_brick");
@ -1990,7 +1986,6 @@ public class ModBlocks {
crane_unboxer = new CraneUnboxer().setBlockName("crane_unboxer").setHardness(5.0F).setResistance(10.0F).setCreativeTab(MainRegistry.machineTab);
crane_splitter = new CraneSplitter().setBlockName("crane_splitter").setHardness(5.0F).setResistance(10.0F).setCreativeTab(MainRegistry.machineTab).setBlockTextureName(RefStrings.MODID + ":crane_side");
fan = new MachineFan().setBlockName("fan").setHardness(5.0F).setResistance(10.0F).setCreativeTab(MainRegistry.machineTab).setBlockTextureName(RefStrings.MODID + ":block_steel");
piston_inserter = new PistonInserter().setBlockName("piston_inserter").setHardness(5.0F).setResistance(10.0F).setCreativeTab(MainRegistry.machineTab).setBlockTextureName(RefStrings.MODID + ":block_steel");
chain = new BlockChain(Material.iron).setBlockName("dungeon_chain").setHardness(0.25F).setResistance(2.0F).setCreativeTab(MainRegistry.blockTab).setBlockTextureName(RefStrings.MODID + ":chain");
@ -2082,9 +2077,9 @@ public class ModBlocks {
watz_control = new BlockPillar(Material.iron, RefStrings.MODID + ":watz_control_top").setBlockName("watz_control").setHardness(5.0F).setResistance(10.0F).setCreativeTab(MainRegistry.machineTab).setBlockTextureName(RefStrings.MODID + ":watz_control_side");
watz_cooler = new BlockPillar(Material.iron, RefStrings.MODID + ":watz_cooler_top").setBlockName("watz_cooler").setHardness(5.0F).setResistance(10.0F).setCreativeTab(MainRegistry.machineTab).setBlockTextureName(RefStrings.MODID + ":watz_cooler_side");
watz_end = new BlockToolConversion(Material.iron).addVariant("_bolted").setBlockName("watz_end").setHardness(5.0F).setResistance(10.0F).setCreativeTab(MainRegistry.machineTab).setBlockTextureName(RefStrings.MODID + ":watz_casing");
watz_hatch = new WatzHatch(Material.iron).setBlockName("watz_hatch").setHardness(5.0F).setResistance(10.0F).setCreativeTab(MainRegistry.machineTab).setBlockTextureName(RefStrings.MODID + ":watz_hatch");
watz_conductor = new BlockCableConnect(Material.iron).setBlockName("watz_conductor").setHardness(5.0F).setResistance(10.0F).setCreativeTab(MainRegistry.machineTab).setBlockTextureName(RefStrings.MODID + ":watz_conductor_top");
watz_core = new WatzCore(Material.iron).setBlockName("watz_core").setHardness(5.0F).setResistance(10.0F).setCreativeTab(MainRegistry.machineTab).setBlockTextureName(RefStrings.MODID + ":watz_computer");
watz_hatch = new WatzHatch(Material.iron).setBlockName("watz_hatch").setHardness(5.0F).setResistance(10.0F).setCreativeTab(null).setBlockTextureName(RefStrings.MODID + ":watz_hatch");
watz_conductor = new BlockCableConnect(Material.iron).setBlockName("watz_conductor").setHardness(5.0F).setResistance(10.0F).setCreativeTab(null).setBlockTextureName(RefStrings.MODID + ":watz_conductor_top");
watz_core = new WatzCore(Material.iron).setBlockName("watz_core").setHardness(5.0F).setResistance(10.0F).setCreativeTab(null).setBlockTextureName(RefStrings.MODID + ":watz_computer");
watz = new Watz().setBlockName("watz").setHardness(5.0F).setResistance(10.0F).setCreativeTab(MainRegistry.machineTab).setBlockTextureName(RefStrings.MODID + ":block_steel");
watz_pump = new WatzPump().setBlockName("watz_pump").setHardness(5.0F).setResistance(10.0F).setCreativeTab(MainRegistry.machineTab).setBlockTextureName(RefStrings.MODID + ":block_steel");
@ -2485,7 +2480,6 @@ public class ModBlocks {
GameRegistry.registerBlock(cluster_copper, ItemBlockBase.class, cluster_copper.getUnlocalizedName());
//Bedrock ores
GameRegistry.registerBlock(ore_bedrock_coltan, ore_bedrock_coltan.getUnlocalizedName());
GameRegistry.registerBlock(ore_bedrock_oil, ore_bedrock_oil.getUnlocalizedName());
//Nice Meme
@ -3233,21 +3227,20 @@ public class ModBlocks {
register(radio_torch_receiver);
register(radio_torch_counter);
GameRegistry.registerBlock(crane_extractor, crane_extractor.getUnlocalizedName());
GameRegistry.registerBlock(crane_inserter, crane_inserter.getUnlocalizedName());
GameRegistry.registerBlock(crane_grabber, crane_grabber.getUnlocalizedName());
GameRegistry.registerBlock(crane_router, crane_router.getUnlocalizedName());
GameRegistry.registerBlock(crane_boxer, crane_boxer.getUnlocalizedName());
GameRegistry.registerBlock(crane_unboxer, crane_unboxer.getUnlocalizedName());
GameRegistry.registerBlock(conveyor, conveyor.getUnlocalizedName());
GameRegistry.registerBlock(conveyor_double, conveyor_double.getUnlocalizedName());
GameRegistry.registerBlock(conveyor_triple, conveyor_triple.getUnlocalizedName());
GameRegistry.registerBlock(conveyor_chute, conveyor_chute.getUnlocalizedName());
GameRegistry.registerBlock(conveyor_lift, conveyor_lift.getUnlocalizedName());
GameRegistry.registerBlock(crane_splitter, crane_splitter.getUnlocalizedName());
GameRegistry.registerBlock(fan, fan.getUnlocalizedName());
GameRegistry.registerBlock(piston_inserter, piston_inserter.getUnlocalizedName());
register(crane_extractor);
register(crane_inserter);
register(crane_grabber);
register(crane_router);
register(crane_boxer);
register(crane_unboxer);
register(conveyor);
register(conveyor_double);
register(conveyor_triple);
register(conveyor_chute);
register(conveyor_lift);
register(crane_splitter);
register(fan);
register(piston_inserter);
GameRegistry.registerBlock(chain, chain.getUnlocalizedName());
GameRegistry.registerBlock(ladder_sturdy, ladder_sturdy.getUnlocalizedName());

View File

@ -2,7 +2,7 @@ package com.hbm.blocks.bomb;
import com.hbm.blocks.ModBlocks;
import com.hbm.config.BombConfig;
import com.hbm.entity.effect.EntityNukeCloudSmall;
import com.hbm.entity.effect.EntityNukeTorex;
import com.hbm.entity.logic.EntityNukeExplosionMK5;
import com.hbm.explosion.ExplosionLarge;
import com.hbm.explosion.ExplosionNT;
@ -78,12 +78,7 @@ public class ExplosiveCharge extends Block implements IBomb, IDetConnectible {
}
if(this == ModBlocks.det_nuke) {
world.spawnEntityInWorld(EntityNukeExplosionMK5.statFac(world, BombConfig.missileRadius, x + 0.5, y + 0.5, z + 0.5));
EntityNukeCloudSmall entity2 = new EntityNukeCloudSmall(world, 1000, BombConfig.missileRadius * 0.005F);
entity2.posX = x;
entity2.posY = y;
entity2.posZ = z;
world.spawnEntityInWorld(entity2);
EntityNukeTorex.statFac(world, x + 0.5, y + 0.5, z + 0.5, BombConfig.missileRadius);
}
}

View File

@ -4,7 +4,6 @@ import java.util.Random;
import com.hbm.blocks.ModBlocks;
import com.hbm.config.BombConfig;
import com.hbm.entity.effect.EntityNukeCloudSmall;
import com.hbm.entity.effect.EntityNukeTorex;
import com.hbm.entity.logic.EntityNukeExplosionMK5;
import com.hbm.interfaces.IBomb;

View File

@ -4,7 +4,7 @@ import java.util.Random;
import com.hbm.blocks.ModBlocks;
import com.hbm.entity.effect.EntityCloudFleija;
import com.hbm.entity.effect.EntityNukeCloudSmall;
import com.hbm.entity.effect.EntityNukeTorex;
import com.hbm.entity.grenade.EntityGrenadeZOMG;
import com.hbm.entity.logic.EntityBalefire;
import com.hbm.entity.logic.EntityNukeExplosionMK3;
@ -169,7 +169,7 @@ public class NukeCustom extends BlockContainer implements IBomb {
bf.setPosition(xCoord + 0.5, yCoord + 0.5, zCoord + 0.5);
bf.destructionRange = (int) amat;
worldObj.spawnEntityInWorld(bf);
worldObj.spawnEntityInWorld(EntityNukeCloudSmall.statFacBale(worldObj, xCoord + 0.5, yCoord + 5, zCoord + 0.5, amat * 1.5F, 1000));
EntityNukeTorex.statFacBale(worldObj, xCoord + 0.5, yCoord + 5, zCoord + 0.5, amat);
/// HYDROGEN ///
} else if(hydro > 0) {
@ -179,7 +179,7 @@ public class NukeCustom extends BlockContainer implements IBomb {
dirty *= 0.25F;
worldObj.spawnEntityInWorld(EntityNukeExplosionMK5.statFac(worldObj, (int)hydro, xCoord + 0.5, yCoord + 0.5, zCoord + 0.5).moreFallout((int)dirty));
worldObj.spawnEntityInWorld(EntityNukeCloudSmall.statFac(worldObj, xCoord + 0.5, yCoord + 5, zCoord + 0.5, hydro));
EntityNukeTorex.statFac(worldObj, xCoord + 0.5, yCoord + 5, zCoord + 0.5, hydro);
/// NUCLEAR ///
} else if(nuke > 0) {
@ -188,7 +188,7 @@ public class NukeCustom extends BlockContainer implements IBomb {
nuke = Math.min(nuke, maxNuke);
worldObj.spawnEntityInWorld(EntityNukeExplosionMK5.statFac(worldObj, (int)nuke, xCoord + 0.5, yCoord + 5, zCoord + 0.5).moreFallout((int)dirty));
worldObj.spawnEntityInWorld(EntityNukeCloudSmall.statFac(worldObj, xCoord + 0.5, yCoord + 5, zCoord + 0.5, nuke));
EntityNukeTorex.statFac(worldObj, xCoord + 0.5, yCoord + 5, zCoord + 0.5, nuke);
/// NON-NUCLEAR ///
} else if(tnt >= 75) {
@ -196,7 +196,7 @@ public class NukeCustom extends BlockContainer implements IBomb {
tnt = Math.min(tnt, maxTnt);
worldObj.spawnEntityInWorld(EntityNukeExplosionMK5.statFacNoRad(worldObj, (int)tnt, xCoord + 0.5, yCoord + 0.5, zCoord + 0.5));
worldObj.spawnEntityInWorld(EntityNukeCloudSmall.statFac(worldObj, xCoord + 0.5, yCoord + 5, zCoord + 0.5, tnt));
EntityNukeTorex.statFac(worldObj, xCoord + 0.5, yCoord + 5, zCoord + 0.5, tnt);
} else if(tnt > 0) {
ExplosionLarge.explode(worldObj, xCoord + 0.5, yCoord + 0.5, zCoord + 0.5, tnt, true, true, true);

View File

@ -4,7 +4,7 @@ import java.util.Random;
import com.hbm.blocks.ModBlocks;
import com.hbm.config.BombConfig;
import com.hbm.entity.effect.EntityNukeCloudSmall;
import com.hbm.entity.effect.EntityNukeTorex;
import com.hbm.entity.logic.EntityNukeExplosionMK5;
import com.hbm.interfaces.IBomb;
import com.hbm.main.MainRegistry;
@ -130,13 +130,8 @@ public class NukeGadget extends BlockContainer implements IBomb {
tetn.clearSlots();
world.playSoundEffect(x, y, z, "random.explode", 1.0f, world.rand.nextFloat() * 0.1F + 0.9F);
world.spawnEntityInWorld(EntityNukeExplosionMK5.statFac(world, BombConfig.gadgetRadius, x + 0.5, y + 0.5, z + 0.5));
EntityNukeCloudSmall entity2 = new EntityNukeCloudSmall(world, 1000, BombConfig.gadgetRadius * 0.005F);
entity2.posX = x;
entity2.posY = y;
entity2.posZ = z;
world.spawnEntityInWorld(entity2);
world.spawnEntityInWorld(EntityNukeExplosionMK5.statFac(world, BombConfig.gadgetRadius, x + 0.5, y + 0.5, z + 0.5));
EntityNukeTorex.statFac(world, x + 0.5, y + 0.5, z + 0.5, BombConfig.gadgetRadius);
}
return false;

View File

@ -4,7 +4,7 @@ import java.util.Random;
import com.hbm.blocks.ModBlocks;
import com.hbm.config.BombConfig;
import com.hbm.entity.effect.EntityNukeCloudSmall;
import com.hbm.entity.effect.EntityNukeTorex;
import com.hbm.entity.logic.EntityNukeExplosionMK5;
import com.hbm.interfaces.IBomb;
import com.hbm.main.MainRegistry;
@ -124,12 +124,7 @@ public class NukeMan extends BlockContainer implements IBomb {
world.playSoundEffect(x, y, z, "random.explode", 1.0f, world.rand.nextFloat() * 0.1F + 0.9F);
world.spawnEntityInWorld(EntityNukeExplosionMK5.statFac(world, BombConfig.manRadius, x + 0.5, y + 0.5, z + 0.5));
EntityNukeCloudSmall entity2 = new EntityNukeCloudSmall(world, 1000, BombConfig.manRadius * 0.005F);
entity2.posX = x;
entity2.posY = y;
entity2.posZ = z;
world.spawnEntityInWorld(entity2);
EntityNukeTorex.statFac(world, x + 0.5, y + 0.5, z + 0.5, BombConfig.manRadius);
}
return false;

View File

@ -4,7 +4,7 @@ import java.util.Random;
import com.hbm.blocks.ModBlocks;
import com.hbm.config.BombConfig;
import com.hbm.entity.effect.EntityNukeCloudSmall;
import com.hbm.entity.effect.EntityNukeTorex;
import com.hbm.entity.logic.EntityNukeExplosionMK5;
import com.hbm.interfaces.IBomb;
import com.hbm.main.MainRegistry;
@ -131,12 +131,7 @@ public class NukeMike extends BlockContainer implements IBomb {
world.playSoundEffect(x, y, z, "random.explode", 1.0f, world.rand.nextFloat() * 0.1F + 0.9F);
world.spawnEntityInWorld(EntityNukeExplosionMK5.statFac(world, BombConfig.mikeRadius, x + 0.5, y + 0.5, z + 0.5));
EntityNukeCloudSmall entity2 = new EntityNukeCloudSmall(world, 1000, r * 0.005F);
entity2.posX = x;
entity2.posY = y;
entity2.posZ = z;
world.spawnEntityInWorld(entity2);
EntityNukeTorex.statFac(world, x + 0.5, y + 0.5, z + 0.5, BombConfig.mikeRadius);
}
return false;

View File

@ -4,7 +4,7 @@ import java.util.Random;
import com.hbm.blocks.ModBlocks;
import com.hbm.config.BombConfig;
import com.hbm.entity.effect.EntityNukeCloudSmall;
import com.hbm.entity.effect.EntityNukeTorex;
import com.hbm.entity.logic.EntityNukeExplosionMK5;
import com.hbm.interfaces.IBomb;
import com.hbm.main.MainRegistry;
@ -120,12 +120,7 @@ public class NukeN2 extends BlockContainer implements IBomb {
world.playSoundEffect(x, y, z, "random.explode", 1.0f, world.rand.nextFloat() * 0.1F + 0.9F);
world.spawnEntityInWorld(EntityNukeExplosionMK5.statFacNoRad(world, r, x + 0.5, y + 0.5, z + 0.5));
EntityNukeCloudSmall entity2 = new EntityNukeCloudSmall(world, 1000, r * 0.005F);
entity2.posX = x;
entity2.posY = y;
entity2.posZ = z;
world.spawnEntityInWorld(entity2);
EntityNukeTorex.statFac(world, x + 0.5, y + 0.5, z + 0.5, r);
}
return false;

View File

@ -4,7 +4,7 @@ import java.util.Random;
import com.hbm.blocks.ModBlocks;
import com.hbm.config.BombConfig;
import com.hbm.entity.effect.EntityNukeCloudSmall;
import com.hbm.entity.effect.EntityNukeTorex;
import com.hbm.entity.logic.EntityNukeExplosionMK5;
import com.hbm.interfaces.IBomb;
import com.hbm.main.MainRegistry;
@ -127,18 +127,9 @@ public class NukeTsar extends BlockContainer implements IBomb {
public boolean igniteTestBomb(World world, int x, int y, int z, int r) {
if(!world.isRemote) {
tetn.clearSlots();
// world.spawnParticle("hugeexplosion", x, y, z, 0, 0, 0);
world.playSoundEffect(x, y, z, "random.explode", 1.0f, world.rand.nextFloat() * 0.1F + 0.9F);
world.spawnEntityInWorld(EntityNukeExplosionMK5.statFac(world, r, x + 0.5, y + 0.5, z + 0.5));
EntityNukeCloudSmall entity2 = new EntityNukeCloudSmall(world, 1000, r * 0.005F);
entity2.posX = x;
entity2.posY = y;
entity2.posZ = z;
world.spawnEntityInWorld(entity2);
// ExplosionNukeAdvanced.mush(world, x, y, z);
EntityNukeTorex.statFac(world, x + 0.5, y + 0.5, z + 0.5, r);
}
return false;

View File

@ -1,51 +0,0 @@
package com.hbm.blocks.generic;
import com.hbm.blocks.ModBlocks;
import com.hbm.items.ModItems;
import api.hbm.block.IDrillInteraction;
import api.hbm.block.IMiningDrill;
import net.minecraft.block.Block;
import net.minecraft.block.material.Material;
import net.minecraft.item.Item;
import net.minecraft.item.ItemStack;
import net.minecraft.world.World;
public class BlockBedrockOre extends Block implements IDrillInteraction {
public BlockBedrockOre() {
super(Material.rock);
}
@Override
public boolean canBreak(World world, int x, int y, int z, int meta, IMiningDrill drill) {
return drill.getDrillRating() > 70;
}
@Override
public ItemStack extractResource(World world, int x, int y, int z, int meta, IMiningDrill drill) {
if(drill.getDrillRating() > 70)
return null;
Item drop = this.getDrop();
if(drop == null)
return null;
return world.rand.nextInt(50) == 0 ? new ItemStack(drop) : null;
}
@Override
public float getRelativeHardness(World world, int x, int y, int z, int meta, IMiningDrill drill) {
return 30;
}
private Item getDrop() {
if(this == ModBlocks.ore_bedrock_coltan)
return ModItems.fragment_coltan;
return null;
}
}

View File

@ -138,6 +138,7 @@ public class BlockHazard extends Block implements ITooltipProvider {
public void onBlockAdded(World world, int x, int y, int z) {
super.onBlockAdded(world, x, y, z);
// who wrote this???
rad = HazardSystem.getHazardLevelFromStack(new ItemStack(this), HazardRegistry.RADIATION) * 0.1F;
if(this.rad > 0)

View File

@ -29,6 +29,8 @@ public class BlockSellafield extends BlockHazard {
public BlockSellafield(Material mat) {
super(mat);
this.setCreativeTab(MainRegistry.blockTab);
this.needsRandomTick = true;
this.rad = 0.5F;
}
@Override
@ -41,19 +43,20 @@ public class BlockSellafield extends BlockHazard {
@Override
public void updateTick(World world, int x, int y, int z, Random rand) {
ChunkRadiationManager.proxy.incrementRad(world, x, y, z, this.rad);
int meta = world.getBlockMetadata(x, y, z);
if(rand.nextInt(meta == 0 ? 30 * 60 : 15 * 60) == 0) {
ChunkRadiationManager.proxy.incrementRad(world, x, y, z, this.rad * (meta + 1));
if(rand.nextInt(meta == 0 ? 25 : 15) == 0) {
if(meta > 0)
world.setBlockMetadataWithNotify(x, y, z, meta - 1, 2);
else
world.setBlock(x, y, z, ModBlocks.sellafield_slaked);
}
world.scheduleBlockUpdate(x, y, z, this, this.tickRate(world));
}
@Override public void onBlockAdded(World world, int x, int y, int z) { }
@SideOnly(Side.CLIENT)
protected IIcon[] icons;
@ -86,6 +89,4 @@ public class BlockSellafield extends BlockHazard {
public IIcon getIcon(int side, int meta) {
return this.icons[meta % this.icons.length];
}
}

View File

@ -12,7 +12,6 @@ import com.hbm.inventory.fluid.tank.FluidTank;
import com.hbm.main.MainRegistry;
import com.hbm.tileentity.IPersistentNBT;
import com.hbm.tileentity.machine.storage.TileEntityBarrel;
import com.hbm.tileentity.machine.storage.TileEntityMachineFluidTank;
import com.hbm.util.I18nUtil;
import cpw.mods.fml.client.registry.RenderingRegistry;

View File

@ -12,7 +12,6 @@ import com.hbm.main.MainRegistry;
import com.hbm.tileentity.IPersistentNBT;
import com.hbm.tileentity.TileEntityProxyCombo;
import com.hbm.tileentity.machine.storage.TileEntityMachineBAT9000;
import com.hbm.tileentity.machine.storage.TileEntityMachineFluidTank;
import com.hbm.util.I18nUtil;
import cpw.mods.fml.common.network.internal.FMLNetworkHandler;

View File

@ -2,6 +2,8 @@ package com.hbm.blocks.machine;
import java.util.List;
import com.hbm.blocks.ITooltipProvider;
import api.hbm.block.IBlowable;
import api.hbm.block.IToolable;
import cpw.mods.fml.relauncher.Side;
@ -20,7 +22,7 @@ import net.minecraft.world.IBlockAccess;
import net.minecraft.world.World;
import net.minecraftforge.common.util.ForgeDirection;
public class MachineFan extends BlockContainer implements IToolable {
public class MachineFan extends BlockContainer implements IToolable, ITooltipProvider {
public MachineFan() {
super(Material.iron);
@ -142,4 +144,9 @@ public class MachineFan extends BlockContainer implements IToolable {
return true;
}
@Override
public void addInformation(ItemStack stack, EntityPlayer player, List list, boolean ext) {
this.addStandardInfo(stack, player, list, ext);
}
}

View File

@ -14,7 +14,6 @@ import com.hbm.main.MainRegistry;
import com.hbm.tileentity.IPersistentNBT;
import com.hbm.tileentity.IRepairable;
import com.hbm.tileentity.TileEntityProxyCombo;
import com.hbm.tileentity.machine.storage.TileEntityMachineBattery;
import com.hbm.tileentity.machine.storage.TileEntityMachineFluidTank;
import com.hbm.util.I18nUtil;

View File

@ -1,6 +1,9 @@
package com.hbm.blocks.machine;
import java.util.List;
import com.hbm.blocks.BlockContainerBase;
import com.hbm.blocks.ITooltipProvider;
import com.hbm.tileentity.INBTPacketReceiver;
import api.hbm.block.IInsertable;
@ -21,7 +24,7 @@ import net.minecraft.world.IBlockAccess;
import net.minecraft.world.World;
import net.minecraftforge.common.util.ForgeDirection;
public class PistonInserter extends BlockContainerBase {
public class PistonInserter extends BlockContainerBase implements ITooltipProvider {
public PistonInserter() {
super(Material.iron);
@ -383,4 +386,9 @@ public class PistonInserter extends BlockContainerBase {
@Override public boolean isItemValidForSlot(int slot, ItemStack stack) { return true; }
}
@Override
public void addInformation(ItemStack stack, EntityPlayer player, List list, boolean ext) {
this.addStandardInfo(stack, player, list, ext);
}
}

View File

@ -1,5 +1,8 @@
package com.hbm.blocks.network;
import java.util.List;
import com.hbm.blocks.ITooltipProvider;
import com.hbm.entity.item.EntityMovingItem;
import com.hbm.lib.RefStrings;
@ -13,6 +16,7 @@ import net.minecraft.client.renderer.texture.IIconRegister;
import net.minecraft.entity.Entity;
import net.minecraft.entity.EntityLivingBase;
import net.minecraft.entity.item.EntityItem;
import net.minecraft.entity.player.EntityPlayer;
import net.minecraft.item.ItemStack;
import net.minecraft.util.AxisAlignedBB;
import net.minecraft.util.IIcon;
@ -22,7 +26,7 @@ import net.minecraft.world.IBlockAccess;
import net.minecraft.world.World;
import net.minecraftforge.common.util.ForgeDirection;
public abstract class BlockConveyorBase extends Block implements IConveyorBelt {
public abstract class BlockConveyorBase extends Block implements IConveyorBelt, ITooltipProvider {
@SideOnly(Side.CLIENT)
protected IIcon sideIcon;
@ -159,4 +163,9 @@ public abstract class BlockConveyorBase extends Block implements IConveyorBelt {
world.setBlockMetadataWithNotify(x, y, z, 4, 2);
}
}
@Override
public void addInformation(ItemStack stack, EntityPlayer player, List list, boolean ext) {
this.addStandardInfo(stack, player, list, ext);
}
}

View File

@ -2,6 +2,7 @@ package com.hbm.blocks.network;
import api.hbm.block.IToolable;
import com.hbm.blocks.IBlockSideRotation;
import com.hbm.blocks.ITooltipProvider;
import com.hbm.items.tool.ItemTooling;
import com.hbm.lib.RefStrings;
import com.hbm.main.MainRegistry;
@ -27,9 +28,10 @@ import net.minecraft.world.IBlockAccess;
import net.minecraft.world.World;
import net.minecraftforge.common.util.ForgeDirection;
import java.util.List;
import java.util.Random;
public abstract class BlockCraneBase extends BlockContainer implements IBlockSideRotation, IToolable {
public abstract class BlockCraneBase extends BlockContainer implements IBlockSideRotation, IToolable, ITooltipProvider {
@SideOnly(Side.CLIENT) protected IIcon iconSide;
@SideOnly(Side.CLIENT) protected IIcon iconIn;
@ -304,4 +306,9 @@ public abstract class BlockCraneBase extends BlockContainer implements IBlockSid
super.breakBlock(world, x, y, z, block, meta);
}
@Override
public void addInformation(ItemStack stack, EntityPlayer player, List list, boolean ext) {
this.addStandardInfo(stack, player, list, ext);
}
}

View File

@ -4,6 +4,7 @@ import java.util.ArrayList;
import java.util.List;
import com.hbm.blocks.IBlockMultiPass;
import com.hbm.blocks.ITooltipProvider;
import com.hbm.entity.item.EntityMovingItem;
import com.hbm.lib.RefStrings;
import com.hbm.main.MainRegistry;
@ -32,7 +33,7 @@ import net.minecraft.world.IBlockAccess;
import net.minecraft.world.World;
import net.minecraftforge.common.util.ForgeDirection;
public class CraneRouter extends BlockContainer implements IBlockMultiPass, IEnterableBlock {
public class CraneRouter extends BlockContainer implements IBlockMultiPass, IEnterableBlock, ITooltipProvider {
@SideOnly(Side.CLIENT) protected IIcon iconOverlay;
@ -194,11 +195,11 @@ public class CraneRouter extends BlockContainer implements IBlockMultiPass, IEnt
}
}
@Override
public boolean canPackageEnter(World world, int x, int y, int z, ForgeDirection dir, IConveyorPackage entity) {
return false;
}
@Override public boolean canPackageEnter(World world, int x, int y, int z, ForgeDirection dir, IConveyorPackage entity) { return false; }
@Override public void onPackageEnter(World world, int x, int y, int z, ForgeDirection dir, IConveyorPackage entity) { }
@Override
public void onPackageEnter(World world, int x, int y, int z, ForgeDirection dir, IConveyorPackage entity) { }
public void addInformation(ItemStack stack, EntityPlayer player, List list, boolean ext) {
this.addStandardInfo(stack, player, list, ext);
}
}

View File

@ -1,6 +1,9 @@
package com.hbm.blocks.network;
import java.util.List;
import com.hbm.blocks.BlockDummyable;
import com.hbm.blocks.ITooltipProvider;
import com.hbm.entity.item.EntityMovingItem;
import com.hbm.lib.RefStrings;
import com.hbm.tileentity.network.TileEntityCraneSplitter;
@ -14,6 +17,7 @@ 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;
import net.minecraft.tileentity.TileEntity;
import net.minecraft.util.IIcon;
@ -22,7 +26,7 @@ import net.minecraft.util.Vec3;
import net.minecraft.world.World;
import net.minecraftforge.common.util.ForgeDirection;
public class CraneSplitter extends BlockDummyable implements IConveyorBelt, IEnterableBlock {
public class CraneSplitter extends BlockDummyable implements IConveyorBelt, IEnterableBlock, ITooltipProvider {
@SideOnly(Side.CLIENT) public IIcon iconTopLeft;
@SideOnly(Side.CLIENT) public IIcon iconTopRight;
@ -154,4 +158,9 @@ public class CraneSplitter extends BlockDummyable implements IConveyorBelt, IEnt
if(meta >= 12) return ForgeDirection.getOrientation(meta - offset);
return ForgeDirection.getOrientation(meta).getRotation(ForgeDirection.UP);
}
@Override
public void addInformation(ItemStack stack, EntityPlayer player, List list, boolean ext) {
this.addStandardInfo(stack, player, list, ext);
}
}

View File

@ -3,7 +3,7 @@ package com.hbm.blocks.test;
import java.util.Random;
import com.hbm.config.BombConfig;
import com.hbm.entity.effect.EntityNukeCloudSmall;
import com.hbm.entity.effect.EntityNukeTorex;
import com.hbm.entity.logic.EntityNukeExplosionMK5;
import net.minecraft.block.Block;
@ -27,12 +27,7 @@ public class TestCore extends Block {
world.setBlockToAir(x, y, z);
world.spawnEntityInWorld(EntityNukeExplosionMK5.statFac(world, BombConfig.missileRadius, x + 0.5, y + 0.5, z + 0.5));
EntityNukeCloudSmall entity2 = new EntityNukeCloudSmall(world, 1000, BombConfig.missileRadius * 0.005F);
entity2.posX = x;
entity2.posY = y;
entity2.posZ = z;
world.spawnEntityInWorld(entity2);
EntityNukeTorex.statFac(world, x + 0.5, y + 0.5, z + 0.5, BombConfig.missileRadius);
} else if(meta > 0) {

View File

@ -9,6 +9,7 @@ import net.minecraft.nbt.NBTTagCompound;
import net.minecraft.util.Vec3;
import net.minecraft.world.World;
@Deprecated
public class EntityNukeCloudSmall extends Entity {
public int maxAge = 1000;

View File

@ -2,6 +2,8 @@ package com.hbm.entity.effect;
import java.util.ArrayList;
import com.hbm.util.TrackerUtil;
import cpw.mods.fml.relauncher.Side;
import cpw.mods.fml.relauncher.SideOnly;
import net.minecraft.entity.Entity;
@ -34,6 +36,7 @@ public class EntityNukeTorex extends Entity {
@Override
protected void entityInit() {
this.dataWatcher.addObject(10, new Float(1));
this.dataWatcher.addObject(11, new Integer(0));
}
@Override
@ -60,7 +63,7 @@ public class EntityNukeTorex extends Entity {
lastSpawnY = posY - 3;
}
int spawnTarget = worldObj.getHeightValue((int) Math.floor(posX), (int) Math.floor(posZ)) - 3;
int spawnTarget = Math.max(worldObj.getHeightValue((int) Math.floor(posX), (int) Math.floor(posZ)) - 3, 1);
double moveSpeed = 0.5D;
if(Math.abs(spawnTarget - lastSpawnY) < moveSpeed) {
@ -69,6 +72,7 @@ public class EntityNukeTorex extends Entity {
lastSpawnY += moveSpeed * Math.signum(spawnTarget - lastSpawnY);
}
// spawn mush clouds
double range = (torusWidth - rollerSize) * 0.25;
double simSpeed = getSimulationSpeed();
int toSpawn = (int) Math.ceil(10 * simSpeed * simSpeed);
@ -82,7 +86,8 @@ public class EntityNukeTorex extends Entity {
cloudlets.add(cloud);
}
if(ticksExisted < 50) {
// spawn shock clouds
if(ticksExisted < 100) {
int cloudCount = ticksExisted * 5;
int shockLife = Math.max(300 - ticksExisted * 20, 50);
@ -97,6 +102,7 @@ public class EntityNukeTorex extends Entity {
}
}
// spawn ring clouds
if(ticksExisted < 200) {
for(int i = 0; i < 2; i++) {
Cloudlet cloud = new Cloudlet(posX, posY + coreHeight, posZ, (float)(rand.nextDouble() * 2D * Math.PI), 0, lifetime, TorexType.RING);
@ -133,6 +139,11 @@ public class EntityNukeTorex extends Entity {
return this;
}
public EntityNukeTorex setType(int type) {
this.dataWatcher.updateObject(11, type);
return this;
}
public double getSimulationSpeed() {
int lifetime = getMaxAge();
@ -404,11 +415,21 @@ public class EntityNukeTorex extends Entity {
dist = Math.max(dist, 1);
double col = 2D / dist;
this.color = Vec3.createVectorHelper(
Math.max(col * 2, 0.25),
Math.max(col * 1.5, 0.25),
Math.max(col * 0.5, 0.25)
);
int type = EntityNukeTorex.this.dataWatcher.getWatchableObjectInt(11);
if(type == 1) {
this.color = Vec3.createVectorHelper(
Math.max(col * 1, 0.25),
Math.max(col * 2, 0.25),
Math.max(col * 0.5, 0.25)
);
} else {
this.color = Vec3.createVectorHelper(
Math.max(col * 2, 0.25),
Math.max(col * 1.5, 0.25),
Math.max(col * 0.5, 0.25)
);
}
}
public Vec3 getInterpPos(float interp) {
@ -461,15 +482,27 @@ public class EntityNukeTorex extends Entity {
RING
}
@Override
protected void readEntityFromNBT(NBTTagCompound nbt) { }
@Override
protected void writeEntityToNBT(NBTTagCompound nbt) { }
@Override protected void writeEntityToNBT(NBTTagCompound nbt) { }
@Override public boolean writeToNBTOptional(NBTTagCompound nbt) { return false; }
@Override public void readEntityFromNBT(NBTTagCompound nbt) { this.setDead(); }
@Override
@SideOnly(Side.CLIENT)
public boolean isInRangeToRenderDist(double distance) {
return true;
}
public static void statFac(World world, double x, double y, double z, float scale) {
EntityNukeTorex torex = new EntityNukeTorex(world).setScale(MathHelper.clamp_float(scale * 0.01F, 0.5F, 5F));
torex.setPosition(x, y, z);
world.spawnEntityInWorld(torex);
TrackerUtil.setTrackingRange(world, torex, 1000);
}
public static void statFacBale(World world, double x, double y, double z, float scale) {
EntityNukeTorex torex = new EntityNukeTorex(world).setScale(MathHelper.clamp_float(scale * 0.01F, 0.5F, 5F)).setType(1);
torex.setPosition(x, y, z);
world.spawnEntityInWorld(torex);
TrackerUtil.setTrackingRange(world, torex, 1000);
}
}

View File

@ -1,7 +1,7 @@
package com.hbm.entity.missile;
import com.hbm.config.BombConfig;
import com.hbm.entity.effect.EntityNukeCloudSmall;
import com.hbm.entity.effect.EntityNukeTorex;
import com.hbm.entity.logic.EntityNukeExplosionMK5;
import com.hbm.entity.particle.EntitySmokeFX;
@ -37,12 +37,7 @@ public class EntityMIRV extends EntityThrowable {
if(this.worldObj.getBlock((int) this.posX, (int) this.posY, (int) this.posZ) != Blocks.air) {
if(!this.worldObj.isRemote) {
worldObj.spawnEntityInWorld(EntityNukeExplosionMK5.statFac(worldObj, BombConfig.mirvRadius, posX, posY, posZ));
EntityNukeCloudSmall entity2 = new EntityNukeCloudSmall(this.worldObj, 1000, BombConfig.mirvRadius * 0.005F);
entity2.posX = this.posX;
entity2.posY = this.posY;
entity2.posZ = this.posZ;
this.worldObj.spawnEntityInWorld(entity2);
EntityNukeTorex.statFac(worldObj, posX, posY, posZ, BombConfig.mirvRadius);
}
this.setDead();
}

View File

@ -6,6 +6,7 @@ import java.util.List;
import com.hbm.blocks.ModBlocks;
import com.hbm.blocks.bomb.BlockTaint;
import com.hbm.entity.effect.EntityNukeCloudSmall;
import com.hbm.entity.effect.EntityNukeTorex;
import com.hbm.entity.logic.EntityBalefire;
import com.hbm.entity.logic.EntityNukeExplosionMK5;
import com.hbm.entity.logic.IChunkLoader;
@ -327,11 +328,7 @@ public class EntityMissileCustom extends Entity implements IChunkLoader, IRadarD
case NUCLEAR:
case TX:
worldObj.spawnEntityInWorld(EntityNukeExplosionMK5.statFac(worldObj, (int) strength, posX, posY, posZ));
EntityNukeCloudSmall nuke = new EntityNukeCloudSmall(worldObj, 1000, strength * 0.005F);
nuke.posX = posX;
nuke.posY = posY;
nuke.posZ = posZ;
worldObj.spawnEntityInWorld(nuke);
EntityNukeTorex.statFac(worldObj, posX, posY, posZ, strength);
break;
case BALEFIRE:
EntityBalefire bf = new EntityBalefire(worldObj);
@ -340,15 +337,11 @@ public class EntityMissileCustom extends Entity implements IChunkLoader, IRadarD
bf.posZ = this.posZ;
bf.destructionRange = (int) strength;
worldObj.spawnEntityInWorld(bf);
worldObj.spawnEntityInWorld(EntityNukeCloudSmall.statFacBale(worldObj, posX, posY + 5, posZ, strength * 1.5F, 1000));
EntityNukeTorex.statFacBale(worldObj, posX, posY, posZ, strength);
break;
case N2:
worldObj.spawnEntityInWorld(EntityNukeExplosionMK5.statFacNoRad(worldObj, (int) strength, posX, posY, posZ));
EntityNukeCloudSmall n2 = new EntityNukeCloudSmall(worldObj, 1000, strength * 0.005F);
n2.posX = posX;
n2.posY = posY;
n2.posZ = posZ;
worldObj.spawnEntityInWorld(n2);
EntityNukeTorex.statFac(worldObj, posX, posY, posZ, strength);
break;
case TAINT:
int r = (int) strength;

View File

@ -4,7 +4,7 @@ import java.util.ArrayList;
import java.util.List;
import com.hbm.config.BombConfig;
import com.hbm.entity.effect.EntityNukeCloudSmall;
import com.hbm.entity.effect.EntityNukeTorex;
import com.hbm.entity.logic.EntityNukeExplosionMK5;
import com.hbm.items.ModItems;
@ -25,12 +25,7 @@ public class EntityMissileMirv extends EntityMissileBaseAdvanced {
public void onImpact() {
worldObj.spawnEntityInWorld(EntityNukeExplosionMK5.statFac(worldObj, BombConfig.missileRadius * 2, posX, posY, posZ));
EntityNukeCloudSmall entity2 = new EntityNukeCloudSmall(this.worldObj, 1000, BombConfig.missileRadius * 2 * 0.005F);
entity2.posX = this.posX;
entity2.posY = this.posY - 9;
entity2.posZ = this.posZ;
this.worldObj.spawnEntityInWorld(entity2);
EntityNukeTorex.statFac(worldObj, posX, posY, posZ, BombConfig.missileRadius * 2);
}
@Override

View File

@ -4,7 +4,7 @@ import java.util.ArrayList;
import java.util.List;
import com.hbm.config.BombConfig;
import com.hbm.entity.effect.EntityNukeCloudSmall;
import com.hbm.entity.effect.EntityNukeTorex;
import com.hbm.entity.logic.EntityNukeExplosionMK5;
import com.hbm.items.ModItems;
@ -25,12 +25,7 @@ public class EntityMissileNuclear extends EntityMissileBaseAdvanced {
public void onImpact() {
this.worldObj.spawnEntityInWorld(EntityNukeExplosionMK5.statFac(worldObj, BombConfig.missileRadius, posX, posY, posZ));
EntityNukeCloudSmall entity2 = new EntityNukeCloudSmall(this.worldObj, 1000, BombConfig.missileRadius * 0.005F);
entity2.posX = this.posX;
entity2.posY = this.posY;
entity2.posZ = this.posZ;
this.worldObj.spawnEntityInWorld(entity2);
EntityNukeTorex.statFac(worldObj, posX, posY, posZ, BombConfig.missileRadius);
}
@Override

View File

@ -5,7 +5,7 @@ import java.util.List;
import com.hbm.config.BombConfig;
import com.hbm.entity.effect.EntityBlackHole;
import com.hbm.entity.effect.EntityCloudFleijaRainbow;
import com.hbm.entity.effect.EntityNukeCloudSmall;
import com.hbm.entity.effect.EntityNukeTorex;
import com.hbm.entity.effect.EntityRagingVortex;
import com.hbm.entity.effect.EntityVortex;
import com.hbm.entity.grenade.EntityGrenadeZOMG;
@ -490,7 +490,7 @@ public class EntityModBeam extends Entity implements IProjectile {
this.worldObj.playSoundEffect(this.posX, this.posY, this.posZ, "random.explode", 100.0f, this.worldObj.rand.nextFloat() * 0.1F + 0.9F);
this.worldObj.spawnEntityInWorld(EntityNukeExplosionMK5.statFac(worldObj, BombConfig.gadgetRadius, posX, posY, posZ));
this.worldObj.spawnEntityInWorld(EntityNukeCloudSmall.statFac(worldObj, posX, posY, posZ, BombConfig.gadgetRadius));
EntityNukeTorex.statFac(worldObj, posX, posY, posZ, BombConfig.gadgetRadius);
}
}
}

View File

@ -108,7 +108,7 @@ public class ExplosionNukeRayBatched {
Block block = world.getBlock(iX, iY, iZ);
if(!block.getMaterial().isLiquid())
res -= Math.pow(block.getExplosionResistance(null), 7.5D - fac);
res -= Math.pow(masqueradeResistance(block), 7.5D - fac);
//else
// res -= Math.pow(Blocks.air.getExplosionResistance(null), 7.5D - fac); // air is 0, might want to raise that is necessary
@ -150,6 +150,13 @@ public class ExplosionNukeRayBatched {
isAusf3Complete = true;
}
public static float masqueradeResistance(Block block) {
if(block == Blocks.sandstone) return Blocks.stone.getExplosionResistance(null);
if(block == Blocks.obsidian) return Blocks.stone.getExplosionResistance(null) * 3;
return block.getExplosionResistance(null);
}
/** little comparator for roughly sorting chunks by distance to the center */
public class CoordComparator implements Comparator<ChunkCoordIntPair> {

View File

@ -16,59 +16,50 @@ private TileEntityNukeTsar nukeTsar;
nukeTsar = tedf;
this.addSlotToContainer(new Slot(tedf, 0, 35, 17));
this.addSlotToContainer(new Slot(tedf, 1, 71, 17));
this.addSlotToContainer(new Slot(tedf, 2, 35, 53));
this.addSlotToContainer(new Slot(tedf, 3, 71, 53));
this.addSlotToContainer(new Slot(tedf, 4, 53, 35));
this.addSlotToContainer(new Slot(tedf, 5, 98, 35));
this.addSlotToContainer(new Slot(tedf, 0, 48, 101));
this.addSlotToContainer(new Slot(tedf, 1, 66, 101));
this.addSlotToContainer(new Slot(tedf, 2, 84, 101));
this.addSlotToContainer(new Slot(tedf, 3, 102, 101));
this.addSlotToContainer(new Slot(tedf, 4, 55, 51));
this.addSlotToContainer(new Slot(tedf, 5, 138, 101));
for(int i = 0; i < 3; i++)
{
for(int j = 0; j < 9; j++)
{
this.addSlotToContainer(new Slot(invPlayer, j + i * 9 + 9, 8 + j * 18, 84 + i * 18));
for(int i = 0; i < 3; i++) {
for(int j = 0; j < 9; j++) {
this.addSlotToContainer(new Slot(invPlayer, 9 + j + i * 9, 48 + j * 18, 151 + i * 18));
}
}
for(int i = 0; i < 9; i++)
{
this.addSlotToContainer(new Slot(invPlayer, i, 8 + i * 18, 142));
for(int i = 0; i < 9; i++) {
this.addSlotToContainer(new Slot(invPlayer, i, 48 + i * 18, 209));
}
}
@Override
public ItemStack transferStackInSlot(EntityPlayer p_82846_1_, int par2)
{
public ItemStack transferStackInSlot(EntityPlayer p_82846_1_, int par2) {
ItemStack var3 = null;
Slot var4 = (Slot) this.inventorySlots.get(par2);
if (var4 != null && var4.getHasStack())
{
if(var4 != null && var4.getHasStack()) {
ItemStack var5 = var4.getStack();
var3 = var5.copy();
if (par2 <= 5) {
if (!this.mergeItemStack(var5, 6, this.inventorySlots.size(), true))
{
if(par2 <= 5) {
if(!this.mergeItemStack(var5, 6, this.inventorySlots.size(), true)) {
return null;
}
} else {
return null;
}
if (var5.stackSize == 0)
{
if(var5.stackSize == 0) {
var4.putStack((ItemStack) null);
}
else
{
} else {
var4.onSlotChanged();
}
}
return var3;
}
}
@Override
public boolean canInteractWith(EntityPlayer player) {

View File

@ -8,6 +8,7 @@ import net.minecraft.util.ResourceLocation;
import org.lwjgl.opengl.GL11;
import com.hbm.inventory.container.ContainerNukeTsar;
import com.hbm.items.ModItems;
import com.hbm.lib.RefStrings;
import com.hbm.tileentity.bomb.TileEntityNukeTsar;
import com.hbm.util.I18nUtil;
@ -15,14 +16,15 @@ import com.hbm.util.I18nUtil;
public class GUINukeTsar extends GuiInfoContainer {
private static ResourceLocation texture = new ResourceLocation(RefStrings.MODID + ":textures/gui/weapon/tsarBombaSchematic.png");
private TileEntityNukeTsar testNuke;
private static ResourceLocation textureMike = new ResourceLocation(RefStrings.MODID + ":textures/gui/weapon/ivyMikeSchematic.png");
private TileEntityNukeTsar tsar;
public GUINukeTsar(InventoryPlayer invPlayer, TileEntityNukeTsar tedf) {
super(new ContainerNukeTsar(invPlayer, tedf));
testNuke = tedf;
tsar = tedf;
this.xSize = 176;
this.ySize = 166;
this.xSize = 256;
this.ySize = 233;
}
@Override
@ -35,10 +37,10 @@ public class GUINukeTsar extends GuiInfoContainer {
@Override
protected void drawGuiContainerForegroundLayer( int i, int j) {
String name = this.testNuke.hasCustomInventoryName() ? this.testNuke.getInventoryName() : I18n.format(this.testNuke.getInventoryName());
String name = this.tsar.hasCustomInventoryName() ? this.tsar.getInventoryName() : I18n.format(this.tsar.getInventoryName());
this.fontRendererObj.drawString(name, this.xSize / 2 - this.fontRendererObj.getStringWidth(name) / 2, 6, 4210752);
this.fontRendererObj.drawString(I18n.format("container.inventory"), 8, this.ySize - 96 + 2, 4210752);
this.fontRendererObj.drawString(I18n.format("container.inventory"), 48, this.ySize - 96 + 2, 4210752);
}
@Override
@ -46,16 +48,23 @@ public class GUINukeTsar extends GuiInfoContainer {
GL11.glColor4f(1.0F, 1.0F, 1.0F, 1.0F);
Minecraft.getMinecraft().getTextureManager().bindTexture(texture);
drawTexturedModalRect(guiLeft, guiTop, 0, 0, xSize, ySize);
Minecraft.getMinecraft().getTextureManager().bindTexture(textureMike);
if(testNuke.isReady())
{
drawTexturedModalRect(guiLeft + 133, guiTop + 34, 176, 0, 16, 16);
}
if(tsar.isFilled()) drawTexturedModalRect(guiLeft + 18, guiTop + 50, 176, 18, 16, 16);
else if(tsar.isReady()) drawTexturedModalRect(guiLeft + 18, guiTop + 50, 176, 0, 16, 16);
if(testNuke.isFilled())
{
drawTexturedModalRect(guiLeft + 133, guiTop + 34, 176, 18, 16, 16);
for(int i = 0; i < 4; i++) {
if(tsar.getStackInSlot(i) != null && tsar.getStackInSlot(i).getItem() == ModItems.explosive_lenses) switch(i) {
case 0: drawTexturedModalRect(guiLeft + 24 + 16, guiTop + 20 + 16, 209, 1, 23, 23); break;
case 2: drawTexturedModalRect(guiLeft + 47 + 16, guiTop + 20 + 16, 232, 1, 23, 23); break;
case 1: drawTexturedModalRect(guiLeft + 24 + 16, guiTop + 43 + 16, 209, 24, 23, 23); break;
case 3: drawTexturedModalRect(guiLeft + 47 + 16, guiTop + 43 + 16, 232, 24, 23, 23); break;
}
}
if(tsar.getStackInSlot(5) != null && tsar.getStackInSlot(5).getItem() == ModItems.tsar_core)
drawTexturedModalRect(guiLeft + 75 + 16, guiTop + 25 + 16, 176, 220, 80, 36);
this.drawInfoPanel(guiLeft - 16, guiTop + 16, 16, 16, 2);
}

View File

@ -391,9 +391,9 @@ public class AssemblerRecipes {
makeRecipe(new ComparableStack(ModItems.mp_thruster_15_solid_hexdecuple, 1), new AStack[] {new ComparableStack(ModItems.seg_15, 1), new OreDictStack(STEEL.plate(), 6), new OreDictStack(DURA.ingot(), 12), new ComparableStack(ModItems.coil_tungsten, 6), },500);
makeRecipe(new ComparableStack(ModItems.mp_thruster_15_hydrogen, 1), new AStack[] {new ComparableStack(ModItems.seg_15, 1), new ComparableStack(ModBlocks.deco_pipe_quad, 1), new OreDictStack(W.ingot(), 8), new OreDictStack(STEEL.plate(), 6), new ComparableStack(ModItems.tank_steel, 1), new OreDictStack(DESH.ingot(), 4), },500);
makeRecipe(new ComparableStack(ModItems.mp_thruster_15_hydrogen_dual, 1), new AStack[] {new ComparableStack(ModItems.seg_15, 1), new ComparableStack(ModBlocks.deco_pipe_quad, 1), new OreDictStack(W.ingot(), 4), new OreDictStack(STEEL.plate(), 6), new ComparableStack(ModItems.tank_steel, 1), new OreDictStack(DESH.ingot(), 1), },500);
makeRecipe(new ComparableStack(ModItems.mp_thruster_15_balefire_short, 1), new AStack[] {new ComparableStack(ModItems.seg_15, 1), new ComparableStack(ModItems.plate_polymer, 8), new ComparableStack(ModBlocks.reactor_element, 1), new OreDictStack(DESH.ingot(), 8), new OreDictStack(BIGMT.plate(), 12), new ComparableStack(ModItems.board_copper, 2), new ComparableStack(ModItems.ingot_uranium_fuel, 4), new ComparableStack(ModItems.pipes_steel, 2), },500);
makeRecipe(new ComparableStack(ModItems.mp_thruster_15_balefire, 1), new AStack[] {new ComparableStack(ModItems.seg_15, 1), new ComparableStack(ModItems.plate_polymer, 16), new ComparableStack(ModBlocks.reactor_element, 2), new OreDictStack(DESH.ingot(), 16), new OreDictStack(BIGMT.plate(), 24), new ComparableStack(ModItems.board_copper, 4), new ComparableStack(ModItems.ingot_uranium_fuel, 8), new ComparableStack(ModItems.pipes_steel, 2), },500);
makeRecipe(new ComparableStack(ModItems.mp_thruster_15_balefire_large, 1), new AStack[] {new ComparableStack(ModItems.seg_15, 1), new ComparableStack(ModItems.plate_polymer, 16), new ComparableStack(ModBlocks.reactor_element, 2), new OreDictStack(DESH.ingot(), 24), new OreDictStack(BIGMT.plate(), 32), new ComparableStack(ModItems.board_copper, 4), new ComparableStack(ModItems.ingot_uranium_fuel, 8), new ComparableStack(ModItems.pipes_steel, 2), },500);
makeRecipe(new ComparableStack(ModItems.mp_thruster_15_balefire_short, 1), new AStack[] {new ComparableStack(ModItems.seg_15, 1), new ComparableStack(ModItems.plate_polymer, 8), new ComparableStack(ModBlocks.pwr_fuel, 1), new OreDictStack(DESH.ingot(), 8), new OreDictStack(BIGMT.plate(), 12), new ComparableStack(ModItems.board_copper, 2), new ComparableStack(ModItems.ingot_uranium_fuel, 4), new ComparableStack(ModItems.pipes_steel, 2), },500);
makeRecipe(new ComparableStack(ModItems.mp_thruster_15_balefire, 1), new AStack[] {new ComparableStack(ModItems.seg_15, 1), new ComparableStack(ModItems.plate_polymer, 16), new ComparableStack(ModBlocks.pwr_fuel, 2), new OreDictStack(DESH.ingot(), 16), new OreDictStack(BIGMT.plate(), 24), new ComparableStack(ModItems.board_copper, 4), new ComparableStack(ModItems.ingot_uranium_fuel, 8), new ComparableStack(ModItems.pipes_steel, 2), },500);
makeRecipe(new ComparableStack(ModItems.mp_thruster_15_balefire_large, 1), new AStack[] {new ComparableStack(ModItems.seg_15, 1), new ComparableStack(ModItems.plate_polymer, 16), new ComparableStack(ModBlocks.pwr_fuel, 2), new OreDictStack(DESH.ingot(), 24), new OreDictStack(BIGMT.plate(), 32), new ComparableStack(ModItems.board_copper, 4), new ComparableStack(ModItems.ingot_uranium_fuel, 8), new ComparableStack(ModItems.pipes_steel, 2), },500);
makeRecipe(new ComparableStack(ModItems.mp_thruster_20_kerosene, 1), new AStack[] {new ComparableStack(ModItems.seg_20, 1), new ComparableStack(ModBlocks.deco_pipe_quad, 1), new OreDictStack(W.ingot(), 16), new OreDictStack(STEEL.plate(), 12), new OreDictStack(DESH.ingot(), 8), },500);
makeRecipe(new ComparableStack(ModItems.mp_thruster_20_kerosene_dual, 1), new AStack[] {new ComparableStack(ModItems.seg_20, 1), new ComparableStack(ModBlocks.deco_pipe_quad, 1), new OreDictStack(W.ingot(), 8), new OreDictStack(STEEL.plate(), 6), new OreDictStack(DESH.ingot(), 4), },500);
makeRecipe(new ComparableStack(ModItems.mp_thruster_20_kerosene_triple, 1), new AStack[] {new ComparableStack(ModItems.seg_20, 1), new ComparableStack(ModBlocks.deco_pipe_quad, 1), new OreDictStack(W.ingot(), 12), new OreDictStack(STEEL.plate(), 8), new OreDictStack(DESH.ingot(), 6), },500);
@ -1029,11 +1029,6 @@ public class AssemblerRecipes {
if(!GeneralConfig.enable528) {
makeRecipe(new ComparableStack(ModBlocks.machine_hephaestus, 1), new AStack[] { new ComparableStack(ModItems.pipes_steel, 1), new OreDictStack(STEEL.ingot(), 24), new OreDictStack(CU.plate(), 24), new OreDictStack(NB.ingot(), 4), new OreDictStack(RUBBER.ingot(), 12), new ComparableStack(ModBlocks.glass_quartz, 16) }, 150);
makeRecipe(new ComparableStack(ModBlocks.reactor_element, 1), new AStack[] {new OreDictStack(STEEL.ingot(), 2), new OreDictStack(OreDictManager.getReflector(), 4), new OreDictStack(PB.plate(), 2), new OreDictStack(ZR.ingot(), 2), },150);
makeRecipe(new ComparableStack(ModBlocks.reactor_control, 1), new AStack[] {new OreDictStack(STEEL.ingot(), 4), new OreDictStack(PB.ingot(), 6), new ComparableStack(ModItems.bolt_tungsten, 6), new ComparableStack(ModItems.motor, 1), },100);
makeRecipe(new ComparableStack(ModBlocks.reactor_hatch, 1), new AStack[] {new ComparableStack(ModBlocks.brick_concrete, 1), new OreDictStack(STEEL.plate(), 6), },150);
makeRecipe(new ComparableStack(ModBlocks.reactor_conductor, 1), new AStack[] {new OreDictStack(STEEL.ingot(), 4), new OreDictStack(CU.plate(), 12), new ComparableStack(ModItems.wire_tungsten, 4), },130);
makeRecipe(new ComparableStack(ModBlocks.reactor_computer, 1), new AStack[] {new ComparableStack(ModBlocks.reactor_conductor, 2), new ComparableStack(ModItems.circuit_targeting_tier3, 4), new ComparableStack(ModItems.circuit_gold, 1), },250);
makeRecipe(new ComparableStack(ModBlocks.machine_radgen, 1), new AStack[] {new OreDictStack(STEEL.ingot(), 8), new OreDictStack(STEEL.plate(), 32), new ComparableStack(ModItems.coil_magnetized_tungsten, 6), new ComparableStack(ModItems.wire_magnetized_tungsten, 24), new ComparableStack(ModItems.circuit_gold, 4), new ComparableStack(ModItems.reactor_core, 3), new OreDictStack(STAR.ingot(), 1), new OreDictStack("dyeRed", 1), },400);
makeRecipe(new ComparableStack(ModBlocks.machine_reactor_breeding, 1), new AStack[] {new ComparableStack(ModItems.reactor_core, 1), new OreDictStack(STEEL.ingot(), 12), new OreDictStack(PB.plate(), 16), new ComparableStack(ModBlocks.reinforced_glass, 4), new OreDictStack(ASBESTOS.ingot(), 4), new OreDictStack(ANY_RESISTANTALLOY.ingot(), 4), new ComparableStack(ModItems.crt_display, 1)},150);
makeRecipe(new ComparableStack(ModBlocks.reactor_research, 1), new AStack[] {new OreDictStack(STEEL.ingot(), 8), new OreDictStack(ANY_RESISTANTALLOY.ingot(), 4), new ComparableStack(ModItems.motor_desh, 2), new OreDictStack(B.ingot(), 5), new OreDictStack(PB.plate(), 8), new ComparableStack(ModItems.crt_display, 3), new ComparableStack(ModItems.circuit_copper, 2), },300);

View File

@ -12,7 +12,6 @@ import com.google.gson.stream.JsonWriter;
import com.hbm.inventory.FluidStack;
import com.hbm.inventory.fluid.FluidType;
import com.hbm.inventory.fluid.Fluids;
import com.hbm.inventory.RecipesCommon.ComparableStack;
import com.hbm.inventory.recipes.loader.SerializableRecipe;
import com.hbm.items.ModItems;
import com.hbm.items.machine.ItemFluidIcon;
@ -45,7 +44,7 @@ public class ElectrolyserFluidRecipes extends SerializableRecipe {
if(recipe.output2.type != Fluids.NONE) outputs.add(ItemFluidIcon.make(recipe.output2));
for(ItemStack byproduct : recipe.byproduct) outputs.add(byproduct);
recipes.put(new ComparableStack(ItemFluidIcon.make(input)), outputs.toArray());
recipes.put(ItemFluidIcon.make(input), outputs.toArray());
}
return recipes;

View File

@ -84,7 +84,6 @@ public class ItemModLens extends ItemArmorMod implements ISatChip {
if(addIf(ModBlocks.ore_oil, b, 300, aX, seg, aZ, "Oil", 0xa0a0a0, player)) hits++;
if(addIf(ModBlocks.ore_bedrock_oil, b, 300, aX, seg, aZ, "Bedrock Oil", 0xa0a0a0, player)) hits++;
if(addIf(ModBlocks.ore_coltan, b, 5, aX, seg, aZ, "Coltan", 0xa0a000, player)) hits++;
if(addIf(ModBlocks.ore_bedrock_coltan, b, 1, aX, seg, aZ, "Bedrock Coltan", 0xa0a000, player)) hits++;
if(addIf(ModBlocks.stone_gneiss, b, 5000, aX, seg, aZ, "Schist", 0x8080ff, player)) hits++;
if(addIf(ModBlocks.ore_australium, b, 1000, aX, seg, aZ, "Australium", 0xffff00, player)) hits++;
if(addIf(Blocks.end_portal_frame, b, 1, aX, seg, aZ, "End Portal", 0x40b080, player)) hits++;

View File

@ -64,6 +64,7 @@ public class ItemWandD extends Item {
EntityNukeTorex torex = new EntityNukeTorex(world);
torex.setPositionAndRotation(pos.blockX, pos.blockY + 1, pos.blockZ, 0, 0);
torex.setScale(1.5F);
torex.setType(1);
world.spawnEntityInWorld(torex);
/*EntityTracker entitytracker = ((WorldServer) world).getEntityTracker();
IntHashMap map = ReflectionHelper.getPrivateValue(EntityTracker.class, entitytracker, "trackedEntityIDs", "field_72794_c");

View File

@ -4,7 +4,7 @@ import java.util.List;
import java.util.Random;
import com.google.common.collect.Multimap;
import com.hbm.entity.effect.EntityNukeCloudSmall;
import com.hbm.entity.effect.EntityNukeTorex;
import com.hbm.entity.logic.EntityNukeExplosionMK5;
import com.hbm.entity.projectile.EntityRubble;
import com.hbm.items.ModItems;
@ -152,12 +152,7 @@ public class WeaponSpecial extends ItemSword {
if(entityPlayer.fallDistance >= 20 && !((EntityPlayer)entityPlayer).capabilities.isCreativeMode) {
if(!world.isRemote) {
world.spawnEntityInWorld(EntityNukeExplosionMK5.statFac(world, 100, entity.posX, entity.posY, entity.posZ));
EntityNukeCloudSmall entity2 = new EntityNukeCloudSmall(world, 1000, 100 * 0.005F);
entity2.posX = entity.posX;
entity2.posY = entity.posY;
entity2.posZ = entity.posZ;
world.spawnEntityInWorld(entity2);
EntityNukeTorex.statFac(world, entity.posX, entity.posY, entity.posZ, 100);
}
}
}

View File

@ -6,7 +6,7 @@ import java.util.Random;
import com.hbm.blocks.ModBlocks;
import com.hbm.config.BombConfig;
import com.hbm.entity.effect.EntityMist;
import com.hbm.entity.effect.EntityNukeCloudSmall;
import com.hbm.entity.effect.EntityNukeTorex;
import com.hbm.entity.logic.EntityNukeExplosionMK5;
import com.hbm.entity.projectile.EntityArtilleryShell;
import com.hbm.explosion.ExplosionChaos;
@ -263,11 +263,7 @@ public class ItemAmmoArty extends Item {
this.itemTypes[NUKE] = new ArtilleryShell("ammo_arty_nuke", SpentCasing.COLOR_CASE_16INCH_NUKE) {
public void onImpact(EntityArtilleryShell shell, MovingObjectPosition mop) {
shell.worldObj.spawnEntityInWorld(EntityNukeExplosionMK5.statFac(shell.worldObj, BombConfig.missileRadius, mop.hitVec.xCoord, mop.hitVec.yCoord, mop.hitVec.zCoord));
EntityNukeCloudSmall entity2 = new EntityNukeCloudSmall(shell.worldObj, 1000, BombConfig.missileRadius * 0.005F);
entity2.posX = mop.hitVec.xCoord;
entity2.posY = mop.hitVec.yCoord;
entity2.posZ = mop.hitVec.zCoord;
shell.worldObj.spawnEntityInWorld(entity2);
EntityNukeTorex.statFac(shell.worldObj, mop.hitVec.xCoord, mop.hitVec.yCoord, mop.hitVec.zCoord, BombConfig.missileRadius);
shell.setDead();
}
};

View File

@ -3,7 +3,7 @@ package com.hbm.lib;
public class RefStrings {
public static final String MODID = "hbm";
public static final String NAME = "Hbm's Nuclear Tech Mod";
public static final String VERSION = "1.0.27 BETA (4690)";
public static final String VERSION = "1.0.27 BETA (4704)";
//HBM's Beta Naming Convention:
//V T (X)
//V -> next release version

View File

@ -1056,8 +1056,6 @@ public class CraftingManager {
addRecipeAuto(new ItemStack(ModBlocks.struct_launcher_core_large, 1), new Object[] { "SIS", "ICI", "BEB", 'S', ModItems.circuit_red_copper, 'I', Blocks.iron_bars, 'C', ModItems.circuit_targeting_tier4, 'B', ModBlocks.struct_launcher, 'E', ModBlocks.machine_battery });
addRecipeAuto(new ItemStack(ModBlocks.struct_soyuz_core, 1), new Object[] { "CUC", "TST", "TBT", 'C', ModItems.circuit_targeting_tier4, 'U', ModItems.upgrade_power_3, 'T', ModBlocks.barrel_steel, 'S', ModBlocks.steel_scaffold, 'B', ModBlocks.machine_lithium_battery });
addRecipeAuto(new ItemStack(ModItems.reactor_sensor, 1), new Object[] { "WPW", "CMC", "PPP", 'W', ModItems.wire_tungsten, 'P', PB.plate(), 'C', ModItems.circuit_targeting_tier3, 'M', ModItems.magnetron });
addRecipeAuto(new ItemStack(ModBlocks.reactor_ejector, 1), new Object[] { "CLC", "MHM", "CLC", 'C', ModBlocks.brick_concrete, 'L', PB.plate(), 'M', ModItems.motor, 'H', ModBlocks.reactor_hatch });
addRecipeAuto(new ItemStack(ModBlocks.reactor_inserter, 1), new Object[] { "CLC", "MHM", "CLC", 'C', ModBlocks.brick_concrete, 'L', CU.plate(), 'M', ModItems.motor, 'H', ModBlocks.reactor_hatch });
addRecipeAuto(new ItemStack(ModBlocks.rbmk_console, 1), new Object[] { "BBB", "DGD", "DCD", 'B', B.ingot(), 'D', ModBlocks.deco_rbmk, 'G', KEY_ANYPANE, 'C', ModItems.circuit_targeting_tier3 });
addRecipeAuto(new ItemStack(ModBlocks.rbmk_crane_console, 1), new Object[] { "BCD", "DDD", 'B', B.ingot(), 'D', ModBlocks.deco_rbmk, 'C', ModItems.circuit_targeting_tier3 });
addRecipeAuto(new ItemStack(ModBlocks.hadron_core, 1), new Object[] { "CCC", "DSD", "CCC", 'C', ModBlocks.hadron_coil_alloy, 'D', ModBlocks.hadron_diode, 'S', ModItems.circuit_schrabidium });

View File

@ -1166,6 +1166,7 @@ public class MainRegistry {
ignoreMappings.add("hbm:item.primer_9");
ignoreMappings.add("hbm:item.primer_50");
ignoreMappings.add("hbm:item.primer_buckshot");
ignoreMappings.add("hbm:tile.ore_bedrock_coltan");
/// REMAP ///
remapItems.put("hbm:item.gadget_explosive8", ModItems.early_explosive_lenses);

View File

@ -68,7 +68,6 @@ import com.hbm.tileentity.machine.TileEntityNukeFurnace;
import com.hbm.util.I18nUtil;
import com.hbm.util.ItemStackUtil;
import com.hbm.util.LoggingUtil;
import com.hbm.util.fauxpointtwelve.BlockPos;
import com.hbm.wiaj.GuiWorldInAJar;
import com.hbm.wiaj.cannery.CanneryBase;
import com.hbm.wiaj.cannery.Jars;

View File

@ -4,8 +4,6 @@ import com.hbm.blocks.ModBlocks;
import com.hbm.blocks.bomb.LaunchPad;
import com.hbm.inventory.container.ContainerLaunchPadTier1;
import com.hbm.inventory.gui.GUILaunchPadTier1;
import com.hbm.items.ModItems;
import com.hbm.items.tool.ItemDesingator;
import com.hbm.lib.Library;
import com.hbm.packet.AuxElectricityPacket;
import com.hbm.packet.PacketDispatcher;

View File

@ -1,6 +1,6 @@
package com.hbm.tileentity.bomb;
import com.hbm.entity.effect.EntityNukeCloudSmall;
import com.hbm.entity.effect.EntityNukeTorex;
import com.hbm.entity.logic.EntityBalefire;
import com.hbm.inventory.container.ContainerNukeFstbmb;
import com.hbm.inventory.gui.GUINukeFstbmb;
@ -128,7 +128,7 @@ public class TileEntityNukeBalefire extends TileEntityMachineBase implements IGU
bf.posZ = zCoord + 0.5;
bf.destructionRange = (int) 250;
worldObj.spawnEntityInWorld(bf);
worldObj.spawnEntityInWorld(EntityNukeCloudSmall.statFacBale(worldObj, xCoord + 0.5, yCoord + 5, zCoord + 0.5, 250 * 1.5F, 1000));
EntityNukeTorex.statFacBale(worldObj, xCoord + 0.5, yCoord + 0.5, zCoord + 0.5, 250);
}
public String getMinutes() {

View File

@ -4,7 +4,7 @@ import java.util.List;
import com.hbm.blocks.ModBlocks;
import com.hbm.config.BombConfig;
import com.hbm.entity.effect.EntityNukeCloudSmall;
import com.hbm.entity.effect.EntityNukeTorex;
import com.hbm.entity.logic.EntityNukeExplosionMK5;
import com.hbm.explosion.ExplosionLarge;
import com.hbm.inventory.container.ContainerNukeN45;
@ -262,12 +262,7 @@ public class TileEntityNukeN45 extends TileEntity implements ISidedInventory, IG
break;
case 4:
world.spawnEntityInWorld(EntityNukeExplosionMK5.statFac(world, (int)(BombConfig.missileRadius * 0.75F), x + 0.5, y + 0.5, z + 0.5));
EntityNukeCloudSmall entity2 = new EntityNukeCloudSmall(world, 1000, BombConfig.missileRadius * 0.005F * 0.75F);
entity2.posX = x;
entity2.posY = y;
entity2.posZ = z;
world.spawnEntityInWorld(entity2);
EntityNukeTorex.statFac(world, x + 0.5, y + 0.5, z + 0.5, BombConfig.missileRadius * 0.75F);
break;
}
}

View File

@ -231,7 +231,7 @@ public class TileEntityPWRController extends TileEntityMachineBase implements IG
this.flux = newFlux;
if(tanks[0].getTankType().hasTrait(FT_PWRModerator.class)) {
if(tanks[0].getTankType().hasTrait(FT_PWRModerator.class) && tanks[0].getFill() > 0) {
this.flux *= tanks[0].getTankType().getTrait(FT_PWRModerator.class).getMultiplier();
}

View File

@ -107,19 +107,26 @@ public class TileEntityStorageDrum extends TileEntityMachineBase implements IFlu
slots[i] = new ItemStack(ModItems.nuclear_waste_short_depleted_tiny, 1, meta);
}
if(item == ModItems.ingot_au198 && worldObj.rand.nextInt(VersatileConfig.getShortDecayChance() / 100) == 0) {
if(item == ModItems.ingot_au198 && worldObj.rand.nextInt(VersatileConfig.getShortDecayChance() / 20) == 0) {
slots[i] = new ItemStack(ModItems.ingot_mercury, 1, meta);
}
if(item == ModItems.ingot_au198 && worldObj.rand.nextInt(VersatileConfig.getShortDecayChance() / 20) == 0) {
if(item == ModItems.nugget_au198 && worldObj.rand.nextInt(VersatileConfig.getShortDecayChance() / 100) == 0) {
slots[i] = new ItemStack(ModItems.nugget_mercury, 1, meta);
}
if(item == ModItems.ingot_pb209 && worldObj.rand.nextInt(VersatileConfig.getShortDecayChance() / 50) == 0) {
if(item == ModItems.ingot_pb209 && worldObj.rand.nextInt(VersatileConfig.getShortDecayChance() / 10) == 0) {
slots[i] = new ItemStack(ModItems.ingot_bismuth, 1, meta);
}
if(item == ModItems.nugget_pb209 && worldObj.rand.nextInt(VersatileConfig.getShortDecayChance() / 10) == 0) {
if(item == ModItems.nugget_pb209 && worldObj.rand.nextInt(VersatileConfig.getShortDecayChance() / 50) == 0) {
slots[i] = new ItemStack(ModItems.nugget_bismuth, 1, meta);
}
if(item == ModItems.powder_sr90 && worldObj.rand.nextInt(VersatileConfig.getShortDecayChance() / 10) == 0) {
slots[i] = new ItemStack(ModItems.powder_zirconium, 1, meta);
}
if(item == ModItems.nugget_sr90 && worldObj.rand.nextInt(VersatileConfig.getShortDecayChance() / 50) == 0) {
slots[i] = new ItemStack(ModItems.nugget_zirconium, 1, meta);
}
}
}

View File

@ -16,7 +16,6 @@ import com.hbm.saveddata.TomSaveData;
import com.hbm.tileentity.IGUIProvider;
import com.hbm.tileentity.IPersistentNBT;
import com.hbm.tileentity.TileEntityMachineBase;
import com.hbm.util.I18nUtil;
import com.hbm.util.fauxpointtwelve.DirPos;
import cpw.mods.fml.common.Optional;
import cpw.mods.fml.relauncher.Side;

View File

@ -33,7 +33,6 @@ import com.hbm.tileentity.IOverpressurable;
import com.hbm.tileentity.IPersistentNBT;
import com.hbm.tileentity.IRepairable;
import com.hbm.tileentity.TileEntityMachineBase;
import com.hbm.util.I18nUtil;
import com.hbm.util.ParticleUtil;
import com.hbm.util.fauxpointtwelve.DirPos;
import cpw.mods.fml.common.Optional;

View File

@ -13,7 +13,7 @@ import net.minecraft.world.biome.BiomeGenBase.TempCategory;
import net.minecraft.world.gen.NoiseGeneratorPerlin;
import net.minecraftforge.common.MinecraftForge;
import net.minecraftforge.common.util.ForgeDirection;
import net.minecraftforge.event.terraingen.DecorateBiomeEvent;
import net.minecraftforge.event.terraingen.PopulateChunkEvent;
public class BiomeCave {
@ -52,7 +52,7 @@ public class BiomeCave {
}
@SubscribeEvent
public void onDecorate(DecorateBiomeEvent.Pre event) {
public void onDecorate(PopulateChunkEvent.Pre event) {
World world = event.world;

View File

@ -11,14 +11,14 @@ import net.minecraft.init.Blocks;
import net.minecraft.world.World;
import net.minecraft.world.gen.NoiseGeneratorPerlin;
import net.minecraftforge.common.util.ForgeDirection;
import net.minecraftforge.event.terraingen.DecorateBiomeEvent;
import net.minecraftforge.event.terraingen.PopulateChunkEvent;
public class DeepLayer {
NoiseGeneratorPerlin noise;
@SubscribeEvent
public void onDecorate(DecorateBiomeEvent.Pre event) {
public void onDecorate(PopulateChunkEvent.Pre event) {
World world = event.world;
if(world.provider == null || world.provider.dimensionId != 0) return;

View File

@ -13,7 +13,7 @@ import net.minecraft.world.World;
import net.minecraft.world.gen.NoiseGeneratorPerlin;
import net.minecraftforge.common.MinecraftForge;
import net.minecraftforge.common.util.ForgeDirection;
import net.minecraftforge.event.terraingen.DecorateBiomeEvent;
import net.minecraftforge.event.terraingen.PopulateChunkEvent;
public class OreCave {
@ -71,7 +71,7 @@ public class OreCave {
@SuppressWarnings("incomplete-switch")
@SubscribeEvent
public void onDecorate(DecorateBiomeEvent.Pre event) {
public void onDecorate(PopulateChunkEvent.Pre event) {
World world = event.world;

View File

@ -10,7 +10,7 @@ import net.minecraft.init.Blocks;
import net.minecraft.world.World;
import net.minecraft.world.gen.NoiseGeneratorPerlin;
import net.minecraftforge.common.MinecraftForge;
import net.minecraftforge.event.terraingen.DecorateBiomeEvent;
import net.minecraftforge.event.terraingen.PopulateChunkEvent;
public class OreLayer {
@ -65,7 +65,7 @@ public class OreLayer {
}
@SubscribeEvent
public void onDecorate(DecorateBiomeEvent.Pre event) {
public void onDecorate(PopulateChunkEvent.Pre event) {
World world = event.world;

View File

@ -8,7 +8,7 @@ import net.minecraft.block.material.Material;
import net.minecraft.world.World;
import net.minecraft.world.gen.NoiseGeneratorPerlin;
import net.minecraftforge.common.MinecraftForge;
import net.minecraftforge.event.terraingen.DecorateBiomeEvent;
import net.minecraftforge.event.terraingen.PopulateChunkEvent;
public class OreLayer3D {
@ -51,7 +51,7 @@ public class OreLayer3D {
}
@SubscribeEvent
public void onDecorate(DecorateBiomeEvent.Pre event) {
public void onDecorate(PopulateChunkEvent.Pre event) {
World world = event.world;

View File

@ -9,14 +9,14 @@ import net.minecraft.block.Block;
import net.minecraft.block.material.Material;
import net.minecraft.world.World;
import net.minecraft.world.gen.NoiseGeneratorPerlin;
import net.minecraftforge.event.terraingen.DecorateBiomeEvent;
import net.minecraftforge.event.terraingen.PopulateChunkEvent;
public class SchistStratum {
NoiseGeneratorPerlin noise;
@SubscribeEvent
public void onDecorate(DecorateBiomeEvent.Pre event) {
public void onDecorate(PopulateChunkEvent.Pre event) {
if(this.noise == null) {
this.noise = new NoiseGeneratorPerlin(new Random(event.world.getSeed()), 4);

View File

@ -275,6 +275,7 @@ container.amsLimiter=AMS-Stabilisator (Deko)
container.anvil=Stufe %s Amboss
container.arcFurnace=Lichtbogenofen
container.armorTable=Rüstungsmodifikationstisch
container.ashpit=Aschekasten
container.assembler=Fertigungsmaschine
container.autocrafter=Automatische Werkbank
container.barrel=Fass
@ -1893,6 +1894,7 @@ item.gun_calamity_ammo.name=.50 BMG Patrone (LEGACY)
item.gun_calamity_dual.name=Sattelkanone
item.gun_chemthrower.name=Chemowerfer
item.gun_coilgun.name=Gaußpistole
item.gun_cryocannon.name=Kyro-Kanone
item.gun_cryolator.name=Der Cryolator
item.gun_cryolator_ammo.name=Kryozelle
item.gun_dampfmaschine.name=Garantiert keine Scherzwaffe
@ -3710,18 +3712,30 @@ tile.concrete_stairs.name=Betonfliesentreppe
tile.concrete_super.name=Super Beton
tile.concrete_super_broken.name=Schimmliger Schutt
tile.conveyor.name=Förderband
tile.conveyor.desc=Bewegt Items$Kann mit Schraubenzieher im Uhrzeigersinn gedreht werden$Shiftclick umdas Band zu biegen
tile.conveyor_chute.name=Förderschütte
tile.conveyor_chute.desc=Bewegt Items nach unten$Die unterste Schütte verhält sich wie ein normales Förderband
tile.conveyor_double.name=Zweispuriges Förderband
tile.conveyor_double.desc=Bewegt Items$Kann mit Schraubenzieher im Uhrzeigersinn gedreht werden$Shiftclick umdas Band zu biegen
tile.conveyor_lift.name=Kettenaufzug
tile.conveyor_lift.desc=Bewegt Items nach oben$Benötigt mindestens zwei Aufzüge übereinander um richtig zu funktionieren
tile.conveyor_triple.name=Dreispuriges Förderband
tile.conveyor_triple.desc=Bewegt Items$Kann mit Schraubenzieher im Uhrzeigersinn gedreht werden$Shiftclick umdas Band zu biegen
tile.corium_block.name=Corium
tile.crane_boxer.name=Förderband-Verpacker
tile.crane_boxer.desc=Lädt eine konfigurierbare Menge Stacks in Boxen$Rechstclick mit Schraubenzieher um Eingang zu definieren$Shiftclick mit Schraubenzieher um Ausgang zu definieren$Zweimal clicken, um gegenüberliegende Seite zu definieren
tile.crane_extractor.name=Förderband-Auswerfer
tile.crane_extractor.desc=Nimmt Items aus behältern und legt sie auf Förderbänder$Hat bis zu 9 Filterslots mit Black- und Whitelist$Rechstclick mit Schraubenzieher um Ausgang zu definieren$Shiftclick mit Schraubenzieher um Eingang zu definieren$Zweimal clicken, um gegenüberliegende Seite zu definieren
tile.crane_grabber.name=Förderband-Greifer
tile.crane_grabber.desc=Nimmt Items von vorbeilaufenden Förderbändern und legt sie in Behälter$Nimmt nur Items von der nähesten Spur$Hat bis zu 9 Filterslots mit Black- und Whitelist$Rechstclick mit Schraubenzieher um Eingang zu definieren$Shiftclick mit Schraubenzieher um Ausgang zu definieren$Zweimal clicken, um gegenüberliegende Seite zu definieren
tile.crane_inserter.name=Förderband-Einsetzer
tile.crane_inserter.desc=Akzeptiert Items von Förderbändern und legt sie in Behälter$Rechstclick mit Schraubenzieher um Eingang zu definieren$Shiftclick mit Schraubenzieher um Ausgang zu definieren$Zweimal clicken, um gegenüberliegende Seite zu definieren
tile.crane_router.name=Förderband-Sortierer
tile.crane_router.desc=Sortiert Items basierend auf eingestellte Kriterien$Seiten können als Blacklist, Whitelist oder Wildcard eingestellt werden$Widlcard-Seiten werden nur verwendet, wenn kein anderer Filter zutrifft
tile.crate_splitter.name=Förderband-Teiler
tile.crane_splitter.desc=Teilt Items und Stacks gleichmäßig auf zwei Förderbänder$Zählt selbst als Förderband, kann also direkt in Einsetzer und Sortierer führen
tile.crane_unboxer.name=Förderband-Entpacker
tile.crane_unboxer.desc=Öffnet boxen$Rechstclick mit Schraubenzieher um Ausgang zu definieren$Shiftclick mit Schraubenzieher um Eingang zu definieren$Zweimal clicken, um gegenüberliegende Seite zu definieren
tile.crashed_bomb.name=Blindgänger
tile.crate.name=Vorratskiste
tile.crate_ammo.name=Sternenmetallkiste
@ -3814,6 +3828,7 @@ tile.factory_titanium_furnace.name=Einfache Fabrikzugriffsluke
tile.factory_titanium_hull.name=Fabrikblock
tile.fallout.name=Fallout
tile.fan.name=Ventilator
tile.fan.desc=Kann mit Redstone aktiviert werden$Bewegt Entities bis zu 10 Blöcke$Rechtsclick mit Schraubenzieher um den Ventilator umzudrehen
tile.fence_metal.name=Maschendrahtzaun
tile.field_disturber.name=Hochenergiefeld-Jammer
tile.fire_digamma.name=Verweilendes Digamma
@ -3961,7 +3976,7 @@ tile.machine_amgen.name=Umgebungsstrahlungs-Generator
tile.machine_arc_furnace_off.name=Lichtbogenofen
tile.machine_arc_furnace_on.name=Lichtbogenofen
tile.machine_armor_table.name=Rüstungsmodifikationstisch
tile.machine_ashpit.name=Ashekasten
tile.machine_ashpit.name=Aschekasten
tile.machine_ashpit.desc=Sammelt Asche von Feuerbüchsen und Heizöfen
tile.machine_assembler.name=Fertigungsmaschine
tile.machine_assemfac.name=Fertigungsfabrik
@ -4211,6 +4226,8 @@ tile.pink_log.name=Pinkes Holz
tile.pink_planks.name=Pinke Holzbretter
tile.pink_slab.name=Pinke Holzstufe
tile.pink_stairs.name=Pinke Holztreppen
tile.piston_inserter.name=Einsetzer-Kolben
tile.piston_inserter.desc=Kann ein Item halten$Wenn mit Redstone aktiviert, setzt das Item in gebohrten Graphit ein$Alle Items in gebohrten Graphitblöcken in der Linie werden einen Block verschoben$Benötigt einen Luftblock zwischen sich selbst und dem Graphit
tile.plant_dead.name=Tote Pflanze
tile.plant_flower.cd0.name=Senf-Weide
tile.plant_flower.cd1.name=Senf-Weide
@ -4232,6 +4249,25 @@ tile.pribris.name=RBMK-Schutt
tile.pribris_burning.name=Flammender RBMK-Schutt
tile.pribris_digamma.name=Geschwärzter RBMK-Schutt
tile.pribris_radiating.name=Glühender RBMK-Schutt
tile.pwr_block.name=PWR
tile.pwr_casing.name=PWR Druckbehälter
tile.pwr_casing.desc=Muss alle internen Teile des PWRs abdecken$Platzierung: Hülle
tile.pwr_channel.name=PWR Kühlmittelkanal
tile.pwr_channel.desc=Nutzt Hitze aus der Hülle um Kühlmittle zu erhitzen$Platzierung: Egal
tile.pwr_control.name=PWR Steuerstäbe
tile.pwr_control.desc=Reguliert verbundene Brennstäbe$Platzierung: Gitter, zwischen Brennstäben
tile.pwr_controller.name=PWR Controller
tile.pwr_controller.desc=Zugangsterminal zum PWR$Platzierung: Hülle, nur eines pro Reaktor$Rechtsclick um Reaktor zusammenzubauen
tile.pwr_fuel.name=PWR Brennstäbe
tile.pwr_fuel.desc=Erhöht die Kapazität für Brennelemente$Platzierung: Gitter, für höhere Reaktivität
tile.pwr_heatex.name=PWR Waärmetauscher
tile.pwr_heatex.desc=Gleicht Kerntemparatur mit Hülltemparatur aus$Platzierung: Egal
tile.pwr_neutron_source.name=PWR Neutronenquelle
tile.pwr_neutron_source.desc=Fügt dem Kern 20 Flux hinzu$Platzierung: Egal$Flux erreicht den Kern nur, wenn Steuerstäbe offen sind
tile.pwr_port.name=PWR Zugangsport
tile.pwr_port.desc=Erlaubt IO für Items und Flüssigkeiten$Platzierung: Hülle
tile.pwr_reflector.name=PWR Neutronenreflektor
tile.pwr_reflector.desc=Reflektier Neutronen auf Brennstäbe zurück$Platzierung: Hülle, für höhere Reaktivität$Gültiger Block für Hülle
tile.radio_torch_counter.name=Redstone-over-Radio Itemzähler
tile.radio_torch_counter.desc=Kann auf ebenen Flächen oder Komparator-kompatiblen Blöcken platziert werden$Signal basiert auf Anzahl passender Items
tile.radio_torch_receiver.name=Redstone-over-Radio Empfänger

View File

@ -632,6 +632,7 @@ container.amsLimiter=AMS Stabilizer (Deco)
container.anvil=Tier %s Anvil
container.arcFurnace=Arc Furnace
container.armorTable=Armor Modification Table
container.ashpit=Ashpit
container.assembler=Assembly Machine
container.autocrafter=Automatic Crafting Table
container.barrel=Barrel
@ -2610,6 +2611,7 @@ item.gun_calamity_dual.name=Saddle Gun
item.gun_chemthrower.name=Chemthrower
item.gun_coilgun.name=Coilgun
item.gun_congolake.name=Congo Lake
item.gun_cryocannon.name=Cryo Cannon
item.gun_cryolator.name=The Cryolator
item.gun_cryolator_ammo.name=Cryo Cell
item.gun_dampfmaschine.name=Totally Not a Joke Weapon
@ -4680,18 +4682,30 @@ tile.concrete_stairs.name=Concrete Tile Stairs
tile.concrete_super.name=Über Concrete
tile.concrete_super_broken.name=Moldy Debris
tile.conveyor.name=Conveyor Belt
tile.conveyor.desc=Moves items dropped on it$Can be rotated clockwise with a screwdriver$Shift-click with screwdriver to bend
tile.conveyor_chute.name=Conveyor Chute
tile.conveyor_chute.desc=Moves items down$The bottom-most chute will act like a regular conveyor belt
tile.conveyor_double.name=Double-Lane Conveyor Belt
tile.conveyor_double.desc=Moves items dropped on it$Can be rotated clockwise with a screwdriver$Shift-click with screwdriver to bend
tile.conveyor_lift.name=Conveyor Chain Lift
tile.conveyor_lift.desc=Moves items up$Requires at least two blocks on top of each other to work properly
tile.conveyor_triple.name=Triple-Lane Conveyor Belt
tile.conveyor_triple.desc=Moves items dropped on it$Can be rotated clockwise with a screwdriver$Shift-click with screwdriver to bend
tile.corium_block.name=Corium
tile.crane_boxer.name=Conveyor Boxer
tile.crane_boxer.desc=Loads a configurable amount of stacks into boxes which move along conveyor belts$Right-click with screwdriver to set input side$Shift-click with screwdriver to set the output side$Click twice to set the opposite side
tile.crane_extractor.name=Conveyor Ejector
tile.crane_extractor.desc=Takes items from inventories and places them on covneyor belts$Has up to 9 filter slots with black and whitelist$Right-click with screwdriver to set output side$Shift-click with screwdriver to set the input side$Click twice to set the opposite side
tile.crane_grabber.name=Conveyor Grabber
tile.crane_grabber.desc=Takes items from passing conveyors and places them into containers$Will only take items from the closest lane$Has up to 9 filter slots with black and whitelist$Right-click with screwdriver to set input side$Shift-click with screwdriver to set the output side$Click twice to set the opposite side
tile.crane_inserter.name=Conveyor Inserter
tile.crane_inserter.desc=Accepts items from conveyors and places them into containers$Right-click with screwdriver to set input side$Shift-click with screwdriver to set the output side$Click twice to set the opposite side
tile.crane_router.name=Conveyor Sorter
tile.crane_router.desc=Sorts item based on defined criteria$Sides can be defined as blacklist, whitelist or wildcard$Wildcard sides are only chosen if no other filter matches
tile.crane_splitter.name=Conveyor Splitter
tile.crane_splitter.desc=Splits items and stacks evenly onto two conveyor belts$Is a conveyor belt itself, so it can directly input into an inserter or sorter
tile.crane_unboxer.name=Conveyor Unboxer
tile.crane_unboxer.desc=Receives boxes and extracts their contents$Right-click with screwdriver to set output side$Shift-click with screwdriver to set the input side$Click twice to set the opposite side
tile.crashed_bomb.name=Dud
tile.crate.name=Supply Crate
tile.crate_ammo.name=Starmetal Crate
@ -4714,27 +4728,6 @@ tile.deco_asbestos.name=Asbestos Roof
tile.deco_beryllium.name=Beryllium Deco Block
tile.deco_computer.ibm_300pl.name=IBM Personal Computer 300PL
tile.deco_emitter.name=Deco Light Emitter
tile.part_emitter.name=Deco Particle Emitter
tile.piston_inserter.name=Inserter
tile.pwr_block.name=PWR
tile.pwr_casing.name=PWR Pressure Vessel
tile.pwr_casing.desc=Needs to cover all internal parts for the reactor to form$Placement: Casing
tile.pwr_channel.name=PWR Coolant Channel
tile.pwr_channel.desc=Uses hull heat to heat up coolant$Placement: Any
tile.pwr_control.name=PWR Control Rod
tile.pwr_control.desc=Allows connected fuel rods to be controlled$Placement: Grid, between control rods
tile.pwr_controller.name=PWR Controller
tile.pwr_controller.desc=Access terminal for the PWR$Placement: Casing, only one per reactor$Right-click to assemble the reactor
tile.pwr_fuel.name=PWR Fuel Rod
tile.pwr_fuel.desc=Increases PWR fuel capacity$Placement: Grid, for increased reactivity
tile.pwr_heatex.name=PWR Heat Exchanger
tile.pwr_heatex.desc=Moves core heat to the hull$Placement: Any
tile.pwr_neutron_source.name=PWR Neutron Source
tile.pwr_neutron_source.desc=Adds 20 flux to the core$Placement: Any$Flux only reaches fuel rods if connections are open
tile.pwr_port.name=PWR Access Port
tile.pwr_port.desc=Allows item and fluid IO$Placement: Casing
tile.pwr_reflector.name=PWR Neutron Reflector
tile.pwr_reflector.desc=Reflects neutrons back to fuel rods$Placement: Grid, for increased reactivity$Valid casing material
tile.deco_lead.name=Lead Deco Block
tile.deco_rbmk.name=RBMK Deco Block
tile.deco_rbmk_smooth.name=Smooth RBMK Deco Block
@ -4806,6 +4799,7 @@ tile.factory_titanium_furnace.name=Basic Factory Access Hatch
tile.factory_titanium_hull.name=Factory Block
tile.fallout.name=Fallout
tile.fan.name=Fan
tile.fan.desc=Activates using redstone$Will push entities up to 10 blocks$Right-click with screwdriver to flip
tile.fence_metal.name=Chainlink Fence
tile.field_disturber.name=High Energy Field Jammer
tile.filing_cabinet.green.name=Dusty Filing Cabinet
@ -5205,11 +5199,14 @@ tile.ore_uranium_scorched.name=Scorched Uranium Ore
tile.ore_verticium.name=Dollar Green Mineral
tile.ore_volcano.name=Geothermal Vent
tile.ore_weidanium.name=Weidite
tile.part_emitter.name=Deco Particle Emitter
tile.pink_barrel.name=Kerosene Barrel
tile.pink_log.name=Pink Log
tile.pink_planks.name=Pink Wood Planks
tile.pink_slab.name=Pink Wood Slab
tile.pink_stairs.name=Pink Wood Stairs
tile.piston_inserter.name=Inserter
tile.piston_inserter.desc=Can receive one item using automation$Using redstone, it will insert the item into drilled graphite$All drilled graphite in the chain will have their items pushed by one block$Needs one block of air between the graphite
tile.plant_dead.name=Dead Plant
tile.plant_flower.cd0.name=Mustard Willow
tile.plant_flower.cd1.name=Mustard Willow
@ -5231,6 +5228,25 @@ tile.pribris.name=RBMK Debris
tile.pribris_burning.name=Flaming RBMK Debris
tile.pribris_digamma.name=Blackened RBMK Debris
tile.pribris_radiating.name=Smoldering RBMK Debris
tile.pwr_block.name=PWR
tile.pwr_casing.name=PWR Pressure Vessel
tile.pwr_casing.desc=Needs to cover all internal parts for the reactor to form$Placement: Casing
tile.pwr_channel.name=PWR Coolant Channel
tile.pwr_channel.desc=Uses hull heat to heat up coolant$Placement: Any
tile.pwr_control.name=PWR Control Rod
tile.pwr_control.desc=Allows connected fuel rods to be controlled$Placement: Grid, between fuel rods
tile.pwr_controller.name=PWR Controller
tile.pwr_controller.desc=Access terminal for the PWR$Placement: Casing, only one per reactor$Right-click to assemble the reactor
tile.pwr_fuel.name=PWR Fuel Rod
tile.pwr_fuel.desc=Increases PWR fuel capacity$Placement: Grid, for increased reactivity
tile.pwr_heatex.name=PWR Heat Exchanger
tile.pwr_heatex.desc=Moves core heat to the hull$Placement: Any
tile.pwr_neutron_source.name=PWR Neutron Source
tile.pwr_neutron_source.desc=Adds 20 flux to the core$Placement: Any$Flux only reaches fuel rods if connections are open
tile.pwr_port.name=PWR Access Port
tile.pwr_port.desc=Allows item and fluid IO$Placement: Casing
tile.pwr_reflector.name=PWR Neutron Reflector
tile.pwr_reflector.desc=Reflects neutrons back to fuel rods$Placement: Grid, for increased reactivity$Valid casing material
tile.radio_torch_counter.name=Redstone-over-Radio Item Counter
tile.radio_torch_counter.desc=Placable on flat surfaces or comparator-compatible blocks$Bases signal on the amount of matching items
tile.radio_torch_receiver.name=Redstone-over-Radio Receiver

Binary file not shown.

Before

Width:  |  Height:  |  Size: 16 KiB

After

Width:  |  Height:  |  Size: 16 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 2.6 KiB

After

Width:  |  Height:  |  Size: 9.4 KiB