Merge remote-tracking branch 'HbmMods/master'
38
CONTRIBUTING.md
Normal 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.
|
||||
44
changelog
@ -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
|
||||
@ -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)
|
||||
|
||||
@ -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());
|
||||
|
||||
@ -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);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@ -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;
|
||||
|
||||
@ -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);
|
||||
|
||||
@ -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;
|
||||
|
||||
@ -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;
|
||||
|
||||
@ -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;
|
||||
|
||||
@ -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;
|
||||
|
||||
@ -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;
|
||||
|
||||
@ -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;
|
||||
}
|
||||
}
|
||||
@ -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)
|
||||
|
||||
@ -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];
|
||||
}
|
||||
|
||||
|
||||
}
|
||||
|
||||
@ -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;
|
||||
|
||||
@ -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;
|
||||
|
||||
@ -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);
|
||||
}
|
||||
}
|
||||
|
||||
@ -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;
|
||||
|
||||
|
||||
@ -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);
|
||||
}
|
||||
}
|
||||
|
||||
@ -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);
|
||||
}
|
||||
}
|
||||
|
||||
@ -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);
|
||||
}
|
||||
}
|
||||
|
||||
@ -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);
|
||||
|
||||
@ -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);
|
||||
}
|
||||
}
|
||||
|
||||
@ -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);
|
||||
}
|
||||
}
|
||||
|
||||
@ -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);
|
||||
|
||||
@ -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) {
|
||||
|
||||
|
||||
@ -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;
|
||||
|
||||
@ -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);
|
||||
}
|
||||
}
|
||||
|
||||
@ -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();
|
||||
}
|
||||
|
||||
@ -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;
|
||||
|
||||
@ -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
|
||||
|
||||
@ -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
|
||||
|
||||
@ -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);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@ -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> {
|
||||
|
||||
|
||||
@ -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) {
|
||||
|
||||
@ -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
|
||||
|
||||
@ -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);
|
||||
}
|
||||
|
||||
@ -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);
|
||||
|
||||
@ -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;
|
||||
|
||||
@ -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++;
|
||||
|
||||
@ -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");
|
||||
|
||||
@ -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);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@ -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();
|
||||
}
|
||||
};
|
||||
|
||||
@ -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
|
||||
|
||||
@ -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 });
|
||||
|
||||
@ -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);
|
||||
|
||||
@ -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;
|
||||
|
||||
@ -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");
|
||||
|
||||
@ -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();
|
||||
}
|
||||
|
||||
|
||||
@ -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);
|
||||
|
||||
@ -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);
|
||||
}};
|
||||
}
|
||||
}
|
||||
|
||||
@ -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;
|
||||
|
||||
@ -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() {
|
||||
|
||||
@ -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;
|
||||
}
|
||||
}
|
||||
|
||||
@ -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();
|
||||
|
||||
@ -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);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@ -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) {
|
||||
|
||||
@ -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;
|
||||
|
||||
@ -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;
|
||||
|
||||
@ -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"));
|
||||
}
|
||||
|
||||
|
||||
@ -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;
|
||||
|
||||
|
||||
@ -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;
|
||||
|
||||
@ -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;
|
||||
|
||||
|
||||
@ -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;
|
||||
|
||||
|
||||
@ -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;
|
||||
|
||||
|
||||
@ -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);
|
||||
|
||||
@ -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
|
||||
|
||||
@ -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
|
||||
|
||||
@ -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
|
||||
10781
src/main/resources/assets/hbm/models/bombs/tsar.obj
Normal file
|
Before Width: | Height: | Size: 16 KiB After Width: | Height: | Size: 16 KiB |
|
Before Width: | Height: | Size: 2.6 KiB After Width: | Height: | Size: 9.4 KiB |
|
Before Width: | Height: | Size: 17 KiB |
BIN
src/main/resources/assets/hbm/textures/models/bombs/tsar.png
Normal file
|
After Width: | Height: | Size: 15 KiB |
|
After Width: | Height: | Size: 1.1 KiB |
|
After Width: | Height: | Size: 1.2 KiB |
|
After Width: | Height: | Size: 1.2 KiB |