Merge remote-tracking branch 'HbmMods/master'

This commit is contained in:
Vaern 2023-08-29 20:22:32 -07:00
commit ddc34c2c1b
78 changed files with 11333 additions and 1346 deletions

38
CONTRIBUTING.md Normal file
View File

@ -0,0 +1,38 @@
# NTM Contribution Guidelines, Version 1
## Keep it concise
The best PRs are the ones that are small and to the point. The entire PR should focus on the thing you're trying to do, whether it's a fix or a feature PR. If your PR adds the Super Weldtronic 9000, there's no reason to include changes and tweaks to other things that have nothing to do with the Super Weldtronic 9000. If you think those changes are still necessary, open a new PR.
## Keep it clean
While admittedly my own code isn't the cleanest on earth, please try to keep terrible practices at a minimum. Also avoid things like unused variables and imports, mixed indentation styles or changes that have a high likelihood of breaking things.
Things you should also avoid include:
* new libraries (unless your PR absolutely needs it like for special mod compat)
* duplicate util functions (just use what we have, man)
* unused or half finished util functions (for obvious reasons)
* half finished or obviously broken features (à la "bob will fix it, i'm sure of it", please don't do that)
## Test your code
This should go without saying, but please don't PR code that was never actually tested or has obvious compiler errors in it.
## Communication
If you're planning on adding some new thing or doing a grand change, it's best to ask whether that's a good idea before spending 50 hours on a project that won't end up getting merged, due to issues that could have been entirely avoidable with communication.
## No guarantees
This ties together with the previous point - there's no guarantees that your PR gets merged no matter how hard or long you've worked on it. However, if you follow these guidelines, there's a good chance that your PR will be accepted.
## I want to help but don't know where to start
If you want to help the project, consider getting involved with the [wiki](ntm.fandom.com) first. Writing an article is the easiest and quickest way of helping, and requires no programming knowledge. If you do know Java and want to help, consider these places first:
* Localization, i.e. translations in different language are always accepted.
* `IConfigurableMachine`, an interface that allows machines to be added to the `hbmMachines.json` config, is still not used by many machines.
* F1 Presentations, also known as "Stare" or "Jar Presentations", is a neat system of creating a short movie explaining functionality. All the relevant code can be found in `com.hbm.wiaj`.
* Some guns still use the old "bow-style" systems and not `ItemGunBase`.
* Many guns don't have any animations whatsoever, just adding a minor recoil would already improve them by a lot.
* Adding tooltips to more machines, explaining some of the basics.

View File

@ -1,42 +1,4 @@
## Added
* PWR
* The successor to the old large nuclear reactor
* 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
* Sodalite
* A gem that can be extracted from fluorite or lapis ore
* Can be heated in the combination oven to make sodium and chlorine
* Liquid sodium
* Valid PWR coolant with high efficiency rating
* Made by liquefacting sodium
* Liquid thorium salt
* Valid PWR coolant
* Has a high flux multiplication rate, boosting fuels
* After cooling, the depleted salt has to be reprocessed using a chemical plant
* Creative stirling engine
* A stirling engine with 100% efficiency and no heat cap
* Still has the 10% delta-T heat transfer rate as the other stirlings
* Great for quickly benchmarking reactors without needing to set up a turbine cycle
## Changed
* Bedrock fluorite ore now yields actual ore instead of fluorite directly
* Blocks that fall from fallout effects no longer drop items when falling on small blocks, preventing issues like gas blocks being dropped
* Bullets no longer need primers to be crafted, primers no longer exist at all
* The automatic buzzsaw can now use wood oil, ethanol, fish oil and heavy oil to run
* 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.
## Fixed ## Fixed
* Fixed FEnSU's IO limit not working properly * Fixed PWR still operating as normal even when the structure is dissolved
* Fixed overflow caused by uncapped Spk values of DFC beams, they are now capped at 9,200,000 Spk * Fixed the new watz not giving the meltdown achievement
* Fixed smooth lighting not working on connected textures * Fixed serverside crash caused by conveyor cranes
* Fixed the Thermos preventer not working on Crucible type servers
* Fixed pollution save files not working correctly on certain Thermos forks
* Fixed blast furnace output overstacking
* Fixed potential crash caused by centrifuges trying to create a recipe using non-registered items
* Fixed chemplant GUI crashing when too many upgrades are applied to a short duration recipe
* 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

View File

@ -1,6 +1,6 @@
mod_version=1.0.27 mod_version=1.0.27
# Empty build number makes a release type # Empty build number makes a release type
mod_build_number=4690 mod_build_number=4705
credits=HbMinecraft, rodolphito (explosion algorithms), grangerave (explosion algorithms),\ credits=HbMinecraft, rodolphito (explosion algorithms), grangerave (explosion algorithms),\
\ Hoboy (textures, models), Doctor17 (russian localization), Drillgon200 (effects, models,\ \ 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,\ \ (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),\ \ 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\ \ Adam29 (liquid petroleum, ethanol, electric furnace), Pashtet (russian localization), MartinTheDragon\
\ (calculator, chunk-based fallout), haru315 (spiral point algorithm), Sten89 (models), Pixelguru26\ \ (calculator, chunk-based fallout, bendable cranes), haru315 (spiral point algorithm), Sten89 (models), Pixelguru26\
\ (textures), TheBlueHat (textures), Alcater (GUI textures, porting), impbk2002 (project settings),\ \ (textures), TheBlueHat (textures), Alcater (GUI textures, porting), impbk2002 (project settings), Nos (models),\
\ Burningwater202 (laminate glass), OvermindDL1 (project settings), TehTemmie (reacher radiation function),\ \ 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),\ \ Toshayo (satellite loot system, project settings, gradle curse task), Silly541 (config for safe ME drives),\
\ Voxelstice (OpenComputers integration, turbine spinup), BallOfEnergy1 (OpenComputers integration), martemen\ \ Voxelstice (OpenComputers integration, turbine spinup), BallOfEnergy1 (OpenComputers integration), martemen\
\ (project settings), Pvndols (thorium fuel recipe, gas turbine), JamesH2 (blood mechanics, nitric acid,\ \ (project settings), Pvndols (thorium fuel recipe, gas turbine), JamesH2 (blood mechanics, nitric acid,\
\ particle emitter), sdddddf80 (recipe configs, chinese localization, custom machine holograms),\ \ 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_bedrock;
public static Block ore_volcano; public static Block ore_volcano;
public static Block ore_bedrock_coltan;
public static Block ore_nether_coal; public static Block ore_nether_coal;
public static Block ore_nether_smoldering; public static Block ore_nether_smoldering;
public static Block ore_nether_uranium; 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_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_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 = 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_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"); 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_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_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_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_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"); 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"); 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_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"); 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"); 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"); 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"); 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_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_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_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_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(MainRegistry.machineTab).setBlockTextureName(RefStrings.MODID + ":watz_conductor_top"); 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(MainRegistry.machineTab).setBlockTextureName(RefStrings.MODID + ":watz_computer"); 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 = 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"); 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()); GameRegistry.registerBlock(cluster_copper, ItemBlockBase.class, cluster_copper.getUnlocalizedName());
//Bedrock ores //Bedrock ores
GameRegistry.registerBlock(ore_bedrock_coltan, ore_bedrock_coltan.getUnlocalizedName());
GameRegistry.registerBlock(ore_bedrock_oil, ore_bedrock_oil.getUnlocalizedName()); GameRegistry.registerBlock(ore_bedrock_oil, ore_bedrock_oil.getUnlocalizedName());
//Nice Meme //Nice Meme
@ -3233,21 +3227,20 @@ public class ModBlocks {
register(radio_torch_receiver); register(radio_torch_receiver);
register(radio_torch_counter); register(radio_torch_counter);
GameRegistry.registerBlock(crane_extractor, crane_extractor.getUnlocalizedName()); register(crane_extractor);
GameRegistry.registerBlock(crane_inserter, crane_inserter.getUnlocalizedName()); register(crane_inserter);
GameRegistry.registerBlock(crane_grabber, crane_grabber.getUnlocalizedName()); register(crane_grabber);
GameRegistry.registerBlock(crane_router, crane_router.getUnlocalizedName()); register(crane_router);
GameRegistry.registerBlock(crane_boxer, crane_boxer.getUnlocalizedName()); register(crane_boxer);
GameRegistry.registerBlock(crane_unboxer, crane_unboxer.getUnlocalizedName()); register(crane_unboxer);
GameRegistry.registerBlock(conveyor, conveyor.getUnlocalizedName()); register(conveyor);
GameRegistry.registerBlock(conveyor_double, conveyor_double.getUnlocalizedName()); register(conveyor_double);
GameRegistry.registerBlock(conveyor_triple, conveyor_triple.getUnlocalizedName()); register(conveyor_triple);
GameRegistry.registerBlock(conveyor_chute, conveyor_chute.getUnlocalizedName()); register(conveyor_chute);
GameRegistry.registerBlock(conveyor_lift, conveyor_lift.getUnlocalizedName()); register(conveyor_lift);
GameRegistry.registerBlock(crane_splitter, crane_splitter.getUnlocalizedName()); register(crane_splitter);
GameRegistry.registerBlock(fan, fan.getUnlocalizedName()); register(fan);
register(piston_inserter);
GameRegistry.registerBlock(piston_inserter, piston_inserter.getUnlocalizedName());
GameRegistry.registerBlock(chain, chain.getUnlocalizedName()); GameRegistry.registerBlock(chain, chain.getUnlocalizedName());
GameRegistry.registerBlock(ladder_sturdy, ladder_sturdy.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.blocks.ModBlocks;
import com.hbm.config.BombConfig; 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.logic.EntityNukeExplosionMK5;
import com.hbm.explosion.ExplosionLarge; import com.hbm.explosion.ExplosionLarge;
import com.hbm.explosion.ExplosionNT; import com.hbm.explosion.ExplosionNT;
@ -78,12 +78,7 @@ public class ExplosiveCharge extends Block implements IBomb, IDetConnectible {
} }
if(this == ModBlocks.det_nuke) { if(this == ModBlocks.det_nuke) {
world.spawnEntityInWorld(EntityNukeExplosionMK5.statFac(world, BombConfig.missileRadius, x + 0.5, y + 0.5, z + 0.5)); world.spawnEntityInWorld(EntityNukeExplosionMK5.statFac(world, BombConfig.missileRadius, x + 0.5, y + 0.5, z + 0.5));
EntityNukeTorex.statFac(world, x + 0.5, y + 0.5, z + 0.5, BombConfig.missileRadius);
EntityNukeCloudSmall entity2 = new EntityNukeCloudSmall(world, 1000, BombConfig.missileRadius * 0.005F);
entity2.posX = x;
entity2.posY = y;
entity2.posZ = z;
world.spawnEntityInWorld(entity2);
} }
} }

View File

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

View File

@ -4,7 +4,7 @@ import java.util.Random;
import com.hbm.blocks.ModBlocks; import com.hbm.blocks.ModBlocks;
import com.hbm.entity.effect.EntityCloudFleija; 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.grenade.EntityGrenadeZOMG;
import com.hbm.entity.logic.EntityBalefire; import com.hbm.entity.logic.EntityBalefire;
import com.hbm.entity.logic.EntityNukeExplosionMK3; 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.setPosition(xCoord + 0.5, yCoord + 0.5, zCoord + 0.5);
bf.destructionRange = (int) amat; bf.destructionRange = (int) amat;
worldObj.spawnEntityInWorld(bf); 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 /// /// HYDROGEN ///
} else if(hydro > 0) { } else if(hydro > 0) {
@ -179,7 +179,7 @@ public class NukeCustom extends BlockContainer implements IBomb {
dirty *= 0.25F; dirty *= 0.25F;
worldObj.spawnEntityInWorld(EntityNukeExplosionMK5.statFac(worldObj, (int)hydro, xCoord + 0.5, yCoord + 0.5, zCoord + 0.5).moreFallout((int)dirty)); 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 /// /// NUCLEAR ///
} else if(nuke > 0) { } else if(nuke > 0) {
@ -188,7 +188,7 @@ public class NukeCustom extends BlockContainer implements IBomb {
nuke = Math.min(nuke, maxNuke); 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(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 /// /// NON-NUCLEAR ///
} else if(tnt >= 75) { } else if(tnt >= 75) {
@ -196,7 +196,7 @@ public class NukeCustom extends BlockContainer implements IBomb {
tnt = Math.min(tnt, maxTnt); tnt = Math.min(tnt, maxTnt);
worldObj.spawnEntityInWorld(EntityNukeExplosionMK5.statFacNoRad(worldObj, (int)tnt, xCoord + 0.5, yCoord + 0.5, zCoord + 0.5)); 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) { } else if(tnt > 0) {
ExplosionLarge.explode(worldObj, xCoord + 0.5, yCoord + 0.5, zCoord + 0.5, tnt, true, true, true); 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.blocks.ModBlocks;
import com.hbm.config.BombConfig; 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.logic.EntityNukeExplosionMK5;
import com.hbm.interfaces.IBomb; import com.hbm.interfaces.IBomb;
import com.hbm.main.MainRegistry; import com.hbm.main.MainRegistry;
@ -130,13 +130,8 @@ public class NukeGadget extends BlockContainer implements IBomb {
tetn.clearSlots(); tetn.clearSlots();
world.playSoundEffect(x, y, z, "random.explode", 1.0f, world.rand.nextFloat() * 0.1F + 0.9F); 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)); 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);
EntityNukeCloudSmall entity2 = new EntityNukeCloudSmall(world, 1000, BombConfig.gadgetRadius * 0.005F);
entity2.posX = x;
entity2.posY = y;
entity2.posZ = z;
world.spawnEntityInWorld(entity2);
} }
return false; return false;

View File

@ -4,7 +4,7 @@ import java.util.Random;
import com.hbm.blocks.ModBlocks; import com.hbm.blocks.ModBlocks;
import com.hbm.config.BombConfig; 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.logic.EntityNukeExplosionMK5;
import com.hbm.interfaces.IBomb; import com.hbm.interfaces.IBomb;
import com.hbm.main.MainRegistry; 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.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)); world.spawnEntityInWorld(EntityNukeExplosionMK5.statFac(world, BombConfig.manRadius, x + 0.5, y + 0.5, z + 0.5));
EntityNukeTorex.statFac(world, x + 0.5, y + 0.5, z + 0.5, BombConfig.manRadius);
EntityNukeCloudSmall entity2 = new EntityNukeCloudSmall(world, 1000, BombConfig.manRadius * 0.005F);
entity2.posX = x;
entity2.posY = y;
entity2.posZ = z;
world.spawnEntityInWorld(entity2);
} }
return false; return false;

View File

@ -4,7 +4,7 @@ import java.util.Random;
import com.hbm.blocks.ModBlocks; import com.hbm.blocks.ModBlocks;
import com.hbm.config.BombConfig; 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.logic.EntityNukeExplosionMK5;
import com.hbm.interfaces.IBomb; import com.hbm.interfaces.IBomb;
import com.hbm.main.MainRegistry; 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.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)); world.spawnEntityInWorld(EntityNukeExplosionMK5.statFac(world, BombConfig.mikeRadius, x + 0.5, y + 0.5, z + 0.5));
EntityNukeTorex.statFac(world, x + 0.5, y + 0.5, z + 0.5, BombConfig.mikeRadius);
EntityNukeCloudSmall entity2 = new EntityNukeCloudSmall(world, 1000, r * 0.005F);
entity2.posX = x;
entity2.posY = y;
entity2.posZ = z;
world.spawnEntityInWorld(entity2);
} }
return false; return false;

View File

