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 mod_version=1.0.27
# Empty build number makes a release type # Empty build number makes a release type
mod_build_number=4562 mod_build_number=4578
credits=HbMinecraft, rodolphito (explosion algorithms), grangerave (explosion algorithms),\ credits=HbMinecraft, rodolphito (explosion algorithms), grangerave (explosion algorithms),\
\ Hoboy (textures, models), Doctor17 (russian localization), Drillgon200 (effects, models, porting),\ \ Hoboy (textures, models), Doctor17 (russian localization), Drillgon200 (effects, models, porting),\

View File

@ -1,6 +1,13 @@
package api.hbm.block; 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.entity.player.EntityPlayer;
import net.minecraft.item.ItemStack;
import net.minecraft.world.World; import net.minecraft.world.World;
public interface IToolable { public interface IToolable {
@ -13,6 +20,28 @@ public interface IToolable {
DEFUSER, DEFUSER,
WRENCH, WRENCH,
TORCH, 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; package com.hbm.blocks;
import com.hbm.util.EnumUtil;
import cpw.mods.fml.relauncher.Side; import cpw.mods.fml.relauncher.Side;
import cpw.mods.fml.relauncher.SideOnly; import cpw.mods.fml.relauncher.SideOnly;
import net.minecraft.block.material.Material; import net.minecraft.block.material.Material;
import net.minecraft.client.renderer.texture.IIconRegister; import net.minecraft.client.renderer.texture.IIconRegister;
import net.minecraft.item.ItemStack;
import net.minecraft.util.IIcon; import net.minecraft.util.IIcon;
public class BlockEnumMulti extends BlockMulti { 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 @Override
@SideOnly(Side.CLIENT) @SideOnly(Side.CLIENT)
public IIcon getIcon(int side, int meta) { 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)); 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 fraction_spacer;
public static Block machine_catalytic_cracker; public static Block machine_catalytic_cracker;
public static Block machine_catalytic_reformer; public static Block machine_catalytic_reformer;
public static Block machine_coker;
public static Block machine_boiler_off; public static Block machine_boiler_off;
public static Block machine_boiler_on; 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_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_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_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 BlockBoltable(Material.iron).setBlockName("watz_end").setHardness(5.0F).setResistance(10.0F).setCreativeTab(MainRegistry.machineTab).setBlockTextureName(RefStrings.MODID + ":watz_casing"); 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_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_conductor = new BlockCableConnect(Material.iron).setBlockName("watz_conductor").setHardness(5.0F).setResistance(10.0F).setCreativeTab(MainRegistry.machineTab).setBlockTextureName(RefStrings.MODID + ":watz_conductor_top");
watz_core = new WatzCore(Material.iron).setBlockName("watz_core").setHardness(5.0F).setResistance(10.0F).setCreativeTab(MainRegistry.machineTab).setBlockTextureName(RefStrings.MODID + ":watz_computer"); watz_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"); 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_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_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_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_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"); 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_flare);
register(machine_refinery); register(machine_refinery);
register(machine_vacuum_distill); register(machine_vacuum_distill);
GameRegistry.registerBlock(machine_fraction_tower, machine_fraction_tower.getUnlocalizedName()); register(machine_fraction_tower);
GameRegistry.registerBlock(fraction_spacer, fraction_spacer.getUnlocalizedName()); register(fraction_spacer);
GameRegistry.registerBlock(machine_catalytic_cracker, machine_catalytic_cracker.getUnlocalizedName()); register(machine_catalytic_cracker);
register(machine_catalytic_reformer); register(machine_catalytic_reformer);
GameRegistry.registerBlock(machine_drill, machine_drill.getUnlocalizedName()); register(machine_coker);
GameRegistry.registerBlock(machine_autosaw, machine_autosaw.getUnlocalizedName()); register(machine_drill);
register(machine_autosaw);
register(machine_excavator); register(machine_excavator);
register(machine_mining_laser); register(machine_mining_laser);
register(barricade); 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) { public void onBlockHarvested(World world, int x, int y, int z, int meta, EntityPlayer player) {
if(meta > 7) { if(meta > 7) {
// dead
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);
}
}
} else if(world.getBlock(x, y + 1, z) == this) { } else if(world.getBlock(x, y + 1, z) == this) {
if(player.capabilities.isCreativeMode) { 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.TileEntityProxyCombo;
import com.hbm.tileentity.machine.TileEntityCrucible; import com.hbm.tileentity.machine.TileEntityCrucible;
import api.hbm.block.ICrucibleAcceptor;
import cpw.mods.fml.common.network.internal.FMLNetworkHandler; import cpw.mods.fml.common.network.internal.FMLNetworkHandler;
import cpw.mods.fml.relauncher.Side; import cpw.mods.fml.relauncher.Side;
import cpw.mods.fml.relauncher.SideOnly; import cpw.mods.fml.relauncher.SideOnly;
@ -24,8 +25,9 @@ import net.minecraft.tileentity.TileEntity;
import net.minecraft.util.AxisAlignedBB; import net.minecraft.util.AxisAlignedBB;
import net.minecraft.world.World; import net.minecraft.world.World;
import net.minecraftforge.client.event.DrawBlockHighlightEvent; 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() { public MachineCrucible() {
super(Material.rock); 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); 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(); 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; package com.hbm.blocks.machine;
import com.hbm.blocks.BlockDummyable; import com.hbm.blocks.BlockDummyable;
import com.hbm.blocks.ModBlocks;
import com.hbm.handler.MultiblockHandlerXR; import com.hbm.handler.MultiblockHandlerXR;
import com.hbm.items.ModItems;
import com.hbm.tileentity.TileEntityProxyCombo; import com.hbm.tileentity.TileEntityProxyCombo;
import com.hbm.tileentity.machine.TileEntityWatz; import com.hbm.tileentity.machine.TileEntityWatz;
import net.minecraft.block.Block;
import net.minecraft.block.material.Material; import net.minecraft.block.material.Material;
import net.minecraft.entity.item.EntityItem;
import net.minecraft.entity.player.EntityPlayer; import net.minecraft.entity.player.EntityPlayer;
import net.minecraft.item.ItemStack;
import net.minecraft.tileentity.TileEntity; import net.minecraft.tileentity.TileEntity;
import net.minecraft.world.World; import net.minecraft.world.World;
import net.minecraftforge.common.util.ForgeDirection; 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 - 2);
this.makeExtra(world, x, y + 2, z); 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 static com.hbm.inventory.OreDictManager.*;
import com.hbm.items.ModItems; import com.hbm.items.ModItems;
import com.hbm.items.machine.ItemBreedingRod.*; import com.hbm.items.machine.ItemBreedingRod.*;
import com.hbm.items.machine.ItemWatzPellet.EnumWatzType;
import com.hbm.items.machine.ItemZirnoxRod.EnumZirnoxType; import com.hbm.items.machine.ItemZirnoxRod.EnumZirnoxType;
import com.hbm.main.CraftingManager; import com.hbm.main.CraftingManager;
import cpw.mods.fml.common.registry.GameRegistry; import cpw.mods.fml.common.registry.GameRegistry;
import net.minecraft.item.Item; import net.minecraft.item.Item;
import net.minecraft.item.ItemStack; import net.minecraft.item.ItemStack;
import net.minecraftforge.oredict.OreDictionary;
import net.minecraftforge.oredict.ShapedOreRecipe; 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_pu241, ModItems.rbmk_fuel_zfb_pu241);
addRBMKRod(ModItems.billet_zfb_am_mix, ModItems.rbmk_fuel_zfb_am_mix); 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 }); 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 //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) { 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() }); 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 com.hbm.inventory.fluid.Fluids;
import static com.hbm.inventory.OreDictManager.*; import static com.hbm.inventory.OreDictManager.*;
import com.hbm.items.ItemGenericPart.EnumPartType;
import com.hbm.items.ModItems; import com.hbm.items.ModItems;
import com.hbm.items.machine.ItemBattery; import com.hbm.items.machine.ItemBattery;
import com.hbm.items.tool.ItemBlowtorch; 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(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.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(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 //Bobmazon
CraftingManager.addShapelessAuto(new ItemStack(ModItems.bobmazon_materials), new Object[] { Items.book, Items.gold_nugget, Items.string }); 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.nbt.NBTTagCompound;
import net.minecraft.potion.Potion; import net.minecraft.potion.Potion;
import net.minecraft.potion.PotionEffect; import net.minecraft.potion.PotionEffect;
import net.minecraft.util.AxisAlignedBB;
import net.minecraft.util.DamageSource; import net.minecraft.util.DamageSource;
import net.minecraft.world.World; import net.minecraft.world.World;
@ -66,8 +67,9 @@ public class EntityMist extends Entity {
public void onEntityUpdate() { public void onEntityUpdate() {
float height = this.dataWatcher.getWatchableObjectFloat(12); float height = this.dataWatcher.getWatchableObjectFloat(12);
this.yOffset = -height / 2F; this.yOffset = 0;
this.setSize(this.dataWatcher.getWatchableObjectFloat(11), height); this.setSize(this.dataWatcher.getWatchableObjectFloat(11), height);
this.setPosition(this.posX, this.posY, this.posZ);
if(!worldObj.isRemote) { if(!worldObj.isRemote) {
@ -90,11 +92,20 @@ public class EntityMist extends Entity {
return; 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) { for(Entity e : affected) {
this.affect(e, intensity); 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) { if(!this.worldObj.isRemote) {
this.setDead(); this.setDead();
worldObj.createExplosion(this, posX, posY + this.height / 2, posZ, 2F, false);
EntityMist mist = new EntityMist(worldObj); EntityMist mist = new EntityMist(worldObj);
mist.setType(Fluids.PHOSGENE); mist.setType(Fluids.PHOSGENE);
mist.setPosition(posX, posY, posZ); 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 { } else {
for(int i = 0; i < 5; i++) for(int i = 0; i < 5; i++) worldObj.spawnParticle("lava", posX, posY, posZ, 0.0, 0.0, 0.0);
worldObj.spawnParticle("lava", posX, posY, posZ, 0.0, 0.0, 0.0);
} }
worldObj.playSoundEffect(posX, posY, posZ, "random.fizz", 1.0F, 1.0F); 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) { public void setVolcano(boolean b) {
this.dataWatcher.updateObject(16, (byte) (b ? 2 : 0)); 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(); final BulletConfiguration bullet = Gun556mmFactory.get556Config().clone();
bullet.ammo = new ComparableStack(ModItems.ammo_762.stackFromEnum(Ammo762NATO.STOCK)); bullet.ammo = new ComparableStack(ModItems.ammo_762.stackFromEnum(Ammo762NATO.STOCK));
bullet.dmgMax *= 2; bullet.dmgMax = 20;
bullet.dmgMin *= 2; bullet.dmgMin = 24;
bullet.velocity *= 2.5; bullet.velocity *= 2.5;
bullet.maxAge *= 2; bullet.maxAge *= 2;
bullet.spread /= 2; bullet.spread /= 2;
@ -177,8 +177,8 @@ public class Gun762mmFactory {
final BulletConfiguration bullet = get762NATOConfig(); final BulletConfiguration bullet = get762NATOConfig();
bullet.ammo = new ComparableStack(ModItems.ammo_762.stackFromEnum(Ammo762NATO.AP)); bullet.ammo = new ComparableStack(ModItems.ammo_762.stackFromEnum(Ammo762NATO.AP));
bullet.dmgMax *= 1.5; bullet.dmgMax = 24;
bullet.dmgMin *= 1.5; bullet.dmgMin = 28;
bullet.spentCasing = CASING762NATO.clone().register("762NATOAP"); bullet.spentCasing = CASING762NATO.clone().register("762NATOAP");
@ -189,8 +189,8 @@ public class Gun762mmFactory {
final BulletConfiguration bullet = get762NATOConfig(); final BulletConfiguration bullet = get762NATOConfig();
bullet.ammo = new ComparableStack(ModItems.ammo_762.stackFromEnum(Ammo762NATO.DU)); bullet.ammo = new ComparableStack(ModItems.ammo_762.stackFromEnum(Ammo762NATO.DU));
bullet.dmgMax *= 2; bullet.dmgMax = 36;
bullet.dmgMin *= 2; bullet.dmgMin = 40;
bullet.spentCasing = CASING762NATO.clone().register("762NATODU"); 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 String display;
public final ItemStack[] machine; public final ItemStack[] machine;
public final HashMap<Object, Object> recipes; public final HashMap<Object, Object> recipes;
public HashMap<Object, Object> machineOverrides;
/// SETUP /// /// SETUP ///
public NEIUniversalHandler(String display, ItemStack machine[], HashMap recipes) { public NEIUniversalHandler(String display, ItemStack machine[], HashMap recipes) {
this.display = display; this.display = display;
this.machine = machine; this.machine = machine;
this.recipes = recipes; 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); } 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[] output;
PositionedStack machinePositioned; 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]; input = new PositionedStack[in.length];
int[][] inPos = NEIUniversalHandler.getInputCoords(in.length);
for(int i = 0; i < in.length; i++) { for(int i = 0; i < in.length; i++) {
ItemStack[] sub = in[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]; output = new PositionedStack[out.length];
int[][] outPos = NEIUniversalHandler.getOutputCoords(out.length);
for(int i = 0; i < out.length; i++) { for(int i = 0; i < out.length; i++) {
ItemStack[] sub = out[i]; ItemStack[] sub = out[i];
this.output[i] = new PositionedStack(sub, outPos[i][0], outPos[i][1]);
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.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 @Override
@ -104,16 +121,115 @@ public abstract class NEIUniversalHandler extends TemplateRecipeHandler {
super.drawBackground(recipe); super.drawBackground(recipe);
RecipeSet rec = (RecipeSet) this.arecipes.get(recipe); RecipeSet rec = (RecipeSet) this.arecipes.get(recipe);
for(int i = 0; i < rec.input.length; i++) int[][] inPos = NEIUniversalHandler.getInputCoords(rec.input.length);
drawTexturedModalRect(47 + i * -18, 23, 5, 87, 18, 18); for(int[] pos : inPos) {
for(int i = 0; i < rec.output.length; i++) { drawTexturedModalRect(pos[0] - 1, pos[1] - 1, 5, 87, 18, 18);
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[][] 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); 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 @Override
public void loadCraftingRecipes(String outputId, Object... results) { public void loadCraftingRecipes(String outputId, Object... results) {
@ -123,7 +239,7 @@ public abstract class NEIUniversalHandler extends TemplateRecipeHandler {
for(Entry<Object, Object> recipe : recipes.entrySet()) { for(Entry<Object, Object> recipe : recipes.entrySet()) {
ItemStack[][] ins = InventoryUtil.extractObject(recipe.getKey()); ItemStack[][] ins = InventoryUtil.extractObject(recipe.getKey());
ItemStack[][] outs = InventoryUtil.extractObject(recipe.getValue()); ItemStack[][] outs = InventoryUtil.extractObject(recipe.getValue());
this.arecipes.add(new RecipeSet(ins, outs)); this.arecipes.add(new RecipeSet(ins, outs, recipe.getKey()));
} }
} else { } else {
@ -142,7 +258,7 @@ public abstract class NEIUniversalHandler extends TemplateRecipeHandler {
for(ItemStack[] array : outs) { for(ItemStack[] array : outs) {
for(ItemStack stack : array) { for(ItemStack stack : array) {
if(NEIServerUtils.areStacksSameTypeCrafting(stack, result)) { if(NEIServerUtils.areStacksSameTypeCrafting(stack, result)) {
this.arecipes.add(new RecipeSet(ins, outs)); this.arecipes.add(new RecipeSet(ins, outs, recipe.getKey()));
break match; break match;
} }
} }
@ -170,7 +286,7 @@ public abstract class NEIUniversalHandler extends TemplateRecipeHandler {
for(ItemStack[] array : ins) { for(ItemStack[] array : ins) {
for(ItemStack stack : array) { for(ItemStack stack : array) {
if(NEIServerUtils.areStacksSameTypeCrafting(stack, ingredient)) { if(NEIServerUtils.areStacksSameTypeCrafting(stack, ingredient)) {
this.arecipes.add(new RecipeSet(ins, outs)); this.arecipes.add(new RecipeSet(ins, outs, recipe.getKey()));
break match; 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.modifier.*;
import com.hbm.hazard.transformer.*; import com.hbm.hazard.transformer.*;
import com.hbm.hazard.type.*; import com.hbm.hazard.type.*;
import com.hbm.inventory.OreDictManager.DictFrame;
import com.hbm.inventory.material.MaterialShapes; import com.hbm.inventory.material.MaterialShapes;
import com.hbm.items.ModItems; import com.hbm.items.ModItems;
import com.hbm.items.machine.ItemBreedingRod.BreedingRodType; import com.hbm.items.machine.ItemBreedingRod.BreedingRodType;
import com.hbm.items.machine.ItemRTGPelletDepleted.DepletedRTGMaterial; 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.machine.ItemZirnoxRod.EnumZirnoxType;
import com.hbm.items.special.ItemHolotapeImage.EnumHoloImage; import com.hbm.items.special.ItemHolotapeImage.EnumHoloImage;
import com.hbm.util.Compat; import com.hbm.util.Compat;
@ -104,6 +106,7 @@ public class HazardRegistry {
public static final float saf = 5.85F; public static final float saf = 5.85F;
public static final float sas3 = 5F; public static final float sas3 = 5F;
public static final float gh336 = 5.0F; 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 radsource_mult = 3.0F;
public static final float pobe = po210 * radsource_mult; public static final float pobe = po210 * radsource_mult;
public static final float rabe = ra226 * 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_zfb_am_mix, pu241 * billet * 0.1F, wst * billet * 10F);
registerRBMKPellet(rbmk_pellet_drx, bf * billet, bf * billet * 100F, true, 0F, 1F/24F); 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(powder_yellowcake, makeData(RADIATION, yc * powder));
HazardSystem.register(block_yellowcake, makeData(RADIATION, yc * block * powder_mult)); HazardSystem.register(block_yellowcake, makeData(RADIATION, yc * block * powder_mult));
HazardSystem.register(ModItems.fallout, makeData(RADIATION, fo * powder)); 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 cpw.mods.fml.common.eventhandler.SubscribeEvent;
import net.minecraft.block.Block; import net.minecraft.block.Block;
import net.minecraft.init.Blocks;
import net.minecraft.init.Items; import net.minecraft.init.Items;
import net.minecraft.item.Item; import net.minecraft.item.Item;
import net.minecraft.item.ItemStack; import net.minecraft.item.ItemStack;
@ -138,6 +139,7 @@ public class OreDictManager {
public static final DictFrame SBD = new DictFrame("Schrabidate"); public static final DictFrame SBD = new DictFrame("Schrabidate");
public static final DictFrame SRN = new DictFrame("Schraranium"); public static final DictFrame SRN = new DictFrame("Schraranium");
public static final DictFrame GH336 = new DictFrame("Ghiorsium336", "Gh336"); public static final DictFrame GH336 = new DictFrame("Ghiorsium336", "Gh336");
public static final DictFrame MUD = new DictFrame("WatzMud");
/* /*
* STABLE * STABLE
*/ */
@ -297,7 +299,7 @@ public class OreDictManager {
IRON.plate(plate_iron).dust(powder_iron).ore(ore_gneiss_iron); IRON.plate(plate_iron).dust(powder_iron).ore(ore_gneiss_iron);
GOLD.plate(plate_gold).dust(powder_gold).ore(ore_gneiss_gold); GOLD.plate(plate_gold).dust(powder_gold).ore(ore_gneiss_gold);
LAPIS.dust(powder_lapis); 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); DIAMOND.dust(powder_diamond).ore(gravel_diamond);
EMERALD.dust(powder_emerald); 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); 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); 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); GH336 .rad(HazardRegistry.gh336) .nugget(nugget_gh336) .billet(billet_gh336) .ingot(ingot_gh336);
MUD .rad(HazardRegistry.mud) .ingot(ingot_mud);
/* /*
* STABLE * STABLE

View File

@ -455,17 +455,41 @@ public class RecipesCommon {
this.block = block; this.block = block;
this.meta = meta; 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) { public MetaBlock(Block block) {
this(block, 0); this(block, 0);
} }
public int getID() { @Deprecated public int getID() {
final int prime = 31; return hashCode();
int result = 1;
result = prime * result + Block.getIdFromBlock(block);
result = prime * result + meta;
return result;
} }
} }

View File

@ -9,7 +9,6 @@ import api.hbm.energy.IBatteryItem;
import net.minecraft.entity.player.EntityPlayer; import net.minecraft.entity.player.EntityPlayer;
import net.minecraft.entity.player.InventoryPlayer; import net.minecraft.entity.player.InventoryPlayer;
import net.minecraft.inventory.Container; import net.minecraft.inventory.Container;
import net.minecraft.inventory.ICrafting;
import net.minecraft.inventory.Slot; import net.minecraft.inventory.Slot;
import net.minecraft.item.ItemStack; import net.minecraft.item.ItemStack;
@ -55,11 +54,6 @@ public class ContainerMachineCatalyticReformer extends Container {
} }
} }
@Override
public void addCraftingToCrafters(ICrafting crafting) {
super.addCraftingToCrafters(crafting);
}
@Override @Override
public ItemStack transferStackInSlot(EntityPlayer p_82846_1_, int par2) { public ItemStack transferStackInSlot(EntityPlayer p_82846_1_, int par2) {
ItemStack var3 = null; 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_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_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_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 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); } @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_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_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_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_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_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_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.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_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, 1), new AStack[] {new OreDictStack(W.ingot(), 2), new OreDictStack(STEEL.ingot(), 2), new OreDictStack(KNO.dust(), 4), },300); 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_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_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_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); 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.RecipesCommon.OreDictStack;
import com.hbm.inventory.recipes.loader.SerializableRecipe; import com.hbm.inventory.recipes.loader.SerializableRecipe;
import com.hbm.items.ModItems; import com.hbm.items.ModItems;
import com.hbm.items.machine.ItemWatzPellet.EnumWatzType;
import com.hbm.items.special.ItemBedrockOre.EnumBedrockOre; import com.hbm.items.special.ItemBedrockOre.EnumBedrockOre;
import com.hbm.items.special.ItemByproduct.EnumByproduct; import com.hbm.items.special.ItemByproduct.EnumByproduct;
import com.hbm.main.MainRegistry; import com.hbm.main.MainRegistry;
@ -134,6 +135,73 @@ public class CentrifugeRecipes extends SerializableRecipe {
new ItemStack(ModItems.nugget_pu238, 1), new ItemStack(ModItems.nugget_pu238, 1),
new ItemStack(ModItems.nugget_technetium, 1), new ItemStack(ModItems.nugget_technetium, 1),
new ItemStack(ModItems.nuclear_waste_tiny, 6) }); 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[] { recipes.put(new ComparableStack(ModItems.powder_cloud), new ItemStack[] {
new ItemStack(ModItems.powder_copper, 1), 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)) .inputs(new MaterialStack(Mats.MAT_STEEL, n * 8), new MaterialStack(Mats.MAT_CADMIUM, n))
.outputs(new MaterialStack(Mats.MAT_CDALLOY, i))); .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(); registerMoldsForNEI();
} }

View File

@ -66,6 +66,7 @@ public class SolidificationRecipes extends SerializableRecipe {
registerRecipe(BIOGAS, 250, ModItems.biomass_compressed); 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(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(ENDERJUICE, 100, Items.ender_pearl);
registerRecipe(WATZ, 1000, ModItems.ingot_mud);
registerRecipe(OIL, SF_OIL, DictFrame.fromOne(ModItems.oil_tar, EnumTarType.CRUDE)); registerRecipe(OIL, SF_OIL, DictFrame.fromOne(ModItems.oil_tar, EnumTarType.CRUDE));
registerRecipe(CRACKOIL, SF_CRACK, DictFrame.fromOne(ModItems.oil_tar, EnumTarType.CRACK)); 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 ingot_cadmium;
public static Item powder_cadmium; public static Item powder_cadmium;
public static Item powder_bismuth; public static Item powder_bismuth;
public static Item ingot_mud;
public static Item ingot_lanthanium; public static Item ingot_lanthanium;
public static Item ingot_actinium; 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"); 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_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"); 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"); 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_pet, ingot_pet.getUnlocalizedName());
GameRegistry.registerItem(ingot_pc, ingot_pc.getUnlocalizedName()); GameRegistry.registerItem(ingot_pc, ingot_pc.getUnlocalizedName());
GameRegistry.registerItem(ingot_pvc, ingot_pvc.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_schraranium, ingot_schraranium.getUnlocalizedName());
GameRegistry.registerItem(ingot_schrabidium, ingot_schrabidium.getUnlocalizedName()); GameRegistry.registerItem(ingot_schrabidium, ingot_schrabidium.getUnlocalizedName());
GameRegistry.registerItem(ingot_schrabidate, ingot_schrabidate.getUnlocalizedName()); GameRegistry.registerItem(ingot_schrabidate, ingot_schrabidate.getUnlocalizedName());

View File

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

View File

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

View File

@ -1,12 +1,16 @@
package com.hbm.items.tool; package com.hbm.items.tool;
import com.hbm.blocks.ModBlocks;
import com.hbm.items.IAnimatedItem; import com.hbm.items.IAnimatedItem;
import com.hbm.items.ModItems;
import com.hbm.lib.RefStrings; import com.hbm.lib.RefStrings;
import com.hbm.main.MainRegistry;
import com.hbm.packet.AuxParticlePacketNT; import com.hbm.packet.AuxParticlePacketNT;
import com.hbm.packet.PacketDispatcher; import com.hbm.packet.PacketDispatcher;
import com.hbm.render.anim.BusAnimation; import com.hbm.render.anim.BusAnimation;
import com.hbm.render.anim.BusAnimationKeyframe; import com.hbm.render.anim.BusAnimationKeyframe;
import com.hbm.render.anim.BusAnimationSequence; import com.hbm.render.anim.BusAnimationSequence;
import com.hbm.util.EntityDamageUtil;
import api.hbm.block.IToolable; import api.hbm.block.IToolable;
import api.hbm.block.IToolable.ToolType; 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.Side;
import cpw.mods.fml.relauncher.SideOnly; import cpw.mods.fml.relauncher.SideOnly;
import net.minecraft.block.Block; import net.minecraft.block.Block;
import net.minecraft.entity.Entity;
import net.minecraft.entity.player.EntityPlayer; import net.minecraft.entity.player.EntityPlayer;
import net.minecraft.entity.player.EntityPlayerMP; import net.minecraft.entity.player.EntityPlayerMP;
import net.minecraft.item.Item; import net.minecraft.item.Item;
import net.minecraft.item.ItemStack; import net.minecraft.item.ItemStack;
import net.minecraft.nbt.NBTTagCompound; import net.minecraft.nbt.NBTTagCompound;
import net.minecraft.util.DamageSource;
import net.minecraft.world.World; import net.minecraft.world.World;
import net.minecraftforge.common.util.ForgeDirection; import net.minecraftforge.common.util.ForgeDirection;
@ -26,6 +32,9 @@ public class ItemBoltgun extends Item implements IAnimatedItem {
public ItemBoltgun() { public ItemBoltgun() {
this.setMaxStackSize(1); this.setMaxStackSize(1);
this.setCreativeTab(MainRegistry.controlTab);
ToolType.BOLT.register(new ItemStack(this));
} }
@Override @Override
@ -34,6 +43,48 @@ public class ItemBoltgun extends Item implements IAnimatedItem {
this.setTextureName(RefStrings.MODID + ":"+ unlocalizedName); this.setTextureName(RefStrings.MODID + ":"+ unlocalizedName);
return this; 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 @Override
public boolean onItemUse(ItemStack stack, EntityPlayer player, World world, int x, int y, int z, int side, float fX, float fY, float fZ) { 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(b instanceof IToolable && ((IToolable)b).onScrew(world, player, x, y, z, side, fX, fY, fZ, ToolType.BOLT)) {
if(!world.isRemote) { if(!world.isRemote) {
world.playSoundAtEntity(player, "hbm:item.boltgun", 1.0F, 1.0F);
player.inventoryContainer.detectAndSendChanges(); player.inventoryContainer.detectAndSendChanges();
ForgeDirection dir = ForgeDirection.getOrientation(side); ForgeDirection dir = ForgeDirection.getOrientation(side);
double off = 0.25; double off = 0.25;

View File

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

View File

@ -690,7 +690,9 @@ public class ItemGunBase extends Item implements IHoldableWeapon, IItemHUD, IEqu
GunConfiguration gcfg = gun.mainConfig; GunConfiguration gcfg = gun.mainConfig;
if(type == ElementType.HOTBAR) { 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) { if(bcfg == null) {
return; return;

View File

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

View File

@ -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_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_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(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_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_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() }); 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.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.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_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(ModBlocks.fusion_heater), new Object[] { ModBlocks.fusion_hatch });
addShapelessAuto(new ItemStack(ModItems.energy_core), new Object[] { ModItems.fusion_core, ModItems.fuse }); 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() }); 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.BlockEnums.EnumStoneType;
import com.hbm.blocks.ModBlocks; import com.hbm.blocks.ModBlocks;
import com.hbm.blocks.generic.BlockMotherOfAllOres; import com.hbm.blocks.generic.BlockMotherOfAllOres;
import com.hbm.blocks.generic.BlockToolConversion;
import com.hbm.commands.CommandReloadRecipes; import com.hbm.commands.CommandReloadRecipes;
import com.hbm.config.*; import com.hbm.config.*;
import com.hbm.crafting.RodRecipes;
import com.hbm.creativetabs.*; import com.hbm.creativetabs.*;
import com.hbm.entity.EntityMappings; import com.hbm.entity.EntityMappings;
import com.hbm.entity.grenade.*; import com.hbm.entity.grenade.*;
@ -636,6 +638,8 @@ public class MainRegistry {
@EventHandler @EventHandler
public static void load(FMLInitializationEvent event) { public static void load(FMLInitializationEvent event) {
RodRecipes.registerInit();
achSacrifice = new Achievement("achievement.sacrifice", "sacrifice", -3, 1, ModItems.burnt_bark, null).initIndependentStat().setSpecial().registerStat(); 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(); achImpossible = new Achievement("achievement.impossible", "impossible", 18, 10, ModItems.nothing, null).initIndependentStat().setSpecial().registerStat();
@ -829,6 +833,7 @@ public class MainRegistry {
HazmatRegistry.registerHazmats(); HazmatRegistry.registerHazmats();
FluidContainerRegistry.register(); FluidContainerRegistry.register();
TileEntityMachineReactorLarge.registerAll(); TileEntityMachineReactorLarge.registerAll();
BlockToolConversion.registerRecipes();
proxy.registerMissileItems(); proxy.registerMissileItems();

View File

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

View File

@ -29,7 +29,7 @@ public class RenderShrapnel extends Render {
bindTexture(new ResourceLocation(RefStrings.MODID + ":textures/entity/shrapnel.png")); bindTexture(new ResourceLocation(RefStrings.MODID + ":textures/entity/shrapnel.png"));
if(rocket instanceof EntityShrapnel) { 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); GL11.glScaled(3, 3, 3);
} }
} }

View File

@ -6,6 +6,7 @@ import com.hbm.main.ResourceManager;
import com.hbm.render.anim.HbmAnimations; import com.hbm.render.anim.HbmAnimations;
import net.minecraft.client.Minecraft; import net.minecraft.client.Minecraft;
import net.minecraft.entity.player.EntityPlayer;
import net.minecraft.item.ItemStack; import net.minecraft.item.ItemStack;
import net.minecraftforge.client.IItemRenderer; import net.minecraftforge.client.IItemRenderer;
@ -33,6 +34,8 @@ public class ItemRenderBoltgun implements IItemRenderer {
GL11.glPushMatrix(); GL11.glPushMatrix();
EntityPlayer player = Minecraft.getMinecraft().thePlayer;
GL11.glEnable(GL11.GL_CULL_FACE); GL11.glEnable(GL11.GL_CULL_FACE);
GL11.glShadeModel(GL11.GL_SMOOTH); GL11.glShadeModel(GL11.GL_SMOOTH);
Minecraft.getMinecraft().renderEngine.bindTexture(ResourceManager.boltgun_tex); Minecraft.getMinecraft().renderEngine.bindTexture(ResourceManager.boltgun_tex);
@ -50,6 +53,7 @@ public class ItemRenderBoltgun implements IItemRenderer {
GL11.glPushMatrix(); GL11.glPushMatrix();
double[] anim = HbmAnimations.getRelevantTransformation("RECOIL"); double[] anim = HbmAnimations.getRelevantTransformation("RECOIL");
GL11.glTranslated(0, 0, -anim[0]); GL11.glTranslated(0, 0, -anim[0]);
if(anim[0] != 0) player.isSwingInProgress = false;
ResourceManager.boltgun.renderPart("Barrel"); ResourceManager.boltgun.renderPart("Barrel");
GL11.glPopMatrix(); 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);
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++) { for(int j = -1; j < 2; j++) {
SmallBlockPronter.drawSmolBlockAt(ModBlocks.watz_end, 0, 3F, i, j); SmallBlockPronter.drawSmolBlockAt(ModBlocks.watz_end, 1, 3F, i, j);
SmallBlockPronter.drawSmolBlockAt(ModBlocks.watz_end, 0, j, i, 3F); SmallBlockPronter.drawSmolBlockAt(ModBlocks.watz_end, 1, j, i, 3F);
SmallBlockPronter.drawSmolBlockAt(ModBlocks.watz_end, 0, -3F, i, j); SmallBlockPronter.drawSmolBlockAt(ModBlocks.watz_end, 1, -3F, i, j);
SmallBlockPronter.drawSmolBlockAt(ModBlocks.watz_end, 0, j, i, -3F); SmallBlockPronter.drawSmolBlockAt(ModBlocks.watz_end, 1, j, i, -3F);
} }
SmallBlockPronter.drawSmolBlockAt(ModBlocks.watz_end, 0, 2F, i, 2F); SmallBlockPronter.drawSmolBlockAt(ModBlocks.watz_end, 1, 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, 0, -2F, i, 2F); SmallBlockPronter.drawSmolBlockAt(ModBlocks.watz_end, 1, -2F, i, 2F);
SmallBlockPronter.drawSmolBlockAt(ModBlocks.watz_end, 0, -2F, i, -2F); SmallBlockPronter.drawSmolBlockAt(ModBlocks.watz_end, 1, -2F, i, -2F);
} }
SmallBlockPronter.draw(); SmallBlockPronter.draw();

View File

@ -23,6 +23,7 @@ import com.hbm.tileentity.IGUIProvider;
import com.hbm.tileentity.TileEntityMachineBase; import com.hbm.tileentity.TileEntityMachineBase;
import com.hbm.util.CrucibleUtil; import com.hbm.util.CrucibleUtil;
import api.hbm.block.ICrucibleAcceptor;
import api.hbm.tile.IHeatSource; import api.hbm.tile.IHeatSource;
import cpw.mods.fml.common.network.NetworkRegistry.TargetPoint; import cpw.mods.fml.common.network.NetworkRegistry.TargetPoint;
import cpw.mods.fml.relauncher.Side; import cpw.mods.fml.relauncher.Side;
@ -41,7 +42,7 @@ import net.minecraft.util.Vec3;
import net.minecraft.world.World; import net.minecraft.world.World;
import net.minecraftforge.common.util.ForgeDirection; 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 heat;
public int progress; public int progress;
@ -529,4 +530,57 @@ public class TileEntityCrucible extends TileEntityMachineBase implements IGUIPro
public double getMaxRenderDistanceSquared() { public double getMaxRenderDistanceSquared() {
return 65536.0D; 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.ArrayList;
import java.util.List; import java.util.List;
import java.util.Random;
import com.hbm.blocks.ModBlocks; 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.interfaces.IControlReceiver;
import com.hbm.inventory.container.ContainerWatz; import com.hbm.inventory.container.ContainerWatz;
import com.hbm.inventory.fluid.Fluids; 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.ModItems;
import com.hbm.items.machine.ItemWatzPellet; import com.hbm.items.machine.ItemWatzPellet;
import com.hbm.items.machine.ItemWatzPellet.EnumWatzType; 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.IGUIProvider;
import com.hbm.tileentity.TileEntityMachineBase; import com.hbm.tileentity.TileEntityMachineBase;
import com.hbm.util.Compat; import com.hbm.util.Compat;
@ -22,10 +28,13 @@ import com.hbm.util.fauxpointtwelve.DirPos;
import com.hbm.util.function.Function; import com.hbm.util.function.Function;
import api.hbm.fluid.IFluidStandardTransceiver; import api.hbm.fluid.IFluidStandardTransceiver;
import cpw.mods.fml.common.network.NetworkRegistry.TargetPoint;
import cpw.mods.fml.relauncher.Side; import cpw.mods.fml.relauncher.Side;
import cpw.mods.fml.relauncher.SideOnly; import cpw.mods.fml.relauncher.SideOnly;
import net.minecraft.block.Block;
import net.minecraft.client.gui.GuiScreen; import net.minecraft.client.gui.GuiScreen;
import net.minecraft.entity.player.EntityPlayer; import net.minecraft.entity.player.EntityPlayer;
import net.minecraft.init.Blocks;
import net.minecraft.inventory.Container; import net.minecraft.inventory.Container;
import net.minecraft.item.ItemStack; import net.minecraft.item.ItemStack;
import net.minecraft.nbt.NBTTagCompound; import net.minecraft.nbt.NBTTagCompound;
@ -126,6 +135,29 @@ public class TileEntityWatz extends TileEntityMachineBase implements IFluidStand
} }
segments.get(segments.size() - 1).sendOutBottom(); 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) { 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; double heatToUse = this.heat * coolingFactor;
FT_Heatable trait = tanks[0].getTankType().getTrait(FT_Heatable.class); 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) { for(ItemStack stack : pellets) {
EnumWatzType type = EnumUtil.grabEnumSafely(EnumWatzType.class, stack.getItemDamage()); EnumWatzType type = EnumUtil.grabEnumSafely(EnumWatzType.class, stack.getItemDamage());
Function burnFunc = type.burnFunc; Function burnFunc = type.burnFunc;
Function heatMod = type.heatMult; Function heatDiv = type.heatDiv;
if(burnFunc != null) { if(burnFunc != null) {
double mod = heatMod != null ? heatMod.effonix(heat) : 1D; double div = heatDiv != null ? heatDiv.effonix(heat) : 1D;
double burn = burnFunc.effonix(inputFlux) * mod; double burn = burnFunc.effonix(inputFlux) / div;
ItemWatzPellet.setYield(stack, ItemWatzPellet.getYield(stack) - burn); ItemWatzPellet.setYield(stack, ItemWatzPellet.getYield(stack) - burn);
addedFlux += burn; addedFlux += burn;
addedHeat += type.heatEmission * burn; addedHeat += type.heatEmission * burn;
@ -198,7 +230,10 @@ public class TileEntityWatz extends TileEntityMachineBase implements IFluidStand
Function absorbFunc = type.absorbFunc; Function absorbFunc = type.absorbFunc;
if(absorbFunc != null) { 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) { if(above != null) {
for(int i = 0; i < 24; i++) { for(int i = 0; i < 24; i++) {
ItemStack stackBottom = slots[i]; ItemStack stackBottom = slots[i];
ItemStack stackTop = above.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 */ /* items fall down if the bottom slot is empty */
if(stackBottom == null && stackTop != null) { if(stackBottom == null && stackTop != null) {
slots[i] = stackTop.copy(); 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); 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.fluxLastBase = nbt.getDouble("lastFluxB");
this.fluxLastReaction = nbt.getDouble("lastFluxR"); this.fluxLastReaction = nbt.getDouble("lastFluxR");
@ -332,6 +372,7 @@ public class TileEntityWatz extends TileEntityMachineBase implements IFluidStand
nbt.setTag("locks", list); nbt.setTag("locks", list);
for(int i = 0; i < tanks.length; i++) tanks[i].writeToNBT(nbt, "t" + i); 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("lastFluxB", fluxLastBase);
nbt.setDouble("lastFluxR", fluxLastReaction); nbt.setDouble("lastFluxR", fluxLastReaction);
@ -402,6 +443,73 @@ public class TileEntityWatz extends TileEntityMachineBase implements IFluidStand
return bb; 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 @Override
@SideOnly(Side.CLIENT) @SideOnly(Side.CLIENT)
public double getMaxRenderDistanceSquared() { public double getMaxRenderDistanceSquared() {

View File

@ -49,20 +49,20 @@ public class TileEntityWatzStruct extends TileEntity {
if(!cbr(ModBlocks.watz_cooler, -1, i, -2)) return; if(!cbr(ModBlocks.watz_cooler, -1, i, -2)) return;
for(int j = -1; j < 2; j++) { for(int j = -1; j < 2; j++) {
if(!cbr(ModBlocks.watz_end, 3, i, j)) return; if(!cbr(ModBlocks.watz_end, 1, 3, i, j)) return;
if(!cbr(ModBlocks.watz_end, j, i, 3)) return; if(!cbr(ModBlocks.watz_end, 1, j, i, 3)) return;
if(!cbr(ModBlocks.watz_end, -3, i, j)) return; if(!cbr(ModBlocks.watz_end, 1, -3, i, j)) return;
if(!cbr(ModBlocks.watz_end, j, i, -3)) 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, 1, 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, -2, i, 2)) return; if(!cbr(ModBlocks.watz_end, 1, -2, i, 2)) return;
if(!cbr(ModBlocks.watz_end, -2, i, -2)) return; if(!cbr(ModBlocks.watz_end, 1, -2, i, -2)) return;
} }
Watz watz = (Watz)ModBlocks.watz; Watz watz = (Watz)ModBlocks.watz;
BlockDummyable.safeRem = true; 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); watz.fillSpace(worldObj, xCoord, yCoord, zCoord, ForgeDirection.NORTH, 0);
BlockDummyable.safeRem = false; BlockDummyable.safeRem = false;
} }
@ -72,10 +72,18 @@ public class TileEntityWatzStruct extends TileEntity {
return worldObj.getBlock(xCoord + x, yCoord + y, zCoord + z); 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 */ /** [C]heck [B]lock at [R]elative position */
private boolean cbr(Block b, int x, int y, int z) { private boolean cbr(Block b, int x, int y, int z) {
return b == gbr(x, y, 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; 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) { public String getXName(boolean brackets) {
String x = "x"; String x = "x";
boolean mod = false; boolean mod = false;
if(div != 1D) x += " / " + div; if(div != 1D) x += " / " + String.format("%,.1f", div);
if(off != 0D) x += " + " + off; if(off != 0D) x += " + " + String.format("%,.1f", off);
if(mod && brackets) x = "(" + x + ")"; if(mod && brackets) x = "(" + x + ")";
return x; return x;
} }
@ -46,28 +46,35 @@ public abstract class Function {
public static class FunctionLogarithmic extends FunctionSingleArg { public static class FunctionLogarithmic extends FunctionSingleArg {
public FunctionLogarithmic(double level) { super(level); this.withOff(1D); } public FunctionLogarithmic(double level) { super(level); this.withOff(1D); }
@Override public double effonix(double x) { return Math.log10(getX(x)) * level; } @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"; } @Override public String getDangerFromFuel() { return EnumChatFormatting.YELLOW + "MEDIUM / LOGARITHMIC"; }
} }
public static class FunctionPassive extends FunctionSingleArg { public static class FunctionPassive extends FunctionSingleArg {
public FunctionPassive(double level) { super(level); } public FunctionPassive(double level) { super(level); }
@Override public double effonix(double x) { return this.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"; } @Override public String getDangerFromFuel() { return EnumChatFormatting.DARK_GREEN + "SAFE / PASSIVE"; }
} }
public static class FunctionSqrt extends FunctionSingleArg { public static class FunctionSqrt extends FunctionSingleArg {
public FunctionSqrt(double level) { super(level); } public FunctionSqrt(double level) { super(level); }
@Override public double effonix(double x) { return BobMathUtil.squirt(getX(x)) * this.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"; } @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 static class FunctionLinear extends FunctionSingleArg {
public FunctionLinear(double level) { super(level); } public FunctionLinear(double level) { super(level); }
@Override public double effonix(double x) { return getX(x) * this.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"; } @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) { super(level, 0D); }
public FunctionQuadratic(double level, double vOff) { super(level, vOff); } 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 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"; } @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.aa=Herstellung - Fortgeschrittene Legierung
crucible.cdalloy=Herstellung Cadmiumstahl crucible.cdalloy=Herstellung Cadmiumstahl
crucible.cmb=Herstellung CMB-Stahl
crucible.ferro=Herstellung - Ferrouran crucible.ferro=Herstellung - Ferrouran
crucible.hematite=Herstellung - Eisen aus Hämatit crucible.hematite=Herstellung - Eisen aus Hämatit
crucible.hss=Herstellung - Schnellarbeitsstahl crucible.hss=Herstellung - Schnellarbeitsstahl
@ -781,6 +782,7 @@ hbmmat.uranium=Uran
hbmmat.uranium233=Uran-233 hbmmat.uranium233=Uran-233
hbmmat.uranium235=Uran-235 hbmmat.uranium235=Uran-235
hbmmat.uranium238=Uran-238 hbmmat.uranium238=Uran-238
hbmmat.watzmud=Giftiger Schlamm
hbmmat.whitephosphorus=Weißer Phosphor hbmmat.whitephosphorus=Weißer Phosphor
hbmmat.workersalloy=Desh hbmmat.workersalloy=Desh
hbmmat.wroughtiron=Schmiedeeisen hbmmat.wroughtiron=Schmiedeeisen
@ -1205,6 +1207,7 @@ item.bobmazon_weapons.name=Bobmazon: Waffen und Sprengstoffe
item.bolt_compound.name=Verstärkte Turbinenwelle item.bolt_compound.name=Verstärkte Turbinenwelle
item.bolt_dura_steel.name=Schnellarbeitsstahlbolzen item.bolt_dura_steel.name=Schnellarbeitsstahlbolzen
item.bolt_tungsten.name=Wolframbolzen item.bolt_tungsten.name=Wolframbolzen
item.boltgun.name=Pneumatische Nietenpistole
item.bomb_caller.name=Luftschlag Zielmarker item.bomb_caller.name=Luftschlag Zielmarker
item.bomb_waffle.name=Massenvernichtungswaffel item.bomb_waffle.name=Massenvernichtungswaffel
item.guide_book.name=Handbuch item.guide_book.name=Handbuch
@ -2013,6 +2016,7 @@ item.ingot_magnetized_tungsten.name=Magnetisierter Wolframbarren
item.ingot_meteorite.name=Meteoritenbarren item.ingot_meteorite.name=Meteoritenbarren
item.ingot_meteorite_forged.name=Geschmiedeter Meteoritenbarren item.ingot_meteorite_forged.name=Geschmiedeter Meteoritenbarren
item.ingot_mox_fuel.name=MOX-Kernbrennstoffbarren item.ingot_mox_fuel.name=MOX-Kernbrennstoffbarren
item.ingot_mud.name=Fester Schlammziegel
item.ingot_neptunium.name=Neptuniumbarren item.ingot_neptunium.name=Neptuniumbarren
item.ingot_neptunium_fuel.name=Neptuniumkernbrennstoffbarren item.ingot_neptunium_fuel.name=Neptuniumkernbrennstoffbarren
item.ingot_niobium.name=Niobbarren 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_plasma_core.name=Plasmaerhitzer-Kernkomponente
tile.struct_scaffold.name=Startrampe-Gerüstblock tile.struct_scaffold.name=Startrampe-Gerüstblock
tile.struct_soyuz_core.name=Soyuz-Startrampe-Kernkomponente tile.struct_soyuz_core.name=Soyuz-Startrampe-Kernkomponente
tile.struct_watz_core.name=Watzkraftwerk-Kernkomponente
tile.substation.name=Umspannwerk tile.substation.name=Umspannwerk
tile.sulfuric_acid_block.name=Schwefelsäure tile.sulfuric_acid_block.name=Schwefelsäure
tile.taint.name=Korrupter Schmutz tile.taint.name=Korrupter Schmutz
@ -4275,13 +4280,16 @@ tile.waste_mycelium.name=Leuchtende Myzel
tile.waste_planks.name=Verkohlte Holzbretter tile.waste_planks.name=Verkohlte Holzbretter
tile.waste_trinitite.name=Trinititerz tile.waste_trinitite.name=Trinititerz
tile.waste_trinitite_red.name=Rotes Trinititerz tile.waste_trinitite_red.name=Rotes Trinititerz
tile.watz.name=Watzkraftwerk
tile.watz_conductor.name=Watz-Stromanschluss tile.watz_conductor.name=Watz-Stromanschluss
tile.watz_control.name=Verstärkte Steuerstäbe tile.watz_control.name=Verstärkte Steuerstäbe
tile.watz_cooler.name=Watz-Superkühler tile.watz_cooler.name=Watz-Superkühler
tile.watz_core.name=Watzreaktorkern tile.watz_core.name=Watzreaktorkern
tile.watz_element.name=Watzreaktionskammer tile.watz_element.name=Watzreaktionskammer
tile.watz_end.name=Watz-Stabilitätselement tile.watz_end.name=Watz-Stabilitätselement
tile.watz_end_bolted.name=Watz-Stabilitätselement (Genietet)
tile.watz_hatch.name=Watzreaktorzugriffsluke tile.watz_hatch.name=Watzreaktorzugriffsluke
tile.watz_pump.name=Watz-Druckpumpe
tile.yellow_barrel.name=Radioaktives Fass tile.yellow_barrel.name=Radioaktives Fass
tile.zirnox_destroyed.name=Zerstörter ZINOX tile.zirnox_destroyed.name=Zerstörter ZINOX

View File

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

View File

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

View File

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