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 FEnSU's IO limit not working properly
* Fixed overflow caused by uncapped Spk values of DFC beams, they are now capped at 9,200,000 Spk
* Fixed smooth lighting not working on connected textures
* 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
* Fixed PWR still operating as normal even when the structure is dissolved
* Fixed the new watz not giving the meltdown achievement
* Fixed serverside crash caused by conveyor cranes

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

@ -2,11 +2,11 @@ package com.hbm.blocks.network;
import api.hbm.block.IToolable;
import com.hbm.blocks.IBlockSideRotation;
import com.hbm.blocks.ITooltipProvider;
import com.hbm.items.tool.ItemTooling;
import com.hbm.lib.RefStrings;
import com.hbm.main.MainRegistry;
import com.hbm.tileentity.network.TileEntityCraneBase;
import com.hbm.util.ChatBuilder;
import cpw.mods.fml.client.registry.RenderingRegistry;
import cpw.mods.fml.common.network.internal.FMLNetworkHandler;
import cpw.mods.fml.relauncher.Side;
@ -23,15 +23,15 @@ import net.minecraft.inventory.ISidedInventory;
import net.minecraft.item.ItemStack;
import net.minecraft.nbt.NBTTagCompound;
import net.minecraft.tileentity.TileEntity;
import net.minecraft.util.EnumChatFormatting;
import net.minecraft.util.IIcon;
import net.minecraft.world.IBlockAccess;
import net.minecraft.world.World;
import net.minecraftforge.common.util.ForgeDirection;
import java.util.List;
import java.util.Random;
public abstract class BlockCraneBase extends BlockContainer implements IBlockSideRotation, IToolable {
public abstract class BlockCraneBase extends BlockContainer implements IBlockSideRotation, IToolable, ITooltipProvider {
@SideOnly(Side.CLIENT) protected IIcon iconSide;
@SideOnly(Side.CLIENT) protected IIcon iconIn;
@ -92,10 +92,6 @@ public abstract class BlockCraneBase extends BlockContainer implements IBlockSid
world.setBlockMetadataWithNotify(x, y, z, l, 2);
}
protected boolean hasReversedIO() {
return false;
}
@Override
public boolean onScrew(World world, EntityPlayer player, int x, int y, int z, int side, float fX, float fY, float fZ, ToolType tool) {
if (tool != ToolType.SCREWDRIVER) return false;
@ -105,28 +101,12 @@ public abstract class BlockCraneBase extends BlockContainer implements IBlockSid
TileEntityCraneBase craneTileEntity = (TileEntityCraneBase) te;
// some cranes like the ejector have reversed input and output sides
// so this bit of logic is to hide that away from the player
boolean actuallyCycleInput = player.isSneaking() != hasReversedIO();
ForgeDirection newDirection;
ForgeDirection newDirection = ForgeDirection.getOrientation(side);
if (actuallyCycleInput) { // cycle input
// it's in reverse because players are more likely to want to turn the output from DOWN to UP
int newValue = Math.floorMod(world.getBlockMetadata(x, y, z) - 1, 6);
newDirection = ForgeDirection.getOrientation(newValue);
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());
if (player.isSneaking()) {
craneTileEntity.setOutputOverride(newDirection);
} else {
craneTileEntity.setInput(newDirection);
}
return true;
@ -326,4 +306,9 @@ public abstract class BlockCraneBase extends BlockContainer implements IBlockSid
super.breakBlock(world, x, y, z, block, meta);
}
@Override
public void addInformation(ItemStack stack, EntityPlayer player, List list, boolean ext) {
this.addStandardInfo(stack, player, list, ext);
}
}

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

@ -321,9 +321,9 @@ public class Fluids {
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_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_HOT = new FluidType("THORIUM_SALT_HOT", 0x3E3627, 2, 0, 3, EnumSymbol.NONE).setTemp(1600).addTraits(LIQUID);
THORIUM_SALT_DEPLETED = new FluidType(129, "THORIUM_SALT_DEPLETED", 0x302D1C, 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, new FT_Corrosive(65));
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

View File

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

View File

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

View File

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

View File

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

View File

@ -66,7 +66,8 @@ public class ItemWandD extends Item {
/*EntityNukeTorex torex = new EntityNukeTorex(world);
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);
/*EntityTracker entitytracker = ((WorldServer) world).getEntityTracker();
IntHashMap map = ReflectionHelper.getPrivateValue(EntityTracker.class, entitytracker, "trackedEntityIDs", "field_72794_c");

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

@ -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_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_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_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"));
@ -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_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_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_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");

View File

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

View File

@ -444,16 +444,6 @@ public class ItemRenderLibrary {
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() {
public void renderInventory() {
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 com.hbm.blocks.ModBlocks;
import com.hbm.main.ResourceManager;
import com.hbm.render.item.ItemRenderBase;
import net.minecraft.client.renderer.tileentity.TileEntitySpecialRenderer;
import net.minecraft.item.Item;
import net.minecraft.tileentity.TileEntity;
import net.minecraftforge.client.IItemRenderer;
public class RenderNukeTsar extends TileEntitySpecialRenderer {
public class RenderNukeTsar extends TileEntitySpecialRenderer implements IItemRendererProvider {
@Override
public void renderTileEntityAt(TileEntity tileEntity, double x, double y, double z, float f)
{
GL11.glPushMatrix();
GL11.glTranslated(x + 0.5D, y, z + 0.5D);
GL11.glEnable(GL11.GL_LIGHTING);
GL11.glDisable(GL11.GL_CULL_FACE);
switch(tileEntity.getBlockMetadata())
{
case 2:
GL11.glRotatef(90, 0F, 1F, 0F); break;
case 4:
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;
@Override
public void renderTileEntityAt(TileEntity tileEntity, double x, double y, double z, float f) {
GL11.glPushMatrix();
GL11.glTranslated(x + 0.5D, y, z + 0.5D);
GL11.glEnable(GL11.GL_LIGHTING);
GL11.glDisable(GL11.GL_CULL_FACE);
switch(tileEntity.getBlockMetadata()) {
case 2: GL11.glRotatef(90, 0F, 1F, 0F); break;
case 4: 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);
ResourceManager.bomb_tsar.renderAll();
GL11.glEnable(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);
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.inventory.container.ContainerLaunchPadTier1;
import com.hbm.inventory.gui.GUILaunchPadTier1;
import com.hbm.items.ModItems;
import com.hbm.items.tool.ItemDesingator;
import com.hbm.lib.Library;
import com.hbm.packet.AuxElectricityPacket;
import com.hbm.packet.PacketDispatcher;

View File

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

View File

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

View File

@ -158,85 +158,87 @@ public class TileEntityPWRController extends TileEntityMachineBase implements IG
this.tanks[0].setType(2, slots);
setupTanks();
for(BlockPos pos : ports) {
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((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++;
if(this.assembled) {
for(BlockPos pos : ports) {
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);
}
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();
}
}
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)) {
this.flux *= tanks[0].getTankType().getTrait(FT_PWRModerator.class).getMultiplier();
}
if(this.coreHeat > this.coreHeatCapacity) {
meltDown();
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--;
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();

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

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