@ -4,7 +4,7 @@ import java.util.Random;
import com.hbm.blocks.ModBlocks; import com.hbm.blocks.ModBlocks;
import com.hbm.config.BombConfig; 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.logic.EntityNukeExplosionMK5;
import com.hbm.interfaces.IBomb; import com.hbm.interfaces.IBomb;
import com.hbm.main.MainRegistry; 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.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)); world.spawnEntityInWorld(EntityNukeExplosionMK5.statFacNoRad(world, r, x + 0.5, y + 0.5, z + 0.5));
EntityNukeTorex.statFac(world, x + 0.5, y + 0.5, z + 0.5, r);
EntityNukeCloudSmall entity2 = new EntityNukeCloudSmall(world, 1000, r * 0.005F);
entity2.posX = x;
entity2.posY = y;
entity2.posZ = z;
world.spawnEntityInWorld(entity2);
} }
return false; return false;

View File

@ -4,7 +4,7 @@ import java.util.Random;
import com.hbm.blocks.ModBlocks; import com.hbm.blocks.ModBlocks;
import com.hbm.config.BombConfig; 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.logic.EntityNukeExplosionMK5;
import com.hbm.interfaces.IBomb; import com.hbm.interfaces.IBomb;
import com.hbm.main.MainRegistry; 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) { public boolean igniteTestBomb(World world, int x, int y, int z, int r) {
if(!world.isRemote) { if(!world.isRemote) {
tetn.clearSlots(); 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.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)); world.spawnEntityInWorld(EntityNukeExplosionMK5.statFac(world, r, x + 0.5, y + 0.5, z + 0.5));
EntityNukeTorex.statFac(world, x + 0.5, y + 0.5, z + 0.5, r);
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);
} }
return false; 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) { public void onBlockAdded(World world, int x, int y, int z) {
super.onBlockAdded(world, x, y, z); super.onBlockAdded(world, x, y, z);
// who wrote this???
rad = HazardSystem.getHazardLevelFromStack(new ItemStack(this), HazardRegistry.RADIATION) * 0.1F; rad = HazardSystem.getHazardLevelFromStack(new ItemStack(this), HazardRegistry.RADIATION) * 0.1F;
if(this.rad > 0) if(this.rad > 0)

View File

@ -29,6 +29,8 @@ public class BlockSellafield extends BlockHazard {
public BlockSellafield(Material mat) { public BlockSellafield(Material mat) {
super(mat); super(mat);
this.setCreativeTab(MainRegistry.blockTab); this.setCreativeTab(MainRegistry.blockTab);
this.needsRandomTick = true;
this.rad = 0.5F;
} }
@Override @Override
@ -41,19 +43,20 @@ public class BlockSellafield extends BlockHazard {
@Override @Override
public void updateTick(World world, int x, int y, int z, Random rand) { 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); 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) if(meta > 0)
world.setBlockMetadataWithNotify(x, y, z, meta - 1, 2); world.setBlockMetadataWithNotify(x, y, z, meta - 1, 2);
else else
world.setBlock(x, y, z, ModBlocks.sellafield_slaked); 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) @SideOnly(Side.CLIENT)
protected IIcon[] icons; protected IIcon[] icons;
@ -86,6 +89,4 @@ public class BlockSellafield extends BlockHazard {
public IIcon getIcon(int side, int meta) { public IIcon getIcon(int side, int meta) {
return this.icons[meta % this.icons.length]; 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.main.MainRegistry;
import com.hbm.tileentity.IPersistentNBT; import com.hbm.tileentity.IPersistentNBT;
import com.hbm.tileentity.machine.storage.TileEntityBarrel; import com.hbm.tileentity.machine.storage.TileEntityBarrel;
import com.hbm.tileentity.machine.storage.TileEntityMachineFluidTank;
import com.hbm.util.I18nUtil; import com.hbm.util.I18nUtil;
import cpw.mods.fml.client.registry.RenderingRegistry; 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.IPersistentNBT;
import com.hbm.tileentity.TileEntityProxyCombo; import com.hbm.tileentity.TileEntityProxyCombo;
import com.hbm.tileentity.machine.storage.TileEntityMachineBAT9000; import com.hbm.tileentity.machine.storage.TileEntityMachineBAT9000;
import com.hbm.tileentity.machine.storage.TileEntityMachineFluidTank;
import com.hbm.util.I18nUtil; import com.hbm.util.I18nUtil;
import cpw.mods.fml.common.network.internal.FMLNetworkHandler; import cpw.mods.fml.common.network.internal.FMLNetworkHandler;

View File

@ -2,6 +2,8 @@ package com.hbm.blocks.machine;
import java.util.List; import java.util.List;
import com.hbm.blocks.ITooltipProvider;
import api.hbm.block.IBlowable; import api.hbm.block.IBlowable;
import api.hbm.block.IToolable; import api.hbm.block.IToolable;
import cpw.mods.fml.relauncher.Side; import cpw.mods.fml.relauncher.Side;
@ -20,7 +22,7 @@ import net.minecraft.world.IBlockAccess;
import net.minecraft.world.World; import net.minecraft.world.World;
import net.minecraftforge.common.util.ForgeDirection; import net.minecraftforge.common.util.ForgeDirection;
public class MachineFan extends BlockContainer implements IToolable { public class MachineFan extends BlockContainer implements IToolable, ITooltipProvider {
public MachineFan() { public MachineFan() {
super(Material.iron); super(Material.iron);
@ -142,4 +144,9 @@ public class MachineFan extends BlockContainer implements IToolable {
return true; 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.IPersistentNBT;
import com.hbm.tileentity.IRepairable; import com.hbm.tileentity.IRepairable;
import com.hbm.tileentity.TileEntityProxyCombo; import com.hbm.tileentity.TileEntityProxyCombo;
import com.hbm.tileentity.machine.storage.TileEntityMachineBattery;
import com.hbm.tileentity.machine.storage.TileEntityMachineFluidTank; import com.hbm.tileentity.machine.storage.TileEntityMachineFluidTank;
import com.hbm.util.I18nUtil; import com.hbm.util.I18nUtil;

View File

@ -1,6 +1,9 @@
package com.hbm.blocks.machine; package com.hbm.blocks.machine;
import java.util.List;
import com.hbm.blocks.BlockContainerBase; import com.hbm.blocks.BlockContainerBase;
import com.hbm.blocks.ITooltipProvider;
import com.hbm.tileentity.INBTPacketReceiver; import com.hbm.tileentity.INBTPacketReceiver;
import api.hbm.block.IInsertable; import api.hbm.block.IInsertable;
@ -21,7 +24,7 @@ import net.minecraft.world.IBlockAccess;
import net.minecraft.world.World; import net.minecraft.world.World;
import net.minecraftforge.common.util.ForgeDirection; import net.minecraftforge.common.util.ForgeDirection;
public class PistonInserter extends BlockContainerBase { public class PistonInserter extends BlockContainerBase implements ITooltipProvider {
public PistonInserter() { public PistonInserter() {
super(Material.iron); super(Material.iron);
@ -383,4 +386,9 @@ public class PistonInserter extends BlockContainerBase {
@Override public boolean isItemValidForSlot(int slot, ItemStack stack) { return true; } @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; package com.hbm.blocks.network;
import java.util.List;
import com.hbm.blocks.ITooltipProvider;
import com.hbm.entity.item.EntityMovingItem; import com.hbm.entity.item.EntityMovingItem;
import com.hbm.lib.RefStrings; 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.Entity;
import net.minecraft.entity.EntityLivingBase; import net.minecraft.entity.EntityLivingBase;
import net.minecraft.entity.item.EntityItem; import net.minecraft.entity.item.EntityItem;
import net.minecraft.entity.player.EntityPlayer;
import net.minecraft.item.ItemStack; import net.minecraft.item.ItemStack;
import net.minecraft.util.AxisAlignedBB; import net.minecraft.util.AxisAlignedBB;
import net.minecraft.util.IIcon; import net.minecraft.util.IIcon;
@ -22,7 +26,7 @@ import net.minecraft.world.IBlockAccess;
import net.minecraft.world.World; import net.minecraft.world.World;
import net.minecraftforge.common.util.ForgeDirection; 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) @SideOnly(Side.CLIENT)
protected IIcon sideIcon; protected IIcon sideIcon;
@ -159,4 +163,9 @@ public abstract class BlockConveyorBase extends Block implements IConveyorBelt {
world.setBlockMetadataWithNotify(x, y, z, 4, 2); 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,11 +2,11 @@ package com.hbm.blocks.network;
import api.hbm.block.IToolable; import api.hbm.block.IToolable;
import com.hbm.blocks.IBlockSideRotation; import com.hbm.blocks.IBlockSideRotation;
import com.hbm.blocks.ITooltipProvider;
import com.hbm.items.tool.ItemTooling; import com.hbm.items.tool.ItemTooling;
import com.hbm.lib.RefStrings; import com.hbm.lib.RefStrings;
import com.hbm.main.MainRegistry; import com.hbm.main.MainRegistry;
import com.hbm.tileentity.network.TileEntityCraneBase; import com.hbm.tileentity.network.TileEntityCraneBase;
import com.hbm.util.ChatBuilder;
import cpw.mods.fml.client.registry.RenderingRegistry; import cpw.mods.fml.client.registry.RenderingRegistry;
import cpw.mods.fml.common.network.internal.FMLNetworkHandler; import cpw.mods.fml.common.network.internal.FMLNetworkHandler;
import cpw.mods.fml.relauncher.Side; import cpw.mods.fml.relauncher.Side;
@ -23,15 +23,15 @@ import net.minecraft.inventory.ISidedInventory;
import net.minecraft.item.ItemStack; import net.minecraft.item.ItemStack;
import net.minecraft.nbt.NBTTagCompound; import net.minecraft.nbt.NBTTagCompound;
import net.minecraft.tileentity.TileEntity; import net.minecraft.tileentity.TileEntity;
import net.minecraft.util.EnumChatFormatting;
import net.minecraft.util.IIcon; import net.minecraft.util.IIcon;
import net.minecraft.world.IBlockAccess; import net.minecraft.world.IBlockAccess;
import net.minecraft.world.World; import net.minecraft.world.World;
import net.minecraftforge.common.util.ForgeDirection; import net.minecraftforge.common.util.ForgeDirection;
import java.util.List;
import java.util.Random; 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 iconSide;
@SideOnly(Side.CLIENT) protected IIcon iconIn; @SideOnly(Side.CLIENT) protected IIcon iconIn;
@ -92,10 +92,6 @@ public abstract class BlockCraneBase extends BlockContainer implements IBlockSid
world.setBlockMetadataWithNotify(x, y, z, l, 2); world.setBlockMetadataWithNotify(x, y, z, l, 2);
} }
protected boolean hasReversedIO() {
return false;
}
@Override @Override
public boolean onScrew(World world, EntityPlayer player, int x, int y, int z, int side, float fX, float fY, float fZ, ToolType tool) { 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 (tool != ToolType.SCREWDRIVER) return false;
@ -105,28 +101,12 @@ public abstract class BlockCraneBase extends BlockContainer implements IBlockSid
TileEntityCraneBase craneTileEntity = (TileEntityCraneBase) te; TileEntityCraneBase craneTileEntity = (TileEntityCraneBase) te;
// some cranes like the ejector have reversed input and output sides ForgeDirection newDirection = ForgeDirection.getOrientation(side);
// so this bit of logic is to hide that away from the player
boolean actuallyCycleInput = player.isSneaking() != hasReversedIO();
ForgeDirection newDirection;
if (actuallyCycleInput) { // cycle input if (player.isSneaking()) {
// it's in reverse because players are more likely to want to turn the output from DOWN to UP craneTileEntity.setOutputOverride(newDirection);
int newValue = Math.floorMod(world.getBlockMetadata(x, y, z) - 1, 6); } else {
newDirection = ForgeDirection.getOrientation(newValue); craneTileEntity.setInput(newDirection);
world.setBlockMetadataWithNotify(x, y, z, newValue, 3);
craneTileEntity.ensureOutputOverrideValid();
} else { // cycle output
newDirection = craneTileEntity.cycleOutputOverride();
}
if (!world.isRemote) {
ChatBuilder message = player.isSneaking()
? ChatBuilder.start("Input: ").color(EnumChatFormatting.GREEN)
: ChatBuilder.start("Output: ").color(EnumChatFormatting.RED);
message.next(newDirection.name()).color(EnumChatFormatting.WHITE);
player.addChatComponentMessage(message.flush());
} }
return true; return true;
@ -326,4 +306,9 @@ public abstract class BlockCraneBase extends BlockContainer implements IBlockSid
super.breakBlock(world, x, y, z, block, meta); 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

@ -42,11 +42,6 @@ public class CraneExtractor extends BlockCraneBase {
this.iconDirectionalSideDownTurnRight = iconRegister.registerIcon(RefStrings.MODID + ":crane_out_side_right_turn_down"); this.iconDirectionalSideDownTurnRight = iconRegister.registerIcon(RefStrings.MODID + ":crane_out_side_right_turn_down");
} }
@Override
protected boolean hasReversedIO() {
return true;
}
@Override @Override
public int getRotationFromSide(IBlockAccess world, int x, int y, int z, int side) { public int getRotationFromSide(IBlockAccess world, int x, int y, int z, int side) {
int meta = world.getBlockMetadata(x, y, z); int meta = world.getBlockMetadata(x, y, z);

View File

@ -4,6 +4,7 @@ import java.util.ArrayList;
import java.util.List; import java.util.List;
import com.hbm.blocks.IBlockMultiPass; import com.hbm.blocks.IBlockMultiPass;
import com.hbm.blocks.ITooltipProvider;
import com.hbm.entity.item.EntityMovingItem; import com.hbm.entity.item.EntityMovingItem;
import com.hbm.lib.RefStrings; import com.hbm.lib.RefStrings;
import com.hbm.main.MainRegistry; import com.hbm.main.MainRegistry;
@ -32,7 +33,7 @@ import net.minecraft.world.IBlockAccess;
import net.minecraft.world.World; import net.minecraft.world.World;
import net.minecraftforge.common.util.ForgeDirection; 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; @SideOnly(Side.CLIENT) protected IIcon iconOverlay;
@ -194,11 +195,11 @@ public class CraneRouter extends BlockContainer implements IBlockMultiPass, IEnt
} }
} }
@Override @Override public boolean canPackageEnter(World world, int x, int y, int z, ForgeDirection dir, IConveyorPackage entity) { return false; }
public boolean canPackageEnter(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) { }
return false;
}
@Override @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; package com.hbm.blocks.network;
import java.util.List;
import com.hbm.blocks.BlockDummyable; import com.hbm.blocks.BlockDummyable;
import com.hbm.blocks.ITooltipProvider;
import com.hbm.entity.item.EntityMovingItem; import com.hbm.entity.item.EntityMovingItem;
import com.hbm.lib.RefStrings; import com.hbm.lib.RefStrings;
import com.hbm.tileentity.network.TileEntityCraneSplitter; import com.hbm.tileentity.network.TileEntityCraneSplitter;
@ -14,6 +17,7 @@ import cpw.mods.fml.relauncher.Side;
import cpw.mods.fml.relauncher.SideOnly; import cpw.mods.fml.relauncher.SideOnly;
import net.minecraft.block.material.Material; import net.minecraft.block.material.Material;
import net.minecraft.client.renderer.texture.IIconRegister; import net.minecraft.client.renderer.texture.IIconRegister;
import net.minecraft.entity.player.EntityPlayer;
import net.minecraft.item.ItemStack; import net.minecraft.item.ItemStack;
import net.minecraft.tileentity.TileEntity; import net.minecraft.tileentity.TileEntity;
import net.minecraft.util.IIcon; import net.minecraft.util.IIcon;
@ -22,7 +26,7 @@ import net.minecraft.util.Vec3;
import net.minecraft.world.World; import net.minecraft.world.World;
import net.minecraftforge.common.util.ForgeDirection; 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 iconTopLeft;
@SideOnly(Side.CLIENT) public IIcon iconTopRight; @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); if(meta >= 12) return ForgeDirection.getOrientation(meta - offset);
return ForgeDirection.getOrientation(meta).getRotation(ForgeDirection.UP); 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

@ -50,11 +50,6 @@ public class CraneUnboxer extends BlockCraneBase implements IEnterableBlock {
this.iconDirectionalSideDownTurnRight = iconRegister.registerIcon(RefStrings.MODID + ":crane_unboxer_side_right_turn_down"); this.iconDirectionalSideDownTurnRight = iconRegister.registerIcon(RefStrings.MODID + ":crane_unboxer_side_right_turn_down");
} }
@Override
protected boolean hasReversedIO() {
return true;
}
@Override @Override
public int getRotationFromSide(IBlockAccess world, int x, int y, int z, int side) { public int getRotationFromSide(IBlockAccess world, int x, int y, int z, int side) {
int meta = world.getBlockMetadata(x, y, z); int meta = world.getBlockMetadata(x, y, z);

View File

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

View File

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

View File

@ -2,6 +2,8 @@ package com.hbm.entity.effect;
import java.util.ArrayList; import java.util.ArrayList;
import com.hbm.util.TrackerUtil;
import cpw.mods.fml.relauncher.Side; import cpw.mods.fml.relauncher.Side;
import cpw.mods.fml.relauncher.SideOnly; import cpw.mods.fml.relauncher.SideOnly;
import net.minecraft.entity.Entity; import net.minecraft.entity.Entity;
@ -34,6 +36,7 @@ public class EntityNukeTorex extends Entity {
@Override @Override
protected void entityInit() { protected void entityInit() {
this.dataWatcher.addObject(10, new Float(1)); this.dataWatcher.addObject(10, new Float(1));
this.dataWatcher.addObject(11, new Integer(0));
} }
@Override @Override
@ -51,6 +54,7 @@ public class EntityNukeTorex extends Entity {
public void onUpdate() { public void onUpdate() {
double s = this.getScale(); double s = this.getScale();
double cs = 1.5;
int maxAge = this.getMaxAge(); int maxAge = this.getMaxAge();
if(worldObj.isRemote) { if(worldObj.isRemote) {
@ -59,7 +63,7 @@ public class EntityNukeTorex extends Entity {
lastSpawnY = posY - 3; 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; double moveSpeed = 0.5D;
if(Math.abs(spawnTarget - lastSpawnY) < moveSpeed) { if(Math.abs(spawnTarget - lastSpawnY) < moveSpeed) {
@ -68,6 +72,7 @@ public class EntityNukeTorex extends Entity {
lastSpawnY += moveSpeed * Math.signum(spawnTarget - lastSpawnY); lastSpawnY += moveSpeed * Math.signum(spawnTarget - lastSpawnY);
} }
// spawn mush clouds
double range = (torusWidth - rollerSize) * 0.25; double range = (torusWidth - rollerSize) * 0.25;
double simSpeed = getSimulationSpeed(); double simSpeed = getSimulationSpeed();
int toSpawn = (int) Math.ceil(10 * simSpeed * simSpeed); int toSpawn = (int) Math.ceil(10 * simSpeed * simSpeed);
@ -77,11 +82,12 @@ public class EntityNukeTorex extends Entity {
double x = posX + rand.nextGaussian() * range; double x = posX + rand.nextGaussian() * range;
double z = posZ + rand.nextGaussian() * range; double z = posZ + rand.nextGaussian() * range;
Cloudlet cloud = new Cloudlet(x, lastSpawnY, z, (float)(rand.nextDouble() * 2D * Math.PI), 0, lifetime); Cloudlet cloud = new Cloudlet(x, lastSpawnY, z, (float)(rand.nextDouble() * 2D * Math.PI), 0, lifetime);
cloud.setScale(1F + this.ticksExisted * 0.005F * (float) s, 5F * (float) s); cloud.setScale(1F + this.ticksExisted * 0.005F * (float) cs, 5F * (float) cs);
cloudlets.add(cloud); cloudlets.add(cloud);
} }
if(ticksExisted < 50) { // spawn shock clouds
if(ticksExisted < 100) {
int cloudCount = ticksExisted * 5; int cloudCount = ticksExisted * 5;
int shockLife = Math.max(300 - ticksExisted * 20, 50); int shockLife = Math.max(300 - ticksExisted * 20, 50);
@ -96,10 +102,11 @@ public class EntityNukeTorex extends Entity {
} }
} }
// spawn ring clouds
if(ticksExisted < 200) { if(ticksExisted < 200) {
for(int i = 0; i < 2; i++) { 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); Cloudlet cloud = new Cloudlet(posX, posY + coreHeight, posZ, (float)(rand.nextDouble() * 2D * Math.PI), 0, lifetime, TorexType.RING);
cloud.setScale(1F + this.ticksExisted * 0.005F * (float) s * 0.5F, 3F * (float) s); cloud.setScale(1F + this.ticksExisted * 0.005F * (float) cs * 0.5F, 3F * (float) (cs * s));
cloudlets.add(cloud); cloudlets.add(cloud);
} }
} }
@ -123,6 +130,20 @@ public class EntityNukeTorex extends Entity {
} }
} }
public EntityNukeTorex setScale(float scale) {
getDataWatcher().updateObject(10, scale);
this.coreHeight = this.coreHeight / 1.5D * scale;
this.convectionHeight = this.convectionHeight / 1.5D * scale;
this.torusWidth = this.torusWidth / 1.5D * scale;
this.rollerSize = this.rollerSize / 1.5D * scale;
return this;
}
public EntityNukeTorex setType(int type) {
this.dataWatcher.updateObject(11, type);
return this;
}
public double getSimulationSpeed() { public double getSimulationSpeed() {
int lifetime = getMaxAge(); int lifetime = getMaxAge();
@ -394,11 +415,21 @@ public class EntityNukeTorex extends Entity {
dist = Math.max(dist, 1); dist = Math.max(dist, 1);
double col = 2D / dist; double col = 2D / dist;
this.color = Vec3.createVectorHelper( int type = EntityNukeTorex.this.dataWatcher.getWatchableObjectInt(11);
Math.max(col * 2, 0.25),
Math.max(col * 1.5, 0.25), if(type == 1) {
Math.max(col * 0.5, 0.25) 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) { public Vec3 getInterpPos(float interp) {
@ -451,15 +482,27 @@ public class EntityNukeTorex extends Entity {
RING RING
} }
@Override @Override protected void writeEntityToNBT(NBTTagCompound nbt) { }
protected void readEntityFromNBT(NBTTagCompound nbt) { } @Override public boolean writeToNBTOptional(NBTTagCompound nbt) { return false; }
@Override public void readEntityFromNBT(NBTTagCompound nbt) { this.setDead(); }
@Override
protected void writeEntityToNBT(NBTTagCompound nbt) { }
@Override @Override
@SideOnly(Side.CLIENT) @SideOnly(Side.CLIENT)
public boolean isInRangeToRenderDist(double distance) { public boolean isInRangeToRenderDist(double distance) {
return true; 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; package com.hbm.entity.missile;
import com.hbm.config.BombConfig; 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.logic.EntityNukeExplosionMK5;
import com.hbm.entity.particle.EntitySmokeFX; 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.getBlock((int) this.posX, (int) this.posY, (int) this.posZ) != Blocks.air) {
if(!this.worldObj.isRemote) { if(!this.worldObj.isRemote) {
worldObj.spawnEntityInWorld(EntityNukeExplosionMK5.statFac(worldObj, BombConfig.mirvRadius, posX, posY, posZ)); worldObj.spawnEntityInWorld(EntityNukeExplosionMK5.statFac(worldObj, BombConfig.mirvRadius, posX, posY, posZ));
EntityNukeTorex.statFac(worldObj, posX, posY, posZ, BombConfig.mirvRadius);
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);
} }
this.setDead(); this.setDead();
} }

View File

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

View File

@ -4,7 +4,7 @@ import java.util.ArrayList;
import java.util.List; import java.util.List;
import com.hbm.config.BombConfig; 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.logic.EntityNukeExplosionMK5;
import com.hbm.items.ModItems; import com.hbm.items.ModItems;
@ -25,12 +25,7 @@ public class EntityMissileMirv extends EntityMissileBaseAdvanced {
public void onImpact() { public void onImpact() {
worldObj.spawnEntityInWorld(EntityNukeExplosionMK5.statFac(worldObj, BombConfig.missileRadius * 2, posX, posY, posZ)); worldObj.spawnEntityInWorld(EntityNukeExplosionMK5.statFac(worldObj, BombConfig.missileRadius * 2, posX, posY, posZ));
EntityNukeTorex.statFac(worldObj, posX, posY, posZ, BombConfig.missileRadius * 2);
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);
} }
@Override @Override

View File

@ -4,7 +4,7 @@ import java.util.ArrayList;
import java.util.List; import java.util.List;
import com.hbm.config.BombConfig; 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.logic.EntityNukeExplosionMK5;
import com.hbm.items.ModItems; import com.hbm.items.ModItems;
@ -25,12 +25,7 @@ public class EntityMissileNuclear extends EntityMissileBaseAdvanced {
public void onImpact() { public void onImpact() {
this.worldObj.spawnEntityInWorld(EntityNukeExplosionMK5.statFac(worldObj, BombConfig.missileRadius, posX, posY, posZ)); this.worldObj.spawnEntityInWorld(EntityNukeExplosionMK5.statFac(worldObj, BombConfig.missileRadius, posX, posY, posZ));
EntityNukeTorex.statFac(worldObj, posX, posY, posZ, BombConfig.missileRadius);
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);
} }
@Override @Override

View File

@ -5,7 +5,7 @@ import java.util.List;
import com.hbm.config.BombConfig; import com.hbm.config.BombConfig;
import com.hbm.entity.effect.EntityBlackHole; import com.hbm.entity.effect.EntityBlackHole;
import com.hbm.entity.effect.EntityCloudFleijaRainbow; 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.EntityRagingVortex;
import com.hbm.entity.effect.EntityVortex; import com.hbm.entity.effect.EntityVortex;
import com.hbm.entity.grenade.EntityGrenadeZOMG; 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.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(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); Block block = world.getBlock(iX, iY, iZ);
if(!block.getMaterial().isLiquid()) if(!block.getMaterial().isLiquid())
res -= Math.pow(block.getExplosionResistance(null), 7.5D - fac); res -= Math.pow(masqueradeResistance(block), 7.5D - fac);
//else //else
// res -= Math.pow(Blocks.air.getExplosionResistance(null), 7.5D - fac); // air is 0, might want to raise that is necessary // 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; 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 */ /** little comparator for roughly sorting chunks by distance to the center */
public class CoordComparator implements Comparator<ChunkCoordIntPair> { public class CoordComparator implements Comparator<ChunkCoordIntPair> {

View File

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

View File

@ -321,9 +321,9 @@ public class Fluids {
HEAVYWATER_HOT = new FluidType("HEAVYWATER_HOT", 0x4D007B, 1, 0, 0, EnumSymbol.NONE).setTemp(600).addTraits(LIQUID); HEAVYWATER_HOT = new FluidType("HEAVYWATER_HOT", 0x4D007B, 1, 0, 0, EnumSymbol.NONE).setTemp(600).addTraits(LIQUID);
SODIUM = new FluidType("SODIUM", 0xCCD4D5, 1, 2, 3, EnumSymbol.NONE).setTemp(400).addTraits(LIQUID); SODIUM = new FluidType("SODIUM", 0xCCD4D5, 1, 2, 3, EnumSymbol.NONE).setTemp(400).addTraits(LIQUID);
SODIUM_HOT = new FluidType("SODIUM_HOT", 0xE2ADC1, 1, 2, 3, EnumSymbol.NONE).setTemp(1200).addTraits(LIQUID); SODIUM_HOT = new FluidType("SODIUM_HOT", 0xE2ADC1, 1, 2, 3, EnumSymbol.NONE).setTemp(1200).addTraits(LIQUID);
THORIUM_SALT = new FluidType("THORIUM_SALT", 0x7A5542, 2, 0, 3, EnumSymbol.NONE).setTemp(800).addTraits(LIQUID); THORIUM_SALT = new FluidType("THORIUM_SALT", 0x7A5542, 2, 0, 3, EnumSymbol.NONE).setTemp(800).addTraits(LIQUID, new FT_Corrosive(65));
THORIUM_SALT_HOT = new FluidType("THORIUM_SALT_HOT", 0x3E3627, 2, 0, 3, EnumSymbol.NONE).setTemp(1600).addTraits(LIQUID); THORIUM_SALT_HOT = new FluidType("THORIUM_SALT_HOT", 0x3E3627, 2, 0, 3, EnumSymbol.NONE).setTemp(1600).addTraits(LIQUID, new FT_Corrosive(65));
THORIUM_SALT_DEPLETED = new FluidType(129, "THORIUM_SALT_DEPLETED", 0x302D1C, 2, 0, 3, EnumSymbol.NONE).setTemp(800).addTraits(LIQUID); THORIUM_SALT_DEPLETED = new FluidType(129, "THORIUM_SALT_DEPLETED", 0x302D1C, 2, 0, 3, EnumSymbol.NONE).setTemp(800).addTraits(LIQUID, new FT_Corrosive(65));
// ^ ^ ^ ^ ^ ^ ^ ^ // ^ ^ ^ ^ ^ ^ ^ ^
//ADD NEW FLUIDS HERE //ADD NEW FLUIDS HERE

View File

@ -8,6 +8,7 @@ import net.minecraft.util.ResourceLocation;
import org.lwjgl.opengl.GL11; import org.lwjgl.opengl.GL11;
import com.hbm.inventory.container.ContainerNukeTsar; import com.hbm.inventory.container.ContainerNukeTsar;
import com.hbm.items.ModItems;
import com.hbm.lib.RefStrings; import com.hbm.lib.RefStrings;
import com.hbm.tileentity.bomb.TileEntityNukeTsar; import com.hbm.tileentity.bomb.TileEntityNukeTsar;
import com.hbm.util.I18nUtil; import com.hbm.util.I18nUtil;
@ -15,14 +16,15 @@ import com.hbm.util.I18nUtil;
public class GUINukeTsar extends GuiInfoContainer { public class GUINukeTsar extends GuiInfoContainer {
private static ResourceLocation texture = new ResourceLocation(RefStrings.MODID + ":textures/gui/weapon/tsarBombaSchematic.png"); 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) { public GUINukeTsar(InventoryPlayer invPlayer, TileEntityNukeTsar tedf) {
super(new ContainerNukeTsar(invPlayer, tedf)); super(new ContainerNukeTsar(invPlayer, tedf));
testNuke = tedf; tsar = tedf;
this.xSize = 176; this.xSize = 256;
this.ySize = 166; this.ySize = 233;
} }
@Override @Override
@ -35,10 +37,10 @@ public class GUINukeTsar extends GuiInfoContainer {
@Override @Override
protected void drawGuiContainerForegroundLayer( int i, int j) { 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(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 @Override
@ -46,16 +48,23 @@ public class GUINukeTsar extends GuiInfoContainer {
GL11.glColor4f(1.0F, 1.0F, 1.0F, 1.0F); GL11.glColor4f(1.0F, 1.0F, 1.0F, 1.0F);
Minecraft.getMinecraft().getTextureManager().bindTexture(texture); Minecraft.getMinecraft().getTextureManager().bindTexture(texture);
drawTexturedModalRect(guiLeft, guiTop, 0, 0, xSize, ySize); drawTexturedModalRect(guiLeft, guiTop, 0, 0, xSize, ySize);
Minecraft.getMinecraft().getTextureManager().bindTexture(textureMike);
if(testNuke.isReady()) 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);
drawTexturedModalRect(guiLeft + 133, guiTop + 34, 176, 0, 16, 16);
}
if(testNuke.isFilled()) for(int i = 0; i < 4; i++) {
{ if(tsar.getStackInSlot(i) != null && tsar.getStackInSlot(i).getItem() == ModItems.explosive_lenses) switch(i) {
drawTexturedModalRect(guiLeft + 133, guiTop + 34, 176, 18, 16, 16); 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); 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_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, 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_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_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.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, 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.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_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, 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_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); 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) { 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.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_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.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); 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.FluidStack;
import com.hbm.inventory.fluid.FluidType; import com.hbm.inventory.fluid.FluidType;
import com.hbm.inventory.fluid.Fluids; import com.hbm.inventory.fluid.Fluids;
import com.hbm.inventory.RecipesCommon.ComparableStack;
import com.hbm.inventory.recipes.loader.SerializableRecipe; import com.hbm.inventory.recipes.loader.SerializableRecipe;
import com.hbm.items.ModItems; import com.hbm.items.ModItems;
import com.hbm.items.machine.ItemFluidIcon; 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)); if(recipe.output2.type != Fluids.NONE) outputs.add(ItemFluidIcon.make(recipe.output2));
for(ItemStack byproduct : recipe.byproduct) outputs.add(byproduct); 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; 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_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_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_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.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(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++; if(addIf(Blocks.end_portal_frame, b, 1, aX, seg, aZ, "End Portal", 0x40b080, player)) hits++;

View File

@ -66,7 +66,8 @@ public class ItemWandD extends Item {
/*EntityNukeTorex torex = new EntityNukeTorex(world); /*EntityNukeTorex torex = new EntityNukeTorex(world);
torex.setPositionAndRotation(pos.blockX, pos.blockY + 1, pos.blockZ, 0, 0); torex.setPositionAndRotation(pos.blockX, pos.blockY + 1, pos.blockZ, 0, 0);
torex.getDataWatcher().updateObject(10, 1.5F); torex.setScale(1.5F);
torex.setType(1);
world.spawnEntityInWorld(torex); world.spawnEntityInWorld(torex);
/*EntityTracker entitytracker = ((WorldServer) world).getEntityTracker(); /*EntityTracker entitytracker = ((WorldServer) world).getEntityTracker();
IntHashMap map = ReflectionHelper.getPrivateValue(EntityTracker.class, entitytracker, "trackedEntityIDs", "field_72794_c"); 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 java.util.Random;
import com.google.common.collect.Multimap; 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.logic.EntityNukeExplosionMK5;
import com.hbm.entity.projectile.EntityRubble; import com.hbm.entity.projectile.EntityRubble;
import com.hbm.items.ModItems; import com.hbm.items.ModItems;
@ -152,12 +152,7 @@ public class WeaponSpecial extends ItemSword {
if(entityPlayer.fallDistance >= 20 && !((EntityPlayer)entityPlayer).capabilities.isCreativeMode) { if(entityPlayer.fallDistance >= 20 && !((EntityPlayer)entityPlayer).capabilities.isCreativeMode) {
if(!world.isRemote) { if(!world.isRemote) {
world.spawnEntityInWorld(EntityNukeExplosionMK5.statFac(world, 100, entity.posX, entity.posY, entity.posZ)); world.spawnEntityInWorld(EntityNukeExplosionMK5.statFac(world, 100, entity.posX, entity.posY, entity.posZ));
EntityNukeTorex.statFac(world, entity.posX, entity.posY, entity.posZ, 100);
EntityNukeCloudSmall entity2 = new EntityNukeCloudSmall(world, 1000, 100 * 0.005F);
entity2.posX = entity.posX;
entity2.posY = entity.posY;
entity2.posZ = entity.posZ;
world.spawnEntityInWorld(entity2);
} }
} }
} }

View File

@ -6,7 +6,7 @@ import java.util.Random;
import com.hbm.blocks.ModBlocks; import com.hbm.blocks.ModBlocks;
import com.hbm.config.BombConfig; import com.hbm.config.BombConfig;
import com.hbm.entity.effect.EntityMist; 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.logic.EntityNukeExplosionMK5;
import com.hbm.entity.projectile.EntityArtilleryShell; import com.hbm.entity.projectile.EntityArtilleryShell;
import com.hbm.explosion.ExplosionChaos; 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) { this.itemTypes[NUKE] = new ArtilleryShell("ammo_arty_nuke", SpentCasing.COLOR_CASE_16INCH_NUKE) {
public void onImpact(EntityArtilleryShell shell, MovingObjectPosition mop) { 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)); 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); EntityNukeTorex.statFac(shell.worldObj, mop.hitVec.xCoord, mop.hitVec.yCoord, mop.hitVec.zCoord, BombConfig.missileRadius);
entity2.posX = mop.hitVec.xCoord;
entity2.posY = mop.hitVec.yCoord;
entity2.posZ = mop.hitVec.zCoord;
shell.worldObj.spawnEntityInWorld(entity2);
shell.setDead(); shell.setDead();
} }
}; };

View File

@ -3,7 +3,7 @@ package com.hbm.lib;
public class RefStrings { public class RefStrings {
public static final String MODID = "hbm"; public static final String MODID = "hbm";
public static final String NAME = "Hbm's Nuclear Tech Mod"; 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 (4705)";
//HBM's Beta Naming Convention: //HBM's Beta Naming Convention:
//V T (X) //V T (X)
//V -> next release version //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_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(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(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_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.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 }); 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_9");
ignoreMappings.add("hbm:item.primer_50"); ignoreMappings.add("hbm:item.primer_50");
ignoreMappings.add("hbm:item.primer_buckshot"); ignoreMappings.add("hbm:item.primer_buckshot");
ignoreMappings.add("hbm:tile.ore_bedrock_coltan");
/// REMAP /// /// REMAP ///
remapItems.put("hbm:item.gadget_explosive8", ModItems.early_explosive_lenses); 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.I18nUtil;
import com.hbm.util.ItemStackUtil; import com.hbm.util.ItemStackUtil;
import com.hbm.util.LoggingUtil; import com.hbm.util.LoggingUtil;
import com.hbm.util.fauxpointtwelve.BlockPos;
import com.hbm.wiaj.GuiWorldInAJar; import com.hbm.wiaj.GuiWorldInAJar;
import com.hbm.wiaj.cannery.CanneryBase; import com.hbm.wiaj.cannery.CanneryBase;
import com.hbm.wiaj.cannery.Jars; import com.hbm.wiaj.cannery.Jars;

View File

@ -242,7 +242,7 @@ public class ResourceManager {
public static final IModelCustom bomb_boy = AdvancedModelLoader.loadModel(new ResourceLocation(RefStrings.MODID, "models/LilBoy1.obj")); public static final IModelCustom bomb_boy = AdvancedModelLoader.loadModel(new ResourceLocation(RefStrings.MODID, "models/LilBoy1.obj"));
public static final IModelCustom bomb_man = new HFRWavefrontObject(new ResourceLocation(RefStrings.MODID, "models/FatMan.obj")).asDisplayList(); public static final IModelCustom bomb_man = new HFRWavefrontObject(new ResourceLocation(RefStrings.MODID, "models/FatMan.obj")).asDisplayList();
public static final IModelCustom bomb_mike = new HFRWavefrontObject(new ResourceLocation(RefStrings.MODID, "models/bombs/ivymike.obj")); public static final IModelCustom bomb_mike = new HFRWavefrontObject(new ResourceLocation(RefStrings.MODID, "models/bombs/ivymike.obj"));
public static final IModelCustom bomb_tsar = AdvancedModelLoader.loadModel(new ResourceLocation(RefStrings.MODID, "models/TsarBomba.obj")); public static final IModelCustom bomb_tsar = new HFRWavefrontObject(new ResourceLocation(RefStrings.MODID, "models/bombs/tsar.obj")).asDisplayList();
public static final IModelCustom bomb_prototype = AdvancedModelLoader.loadModel(new ResourceLocation(RefStrings.MODID, "models/Prototype.obj")); public static final IModelCustom bomb_prototype = AdvancedModelLoader.loadModel(new ResourceLocation(RefStrings.MODID, "models/Prototype.obj"));
public static final IModelCustom bomb_fleija = AdvancedModelLoader.loadModel(new ResourceLocation(RefStrings.MODID, "models/Fleija.obj")); public static final IModelCustom bomb_fleija = AdvancedModelLoader.loadModel(new ResourceLocation(RefStrings.MODID, "models/Fleija.obj"));
public static final IModelCustom bomb_solinium = AdvancedModelLoader.loadModel(new ResourceLocation(RefStrings.MODID, "models/bombs/ufp.obj")); public static final IModelCustom bomb_solinium = AdvancedModelLoader.loadModel(new ResourceLocation(RefStrings.MODID, "models/bombs/ufp.obj"));
@ -614,7 +614,7 @@ public class ResourceManager {
public static final ResourceLocation bomb_boy_tex = new ResourceLocation(RefStrings.MODID, "textures/models/lilboy.png"); public static final ResourceLocation bomb_boy_tex = new ResourceLocation(RefStrings.MODID, "textures/models/lilboy.png");
public static final ResourceLocation bomb_man_tex = new ResourceLocation(RefStrings.MODID, "textures/models/FatMan.png"); public static final ResourceLocation bomb_man_tex = new ResourceLocation(RefStrings.MODID, "textures/models/FatMan.png");
public static final ResourceLocation bomb_mike_tex = new ResourceLocation(RefStrings.MODID, "textures/models/bombs/ivymike.png"); public static final ResourceLocation bomb_mike_tex = new ResourceLocation(RefStrings.MODID, "textures/models/bombs/ivymike.png");
public static final ResourceLocation bomb_tsar_tex = new ResourceLocation(RefStrings.MODID, "textures/models/TsarBomba.png"); public static final ResourceLocation bomb_tsar_tex = new ResourceLocation(RefStrings.MODID, "textures/models/bombs/tsar.png");
public static final ResourceLocation bomb_prototype_tex = new ResourceLocation(RefStrings.MODID, "textures/models/Prototype.png"); public static final ResourceLocation bomb_prototype_tex = new ResourceLocation(RefStrings.MODID, "textures/models/Prototype.png");
public static final ResourceLocation bomb_fleija_tex = new ResourceLocation(RefStrings.MODID, "textures/models/Fleija.png"); public static final ResourceLocation bomb_fleija_tex = new ResourceLocation(RefStrings.MODID, "textures/models/Fleija.png");
public static final ResourceLocation bomb_solinium_tex = new ResourceLocation(RefStrings.MODID, "textures/models/bombs/ufp.png"); public static final ResourceLocation bomb_solinium_tex = new ResourceLocation(RefStrings.MODID, "textures/models/bombs/ufp.png");

View File

@ -32,10 +32,13 @@ public class RenderTorex extends Render {
GL11.glPushMatrix(); GL11.glPushMatrix();
GL11.glTranslated(x, y, z); GL11.glTranslated(x, y, z);
boolean fog = GL11.glIsEnabled(GL11.GL_FOG);
if(fog) GL11.glDisable(GL11.GL_FOG);
EntityNukeTorex cloud = (EntityNukeTorex)entity; EntityNukeTorex cloud = (EntityNukeTorex)entity;
cloudletWrapper(cloud, interp); cloudletWrapper(cloud, interp);
if(cloud.ticksExisted < 101) flashWrapper(cloud, interp); if(cloud.ticksExisted < 101) flashWrapper(cloud, interp);
if(cloud.ticksExisted < 10 && ModEventHandlerClient.flashTimer < 100) ModEventHandlerClient.flashTimer = 200; if(cloud.ticksExisted < 10 && ModEventHandlerClient.flashTimer < 100) ModEventHandlerClient.flashTimer = 200;
if(fog) GL11.glEnable(GL11.GL_FOG);
GL11.glPopMatrix(); GL11.glPopMatrix();
} }

View File

@ -444,16 +444,6 @@ public class ItemRenderLibrary {
ResourceManager.bomb_boy.renderAll(); ResourceManager.bomb_boy.renderAll();
}}); }});
renderers.put(Item.getItemFromBlock(ModBlocks.nuke_tsar), new ItemRenderBase() {
public void renderInventory() {
GL11.glScaled(2.25, 2.25, 2.25);
}
public void renderCommon() {
GL11.glTranslated(1.5, 0, 0);
bindTexture(ResourceManager.bomb_tsar_tex);
ResourceManager.bomb_tsar.renderAll();
}});
renderers.put(Item.getItemFromBlock(ModBlocks.nuke_prototype), new ItemRenderBase() { renderers.put(Item.getItemFromBlock(ModBlocks.nuke_prototype), new ItemRenderBase() {
public void renderInventory() { public void renderInventory() {
GL11.glScaled(2.25, 2.25, 2.25); GL11.glScaled(2.25, 2.25, 2.25);

View File

@ -2,38 +2,58 @@ package com.hbm.render.tileentity;
import org.lwjgl.opengl.GL11; import org.lwjgl.opengl.GL11;
import com.hbm.blocks.ModBlocks;
import com.hbm.main.ResourceManager; import com.hbm.main.ResourceManager;
import com.hbm.render.item.ItemRenderBase;
import net.minecraft.client.renderer.tileentity.TileEntitySpecialRenderer; import net.minecraft.client.renderer.tileentity.TileEntitySpecialRenderer;
import net.minecraft.item.Item;
import net.minecraft.tileentity.TileEntity; import net.minecraft.tileentity.TileEntity;
import net.minecraftforge.client.IItemRenderer;
public class RenderNukeTsar extends TileEntitySpecialRenderer { public class RenderNukeTsar extends TileEntitySpecialRenderer implements IItemRendererProvider {
@Override @Override
public void renderTileEntityAt(TileEntity tileEntity, double x, double y, double z, float f) public void renderTileEntityAt(TileEntity tileEntity, double x, double y, double z, float f) {
{ GL11.glPushMatrix();
GL11.glPushMatrix(); GL11.glTranslated(x + 0.5D, y, z + 0.5D);
GL11.glTranslated(x + 0.5D, y, z + 0.5D); GL11.glEnable(GL11.GL_LIGHTING);
GL11.glEnable(GL11.GL_LIGHTING); GL11.glDisable(GL11.GL_CULL_FACE);
GL11.glDisable(GL11.GL_CULL_FACE);
switch(tileEntity.getBlockMetadata()) switch(tileEntity.getBlockMetadata()) {
{ case 2: GL11.glRotatef(90, 0F, 1F, 0F); break;
case 2: case 4: GL11.glRotatef(180, 0F, 1F, 0F); break;
GL11.glRotatef(90, 0F, 1F, 0F); break; case 3: GL11.glRotatef(270, 0F, 1F, 0F); break;
case 4: case 5: GL11.glRotatef(0, 0F, 1F, 0F); break;
GL11.glRotatef(180, 0F, 1F, 0F); break;
case 3:
GL11.glRotatef(270, 0F, 1F, 0F); break;
case 5:
GL11.glRotatef(0, 0F, 1F, 0F); break;
} }
bindTexture(ResourceManager.bomb_tsar_tex); GL11.glShadeModel(GL11.GL_SMOOTH);
ResourceManager.bomb_tsar.renderAll(); bindTexture(ResourceManager.bomb_tsar_tex);
ResourceManager.bomb_tsar.renderAll();
GL11.glEnable(GL11.GL_CULL_FACE); GL11.glShadeModel(GL11.GL_FLAT);
GL11.glEnable(GL11.GL_CULL_FACE);
GL11.glPopMatrix(); GL11.glPopMatrix();
} }
@Override
public Item getItemForRenderer() {
return Item.getItemFromBlock(ModBlocks.nuke_tsar);
}
@Override
public IItemRenderer getRenderer() {
return new ItemRenderBase() {
public void renderInventory() {
GL11.glScaled(2.25, 2.25, 2.25);
}
public void renderCommon() {
GL11.glTranslated(1.5, 0, 0);
GL11.glDisable(GL11.GL_CULL_FACE);
GL11.glShadeModel(GL11.GL_SMOOTH);
bindTexture(ResourceManager.bomb_tsar_tex); ResourceManager.bomb_tsar.renderAll();
GL11.glShadeModel(GL11.GL_FLAT);
GL11.glEnable(GL11.GL_CULL_FACE);
}};
}
} }

View File

@ -4,8 +4,6 @@ import com.hbm.blocks.ModBlocks;
import com.hbm.blocks.bomb.LaunchPad; import com.hbm.blocks.bomb.LaunchPad;
import com.hbm.inventory.container.ContainerLaunchPadTier1; import com.hbm.inventory.container.ContainerLaunchPadTier1;
import com.hbm.inventory.gui.GUILaunchPadTier1; 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.lib.Library;
import com.hbm.packet.AuxElectricityPacket; import com.hbm.packet.AuxElectricityPacket;
import com.hbm.packet.PacketDispatcher; import com.hbm.packet.PacketDispatcher;

View File

@ -1,6 +1,6 @@
package com.hbm.tileentity.bomb; 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.entity.logic.EntityBalefire;
import com.hbm.inventory.container.ContainerNukeFstbmb; import com.hbm.inventory.container.ContainerNukeFstbmb;
import com.hbm.inventory.gui.GUINukeFstbmb; import com.hbm.inventory.gui.GUINukeFstbmb;
@ -128,7 +128,7 @@ public class TileEntityNukeBalefire extends TileEntityMachineBase implements IGU
bf.posZ = zCoord + 0.5; bf.posZ = zCoord + 0.5;
bf.destructionRange = (int) 250; bf.destructionRange = (int) 250;
worldObj.spawnEntityInWorld(bf); 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() { public String getMinutes() {

View File

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

View File

@ -158,85 +158,87 @@ public class TileEntityPWRController extends TileEntityMachineBase implements IG
this.tanks[0].setType(2, slots); this.tanks[0].setType(2, slots);
setupTanks(); setupTanks();
for(BlockPos pos : ports) { if(this.assembled) {
for(ForgeDirection dir : ForgeDirection.VALID_DIRECTIONS) { for(BlockPos pos : ports) {
BlockPos portPos = pos.offset(dir); for(ForgeDirection dir : ForgeDirection.VALID_DIRECTIONS) {
BlockPos portPos = pos.offset(dir);
if(tanks[1].getFill() > 0) this.sendFluid(tanks[1], worldObj, portPos.getX(), portPos.getY(), portPos.getZ(), dir);
if(worldObj.getTotalWorldTime() % 20 == 0) this.trySubscribe(tanks[0].getTankType(), worldObj, portPos.getX(), portPos.getY(), portPos.getZ(), dir); if(tanks[1].getFill() > 0) this.sendFluid(tanks[1], worldObj, portPos.getX(), portPos.getY(), portPos.getZ(), dir);
} if(worldObj.getTotalWorldTime() % 20 == 0) this.trySubscribe(tanks[0].getTankType(), worldObj, portPos.getX(), portPos.getY(), portPos.getZ(), dir);
}
if((typeLoaded == -1 || amountLoaded <= 0) && slots[0] != null && slots[0].getItem() == ModItems.pwr_fuel) {
typeLoaded = slots[0].getItemDamage();
amountLoaded++;
this.decrStackSize(0, 1);
this.markChanged();
} else if(slots[0] != null && slots[0].getItem() == ModItems.pwr_fuel && slots[0].getItemDamage() == typeLoaded && amountLoaded < rodCount){
amountLoaded++;
this.decrStackSize(0, 1);
this.markChanged();
}
if(this.rodTarget > this.rodLevel) this.rodLevel++;
if(this.rodTarget < this.rodLevel) this.rodLevel--;
int newFlux = this.sourceCount * 20;
if(typeLoaded != -1 && amountLoaded > 0) {
EnumPWRFuel fuel = EnumUtil.grabEnumSafely(EnumPWRFuel.class, typeLoaded);
double usedRods = getTotalProcessMultiplier();
double fluxPerRod = this.flux / this.rodCount;
double outputPerRod = fuel.function.effonix(fluxPerRod);
double totalOutput = outputPerRod * amountLoaded * usedRods;
double totalHeatOutput = totalOutput * fuel.heatEmission;
this.coreHeat += totalHeatOutput;
newFlux += totalOutput;
this.processTime = (int) fuel.yield;
this.progress += totalOutput;
if(this.progress >= this.processTime) {
this.progress -= this.processTime;
if(slots[1] == null) {
slots[1] = new ItemStack(ModItems.pwr_fuel_hot, 1, typeLoaded);
} else if(slots[1].getItem() == ModItems.pwr_fuel_hot && slots[1].getItemDamage() == typeLoaded && slots[1].stackSize < slots[1].getMaxStackSize()) {
slots[1].stackSize++;
} }
}
this.amountLoaded--;
if((typeLoaded == -1 || amountLoaded <= 0) && slots[0] != null && slots[0].getItem() == ModItems.pwr_fuel) {
typeLoaded = slots[0].getItemDamage();
amountLoaded++;
this.decrStackSize(0, 1);
this.markChanged();
} else if(slots[0] != null && slots[0].getItem() == ModItems.pwr_fuel && slots[0].getItemDamage() == typeLoaded && amountLoaded < rodCount){
amountLoaded++;
this.decrStackSize(0, 1);
this.markChanged(); this.markChanged();
} }
}
if(this.rodTarget > this.rodLevel) this.rodLevel++;
if(this.amountLoaded <= 0) { if(this.rodTarget < this.rodLevel) this.rodLevel--;
this.typeLoaded = -1;
} int newFlux = this.sourceCount * 20;
if(amountLoaded > rodCount) amountLoaded = rodCount; if(typeLoaded != -1 && amountLoaded > 0) {
/* CORE COOLING */ EnumPWRFuel fuel = EnumUtil.grabEnumSafely(EnumPWRFuel.class, typeLoaded);
double coreCoolingApproachNum = getXOverE((double) this.heatexCount * 5 / (double) this.rodCount, 2) / 2D; double usedRods = getTotalProcessMultiplier();
int averageCoreHeat = (this.coreHeat + this.hullHeat) / 2; double fluxPerRod = this.flux / this.rodCount;
this.coreHeat -= (coreHeat - averageCoreHeat) * coreCoolingApproachNum; double outputPerRod = fuel.function.effonix(fluxPerRod);
this.hullHeat -= (hullHeat - averageCoreHeat) * coreCoolingApproachNum; double totalOutput = outputPerRod * amountLoaded * usedRods;
double totalHeatOutput = totalOutput * fuel.heatEmission;
updateCoolant();
this.coreHeat += totalHeatOutput;
this.coreHeat *= 0.999D; newFlux += totalOutput;
this.hullHeat *= 0.999D;
this.processTime = (int) fuel.yield;
this.flux = newFlux; this.progress += totalOutput;
if(tanks[0].getTankType().hasTrait(FT_PWRModerator.class)) { if(this.progress >= this.processTime) {
this.flux *= tanks[0].getTankType().getTrait(FT_PWRModerator.class).getMultiplier(); this.progress -= this.processTime;
}
if(slots[1] == null) {
if(this.coreHeat > this.coreHeatCapacity) { slots[1] = new ItemStack(ModItems.pwr_fuel_hot, 1, typeLoaded);
meltDown(); } else if(slots[1].getItem() == ModItems.pwr_fuel_hot && slots[1].getItemDamage() == typeLoaded && slots[1].stackSize < slots[1].getMaxStackSize()) {
slots[1].stackSize++;
}
this.amountLoaded--;
this.markChanged();
}
}
if(this.amountLoaded <= 0) {
this.typeLoaded = -1;
}
if(amountLoaded > rodCount) amountLoaded = rodCount;
/* CORE COOLING */
double coreCoolingApproachNum = getXOverE((double) this.heatexCount * 5 / (double) this.rodCount, 2) / 2D;
int averageCoreHeat = (this.coreHeat + this.hullHeat) / 2;
this.coreHeat -= (coreHeat - averageCoreHeat) * coreCoolingApproachNum;
this.hullHeat -= (hullHeat - averageCoreHeat) * coreCoolingApproachNum;
updateCoolant();
this.coreHeat *= 0.999D;
this.hullHeat *= 0.999D;
this.flux = newFlux;
if(tanks[0].getTankType().hasTrait(FT_PWRModerator.class) && tanks[0].getFill() > 0) {
this.flux *= tanks[0].getTankType().getTrait(FT_PWRModerator.class).getMultiplier();
}
if(this.coreHeat > this.coreHeatCapacity) {
meltDown();
}
} }
NBTTagCompound data = new NBTTagCompound(); NBTTagCompound data = new NBTTagCompound();

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

@ -494,6 +494,12 @@ public class TileEntityWatz extends TileEntityMachineBase implements IFluidStand
setBrokenColumn(1, ModBlocks.watz_end, 1, 2, -2); setBrokenColumn(1, ModBlocks.watz_end, 1, 2, -2);
setBrokenColumn(1, ModBlocks.watz_end, 1, -2, 2); setBrokenColumn(1, ModBlocks.watz_end, 1, -2, 2);
setBrokenColumn(1, ModBlocks.watz_end, 1, -2, -2); setBrokenColumn(1, ModBlocks.watz_end, 1, -2, -2);
List<EntityPlayer> players = worldObj.getEntitiesWithinAABB(EntityPlayer.class, AxisAlignedBB.getBoundingBox(xCoord + 0.5, yCoord + 0.5, zCoord + 0.5, xCoord + 0.5, yCoord + 0.5, zCoord + 0.5).expand(50, 50, 50));
for(EntityPlayer player : players) {
player.triggerAchievement(MainRegistry.achWatzBoom);
}
} }
private void setBrokenColumn(int minHeight, Block b, int meta, int x, int z) { private void setBrokenColumn(int minHeight, Block b, int meta, int x, int z) {

View File

@ -16,7 +16,6 @@ import com.hbm.saveddata.TomSaveData;
import com.hbm.tileentity.IGUIProvider; import com.hbm.tileentity.IGUIProvider;
import com.hbm.tileentity.IPersistentNBT; import com.hbm.tileentity.IPersistentNBT;
import com.hbm.tileentity.TileEntityMachineBase; import com.hbm.tileentity.TileEntityMachineBase;
import com.hbm.util.I18nUtil;
import com.hbm.util.fauxpointtwelve.DirPos; import com.hbm.util.fauxpointtwelve.DirPos;
import cpw.mods.fml.common.Optional; import cpw.mods.fml.common.Optional;
import cpw.mods.fml.relauncher.Side; 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.IPersistentNBT;
import com.hbm.tileentity.IRepairable; import com.hbm.tileentity.IRepairable;
import com.hbm.tileentity.TileEntityMachineBase; import com.hbm.tileentity.TileEntityMachineBase;
import com.hbm.util.I18nUtil;
import com.hbm.util.ParticleUtil; import com.hbm.util.ParticleUtil;
import com.hbm.util.fauxpointtwelve.DirPos; import com.hbm.util.fauxpointtwelve.DirPos;
import cpw.mods.fml.common.Optional; import cpw.mods.fml.common.Optional;

View File

@ -1,8 +1,6 @@
package com.hbm.tileentity.network; package com.hbm.tileentity.network;
import com.hbm.tileentity.TileEntityMachineBase; import com.hbm.tileentity.TileEntityMachineBase;
import cpw.mods.fml.relauncher.Side;
import cpw.mods.fml.relauncher.SideOnly;
import net.minecraft.nbt.NBTTagCompound; import net.minecraft.nbt.NBTTagCompound;
import net.minecraft.network.NetworkManager; import net.minecraft.network.NetworkManager;
import net.minecraft.network.Packet; import net.minecraft.network.Packet;
@ -11,6 +9,7 @@ import net.minecraftforge.common.util.Constants;
import net.minecraftforge.common.util.ForgeDirection; import net.minecraftforge.common.util.ForgeDirection;
public abstract class TileEntityCraneBase extends TileEntityMachineBase { public abstract class TileEntityCraneBase extends TileEntityMachineBase {
public TileEntityCraneBase(int scount) { public TileEntityCraneBase(int scount) {
super(scount); super(scount);
} }
@ -19,15 +18,15 @@ public abstract class TileEntityCraneBase extends TileEntityMachineBase {
// for compatibility purposes, normal meta values are still used by default // for compatibility purposes, normal meta values are still used by default
private ForgeDirection outputOverride = ForgeDirection.UNKNOWN; private ForgeDirection outputOverride = ForgeDirection.UNKNOWN;
// for extra stability in case the screwdriver action doesn't get synced to other clients // for extra stability in case the screwdriver action doesn't get synced to
@SideOnly(Side.CLIENT) // other clients
private ForgeDirection cachedOutputOverride = ForgeDirection.UNKNOWN; private ForgeDirection cachedOutputOverride = ForgeDirection.UNKNOWN;
@Override @Override
public void updateEntity() { public void updateEntity() {
if (hasWorldObj() && worldObj.isRemote) { if(hasWorldObj() && worldObj.isRemote) {
if (cachedOutputOverride != outputOverride) { if(cachedOutputOverride != outputOverride) {
worldObj.markBlockForUpdate(xCoord, yCoord, zCoord); worldObj.markBlockForUpdate(xCoord, yCoord, zCoord);
cachedOutputOverride = outputOverride; cachedOutputOverride = outputOverride;
} }
} }
@ -46,22 +45,33 @@ public abstract class TileEntityCraneBase extends TileEntityMachineBase {
return outputOverride; return outputOverride;
} }
public ForgeDirection cycleOutputOverride() { public void setOutputOverride(ForgeDirection direction) {
do { ForgeDirection oldSide = getOutputSide();
outputOverride = ForgeDirection.getOrientation(Math.floorMod(outputOverride.ordinal() - 1, 7)); if(oldSide == direction) direction = direction.getOpposite();
} while (outputOverride.ordinal() == getBlockMetadata());
onBlockChanged(); outputOverride = direction;
return outputOverride;
if(direction == getInputSide())
setInput(oldSide);
else
onBlockChanged();
} }
public void ensureOutputOverrideValid() { public void setInput(ForgeDirection direction) {
if (outputOverride.ordinal() == getBlockMetadata()) outputOverride = getOutputSide(); // save the current output, if it isn't saved yet
cycleOutputOverride();
ForgeDirection oldSide = getInputSide();
if(oldSide == direction) direction = direction.getOpposite();
boolean needSwapOutput = direction == getOutputSide();
worldObj.setBlockMetadataWithNotify(xCoord, yCoord, zCoord, direction.ordinal(), needSwapOutput ? 4 : 3);
if(needSwapOutput)
setOutputOverride(oldSide);
} }
protected void onBlockChanged() { protected void onBlockChanged() {
if (!hasWorldObj()) return; if(!hasWorldObj()) return;
worldObj.markBlockForUpdate(xCoord, yCoord, zCoord); worldObj.markBlockForUpdate(xCoord, yCoord, zCoord);
worldObj.notifyBlockChange(xCoord, yCoord, zCoord, getBlockType()); worldObj.notifyBlockChange(xCoord, yCoord, zCoord, getBlockType());
markDirty(); markDirty();
@ -82,7 +92,7 @@ public abstract class TileEntityCraneBase extends TileEntityMachineBase {
@Override @Override
public void readFromNBT(NBTTagCompound nbt) { public void readFromNBT(NBTTagCompound nbt) {
super.readFromNBT(nbt); super.readFromNBT(nbt);
if (nbt.hasKey("CraneOutputOverride", Constants.NBT.TAG_BYTE)) if(nbt.hasKey("CraneOutputOverride", Constants.NBT.TAG_BYTE))
outputOverride = ForgeDirection.getOrientation(nbt.getByte("CraneOutputOverride")); outputOverride = ForgeDirection.getOrientation(nbt.getByte("CraneOutputOverride"));
} }

View File

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

View File

@ -11,14 +11,14 @@ import net.minecraft.init.Blocks;
import net.minecraft.world.World; import net.minecraft.world.World;
import net.minecraft.world.gen.NoiseGeneratorPerlin; import net.minecraft.world.gen.NoiseGeneratorPerlin;
import net.minecraftforge.common.util.ForgeDirection; import net.minecraftforge.common.util.ForgeDirection;
import net.minecraftforge.event.terraingen.DecorateBiomeEvent; import net.minecraftforge.event.terraingen.PopulateChunkEvent;
public class DeepLayer { public class DeepLayer {
NoiseGeneratorPerlin noise; NoiseGeneratorPerlin noise;
@SubscribeEvent @SubscribeEvent
public void onDecorate(DecorateBiomeEvent.Pre event) { public void onDecorate(PopulateChunkEvent.Pre event) {
World world = event.world; World world = event.world;
if(world.provider == null || world.provider.dimensionId != 0) return; 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.minecraft.world.gen.NoiseGeneratorPerlin;
import net.minecraftforge.common.MinecraftForge; import net.minecraftforge.common.MinecraftForge;
import net.minecraftforge.common.util.ForgeDirection; import net.minecraftforge.common.util.ForgeDirection;
import net.minecraftforge.event.terraingen.DecorateBiomeEvent; import net.minecraftforge.event.terraingen.PopulateChunkEvent;
public class OreCave { public class OreCave {
@ -71,7 +71,7 @@ public class OreCave {
@SuppressWarnings("incomplete-switch") @SuppressWarnings("incomplete-switch")
@SubscribeEvent @SubscribeEvent
public void onDecorate(DecorateBiomeEvent.Pre event) { public void onDecorate(PopulateChunkEvent.Pre event) {
World world = event.world; World world = event.world;

View File

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

View File

@ -9,14 +9,14 @@ import net.minecraft.block.Block;
import net.minecraft.block.material.Material; import net.minecraft.block.material.Material;
import net.minecraft.world.World; import net.minecraft.world.World;
import net.minecraft.world.gen.NoiseGeneratorPerlin; import net.minecraft.world.gen.NoiseGeneratorPerlin;
import net.minecraftforge.event.terraingen.DecorateBiomeEvent; import net.minecraftforge.event.terraingen.PopulateChunkEvent;
public class SchistStratum { public class SchistStratum {
NoiseGeneratorPerlin noise; NoiseGeneratorPerlin noise;
@SubscribeEvent @SubscribeEvent
public void onDecorate(DecorateBiomeEvent.Pre event) { public void onDecorate(PopulateChunkEvent.Pre event) {
if(this.noise == null) { if(this.noise == null) {
this.noise = new NoiseGeneratorPerlin(new Random(event.world.getSeed()), 4); 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.anvil=Stufe %s Amboss
container.arcFurnace=Lichtbogenofen container.arcFurnace=Lichtbogenofen
container.armorTable=Rüstungsmodifikationstisch container.armorTable=Rüstungsmodifikationstisch
container.ashpit=Aschekasten
container.assembler=Fertigungsmaschine container.assembler=Fertigungsmaschine
container.autocrafter=Automatische Werkbank container.autocrafter=Automatische Werkbank
container.barrel=Fass container.barrel=Fass
@ -665,6 +666,7 @@ hbmfluid.heatingoil_vacuum=Schweres Heizöl
hbmfluid.heavyoil=Schweröl hbmfluid.heavyoil=Schweröl
hbmfluid.heavyoil_vacuum=Vakuum-Schweröl hbmfluid.heavyoil_vacuum=Vakuum-Schweröl
hbmfluid.heavywater=Schweres Wasser hbmfluid.heavywater=Schweres Wasser
hbmfluid.heavywater_hot=Heißes Schweres Wasser
hbmfluid.helium3=Helium-3 hbmfluid.helium3=Helium-3
hbmfluid.helium4=Helium-4 hbmfluid.helium4=Helium-4
hbmfluid.hotcrackoil=Heißes Crack-Öl hbmfluid.hotcrackoil=Heißes Crack-Öl
@ -1893,6 +1895,7 @@ item.gun_calamity_ammo.name=.50 BMG Patrone (LEGACY)
item.gun_calamity_dual.name=Sattelkanone item.gun_calamity_dual.name=Sattelkanone
item.gun_chemthrower.name=Chemowerfer item.gun_chemthrower.name=Chemowerfer
item.gun_coilgun.name=Gaußpistole item.gun_coilgun.name=Gaußpistole
item.gun_cryocannon.name=Kyro-Kanone
item.gun_cryolator.name=Der Cryolator item.gun_cryolator.name=Der Cryolator
item.gun_cryolator_ammo.name=Kryozelle item.gun_cryolator_ammo.name=Kryozelle
item.gun_dampfmaschine.name=Garantiert keine Scherzwaffe item.gun_dampfmaschine.name=Garantiert keine Scherzwaffe
@ -3710,18 +3713,30 @@ tile.concrete_stairs.name=Betonfliesentreppe
tile.concrete_super.name=Super Beton tile.concrete_super.name=Super Beton
tile.concrete_super_broken.name=Schimmliger Schutt tile.concrete_super_broken.name=Schimmliger Schutt
tile.conveyor.name=Förderband 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.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.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.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.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.corium_block.name=Corium
tile.crane_boxer.name=Förderband-Verpacker 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.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.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.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.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.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.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.crashed_bomb.name=Blindgänger
tile.crate.name=Vorratskiste tile.crate.name=Vorratskiste
tile.crate_ammo.name=Sternenmetallkiste tile.crate_ammo.name=Sternenmetallkiste
@ -3814,6 +3829,7 @@ tile.factory_titanium_furnace.name=Einfache Fabrikzugriffsluke
tile.factory_titanium_hull.name=Fabrikblock tile.factory_titanium_hull.name=Fabrikblock
tile.fallout.name=Fallout tile.fallout.name=Fallout
tile.fan.name=Ventilator 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.fence_metal.name=Maschendrahtzaun
tile.field_disturber.name=Hochenergiefeld-Jammer tile.field_disturber.name=Hochenergiefeld-Jammer
tile.fire_digamma.name=Verweilendes Digamma tile.fire_digamma.name=Verweilendes Digamma
@ -3961,7 +3977,7 @@ tile.machine_amgen.name=Umgebungsstrahlungs-Generator
tile.machine_arc_furnace_off.name=Lichtbogenofen tile.machine_arc_furnace_off.name=Lichtbogenofen
tile.machine_arc_furnace_on.name=Lichtbogenofen tile.machine_arc_furnace_on.name=Lichtbogenofen
tile.machine_armor_table.name=Rüstungsmodifikationstisch 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_ashpit.desc=Sammelt Asche von Feuerbüchsen und Heizöfen
tile.machine_assembler.name=Fertigungsmaschine tile.machine_assembler.name=Fertigungsmaschine
tile.machine_assemfac.name=Fertigungsfabrik tile.machine_assemfac.name=Fertigungsfabrik
@ -4211,6 +4227,8 @@ tile.pink_log.name=Pinkes Holz
tile.pink_planks.name=Pinke Holzbretter tile.pink_planks.name=Pinke Holzbretter
tile.pink_slab.name=Pinke Holzstufe tile.pink_slab.name=Pinke Holzstufe
tile.pink_stairs.name=Pinke Holztreppen 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_dead.name=Tote Pflanze
tile.plant_flower.cd0.name=Senf-Weide tile.plant_flower.cd0.name=Senf-Weide
tile.plant_flower.cd1.name=Senf-Weide tile.plant_flower.cd1.name=Senf-Weide
@ -4232,6 +4250,25 @@ tile.pribris.name=RBMK-Schutt
tile.pribris_burning.name=Flammender RBMK-Schutt tile.pribris_burning.name=Flammender RBMK-Schutt
tile.pribris_digamma.name=Geschwärzter RBMK-Schutt tile.pribris_digamma.name=Geschwärzter RBMK-Schutt
tile.pribris_radiating.name=Glühender 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.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_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 tile.radio_torch_receiver.name=Redstone-over-Radio Empfänger

View File

@ -638,6 +638,7 @@ container.amsLimiter=AMS Stabilizer (Deco)
container.anvil=Tier %s Anvil container.anvil=Tier %s Anvil
container.arcFurnace=Arc Furnace container.arcFurnace=Arc Furnace
container.armorTable=Armor Modification Table container.armorTable=Armor Modification Table
container.ashpit=Ashpit
container.assembler=Assembly Machine container.assembler=Assembly Machine
container.autocrafter=Automatic Crafting Table container.autocrafter=Automatic Crafting Table
container.barrel=Barrel container.barrel=Barrel
@ -1313,6 +1314,7 @@ hbmfluid.heatingoil_vacuum=Heavy Heating Oil
hbmfluid.heavyoil=Heavy Oil hbmfluid.heavyoil=Heavy Oil
hbmfluid.heavyoil_vacuum=Vacuum Heavy Oil hbmfluid.heavyoil_vacuum=Vacuum Heavy Oil
hbmfluid.heavywater=Heavy Water hbmfluid.heavywater=Heavy Water
hbmfluid.heavywater_hot=Hot Heavy Water
hbmfluid.helium3=Helium-3 hbmfluid.helium3=Helium-3
hbmfluid.helium4=Helium-4 hbmfluid.helium4=Helium-4
hbmfluid.hotcrackoil=Hot Cracked Oil hbmfluid.hotcrackoil=Hot Cracked Oil
@ -2616,6 +2618,7 @@ item.gun_calamity_dual.name=Saddle Gun
item.gun_chemthrower.name=Chemthrower item.gun_chemthrower.name=Chemthrower
item.gun_coilgun.name=Coilgun item.gun_coilgun.name=Coilgun
item.gun_congolake.name=Congo Lake item.gun_congolake.name=Congo Lake
item.gun_cryocannon.name=Cryo Cannon
item.gun_cryolator.name=The Cryolator item.gun_cryolator.name=The Cryolator
item.gun_cryolator_ammo.name=Cryo Cell item.gun_cryolator_ammo.name=Cryo Cell
item.gun_dampfmaschine.name=Totally Not a Joke Weapon item.gun_dampfmaschine.name=Totally Not a Joke Weapon
@ -4686,18 +4689,30 @@ tile.concrete_stairs.name=Concrete Tile Stairs
tile.concrete_super.name=Über Concrete tile.concrete_super.name=Über Concrete
tile.concrete_super_broken.name=Moldy Debris tile.concrete_super_broken.name=Moldy Debris
tile.conveyor.name=Conveyor Belt 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.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.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.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.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.corium_block.name=Corium
tile.crane_boxer.name=Conveyor Boxer 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.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.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.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.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.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.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.crashed_bomb.name=Dud
tile.crate.name=Supply Crate tile.crate.name=Supply Crate
tile.crate_ammo.name=Starmetal Crate tile.crate_ammo.name=Starmetal Crate
@ -4720,27 +4735,6 @@ tile.deco_asbestos.name=Asbestos Roof
tile.deco_beryllium.name=Beryllium Deco Block tile.deco_beryllium.name=Beryllium Deco Block
tile.deco_computer.ibm_300pl.name=IBM Personal Computer 300PL tile.deco_computer.ibm_300pl.name=IBM Personal Computer 300PL
tile.deco_emitter.name=Deco Light Emitter 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_lead.name=Lead Deco Block
tile.deco_rbmk.name=RBMK Deco Block tile.deco_rbmk.name=RBMK Deco Block
tile.deco_rbmk_smooth.name=Smooth RBMK Deco Block tile.deco_rbmk_smooth.name=Smooth RBMK Deco Block
@ -4812,6 +4806,7 @@ tile.factory_titanium_furnace.name=Basic Factory Access Hatch
tile.factory_titanium_hull.name=Factory Block tile.factory_titanium_hull.name=Factory Block
tile.fallout.name=Fallout tile.fallout.name=Fallout
tile.fan.name=Fan 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.fence_metal.name=Chainlink Fence
tile.field_disturber.name=High Energy Field Jammer tile.field_disturber.name=High Energy Field Jammer
tile.filing_cabinet.green.name=Dusty Filing Cabinet tile.filing_cabinet.green.name=Dusty Filing Cabinet
@ -5211,11 +5206,14 @@ tile.ore_uranium_scorched.name=Scorched Uranium Ore
tile.ore_verticium.name=Dollar Green Mineral tile.ore_verticium.name=Dollar Green Mineral
tile.ore_volcano.name=Geothermal Vent tile.ore_volcano.name=Geothermal Vent
tile.ore_weidanium.name=Weidite tile.ore_weidanium.name=Weidite
tile.part_emitter.name=Deco Particle Emitter
tile.pink_barrel.name=Kerosene Barrel tile.pink_barrel.name=Kerosene Barrel
tile.pink_log.name=Pink Log tile.pink_log.name=Pink Log
tile.pink_planks.name=Pink Wood Planks tile.pink_planks.name=Pink Wood Planks
tile.pink_slab.name=Pink Wood Slab tile.pink_slab.name=Pink Wood Slab
tile.pink_stairs.name=Pink Wood Stairs 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_dead.name=Dead Plant
tile.plant_flower.cd0.name=Mustard Willow tile.plant_flower.cd0.name=Mustard Willow
tile.plant_flower.cd1.name=Mustard Willow tile.plant_flower.cd1.name=Mustard Willow
@ -5237,6 +5235,25 @@ tile.pribris.name=RBMK Debris
tile.pribris_burning.name=Flaming RBMK Debris tile.pribris_burning.name=Flaming RBMK Debris
tile.pribris_digamma.name=Blackened RBMK Debris tile.pribris_digamma.name=Blackened RBMK Debris
tile.pribris_radiating.name=Smoldering 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.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_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 tile.radio_torch_receiver.name=Redstone-over-Radio Receiver

View File

@ -1,799 +0,0 @@
# Blender v2.76 (sub 0) OBJ File: 'tsarBomb.blend'
# www.blender.org
o Cylinder
v -1.000000 0.999999 -1.000000
v 1.000000 1.000001 -1.000000
v -1.000000 0.617316 -0.923880
v 1.000000 0.617317 -0.923880
v -0.999999 0.292892 -0.707107
v 1.000001 0.292894 -0.707107
v -0.999999 0.076120 -0.382683
v 1.000001 0.076121 -0.382683
v -0.999999 -0.000001 0.000000
v 1.000001 0.000001 0.000000
v -0.999999 0.076120 0.382684
v 1.000001 0.076121 0.382684
v -0.999999 0.292892 0.707107
v 1.000001 0.292894 0.707107
v -1.000000 0.617316 0.923880
v 1.000000 0.617317 0.923880
v -1.000000 0.999999 1.000000
v 1.000000 1.000001 1.000000
v -1.000000 1.382682 0.923880
v 1.000000 1.382684 0.923880
v -1.000001 1.707106 0.707107
v 0.999999 1.707108 0.707107
v -1.000001 1.923879 0.382684
v 0.999999 1.923880 0.382684
v -1.000001 1.999999 -0.000000
v 0.999999 2.000001 -0.000000
v -1.000001 1.923878 -0.382684
v 0.999999 1.923880 -0.382684
v -1.000001 1.707106 -0.707107
v 0.999999 1.707108 -0.707107
v -1.000000 1.382682 -0.923880
v 1.000000 1.382684 -0.923880
v 2.000000 0.674719 -0.785298
v 2.000000 0.398959 -0.601041
v 1.999999 0.214702 -0.325281
v 1.999999 0.150000 -0.000000
v 1.999999 0.214702 0.325281
v 2.000000 0.398959 0.601041
v 2.000000 0.674719 0.785298
v 2.000000 1.000000 0.850000
v 2.000000 1.325281 0.785298
v 2.000000 1.601041 0.601041
v 2.000001 1.785298 0.325281
v 2.000001 1.850000 0.000000
v 2.000001 1.785298 -0.325281
v 2.000000 1.601041 -0.601041
v 2.000000 1.325281 -0.785298
v 2.000000 1.000000 -0.850000
v -3.500000 1.000000 -0.600000
v -3.500000 1.229610 -0.554328
v -3.499999 1.424264 -0.424264
v -3.499999 1.554328 -0.229610
v -3.499999 1.600000 0.000000
v -3.499999 1.554328 0.229610
v -3.499999 1.424264 0.424264
v -3.500000 1.229610 0.554328
v -3.500000 1.000000 0.600000
v -3.500000 0.770390 0.554328
v -3.500000 0.575736 0.424264
v -3.500000 0.445672 0.229610
v -3.500000 0.400000 -0.000000
v -3.500000 0.445672 -0.229610
v -3.500000 0.575736 -0.424264
v -3.500000 0.770390 -0.554328
v -5.000000 1.000000 -0.600000
v -5.000000 1.229610 -0.554328
v -5.000000 1.424264 -0.424264
v -5.000000 1.554328 -0.229610
v -4.999999 1.600000 0.000000
v -5.000000 1.554328 0.229610
v -5.000000 1.424264 0.424264
v -5.000000 1.229610 0.554328
v -5.000000 1.000000 0.600000
v -5.000000 0.770390 0.554328
v -5.000000 0.575736 0.424264
v -5.000000 0.445672 0.229610
v -5.000000 0.400000 -0.000000
v -5.000000 0.445672 -0.229610
v -5.000000 0.575736 -0.424264
v -5.000000 0.770390 -0.554328
v 2.700000 1.000000 -0.600000
v 2.700000 1.229610 -0.554328
v 2.700001 1.424264 -0.424264
v 2.700001 1.554328 -0.229610
v 2.700001 1.600000 0.000000
v 2.700001 1.554328 0.229610
v 2.700001 1.424264 0.424264
v 2.700000 1.229610 0.554328
v 2.700000 1.000000 0.600000
v 2.700000 0.770390 0.554328
v 2.700000 0.575736 0.424264
v 2.699999 0.445672 0.229610
v 2.699999 0.400000 -0.000000
v 2.699999 0.445672 -0.229610
v 2.700000 0.575736 -0.424264
v 2.700000 0.770390 -0.554328
v 3.000000 1.000000 -0.000000
v -4.250000 0.289964 -1.196548
v -4.250000 0.318774 -1.213181
v -4.250000 1.391259 0.016633
v -3.500000 1.391259 0.016633
v -4.250000 1.391259 -0.016633
v -3.500000 1.391259 -0.016633
v -4.250000 2.391259 -0.016637
v -4.250000 1.891259 0.016631
v -4.250000 0.289968 1.196550
v -4.250000 0.789966 0.330524
v -3.500000 0.789966 0.330524
v -4.250000 0.818775 0.347157
v -3.500000 0.818775 0.347157
v -4.250000 1.891259 -0.016635
v -4.250000 0.818775 -0.347157
v -3.500000 0.818775 -0.347157
v -4.250000 0.789966 -0.330524
v -3.500000 0.789966 -0.330524
v -4.250000 2.391259 0.016629
v -4.250000 0.318777 1.213183
v -5.000000 2.391259 -0.016637
v -5.000000 1.891259 0.016631
v -5.000000 1.891259 -0.016635
v -5.000000 2.391259 0.016629
v -4.250000 2.057926 -0.016636
v -4.250000 2.224592 -0.016636
v -3.500000 2.224592 -0.016636
v -3.750000 2.391259 -0.016637
v -3.750000 2.391259 0.016629
v -4.250000 2.057926 0.016630
v -4.250000 2.224592 0.016630
v -3.500000 2.224592 0.016630
v -4.250000 0.568774 -0.780169
v -4.250000 0.539965 -0.763536
v -4.250000 0.568776 0.780170
v -4.250000 0.539967 0.763537
v -5.000000 0.289964 -1.196548
v -5.000000 0.318773 -1.213181
v -5.000000 0.568774 -0.780169
v -5.000000 0.539965 -0.763536
v -5.000000 0.289968 1.196550
v -5.000000 0.318777 1.213183
v -5.000000 0.568776 0.780170
v -5.000000 0.539967 0.763537
v -3.750000 0.289965 -1.196548
v -3.500000 0.373298 -1.052211
v -3.750000 0.318774 -1.213181
v -3.500000 0.402107 -1.068844
v -3.750000 0.318777 1.213183
v -3.500000 0.402110 1.068846
v -3.750000 0.289968 1.196550
v -3.500000 0.373301 1.052213
vt 0.160468 0.428574
vt 0.125244 0.428574
vt 0.125245 0.248024
vt 0.090021 0.428574
vt 0.090021 0.248023
vt 0.054797 0.428574
vt 0.054798 0.248023
vt 0.019573 0.428574
vt 0.019574 0.248023
vt 0.583153 0.428576
vt 0.547929 0.428576
vt 0.547929 0.248025
vt 0.512705 0.428576
vt 0.512706 0.248025
vt 0.477481 0.428575
vt 0.477482 0.248025
vt 0.442258 0.428575
vt 0.442258 0.248025
vt 0.407034 0.428575
vt 0.407035 0.248025
vt 0.371810 0.428575
vt 0.371811 0.248024
vt 0.336587 0.428575
vt 0.336587 0.248024
vt 0.301363 0.428575
vt 0.301363 0.248024
vt 0.266139 0.428575
vt 0.266140 0.248024
vt 0.230915 0.428575
vt 0.195692 0.428575
vt 0.160469 0.248024
vt 0.195692 0.248024
vt 0.308409 0.019574
vt 0.329543 0.019574
vt 0.343633 0.019575
vt 0.364767 0.019575
vt 0.378856 0.019574
vt 0.399991 0.019574
vt 0.414080 0.019575
vt 0.435214 0.019575
vt 0.449303 0.019574
vt 0.470438 0.019574
vt 0.484527 0.019575
vt 0.505661 0.019575
vt 0.519751 0.019574
vt 0.540885 0.019574
vt 0.554975 0.019575
vt 0.576109 0.019575
vt 0.583153 0.248025
vt 0.026620 0.019573
vt 0.047754 0.019573
vt 0.061843 0.019574
vt 0.082977 0.019574
vt 0.097067 0.019574
vt 0.118201 0.019574
vt 0.132291 0.019574
vt 0.153425 0.019574
vt 0.167514 0.019573
vt 0.188649 0.019573
vt 0.202738 0.019575
vt 0.223872 0.019575
vt 0.230916 0.248024
vt 0.237962 0.019573
vt 0.259096 0.019574
vt 0.273185 0.019574
vt 0.294320 0.019574
vt 0.980421 0.146384
vt 0.980421 0.167518
vt 0.845008 0.167513
vt 0.980420 0.188653
vt 0.980419 0.209787
vt 0.845006 0.209781
vt 0.980418 0.230921
vt 0.845005 0.230915
vt 0.980417 0.252055
vt 0.845004 0.252050
vt 0.980416 0.273189
vt 0.845003 0.273184
vt 0.980415 0.294324
vt 0.845002 0.294318
vt 0.980415 0.315458
vt 0.845002 0.315452
vt 0.980414 0.336592
vt 0.845001 0.336587
vt 0.980413 0.357726
vt 0.845000 0.357721
vt 0.845014 0.019573
vt 0.980427 0.019579
vt 0.980426 0.040713
vt 0.845013 0.040707
vt 0.980425 0.061847
vt 0.845012 0.061842
vt 0.980424 0.082982
vt 0.845011 0.082976
vt 0.980423 0.104116
vt 0.845010 0.104110
vt 0.980422 0.125250
vt 0.845009 0.125244
vt 0.062131 0.791805
vt 0.027661 0.768773
vt 0.042605 0.693644
vt 0.052155 0.519821
vt 0.047751 0.586778
vt 0.026617 0.586778
vt 0.580511 0.519823
vt 0.576108 0.586780
vt 0.554973 0.586780
vt 0.515347 0.519823
vt 0.545287 0.519823
vt 0.540884 0.586780
vt 0.480123 0.519822
vt 0.510063 0.519822
vt 0.505660 0.586780
vt 0.444899 0.519822
vt 0.474840 0.519822
vt 0.470437 0.586780
vt 0.409676 0.519822
vt 0.439616 0.519822
vt 0.435213 0.586780
vt 0.374452 0.519822
vt 0.404392 0.519822
vt 0.399989 0.586780
vt 0.097065 0.586779
vt 0.118199 0.586779
vt 0.107632 0.646408
vt 0.339228 0.519822
vt 0.369168 0.519822
vt 0.364765 0.586780
vt 0.304004 0.519822
vt 0.333945 0.519822
vt 0.329541 0.586780
vt 0.298721 0.519822
vt 0.294318 0.586779
vt 0.273183 0.586779
vt 0.263497 0.519822
vt 0.259094 0.586779
vt 0.237960 0.586779
vt 0.228273 0.519822
vt 0.223870 0.586779
vt 0.202736 0.586779
vt 0.193050 0.519822
vt 0.188646 0.586779
vt 0.167512 0.586779
vt 0.519750 0.586780
vt 0.530317 0.646409
vt 0.484526 0.586780
vt 0.495093 0.646409
vt 0.449302 0.586780
vt 0.459869 0.646409
vt 0.414079 0.586780
vt 0.424645 0.646409
vt 0.378855 0.586780
vt 0.389422 0.646409
vt 0.343631 0.586780
vt 0.354198 0.646409
vt 0.308407 0.586780
vt 0.318974 0.646409
vt 0.283750 0.646409
vt 0.248526 0.646409
vt 0.213303 0.646409
vt 0.178079 0.646408
vt 0.132288 0.586779
vt 0.153423 0.586779
vt 0.142855 0.646408
vt 0.061841 0.586778
vt 0.082975 0.586779
vt 0.072408 0.646408
vt 0.037184 0.646408
vt 0.565540 0.646410
vt 0.087378 0.519821
vt 0.122602 0.519821
vt 0.157826 0.519822
vt 0.233557 0.519822
vt 0.268781 0.519822
vt 0.550570 0.519823
vt 0.164969 0.753263
vt 0.164971 0.685556
vt 0.167974 0.685556
vt 0.207121 0.753262
vt 0.207121 0.685556
vt 0.210124 0.685556
vt 0.249270 0.685556
vt 0.252274 0.685556
vt 0.252274 0.753264
vt 0.249271 0.753264
vt 0.252274 0.798401
vt 0.715578 0.663671
vt 0.712575 0.663671
vt 0.712576 0.618535
vt 0.712576 0.878866
vt 0.712575 0.803639
vt 0.715578 0.803639
vt 0.712575 0.731377
vt 0.715578 0.731377
vt 0.712575 0.776515
vt 0.667437 0.731377
vt 0.667438 0.663671
vt 0.697529 0.799084
vt 0.622299 0.799084
vt 0.760716 0.663671
vt 0.760716 0.731377
vt 0.715578 0.776515
vt 0.730624 0.799084
vt 0.164969 0.798401
vt 0.167973 0.753263
vt 0.712575 0.177554
vt 0.715578 0.177554
vt 0.715578 0.204678
vt 0.207120 0.798401
vt 0.210124 0.753262
vt 0.715578 0.579388
vt 0.712575 0.579388
vt 0.712575 0.504161
vt 0.715578 0.019573
vt 0.715578 0.064710
vt 0.712575 0.064710
vt 0.760716 0.064710
vt 0.760716 0.132416
vt 0.715578 0.132416
vt 0.712575 0.132416
vt 0.667437 0.132416
vt 0.667437 0.064710
vt 0.712575 0.319054
vt 0.715578 0.319054
vt 0.715578 0.364192
vt 0.712575 0.477036
vt 0.715578 0.477036
vt 0.760716 0.364192
vt 0.760716 0.431899
vt 0.715578 0.431899
vt 0.712575 0.431899
vt 0.667437 0.431899
vt 0.667437 0.364192
vt 0.697529 0.200123
vt 0.622299 0.200123
vt 0.730624 0.200123
vt 0.712575 0.204678
vt 0.715578 0.279908
vt 0.697529 0.499605
vt 0.622300 0.499605
vt 0.730624 0.499605
vt 0.845008 0.146379
vt 0.845007 0.188647
vt 0.062131 0.685556
vt 0.083265 0.685556
vt 0.102790 0.693644
vt 0.117734 0.708588
vt 0.125822 0.728113
vt 0.125822 0.749248
vt 0.117734 0.768773
vt 0.102790 0.783717
vt 0.083265 0.791805
vt 0.042605 0.783717
vt 0.019573 0.749248
vt 0.019573 0.728114
vt 0.027661 0.708588
vt 0.022215 0.519821
vt 0.198333 0.519822
vt 0.163109 0.519822
vt 0.057438 0.519821
vt 0.092662 0.519821
vt 0.127886 0.519821
vt 0.249271 0.798401
vt 0.715579 0.618535
vt 0.715579 0.878866
vt 0.622300 0.731377
vt 0.805854 0.799084
vt 0.805854 0.731377
vt 0.167972 0.798401
vt 0.210123 0.798401
vt 0.715578 0.504161
vt 0.712575 0.019573
vt 0.712575 0.364192
vt 0.622300 0.132416
vt 0.805853 0.132416
vt 0.805853 0.200123
vt 0.712575 0.279908
vt 0.622299 0.431899
vt 0.805853 0.499605
vt 0.805853 0.431899
vn 0.000000 -0.195100 -0.980800
vn 0.000000 -0.555600 -0.831500
vn 0.000000 -0.831500 -0.555600
vn 0.000000 -0.980800 -0.195100
vn 0.000000 -0.980800 0.195100
vn 0.000000 -0.831500 0.555600
vn 0.000000 -0.555600 0.831500
vn 0.000000 -0.195100 0.980800
vn -0.000000 0.195100 0.980800
vn -0.000000 0.555600 0.831500
vn -0.000000 0.831500 0.555600
vn -0.000000 0.980800 0.195100
vn -0.000000 0.980800 -0.195100
vn -0.000000 0.831500 -0.555600
vn -0.000000 0.195100 -0.980800
vn -0.000000 0.555600 -0.831500
vn -0.155000 0.968900 0.192700
vn -0.155000 0.821400 0.548900
vn -0.155000 0.548900 0.821400
vn -0.155000 0.192700 0.968900
vn -0.155000 -0.192700 0.968900
vn -0.155000 -0.548900 0.821400
vn -0.155000 -0.821400 0.548900
vn -0.155000 -0.968900 0.192700
vn -0.155000 -0.968900 -0.192700
vn -0.155000 -0.821400 -0.548900
vn -0.155000 -0.548900 -0.821400
vn -0.155000 -0.192700 -0.968900
vn -0.155000 0.192700 -0.968900
vn -0.155000 0.548900 -0.821400
vn -0.155000 0.821400 -0.548900
vn -0.155000 0.968900 -0.192700
vn -1.000000 0.000000 0.000000
vn 0.330600 -0.925600 -0.184100
vn 0.330600 -0.925600 0.184100
vn 0.330600 -0.784700 0.524300
vn 0.330600 -0.524300 0.784700
vn 0.330600 -0.184100 0.925600
vn 0.330600 0.184100 0.925600
vn 0.330600 0.524300 0.784700
vn 0.890900 -0.252300 -0.377600
vn 0.330600 0.784700 0.524300
vn 0.330600 0.925600 0.184100
vn 0.330600 0.925600 -0.184100
vn 0.330600 0.784700 -0.524300
vn 0.330600 0.524300 -0.784700
vn 0.330600 0.184100 -0.925600
vn 0.890900 -0.377600 0.252300
vn 0.890900 -0.252300 0.377600
vn 0.890900 -0.088600 0.445500
vn 0.890900 0.088600 0.445500
vn 0.890900 0.252300 0.377600
vn 0.890900 0.377600 0.252300
vn 0.890900 0.445500 0.088600
vn 0.890900 0.445500 -0.088600
vn 0.890900 0.377600 -0.252300
vn 0.890900 0.252300 -0.377600
vn 0.890900 0.088600 -0.445500
vn 0.890900 -0.088600 -0.445500
vn 0.890900 -0.377600 -0.252300
vn 0.890900 -0.445500 -0.088600
vn 0.890900 -0.445500 0.088600
vn 0.330600 -0.784700 -0.524300
vn 0.330600 -0.524300 -0.784700
vn 0.330600 -0.184100 -0.925600
vn 0.145600 -0.193000 -0.970300
vn 0.145600 0.193000 -0.970300
vn 0.145600 0.549700 -0.822600
vn 0.145600 0.822600 -0.549700
vn 0.145600 0.970300 -0.193000
vn 0.145600 0.970300 0.193000
vn 0.145600 0.822600 0.549700
vn 0.145600 0.549700 0.822600
vn 0.145600 0.193000 0.970300
vn 0.145600 -0.193000 0.970300
vn 0.145600 -0.549700 0.822600
vn 0.145600 -0.822600 0.549700
vn 0.145600 -0.970300 0.193000
vn 0.145600 -0.970300 -0.193000
vn 0.145600 -0.822600 -0.549700
vn 0.145600 -0.549700 -0.822600
vn 0.000000 0.500000 0.866000
vn 0.000000 0.500000 -0.866000
vn 0.000000 -1.000000 0.000000
vn 1.000000 -0.000000 0.000000
vn -0.000000 1.000000 -0.000000
vn 0.554700 0.832100 0.000000
vn 0.000000 -0.000000 -1.000000
vn 0.000000 0.000000 1.000000
vn 0.554700 -0.416000 -0.720600
vn -0.000000 0.866000 -0.500000
vn 0.000000 -0.866000 0.500000
vn 0.554700 -0.416000 0.720600
vn 0.000000 -0.866000 -0.500000
vn -0.000000 0.866000 0.500000
vn 0.000000 -0.500000 -0.866000
vn -0.000000 -0.500000 0.866000
vn 0.554700 0.832000 0.000000
s off
f 2/1/1 4/2/1 3/3/1
f 4/2/2 6/4/2 5/5/2
f 6/4/3 8/6/3 7/7/3
f 8/6/4 10/8/4 9/9/4
f 10/10/5 12/11/5 11/12/5
f 12/11/6 14/13/6 13/14/6
f 14/13/7 16/15/7 15/16/7
f 16/15/8 18/17/8 17/18/8
f 18/17/9 20/19/9 19/20/9
f 20/19/10 22/21/10 21/22/10
f 22/21/11 24/23/11 23/24/11
f 24/23/12 26/25/12 25/26/12
f 25/26/13 26/25/13 28/27/13
f 27/28/14 28/27/14 30/29/14
f 32/30/15 2/1/15 1/31/15
f 30/29/16 32/30/16 31/32/16
f 53/33/17 54/34/17 23/24/17
f 23/24/18 54/35/18 55/36/18
f 55/37/19 56/38/19 19/20/19
f 19/20/20 56/39/20 57/40/20
f 17/18/21 57/41/21 58/42/21
f 58/43/22 59/44/22 13/14/22
f 59/45/23 60/46/23 11/12/23
f 60/47/24 61/48/24 9/49/24
f 61/50/25 62/51/25 7/7/25
f 62/52/26 63/53/26 5/5/26
f 63/54/27 64/55/27 3/3/27
f 64/56/28 49/57/28 1/31/28
f 1/31/29 49/58/29 50/59/29
f 50/60/30 51/61/30 29/62/30
f 51/63/31 52/64/31 27/28/31
f 52/65/32 53/66/32 25/26/32
f 67/67/14 68/68/14 52/69/14
f 52/69/13 68/68/13 69/70/13
f 69/70/12 70/71/12 54/72/12
f 70/71/11 71/73/11 55/74/11
f 71/73/10 72/75/10 56/76/10
f 72/75/9 73/77/9 57/78/9
f 73/77/8 74/79/8 58/80/8
f 74/79/7 75/81/7 59/82/7
f 75/81/6 76/83/6 60/84/6
f 76/83/5 77/85/5 61/86/5
f 61/87/4 77/88/4 78/89/4
f 62/90/3 78/89/3 79/91/3
f 63/92/2 79/91/2 80/93/2
f 64/94/1 80/93/1 65/95/1
f 49/96/15 65/95/15 66/97/15
f 50/98/16 66/97/16 67/67/16
f 73/99/33 71/100/33 67/101/33
f 35/102/34 94/103/34 93/104/34
f 36/105/35 93/106/35 92/107/35
f 38/108/36 37/109/36 92/110/36
f 39/111/37 38/112/37 91/113/37
f 40/114/38 39/115/38 90/116/38
f 41/117/39 40/118/39 89/119/39
f 42/120/40 41/121/40 88/122/40
f 95/123/41 96/124/41 97/125/41
f 43/126/42 42/127/42 87/128/42
f 44/129/43 43/130/43 86/131/43
f 44/132/44 85/133/44 84/134/44
f 45/135/45 84/136/45 83/137/45
f 46/138/46 83/139/46 82/140/46
f 47/141/47 82/142/47 81/143/47
f 91/144/48 92/110/48 97/145/48
f 90/146/49 91/113/49 97/147/49
f 89/148/50 90/116/50 97/149/50
f 88/150/51 89/119/51 97/151/51
f 87/152/52 88/122/52 97/153/52
f 86/154/53 87/128/53 97/155/53
f 85/156/54 86/131/54 97/157/54
f 84/134/55 85/133/55 97/158/55
f 83/137/56 84/136/56 97/159/56
f 82/140/57 83/139/57 97/160/57
f 81/143/58 82/142/58 97/161/58
f 96/162/59 81/163/59 97/164/59
f 94/165/60 95/166/60 97/167/60
f 93/104/61 94/103/61 97/168/61
f 93/106/62 97/169/62 92/107/62
f 34/170/63 95/166/63 94/165/63
f 33/171/64 96/124/64 95/123/64
f 48/172/65 81/163/65 96/162/65
f 4/2/66 2/1/66 48/172/66
f 2/1/67 32/30/67 47/141/67
f 32/30/68 30/29/68 46/138/68
f 28/27/69 45/135/69 46/173/69
f 26/25/70 44/132/70 45/174/70
f 24/23/71 43/130/71 44/129/71
f 22/21/72 42/127/72 43/126/72
f 20/19/73 41/121/73 42/120/73
f 18/17/74 40/118/74 41/117/74
f 16/15/75 39/115/75 40/114/75
f 14/13/76 38/112/76 39/111/76
f 12/11/77 37/109/77 38/108/77
f 10/10/78 36/105/78 37/175/78
f 10/8/79 8/6/79 35/102/79
f 8/6/80 6/4/80 34/170/80
f 6/4/81 4/2/81 33/171/81
f 130/176/82 136/177/82 137/178/82
f 133/179/83 141/180/83 140/181/83
f 119/182/84 120/183/84 111/184/84
f 105/185/33 111/184/33 102/186/33
f 121/187/33 118/188/33 120/189/33
f 103/190/85 124/191/85 129/192/85
f 104/193/86 121/187/86 116/194/86
f 129/192/87 124/191/87 125/195/87
f 104/193/88 111/196/88 120/197/88
f 111/196/88 124/198/88 103/199/88
f 119/200/89 105/201/89 116/194/89
f 126/202/89 105/201/89 129/203/89
f 112/204/33 130/176/33 131/205/33
f 142/206/90 144/207/90 145/208/90
f 107/209/33 133/179/33 132/210/33
f 108/211/85 110/212/85 147/213/85
f 136/214/33 135/215/33 134/216/33
f 136/217/91 130/218/91 99/219/91
f 98/220/92 131/221/92 137/222/92
f 140/223/33 141/224/33 138/225/33
f 147/213/93 146/226/93 148/227/93
f 141/228/94 133/229/94 106/230/94
f 117/231/95 132/232/95 140/233/95
f 131/221/92 143/234/92 115/235/92
f 145/236/91 144/207/91 130/218/91
f 98/220/96 99/219/96 144/207/96
f 143/237/85 145/208/85 113/238/85
f 117/231/97 138/225/97 106/230/97
f 132/232/95 147/239/95 110/240/95
f 148/227/94 133/229/94 149/241/94
f 1/31/1 2/1/1 3/3/1
f 3/3/2 4/2/2 5/5/2
f 5/5/3 6/4/3 7/7/3
f 7/7/4 8/6/4 9/9/4
f 9/49/5 10/10/5 11/12/5
f 11/12/6 12/11/6 13/14/6
f 13/14/7 14/13/7 15/16/7
f 15/16/8 16/15/8 17/18/8
f 17/18/9 18/17/9 19/20/9
f 19/20/10 20/19/10 21/22/10
f 21/22/11 22/21/11 23/24/11
f 23/24/12 24/23/12 25/26/12
f 27/28/13 25/26/13 28/27/13
f 29/62/14 27/28/14 30/29/14
f 31/32/15 32/30/15 1/31/15
f 29/62/16 30/29/16 31/32/16
f 25/26/17 53/33/17 23/24/17
f 21/22/18 23/24/18 55/36/18
f 21/22/19 55/37/19 19/20/19
f 17/18/20 19/20/20 57/40/20
f 15/16/21 17/18/21 58/42/21
f 15/16/22 58/43/22 13/14/22
f 13/14/23 59/45/23 11/12/23
f 11/12/24 60/47/24 9/49/24
f 9/9/25 61/50/25 7/7/25
f 7/7/26 62/52/26 5/5/26
f 5/5/27 63/54/27 3/3/27
f 3/3/28 64/56/28 1/31/28
f 31/32/29 1/31/29 50/59/29
f 31/32/30 50/60/30 29/62/30
f 29/62/31 51/63/31 27/28/31
f 27/28/32 52/65/32 25/26/32
f 51/242/14 67/67/14 52/69/14
f 53/243/13 52/69/13 69/70/13
f 53/243/12 69/70/12 54/72/12
f 54/72/11 70/71/11 55/74/11
f 55/74/10 71/73/10 56/76/10
f 56/76/9 72/75/9 57/78/9
f 57/78/8 73/77/8 58/80/8
f 58/80/7 74/79/7 59/82/7
f 59/82/6 75/81/6 60/84/6
f 60/84/5 76/83/5 61/86/5
f 62/90/4 61/87/4 78/89/4
f 63/92/3 62/90/3 79/91/3
f 64/94/2 63/92/2 80/93/2
f 49/96/1 64/94/1 65/95/1
f 50/98/15 49/96/15 66/97/15
f 51/242/16 50/98/16 67/67/16
f 67/101/33 66/244/33 65/245/33
f 65/245/33 80/246/33 79/247/33
f 79/247/33 78/248/33 77/249/33
f 77/249/33 76/250/33 75/251/33
f 75/251/33 74/252/33 73/99/33
f 73/99/33 72/253/33 71/100/33
f 71/100/33 70/254/33 69/255/33
f 69/255/33 68/256/33 71/100/33
f 67/101/33 65/245/33 75/251/33
f 79/247/33 77/249/33 75/251/33
f 75/251/33 73/99/33 67/101/33
f 71/100/33 68/256/33 67/101/33
f 65/245/33 79/247/33 75/251/33
f 36/257/34 35/102/34 93/104/34
f 37/175/35 36/105/35 92/107/35
f 91/144/36 38/108/36 92/110/36
f 90/146/37 39/111/37 91/113/37
f 89/148/38 40/114/38 90/116/38
f 88/150/39 41/117/39 89/119/39
f 87/152/40 42/120/40 88/122/40
f 86/154/42 43/126/42 87/128/42
f 85/156/43 44/129/43 86/131/43
f 45/174/44 44/132/44 84/134/44
f 46/173/45 45/135/45 83/137/45
f 47/258/46 46/138/46 82/140/46
f 48/259/47 47/141/47 81/143/47
f 35/260/63 34/170/63 94/165/63
f 34/261/64 33/171/64 95/123/64
f 33/262/65 48/172/65 96/162/65
f 33/262/66 4/2/66 48/172/66
f 48/259/67 2/1/67 47/141/67
f 47/258/68 32/30/68 46/138/68
f 30/29/69 28/27/69 46/173/69
f 28/27/70 26/25/70 45/174/70
f 26/25/71 24/23/71 44/129/71
f 24/23/72 22/21/72 43/126/72
f 22/21/73 20/19/73 42/120/73
f 20/19/74 18/17/74 41/117/74
f 18/17/75 16/15/75 40/114/75
f 16/15/76 14/13/76 39/111/76
f 14/13/77 12/11/77 38/108/77
f 12/11/78 10/10/78 37/175/78
f 36/257/79 10/8/79 35/102/79
f 35/260/80 8/6/80 34/170/80
f 34/261/81 6/4/81 33/171/81
f 131/205/82 130/176/82 137/178/82
f 132/210/83 133/179/83 140/181/83
f 105/185/84 119/182/84 111/184/84
f 100/263/33 105/185/33 102/186/33
f 119/264/33 121/187/33 120/189/33
f 101/265/85 103/190/85 129/192/85
f 126/202/86 125/195/86 104/193/86
f 104/193/86 118/188/86 121/187/86
f 116/194/86 126/202/86 104/193/86
f 126/202/98 129/192/98 125/195/98
f 118/188/88 104/193/88 120/197/88
f 103/199/88 102/266/88 111/196/88
f 111/196/88 104/193/88 125/195/88
f 125/195/88 124/198/88 111/196/88
f 121/187/89 119/200/89 116/194/89
f 101/267/89 129/203/89 105/201/89
f 126/202/89 116/194/89 105/201/89
f 105/201/89 100/268/89 101/267/89
f 114/269/33 112/204/33 131/205/33
f 143/237/90 142/206/90 145/208/90
f 109/270/33 107/209/33 132/210/33
f 149/271/85 108/211/85 147/213/85
f 137/272/33 136/214/33 134/216/33
f 135/215/91 136/217/91 99/219/91
f 134/216/92 98/220/92 137/222/92
f 139/273/33 140/223/33 138/225/33
f 149/271/93 147/213/93 148/227/93
f 138/225/94 141/228/94 106/230/94
f 139/273/95 117/231/95 140/233/95
f 115/235/92 114/274/92 131/221/92
f 131/221/92 98/220/92 142/206/92
f 142/206/92 143/234/92 131/221/92
f 130/218/91 112/275/91 113/276/91
f 113/276/91 145/236/91 130/218/91
f 144/207/91 99/219/91 130/218/91
f 144/207/96 142/206/96 98/220/96
f 98/220/96 134/216/96 135/215/96
f 135/215/96 99/219/96 98/220/96
f 115/277/85 143/237/85 113/238/85
f 148/227/97 146/226/97 117/231/97
f 117/231/97 139/273/97 138/225/97
f 106/230/97 148/227/97 117/231/97
f 110/240/95 109/278/95 132/232/95
f 132/232/95 117/231/95 146/226/95
f 146/226/95 147/239/95 132/232/95
f 108/279/94 149/241/94 133/229/94
f 148/227/94 106/230/94 133/229/94
f 133/229/94 107/280/94 108/279/94

File diff suppressed because it is too large Load Diff

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

Binary file not shown.

Before

Width:  |  Height:  |  Size: 17 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 15 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.1 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.2 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.2 KiB