removed more useless crap

This commit is contained in:
Bob 2024-03-24 18:26:21 +01:00
parent 4b61cb4cc8
commit bc65f80501
38 changed files with 82 additions and 1237 deletions

View File

@ -6,18 +6,22 @@
* Spills fluid, allowing to void up to 1.000mB per tick
* Might slightly alter the landscape, depending on whether the fluid was poisonous
* Viscous, flammable liquids cause oil spill blocks to appear
* Not all liquids have the appropriate pollution stats yet, the system is still subject to change
## Changed
* After three quarters of a decade, three separate models, countless rebalances and hours of senseless yapping, the industrial generator has finally met its end. Suddenly, yet not unsurprisingly, on this here day the industrial generator has closed its eyes for the final time. It was a long and eventful journey, but as with all things in life, it too had to come to an end.
* And this is why we can't ever have anything nice
* Rebalanced glyphids
* We'll see how it goes
* Still prone to changes, there's still a few inconsistencies and some behavior has barely been tested it all, but I have consulted the almighty spreadsheet and it said "yeah it ok"
* Did some spring cleaning
* Removed cloud residue (looked horrible, allowed for weird dupes and made no sense overall)
* Bottlecap blocks now use a single block ID and metadata instead of using one ID per type. This change however will delete all existing bottlecap blocks in the world
* Removed the config option for silos (the option no longer works anyway since the new silos use the structure component system)
* Finally removed the deaerator
* Finally removed the deaerator and the large shredder
* Removed some of the ancient test blocks that haven't been needed in about 8 years
* Removed all the siege blocks, since siege mode will never be finished anyway
* Removed reinforced niter
* Removed a few other minor things that won't be mentioned because nobody's gonna even notice their absence anyway
* Retextured the laser detonator to look more like the old detonator, but keeping the 3D model
* Bedrock ores can now be customized in creative mode. Using a drillbit sets the tier, a fluid container sets the borefluid requirement and any other item sets the resource.
@ -41,6 +45,9 @@
* The cable model has been simplified, being only a single face instead of three faces stuck inside each other at weird angles
* Cables now sag slightly more at long ranges
* There are now configs for toggling the startup message as well as the guidebook
* Cybercrab spawners will only start spawning as soon as a player is within 25 blocks of the spawner
* Improved inventory shift-clicking for the FEL, assembler, chemplant, large mining drill, gas centrifuge, shredder and turbofan
* Updated chinese localization
## Fixed
* WarTec should now be compatible again
@ -55,3 +62,5 @@
* Fixed fog caching causing weird behavior with the sky color change in response to crater biomes (or lack thereof)
* Fixed "F1 for help" keybind not working on non-standard inventories such as the NEI item list
* Fixed pylon wire rendering having incorrect corrdinates for brightness checks
* Fixed dupe caused by shift clicking certain slots in the fusion reactor
* Fixed snowglobe rendering lighting setup leak causing blocks rendered after them in inventory to not have correct lighting

View File

