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
## Changed
* Updated russian and chinese localizations
* .75 bolts now work as advertised
* Updated lead pipe texture
* 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
* The xenon chemical plant recipes as well as biogas now require compressed air instead of no fluid at all
* 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 taint destroying bedrock
@ -54,3 +65,7 @@
* Fixed infested glyphids spawning maggots also on the clientside, creating unkillable ghosts
* Fixed top left column not being selectable in the RBMK console
* 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
# Empty build number makes a release type
mod_build_number=5279
mod_build_number=5298
credits=HbMinecraft,\
\ 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_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_on;
@ -1173,7 +1171,6 @@ public class ModBlocks {
public static Block absorber_green;
public static Block absorber_pink;
public static Block decon;
public static Block transission_hatch;
public static Block mud_block;
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_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_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_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");
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_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_puf6_tank, machine_puf6_tank.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_on, machine_rtg_furnace_on.getUnlocalizedName());
register(machine_wood_burner);
@ -3344,7 +3336,6 @@ public class ModBlocks {
GameRegistry.registerBlock(absorber_green, absorber_green.getUnlocalizedName());
GameRegistry.registerBlock(absorber_pink, absorber_pink.getUnlocalizedName());
GameRegistry.registerBlock(decon, decon.getUnlocalizedName());
GameRegistry.registerBlock(transission_hatch, transission_hatch.getUnlocalizedName());
//Solar Tower Blocks
GameRegistry.registerBlock(machine_solar_boiler, machine_solar_boiler.getUnlocalizedName());

View File

@ -1,8 +1,5 @@
package com.hbm.blocks.bomb;
import java.util.Random;
import com.hbm.blocks.ModBlocks;
import com.hbm.config.BombConfig;
import com.hbm.entity.logic.EntityBalefire;
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 net.minecraft.block.BlockContainer;
import net.minecraft.block.material.Material;
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.MathHelper;
import net.minecraft.world.World;
public class BlockCrashedBomb extends BlockContainer implements IBomb {
public BlockCrashedBomb(Material p_i45386_1_) {
super(p_i45386_1_);
public BlockCrashedBomb(Material mat) {
super(mat);
}
@Override
public TileEntity createNewTileEntity(World p_149915_1_, int p_149915_2_) {
public TileEntity createNewTileEntity(World world, int meta) {
return new TileEntityCrashedBomb();
}
@Override
public Item getItemDropped(int p_149650_1_, Random p_149650_2_, int p_149650_3_) {
return Item.getItemFromBlock(ModBlocks.crashed_balefire);
}
@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);
}
}
@Override public int getRenderType() { return -1; }
@Override public boolean isOpaqueCube() { return false; }
@Override public boolean renderAsNormalBlock() { return false; }
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) {
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.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))));
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_difurnace_off), 9);
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_diesel), 8);
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_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_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_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() });
@ -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.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.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.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() });

View File

