Merge branch 'HbmMods:master' into zg

This commit is contained in:
Lazzzycat 2025-04-13 05:02:35 -07:00 committed by GitHub
commit fb8e3b522f
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194
60 changed files with 2818 additions and 1835 deletions

View File

@ -20,6 +20,7 @@
* Also looks really cool to have on the roof of factories * Also looks really cool to have on the roof of factories
## Changed ## Changed
* Updated russian and chinese localizations
* .75 bolts now work as advertised * .75 bolts now work as advertised
* Updated lead pipe texture * Updated lead pipe texture
* Removed recipes from a few ancient melee weapons, as well as the creative tab listing * Removed recipes from a few ancient melee weapons, as well as the creative tab listing
@ -40,6 +41,16 @@
* Changed the optimized receiver generic gun mod to +15% damage * Changed the optimized receiver generic gun mod to +15% damage
* The xenon chemical plant recipes as well as biogas now require compressed air instead of no fluid at all * The xenon chemical plant recipes as well as biogas now require compressed air instead of no fluid at all
* Removed old unused radar configs * Removed old unused radar configs
* The .22 SMG no longer comes with a silencer, instead a silencer can be attached as a weapon mod
* Updated RT generator's GUI
* Armor resistance stats are now configurable using `hbmArmor.json`
* The config's format is a bit fragile, check the log when making changes to see if it fails loading
* If the config fails to load, it will default to standard values
* Also works with `/ntmreload`
* Removed the unused transition hatch block
* Removed the nuclear furnace (it was already deprecated months ago)
* The diesel generator now uses a much more pleasant sound loop instead of the deafening vanilla fireworks pop noise
* Renamed "heavy infinite water barrel" to "large infinite water barrel" because somehow people found that confusing
## Fixed ## Fixed
* Fixed taint destroying bedrock * Fixed taint destroying bedrock
@ -54,3 +65,7 @@
* Fixed infested glyphids spawning maggots also on the clientside, creating unkillable ghosts * Fixed infested glyphids spawning maggots also on the clientside, creating unkillable ghosts
* Fixed top left column not being selectable in the RBMK console * Fixed top left column not being selectable in the RBMK console
* Fixed CIWS hitrate config being read wrong * Fixed CIWS hitrate config being read wrong
* Fixed DANI having broken equip animations
* Fixed break-action revolver cocking sound not syncing up with the animation
* Fixed NBT name collision between ReaSim steam/water values and non-ReaSim steam/water tanks, causing incorrect data to be loaded when using non-ReaSim boilers with ReaSim enabled
* Fixed gun equip animation not playing in certain circumstances

View File

@ -1,6 +1,6 @@
mod_version=1.0.27 mod_version=1.0.27
# Empty build number makes a release type # Empty build number makes a release type
mod_build_number=5279 mod_build_number=5298
credits=HbMinecraft,\ credits=HbMinecraft,\
\ rodolphito (explosion algorithms),\ \ rodolphito (explosion algorithms),\

View File