@ -1,6 +1,6 @@
mod_version=1.0.27
# Empty build number makes a release type
mod_build_number=4895
mod_build_number=4914
credits=HbMinecraft, rodolphito (explosion algorithms), grangerave (explosion algorithms),\
\ Hoboy (textures, models), Doctor17 (russian localization), Drillgon200 (effects, models,\

View File

@ -12,10 +12,6 @@ import com.hbm.blocks.machine.pile.*;
import com.hbm.blocks.machine.rbmk.*;
import com.hbm.blocks.network.*;
import com.hbm.blocks.rail.*;
import com.hbm.blocks.siege.SiegeCircuit;
import com.hbm.blocks.siege.SiegeHole;
import com.hbm.blocks.siege.SiegeInternal;
import com.hbm.blocks.siege.SiegeShield;
import com.hbm.blocks.test.*;
import com.hbm.blocks.turret.*;
import com.hbm.items.block.*;
@ -190,7 +186,6 @@ public class ModBlocks {
public static Block block_titanium;
public static Block block_sulfur;
public static Block block_niter;
public static Block block_niter_reinforced;
public static Block block_copper;
public static Block block_red_copper;
public static Block block_tungsten;
@ -386,12 +381,6 @@ public class ModBlocks {
public static Block tile_lab_cracked;
public static Block tile_lab_broken;
public static Block siege_shield;
public static Block siege_internal;
public static Block siege_circuit;
public static Block siege_emergency;
public static Block siege_hole;
public static Block block_meteor;
public static Block block_meteor_cobble;
public static Block block_meteor_broken;
@ -955,9 +944,6 @@ public class ModBlocks {
public static Block machine_shredder;
public static Block machine_shredder_large;
public static final int guiID_machine_shredder_large = 76;
public static Block machine_teleporter;
public static Block teleanchor;
public static Block field_disturber;
@ -1414,7 +1400,6 @@ public class ModBlocks {
block_titanium = new BlockBeaconable(Material.iron).setBlockName("block_titanium").setCreativeTab(MainRegistry.blockTab).setStepSound(Block.soundTypeMetal).setHardness(5.0F).setResistance(50.0F).setBlockTextureName(RefStrings.MODID + ":block_titanium");
block_sulfur = new BlockBeaconable(Material.iron).setBlockName("block_sulfur").setCreativeTab(MainRegistry.blockTab).setHardness(5.0F).setResistance(10.0F).setBlockTextureName(RefStrings.MODID + ":block_sulfur");
block_niter = new BlockBeaconable(Material.iron).setBlockName("block_niter").setCreativeTab(MainRegistry.blockTab).setHardness(5.0F).setResistance(10.0F).setBlockTextureName(RefStrings.MODID + ":block_niter");
block_niter_reinforced = new BlockBeaconable(Material.iron).setBlockName("block_niter_reinforced").setCreativeTab(MainRegistry.blockTab).setHardness(15.0F).setResistance(100.0F).setBlockTextureName(RefStrings.MODID + ":block_niter_reinforced");
block_copper = new BlockBeaconable(Material.iron).setBlockName("block_copper").setCreativeTab(MainRegistry.blockTab).setStepSound(Block.soundTypeMetal).setHardness(5.0F).setResistance(20.0F).setBlockTextureName(RefStrings.MODID + ":block_copper");
block_red_copper = new BlockBeaconable(Material.iron).setBlockName("block_red_copper").setCreativeTab(MainRegistry.blockTab).setStepSound(Block.soundTypeMetal).setHardness(5.0F).setResistance(25.0F).setBlockTextureName(RefStrings.MODID + ":block_red_copper");
block_tungsten = new BlockBeaconable(Material.iron).setBlockName("block_tungsten").setCreativeTab(MainRegistry.blockTab).setStepSound(Block.soundTypeMetal).setHardness(5.0F).setResistance(20.0F).setBlockTextureName(RefStrings.MODID + ":block_tungsten");
@ -1608,12 +1593,6 @@ public class ModBlocks {
tile_lab_cracked = new BlockOutgas(Material.rock, false, 5, true).setBlockName("tile_lab_cracked").setStepSound(Block.soundTypeGlass).setCreativeTab(MainRegistry.blockTab).setHardness(1.0F).setResistance(20.0F).setBlockTextureName(RefStrings.MODID + ":tile_lab_cracked");
tile_lab_broken = new BlockOutgas(Material.rock, true, 5, true).setBlockName("tile_lab_broken").setStepSound(Block.soundTypeGlass).setCreativeTab(MainRegistry.blockTab).setHardness(1.0F).setResistance(20.0F).setBlockTextureName(RefStrings.MODID + ":tile_lab_broken");
siege_shield = new SiegeShield(Material.iron).setBlockName("siege_shield").setCreativeTab(MainRegistry.blockTab).setBlockUnbreakable().setResistance(900.0F);
siege_internal = new SiegeInternal(Material.iron).setBlockName("siege_internal").setCreativeTab(MainRegistry.blockTab).setBlockUnbreakable().setResistance(60.0F);
siege_circuit = new SiegeCircuit(Material.iron).setBlockName("siege_circuit").setCreativeTab(MainRegistry.blockTab).setBlockUnbreakable().setResistance(10.0F);
siege_emergency = new BlockBase(Material.iron).setBlockName("siege_emergency").setCreativeTab(MainRegistry.blockTab).setBlockUnbreakable().setResistance(20000.0F).setBlockTextureName(RefStrings.MODID + ":siege_emergency");
siege_hole = new SiegeHole(Material.iron).setBlockName("siege_hole").setCreativeTab(MainRegistry.blockTab).setBlockUnbreakable().setResistance(900.0F).setBlockTextureName(RefStrings.MODID + ":siege_hole");
block_meteor = new BlockOre(Material.rock).noFortune().setBlockName("block_meteor").setCreativeTab(MainRegistry.blockTab).setHardness(15.0F).setResistance(360.0F).setBlockTextureName(RefStrings.MODID + ":meteor");
block_meteor_cobble = new BlockOre(Material.rock).noFortune().setBlockName("block_meteor_cobble").setCreativeTab(MainRegistry.blockTab).setHardness(15.0F).setResistance(360.0F).setBlockTextureName(RefStrings.MODID + ":meteor_cobble");
block_meteor_broken = new BlockOre(Material.rock).noFortune().setBlockName("block_meteor_broken").setCreativeTab(MainRegistry.blockTab).setHardness(15.0F).setResistance(360.0F).setBlockTextureName(RefStrings.MODID + ":meteor_crushed");
@ -1922,7 +1901,6 @@ public class ModBlocks {
machine_combustion_engine = new MachineCombustionEngine().setBlockName("machine_combustion_engine").setHardness(5.0F).setResistance(10.0F).setCreativeTab(MainRegistry.machineTab).setBlockTextureName(RefStrings.MODID + ":block_steel");
machine_shredder = new MachineShredder(Material.iron).setBlockName("machine_shredder").setHardness(5.0F).setResistance(10.0F).setCreativeTab(MainRegistry.machineTab);
machine_shredder_large = new MachineShredderLarge(Material.iron).setBlockName("machine_shredder_large").setHardness(5.0F).setResistance(10.0F).setCreativeTab(MainRegistry.machineTab).setBlockTextureName(RefStrings.MODID + ":code");
machine_teleporter = new MachineTeleporter(Material.iron).setBlockName("machine_teleporter").setHardness(5.0F).setResistance(10.0F).setCreativeTab(MainRegistry.machineTab);
teleanchor = new MachineTeleanchor().setBlockName("teleanchor").setHardness(5.0F).setResistance(10.0F).setCreativeTab(MainRegistry.machineTab);
@ -2276,7 +2254,7 @@ public class ModBlocks {
machine_selenium = new MachineSeleniumEngine(Material.iron).setBlockName("machine_selenium").setHardness(5.0F).setResistance(10.0F).setCreativeTab(MainRegistry.machineTab).setBlockTextureName(RefStrings.MODID + ":machine_selenium");
reactor_research = new ReactorResearch(Material.iron).setBlockName("machine_reactor_small").setHardness(5.0F).setResistance(10.0F).setCreativeTab(MainRegistry.machineTab).setBlockTextureName(RefStrings.MODID + ":machine_reactor_small");
reactor_zirnox = new ReactorZirnox(Material.iron).setBlockName("machine_zirnox").setHardness(5.0F).setResistance(100.0F).setCreativeTab(MainRegistry.machineTab).setBlockTextureName(RefStrings.MODID + ":block_steel");
zirnox_destroyed = new ZirnoxDestroyed(Material.iron).setBlockName("zirnox_destroyed").setHardness(100.0F).setResistance(800.0F).setCreativeTab(MainRegistry.machineTab).setBlockTextureName(RefStrings.MODID + ":block_steel");
zirnox_destroyed = new ZirnoxDestroyed(Material.iron).setBlockName("zirnox_destroyed").setHardness(100.0F).setResistance(800.0F).setCreativeTab(null).setBlockTextureName(RefStrings.MODID + ":block_steel");
machine_controller = new MachineReactorControl(Material.iron).setBlockName("machine_controller").setHardness(5.0F).setResistance(10.0F).setCreativeTab(null);
machine_boiler_off = new MachineBoiler(false).setBlockName("machine_boiler_off").setHardness(5.0F).setResistance(10.0F).setCreativeTab(MainRegistry.machineTab).setBlockTextureName(RefStrings.MODID + ":machine_boiler_off");
@ -2600,7 +2578,6 @@ public class ModBlocks {
GameRegistry.registerBlock(block_titanium, block_titanium.getUnlocalizedName());
GameRegistry.registerBlock(block_sulfur, block_sulfur.getUnlocalizedName());
GameRegistry.registerBlock(block_niter, block_niter.getUnlocalizedName());
GameRegistry.registerBlock(block_niter_reinforced, block_niter_reinforced.getUnlocalizedName());
GameRegistry.registerBlock(block_copper, block_copper.getUnlocalizedName());
GameRegistry.registerBlock(block_red_copper, block_red_copper.getUnlocalizedName());
GameRegistry.registerBlock(block_advanced_alloy, block_advanced_alloy.getUnlocalizedName());
@ -2809,13 +2786,6 @@ public class ModBlocks {
//Charger
GameRegistry.registerBlock(charger, charger.getUnlocalizedName());
//Siege blocks
GameRegistry.registerBlock(siege_shield, ItemBlockLore.class, siege_shield.getUnlocalizedName());
GameRegistry.registerBlock(siege_internal, ItemBlockLore.class, siege_internal.getUnlocalizedName());
GameRegistry.registerBlock(siege_circuit, ItemBlockLore.class, siege_circuit.getUnlocalizedName());
GameRegistry.registerBlock(siege_emergency, siege_emergency.getUnlocalizedName());
GameRegistry.registerBlock(siege_hole, siege_hole.getUnlocalizedName());
//Decoration Blocks
GameRegistry.registerBlock(block_meteor, block_meteor.getUnlocalizedName());
GameRegistry.registerBlock(block_meteor_cobble, block_meteor_cobble.getUnlocalizedName());
@ -3338,7 +3308,6 @@ public class ModBlocks {
GameRegistry.registerBlock(machine_waste_drum, machine_waste_drum.getUnlocalizedName());
GameRegistry.registerBlock(machine_storage_drum, machine_storage_drum.getUnlocalizedName());
GameRegistry.registerBlock(machine_shredder, machine_shredder.getUnlocalizedName());
GameRegistry.registerBlock(machine_shredder_large, machine_shredder_large.getUnlocalizedName());
register(machine_well);
register(machine_pumpjack);
register(machine_fracking_tower);

View File

@ -1,36 +0,0 @@
package com.hbm.blocks.machine;
import com.hbm.tileentity.machine.TileEntityMachineShredderLarge;
import net.minecraft.block.BlockContainer;
import net.minecraft.block.material.Material;
import net.minecraft.tileentity.TileEntity;
import net.minecraft.world.World;
public class MachineShredderLarge extends BlockContainer {
public MachineShredderLarge(Material p_i45386_1_) {
super(p_i45386_1_);
}
@Override
public TileEntity createNewTileEntity(World p_149915_1_, int p_149915_2_) {
return new TileEntityMachineShredderLarge();
}
@Override
public int getRenderType(){
return -1;
}
@Override
public boolean isOpaqueCube() {
return false;
}
@Override
public boolean renderAsNormalBlock() {
return false;
}
}

View File

@ -1,71 +0,0 @@
package com.hbm.blocks.siege;
import com.hbm.blocks.BlockBase;
import com.hbm.blocks.ModBlocks;
import cpw.mods.fml.relauncher.Side;
import cpw.mods.fml.relauncher.SideOnly;
import net.minecraft.block.Block;
import net.minecraft.block.material.Material;
import net.minecraft.client.renderer.texture.IIconRegister;
import net.minecraft.util.IIcon;
import net.minecraft.world.IBlockAccess;
import net.minecraft.world.World;
import net.minecraftforge.common.util.ForgeDirection;
public abstract class SiegeBase extends BlockBase {
private IIcon[] icons;
public SiegeBase(Material material, int icons) {
super(material);
this.setTickRandomly(true);
this.icons = new IIcon[icons];
}
@Override
@SideOnly(Side.CLIENT)
public IIcon getIcon(IBlockAccess world, int x, int y, int z, int side) {
int h = x;
h *= 433 + y;
h *= 1709 + z;
h = Math.abs(h);
h = (h >> 6);
return this.getIcon(h % this.icons.length, 0);
}
@Override
@SideOnly(Side.CLIENT)
public IIcon getIcon(int side, int meta) {
return icons[side % this.icons.length];
}
@Override
@SideOnly(Side.CLIENT)
public void registerBlockIcons(IIconRegister reg) {
for(int i = 0; i < icons.length; i++) {
icons[i] = reg.registerIcon(this.getTextureName() + "_" + i);
}
}
protected boolean solidNeighbors(World world, int x, int y, int z) {
for(ForgeDirection dir : ForgeDirection.VALID_DIRECTIONS) {
Block b = world.getBlock(x + dir.offsetX, y + dir.offsetY, z + dir.offsetZ);
if(b.getMaterial() == Material.air || !b.isNormalCube())
return false;
}
return true;
}
protected boolean shouldReplace(Block b) {
return b != ModBlocks.siege_circuit && b != ModBlocks.siege_internal && b != ModBlocks.siege_shield;
}
}

View File

@ -1,23 +0,0 @@
package com.hbm.blocks.siege;
import java.util.Random;
import com.hbm.blocks.ModBlocks;
import net.minecraft.block.material.Material;
import net.minecraft.world.World;
public class SiegeCircuit extends SiegeBase {
public SiegeCircuit(Material material) {
super(material, 2);
}
@Override
public void updateTick(World world, int x, int y, int z, Random rand) {
if(!this.solidNeighbors(world, x, y, z)) {
world.setBlock(x, y, z, ModBlocks.siege_emergency);
}
}
}

View File

@ -1,47 +0,0 @@
package com.hbm.blocks.siege;
import java.util.List;
import java.util.Random;
import com.hbm.blocks.BlockBase;
import com.hbm.entity.mob.siege.EntitySiegeZombie;
import com.hbm.handler.SiegeOrchestrator;
import net.minecraft.block.material.Material;
import net.minecraft.util.AxisAlignedBB;
import net.minecraft.world.World;
public class SiegeHole extends BlockBase {
public SiegeHole(Material material) {
super(material);
}
@Override
public void onBlockAdded(World world, int x, int y, int z) {
super.onBlockAdded(world, x, y, z);
world.scheduleBlockUpdate(x, y, z, this, this.tickRate(world));
}
@Override
public int tickRate(World world) {
return 90 + world.rand.nextInt(20);
}
@Override
public void updateTick(World world, int x, int y, int z, Random rand) {
world.scheduleBlockUpdate(x, y, z, this, this.tickRate(world));
if(SiegeOrchestrator.spawnThresholdEnabled(world) && SiegeOrchestrator.siegeMobCount > SiegeOrchestrator.getSpawnThreshold(world))
return;
List<EntitySiegeZombie> list = world.getEntitiesWithinAABB(EntitySiegeZombie.class, AxisAlignedBB.getBoundingBox(x - 5, y - 2, z - 5, x + 6, y + 3, z + 6));
if(list.size() < 2) {
EntitySiegeZombie zomb = new EntitySiegeZombie(world);
zomb.setPositionAndRotation(x + 0.5, y + 1, z + 0.5, 0.0F, 0.0F);
zomb.onSpawnWithEgg(null);
world.spawnEntityInWorld(zomb);
}
}
}

View File

@ -1,42 +0,0 @@
package com.hbm.blocks.siege;
import java.util.Random;
import com.hbm.blocks.ModBlocks;
import net.minecraft.block.Block;
import net.minecraft.block.material.Material;
import net.minecraft.world.World;
import net.minecraftforge.common.util.ForgeDirection;
public class SiegeInternal extends SiegeBase {
public SiegeInternal(Material material) {
super(material, 2);
}
@Override
public void updateTick(World world, int x, int y, int z, Random rand) {
//if exposed to air, harden
if(!this.solidNeighbors(world, x, y, z)) {
world.setBlock(x, y, z, ModBlocks.siege_emergency);
return;
}
int succ = 0;
for(ForgeDirection dir : ForgeDirection.VALID_DIRECTIONS) {
Block b = world.getBlock(x + dir.offsetX, y + dir.offsetY, z + dir.offsetZ);
//if the bordering block is either an internal or a circuit, increment
if(b == this || b == ModBlocks.siege_circuit) {
succ++;
}
}
//all neighbors are internals or circuits? turn into a circuit
if(succ == 6)
world.setBlock(x, y, z, ModBlocks.siege_circuit);
}
}

View File

@ -1,57 +0,0 @@
package com.hbm.blocks.siege;
import java.util.Random;
import com.hbm.blocks.ModBlocks;
import com.hbm.handler.SiegeOrchestrator;
import net.minecraft.block.Block;
import net.minecraft.block.material.Material;
import net.minecraft.world.World;
import net.minecraftforge.common.util.ForgeDirection;
public class SiegeShield extends SiegeBase {
public SiegeShield(Material material) {
super(material, 4);
}
@Override
public void updateTick(World world, int x, int y, int z, Random rand) {
if(SiegeOrchestrator.siegeMobCount > SiegeOrchestrator.getExpansionThreshold(world) || !SiegeOrchestrator.enableBaseSpawning(world) || !SiegeOrchestrator.siegeEnabled(world))
return;
int succ = 0;
for(ForgeDirection dir : ForgeDirection.VALID_DIRECTIONS) {
Block b = world.getBlock(x + dir.offsetX, y + dir.offsetY, z + dir.offsetZ);
//if the block is already a siege block, do nothing and increment the success counter
if(!this.shouldReplace(b)) {
succ++;
//...if not, check if a new shield can be placed, and try to do so
} else if(this.solidNeighbors(world, x + dir.offsetX, y + dir.offsetY, z + dir.offsetZ)) {
succ++;
world.setBlock(x + dir.offsetX, y + dir.offsetY, z + dir.offsetZ, this);
}
}
//if all the blocks are siege blocks now, replace with an internal
if(succ == 6) {
world.setBlock(x, y, z, ModBlocks.siege_internal);
if(rand.nextInt(10) == 0) {
Block above = world.getBlock(x, y + 2, z);
Block surface = world.getBlock(x, y + 3, z);
//if the block above the upper shield is solid and *above that* is air, place a hole
if(above.getMaterial() != Material.air && above.isNormalCube() && (surface.getMaterial() == Material.air || !surface.isNormalCube())) {
world.setBlock(x, y + 2, z, ModBlocks.siege_hole);
}
}
}
}
}

View File

@ -197,7 +197,6 @@ public class EntityMappings {
addEntity(EntityGhost.class, "entity_ntm_ghost", 1000);
addEntity(EntityGrenadeDynamite.class, "entity_grenade_dynamite", 250);
addEntity(EntitySiegeLaser.class, "entity_ntm_siege_laser", 1000);
addEntity(EntitySiegeDropship.class, "entity_ntm_siege_dropship", 1000);
addEntity(EntityTNTPrimedBase.class, "entity_ntm_tnt_primed", 1000);
addEntity(EntityGrenadeBouncyGeneric.class, "entity_grenade_bouncy_generic", 250);
addEntity(EntityGrenadeImpactGeneric.class, "entity_grenade_impact_generic", 250);

View File

@ -1,129 +0,0 @@
package com.hbm.entity.missile;
import com.hbm.blocks.ModBlocks;
import com.hbm.entity.mob.siege.SiegeTier;
import com.hbm.explosion.ExplosionLarge;
import com.hbm.handler.SiegeOrchestrator;
import com.hbm.packet.AuxParticlePacketNT;
import com.hbm.packet.PacketDispatcher;
import cpw.mods.fml.common.network.NetworkRegistry.TargetPoint;
import net.minecraft.entity.projectile.EntityThrowable;
import net.minecraft.item.ItemStack;
import net.minecraft.nbt.NBTTagCompound;
import net.minecraft.util.DamageSource;
import net.minecraft.util.MovingObjectPosition;
import net.minecraft.util.MovingObjectPosition.MovingObjectType;
import net.minecraft.world.World;
public class EntitySiegeDropship extends EntityThrowable {
public int health = 20;
public EntitySiegeDropship(World world) {
super(world);
this.health *= Math.pow((SiegeOrchestrator.level + 1), 2);
this.setSize(0.5F, 1F);
}
public EntitySiegeDropship(World world, double x, double y, double z) {
super(world, x, y, z);
this.health *= Math.pow((SiegeOrchestrator.level + 1), 2);
this.setSize(0.5F, 1F);
}
@Override
public boolean canBeCollidedWith() {
return true;
}
@Override
public boolean attackEntityFrom(DamageSource source, float amount) {
if(this.isEntityInvulnerable()) {
return false;
} else {
if(!this.isDead && !this.worldObj.isRemote) {
health -= amount;
if(this.health <= 0) {
this.setDead();
SiegeOrchestrator.levelCounter += SiegeOrchestrator.getTierAddDrop(worldObj);
SiegeTier tier = SiegeTier.tiers[SiegeOrchestrator.level];
if(tier == null)
tier = SiegeTier.DNT;
for(ItemStack drop : tier.dropItem) {
this.entityDropItem(drop.copy(), 0F);
}
ExplosionLarge.spawnParticles(worldObj, posX, posY + 1, posZ, 10);
NBTTagCompound data = new NBTTagCompound();
data.setString("type", "plasmablast");
data.setFloat("r", 1F);
data.setFloat("g", 0F);
data.setFloat("b", 0F);
data.setFloat("scale", 20F);
PacketDispatcher.wrapper.sendToAllAround(new AuxParticlePacketNT(data, posX, posY, posZ),
new TargetPoint(worldObj.provider.dimensionId, posX, posY, posZ, 100));
}
}
return true;
}
}
@Override
public void onUpdate() {
this.motionX = 0;
this.motionY = -0.5;
this.motionZ = 0;
if(!worldObj.isRemote && this.ticksExisted % 2 == 0) {
NBTTagCompound data = new NBTTagCompound();
data.setString("type", "plasmablast");
data.setFloat("r", 0.1F);
data.setFloat("g", 0.75F);
data.setFloat("b", 1.0F);
data.setFloat("scale", 3F);
PacketDispatcher.wrapper.sendToAllAround(new AuxParticlePacketNT(data, posX, posY, posZ),
new TargetPoint(worldObj.provider.dimensionId, posX, posY, posZ, 100));
}
super.onUpdate();
}
@Override
protected void onImpact(MovingObjectPosition mop) {
if(mop.typeOfHit == MovingObjectType.BLOCK) {
this.setDead();
if(SiegeOrchestrator.enableBaseSpawning(worldObj)) {
worldObj.setBlock(mop.blockX, mop.blockY, mop.blockZ, ModBlocks.siege_shield);
} else if(SiegeOrchestrator.enableMobSpawning(worldObj)) {
SiegeOrchestrator.spawnRandomMob(worldObj, mop.blockX + 0.5, mop.blockY + 1, mop.blockZ + 0.5, null);
}
ExplosionLarge.spawnParticles(worldObj, posX, posY + 1, posZ, 10);
}
}
@Override
public void writeEntityToNBT(NBTTagCompound nbt) {
super.writeEntityToNBT(nbt);
nbt.setInteger("health", this.health);
}
@Override
public void readEntityFromNBT(NBTTagCompound nbt) {
super.readEntityFromNBT(nbt);
this.health = nbt.getInteger("health");
}
}

View File

@ -4,7 +4,6 @@ import java.util.List;
import com.hbm.entity.mob.EntityUFOBase;
import com.hbm.entity.projectile.EntitySiegeLaser;
import com.hbm.handler.SiegeOrchestrator;
import com.hbm.lib.ModDamageSource;
import com.hbm.packet.AuxParticlePacketNT;
import com.hbm.packet.PacketDispatcher;
@ -45,9 +44,6 @@ public class EntitySiegeCraft extends EntityUFOBase implements IBossDisplayData
if(this.isEntityInvulnerable())
return false;
if(SiegeOrchestrator.isSiegeMob(source.getEntity()))
return false;
SiegeTier tier = this.getTier();
if(tier.fireProof && source.isFireDamage()) {

View File

@ -1,7 +1,6 @@
package com.hbm.entity.mob.siege;
import com.hbm.entity.projectile.EntitySiegeLaser;
import com.hbm.handler.SiegeOrchestrator;
import com.hbm.items.ModItems;
import api.hbm.entity.IRadiationImmune;
@ -45,9 +44,6 @@ public class EntitySiegeSkeleton extends EntityMob implements IRangedAttackMob,
if(this.isEntityInvulnerable())
return false;
if(SiegeOrchestrator.isSiegeMob(source.getEntity()))
return false;
SiegeTier tier = this.getTier();
if(tier.fireProof && source.isFireDamage()) {

View File

@ -1,7 +1,6 @@
package com.hbm.entity.mob.siege;
import com.hbm.entity.mob.EntityBurrowingSwingingBase;
import com.hbm.handler.SiegeOrchestrator;
import net.minecraft.entity.IEntityLivingData;
import net.minecraft.entity.SharedMonsterAttributes;
@ -37,9 +36,6 @@ public class EntitySiegeTunneler extends EntityBurrowingSwingingBase {
if(this.isEntityInvulnerable())
return false;
if(SiegeOrchestrator.isSiegeMob(source.getEntity()))
return false;
SiegeTier tier = this.getTier();
if(tier.fireProof && source.isFireDamage()) {

View File

@ -2,7 +2,6 @@ package com.hbm.entity.mob.siege;
import com.hbm.entity.mob.EntityUFOBase;
import com.hbm.entity.projectile.EntitySiegeLaser;
import com.hbm.handler.SiegeOrchestrator;
import api.hbm.entity.IRadiationImmune;
import net.minecraft.entity.IEntityLivingData;
import net.minecraft.entity.SharedMonsterAttributes;
@ -48,9 +47,6 @@ public class EntitySiegeUFO extends EntityUFOBase implements IRadiationImmune {
if(this.isEntityInvulnerable())
return false;
if(SiegeOrchestrator.isSiegeMob(source.getEntity()))
return false;
SiegeTier tier = this.getTier();
if(tier.fireProof && source.isFireDamage()) {

View File

@ -1,6 +1,5 @@
package com.hbm.entity.mob.siege;
import com.hbm.handler.SiegeOrchestrator;
import api.hbm.entity.IRadiationImmune;
import net.minecraft.entity.IEntityLivingData;
import net.minecraft.entity.SharedMonsterAttributes;
@ -43,9 +42,6 @@ public class EntitySiegeZombie extends EntityMob implements IRadiationImmune {
if(this.isEntityInvulnerable())
return false;
if(SiegeOrchestrator.isSiegeMob(source.getEntity()))
return false;
SiegeTier tier = this.getTier();
if(tier.fireProof && source.isFireDamage()) {

View File

@ -7,10 +7,7 @@ import java.util.function.Consumer;
import com.hbm.items.ModItems;
import net.minecraft.entity.EntityLivingBase;
import net.minecraft.entity.player.EntityPlayer;
import net.minecraft.item.Item;
import net.minecraft.item.ItemStack;
import net.minecraft.potion.PotionEffect;
public class SiegeTier {
@ -113,49 +110,12 @@ public class SiegeTier {
return this;
}
private SiegeTier addDrop(Item drop) {
return addDrop(new ItemStack(drop));
}
private SiegeTier addDrop(ItemStack drop) {
this.dropItem.add(drop);
return this;
}
private SiegeTier setAura(int range, PotionEffect... effects) {
this.daisyChain(x -> SiegeTier.doAura(x, range, effects)); //HOLY SHIT THAT ACTUALLY WORKS!!
return this;
}
private SiegeTier daisyChain(Consumer<EntityLivingBase> link) {
if(this.delegate == null)
this.delegate = link;
else
this.delegate.andThen(link); //HOLY FUCK!
return this;
}
public void runDelegate(EntityLivingBase entity) {
if(this.delegate != null) this.delegate.accept(entity);
}
/*
* DELEGATIONS
*/
private static void doAura(EntityLivingBase entity, int range, PotionEffect... effects) {
List<EntityPlayer> players = entity.worldObj.getEntitiesWithinAABB(EntityPlayer.class, entity.boundingBox.expand(range, range, range));
for(EntityPlayer player : players) {
if(player.getDistanceSqToEntity(entity) < range * range) {
for(PotionEffect e : effects) {
player.addPotionEffect(new PotionEffect(e));
}
}
}
}
}

View File

@ -1,293 +0,0 @@
package com.hbm.handler;
import com.hbm.entity.missile.EntitySiegeDropship;
import com.hbm.entity.mob.siege.EntitySiegeCraft;
import com.hbm.entity.mob.siege.EntitySiegeSkeleton;
import com.hbm.entity.mob.siege.EntitySiegeTunneler;
import com.hbm.entity.mob.siege.EntitySiegeUFO;
import com.hbm.entity.mob.siege.EntitySiegeZombie;
import com.hbm.entity.mob.siege.SiegeTier;
import com.hbm.util.ChatBuilder;
import com.hbm.util.GameRuleHelper;
import net.minecraft.entity.Entity;
import net.minecraft.entity.EntityLiving;
import net.minecraft.entity.EntityLivingBase;
import net.minecraft.entity.player.EntityPlayer;
import net.minecraft.server.MinecraftServer;
import net.minecraft.util.DamageSource;
import net.minecraft.util.EnumChatFormatting;
import net.minecraft.util.Vec3;
import net.minecraft.world.GameRules;
import net.minecraft.world.World;
public class SiegeOrchestrator {
public static boolean lastWave = false;
public static int level = 0;
public static int levelCounter = 0;
public static int siegeMobCount = 0;
public static void update(World world) {
//abort loop if sieges are disabled
if(world.isRemote || !siegeEnabled(world))
return;
int waveTime = getWaveDuration(world);
int pauseTime = getPauseDuration(world);
int interval = waveTime + pauseTime;
//whether we're in a wave or pause, pauses apply first in an interval
boolean wave = (int)(world.getTotalWorldTime() % interval) >= pauseTime;
//send a server-wide message when the wave starts and ends
if(!lastWave && wave) {
MinecraftServer.getServer().getConfigurationManager().sendChatMsg(ChatBuilder.start("[SIEGE MODE] A new wave is starting!").color(EnumChatFormatting.RED).flush());
} else if(lastWave && !wave) {
MinecraftServer.getServer().getConfigurationManager().sendChatMsg(ChatBuilder.start("[SIEGE MODE] The wave has ended!").color(EnumChatFormatting.RED).flush());
}
lastWave = wave;
//if we're on pause, do nothing
if(!wave)
return;
int spawnDelay = getSpawnDelay(world);
boolean threshold = spawnThresholdEnabled(world);
int thresholdSize = getSpawnThreshold(world);
//if threshold is enabled, don't go into the spawn loop if the entity count exceeds the threshold
if(!(threshold && siegeMobCount > thresholdSize)) {
for(Object o : world.playerEntities) {
EntityPlayer player = (EntityPlayer) o;
if((world.getTotalWorldTime() + player.getEntityId()) % spawnDelay == 0) {
perPlayerSpawn(player);
}
}
}
int countCap = getTierDelay(world);
int prevLevel = level;
levelCounter++;
//if the counter has reached the cap, tick up the tier and reset the counter
while(levelCounter >= countCap) {
levelCounter -= countCap;
level++;
}
//if the counter is below 0, bring up the counter and deduct a tier
while(levelCounter < 0) {
levelCounter += countCap;
level--;
}
//if the tier has changed, send a broadcast
if(prevLevel != level) {
MinecraftServer.getServer().getConfigurationManager().sendChatMsg(ChatBuilder.start("[SIEGE MODE] The siege tier is now " + (level + 1) + "!").color(EnumChatFormatting.RED).flush());
}
//every 10s we recount the loaded siege mobs
if(world.getTotalWorldTime() % 200 == 0) {
refreshMobCount(world);
}
}
public static void perPlayerSpawn(EntityPlayer player) {
Vec3 vec = Vec3.createVectorHelper(getSpawnDist(player.worldObj), 0, 0);
vec.rotateAroundY((float)(player.getRNG().nextFloat() * Math.PI));
double x = player.posX + vec.xCoord;
double z = player.posZ + vec.zCoord;
if(enableMissileSpawn(player.worldObj)) {
EntitySiegeDropship ship = new EntitySiegeDropship(player.worldObj, x, 300, z);
player.worldObj.spawnEntityInWorld(ship);
}
}
public static void playerDeathHook(EntityPlayer player, DamageSource source) {
if(!player.worldObj.isRemote) {
if(isSiegeMob(source.getEntity())) {
levelCounter -= getTierSubDeath(player.worldObj);
}
}
}
public static void mobDeathHook(EntityLivingBase entity, DamageSource source) {
if(!entity.worldObj.isRemote) {
if(isSiegeMob(entity)) {
levelCounter += getTierAddKill(entity.worldObj);
}
}
}
public static void spawnRandomMob(World world, double x, double y, double z, EntityPlayer target) {
if(world.isRemote)
return;
SiegeTier tier = SiegeTier.tiers[level];
if(tier == null)
tier = SiegeTier.DNT;
EntityLiving entity;
float f = world.rand.nextFloat();
if(target != null && f < 0.25F && target.posY + 15 < y) {
entity = new EntitySiegeTunneler(world);
((EntitySiegeTunneler)entity).setTier(tier);
} else if(f < 0.1F) {
entity = new EntitySiegeUFO(world);
((EntitySiegeUFO)entity).setTier(tier);
} else if(f < 0.4F) {
entity = new EntitySiegeSkeleton(world);
((EntitySiegeSkeleton)entity).setTier(tier);
} else {
entity = new EntitySiegeZombie(world);
((EntitySiegeZombie)entity).setTier(tier);
}
entity.setPositionAndRotation(x, y, z, (float)Math.PI * 2F, 0F);
if(target != null) {
entity.setAttackTarget(target);
}
world.spawnEntityInWorld(entity);
}
private static void refreshMobCount(World world) {
siegeMobCount = 0;
for(Object o : world.loadedEntityList) {
Entity entity = (Entity) o;
if(isSiegeMob(entity)) {
siegeMobCount++;
}
}
}
public static boolean isSiegeMob(Entity entity) {
if(entity instanceof EntitySiegeZombie) return true;
if(entity instanceof EntitySiegeSkeleton) return true;
if(entity instanceof EntitySiegeUFO) return true;
if(entity instanceof EntitySiegeTunneler) return true;
if(entity instanceof EntitySiegeCraft) return true;
return false;
}
public static final String KEY_SAVE_RULES = "siegeSaveRules";
public static final String KEY_ENABLE_SIEGES = "siegeEnable";
public static final String KEY_WAVE_DURATION = "siegeWaveDuration";
public static final String KEY_PAUSE_DURATION = "siegePauseDuration";
public static final String KEY_ENABLE_DROPS = "siegeEnableDropships";
public static final String KEY_ENABLE_SPAWNS = "siegeEnableMobSpawning";
public static final String KEY_ENABLE_BASES = "siegeEnableBases";
public static final String KEY_ENABLE_MISSILES = "siegeEnableMissiles";
public static final String KEY_SPAWN_DIST = "siegeSpawnDist";
public static final String KEY_SPAWN_DELAY = "siegeSpawnDelay";
public static final String KEY_TIER_DELAY = "siegeTierDuration";
public static final String KEY_TIER_ADD_KILL = "siegeTierAddKill";
public static final String KEY_TIER_ADD_DROP = "siegeTierAddDrop";
public static final String KEY_TIER_SUB_DEATH = "siegeTierSubDeath";
public static final String KEY_SPAWN_THRESHOLD = "siegeEnableSpawnThreshold";
public static final String KEY_SPAWN_THRESHOLD_COUNT = "siegeSpawnThreshold";
public static final String KEY_EXPANSION_THRESHOLD_COUNT = "siegeExpansionThreshold";
public static void createGameRules(World world) {
GameRules rules = world.getGameRules();
if(!rules.getGameRuleBooleanValue(KEY_SAVE_RULES)) {
rules.setOrCreateGameRule(KEY_SAVE_RULES, "true");
rules.setOrCreateGameRule(KEY_ENABLE_SIEGES, "false");
rules.setOrCreateGameRule(KEY_WAVE_DURATION, "" + (20 * 60 * 20));
rules.setOrCreateGameRule(KEY_PAUSE_DURATION, "" + (10 * 60 * 20));
rules.setOrCreateGameRule(KEY_ENABLE_DROPS, "true");
rules.setOrCreateGameRule(KEY_ENABLE_SPAWNS, "false");
rules.setOrCreateGameRule(KEY_ENABLE_BASES, "true");
rules.setOrCreateGameRule(KEY_ENABLE_MISSILES, "true");
rules.setOrCreateGameRule(KEY_SPAWN_DIST, "64");
rules.setOrCreateGameRule(KEY_SPAWN_DELAY, "" + (10 * 20));
rules.setOrCreateGameRule(KEY_TIER_DELAY, "" + (15 * 60 * 20));
rules.setOrCreateGameRule(KEY_TIER_ADD_KILL, "" + (1 * 20));
rules.setOrCreateGameRule(KEY_TIER_SUB_DEATH, "" + (15 * 20));
rules.setOrCreateGameRule(KEY_SPAWN_THRESHOLD, "true");
rules.setOrCreateGameRule(KEY_SPAWN_THRESHOLD_COUNT, "50");
rules.setOrCreateGameRule(KEY_EXPANSION_THRESHOLD_COUNT, "20");
}
}
public static boolean siegeEnabled(World world) {
return world.getGameRules().getGameRuleBooleanValue(KEY_ENABLE_SIEGES);
}
public static int getWaveDuration(World world) {
return GameRuleHelper.getIntegerMinimum(world, KEY_WAVE_DURATION, 20 * 60 * 10, 1);
}
public static int getPauseDuration(World world) {
return GameRuleHelper.getIntegerMinimum(world, KEY_PAUSE_DURATION, 10 * 60 * 10, 0);
}
public static double getSpawnDist(World world) {
return GameRuleHelper.getDoubleMinimum(world, KEY_SPAWN_DIST, 64, 0);
}
public static int getSpawnDelay(World world) {
return GameRuleHelper.getIntegerMinimum(world, KEY_SPAWN_DELAY, 10 * 20, 1);
}
public static int getTierDelay(World world) {
return GameRuleHelper.getIntegerMinimum(world, KEY_TIER_DELAY, 15 * 60 * 20, 1);
}
public static int getTierAddKill(World world) {
return GameRuleHelper.getIntegerMinimum(world, KEY_TIER_ADD_KILL, 1 * 20, 0);
}
public static int getTierAddDrop(World world) {
return GameRuleHelper.getIntegerMinimum(world, KEY_TIER_ADD_DROP, 5 * 20, 0);
}
public static int getTierSubDeath(World world) {
return GameRuleHelper.getIntegerMinimum(world, KEY_TIER_SUB_DEATH, 15 * 20, 0);
}
public static boolean spawnThresholdEnabled(World world) {
return world.getGameRules().getGameRuleBooleanValue(KEY_SPAWN_THRESHOLD);
}
public static int getSpawnThreshold(World world) {
return GameRuleHelper.getIntegerMinimum(world, KEY_SPAWN_THRESHOLD_COUNT, 50, 1);
}
public static int getExpansionThreshold(World world) {
return GameRuleHelper.getIntegerMinimum(world, KEY_EXPANSION_THRESHOLD_COUNT, 20, 1);
}
public static boolean enableBaseSpawning(World world) {
return world.getGameRules().getGameRuleBooleanValue(KEY_ENABLE_BASES);
}
public static boolean enableMobSpawning(World world) {
return world.getGameRules().getGameRuleBooleanValue(KEY_ENABLE_SPAWNS);
}
public static boolean enableMissileSpawn(World world) {
return world.getGameRules().getGameRuleBooleanValue(KEY_ENABLE_MISSILES);
}
}

View File

@ -97,7 +97,6 @@ public class ChunkRadiationHandler3D extends ChunkRadiationHandler {
if(buff.containsKey(newCoord)) {
int newY = MathHelper.clamp_int(y + j, 0, 15);
Float[] vals = radiation.get(newCoord);
float rad = vals[newY];
float newRad = vals[newY] + chunk.getValue()[newY] * percent;
vals[newY] = Math.max(0F, newRad * 0.999F - 0.05F);
}

View File

@ -43,37 +43,31 @@ private TileEntityITER iter;
}
@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 <= 2) {
if (!this.mergeItemStack(var5, 2, this.inventorySlots.size(), true))
{
if(par2 <= 4) {
if(!this.mergeItemStack(var5, 5, this.inventorySlots.size(), true)) {
return null;
}
} else {
return null;
}
if (var5.stackSize == 0)
{
if(var5.stackSize == 0) {
var4.putStack((ItemStack) null);
}
else
{
} else {
var4.onSlotChanged();
}
}
return var3;
}
}
@Override
public boolean canInteractWith(EntityPlayer player) {

View File

@ -1,7 +1,6 @@
package com.hbm.inventory.container;
import com.hbm.inventory.SlotTakeOnly;
import com.hbm.items.ModItems;
import com.hbm.items.machine.IItemFluidIdentifier;
import com.hbm.items.machine.ItemMachineUpgrade;
import com.hbm.tileentity.machine.TileEntityMachineTurbofan;

View File

@ -56,9 +56,6 @@ public class GUIMachineGasCent extends GuiInfoContainer {
@Override
protected void drawGuiContainerForegroundLayer(int i, int j) {
String name = this.gasCent.hasCustomInventoryName() ? this.gasCent.getInventoryName() : I18n.format(this.gasCent.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);
}

View File

@ -202,8 +202,6 @@ public class GUIMachineTurbineGas extends GuiInfoContainer {
public void displayStartup() {
boolean displayOn = true;
if(numberToDisplay < 888888 && turbinegas.counter < 60) { //48 frames needed to complete
digitNumber++;

View File

@ -168,10 +168,6 @@ public class ItemTurretControl extends Item {
j = event.charge;
if(stack.hasTagCompound()) {
int x = stack.getTagCompound().getInteger("xCoord");
int y = stack.getTagCompound().getInteger("yCoord");
int z = stack.getTagCompound().getInteger("zCoord");
/// ///
}
}
@ -204,8 +200,6 @@ public class ItemTurretControl extends Item {
if(world.getBlock(x, y, z) instanceof TurretBase) {
TileEntity te = world.getTileEntity(x, y, z);
/// ///
}

View File

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

View File

@ -249,7 +249,6 @@ public class ClientProxy extends ServerProxy {
ClientRegistry.bindTileEntitySpecialRenderer(TileEntityMachineRadarScreen.class, new RenderRadarScreen());
ClientRegistry.bindTileEntitySpecialRenderer(TileEntityMachineSeleniumEngine.class, new RenderSelenium());
ClientRegistry.bindTileEntitySpecialRenderer(TileEntityReactorResearch.class, new RenderSmallReactor());
ClientRegistry.bindTileEntitySpecialRenderer(TileEntityMachineShredderLarge.class, new RenderMachineShredder());
ClientRegistry.bindTileEntitySpecialRenderer(TileEntityTesla.class, new RenderTesla());
ClientRegistry.bindTileEntitySpecialRenderer(TileEntityBarrel.class, new RenderFluidBarrel());
ClientRegistry.bindTileEntitySpecialRenderer(TileEntityMachineCrystallizer.class, new RenderCrystallizer());
@ -631,7 +630,6 @@ public class ClientProxy extends ServerProxy {
RenderingRegistry.registerEntityRenderingHandler(EntityFallingNuke.class, new RenderFallingNuke());
RenderingRegistry.registerEntityRenderingHandler(EntityMinerRocket.class, new RenderMinerRocket());
RenderingRegistry.registerEntityRenderingHandler(EntityBobmazon.class, new RenderMinerRocket());
RenderingRegistry.registerEntityRenderingHandler(EntitySiegeDropship.class, new RenderMinerRocket());
RenderingRegistry.registerEntityRenderingHandler(EntityTom.class, new RenderTom());
RenderingRegistry.registerEntityRenderingHandler(EntityAAShell.class, new RenderMirv());
RenderingRegistry.registerEntityRenderingHandler(EntityRocketHoming.class, new RenderSRocket());

View File

@ -420,7 +420,6 @@ public class CraftingManager {
addRecipeAuto(new ItemStack(ModBlocks.tile_lab_broken, 6), new Object[] { " C " , "C C", " C ", 'C', ModBlocks.tile_lab_cracked });
addShapelessAuto(new ItemStack(ModBlocks.asphalt_light, 1), new Object[] { ModBlocks.asphalt, Items.glowstone_dust });
addShapelessAuto(new ItemStack(ModBlocks.asphalt, 1), new Object[] { ModBlocks.asphalt_light });
addRecipeAuto(new ItemStack(ModBlocks.block_niter_reinforced, 1), new Object[] { "TCT", "CNC", "TCT", 'T', ANY_RESISTANTALLOY.ingot(), 'C', ModBlocks.concrete, 'N', KNO.block() });
String[] dyes = { "Black", "Red", "Green", "Brown", "Blue", "Purple", "Cyan", "LightGray", "Gray", "Pink", "Lime", "Yellow", "LightBlue", "Magenta", "Orange", "White" };

View File

@ -932,7 +932,6 @@ public class MainRegistry {
public void serverStart(FMLServerStartingEvent event) {
World world = event.getServer().getEntityWorld();
RBMKDials.createDials(world);
SiegeOrchestrator.createGameRules(world);
event.registerServerCommand(new CommandReloadRecipes());
event.registerServerCommand(new CommandDebugChunkLoad());
event.registerServerCommand(new CommandSatellites());
@ -1248,6 +1247,13 @@ public class MainRegistry {
ignoreMappings.add("hbm:tile.test_pipe");
ignoreMappings.add("hbm:tile.test_ct");
ignoreMappings.add("hbm:tile.test_rail");
ignoreMappings.add("hbm:tile.block_niter_reinforced");
ignoreMappings.add("hbm:tile.siege_shield");
ignoreMappings.add("hbm:tile.siege_internal");
ignoreMappings.add("hbm:tile.siege_circuit");
ignoreMappings.add("hbm:tile.siege_emergency");
ignoreMappings.add("hbm:tile.siege_hole");
ignoreMappings.add("hbm:tile.machine_shredder_large");
/// REMAP ///
remapItems.put("hbm:item.gadget_explosive8", ModItems.early_explosive_lenses);

View File

@ -44,7 +44,6 @@ import com.hbm.handler.HTTPHandler;
import com.hbm.handler.HbmKeybinds.EnumKeybind;
import com.hbm.handler.pollution.PollutionHandler;
import com.hbm.handler.pollution.PollutionHandler.PollutionType;
import com.hbm.handler.SiegeOrchestrator;
import com.hbm.items.IEquipReceiver;
import com.hbm.items.ModItems;
import com.hbm.items.armor.ArmorFSB;
@ -389,11 +388,6 @@ public class ModEventHandler {
}
}
}
SiegeOrchestrator.playerDeathHook(player, event.source);
} else {
SiegeOrchestrator.mobDeathHook(entity, event.source);
}
}
@ -716,7 +710,6 @@ public class ModEventHandler {
if(event.phase == Phase.START) {
BossSpawnHandler.rollTheDice(event.world);
TimedGenerator.automaton(event.world, 100);
SiegeOrchestrator.update(event.world);
}
}

View File

@ -3,7 +3,6 @@ package com.hbm.render.entity.rocket;
import org.lwjgl.opengl.GL11;
import com.hbm.entity.missile.EntityMinerRocket;
import com.hbm.entity.missile.EntitySiegeDropship;
import com.hbm.main.ResourceManager;
import net.minecraft.client.renderer.entity.Render;
@ -22,12 +21,7 @@ public class RenderMinerRocket extends Render {
if(entity instanceof EntityMinerRocket) {
bindTexture(ResourceManager.minerRocket_tex);
} else {
if(entity instanceof EntitySiegeDropship) {
bindTexture(ResourceManager.siege_dropship_tex);
} else {
bindTexture(ResourceManager.bobmazon_tex);
}
bindTexture(ResourceManager.bobmazon_tex);
GL11.glRotatef(180, 1, 0, 0);
}

View File

@ -1,43 +0,0 @@
package com.hbm.render.tileentity;
import org.lwjgl.opengl.GL11;
import com.hbm.main.ResourceManager;
import net.minecraft.client.renderer.tileentity.TileEntitySpecialRenderer;
import net.minecraft.tileentity.TileEntity;
public class RenderMachineShredder extends TileEntitySpecialRenderer {
@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.glEnable(GL11.GL_CULL_FACE);
GL11.glShadeModel(GL11.GL_SMOOTH);
GL11.glRotatef(180, 0F, 1F, 0F);
bindTexture(ResourceManager.shredder_tex);
ResourceManager.shredder.renderPart("Base");
double side = 0.3D;
double height = 2.75D;
float rot = (System.currentTimeMillis() / 5) % 360;
GL11.glPushMatrix();
GL11.glTranslated(side, height, 0);
GL11.glRotatef(rot, 0F, 0F, 1F);
ResourceManager.shredder.renderPart("Blades1");
GL11.glPopMatrix();
GL11.glPushMatrix();
GL11.glTranslated(-side, height, 0);
GL11.glRotatef(rot, 0F, 0F, -1F);
ResourceManager.shredder.renderPart("Blades2");
GL11.glPopMatrix();
GL11.glShadeModel(GL11.GL_FLAT);
GL11.glPopMatrix();
}
}

View File

@ -105,6 +105,7 @@ public class RenderSnowglobe extends TileEntitySpecialRenderer implements IItemR
GL11.glScaled(3, 3, 3);
SnowglobeType type = EnumUtil.grabEnumSafely(SnowglobeType.class, item.getItemDamage());
renderSnowglobe(type);
GL11.glEnable(GL12.GL_RESCALE_NORMAL);
}};
}
}

View File

@ -230,11 +230,10 @@ public class RenderScreenOverlay {
int bar = barID;
if(stamina % 30 >= 25)
bar++;
int yPos = y;
if(bar / 3 != y)
y++;
bar = bar % 3;
gui.drawTexturedModalRect(posX + (width+2)*bar, posY - 12*y, 76, 58, width, 10);
gui.drawTexturedModalRect(posX + (width + 2) * bar, posY - 12 * y, 76, 58, width, 10);
fadeOut -= 0.04F;
GL11.glColor4f(1F, 1F, 1F, 1F);
}

View File

@ -133,7 +133,6 @@ public class TileMappings {
put(TileEntityGeiger.class, "tileentity_geiger");
put(TileEntityFF.class, "tileentity_forcefield");
put(TileEntityForceField.class, "tileentity_machine_field");
put(TileEntityMachineShredderLarge.class, "tileentity_machine_big_shredder");
put(TileEntityReactorControl.class, "tileentity_reactor_remote_control");
put(TileEntityWasteDrum.class, "tileentity_waste_drum");
put(TileEntityDecon.class, "tileentity_decon");

View File

@ -20,7 +20,7 @@ public class TileEntityCyberCrab extends TileEntity {
if (!this.worldObj.isRemote) {
age++;
if(age > 200 && worldObj.getBlock(xCoord, yCoord + 1, zCoord) == Blocks.air) {
if(age > 200 && worldObj.getBlock(xCoord, yCoord + 1, zCoord) == Blocks.air && worldObj.getClosestPlayer(xCoord + 0.5, yCoord + 1, zCoord + 0.5, 25) != null) {
List<Entity> entities = this.worldObj.getEntitiesWithinAABB(EntityCyberCrab.class,
AxisAlignedBB.getBoundingBox(this.xCoord - 5, this.yCoord - 2, this.zCoord - 5, this.xCoord + 6,
this.yCoord + 4, this.zCoord + 6));

View File

@ -1,220 +0,0 @@
package com.hbm.tileentity.machine;
import java.util.Random;
import com.hbm.packet.AuxElectricityPacket;
import com.hbm.packet.PacketDispatcher;
import api.hbm.energy.IBatteryItem;
import cpw.mods.fml.common.network.NetworkRegistry.TargetPoint;
import cpw.mods.fml.relauncher.Side;
import cpw.mods.fml.relauncher.SideOnly;
import net.minecraft.entity.player.EntityPlayer;
import net.minecraft.inventory.ISidedInventory;
import net.minecraft.item.ItemStack;
import net.minecraft.nbt.NBTTagCompound;
import net.minecraft.nbt.NBTTagList;
import net.minecraft.tileentity.TileEntity;
import net.minecraft.util.AxisAlignedBB;
public class TileEntityMachineShredderLarge extends TileEntity implements ISidedInventory {
private ItemStack slots[];
public long power;
public static final long maxPower = 100000;
public int progress;
public int maxProgress = 100;
Random rand = new Random();
private String customName;
public TileEntityMachineShredderLarge() {
slots = new ItemStack[31];
}
@Override
public int getSizeInventory() {
return slots.length;
}
@Override
public ItemStack getStackInSlot(int i) {
return slots[i];
}
@Override
public ItemStack getStackInSlotOnClosing(int i) {
if(slots[i] != null)
{
ItemStack itemStack = slots[i];
slots[i] = null;
return itemStack;
} else {
return null;
}
}
@Override
public void setInventorySlotContents(int i, ItemStack itemStack) {
slots[i] = itemStack;
if(itemStack != null && itemStack.stackSize > getInventoryStackLimit())
{
itemStack.stackSize = getInventoryStackLimit();
}
}
@Override
public String getInventoryName() {
return this.hasCustomInventoryName() ? this.customName : "container.assembler";
}
@Override
public boolean hasCustomInventoryName() {
return this.customName != null && this.customName.length() > 0;
}
public void setCustomName(String name) {
this.customName = name;
}
@Override
public int getInventoryStackLimit() {
return 64;
}
@Override
public boolean isUseableByPlayer(EntityPlayer player) {
if(worldObj.getTileEntity(xCoord, yCoord, zCoord) != this)
{
return false;
}else{
return player.getDistanceSq(xCoord + 0.5D, yCoord + 0.5D, zCoord + 0.5D) <=128;
}
}
//You scrubs aren't needed for anything (right now)
@Override
public void openInventory() {}
@Override
public void closeInventory() {}
@Override
public boolean isItemValidForSlot(int i, ItemStack itemStack) {
if(i == 0)
if(itemStack.getItem() instanceof IBatteryItem)
return true;
if(i == 1)
return true;
return false;
}
@Override
public ItemStack decrStackSize(int i, int j) {
if(slots[i] != null)
{
if(slots[i].stackSize <= j)
{
ItemStack itemStack = slots[i];
slots[i] = null;
return itemStack;
}
ItemStack itemStack1 = slots[i].splitStack(j);
if (slots[i].stackSize == 0)
{
slots[i] = null;
}
return itemStack1;
} else {
return null;
}
}
@Override
public void readFromNBT(NBTTagCompound nbt) {
super.readFromNBT(nbt);
NBTTagList list = nbt.getTagList("items", 10);
this.power = nbt.getLong("powerTime");
slots = new ItemStack[getSizeInventory()];
for(int i = 0; i < list.tagCount(); i++)
{
NBTTagCompound nbt1 = list.getCompoundTagAt(i);
byte b0 = nbt1.getByte("slot");
if(b0 >= 0 && b0 < slots.length)
{
slots[b0] = ItemStack.loadItemStackFromNBT(nbt1);
}
}
}
@Override
public void writeToNBT(NBTTagCompound nbt) {
super.writeToNBT(nbt);
nbt.setLong("powerTime", power);
NBTTagList list = new NBTTagList();
for(int i = 0; i < slots.length; i++)
{
if(slots[i] != null)
{
NBTTagCompound nbt1 = new NBTTagCompound();
nbt1.setByte("slot", (byte)i);
slots[i].writeToNBT(nbt1);
list.appendTag(nbt1);
}
}
nbt.setTag("items", list);
}
@Override
public int[] getAccessibleSlotsFromSide(int p_94128_1_)
{
return new int[] { 0 };
}
@Override
public boolean canInsertItem(int i, ItemStack itemStack, int j) {
return this.isItemValidForSlot(i, itemStack);
}
@Override
public boolean canExtractItem(int i, ItemStack itemStack, int j) {
return false;
}
public long getPowerScaled(long i) {
return (power * i) / maxPower;
}
public int getProgressScaled(int i) {
return (progress * i) / maxProgress;
}
@Override
public void updateEntity() {
if(!worldObj.isRemote) {
PacketDispatcher.wrapper.sendToAllAround(new AuxElectricityPacket(xCoord, yCoord, zCoord, power), new TargetPoint(worldObj.provider.dimensionId, xCoord, yCoord, zCoord, 150));
}
}
@Override
public AxisAlignedBB getRenderBoundingBox() {
return TileEntity.INFINITE_EXTENT_AABB;
}
@Override
@SideOnly(Side.CLIENT)
public double getMaxRenderDistanceSquared()
{
return 65536.0D;
}
}

View File

@ -9,7 +9,6 @@ import com.hbm.blocks.BlockDummyable;
import com.hbm.entity.logic.EntityBomber;
import com.hbm.entity.missile.EntityMissileBaseNT;
import com.hbm.entity.missile.EntityMissileCustom;
import com.hbm.entity.missile.EntitySiegeDropship;
import com.hbm.entity.projectile.EntityBulletBaseNT;
import com.hbm.entity.train.EntityRailCarBase;
import com.hbm.handler.BulletConfigSyncingUtil;
@ -650,7 +649,6 @@ public abstract class TileEntityTurretBaseNT extends TileEntityMachineBase imple
if(e instanceof EntityMinecart) return true;
if(e instanceof EntityRailCarBase) return true;
if(e instanceof EntityBomber) return true;
if(e instanceof EntitySiegeDropship) return true;
for(Class c : CompatExternal.turretTargetMachine) if(c.isAssignableFrom(e.getClass())) return true;
}

View File

@ -94,8 +94,6 @@ achievement.RBMK.desc=他有妄想症,带他去医务室。
achievement.RBMK=3.6伦琴?
achievement.redBalloons.desc=“这就是我们一直在等待的。就是这样,孩子们,这就是战争。”
achievement.redBalloons=99个红气球
achievement.redRoom.desc=?
achievement.redRoom=The Other Side
achievement.sacrifice.desc=直面火海并存活
achievement.sacrifice=牺牲
achievement.schrab.desc=不管怎样,我不会看太久。
@ -383,16 +381,12 @@ book_lore.bf_bomb_2.page.2=Even worse, this thing is an energy source. The exist
book_lore.bf_bomb_2.page.3=The empirical data isn't better, as we're breaking the first law of thermodynamics with how much energy it radiates. Being anywhere near that thing - even behind a meter of lead - was terrifying. We sprinted out of the chamber upon conclusion of the spectroscopy
book_lore.bf_bomb_2.page.4=and we got nothing new out of it. Those idiots in the science team, god, did not even waver after all that. Sitting through those "discussions" was horrible; that quack of a head researcher even rumored that the test ban would be lifted, that we could be
book_lore.bf_bomb_2.page.5=building bombs out of the shit in the coming weeks, who in their right mind would work on that? Hell, the one sane assistant (an Andrew) nicknamed it "balefire" - because burning to death on a funeral pyre would be painless by comparison.
book_lore.bf_bomb_3.name=私人笔记
book_lore.bf_bomb_3.author=M. 波特
book_lore.bf_bomb_3.page.0=The team and I have made some breakthroughs. Emphasis on the separation - isolating myself from the more devout has made working there so much more bearable. While we still have no idea about the actual properties of balefire (it's difficult to analyze
book_lore.bf_bomb_3.page.1=a sample that fries your equipment) its interactions with other matter has proved fruitful. Notably, they synthesized a "gaseous" form: Andrew, of all people, informed me that it was really a colloid consisting of microscopic balefire particles, suspended in some
book_lore.bf_bomb_3.page.2=noble gas. Each particle is enveloped by a positively-charged 'bubble' of ionized gas, preventing it from settling. Who could've guessed that fatal gamma radiation had a benefit? Not me. $ I'm choosing not to think about how they transformed the sample into
book_lore.bf_bomb_3.page.3=particulate, but I can't understate the utility of this gaseous balefire - it's made it much safer to experiment on. $ Speaking of safety, the head researcher (in an act of callous disregard) made a discovery that also nearly took his head off.
book_lore.bf_bomb_3.page.4=He decided to get "dirty" by letting a cell of our new colloid interact directly with some very expensive antimatter: the resulting explosion turned the table it was on into a piece of radiation-bleached slag, carved a near-perfect hemisphere through
book_lore.bf_bomb_3.page.5=the top, and gave the head a healthy dose of ARS. I guess we know how to make it explode now, but god, some people...
book_lore.bf_bomb_4.name=私人笔记
@ -543,7 +537,6 @@ chem.GASOLINE_LEADED=含铅汽油混合
chem.HEAVY_ELECTROLYSIS=低温电解重水
chem.HELIUM3=使用月球草皮提取氦-3
chem.KEVLAR=凯夫拉生产
chem.LAMINATE=强化夹层玻璃生产
chem.LPG=石油天然气液化
chem.LUBRICANT=润滑剂混合
chem.MEAT_PROCESSING=异虫肉矿物提取
@ -552,14 +545,12 @@ chem.NITAN=NITAN牌超级燃料混合
chem.NITRIC_ACID=硝酸生产
chem.OIL_SAND=沥青砂提取
chem.OSMIRIDIUM_DEATH=锇酸溶液生产
chem.PC=硬质塑料合成
chem.PC_ELECTROLYSIS=氯化钾电解
chem.PEROXIDE=过氧化氢生产
chem.PET=PET合成
chem.PETROIL_LEADED=含铅石油混合
chem.POLYMER=聚合物合成
chem.PUF6=六氟化钚生产
chem.PVC=PVC合成
chem.RUBBER=橡胶生产
chem.SAS3=三硫化Sa生产
chem.SATURN=土星锭生产
@ -653,7 +644,6 @@ container.fluidtank=储罐
container.fileCabinet=文件柜
container.forceField=力场发生器
container.frackingTower=水力压裂塔
container.furnaceBrick=砖砌熔炉
container.furnaceCombination=复式炼焦炉
container.furnaceIron=铁炉
container.furnaceSteel=钢炉
@ -671,11 +661,9 @@ container.hydrotreater=加氢装置
container.iGenerator=工业发电机
container.keyForge=锁匠桌
container.launchPad=导弹发射台
container.launchPadRusted=导弹发射台
tile.launch_pad_large.name=发射台
container.launchTable=大型发射台
container.leadBox=安全盒
container.machineArcWelder=电弧焊机
container.machineBoiler=锅炉
container.machineCMB=CMB炼钢炉
container.machineCoal=火力发电机
@ -686,7 +674,6 @@ container.machineDiesel=柴油发电机
container.machineElectricBoiler=电锅炉
container.machineElectrolyser=电解机
container.machineFEL=FEL
container.machineFunnel=Combinator Funnel
container.machineITER=聚变反应堆
container.machineLargeTurbine=工业汽轮机
container.machineLiquefactor=液化机
@ -696,7 +683,7 @@ container.machineSelenium=星型发动机
container.machineShredder=粉碎机
container.machineSILEX=激光同位素分离室
container.machineSolidifier=固化机
container.machineStrandCaster=连铸机
container.machineStrandCaster=连
container.machineTurbine=汽轮机
container.machineTurbofan=涡扇发动机
container.machine_schrabidium_transmutator=Sa326嬗变装置
@ -1024,7 +1011,6 @@ entity.entity_glyphid_digger.name=掘地异虫
entity.entity_glyphid_nuclear.name=大个子强森
entity.entity_glyphid_scout.name=侦察异虫
entity.entity_ntm_fbi.name=FBI探员
entity.entity_ntm_fbi_drone.name=FBI无人机
entity.entity_ntm_radiation_blaze.name=核融元素
entity.hbm.entity_ntm_ufo.name=火星入侵者飞船
entity.entity_mob_hunter_chopper.name=猎人直升机
@ -1053,7 +1039,6 @@ flare.ignition=点火装置
flare.valve=流量阀
fluid.acid_fluid=酸
fluid.corium_fluid=堆芯熔融物
fluid.rad_lava_fluid=火山熔岩
fluid.mud_fluid=毒泥
fluid.schrabidic_fluid=Sa酸
fluid.toxic_fluid=绿色软泥
@ -1207,9 +1192,8 @@ hadron.error_analysis_too_long=错误 0x06 [分析室过长]
hadron.error_analysis_too_short=错误 0x06 [分析室过长]
hadron.error_diode_collision=错误 0x08 [二极管方向错误]
hadron.error_branching_turn=错误 0x09 [多处分支]
hadron.hopper0=§e正常模式:$ 将使用所有项目
hadron.hopper0=§e正常模式:$将使用所有项目
hadron.hopper1=§e料斗模式:$ 将始终保留一个项目
hadron.hopper2=§e单一模式:$ 每个插槽只允许一个物品
hadron.idle=空闲
hadron.modeCircular=§e环形加速器模式:$磁铁必须环绕核心$解锁更多配方
hadron.modeLine=§e直线加速器模式:$加速器末端有分析室$更少的配方
@ -1442,7 +1426,6 @@ hbmmat.magnetizedtungsten=磁化钨
hbmmat.malachite=孔雀石
hbmmat.meteoriciron=陨铁
hbmmat.mingrade=紫铜
hbmmat.neodymium=钕
hbmmat.neptunium237=镎-237
hbmmat.niobium=铌
hbmmat.obsidian=黑曜岩
@ -1934,7 +1917,6 @@ item.boltgun.name=气动射钉枪
item.bomb_caller.name=空袭指示器
item.bomb_waffle.name=大规模杀伤性华夫饼
item.book_guide.name=HBM指导书
item.book_lemegeton.name=所罗门之钥
item.book_of_.name=车厢书
item.book_secret.name=3-596-50802-9
item.bottle2_empty.name=空瓶
@ -2136,7 +2118,6 @@ item.chopper_head.name=猎人直升机驾驶舱
item.chopper_tail.name=猎人直升机尾部
item.chopper_torso.name=猎人直升机主体
item.chopper_wing.name=猎人直升机翼片
item.chunk_ore.rare.name=稀土矿石块
item.cigarette.name=FFI牌香烟
item.cinnebar.name=朱砂
item.circuit_aluminium.name=基础电路
@ -2151,12 +2132,10 @@ item.circuit_red_copper.name=高级电路
item.circuit_schrabidium.name=高性能电路
item.circuit_star.name=星控制 电路板
item.circuit_star.desc=目前无效,因为它缺少操作系统。
item.circuit_star_component.card.name=星控制 扩展卡
item.circuit_star_component.chipset.name=星控制 芯片组
item.circuit_star_component.cpu.name=星控制 CPU
item.circuit_star_component.ram.name=星控制 RAM
item.circuit_star_piece.board_blank.name=SC-印刷电路板
item.circuit_star_piece.board_converter.name=SC-电压转换器
item.circuit_star_piece.board_transistor.name=SC-晶体管
item.circuit_star_piece.bridge_bios.name=SC-BIOS芯片
item.circuit_star_piece.bridge_bus.name=SC-总线
@ -2165,8 +2144,6 @@ item.circuit_star_piece.bridge_cmos.name=SC-CMOS存储器
item.circuit_star_piece.bridge_io.name=SC-IO芯片
item.circuit_star_piece.bridge_north.name=SC-北桥
item.circuit_star_piece.bridge_south.name=SC-南桥
item.circuit_star_piece.card_board.name=SC-扩展卡板
item.circuit_star_piece.card_processor.name=SC-扩展卡处理器
item.circuit_star_piece.cpu_cache.name=SC-CPU缓存
item.circuit_star_piece.cpu_clock.name=SC-CPU时钟
item.circuit_star_piece.cpu_ext.name=SC-砷半导体外延片
@ -2416,7 +2393,6 @@ item.dust.name=灰尘
item.dust.desc=我讨厌灰尘!
item.dust.desc.P11=又一小撮灰尘!
item.dust_tiny.name=一小撮灰尘
item.dwarven_pickaxe.name=矮人镐
item.dynosphere_base.name=空白动力球
item.dynosphere_desh.name=Desh动力球
item.dynosphere_desh_charged.name=Desh动力球[带电]
@ -2517,8 +2493,6 @@ item.fragment_lanthanium.name=镧碎片
item.fragment_meteorite.name=陨石碎片
item.fragment_neodymium.name=钕碎片
item.fragment_niobium.name=铌碎片
item.fuel_additive.antiknock.name=四乙基铅抗爆剂
item.fuel_additive.deicer.name=除冰剂
item.fuel_tank_large.name=大型燃料罐
item.fuel_tank_medium.name=中型燃料罐
item.fuel_tank_small.name=小型燃料罐
@ -2564,7 +2538,7 @@ item.glitch.name=故障
item.glowing_stew.name=发光真菌煲
item.glyphid_meat.name=异虫肉
item.glyphid_meat_grilled.name=熟异虫肉
item.glyphid_gland.name=异虫腺体
item.glyphid_gland.name=囊腺
item.glyphid_gland_empty.name=异虫腺体
item.goggles.name=护目镜
item.grenade_aschrab.name=可抛反Sa326
@ -2813,7 +2787,6 @@ item.ingot_c4.name=一块C-4
item.ingot_cadmium.name=镉锭
item.ingot_calcium.name=钙锭
item.ingot_cdalloy.name=镉钢锭
item.ingot_cft.name=晶化富勒烯
item.ingot_chainsteel.name=重链钢
item.ingot_co60.name=钴-60锭
item.ingot_cobalt.name=钴锭
@ -2937,7 +2910,6 @@ item.key_red.desc=探索另一边。
item.key_red.desc.P11=§4e§r
item.key_red_cracked.name=破碎的钥匙
item.key_red_cracked.desc=???
item.key_red.key_red_cracked.P11=§4???§r
item.kit_toolbox.name=工具箱
item.kit_toolbox_empty.name=空工具箱
item.laser_crystal_bismuth.desc=铋-钐-铀-钍晶体基质
@ -2949,9 +2921,6 @@ item.laser_crystal_co2.name=CO2-Desh激光晶体
item.laser_crystal_digamma.name=Digamma迪伽马激光晶体
item.laser_crystal_dnt.desc=双聚态中子-Spark费米子超晶体
item.laser_crystal_dnt.name=Spark激光晶体
item.launch_code.name=发射井启动代码
item.launch_code_piece.name=发射井启动代码残片
item.launch_key.name=导弹发射台解锁钥匙
item.lead_gavel.name=铅槌
item.lemon.name="柠檬"
item.letter.name=快捷邮件
@ -3034,7 +3003,6 @@ item.missile_cluster_strong.name=强化型集束导弹
item.missile_custom.name=定制导弹
item.missile_decoy.name=诱饵弹
item.missile_doomsday.name=末日导弹
item.missile_doomsday_rusted.name=损坏的末日导弹
item.missile_drill.name=掩体裂解者
item.missile_emp.name=EMP导弹
item.missile_emp_strong.name=强化型EMP导弹
@ -3224,8 +3192,6 @@ item.night_vision.name=夜视眼镜
item.night_vision.description.item=提供夜视功能(需要全套电动设备)
item.night_vision.description.in_armor=%s允许夜视
item.niter.name=硝石粉
item.nitra.name=Nitra
item.nitra_small.name=Small Pile of Nitra
item.no9.name=矿工头盔
item.nossy_hat.name=华丽的帽子
item.nothing.name=没有东西
@ -3327,14 +3293,10 @@ item.ore.chlorocalcite=氯方解石
item.ore.copper=铜
item.ore.fluorite=氟石
item.ore.gold=金
item.ore.hematite=赤铁
item.ore.iron=铁
item.ore.malachite=孔雀石
item.ore.neodymium=钕
item.ore.niobium=铌
item.ore.titanium=钛
item.ore.tungsten=钨
item.ore.thorium232=钍
item.ore.thorium=钍
item.ore.uranium=铀
item.ore_bedrock.name=基岩%s矿
@ -3375,14 +3337,6 @@ item.padlock_unbreakable.name=牢不可破的挂锁
item.pads_rubber.name=橡胶垫
item.pads_slime.name=粘液垫
item.pads_static.name=静电垫
item.page_of_.page1.name=第一页
item.page_of_.page2.name=第二页
item.page_of_.page3.name=第三页
item.page_of_.page4.name=第四页
item.page_of_.page5.name=第五页
item.page_of_.page6.name=第六页
item.page_of_.page7.name=第七页
item.page_of_.page8.name=第八页
item.pancake.name=用废金属、螺栓和宝石粉做成的薄饼
item.part_beryllium.name=铍粉盒
item.part_carbon.name=碳粉盒
@ -3535,7 +3489,6 @@ item.plate_saturnite.name=土星板
item.plate_schrabidium.name=Sa326板
item.plate_steel.name=钢板
item.plate_titanium.name=钛板
item.plate_welded.name=焊接%s板
item.polaroid.name=偏光片
item.pollution_detector.name=污染探测器
item.powder_actinium.name=锕粉
@ -3546,7 +3499,6 @@ item.powder_asbestos.name=石棉粉
item.powder_asbestos.desc=§o\"Sniffffffff- MHHHHHHMHHHHHHHHH\"§r
item.powder_ash.coal.name=煤灰
item.powder_ash.fly.name=飞尘
item.powder_ash.fullerene.name=富勒烯
item.powder_ash.misc.name=灰尘
item.powder_ash.soot.name=细烟灰
item.powder_ash.wood.name=木灰
@ -3613,7 +3565,6 @@ item.powder_magic.name=粉碎的魔法
item.powder_magnetized_tungsten.name=磁化钨粉
item.powder_meteorite.name=陨石粉
item.powder_meteorite_tiny.name=小撮陨石粉
item.powder_molysite.name=氯化铁
item.powder_neodymium.name=钕粉
item.powder_neodymium_tiny.name=小撮钕粉
item.powder_neptunium.name=镎粉
@ -4096,14 +4047,6 @@ item.stamp_357.name=.357马格南锻模
item.stamp_44.name=.44马格南锻模
item.stamp_50.name=大口径弹壳锻模
item.stamp_9.name=小口径弹壳锻模
item.stamp_book.printing1.name=印刷印章 其一
item.stamp_book.printing2.name=印刷印章 其二
item.stamp_book.printing3.name=印刷印章 其三
item.stamp_book.printing4.name=印刷印章 其四
item.stamp_book.printing5.name=印刷印章 其五
item.stamp_book.printing6.name=印刷印章 其六
item.stamp_book.printing7.name=印刷印章 其七
item.stamp_book.printing8.name=印刷印章 其八
item.stamp_desh_circuit.name=Desh电路板锻模
item.stamp_desh_flat.name=Desh锻模
item.stamp_desh_plate.name=Desh板锻模
@ -4162,7 +4105,6 @@ item.stick_dynamite_fishing.name=捕鱼炸药棒
item.stick_semtex.name=塞姆汀塑胶炸药棒
item.stick_tnt.name=TNT棒
item.stopsign.name=停车标志战斧
item.structure_custommachine.name=自定义机器结构输出魔杖
item.sulfur.name=硫粉
item.survey_scanner.name=勘测扫描仪
item.syringe_antidote.name=解毒剂
@ -4265,7 +4207,6 @@ item.upgrade_fortune_2.name=二级紫色机器升级
item.upgrade_fortune_3.name=三级紫色机器升级
item.upgrade_gc_speed.name=气体离心机超频升级
item.upgrade_health.name=粉色力场发生器升级
item.upgrade_muffler.name=消音器
item.upgrade_nullifier.name=采矿激光升级-自动销毁
item.upgrade_overdrive_1.name=一级超速传动机器升级
item.upgrade_overdrive_2.name=二级超速传动机器升级
@ -4363,7 +4304,6 @@ item.wings_murk.name=暗黑之翼
item.wire_advanced_alloy.name=超导体
item.wire_aluminium.name=铝线
item.wire_copper.name=铜线
item.wire_dense.name=致密%s线
item.wire_gold.name=金线
item.wire_magnetized_tungsten.name=4000K高温超导体
item.wire_red_copper.name=紫铜线
@ -4385,7 +4325,7 @@ itemGroup.tabMissile=HBM 导弹和卫星
itemGroup.tabNuke=HBM 炸弹
itemGroup.tabParts=HBM 资源和零件
itemGroup.tabTemplate=HBM 模板
itemGroup.tabTest=HBM的核科技mod测试项[S166、Bismarck、nukesteve联合汉化]
itemGroup.tabTest=HBM的核科技mod测试项[S166、Bismarck、Nukesteve、牛牛联合汉化]
itemGroup.tabWeapon=HBM 武器和炮塔
potion.hbm_bang=! ! !
potion.hbm_death=重度突变
@ -4399,27 +4339,10 @@ potion.hbm_radx=抗辐射
potion.hbm_stability=稳定
potion.hbm_taint=污染
potion.hbm_telekinesis=! ! !
radar.clearMap=清除地图缓存
radar.detectMissiles=探测导弹
radar.detectPlayers=探测玩家
radar.detectShells=探测炮弹
radar.redMode=红石控制模式$开启: 基于导弹距离输出红石信号$关闭: 基于导弹级别输出红石信号
radar.smartMode=智能模式$有红石信号时忽略上升段的导弹
radar.showMap=显示地图
radar.target.abm=反弹道导弹
radar.target.custom10=10号定制导弹
radar.target.custom1015=10/15号定制导弹
radar.target.custom15=15号定制导弹
radar.target.custom1520=15/20号定制导弹
radar.target.custom20=20号定制导弹
radar.target.doomsday=末日导弹
radar.target.shuttle=万金罗宾航天飞机
radar.target.tier0=0级导弹
radar.target.tier1=1级导弹
radar.target.tier2=2级导弹
radar.target.tier3=3级导弹
radar.target.tier4=4级导弹
radar.toggleGui=切换界面
rbmk.heat=柱体温度: %s
rbmk.boiler.water=供水速率: %s / %s
rbmk.boiler.steam=蒸汽产生速率: %s / %s
@ -4463,8 +4386,6 @@ shape.plate=板材
shape.plateTriple=铸造板
shape.stamp=锻压模具
shape.wire=线材
shape.wireDense=致密线材
shape.wiresDense=致密线材
soundCategory.ntmMachines=NTM机器
tile.absorber.name=辐射吸收器
tile.absorber_green.name=高级辐射吸收器
@ -4503,13 +4424,13 @@ tile.barrel_steel.name=钢桶
tile.barrel_tcalloy.name=锝-钢合金桶
tile.barricade.name=沙袋
tile.basalt.name=玄武岩
tile.basalt_asbestos.name=富含石棉的玄武岩
tile.ore_basalt_asbestos.name=富含石棉的玄武岩
tile.basalt_brick.name=玄武岩砖
tile.basalt_fluorite.name=富含氟石的玄武岩
tile.basalt_gem.name=富含宝石的玄武岩
tile.ore_basalt_fluorite.name=富含氟石的玄武岩
tile.ore_basalt_gem.name=富含宝石的玄武岩
tile.basalt_polished.name=抛光玄武岩
tile.basalt_smooth.name=平滑玄武岩
tile.basalt_sulfur.name=富含硫的玄武岩
tile.ore_basalt_sulfur.name=富含硫的玄武岩
tile.basalt_tiles.name=玄武岩砖
tile.blast_door.name=防爆闸门
tile.block_actinium.name=锕块
@ -4664,7 +4585,6 @@ tile.brick_light.name=轻质砖块
tile.brick_light_stairs.name=轻质砖楼梯
tile.brick_obsidian.name=黑曜石砖块
tile.brick_obsidian_stairs.name=黑曜石砖楼梯
tile.brick_red.name=红屋砖
tile.brick_slab.brick_asbestos.name=石棉砖板
tile.brick_slab.brick_compound.name=复合网格板
tile.brick_slab.brick_fire.name=耐火砖板
@ -4683,7 +4603,7 @@ tile.capacitor_bus.desc=电容器的输出方块$可以连成一条直线
tile.capacitor_copper.name=铜电容
tile.capacitor_gold.name=金电容
tile.capacitor_niobium.name=铌电容
tile.capacitor_schrabidate.name=Sa酸铁电容
tile.capacitor_schrabidate.name=Sa酸铁电容
tile.capacitor_tantalium.name=钽电容
tile.capacitor.desc=输入:顶部$输出:底部,通过电容总线
tile.charge_c4.name=炸药包
@ -4705,7 +4625,6 @@ tile.cluster_depth_titanium.name=深层钛矿簇
tile.cluster_depth_tungsten.name=深层钨矿簇
tile.cluster_iron.name=铁矿簇
tile.cluster_titanium.name=钛矿簇
tile.custom_machine_anchor.name=自定义机器结构定位锚
tile.cm_block.alloy.name=高级合金机器外壳
tile.cm_block.desh.name=Desh机器外壳
tile.cm_block.steel.name=钢制机器外壳
@ -4718,8 +4637,6 @@ tile.cm_circuit.schrabidium.name=五级电路块
tile.cm_engine.bismuth.name=铋电机组
tile.cm_engine.desh.name=DESH电机组
tile.cm_engine.standard.name=电机组
tile.cm_flux.name=中子通量接收器
tile.cm_heat.name=热量接收器
tile.cm_port.alloy.name=高级合金端口
tile.cm_port.desh.name=Desh端口
tile.cm_port.steel.name=钢制端口
@ -4824,7 +4741,6 @@ tile.deco_aluminium.name=铝装饰块
tile.deco_asbestos.name=石棉瓦
tile.deco_beryllium.name=铍装饰块
tile.deco_computer.ibm_300pl.name=IBM个人电脑300PL
tile.deco_crt.name=老旧的CRT屏幕
tile.deco_emitter.name=Deco发光体
tile.deco_lead.name=铅装饰块
tile.deco_rbmk.name=RBMK装饰块
@ -4856,7 +4772,6 @@ tile.deco_pipe_rim_red.name=红色钢制管道 (镶边)
tile.deco_pipe_rim_marked.name=气体管道 (镶边)
tile.deco_steel.name=钢装饰块
tile.deco_titanium.name=钛装饰块
tile.deco_toaster.name=坏了的烤面包机
tile.deco_tungsten.name=钨装饰块
tile.decon.name=玩家去污器
tile.depth_brick.name=深层岩石砖
@ -5048,8 +4963,8 @@ tile.lamp_tritium_blue_off.name=蓝色氚灯
tile.lamp_tritium_blue_on.name=蓝色氚灯
tile.lamp_tritium_green_off.name=绿色氚灯
tile.lamp_tritium_green_on.name=绿色氚灯
tile.lantern.name=灯
tile.lantern_behemoth.name=旧灯
tile.lantern.name=
tile.lantern_behemoth.name=旧
tile.launch_pad.name=导弹发射台
tile.launch_table.name=大型发射台
tile.leaves_layer.name=落叶
@ -5057,7 +4972,6 @@ tile.lox_barrel.name=液氧桶
tile.machine_amgen.name=环境辐射发电机
tile.machine_arc_furnace_off.name=电弧炉
tile.machine_arc_furnace_on.name=电弧炉
tile.machine_arc_welder.name=电弧焊机
tile.machine_armor_table.name=装甲改装台
tile.machine_ashpit.name=储灰槽
tile.machine_ashpit.desc=收集来自燃烧室和加热炉的灰烬
@ -5123,10 +5037,6 @@ tile.machine_fluidtank.name=储罐
tile.machine_forcefield.name=力场发生器
tile.machine_fraction_tower.name=分馏塔
tile.machine_fracking_tower.name=水力压裂塔
tile.machine_furnace_brick_off.name=砖砌熔炉
tile.machine_furnace_brick_on.name=砖砌熔炉
tile.machine_funnel.name=Combinator Funnel
tile.machine_funnel.desc=Automatically compresses items in a 2x2 or 3x3 crafting grid$Top: Input$Bottom: Output$Side: Output for clearing ingredients
tile.machine_gascent.name=气体离心机
tile.machine_generator.name=核反应堆[旧]
tile.machine_geo.name=地热发电机
@ -5193,7 +5103,7 @@ tile.machine_stirling_creative.desc=将热量转化为能量。需要外部热
tile.machine_stirling_steel.name=重型斯特林发电机
tile.machine_stirling_steel.desc=它将热量转化为能量。这需要外部热源$使用更重的齿轮来支持更高的温度$传热率T*0.1 TU/T$最大进气量1500 TU/T$效率50%
tile.machine_storage_drum.name=核废料处理桶
tile.machine_strand_caster.name=连铸机
tile.machine_strand_caster.name=连
tile.machine_telelinker.name=炮塔ID管理器
tile.machine_teleporter.name=传送机
tile.machine_tower_large.name=冷却塔
@ -5251,11 +5161,6 @@ tile.ore_alexandrite.name=亚历山大变石矿
tile.ore_aluminium.name=铝矿石
tile.ore_asbestos.name=石棉矿
tile.ore_australium.name=奥斯矿石
tile.ore_basalt_asbestos.name=富含石棉的玄武岩
tile.ore_basalt_fluorite.name=富含氟石的玄武岩
tile.ore_basalt_gem.name=富含宝石的玄武岩
tile.ore_basalt_molysite.name=富含氯化铁的玄武岩
tile.ore_basalt_sulfur.name=富含硫磺的玄武岩
tile.ore_bedrock.name=基岩矿石
tile.ore_bedrock_coltan.name=基岩钶钽铁矿
tile.ore_bedrock_oil.name=基岩油层
@ -5330,7 +5235,6 @@ tile.ore_verticium.name=韦德赛矿石
tile.ore_volcano.name=地热裂缝
tile.ore_weidanium.name=魏丹矿石
tile.part_emitter.name=Deco粒子发射器
tile.pedestal.name=基座
tile.pink_barrel.name=煤油桶
tile.pink_log.name=粉色原木
tile.pink_planks.name=粉色木板
@ -5497,7 +5401,6 @@ tile.solar_mirror.name=定日镜
tile.soyuz_capsule.name=货物着陆舱
tile.soyuz_launcher.name=联盟号发射平台
tile.spikes.name=地刺
tile.snowglobe.name=雪花玻璃球
tile.spotlight_incandescent.name=罩灯
tile.spotlight_fluoro.name=荧光灯
tile.spotlight_halogen.name=卤素泛光灯
@ -5569,7 +5472,6 @@ tile.turret_rocket.name=火箭炮塔
tile.turret_richard.name=火箭炮塔“理查德”
tile.turret_spitfire.name=目前没有名字[开发中]
tile.turret_sentry.name=哨兵炮塔“布朗”
tile.turret_sentry_damaged.name=哨兵炮塔“埃德温”
tile.turret_tau.name=陶子炮塔
tile.turret_tauon.name=XVL1456原型陶子发射器炮塔"陶恩"
tile.vacuum.name=真空
@ -5603,7 +5505,6 @@ tile.watz_hatch.name=Watz反应堆端口
tile.watz_pump.name=Watz压力泵
tile.yellow_barrel.name=核废料桶
tile.zirnox_destroyed.name=损毁的ZINROX
tile.large_vehicle_door.name=大型机械门
tile.water_door.name=水闸门
tile.qe_containment.name=QE安全门
@ -5611,7 +5512,6 @@ tile.qe_sliding_door.name=QE滑动门
tile.round_airlock_door.name=圆形气闸门
tile.secure_access_door.name=安全检修门
tile.sliding_seal_door.name=滑动密封门
trait.asbestos=石棉
trait.blinding=致盲
trait.coal=煤尘
@ -5683,23 +5583,6 @@ turret.none=无
turret.off=关
turret.on=开
turret.players=以玩家为目标:%s
upgrade.acid=Acid required %s
upgrade.burn=Burn %smb/t for %sHE
upgrade.consumption=Consumption %s
upgrade.coolantConsumption=Coolant Consumption %s
upgrade.delay=Process time %s
upgrade.efficiency=Efficiency %s
upgrade.fortune=Fortune %s
upgrade.overheatChance=Overheat chance %s
upgrade.range=Range %s
upgrade.gui.title=§lAcceptable Upgrades:§r
upgrade.gui.afterburner= * §dAfterburner§r: Stacks to level %s
upgrade.gui.effectiveness= * §aEffectiveness§r: Stacks to level %s
upgrade.gui.overdrive= * §7Overdrive§r: Stacks to level %s
upgrade.gui.power= * §9Power-Saving§r: Stacks to level %s
upgrade.gui.speed= * §4Speed§r: Stacks to level %s
wavelengths.name.ir=红外线
wavelengths.name.visible=可见光
wavelengths.name.uv=紫外线
@ -5729,3 +5612,41 @@ weapon.elecGun.glass_cannon.gamma=伽马射线
hadron.error=错误!
container.reactor=增殖反应堆
death.attack.subAtomic=%1$s 的原子被 %2$s 摧毁
item.launch_code.name=发射井发射代码
item.nitra.name=Nitra
item.nitra_small.name=小撮Nitra
item.launch_key.name=发射井发射钥匙
item.powder_molysite.name=钼铁矿
tile.ore_basalt_molysite.name=富含钼铁矿的玄武岩
item.upgrade_muffler.name=消音器
item.chunk_ore.rare.name=稀土矿石块
item.wire_dense.name=致密%s线
item.launch_code_piece.name=发射井发射代码碎片
tile.deco_crt.name=老CRT显示屏
tile.deco_toaster.name=坏掉的烤面包机
tile.crystal_power.name=能量水晶
tile.crystal_energy.name=能量水晶
tile.crystal_robust.name=坚固的水晶
tile.crystal_trixite.name=赛瑞克水晶
tile.machine_furnace_brick_off.name=砖砌炉
tile.machine_furnace_brick_on.name=砖砌炉
tile.cm_flux.name=中子接收器
tile.cm_heat.name=热量接收器
container.machineFunnel=组合漏斗
tile.machine_funnel.name=组合漏斗
container.machineArcWelder=电弧焊机
tile.machine_arc_welder.name=电弧焊机
tile.launch_pad_rusted.name=锈迹斑斑的发射台
tile.turret_sentry_damaged.name=哨兵炮塔"埃德温"
item.powder_sodium.name=钠
item.plate_welded.name=焊接%s板
item.ingot_cft.name=晶化富勒烯
item.powder_ash.fullerene.name=富勒烯
item.fuel_additive.antiknock.name=四乙基铅抗爆剂
item.fuel_additive.deicer.name=除冰剂
radar.detectShells=探测炮弹
radar.showMap=显示地图
radar.toggleGui=切换视图
radar.clearMap=清空地图
item.missile_doomsday_rusted.name=损坏的末日导弹
item.gun_vortex.name=涡流