Merge branch 'HbmMods:master' into master

This commit is contained in:
BallOfEnergy 2023-04-24 20:03:09 -05:00 committed by GitHub
commit 303799a203
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
61 changed files with 1293 additions and 196 deletions

View File

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

View File

@ -1,6 +1,13 @@
package api.hbm.block;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import com.hbm.inventory.RecipesCommon.ComparableStack;
import net.minecraft.entity.player.EntityPlayer;
import net.minecraft.item.ItemStack;
import net.minecraft.world.World;
public interface IToolable {
@ -13,6 +20,28 @@ public interface IToolable {
DEFUSER,
WRENCH,
TORCH,
BOLT
BOLT;
public List<ItemStack> stacksForDisplay = new ArrayList();
private static HashMap<ComparableStack, ToolType> map = new HashMap();
public void register(ItemStack stack) {
stacksForDisplay.add(stack);
}
public static ToolType getType(ItemStack stack) {
if(!map.isEmpty()) {
return map.get(new ComparableStack(stack));
}
for(ToolType type : ToolType.values()) {
for(ItemStack tool : type.stacksForDisplay) {
map.put(new ComparableStack(tool), type);
}
}
return map.get(new ComparableStack(stack));
}
}
}

View File

@ -1,9 +1,12 @@
package com.hbm.blocks;
import com.hbm.util.EnumUtil;
import cpw.mods.fml.relauncher.Side;
import cpw.mods.fml.relauncher.SideOnly;
import net.minecraft.block.material.Material;
import net.minecraft.client.renderer.texture.IIconRegister;
import net.minecraft.item.ItemStack;
import net.minecraft.util.IIcon;
public class BlockEnumMulti extends BlockMulti {
@ -38,6 +41,16 @@ public class BlockEnumMulti extends BlockMulti {
}
}
public String getUnlocalizedName(ItemStack stack) {
if(this.multiName) {
Enum num = EnumUtil.grabEnumSafely(this.theEnum, stack.getItemDamage());
return super.getUnlocalizedName() + "." + num.name().toLowerCase();
}
return this.getUnlocalizedName();
}
@Override
@SideOnly(Side.CLIENT)
public IIcon getIcon(int side, int meta) {

View File

@ -31,4 +31,8 @@ public abstract class BlockMulti extends BlockBase implements IBlockMulti {
list.add(new ItemStack(item, 1, i));
}
}
public String getUnlocalizedName(ItemStack stack) {
return this.getUnlocalizedName();
}
}

View File