@ -696,8 +696,6 @@ public class ModBlocks {
public static Block machine_furnace_brick_off; public static Block machine_furnace_brick_off;
public static Block machine_furnace_brick_on; public static Block machine_furnace_brick_on;
public static Block machine_nuke_furnace_off;
public static Block machine_nuke_furnace_on;
public static Block machine_rtg_furnace_off; public static Block machine_rtg_furnace_off;
public static Block machine_rtg_furnace_on; public static Block machine_rtg_furnace_on;
@ -1173,7 +1171,6 @@ public class ModBlocks {
public static Block absorber_green; public static Block absorber_green;
public static Block absorber_pink; public static Block absorber_pink;
public static Block decon; public static Block decon;
public static Block transission_hatch;
public static Block mud_block; public static Block mud_block;
public static Fluid mud_fluid; public static Fluid mud_fluid;
@ -1816,8 +1813,6 @@ public class ModBlocks {
machine_furnace_brick_off = new MachineBrickFurnace(false).setBlockName("machine_furnace_brick_off").setHardness(5.0F).setResistance(10.0F).setCreativeTab(MainRegistry.machineTab); machine_furnace_brick_off = new MachineBrickFurnace(false).setBlockName("machine_furnace_brick_off").setHardness(5.0F).setResistance(10.0F).setCreativeTab(MainRegistry.machineTab);
machine_furnace_brick_on = new MachineBrickFurnace(true).setBlockName("machine_furnace_brick_on").setHardness(5.0F).setLightLevel(1.0F).setResistance(10.0F); machine_furnace_brick_on = new MachineBrickFurnace(true).setBlockName("machine_furnace_brick_on").setHardness(5.0F).setLightLevel(1.0F).setResistance(10.0F);
machine_nuke_furnace_off = new MachineNukeFurnace(false).setBlockName("machine_nuke_furnace_off").setHardness(5.0F).setResistance(10.0F);
machine_nuke_furnace_on = new MachineNukeFurnace(true).setBlockName("machine_nuke_furnace_on").setHardness(5.0F).setLightLevel(1.0F).setResistance(10.0F);
machine_rtg_furnace_off = new MachineRtgFurnace(false).setBlockName("machine_rtg_furnace_off").setHardness(5.0F).setResistance(10.0F); machine_rtg_furnace_off = new MachineRtgFurnace(false).setBlockName("machine_rtg_furnace_off").setHardness(5.0F).setResistance(10.0F);
machine_rtg_furnace_on = new MachineRtgFurnace(true).setBlockName("machine_rtg_furnace_on").setHardness(5.0F).setLightLevel(1.0F).setResistance(10.0F); machine_rtg_furnace_on = new MachineRtgFurnace(true).setBlockName("machine_rtg_furnace_on").setHardness(5.0F).setLightLevel(1.0F).setResistance(10.0F);
@ -2325,7 +2320,6 @@ public class ModBlocks {
absorber_green = new BlockAbsorber(Material.iron, 100F).setBlockName("absorber_green").setHardness(5.0F).setResistance(10.0F).setCreativeTab(MainRegistry.machineTab).setBlockTextureName(RefStrings.MODID + ":absorber_green"); absorber_green = new BlockAbsorber(Material.iron, 100F).setBlockName("absorber_green").setHardness(5.0F).setResistance(10.0F).setCreativeTab(MainRegistry.machineTab).setBlockTextureName(RefStrings.MODID + ":absorber_green");
absorber_pink = new BlockAbsorber(Material.iron, 10000F).setBlockName("absorber_pink").setHardness(5.0F).setResistance(10.0F).setCreativeTab(MainRegistry.machineTab).setBlockTextureName(RefStrings.MODID + ":absorber_pink"); absorber_pink = new BlockAbsorber(Material.iron, 10000F).setBlockName("absorber_pink").setHardness(5.0F).setResistance(10.0F).setCreativeTab(MainRegistry.machineTab).setBlockTextureName(RefStrings.MODID + ":absorber_pink");
decon = new BlockDecon(Material.iron).setBlockName("decon").setHardness(5.0F).setResistance(10.0F).setCreativeTab(MainRegistry.machineTab).setBlockTextureName(RefStrings.MODID + ":decon_side"); decon = new BlockDecon(Material.iron).setBlockName("decon").setHardness(5.0F).setResistance(10.0F).setCreativeTab(MainRegistry.machineTab).setBlockTextureName(RefStrings.MODID + ":decon_side");
transission_hatch = new BlockTransission(Material.iron).setBlockName("transission_hatch").setHardness(5.0F).setResistance(10.0F).setCreativeTab(MainRegistry.machineTab).setBlockTextureName(RefStrings.MODID + ":transission_hatch");
volcano_core = new BlockVolcano().setBlockName("volcano_core").setBlockUnbreakable().setResistance(10000.0F).setCreativeTab(MainRegistry.nukeTab).setBlockTextureName(RefStrings.MODID + ":volcano_core"); volcano_core = new BlockVolcano().setBlockName("volcano_core").setBlockUnbreakable().setResistance(10000.0F).setCreativeTab(MainRegistry.nukeTab).setBlockTextureName(RefStrings.MODID + ":volcano_core");
volcano_rad_core = new BlockVolcano().setBlockName("volcano_rad_core").setBlockUnbreakable().setResistance(10000.0F).setCreativeTab(MainRegistry.nukeTab).setBlockTextureName(RefStrings.MODID + ":volcano_rad_core"); volcano_rad_core = new BlockVolcano().setBlockName("volcano_rad_core").setBlockUnbreakable().setResistance(10000.0F).setCreativeTab(MainRegistry.nukeTab).setBlockTextureName(RefStrings.MODID + ":volcano_rad_core");
@ -3079,8 +3073,6 @@ public class ModBlocks {
GameRegistry.registerBlock(machine_uf6_tank, machine_uf6_tank.getUnlocalizedName()); GameRegistry.registerBlock(machine_uf6_tank, machine_uf6_tank.getUnlocalizedName());
GameRegistry.registerBlock(machine_puf6_tank, machine_puf6_tank.getUnlocalizedName()); GameRegistry.registerBlock(machine_puf6_tank, machine_puf6_tank.getUnlocalizedName());
GameRegistry.registerBlock(machine_reactor_breeding, machine_reactor_breeding.getUnlocalizedName()); GameRegistry.registerBlock(machine_reactor_breeding, machine_reactor_breeding.getUnlocalizedName());
GameRegistry.registerBlock(machine_nuke_furnace_off, machine_nuke_furnace_off.getUnlocalizedName());
GameRegistry.registerBlock(machine_nuke_furnace_on, machine_nuke_furnace_on.getUnlocalizedName());
GameRegistry.registerBlock(machine_rtg_furnace_off, machine_rtg_furnace_off.getUnlocalizedName()); GameRegistry.registerBlock(machine_rtg_furnace_off, machine_rtg_furnace_off.getUnlocalizedName());
GameRegistry.registerBlock(machine_rtg_furnace_on, machine_rtg_furnace_on.getUnlocalizedName()); GameRegistry.registerBlock(machine_rtg_furnace_on, machine_rtg_furnace_on.getUnlocalizedName());
register(machine_wood_burner); register(machine_wood_burner);
@ -3344,7 +3336,6 @@ public class ModBlocks {
GameRegistry.registerBlock(absorber_green, absorber_green.getUnlocalizedName()); GameRegistry.registerBlock(absorber_green, absorber_green.getUnlocalizedName());
GameRegistry.registerBlock(absorber_pink, absorber_pink.getUnlocalizedName()); GameRegistry.registerBlock(absorber_pink, absorber_pink.getUnlocalizedName());
GameRegistry.registerBlock(decon, decon.getUnlocalizedName()); GameRegistry.registerBlock(decon, decon.getUnlocalizedName());
GameRegistry.registerBlock(transission_hatch, transission_hatch.getUnlocalizedName());
//Solar Tower Blocks //Solar Tower Blocks
GameRegistry.registerBlock(machine_solar_boiler, machine_solar_boiler.getUnlocalizedName()); GameRegistry.registerBlock(machine_solar_boiler, machine_solar_boiler.getUnlocalizedName());

View File

@ -1,8 +1,5 @@
package com.hbm.blocks.bomb; package com.hbm.blocks.bomb;
import java.util.Random;
import com.hbm.blocks.ModBlocks;
import com.hbm.config.BombConfig; import com.hbm.config.BombConfig;
import com.hbm.entity.logic.EntityBalefire; import com.hbm.entity.logic.EntityBalefire;
import com.hbm.handler.threading.PacketThreading; import com.hbm.handler.threading.PacketThreading;
@ -14,78 +11,37 @@ import com.hbm.tileentity.bomb.TileEntityCrashedBomb;
import cpw.mods.fml.common.network.NetworkRegistry.TargetPoint; import cpw.mods.fml.common.network.NetworkRegistry.TargetPoint;
import net.minecraft.block.BlockContainer; import net.minecraft.block.BlockContainer;
import net.minecraft.block.material.Material; import net.minecraft.block.material.Material;
import net.minecraft.entity.EntityLivingBase;
import net.minecraft.entity.item.EntityItem; import net.minecraft.entity.item.EntityItem;
import net.minecraft.entity.player.EntityPlayer; import net.minecraft.entity.player.EntityPlayer;
import net.minecraft.item.Item;
import net.minecraft.item.ItemStack; import net.minecraft.item.ItemStack;
import net.minecraft.nbt.NBTTagCompound; import net.minecraft.nbt.NBTTagCompound;
import net.minecraft.tileentity.TileEntity; import net.minecraft.tileentity.TileEntity;
import net.minecraft.util.MathHelper;
import net.minecraft.world.World; import net.minecraft.world.World;
public class BlockCrashedBomb extends BlockContainer implements IBomb { public class BlockCrashedBomb extends BlockContainer implements IBomb {
public BlockCrashedBomb(Material p_i45386_1_) { public BlockCrashedBomb(Material mat) {
super(p_i45386_1_); super(mat);
} }
@Override @Override
public TileEntity createNewTileEntity(World p_149915_1_, int p_149915_2_) { public TileEntity createNewTileEntity(World world, int meta) {
return new TileEntityCrashedBomb(); return new TileEntityCrashedBomb();
} }
@Override @Override public int getRenderType() { return -1; }
public Item getItemDropped(int p_149650_1_, Random p_149650_2_, int p_149650_3_) { @Override public boolean isOpaqueCube() { return false; }
return Item.getItemFromBlock(ModBlocks.crashed_balefire); @Override public boolean renderAsNormalBlock() { return false; }
}
@Override
public int getRenderType() {
return -1;
}
@Override
public boolean isOpaqueCube() {
return false;
}
@Override
public boolean renderAsNormalBlock() {
return false;
}
@Override
public void onBlockPlacedBy(World world, int x, int y, int z, EntityLivingBase player, ItemStack itemStack) {
int i = MathHelper.floor_double(player.rotationYaw * 4.0F / 360.0F + 0.5D) & 3;
if(i == 0) {
world.setBlockMetadataWithNotify(x, y, z, 5, 2);
}
if(i == 1) {
world.setBlockMetadataWithNotify(x, y, z, 3, 2);
}
if(i == 2) {
world.setBlockMetadataWithNotify(x, y, z, 4, 2);
}
if(i == 3) {
world.setBlockMetadataWithNotify(x, y, z, 2, 2);
}
}
public boolean onBlockActivated(World world, int x, int y, int z, EntityPlayer player, int i, float fx, float fy, float fz) { public boolean onBlockActivated(World world, int x, int y, int z, EntityPlayer player, int i, float fx, float fy, float fz) {
if(world.isRemote) return true;
if(world.isRemote)
return true;
if(player.getHeldItem() != null && player.getHeldItem().getItem() == ModItems.defuser) { if(player.getHeldItem() != null && player.getHeldItem().getItem() == ModItems.defuser) {
world.func_147480_a(x, y, z, false); world.func_147480_a(x, y, z, false);
world.spawnEntityInWorld(new EntityItem(world, x + 0.5, y + 0.5, z + 0.5, new ItemStack(ModItems.egg_balefire_shard))); world.spawnEntityInWorld(new EntityItem(world, x + 0.5, y + 0.5, z + 0.5, new ItemStack(ModItems.egg_balefire_shard)));
world.spawnEntityInWorld(new EntityItem(world, x + 0.5, y + 0.5, z + 0.5, new ItemStack(ModItems.plate_steel, 10 + world.rand.nextInt(15)))); world.spawnEntityInWorld(new EntityItem(world, x + 0.5, y + 0.5, z + 0.5, new ItemStack(ModItems.plate_steel, 10 + world.rand.nextInt(15))));
world.spawnEntityInWorld(new EntityItem(world, x + 0.5, y + 0.5, z + 0.5, new ItemStack(ModItems.plate_titanium, 2 + world.rand.nextInt(7)))); world.spawnEntityInWorld(new EntityItem(world, x + 0.5, y + 0.5, z + 0.5, new ItemStack(ModItems.plate_titanium, 2 + world.rand.nextInt(7))));
return true; return true;
} }

View File

@ -103,7 +103,6 @@ public class BlockCrate extends BlockFalling {
BlockCrate.addToListWithWeight(metalList, Item.getItemFromBlock(ModBlocks.machine_press), 10); BlockCrate.addToListWithWeight(metalList, Item.getItemFromBlock(ModBlocks.machine_press), 10);
BlockCrate.addToListWithWeight(metalList, Item.getItemFromBlock(ModBlocks.machine_difurnace_off), 9); BlockCrate.addToListWithWeight(metalList, Item.getItemFromBlock(ModBlocks.machine_difurnace_off), 9);
BlockCrate.addToListWithWeight(metalList, Item.getItemFromBlock(ModBlocks.machine_reactor_breeding), 6); BlockCrate.addToListWithWeight(metalList, Item.getItemFromBlock(ModBlocks.machine_reactor_breeding), 6);
BlockCrate.addToListWithWeight(metalList, Item.getItemFromBlock(ModBlocks.machine_nuke_furnace_off), 7);
BlockCrate.addToListWithWeight(metalList, Item.getItemFromBlock(ModBlocks.machine_wood_burner), 10); BlockCrate.addToListWithWeight(metalList, Item.getItemFromBlock(ModBlocks.machine_wood_burner), 10);
BlockCrate.addToListWithWeight(metalList, Item.getItemFromBlock(ModBlocks.machine_diesel), 8); BlockCrate.addToListWithWeight(metalList, Item.getItemFromBlock(ModBlocks.machine_diesel), 8);
BlockCrate.addToListWithWeight(metalList, Item.getItemFromBlock(ModBlocks.machine_rtg_grey), 4); BlockCrate.addToListWithWeight(metalList, Item.getItemFromBlock(ModBlocks.machine_rtg_grey), 4);

View File

@ -1,32 +0,0 @@
package com.hbm.blocks.generic;
import net.minecraft.block.Block;
import net.minecraft.block.material.Material;
import net.minecraft.entity.player.EntityPlayer;
import net.minecraft.world.World;
public class BlockTransission extends Block {
public BlockTransission(Material mat) {
super(mat);
}
@Override
public boolean onBlockActivated(World world, int x, int y, int z, EntityPlayer player, int side, float hitX, float hitY, float hitZ) {
if(world.isRemote) {
return true;
} else if(!player.isSneaking()) {
if(side == 0) {
player.setPositionAndUpdate(x + 0.5, y + 1, z + 0.5);
}
if(side == 1) {
player.setPositionAndUpdate(x + 0.5, y - 2, z + 0.5);
}
return true;
} else {
return false;
}
}
}

View File

@ -1,268 +0,0 @@
package com.hbm.blocks.machine;
import com.hbm.blocks.ModBlocks;
import com.hbm.lib.RefStrings;
import com.hbm.main.MainRegistry;
import com.hbm.tileentity.machine.TileEntityNukeFurnace;
import cpw.mods.fml.common.network.internal.FMLNetworkHandler;
import cpw.mods.fml.relauncher.Side;
import cpw.mods.fml.relauncher.SideOnly;
import net.minecraft.block.Block;
import net.minecraft.block.BlockContainer;
import net.minecraft.block.material.Material;
import net.minecraft.client.renderer.texture.IIconRegister;
import net.minecraft.entity.EntityLivingBase;
import net.minecraft.entity.item.EntityItem;
import net.minecraft.entity.player.EntityPlayer;
import net.minecraft.item.Item;
import net.minecraft.item.ItemStack;
import net.minecraft.nbt.NBTTagCompound;
import net.minecraft.tileentity.TileEntity;
import net.minecraft.util.IIcon;
import net.minecraft.util.MathHelper;
import net.minecraft.world.World;
import java.util.Random;
public class MachineNukeFurnace extends BlockContainer {
private final Random field_149933_a = new Random();
private final boolean isActive;
private static boolean keepInventory;
@SideOnly(Side.CLIENT)
private IIcon iconTop;
@SideOnly(Side.CLIENT)
private IIcon iconFront;
public MachineNukeFurnace(boolean blockState) {
super(Material.iron);
isActive = blockState;
}
@Override
@SideOnly(Side.CLIENT)
public void registerBlockIcons(IIconRegister iconRegister) {
this.iconTop = iconRegister.registerIcon(RefStrings.MODID + ":machine_nuke_furnace_base_alt");
this.iconFront = iconRegister.registerIcon(RefStrings.MODID + (this.isActive ? ":machine_nuke_furnace_front_on_alt" : ":machine_nuke_furnace_front_off_alt"));
this.blockIcon = iconRegister.registerIcon(RefStrings.MODID + ":machine_nuke_furnace_side_alt");
}
@Override
@SideOnly(Side.CLIENT)
public IIcon getIcon(int side, int metadata) {
return metadata == 0 && side == 3 ? this.iconFront : (side == metadata ? this.iconFront : (side == 1 ? this.iconTop : (side == 0 ? this.iconTop : this.blockIcon)));
}
@Override
public Item getItemDropped(int p_149650_1_, Random p_149650_2_, int p_149650_3_)
{
return Item.getItemFromBlock(ModBlocks.machine_nuke_furnace_off);
}
@Override
public void onBlockAdded(World world, int x, int y, int z) {
super.onBlockAdded(world, x, y, z);
this.setDefaultDirection(world, x, y, z);
}
private void setDefaultDirection(World world, int x, int y, int z) {
if(!world.isRemote)
{
Block block1 = world.getBlock(x, y, z - 1);
Block block2 = world.getBlock(x, y, z + 1);
Block block3 = world.getBlock(x - 1, y, z);
Block block4 = world.getBlock(x + 1, y, z);
byte b0 = 3;
if(block1.func_149730_j() && !block2.func_149730_j())
{
b0 = 3;
}
if(block2.func_149730_j() && !block1.func_149730_j())
{
b0 = 2;
}
if(block3.func_149730_j() && !block4.func_149730_j())
{
b0 = 5;
}
if(block4.func_149730_j() && !block3.func_149730_j())
{
b0 = 4;
}
world.setBlockMetadataWithNotify(x, y, z, b0, 2);
}
}
@Override
public void onBlockPlacedBy(World world, int x, int y, int z, EntityLivingBase player, ItemStack itemStack) {
int i = MathHelper.floor_double(player.rotationYaw * 4.0F / 360.0F + 0.5D) & 3;
if(i == 0)
{
world.setBlockMetadataWithNotify(x, y, z, 2, 2);
}
if(i == 1)
{
world.setBlockMetadataWithNotify(x, y, z, 5, 2);
}
if(i == 2)
{
world.setBlockMetadataWithNotify(x, y, z, 3, 2);
}
if(i == 3)
{
world.setBlockMetadataWithNotify(x, y, z, 4, 2);
}
if(itemStack.hasDisplayName())
{
((TileEntityNukeFurnace)world.getTileEntity(x, y, z)).setCustomName(itemStack.getDisplayName());
}
}
@Override
public boolean onBlockActivated(World world, int x, int y, int z, EntityPlayer player, int side, float hitX, float hitY, float hitZ) {
if(world.isRemote)
{
return true;
} else if(!player.isSneaking())
{
TileEntityNukeFurnace entity = (TileEntityNukeFurnace) world.getTileEntity(x, y, z);
if(entity != null)
{
FMLNetworkHandler.openGui(player, MainRegistry.instance, 0, world, x, y, z);
}
return true;
} else {
return false;
}
}
@Override
public TileEntity createNewTileEntity(World p_149915_1_, int p_149915_2_) {
return new TileEntityNukeFurnace();
}
public static void updateBlockState(boolean isProcessing, World world, int x, int y, int z) {
int i = world.getBlockMetadata(x, y, z);
TileEntity entity = world.getTileEntity(x, y, z);
keepInventory = true;
if(isProcessing)
{
world.setBlock(x, y, z, ModBlocks.machine_nuke_furnace_on);
}else{
world.setBlock(x, y, z, ModBlocks.machine_nuke_furnace_off);
}
keepInventory = false;
world.setBlockMetadataWithNotify(x, y, z, i, 2);
if(entity != null) {
entity.validate();
world.setTileEntity(x, y, z, entity);
}
}
@Override
public void breakBlock(World p_149749_1_, int p_149749_2_, int p_149749_3_, int p_149749_4_, Block p_149749_5_, int p_149749_6_)
{
if (!keepInventory)
{
TileEntityNukeFurnace tileentityfurnace = (TileEntityNukeFurnace)p_149749_1_.getTileEntity(p_149749_2_, p_149749_3_, p_149749_4_);
if (tileentityfurnace != null)
{
for (int i1 = 0; i1 < tileentityfurnace.getSizeInventory(); ++i1)
{
ItemStack itemstack = tileentityfurnace.getStackInSlot(i1);
if (itemstack != null)
{
float f = this.field_149933_a.nextFloat() * 0.8F + 0.1F;
float f1 = this.field_149933_a.nextFloat() * 0.8F + 0.1F;
float f2 = this.field_149933_a.nextFloat() * 0.8F + 0.1F;
while (itemstack.stackSize > 0)
{
int j1 = this.field_149933_a.nextInt(21) + 10;
if (j1 > itemstack.stackSize)
{
j1 = itemstack.stackSize;
}
itemstack.stackSize -= j1;
EntityItem entityitem = new EntityItem(p_149749_1_, p_149749_2_ + f, p_149749_3_ + f1, p_149749_4_ + f2, new ItemStack(itemstack.getItem(), j1, itemstack.getItemDamage()));
if (itemstack.hasTagCompound())
{
entityitem.getEntityItem().setTagCompound((NBTTagCompound)itemstack.getTagCompound().copy());
}
float f3 = 0.05F;
entityitem.motionX = (float)this.field_149933_a.nextGaussian() * f3;
entityitem.motionY = (float)this.field_149933_a.nextGaussian() * f3 + 0.2F;
entityitem.motionZ = (float)this.field_149933_a.nextGaussian() * f3;
p_149749_1_.spawnEntityInWorld(entityitem);
}
}
}
p_149749_1_.func_147453_f(p_149749_2_, p_149749_3_, p_149749_4_, p_149749_5_);
}
}
super.breakBlock(p_149749_1_, p_149749_2_, p_149749_3_, p_149749_4_, p_149749_5_, p_149749_6_);
}
@Override
@SideOnly(Side.CLIENT)
public void randomDisplayTick(World p_149734_1_, int x, int y, int z, Random rand)
{
if (isActive)
{
int l = p_149734_1_.getBlockMetadata(x, y, z);
float f = x + 0.5F;
float f1 = y + 0.25F + rand.nextFloat() * 6.0F / 16.0F;
float f2 = z + 0.5F;
float f3 = 0.52F;
float f4 = rand.nextFloat() * 0.6F - 0.3F;
rand.nextFloat();
rand.nextFloat();
if (l == 4)
{
p_149734_1_.spawnParticle("smoke", f - f3, f1, f2 + f4, 0.0D, 0.0D, 0.0D);
p_149734_1_.spawnParticle("flame", f - f3, f1, f2 + f4, 0.0D, 0.0D, 0.0D);
}
else if (l == 5)
{
p_149734_1_.spawnParticle("smoke", f + f3, f1, f2 + f4, 0.0D, 0.0D, 0.0D);
p_149734_1_.spawnParticle("flame", f + f3, f1, f2 + f4, 0.0D, 0.0D, 0.0D);
}
else if (l == 2)
{
p_149734_1_.spawnParticle("smoke", f + f4, f1, f2 - f3, 0.0D, 0.0D, 0.0D);
p_149734_1_.spawnParticle("flame", f + f4, f1, f2 - f3, 0.0D, 0.0D, 0.0D);
}
else if (l == 3)
{
p_149734_1_.spawnParticle("smoke", f + f4, f1, f2 + f3, 0.0D, 0.0D, 0.0D);
p_149734_1_.spawnParticle("flame", f + f4, f1, f2 + f3, 0.0D, 0.0D, 0.0D);
}
}
}
@Override
@SideOnly(Side.CLIENT)
public Item getItem(World p_149694_1_, int p_149694_2_, int p_149694_3_, int p_149694_4_)
{
return Item.getItemFromBlock(ModBlocks.machine_nuke_furnace_off);
}
}

View File

@ -64,7 +64,7 @@ public class WeaponRecipes {
CraftingManager.addRecipeAuto(new ItemStack(ModItems.gun_maresleg, 1), new Object[] { "BRM", "BGS", 'B', STEEL.lightBarrel(), 'R', STEEL.lightReceiver(), 'M', GUNMETAL.mechanism(), 'G', STEEL.bolt(), 'S', WOOD.stock() }); CraftingManager.addRecipeAuto(new ItemStack(ModItems.gun_maresleg, 1), new Object[] { "BRM", "BGS", 'B', STEEL.lightBarrel(), 'R', STEEL.lightReceiver(), 'M', GUNMETAL.mechanism(), 'G', STEEL.bolt(), 'S', WOOD.stock() });
CraftingManager.addRecipeAuto(new ItemStack(ModItems.gun_maresleg_akimbo, 1), new Object[] { "SMS", 'S', ModItems.gun_maresleg, 'M', WEAPONSTEEL.mechanism() }); CraftingManager.addRecipeAuto(new ItemStack(ModItems.gun_maresleg_akimbo, 1), new Object[] { "SMS", 'S', ModItems.gun_maresleg, 'M', WEAPONSTEEL.mechanism() });
CraftingManager.addRecipeAuto(new ItemStack(ModItems.gun_flaregun, 1), new Object[] { "BRM", " G", 'B', STEEL.heavyBarrel(), 'R', STEEL.lightReceiver(), 'M', GUNMETAL.mechanism(), 'G', STEEL.grip() }); CraftingManager.addRecipeAuto(new ItemStack(ModItems.gun_flaregun, 1), new Object[] { "BRM", " G", 'B', STEEL.heavyBarrel(), 'R', STEEL.lightReceiver(), 'M', GUNMETAL.mechanism(), 'G', STEEL.grip() });
CraftingManager.addRecipeAuto(new ItemStack(ModItems.gun_am180, 1), new Object[] { "BBR", "GMS", 'B', DURA.lightBarrel(), 'R', DURA.lightReceiver(), 'M', GUNMETAL.mechanism(), 'G', WOOD.grip(), 'S', WOOD.stock() }); CraftingManager.addRecipeAuto(new ItemStack(ModItems.gun_am180, 1), new Object[] { "BRS", "GMG", 'B', DURA.lightBarrel(), 'R', DURA.lightReceiver(), 'M', GUNMETAL.mechanism(), 'G', WOOD.grip(), 'S', WOOD.stock() });
CraftingManager.addRecipeAuto(new ItemStack(ModItems.gun_liberator, 1), new Object[] { "BB ", "BBM", "G G", 'B', DURA.lightBarrel(), 'M', GUNMETAL.mechanism(), 'G', WOOD.grip() }); CraftingManager.addRecipeAuto(new ItemStack(ModItems.gun_liberator, 1), new Object[] { "BB ", "BBM", "G G", 'B', DURA.lightBarrel(), 'M', GUNMETAL.mechanism(), 'G', WOOD.grip() });
CraftingManager.addRecipeAuto(new ItemStack(ModItems.gun_congolake, 1), new Object[] { "BM ", "BRS", "G ", 'B', DURA.heavyBarrel(), 'M', GUNMETAL.mechanism(), 'R', DURA.lightReceiver(), 'S', WOOD.stock(), 'G', WOOD.grip() }); CraftingManager.addRecipeAuto(new ItemStack(ModItems.gun_congolake, 1), new Object[] { "BM ", "BRS", "G ", 'B', DURA.heavyBarrel(), 'M', GUNMETAL.mechanism(), 'R', DURA.lightReceiver(), 'S', WOOD.stock(), 'G', WOOD.grip() });
CraftingManager.addRecipeAuto(new ItemStack(ModItems.gun_flamer, 1), new Object[] { " MG", "BBR", " GM", 'M', GUNMETAL.mechanism(), 'G', DURA.grip(), 'B', DURA.heavyBarrel(), 'R', DURA.heavyReceiver() }); CraftingManager.addRecipeAuto(new ItemStack(ModItems.gun_flamer, 1), new Object[] { " MG", "BBR", " GM", 'M', GUNMETAL.mechanism(), 'G', DURA.grip(), 'B', DURA.heavyBarrel(), 'R', DURA.heavyReceiver() });
@ -119,7 +119,7 @@ public class WeaponRecipes {
CraftingManager.addShapelessAuto(new ItemStack(ModItems.weapon_mod_generic, 1, EnumModGeneric.BRONZE_DURA.ordinal()), new Object[] { BIGMT.plate(), ANY_BISMOIDBRONZE.plateCast(), ModItems.ducttape }); CraftingManager.addShapelessAuto(new ItemStack(ModItems.weapon_mod_generic, 1, EnumModGeneric.BRONZE_DURA.ordinal()), new Object[] { BIGMT.plate(), ANY_BISMOIDBRONZE.plateCast(), ModItems.ducttape });
CraftingManager.addRecipeAuto(new ItemStack(ModItems.weapon_mod_special, 1, EnumModSpecial.SILENCER.ordinal()), new Object[] { "P", "B", "P", 'P', ANY_PLASTIC.ingot(), 'B', STEEL.lightBarrel() }); CraftingManager.addRecipeAuto(new ItemStack(ModItems.weapon_mod_special, 1, EnumModSpecial.SILENCER.ordinal()), new Object[] { "P", "B", "P", 'P', ANY_PLASTIC.ingot(), 'B', STEEL.lightBarrel() });
CraftingManager.addRecipeAuto(new ItemStack(ModItems.weapon_mod_special, 1, EnumModSpecial.SCOPE.ordinal()), new Object[] { "SPS", "G G", "SPS", 'P', ANY_PLASTIC.ingot(), 'S', STEEL.plate(), 'G', KEY_ANYPANE }); CraftingManager.addRecipeAuto(new ItemStack(ModItems.weapon_mod_special, 1, EnumModSpecial.SCOPE.ordinal()), new Object[] { "SPS", "G G", "SPS", 'P', ANY_PLASTIC.ingot(), 'S', STEEL.plate(), 'G', KEY_ANYPANE });
CraftingManager.addRecipeAuto(new ItemStack(ModItems.weapon_mod_special, 1, EnumModSpecial.SAW.ordinal()), new Object[] { "BBS", "BHB", 'B', STEEL.bolt(), 'S', KEY_STICK, 'H', DURA.plate() }); CraftingManager.addRecipeAuto(new ItemStack(ModItems.weapon_mod_special, 1, EnumModSpecial.SAW.ordinal()), new Object[] { "BBS", "BHS", 'B', STEEL.bolt(), 'S', KEY_STICK, 'H', DURA.plate() });
CraftingManager.addRecipeAuto(new ItemStack(ModItems.weapon_mod_special, 1, EnumModSpecial.SPEEDLOADER.ordinal()), new Object[] { " B ", "BSB", " B ", 'B', STEEL.bolt(), 'S', WEAPONSTEEL.plate() }); CraftingManager.addRecipeAuto(new ItemStack(ModItems.weapon_mod_special, 1, EnumModSpecial.SPEEDLOADER.ordinal()), new Object[] { " B ", "BSB", " B ", 'B', STEEL.bolt(), 'S', WEAPONSTEEL.plate() });
CraftingManager.addRecipeAuto(new ItemStack(ModItems.weapon_mod_special, 1, EnumModSpecial.SLOWDOWN.ordinal()), new Object[] { " I ", " M ", "I I", 'I', WEAPONSTEEL.ingot(), 'M', WEAPONSTEEL.mechanism() }); CraftingManager.addRecipeAuto(new ItemStack(ModItems.weapon_mod_special, 1, EnumModSpecial.SLOWDOWN.ordinal()), new Object[] { " I ", " M ", "I I", 'I', WEAPONSTEEL.ingot(), 'M', WEAPONSTEEL.mechanism() });
CraftingManager.addRecipeAuto(new ItemStack(ModItems.weapon_mod_special, 1, EnumModSpecial.SPEEDUP.ordinal()), new Object[] { "PIP", "WWW", "PIP", 'P', WEAPONSTEEL.plate(), 'I', GUNMETAL.ingot(), 'W', GOLD.wireDense() }); CraftingManager.addRecipeAuto(new ItemStack(ModItems.weapon_mod_special, 1, EnumModSpecial.SPEEDUP.ordinal()), new Object[] { "PIP", "WWW", "PIP", 'P', WEAPONSTEEL.plate(), 'I', GUNMETAL.ingot(), 'W', GOLD.wireDense() });

View File

@ -2,9 +2,6 @@ package com.hbm.inventory;
import com.hbm.interfaces.NotableComments; import com.hbm.interfaces.NotableComments;
import com.hbm.inventory.container.ContainerCrateBase;
import com.hbm.items.block.ItemBlockStorageCrate;
import net.minecraft.entity.player.EntityPlayer;
import net.minecraft.inventory.IInventory; import net.minecraft.inventory.IInventory;
import net.minecraft.inventory.Slot; import net.minecraft.inventory.Slot;
import net.minecraft.item.ItemStack; import net.minecraft.item.ItemStack;
@ -36,17 +33,4 @@ public class SlotNonRetarded extends Slot {
public int getSlotStackLimit() { public int getSlotStackLimit() {
return Math.max(this.inventory.getInventoryStackLimit(), this.getHasStack() ? this.getStack().stackSize : 1); return Math.max(this.inventory.getInventoryStackLimit(), this.getHasStack() ? this.getStack().stackSize : 1);
} }
/**
* This prevents the player from moving containers that are being held *at all*, fixing a decently big dupe.
* I hate that this has to be here but... It is what it is.
*/
@Override
public boolean canTakeStack(EntityPlayer player) {
if(player.inventory.currentItem == this.getSlotIndex() && // If this slot is the current held slot.
this.getStack() != null && this.getStack().getItem() instanceof ItemBlockStorageCrate && // If the slot contains a storage crate.
player.openContainer instanceof ContainerCrateBase) // If the player is currently inside a crate container.
return false;
return super.canTakeStack(player);
}
} }

View File

@ -1,10 +1,12 @@
package com.hbm.inventory.container; package com.hbm.inventory.container;
import com.hbm.inventory.SlotNonRetarded;
import com.hbm.items.block.ItemBlockStorageCrate; import com.hbm.items.block.ItemBlockStorageCrate;
import net.minecraft.entity.player.EntityPlayer; import net.minecraft.entity.player.EntityPlayer;
import net.minecraft.entity.player.InventoryPlayer; import net.minecraft.entity.player.InventoryPlayer;
import net.minecraft.inventory.IInventory; import net.minecraft.inventory.IInventory;
import net.minecraft.item.ItemStack; import net.minecraft.item.ItemStack;
import net.minecraft.tileentity.TileEntity;
public class ContainerCrateBase extends ContainerBase { public class ContainerCrateBase extends ContainerBase {
@ -15,12 +17,25 @@ public class ContainerCrateBase extends ContainerBase {
super(invPlayer, tedf); super(invPlayer, tedf);
tile.openInventory(); tile.openInventory();
} }
@Override
public void playerInv(InventoryPlayer invPlayer, int playerInvX, int playerInvY, int playerHotbarY) {
for(int i = 0; i < 3; i++) {
for(int j = 0; j < 9; j++) {
this.addSlotToContainer(new SlotNonRetarded(invPlayer, j + i * 9 + 9, playerInvX + j * 18, playerInvY + i * 18));
}
}
for(int i = 0; i < 9; i++) {
this.addSlotToContainer(new SlotNonRetarded(invPlayer, i, playerInvX + i * 18, playerHotbarY));
}
}
@Override @Override
public ItemStack slotClick(int index, int button, int mode, EntityPlayer player) { public ItemStack slotClick(int index, int button, int mode, EntityPlayer player) {
// prevents the player from moving around the currently open box // prevents the player from moving around the currently open box
if(player.inventory.getStackInSlot(player.inventory.currentItem) != null && if(player.inventory.getStackInSlot(player.inventory.currentItem) != null &&
player.inventory.getStackInSlot(player.inventory.currentItem).getItem() instanceof ItemBlockStorageCrate) { player.inventory.getStackInSlot(player.inventory.currentItem).getItem() instanceof ItemBlockStorageCrate && !(this.crate instanceof TileEntity)) {
if (mode == 2 && button == player.inventory.currentItem) { if (mode == 2 && button == player.inventory.currentItem) {
return null; return null;
} }
@ -36,4 +51,24 @@ public class ContainerCrateBase extends ContainerBase {
super.onContainerClosed(p_75134_1_); super.onContainerClosed(p_75134_1_);
tile.closeInventory(); tile.closeInventory();
} }
public class SlotPlayerCrate extends SlotNonRetarded {
public SlotPlayerCrate(IInventory inventory, int id, int x, int y) {
super(inventory, id, x, y);
}
/**
* This prevents the player from moving containers that are being held *at all*, fixing a decently big dupe.
* I hate that this has to be here but... It is what it is.
*/
@Override
public boolean canTakeStack(EntityPlayer player) {
if(player.inventory.currentItem == this.getSlotIndex() && // If this slot is the current held slot.
this.getStack() != null && this.getStack().getItem() instanceof ItemBlockStorageCrate && // If the slot contains a storage crate.
player.openContainer instanceof ContainerCrateBase && !(ContainerCrateBase.this.crate instanceof TileEntity)) // If the player is currently inside a crate container.
return false;
return super.canTakeStack(player);
}
}
} }

View File

@ -1,122 +0,0 @@
package com.hbm.inventory.container;
import com.hbm.inventory.SlotCraftingOutput;
import com.hbm.tileentity.machine.TileEntityNukeFurnace;
import com.hbm.util.InventoryUtil;
import net.minecraft.entity.player.EntityPlayer;
import net.minecraft.entity.player.InventoryPlayer;
import net.minecraft.inventory.Container;
import net.minecraft.inventory.ICrafting;
import net.minecraft.inventory.Slot;
import net.minecraft.item.ItemStack;
public class ContainerNukeFurnace extends Container {
private TileEntityNukeFurnace diFurnace;
private int dualCookTime;
private int dualPower;
public ContainerNukeFurnace(InventoryPlayer invPlayer, TileEntityNukeFurnace tedf) {
dualCookTime = 0;
dualPower = 0;
diFurnace = tedf;
this.addSlotToContainer(new Slot(tedf, 0, 56, 53) {
@Override
public int getSlotStackLimit() {
return 1;
}
});
this.addSlotToContainer(new Slot(tedf, 1, 56, 17));
this.addSlotToContainer(new SlotCraftingOutput(invPlayer.player, tedf, 2, 116, 35));
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 < 9; i++) {
this.addSlotToContainer(new Slot(invPlayer, i, 8 + i * 18, 142));
}
}
@Override
public void addCraftingToCrafters(ICrafting crafting) {
super.addCraftingToCrafters(crafting);
crafting.sendProgressBarUpdate(this, 0, this.diFurnace.dualCookTime);
crafting.sendProgressBarUpdate(this, 1, this.diFurnace.dualPower);
}
@Override
public ItemStack transferStackInSlot(EntityPlayer p_82846_1_, int par2) {
ItemStack var3 = null;
Slot var4 = (Slot) this.inventorySlots.get(par2);
if(var4 != null && var4.getHasStack()) {
ItemStack var5 = var4.getStack();
var3 = var5.copy();
if(par2 <= 2) {
if(!this.mergeItemStack(var5, 3, this.inventorySlots.size(), true)) {
return null;
}
} else {
if(TileEntityNukeFurnace.getFuelValue(var5) > 0) {
if(!InventoryUtil.mergeItemStack(this.inventorySlots, var5, 0, 1, false))
return null;
} else {
if(!this.mergeItemStack(var5, 1, 2, false))
return null;
}
}
if(var5.stackSize == 0) {
var4.putStack((ItemStack) null);
} else {
var4.onSlotChanged();
}
}
return var3;
}
@Override
public boolean canInteractWith(EntityPlayer player) {
return diFurnace.isUseableByPlayer(player);
}
@Override
public void detectAndSendChanges() {
super.detectAndSendChanges();
for(int i = 0; i < this.crafters.size(); i++) {
ICrafting par1 = (ICrafting) this.crafters.get(i);
if(this.dualCookTime != this.diFurnace.dualCookTime) {
par1.sendProgressBarUpdate(this, 0, this.diFurnace.dualCookTime);
}
if(this.dualPower != this.diFurnace.dualPower) {
par1.sendProgressBarUpdate(this, 1, this.diFurnace.dualPower);
}
}
this.dualCookTime = this.diFurnace.dualCookTime;
this.dualPower = this.diFurnace.dualPower;
}
@Override
public void updateProgressBar(int i, int j) {
if(i == 0) {
diFurnace.dualCookTime = j;
}
if(i == 1) {
diFurnace.dualPower = j;
}
}
}

View File

@ -1,54 +0,0 @@
package com.hbm.inventory.gui;
import net.minecraft.client.Minecraft;
import net.minecraft.client.resources.I18n;
import net.minecraft.entity.player.InventoryPlayer;
import net.minecraft.util.ResourceLocation;
import org.lwjgl.opengl.GL11;
import com.hbm.inventory.container.ContainerNukeFurnace;
import com.hbm.lib.RefStrings;
import com.hbm.tileentity.machine.TileEntityNukeFurnace;
public class GUINukeFurnace extends GuiInfoContainer {
private static ResourceLocation texture = new ResourceLocation(RefStrings.MODID + ":textures/gui/processing/gui_nuke_furnace.png");
private TileEntityNukeFurnace furnace;
public GUINukeFurnace(InventoryPlayer invPlayer, TileEntityNukeFurnace tedf) {
super(new ContainerNukeFurnace(invPlayer, tedf));
furnace = tedf;
this.xSize = 176;
this.ySize = 166;
}
@Override
public void drawScreen(int mouseX, int mouseY, float f) {
super.drawScreen(mouseX, mouseY, f);
this.drawCustomInfoStat(mouseX, mouseY, guiLeft + 55, guiTop + 34, 18, 18, mouseX, mouseY, new String[] { furnace.dualPower + " operation(s) left" });
}
@Override
protected void drawGuiContainerForegroundLayer(int i, int j) {
String name = this.furnace.hasCustomInventoryName() ? this.furnace.getInventoryName() : I18n.format(this.furnace.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);
}
@Override
protected void drawGuiContainerBackgroundLayer(float p_146976_1_, int p_146976_2_, int p_146976_3_) {
GL11.glColor4f(1.0F, 1.0F, 1.0F, 1.0F);
Minecraft.getMinecraft().getTextureManager().bindTexture(texture);
drawTexturedModalRect(guiLeft, guiTop, 0, 0, xSize, ySize);
if(furnace.hasPower())
drawTexturedModalRect(guiLeft + 55, guiTop + 35, 176, 0, 18, 16);
int i = furnace.getDiFurnaceProgressScaled(24);
drawTexturedModalRect(guiLeft + 80, guiTop + 34, 176, 16, i, 17);
}
}

View File

@ -834,7 +834,6 @@ public class ModItems {
public static Item particle_lutece; public static Item particle_lutece;
public static Item pellet_antimatter; public static Item pellet_antimatter;
public static Item singularity_micro;
public static Item singularity; public static Item singularity;
public static Item singularity_counter_resonant; public static Item singularity_counter_resonant;
public static Item singularity_super_heated; public static Item singularity_super_heated;
@ -2907,7 +2906,6 @@ public class ModItems {
particle_sparkticle = new Item().setUnlocalizedName("particle_sparkticle").setCreativeTab(MainRegistry.controlTab).setContainerItem(ModItems.particle_empty).setTextureName(RefStrings.MODID + ":particle_sparkticle"); particle_sparkticle = new Item().setUnlocalizedName("particle_sparkticle").setCreativeTab(MainRegistry.controlTab).setContainerItem(ModItems.particle_empty).setTextureName(RefStrings.MODID + ":particle_sparkticle");
particle_digamma = new ItemDigamma(60).setUnlocalizedName("particle_digamma").setCreativeTab(MainRegistry.controlTab).setContainerItem(ModItems.particle_empty).setTextureName(RefStrings.MODID + ":particle_digamma"); particle_digamma = new ItemDigamma(60).setUnlocalizedName("particle_digamma").setCreativeTab(MainRegistry.controlTab).setContainerItem(ModItems.particle_empty).setTextureName(RefStrings.MODID + ":particle_digamma");
particle_lutece = new Item().setUnlocalizedName("particle_lutece").setCreativeTab(MainRegistry.controlTab).setContainerItem(ModItems.particle_empty).setTextureName(RefStrings.MODID + ":particle_lutece"); particle_lutece = new Item().setUnlocalizedName("particle_lutece").setCreativeTab(MainRegistry.controlTab).setContainerItem(ModItems.particle_empty).setTextureName(RefStrings.MODID + ":particle_lutece");
singularity_micro = new ItemDrop().setUnlocalizedName("singularity_micro").setCreativeTab(MainRegistry.controlTab).setContainerItem(ModItems.nuclear_waste).setTextureName(RefStrings.MODID + ":singularity_micro");
singularity = new ItemDrop().setUnlocalizedName("singularity").setMaxStackSize(1).setCreativeTab(MainRegistry.controlTab).setContainerItem(ModItems.nuclear_waste).setTextureName(RefStrings.MODID + ":singularity"); singularity = new ItemDrop().setUnlocalizedName("singularity").setMaxStackSize(1).setCreativeTab(MainRegistry.controlTab).setContainerItem(ModItems.nuclear_waste).setTextureName(RefStrings.MODID + ":singularity");
singularity_counter_resonant = new ItemDrop().setUnlocalizedName("singularity_counter_resonant").setMaxStackSize(1).setCreativeTab(MainRegistry.controlTab).setContainerItem(ModItems.nuclear_waste).setTextureName(RefStrings.MODID + ":singularity_alt"); singularity_counter_resonant = new ItemDrop().setUnlocalizedName("singularity_counter_resonant").setMaxStackSize(1).setCreativeTab(MainRegistry.controlTab).setContainerItem(ModItems.nuclear_waste).setTextureName(RefStrings.MODID + ":singularity_alt");
@ -5745,7 +5743,6 @@ public class ModItems {
GameRegistry.registerItem(particle_lutece, particle_lutece.getUnlocalizedName()); GameRegistry.registerItem(particle_lutece, particle_lutece.getUnlocalizedName());
//Singularities, black holes and other cosmic horrors //Singularities, black holes and other cosmic horrors
GameRegistry.registerItem(singularity_micro, singularity_micro.getUnlocalizedName());
GameRegistry.registerItem(singularity, singularity.getUnlocalizedName()); GameRegistry.registerItem(singularity, singularity.getUnlocalizedName());
GameRegistry.registerItem(singularity_counter_resonant, singularity_counter_resonant.getUnlocalizedName()); GameRegistry.registerItem(singularity_counter_resonant, singularity_counter_resonant.getUnlocalizedName());
GameRegistry.registerItem(singularity_super_heated, singularity_super_heated.getUnlocalizedName()); GameRegistry.registerItem(singularity_super_heated, singularity_super_heated.getUnlocalizedName());

View File

@ -1,6 +1,6 @@
package com.hbm.items.machine; package com.hbm.items.machine;
import com.hbm.tileentity.TileEntityMachineBase; import com.hbm.tileentity.TileEntityLoadedBase;
import com.hbm.util.CompatExternal; import com.hbm.util.CompatExternal;
import net.minecraft.entity.player.EntityPlayer; import net.minecraft.entity.player.EntityPlayer;
@ -15,8 +15,8 @@ public class ItemMuffler extends Item {
public boolean onItemUse(ItemStack stack, EntityPlayer player, World world, int x, int y, int z, int i, float f0, float f1, float f2) { public boolean onItemUse(ItemStack stack, EntityPlayer player, World world, int x, int y, int z, int i, float f0, float f1, float f2) {
TileEntity te = CompatExternal.getCoreFromPos(world, x, y, z); TileEntity te = CompatExternal.getCoreFromPos(world, x, y, z);
if(te != null && te instanceof TileEntityMachineBase) { if(te != null && te instanceof TileEntityLoadedBase) {
TileEntityMachineBase tile = (TileEntityMachineBase) te; TileEntityLoadedBase tile = (TileEntityLoadedBase) te;
if(!tile.muffled) { if(!tile.muffled) {
tile.muffled = true; tile.muffled = true;
world.playSoundAtEntity(player, "hbm:item.upgradePlug", 1.0F, 1.0F); world.playSoundAtEntity(player, "hbm:item.upgradePlug", 1.0F, 1.0F);

View File

@ -74,9 +74,7 @@ public class ItemStarterKit extends Item {
player.inventory.addItemStackToInventory(new ItemStack(ModBlocks.machine_press, 1)); player.inventory.addItemStackToInventory(new ItemStack(ModBlocks.machine_press, 1));
player.inventory.addItemStackToInventory(new ItemStack(ModBlocks.machine_difurnace_off, 1)); player.inventory.addItemStackToInventory(new ItemStack(ModBlocks.machine_difurnace_off, 1));
player.inventory.addItemStackToInventory(new ItemStack(ModBlocks.machine_gascent, 1)); player.inventory.addItemStackToInventory(new ItemStack(ModBlocks.machine_gascent, 1));
player.inventory.addItemStackToInventory(new ItemStack(ModBlocks.machine_puf6_tank, 1));
player.inventory.addItemStackToInventory(new ItemStack(ModBlocks.machine_reactor_breeding, 1)); player.inventory.addItemStackToInventory(new ItemStack(ModBlocks.machine_reactor_breeding, 1));
player.inventory.addItemStackToInventory(new ItemStack(ModBlocks.machine_nuke_furnace_off, 1));
player.inventory.addItemStackToInventory(new ItemStack(ModBlocks.machine_assembler, 1)); player.inventory.addItemStackToInventory(new ItemStack(ModBlocks.machine_assembler, 1));
player.inventory.addItemStackToInventory(new ItemStack(ModBlocks.machine_chemplant, 1)); player.inventory.addItemStackToInventory(new ItemStack(ModBlocks.machine_chemplant, 1));
player.inventory.addItemStackToInventory(new ItemStack(ModBlocks.reactor_research, 1)); player.inventory.addItemStackToInventory(new ItemStack(ModBlocks.reactor_research, 1));

View File

@ -14,6 +14,7 @@ import com.hbm.handler.HbmKeybinds.EnumKeybind;
import com.hbm.interfaces.IItemHUD; import com.hbm.interfaces.IItemHUD;
import com.hbm.inventory.RecipesCommon.ComparableStack; import com.hbm.inventory.RecipesCommon.ComparableStack;
import com.hbm.inventory.gui.GUIWeaponTable; import com.hbm.inventory.gui.GUIWeaponTable;
import com.hbm.items.IEquipReceiver;
import com.hbm.items.IKeybindReceiver; import com.hbm.items.IKeybindReceiver;
import com.hbm.items.weapon.sedna.hud.IHUDComponent; import com.hbm.items.weapon.sedna.hud.IHUDComponent;
import com.hbm.items.weapon.sedna.mags.IMagazine; import com.hbm.items.weapon.sedna.mags.IMagazine;
@ -47,7 +48,7 @@ import net.minecraft.world.World;
import net.minecraftforge.client.event.RenderGameOverlayEvent.ElementType; import net.minecraftforge.client.event.RenderGameOverlayEvent.ElementType;
import net.minecraftforge.client.event.RenderGameOverlayEvent.Pre; import net.minecraftforge.client.event.RenderGameOverlayEvent.Pre;
public class ItemGunBaseNT extends Item implements IKeybindReceiver, IItemHUD { public class ItemGunBaseNT extends Item implements IKeybindReceiver, IItemHUD, IEquipReceiver {
/** Timestamp for rendering smoke nodes and muzzle flashes */ /** Timestamp for rendering smoke nodes and muzzle flashes */
public long[] lastShot; public long[] lastShot;
@ -230,8 +231,10 @@ public class ItemGunBaseNT extends Item implements IKeybindReceiver, IItemHUD {
} }
} }
@Override
public void onEquip(EntityPlayer player, ItemStack stack) { public void onEquip(EntityPlayer player, ItemStack stack) {
for(int i = 0; i < this.configs_DNA.length; i++) { for(int i = 0; i < this.configs_DNA.length; i++) {
if(this.getLastAnim(stack, i) == AnimType.EQUIP && this.getAnimTimer(stack, i) < 5) continue;
playAnimation(player, stack, AnimType.EQUIP, i); playAnimation(player, stack, AnimType.EQUIP, i);
this.setPrimary(stack, i, false); this.setPrimary(stack, i, false);
this.setSecondary(stack, i, false); this.setSecondary(stack, i, false);

View File

@ -103,11 +103,11 @@ public class Orchestras {
if(timer == 44) entity.worldObj.playSoundAtEntity(entity, "hbm:weapon.reload.revolverClose", 1F, 1F); if(timer == 44) entity.worldObj.playSoundAtEntity(entity, "hbm:weapon.reload.revolverClose", 1F, 1F);
} }
if(type == AnimType.CYCLE) { if(type == AnimType.CYCLE) {
if(timer == 14) entity.worldObj.playSoundAtEntity(entity, "hbm:weapon.reload.revolverCock", 1F, 0.9F); if(timer == 5) entity.worldObj.playSoundAtEntity(entity, "hbm:weapon.reload.revolverCock", 1F, 0.9F);
} }
if(type == AnimType.CYCLE_DRY) { if(type == AnimType.CYCLE_DRY) {
if(timer == 2) entity.worldObj.playSoundAtEntity(entity, "hbm:weapon.reload.dryFireClick", 1F, 1F); if(timer == 2) entity.worldObj.playSoundAtEntity(entity, "hbm:weapon.reload.dryFireClick", 1F, 1F);
if(timer == 14) entity.worldObj.playSoundAtEntity(entity, "hbm:weapon.reload.revolverCock", 1F, 0.9F); if(timer == 5) entity.worldObj.playSoundAtEntity(entity, "hbm:weapon.reload.revolverCock", 1F, 0.9F);
} }
if(type == AnimType.INSPECT) { if(type == AnimType.INSPECT) {
if(timer == 2) entity.worldObj.playSoundAtEntity(entity, "hbm:weapon.reload.magSmallRemove", 1F, 1F); if(timer == 2) entity.worldObj.playSoundAtEntity(entity, "hbm:weapon.reload.magSmallRemove", 1F, 1F);
@ -131,11 +131,11 @@ public class Orchestras {
if(timer == 44) entity.worldObj.playSoundAtEntity(entity, "hbm:weapon.reload.revolverClose", 1F, 1F); if(timer == 44) entity.worldObj.playSoundAtEntity(entity, "hbm:weapon.reload.revolverClose", 1F, 1F);
} }
if(type == AnimType.CYCLE) { if(type == AnimType.CYCLE) {
if(timer == 9) entity.worldObj.playSoundAtEntity(entity, "hbm:weapon.reload.revolverCock", 1F, 0.9F); if(timer == 5) entity.worldObj.playSoundAtEntity(entity, "hbm:weapon.reload.revolverCock", 1F, 0.9F);
} }
if(type == AnimType.CYCLE_DRY) { if(type == AnimType.CYCLE_DRY) {
if(timer == 2) entity.worldObj.playSoundAtEntity(entity, "hbm:weapon.reload.dryFireClick", 1F, 1F); if(timer == 2) entity.worldObj.playSoundAtEntity(entity, "hbm:weapon.reload.dryFireClick", 1F, 1F);
if(timer == 9) entity.worldObj.playSoundAtEntity(entity, "hbm:weapon.reload.revolverCock", 1F, 0.9F); if(timer == 5) entity.worldObj.playSoundAtEntity(entity, "hbm:weapon.reload.revolverCock", 1F, 0.9F);
} }
if(type == AnimType.INSPECT) { if(type == AnimType.INSPECT) {
if(timer == 2) entity.worldObj.playSoundAtEntity(entity, "hbm:weapon.reload.magSmallRemove", 1F, 1F); if(timer == 2) entity.worldObj.playSoundAtEntity(entity, "hbm:weapon.reload.magSmallRemove", 1F, 1F);

View File

@ -2,6 +2,7 @@ package com.hbm.items.weapon.sedna.factory;
import java.util.function.BiConsumer; import java.util.function.BiConsumer;
import java.util.function.BiFunction; import java.util.function.BiFunction;
import java.util.function.Function;
import com.hbm.config.ClientConfig; import com.hbm.config.ClientConfig;
import com.hbm.items.ModItems; import com.hbm.items.ModItems;
@ -15,6 +16,7 @@ import com.hbm.items.weapon.sedna.ItemGunBaseNT.LambdaContext;
import com.hbm.items.weapon.sedna.ItemGunBaseNT.WeaponQuality; import com.hbm.items.weapon.sedna.ItemGunBaseNT.WeaponQuality;
import com.hbm.items.weapon.sedna.factory.GunFactory.EnumAmmo; import com.hbm.items.weapon.sedna.factory.GunFactory.EnumAmmo;
import com.hbm.items.weapon.sedna.mags.MagazineFullReload; import com.hbm.items.weapon.sedna.mags.MagazineFullReload;
import com.hbm.items.weapon.sedna.mods.WeaponModManager;
import com.hbm.main.ResourceManager; import com.hbm.main.ResourceManager;
import com.hbm.particle.SpentCasing; import com.hbm.particle.SpentCasing;
import com.hbm.particle.SpentCasing.CasingType; import com.hbm.particle.SpentCasing.CasingType;
@ -46,15 +48,21 @@ public class XFactory22lr {
ModItems.gun_am180 = new ItemGunBaseNT(WeaponQuality.A_SIDE, new GunConfig() ModItems.gun_am180 = new ItemGunBaseNT(WeaponQuality.A_SIDE, new GunConfig()
.dura(177 * 25).draw(15).inspect(38).crosshair(Crosshair.L_CIRCLE).smoke(LAMBDA_SMOKE) .dura(177 * 25).draw(15).inspect(38).crosshair(Crosshair.L_CIRCLE).smoke(LAMBDA_SMOKE)
.rec(new Receiver(0) .rec(new Receiver(0)
.dmg(2F).delay(1).dry(10).auto(true).spread(0.02F).reload(66).jam(30).sound("hbm:weapon.fire.silenced", 1.0F, 1.0F) .dmg(2F).delay(1).dry(10).auto(true).spread(0.02F).reload(66).jam(30).sound("hbm:weapon.fire.greaseGun", 1.0F, 1.0F)
.mag(new MagazineFullReload(0, 177).addConfigs(p22_sp, p22_fmj, p22_jhp, p22_ap)) .mag(new MagazineFullReload(0, 177).addConfigs(p22_sp, p22_fmj, p22_jhp, p22_ap))
.offset(1, -0.0625 * 1.5, -0.1875D) .offset(1, -0.0625 * 1.5, -0.1875D)
.setupStandardFire().recoil(LAMBDA_RECOIL_AM180)) .setupStandardFire().recoil(LAMBDA_RECOIL_AM180))
.setupStandardConfiguration() .setupStandardConfiguration()
.anim(LAMBDA_AM180_ANIMS).orchestra(Orchestras.ORCHESTRA_AM180) .anim(LAMBDA_AM180_ANIMS).orchestra(Orchestras.ORCHESTRA_AM180)
).setUnlocalizedName("gun_am180"); ).setNameMutator(LAMBDA_NAME_AM180)
.setUnlocalizedName("gun_am180");
} }
public static Function<ItemStack, String> LAMBDA_NAME_AM180 = (stack) -> {
if(WeaponModManager.hasUpgrade(stack, 0, WeaponModManager.ID_SILENCER)) return stack.getUnlocalizedName() + "_silenced";
return null;
};
public static BiConsumer<ItemStack, LambdaContext> LAMBDA_SMOKE = (stack, ctx) -> { public static BiConsumer<ItemStack, LambdaContext> LAMBDA_SMOKE = (stack, ctx) -> {
Lego.handleStandardSmoke(ctx.entity, stack, 3000, 0.05D, 1.1D, 0); Lego.handleStandardSmoke(ctx.entity, stack, 3000, 0.05D, 1.1D, 0);
}; };

View File

@ -67,7 +67,7 @@ public class XFactory357 {
.setupStandardFire().recoil(LAMBDA_RECOIL_DANI)) .setupStandardFire().recoil(LAMBDA_RECOIL_DANI))
.pp(Lego.LAMBDA_STANDARD_CLICK_PRIMARY).pr(Lego.LAMBDA_STANDARD_RELOAD) .pp(Lego.LAMBDA_STANDARD_CLICK_PRIMARY).pr(Lego.LAMBDA_STANDARD_RELOAD)
.decider(GunStateDecider.LAMBDA_STANDARD_DECIDER) .decider(GunStateDecider.LAMBDA_STANDARD_DECIDER)
.anim(LAMBDA_ATLAS_ANIMS).orchestra(Orchestras.ORCHESTRA_DANI), .anim(LAMBDA_DANI_ANIMS).orchestra(Orchestras.ORCHESTRA_DANI),
new GunConfig().dura(30_000).draw(20).inspect(23).crosshair(Crosshair.CIRCLE).smoke(Lego.LAMBDA_STANDARD_SMOKE) new GunConfig().dura(30_000).draw(20).inspect(23).crosshair(Crosshair.CIRCLE).smoke(Lego.LAMBDA_STANDARD_SMOKE)
.rec(new Receiver(0) .rec(new Receiver(0)
.dmg(15F).spreadHipfire(0F).delay(11).reload(55).jam(45).sound("hbm:weapon.fire.pistol", 1.0F, 0.9F) .dmg(15F).spreadHipfire(0F).delay(11).reload(55).jam(45).sound("hbm:weapon.fire.pistol", 1.0F, 0.9F)
@ -76,7 +76,7 @@ public class XFactory357 {
.setupStandardFire().recoil(LAMBDA_RECOIL_DANI)) .setupStandardFire().recoil(LAMBDA_RECOIL_DANI))
.ps(Lego.LAMBDA_STANDARD_CLICK_PRIMARY).pr(Lego.LAMBDA_STANDARD_RELOAD) .ps(Lego.LAMBDA_STANDARD_CLICK_PRIMARY).pr(Lego.LAMBDA_STANDARD_RELOAD)
.decider(GunStateDecider.LAMBDA_STANDARD_DECIDER) .decider(GunStateDecider.LAMBDA_STANDARD_DECIDER)
.anim(LAMBDA_ATLAS_ANIMS).orchestra(Orchestras.ORCHESTRA_DANI) .anim(LAMBDA_DANI_ANIMS).orchestra(Orchestras.ORCHESTRA_DANI)
).setUnlocalizedName("gun_light_revolver_dani"); ).setUnlocalizedName("gun_light_revolver_dani");
} }
@ -95,10 +95,10 @@ public class XFactory357 {
case CYCLE: return new BusAnimation() case CYCLE: return new BusAnimation()
.addBus("RECOIL", new BusAnimationSequence().addPos(0, 0, 0, 50).addPos(0, 0, -3, 50).addPos(0, 0, 0, 250)) .addBus("RECOIL", new BusAnimationSequence().addPos(0, 0, 0, 50).addPos(0, 0, -3, 50).addPos(0, 0, 0, 250))
.addBus("HAMMER", new BusAnimationSequence().addPos(0, 0, 1, 50).addPos(0, 0, 1, 300).addPos(0, 0, 0, 200)) .addBus("HAMMER", new BusAnimationSequence().addPos(0, 0, 1, 50).addPos(0, 0, 1, 300).addPos(0, 0, 0, 200))
.addBus("DRUM", new BusAnimationSequence().addPos(0, 0, 0, 350).addPos(0, 0, 1, 200)); .addBus("DRUM", new BusAnimationSequence().addPos(0, 0, 0, 250).addPos(0, 0, 1, 200));
case CYCLE_DRY: return new BusAnimation() case CYCLE_DRY: return new BusAnimation()
.addBus("HAMMER", new BusAnimationSequence().addPos(0, 0, 1, 50).addPos(0, 0, 1, 200).addPos(0, 0, 0, 200)) .addBus("HAMMER", new BusAnimationSequence().addPos(0, 0, 1, 50).addPos(0, 0, 1, 200).addPos(0, 0, 0, 200))
.addBus("DRUM", new BusAnimationSequence().addPos(0, 0, 0, 350).addPos(0, 0, 1, 200)); .addBus("DRUM", new BusAnimationSequence().addPos(0, 0, 0, 250).addPos(0, 0, 1, 200));
case RELOAD: return new BusAnimation() case RELOAD: return new BusAnimation()
.addBus("LATCH", new BusAnimationSequence().addPos(0, 0, 90, 300).addPos(0, 0, 90, 2000).addPos(0, 0, 0, 150)) .addBus("LATCH", new BusAnimationSequence().addPos(0, 0, 90, 300).addPos(0, 0, 90, 2000).addPos(0, 0, 0, 150))
.addBus("FRONT", new BusAnimationSequence().addPos(0, 0, 0, 200).addPos(0, 0, 45, 150).addPos(0, 0, 45, 2000).addPos(0, 0, 0, 75)) .addBus("FRONT", new BusAnimationSequence().addPos(0, 0, 0, 200).addPos(0, 0, 45, 150).addPos(0, 0, 45, 2000).addPos(0, 0, 0, 75))
@ -119,4 +119,12 @@ public class XFactory357 {
return null; return null;
}; };
@SuppressWarnings("incomplete-switch") public static BiFunction<ItemStack, AnimType, BusAnimation> LAMBDA_DANI_ANIMS = (stack, type) -> {
switch(type) {
case EQUIP: return new BusAnimation().addBus("EQUIP", new BusAnimationSequence().addPos(360 * 3, 0, 0, 1000, IType.SIN_DOWN));
}
return LAMBDA_ATLAS_ANIMS.apply(stack, type);
};
} }

View File

@ -125,7 +125,7 @@ public class WeaponModManager {
new WeaponModDefinition(EnumModGeneric.BRONZE_DURA).addMod(bronzeGuns, new WeaponModGenericDurability(117)); new WeaponModDefinition(EnumModGeneric.BRONZE_DURA).addMod(bronzeGuns, new WeaponModGenericDurability(117));
new WeaponModDefinition(EnumModSpecial.SPEEDLOADER).addMod(ModItems.gun_liberator, new WeaponModLiberatorSpeedloader(200)); new WeaponModDefinition(EnumModSpecial.SPEEDLOADER).addMod(ModItems.gun_liberator, new WeaponModLiberatorSpeedloader(200));
new WeaponModDefinition(EnumModSpecial.SILENCER).addMod(new Item[] {ModItems.gun_uzi, ModItems.gun_uzi_akimbo, ModItems.gun_g3}, new WeaponModSilencer(ID_SILENCER)); new WeaponModDefinition(EnumModSpecial.SILENCER).addMod(new Item[] {ModItems.gun_am180, ModItems.gun_uzi, ModItems.gun_uzi_akimbo, ModItems.gun_g3}, new WeaponModSilencer(ID_SILENCER));
new WeaponModDefinition(EnumModSpecial.SCOPE).addMod(new Item[] {ModItems.gun_heavy_revolver, ModItems.gun_g3, ModItems.gun_mas36}, new WeaponModScope(ID_SCOPE)); new WeaponModDefinition(EnumModSpecial.SCOPE).addMod(new Item[] {ModItems.gun_heavy_revolver, ModItems.gun_g3, ModItems.gun_mas36}, new WeaponModScope(ID_SCOPE));
new WeaponModDefinition(EnumModSpecial.SAW) new WeaponModDefinition(EnumModSpecial.SAW)
.addMod(new Item[] {ModItems.gun_maresleg, ModItems.gun_double_barrel}, new WeaponModSawedOff(ID_SAWED_OFF)) .addMod(new Item[] {ModItems.gun_maresleg, ModItems.gun_double_barrel}, new WeaponModSawedOff(ID_SAWED_OFF))

View File

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

View File

@ -1673,13 +1673,16 @@ public class MainRegistry {
ignoreMappings.add("hbm:item.mechanism_launcher_1"); ignoreMappings.add("hbm:item.mechanism_launcher_1");
ignoreMappings.add("hbm:item.mechanism_launcher_2"); ignoreMappings.add("hbm:item.mechanism_launcher_2");
ignoreMappings.add("hbm:item.mechanism_special"); ignoreMappings.add("hbm:item.mechanism_special");
ignoreMappings.add("hbm:tile.transission_hatch");
ignoreMappings.add("hbm:tile.machine_nuke_furnace_off");
ignoreMappings.add("hbm:tile.machine_nuke_furnace_on");
ignoreMappings.add("hbm:item.singularity_micro");
/// REMAP /// /// REMAP ///
remapItems.put("hbm:item.gadget_explosive8", ModItems.early_explosive_lenses); remapItems.put("hbm:item.gadget_explosive8", ModItems.early_explosive_lenses);
remapItems.put("hbm:item.man_explosive8", ModItems.explosive_lenses); remapItems.put("hbm:item.man_explosive8", ModItems.explosive_lenses);
remapItems.put("hbm:item.briquette_lignite", ModItems.briquette); remapItems.put("hbm:item.briquette_lignite", ModItems.briquette);
remapItems.put("hbm:item.antiknock", ModItems.fuel_additive); remapItems.put("hbm:item.antiknock", ModItems.fuel_additive);
remapItems.put("hbm:item.kit_toolbox_empty", ModItems.toolbox); remapItems.put("hbm:item.kit_toolbox_empty", ModItems.toolbox);
remapItems.put("hbm:item.kit_toolbox", ModItems.legacy_toolbox); remapItems.put("hbm:item.kit_toolbox", ModItems.legacy_toolbox);
@ -1697,7 +1700,6 @@ public class MainRegistry {
} }
if(mapping.type == GameRegistry.Type.ITEM) { if(mapping.type == GameRegistry.Type.ITEM) {
if(remapItems.get(mapping.name) != null) { if(remapItems.get(mapping.name) != null) {
mapping.remap(remapItems.get(mapping.name)); mapping.remap(remapItems.get(mapping.name));
continue; continue;

View File

@ -58,7 +58,6 @@ import com.hbm.sound.MovingSoundPlayerLoop.EnumHbmSound;
import com.hbm.tileentity.bomb.TileEntityNukeCustom; import com.hbm.tileentity.bomb.TileEntityNukeCustom;
import com.hbm.tileentity.bomb.TileEntityNukeCustom.CustomNukeEntry; import com.hbm.tileentity.bomb.TileEntityNukeCustom.CustomNukeEntry;
import com.hbm.tileentity.bomb.TileEntityNukeCustom.EnumEntryType; import com.hbm.tileentity.bomb.TileEntityNukeCustom.EnumEntryType;
import com.hbm.tileentity.machine.TileEntityNukeFurnace;
import com.hbm.util.*; import com.hbm.util.*;
import com.hbm.util.ArmorRegistry.HazardClass; import com.hbm.util.ArmorRegistry.HazardClass;
import com.hbm.wiaj.GuiWorldInAJar; import com.hbm.wiaj.GuiWorldInAJar;
@ -781,13 +780,6 @@ public class ModEventHandlerClient {
} }
} }
/// NUCLEAR FURNACE FUELS ///
int breeder = TileEntityNukeFurnace.getFuelValue(stack);
if(breeder != 0) {
list.add(EnumChatFormatting.YELLOW + I18nUtil.resolveKey("trait.furnace", breeder));
}
/// CUSTOM NUKE /// /// CUSTOM NUKE ///
ComparableStack comp = new ComparableStack(stack).makeSingular(); ComparableStack comp = new ComparableStack(stack).makeSingular();

View File

@ -49,13 +49,11 @@ public class NEIConfig implements IConfigureNEI {
for(int i = 0; i < EnumSecretType.values().length; i++) API.hideItem(new ItemStack(ModItems.item_secret, 1, i)); for(int i = 0; i < EnumSecretType.values().length; i++) API.hideItem(new ItemStack(ModItems.item_secret, 1, i));
API.hideItem(new ItemStack(ModBlocks.machine_electric_furnace_on)); API.hideItem(new ItemStack(ModBlocks.machine_electric_furnace_on));
API.hideItem(new ItemStack(ModBlocks.machine_difurnace_on)); API.hideItem(new ItemStack(ModBlocks.machine_difurnace_on));
API.hideItem(new ItemStack(ModBlocks.machine_nuke_furnace_on));
API.hideItem(new ItemStack(ModBlocks.machine_rtg_furnace_on)); API.hideItem(new ItemStack(ModBlocks.machine_rtg_furnace_on));
API.hideItem(new ItemStack(ModBlocks.reinforced_lamp_on)); API.hideItem(new ItemStack(ModBlocks.reinforced_lamp_on));
API.hideItem(new ItemStack(ModBlocks.statue_elb_f)); API.hideItem(new ItemStack(ModBlocks.statue_elb_f));
API.hideItem(new ItemStack(ModBlocks.cheater_virus)); API.hideItem(new ItemStack(ModBlocks.cheater_virus));
API.hideItem(new ItemStack(ModBlocks.cheater_virus_seed)); API.hideItem(new ItemStack(ModBlocks.cheater_virus_seed));
API.hideItem(new ItemStack(ModBlocks.transission_hatch));
API.hideItem(new ItemStack(ModItems.euphemium_kit)); API.hideItem(new ItemStack(ModItems.euphemium_kit));
API.hideItem(new ItemStack(ModItems.bobmazon_hidden)); API.hideItem(new ItemStack(ModItems.bobmazon_hidden));
API.hideItem(new ItemStack(ModItems.book_lore)); //the broken nbt-less one shouldn't show up in normal play anyway API.hideItem(new ItemStack(ModItems.book_lore)); //the broken nbt-less one shouldn't show up in normal play anyway

View File

@ -278,6 +278,7 @@ public class ResourceManager {
public static final IModelCustom bomb_multi = AdvancedModelLoader.loadModel(new ResourceLocation(RefStrings.MODID, "models/BombGeneric.obj")); public static final IModelCustom bomb_multi = AdvancedModelLoader.loadModel(new ResourceLocation(RefStrings.MODID, "models/BombGeneric.obj"));
public static final IModelCustom fstbmb = new HFRWavefrontObject(new ResourceLocation(RefStrings.MODID, "models/bombs/fstbmb.obj")).asVBO(); public static final IModelCustom fstbmb = new HFRWavefrontObject(new ResourceLocation(RefStrings.MODID, "models/bombs/fstbmb.obj")).asVBO();
public static final IModelCustom dud = new HFRWavefrontObject(new ResourceLocation(RefStrings.MODID, "models/BalefireCrashed.obj")).asVBO(); public static final IModelCustom dud = new HFRWavefrontObject(new ResourceLocation(RefStrings.MODID, "models/BalefireCrashed.obj")).asVBO();
public static final IModelCustom dud_balefire = new HFRWavefrontObject(new ResourceLocation(RefStrings.MODID, "models/bombs/dud_balefire.obj")).asVBO();
//Satellites //Satellites
public static final IModelCustom sat_base = AdvancedModelLoader.loadModel(new ResourceLocation(RefStrings.MODID, "models/sat_base.obj")); public static final IModelCustom sat_base = AdvancedModelLoader.loadModel(new ResourceLocation(RefStrings.MODID, "models/sat_base.obj"));
@ -728,6 +729,7 @@ public class ResourceManager {
public static final ResourceLocation n45_chain_tex = new ResourceLocation(RefStrings.MODID, "textures/models/bombs/n45_chain.png"); public static final ResourceLocation n45_chain_tex = new ResourceLocation(RefStrings.MODID, "textures/models/bombs/n45_chain.png");
public static final ResourceLocation fstbmb_tex = new ResourceLocation(RefStrings.MODID, "textures/models/bombs/fstbmb.png"); public static final ResourceLocation fstbmb_tex = new ResourceLocation(RefStrings.MODID, "textures/models/bombs/fstbmb.png");
public static final ResourceLocation dud_tex = new ResourceLocation(RefStrings.MODID, "textures/models/BalefireCrashed.png"); public static final ResourceLocation dud_tex = new ResourceLocation(RefStrings.MODID, "textures/models/BalefireCrashed.png");
public static final ResourceLocation dud_balefire_tex = new ResourceLocation(RefStrings.MODID, "textures/models/bombs/dud_balefire.png");
//Satellites //Satellites
public static final ResourceLocation sat_base_tex = new ResourceLocation(RefStrings.MODID, "textures/models/sat_base.png"); public static final ResourceLocation sat_base_tex = new ResourceLocation(RefStrings.MODID, "textures/models/sat_base.png");

View File

@ -3,6 +3,7 @@ package com.hbm.render.item.weapon.sedna;
import org.lwjgl.opengl.GL11; import org.lwjgl.opengl.GL11;
import com.hbm.items.weapon.sedna.ItemGunBaseNT; import com.hbm.items.weapon.sedna.ItemGunBaseNT;
import com.hbm.items.weapon.sedna.mods.WeaponModManager;
import com.hbm.main.MainRegistry; import com.hbm.main.MainRegistry;
import com.hbm.main.ResourceManager; import com.hbm.main.ResourceManager;
import com.hbm.render.anim.HbmAnimations; import com.hbm.render.anim.HbmAnimations;
@ -38,6 +39,8 @@ public class ItemRenderAm180 extends ItemRenderWeaponBase {
Minecraft.getMinecraft().renderEngine.bindTexture(ResourceManager.am180_tex); Minecraft.getMinecraft().renderEngine.bindTexture(ResourceManager.am180_tex);
double scale = 0.1875D; double scale = 0.1875D;
GL11.glScaled(scale, scale, scale); GL11.glScaled(scale, scale, scale);
boolean silenced = this.hasSilencer(stack);
double[] equip = HbmAnimations.getRelevantTransformation("EQUIP"); double[] equip = HbmAnimations.getRelevantTransformation("EQUIP");
double[] recoil = HbmAnimations.getRelevantTransformation("RECOIL"); double[] recoil = HbmAnimations.getRelevantTransformation("RECOIL");
@ -59,7 +62,7 @@ public class ItemRenderAm180 extends ItemRenderWeaponBase {
HbmAnimations.applyRelevantTransformation("Gun"); HbmAnimations.applyRelevantTransformation("Gun");
ResourceManager.am180.renderPart("Gun"); ResourceManager.am180.renderPart("Gun");
ResourceManager.am180.renderPart("Silencer"); if(silenced) ResourceManager.am180.renderPart("Silencer");
GL11.glPushMatrix(); GL11.glPushMatrix();
HbmAnimations.applyRelevantTransformation("Trigger"); HbmAnimations.applyRelevantTransformation("Trigger");
@ -98,7 +101,7 @@ public class ItemRenderAm180 extends ItemRenderWeaponBase {
GL11.glPopMatrix(); GL11.glPopMatrix();
GL11.glPushMatrix(); GL11.glPushMatrix();
GL11.glTranslated(0, 1.875, 17); GL11.glTranslated(0, 1.875, silenced ? 17 : 13);
GL11.glRotated(turn[2], 0, 0, -1); GL11.glRotated(turn[2], 0, 0, -1);
GL11.glRotated(90, 0, 1, 0); GL11.glRotated(90, 0, 1, 0);
this.renderSmokeNodes(gun.getConfig(stack, 0).smokeNodes, 0.25D); this.renderSmokeNodes(gun.getConfig(stack, 0).smokeNodes, 0.25D);
@ -107,11 +110,12 @@ public class ItemRenderAm180 extends ItemRenderWeaponBase {
GL11.glShadeModel(GL11.GL_FLAT); GL11.glShadeModel(GL11.GL_FLAT);
GL11.glPushMatrix(); GL11.glPushMatrix();
GL11.glTranslated(0, 1.875, 16.75); GL11.glTranslated(0, 1.875, silenced ? 16.75 : 12);
GL11.glRotated(90, 0, 1, 0); GL11.glRotated(90, 0, 1, 0);
GL11.glRotated(90 * gun.shotRand, 1, 0, 0); GL11.glRotated(90 * gun.shotRand, 1, 0, 0);
GL11.glScaled(0.5, 0.5, 0.5); double flashScale = silenced ? 0.5 : 0.75;
this.renderMuzzleFlash(gun.lastShot[0], 75, 5); GL11.glScaled(flashScale, flashScale, flashScale);
this.renderMuzzleFlash(gun.lastShot[0], silenced ? 75 : 50, silenced ? 5 : 7.5);
GL11.glPopMatrix(); GL11.glPopMatrix();
} }
@ -148,7 +152,16 @@ public class ItemRenderAm180 extends ItemRenderWeaponBase {
GL11.glShadeModel(GL11.GL_SMOOTH); GL11.glShadeModel(GL11.GL_SMOOTH);
Minecraft.getMinecraft().renderEngine.bindTexture(ResourceManager.am180_tex); Minecraft.getMinecraft().renderEngine.bindTexture(ResourceManager.am180_tex);
ResourceManager.am180.renderAll(); ResourceManager.am180.renderPart("Gun");
if(this.hasSilencer(stack)) ResourceManager.am180.renderPart("Silencer");
ResourceManager.am180.renderPart("Trigger");
ResourceManager.am180.renderPart("Bolt");
ResourceManager.am180.renderPart("Mag");
ResourceManager.am180.renderPart("MagPlate");
GL11.glShadeModel(GL11.GL_FLAT); GL11.glShadeModel(GL11.GL_FLAT);
} }
public boolean hasSilencer(ItemStack stack) {
return WeaponModManager.hasUpgrade(stack, 0, WeaponModManager.ID_SILENCER);
}
} }

View File

@ -260,6 +260,7 @@ public abstract class ItemRenderWeaponBase implements IItemRenderer {
public void setupEntity(ItemStack stack) { public void setupEntity(ItemStack stack) {
double scale = 0.125D; double scale = 0.125D;
GL11.glScaled(scale, scale, scale); GL11.glScaled(scale, scale, scale);
GL11.glRotated(-90, 0, 1, 0);
} }
public void setupModTable(ItemStack stack) { public void setupModTable(ItemStack stack) {

View File

@ -1,38 +1,42 @@
package com.hbm.render.tileentity; package com.hbm.render.tileentity;
import java.util.Random;
import org.lwjgl.opengl.GL11; import org.lwjgl.opengl.GL11;
import com.hbm.main.ResourceManager; import com.hbm.main.ResourceManager;
import com.hbm.util.fauxpointtwelve.BlockPos;
import net.minecraft.client.renderer.tileentity.TileEntitySpecialRenderer; import net.minecraft.client.renderer.tileentity.TileEntitySpecialRenderer;
import net.minecraft.tileentity.TileEntity; import net.minecraft.tileentity.TileEntity;
public class RenderCrashedBomb extends TileEntitySpecialRenderer { public class RenderCrashedBomb extends TileEntitySpecialRenderer {
public static Random rand = new Random();
@Override @Override
public void renderTileEntityAt(TileEntity tileEntity, double x, double y, double z, float f) public void renderTileEntityAt(TileEntity tile, double x, double y, double z, float f) {
{ GL11.glPushMatrix();
GL11.glPushMatrix(); GL11.glTranslated(x + 0.5D, y, z + 0.5D);
GL11.glTranslated(x + 0.5D, y, z + 0.5D); GL11.glEnable(GL11.GL_LIGHTING);
GL11.glEnable(GL11.GL_LIGHTING); GL11.glEnable(GL11.GL_CULL_FACE);
GL11.glDisable(GL11.GL_CULL_FACE);
switch(tileEntity.getBlockMetadata()) rand.setSeed(BlockPos.getIdentity(tile.xCoord, tile.yCoord, tile.zCoord));
{ double yaw = rand.nextDouble() * 360;
case 5: double pitch = rand.nextDouble() * 45 + 45;
GL11.glRotatef(90, 0F, 1F, 0F); break; double roll = rand.nextDouble() * 360;
case 2: double offset = rand.nextDouble() * 2 - 1;
GL11.glRotatef(180, 0F, 1F, 0F); break;
case 4:
GL11.glRotatef(270, 0F, 1F, 0F); break;
case 3:
GL11.glRotatef(0, 0F, 1F, 0F); break;
}
bindTexture(ResourceManager.dud_tex); GL11.glRotated(yaw, 0, 1, 0);
ResourceManager.dud.renderAll(); GL11.glRotated(pitch, 1, 0, 0);
GL11.glRotated(roll, 0, 0, 1);
GL11.glTranslated(0, 0, -offset);
GL11.glEnable(GL11.GL_CULL_FACE); GL11.glShadeModel(GL11.GL_SMOOTH);
bindTexture(ResourceManager.dud_balefire_tex);
GL11.glPopMatrix(); ResourceManager.dud_balefire.renderAll();
} GL11.glShadeModel(GL11.GL_FLAT);
GL11.glPopMatrix();
}
} }

View File

@ -3,7 +3,6 @@ package com.hbm.render.tileentity;
import org.lwjgl.opengl.GL11; import org.lwjgl.opengl.GL11;
import com.hbm.blocks.generic.BlockSkeletonHolder.TileEntitySkeletonHolder; import com.hbm.blocks.generic.BlockSkeletonHolder.TileEntitySkeletonHolder;
import com.hbm.items.weapon.sedna.ItemGunBaseNT;
import com.hbm.main.ResourceManager; import com.hbm.main.ResourceManager;
import net.minecraft.block.Block; import net.minecraft.block.Block;
@ -45,10 +44,6 @@ public class RenderSkeletonHolder extends TileEntitySpecialRenderer {
ItemStack stack = pedestal.item.copy(); ItemStack stack = pedestal.item.copy();
GL11.glRotatef(90F, 0.0F, 1.0F, 0.0F); GL11.glRotatef(90F, 0.0F, 1.0F, 0.0F);
if(stack.getItem() instanceof ItemGunBaseNT) {
GL11.glRotatef(-90F, 0.0F, 1.0F, 0.0F);
}
if(!(stack.getItemSpriteNumber() == 0 && stack.getItem() instanceof ItemBlock && RenderBlocks.renderItemIn3d(Block.getBlockFromItem(stack.getItem()).getRenderType()))) { if(!(stack.getItemSpriteNumber() == 0 && stack.getItem() instanceof ItemBlock && RenderBlocks.renderItemIn3d(Block.getBlockFromItem(stack.getItem()).getRenderType()))) {
GL11.glScaled(1.5, 1.5, 1.5); GL11.glScaled(1.5, 1.5, 1.5);

View File

@ -62,7 +62,6 @@ public class TileMappings {
put(TileEntityMachineUF6Tank.class, "tileentity_uf6_tank"); put(TileEntityMachineUF6Tank.class, "tileentity_uf6_tank");
put(TileEntityMachinePuF6Tank.class, "tileentity_puf6_tank"); put(TileEntityMachinePuF6Tank.class, "tileentity_puf6_tank");
put(TileEntityMachineReactorBreeding.class, "tileentity_reactor"); put(TileEntityMachineReactorBreeding.class, "tileentity_reactor");
put(TileEntityNukeFurnace.class, "tileentity_nukefurnace");
put(TileEntityRtgFurnace.class, "tileentity_rtgfurnace"); put(TileEntityRtgFurnace.class, "tileentity_rtgfurnace");
put(TileEntityMachineElectricFurnace.class, "tileentity_electric_furnace"); put(TileEntityMachineElectricFurnace.class, "tileentity_electric_furnace");
put(TileEntityDecoTapeRecorder.class, "tileentity_taperecorder"); put(TileEntityDecoTapeRecorder.class, "tileentity_taperecorder");

View File

@ -17,6 +17,8 @@ import com.hbm.inventory.fluid.trait.FluidTrait.FluidReleaseType;
import com.hbm.inventory.gui.GUIMachineDiesel; import com.hbm.inventory.gui.GUIMachineDiesel;
import com.hbm.items.ModItems; import com.hbm.items.ModItems;
import com.hbm.lib.Library; import com.hbm.lib.Library;
import com.hbm.main.MainRegistry;
import com.hbm.sound.AudioWrapper;
import com.hbm.tileentity.IConfigurableMachine; import com.hbm.tileentity.IConfigurableMachine;
import com.hbm.tileentity.IFluidCopiable; import com.hbm.tileentity.IFluidCopiable;
import com.hbm.tileentity.IGUIProvider; import com.hbm.tileentity.IGUIProvider;
@ -40,9 +42,11 @@ import net.minecraftforge.common.util.ForgeDirection;
public class TileEntityMachineDiesel extends TileEntityMachinePolluting implements IEnergyProviderMK2, IFluidStandardTransceiver, IConfigurableMachine, IGUIProvider, IInfoProviderEC, IFluidCopiable { public class TileEntityMachineDiesel extends TileEntityMachinePolluting implements IEnergyProviderMK2, IFluidStandardTransceiver, IConfigurableMachine, IGUIProvider, IInfoProviderEC, IFluidCopiable {
public long power; public long power;
public int soundCycle = 0;
public long powerCap = maxPower; public long powerCap = maxPower;
public FluidTank tank; public FluidTank tank;
public boolean wasOn = false;
private AudioWrapper audio;
/* CONFIGURABLE CONSTANTS */ /* CONFIGURABLE CONSTANTS */
public static long maxPower = 50000; public static long maxPower = 50000;
@ -53,7 +57,6 @@ public class TileEntityMachineDiesel extends TileEntityMachinePolluting implemen
fuelEfficiency.put(FuelGrade.HIGH, 0.75D); fuelEfficiency.put(FuelGrade.HIGH, 0.75D);
fuelEfficiency.put(FuelGrade.AERO, 0.1D); fuelEfficiency.put(FuelGrade.AERO, 0.1D);
} }
public static boolean shutUp = false;
private static final int[] slots_top = new int[] { 0 }; private static final int[] slots_top = new int[] { 0 };
private static final int[] slots_bottom = new int[] { 1, 2 }; private static final int[] slots_bottom = new int[] { 1, 2 };
@ -71,13 +74,8 @@ public class TileEntityMachineDiesel extends TileEntityMachinePolluting implemen
@Override @Override
public boolean isItemValidForSlot(int i, ItemStack stack) { public boolean isItemValidForSlot(int i, ItemStack stack) {
if (i == 0) if(i == 0) return FluidContainerRegistry.getFluidContent(stack, tank.getTankType()) > 0;
if (FluidContainerRegistry.getFluidContent(stack, tank.getTankType()) > 0) if(i == 2) return stack.getItem() instanceof IBatteryItem;
return true;
if (i == 2)
if (stack.getItem() instanceof IBatteryItem)
return true;
return false; return false;
} }
@ -106,17 +104,8 @@ public class TileEntityMachineDiesel extends TileEntityMachinePolluting implemen
@Override @Override
public boolean canExtractItem(int i, ItemStack stack, int j) { public boolean canExtractItem(int i, ItemStack stack, int j) {
if(i == 1) { if(i == 1) return stack.getItem() == ModItems.canister_empty || stack.getItem() == ModItems.tank_steel;
if(stack.getItem() == ModItems.canister_empty || stack.getItem() == ModItems.tank_steel) { if(i == 2) return stack.getItem() instanceof IBatteryItem && ((IBatteryItem) stack.getItem()).getCharge(stack) == ((IBatteryItem) stack.getItem()).getMaxCharge(stack);
return true;
}
}
if(i == 2) {
if(stack.getItem() instanceof IBatteryItem && ((IBatteryItem) stack.getItem()).getCharge(stack) == ((IBatteryItem) stack.getItem()).getMaxCharge(stack)) {
return true;
}
}
return false; return false;
} }
@ -129,6 +118,8 @@ public class TileEntityMachineDiesel extends TileEntityMachinePolluting implemen
if(!worldObj.isRemote) { if(!worldObj.isRemote) {
this.wasOn = false;
for(ForgeDirection dir : ForgeDirection.VALID_DIRECTIONS) { for(ForgeDirection dir : ForgeDirection.VALID_DIRECTIONS) {
this.tryProvide(worldObj, xCoord + dir.offsetX, yCoord + dir.offsetY, zCoord + dir.offsetZ, dir); this.tryProvide(worldObj, xCoord + dir.offsetX, yCoord + dir.offsetY, zCoord + dir.offsetZ, dir);
this.sendSmoke(xCoord + dir.offsetX, yCoord + dir.offsetY, zCoord + dir.offsetZ, dir); this.sendSmoke(xCoord + dir.offsetX, yCoord + dir.offsetY, zCoord + dir.offsetZ, dir);
@ -153,6 +144,49 @@ public class TileEntityMachineDiesel extends TileEntityMachinePolluting implemen
generate(); generate();
this.networkPackNT(50); this.networkPackNT(50);
} else {
if(wasOn) {
if(audio == null) {
audio = createAudioLoop();
audio.startSound();
} else if(!audio.isPlaying()) {
audio = rebootAudio(audio);
}
audio.keepAlive();
audio.updateVolume(this.getVolume(1F));
} else {
if(audio != null) {
audio.stopSound();
audio = null;
}
}
}
}
@Override
public AudioWrapper createAudioLoop() {
return MainRegistry.proxy.getLoopedSound("hbm:block.engine", xCoord, yCoord, zCoord, 1.0F, 10F, 1.0F, 10);
}
@Override
public void onChunkUnload() {
if(audio != null) {
audio.stopSound();
audio = null;
}
}
@Override
public void invalidate() {
super.invalidate();
if(audio != null) {
audio.stopSound();
audio = null;
} }
} }
@ -161,6 +195,7 @@ public class TileEntityMachineDiesel extends TileEntityMachinePolluting implemen
super.serialize(buf); super.serialize(buf);
buf.writeInt((int) power); buf.writeInt((int) power);
buf.writeInt((int) powerCap); buf.writeInt((int) powerCap);
buf.writeBoolean(wasOn);
tank.serialize(buf); tank.serialize(buf);
} }
@ -169,6 +204,7 @@ public class TileEntityMachineDiesel extends TileEntityMachinePolluting implemen
super.deserialize(buf); super.deserialize(buf);
this.power = buf.readInt(); this.power = buf.readInt();
this.powerCap = buf.readInt(); this.powerCap = buf.readInt();
this.wasOn = buf.readBoolean();
tank.deserialize(buf); tank.deserialize(buf);
} }
@ -200,15 +236,7 @@ public class TileEntityMachineDiesel extends TileEntityMachinePolluting implemen
if(hasAcceptableFuel()) { if(hasAcceptableFuel()) {
if (tank.getFill() > 0) { if (tank.getFill() > 0) {
if(!shutUp) { this.wasOn = true;
if (soundCycle == 0) {
this.worldObj.playSoundEffect(this.xCoord, this.yCoord, this.zCoord, "fireworks.blast", this.getVolume(0.75F), 0.5F);
}
soundCycle++;
}
if(soundCycle >= 3)
soundCycle = 0;
tank.setFill(tank.getFill() - 1); tank.setFill(tank.getFill() - 1);
if(tank.getFill() < 0) if(tank.getFill() < 0)
@ -227,30 +255,12 @@ public class TileEntityMachineDiesel extends TileEntityMachinePolluting implemen
} }
} }
@Override @Override public long getPower() { return power; }
public long getPower() { @Override public void setPower(long i) { this.power = i; }
return power; @Override public long getMaxPower() { return this.maxPower; }
}
@Override @Override public FluidTank[] getReceivingTanks() { return new FluidTank[] {tank}; }
public void setPower(long i) { @Override public FluidTank[] getAllTanks() { return new FluidTank[] { tank }; }
this.power = i;
}
@Override
public long getMaxPower() {
return this.maxPower;
}
@Override
public FluidTank[] getReceivingTanks() {
return new FluidTank[] {tank};
}
@Override
public FluidTank[] getAllTanks() {
return new FluidTank[] { tank };
}
@Override @Override
public String getConfigName() { public String getConfigName() {
@ -268,7 +278,6 @@ public class TileEntityMachineDiesel extends TileEntityMachinePolluting implemen
fuelEfficiency.put(grade, array.get(grade.ordinal()).getAsDouble()); fuelEfficiency.put(grade, array.get(grade.ordinal()).getAsDouble());
} }
} }
shutUp = IConfigurableMachine.grab(obj, "B:shutUp", shutUp);
} }
@Override @Override
@ -287,7 +296,6 @@ public class TileEntityMachineDiesel extends TileEntityMachinePolluting implemen
writer.value(d); writer.value(d);
} }
writer.endArray().setIndent(" "); writer.endArray().setIndent(" ");
writer.name("B:shutUp").value(shutUp);
} }
@Override @Override

View File

@ -3,6 +3,8 @@ package com.hbm.tileentity.machine;
import com.hbm.inventory.fluid.FluidType; import com.hbm.inventory.fluid.FluidType;
import com.hbm.inventory.fluid.Fluids; import com.hbm.inventory.fluid.Fluids;
import com.hbm.inventory.fluid.tank.FluidTank; import com.hbm.inventory.fluid.tank.FluidTank;
import com.hbm.main.MainRegistry;
import com.hbm.sound.AudioWrapper;
import com.hbm.tileentity.TileEntityLoadedBase; import com.hbm.tileentity.TileEntityLoadedBase;
import com.hbm.util.fauxpointtwelve.DirPos; import com.hbm.util.fauxpointtwelve.DirPos;
@ -21,6 +23,7 @@ public class TileEntityMachineIntake extends TileEntityLoadedBase implements IEn
public long power; public long power;
public float fan = 0; public float fan = 0;
public float prevFan = 0; public float prevFan = 0;
private AudioWrapper audio;
public TileEntityMachineIntake() { public TileEntityMachineIntake() {
this.compair = new FluidTank(Fluids.AIR, 1_000); this.compair = new FluidTank(Fluids.AIR, 1_000);
@ -54,6 +57,23 @@ public class TileEntityMachineIntake extends TileEntityLoadedBase implements IEn
this.fan -= 360; this.fan -= 360;
this.prevFan -= 360; this.prevFan -= 360;
} }
if(audio == null) {
audio = createAudioLoop();
audio.startSound();
} else if(!audio.isPlaying()) {
audio = rebootAudio(audio);
}
audio.keepAlive();
audio.updateVolume(this.getVolume(0.25F));
} else {
if(audio != null) {
audio.stopSound();
audio = null;
}
} }
} }
} }
@ -76,6 +96,19 @@ public class TileEntityMachineIntake extends TileEntityLoadedBase implements IEn
}; };
} }
@Override public AudioWrapper createAudioLoop() {
return MainRegistry.proxy.getLoopedSound("hbm:block.motor", xCoord, yCoord, zCoord, 0.25F, 10F, 1.0F, 20);
}
@Override public void onChunkUnload() {
if(audio != null) { audio.stopSound(); audio = null; }
}
@Override public void invalidate() {
super.invalidate();
if(audio != null) { audio.stopSound(); audio = null; }
}
@Override @Override
public void serialize(ByteBuf buf) { public void serialize(ByteBuf buf) {
super.serialize(buf); super.serialize(buf);

View File

@ -143,7 +143,7 @@ public class TileEntityMachineRotaryFurnace extends TileEntityMachinePolluting i
speed = (float)(13 * Math.log10(speed) + 1); speed = (float)(13 * Math.log10(speed) + 1);
tanks[1].setFill((int) (tanks[1].getFill() - recipe.steam * speed)); tanks[1].setFill((int) (tanks[1].getFill() - recipe.steam * speed));
tanks[2].setFill((int) (tanks[2].getFill() + recipe.steam * speed / 100)); steamUsed += recipe.steam * speed;
this.isProgressing = true; this.isProgressing = true;
if(this.progress >= 1F) { if(this.progress >= 1F) {
@ -309,8 +309,10 @@ public class TileEntityMachineRotaryFurnace extends TileEntityMachinePolluting i
if(this.tanks[0].getFill() < recipe.fluid.fill) return false; if(this.tanks[0].getFill() < recipe.fluid.fill) return false;
} }
if(tanks[1].getFill() < recipe.steam) return false; float speed = Math.max((float) burnHeat, 1);
if(tanks[2].getMaxFill() - tanks[2].getFill() < recipe.steam / 100) return false;
if(tanks[1].getFill() < recipe.steam * speed) return false;
if(tanks[2].getMaxFill() - tanks[2].getFill() < recipe.steam * speed / 100) return false;
if(this.steamUsed > 100) return false; if(this.steamUsed > 100) return false;
if(this.output != null) { if(this.output != null) {

View File

@ -1,386 +0,0 @@
package com.hbm.tileentity.machine;
import java.util.HashMap;
import com.hbm.blocks.machine.MachineNukeFurnace;
import com.hbm.inventory.RecipesCommon.ComparableStack;
import com.hbm.inventory.container.ContainerNukeFurnace;
import com.hbm.inventory.gui.GUINukeFurnace;
import com.hbm.items.ItemCustomLore;
import com.hbm.items.ModItems;
import com.hbm.tileentity.IGUIProvider;
import cpw.mods.fml.relauncher.Side;
import cpw.mods.fml.relauncher.SideOnly;
import net.minecraft.entity.player.EntityPlayer;
import net.minecraft.inventory.Container;
import net.minecraft.inventory.ISidedInventory;
import net.minecraft.item.ItemStack;
import net.minecraft.item.crafting.FurnaceRecipes;
import net.minecraft.nbt.NBTTagCompound;
import net.minecraft.nbt.NBTTagList;
import net.minecraft.tileentity.TileEntity;
import net.minecraft.world.World;
public class TileEntityNukeFurnace extends TileEntity implements ISidedInventory, IGUIProvider {
private ItemStack slots[];
public int dualCookTime;
public int dualPower;
public static final int maxPower = 1000;
public static final int processingSpeed = 25;
private static final int[] slots_top = new int[] {1};
private static final int[] slots_bottom = new int[] {2, 0};
private static final int[] slots_side = new int[] {0};
private String customName;
public TileEntityNukeFurnace() {
slots = new ItemStack[3];
}
@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.nukeFurnace";
}
@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) <=64;
}
}
//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) {
return true;
}
public boolean hasItemPower(ItemStack itemStack) {
return getItemPower(itemStack) > 0;
}
private static int getItemPower(ItemStack stack) {
if(stack == null) {
return 0;
} else {
int power = getFuelValue(stack);
return power;
}
}
@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);
dualPower = nbt.getShort("powerTime");
dualCookTime = nbt.getShort("CookTime");
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.setShort("powerTime", (short) dualPower);
nbt.setShort("cookTime", (short) dualCookTime);
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 p_94128_1_ == 0 ? slots_bottom : (p_94128_1_ == 1 ? slots_top : slots_side);
}
@Override
public boolean canInsertItem(int i, ItemStack itemStack, int j) {
if(i == 0)
{
if(itemStack.getItem() instanceof ItemCustomLore)
{
return true;
}
return false;
}
return true;
}
@Override
public boolean canExtractItem(int i, ItemStack itemStack, int j) {
if(i == 0)
{
if(itemStack.getItem() == ModItems.rod_empty || itemStack.getItem() == ModItems.rod_dual_empty || itemStack.getItem() == ModItems.rod_quad_empty)
{
return true;
}
return false;
}
return true;
}
public int getDiFurnaceProgressScaled(int i) {
return (dualCookTime * i) / processingSpeed;
}
public int getPowerRemainingScaled(int i) {
return (dualPower * i) / maxPower;
}
public boolean canProcess() {
if(slots[1] == null)
{
return false;
}
ItemStack itemStack = FurnaceRecipes.smelting().getSmeltingResult(this.slots[1]);
if(itemStack == null)
{
return false;
}
if(slots[2] == null)
{
return true;
}
if(!slots[2].isItemEqual(itemStack)) {
return false;
}
if(slots[2].stackSize < getInventoryStackLimit() && slots[2].stackSize < slots[2].getMaxStackSize()) {
return true;
}else{
return slots[2].stackSize < itemStack.getMaxStackSize();
}
}
private void processItem() {
if(canProcess()) {
ItemStack itemStack = FurnaceRecipes.smelting().getSmeltingResult(this.slots[1]);
if(slots[2] == null)
{
slots[2] = itemStack.copy();
}else if(slots[2].isItemEqual(itemStack)) {
slots[2].stackSize += itemStack.stackSize;
}
for(int i = 1; i < 2; i++)
{
if(slots[i].stackSize <= 0)
{
slots[i] = new ItemStack(slots[i].getItem().setFull3D());
}else{
slots[i].stackSize--;
}
if(slots[i].stackSize <= 0)
{
slots[i] = null;
}
}
{
dualPower--;
}
}
}
public boolean hasPower() {
return dualPower > 0;
}
public boolean isProcessing() {
return this.dualCookTime > 0;
}
@Override
public void updateEntity() {
this.hasPower();
boolean flag1 = false;
if(!worldObj.isRemote)
{
if(this.hasItemPower(this.slots[0]) && this.dualPower == 0)
{
this.dualPower += getItemPower(this.slots[0]);
if(this.slots[0] != null)
{
flag1 = true;
this.slots[0].stackSize--;
if(this.slots[0].stackSize == 0)
{
this.slots[0] = this.slots[0].getItem().getContainerItem(this.slots[0]);
}
}
}
if(hasPower() && canProcess())
{
dualCookTime++;
if(this.dualCookTime == TileEntityNukeFurnace.processingSpeed)
{
this.dualCookTime = 0;
this.processItem();
flag1 = true;
}
}else{
dualCookTime = 0;
}
boolean trigger = true;
if(hasPower() && canProcess() && this.dualCookTime == 0)
{
trigger = false;
}
if(trigger)
{
flag1 = true;
MachineNukeFurnace.updateBlockState(this.dualCookTime > 0, this.worldObj, this.xCoord, this.yCoord, this.zCoord);
}
}
if(flag1)
{
this.markDirty();
}
}
private static HashMap<ComparableStack, Integer> fuels = new HashMap();
/**
* Returns an integer array of the fuel value of a certain stack
* @param stack
* @return an integer array (possibly null) with two fields, the HEAT value and the amount of operations
*/
public static int getFuelValue(ItemStack stack) {
if(stack == null)
return 0;
ComparableStack sta = new ComparableStack(stack).makeSingular();
if(fuels.get(sta) != null)
return fuels.get(sta);
return 0;
}
@Override
public Container provideContainer(int ID, EntityPlayer player, World world, int x, int y, int z) {
return new ContainerNukeFurnace(player.inventory, this);
}
@Override
@SideOnly(Side.CLIENT)
public Object provideGUI(int ID, EntityPlayer player, World world, int x, int y, int z) {
return new GUINukeFurnace(player.inventory, this);
}
}

View File

@ -56,9 +56,9 @@ public abstract class TileEntityRBMKBase extends TileEntityLoadedBase {
public double heat; public double heat;
public int water; public int reasimWater;
public static final int maxWater = 16000; public static final int maxWater = 16000;
public int steam; public int reasimSteam;
public static final int maxSteam = 16000; public static final int maxSteam = 16000;
public boolean hasLid() { public boolean hasLid() {
@ -130,15 +130,15 @@ public abstract class TileEntityRBMKBase extends TileEntityLoadedBase {
double heatConsumption = RBMKDials.getBoilerHeatConsumption(worldObj); double heatConsumption = RBMKDials.getBoilerHeatConsumption(worldObj);
double availableHeat = (this.heat - 100) / heatConsumption; double availableHeat = (this.heat - 100) / heatConsumption;
double availableWater = this.water; double availableWater = this.reasimWater;
double availableSpace = maxSteam - this.steam; double availableSpace = maxSteam - this.reasimSteam;
int processedWater = (int) Math.floor(BobMathUtil.min(availableHeat, availableWater, availableSpace) * MathHelper.clamp_double(RBMKDials.getReaSimBoilerSpeed(worldObj), 0D, 1D)); int processedWater = (int) Math.floor(BobMathUtil.min(availableHeat, availableWater, availableSpace) * MathHelper.clamp_double(RBMKDials.getReaSimBoilerSpeed(worldObj), 0D, 1D));
if(processedWater <= 0) return; if(processedWater <= 0) return;
this.water -= processedWater; this.reasimWater -= processedWater;
this.steam += processedWater; this.reasimSteam += processedWater;
this.heat -= processedWater * heatConsumption; this.heat -= processedWater * heatConsumption;
} }
@ -162,8 +162,8 @@ public abstract class TileEntityRBMKBase extends TileEntityLoadedBase {
List<TileEntityRBMKBase> rec = new ArrayList<>(); List<TileEntityRBMKBase> rec = new ArrayList<>();
rec.add(this); rec.add(this);
double heatTot = this.heat; double heatTot = this.heat;
int waterTot = this.water; int waterTot = this.reasimWater;
int steamTot = this.steam; int steamTot = this.reasimSteam;
int index = 0; int index = 0;
for(ForgeDirection dir : neighborDirs) { for(ForgeDirection dir : neighborDirs) {
@ -188,8 +188,8 @@ public abstract class TileEntityRBMKBase extends TileEntityLoadedBase {
if(base != null) { if(base != null) {
rec.add(base); rec.add(base);
heatTot += base.heat; heatTot += base.heat;
waterTot += base.water; waterTot += base.reasimWater;
steamTot += base.steam; steamTot += base.reasimSteam;
} }
} }
@ -210,13 +210,13 @@ public abstract class TileEntityRBMKBase extends TileEntityLoadedBase {
rbmk.heat += delta * stepSize; rbmk.heat += delta * stepSize;
//set to the averages, rounded down //set to the averages, rounded down
rbmk.water = tWater; rbmk.reasimWater = tWater;
rbmk.steam = tSteam; rbmk.reasimSteam = tSteam;
} }
//add the modulo to make up for the losses coming from rounding //add the modulo to make up for the losses coming from rounding
this.water += rWater; this.reasimWater += rWater;
this.steam += rSteam; this.reasimSteam += rSteam;
this.markDirty(); this.markDirty();
} }
@ -271,8 +271,8 @@ public abstract class TileEntityRBMKBase extends TileEntityLoadedBase {
} }
this.heat = nbt.getDouble("heat"); this.heat = nbt.getDouble("heat");
this.water = nbt.getInteger("water"); this.reasimWater = nbt.getInteger("reasimWater");
this.steam = nbt.getInteger("steam"); this.reasimSteam = nbt.getInteger("reasimSteam");
} }
@Override @Override
@ -283,22 +283,22 @@ public abstract class TileEntityRBMKBase extends TileEntityLoadedBase {
} }
nbt.setDouble("heat", this.heat); nbt.setDouble("heat", this.heat);
nbt.setInteger("water", this.water); nbt.setInteger("reasimWater", this.reasimWater);
nbt.setInteger("steam", this.steam); nbt.setInteger("reasimSteam", this.reasimSteam);
} }
@Override @Override
public void serialize(ByteBuf buf) { public void serialize(ByteBuf buf) {
buf.writeDouble(this.heat); buf.writeDouble(this.heat);
buf.writeInt(this.water); buf.writeInt(this.reasimWater);
buf.writeInt(this.steam); buf.writeInt(this.reasimSteam);
} }
@Override @Override
public void deserialize(ByteBuf buf) { public void deserialize(ByteBuf buf) {
this.heat = buf.readDouble(); this.heat = buf.readDouble();
this.water = buf.readInt(); this.reasimWater = buf.readInt();
this.steam = buf.readInt(); this.reasimSteam = buf.readInt();
} }
public void getDiagData(NBTTagCompound nbt) { public void getDiagData(NBTTagCompound nbt) {

View File

@ -41,8 +41,8 @@ public class TileEntityRBMKInlet extends TileEntityLoadedBase implements IFluidS
if(te instanceof TileEntityRBMKBase) { if(te instanceof TileEntityRBMKBase) {
TileEntityRBMKBase rbmk = (TileEntityRBMKBase) te; TileEntityRBMKBase rbmk = (TileEntityRBMKBase) te;
int prov = Math.min(rbmk.maxWater - rbmk.water, water.getFill()); int prov = Math.min(rbmk.maxWater - rbmk.reasimWater, water.getFill());
rbmk.water += prov; rbmk.reasimWater += prov;
water.setFill(water.getFill() - prov); water.setFill(water.getFill() - prov);
} }
} }

View File

@ -39,8 +39,8 @@ public class TileEntityRBMKOutlet extends TileEntityLoadedBase implements IFluid
if(te instanceof TileEntityRBMKBase) { if(te instanceof TileEntityRBMKBase) {
TileEntityRBMKBase rbmk = (TileEntityRBMKBase) te; TileEntityRBMKBase rbmk = (TileEntityRBMKBase) te;
int prov = Math.min(steam.getMaxFill() - steam.getFill(), rbmk.steam); int prov = Math.min(steam.getMaxFill() - steam.getFill(), rbmk.reasimSteam);
rbmk.steam -= prov; rbmk.reasimSteam -= prov;
steam.setFill(steam.getFill() + prov); steam.setFill(steam.getFill() + prov);
} }
} }

View File

@ -85,7 +85,11 @@ public class BlockPos implements Cloneable {
/** modified 1.12 vanilla implementation */ /** modified 1.12 vanilla implementation */
@Override @Override
public int hashCode() { public int hashCode() {
return (this.getY() + this.getZ() * 27644437) * 27644437 + this.getX(); return getIdentity(this.getX(), this.getY(), this.getZ());
}
public static int getIdentity(int x, int y, int z) {
return (y + z * 27644437) * 27644437 + x;
} }
@Override @Override

View File

@ -27,7 +27,7 @@ public class DesertAtom001 extends WorldGenerator
Block Block7 = ModBlocks.deco_tungsten; Block Block7 = ModBlocks.deco_tungsten;
Block Block8 = ModBlocks.steel_poles; Block Block8 = ModBlocks.steel_poles;
Block Block9 = ModBlocks.tape_recorder; Block Block9 = ModBlocks.tape_recorder;
Block Block10 = ModBlocks.machine_nuke_furnace_off; Block Block10 = ModBlocks.machine_rtg_furnace_off;
Block Block11 = ModBlocks.reinforced_glass; Block Block11 = ModBlocks.reinforced_glass;
Block Block12 = ModBlocks.reinforced_lamp_off; Block Block12 = ModBlocks.reinforced_lamp_off;
Block Block13 = ModBlocks.pole_satellite_receiver; Block Block13 = ModBlocks.pole_satellite_receiver;

View File

@ -27,7 +27,7 @@ public class DesertAtom002
Block Block7 = ModBlocks.deco_tungsten; Block Block7 = ModBlocks.deco_tungsten;
Block Block8 = ModBlocks.steel_poles; Block Block8 = ModBlocks.steel_poles;
Block Block9 = ModBlocks.tape_recorder; Block Block9 = ModBlocks.tape_recorder;
Block Block10 = ModBlocks.machine_nuke_furnace_off; Block Block10 = ModBlocks.machine_rtg_furnace_off;
Block Block11 = ModBlocks.reinforced_glass; Block Block11 = ModBlocks.reinforced_glass;
Block Block12 = ModBlocks.reinforced_lamp_off; Block Block12 = ModBlocks.reinforced_lamp_off;
Block Block13 = ModBlocks.pole_satellite_receiver; Block Block13 = ModBlocks.pole_satellite_receiver;

View File

@ -30,7 +30,7 @@ public class DesertAtom003
Block Block7 = ModBlocks.deco_tungsten; Block Block7 = ModBlocks.deco_tungsten;
Block Block8 = ModBlocks.steel_poles; Block Block8 = ModBlocks.steel_poles;
Block Block9 = ModBlocks.tape_recorder; Block Block9 = ModBlocks.tape_recorder;
Block Block10 = ModBlocks.machine_nuke_furnace_off; Block Block10 = ModBlocks.machine_rtg_furnace_off;
Block Block11 = ModBlocks.reinforced_glass; Block Block11 = ModBlocks.reinforced_glass;
Block Block12 = ModBlocks.reinforced_lamp_off; Block Block12 = ModBlocks.reinforced_lamp_off;
Block Block13 = ModBlocks.pole_satellite_receiver; Block Block13 = ModBlocks.pole_satellite_receiver;

View File

@ -1017,105 +1017,6 @@ item.alloy_pickaxe.name=Legierungsspitzhacke
item.alloy_plate.name=Legierungsbrustpanzer item.alloy_plate.name=Legierungsbrustpanzer
item.alloy_shovel.name=Legierungsschaufel item.alloy_shovel.name=Legierungsschaufel
item.alloy_sword.name=Legierungsschwert item.alloy_sword.name=Legierungsschwert
item.ammo_12gauge.name=Kaliber 12 Schrot
item.ammo_12gauge_du.name=Kaliber 12 Schrot (Uranbeschichtung)
item.ammo_12gauge_incendiary.name=Kaliber 12 Schrot (Brand)
item.ammo_12gauge_marauder.name=Kaliber 12 Taktische Anti-Marauder Schrotpatrone
item.ammo_12gauge_percussion.name=Kaliber 12 Sprengkapsel
item.ammo_12gauge_shrapnel.name=Kaliber 12 Schrot (Schrapnell)
item.ammo_12gauge_sleek.name=Kaliber 12 Schrot (IF-F&E)
item.ammo_20gauge.name=Kaliber 20 Schrot
item.ammo_20gauge_caustic.name=Kaliber 20 Schrot (Ätzend)
item.ammo_20gauge_explosive.name=Kaliber 20 Schrot (Explosiv)
item.ammo_20gauge_flechette.name=Kaliber 20 Flechet
item.ammo_20gauge_incendiary.name=Kaliber 20 Schrot (Brand)
item.ammo_20gauge_shock.name=Kaliber 20 Schrot (Schock)
item.ammo_20gauge_shrapnel.name=Kaliber 20 Schrot (Schrapnell)
item.ammo_20gauge_sleek.name=Kaliber 20 Schrot (IF-F&E)
item.ammo_20gauge_slug.name=Kaliber 20 Brenneke
item.ammo_20gauge_wither.name=Kaliber 20 Schrot (Wither)
item.ammo_22lr.name=.22 lfB Patrone
item.ammo_22lr_ap.name=.22 lfB Patrone (Panzerbrechend)
item.ammo_22lr_chlorophyte.name=.22 lfB Patrone (Grünalgen)
item.ammo_357_desh.name=.357 Magnum Deshkugel
item.ammo_44.name=.44 Magnum Patrone
item.ammo_44_ap.name=.44 Magnum Patrone (Panzerbrechend)
item.ammo_44_bj.name=.44 Magnum Patrone (Boot)
item.ammo_44_chlorophyte.name=.44 Magnum Patrone (Grünalgen)
item.ammo_44_du.name=.44 Magnum Patrone (DU)
item.ammo_44_phosphorus.name=.44 Magnum Patrone (WP)
item.ammo_44_pip.name=.44 Magnum Patrone (Güterwagon)
item.ammo_44_rocket.name=.44 Magnum Rakete
item.ammo_44_silver.name=.44 Magnum Patrone (Gebäude)
item.ammo_44_star.name=.44 Magnum Patrone (Sternenmetall)
item.ammo_45.name=.45 ACP Patrone
item.ammo_45_ap.name=.45 ACP Patrone (AP)
item.ammo_45_du.name=.45 ACP Patrone (DU)
item.ammo_4gauge.name=Kaliber 20 Schrot
item.ammo_4gauge_balefire.name=23mm Balefire-Granate
item.ammo_4gauge_canister.name=23mm Rakete (Katusche)
item.ammo_4gauge_claw.name=Kaliber 4 Shrot (Krallen)
item.ammo_4gauge_explosive.name=23mm Granate
item.ammo_4gauge_flechette.name=Kaliber 4 Flechet
item.ammo_4gauge_flechette_phosphorus.name=Kaliber 4 Flechet (WP)
item.ammo_4gauge_kampf.name=23mm Rakete
item.ammo_4gauge_semtex.name=23mm Bergbauladung
item.ammo_4gauge_sleek.name=Kaliber 4 Schrot (IF-F&E)
item.ammo_4gauge_slug.name=Kaliber 4 Brenneke
item.ammo_4gauge_titan.name=Kaliber 4 Quak-Geschoss
item.ammo_4gauge_vampire.name=Kaliber 4 Schrot (Holzpflöcke)
item.ammo_4gauge_void.name=Kaliber 4 Schrot (Leere)
item.ammo_50ae.name=.50 AE Patrone
item.ammo_50ae_ap.name=.50 AE Patrone (Panzerbrechend)
item.ammo_50ae_chlorophyte.name=.50 AE Patrone (Grünalgen)
item.ammo_50ae_du.name=.50 AE Patrone (DU)
item.ammo_50ae_star.name=.50 AE Patrone (Sternenmetall)
item.ammo_50bmg.name=.50 BMG Patrone
item.ammo_50bmg_ap.name=.50 BMG Patrone (Panzerbrechend)
item.ammo_50bmg_chlorophyte.name=.50 BMG Patrone (Grünalgen)
item.ammo_50bmg_du.name=.50 BMG Patrone (DU)
item.ammo_50bmg_explosive.name=.50 BMG Patrone (Explosiv)
item.ammo_50bmg_flechette.name=.50 BMG Flechetpatrone
item.ammo_50bmg_flechette_am.name=.50 BMG Flechetpatrone (Americium)
item.ammo_50bmg_flechette_po.name=.50 BMG Flechetpatrone (Polonium)
item.ammo_50bmg_incendiary.name=.50 BMG Patrone (Brand)
item.ammo_50bmg_phosphorus.name=.50 BMG Patrone (WP)
item.ammo_50bmg_sleek.name=.50 BMG Patrone (IF-F&E)
item.ammo_50bmg_star.name=.50 BMG Patrone (Sternenmetall)
item.ammo_556.name=5.56mm Patrone
item.ammo_556_ap.name=5.56mm Patrone (Panzerbrechend)
item.ammo_556_chlorophyte.name=5.56mm Patrone (Grünalgen)
item.ammo_556_du.name=5.56mm Patrone (DU)
item.ammo_556_flechette.name=5.56mm Flechetpatrone
item.ammo_556_flechette_chlorophyte.name=5.56mm Flechetpatrone (Grünalgen)
item.ammo_556_flechette_du.name=5.56mm Flechetpatrone (Uran-Penetrator)
item.ammo_556_flechette_incendiary.name=5.56mm Flechetpatrone (Brand)
item.ammo_556_flechette_phosphorus.name=5.56mm Flechetpatrone (Phosphorspitze)
item.ammo_556_flechette_sleek.name=5.56mm Flechetpatrone (IF-F&E)
item.ammo_556_k.name=5.56mm K-Patrone
item.ammo_556_phosphorus.name=5.56mm Patrone (WP)
item.ammo_556_sleek.name=5.56mm Patrone (IF-F&E)
item.ammo_556_star.name=5.56mm Patrone (Sternenmetall)
item.ammo_556_tracer.name=5.56mm Patrone (Leuchtspur)
item.ammo_5mm.name=5mm Patrone
item.ammo_5mm_chlorophyte.name=5mm Patrone (Grünalgen)
item.ammo_5mm_du.name=5mm Patrone (DU)
item.ammo_5mm_explosive.name=5mm Patrone (Explosiv)
item.ammo_5mm_star.name=5mm Patrone (Sternenmetall)
item.ammo_762.name=7.62mm Patrone
item.ammo_762_ap.name=7.62mm Patrone (AP)
item.ammo_762_du.name=7.62mm Patrone (DU)
item.ammo_762_k.name=7.62mm K-Patrone
item.ammo_762_phosphorus.name=7.62mm Patrone (WP)
item.ammo_762_tracer.name=7.62mm Patrone (Leuchtspur)
item.ammo_75bolt.name=30er .75 Bolzenmagazin
item.ammo_75bolt_incendiary.name=30er .75 Bolzenmagazin (Brand)
item.ammo_75bolt_he.name=30er .75 Bolzenmagazin (Explosiv)
item.ammo_9mm.name=9mm Patrone
item.ammo_9mm_ap.name=9mm Patrone (Panzerbrechend)
item.ammo_9mm_chlorophyte.name=9mm Patrone (Grünalgen)
item.ammo_9mm_du.name=9mm Patrone (DU)
item.ammo_9mm_rocket.name=9mm Rakete
item.ammo_arty.name=16" Artilleriegranate item.ammo_arty.name=16" Artilleriegranate
item.ammo_arty_cargo.name=16" Artilleriegranate (Expresslieferung) item.ammo_arty_cargo.name=16" Artilleriegranate (Expresslieferung)
item.ammo_arty_chlorine.name=16" Artilleriegranate (Chlorgas) item.ammo_arty_chlorine.name=16" Artilleriegranate (Chlorgas)
@ -1128,38 +1029,10 @@ item.ammo_arty_nuke.name=16" Atomare Artilleriegranate
item.ammo_arty_phosgene.name=16" Artilleriegranate (Phosgen) item.ammo_arty_phosgene.name=16" Artilleriegranate (Phosgen)
item.ammo_arty_phosphorus.name=16" Phosphor-Artilleriegranate item.ammo_arty_phosphorus.name=16" Phosphor-Artilleriegranate
item.ammo_arty_phosphorus_multi.name=16" Mehrfach-Phosphor-Artilleriegranate item.ammo_arty_phosphorus_multi.name=16" Mehrfach-Phosphor-Artilleriegranate
item.ammo_cell.name=Energiezelle
item.ammo_coilgun.name=Wolframkugel
item.ammo_coilgun_du.name=Ferrourankugel
item.ammo_coilgun_rubber.name=Gummikugel
item.ammo_container.name=Munitionsbehälter
item.ammo_dart.name=Plastikdart (Withernd)
item.ammo_dart_nerf.name=NERF-Dart
item.ammo_dart_nuclear.name=Plastikdart (Zeitbombe)
item.ammo_dgk.name=Goalkeeper-Zwilling CIWS 200er Gürtel item.ammo_dgk.name=Goalkeeper-Zwilling CIWS 200er Gürtel
item.ammo_fireext.name=Feuerlöscher-Wassertank item.ammo_fireext.name=Feuerlöscher-Wassertank
item.ammo_fireext_foam.name=Feuerlöscher-Schaumtank item.ammo_fireext_foam.name=Feuerlöscher-Schaumtank
item.ammo_fireext_sand.name=Feuerlöscher-Sandtank item.ammo_fireext_sand.name=Feuerlöscher-Sandtank
item.ammo_folly.name=Silbernes Geschoss (Original)
item.ammo_folly_du.name=Silbernes Geschoss (DU, Nicht-Explosiv)
item.ammo_folly_nuclear.name=Silbernes Geschoss (Atomar)
item.ammo_fuel.name=Dieselkatusche
item.ammo_fuel_gas.name=Gaskatusche
item.ammo_fuel_napalm.name=Napalmkatusche
item.ammo_fuel_phosphorus.name=WP-Katusche
item.ammo_fuel_vaporizer.name=Vaporisierer-Katusche
item.ammo_grenade.name=40mm Granate
item.ammo_grenade_concussion.name=40mm Granate (Erschütterung)
item.ammo_grenade_finned.name=40mm Granate (Geflügelt)
item.ammo_grenade_he.name=40mm Granate (HE)
item.ammo_grenade_incendiary.name=40mm Granate (Brand)
item.ammo_grenade_kampf.name=40mm Rakete
item.ammo_grenade_leadburster.name=40mm Leadburster
item.ammo_grenade_nuclear.name=40mm Granate (Привет)
item.ammo_grenade_phosphorus.name=40mm Granate (WP)
item.ammo_grenade_sleek.name=40mm Granate (IF-F&E)
item.ammo_grenade_toxic.name=40mm Granate (Chemisch)
item.ammo_grenade_tracer.name=40mm Übungsgranate
item.ammo_himars_standard.name=227mm gelenkte Artillerierakete item.ammo_himars_standard.name=227mm gelenkte Artillerierakete
item.ammo_himars_standard_he.name=227mm Artillerielenkrakete (HE) item.ammo_himars_standard_he.name=227mm Artillerielenkrakete (HE)
item.ammo_himars_standard_lava.name=227mm Artillerielenkrakete (Lava) item.ammo_himars_standard_lava.name=227mm Artillerielenkrakete (Lava)
@ -1168,34 +1041,6 @@ item.ammo_himars_standard_tb.name=227mm Artillerielenkrakete (Thermobarisch)
item.ammo_himars_standard_wp.name=227mm Artillerielenkrakete (WP) item.ammo_himars_standard_wp.name=227mm Artillerielenkrakete (WP)
item.ammo_himars_single.name=610mm Artillerielenkrakete item.ammo_himars_single.name=610mm Artillerielenkrakete
item.ammo_himars_single_tb.name=610mm Artillerielenkrakete (Thermobarisch) item.ammo_himars_single_tb.name=610mm Artillerielenkrakete (Thermobarisch)
item.ammo_luna.name=Lunatic Sniper Sabot
item.ammo_luna_explosive.name=Lunatic Sniper Explosivgeschoss
item.ammo_luna_incendiary.name=Lunatic Sniper Brandgeschoss
item.ammo_mirv.name=Mini-MIRV
item.ammo_mirv_high.name=Mini-MIRV (Stark)
item.ammo_mirv_low.name=Mini-MIRV (Schwach)
item.ammo_mirv_safe.name=Mini-MIRV (Sicher)
item.ammo_mirv_special.name=Mini-MILV
item.ammo_nuke.name=Miniatombombe
item.ammo_nuke_barrel.name=Mini-Atommüllfass
item.ammo_nuke_high.name=Miniatombombe (Stark)
item.ammo_nuke_low.name=Miniatombombe (Schwach)
item.ammo_nuke_pumpkin.name=Kürbisbombe
item.ammo_nuke_safe.name=Miniatombombe (Sicher)
item.ammo_nuke_tots.name=Miniatombombe (Kleine Knirpse)
item.ammo_rocket.name=84mm Rakete
item.ammo_rocket_canister.name=84mm Rakete (Katusche)
item.ammo_rocket_digamma.name=null
item.ammo_rocket_emp.name=84mm Rakete (Impuls)
item.ammo_rocket_glare.name=84mm Rakete (Roter Schein)
item.ammo_rocket_he.name=84mm Rakete (HE)
item.ammo_rocket_incendiary.name=84mm Rakete (Brand)
item.ammo_rocket_nuclear.name=84mm Rakete (Привет)
item.ammo_rocket_phosphorus.name=84mm Rakete (WP)
item.ammo_rocket_rpc.name=84mm Raketengetriebene Kettensäge
item.ammo_rocket_shrapnel.name=84mm Rakete (Schrapnell)
item.ammo_rocket_sleek.name=84mm Rakete (IF-R&D)
item.ammo_rocket_toxic.name=84mm Rakete (Chemisch)
item.ammo_shell.name=240mm Geschoss item.ammo_shell.name=240mm Geschoss
item.ammo_shell_apfsds_du.name=240mm APFSDS-DU item.ammo_shell_apfsds_du.name=240mm APFSDS-DU
item.ammo_shell_apfsds_t.name=240mm APFSDS-T item.ammo_shell_apfsds_t.name=240mm APFSDS-T
@ -1298,12 +1143,6 @@ item.ammo_standard.stone_ap.name=Feuerstein und Pulver
item.ammo_standard.stone_iron.name=Eisenkugel und Pulver item.ammo_standard.stone_iron.name=Eisenkugel und Pulver
item.ammo_standard.stone_shot.name=Schrot und Pulver item.ammo_standard.stone_shot.name=Schrot und Pulver
item.ammo_standard.tau_uranium.name=Erschöpfte Uran-235-Kiste item.ammo_standard.tau_uranium.name=Erschöpfte Uran-235-Kiste
item.ammo_stinger_rocket.name=Stinger-Rakete
item.ammo_stinger_rocket_he.name=Stinger-Rakete (HE)
item.ammo_stinger_rocket_incendiary.name=Stinger-Rakete (Brand)
item.ammo_stinger_rocket_nuclear.name=Stinger-Rakete (Привет)
item.ammo_stinger_rocket_bones.name=Stinger-Rakete (Knochensuchend)
item.ammo_shell_w9.name=240mm W9 Atomares Geschoss
item.ams_catalyst_aluminium.name=Aluminium-Reaktionskatalysator item.ams_catalyst_aluminium.name=Aluminium-Reaktionskatalysator
item.ams_catalyst_beryllium.name=Beryllium-Reaktionskatalysator item.ams_catalyst_beryllium.name=Beryllium-Reaktionskatalysator
item.ams_catalyst_blank.name=Blanker Reaktionskatalysator item.ams_catalyst_blank.name=Blanker Reaktionskatalysator
@ -2217,7 +2056,8 @@ item.grenade_tau.name=Taugranate
item.grenade_zomg.name=Negativenergie-Paarvernichtungsgranate item.grenade_zomg.name=Negativenergie-Paarvernichtungsgranate
item.gun_aberrator.name=Aberrator item.gun_aberrator.name=Aberrator
item.gun_aberrator_eott.name=Eyes Of The Tempest item.gun_aberrator_eott.name=Eyes Of The Tempest
item.gun_am180.name=Schallgedämpfte Maschinenpistole item.gun_am180.name=.22er Maschinenpistole
item.gun_am180_silenced.name=Schallgedämpfte .22er Maschinenpistole
item.gun_autoshotgun.name=Auto-Flinte item.gun_autoshotgun.name=Auto-Flinte
item.gun_autoshotgun_sexy.name=Sexy item.gun_autoshotgun_sexy.name=Sexy
item.gun_autoshotgun_shredder.name=Shredder item.gun_autoshotgun_shredder.name=Shredder
@ -2334,7 +2174,7 @@ item.inf_diesel.name=Unendlicher Dieseltank
item.inf_sulfur.name=Unendlicher Schwefeltank item.inf_sulfur.name=Unendlicher Schwefeltank
item.inf_tritium.name=Unendlicher Tritiumtank item.inf_tritium.name=Unendlicher Tritiumtank
item.inf_water.name=Unendlicher Wassertank item.inf_water.name=Unendlicher Wassertank
item.inf_water_mk2.name=Schwerer unendlicher Wassertank item.inf_water_mk2.name=Großer unendlicher Wassertank
item.ingot_actinium.name=Semistabiler Actiniumbarren item.ingot_actinium.name=Semistabiler Actiniumbarren
item.ingot_advanced_alloy.name=Fortgeschrittene Legierung item.ingot_advanced_alloy.name=Fortgeschrittene Legierung
item.ingot_aluminium.name=Aluminiumbarren item.ingot_aluminium.name=Aluminiumbarren
@ -4173,7 +4013,7 @@ tile.crane_partitioner.name=Erzauflöser-Partitionierer
tile.crane_partitioner.desc=Speichert Input für den Erzazflöser$und gibt sie in der benötigten Itemanzahl aus.$Ungültige Items werden auch gespeichert, und müssen seitlich entfernt werden. tile.crane_partitioner.desc=Speichert Input für den Erzazflöser$und gibt sie in der benötigten Itemanzahl aus.$Ungültige Items werden auch gespeichert, und müssen seitlich entfernt werden.
tile.crane_router.name=Förderband-Sortierer tile.crane_router.name=Förderband-Sortierer
tile.crane_router.desc=Sortiert Items basierend auf eingestellte Kriterien$Seiten können als Blacklist, Whitelist oder Wildcard eingestellt werden$Widlcard-Seiten werden nur verwendet, wenn kein anderer Filter zutrifft tile.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.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_splitter.desc=Teilt Items und Stacks gleichmäßig auf zwei Förderbänder$Zählt selbst als Förderband, kann also direkt in Einsetzer und Sortierer führen
tile.crane_unboxer.name=Förderband-Entpacker tile.crane_unboxer.name=Förderband-Entpacker
tile.crane_unboxer.desc=Öffnet boxen$Rechstclick mit Schraubenzieher um Ausgang zu definieren$Shiftclick mit Schraubenzieher um Eingang zu definieren$Zweimal clicken, um gegenüberliegende Seite zu definieren tile.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
@ -4188,6 +4028,7 @@ tile.crate_lead.name=Gefahrenstoffkiste
tile.crate_metal.name=Maschinenkiste tile.crate_metal.name=Maschinenkiste
tile.crate_red.name=Rote Kiste tile.crate_red.name=Rote Kiste
tile.crate_steel.name=Stahlkiste tile.crate_steel.name=Stahlkiste
tile.crate_supply.name=Vorratskiste
tile.crate_template.name=Vorlagenkiste tile.crate_template.name=Vorlagenkiste
tile.crate_tungsten.name=Wolframkiste tile.crate_tungsten.name=Wolframkiste
tile.crate_weapon.name=Waffenkiste tile.crate_weapon.name=Waffenkiste

View File

@ -1742,105 +1742,6 @@ item.alloy_pickaxe.name=Advanced Alloy Pickaxe
item.alloy_plate.name=Advanced Alloy Chestplate item.alloy_plate.name=Advanced Alloy Chestplate
item.alloy_shovel.name=Advanced Alloy Shovel item.alloy_shovel.name=Advanced Alloy Shovel
item.alloy_sword.name=Advanced Alloy Sword item.alloy_sword.name=Advanced Alloy Sword
item.ammo_12gauge.name=12 Gauge Buckshot
item.ammo_12gauge_du.name=12 Gauge Buckshot (Uranium Coated)
item.ammo_12gauge_incendiary.name=12 Gauge Buckshot (Incendiary)
item.ammo_12gauge_marauder.name=12 Gauge Tactical Anti-Marauder Shell
item.ammo_12gauge_percussion.name=12 Gauge Percussion Cap
item.ammo_12gauge_shrapnel.name=12 Gauge Buckshot (Shrapnel)
item.ammo_12gauge_sleek.name=12 Gauge Buckshot (IF-R&D)
item.ammo_20gauge.name=20 Gauge Buckshot
item.ammo_20gauge_caustic.name=20 Gauge Buckshot (Caustic)
item.ammo_20gauge_explosive.name=20 Gauge Buckshot (Explosive)
item.ammo_20gauge_flechette.name=20 Gauge Flechette Shell
item.ammo_20gauge_incendiary.name=20 Gauge Buckshot (Incendiary)
item.ammo_20gauge_shock.name=20 Gauge Buckshot (Shock)
item.ammo_20gauge_shrapnel.name=20 Gauge Buckshot (Shrapnel)
item.ammo_20gauge_sleek.name=20 Gauge Buckshot (IF-R&D)
item.ammo_20gauge_slug.name=20 Gauge Brenneke Slug
item.ammo_20gauge_wither.name=20 Gauge Buckshot (Withering)
item.ammo_22lr.name=.22 LR Round
item.ammo_22lr_ap.name=.22 LR Round (Armor Piercing)
item.ammo_22lr_chlorophyte.name=.22 LR Round (Chlorophyte)
item.ammo_357_desh.name=.357 Magnum Desh Bullet
item.ammo_44.name=.44 Magnum Bullet
item.ammo_44_ap.name=.44 Magnum Bullet (Armor Piercing)
item.ammo_44_bj.name=.44 Magnum Bullet (Boat)
item.ammo_44_chlorophyte.name=.44 Magnum Bullet (Chlorophyte)
item.ammo_44_du.name=.44 Magnum Bullet (DU)
item.ammo_44_phosphorus.name=.44 Magnum Bullet (WP)
item.ammo_44_pip.name=.44 Magnum Bullet (Boxcar)
item.ammo_44_rocket.name=.44 Magnum Rocket
item.ammo_44_silver.name=.44 Magnum Bullet (Building)
item.ammo_44_star.name=.44 Magnum Bullet (Starmetal)
item.ammo_45.name=.45 ACP Bullet
item.ammo_45_ap.name=.45 ACP Bullet (AP)
item.ammo_45_du.name=.45 ACP Bullet (DU)
item.ammo_4gauge.name=4 Gauge Buckshot
item.ammo_4gauge_balefire.name=23mm Balefire Grenade
item.ammo_4gauge_canister.name=23mm Rocket (Canister Shot)
item.ammo_4gauge_claw.name=4 Gauge Claw Shell
item.ammo_4gauge_explosive.name=23mm Grenade
item.ammo_4gauge_flechette.name=4 Gauge Flechette Shell
item.ammo_4gauge_flechette_phosphorus.name=4 Gauge Flechette Shell (WP)
item.ammo_4gauge_kampf.name=23mm Rocket
item.ammo_4gauge_semtex.name=23mm Mining Charge
item.ammo_4gauge_sleek.name=4 Gauge Buckshot (IF-R&D)
item.ammo_4gauge_slug.name=4 Gauge Solid Steel Slug
item.ammo_4gauge_titan.name=4 Gauge Quacker Round
item.ammo_4gauge_vampire.name=4 Gauge Wooden Stake Shell
item.ammo_4gauge_void.name=4 Gauge Void Shell
item.ammo_50ae.name=.50 AE Round
item.ammo_50ae_ap.name=.50 AE Round (Armor Piercing)
item.ammo_50ae_chlorophyte.name=.50 AE Round (Chlorophyte)
item.ammo_50ae_du.name=.50 AE Round (DU)
item.ammo_50ae_star.name=.50 AE Round (Starmetal)
item.ammo_50bmg.name=.50 BMG Round
item.ammo_50bmg_ap.name=.50 BMG Round (Armor Piercing)
item.ammo_50bmg_chlorophyte.name=.50 BMG Round (Chlorophyte)
item.ammo_50bmg_du.name=.50 BMG Round (DU)
item.ammo_50bmg_explosive.name=.50 BMG Round (Explosive)
item.ammo_50bmg_flechette.name=.50 BMG Flechette Round
item.ammo_50bmg_flechette_am.name=.50 BMG Flechette Round (Americium)
item.ammo_50bmg_flechette_po.name=.50 BMG Flechette Round (Polonium)
item.ammo_50bmg_incendiary.name=.50 BMG Round (Incendiary)
item.ammo_50bmg_phosphorus.name=.50 BMG Round (WP)
item.ammo_50bmg_sleek.name=.50 BMG Round (IF-R&D)
item.ammo_50bmg_star.name=.50 BMG Round (Starmetal)
item.ammo_556.name=5.56mm Round
item.ammo_556_ap.name=5.56mm Round (Armor Piercing)
item.ammo_556_chlorophyte.name=5.56mm Round (Chlorophyte)
item.ammo_556_du.name=5.56mm Round (DU)
item.ammo_556_flechette.name=5.56mm Flechette Round
item.ammo_556_flechette_chlorophyte.name=5.56mm Flechette Round (Chlorophyte)
item.ammo_556_flechette_du.name=5.56mm Flechette Round (Uranium Penetrator)
item.ammo_556_flechette_incendiary.name=5.56mm Flechette Round (Incendiary)
item.ammo_556_flechette_phosphorus.name=5.56mm Flechette Round (Phosphorus-Tipped)
item.ammo_556_flechette_sleek.name=5.56mm Flechette Round (IF-R&D)
item.ammo_556_k.name=5.56mm K-Round
item.ammo_556_phosphorus.name=5.56mm Round (WP)
item.ammo_556_sleek.name=5.56mm Round (IF-R&D)
item.ammo_556_star.name=5.56mm Round (Starmetal)
item.ammo_556_tracer.name=5.56mm Round (Tracer)
item.ammo_5mm.name=5mm Round
item.ammo_5mm_chlorophyte.name=5mm Round (Chlorophyte)
item.ammo_5mm_du.name=5mm Round (DU)
item.ammo_5mm_explosive.name=5mm Round (Explosive)
item.ammo_5mm_star.name=5mm Round (Starmetal)
item.ammo_75bolt.name=.75 Bolt Magazine (30rnd)
item.ammo_75bolt_incendiary.name=.75 Incendiary Bolt Magazine (30rnd)
item.ammo_75bolt_he.name=.75 Bolt High-Explosive Magazine (30rnd)
item.ammo_762.name=7.62mm Round
item.ammo_762_ap.name=7.62mm Round (AP)
item.ammo_762_du.name=7.62mm Round (DU)
item.ammo_762_k.name=7.62mm K-Round
item.ammo_762_phosphorus.name=7.62mm Round (WP)
item.ammo_762_tracer.name=7.62mm Round (Tracer)
item.ammo_9mm.name=9mm Round
item.ammo_9mm_ap.name=9mm Round (Armor Piercing)
item.ammo_9mm_chlorophyte.name=9mm Round (Chlorophyte)
item.ammo_9mm_du.name=9mm Round (DU)
item.ammo_9mm_rocket.name=9mm Rocket
item.ammo_arty.name=16" Artillery Shell item.ammo_arty.name=16" Artillery Shell
item.ammo_arty_cargo.name=16" Express Delivery Artillery Shell item.ammo_arty_cargo.name=16" Express Delivery Artillery Shell
item.ammo_arty_chlorine.name=16" Chlorine Gas Artillery Shell item.ammo_arty_chlorine.name=16" Chlorine Gas Artillery Shell
@ -1853,38 +1754,11 @@ item.ammo_arty_nuke.name=16" Nuclear Artillery Shell
item.ammo_arty_phosgene.name=16" Phosgene Artillery Shell item.ammo_arty_phosgene.name=16" Phosgene Artillery Shell
item.ammo_arty_phosphorus.name=16" Phosphorus Shell item.ammo_arty_phosphorus.name=16" Phosphorus Shell
item.ammo_arty_phosphorus_multi.name=16" Multi Phosphorus Shell item.ammo_arty_phosphorus_multi.name=16" Multi Phosphorus Shell
item.ammo_cell.name=Energy Cell
item.ammo_coilgun.name=Coilgun Tungsten Ball
item.ammo_coilgun_du.name=Coilgun Ferrouranium Ball
item.ammo_coilgun_rubber.name=Coilgun Rubber Ball
item.ammo_container.name=Ammo Container item.ammo_container.name=Ammo Container
item.ammo_dart.name=Plastic Dart (Withering)
item.ammo_dart_nerf.name=NERF Dart
item.ammo_dart_nuclear.name=Plastic Dart (Timed Explosive)
item.ammo_dgk.name=Goalkeeper Twin CIWS 200 Round Belt item.ammo_dgk.name=Goalkeeper Twin CIWS 200 Round Belt
item.ammo_fireext.name=Fire Extinguisher Water Tank item.ammo_fireext.name=Fire Extinguisher Water Tank
item.ammo_fireext_foam.name=Fire Extinguisher Foam Tank item.ammo_fireext_foam.name=Fire Extinguisher Foam Tank
item.ammo_fireext_sand.name=Fire Extinguisher Sand Tank item.ammo_fireext_sand.name=Fire Extinguisher Sand Tank
item.ammo_folly.name=Silver Bullet (Original)
item.ammo_folly_du.name=Silver Bullet (DU, Non-Explosive)
item.ammo_folly_nuclear.name=Silver Bullet (Nuclear)
item.ammo_fuel.name=Diesel Tank
item.ammo_fuel_gas.name=Gas Tank
item.ammo_fuel_napalm.name=Napalm Tank
item.ammo_fuel_phosphorus.name=WP Tank
item.ammo_fuel_vaporizer.name=Vaporizer Tank
item.ammo_grenade.name=40mm Grenade
item.ammo_grenade_concussion.name=40mm Grenade (Concussion)
item.ammo_grenade_finned.name=40mm Grenade (Finned)
item.ammo_grenade_he.name=40mm Grenade (HE)
item.ammo_grenade_incendiary.name=40mm Grenade (Incendiary)
item.ammo_grenade_kampf.name=40mm Rocket
item.ammo_grenade_leadburster.name=40mm Leadburster
item.ammo_grenade_nuclear.name=40mm Grenade (Привет)
item.ammo_grenade_phosphorus.name=40mm Grenade (WP)
item.ammo_grenade_sleek.name=40mm Grenade (IF-R&D)
item.ammo_grenade_toxic.name=40mm Grenade (Chemical)
item.ammo_grenade_tracer.name=40mm Training Grenade
item.ammo_himars_standard.name=227mm Guided Artillery Rocket Pod item.ammo_himars_standard.name=227mm Guided Artillery Rocket Pod
item.ammo_himars_standard_he.name=227mm Guided Artillery Rocket Pod (HE) item.ammo_himars_standard_he.name=227mm Guided Artillery Rocket Pod (HE)
item.ammo_himars_standard_lava.name=227mm Guided Artillery Rocket Pod (Lava) item.ammo_himars_standard_lava.name=227mm Guided Artillery Rocket Pod (Lava)
@ -1893,34 +1767,6 @@ item.ammo_himars_standard_tb.name=227mm Guided Artillery Rocket Pod (Thermobaric
item.ammo_himars_standard_wp.name=227mm Guided Artillery Rocket Pod (WP) item.ammo_himars_standard_wp.name=227mm Guided Artillery Rocket Pod (WP)
item.ammo_himars_single.name=610mm Guided Artillery Rocket Pod item.ammo_himars_single.name=610mm Guided Artillery Rocket Pod
item.ammo_himars_single_tb.name=610mm Guided Artillery Rocket Pod (Thermobaric) item.ammo_himars_single_tb.name=610mm Guided Artillery Rocket Pod (Thermobaric)
item.ammo_luna.name=Lunatic Sniper Sabot Round
item.ammo_luna_explosive.name=Lunatic Sniper Explosive Round
item.ammo_luna_incendiary.name=Lunatic Sniper Incendiary Round
item.ammo_mirv.name=Mini MIRV
item.ammo_mirv_high.name=Mini MIRV (High Yield)
item.ammo_mirv_low.name=Mini MIRV (Low Yield)
item.ammo_mirv_safe.name=Mini MIRV (Safe)
item.ammo_mirv_special.name=Mini MILV
item.ammo_nuke.name=Mini Nuke
item.ammo_nuke_barrel.name=Mini Nuclear Waste Barrel
item.ammo_nuke_high.name=Mini Nuke (High Yield)
item.ammo_nuke_low.name=Mini Nuke (Low Yield)
item.ammo_nuke_pumpkin.name=Pumpkin Bomb
item.ammo_nuke_safe.name=Mini Nuke (Safe)
item.ammo_nuke_tots.name=Mini Nuke (Tiny Tots)
item.ammo_rocket.name=84mm Rocket
item.ammo_rocket_canister.name=84mm Rocket (Canister Shot)
item.ammo_rocket_digamma.name=null
item.ammo_rocket_emp.name=84mm Rocket (Pulse)
item.ammo_rocket_glare.name=84mm Rocket (Red Glare)
item.ammo_rocket_he.name=84mm Rocket (HE)
item.ammo_rocket_incendiary.name=84mm Rocket (Incendiary)
item.ammo_rocket_nuclear.name=84mm Rocket (Привет)
item.ammo_rocket_phosphorus.name=84mm Rocket (WP)
item.ammo_rocket_rpc.name=84mm Rocket Propelled Chainsaw
item.ammo_rocket_shrapnel.name=84mm Rocket (Shrapnel)
item.ammo_rocket_sleek.name=84mm Rocket (IF-R&D)
item.ammo_rocket_toxic.name=84mm Rocket (Chemical)
item.ammo_shell.name=240mm Shell item.ammo_shell.name=240mm Shell
item.ammo_shell_apfsds_du.name=240mm APFSDS-DU item.ammo_shell_apfsds_du.name=240mm APFSDS-DU
item.ammo_shell_apfsds_t.name=240mm APFSDS-T item.ammo_shell_apfsds_t.name=240mm APFSDS-T
@ -2023,11 +1869,6 @@ item.ammo_standard.stone_ap.name=Flint and Powder
item.ammo_standard.stone_iron.name=Iron Ball and Powder item.ammo_standard.stone_iron.name=Iron Ball and Powder
item.ammo_standard.stone_shot.name=Shot and Powder item.ammo_standard.stone_shot.name=Shot and Powder
item.ammo_standard.tau_uranium.name=Depleted Uranium-235 Box item.ammo_standard.tau_uranium.name=Depleted Uranium-235 Box
item.ammo_stinger_rocket.name=Stinger Rocket
item.ammo_stinger_rocket_he.name=Stinger Rocket (HE)
item.ammo_stinger_rocket_incendiary.name=Stinger Rocket (Incendiary)
item.ammo_stinger_rocket_nuclear.name=Stinger Rocket (Привет)
item.ammo_stinger_rocket_bones.name=Stinger Rocket (Bone-Seeking)
item.ams_catalyst_aluminium.name=Aluminium Reaction Catalyst item.ams_catalyst_aluminium.name=Aluminium Reaction Catalyst
item.ams_catalyst_beryllium.name=Beryllium Reaction Catalyst item.ams_catalyst_beryllium.name=Beryllium Reaction Catalyst
item.ams_catalyst_blank.name=Blank Reaction Catalyst item.ams_catalyst_blank.name=Blank Reaction Catalyst
@ -3027,7 +2868,8 @@ item.glyphid_gland.name= Gland
item.glyphid_gland_empty.name= Glyphid's Fluid Gland item.glyphid_gland_empty.name= Glyphid's Fluid Gland
item.gun_aberrator.name=Aberrator item.gun_aberrator.name=Aberrator
item.gun_aberrator_eott.name=Eyes Of The Tempest item.gun_aberrator_eott.name=Eyes Of The Tempest
item.gun_am180.name=Silenced Submachine Gun item.gun_am180.name=.22 Submachine Gun
item.gun_am180_silenced.name=Silenced .22 Submachine Gun
item.gun_autoshotgun.name=Auto Shotgun item.gun_autoshotgun.name=Auto Shotgun
item.gun_autoshotgun_sexy.name=Sexy item.gun_autoshotgun_sexy.name=Sexy
item.gun_autoshotgun_shredder.name=Shredder item.gun_autoshotgun_shredder.name=Shredder
@ -3147,7 +2989,7 @@ item.inf_diesel.name=Infinite Diesel Tank
item.inf_sulfur.name=Infinite Sulfur Tank item.inf_sulfur.name=Infinite Sulfur Tank
item.inf_tritium.name=Infinite Tritium Tank item.inf_tritium.name=Infinite Tritium Tank
item.inf_water.name=Infinite Water Tank item.inf_water.name=Infinite Water Tank
item.inf_water_mk2.name=Heavy Infinite Water Tank item.inf_water_mk2.name=Large Infinite Water Tank
item.ingot_actinium.name=Actinium-227 Ingot item.ingot_actinium.name=Actinium-227 Ingot
item.ingot_advanced_alloy.name=Advanced Alloy Ingot item.ingot_advanced_alloy.name=Advanced Alloy Ingot
item.ingot_aluminium.name=Aluminium Ingot item.ingot_aluminium.name=Aluminium Ingot
@ -5303,6 +5145,7 @@ tile.crate_lead.name=Hazmat Crate
tile.crate_metal.name=Machine Crate tile.crate_metal.name=Machine Crate
tile.crate_red.name=Red Crate tile.crate_red.name=Red Crate
tile.crate_steel.name=Steel Crate tile.crate_steel.name=Steel Crate
tile.crate_supply.name=Supply Crate
tile.crate_template.name=Template Crate tile.crate_template.name=Template Crate
tile.crate_tungsten.name=Tungsten Crate tile.crate_tungsten.name=Tungsten Crate
tile.crate_weapon.name=Weapon Crate tile.crate_weapon.name=Weapon Crate

File diff suppressed because it is too large Load Diff

View File

@ -2893,7 +2893,7 @@ item.grenade_tau.name=陶子手榴弹
item.grenade_zomg.name=负能量湮灭手榴弹 item.grenade_zomg.name=负能量湮灭手榴弹
item.glyphid_gland.name=囊腺 item.glyphid_gland.name=囊腺
item.glyphid_gland_empty.name=异虫腺体 item.glyphid_gland_empty.name=异虫腺体
item.gun_am180.name=消音冲锋枪 item.gun_am180.name=.22口径冲锋枪
item.gun_autoshotgun.name=自动霰弹枪 item.gun_autoshotgun.name=自动霰弹枪
item.gun_autoshotgun_sexy.name=Sexy item.gun_autoshotgun_sexy.name=Sexy
item.gun_autoshotgun_shredder.name=粉碎者 item.gun_autoshotgun_shredder.name=粉碎者
@ -2909,7 +2909,7 @@ item.gun_cryolator_ammo.name=急冻单元
item.gun_detonator.name=激光引爆器 item.gun_detonator.name=激光引爆器
item.gun_double_barrel.name=旧日经典 item.gun_double_barrel.name=旧日经典
item.gun_double_barrel_sacred_dragon.name=圣龙 item.gun_double_barrel_sacred_dragon.name=圣龙
item.gun_fatman.name=Fat Man item.gun_fatman.name=M42核弹发射器 “胖子”
item.gun_fireext.name=灭火器 item.gun_fireext.name=灭火器
item.gun_flamer.name=火焰喷射器 item.gun_flamer.name=火焰喷射器
item.gun_flamer_daybreaker.name=破晓之时 item.gun_flamer_daybreaker.name=破晓之时
@ -5058,7 +5058,7 @@ tile.crane_grabber.name=输送带抓斗
tile.crane_grabber.desc=从经过的输送带中取出物品并将其放入容器$将只从最近的通道中取出物品$最多有9个带黑白名单的过滤槽$用螺丝刀右键单击以设置输入侧$用螺丝起子平移单击以设置输出侧$单击两次以设置对侧 tile.crane_grabber.desc=从经过的输送带中取出物品并将其放入容器$将只从最近的通道中取出物品$最多有9个带黑白名单的过滤槽$用螺丝刀右键单击以设置输入侧$用螺丝起子平移单击以设置输出侧$单击两次以设置对侧
tile.crane_inserter.name=输送带导入器 tile.crane_inserter.name=输送带导入器
tile.crane_inserter.desc=接受输送带上的物品并将其放入容器中$用螺丝刀右键单击以设置输入侧$用螺丝刀单击以设置输出侧$单击两次以设置相反侧 tile.crane_inserter.desc=接受输送带上的物品并将其放入容器中$用螺丝刀右键单击以设置输入侧$用螺丝刀单击以设置输出侧$单击两次以设置相反侧
tile.crane_partitioner.name=Acidizer Input Partitioner tile.crane_partitioner.name=酸化器输入分隔器
tile.crane_partitioner.desc=接受并存储至多9种输入矿物酸化器的物品$并在物品数量达到配方要求时将其输出$无配方物品也会被存储,需要从侧面导出 tile.crane_partitioner.desc=接受并存储至多9种输入矿物酸化器的物品$并在物品数量达到配方要求时将其输出$无配方物品也会被存储,需要从侧面导出
tile.crane_router.name=输送带分拣机 tile.crane_router.name=输送带分拣机
tile.crane_router.desc=根据定义的条件对项目排序$侧面可以定义为黑名单、白名单或通配符$只有在没有其他筛选器匹配的情况下才选择通配符侧面 tile.crane_router.desc=根据定义的条件对项目排序$侧面可以定义为黑名单、白名单或通配符$只有在没有其他筛选器匹配的情况下才选择通配符侧面
@ -6068,13 +6068,13 @@ pa.pause_unloaded.desc=粒子进入了未加载的区块。$在粒子与粒子
pa.crash_defocus.desc=粒子失焦。$请确保加速器含有足够数量的四极磁铁。 pa.crash_defocus.desc=粒子失焦。$请确保加速器含有足够数量的四极磁铁。
pa.crash_derail.desc=粒子离开加速器。$请确保加速器未缺失部件,$且所有双极磁铁均正确配置。 pa.crash_derail.desc=粒子离开加速器。$请确保加速器未缺失部件,$且所有双极磁铁均正确配置。
pa.crash_cannot_enter.desc=粒子尝试进入加速器某部件时失败。$请确保所有部件朝向正确。 pa.crash_cannot_enter.desc=粒子尝试进入加速器某部件时失败。$请确保所有部件朝向正确。
pa.crash_nocool.desc=The particle has entered an uncooled$part of the accelerator. Ensure all cooled$parts are connected and filled$with cold perfluoromethyl. pa.crash_nocool.desc=粒子进入了未冷却的加速器部件。$请确保所有需冷却的部件正常连接,且内部含有冷四氟甲烷。
pa.crash_nopower.desc=粒子进入了未供能的加速器部件。$请确保所有部件均接受供电且供电充足。 pa.crash_nopower.desc=粒子进入了未供能的加速器部件。$请确保所有部件均接受供电且供电充足。
pa.crash_nocoil.desc=粒子进入了缺少线圈的双极磁铁或四极磁铁。$请安装线圈,以使上述部件正常工作。 pa.crash_nocoil.desc=粒子进入了缺少线圈的双极磁铁或四极磁铁。$请安装线圈,以使上述部件正常工作。
pa.crash_overspeed.desc=粒子进入某双极磁铁或四极磁铁时,$其速度超出了内部线圈接受的最大速度。$请安装更高等级的线圈,$或调整双极磁铁设定以使粒子提前离开加速区域。 pa.crash_overspeed.desc=粒子进入某双极磁铁或四极磁铁时,$其速度超出了内部线圈接受的最大速度。$请安装更高等级的线圈,$或调整双极磁铁设定以使粒子提前离开加速区域。
tile.pa_beamline.desc=可选部件,用于连接不同加速器部件$也可用于低成本地扩大粒子加速器尺寸,以达到双极磁铁的尺寸需求 tile.pa_beamline.desc=可选部件,用于连接不同加速器部件$也可用于低成本地扩大粒子加速器尺寸,以达到双极磁铁的尺寸需求
tile.pa_detector.desc=需要冷却!$接收粒子并进行配方$配方可能需要容器(粒子胶囊)$粒子的失焦程度需要为0才能被接收 tile.pa_detector.desc=需要冷却!$接收粒子并进行配方$配方可能需要容器(粒子胶囊)$粒子的失焦程度需要为0才能被接收
tile.pa_dipole.desc=Requires cooling!$Redirects particles based on momentum.$Has outputs for below threshold,$above threshold and above threshold$with redstone applied.$Requires large coils to work. tile.pa_dipole.desc=需要冷却!$根据粒子动量使其转向$具有“低于阈值”、“高于阈值”、$“高于阈值且收到红石信号”三种设置$需要大型线圈才能工作
tile.pa_quadrupole.desc=需要冷却!$使粒子失焦程度减少100$需要大型线圈才能工作 tile.pa_quadrupole.desc=需要冷却!$使粒子失焦程度减少100$需要大型线圈才能工作
tile.pa_rfc.desc=需要冷却!$使粒子动量增加100并使粒子失焦程度增加100$粒子失焦程度到达1000时会坍毁 tile.pa_rfc.desc=需要冷却!$使粒子动量增加100并使粒子失焦程度增加100$粒子失焦程度到达1000时会坍毁
tile.pa_source.desc=需要冷却!$使用两个物品来创造一个粒子 tile.pa_source.desc=需要冷却!$使用两个物品来创造一个粒子
@ -6091,99 +6091,106 @@ tile.refueler.name=燃料装填站
tile.wand_air.name=结构魔杖方块(空气) tile.wand_air.name=结构魔杖方块(空气)
tile.wand_loot.name=结构魔杖方块(战利品) tile.wand_loot.name=结构魔杖方块(战利品)
tile.wand_jigsaw.name=结构魔杖方块(拼图) tile.wand_jigsaw.name=结构魔杖方块(拼图)
container.toolBox=Toolbox container.toolBox=工具箱
container.weaponsTable=Weapon Modification Table container.weaponsTable=武器改装台
item.ammo_standard.bmg50_he.name=.50 BMG Round (High-Explosive) item.ammo_standard.bmg50_he.name=.50BMG子弹 (高爆弹药)
item.ammo_standard.g10_explosive.name=10 Gauge Explosive Buckshot item.ammo_standard.g10_explosive.name=十号爆炸霰弹
item.ammo_standard.p45_ap.name=.45 Round (Armor Piercing) item.ammo_standard.p45_ap.name=.45口径子弹(穿甲弹)
item.ammo_standard.p45_du.name=.45 Round (Depleted Uranium) item.ammo_standard.p45_du.name=.45口径子弹(贫铀弹)
item.ammo_standard.p45_fmj.name=.45 Round (Full Metal Jacket) item.ammo_standard.p45_fmj.name=.45口径子弹(金属被甲弹)
item.ammo_standard.p45_jhp.name=.45 Round (Jacketed Hollow Point) item.ammo_standard.p45_jhp.name=.45口径子弹(被甲空尖弹)
item.ammo_standard.p45_sp.name=.45 Round (Soft Point) item.ammo_standard.p45_sp.name=.45口径子弹(普通弹)
item.ammo_standard.r762_he.name=7.62mm Round (High-Explosive) item.ammo_standard.r762_he.name=7.62mm子弹(高爆弹药)
item.conveyor_wand.regular.name=Conveyor Belt item.conveyor_wand.regular.name=输送带
item.conveyor_wand.express.name=Express Conveyor Belt item.conveyor_wand.express.name=快速输送带
item.conveyor_wand.double.name=Double-Lane Conveyor Belt item.conveyor_wand.double.name=双轨道输送带
item.conveyor_wand.triple.name=Triple-Lane Conveyor Belt item.conveyor_wand.triple.name=三轨道输送带
item.conveyor_wand.desc=Moves items dropped on it$Click two points to create a conveyor$Crouch click to manually place$Click with a screwdriver to rotate$Crouch click with a screwdriver to change types item.conveyor_wand.desc=运送掉落在上面的物品$右键单击任意两点创建传送带$蹲下单击右键单独放置传送带$使用螺丝刀可以改变方向$蹲下右键单击可以改变类型
item.conveyor_wand.vertical.desc=Is capable of placing lifts & chutes to move items vertically item.conveyor_wand.vertical.desc=能放置垂直输送带或者滑槽来垂直输送物品
item.gun_g3_a3.name=G3A3 item.gun_g3_a3.name=G3A3
item.gun_g3_infiltrator.name=Infiltrator item.gun_g3_infiltrator.name=渗透者
item.gun_greasegun_m3.name=M3 item.gun_greasegun_m3.name=M3
item.gun_heavy_revolver_scoped.name=Scoped .44 Magnum item.gun_heavy_revolver_scoped.name=带有准镜的.44马格南转轮手枪
item.gun_henry_lincoln.name=Lincoln's Repeater item.gun_henry_lincoln.name=林肯的中继器
item.gun_maresleg_short.name=Mare's Leg item.gun_maresleg_short.name=马腿
item.gun_mas36.name=South Star item.gun_mas36.name=南方之星
item.gun_uzi_richter.name=Richter item.gun_uzi_richter.name=里氏
item.item_secret.aberrator.name=Aberrator Part item.item_secret.aberrator.name=畸变部件
item.toolbox.name=Toolbox item.toolbox.name=工具箱
item.toolbox_legacy.name=Toolbox (LEGACY) item.toolbox_legacy.name=工具箱(遗留)
item.weapon_mod_caliber.bmg50.name=.50 BMG Conversion Kit item.weapon_mod_caliber.bmg50.name=.50BMG改装套件
item.weapon_mod_caliber.m357.name=.357 Magnum Conversion Kit item.weapon_mod_caliber.m357.name=.357马格南改装套件
item.weapon_mod_caliber.m44.name=.44 Magnum Conversion Kit item.weapon_mod_caliber.m44.name=.44马格南改装套件
item.weapon_mod_caliber.p22.name=.22 LR Conversion Kit item.weapon_mod_caliber.p22.name=.22LR改装套件
item.weapon_mod_caliber.p45.name=.45 Conversion Kit item.weapon_mod_caliber.p45.name=.45口径改装套件
item.weapon_mod_caliber.p9.name=9mm Conversion Kit item.weapon_mod_caliber.p9.name=9毫米口径改装套件
item.weapon_mod_caliber.r556.name=5.56mm Conversion Kit item.weapon_mod_caliber.r556.name=5.56mm改装套件
item.weapon_mod_caliber.r762.name=7.62mm Conversion Kit item.weapon_mod_caliber.r762.name=7.62改装套件
item.weapon_mod_generic.bigmt_damage.name=Optimized Saturnite Receiver item.weapon_mod_generic.bigmt_damage.name=土星弹道优化器
item.weapon_mod_generic.bigmt_dura.name=High-Durability Saturnite Parts item.weapon_mod_generic.bigmt_dura.name=高耐用性土星部件
item.weapon_mod_generic.bronze_damage.name=Optimized Bronze Receiver item.weapon_mod_generic.bronze_damage.name=青铜弹道优化器
item.weapon_mod_generic.bronze_dura.name=High-Durability Bronze Parts item.weapon_mod_generic.bronze_dura.name=高耐用性青铜部件
item.weapon_mod_generic.desh_damage.name=Optimized Desh Receiver item.weapon_mod_generic.desh_damage.name=Desh弹道优化器
item.weapon_mod_generic.desh_dura.name=High-Durability Desh Parts item.weapon_mod_generic.desh_dura.name=高耐用性Desh部件
item.weapon_mod_generic.dura_damage.name=Optimized HSS Receiver item.weapon_mod_generic.dura_damage.name=高速钢弹道优化器
item.weapon_mod_generic.dura_dura.name=High-Durability HSS Parts item.weapon_mod_generic.dura_dura.name=高耐用性高速钢部件
item.weapon_mod_generic.ferro_damage.name=Optimized Ferrouranium Receiver item.weapon_mod_generic.ferro_damage.name=铀铁合金弹道优化器
item.weapon_mod_generic.ferro_dura.name=High-Durability Ferrouranium Parts item.weapon_mod_generic.ferro_dura.name=高耐用性铀铁合金部件
item.weapon_mod_generic.iron_damage.name=Optimized Iron Receiver item.weapon_mod_generic.iron_damage.name=铁制弹道优化器
item.weapon_mod_generic.iron_dura.name=High-Durability Iron Parts item.weapon_mod_generic.iron_dura.name=高耐用性铁制部件
item.weapon_mod_generic.steel_damage.name=Optimized Steel Receiver item.weapon_mod_generic.steel_damage.name=钢制弹道优化器
item.weapon_mod_generic.steel_dura.name=High-Durability Steel Parts item.weapon_mod_generic.steel_dura.name=高耐用性钢制部件
item.weapon_mod_generic.tcalloy_damage.name=Optimized Resistant Alloy Receiver item.weapon_mod_generic.tcalloy_damage.name=耐高温合金弹道优化
item.weapon_mod_generic.tcalloy_dura.name=High-Durability Resistant Alloy Parts item.weapon_mod_generic.tcalloy_dura.name=高耐用性耐高温合金部件
item.weapon_mod_generic.wsteel_damage.name=Optimized Weapon Steel Receiver item.weapon_mod_generic.wsteel_damage.name=武器级钢弹道优化器
item.weapon_mod_generic.wsteel_dura.name=High-Durability Weapon Steel Parts item.weapon_mod_generic.wsteel_dura.name=高耐用性武器级钢部件
item.weapon_mod_special.bayonet.name=Bayonet item.weapon_mod_special.bayonet.name=刺刀
item.weapon_mod_special.choke.name=Choke item.weapon_mod_special.choke.name=收束器
item.weapon_mod_special.furniture_black.name=Polymer Furniture (Black) item.weapon_mod_special.furniture_black.name=聚合物部件(黑色)
item.weapon_mod_special.furniture_green.name=Polymer Furniture (Green) item.weapon_mod_special.furniture_green.name=聚合物部件(绿色)
item.weapon_mod_special.greasegun.name=Grease Gun Modernization Kit item.weapon_mod_special.greasegun.name=M3黄油枪现代化改装套件
item.weapon_mod_special.las_auto.name=Laser Rifle Automatic Receiver item.weapon_mod_special.las_auto.name=激光步枪自动机构
item.weapon_mod_special.las_capacitor.name=Laser Rifle Extended Capacitor item.weapon_mod_special.las_capacitor.name=激光步枪额外电容器
item.weapon_mod_special.las_shotgun.name=Laser Rifle Beam Splitter item.weapon_mod_special.las_shotgun.name=激光步枪光束散射器
item.weapon_mod_special.saw.name=Hacksaw item.weapon_mod_special.saw.name=钢锯
item.weapon_mod_special.scope.name=Scope item.weapon_mod_special.scope.name=瞄准镜
item.weapon_mod_special.silencer.name=Silencer item.weapon_mod_special.silencer.name=消音器
item.weapon_mod_special.skin_saturnite.name=Saturnite Skin item.weapon_mod_special.skin_saturnite.name=土星外壳
item.weapon_mod_special.slowdown.name=Gear Train item.weapon_mod_special.slowdown.name=减速齿轮组
item.weapon_mod_special.speedloader.name=Speedloader item.weapon_mod_special.speedloader.name=快速装填器
item.weapon_mod_special.speedup.name=Auxiliary Electric Engine item.weapon_mod_special.speedup.name=辅助电动机
item.weapon_mod_special.stack_mag.name=Double-Stacked Magazine item.weapon_mod_special.stack_mag.name=并联弹匣
item.weapon_mod_test.damage.name=DAMAGE UPGRADE item.weapon_mod_test.damage.name=伤害升级
item.weapon_mod_test.firerate.name=FIRE RATE UPGRADE item.weapon_mod_test.firerate.name=射速升级
item.weapon_mod_test.multi.name=MULTI SHOT UPGRADE item.weapon_mod_test.multi.name=多重射击升级
item.weapon_mod_test.override_2_5.name=DAMAGE OVERRIDE (2.5) item.weapon_mod_test.override_2_5.name=伤害覆盖2.5
item.weapon_mod_test.override_5.name=DAMAGE OVERRIDE (5) item.weapon_mod_test.override_5.name=伤害覆盖5
item.weapon_mod_test.override_7_5.name=DAMAGE OVERRIDE (7.5) item.weapon_mod_test.override_7_5.name=伤害覆盖7.5
item.weapon_mod_test.override_10.name=DAMAGE OVERRIDE (10) item.weapon_mod_test.override_10.name=伤害覆盖10
item.weapon_mod_test.override_12_5.name=DAMAGE OVERRIDE (12.5) item.weapon_mod_test.override_12_5.name=伤害覆盖12.5
item.weapon_mod_test.override_15.name=DAMAGE OVERRIDE (15) item.weapon_mod_test.override_15.name=伤害覆盖15
item.weapon_mod_test.override_20.name=DAMAGE OVERRIDE (20) item.weapon_mod_test.override_20.name=伤害覆盖20
stat.ntmBullets=Rounds Fired stat.ntmBullets=Rounds Fired
stat.ntmLegendary=Legendary Items Created stat.ntmLegendary=Legendary Items Created
stat.ntmMines=Mines Stepped on stat.ntmMines=Mines Stepped on
tile.deco_rusty_steel.name=Rusty Steel Deco Block tile.deco_rusty_steel.name=锈蚀的钢装饰块
tile.lightstone.unrefined.name=Raw Lightstone tile.lightstone.unrefined.name=天然淡色石
tile.lightstone.tile.name=Lightstone Tile tile.lightstone.tile.name=淡色石瓷砖
tile.lightstone.bricks.name=Lightstone Bricks tile.lightstone.bricks.name=淡色石砖
tile.lightstone.bricks_chiseled.name=Lightstone Chiseled Bricks tile.lightstone.bricks_chiseled.name=錾制淡色石砖
tile.lightstone.chiseled.name=Chiseled Lightstone tile.lightstone.chiseled.name=錾制淡色石
tile.lightstone_tile_stairs.name=Lightstone Tile Stairs tile.lightstone_tile_stairs.name=淡色石瓷砖楼梯
tile.lightstone_bricks_stairs.name=Lightstone Brick Stairs tile.lightstone_bricks_stairs.name=淡色石砖楼梯
tile.machine_weapon_table.name=Weapon Modification Table tile.machine_weapon_table.name=武器改装台
tile.mine_naval.name=Naval Mine tile.mine_naval.name=水雷
tile.skeleton_holder.name=Oh, that's a dead guy tile.skeleton_holder.name=哦,那家伙已经死了
tile.stones_slab.lightstone.1.name=Lightstone Tile Slab tile.stones_slab.lightstone.1.name=淡色石瓷砖台阶
tile.stones_slab.lightstone.2.name=Lightstone Brick Slab tile.stones_slab.lightstone.2.name=淡色石砖块台阶
upgrade.productivity=Productivity %s upgrade.productivity=生产率 %s
container.pneumoTube=气动物流管道
hbmfluid.air=压缩空气
tile.machine_compressor_compact.name=紧凑型压缩机
tile.machine_intake.name=进气口
tile.pneumatic_tube.name=气动物流管道
tile.pneumatic_tube.desc=使用压缩空气来运输物品$使用螺丝刀右键切换为输入$潜行右键则切换为输出$可以配置输入类型并连接到压缩空气$每秒最多发送4组物品
item.gun_am180_silenced.name=消音.22口径冲锋枪

File diff suppressed because it is too large Load Diff

View File

@ -65,6 +65,8 @@
"block.hephaestusRunning": {"category": "block", "sounds": [{"name": "block/hephaestusRunning", "stream": false}]}, "block.hephaestusRunning": {"category": "block", "sounds": [{"name": "block/hephaestusRunning", "stream": false}]},
"block.squeakyToy": {"category": "block", "sounds": [{"name": "block/squeakyToy", "stream": false}]}, "block.squeakyToy": {"category": "block", "sounds": [{"name": "block/squeakyToy", "stream": false}]},
"block.pyroOperate": {"category": "block", "sounds": [{"name": "block/pyroOperate", "stream": false}]}, "block.pyroOperate": {"category": "block", "sounds": [{"name": "block/pyroOperate", "stream": false}]},
"block.motor": {"category": "block", "sounds": [{"name": "block/motor", "stream": false}]},
"block.engine": {"category": "block", "sounds": [{"name": "block/engine", "stream": false}]},
"door.TransitionSealOpen": {"category": "block", "sounds": [{"name": "block/door/transition_seal_open", "stream": true}]}, "door.TransitionSealOpen": {"category": "block", "sounds": [{"name": "block/door/transition_seal_open", "stream": true}]},
"door.wghStart": {"category": "block", "sounds": [{"name": "block/door/wgh_start", "stream": true}]}, "door.wghStart": {"category": "block", "sounds": [{"name": "block/door/wgh_start", "stream": true}]},

Binary file not shown.

Binary file not shown.

Binary file not shown.

Before

Width:  |  Height:  |  Size: 377 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 452 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 433 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 410 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 431 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 455 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 386 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 415 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 7.4 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 1.7 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 32 KiB