@ -2,9 +2,6 @@ package com.hbm.inventory;
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.Slot;
import net.minecraft.item.ItemStack;
@ -36,17 +33,4 @@ public class SlotNonRetarded extends Slot {
public int getSlotStackLimit() {
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;
import com.hbm.inventory.SlotNonRetarded;
import com.hbm.items.block.ItemBlockStorageCrate;
import net.minecraft.entity.player.EntityPlayer;
import net.minecraft.entity.player.InventoryPlayer;
import net.minecraft.inventory.IInventory;
import net.minecraft.item.ItemStack;
import net.minecraft.tileentity.TileEntity;
public class ContainerCrateBase extends ContainerBase {
@ -15,12 +17,25 @@ public class ContainerCrateBase extends ContainerBase {
super(invPlayer, tedf);
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
public ItemStack slotClick(int index, int button, int mode, EntityPlayer player) {
// prevents the player from moving around the currently open box
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) {
return null;
}
@ -36,4 +51,24 @@ public class ContainerCrateBase extends ContainerBase {
super.onContainerClosed(p_75134_1_);
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 pellet_antimatter;
public static Item singularity_micro;
public static Item singularity;
public static Item singularity_counter_resonant;
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_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");
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_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());
//Singularities, black holes and other cosmic horrors
GameRegistry.registerItem(singularity_micro, singularity_micro.getUnlocalizedName());
GameRegistry.registerItem(singularity, singularity.getUnlocalizedName());
GameRegistry.registerItem(singularity_counter_resonant, singularity_counter_resonant.getUnlocalizedName());
GameRegistry.registerItem(singularity_super_heated, singularity_super_heated.getUnlocalizedName());

View File

@ -1,6 +1,6 @@
package com.hbm.items.machine;
import com.hbm.tileentity.TileEntityMachineBase;
import com.hbm.tileentity.TileEntityLoadedBase;
import com.hbm.util.CompatExternal;
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) {
TileEntity te = CompatExternal.getCoreFromPos(world, x, y, z);
if(te != null && te instanceof TileEntityMachineBase) {
TileEntityMachineBase tile = (TileEntityMachineBase) te;
if(te != null && te instanceof TileEntityLoadedBase) {
TileEntityLoadedBase tile = (TileEntityLoadedBase) te;
if(!tile.muffled) {
tile.muffled = true;
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_difurnace_off, 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_nuke_furnace_off, 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.reactor_research, 1));

View File

@ -14,6 +14,7 @@ import com.hbm.handler.HbmKeybinds.EnumKeybind;
import com.hbm.interfaces.IItemHUD;
import com.hbm.inventory.RecipesCommon.ComparableStack;
import com.hbm.inventory.gui.GUIWeaponTable;
import com.hbm.items.IEquipReceiver;
import com.hbm.items.IKeybindReceiver;
import com.hbm.items.weapon.sedna.hud.IHUDComponent;
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.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 */
public long[] lastShot;
@ -230,8 +231,10 @@ public class ItemGunBaseNT extends Item implements IKeybindReceiver, IItemHUD {
}
}
@Override
public void onEquip(EntityPlayer player, ItemStack stack) {
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);
this.setPrimary(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(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(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(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(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(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(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.BiFunction;
import java.util.function.Function;
import com.hbm.config.ClientConfig;
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.factory.GunFactory.EnumAmmo;
import com.hbm.items.weapon.sedna.mags.MagazineFullReload;
import com.hbm.items.weapon.sedna.mods.WeaponModManager;
import com.hbm.main.ResourceManager;
import com.hbm.particle.SpentCasing;
import com.hbm.particle.SpentCasing.CasingType;
@ -46,15 +48,21 @@ public class XFactory22lr {
ModItems.gun_am180 = new ItemGunBaseNT(WeaponQuality.A_SIDE, new GunConfig()
.dura(177 * 25).draw(15).inspect(38).crosshair(Crosshair.L_CIRCLE).smoke(LAMBDA_SMOKE)
.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))
.offset(1, -0.0625 * 1.5, -0.1875D)
.setupStandardFire().recoil(LAMBDA_RECOIL_AM180))
.setupStandardConfiguration()
.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) -> {
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))
.pp(Lego.LAMBDA_STANDARD_CLICK_PRIMARY).pr(Lego.LAMBDA_STANDARD_RELOAD)
.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)
.rec(new Receiver(0)
.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))
.ps(Lego.LAMBDA_STANDARD_CLICK_PRIMARY).pr(Lego.LAMBDA_STANDARD_RELOAD)
.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");
}
@ -95,10 +95,10 @@ public class XFactory357 {
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("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()
.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()
.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))
@ -119,4 +119,12 @@ public class XFactory357 {
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(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.SAW)
.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 static final String MODID = "hbm";
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:
//V T (X)
//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_2");
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 ///
remapItems.put("hbm:item.gadget_explosive8", ModItems.early_explosive_lenses);
remapItems.put("hbm:item.man_explosive8", ModItems.explosive_lenses);
remapItems.put("hbm:item.briquette_lignite", ModItems.briquette);
remapItems.put("hbm:item.antiknock", ModItems.fuel_additive);
remapItems.put("hbm:item.kit_toolbox_empty", ModItems.toolbox);
remapItems.put("hbm:item.kit_toolbox", ModItems.legacy_toolbox);
@ -1697,7 +1700,6 @@ public class MainRegistry {
}
if(mapping.type == GameRegistry.Type.ITEM) {
if(remapItems.get(mapping.name) != null) {
mapping.remap(remapItems.get(mapping.name));
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.CustomNukeEntry;
import com.hbm.tileentity.bomb.TileEntityNukeCustom.EnumEntryType;
import com.hbm.tileentity.machine.TileEntityNukeFurnace;
import com.hbm.util.*;
import com.hbm.util.ArmorRegistry.HazardClass;
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 ///
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));
API.hideItem(new ItemStack(ModBlocks.machine_electric_furnace_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.reinforced_lamp_on));
API.hideItem(new ItemStack(ModBlocks.statue_elb_f));
API.hideItem(new ItemStack(ModBlocks.cheater_virus));
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.bobmazon_hidden));
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 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_balefire = new HFRWavefrontObject(new ResourceLocation(RefStrings.MODID, "models/bombs/dud_balefire.obj")).asVBO();
//Satellites
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 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_balefire_tex = new ResourceLocation(RefStrings.MODID, "textures/models/bombs/dud_balefire.png");
//Satellites
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 com.hbm.items.weapon.sedna.ItemGunBaseNT;
import com.hbm.items.weapon.sedna.mods.WeaponModManager;
import com.hbm.main.MainRegistry;
import com.hbm.main.ResourceManager;
import com.hbm.render.anim.HbmAnimations;
@ -38,6 +39,8 @@ public class ItemRenderAm180 extends ItemRenderWeaponBase {
Minecraft.getMinecraft().renderEngine.bindTexture(ResourceManager.am180_tex);
double scale = 0.1875D;
GL11.glScaled(scale, scale, scale);
boolean silenced = this.hasSilencer(stack);
double[] equip = HbmAnimations.getRelevantTransformation("EQUIP");
double[] recoil = HbmAnimations.getRelevantTransformation("RECOIL");
@ -59,7 +62,7 @@ public class ItemRenderAm180 extends ItemRenderWeaponBase {
HbmAnimations.applyRelevantTransformation("Gun");
ResourceManager.am180.renderPart("Gun");
ResourceManager.am180.renderPart("Silencer");
if(silenced) ResourceManager.am180.renderPart("Silencer");
GL11.glPushMatrix();
HbmAnimations.applyRelevantTransformation("Trigger");
@ -98,7 +101,7 @@ public class ItemRenderAm180 extends ItemRenderWeaponBase {
GL11.glPopMatrix();
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(90, 0, 1, 0);
this.renderSmokeNodes(gun.getConfig(stack, 0).smokeNodes, 0.25D);
@ -107,11 +110,12 @@ public class ItemRenderAm180 extends ItemRenderWeaponBase {
GL11.glShadeModel(GL11.GL_FLAT);
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 * gun.shotRand, 1, 0, 0);
GL11.glScaled(0.5, 0.5, 0.5);
this.renderMuzzleFlash(gun.lastShot[0], 75, 5);
double flashScale = silenced ? 0.5 : 0.75;
GL11.glScaled(flashScale, flashScale, flashScale);
this.renderMuzzleFlash(gun.lastShot[0], silenced ? 75 : 50, silenced ? 5 : 7.5);
GL11.glPopMatrix();
}
@ -148,7 +152,16 @@ public class ItemRenderAm180 extends ItemRenderWeaponBase {
GL11.glShadeModel(GL11.GL_SMOOTH);
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);
}
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) {
double scale = 0.125D;
GL11.glScaled(scale, scale, scale);
GL11.glRotated(-90, 0, 1, 0);
}
public void setupModTable(ItemStack stack) {

View File

@ -1,38 +1,42 @@
package com.hbm.render.tileentity;
import java.util.Random;
import org.lwjgl.opengl.GL11;
import com.hbm.main.ResourceManager;
import com.hbm.util.fauxpointtwelve.BlockPos;
import net.minecraft.client.renderer.tileentity.TileEntitySpecialRenderer;
import net.minecraft.tileentity.TileEntity;
public class RenderCrashedBomb extends TileEntitySpecialRenderer {
public static Random rand = new Random();
@Override
public void renderTileEntityAt(TileEntity tileEntity, double x, double y, double z, float f)
{
GL11.glPushMatrix();
GL11.glTranslated(x + 0.5D, y, z + 0.5D);
GL11.glEnable(GL11.GL_LIGHTING);
GL11.glDisable(GL11.GL_CULL_FACE);
switch(tileEntity.getBlockMetadata())
{
case 5:
GL11.glRotatef(90, 0F, 1F, 0F); break;
case 2:
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;
}
@Override
public void renderTileEntityAt(TileEntity tile, double x, double y, double z, float f) {
GL11.glPushMatrix();
GL11.glTranslated(x + 0.5D, y, z + 0.5D);
GL11.glEnable(GL11.GL_LIGHTING);
GL11.glEnable(GL11.GL_CULL_FACE);
rand.setSeed(BlockPos.getIdentity(tile.xCoord, tile.yCoord, tile.zCoord));
double yaw = rand.nextDouble() * 360;
double pitch = rand.nextDouble() * 45 + 45;
double roll = rand.nextDouble() * 360;
double offset = rand.nextDouble() * 2 - 1;
bindTexture(ResourceManager.dud_tex);
ResourceManager.dud.renderAll();
GL11.glRotated(yaw, 0, 1, 0);
GL11.glRotated(pitch, 1, 0, 0);
GL11.glRotated(roll, 0, 0, 1);
GL11.glTranslated(0, 0, -offset);
GL11.glEnable(GL11.GL_CULL_FACE);
GL11.glPopMatrix();
}
GL11.glShadeModel(GL11.GL_SMOOTH);
bindTexture(ResourceManager.dud_balefire_tex);
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 com.hbm.blocks.generic.BlockSkeletonHolder.TileEntitySkeletonHolder;
import com.hbm.items.weapon.sedna.ItemGunBaseNT;
import com.hbm.main.ResourceManager;
import net.minecraft.block.Block;
@ -45,10 +44,6 @@ public class RenderSkeletonHolder extends TileEntitySpecialRenderer {
ItemStack stack = pedestal.item.copy();
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()))) {
GL11.glScaled(1.5, 1.5, 1.5);

View File

@ -62,7 +62,6 @@ public class TileMappings {
put(TileEntityMachineUF6Tank.class, "tileentity_uf6_tank");
put(TileEntityMachinePuF6Tank.class, "tileentity_puf6_tank");
put(TileEntityMachineReactorBreeding.class, "tileentity_reactor");
put(TileEntityNukeFurnace.class, "tileentity_nukefurnace");
put(TileEntityRtgFurnace.class, "tileentity_rtgfurnace");
put(TileEntityMachineElectricFurnace.class, "tileentity_electric_furnace");
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.items.ModItems;
import com.hbm.lib.Library;
import com.hbm.main.MainRegistry;
import com.hbm.sound.AudioWrapper;
import com.hbm.tileentity.IConfigurableMachine;
import com.hbm.tileentity.IFluidCopiable;
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 long power;
public int soundCycle = 0;
public long powerCap = maxPower;
public FluidTank tank;
public boolean wasOn = false;
private AudioWrapper audio;
/* CONFIGURABLE CONSTANTS */
public static long maxPower = 50000;
@ -53,7 +57,6 @@ public class TileEntityMachineDiesel extends TileEntityMachinePolluting implemen
fuelEfficiency.put(FuelGrade.HIGH, 0.75D);
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_bottom = new int[] { 1, 2 };
@ -71,13 +74,8 @@ public class TileEntityMachineDiesel extends TileEntityMachinePolluting implemen
@Override
public boolean isItemValidForSlot(int i, ItemStack stack) {
if (i == 0)
if (FluidContainerRegistry.getFluidContent(stack, tank.getTankType()) > 0)
return true;
if (i == 2)
if (stack.getItem() instanceof IBatteryItem)
return true;
if(i == 0) return FluidContainerRegistry.getFluidContent(stack, tank.getTankType()) > 0;
if(i == 2) return stack.getItem() instanceof IBatteryItem;
return false;
}
@ -106,17 +104,8 @@ public class TileEntityMachineDiesel extends TileEntityMachinePolluting implemen
@Override
public boolean canExtractItem(int i, ItemStack stack, int j) {
if(i == 1) {
if(stack.getItem() == ModItems.canister_empty || stack.getItem() == ModItems.tank_steel) {
return true;
}
}
if(i == 2) {
if(stack.getItem() instanceof IBatteryItem && ((IBatteryItem) stack.getItem()).getCharge(stack) == ((IBatteryItem) stack.getItem()).getMaxCharge(stack)) {
return true;
}
}
if(i == 1) return 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 false;
}
@ -129,6 +118,8 @@ public class TileEntityMachineDiesel extends TileEntityMachinePolluting implemen
if(!worldObj.isRemote) {
this.wasOn = false;
for(ForgeDirection dir : ForgeDirection.VALID_DIRECTIONS) {
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);
@ -153,6 +144,49 @@ public class TileEntityMachineDiesel extends TileEntityMachinePolluting implemen
generate();
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);
buf.writeInt((int) power);
buf.writeInt((int) powerCap);
buf.writeBoolean(wasOn);
tank.serialize(buf);
}
@ -169,6 +204,7 @@ public class TileEntityMachineDiesel extends TileEntityMachinePolluting implemen
super.deserialize(buf);
this.power = buf.readInt();
this.powerCap = buf.readInt();
this.wasOn = buf.readBoolean();
tank.deserialize(buf);
}
@ -200,15 +236,7 @@ public class TileEntityMachineDiesel extends TileEntityMachinePolluting implemen
if(hasAcceptableFuel()) {
if (tank.getFill() > 0) {
if(!shutUp) {
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;
this.wasOn = true;
tank.setFill(tank.getFill() - 1);
if(tank.getFill() < 0)
@ -227,30 +255,12 @@ public class TileEntityMachineDiesel extends TileEntityMachinePolluting implemen
}
}
@Override
public long getPower() {
return power;
}
@Override public long getPower() { return power; }
@Override public void setPower(long i) { this.power = i; }
@Override public long getMaxPower() { return this.maxPower; }
@Override
public void setPower(long i) {
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 public FluidTank[] getReceivingTanks() { return new FluidTank[] {tank}; }
@Override public FluidTank[] getAllTanks() { return new FluidTank[] { tank }; }
@Override
public String getConfigName() {
@ -268,7 +278,6 @@ public class TileEntityMachineDiesel extends TileEntityMachinePolluting implemen
fuelEfficiency.put(grade, array.get(grade.ordinal()).getAsDouble());
}
}
shutUp = IConfigurableMachine.grab(obj, "B:shutUp", shutUp);
}
@Override
@ -287,7 +296,6 @@ public class TileEntityMachineDiesel extends TileEntityMachinePolluting implemen
writer.value(d);
}
writer.endArray().setIndent(" ");
writer.name("B:shutUp").value(shutUp);
}
@Override

View File

@ -3,6 +3,8 @@ package com.hbm.tileentity.machine;
import com.hbm.inventory.fluid.FluidType;
import com.hbm.inventory.fluid.Fluids;
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.util.fauxpointtwelve.DirPos;
@ -21,6 +23,7 @@ public class TileEntityMachineIntake extends TileEntityLoadedBase implements IEn
public long power;
public float fan = 0;
public float prevFan = 0;
private AudioWrapper audio;
public TileEntityMachineIntake() {
this.compair = new FluidTank(Fluids.AIR, 1_000);
@ -54,6 +57,23 @@ public class TileEntityMachineIntake extends TileEntityLoadedBase implements IEn
this.fan -= 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
public void serialize(ByteBuf buf) {
super.serialize(buf);

View File

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

View File

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

View File

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

View File

@ -85,7 +85,11 @@ public class BlockPos implements Cloneable {
/** modified 1.12 vanilla implementation */
@Override
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

View File

@ -27,7 +27,7 @@ public class DesertAtom001 extends WorldGenerator
Block Block7 = ModBlocks.deco_tungsten;
Block Block8 = ModBlocks.steel_poles;
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 Block12 = ModBlocks.reinforced_lamp_off;
Block Block13 = ModBlocks.pole_satellite_receiver;

View File

@ -27,7 +27,7 @@ public class DesertAtom002
Block Block7 = ModBlocks.deco_tungsten;
Block Block8 = ModBlocks.steel_poles;
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 Block12 = ModBlocks.reinforced_lamp_off;
Block Block13 = ModBlocks.pole_satellite_receiver;

View File

@ -30,7 +30,7 @@ public class DesertAtom003
Block Block7 = ModBlocks.deco_tungsten;
Block Block8 = ModBlocks.steel_poles;
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 Block12 = ModBlocks.reinforced_lamp_off;
Block Block13 = ModBlocks.pole_satellite_receiver;

View File

@ -1017,105 +1017,6 @@ item.alloy_pickaxe.name=Legierungsspitzhacke
item.alloy_plate.name=Legierungsbrustpanzer
item.alloy_shovel.name=Legierungsschaufel
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_cargo.name=16" Artilleriegranate (Expresslieferung)
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_phosphorus.name=16" 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_fireext.name=Feuerlöscher-Wassertank
item.ammo_fireext_foam.name=Feuerlöscher-Schaumtank
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_he.name=227mm Artillerielenkrakete (HE)
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_single.name=610mm Artillerielenkrakete
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_apfsds_du.name=240mm APFSDS-DU
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_shot.name=Schrot und Pulver
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_beryllium.name=Beryllium-Reaktionskatalysator
item.ams_catalyst_blank.name=Blanker Reaktionskatalysator
@ -2217,7 +2056,8 @@ item.grenade_tau.name=Taugranate
item.grenade_zomg.name=Negativenergie-Paarvernichtungsgranate
item.gun_aberrator.name=Aberrator
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_sexy.name=Sexy
item.gun_autoshotgun_shredder.name=Shredder
@ -2334,7 +2174,7 @@ item.inf_diesel.name=Unendlicher Dieseltank
item.inf_sulfur.name=Unendlicher Schwefeltank
item.inf_tritium.name=Unendlicher Tritiumtank
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_advanced_alloy.name=Fortgeschrittene Legierung
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_router.name=Förderband-Sortierer
tile.crane_router.desc=Sortiert Items basierend auf eingestellte Kriterien$Seiten können als Blacklist, Whitelist oder Wildcard eingestellt werden$Widlcard-Seiten werden nur verwendet, wenn kein anderer Filter zutrifft
tile.crate_splitter.name=Förderband-Teiler
tile.crane_splitter.name=Förderband-Teiler
tile.crane_splitter.desc=Teilt Items und Stacks gleichmäßig auf zwei Förderbänder$Zählt selbst als Förderband, kann also direkt in Einsetzer und Sortierer führen
tile.crane_unboxer.name=Förderband-Entpacker
tile.crane_unboxer.desc=Öffnet boxen$Rechstclick mit Schraubenzieher um Ausgang zu definieren$Shiftclick mit Schraubenzieher um Eingang zu definieren$Zweimal clicken, um gegenüberliegende Seite zu definieren
@ -4188,6 +4028,7 @@ tile.crate_lead.name=Gefahrenstoffkiste
tile.crate_metal.name=Maschinenkiste
tile.crate_red.name=Rote Kiste
tile.crate_steel.name=Stahlkiste
tile.crate_supply.name=Vorratskiste
tile.crate_template.name=Vorlagenkiste
tile.crate_tungsten.name=Wolframkiste
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_shovel.name=Advanced Alloy Shovel
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_cargo.name=16" Express Delivery 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_phosphorus.name=16" 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_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_fireext.name=Fire Extinguisher Water Tank
item.ammo_fireext_foam.name=Fire Extinguisher Foam 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_he.name=227mm Guided Artillery Rocket Pod (HE)
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_single.name=610mm Guided Artillery Rocket Pod
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_apfsds_du.name=240mm APFSDS-DU
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_shot.name=Shot and Powder
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_beryllium.name=Beryllium 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.gun_aberrator.name=Aberrator
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_sexy.name=Sexy
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_tritium.name=Infinite Tritium 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_advanced_alloy.name=Advanced Alloy 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_red.name=Red Crate
tile.crate_steel.name=Steel Crate
tile.crate_supply.name=Supply Crate
tile.crate_template.name=Template Crate
tile.crate_tungsten.name=Tungsten 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.glyphid_gland.name=囊腺
item.glyphid_gland_empty.name=异虫腺体
item.gun_am180.name=消音冲锋枪
item.gun_am180.name=.22口径冲锋枪
item.gun_autoshotgun.name=自动霰弹枪
item.gun_autoshotgun_sexy.name=Sexy
item.gun_autoshotgun_shredder.name=粉碎者
@ -2909,7 +2909,7 @@ item.gun_cryolator_ammo.name=急冻单元
item.gun_detonator.name=激光引爆器
item.gun_double_barrel.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_flamer.name=火焰喷射器
item.gun_flamer_daybreaker.name=破晓之时
@ -5058,7 +5058,7 @@ tile.crane_grabber.name=输送带抓斗
tile.crane_grabber.desc=从经过的输送带中取出物品并将其放入容器$将只从最近的通道中取出物品$最多有9个带黑白名单的过滤槽$用螺丝刀右键单击以设置输入侧$用螺丝起子平移单击以设置输出侧$单击两次以设置对侧
tile.crane_inserter.name=输送带导入器
tile.crane_inserter.desc=接受输送带上的物品并将其放入容器中$用螺丝刀右键单击以设置输入侧$用螺丝刀单击以设置输出侧$单击两次以设置相反侧
tile.crane_partitioner.name=Acidizer Input Partitioner
tile.crane_partitioner.name=酸化器输入分隔器
tile.crane_partitioner.desc=接受并存储至多9种输入矿物酸化器的物品$并在物品数量达到配方要求时将其输出$无配方物品也会被存储,需要从侧面导出
tile.crane_router.name=输送带分拣机
tile.crane_router.desc=根据定义的条件对项目排序$侧面可以定义为黑名单、白名单或通配符$只有在没有其他筛选器匹配的情况下才选择通配符侧面
@ -6068,13 +6068,13 @@ pa.pause_unloaded.desc=粒子进入了未加载的区块。$在粒子与粒子
pa.crash_defocus.desc=粒子失焦。$请确保加速器含有足够数量的四极磁铁。
pa.crash_derail.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_nocoil.desc=粒子进入了缺少线圈的双极磁铁或四极磁铁。$请安装线圈,以使上述部件正常工作。
pa.crash_overspeed.desc=粒子进入某双极磁铁或四极磁铁时,$其速度超出了内部线圈接受的最大速度。$请安装更高等级的线圈,$或调整双极磁铁设定以使粒子提前离开加速区域。
tile.pa_beamline.desc=可选部件,用于连接不同加速器部件$也可用于低成本地扩大粒子加速器尺寸,以达到双极磁铁的尺寸需求
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_rfc.desc=需要冷却!$使粒子动量增加100并使粒子失焦程度增加100$粒子失焦程度到达1000时会坍毁
tile.pa_source.desc=需要冷却!$使用两个物品来创造一个粒子
@ -6091,99 +6091,106 @@ tile.refueler.name=燃料装填站
tile.wand_air.name=结构魔杖方块(空气)
tile.wand_loot.name=结构魔杖方块(战利品)
tile.wand_jigsaw.name=结构魔杖方块(拼图)
container.toolBox=Toolbox
container.weaponsTable=Weapon Modification Table
item.ammo_standard.bmg50_he.name=.50 BMG Round (High-Explosive)
item.ammo_standard.g10_explosive.name=10 Gauge Explosive Buckshot
item.ammo_standard.p45_ap.name=.45 Round (Armor Piercing)
item.ammo_standard.p45_du.name=.45 Round (Depleted Uranium)
item.ammo_standard.p45_fmj.name=.45 Round (Full Metal Jacket)
item.ammo_standard.p45_jhp.name=.45 Round (Jacketed Hollow Point)
item.ammo_standard.p45_sp.name=.45 Round (Soft Point)
item.ammo_standard.r762_he.name=7.62mm Round (High-Explosive)
item.conveyor_wand.regular.name=Conveyor Belt
item.conveyor_wand.express.name=Express Conveyor Belt
item.conveyor_wand.double.name=Double-Lane Conveyor Belt
item.conveyor_wand.triple.name=Triple-Lane Conveyor Belt
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.vertical.desc=Is capable of placing lifts & chutes to move items vertically
container.toolBox=工具箱
container.weaponsTable=武器改装台
item.ammo_standard.bmg50_he.name=.50BMG子弹 (高爆弹药)
item.ammo_standard.g10_explosive.name=十号爆炸霰弹
item.ammo_standard.p45_ap.name=.45口径子弹(穿甲弹)
item.ammo_standard.p45_du.name=.45口径子弹(贫铀弹)
item.ammo_standard.p45_fmj.name=.45口径子弹(金属被甲弹)
item.ammo_standard.p45_jhp.name=.45口径子弹(被甲空尖弹)
item.ammo_standard.p45_sp.name=.45口径子弹(普通弹)
item.ammo_standard.r762_he.name=7.62mm子弹(高爆弹药)
item.conveyor_wand.regular.name=输送带
item.conveyor_wand.express.name=快速输送带
item.conveyor_wand.double.name=双轨道输送带
item.conveyor_wand.triple.name=三轨道输送带
item.conveyor_wand.desc=运送掉落在上面的物品$右键单击任意两点创建传送带$蹲下单击右键单独放置传送带$使用螺丝刀可以改变方向$蹲下右键单击可以改变类型
item.conveyor_wand.vertical.desc=能放置垂直输送带或者滑槽来垂直输送物品
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_heavy_revolver_scoped.name=Scoped .44 Magnum
item.gun_henry_lincoln.name=Lincoln's Repeater
item.gun_maresleg_short.name=Mare's Leg
item.gun_mas36.name=South Star
item.gun_uzi_richter.name=Richter
item.item_secret.aberrator.name=Aberrator Part
item.toolbox.name=Toolbox
item.toolbox_legacy.name=Toolbox (LEGACY)
item.weapon_mod_caliber.bmg50.name=.50 BMG Conversion Kit
item.weapon_mod_caliber.m357.name=.357 Magnum Conversion Kit
item.weapon_mod_caliber.m44.name=.44 Magnum Conversion Kit
item.weapon_mod_caliber.p22.name=.22 LR Conversion Kit
item.weapon_mod_caliber.p45.name=.45 Conversion Kit
item.weapon_mod_caliber.p9.name=9mm Conversion Kit
item.weapon_mod_caliber.r556.name=5.56mm Conversion Kit
item.weapon_mod_caliber.r762.name=7.62mm Conversion Kit
item.weapon_mod_generic.bigmt_damage.name=Optimized Saturnite Receiver
item.weapon_mod_generic.bigmt_dura.name=High-Durability Saturnite Parts
item.weapon_mod_generic.bronze_damage.name=Optimized Bronze Receiver
item.weapon_mod_generic.bronze_dura.name=High-Durability Bronze Parts
item.weapon_mod_generic.desh_damage.name=Optimized Desh Receiver
item.weapon_mod_generic.desh_dura.name=High-Durability Desh Parts
item.weapon_mod_generic.dura_damage.name=Optimized HSS Receiver
item.weapon_mod_generic.dura_dura.name=High-Durability HSS Parts
item.weapon_mod_generic.ferro_damage.name=Optimized Ferrouranium Receiver
item.weapon_mod_generic.ferro_dura.name=High-Durability Ferrouranium Parts
item.weapon_mod_generic.iron_damage.name=Optimized Iron Receiver
item.weapon_mod_generic.iron_dura.name=High-Durability Iron Parts
item.weapon_mod_generic.steel_damage.name=Optimized Steel Receiver
item.weapon_mod_generic.steel_dura.name=High-Durability Steel Parts
item.weapon_mod_generic.tcalloy_damage.name=Optimized Resistant Alloy Receiver
item.weapon_mod_generic.tcalloy_dura.name=High-Durability Resistant Alloy Parts
item.weapon_mod_generic.wsteel_damage.name=Optimized Weapon Steel Receiver
item.weapon_mod_generic.wsteel_dura.name=High-Durability Weapon Steel Parts
item.weapon_mod_special.bayonet.name=Bayonet
item.weapon_mod_special.choke.name=Choke
item.weapon_mod_special.furniture_black.name=Polymer Furniture (Black)
item.weapon_mod_special.furniture_green.name=Polymer Furniture (Green)
item.weapon_mod_special.greasegun.name=Grease Gun Modernization Kit
item.weapon_mod_special.las_auto.name=Laser Rifle Automatic Receiver
item.weapon_mod_special.las_capacitor.name=Laser Rifle Extended Capacitor
item.weapon_mod_special.las_shotgun.name=Laser Rifle Beam Splitter
item.weapon_mod_special.saw.name=Hacksaw
item.weapon_mod_special.scope.name=Scope
item.weapon_mod_special.silencer.name=Silencer
item.weapon_mod_special.skin_saturnite.name=Saturnite Skin
item.weapon_mod_special.slowdown.name=Gear Train
item.weapon_mod_special.speedloader.name=Speedloader
item.weapon_mod_special.speedup.name=Auxiliary Electric Engine
item.weapon_mod_special.stack_mag.name=Double-Stacked Magazine
item.weapon_mod_test.damage.name=DAMAGE UPGRADE
item.weapon_mod_test.firerate.name=FIRE RATE UPGRADE
item.weapon_mod_test.multi.name=MULTI SHOT UPGRADE
item.weapon_mod_test.override_2_5.name=DAMAGE OVERRIDE (2.5)
item.weapon_mod_test.override_5.name=DAMAGE OVERRIDE (5)
item.weapon_mod_test.override_7_5.name=DAMAGE OVERRIDE (7.5)
item.weapon_mod_test.override_10.name=DAMAGE OVERRIDE (10)
item.weapon_mod_test.override_12_5.name=DAMAGE OVERRIDE (12.5)
item.weapon_mod_test.override_15.name=DAMAGE OVERRIDE (15)
item.weapon_mod_test.override_20.name=DAMAGE OVERRIDE (20)
item.gun_heavy_revolver_scoped.name=带有准镜的.44马格南转轮手枪
item.gun_henry_lincoln.name=林肯的中继器
item.gun_maresleg_short.name=马腿
item.gun_mas36.name=南方之星
item.gun_uzi_richter.name=里氏
item.item_secret.aberrator.name=畸变部件
item.toolbox.name=工具箱
item.toolbox_legacy.name=工具箱(遗留)
item.weapon_mod_caliber.bmg50.name=.50BMG改装套件
item.weapon_mod_caliber.m357.name=.357马格南改装套件
item.weapon_mod_caliber.m44.name=.44马格南改装套件
item.weapon_mod_caliber.p22.name=.22LR改装套件
item.weapon_mod_caliber.p45.name=.45口径改装套件
item.weapon_mod_caliber.p9.name=9毫米口径改装套件
item.weapon_mod_caliber.r556.name=5.56mm改装套件
item.weapon_mod_caliber.r762.name=7.62改装套件
item.weapon_mod_generic.bigmt_damage.name=土星弹道优化器
item.weapon_mod_generic.bigmt_dura.name=高耐用性土星部件
item.weapon_mod_generic.bronze_damage.name=青铜弹道优化器
item.weapon_mod_generic.bronze_dura.name=高耐用性青铜部件
item.weapon_mod_generic.desh_damage.name=Desh弹道优化器
item.weapon_mod_generic.desh_dura.name=高耐用性Desh部件
item.weapon_mod_generic.dura_damage.name=高速钢弹道优化器
item.weapon_mod_generic.dura_dura.name=高耐用性高速钢部件
item.weapon_mod_generic.ferro_damage.name=铀铁合金弹道优化器
item.weapon_mod_generic.ferro_dura.name=高耐用性铀铁合金部件
item.weapon_mod_generic.iron_damage.name=铁制弹道优化器
item.weapon_mod_generic.iron_dura.name=高耐用性铁制部件
item.weapon_mod_generic.steel_damage.name=钢制弹道优化器
item.weapon_mod_generic.steel_dura.name=高耐用性钢制部件
item.weapon_mod_generic.tcalloy_damage.name=耐高温合金弹道优化
item.weapon_mod_generic.tcalloy_dura.name=高耐用性耐高温合金部件
item.weapon_mod_generic.wsteel_damage.name=武器级钢弹道优化器
item.weapon_mod_generic.wsteel_dura.name=高耐用性武器级钢部件
item.weapon_mod_special.bayonet.name=刺刀
item.weapon_mod_special.choke.name=收束器
item.weapon_mod_special.furniture_black.name=聚合物部件(黑色)
item.weapon_mod_special.furniture_green.name=聚合物部件(绿色)
item.weapon_mod_special.greasegun.name=M3黄油枪现代化改装套件
item.weapon_mod_special.las_auto.name=激光步枪自动机构
item.weapon_mod_special.las_capacitor.name=激光步枪额外电容器
item.weapon_mod_special.las_shotgun.name=激光步枪光束散射器
item.weapon_mod_special.saw.name=钢锯
item.weapon_mod_special.scope.name=瞄准镜
item.weapon_mod_special.silencer.name=消音器
item.weapon_mod_special.skin_saturnite.name=土星外壳
item.weapon_mod_special.slowdown.name=减速齿轮组
item.weapon_mod_special.speedloader.name=快速装填器
item.weapon_mod_special.speedup.name=辅助电动机
item.weapon_mod_special.stack_mag.name=并联弹匣
item.weapon_mod_test.damage.name=伤害升级
item.weapon_mod_test.firerate.name=射速升级
item.weapon_mod_test.multi.name=多重射击升级
item.weapon_mod_test.override_2_5.name=伤害覆盖2.5
item.weapon_mod_test.override_5.name=伤害覆盖5
item.weapon_mod_test.override_7_5.name=伤害覆盖7.5
item.weapon_mod_test.override_10.name=伤害覆盖10
item.weapon_mod_test.override_12_5.name=伤害覆盖12.5
item.weapon_mod_test.override_15.name=伤害覆盖15
item.weapon_mod_test.override_20.name=伤害覆盖20
stat.ntmBullets=Rounds Fired
stat.ntmLegendary=Legendary Items Created
stat.ntmMines=Mines Stepped on
tile.deco_rusty_steel.name=Rusty Steel Deco Block
tile.lightstone.unrefined.name=Raw Lightstone
tile.lightstone.tile.name=Lightstone Tile
tile.lightstone.bricks.name=Lightstone Bricks
tile.lightstone.bricks_chiseled.name=Lightstone Chiseled Bricks
tile.lightstone.chiseled.name=Chiseled Lightstone
tile.lightstone_tile_stairs.name=Lightstone Tile Stairs
tile.lightstone_bricks_stairs.name=Lightstone Brick Stairs
tile.machine_weapon_table.name=Weapon Modification Table
tile.mine_naval.name=Naval Mine
tile.skeleton_holder.name=Oh, that's a dead guy
tile.stones_slab.lightstone.1.name=Lightstone Tile Slab
tile.stones_slab.lightstone.2.name=Lightstone Brick Slab
upgrade.productivity=Productivity %s
tile.deco_rusty_steel.name=锈蚀的钢装饰块
tile.lightstone.unrefined.name=天然淡色石
tile.lightstone.tile.name=淡色石瓷砖
tile.lightstone.bricks.name=淡色石砖
tile.lightstone.bricks_chiseled.name=錾制淡色石砖
tile.lightstone.chiseled.name=錾制淡色石
tile.lightstone_tile_stairs.name=淡色石瓷砖楼梯
tile.lightstone_bricks_stairs.name=淡色石砖楼梯
tile.machine_weapon_table.name=武器改装台
tile.mine_naval.name=水雷
tile.skeleton_holder.name=哦,那家伙已经死了
tile.stones_slab.lightstone.1.name=淡色石瓷砖台阶
tile.stones_slab.lightstone.2.name=淡色石砖块台阶
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.squeakyToy": {"category": "block", "sounds": [{"name": "block/squeakyToy", "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.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