@ -928,6 +928,7 @@ public class ModBlocks {
public static Block fraction_spacer;
public static Block machine_catalytic_cracker;
public static Block machine_catalytic_reformer;
public static Block machine_coker;
public static Block machine_boiler_off;
public static Block machine_boiler_on;
@ -1980,8 +1981,8 @@ public class ModBlocks {
watz_element = new BlockPillar(Material.iron, RefStrings.MODID + ":watz_element_top").setBlockName("watz_element").setHardness(5.0F).setResistance(10.0F).setCreativeTab(MainRegistry.machineTab).setBlockTextureName(RefStrings.MODID + ":watz_element_side");
watz_control = new BlockPillar(Material.iron, RefStrings.MODID + ":watz_control_top").setBlockName("watz_control").setHardness(5.0F).setResistance(10.0F).setCreativeTab(MainRegistry.machineTab).setBlockTextureName(RefStrings.MODID + ":watz_control_side");
watz_cooler = new BlockGeneric(Material.iron).setBlockName("watz_cooler").setHardness(5.0F).setResistance(10.0F).setCreativeTab(MainRegistry.machineTab).setBlockTextureName(RefStrings.MODID + ":watz_cooler");
watz_end = new BlockBoltable(Material.iron).setBlockName("watz_end").setHardness(5.0F).setResistance(10.0F).setCreativeTab(MainRegistry.machineTab).setBlockTextureName(RefStrings.MODID + ":watz_casing");
watz_cooler = new BlockPillar(Material.iron, RefStrings.MODID + ":watz_cooler_top").setBlockName("watz_cooler").setHardness(5.0F).setResistance(10.0F).setCreativeTab(MainRegistry.machineTab).setBlockTextureName(RefStrings.MODID + ":watz_cooler_side");
watz_end = new BlockToolConversion(Material.iron).addVariant("_bolted").setBlockName("watz_end").setHardness(5.0F).setResistance(10.0F).setCreativeTab(MainRegistry.machineTab).setBlockTextureName(RefStrings.MODID + ":watz_casing");
watz_hatch = new WatzHatch(Material.iron).setBlockName("watz_hatch").setHardness(5.0F).setResistance(10.0F).setCreativeTab(MainRegistry.machineTab).setBlockTextureName(RefStrings.MODID + ":watz_hatch");
watz_conductor = new BlockCableConnect(Material.iron).setBlockName("watz_conductor").setHardness(5.0F).setResistance(10.0F).setCreativeTab(MainRegistry.machineTab).setBlockTextureName(RefStrings.MODID + ":watz_conductor_top");
watz_core = new WatzCore(Material.iron).setBlockName("watz_core").setHardness(5.0F).setResistance(10.0F).setCreativeTab(MainRegistry.machineTab).setBlockTextureName(RefStrings.MODID + ":watz_computer");
@ -2139,6 +2140,7 @@ public class ModBlocks {
fraction_spacer = new FractionSpacer(Material.iron).setBlockName("fraction_spacer").setHardness(5.0F).setResistance(10.0F).setCreativeTab(MainRegistry.machineTab).setBlockTextureName(RefStrings.MODID + ":block_steel");
machine_catalytic_cracker = new MachineCatalyticCracker(Material.iron).setBlockName("machine_catalytic_cracker").setHardness(5.0F).setResistance(10.0F).setCreativeTab(MainRegistry.machineTab).setBlockTextureName(RefStrings.MODID + ":block_steel");
machine_catalytic_reformer = new MachineCatalyticReformer(Material.iron).setBlockName("machine_catalytic_reformer").setHardness(5.0F).setResistance(10.0F).setCreativeTab(MainRegistry.machineTab).setBlockTextureName(RefStrings.MODID + ":block_steel");
machine_coker = new MachineCoker(Material.iron).setBlockName("machine_coker").setHardness(5.0F).setResistance(10.0F).setCreativeTab(MainRegistry.machineTab).setBlockTextureName(RefStrings.MODID + ":block_steel");
machine_autosaw = new MachineAutosaw().setBlockName("machine_autosaw").setHardness(5.0F).setResistance(10.0F).setCreativeTab(MainRegistry.machineTab).setBlockTextureName(RefStrings.MODID + ":block_steel");
machine_drill = new MachineMiningDrill(Material.iron).setBlockName("machine_drill").setHardness(5.0F).setResistance(100.0F).setCreativeTab(MainRegistry.machineTab).setBlockTextureName(RefStrings.MODID + ":machine_drill");
machine_excavator = new MachineExcavator().setBlockName("machine_excavator").setHardness(5.0F).setResistance(100.0F).setCreativeTab(MainRegistry.machineTab).setBlockTextureName(RefStrings.MODID + ":block_steel");
@ -3186,12 +3188,13 @@ public class ModBlocks {
register(machine_flare);
register(machine_refinery);
register(machine_vacuum_distill);
GameRegistry.registerBlock(machine_fraction_tower, machine_fraction_tower.getUnlocalizedName());
GameRegistry.registerBlock(fraction_spacer, fraction_spacer.getUnlocalizedName());
GameRegistry.registerBlock(machine_catalytic_cracker, machine_catalytic_cracker.getUnlocalizedName());
register(machine_fraction_tower);
register(fraction_spacer);
register(machine_catalytic_cracker);
register(machine_catalytic_reformer);
GameRegistry.registerBlock(machine_drill, machine_drill.getUnlocalizedName());
GameRegistry.registerBlock(machine_autosaw, machine_autosaw.getUnlocalizedName());
register(machine_coker);
register(machine_drill);
register(machine_autosaw);
register(machine_excavator);
register(machine_mining_laser);
register(barricade);

View File

@ -1,72 +0,0 @@
package com.hbm.blocks.generic;
import java.util.ArrayList;
import java.util.List;
import com.hbm.blocks.BlockBase;
import com.hbm.blocks.IBlockMulti;
import com.hbm.blocks.ILookOverlay;
import com.hbm.inventory.RecipesCommon.AStack;
import com.hbm.items.ModItems;
import com.hbm.util.I18nUtil;
import api.hbm.block.IToolable;
import cpw.mods.fml.relauncher.Side;
import cpw.mods.fml.relauncher.SideOnly;
import net.minecraft.block.material.Material;
import net.minecraft.client.Minecraft;
import net.minecraft.entity.player.EntityPlayer;
import net.minecraft.item.ItemStack;
import net.minecraft.util.EnumChatFormatting;
import net.minecraft.world.World;
import net.minecraftforge.client.event.RenderGameOverlayEvent.Pre;
public class BlockBoltable extends BlockBase implements IToolable, ILookOverlay, IBlockMulti {
public BlockBoltable(Material mat) {
super(mat);
}
@Override
public boolean onScrew(World world, EntityPlayer player, int x, int y, int z, int side, float fX, float fY, float fZ, ToolType tool) {
if(tool != ToolType.BOLT) return false;
return true;
}
public List<AStack> getMaterials(int meta) {
List<AStack> list = new ArrayList();
return list;
}
@Override
@SideOnly(Side.CLIENT)
public void printHook(Pre event, World world, int x, int y, int z) {
ItemStack held = Minecraft.getMinecraft().thePlayer.getHeldItem();
if(held == null || held.getItem() != ModItems.boltgun) return;
List<String> text = new ArrayList();
text.add(EnumChatFormatting.GOLD + "Requires:");
List<AStack> materials = getMaterials(world.getBlockMetadata(x, y, z));
for(AStack stack : materials) {
try {
ItemStack display = stack.extractForCyclingDisplay(20);
text.add("- " + display.getDisplayName() + " x" + display.stackSize);
} catch(Exception ex) {
text.add(EnumChatFormatting.RED + "- ERROR");
}
}
if(!materials.isEmpty()) {
ILookOverlay.printGeneric(event, I18nUtil.resolveKey(this.getUnlocalizedName() + ".name"), 0xffff00, 0x404000, text);
}
}
@Override
public int getSubCount() {
return 1;
}
}

View File

@ -177,12 +177,7 @@ public class BlockTallPlant extends BlockEnumMulti implements IPlantable, IGrowa
public void onBlockHarvested(World world, int x, int y, int z, int meta, EntityPlayer player) {
if(meta > 7) {
if(world.getBlock(x, y - 1, z) == this) {
if(!player.capabilities.isCreativeMode) {
this.dropBlockAsItem(world, x, y - 1, z, world.getBlockMetadata(x, y - 1, z), 0);
}
}
// dead
} else if(world.getBlock(x, y + 1, z) == this) {
if(player.capabilities.isCreativeMode) {

View File

@ -0,0 +1,178 @@
package com.hbm.blocks.generic;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map.Entry;
import com.hbm.blocks.BlockMulti;
import com.hbm.blocks.ILookOverlay;
import com.hbm.blocks.ModBlocks;
import com.hbm.inventory.RecipesCommon.AStack;
import com.hbm.inventory.RecipesCommon.ComparableStack;
import com.hbm.inventory.RecipesCommon.MetaBlock;
import com.hbm.items.ModItems;
import com.hbm.util.I18nUtil;
import com.hbm.util.InventoryUtil;
import com.hbm.util.Tuple.Pair;
import api.hbm.block.IToolable;
import cpw.mods.fml.relauncher.Side;
import cpw.mods.fml.relauncher.SideOnly;
import net.minecraft.block.material.Material;
import net.minecraft.client.Minecraft;
import net.minecraft.client.renderer.texture.IIconRegister;
import net.minecraft.entity.player.EntityPlayer;
import net.minecraft.item.ItemStack;
import net.minecraft.util.EnumChatFormatting;
import net.minecraft.util.IIcon;
import net.minecraft.world.World;
import net.minecraftforge.client.event.RenderGameOverlayEvent.Pre;
public class BlockToolConversion extends BlockMulti implements IToolable, ILookOverlay {
public IIcon[] icons;
public String[] names;
public BlockToolConversion(Material mat) {
super(mat);
}
public BlockToolConversion addVariant(String... name) {
this.names = name;
return this;
}
@Override
@SideOnly(Side.CLIENT)
public void registerBlockIcons(IIconRegister iconRegister) {
super.registerBlockIcons(iconRegister);
if(names != null) {
icons = new IIcon[names.length];
for(int i = 0; i < names.length; i++) {
icons[i] = iconRegister.registerIcon(getTextureName() + names[i]);
}
}
}
@Override
public String getUnlocalizedName(ItemStack stack) {
int meta = stack.getItemDamage() - 1;
if(meta == -1 || names == null || meta >= names.length) {
return this.getUnlocalizedName();
}
return this.getUnlocalizedName() + names[meta];
}
@Override
@SideOnly(Side.CLIENT)
public IIcon getIcon(int side, int metadata) {
metadata -= 1;
if(metadata == -1 || icons == null || metadata >= icons.length) {
return super.getIcon(side, metadata);
}
return icons[metadata];
}
@Override
public boolean onScrew(World world, EntityPlayer player, int x, int y, int z, int side, float fX, float fY, float fZ, ToolType tool) {
if(world.isRemote) return false;
Pair<AStack[], MetaBlock> result = conversions.get(new Pair(tool, new MetaBlock(this, world.getBlockMetadata(x, y, z))));
if(result == null) return false;
List<AStack> list = new ArrayList();
for(AStack stack : result.key) list.add(stack);
if(list == null || list.isEmpty() || InventoryUtil.doesPlayerHaveAStacks(player, list, true)) {
world.setBlock(x, y, z, result.value.block, result.value.meta, 3);
return true;
}
return false;
}
@Override
@SideOnly(Side.CLIENT)
public void printHook(Pre event, World world, int x, int y, int z) {
ItemStack held = Minecraft.getMinecraft().thePlayer.getHeldItem();
if(held == null) return;
ToolType tool = this.quickLookup(held);
if(tool == null) return;
Pair<AStack[], MetaBlock> result = conversions.get(new Pair(tool, new MetaBlock(this, world.getBlockMetadata(x, y, z))));
if(result == null) return;
List<String> text = new ArrayList();
text.add(EnumChatFormatting.GOLD + "Requires:");
List<AStack> materials = new ArrayList();
for(AStack stack : result.key) materials.add(stack);
List<ItemStack> tools = tool.stacksForDisplay;
ItemStack displayTool = tools.get((int) (Math.abs(System.currentTimeMillis() / 1000) % tools.size()));
text.add(EnumChatFormatting.BLUE + "- " + displayTool.getDisplayName());
for(AStack stack : materials) {
try {
ItemStack display = stack.extractForCyclingDisplay(20);
text.add("- " + display.getDisplayName() + " x" + display.stackSize);
} catch(Exception ex) {
text.add(EnumChatFormatting.RED + "- ERROR");
}
}
if(!materials.isEmpty()) {
ILookOverlay.printGeneric(event, I18nUtil.resolveKey(this.getUnlocalizedName() + ".name"), 0xffff00, 0x404000, text);
}
}
@Override
public int getSubCount() {
return names != null ? names.length + 1 : 1;
}
public static ToolType quickLookup(ItemStack stack) {
return ToolType.getType(stack);
}
public static HashMap<Pair<ToolType, MetaBlock>, Pair<AStack[], MetaBlock>> conversions = new HashMap();
public static void registerRecipes() {
conversions.put(new Pair(ToolType.BOLT, new MetaBlock(ModBlocks.watz_end, 0)), new Pair(new AStack[] {new ComparableStack(ModItems.bolt_dura_steel, 4)}, new MetaBlock(ModBlocks.watz_end, 1)));
}
public static HashMap<Object[], Object> bufferedRecipes = new HashMap();
public static HashMap<Object[], Object> bufferedTools = new HashMap();
public static HashMap<Object[], Object> getRecipes(boolean recipes) {
if(!bufferedRecipes.isEmpty()) return recipes ? bufferedRecipes : bufferedTools;
for(Entry<Pair<ToolType, MetaBlock>, Pair<AStack[], MetaBlock>> entry : conversions.entrySet()) {
List<AStack> list = new ArrayList();
for(AStack stack : entry.getValue().getKey()) {
list.add(stack);
}
list.add(new ComparableStack(entry.getKey().getValue().block, 1, entry.getKey().getValue().meta));
Object[] inputInstance = list.toArray(new AStack[0]); // the instance has to match for the machine lookup to succeed
bufferedRecipes.put(inputInstance, new ItemStack(entry.getValue().getValue().block, 1, entry.getValue().getValue().meta));
bufferedTools.put(inputInstance, entry.getKey().getKey().stacksForDisplay.toArray(new ItemStack[0]));
}
return recipes ? bufferedRecipes : bufferedTools;
}
}

View File

@ -0,0 +1,39 @@
package com.hbm.blocks.machine;
import com.hbm.blocks.BlockDummyable;
import com.hbm.tileentity.machine.oil.TileEntityMachineCoker;
import net.minecraft.block.material.Material;
import net.minecraft.entity.player.EntityPlayer;
import net.minecraft.tileentity.TileEntity;
import net.minecraft.world.World;
public class MachineCoker extends BlockDummyable {
public MachineCoker(Material mat) {
super(mat);
}
@Override
public TileEntity createNewTileEntity(World world, int meta) {
if(meta >= 12) return new TileEntityMachineCoker();
return null;
}
@Override
public boolean onBlockActivated(World world, int x, int y, int z, EntityPlayer player, int side, float hitX, float hitY, float hitZ) {
return standardOpenBehavior(world, x, y, z, player, side);
}
@Override
public int[] getDimensions() {
return new int[] {4, 0, 2, 2, 2, 2};
}
@Override
public int getOffset() {
return 2;
}
}

View File

@ -11,6 +11,7 @@ import com.hbm.main.MainRegistry;
import com.hbm.tileentity.TileEntityProxyCombo;
import com.hbm.tileentity.machine.TileEntityCrucible;
import api.hbm.block.ICrucibleAcceptor;
import cpw.mods.fml.common.network.internal.FMLNetworkHandler;
import cpw.mods.fml.relauncher.Side;
import cpw.mods.fml.relauncher.SideOnly;
@ -24,8 +25,9 @@ import net.minecraft.tileentity.TileEntity;
import net.minecraft.util.AxisAlignedBB;
import net.minecraft.world.World;
import net.minecraftforge.client.event.DrawBlockHighlightEvent;
import net.minecraftforge.common.util.ForgeDirection;
public class MachineCrucible extends BlockDummyable {
public class MachineCrucible extends BlockDummyable implements ICrucibleAcceptor {
public MachineCrucible() {
super(Material.rock);
@ -151,4 +153,31 @@ public class MachineCrucible extends BlockDummyable {
for(AxisAlignedBB aabb : this.bounding) event.context.drawOutlinedBoundingBox(aabb.expand(exp, exp, exp).getOffsetBoundingBox(x - dX + 0.5, y - dY, z - dZ + 0.5), -1);
ICustomBlockHighlight.cleanup();
}
@Override
public boolean canAcceptPartialPour(World world, int x, int y, int z, double dX, double dY, double dZ, ForgeDirection side, MaterialStack stack) {
int[] pos = this.findCore(world, x, y, z);
if(pos == null) return false;
TileEntity tile = world.getTileEntity(pos[0], pos[1], pos[2]);
if(!(tile instanceof TileEntityCrucible)) return false;
TileEntityCrucible crucible = (TileEntityCrucible) tile;
return crucible.canAcceptPartialPour(world, x, y, z, dX, dY, dZ, side, stack);
}
@Override
public MaterialStack pour(World world, int x, int y, int z, double dX, double dY, double dZ, ForgeDirection side, MaterialStack stack) {
int[] pos = this.findCore(world, x, y, z);
if(pos == null) return stack;
TileEntity tile = world.getTileEntity(pos[0], pos[1], pos[2]);
if(!(tile instanceof TileEntityCrucible)) return stack;
TileEntityCrucible crucible = (TileEntityCrucible) tile;
return crucible.pour(world, x, y, z, dX, dY, dZ, side, stack);
}
@Override public boolean canAcceptPartialFlow(World world, int x, int y, int z, ForgeDirection side, MaterialStack stack) { return false; }
@Override public MaterialStack flow(World world, int x, int y, int z, ForgeDirection side, MaterialStack stack) { return null; }
}

View File

@ -1,12 +1,17 @@
package com.hbm.blocks.machine;
import com.hbm.blocks.BlockDummyable;
import com.hbm.blocks.ModBlocks;
import com.hbm.handler.MultiblockHandlerXR;
import com.hbm.items.ModItems;
import com.hbm.tileentity.TileEntityProxyCombo;
import com.hbm.tileentity.machine.TileEntityWatz;
import net.minecraft.block.Block;
import net.minecraft.block.material.Material;
import net.minecraft.entity.item.EntityItem;
import net.minecraft.entity.player.EntityPlayer;
import net.minecraft.item.ItemStack;
import net.minecraft.tileentity.TileEntity;
import net.minecraft.world.World;
import net.minecraftforge.common.util.ForgeDirection;
@ -71,4 +76,21 @@ public class Watz extends BlockDummyable {
this.makeExtra(world, x, y + 2, z - 2);
this.makeExtra(world, x, y + 2, z);
}
public static boolean drop = true;
@Override
public void breakBlock(World world, int x, int y, int z, Block block, int i) {
if(i >= 12 && drop) {
world.spawnEntityInWorld(new EntityItem(world, x + 0.5, y + 0.5, z + 0.5, new ItemStack(ModBlocks.watz_end, 48)));
for(int j = 0; j < 3; j++) world.spawnEntityInWorld(new EntityItem(world, x + 0.5, y + 0.5, z + 0.5, new ItemStack(ModItems.bolt_dura_steel, 64)));
world.spawnEntityInWorld(new EntityItem(world, x + 0.5, y + 0.5, z + 0.5, new ItemStack(ModBlocks.watz_element, 36)));
world.spawnEntityInWorld(new EntityItem(world, x + 0.5, y + 0.5, z + 0.5, new ItemStack(ModBlocks.watz_cooler, 26)));
world.spawnEntityInWorld(new EntityItem(world, x + 0.5, y + 0.5, z + 0.5, new ItemStack(ModBlocks.struct_watz_core, 1)));
}
super.breakBlock(world, x, y, z, block, i);
}
}

View File

@ -3,12 +3,14 @@ package com.hbm.crafting;
import static com.hbm.inventory.OreDictManager.*;
import com.hbm.items.ModItems;
import com.hbm.items.machine.ItemBreedingRod.*;
import com.hbm.items.machine.ItemWatzPellet.EnumWatzType;
import com.hbm.items.machine.ItemZirnoxRod.EnumZirnoxType;
import com.hbm.main.CraftingManager;
import cpw.mods.fml.common.registry.GameRegistry;
import net.minecraft.item.Item;
import net.minecraft.item.ItemStack;
import net.minecraftforge.oredict.OreDictionary;
import net.minecraftforge.oredict.ShapedOreRecipe;
/**
@ -123,6 +125,23 @@ public class RodRecipes {
addRBMKRod(ModItems.billet_zfb_pu241, ModItems.rbmk_fuel_zfb_pu241);
addRBMKRod(ModItems.billet_zfb_am_mix, ModItems.rbmk_fuel_zfb_am_mix);
CraftingManager.addShapelessAuto(new ItemStack(ModItems.rbmk_fuel_drx, 1), new Object[] { ModItems.rbmk_fuel_balefire, ModItems.particle_digamma });
addPellet(SA326, EnumWatzType.SCHRABIDIUM);
addPellet(ModItems.ingot_hes, EnumWatzType.HES);
addPellet(ModItems.ingot_schrabidium_fuel, EnumWatzType.MES);
addPellet(ModItems.ingot_les, EnumWatzType.LES);
addPellet(NP237, EnumWatzType.HEN);
addPellet(ModItems.ingot_uranium_fuel, EnumWatzType.MEU);
addPellet(ModItems.ingot_pu_mix, EnumWatzType.MEP);
addPellet(PB, EnumWatzType.LEAD);
addPellet(B, EnumWatzType.BORON);
addPellet(U238, EnumWatzType.DU);
}
public static void registerInit() {
/* GT6 */
if(OreDictionary.doesOreNameExist("ingotNaquadah-Enriched")) addPellet(new DictFrame("Naquadah-Enriched"), EnumWatzType.NQD);
if(OreDictionary.doesOreNameExist("ingotNaquadria")) addPellet(new DictFrame("Naquadria"), EnumWatzType.NQR);
}
//Fill rods with one billet. For fuels only, therefore no unloading or ore dict
@ -223,4 +242,12 @@ public class RodRecipes {
public static void addZIRNOXRod(DictFrame mat, EnumZirnoxType num) {
CraftingManager.addShapelessAuto(new ItemStack(ModItems.rod_zirnox, 1, num.ordinal()), new Object[] { ModItems.rod_zirnox_empty, mat.billet(), mat.billet() });
}
/** Watz pellet crafting **/
public static void addPellet(DictFrame mat, EnumWatzType num) {
CraftingManager.addRecipeAuto(new ItemStack(ModItems.watz_pellet, 1, num.ordinal()), new Object[] { " I ", "IGI", " I ", 'I', mat.ingot(), 'G', GRAPHITE.ingot() });
}
public static void addPellet(Item item, EnumWatzType num) {
CraftingManager.addRecipeAuto(new ItemStack(ModItems.watz_pellet, 1, num.ordinal()), new Object[] { " I ", "IGI", " I ", 'I', item, 'G', GRAPHITE.ingot() });
}
}

View File

@ -5,6 +5,8 @@ import com.hbm.config.GeneralConfig;
import com.hbm.inventory.fluid.Fluids;
import static com.hbm.inventory.OreDictManager.*;
import com.hbm.items.ItemGenericPart.EnumPartType;
import com.hbm.items.ModItems;
import com.hbm.items.machine.ItemBattery;
import com.hbm.items.tool.ItemBlowtorch;
@ -137,6 +139,7 @@ public class ToolRecipes {
CraftingManager.addRecipeAuto(new ItemStack(ModItems.chemistry_set_boron), new Object[] { "GIG", "GCG", 'G', ModBlocks.glass_boron, 'I', STEEL.ingot(), 'C', CO.ingot() });
CraftingManager.addRecipeAuto(ItemBlowtorch.getEmptyTool(ModItems.blowtorch), new Object[] { "CC ", " I ", "CCC", 'C', CU.plate528(), 'I', IRON.ingot() });
CraftingManager.addRecipeAuto(ItemBlowtorch.getEmptyTool(ModItems.acetylene_torch), new Object[] { "SS ", " PS", " T ", 'S', STEEL.plate528(), 'P', ANY_PLASTIC.ingot(), 'T', ModItems.tank_steel });
CraftingManager.addRecipeAuto(new ItemStack(ModItems.boltgun), new Object[] { "DPS", " RD", " D ", 'D', DURA.ingot(), 'P', DictFrame.fromOne(ModItems.part_generic, EnumPartType.PISTON_PNEUMATIC), 'R', RUBBER.ingot(), 'S', ModItems.hull_small_steel });
//Bobmazon
CraftingManager.addShapelessAuto(new ItemStack(ModItems.bobmazon_materials), new Object[] { Items.book, Items.gold_nugget, Items.string });

View File

@ -29,6 +29,7 @@ import net.minecraft.entity.EntityLivingBase;
import net.minecraft.nbt.NBTTagCompound;
import net.minecraft.potion.Potion;
import net.minecraft.potion.PotionEffect;
import net.minecraft.util.AxisAlignedBB;
import net.minecraft.util.DamageSource;
import net.minecraft.world.World;
@ -66,8 +67,9 @@ public class EntityMist extends Entity {
public void onEntityUpdate() {
float height = this.dataWatcher.getWatchableObjectFloat(12);
this.yOffset = -height / 2F;
this.yOffset = 0;
this.setSize(this.dataWatcher.getWatchableObjectFloat(11), height);
this.setPosition(this.posX, this.posY, this.posZ);
if(!worldObj.isRemote) {
@ -90,11 +92,20 @@ public class EntityMist extends Entity {
return;
}
List<Entity> affected = worldObj.getEntitiesWithinAABBExcludingEntity(this, this.boundingBox);
AxisAlignedBB aabb = this.boundingBox.copy();
List<Entity> affected = worldObj.getEntitiesWithinAABBExcludingEntity(this, aabb.offset(-this.width / 2, 0, -this.width / 2));
for(Entity e : affected) {
this.affect(e, intensity);
}
} else {
for(int i = 0; i < 2; i++) {
double x = this.boundingBox.minX + rand.nextDouble() * (this.boundingBox.maxX - this.boundingBox.minX);
double y = this.boundingBox.minY + rand.nextDouble() * (this.boundingBox.maxY - this.boundingBox.minY);
double z = this.boundingBox.minZ + rand.nextDouble() * (this.boundingBox.maxZ - this.boundingBox.minZ);
worldObj.spawnParticle("cloud", x, y, z, 0, 0, 0);
}
}
}

View File

@ -32,6 +32,7 @@ public class EntityCreeperPhosgene extends EntityCreeper {
if(!this.worldObj.isRemote) {
this.setDead();
worldObj.createExplosion(this, posX, posY + this.height / 2, posZ, 2F, false);
EntityMist mist = new EntityMist(worldObj);
mist.setType(Fluids.PHOSGENE);
mist.setPosition(posX, posY, posZ);

View File

@ -80,10 +80,15 @@ public class EntityShrapnel extends EntityThrowable {
}
}
} else if(this.dataWatcher.getWatchableObjectByte(16) == 3) {
if(worldObj.getBlock(mop.blockX, mop.blockY + 1, mop.blockZ).isReplaceable(worldObj, mop.blockX, mop.blockY + 1, mop.blockZ)) {
worldObj.setBlock(mop.blockX, mop.blockY + 1, mop.blockZ, ModBlocks.mud_block);
}
} else {
for(int i = 0; i < 5; i++)
worldObj.spawnParticle("lava", posX, posY, posZ, 0.0, 0.0, 0.0);
for(int i = 0; i < 5; i++) worldObj.spawnParticle("lava", posX, posY, posZ, 0.0, 0.0, 0.0);
}
worldObj.playSoundEffect(posX, posY, posZ, "random.fizz", 1.0F, 1.0F);
@ -97,4 +102,8 @@ public class EntityShrapnel extends EntityThrowable {
public void setVolcano(boolean b) {
this.dataWatcher.updateObject(16, (byte) (b ? 2 : 0));
}
public void setWatz(boolean b) {
this.dataWatcher.updateObject(16, (byte) (b ? 3 : 0));
}
}

View File

@ -162,8 +162,8 @@ public class Gun762mmFactory {
final BulletConfiguration bullet = Gun556mmFactory.get556Config().clone();
bullet.ammo = new ComparableStack(ModItems.ammo_762.stackFromEnum(Ammo762NATO.STOCK));
bullet.dmgMax *= 2;
bullet.dmgMin *= 2;
bullet.dmgMax = 20;
bullet.dmgMin = 24;
bullet.velocity *= 2.5;
bullet.maxAge *= 2;
bullet.spread /= 2;
@ -177,8 +177,8 @@ public class Gun762mmFactory {
final BulletConfiguration bullet = get762NATOConfig();
bullet.ammo = new ComparableStack(ModItems.ammo_762.stackFromEnum(Ammo762NATO.AP));
bullet.dmgMax *= 1.5;
bullet.dmgMin *= 1.5;
bullet.dmgMax = 24;
bullet.dmgMin = 28;
bullet.spentCasing = CASING762NATO.clone().register("762NATOAP");
@ -189,8 +189,8 @@ public class Gun762mmFactory {
final BulletConfiguration bullet = get762NATOConfig();
bullet.ammo = new ComparableStack(ModItems.ammo_762.stackFromEnum(Ammo762NATO.DU));
bullet.dmgMax *= 2;
bullet.dmgMin *= 2;
bullet.dmgMax = 36;
bullet.dmgMin = 40;
bullet.spentCasing = CASING762NATO.clone().register("762NATODU");

View File

@ -0,0 +1,97 @@
package com.hbm.handler.nei;
import java.util.HashMap;
import com.hbm.blocks.ModBlocks;
import com.hbm.items.ModItems;
import com.hbm.util.ItemStackUtil;
import net.minecraft.item.ItemStack;
import net.minecraft.util.EnumChatFormatting;
public class ConstructionHandler extends NEIUniversalHandler {
public ConstructionHandler() {
super("Construction", getRecipes(true), getRecipes(false));
}
@Override
public String getKey() {
return "ntmConstruction";
}
public static HashMap<Object[], Object> bufferedRecipes = new HashMap();
public static HashMap<Object[], Object> bufferedTools = new HashMap();
public static HashMap<Object[], Object> getRecipes(boolean recipes) {
if(!bufferedRecipes.isEmpty()) {
return recipes ? bufferedRecipes : bufferedTools;
}
/* WATZ */
ItemStack[] watz = new ItemStack[] {
new ItemStack(ModBlocks.watz_end, 48),
new ItemStack(ModItems.bolt_dura_steel, 64),
new ItemStack(ModItems.bolt_dura_steel, 64),
new ItemStack(ModItems.bolt_dura_steel, 64),
new ItemStack(ModBlocks.watz_element, 36),
new ItemStack(ModBlocks.watz_cooler, 26),
new ItemStack(ModItems.boltgun)};
bufferedRecipes.put(watz, new ItemStack(ModBlocks.watz));
bufferedTools.put(watz, new ItemStack(ModBlocks.struct_watz_core));
/* ITER */
ItemStack[] iter = new ItemStack[] {
new ItemStack(ModBlocks.fusion_conductor, 36),
new ItemStack(ModBlocks.fusion_conductor, 64),
new ItemStack(ModBlocks.fusion_conductor, 64),
new ItemStack(ModBlocks.fusion_conductor, 64),
new ItemStack(ModBlocks.fusion_conductor, 64),
new ItemStack(ModBlocks.fusion_center, 64),
new ItemStack(ModBlocks.fusion_motor, 4),
new ItemStack(ModBlocks.reinforced_glass, 8)};
bufferedRecipes.put(iter, new ItemStack(ModBlocks.iter));
bufferedTools.put(iter, new ItemStack(ModBlocks.struct_iter_core));
/* PLASMA HEATER */
ItemStack[] heater = new ItemStack[] {
new ItemStack(ModBlocks.fusion_heater, 7),
new ItemStack(ModBlocks.fusion_heater, 64),
new ItemStack(ModBlocks.fusion_heater, 64) };
bufferedRecipes.put(heater, new ItemStack(ModBlocks.plasma_heater));
bufferedTools.put(heater, new ItemStack(ModBlocks.struct_plasma_core));
/* COMPACT LAUNCHER */
ItemStack[] launcher = new ItemStack[] { new ItemStack(ModBlocks.struct_launcher, 8) };
bufferedRecipes.put(launcher, new ItemStack(ModBlocks.compact_launcher));
bufferedTools.put(launcher, new ItemStack(ModBlocks.struct_launcher_core));
/* LAUNCH TABLE */
ItemStack[] table = new ItemStack[] {
new ItemStack(ModBlocks.struct_launcher, 16),
new ItemStack(ModBlocks.struct_launcher, 64),
new ItemStack(ModBlocks.struct_scaffold, 11)};
bufferedRecipes.put(table, new ItemStack(ModBlocks.launch_table));
bufferedTools.put(table, new ItemStack(ModBlocks.struct_launcher_core_large));
/* SOYUZ LAUNCHER */
ItemStack[] soysauce = new ItemStack[] {
new ItemStack(ModBlocks.struct_launcher, 60),
ItemStackUtil.addTooltipToStack(new ItemStack(ModBlocks.struct_launcher, 320), EnumChatFormatting.RED + "5x64"),
new ItemStack(ModBlocks.struct_scaffold, 53),
ItemStackUtil.addTooltipToStack(new ItemStack(ModBlocks.struct_scaffold, 384), EnumChatFormatting.RED + "6x64"),
new ItemStack(ModBlocks.concrete_smooth, 8),
ItemStackUtil.addTooltipToStack(new ItemStack(ModBlocks.concrete_smooth, 320), EnumChatFormatting.RED + "5x64"),};
bufferedRecipes.put(soysauce, new ItemStack(ModBlocks.soyuz_launcher));
bufferedTools.put(soysauce, new ItemStack(ModBlocks.struct_soyuz_core));
return recipes ? bufferedRecipes : bufferedTools;
}
}

View File

@ -32,12 +32,19 @@ public abstract class NEIUniversalHandler extends TemplateRecipeHandler {
public final String display;
public final ItemStack[] machine;
public final HashMap<Object, Object> recipes;
public HashMap<Object, Object> machineOverrides;
/// SETUP ///
public NEIUniversalHandler(String display, ItemStack machine[], HashMap recipes) {
this.display = display;
this.machine = machine;
this.recipes = recipes;
this.machineOverrides = null;
}
public NEIUniversalHandler(String display, HashMap recipes, HashMap machines) {
this(display, (ItemStack[]) null, recipes);
this.machineOverrides = machines;
}
public NEIUniversalHandler(String display, ItemStack machine, HashMap recipes) { this(display, new ItemStack[]{machine}, recipes); }
@ -50,22 +57,32 @@ public abstract class NEIUniversalHandler extends TemplateRecipeHandler {
PositionedStack[] output;
PositionedStack machinePositioned;
public RecipeSet(ItemStack[][] in, ItemStack[][] out) {
public RecipeSet(ItemStack[][] in, ItemStack[][] out, Object originalInputInstance /* for custom machine lookup */) {
input = new PositionedStack[in.length];
int[][] inPos = NEIUniversalHandler.getInputCoords(in.length);
for(int i = 0; i < in.length; i++) {
ItemStack[] sub = in[i];
this.input[i] = new PositionedStack(sub, 48 + i * -18, 24);
this.input[i] = new PositionedStack(sub, inPos[i][0], inPos[i][1]);
}
output = new PositionedStack[out.length];
int[][] outPos = NEIUniversalHandler.getOutputCoords(out.length);
for(int i = 0; i < out.length; i++) {
ItemStack[] sub = out[i];
boolean twos = out.length > 3;
this.output[i] = new PositionedStack(sub, 102 + i * 18 - ((twos && i > 1) ? 36 : 0), 24 + (twos ? (i < 2 ? -9 : 9) : 0));
this.output[i] = new PositionedStack(sub, outPos[i][0], outPos[i][1]);
}
this.machinePositioned = new PositionedStack(machine, 75, 31);
ItemStack[] m = machine;
if(NEIUniversalHandler.this.machineOverrides != null) {
Object key = NEIUniversalHandler.this.machineOverrides.get(originalInputInstance);
if(key != null) {
this.machinePositioned = new PositionedStack(key, 75, 31);
}
}
if(machinePositioned == null) this.machinePositioned = new PositionedStack(m, 75, 31);
}
@Override
@ -104,16 +121,115 @@ public abstract class NEIUniversalHandler extends TemplateRecipeHandler {
super.drawBackground(recipe);
RecipeSet rec = (RecipeSet) this.arecipes.get(recipe);
for(int i = 0; i < rec.input.length; i++)
drawTexturedModalRect(47 + i * -18, 23, 5, 87, 18, 18);
for(int i = 0; i < rec.output.length; i++) {
boolean twos = rec.output.length > 3;
drawTexturedModalRect(101 + i * 18 - ((twos && i > 1) ? 36 : 0), 23 + (twos ? (i < 2 ? -9 : 9) : 0), 5, 87, 18, 18);
int[][] inPos = NEIUniversalHandler.getInputCoords(rec.input.length);
for(int[] pos : inPos) {
drawTexturedModalRect(pos[0] - 1, pos[1] - 1, 5, 87, 18, 18);
}
int[][] outPos = NEIUniversalHandler.getOutputCoords(rec.output.length);
for(int[] pos : outPos) {
drawTexturedModalRect(pos[0] - 1, pos[1] - 1, 5, 87, 18, 18);
}
drawTexturedModalRect(74, 14, 59, 87, 18, 38);
}
public static int[][] getInputCoords(int count) {
switch(count) {
case 1: return new int[][] {
{48, 24}
};
case 2: return new int[][] {
{48, 24},
{30, 24}
};
case 3: return new int[][] {
{48, 24},
{30, 24},
{12, 24}
};
case 4: return new int[][] {
{48, 24 - 9},
{30, 24 - 9},
{48, 24 + 9},
{30, 24 + 9}
};
case 5: return new int[][] {
{48, 24 - 9},
{30, 24 - 9},
{12, 24},
{48, 24 + 9},
{30, 24 + 9},
};
case 6: return new int[][] {
{48, 24 - 9},
{30, 24 - 9},
{12, 24 - 9},
{48, 24 + 9},
{30, 24 + 9},
{12, 24 + 9}
};
case 7: return new int[][] {
{48, 24 - 18},
{30, 24 - 9},
{12, 24 - 9},
{48, 24},
{30, 24 + 9},
{12, 24 + 9},
{48, 24 + 18}
};
case 8: return new int[][] {
{48, 24 - 18},
{30, 24 - 18},
{12, 24 - 9},
{48, 24},
{30, 24},
{12, 24 + 9},
{48, 24 + 18},
{30, 24 + 18}
};
case 9: return new int[][] {
{48, 24 - 18},
{30, 24 - 18},
{12, 24 - 18},
{48, 24},
{30, 24},
{12, 24},
{48, 24 + 18},
{30, 24 + 18},
{12, 24 + 18}
};
}
return new int[count][2];
}
public static int[][] getOutputCoords(int count) {
switch(count) {
case 1: return new int[][] {
{102, 24}
};
case 2: return new int[][] {
{102, 24},
{120, 24}
};
case 3: return new int[][] {
{102, 24},
{120, 24},
{138, 24}
};
case 4: return new int[][] {
{102, 24 - 9},
{120, 24 - 9},
{102, 24 + 9},
{120, 24 + 9}
};
}
return new int[count][2];
}
@Override
public void loadCraftingRecipes(String outputId, Object... results) {
@ -123,7 +239,7 @@ public abstract class NEIUniversalHandler extends TemplateRecipeHandler {
for(Entry<Object, Object> recipe : recipes.entrySet()) {
ItemStack[][] ins = InventoryUtil.extractObject(recipe.getKey());
ItemStack[][] outs = InventoryUtil.extractObject(recipe.getValue());
this.arecipes.add(new RecipeSet(ins, outs));
this.arecipes.add(new RecipeSet(ins, outs, recipe.getKey()));
}
} else {
@ -142,7 +258,7 @@ public abstract class NEIUniversalHandler extends TemplateRecipeHandler {
for(ItemStack[] array : outs) {
for(ItemStack stack : array) {
if(NEIServerUtils.areStacksSameTypeCrafting(stack, result)) {
this.arecipes.add(new RecipeSet(ins, outs));
this.arecipes.add(new RecipeSet(ins, outs, recipe.getKey()));
break match;
}
}
@ -170,7 +286,7 @@ public abstract class NEIUniversalHandler extends TemplateRecipeHandler {
for(ItemStack[] array : ins) {
for(ItemStack stack : array) {
if(NEIServerUtils.areStacksSameTypeCrafting(stack, ingredient)) {
this.arecipes.add(new RecipeSet(ins, outs));
this.arecipes.add(new RecipeSet(ins, outs, recipe.getKey()));
break match;
}
}

View File

@ -0,0 +1,15 @@
package com.hbm.handler.nei;
import com.hbm.blocks.generic.BlockToolConversion;
public class ToolingHandler extends NEIUniversalHandler {
public ToolingHandler() {
super("Tooling", BlockToolConversion.getRecipes(true), BlockToolConversion.getRecipes(false));
}
@Override
public String getKey() {
return "ntmTooling";
}
}

View File

@ -9,10 +9,12 @@ import com.hbm.config.GeneralConfig;
import com.hbm.hazard.modifier.*;
import com.hbm.hazard.transformer.*;
import com.hbm.hazard.type.*;
import com.hbm.inventory.OreDictManager.DictFrame;
import com.hbm.inventory.material.MaterialShapes;
import com.hbm.items.ModItems;
import com.hbm.items.machine.ItemBreedingRod.BreedingRodType;
import com.hbm.items.machine.ItemRTGPelletDepleted.DepletedRTGMaterial;
import com.hbm.items.machine.ItemWatzPellet.EnumWatzType;
import com.hbm.items.machine.ItemZirnoxRod.EnumZirnoxType;
import com.hbm.items.special.ItemHolotapeImage.EnumHoloImage;
import com.hbm.util.Compat;
@ -104,6 +106,7 @@ public class HazardRegistry {
public static final float saf = 5.85F;
public static final float sas3 = 5F;
public static final float gh336 = 5.0F;
public static final float mud = 1.0F;
public static final float radsource_mult = 3.0F;
public static final float pobe = po210 * radsource_mult;
public static final float rabe = ra226 * radsource_mult;
@ -429,6 +432,17 @@ public class HazardRegistry {
registerRBMKPellet(rbmk_pellet_zfb_am_mix, pu241 * billet * 0.1F, wst * billet * 10F);
registerRBMKPellet(rbmk_pellet_drx, bf * billet, bf * billet * 100F, true, 0F, 1F/24F);
HazardSystem.register(DictFrame.fromOne(ModItems.watz_pellet, EnumWatzType.SCHRABIDIUM), makeData(RADIATION, sa326 * ingot * 4));
HazardSystem.register(DictFrame.fromOne(ModItems.watz_pellet, EnumWatzType.HES), makeData(RADIATION, saf * ingot * 4));
HazardSystem.register(DictFrame.fromOne(ModItems.watz_pellet, EnumWatzType.MES), makeData(RADIATION, saf * ingot * 4));
HazardSystem.register(DictFrame.fromOne(ModItems.watz_pellet, EnumWatzType.LES), makeData(RADIATION, saf * ingot * 4));
HazardSystem.register(DictFrame.fromOne(ModItems.watz_pellet, EnumWatzType.HEN), makeData(RADIATION, np237 * ingot * 4));
HazardSystem.register(DictFrame.fromOne(ModItems.watz_pellet, EnumWatzType.MEU), makeData(RADIATION, uf * ingot * 4));
HazardSystem.register(DictFrame.fromOne(ModItems.watz_pellet, EnumWatzType.MEP), makeData(RADIATION, purg * ingot * 4));
HazardSystem.register(DictFrame.fromOne(ModItems.watz_pellet, EnumWatzType.DU), makeData(RADIATION, u238 * ingot * 4));
HazardSystem.register(DictFrame.fromOne(ModItems.watz_pellet, EnumWatzType.NQD), makeData(RADIATION, u235 * ingot * 4));
HazardSystem.register(DictFrame.fromOne(ModItems.watz_pellet, EnumWatzType.NQR), makeData(RADIATION, pu239 * ingot * 4));
HazardSystem.register(powder_yellowcake, makeData(RADIATION, yc * powder));
HazardSystem.register(block_yellowcake, makeData(RADIATION, yc * block * powder_mult));
HazardSystem.register(ModItems.fallout, makeData(RADIATION, fo * powder));

View File

@ -32,6 +32,7 @@ import com.hbm.util.Compat;
import cpw.mods.fml.common.eventhandler.SubscribeEvent;
import net.minecraft.block.Block;
import net.minecraft.init.Blocks;
import net.minecraft.init.Items;
import net.minecraft.item.Item;
import net.minecraft.item.ItemStack;
@ -138,6 +139,7 @@ public class OreDictManager {
public static final DictFrame SBD = new DictFrame("Schrabidate");
public static final DictFrame SRN = new DictFrame("Schraranium");
public static final DictFrame GH336 = new DictFrame("Ghiorsium336", "Gh336");
public static final DictFrame MUD = new DictFrame("WatzMud");
/*
* STABLE
*/
@ -297,7 +299,7 @@ public class OreDictManager {
IRON.plate(plate_iron).dust(powder_iron).ore(ore_gneiss_iron);
GOLD.plate(plate_gold).dust(powder_gold).ore(ore_gneiss_gold);
LAPIS.dust(powder_lapis);
NETHERQUARTZ.gem(Items.quartz).dust(powder_quartz);
NETHERQUARTZ.gem(Items.quartz).dust(powder_quartz).ore(Blocks.quartz_ore);
DIAMOND.dust(powder_diamond).ore(gravel_diamond);
EMERALD.dust(powder_emerald);
@ -331,6 +333,7 @@ public class OreDictManager {
SBD .rad(HazardRegistry.sb) .blinding(50F) .ingot(ingot_schrabidate) .dust(powder_schrabidate) .block(block_schrabidate);
SRN .rad(HazardRegistry.sr) .blinding(50F) .ingot(ingot_schraranium) .block(block_schraranium);
GH336 .rad(HazardRegistry.gh336) .nugget(nugget_gh336) .billet(billet_gh336) .ingot(ingot_gh336);
MUD .rad(HazardRegistry.mud) .ingot(ingot_mud);
/*
* STABLE

View File

@ -455,17 +455,41 @@ public class RecipesCommon {
this.block = block;
this.meta = meta;
}
@Override
public int hashCode() {
final int prime = 31;
int result = 1;
result = prime * result + Block.blockRegistry.getNameForObject(block).hashCode();
result = prime * result + meta;
return result;
}
@Override
public boolean equals(Object obj) {
if(this == obj)
return true;
if(obj == null)
return false;
if(getClass() != obj.getClass())
return false;
MetaBlock other = (MetaBlock) obj;
if(block == null) {
if(other.block != null)
return false;
} else if(!block.equals(other.block))
return false;
if(meta != other.meta)
return false;
return true;
}
public MetaBlock(Block block) {
this(block, 0);
}
public int getID() {
final int prime = 31;
int result = 1;
result = prime * result + Block.getIdFromBlock(block);
result = prime * result + meta;
return result;
@Deprecated public int getID() {
return hashCode();
}
}

View File

@ -9,7 +9,6 @@ import api.hbm.energy.IBatteryItem;
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;
@ -55,11 +54,6 @@ public class ContainerMachineCatalyticReformer extends Container {
}
}
@Override
public void addCraftingToCrafters(ICrafting crafting) {
super.addCraftingToCrafters(crafting);
}
@Override
public ItemStack transferStackInSlot(EntityPlayer p_82846_1_, int par2) {
ItemStack var3 = null;

View File

@ -0,0 +1,73 @@
package com.hbm.inventory.container;
import com.hbm.inventory.SlotCraftingOutput;
import com.hbm.items.machine.IItemFluidIdentifier;
import com.hbm.tileentity.machine.oil.TileEntityMachineCoker;
import net.minecraft.entity.player.EntityPlayer;
import net.minecraft.entity.player.InventoryPlayer;
import net.minecraft.inventory.Container;
import net.minecraft.inventory.Slot;
import net.minecraft.item.ItemStack;
public class ContainerMachineCoker extends Container {
private TileEntityMachineCoker coker;
public ContainerMachineCoker(InventoryPlayer invPlayer, TileEntityMachineCoker tedf) {
coker = tedf;
this.addSlotToContainer(new Slot(tedf, 0, 35, 72));
this.addSlotToContainer(new SlotCraftingOutput(invPlayer.player, tedf, 1, 97, 27));
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, 122 + i * 18));
}
}
for(int i = 0; i < 9; i++) {
this.addSlotToContainer(new Slot(invPlayer, i, 8 + i * 18, 180));
}
}
@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 <= 1) {
if(!this.mergeItemStack(var5, 2, this.inventorySlots.size(), true)) {
return null;
}
} else {
if(var3.getItem() instanceof IItemFluidIdentifier) {
if(!this.mergeItemStack(var5, 0, 1, false)) {
return null;
}
} else {
return null;
}
}
if(var5.stackSize == 0) {
var4.putStack((ItemStack) null);
} else {
var4.onSlotChanged();
}
}
return var3;
}
@Override
public boolean canInteractWith(EntityPlayer player) {
return coker.isUseableByPlayer(player);
}
}

View File

@ -0,0 +1,52 @@
package com.hbm.inventory.gui;
import org.lwjgl.opengl.GL11;
import com.hbm.inventory.container.ContainerMachineCoker;
import com.hbm.lib.RefStrings;
import com.hbm.tileentity.machine.oil.TileEntityMachineCoker;
import net.minecraft.client.Minecraft;
import net.minecraft.client.resources.I18n;
import net.minecraft.entity.player.InventoryPlayer;
import net.minecraft.util.ResourceLocation;
public class GUIMachineCoker extends GuiInfoContainer {
private static ResourceLocation texture = new ResourceLocation(RefStrings.MODID + ":textures/gui/processing/gui_coker.png");
private TileEntityMachineCoker refinery;
public GUIMachineCoker(InventoryPlayer invPlayer, TileEntityMachineCoker tedf) {
super(new ContainerMachineCoker(invPlayer, tedf));
refinery = tedf;
this.xSize = 176;
this.ySize = 204;
}
@Override
public void drawScreen(int mouseX, int mouseY, float f) {
super.drawScreen(mouseX, mouseY, f);
refinery.tanks[0].renderTankInfo(this, mouseX, mouseY, guiLeft + 35, guiTop + 18, 16, 52);
refinery.tanks[1].renderTankInfo(this, mouseX, mouseY, guiLeft + 125, guiTop + 18, 16, 52);
}
@Override
protected void drawGuiContainerForegroundLayer(int i, int j) {
String name = this.refinery.hasCustomInventoryName() ? this.refinery.getInventoryName() : I18n.format(this.refinery.getInventoryName());
this.fontRendererObj.drawString(name, this.xSize / 2 - this.fontRendererObj.getStringWidth(name) / 2, 6, 0xC7C1A3);
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);
refinery.tanks[0].renderTank(guiLeft + 35, guiTop + 70, this.zLevel, 16, 52);
refinery.tanks[1].renderTank(guiLeft + 125, guiTop + 70, this.zLevel, 16, 52);
}
}

View File

@ -123,6 +123,7 @@ public class Mats {
public static final NTMMaterial MAT_CMB = makeSmeltable(_AS + 9, CMB, 0x6F6FB4, 0x000011, 0x6F6FB4).setShapes(INGOT, DUST, PLATE, CASTPLATE, BLOCK);
public static final NTMMaterial MAT_FLUX = makeAdditive(_AS + 10, df("Flux"), 0xF1E0BB, 0x6F6256, 0xDECCAD).setShapes(DUST);
public static final NTMMaterial MAT_SLAG = makeSmeltable(_AS + 11, SLAG, 0x554940, 0x34281F, 0x6C6562).setShapes(BLOCK);
public static final NTMMaterial MAT_MUD = makeSmeltable(_AS + 14, MUD, 0xBCB5A9, 0x481213, 0x96783B).setShapes(INGOT);
@Deprecated public static NTMMaterial makeSmeltable(int id, DictFrame dict, int color) { return makeSmeltable(id, dict, color, color, color); }
@Deprecated public static NTMMaterial makeAdditive(int id, DictFrame dict, int color) { return makeAdditive(id, dict, color, color, color); }

View File

@ -292,15 +292,13 @@ public class AssemblerRecipes {
makeRecipe(new ComparableStack(ModBlocks.machine_turbinegas, 1), new AStack[] {new ComparableStack(ModItems.hull_big_steel, 4), new ComparableStack(ModItems.hull_small_steel, 6), new ComparableStack(ModItems.generator_steel, 2), new ComparableStack(ModItems.bolt_compound, 4), new ComparableStack(ModBlocks.steel_scaffold, 8), new ComparableStack(ModBlocks.deco_pipe_quad, 4), new ComparableStack(ModItems.turbine_tungsten, 3), new ComparableStack(ModItems.motor, 2), new ComparableStack(ModItems.ingot_rubber, 4), new ComparableStack(ModItems.circuit_red_copper, 3)}, 600);
makeRecipe(new ComparableStack(ModBlocks.machine_teleporter, 1), new AStack[] {new OreDictStack(TI.ingot(), 8), new OreDictStack(ALLOY.plate528(), 12), new ComparableStack(ModItems.wire_gold, 32), new ComparableStack(ModItems.entanglement_kit, 1), new ComparableStack(ModBlocks.machine_battery, 1) },300);
makeRecipe(new ComparableStack(ModBlocks.machine_schrabidium_transmutator, 1), new AStack[] {new OreDictStack(MAGTUNG.ingot(), 1), new OreDictStack(TI.ingot(), 24), new OreDictStack(ALLOY.plate(), 18), new OreDictStack(STEEL.plate(), 12), new ComparableStack(ModItems.plate_desh, 6), new OreDictStack(RUBBER.ingot(), 8), new ComparableStack(ModBlocks.machine_battery, 5), new ComparableStack(ModItems.circuit_gold, 5), },500);
makeRecipe(new ComparableStack(ModBlocks.machine_combine_factory, 1), new AStack[] {new OreDictStack(STEEL.ingot(), 8), new OreDictStack(ANY_PLASTIC.ingot(), 6), new OreDictStack(TI.plate(), 4), new OreDictStack(CU.plate(), 6), new ComparableStack(ModItems.circuit_gold, 6), new ComparableStack(ModItems.coil_advanced_alloy, 8), new ComparableStack(ModItems.coil_tungsten, 4), new OreDictStack(MAGTUNG.ingot(), 12), },150);
makeRecipe(new ComparableStack(ModBlocks.fusion_conductor, 1), new AStack[] {new OreDictStack(STEEL.ingot(), 2), new ComparableStack(ModItems.coil_advanced_alloy, 5), },150);
makeRecipe(new ComparableStack(ModBlocks.fusion_center, 1), new AStack[] {new OreDictStack(ANY_HARDPLASTIC.ingot(), 4), new OreDictStack(STEEL.plate528(), 6), new ComparableStack(ModItems.wire_advanced_alloy, 24), },200);
makeRecipe(new ComparableStack(ModBlocks.fusion_motor, 1), new AStack[] {new OreDictStack(TI.ingot(), 4), new OreDictStack(STEEL.ingot(), 2), new ComparableStack(ModItems.motor, 4), },250);
makeRecipe(new ComparableStack(ModBlocks.fusion_heater, 1), new AStack[] {new OreDictStack(W.ingot(), 4), new OreDictStack(STEEL.plate528(), 2), new OreDictStack(OreDictManager.getReflector(), 2), new OreDictStack(CU.plate(), 4), new ComparableStack(ModItems.magnetron, 1), new ComparableStack(ModItems.wire_advanced_alloy, 4), },150);
makeRecipe(new ComparableStack(ModBlocks.watz_element, 1), new AStack[] {new OreDictStack(W.ingot(), 4), new OreDictStack(ALLOY.plate(), 4), new ComparableStack(ModItems.rod_empty, 2), new ComparableStack(ModItems.wire_magnetized_tungsten, 2), new ComparableStack(ModItems.wire_advanced_alloy, 4), },200);
makeRecipe(new ComparableStack(ModBlocks.watz_cooler, 1), new AStack[] {new OreDictStack(W.ingot(), 2), new OreDictStack(STEEL.ingot(), 2), new OreDictStack(KNO.dust(), 4), },300);
makeRecipe(new ComparableStack(ModBlocks.watz_element, 3), new AStack[] {new OreDictStack(STEEL.plateCast(), 2), new OreDictStack(ZR.ingot(), 2), new OreDictStack(BIGMT.ingot(), 2), new OreDictStack(ANY_HARDPLASTIC.ingot(), 4)},200);
makeRecipe(new ComparableStack(ModBlocks.watz_cooler, 3), new AStack[] {new OreDictStack(STEEL.plateCast(), 2), new OreDictStack(CU.plateCast(), 4), new OreDictStack(RUBBER.ingot(), 2), }, 200);
makeRecipe(new ComparableStack(ModBlocks.watz_end, 3), new AStack[] {new OreDictStack(ANY_RESISTANTALLOY.plateTriple()), new OreDictStack(B.ingot(), 3), new OreDictStack(STEEL.plate(), 9), }, 100);
makeRecipe(new ComparableStack(ModBlocks.watz_core, 1), new AStack[] {new ComparableStack(ModBlocks.block_meteor, 1), new ComparableStack(ModItems.circuit_gold, 5), new ComparableStack(ModItems.circuit_schrabidium, 2), new ComparableStack(ModItems.wire_magnetized_tungsten, 12), },350);
makeRecipe(new ComparableStack(ModBlocks.fwatz_hatch, 1), new AStack[] {new OreDictStack(W.ingot(), 6), new OreDictStack(CMB.plate(), 4), },250);
makeRecipe(new ComparableStack(ModBlocks.fwatz_conductor, 1), new AStack[] {new OreDictStack(CMB.plate(), 2), new ComparableStack(ModItems.coil_magnetized_tungsten, 5), },250);
makeRecipe(new ComparableStack(ModBlocks.fwatz_computer, 1), new AStack[] {new ComparableStack(ModBlocks.block_meteor, 1), new ComparableStack(ModItems.wire_magnetized_tungsten, 16), new OreDictStack(DIAMOND.dust(), 6), new OreDictStack(MAGTUNG.dust(), 6), new OreDictStack(DESH.dust(), 4), },300);

View File

@ -20,6 +20,7 @@ import com.hbm.inventory.RecipesCommon.ComparableStack;
import com.hbm.inventory.RecipesCommon.OreDictStack;
import com.hbm.inventory.recipes.loader.SerializableRecipe;
import com.hbm.items.ModItems;
import com.hbm.items.machine.ItemWatzPellet.EnumWatzType;
import com.hbm.items.special.ItemBedrockOre.EnumBedrockOre;
import com.hbm.items.special.ItemByproduct.EnumByproduct;
import com.hbm.main.MainRegistry;
@ -134,6 +135,73 @@ public class CentrifugeRecipes extends SerializableRecipe {
new ItemStack(ModItems.nugget_pu238, 1),
new ItemStack(ModItems.nugget_technetium, 1),
new ItemStack(ModItems.nuclear_waste_tiny, 6) });
recipes.put(new ComparableStack(DictFrame.fromOne(ModItems.watz_pellet_depleted, EnumWatzType.SCHRABIDIUM)), new ItemStack[] {
new ItemStack(ModItems.ingot_mud, 1),
new ItemStack(ModItems.nugget_solinium, 15),
new ItemStack(ModItems.nugget_euphemium, 3),
new ItemStack(ModItems.nuclear_waste, 2) });
recipes.put(new ComparableStack(DictFrame.fromOne(ModItems.watz_pellet_depleted, EnumWatzType.HES)), new ItemStack[] {
new ItemStack(ModItems.ingot_mud, 1),
new ItemStack(ModItems.nugget_solinium, 17),
new ItemStack(ModItems.nugget_euphemium, 1),
new ItemStack(ModItems.nuclear_waste, 2) });
recipes.put(new ComparableStack(DictFrame.fromOne(ModItems.watz_pellet_depleted, EnumWatzType.MES)), new ItemStack[] {
new ItemStack(ModItems.ingot_mud, 1),
new ItemStack(ModItems.nugget_solinium, 12),
new ItemStack(ModItems.nugget_tantalium, 6),
new ItemStack(ModItems.nuclear_waste, 2) });
recipes.put(new ComparableStack(DictFrame.fromOne(ModItems.watz_pellet_depleted, EnumWatzType.LES)), new ItemStack[] {
new ItemStack(ModItems.ingot_mud, 1),
new ItemStack(ModItems.nugget_solinium, 9),
new ItemStack(ModItems.nugget_tantalium, 9),
new ItemStack(ModItems.nuclear_waste, 2) });
recipes.put(new ComparableStack(DictFrame.fromOne(ModItems.watz_pellet_depleted, EnumWatzType.HEN)), new ItemStack[] {
new ItemStack(ModItems.ingot_mud, 1),
new ItemStack(ModItems.nugget_pu239, 12),
new ItemStack(ModItems.nugget_technetium, 6),
new ItemStack(ModItems.nuclear_waste, 2) });
recipes.put(new ComparableStack(DictFrame.fromOne(ModItems.watz_pellet_depleted, EnumWatzType.MEU)), new ItemStack[] {
new ItemStack(ModItems.ingot_mud, 1),
new ItemStack(ModItems.nugget_pu239, 12),
new ItemStack(ModItems.nugget_bismuth, 6),
new ItemStack(ModItems.nuclear_waste, 2) });
recipes.put(new ComparableStack(DictFrame.fromOne(ModItems.watz_pellet_depleted, EnumWatzType.MEP)), new ItemStack[] {
new ItemStack(ModItems.ingot_mud, 1),
new ItemStack(ModItems.nugget_pu241, 12),
new ItemStack(ModItems.nugget_bismuth, 6),
new ItemStack(ModItems.nuclear_waste, 2) });
recipes.put(new ComparableStack(DictFrame.fromOne(ModItems.watz_pellet_depleted, EnumWatzType.LEAD)), new ItemStack[] {
new ItemStack(ModItems.ingot_mud, 1),
new ItemStack(ModItems.nugget_lead, 6),
new ItemStack(ModItems.nugget_bismuth, 12),
new ItemStack(ModItems.nuclear_waste, 2) });
recipes.put(new ComparableStack(DictFrame.fromOne(ModItems.watz_pellet_depleted, EnumWatzType.BORON)), new ItemStack[] {
new ItemStack(ModItems.ingot_mud, 1),
new ItemStack(ModItems.powder_coal_tiny, 12),
new ItemStack(ModItems.nugget_co60, 6),
new ItemStack(ModItems.nuclear_waste, 2) });
recipes.put(new ComparableStack(DictFrame.fromOne(ModItems.watz_pellet_depleted, EnumWatzType.DU)), new ItemStack[] {
new ItemStack(ModItems.ingot_mud, 1),
new ItemStack(ModItems.nugget_polonium, 12),
new ItemStack(ModItems.nugget_pu238, 6),
new ItemStack(ModItems.nuclear_waste, 2) });
if(OreDictionary.doesOreNameExist("nuggetNaquadria")) {
ItemStack nuggetNQR = OreDictionary.getOres("nuggetNaquadria").get(0);
ItemStack copy = nuggetNQR.copy();
copy.stackSize = 12;
recipes.put(new ComparableStack(DictFrame.fromOne(ModItems.watz_pellet_depleted, EnumWatzType.NQD)), new ItemStack[] {
new ItemStack(ModItems.ingot_mud, 1),
copy,
new ItemStack(ModItems.nugget_euphemium, 6),
new ItemStack(ModItems.nuclear_waste, 2) });
recipes.put(new ComparableStack(DictFrame.fromOne(ModItems.watz_pellet_depleted, EnumWatzType.NQR)), new ItemStack[] {
new ItemStack(ModItems.ingot_mud, 1),
new ItemStack(ModItems.nugget_co60, 12),
new ItemStack(ModItems.nugget_euphemium, 6),
new ItemStack(ModItems.nuclear_waste, 2) });
}
recipes.put(new ComparableStack(ModItems.powder_cloud), new ItemStack[] {
new ItemStack(ModItems.powder_copper, 1),

View File

@ -96,6 +96,10 @@ public class CrucibleRecipes extends SerializableRecipe {
.inputs(new MaterialStack(Mats.MAT_STEEL, n * 8), new MaterialStack(Mats.MAT_CADMIUM, n))
.outputs(new MaterialStack(Mats.MAT_CDALLOY, i)));
recipes.add(new CrucibleRecipe(13, "crucible.cmb", 3, new ItemStack(ModItems.ingot_combine_steel))
.inputs(new MaterialStack(Mats.MAT_MAGTUNG, n * 6), new MaterialStack(Mats.MAT_MUD, n * 3))
.outputs(new MaterialStack(Mats.MAT_CMB, i)));
registerMoldsForNEI();
}

View File

@ -66,6 +66,7 @@ public class SolidificationRecipes extends SerializableRecipe {
registerRecipe(BIOGAS, 250, ModItems.biomass_compressed);
registerRecipe(SALIENT, 1280, new ItemStack(ModItems.bio_wafer, 8)); //4 (food val) * 2 (sat mod) * 2 (constant) * 10 (quanta) * 8 (batch size)
registerRecipe(ENDERJUICE, 100, Items.ender_pearl);
registerRecipe(WATZ, 1000, ModItems.ingot_mud);
registerRecipe(OIL, SF_OIL, DictFrame.fromOne(ModItems.oil_tar, EnumTarType.CRUDE));
registerRecipe(CRACKOIL, SF_CRACK, DictFrame.fromOne(ModItems.oil_tar, EnumTarType.CRACK));

View File

@ -359,6 +359,7 @@ public class ModItems {
public static Item ingot_cadmium;
public static Item powder_cadmium;
public static Item powder_bismuth;
public static Item ingot_mud;
public static Item ingot_lanthanium;
public static Item ingot_actinium;
@ -2651,6 +2652,7 @@ public class ModItems {
ingot_cadmium = new Item().setUnlocalizedName("ingot_cadmium").setCreativeTab(MainRegistry.partsTab).setTextureName(RefStrings.MODID + ":ingot_cadmium");
powder_cadmium = new Item().setUnlocalizedName("powder_cadmium").setCreativeTab(MainRegistry.partsTab).setTextureName(RefStrings.MODID + ":powder_cadmium");
powder_bismuth = new Item().setUnlocalizedName("powder_bismuth").setCreativeTab(MainRegistry.partsTab).setTextureName(RefStrings.MODID + ":powder_bismuth");
ingot_mud = new Item().setUnlocalizedName("ingot_mud").setCreativeTab(MainRegistry.partsTab).setTextureName(RefStrings.MODID + ":ingot_mud");
ore_byproduct = new ItemByproduct().setUnlocalizedName("ore_byproduct").setCreativeTab(MainRegistry.partsTab).setTextureName(RefStrings.MODID + ":byproduct");
@ -5541,6 +5543,7 @@ public class ModItems {
//GameRegistry.registerItem(ingot_pet, ingot_pet.getUnlocalizedName());
GameRegistry.registerItem(ingot_pc, ingot_pc.getUnlocalizedName());
GameRegistry.registerItem(ingot_pvc, ingot_pvc.getUnlocalizedName());
GameRegistry.registerItem(ingot_mud, ingot_mud.getUnlocalizedName());
GameRegistry.registerItem(ingot_schraranium, ingot_schraranium.getUnlocalizedName());
GameRegistry.registerItem(ingot_schrabidium, ingot_schrabidium.getUnlocalizedName());
GameRegistry.registerItem(ingot_schrabidate, ingot_schrabidate.getUnlocalizedName());

View File

@ -2,12 +2,11 @@ package com.hbm.items.block;
import java.util.List;
import com.hbm.blocks.BlockEnumMulti;
import com.hbm.blocks.BlockMulti;
import com.hbm.blocks.IBlockMulti;
import com.hbm.blocks.IPersistentInfoProvider;
import com.hbm.blocks.ITooltipProvider;
import com.hbm.tileentity.IPersistentNBT;
import com.hbm.util.EnumUtil;
import cpw.mods.fml.relauncher.Side;
import cpw.mods.fml.relauncher.SideOnly;
@ -41,10 +40,8 @@ public class ItemBlockBase extends ItemBlock {
@Override
public String getUnlocalizedName(ItemStack stack) {
if(field_150939_a instanceof BlockEnumMulti && ((BlockEnumMulti)field_150939_a).multiName) {
Enum num = EnumUtil.grabEnumSafely(((BlockEnumMulti)field_150939_a).theEnum, stack.getItemDamage());
return super.getUnlocalizedName() + "." + num.name().toLowerCase();
if(field_150939_a instanceof BlockMulti) {
return ((BlockMulti)field_150939_a).getUnlocalizedName(stack);
} else {
return super.getUnlocalizedName(stack);
}

View File

@ -36,18 +36,18 @@ public class ItemWatzPellet extends ItemEnumMulti {
public static enum EnumWatzType {
SCHRABIDIUM( 0x32FFFF, 0x005C5C, 2_000, 10D, new FunctionLogarithmic(10), null, null),
HES( 0x66DCD6, 0x023933, 1_500, 10D, null, null, null),
MES( 0xCBEADF, 0x28473C, 1_000, 10D, null, null, null),
LES( 0xABB4A8, 0x0C1105, 500, 10D, null, null, null),
HEN( 0xA6B2A6, 0x030F03, 0, 10D, null, null, null),
MEU( 0xC1C7BD, 0x2B3227, 0, 10D, null, null, null),
MEP( 0x9AA3A0, 0x111A17, 0, 10D, null, null, null),
LEAD( 0xA6A6B2, 0x03030F, 0, 0, null, null, new FunctionSqrt(10)), //standard absorber, negative coefficient
BORON( 0xBDC8D2, 0x29343E, 0, 0, null, null, new FunctionLinear(10)), //improved absorber, linear
DU( 0xC1C7BD, 0x2B3227, 0, 0, null, null, new FunctionQuadratic(1D, 1D).withDiv(100)), //absorber with positive coefficient
NQD( 0x4B4B4B, 0x121212, 0, 0, null, null, null),
NQR( 0x2D2D2D, 0x0B0B0B, 0, 0, null, null, null);
SCHRABIDIUM( 0x32FFFF, 0x005C5C, 2_000, 20D, 0.01D, new FunctionLinear(1.5D), new FunctionSqrtFalling(10D), null),
HES( 0x66DCD6, 0x023933, 1_750, 20D, 0.005D, new FunctionLinear(1.25D), new FunctionSqrtFalling(15D), null),
MES( 0xCBEADF, 0x28473C, 1_500, 15D, 0.0025D, new FunctionLinear(1.15D), new FunctionSqrtFalling(15D), null),
LES( 0xABB4A8, 0x0C1105, 1_250, 15D, 0.00125D, new FunctionLinear(1D), new FunctionSqrtFalling(20D), null),
HEN( 0xA6B2A6, 0x030F03, 0, 10D, 0.0005D, new FunctionSqrt(100), new FunctionSqrtFalling(10D), null),
MEU( 0xC1C7BD, 0x2B3227, 0, 10D, 0.0005D, new FunctionSqrt(75), new FunctionSqrtFalling(10D), null),
MEP( 0x9AA3A0, 0x111A17, 0, 15D, 0.0005D, new FunctionSqrt(150), new FunctionSqrtFalling(10D), null),
LEAD( 0xA6A6B2, 0x03030F, 0, 0, 0.0025D, null, null, new FunctionSqrt(10)), //standard absorber, negative coefficient
BORON( 0xBDC8D2, 0x29343E, 0, 0, 0.0025D, null, null, new FunctionLinear(10)), //improved absorber, linear
DU( 0xC1C7BD, 0x2B3227, 0, 0, 0.0025D, null, null, new FunctionQuadratic(1D, 1D).withDiv(100)), //absorber with positive coefficient
NQD( 0x4B4B4B, 0x121212, 2_000, 20, 0.01D, new FunctionLinear(2D), new FunctionSqrt(1D/25D).withOff(25D * 25D), null),
NQR( 0x2D2D2D, 0x0B0B0B, 2_500, 30, 0.01D, new FunctionLinear(1.5D), new FunctionSqrt(1D/25D).withOff(25D * 25D), null);
public double yield = 1_000_000_000;
public int colorLight;
@ -56,16 +56,17 @@ public class ItemWatzPellet extends ItemEnumMulti {
public double passive; //base flux emission
public double heatEmission; //reactivity(1) to heat (heat per outgoing flux)
public Function burnFunc; //flux to reactivity(0) (classic reactivity)
public Function heatMult; //reactivity(0) to reactivity(1) based on heat (temperature coefficient)
public Function heatDiv; //reactivity(0) to reactivity(1) based on heat (temperature coefficient)
public Function absorbFunc; //flux to heat (flux absobtion for non-active component)
private EnumWatzType(int colorLight, int colorDark, double passive, double heatEmission, Function burnFunction, Function heatMultiplier, Function absorbFunction) {
private EnumWatzType(int colorLight, int colorDark, double passive, double heatEmission, double mudContent, Function burnFunction, Function heatDivisor, Function absorbFunction) {
this.colorLight = colorLight;
this.colorDark = colorDark;
this.passive = passive;
this.heatEmission = heatEmission;
this.mudContent = mudContent;
this.burnFunc = burnFunction;
this.heatMult = heatMultiplier;
this.heatDiv = heatDivisor;
this.absorbFunc = absorbFunction;
}
}
@ -122,6 +123,9 @@ public class ItemWatzPellet extends ItemEnumMulti {
@Override
public void addInformation(ItemStack stack, EntityPlayer player, List list, boolean bool) {
if(this != ModItems.watz_pellet) return;
EnumWatzType num = EnumUtil.grabEnumSafely(EnumWatzType.class, stack.getItemDamage());
list.add(EnumChatFormatting.GREEN + "Depletion: " + String.format(Locale.US, "%.1f", getDurabilityForDisplay(stack) * 100D) + "%");
@ -129,19 +133,22 @@ public class ItemWatzPellet extends ItemEnumMulti {
String color = EnumChatFormatting.GOLD + "";
String reset = EnumChatFormatting.RESET + "";
if(num.passive > 0) list.add(color + "Base fission rate: " + reset + num.passive);
if(num.passive > 0){
list.add(color + "Base fission rate: " + reset + num.passive);
list.add(EnumChatFormatting.RED + "Self-igniting!");
}
if(num.heatEmission > 0) list.add(color + "Heat per flux: " + reset + num.heatEmission + " TU");
if(num.burnFunc != null) {
list.add(color + "Reacton function: " + reset + num.burnFunc.getLabelForFuel());
list.add(color + "Fuel type: " + reset + num.burnFunc.getDangerFromFuel());
}
if(num.heatMult != null) list.add(color + "Thermal coefficient: " + reset + num.heatMult.getLabelForFuel());
if(num.heatDiv != null) list.add(color + "Thermal multiplier: " + reset + num.heatDiv.getLabelForFuel() + " TU⁻¹");
if(num.absorbFunc != null) list.add(color + "Flux capture: " + reset + num.absorbFunc.getLabelForFuel());
}
@Override
public boolean showDurabilityBar(ItemStack stack) {
return getDurabilityForDisplay(stack) > 0D;
return this == ModItems.watz_pellet && getDurabilityForDisplay(stack) > 0D;
}
@Override
@ -180,6 +187,7 @@ public class ItemWatzPellet extends ItemEnumMulti {
@Override
public void onCreated(ItemStack stack, World world, EntityPlayer player) {
if(this != ModItems.watz_pellet) return;
setNBTDefaults(stack); //minimize the window where NBT screwups can happen
}
}

View File

@ -31,6 +31,8 @@ public class ItemBlowtorch extends Item implements IFillableItem {
this.setMaxStackSize(1);
this.setFull3D();
this.setCreativeTab(MainRegistry.controlTab);
ToolType.TORCH.register(new ItemStack(this));
}
@Override

View File

@ -1,12 +1,16 @@
package com.hbm.items.tool;
import com.hbm.blocks.ModBlocks;
import com.hbm.items.IAnimatedItem;
import com.hbm.items.ModItems;
import com.hbm.lib.RefStrings;
import com.hbm.main.MainRegistry;
import com.hbm.packet.AuxParticlePacketNT;
import com.hbm.packet.PacketDispatcher;
import com.hbm.render.anim.BusAnimation;
import com.hbm.render.anim.BusAnimationKeyframe;
import com.hbm.render.anim.BusAnimationSequence;
import com.hbm.util.EntityDamageUtil;
import api.hbm.block.IToolable;
import api.hbm.block.IToolable.ToolType;
@ -14,11 +18,13 @@ import cpw.mods.fml.common.network.NetworkRegistry.TargetPoint;
import cpw.mods.fml.relauncher.Side;
import cpw.mods.fml.relauncher.SideOnly;
import net.minecraft.block.Block;
import net.minecraft.entity.Entity;
import net.minecraft.entity.player.EntityPlayer;
import net.minecraft.entity.player.EntityPlayerMP;
import net.minecraft.item.Item;
import net.minecraft.item.ItemStack;
import net.minecraft.nbt.NBTTagCompound;
import net.minecraft.util.DamageSource;
import net.minecraft.world.World;
import net.minecraftforge.common.util.ForgeDirection;
@ -26,6 +32,9 @@ public class ItemBoltgun extends Item implements IAnimatedItem {
public ItemBoltgun() {
this.setMaxStackSize(1);
this.setCreativeTab(MainRegistry.controlTab);
ToolType.BOLT.register(new ItemStack(this));
}
@Override
@ -34,6 +43,48 @@ public class ItemBoltgun extends Item implements IAnimatedItem {
this.setTextureName(RefStrings.MODID + ":"+ unlocalizedName);
return this;
}
@Override
public boolean onLeftClickEntity(ItemStack stack, EntityPlayer player, Entity entity) {
World world = player.worldObj;
if(!entity.isEntityAlive()) return false;
Item[] bolts = new Item[] { ModItems.bolt_dura_steel, ModItems.bolt_tungsten, Item.getItemFromBlock(ModBlocks.steel_beam) };
for(Item item : bolts) {
for(int i = 0; i < player.inventory.getSizeInventory(); i++) {
ItemStack slot = player.inventory.getStackInSlot(i);
if(slot != null) {
if(slot.getItem() == item) {
if(!world.isRemote) {
world.playSoundAtEntity(entity, "hbm:item.boltgun", 1.0F, 1.0F);
player.inventory.decrStackSize(i, 1);
player.inventoryContainer.detectAndSendChanges();
EntityDamageUtil.attackEntityFromIgnoreIFrame(entity, DamageSource.causePlayerDamage(player).setDamageBypassesArmor(), 10F);
NBTTagCompound data = new NBTTagCompound();
data.setString("type", "vanillaExt");
data.setString("mode", "largeexplode");
data.setFloat("size", 1F);
data.setByte("count", (byte)1);
PacketDispatcher.wrapper.sendToAllAround(new AuxParticlePacketNT(data, entity.posX, entity.posY + entity.height / 2 - entity.yOffset, entity.posZ), new TargetPoint(world.provider.dimensionId, entity.posX, entity.posY, entity.posZ, 50));
} else {
// doing this on the client outright removes the packet delay and makes the animation silky-smooth
NBTTagCompound d0 = new NBTTagCompound();
d0.setString("type", "anim");
d0.setString("mode", "generic");
MainRegistry.proxy.effectNT(d0);
}
return true;
}
}
}
}
return false;
}
@Override
public boolean onItemUse(ItemStack stack, EntityPlayer player, World world, int x, int y, int z, int side, float fX, float fY, float fZ) {
@ -43,7 +94,8 @@ public class ItemBoltgun extends Item implements IAnimatedItem {
if(b instanceof IToolable && ((IToolable)b).onScrew(world, player, x, y, z, side, fX, fY, fZ, ToolType.BOLT)) {
if(!world.isRemote) {
world.playSoundAtEntity(player, "hbm:item.boltgun", 1.0F, 1.0F);
player.inventoryContainer.detectAndSendChanges();
ForgeDirection dir = ForgeDirection.getOrientation(side);
double off = 0.25;

View File

@ -18,6 +18,8 @@ public class ItemTooling extends ItemCraftingDegradation {
this.type = type;
this.setFull3D();
this.setCreativeTab(MainRegistry.controlTab);
type.register(new ItemStack(this));
}
@Override

View File

@ -690,7 +690,9 @@ public class ItemGunBase extends Item implements IHoldableWeapon, IItemHUD, IEqu
GunConfiguration gcfg = gun.mainConfig;
if(type == ElementType.HOTBAR) {
BulletConfiguration bcfg = BulletConfigSyncingUtil.pullConfig(gun.mainConfig.config.get(ItemGunBase.getMagType(stack)));
int mag = ItemGunBase.getMagType(stack);
if(gun.mainConfig.config.size() == 0) return;
BulletConfiguration bcfg = BulletConfigSyncingUtil.pullConfig(gun.mainConfig.config.get(mag < gun.mainConfig.config.size() ? mag : 0));
if(bcfg == null) {
return;

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 (4562)";
public static final String VERSION = "1.0.27 BETA (4578)";
//HBM's Beta Naming Convention:
//V T (X)
//V -> next release version

View File

@ -366,7 +366,8 @@ public class CraftingManager {
addRecipeAuto(new ItemStack(ModItems.mechanism_launcher_1, 1), new Object[] { "TTT", "SSS", "BBI", 'T', TI.plate(), 'S', STEEL.ingot(), 'B', ModItems.bolt_tungsten, 'I', MINGRADE.ingot() });
addRecipeAuto(new ItemStack(ModItems.mechanism_launcher_2, 1), new Object[] { "TTT", "SSS", "BBI", 'T', ALLOY.plate(), 'S', ANY_PLASTIC.ingot(), 'B', ModItems.bolt_dura_steel, 'I', DESH.ingot() });
addRecipeAuto(new ItemStack(ModItems.mechanism_special, 1), new Object[] { "PCI", "ISS", "PCI", 'P', ModItems.plate_desh, 'C', ModItems.coil_advanced_alloy, 'I', STAR.ingot(), 'S', ModItems.circuit_targeting_tier3 });
addRecipeAuto(new ItemStack(ModBlocks.watz_pump, 1), new Object[] { "MPM", "PCP", "PSP", 'M', ModItems.motor_desh, 'P', ANY_RESISTANTALLOY.plateTriple(), 'C', KEY_CIRCUIT_BISMUTH, 'S', ModItems.pipes_steel });
addRecipeAuto(new ItemStack(Item.getItemFromBlock(ModBlocks.fwatz_cooler), 1), new Object[] { "IPI", "IPI", "IPI", 'I', TI.ingot(), 'P', TI.plate() });
addRecipeAuto(new ItemStack(Item.getItemFromBlock(ModBlocks.fwatz_tank), 1), new Object[] { "CGC", "GGG", "CGC", 'C', CMB.plate(), 'G', KEY_ANYPANE });
addRecipeAuto(new ItemStack(Item.getItemFromBlock(ModBlocks.fwatz_scaffold), 1), new Object[] { "IPI", "P P", "IPI", 'I', W.ingot(), 'P', getReflector() });
@ -765,6 +766,7 @@ public class CraftingManager {
addRecipeAuto(new ItemStack(ModBlocks.barrel_antimatter, 1), new Object[] { "IPI", "IBI", "IPI", 'I', BIGMT.plate(), 'P', ModItems.coil_advanced_torus, 'B', ModItems.battery_sc_technetium });
addRecipeAuto(new ItemStack(ModBlocks.tesla, 1), new Object[] { "CCC", "PIP", "WTW", 'C', ModItems.coil_copper, 'I', IRON.ingot(), 'P', ANY_PLASTIC.ingot(), 'T', ModBlocks.machine_transformer, 'W', KEY_PLANKS });
addRecipeAuto(new ItemStack(ModBlocks.struct_plasma_core, 1), new Object[] { "CBC", "BHB", "CBC", 'C', ModItems.circuit_gold, 'B', ModBlocks.machine_lithium_battery, 'H', ModBlocks.fusion_heater });
addRecipeAuto(new ItemStack(ModBlocks.struct_watz_core, 1), new Object[] { "CBC", "BHB", "CBC", 'C', ModItems.circuit_schrabidium, 'B', ANY_RESISTANTALLOY.plateTriple(), 'H', ModBlocks.watz_cooler });
addShapelessAuto(new ItemStack(ModBlocks.fusion_heater), new Object[] { ModBlocks.fusion_hatch });
addShapelessAuto(new ItemStack(ModItems.energy_core), new Object[] { ModItems.fusion_core, ModItems.fuse });
addRecipeAuto(new ItemStack(ModItems.catalytic_converter, 1), new Object[] { "PCP", "PBP", "PCP", 'P', ANY_HARDPLASTIC.ingot(), 'C', CO.dust(), 'B', BI.ingot() });

View File

@ -46,8 +46,10 @@ import com.google.common.collect.ImmutableList;
import com.hbm.blocks.BlockEnums.EnumStoneType;
import com.hbm.blocks.ModBlocks;
import com.hbm.blocks.generic.BlockMotherOfAllOres;
import com.hbm.blocks.generic.BlockToolConversion;
import com.hbm.commands.CommandReloadRecipes;
import com.hbm.config.*;
import com.hbm.crafting.RodRecipes;
import com.hbm.creativetabs.*;
import com.hbm.entity.EntityMappings;
import com.hbm.entity.grenade.*;
@ -636,6 +638,8 @@ public class MainRegistry {
@EventHandler
public static void load(FMLInitializationEvent event) {
RodRecipes.registerInit();
achSacrifice = new Achievement("achievement.sacrifice", "sacrifice", -3, 1, ModItems.burnt_bark, null).initIndependentStat().setSpecial().registerStat();
achImpossible = new Achievement("achievement.impossible", "impossible", 18, 10, ModItems.nothing, null).initIndependentStat().setSpecial().registerStat();
@ -829,6 +833,7 @@ public class MainRegistry {
HazmatRegistry.registerHazmats();
FluidContainerRegistry.register();
TileEntityMachineReactorLarge.registerAll();
BlockToolConversion.registerRecipes();
proxy.registerMissileItems();

View File

@ -53,6 +53,8 @@ public class NEIConfig implements IConfigureNEI {
registerHandler(new CrucibleSmeltingHandler());
registerHandler(new CrucibleAlloyingHandler());
registerHandler(new CrucibleCastingHandler());
registerHandler(new ToolingHandler());
registerHandler(new ConstructionHandler());
//universal boyes
registerHandler(new ZirnoxRecipeHandler());

View File

@ -29,7 +29,7 @@ public class RenderShrapnel extends Render {
bindTexture(new ResourceLocation(RefStrings.MODID + ":textures/entity/shrapnel.png"));
if(rocket instanceof EntityShrapnel) {
if(rocket.getDataWatcher().getWatchableObjectByte(16) == 2) { //scale up lava blobs
if(rocket.getDataWatcher().getWatchableObjectByte(16) >= 2) { //scale up lava blobs
GL11.glScaled(3, 3, 3);
}
}

View File

@ -6,6 +6,7 @@ import com.hbm.main.ResourceManager;
import com.hbm.render.anim.HbmAnimations;
import net.minecraft.client.Minecraft;
import net.minecraft.entity.player.EntityPlayer;
import net.minecraft.item.ItemStack;
import net.minecraftforge.client.IItemRenderer;
@ -33,6 +34,8 @@ public class ItemRenderBoltgun implements IItemRenderer {
GL11.glPushMatrix();
EntityPlayer player = Minecraft.getMinecraft().thePlayer;
GL11.glEnable(GL11.GL_CULL_FACE);
GL11.glShadeModel(GL11.GL_SMOOTH);
Minecraft.getMinecraft().renderEngine.bindTexture(ResourceManager.boltgun_tex);
@ -50,6 +53,7 @@ public class ItemRenderBoltgun implements IItemRenderer {
GL11.glPushMatrix();
double[] anim = HbmAnimations.getRelevantTransformation("RECOIL");
GL11.glTranslated(0, 0, -anim[0]);
if(anim[0] != 0) player.isSwingInProgress = false;
ResourceManager.boltgun.renderPart("Barrel");
GL11.glPopMatrix();

View File

@ -44,15 +44,15 @@ public class RenderWatzMultiblock extends TileEntitySpecialRenderer {
SmallBlockPronter.drawSmolBlockAt(ModBlocks.watz_cooler, 0, 1F, i, -2F);
SmallBlockPronter.drawSmolBlockAt(ModBlocks.watz_cooler, 0, -1F, i, -2F);
for(int j = -1; j < 2; j++) {
SmallBlockPronter.drawSmolBlockAt(ModBlocks.watz_end, 0, 3F, i, j);
SmallBlockPronter.drawSmolBlockAt(ModBlocks.watz_end, 0, j, i, 3F);
SmallBlockPronter.drawSmolBlockAt(ModBlocks.watz_end, 0, -3F, i, j);
SmallBlockPronter.drawSmolBlockAt(ModBlocks.watz_end, 0, j, i, -3F);
SmallBlockPronter.drawSmolBlockAt(ModBlocks.watz_end, 1, 3F, i, j);
SmallBlockPronter.drawSmolBlockAt(ModBlocks.watz_end, 1, j, i, 3F);
SmallBlockPronter.drawSmolBlockAt(ModBlocks.watz_end, 1, -3F, i, j);
SmallBlockPronter.drawSmolBlockAt(ModBlocks.watz_end, 1, j, i, -3F);
}
SmallBlockPronter.drawSmolBlockAt(ModBlocks.watz_end, 0, 2F, i, 2F);
SmallBlockPronter.drawSmolBlockAt(ModBlocks.watz_end, 0, 2F, i, -2F);
SmallBlockPronter.drawSmolBlockAt(ModBlocks.watz_end, 0, -2F, i, 2F);
SmallBlockPronter.drawSmolBlockAt(ModBlocks.watz_end, 0, -2F, i, -2F);
SmallBlockPronter.drawSmolBlockAt(ModBlocks.watz_end, 1, 2F, i, 2F);
SmallBlockPronter.drawSmolBlockAt(ModBlocks.watz_end, 1, 2F, i, -2F);
SmallBlockPronter.drawSmolBlockAt(ModBlocks.watz_end, 1, -2F, i, 2F);
SmallBlockPronter.drawSmolBlockAt(ModBlocks.watz_end, 1, -2F, i, -2F);
}
SmallBlockPronter.draw();

View File

@ -23,6 +23,7 @@ import com.hbm.tileentity.IGUIProvider;
import com.hbm.tileentity.TileEntityMachineBase;
import com.hbm.util.CrucibleUtil;
import api.hbm.block.ICrucibleAcceptor;
import api.hbm.tile.IHeatSource;
import cpw.mods.fml.common.network.NetworkRegistry.TargetPoint;
import cpw.mods.fml.relauncher.Side;
@ -41,7 +42,7 @@ import net.minecraft.util.Vec3;
import net.minecraft.world.World;
import net.minecraftforge.common.util.ForgeDirection;
public class TileEntityCrucible extends TileEntityMachineBase implements IGUIProvider, IConfigurableMachine {
public class TileEntityCrucible extends TileEntityMachineBase implements IGUIProvider, ICrucibleAcceptor, IConfigurableMachine {
public int heat;
public int progress;
@ -529,4 +530,57 @@ public class TileEntityCrucible extends TileEntityMachineBase implements IGUIPro
public double getMaxRenderDistanceSquared() {
return 65536.0D;
}
@Override
public boolean canAcceptPartialPour(World world, int x, int y, int z, double dX, double dY, double dZ, ForgeDirection side, MaterialStack stack) {
CrucibleRecipe recipe = getLoadedRecipe();
if(recipe == null) {
return getQuantaFromType(this.wasteStack, null) < this.wasteZCapacity;
}
int recipeContent = recipe.getInputAmount();
int recipeInputRequired = getQuantaFromType(recipe.input, stack.material);
int matMaximum = recipeInputRequired * this.recipeZCapacity / recipeContent;
int amountStored = getQuantaFromType(recipeStack, stack.material);
return amountStored < matMaximum;
}
@Override
public MaterialStack pour(World world, int x, int y, int z, double dX, double dY, double dZ, ForgeDirection side, MaterialStack stack) {
CrucibleRecipe recipe = getLoadedRecipe();
if(recipe == null) {
int amount = getQuantaFromType(this.wasteStack, null);
if(amount + stack.amount <= this.wasteZCapacity) {
this.addToStack(this.wasteStack, stack.copy());
return null;
} else {
int toAdd = this.wasteZCapacity - amount;
this.addToStack(this.wasteStack, new MaterialStack(stack.material, toAdd));
return new MaterialStack(stack.material, stack.amount - toAdd);
}
}
int recipeContent = recipe.getInputAmount();
int recipeInputRequired = getQuantaFromType(recipe.input, stack.material);
int matMaximum = recipeInputRequired * this.recipeZCapacity / recipeContent;
if(recipeInputRequired + stack.amount <= matMaximum) {
this.addToStack(this.recipeStack, stack.copy());
return null;
}
int toAdd = matMaximum - stack.amount;
this.addToStack(this.recipeStack, new MaterialStack(stack.material, toAdd));
return new MaterialStack(stack.material, stack.amount - toAdd);
}
@Override public boolean canAcceptPartialFlow(World world, int x, int y, int z, ForgeDirection side, MaterialStack stack) { return false; }
@Override public MaterialStack flow(World world, int x, int y, int z, ForgeDirection side, MaterialStack stack) { return null; }
}

View File

@ -2,8 +2,11 @@ package com.hbm.tileentity.machine;
import java.util.ArrayList;
import java.util.List;
import java.util.Random;
import com.hbm.blocks.ModBlocks;
import com.hbm.entity.projectile.EntityShrapnel;
import com.hbm.handler.radiation.ChunkRadiationManager;
import com.hbm.interfaces.IControlReceiver;
import com.hbm.inventory.container.ContainerWatz;
import com.hbm.inventory.fluid.Fluids;
@ -14,6 +17,9 @@ import com.hbm.inventory.gui.GUIWatz;
import com.hbm.items.ModItems;
import com.hbm.items.machine.ItemWatzPellet;
import com.hbm.items.machine.ItemWatzPellet.EnumWatzType;
import com.hbm.main.MainRegistry;
import com.hbm.packet.AuxParticlePacketNT;
import com.hbm.packet.PacketDispatcher;
import com.hbm.tileentity.IGUIProvider;
import com.hbm.tileentity.TileEntityMachineBase;
import com.hbm.util.Compat;
@ -22,10 +28,13 @@ import com.hbm.util.fauxpointtwelve.DirPos;
import com.hbm.util.function.Function;
import api.hbm.fluid.IFluidStandardTransceiver;
import cpw.mods.fml.common.network.NetworkRegistry.TargetPoint;
import cpw.mods.fml.relauncher.Side;
import cpw.mods.fml.relauncher.SideOnly;
import net.minecraft.block.Block;
import net.minecraft.client.gui.GuiScreen;
import net.minecraft.entity.player.EntityPlayer;
import net.minecraft.init.Blocks;
import net.minecraft.inventory.Container;
import net.minecraft.item.ItemStack;
import net.minecraft.nbt.NBTTagCompound;
@ -126,6 +135,29 @@ public class TileEntityWatz extends TileEntityMachineBase implements IFluidStand
}
segments.get(segments.size() - 1).sendOutBottom();
/* explode on mud overflow */
if(sharedTanks[2].getFill() > 0) {
for(int x = -3; x <= 3; x++) {
for(int y = 3; y < 6; y++) {
for(int z = -3; z <= 3; z++) {
worldObj.setBlock(xCoord + x, yCoord + y, zCoord + z, Blocks.air);
}
}
}
this.disassemble();
ChunkRadiationManager.proxy.incrementRad(worldObj, xCoord, yCoord + 1, zCoord, 1_000F);
worldObj.playSoundEffect(xCoord + 0.5, yCoord + 2, zCoord + 0.5, "hbm:block.rbmk_explosion", 50.0F, 1.0F);
NBTTagCompound data = new NBTTagCompound();
data.setString("type", "rbmkmush");
data.setFloat("scale", 5);
PacketDispatcher.wrapper.sendToAllAround(new AuxParticlePacketNT(data, xCoord + 0.5, yCoord + 2, zCoord + 0.5), new TargetPoint(worldObj.provider.dimensionId, xCoord, yCoord, zCoord, 250));
MainRegistry.proxy.effectNT(data);
return;
}
}
}
@ -137,7 +169,7 @@ public class TileEntityWatz extends TileEntityMachineBase implements IFluidStand
public void updateCoolant(FluidTank[] tanks) {
double coolingFactor = 0.05D; //20% per tick, TEMP
double coolingFactor = 0.1D; //10% per tick, TEMP
double heatToUse = this.heat * coolingFactor;
FT_Heatable trait = tanks[0].getTankType().getTrait(FT_Heatable.class);
@ -181,11 +213,11 @@ public class TileEntityWatz extends TileEntityMachineBase implements IFluidStand
for(ItemStack stack : pellets) {
EnumWatzType type = EnumUtil.grabEnumSafely(EnumWatzType.class, stack.getItemDamage());
Function burnFunc = type.burnFunc;
Function heatMod = type.heatMult;
Function heatDiv = type.heatDiv;
if(burnFunc != null) {
double mod = heatMod != null ? heatMod.effonix(heat) : 1D;
double burn = burnFunc.effonix(inputFlux) * mod;
double div = heatDiv != null ? heatDiv.effonix(heat) : 1D;
double burn = burnFunc.effonix(inputFlux) / div;
ItemWatzPellet.setYield(stack, ItemWatzPellet.getYield(stack) - burn);
addedFlux += burn;
addedHeat += type.heatEmission * burn;
@ -198,7 +230,10 @@ public class TileEntityWatz extends TileEntityMachineBase implements IFluidStand
Function absorbFunc = type.absorbFunc;
if(absorbFunc != null) {
addedHeat += absorbFunc.effonix(baseFlux + fluxLastReaction);
double absorb = absorbFunc.effonix(baseFlux + fluxLastReaction);
addedHeat += absorb;
ItemWatzPellet.setYield(stack, ItemWatzPellet.getYield(stack) - absorb);
tanks[2].setFill(tanks[2].getFill() + (int) Math.round(type.mudContent * absorb));
}
}
@ -212,17 +247,21 @@ public class TileEntityWatz extends TileEntityMachineBase implements IFluidStand
}
for(int i = 0; i < 24; i++) {
ItemStack stack = slots[i];
/* deplete */
if(stack != null && stack.getItem() == ModItems.watz_pellet && ItemWatzPellet.getEnrichment(stack) <= 0) {
slots[i] = new ItemStack(ModItems.watz_pellet_depleted, 1, stack.getItemDamage());
continue; // depleted pellets may persist for one tick
}
}
if(above != null) {
for(int i = 0; i < 24; i++) {
ItemStack stackBottom = slots[i];
ItemStack stackTop = above.slots[i];
/* deplete */
if(stackBottom != null && stackBottom.getItem() == ModItems.watz_pellet && ItemWatzPellet.getYield(stackBottom) <= 0) {
slots[i] = new ItemStack(ModItems.watz_pellet_depleted, 1, stackBottom.getItemDamage());
continue; // depleted pellets may persist for one tick
}
/* items fall down if the bottom slot is empty */
if(stackBottom == null && stackTop != null) {
slots[i] = stackTop.copy();
@ -309,6 +348,7 @@ public class TileEntityWatz extends TileEntityMachineBase implements IFluidStand
}
for(int i = 0; i < tanks.length; i++) tanks[i].readFromNBT(nbt, "t" + i);
this.heat = nbt.getInteger("heat");
this.fluxLastBase = nbt.getDouble("lastFluxB");
this.fluxLastReaction = nbt.getDouble("lastFluxR");
@ -332,6 +372,7 @@ public class TileEntityWatz extends TileEntityMachineBase implements IFluidStand
nbt.setTag("locks", list);
for(int i = 0; i < tanks.length; i++) tanks[i].writeToNBT(nbt, "t" + i);
nbt.setInteger("heat", this.heat);
nbt.setDouble("lastFluxB", fluxLastBase);
nbt.setDouble("lastFluxR", fluxLastReaction);
@ -402,6 +443,73 @@ public class TileEntityWatz extends TileEntityMachineBase implements IFluidStand
return bb;
}
private void disassemble() {
int count = 20;
Random rand = worldObj.rand;
for(int i = 0; i < count * 5; i++) {
EntityShrapnel shrapnel = new EntityShrapnel(worldObj);
shrapnel.posX = xCoord + 0.5;
shrapnel.posY = yCoord + 3;
shrapnel.posZ = zCoord + 0.5;
shrapnel.motionY = ((rand.nextFloat() * 0.5) + 0.5) * (1 + (count / (15 + rand.nextInt(21)))) + (rand.nextFloat() / 50 * count);
shrapnel.motionX = rand.nextGaussian() * 1 * (1 + (count / 100));
shrapnel.motionZ = rand.nextGaussian() * 1 * (1 + (count / 100));
shrapnel.setWatz(true);
worldObj.spawnEntityInWorld(shrapnel);
}
worldObj.setBlock(xCoord, yCoord, zCoord, ModBlocks.mud_block);
worldObj.setBlock(xCoord, yCoord + 1, zCoord, ModBlocks.mud_block);
worldObj.setBlock(xCoord, yCoord + 2, zCoord, ModBlocks.mud_block);
setBrokenColumn(0, ModBlocks.watz_element, 0, 1, 0);
setBrokenColumn(0, ModBlocks.watz_element, 0, 2, 0);
setBrokenColumn(0, ModBlocks.watz_element, 0, 0, 1);
setBrokenColumn(0, ModBlocks.watz_element, 0, 0, 2);
setBrokenColumn(0, ModBlocks.watz_element, 0, -1, 0);
setBrokenColumn(0, ModBlocks.watz_element, 0, -2, 0);
setBrokenColumn(0, ModBlocks.watz_element, 0, 0, -1);
setBrokenColumn(0, ModBlocks.watz_element, 0, 0, -2);
setBrokenColumn(0, ModBlocks.watz_element, 0, 1, 1);
setBrokenColumn(0, ModBlocks.watz_element, 0, 1, -1);
setBrokenColumn(0, ModBlocks.watz_element, 0, -1, 1);
setBrokenColumn(0, ModBlocks.watz_element, 0, -1, -1);
setBrokenColumn(0, ModBlocks.watz_cooler, 0, 2, 1);
setBrokenColumn(0, ModBlocks.watz_cooler, 0, 2, -1);
setBrokenColumn(0, ModBlocks.watz_cooler, 0, 1, 2);
setBrokenColumn(0, ModBlocks.watz_cooler, 0, -1, 2);
setBrokenColumn(0, ModBlocks.watz_cooler, 0, -2, 1);
setBrokenColumn(0, ModBlocks.watz_cooler, 0, -2, -1);
setBrokenColumn(0, ModBlocks.watz_cooler, 0, 1, -2);
setBrokenColumn(0, ModBlocks.watz_cooler, 0, -1, -2);
for(int j = -1; j < 2; j++) {
setBrokenColumn(1, ModBlocks.watz_end, 1, 3, j);
setBrokenColumn(1, ModBlocks.watz_end, 1, j, 3);
setBrokenColumn(1, ModBlocks.watz_end, 1, -3, j);
setBrokenColumn(1, ModBlocks.watz_end, 1, j, -3);
}
setBrokenColumn(1, ModBlocks.watz_end, 1, 2, 2);
setBrokenColumn(1, ModBlocks.watz_end, 1, 2, -2);
setBrokenColumn(1, ModBlocks.watz_end, 1, -2, 2);
setBrokenColumn(1, ModBlocks.watz_end, 1, -2, -2);
}
private void setBrokenColumn(int minHeight, Block b, int meta, int x, int z) {
int height = minHeight + worldObj.rand.nextInt(3 - minHeight);
for(int i = 0; i < 3; i++) {
if(i <= height) {
worldObj.setBlock(xCoord + x, yCoord + i, zCoord + z, b, meta, 3);
} else {
worldObj.setBlock(xCoord + x, yCoord + i, zCoord + z, ModBlocks.mud_block);
}
}
}
@Override
@SideOnly(Side.CLIENT)
public double getMaxRenderDistanceSquared() {

View File

@ -49,20 +49,20 @@ public class TileEntityWatzStruct extends TileEntity {
if(!cbr(ModBlocks.watz_cooler, -1, i, -2)) return;
for(int j = -1; j < 2; j++) {
if(!cbr(ModBlocks.watz_end, 3, i, j)) return;
if(!cbr(ModBlocks.watz_end, j, i, 3)) return;
if(!cbr(ModBlocks.watz_end, -3, i, j)) return;
if(!cbr(ModBlocks.watz_end, j, i, -3)) return;
if(!cbr(ModBlocks.watz_end, 1, 3, i, j)) return;
if(!cbr(ModBlocks.watz_end, 1, j, i, 3)) return;
if(!cbr(ModBlocks.watz_end, 1, -3, i, j)) return;
if(!cbr(ModBlocks.watz_end, 1, j, i, -3)) return;
}
if(!cbr(ModBlocks.watz_end, 2, i, 2)) return;
if(!cbr(ModBlocks.watz_end, 2, i, -2)) return;
if(!cbr(ModBlocks.watz_end, -2, i, 2)) return;
if(!cbr(ModBlocks.watz_end, -2, i, -2)) return;
if(!cbr(ModBlocks.watz_end, 1, 2, i, 2)) return;
if(!cbr(ModBlocks.watz_end, 1, 2, i, -2)) return;
if(!cbr(ModBlocks.watz_end, 1, -2, i, 2)) return;
if(!cbr(ModBlocks.watz_end, 1, -2, i, -2)) return;
}
Watz watz = (Watz)ModBlocks.watz;
BlockDummyable.safeRem = true;
worldObj.setBlock(xCoord, yCoord, zCoord, ModBlocks.watz, this.getBlockMetadata() + BlockDummyable.offset, 3);
worldObj.setBlock(xCoord, yCoord, zCoord, ModBlocks.watz, 12, 3);
watz.fillSpace(worldObj, xCoord, yCoord, zCoord, ForgeDirection.NORTH, 0);
BlockDummyable.safeRem = false;
}
@ -72,10 +72,18 @@ public class TileEntityWatzStruct extends TileEntity {
return worldObj.getBlock(xCoord + x, yCoord + y, zCoord + z);
}
/** [G]et [M]eta at [R]elative position */
private int gmr(int x, int y, int z) {
return worldObj.getBlockMetadata(xCoord + x, yCoord + y, zCoord + z);
}
/** [C]heck [B]lock at [R]elative position */
private boolean cbr(Block b, int x, int y, int z) {
return b == gbr(x, y, z);
}
private boolean cbr(Block b, int meta, int x, int y, int z) {
return b == gbr(x, y, z) && meta == gmr(x, y, z);
}
AxisAlignedBB bb = null;

View File

@ -0,0 +1,64 @@
package com.hbm.tileentity.machine.oil;
import com.hbm.inventory.container.ContainerMachineCoker;
import com.hbm.inventory.fluid.Fluids;
import com.hbm.inventory.fluid.tank.FluidTank;
import com.hbm.inventory.gui.GUIMachineCoker;
import com.hbm.tileentity.IGUIProvider;
import com.hbm.tileentity.TileEntityMachineBase;
import api.hbm.fluid.IFluidStandardTransceiver;
import cpw.mods.fml.relauncher.Side;
import cpw.mods.fml.relauncher.SideOnly;
import net.minecraft.client.gui.GuiScreen;
import net.minecraft.entity.player.EntityPlayer;
import net.minecraft.inventory.Container;
import net.minecraft.world.World;
public class TileEntityMachineCoker extends TileEntityMachineBase implements IFluidStandardTransceiver, IGUIProvider {
public FluidTank[] tanks;
public TileEntityMachineCoker() {
super(1);
tanks = new FluidTank[2];
tanks[0] = new FluidTank(Fluids.HEAVYOIL, 16_000);
tanks[1] = new FluidTank(Fluids.GAS, 8_000);
}
@Override
public String getName() {
return "container.machineCoker";
}
@Override
public void updateEntity() {
}
@Override
public FluidTank[] getAllTanks() {
return tanks;
}
@Override
public FluidTank[] getSendingTanks() {
return new FluidTank[] { tanks[1] };
}
@Override
public FluidTank[] getReceivingTanks() {
return new FluidTank[] { tanks[0] };
}
@Override
public Container provideContainer(int ID, EntityPlayer player, World world, int x, int y, int z) {
return new ContainerMachineCoker(player.inventory, this);
}
@Override
@SideOnly(Side.CLIENT)
public GuiScreen provideGUI(int ID, EntityPlayer player, World world, int x, int y, int z) {
return new GUIMachineCoker(player.inventory, this);
}
}

View File

@ -27,8 +27,8 @@ public abstract class Function {
public String getXName(boolean brackets) {
String x = "x";
boolean mod = false;
if(div != 1D) x += " / " + div;
if(off != 0D) x += " + " + off;
if(div != 1D) x += " / " + String.format("%,.1f", div);
if(off != 0D) x += " + " + String.format("%,.1f", off);
if(mod && brackets) x = "(" + x + ")";
return x;
}
@ -46,28 +46,35 @@ public abstract class Function {
public static class FunctionLogarithmic extends FunctionSingleArg {
public FunctionLogarithmic(double level) { super(level); this.withOff(1D); }
@Override public double effonix(double x) { return Math.log10(getX(x)) * level; }
@Override public String getLabelForFuel() { return "log10(" + getXName(false) + ") * " + level; }
@Override public String getLabelForFuel() { return "log10(" + getXName(false) + ") * " + String.format("%,.1f", this.level); }
@Override public String getDangerFromFuel() { return EnumChatFormatting.YELLOW + "MEDIUM / LOGARITHMIC"; }
}
public static class FunctionPassive extends FunctionSingleArg {
public FunctionPassive(double level) { super(level); }
@Override public double effonix(double x) { return this.level; }
@Override public String getLabelForFuel() { return "" + level; }
@Override public String getLabelForFuel() { return "" + String.format("%,.1f", this.level); }
@Override public String getDangerFromFuel() { return EnumChatFormatting.DARK_GREEN + "SAFE / PASSIVE"; }
}
public static class FunctionSqrt extends FunctionSingleArg {
public FunctionSqrt(double level) { super(level); }
@Override public double effonix(double x) { return BobMathUtil.squirt(getX(x)) * this.level; }
@Override public String getLabelForFuel() { return "sqrt(" + getXName(false) + ") * " + this.level; } //not entirely correct but good enough
@Override public String getLabelForFuel() { return "sqrt(" + getXName(false) + ") * " + String.format("%,.3f", this.level); } //not entirely correct but good enough
@Override public String getDangerFromFuel() { return EnumChatFormatting.YELLOW + "MEDIUM / SQUARE ROOT"; }
}
public static class FunctionSqrtFalling extends FunctionSqrt {
public FunctionSqrtFalling(double fallFactor) {
super(1D / fallFactor);
this.withOff(fallFactor * fallFactor);
}
}
public static class FunctionLinear extends FunctionSingleArg {
public FunctionLinear(double level) { super(level); }
@Override public double effonix(double x) { return getX(x) * this.level; }
@Override public String getLabelForFuel() { return getXName(true) + " * " + this.level; }
@Override public String getLabelForFuel() { return getXName(true) + " * " + String.format("%,.1f", this.level); }
@Override public String getDangerFromFuel() { return EnumChatFormatting.RED + "DANGEROUS / LINEAR"; }
}
@ -75,7 +82,7 @@ public abstract class Function {
public FunctionQuadratic(double level) { super(level, 0D); }
public FunctionQuadratic(double level, double vOff) { super(level, vOff); }
@Override public double effonix(double x) { return getX(x) * getX(x) * this.level + this.vOff; }
@Override public String getLabelForFuel() { return getXName(true) + "² * " + this.level + (vOff != 0 ? (" + " + vOff) : ""); }
@Override public String getLabelForFuel() { return getXName(true) + "² * " + String.format("%,.1f", this.level) + (vOff != 0 ? (" + " + String.format("%,.1f", vOff)) : ""); }
@Override public String getDangerFromFuel() { return EnumChatFormatting.RED + "DANGEROUS / QUADRATIC"; }
}
}

View File

@ -416,6 +416,7 @@ container.zirnox=ZIRNOX Atomreaktor
crucible.aa=Herstellung - Fortgeschrittene Legierung
crucible.cdalloy=Herstellung Cadmiumstahl
crucible.cmb=Herstellung CMB-Stahl
crucible.ferro=Herstellung - Ferrouran
crucible.hematite=Herstellung - Eisen aus Hämatit
crucible.hss=Herstellung - Schnellarbeitsstahl
@ -781,6 +782,7 @@ hbmmat.uranium=Uran
hbmmat.uranium233=Uran-233
hbmmat.uranium235=Uran-235
hbmmat.uranium238=Uran-238
hbmmat.watzmud=Giftiger Schlamm
hbmmat.whitephosphorus=Weißer Phosphor
hbmmat.workersalloy=Desh
hbmmat.wroughtiron=Schmiedeeisen
@ -1205,6 +1207,7 @@ item.bobmazon_weapons.name=Bobmazon: Waffen und Sprengstoffe
item.bolt_compound.name=Verstärkte Turbinenwelle
item.bolt_dura_steel.name=Schnellarbeitsstahlbolzen
item.bolt_tungsten.name=Wolframbolzen
item.boltgun.name=Pneumatische Nietenpistole
item.bomb_caller.name=Luftschlag Zielmarker
item.bomb_waffle.name=Massenvernichtungswaffel
item.guide_book.name=Handbuch
@ -2013,6 +2016,7 @@ item.ingot_magnetized_tungsten.name=Magnetisierter Wolframbarren
item.ingot_meteorite.name=Meteoritenbarren
item.ingot_meteorite_forged.name=Geschmiedeter Meteoritenbarren
item.ingot_mox_fuel.name=MOX-Kernbrennstoffbarren
item.ingot_mud.name=Fester Schlammziegel
item.ingot_neptunium.name=Neptuniumbarren
item.ingot_neptunium_fuel.name=Neptuniumkernbrennstoffbarren
item.ingot_niobium.name=Niobbarren
@ -4222,6 +4226,7 @@ tile.struct_launcher_core_large.name=Startrampe-Kernkomponente
tile.struct_plasma_core.name=Plasmaerhitzer-Kernkomponente
tile.struct_scaffold.name=Startrampe-Gerüstblock
tile.struct_soyuz_core.name=Soyuz-Startrampe-Kernkomponente
tile.struct_watz_core.name=Watzkraftwerk-Kernkomponente
tile.substation.name=Umspannwerk
tile.sulfuric_acid_block.name=Schwefelsäure
tile.taint.name=Korrupter Schmutz
@ -4275,13 +4280,16 @@ tile.waste_mycelium.name=Leuchtende Myzel
tile.waste_planks.name=Verkohlte Holzbretter
tile.waste_trinitite.name=Trinititerz
tile.waste_trinitite_red.name=Rotes Trinititerz
tile.watz.name=Watzkraftwerk
tile.watz_conductor.name=Watz-Stromanschluss
tile.watz_control.name=Verstärkte Steuerstäbe
tile.watz_cooler.name=Watz-Superkühler
tile.watz_core.name=Watzreaktorkern
tile.watz_element.name=Watzreaktionskammer
tile.watz_end.name=Watz-Stabilitätselement
tile.watz_end_bolted.name=Watz-Stabilitätselement (Genietet)
tile.watz_hatch.name=Watzreaktorzugriffsluke
tile.watz_pump.name=Watz-Druckpumpe
tile.yellow_barrel.name=Radioaktives Fass
tile.zirnox_destroyed.name=Zerstörter ZINOX

View File

@ -709,6 +709,7 @@ container.zirnox=ZIRNOX Nuclear Reactor
crucible.aa=Advanced Alloy Production
crucible.cdalloy=Cadmium Steel Production
crucible.cmb=CMB Steel Production
crucible.ferro=Ferrouranium Production
crucible.hematite=Iron Production from Hematite
crucible.hss=High-Speed Steel Production
@ -1358,6 +1359,7 @@ hbmmat.uranium=Uranium
hbmmat.uranium233=Uranium-233
hbmmat.uranium235=Uranium-235
hbmmat.uranium238=Uranium-238
hbmmat.watzmud=Poisonous Mud
hbmmat.whitephosphorus=White Phosphorus
hbmmat.workersalloy=Desh
hbmmat.wroughtiron=Wroght Iron
@ -1792,6 +1794,7 @@ item.bobmazon_weapons.name=Bobmazon: Weapons and Explosives
item.bolt_compound.name=Reinforced Turbine Shaft
item.bolt_dura_steel.name=High-Speed Steel Bolt
item.bolt_tungsten.name=Tungsten Bolt
item.boltgun.name=Pneumatic Rivet Gun
item.bomb_caller.name=Airstrike Designator
item.bomb_waffle.name=Waffle of Mass Destruction
item.book_guide.name=Guide Book
@ -2662,6 +2665,7 @@ item.ingot_magnetized_tungsten.name=Magnetized Tungsten Ingot
item.ingot_meteorite.name=Meteorite Ingot
item.ingot_meteorite_forged.name=Forged Meteorite Ingot
item.ingot_mox_fuel.name=Ingot of MOX Fuel
item.ingot_mud.name=Solid Mud Brick
item.ingot_neptunium.name=Neptunium Ingot
item.ingot_neptunium.desc=That one's my favourite!
item.ingot_neptunium.desc.P11=Woo, scary!
@ -5038,6 +5042,7 @@ tile.struct_launcher_core_large.name=Launch Table Core Component
tile.struct_plasma_core.name=Plasma Heater Core Component
tile.struct_scaffold.name=Launch Pad Scaffold Block
tile.struct_soyuz_core.name=Soyuz Launcher Core Component
tile.struct_watz_core.name=Watz Powerplant Core Component
tile.substation.name=Substation
tile.sulfuric_acid_block.name=Sulfuric Acid
tile.taint.name=Taint
@ -5093,13 +5098,16 @@ tile.waste_mycelium.name=Glowing Mycelium
tile.waste_planks.name=Charred Wooden Planks
tile.waste_trinitite.name=Trinitite Ore
tile.waste_trinitite_red.name=Red Trinitite Ore
tile.watz.name=Watz Powerplant
tile.watz_conductor.name=Watz Electricity Port
tile.watz_control.name=Reinforced Control Rods
tile.watz_cooler.name=Watz Reactor Supercooler
tile.watz_core.name=Watz Reactor Control
tile.watz_element.name=Watz Reaction Chamber
tile.watz_end.name=Watz Reactor Stability Element
tile.watz_end_bolted.name=Watz Reactor Stability Element (Riveted)
tile.watz_hatch.name=Watz Reactor Access Hatch
tile.watz_pump.name=Watz Pressure Pump
tile.yellow_barrel.name=Radioactive Barrel
tile.zirnox_destroyed.name=Destroyed ZINROX

View File

@ -1261,6 +1261,7 @@ hbmmat.wroughtiron=Кованое железо
hbmmat.desh=Деш
hbmmat.cdalloy=Кадмиевая сталь
hbmmat.cadmium=Кадмий
hbmmat.watzmud=Токсичные отходы
crucible.aa=Производство продвинутого сплава
crucible.ferro=Производство ферроуранового сплава
@ -1274,6 +1275,7 @@ crucible.steelPig=Переплавка чугуна в сталь
crucible.steelWrought=Переплавка кованого железа в сталь
crucible.tcalloy=Производство технециевой стали
crucible.cdalloy=Производство кадмиевой стали
crucible.cmb=Производство стали Альянса
matshape.block=Блок %s
matshape.blocks=Блоки %s
@ -1716,6 +1718,7 @@ tile.struct_launcher_core_large.name=Ядро большой пусковой п
tile.struct_soyuz_core.name=Ядро стартовой площадки Союза
tile.struct_plasma_core.name=Ядро нагревателя плазмы
tile.struct_iter_core.name=Ядро термоядерного реактора
tile.struct_watz_core.name=Ядро Ватцз-реактора
tile.machine_difurnace_off.name=Доменная печь
tile.machine_difurnace_on.name=Доменная печь
@ -2094,6 +2097,8 @@ tile.machine_vacuum_distill.name=Вакуумный нефтеперерабат
tile.machine_catalytic_reformer.name=Каталитический реформер
container.catalyticReformer=Каталитический реформер
tile.fan.name=Вентилятор
tile.watz.name=Реактор Ватцз
tile.watz_pump.name=Нагнетающая помпа Ватцза
container.hadron=Ускоритель частиц
tile.hadron_access.name=Терминал доступа ускорителя частиц
@ -2227,6 +2232,7 @@ tile.watz_element.name=Камера реакции Ватцза
tile.watz_control.name=Упрочнённые регулирующие стержни
tile.watz_cooler.name=Суперохладитель реактора Ватцза
tile.watz_end.name=Стабилизатор реактора Ватцза
tile.watz_end_bolted.name=Стабилизатор реактора Ватцза (Заклепанный)
tile.watz_hatch.name=Люк доступа к реактору Ватцза
tile.watz_conductor.name=Порт электричества Ватцза
tile.watz_core.name=Контроллер реактора Ватцза
@ -2384,6 +2390,7 @@ item.coil_gold_torus.name=Золотая кольцевая катушка
item.lithium.name=Куб лития
item.ingot_phosphorus.name=Брусок белого фосфора
item.ingot_magnetized_tungsten.name=Намагниченный слиток вольфрама
item.ingot_mud.name=Кирпич из твёрдых отходов
item.ingot_combine_steel.name=Слиток стали Альянса
item.ingot_combine_steel.desc=*вставьте референс на Гражданскую Оборону*
item.ingot_combine_steel.desc.11="Я имею в виду, это глагол для громкого крика.$Инопланетяне - это не глаголы. Это существительные!"$"На самом деле, я думаю, что это также название $какого-то сельскохозяйственного оборудования, такого как $молотилка за доллар или что-то в этом роде."$"Это еще хуже. Теперь у нас есть слово,$которое может означать "смешивать вещи вместе",$часть сельскохозяйственного оборудования, и давайте посмотрим...$а да, это также может означать "самая продвинутая $форма жизни в известной вселенной".."$"И?"$"'И?' Да ладно, чувак, они же ИНОПЛАНЕТЯНЕ!"
@ -4048,6 +4055,7 @@ item.gun_darter.name=Дротиковый пистолет
item.gun_mymy.name=Ньетес
item.gun_ar15.name="Джош"
item.gun_glass_cannon.name=Стеклянная пушка
item.boltgun.name=Пневматический заклепочник
item.gun_revolver_iron_ammo.name=Пуля
item.gun_revolver_ammo.name=Свинцовая пуля
@ -4394,6 +4402,7 @@ entity.hbm.entity_schrabnel.name=Шрапнель
entity.entity_fucc_a_ducc.name=Утка
entity.entity_mob_nuclear_creeper.name=Ядерный крипер
entity.entity_mob_tainted_creeper.name=Заражённый порчей крипер
entity.entity_mob_phosgene_creeper.name=Фосгеновый крипер
entity.entity_mob_mask_man.name=Маскмен
entity.entity_mob_hunter_chopper.name=Вертолёт-охотник
entity.entity_cyber_crab.name=Киберкраб

View File

@ -78,6 +78,7 @@
"item.vice": {"category": "player", "sounds": [{"name": "tool/vice", "stream": false}]},
"item.upgradePlug": {"category": "player", "sounds": [{"name": "tool/upgradePlug", "stream": false}]},
"item.battery": {"category": "player", "sounds": [{"name": "tool/battery", "stream": false}]},
"item.boltgun": {"category": "player", "sounds": [{"name": "tool/boltgun", "stream": false}]},
"music.recordLambdaCore": {"category": "record", "sounds": [{"name": "music/recordLambdaCore", "stream": true}]},
"music.recordSectorSweep": {"category": "record", "sounds": [{"name": "music/recordSectorSweep", "stream": true}]},

Binary file not shown.

Binary file not shown.

After

Width:  |  Height:  |  Size: 410 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 128 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 460 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.0 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 537 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 1.0 KiB

After

Width:  |  Height:  |  Size: 1.1 KiB