Merge branch 'HbmMods:master' into master
@ -1,6 +1,6 @@
|
||||
mod_version=1.0.27
|
||||
# Empty build number makes a release type
|
||||
mod_build_number=4562
|
||||
mod_build_number=4578
|
||||
|
||||
credits=HbMinecraft, rodolphito (explosion algorithms), grangerave (explosion algorithms),\
|
||||
\ Hoboy (textures, models), Doctor17 (russian localization), Drillgon200 (effects, models, porting),\
|
||||
|
||||
@ -1,6 +1,13 @@
|
||||
package api.hbm.block;
|
||||
|
||||
import java.util.ArrayList;
|
||||
import java.util.HashMap;
|
||||
import java.util.List;
|
||||
|
||||
import com.hbm.inventory.RecipesCommon.ComparableStack;
|
||||
|
||||
import net.minecraft.entity.player.EntityPlayer;
|
||||
import net.minecraft.item.ItemStack;
|
||||
import net.minecraft.world.World;
|
||||
|
||||
public interface IToolable {
|
||||
@ -13,6 +20,28 @@ public interface IToolable {
|
||||
DEFUSER,
|
||||
WRENCH,
|
||||
TORCH,
|
||||
BOLT
|
||||
BOLT;
|
||||
|
||||
public List<ItemStack> stacksForDisplay = new ArrayList();
|
||||
private static HashMap<ComparableStack, ToolType> map = new HashMap();
|
||||
|
||||
public void register(ItemStack stack) {
|
||||
stacksForDisplay.add(stack);
|
||||
}
|
||||
|
||||
public static ToolType getType(ItemStack stack) {
|
||||
|
||||
if(!map.isEmpty()) {
|
||||
return map.get(new ComparableStack(stack));
|
||||
}
|
||||
|
||||
for(ToolType type : ToolType.values()) {
|
||||
for(ItemStack tool : type.stacksForDisplay) {
|
||||
map.put(new ComparableStack(tool), type);
|
||||
}
|
||||
}
|
||||
|
||||
return map.get(new ComparableStack(stack));
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@ -1,9 +1,12 @@
|
||||
package com.hbm.blocks;
|
||||
|
||||
import com.hbm.util.EnumUtil;
|
||||
|
||||
import cpw.mods.fml.relauncher.Side;
|
||||
import cpw.mods.fml.relauncher.SideOnly;
|
||||
import net.minecraft.block.material.Material;
|
||||
import net.minecraft.client.renderer.texture.IIconRegister;
|
||||
import net.minecraft.item.ItemStack;
|
||||
import net.minecraft.util.IIcon;
|
||||
|
||||
public class BlockEnumMulti extends BlockMulti {
|
||||
@ -38,6 +41,16 @@ public class BlockEnumMulti extends BlockMulti {
|
||||
}
|
||||
}
|
||||
|
||||
public String getUnlocalizedName(ItemStack stack) {
|
||||
|
||||
if(this.multiName) {
|
||||
Enum num = EnumUtil.grabEnumSafely(this.theEnum, stack.getItemDamage());
|
||||
return super.getUnlocalizedName() + "." + num.name().toLowerCase();
|
||||
}
|
||||
|
||||
return this.getUnlocalizedName();
|
||||
}
|
||||
|
||||
@Override
|
||||
@SideOnly(Side.CLIENT)
|
||||
public IIcon getIcon(int side, int meta) {
|
||||
|
||||
@ -31,4 +31,8 @@ public abstract class BlockMulti extends BlockBase implements IBlockMulti {
|
||||
list.add(new ItemStack(item, 1, i));
|
||||
}
|
||||
}
|
||||
|
||||
public String getUnlocalizedName(ItemStack stack) {
|
||||
return this.getUnlocalizedName();
|
||||
}
|
||||
}
|
||||
|
||||
@ -928,6 +928,7 @@ public class ModBlocks {
|
||||
public static Block fraction_spacer;
|
||||
public static Block machine_catalytic_cracker;
|
||||
public static Block machine_catalytic_reformer;
|
||||
public static Block machine_coker;
|
||||
|
||||
public static Block machine_boiler_off;
|
||||
public static Block machine_boiler_on;
|
||||
@ -1980,8 +1981,8 @@ public class ModBlocks {
|
||||
|
||||
watz_element = new BlockPillar(Material.iron, RefStrings.MODID + ":watz_element_top").setBlockName("watz_element").setHardness(5.0F).setResistance(10.0F).setCreativeTab(MainRegistry.machineTab).setBlockTextureName(RefStrings.MODID + ":watz_element_side");
|
||||
watz_control = new BlockPillar(Material.iron, RefStrings.MODID + ":watz_control_top").setBlockName("watz_control").setHardness(5.0F).setResistance(10.0F).setCreativeTab(MainRegistry.machineTab).setBlockTextureName(RefStrings.MODID + ":watz_control_side");
|
||||
watz_cooler = new BlockGeneric(Material.iron).setBlockName("watz_cooler").setHardness(5.0F).setResistance(10.0F).setCreativeTab(MainRegistry.machineTab).setBlockTextureName(RefStrings.MODID + ":watz_cooler");
|
||||
watz_end = new BlockBoltable(Material.iron).setBlockName("watz_end").setHardness(5.0F).setResistance(10.0F).setCreativeTab(MainRegistry.machineTab).setBlockTextureName(RefStrings.MODID + ":watz_casing");
|
||||
watz_cooler = new BlockPillar(Material.iron, RefStrings.MODID + ":watz_cooler_top").setBlockName("watz_cooler").setHardness(5.0F).setResistance(10.0F).setCreativeTab(MainRegistry.machineTab).setBlockTextureName(RefStrings.MODID + ":watz_cooler_side");
|
||||
watz_end = new BlockToolConversion(Material.iron).addVariant("_bolted").setBlockName("watz_end").setHardness(5.0F).setResistance(10.0F).setCreativeTab(MainRegistry.machineTab).setBlockTextureName(RefStrings.MODID + ":watz_casing");
|
||||
watz_hatch = new WatzHatch(Material.iron).setBlockName("watz_hatch").setHardness(5.0F).setResistance(10.0F).setCreativeTab(MainRegistry.machineTab).setBlockTextureName(RefStrings.MODID + ":watz_hatch");
|
||||
watz_conductor = new BlockCableConnect(Material.iron).setBlockName("watz_conductor").setHardness(5.0F).setResistance(10.0F).setCreativeTab(MainRegistry.machineTab).setBlockTextureName(RefStrings.MODID + ":watz_conductor_top");
|
||||
watz_core = new WatzCore(Material.iron).setBlockName("watz_core").setHardness(5.0F).setResistance(10.0F).setCreativeTab(MainRegistry.machineTab).setBlockTextureName(RefStrings.MODID + ":watz_computer");
|
||||
@ -2139,6 +2140,7 @@ public class ModBlocks {
|
||||
fraction_spacer = new FractionSpacer(Material.iron).setBlockName("fraction_spacer").setHardness(5.0F).setResistance(10.0F).setCreativeTab(MainRegistry.machineTab).setBlockTextureName(RefStrings.MODID + ":block_steel");
|
||||
machine_catalytic_cracker = new MachineCatalyticCracker(Material.iron).setBlockName("machine_catalytic_cracker").setHardness(5.0F).setResistance(10.0F).setCreativeTab(MainRegistry.machineTab).setBlockTextureName(RefStrings.MODID + ":block_steel");
|
||||
machine_catalytic_reformer = new MachineCatalyticReformer(Material.iron).setBlockName("machine_catalytic_reformer").setHardness(5.0F).setResistance(10.0F).setCreativeTab(MainRegistry.machineTab).setBlockTextureName(RefStrings.MODID + ":block_steel");
|
||||
machine_coker = new MachineCoker(Material.iron).setBlockName("machine_coker").setHardness(5.0F).setResistance(10.0F).setCreativeTab(MainRegistry.machineTab).setBlockTextureName(RefStrings.MODID + ":block_steel");
|
||||
machine_autosaw = new MachineAutosaw().setBlockName("machine_autosaw").setHardness(5.0F).setResistance(10.0F).setCreativeTab(MainRegistry.machineTab).setBlockTextureName(RefStrings.MODID + ":block_steel");
|
||||
machine_drill = new MachineMiningDrill(Material.iron).setBlockName("machine_drill").setHardness(5.0F).setResistance(100.0F).setCreativeTab(MainRegistry.machineTab).setBlockTextureName(RefStrings.MODID + ":machine_drill");
|
||||
machine_excavator = new MachineExcavator().setBlockName("machine_excavator").setHardness(5.0F).setResistance(100.0F).setCreativeTab(MainRegistry.machineTab).setBlockTextureName(RefStrings.MODID + ":block_steel");
|
||||
@ -3186,12 +3188,13 @@ public class ModBlocks {
|
||||
register(machine_flare);
|
||||
register(machine_refinery);
|
||||
register(machine_vacuum_distill);
|
||||
GameRegistry.registerBlock(machine_fraction_tower, machine_fraction_tower.getUnlocalizedName());
|
||||
GameRegistry.registerBlock(fraction_spacer, fraction_spacer.getUnlocalizedName());
|
||||
GameRegistry.registerBlock(machine_catalytic_cracker, machine_catalytic_cracker.getUnlocalizedName());
|
||||
register(machine_fraction_tower);
|
||||
register(fraction_spacer);
|
||||
register(machine_catalytic_cracker);
|
||||
register(machine_catalytic_reformer);
|
||||
GameRegistry.registerBlock(machine_drill, machine_drill.getUnlocalizedName());
|
||||
GameRegistry.registerBlock(machine_autosaw, machine_autosaw.getUnlocalizedName());
|
||||
register(machine_coker);
|
||||
register(machine_drill);
|
||||
register(machine_autosaw);
|
||||
register(machine_excavator);
|
||||
register(machine_mining_laser);
|
||||
register(barricade);
|
||||
|
||||
@ -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;
|
||||
}
|
||||
}
|
||||
@ -177,12 +177,7 @@ public class BlockTallPlant extends BlockEnumMulti implements IPlantable, IGrowa
|
||||
public void onBlockHarvested(World world, int x, int y, int z, int meta, EntityPlayer player) {
|
||||
|
||||
if(meta > 7) {
|
||||
|
||||
if(world.getBlock(x, y - 1, z) == this) {
|
||||
if(!player.capabilities.isCreativeMode) {
|
||||
this.dropBlockAsItem(world, x, y - 1, z, world.getBlockMetadata(x, y - 1, z), 0);
|
||||
}
|
||||
}
|
||||
// dead
|
||||
} else if(world.getBlock(x, y + 1, z) == this) {
|
||||
|
||||
if(player.capabilities.isCreativeMode) {
|
||||
|
||||
178
src/main/java/com/hbm/blocks/generic/BlockToolConversion.java
Normal 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;
|
||||
}
|
||||
}
|
||||
39
src/main/java/com/hbm/blocks/machine/MachineCoker.java
Normal 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;
|
||||
}
|
||||
}
|
||||
@ -11,6 +11,7 @@ import com.hbm.main.MainRegistry;
|
||||
import com.hbm.tileentity.TileEntityProxyCombo;
|
||||
import com.hbm.tileentity.machine.TileEntityCrucible;
|
||||
|
||||
import api.hbm.block.ICrucibleAcceptor;
|
||||
import cpw.mods.fml.common.network.internal.FMLNetworkHandler;
|
||||
import cpw.mods.fml.relauncher.Side;
|
||||
import cpw.mods.fml.relauncher.SideOnly;
|
||||
@ -24,8 +25,9 @@ import net.minecraft.tileentity.TileEntity;
|
||||
import net.minecraft.util.AxisAlignedBB;
|
||||
import net.minecraft.world.World;
|
||||
import net.minecraftforge.client.event.DrawBlockHighlightEvent;
|
||||
import net.minecraftforge.common.util.ForgeDirection;
|
||||
|
||||
public class MachineCrucible extends BlockDummyable {
|
||||
public class MachineCrucible extends BlockDummyable implements ICrucibleAcceptor {
|
||||
|
||||
public MachineCrucible() {
|
||||
super(Material.rock);
|
||||
@ -151,4 +153,31 @@ public class MachineCrucible extends BlockDummyable {
|
||||
for(AxisAlignedBB aabb : this.bounding) event.context.drawOutlinedBoundingBox(aabb.expand(exp, exp, exp).getOffsetBoundingBox(x - dX + 0.5, y - dY, z - dZ + 0.5), -1);
|
||||
ICustomBlockHighlight.cleanup();
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean canAcceptPartialPour(World world, int x, int y, int z, double dX, double dY, double dZ, ForgeDirection side, MaterialStack stack) {
|
||||
|
||||
int[] pos = this.findCore(world, x, y, z);
|
||||
if(pos == null) return false;
|
||||
TileEntity tile = world.getTileEntity(pos[0], pos[1], pos[2]);
|
||||
if(!(tile instanceof TileEntityCrucible)) return false;
|
||||
TileEntityCrucible crucible = (TileEntityCrucible) tile;
|
||||
|
||||
return crucible.canAcceptPartialPour(world, x, y, z, dX, dY, dZ, side, stack);
|
||||
}
|
||||
|
||||
@Override
|
||||
public MaterialStack pour(World world, int x, int y, int z, double dX, double dY, double dZ, ForgeDirection side, MaterialStack stack) {
|
||||
|
||||
int[] pos = this.findCore(world, x, y, z);
|
||||
if(pos == null) return stack;
|
||||
TileEntity tile = world.getTileEntity(pos[0], pos[1], pos[2]);
|
||||
if(!(tile instanceof TileEntityCrucible)) return stack;
|
||||
TileEntityCrucible crucible = (TileEntityCrucible) tile;
|
||||
|
||||
return crucible.pour(world, x, y, z, dX, dY, dZ, side, stack);
|
||||
}
|
||||
|
||||
@Override public boolean canAcceptPartialFlow(World world, int x, int y, int z, ForgeDirection side, MaterialStack stack) { return false; }
|
||||
@Override public MaterialStack flow(World world, int x, int y, int z, ForgeDirection side, MaterialStack stack) { return null; }
|
||||
}
|
||||
|
||||
@ -1,12 +1,17 @@
|
||||
package com.hbm.blocks.machine;
|
||||
|
||||
import com.hbm.blocks.BlockDummyable;
|
||||
import com.hbm.blocks.ModBlocks;
|
||||
import com.hbm.handler.MultiblockHandlerXR;
|
||||
import com.hbm.items.ModItems;
|
||||
import com.hbm.tileentity.TileEntityProxyCombo;
|
||||
import com.hbm.tileentity.machine.TileEntityWatz;
|
||||
|
||||
import net.minecraft.block.Block;
|
||||
import net.minecraft.block.material.Material;
|
||||
import net.minecraft.entity.item.EntityItem;
|
||||
import net.minecraft.entity.player.EntityPlayer;
|
||||
import net.minecraft.item.ItemStack;
|
||||
import net.minecraft.tileentity.TileEntity;
|
||||
import net.minecraft.world.World;
|
||||
import net.minecraftforge.common.util.ForgeDirection;
|
||||
@ -71,4 +76,21 @@ public class Watz extends BlockDummyable {
|
||||
this.makeExtra(world, x, y + 2, z - 2);
|
||||
this.makeExtra(world, x, y + 2, z);
|
||||
}
|
||||
|
||||
public static boolean drop = true;
|
||||
|
||||
@Override
|
||||
public void breakBlock(World world, int x, int y, int z, Block block, int i) {
|
||||
|
||||
if(i >= 12 && drop) {
|
||||
|
||||
world.spawnEntityInWorld(new EntityItem(world, x + 0.5, y + 0.5, z + 0.5, new ItemStack(ModBlocks.watz_end, 48)));
|
||||
for(int j = 0; j < 3; j++) world.spawnEntityInWorld(new EntityItem(world, x + 0.5, y + 0.5, z + 0.5, new ItemStack(ModItems.bolt_dura_steel, 64)));
|
||||
world.spawnEntityInWorld(new EntityItem(world, x + 0.5, y + 0.5, z + 0.5, new ItemStack(ModBlocks.watz_element, 36)));
|
||||
world.spawnEntityInWorld(new EntityItem(world, x + 0.5, y + 0.5, z + 0.5, new ItemStack(ModBlocks.watz_cooler, 26)));
|
||||
world.spawnEntityInWorld(new EntityItem(world, x + 0.5, y + 0.5, z + 0.5, new ItemStack(ModBlocks.struct_watz_core, 1)));
|
||||
}
|
||||
|
||||
super.breakBlock(world, x, y, z, block, i);
|
||||
}
|
||||
}
|
||||
|
||||
@ -3,12 +3,14 @@ package com.hbm.crafting;
|
||||
import static com.hbm.inventory.OreDictManager.*;
|
||||
import com.hbm.items.ModItems;
|
||||
import com.hbm.items.machine.ItemBreedingRod.*;
|
||||
import com.hbm.items.machine.ItemWatzPellet.EnumWatzType;
|
||||
import com.hbm.items.machine.ItemZirnoxRod.EnumZirnoxType;
|
||||
import com.hbm.main.CraftingManager;
|
||||
|
||||
import cpw.mods.fml.common.registry.GameRegistry;
|
||||
import net.minecraft.item.Item;
|
||||
import net.minecraft.item.ItemStack;
|
||||
import net.minecraftforge.oredict.OreDictionary;
|
||||
import net.minecraftforge.oredict.ShapedOreRecipe;
|
||||
|
||||
/**
|
||||
@ -123,6 +125,23 @@ public class RodRecipes {
|
||||
addRBMKRod(ModItems.billet_zfb_pu241, ModItems.rbmk_fuel_zfb_pu241);
|
||||
addRBMKRod(ModItems.billet_zfb_am_mix, ModItems.rbmk_fuel_zfb_am_mix);
|
||||
CraftingManager.addShapelessAuto(new ItemStack(ModItems.rbmk_fuel_drx, 1), new Object[] { ModItems.rbmk_fuel_balefire, ModItems.particle_digamma });
|
||||
|
||||
addPellet(SA326, EnumWatzType.SCHRABIDIUM);
|
||||
addPellet(ModItems.ingot_hes, EnumWatzType.HES);
|
||||
addPellet(ModItems.ingot_schrabidium_fuel, EnumWatzType.MES);
|
||||
addPellet(ModItems.ingot_les, EnumWatzType.LES);
|
||||
addPellet(NP237, EnumWatzType.HEN);
|
||||
addPellet(ModItems.ingot_uranium_fuel, EnumWatzType.MEU);
|
||||
addPellet(ModItems.ingot_pu_mix, EnumWatzType.MEP);
|
||||
addPellet(PB, EnumWatzType.LEAD);
|
||||
addPellet(B, EnumWatzType.BORON);
|
||||
addPellet(U238, EnumWatzType.DU);
|
||||
}
|
||||
|
||||
public static void registerInit() {
|
||||
/* GT6 */
|
||||
if(OreDictionary.doesOreNameExist("ingotNaquadah-Enriched")) addPellet(new DictFrame("Naquadah-Enriched"), EnumWatzType.NQD);
|
||||
if(OreDictionary.doesOreNameExist("ingotNaquadria")) addPellet(new DictFrame("Naquadria"), EnumWatzType.NQR);
|
||||
}
|
||||
|
||||
//Fill rods with one billet. For fuels only, therefore no unloading or ore dict
|
||||
@ -223,4 +242,12 @@ public class RodRecipes {
|
||||
public static void addZIRNOXRod(DictFrame mat, EnumZirnoxType num) {
|
||||
CraftingManager.addShapelessAuto(new ItemStack(ModItems.rod_zirnox, 1, num.ordinal()), new Object[] { ModItems.rod_zirnox_empty, mat.billet(), mat.billet() });
|
||||
}
|
||||
|
||||
/** Watz pellet crafting **/
|
||||
public static void addPellet(DictFrame mat, EnumWatzType num) {
|
||||
CraftingManager.addRecipeAuto(new ItemStack(ModItems.watz_pellet, 1, num.ordinal()), new Object[] { " I ", "IGI", " I ", 'I', mat.ingot(), 'G', GRAPHITE.ingot() });
|
||||
}
|
||||
public static void addPellet(Item item, EnumWatzType num) {
|
||||
CraftingManager.addRecipeAuto(new ItemStack(ModItems.watz_pellet, 1, num.ordinal()), new Object[] { " I ", "IGI", " I ", 'I', item, 'G', GRAPHITE.ingot() });
|
||||
}
|
||||
}
|
||||
|
||||
@ -5,6 +5,8 @@ import com.hbm.config.GeneralConfig;
|
||||
import com.hbm.inventory.fluid.Fluids;
|
||||
|
||||
import static com.hbm.inventory.OreDictManager.*;
|
||||
|
||||
import com.hbm.items.ItemGenericPart.EnumPartType;
|
||||
import com.hbm.items.ModItems;
|
||||
import com.hbm.items.machine.ItemBattery;
|
||||
import com.hbm.items.tool.ItemBlowtorch;
|
||||
@ -137,6 +139,7 @@ public class ToolRecipes {
|
||||
CraftingManager.addRecipeAuto(new ItemStack(ModItems.chemistry_set_boron), new Object[] { "GIG", "GCG", 'G', ModBlocks.glass_boron, 'I', STEEL.ingot(), 'C', CO.ingot() });
|
||||
CraftingManager.addRecipeAuto(ItemBlowtorch.getEmptyTool(ModItems.blowtorch), new Object[] { "CC ", " I ", "CCC", 'C', CU.plate528(), 'I', IRON.ingot() });
|
||||
CraftingManager.addRecipeAuto(ItemBlowtorch.getEmptyTool(ModItems.acetylene_torch), new Object[] { "SS ", " PS", " T ", 'S', STEEL.plate528(), 'P', ANY_PLASTIC.ingot(), 'T', ModItems.tank_steel });
|
||||
CraftingManager.addRecipeAuto(new ItemStack(ModItems.boltgun), new Object[] { "DPS", " RD", " D ", 'D', DURA.ingot(), 'P', DictFrame.fromOne(ModItems.part_generic, EnumPartType.PISTON_PNEUMATIC), 'R', RUBBER.ingot(), 'S', ModItems.hull_small_steel });
|
||||
|
||||
//Bobmazon
|
||||
CraftingManager.addShapelessAuto(new ItemStack(ModItems.bobmazon_materials), new Object[] { Items.book, Items.gold_nugget, Items.string });
|
||||
|
||||
@ -29,6 +29,7 @@ import net.minecraft.entity.EntityLivingBase;
|
||||
import net.minecraft.nbt.NBTTagCompound;
|
||||
import net.minecraft.potion.Potion;
|
||||
import net.minecraft.potion.PotionEffect;
|
||||
import net.minecraft.util.AxisAlignedBB;
|
||||
import net.minecraft.util.DamageSource;
|
||||
import net.minecraft.world.World;
|
||||
|
||||
@ -66,8 +67,9 @@ public class EntityMist extends Entity {
|
||||
public void onEntityUpdate() {
|
||||
|
||||
float height = this.dataWatcher.getWatchableObjectFloat(12);
|
||||
this.yOffset = -height / 2F;
|
||||
this.yOffset = 0;
|
||||
this.setSize(this.dataWatcher.getWatchableObjectFloat(11), height);
|
||||
this.setPosition(this.posX, this.posY, this.posZ);
|
||||
|
||||
if(!worldObj.isRemote) {
|
||||
|
||||
@ -90,11 +92,20 @@ public class EntityMist extends Entity {
|
||||
return;
|
||||
}
|
||||
|
||||
List<Entity> affected = worldObj.getEntitiesWithinAABBExcludingEntity(this, this.boundingBox);
|
||||
AxisAlignedBB aabb = this.boundingBox.copy();
|
||||
List<Entity> affected = worldObj.getEntitiesWithinAABBExcludingEntity(this, aabb.offset(-this.width / 2, 0, -this.width / 2));
|
||||
|
||||
for(Entity e : affected) {
|
||||
this.affect(e, intensity);
|
||||
}
|
||||
} else {
|
||||
|
||||
for(int i = 0; i < 2; i++) {
|
||||
double x = this.boundingBox.minX + rand.nextDouble() * (this.boundingBox.maxX - this.boundingBox.minX);
|
||||
double y = this.boundingBox.minY + rand.nextDouble() * (this.boundingBox.maxY - this.boundingBox.minY);
|
||||
double z = this.boundingBox.minZ + rand.nextDouble() * (this.boundingBox.maxZ - this.boundingBox.minZ);
|
||||
worldObj.spawnParticle("cloud", x, y, z, 0, 0, 0);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@ -32,6 +32,7 @@ public class EntityCreeperPhosgene extends EntityCreeper {
|
||||
if(!this.worldObj.isRemote) {
|
||||
this.setDead();
|
||||
|
||||
worldObj.createExplosion(this, posX, posY + this.height / 2, posZ, 2F, false);
|
||||
EntityMist mist = new EntityMist(worldObj);
|
||||
mist.setType(Fluids.PHOSGENE);
|
||||
mist.setPosition(posX, posY, posZ);
|
||||
|
||||
@ -80,10 +80,15 @@ public class EntityShrapnel extends EntityThrowable {
|
||||
}
|
||||
}
|
||||
|
||||
} else if(this.dataWatcher.getWatchableObjectByte(16) == 3) {
|
||||
|
||||
if(worldObj.getBlock(mop.blockX, mop.blockY + 1, mop.blockZ).isReplaceable(worldObj, mop.blockX, mop.blockY + 1, mop.blockZ)) {
|
||||
worldObj.setBlock(mop.blockX, mop.blockY + 1, mop.blockZ, ModBlocks.mud_block);
|
||||
}
|
||||
|
||||
} else {
|
||||
|
||||
for(int i = 0; i < 5; i++)
|
||||
worldObj.spawnParticle("lava", posX, posY, posZ, 0.0, 0.0, 0.0);
|
||||
for(int i = 0; i < 5; i++) worldObj.spawnParticle("lava", posX, posY, posZ, 0.0, 0.0, 0.0);
|
||||
}
|
||||
|
||||
worldObj.playSoundEffect(posX, posY, posZ, "random.fizz", 1.0F, 1.0F);
|
||||
@ -97,4 +102,8 @@ public class EntityShrapnel extends EntityThrowable {
|
||||
public void setVolcano(boolean b) {
|
||||
this.dataWatcher.updateObject(16, (byte) (b ? 2 : 0));
|
||||
}
|
||||
|
||||
public void setWatz(boolean b) {
|
||||
this.dataWatcher.updateObject(16, (byte) (b ? 3 : 0));
|
||||
}
|
||||
}
|
||||
|
||||
@ -162,8 +162,8 @@ public class Gun762mmFactory {
|
||||
final BulletConfiguration bullet = Gun556mmFactory.get556Config().clone();
|
||||
|
||||
bullet.ammo = new ComparableStack(ModItems.ammo_762.stackFromEnum(Ammo762NATO.STOCK));
|
||||
bullet.dmgMax *= 2;
|
||||
bullet.dmgMin *= 2;
|
||||
bullet.dmgMax = 20;
|
||||
bullet.dmgMin = 24;
|
||||
bullet.velocity *= 2.5;
|
||||
bullet.maxAge *= 2;
|
||||
bullet.spread /= 2;
|
||||
@ -177,8 +177,8 @@ public class Gun762mmFactory {
|
||||
final BulletConfiguration bullet = get762NATOConfig();
|
||||
|
||||
bullet.ammo = new ComparableStack(ModItems.ammo_762.stackFromEnum(Ammo762NATO.AP));
|
||||
bullet.dmgMax *= 1.5;
|
||||
bullet.dmgMin *= 1.5;
|
||||
bullet.dmgMax = 24;
|
||||
bullet.dmgMin = 28;
|
||||
|
||||
bullet.spentCasing = CASING762NATO.clone().register("762NATOAP");
|
||||
|
||||
@ -189,8 +189,8 @@ public class Gun762mmFactory {
|
||||
final BulletConfiguration bullet = get762NATOConfig();
|
||||
|
||||
bullet.ammo = new ComparableStack(ModItems.ammo_762.stackFromEnum(Ammo762NATO.DU));
|
||||
bullet.dmgMax *= 2;
|
||||
bullet.dmgMin *= 2;
|
||||
bullet.dmgMax = 36;
|
||||
bullet.dmgMin = 40;
|
||||
|
||||
bullet.spentCasing = CASING762NATO.clone().register("762NATODU");
|
||||
|
||||
|
||||
97
src/main/java/com/hbm/handler/nei/ConstructionHandler.java
Normal 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;
|
||||
}
|
||||
}
|
||||
@ -32,12 +32,19 @@ public abstract class NEIUniversalHandler extends TemplateRecipeHandler {
|
||||
public final String display;
|
||||
public final ItemStack[] machine;
|
||||
public final HashMap<Object, Object> recipes;
|
||||
public HashMap<Object, Object> machineOverrides;
|
||||
/// SETUP ///
|
||||
|
||||
|
||||
public NEIUniversalHandler(String display, ItemStack machine[], HashMap recipes) {
|
||||
this.display = display;
|
||||
this.machine = machine;
|
||||
this.recipes = recipes;
|
||||
this.machineOverrides = null;
|
||||
}
|
||||
|
||||
public NEIUniversalHandler(String display, HashMap recipes, HashMap machines) {
|
||||
this(display, (ItemStack[]) null, recipes);
|
||||
this.machineOverrides = machines;
|
||||
}
|
||||
|
||||
public NEIUniversalHandler(String display, ItemStack machine, HashMap recipes) { this(display, new ItemStack[]{machine}, recipes); }
|
||||
@ -50,22 +57,32 @@ public abstract class NEIUniversalHandler extends TemplateRecipeHandler {
|
||||
PositionedStack[] output;
|
||||
PositionedStack machinePositioned;
|
||||
|
||||
public RecipeSet(ItemStack[][] in, ItemStack[][] out) {
|
||||
public RecipeSet(ItemStack[][] in, ItemStack[][] out, Object originalInputInstance /* for custom machine lookup */) {
|
||||
|
||||
input = new PositionedStack[in.length];
|
||||
int[][] inPos = NEIUniversalHandler.getInputCoords(in.length);
|
||||
for(int i = 0; i < in.length; i++) {
|
||||
ItemStack[] sub = in[i];
|
||||
this.input[i] = new PositionedStack(sub, 48 + i * -18, 24);
|
||||
this.input[i] = new PositionedStack(sub, inPos[i][0], inPos[i][1]);
|
||||
}
|
||||
output = new PositionedStack[out.length];
|
||||
int[][] outPos = NEIUniversalHandler.getOutputCoords(out.length);
|
||||
for(int i = 0; i < out.length; i++) {
|
||||
ItemStack[] sub = out[i];
|
||||
|
||||
boolean twos = out.length > 3;
|
||||
this.output[i] = new PositionedStack(sub, 102 + i * 18 - ((twos && i > 1) ? 36 : 0), 24 + (twos ? (i < 2 ? -9 : 9) : 0));
|
||||
this.output[i] = new PositionedStack(sub, outPos[i][0], outPos[i][1]);
|
||||
}
|
||||
|
||||
this.machinePositioned = new PositionedStack(machine, 75, 31);
|
||||
ItemStack[] m = machine;
|
||||
|
||||
if(NEIUniversalHandler.this.machineOverrides != null) {
|
||||
Object key = NEIUniversalHandler.this.machineOverrides.get(originalInputInstance);
|
||||
|
||||
if(key != null) {
|
||||
this.machinePositioned = new PositionedStack(key, 75, 31);
|
||||
}
|
||||
}
|
||||
|
||||
if(machinePositioned == null) this.machinePositioned = new PositionedStack(m, 75, 31);
|
||||
}
|
||||
|
||||
@Override
|
||||
@ -104,16 +121,115 @@ public abstract class NEIUniversalHandler extends TemplateRecipeHandler {
|
||||
super.drawBackground(recipe);
|
||||
|
||||
RecipeSet rec = (RecipeSet) this.arecipes.get(recipe);
|
||||
|
||||
for(int i = 0; i < rec.input.length; i++)
|
||||
drawTexturedModalRect(47 + i * -18, 23, 5, 87, 18, 18);
|
||||
for(int i = 0; i < rec.output.length; i++) {
|
||||
boolean twos = rec.output.length > 3;
|
||||
drawTexturedModalRect(101 + i * 18 - ((twos && i > 1) ? 36 : 0), 23 + (twos ? (i < 2 ? -9 : 9) : 0), 5, 87, 18, 18);
|
||||
|
||||
int[][] inPos = NEIUniversalHandler.getInputCoords(rec.input.length);
|
||||
for(int[] pos : inPos) {
|
||||
drawTexturedModalRect(pos[0] - 1, pos[1] - 1, 5, 87, 18, 18);
|
||||
}
|
||||
int[][] outPos = NEIUniversalHandler.getOutputCoords(rec.output.length);
|
||||
for(int[] pos : outPos) {
|
||||
drawTexturedModalRect(pos[0] - 1, pos[1] - 1, 5, 87, 18, 18);
|
||||
}
|
||||
|
||||
drawTexturedModalRect(74, 14, 59, 87, 18, 38);
|
||||
}
|
||||
|
||||
public static int[][] getInputCoords(int count) {
|
||||
|
||||
switch(count) {
|
||||
case 1: return new int[][] {
|
||||
{48, 24}
|
||||
};
|
||||
case 2: return new int[][] {
|
||||
{48, 24},
|
||||
{30, 24}
|
||||
};
|
||||
case 3: return new int[][] {
|
||||
{48, 24},
|
||||
{30, 24},
|
||||
{12, 24}
|
||||
};
|
||||
case 4: return new int[][] {
|
||||
{48, 24 - 9},
|
||||
{30, 24 - 9},
|
||||
{48, 24 + 9},
|
||||
{30, 24 + 9}
|
||||
};
|
||||
case 5: return new int[][] {
|
||||
{48, 24 - 9},
|
||||
{30, 24 - 9},
|
||||
{12, 24},
|
||||
{48, 24 + 9},
|
||||
{30, 24 + 9},
|
||||
};
|
||||
case 6: return new int[][] {
|
||||
{48, 24 - 9},
|
||||
{30, 24 - 9},
|
||||
{12, 24 - 9},
|
||||
{48, 24 + 9},
|
||||
{30, 24 + 9},
|
||||
{12, 24 + 9}
|
||||
};
|
||||
case 7: return new int[][] {
|
||||
{48, 24 - 18},
|
||||
{30, 24 - 9},
|
||||
{12, 24 - 9},
|
||||
{48, 24},
|
||||
{30, 24 + 9},
|
||||
{12, 24 + 9},
|
||||
{48, 24 + 18}
|
||||
};
|
||||
case 8: return new int[][] {
|
||||
{48, 24 - 18},
|
||||
{30, 24 - 18},
|
||||
{12, 24 - 9},
|
||||
{48, 24},
|
||||
{30, 24},
|
||||
{12, 24 + 9},
|
||||
{48, 24 + 18},
|
||||
{30, 24 + 18}
|
||||
};
|
||||
case 9: return new int[][] {
|
||||
{48, 24 - 18},
|
||||
{30, 24 - 18},
|
||||
{12, 24 - 18},
|
||||
{48, 24},
|
||||
{30, 24},
|
||||
{12, 24},
|
||||
{48, 24 + 18},
|
||||
{30, 24 + 18},
|
||||
{12, 24 + 18}
|
||||
};
|
||||
}
|
||||
|
||||
return new int[count][2];
|
||||
}
|
||||
|
||||
public static int[][] getOutputCoords(int count) {
|
||||
|
||||
switch(count) {
|
||||
case 1: return new int[][] {
|
||||
{102, 24}
|
||||
};
|
||||
case 2: return new int[][] {
|
||||
{102, 24},
|
||||
{120, 24}
|
||||
};
|
||||
case 3: return new int[][] {
|
||||
{102, 24},
|
||||
{120, 24},
|
||||
{138, 24}
|
||||
};
|
||||
case 4: return new int[][] {
|
||||
{102, 24 - 9},
|
||||
{120, 24 - 9},
|
||||
{102, 24 + 9},
|
||||
{120, 24 + 9}
|
||||
};
|
||||
}
|
||||
|
||||
return new int[count][2];
|
||||
}
|
||||
|
||||
@Override
|
||||
public void loadCraftingRecipes(String outputId, Object... results) {
|
||||
@ -123,7 +239,7 @@ public abstract class NEIUniversalHandler extends TemplateRecipeHandler {
|
||||
for(Entry<Object, Object> recipe : recipes.entrySet()) {
|
||||
ItemStack[][] ins = InventoryUtil.extractObject(recipe.getKey());
|
||||
ItemStack[][] outs = InventoryUtil.extractObject(recipe.getValue());
|
||||
this.arecipes.add(new RecipeSet(ins, outs));
|
||||
this.arecipes.add(new RecipeSet(ins, outs, recipe.getKey()));
|
||||
}
|
||||
|
||||
} else {
|
||||
@ -142,7 +258,7 @@ public abstract class NEIUniversalHandler extends TemplateRecipeHandler {
|
||||
for(ItemStack[] array : outs) {
|
||||
for(ItemStack stack : array) {
|
||||
if(NEIServerUtils.areStacksSameTypeCrafting(stack, result)) {
|
||||
this.arecipes.add(new RecipeSet(ins, outs));
|
||||
this.arecipes.add(new RecipeSet(ins, outs, recipe.getKey()));
|
||||
break match;
|
||||
}
|
||||
}
|
||||
@ -170,7 +286,7 @@ public abstract class NEIUniversalHandler extends TemplateRecipeHandler {
|
||||
for(ItemStack[] array : ins) {
|
||||
for(ItemStack stack : array) {
|
||||
if(NEIServerUtils.areStacksSameTypeCrafting(stack, ingredient)) {
|
||||
this.arecipes.add(new RecipeSet(ins, outs));
|
||||
this.arecipes.add(new RecipeSet(ins, outs, recipe.getKey()));
|
||||
break match;
|
||||
}
|
||||
}
|
||||
|
||||
15
src/main/java/com/hbm/handler/nei/ToolingHandler.java
Normal 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";
|
||||
}
|
||||
}
|
||||
@ -9,10 +9,12 @@ import com.hbm.config.GeneralConfig;
|
||||
import com.hbm.hazard.modifier.*;
|
||||
import com.hbm.hazard.transformer.*;
|
||||
import com.hbm.hazard.type.*;
|
||||
import com.hbm.inventory.OreDictManager.DictFrame;
|
||||
import com.hbm.inventory.material.MaterialShapes;
|
||||
import com.hbm.items.ModItems;
|
||||
import com.hbm.items.machine.ItemBreedingRod.BreedingRodType;
|
||||
import com.hbm.items.machine.ItemRTGPelletDepleted.DepletedRTGMaterial;
|
||||
import com.hbm.items.machine.ItemWatzPellet.EnumWatzType;
|
||||
import com.hbm.items.machine.ItemZirnoxRod.EnumZirnoxType;
|
||||
import com.hbm.items.special.ItemHolotapeImage.EnumHoloImage;
|
||||
import com.hbm.util.Compat;
|
||||
@ -104,6 +106,7 @@ public class HazardRegistry {
|
||||
public static final float saf = 5.85F;
|
||||
public static final float sas3 = 5F;
|
||||
public static final float gh336 = 5.0F;
|
||||
public static final float mud = 1.0F;
|
||||
public static final float radsource_mult = 3.0F;
|
||||
public static final float pobe = po210 * radsource_mult;
|
||||
public static final float rabe = ra226 * radsource_mult;
|
||||
@ -429,6 +432,17 @@ public class HazardRegistry {
|
||||
registerRBMKPellet(rbmk_pellet_zfb_am_mix, pu241 * billet * 0.1F, wst * billet * 10F);
|
||||
registerRBMKPellet(rbmk_pellet_drx, bf * billet, bf * billet * 100F, true, 0F, 1F/24F);
|
||||
|
||||
HazardSystem.register(DictFrame.fromOne(ModItems.watz_pellet, EnumWatzType.SCHRABIDIUM), makeData(RADIATION, sa326 * ingot * 4));
|
||||
HazardSystem.register(DictFrame.fromOne(ModItems.watz_pellet, EnumWatzType.HES), makeData(RADIATION, saf * ingot * 4));
|
||||
HazardSystem.register(DictFrame.fromOne(ModItems.watz_pellet, EnumWatzType.MES), makeData(RADIATION, saf * ingot * 4));
|
||||
HazardSystem.register(DictFrame.fromOne(ModItems.watz_pellet, EnumWatzType.LES), makeData(RADIATION, saf * ingot * 4));
|
||||
HazardSystem.register(DictFrame.fromOne(ModItems.watz_pellet, EnumWatzType.HEN), makeData(RADIATION, np237 * ingot * 4));
|
||||
HazardSystem.register(DictFrame.fromOne(ModItems.watz_pellet, EnumWatzType.MEU), makeData(RADIATION, uf * ingot * 4));
|
||||
HazardSystem.register(DictFrame.fromOne(ModItems.watz_pellet, EnumWatzType.MEP), makeData(RADIATION, purg * ingot * 4));
|
||||
HazardSystem.register(DictFrame.fromOne(ModItems.watz_pellet, EnumWatzType.DU), makeData(RADIATION, u238 * ingot * 4));
|
||||
HazardSystem.register(DictFrame.fromOne(ModItems.watz_pellet, EnumWatzType.NQD), makeData(RADIATION, u235 * ingot * 4));
|
||||
HazardSystem.register(DictFrame.fromOne(ModItems.watz_pellet, EnumWatzType.NQR), makeData(RADIATION, pu239 * ingot * 4));
|
||||
|
||||
HazardSystem.register(powder_yellowcake, makeData(RADIATION, yc * powder));
|
||||
HazardSystem.register(block_yellowcake, makeData(RADIATION, yc * block * powder_mult));
|
||||
HazardSystem.register(ModItems.fallout, makeData(RADIATION, fo * powder));
|
||||
|
||||
@ -32,6 +32,7 @@ import com.hbm.util.Compat;
|
||||
|
||||
import cpw.mods.fml.common.eventhandler.SubscribeEvent;
|
||||
import net.minecraft.block.Block;
|
||||
import net.minecraft.init.Blocks;
|
||||
import net.minecraft.init.Items;
|
||||
import net.minecraft.item.Item;
|
||||
import net.minecraft.item.ItemStack;
|
||||
@ -138,6 +139,7 @@ public class OreDictManager {
|
||||
public static final DictFrame SBD = new DictFrame("Schrabidate");
|
||||
public static final DictFrame SRN = new DictFrame("Schraranium");
|
||||
public static final DictFrame GH336 = new DictFrame("Ghiorsium336", "Gh336");
|
||||
public static final DictFrame MUD = new DictFrame("WatzMud");
|
||||
/*
|
||||
* STABLE
|
||||
*/
|
||||
@ -297,7 +299,7 @@ public class OreDictManager {
|
||||
IRON.plate(plate_iron).dust(powder_iron).ore(ore_gneiss_iron);
|
||||
GOLD.plate(plate_gold).dust(powder_gold).ore(ore_gneiss_gold);
|
||||
LAPIS.dust(powder_lapis);
|
||||
NETHERQUARTZ.gem(Items.quartz).dust(powder_quartz);
|
||||
NETHERQUARTZ.gem(Items.quartz).dust(powder_quartz).ore(Blocks.quartz_ore);
|
||||
DIAMOND.dust(powder_diamond).ore(gravel_diamond);
|
||||
EMERALD.dust(powder_emerald);
|
||||
|
||||
@ -331,6 +333,7 @@ public class OreDictManager {
|
||||
SBD .rad(HazardRegistry.sb) .blinding(50F) .ingot(ingot_schrabidate) .dust(powder_schrabidate) .block(block_schrabidate);
|
||||
SRN .rad(HazardRegistry.sr) .blinding(50F) .ingot(ingot_schraranium) .block(block_schraranium);
|
||||
GH336 .rad(HazardRegistry.gh336) .nugget(nugget_gh336) .billet(billet_gh336) .ingot(ingot_gh336);
|
||||
MUD .rad(HazardRegistry.mud) .ingot(ingot_mud);
|
||||
|
||||
/*
|
||||
* STABLE
|
||||
|
||||
@ -455,17 +455,41 @@ public class RecipesCommon {
|
||||
this.block = block;
|
||||
this.meta = meta;
|
||||
}
|
||||
|
||||
@Override
|
||||
public int hashCode() {
|
||||
final int prime = 31;
|
||||
int result = 1;
|
||||
result = prime * result + Block.blockRegistry.getNameForObject(block).hashCode();
|
||||
result = prime * result + meta;
|
||||
return result;
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean equals(Object obj) {
|
||||
if(this == obj)
|
||||
return true;
|
||||
if(obj == null)
|
||||
return false;
|
||||
if(getClass() != obj.getClass())
|
||||
return false;
|
||||
MetaBlock other = (MetaBlock) obj;
|
||||
if(block == null) {
|
||||
if(other.block != null)
|
||||
return false;
|
||||
} else if(!block.equals(other.block))
|
||||
return false;
|
||||
if(meta != other.meta)
|
||||
return false;
|
||||
return true;
|
||||
}
|
||||
|
||||
public MetaBlock(Block block) {
|
||||
this(block, 0);
|
||||
}
|
||||
|
||||
public int getID() {
|
||||
final int prime = 31;
|
||||
int result = 1;
|
||||
result = prime * result + Block.getIdFromBlock(block);
|
||||
result = prime * result + meta;
|
||||
return result;
|
||||
@Deprecated public int getID() {
|
||||
return hashCode();
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@ -9,7 +9,6 @@ import api.hbm.energy.IBatteryItem;
|
||||
import net.minecraft.entity.player.EntityPlayer;
|
||||
import net.minecraft.entity.player.InventoryPlayer;
|
||||
import net.minecraft.inventory.Container;
|
||||
import net.minecraft.inventory.ICrafting;
|
||||
import net.minecraft.inventory.Slot;
|
||||
import net.minecraft.item.ItemStack;
|
||||
|
||||
@ -55,11 +54,6 @@ public class ContainerMachineCatalyticReformer extends Container {
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
public void addCraftingToCrafters(ICrafting crafting) {
|
||||
super.addCraftingToCrafters(crafting);
|
||||
}
|
||||
|
||||
@Override
|
||||
public ItemStack transferStackInSlot(EntityPlayer p_82846_1_, int par2) {
|
||||
ItemStack var3 = null;
|
||||
|
||||
@ -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);
|
||||
}
|
||||
}
|
||||
52
src/main/java/com/hbm/inventory/gui/GUIMachineCoker.java
Normal 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);
|
||||
}
|
||||
}
|
||||
@ -123,6 +123,7 @@ public class Mats {
|
||||
public static final NTMMaterial MAT_CMB = makeSmeltable(_AS + 9, CMB, 0x6F6FB4, 0x000011, 0x6F6FB4).setShapes(INGOT, DUST, PLATE, CASTPLATE, BLOCK);
|
||||
public static final NTMMaterial MAT_FLUX = makeAdditive(_AS + 10, df("Flux"), 0xF1E0BB, 0x6F6256, 0xDECCAD).setShapes(DUST);
|
||||
public static final NTMMaterial MAT_SLAG = makeSmeltable(_AS + 11, SLAG, 0x554940, 0x34281F, 0x6C6562).setShapes(BLOCK);
|
||||
public static final NTMMaterial MAT_MUD = makeSmeltable(_AS + 14, MUD, 0xBCB5A9, 0x481213, 0x96783B).setShapes(INGOT);
|
||||
|
||||
@Deprecated public static NTMMaterial makeSmeltable(int id, DictFrame dict, int color) { return makeSmeltable(id, dict, color, color, color); }
|
||||
@Deprecated public static NTMMaterial makeAdditive(int id, DictFrame dict, int color) { return makeAdditive(id, dict, color, color, color); }
|
||||
|
||||
@ -292,15 +292,13 @@ public class AssemblerRecipes {
|
||||
makeRecipe(new ComparableStack(ModBlocks.machine_turbinegas, 1), new AStack[] {new ComparableStack(ModItems.hull_big_steel, 4), new ComparableStack(ModItems.hull_small_steel, 6), new ComparableStack(ModItems.generator_steel, 2), new ComparableStack(ModItems.bolt_compound, 4), new ComparableStack(ModBlocks.steel_scaffold, 8), new ComparableStack(ModBlocks.deco_pipe_quad, 4), new ComparableStack(ModItems.turbine_tungsten, 3), new ComparableStack(ModItems.motor, 2), new ComparableStack(ModItems.ingot_rubber, 4), new ComparableStack(ModItems.circuit_red_copper, 3)}, 600);
|
||||
makeRecipe(new ComparableStack(ModBlocks.machine_teleporter, 1), new AStack[] {new OreDictStack(TI.ingot(), 8), new OreDictStack(ALLOY.plate528(), 12), new ComparableStack(ModItems.wire_gold, 32), new ComparableStack(ModItems.entanglement_kit, 1), new ComparableStack(ModBlocks.machine_battery, 1) },300);
|
||||
makeRecipe(new ComparableStack(ModBlocks.machine_schrabidium_transmutator, 1), new AStack[] {new OreDictStack(MAGTUNG.ingot(), 1), new OreDictStack(TI.ingot(), 24), new OreDictStack(ALLOY.plate(), 18), new OreDictStack(STEEL.plate(), 12), new ComparableStack(ModItems.plate_desh, 6), new OreDictStack(RUBBER.ingot(), 8), new ComparableStack(ModBlocks.machine_battery, 5), new ComparableStack(ModItems.circuit_gold, 5), },500);
|
||||
makeRecipe(new ComparableStack(ModBlocks.machine_combine_factory, 1), new AStack[] {new OreDictStack(STEEL.ingot(), 8), new OreDictStack(ANY_PLASTIC.ingot(), 6), new OreDictStack(TI.plate(), 4), new OreDictStack(CU.plate(), 6), new ComparableStack(ModItems.circuit_gold, 6), new ComparableStack(ModItems.coil_advanced_alloy, 8), new ComparableStack(ModItems.coil_tungsten, 4), new OreDictStack(MAGTUNG.ingot(), 12), },150);
|
||||
makeRecipe(new ComparableStack(ModBlocks.fusion_conductor, 1), new AStack[] {new OreDictStack(STEEL.ingot(), 2), new ComparableStack(ModItems.coil_advanced_alloy, 5), },150);
|
||||
makeRecipe(new ComparableStack(ModBlocks.fusion_center, 1), new AStack[] {new OreDictStack(ANY_HARDPLASTIC.ingot(), 4), new OreDictStack(STEEL.plate528(), 6), new ComparableStack(ModItems.wire_advanced_alloy, 24), },200);
|
||||
makeRecipe(new ComparableStack(ModBlocks.fusion_motor, 1), new AStack[] {new OreDictStack(TI.ingot(), 4), new OreDictStack(STEEL.ingot(), 2), new ComparableStack(ModItems.motor, 4), },250);
|
||||
makeRecipe(new ComparableStack(ModBlocks.fusion_heater, 1), new AStack[] {new OreDictStack(W.ingot(), 4), new OreDictStack(STEEL.plate528(), 2), new OreDictStack(OreDictManager.getReflector(), 2), new OreDictStack(CU.plate(), 4), new ComparableStack(ModItems.magnetron, 1), new ComparableStack(ModItems.wire_advanced_alloy, 4), },150);
|
||||
makeRecipe(new ComparableStack(ModBlocks.watz_element, 1), new AStack[] {new OreDictStack(W.ingot(), 4), new OreDictStack(ALLOY.plate(), 4), new ComparableStack(ModItems.rod_empty, 2), new ComparableStack(ModItems.wire_magnetized_tungsten, 2), new ComparableStack(ModItems.wire_advanced_alloy, 4), },200);
|
||||
makeRecipe(new ComparableStack(ModBlocks.watz_cooler, 1), new AStack[] {new OreDictStack(W.ingot(), 2), new OreDictStack(STEEL.ingot(), 2), new OreDictStack(KNO.dust(), 4), },300);
|
||||
makeRecipe(new ComparableStack(ModBlocks.watz_element, 3), new AStack[] {new OreDictStack(STEEL.plateCast(), 2), new OreDictStack(ZR.ingot(), 2), new OreDictStack(BIGMT.ingot(), 2), new OreDictStack(ANY_HARDPLASTIC.ingot(), 4)},200);
|
||||
makeRecipe(new ComparableStack(ModBlocks.watz_cooler, 3), new AStack[] {new OreDictStack(STEEL.plateCast(), 2), new OreDictStack(CU.plateCast(), 4), new OreDictStack(RUBBER.ingot(), 2), }, 200);
|
||||
makeRecipe(new ComparableStack(ModBlocks.watz_end, 3), new AStack[] {new OreDictStack(ANY_RESISTANTALLOY.plateTriple()), new OreDictStack(B.ingot(), 3), new OreDictStack(STEEL.plate(), 9), }, 100);
|
||||
makeRecipe(new ComparableStack(ModBlocks.watz_core, 1), new AStack[] {new ComparableStack(ModBlocks.block_meteor, 1), new ComparableStack(ModItems.circuit_gold, 5), new ComparableStack(ModItems.circuit_schrabidium, 2), new ComparableStack(ModItems.wire_magnetized_tungsten, 12), },350);
|
||||
makeRecipe(new ComparableStack(ModBlocks.fwatz_hatch, 1), new AStack[] {new OreDictStack(W.ingot(), 6), new OreDictStack(CMB.plate(), 4), },250);
|
||||
makeRecipe(new ComparableStack(ModBlocks.fwatz_conductor, 1), new AStack[] {new OreDictStack(CMB.plate(), 2), new ComparableStack(ModItems.coil_magnetized_tungsten, 5), },250);
|
||||
makeRecipe(new ComparableStack(ModBlocks.fwatz_computer, 1), new AStack[] {new ComparableStack(ModBlocks.block_meteor, 1), new ComparableStack(ModItems.wire_magnetized_tungsten, 16), new OreDictStack(DIAMOND.dust(), 6), new OreDictStack(MAGTUNG.dust(), 6), new OreDictStack(DESH.dust(), 4), },300);
|
||||
|
||||
@ -20,6 +20,7 @@ import com.hbm.inventory.RecipesCommon.ComparableStack;
|
||||
import com.hbm.inventory.RecipesCommon.OreDictStack;
|
||||
import com.hbm.inventory.recipes.loader.SerializableRecipe;
|
||||
import com.hbm.items.ModItems;
|
||||
import com.hbm.items.machine.ItemWatzPellet.EnumWatzType;
|
||||
import com.hbm.items.special.ItemBedrockOre.EnumBedrockOre;
|
||||
import com.hbm.items.special.ItemByproduct.EnumByproduct;
|
||||
import com.hbm.main.MainRegistry;
|
||||
@ -134,6 +135,73 @@ public class CentrifugeRecipes extends SerializableRecipe {
|
||||
new ItemStack(ModItems.nugget_pu238, 1),
|
||||
new ItemStack(ModItems.nugget_technetium, 1),
|
||||
new ItemStack(ModItems.nuclear_waste_tiny, 6) });
|
||||
|
||||
recipes.put(new ComparableStack(DictFrame.fromOne(ModItems.watz_pellet_depleted, EnumWatzType.SCHRABIDIUM)), new ItemStack[] {
|
||||
new ItemStack(ModItems.ingot_mud, 1),
|
||||
new ItemStack(ModItems.nugget_solinium, 15),
|
||||
new ItemStack(ModItems.nugget_euphemium, 3),
|
||||
new ItemStack(ModItems.nuclear_waste, 2) });
|
||||
recipes.put(new ComparableStack(DictFrame.fromOne(ModItems.watz_pellet_depleted, EnumWatzType.HES)), new ItemStack[] {
|
||||
new ItemStack(ModItems.ingot_mud, 1),
|
||||
new ItemStack(ModItems.nugget_solinium, 17),
|
||||
new ItemStack(ModItems.nugget_euphemium, 1),
|
||||
new ItemStack(ModItems.nuclear_waste, 2) });
|
||||
recipes.put(new ComparableStack(DictFrame.fromOne(ModItems.watz_pellet_depleted, EnumWatzType.MES)), new ItemStack[] {
|
||||
new ItemStack(ModItems.ingot_mud, 1),
|
||||
new ItemStack(ModItems.nugget_solinium, 12),
|
||||
new ItemStack(ModItems.nugget_tantalium, 6),
|
||||
new ItemStack(ModItems.nuclear_waste, 2) });
|
||||
recipes.put(new ComparableStack(DictFrame.fromOne(ModItems.watz_pellet_depleted, EnumWatzType.LES)), new ItemStack[] {
|
||||
new ItemStack(ModItems.ingot_mud, 1),
|
||||
new ItemStack(ModItems.nugget_solinium, 9),
|
||||
new ItemStack(ModItems.nugget_tantalium, 9),
|
||||
new ItemStack(ModItems.nuclear_waste, 2) });
|
||||
recipes.put(new ComparableStack(DictFrame.fromOne(ModItems.watz_pellet_depleted, EnumWatzType.HEN)), new ItemStack[] {
|
||||
new ItemStack(ModItems.ingot_mud, 1),
|
||||
new ItemStack(ModItems.nugget_pu239, 12),
|
||||
new ItemStack(ModItems.nugget_technetium, 6),
|
||||
new ItemStack(ModItems.nuclear_waste, 2) });
|
||||
recipes.put(new ComparableStack(DictFrame.fromOne(ModItems.watz_pellet_depleted, EnumWatzType.MEU)), new ItemStack[] {
|
||||
new ItemStack(ModItems.ingot_mud, 1),
|
||||
new ItemStack(ModItems.nugget_pu239, 12),
|
||||
new ItemStack(ModItems.nugget_bismuth, 6),
|
||||
new ItemStack(ModItems.nuclear_waste, 2) });
|
||||
recipes.put(new ComparableStack(DictFrame.fromOne(ModItems.watz_pellet_depleted, EnumWatzType.MEP)), new ItemStack[] {
|
||||
new ItemStack(ModItems.ingot_mud, 1),
|
||||
new ItemStack(ModItems.nugget_pu241, 12),
|
||||
new ItemStack(ModItems.nugget_bismuth, 6),
|
||||
new ItemStack(ModItems.nuclear_waste, 2) });
|
||||
recipes.put(new ComparableStack(DictFrame.fromOne(ModItems.watz_pellet_depleted, EnumWatzType.LEAD)), new ItemStack[] {
|
||||
new ItemStack(ModItems.ingot_mud, 1),
|
||||
new ItemStack(ModItems.nugget_lead, 6),
|
||||
new ItemStack(ModItems.nugget_bismuth, 12),
|
||||
new ItemStack(ModItems.nuclear_waste, 2) });
|
||||
recipes.put(new ComparableStack(DictFrame.fromOne(ModItems.watz_pellet_depleted, EnumWatzType.BORON)), new ItemStack[] {
|
||||
new ItemStack(ModItems.ingot_mud, 1),
|
||||
new ItemStack(ModItems.powder_coal_tiny, 12),
|
||||
new ItemStack(ModItems.nugget_co60, 6),
|
||||
new ItemStack(ModItems.nuclear_waste, 2) });
|
||||
recipes.put(new ComparableStack(DictFrame.fromOne(ModItems.watz_pellet_depleted, EnumWatzType.DU)), new ItemStack[] {
|
||||
new ItemStack(ModItems.ingot_mud, 1),
|
||||
new ItemStack(ModItems.nugget_polonium, 12),
|
||||
new ItemStack(ModItems.nugget_pu238, 6),
|
||||
new ItemStack(ModItems.nuclear_waste, 2) });
|
||||
|
||||
if(OreDictionary.doesOreNameExist("nuggetNaquadria")) {
|
||||
ItemStack nuggetNQR = OreDictionary.getOres("nuggetNaquadria").get(0);
|
||||
ItemStack copy = nuggetNQR.copy();
|
||||
copy.stackSize = 12;
|
||||
recipes.put(new ComparableStack(DictFrame.fromOne(ModItems.watz_pellet_depleted, EnumWatzType.NQD)), new ItemStack[] {
|
||||
new ItemStack(ModItems.ingot_mud, 1),
|
||||
copy,
|
||||
new ItemStack(ModItems.nugget_euphemium, 6),
|
||||
new ItemStack(ModItems.nuclear_waste, 2) });
|
||||
recipes.put(new ComparableStack(DictFrame.fromOne(ModItems.watz_pellet_depleted, EnumWatzType.NQR)), new ItemStack[] {
|
||||
new ItemStack(ModItems.ingot_mud, 1),
|
||||
new ItemStack(ModItems.nugget_co60, 12),
|
||||
new ItemStack(ModItems.nugget_euphemium, 6),
|
||||
new ItemStack(ModItems.nuclear_waste, 2) });
|
||||
}
|
||||
|
||||
recipes.put(new ComparableStack(ModItems.powder_cloud), new ItemStack[] {
|
||||
new ItemStack(ModItems.powder_copper, 1),
|
||||
|
||||
@ -96,6 +96,10 @@ public class CrucibleRecipes extends SerializableRecipe {
|
||||
.inputs(new MaterialStack(Mats.MAT_STEEL, n * 8), new MaterialStack(Mats.MAT_CADMIUM, n))
|
||||
.outputs(new MaterialStack(Mats.MAT_CDALLOY, i)));
|
||||
|
||||
recipes.add(new CrucibleRecipe(13, "crucible.cmb", 3, new ItemStack(ModItems.ingot_combine_steel))
|
||||
.inputs(new MaterialStack(Mats.MAT_MAGTUNG, n * 6), new MaterialStack(Mats.MAT_MUD, n * 3))
|
||||
.outputs(new MaterialStack(Mats.MAT_CMB, i)));
|
||||
|
||||
registerMoldsForNEI();
|
||||
}
|
||||
|
||||
|
||||
@ -66,6 +66,7 @@ public class SolidificationRecipes extends SerializableRecipe {
|
||||
registerRecipe(BIOGAS, 250, ModItems.biomass_compressed);
|
||||
registerRecipe(SALIENT, 1280, new ItemStack(ModItems.bio_wafer, 8)); //4 (food val) * 2 (sat mod) * 2 (constant) * 10 (quanta) * 8 (batch size)
|
||||
registerRecipe(ENDERJUICE, 100, Items.ender_pearl);
|
||||
registerRecipe(WATZ, 1000, ModItems.ingot_mud);
|
||||
|
||||
registerRecipe(OIL, SF_OIL, DictFrame.fromOne(ModItems.oil_tar, EnumTarType.CRUDE));
|
||||
registerRecipe(CRACKOIL, SF_CRACK, DictFrame.fromOne(ModItems.oil_tar, EnumTarType.CRACK));
|
||||
|
||||
@ -359,6 +359,7 @@ public class ModItems {
|
||||
public static Item ingot_cadmium;
|
||||
public static Item powder_cadmium;
|
||||
public static Item powder_bismuth;
|
||||
public static Item ingot_mud;
|
||||
|
||||
public static Item ingot_lanthanium;
|
||||
public static Item ingot_actinium;
|
||||
@ -2651,6 +2652,7 @@ public class ModItems {
|
||||
ingot_cadmium = new Item().setUnlocalizedName("ingot_cadmium").setCreativeTab(MainRegistry.partsTab).setTextureName(RefStrings.MODID + ":ingot_cadmium");
|
||||
powder_cadmium = new Item().setUnlocalizedName("powder_cadmium").setCreativeTab(MainRegistry.partsTab).setTextureName(RefStrings.MODID + ":powder_cadmium");
|
||||
powder_bismuth = new Item().setUnlocalizedName("powder_bismuth").setCreativeTab(MainRegistry.partsTab).setTextureName(RefStrings.MODID + ":powder_bismuth");
|
||||
ingot_mud = new Item().setUnlocalizedName("ingot_mud").setCreativeTab(MainRegistry.partsTab).setTextureName(RefStrings.MODID + ":ingot_mud");
|
||||
|
||||
ore_byproduct = new ItemByproduct().setUnlocalizedName("ore_byproduct").setCreativeTab(MainRegistry.partsTab).setTextureName(RefStrings.MODID + ":byproduct");
|
||||
|
||||
@ -5541,6 +5543,7 @@ public class ModItems {
|
||||
//GameRegistry.registerItem(ingot_pet, ingot_pet.getUnlocalizedName());
|
||||
GameRegistry.registerItem(ingot_pc, ingot_pc.getUnlocalizedName());
|
||||
GameRegistry.registerItem(ingot_pvc, ingot_pvc.getUnlocalizedName());
|
||||
GameRegistry.registerItem(ingot_mud, ingot_mud.getUnlocalizedName());
|
||||
GameRegistry.registerItem(ingot_schraranium, ingot_schraranium.getUnlocalizedName());
|
||||
GameRegistry.registerItem(ingot_schrabidium, ingot_schrabidium.getUnlocalizedName());
|
||||
GameRegistry.registerItem(ingot_schrabidate, ingot_schrabidate.getUnlocalizedName());
|
||||
|
||||
@ -2,12 +2,11 @@ package com.hbm.items.block;
|
||||
|
||||
import java.util.List;
|
||||
|
||||
import com.hbm.blocks.BlockEnumMulti;
|
||||
import com.hbm.blocks.BlockMulti;
|
||||
import com.hbm.blocks.IBlockMulti;
|
||||
import com.hbm.blocks.IPersistentInfoProvider;
|
||||
import com.hbm.blocks.ITooltipProvider;
|
||||
import com.hbm.tileentity.IPersistentNBT;
|
||||
import com.hbm.util.EnumUtil;
|
||||
|
||||
import cpw.mods.fml.relauncher.Side;
|
||||
import cpw.mods.fml.relauncher.SideOnly;
|
||||
@ -41,10 +40,8 @@ public class ItemBlockBase extends ItemBlock {
|
||||
@Override
|
||||
public String getUnlocalizedName(ItemStack stack) {
|
||||
|
||||
if(field_150939_a instanceof BlockEnumMulti && ((BlockEnumMulti)field_150939_a).multiName) {
|
||||
|
||||
Enum num = EnumUtil.grabEnumSafely(((BlockEnumMulti)field_150939_a).theEnum, stack.getItemDamage());
|
||||
return super.getUnlocalizedName() + "." + num.name().toLowerCase();
|
||||
if(field_150939_a instanceof BlockMulti) {
|
||||
return ((BlockMulti)field_150939_a).getUnlocalizedName(stack);
|
||||
} else {
|
||||
return super.getUnlocalizedName(stack);
|
||||
}
|
||||
|
||||
@ -36,18 +36,18 @@ public class ItemWatzPellet extends ItemEnumMulti {
|
||||
|
||||
public static enum EnumWatzType {
|
||||
|
||||
SCHRABIDIUM( 0x32FFFF, 0x005C5C, 2_000, 10D, new FunctionLogarithmic(10), null, null),
|
||||
HES( 0x66DCD6, 0x023933, 1_500, 10D, null, null, null),
|
||||
MES( 0xCBEADF, 0x28473C, 1_000, 10D, null, null, null),
|
||||
LES( 0xABB4A8, 0x0C1105, 500, 10D, null, null, null),
|
||||
HEN( 0xA6B2A6, 0x030F03, 0, 10D, null, null, null),
|
||||
MEU( 0xC1C7BD, 0x2B3227, 0, 10D, null, null, null),
|
||||
MEP( 0x9AA3A0, 0x111A17, 0, 10D, null, null, null),
|
||||
LEAD( 0xA6A6B2, 0x03030F, 0, 0, null, null, new FunctionSqrt(10)), //standard absorber, negative coefficient
|
||||
BORON( 0xBDC8D2, 0x29343E, 0, 0, null, null, new FunctionLinear(10)), //improved absorber, linear
|
||||
DU( 0xC1C7BD, 0x2B3227, 0, 0, null, null, new FunctionQuadratic(1D, 1D).withDiv(100)), //absorber with positive coefficient
|
||||
NQD( 0x4B4B4B, 0x121212, 0, 0, null, null, null),
|
||||
NQR( 0x2D2D2D, 0x0B0B0B, 0, 0, null, null, null);
|
||||
SCHRABIDIUM( 0x32FFFF, 0x005C5C, 2_000, 20D, 0.01D, new FunctionLinear(1.5D), new FunctionSqrtFalling(10D), null),
|
||||
HES( 0x66DCD6, 0x023933, 1_750, 20D, 0.005D, new FunctionLinear(1.25D), new FunctionSqrtFalling(15D), null),
|
||||
MES( 0xCBEADF, 0x28473C, 1_500, 15D, 0.0025D, new FunctionLinear(1.15D), new FunctionSqrtFalling(15D), null),
|
||||
LES( 0xABB4A8, 0x0C1105, 1_250, 15D, 0.00125D, new FunctionLinear(1D), new FunctionSqrtFalling(20D), null),
|
||||
HEN( 0xA6B2A6, 0x030F03, 0, 10D, 0.0005D, new FunctionSqrt(100), new FunctionSqrtFalling(10D), null),
|
||||
MEU( 0xC1C7BD, 0x2B3227, 0, 10D, 0.0005D, new FunctionSqrt(75), new FunctionSqrtFalling(10D), null),
|
||||
MEP( 0x9AA3A0, 0x111A17, 0, 15D, 0.0005D, new FunctionSqrt(150), new FunctionSqrtFalling(10D), null),
|
||||
LEAD( 0xA6A6B2, 0x03030F, 0, 0, 0.0025D, null, null, new FunctionSqrt(10)), //standard absorber, negative coefficient
|
||||
BORON( 0xBDC8D2, 0x29343E, 0, 0, 0.0025D, null, null, new FunctionLinear(10)), //improved absorber, linear
|
||||
DU( 0xC1C7BD, 0x2B3227, 0, 0, 0.0025D, null, null, new FunctionQuadratic(1D, 1D).withDiv(100)), //absorber with positive coefficient
|
||||
NQD( 0x4B4B4B, 0x121212, 2_000, 20, 0.01D, new FunctionLinear(2D), new FunctionSqrt(1D/25D).withOff(25D * 25D), null),
|
||||
NQR( 0x2D2D2D, 0x0B0B0B, 2_500, 30, 0.01D, new FunctionLinear(1.5D), new FunctionSqrt(1D/25D).withOff(25D * 25D), null);
|
||||
|
||||
public double yield = 1_000_000_000;
|
||||
public int colorLight;
|
||||
@ -56,16 +56,17 @@ public class ItemWatzPellet extends ItemEnumMulti {
|
||||
public double passive; //base flux emission
|
||||
public double heatEmission; //reactivity(1) to heat (heat per outgoing flux)
|
||||
public Function burnFunc; //flux to reactivity(0) (classic reactivity)
|
||||
public Function heatMult; //reactivity(0) to reactivity(1) based on heat (temperature coefficient)
|
||||
public Function heatDiv; //reactivity(0) to reactivity(1) based on heat (temperature coefficient)
|
||||
public Function absorbFunc; //flux to heat (flux absobtion for non-active component)
|
||||
|
||||
private EnumWatzType(int colorLight, int colorDark, double passive, double heatEmission, Function burnFunction, Function heatMultiplier, Function absorbFunction) {
|
||||
private EnumWatzType(int colorLight, int colorDark, double passive, double heatEmission, double mudContent, Function burnFunction, Function heatDivisor, Function absorbFunction) {
|
||||
this.colorLight = colorLight;
|
||||
this.colorDark = colorDark;
|
||||
this.passive = passive;
|
||||
this.heatEmission = heatEmission;
|
||||
this.mudContent = mudContent;
|
||||
this.burnFunc = burnFunction;
|
||||
this.heatMult = heatMultiplier;
|
||||
this.heatDiv = heatDivisor;
|
||||
this.absorbFunc = absorbFunction;
|
||||
}
|
||||
}
|
||||
@ -122,6 +123,9 @@ public class ItemWatzPellet extends ItemEnumMulti {
|
||||
|
||||
@Override
|
||||
public void addInformation(ItemStack stack, EntityPlayer player, List list, boolean bool) {
|
||||
|
||||
if(this != ModItems.watz_pellet) return;
|
||||
|
||||
EnumWatzType num = EnumUtil.grabEnumSafely(EnumWatzType.class, stack.getItemDamage());
|
||||
|
||||
list.add(EnumChatFormatting.GREEN + "Depletion: " + String.format(Locale.US, "%.1f", getDurabilityForDisplay(stack) * 100D) + "%");
|
||||
@ -129,19 +133,22 @@ public class ItemWatzPellet extends ItemEnumMulti {
|
||||
String color = EnumChatFormatting.GOLD + "";
|
||||
String reset = EnumChatFormatting.RESET + "";
|
||||
|
||||
if(num.passive > 0) list.add(color + "Base fission rate: " + reset + num.passive);
|
||||
if(num.passive > 0){
|
||||
list.add(color + "Base fission rate: " + reset + num.passive);
|
||||
list.add(EnumChatFormatting.RED + "Self-igniting!");
|
||||
}
|
||||
if(num.heatEmission > 0) list.add(color + "Heat per flux: " + reset + num.heatEmission + " TU");
|
||||
if(num.burnFunc != null) {
|
||||
list.add(color + "Reacton function: " + reset + num.burnFunc.getLabelForFuel());
|
||||
list.add(color + "Fuel type: " + reset + num.burnFunc.getDangerFromFuel());
|
||||
}
|
||||
if(num.heatMult != null) list.add(color + "Thermal coefficient: " + reset + num.heatMult.getLabelForFuel());
|
||||
if(num.heatDiv != null) list.add(color + "Thermal multiplier: " + reset + num.heatDiv.getLabelForFuel() + " TU⁻¹");
|
||||
if(num.absorbFunc != null) list.add(color + "Flux capture: " + reset + num.absorbFunc.getLabelForFuel());
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean showDurabilityBar(ItemStack stack) {
|
||||
return getDurabilityForDisplay(stack) > 0D;
|
||||
return this == ModItems.watz_pellet && getDurabilityForDisplay(stack) > 0D;
|
||||
}
|
||||
|
||||
@Override
|
||||
@ -180,6 +187,7 @@ public class ItemWatzPellet extends ItemEnumMulti {
|
||||
|
||||
@Override
|
||||
public void onCreated(ItemStack stack, World world, EntityPlayer player) {
|
||||
if(this != ModItems.watz_pellet) return;
|
||||
setNBTDefaults(stack); //minimize the window where NBT screwups can happen
|
||||
}
|
||||
}
|
||||
|
||||
@ -31,6 +31,8 @@ public class ItemBlowtorch extends Item implements IFillableItem {
|
||||
this.setMaxStackSize(1);
|
||||
this.setFull3D();
|
||||
this.setCreativeTab(MainRegistry.controlTab);
|
||||
|
||||
ToolType.TORCH.register(new ItemStack(this));
|
||||
}
|
||||
|
||||
@Override
|
||||
|
||||
@ -1,12 +1,16 @@
|
||||
package com.hbm.items.tool;
|
||||
|
||||
import com.hbm.blocks.ModBlocks;
|
||||
import com.hbm.items.IAnimatedItem;
|
||||
import com.hbm.items.ModItems;
|
||||
import com.hbm.lib.RefStrings;
|
||||
import com.hbm.main.MainRegistry;
|
||||
import com.hbm.packet.AuxParticlePacketNT;
|
||||
import com.hbm.packet.PacketDispatcher;
|
||||
import com.hbm.render.anim.BusAnimation;
|
||||
import com.hbm.render.anim.BusAnimationKeyframe;
|
||||
import com.hbm.render.anim.BusAnimationSequence;
|
||||
import com.hbm.util.EntityDamageUtil;
|
||||
|
||||
import api.hbm.block.IToolable;
|
||||
import api.hbm.block.IToolable.ToolType;
|
||||
@ -14,11 +18,13 @@ import cpw.mods.fml.common.network.NetworkRegistry.TargetPoint;
|
||||
import cpw.mods.fml.relauncher.Side;
|
||||
import cpw.mods.fml.relauncher.SideOnly;
|
||||
import net.minecraft.block.Block;
|
||||
import net.minecraft.entity.Entity;
|
||||
import net.minecraft.entity.player.EntityPlayer;
|
||||
import net.minecraft.entity.player.EntityPlayerMP;
|
||||
import net.minecraft.item.Item;
|
||||
import net.minecraft.item.ItemStack;
|
||||
import net.minecraft.nbt.NBTTagCompound;
|
||||
import net.minecraft.util.DamageSource;
|
||||
import net.minecraft.world.World;
|
||||
import net.minecraftforge.common.util.ForgeDirection;
|
||||
|
||||
@ -26,6 +32,9 @@ public class ItemBoltgun extends Item implements IAnimatedItem {
|
||||
|
||||
public ItemBoltgun() {
|
||||
this.setMaxStackSize(1);
|
||||
this.setCreativeTab(MainRegistry.controlTab);
|
||||
|
||||
ToolType.BOLT.register(new ItemStack(this));
|
||||
}
|
||||
|
||||
@Override
|
||||
@ -34,6 +43,48 @@ public class ItemBoltgun extends Item implements IAnimatedItem {
|
||||
this.setTextureName(RefStrings.MODID + ":"+ unlocalizedName);
|
||||
return this;
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean onLeftClickEntity(ItemStack stack, EntityPlayer player, Entity entity) {
|
||||
|
||||
World world = player.worldObj;
|
||||
if(!entity.isEntityAlive()) return false;
|
||||
|
||||
Item[] bolts = new Item[] { ModItems.bolt_dura_steel, ModItems.bolt_tungsten, Item.getItemFromBlock(ModBlocks.steel_beam) };
|
||||
|
||||
for(Item item : bolts) {
|
||||
for(int i = 0; i < player.inventory.getSizeInventory(); i++) {
|
||||
ItemStack slot = player.inventory.getStackInSlot(i);
|
||||
|
||||
if(slot != null) {
|
||||
if(slot.getItem() == item) {
|
||||
if(!world.isRemote) {
|
||||
world.playSoundAtEntity(entity, "hbm:item.boltgun", 1.0F, 1.0F);
|
||||
player.inventory.decrStackSize(i, 1);
|
||||
player.inventoryContainer.detectAndSendChanges();
|
||||
EntityDamageUtil.attackEntityFromIgnoreIFrame(entity, DamageSource.causePlayerDamage(player).setDamageBypassesArmor(), 10F);
|
||||
|
||||
NBTTagCompound data = new NBTTagCompound();
|
||||
data.setString("type", "vanillaExt");
|
||||
data.setString("mode", "largeexplode");
|
||||
data.setFloat("size", 1F);
|
||||
data.setByte("count", (byte)1);
|
||||
PacketDispatcher.wrapper.sendToAllAround(new AuxParticlePacketNT(data, entity.posX, entity.posY + entity.height / 2 - entity.yOffset, entity.posZ), new TargetPoint(world.provider.dimensionId, entity.posX, entity.posY, entity.posZ, 50));
|
||||
} else {
|
||||
// doing this on the client outright removes the packet delay and makes the animation silky-smooth
|
||||
NBTTagCompound d0 = new NBTTagCompound();
|
||||
d0.setString("type", "anim");
|
||||
d0.setString("mode", "generic");
|
||||
MainRegistry.proxy.effectNT(d0);
|
||||
}
|
||||
return true;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
return false;
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean onItemUse(ItemStack stack, EntityPlayer player, World world, int x, int y, int z, int side, float fX, float fY, float fZ) {
|
||||
@ -43,7 +94,8 @@ public class ItemBoltgun extends Item implements IAnimatedItem {
|
||||
if(b instanceof IToolable && ((IToolable)b).onScrew(world, player, x, y, z, side, fX, fY, fZ, ToolType.BOLT)) {
|
||||
|
||||
if(!world.isRemote) {
|
||||
|
||||
|
||||
world.playSoundAtEntity(player, "hbm:item.boltgun", 1.0F, 1.0F);
|
||||
player.inventoryContainer.detectAndSendChanges();
|
||||
ForgeDirection dir = ForgeDirection.getOrientation(side);
|
||||
double off = 0.25;
|
||||
|
||||
@ -18,6 +18,8 @@ public class ItemTooling extends ItemCraftingDegradation {
|
||||
this.type = type;
|
||||
this.setFull3D();
|
||||
this.setCreativeTab(MainRegistry.controlTab);
|
||||
|
||||
type.register(new ItemStack(this));
|
||||
}
|
||||
|
||||
@Override
|
||||
|
||||
@ -690,7 +690,9 @@ public class ItemGunBase extends Item implements IHoldableWeapon, IItemHUD, IEqu
|
||||
GunConfiguration gcfg = gun.mainConfig;
|
||||
|
||||
if(type == ElementType.HOTBAR) {
|
||||
BulletConfiguration bcfg = BulletConfigSyncingUtil.pullConfig(gun.mainConfig.config.get(ItemGunBase.getMagType(stack)));
|
||||
int mag = ItemGunBase.getMagType(stack);
|
||||
if(gun.mainConfig.config.size() == 0) return;
|
||||
BulletConfiguration bcfg = BulletConfigSyncingUtil.pullConfig(gun.mainConfig.config.get(mag < gun.mainConfig.config.size() ? mag : 0));
|
||||
|
||||
if(bcfg == null) {
|
||||
return;
|
||||
|
||||
@ -3,7 +3,7 @@ package com.hbm.lib;
|
||||
public class RefStrings {
|
||||
public static final String MODID = "hbm";
|
||||
public static final String NAME = "Hbm's Nuclear Tech Mod";
|
||||
public static final String VERSION = "1.0.27 BETA (4562)";
|
||||
public static final String VERSION = "1.0.27 BETA (4578)";
|
||||
//HBM's Beta Naming Convention:
|
||||
//V T (X)
|
||||
//V -> next release version
|
||||
|
||||
@ -366,7 +366,8 @@ public class CraftingManager {
|
||||
addRecipeAuto(new ItemStack(ModItems.mechanism_launcher_1, 1), new Object[] { "TTT", "SSS", "BBI", 'T', TI.plate(), 'S', STEEL.ingot(), 'B', ModItems.bolt_tungsten, 'I', MINGRADE.ingot() });
|
||||
addRecipeAuto(new ItemStack(ModItems.mechanism_launcher_2, 1), new Object[] { "TTT", "SSS", "BBI", 'T', ALLOY.plate(), 'S', ANY_PLASTIC.ingot(), 'B', ModItems.bolt_dura_steel, 'I', DESH.ingot() });
|
||||
addRecipeAuto(new ItemStack(ModItems.mechanism_special, 1), new Object[] { "PCI", "ISS", "PCI", 'P', ModItems.plate_desh, 'C', ModItems.coil_advanced_alloy, 'I', STAR.ingot(), 'S', ModItems.circuit_targeting_tier3 });
|
||||
|
||||
|
||||
addRecipeAuto(new ItemStack(ModBlocks.watz_pump, 1), new Object[] { "MPM", "PCP", "PSP", 'M', ModItems.motor_desh, 'P', ANY_RESISTANTALLOY.plateTriple(), 'C', KEY_CIRCUIT_BISMUTH, 'S', ModItems.pipes_steel });
|
||||
addRecipeAuto(new ItemStack(Item.getItemFromBlock(ModBlocks.fwatz_cooler), 1), new Object[] { "IPI", "IPI", "IPI", 'I', TI.ingot(), 'P', TI.plate() });
|
||||
addRecipeAuto(new ItemStack(Item.getItemFromBlock(ModBlocks.fwatz_tank), 1), new Object[] { "CGC", "GGG", "CGC", 'C', CMB.plate(), 'G', KEY_ANYPANE });
|
||||
addRecipeAuto(new ItemStack(Item.getItemFromBlock(ModBlocks.fwatz_scaffold), 1), new Object[] { "IPI", "P P", "IPI", 'I', W.ingot(), 'P', getReflector() });
|
||||
@ -765,6 +766,7 @@ public class CraftingManager {
|
||||
addRecipeAuto(new ItemStack(ModBlocks.barrel_antimatter, 1), new Object[] { "IPI", "IBI", "IPI", 'I', BIGMT.plate(), 'P', ModItems.coil_advanced_torus, 'B', ModItems.battery_sc_technetium });
|
||||
addRecipeAuto(new ItemStack(ModBlocks.tesla, 1), new Object[] { "CCC", "PIP", "WTW", 'C', ModItems.coil_copper, 'I', IRON.ingot(), 'P', ANY_PLASTIC.ingot(), 'T', ModBlocks.machine_transformer, 'W', KEY_PLANKS });
|
||||
addRecipeAuto(new ItemStack(ModBlocks.struct_plasma_core, 1), new Object[] { "CBC", "BHB", "CBC", 'C', ModItems.circuit_gold, 'B', ModBlocks.machine_lithium_battery, 'H', ModBlocks.fusion_heater });
|
||||
addRecipeAuto(new ItemStack(ModBlocks.struct_watz_core, 1), new Object[] { "CBC", "BHB", "CBC", 'C', ModItems.circuit_schrabidium, 'B', ANY_RESISTANTALLOY.plateTriple(), 'H', ModBlocks.watz_cooler });
|
||||
addShapelessAuto(new ItemStack(ModBlocks.fusion_heater), new Object[] { ModBlocks.fusion_hatch });
|
||||
addShapelessAuto(new ItemStack(ModItems.energy_core), new Object[] { ModItems.fusion_core, ModItems.fuse });
|
||||
addRecipeAuto(new ItemStack(ModItems.catalytic_converter, 1), new Object[] { "PCP", "PBP", "PCP", 'P', ANY_HARDPLASTIC.ingot(), 'C', CO.dust(), 'B', BI.ingot() });
|
||||
|
||||
@ -46,8 +46,10 @@ import com.google.common.collect.ImmutableList;
|
||||
import com.hbm.blocks.BlockEnums.EnumStoneType;
|
||||
import com.hbm.blocks.ModBlocks;
|
||||
import com.hbm.blocks.generic.BlockMotherOfAllOres;
|
||||
import com.hbm.blocks.generic.BlockToolConversion;
|
||||
import com.hbm.commands.CommandReloadRecipes;
|
||||
import com.hbm.config.*;
|
||||
import com.hbm.crafting.RodRecipes;
|
||||
import com.hbm.creativetabs.*;
|
||||
import com.hbm.entity.EntityMappings;
|
||||
import com.hbm.entity.grenade.*;
|
||||
@ -636,6 +638,8 @@ public class MainRegistry {
|
||||
|
||||
@EventHandler
|
||||
public static void load(FMLInitializationEvent event) {
|
||||
|
||||
RodRecipes.registerInit();
|
||||
|
||||
achSacrifice = new Achievement("achievement.sacrifice", "sacrifice", -3, 1, ModItems.burnt_bark, null).initIndependentStat().setSpecial().registerStat();
|
||||
achImpossible = new Achievement("achievement.impossible", "impossible", 18, 10, ModItems.nothing, null).initIndependentStat().setSpecial().registerStat();
|
||||
@ -829,6 +833,7 @@ public class MainRegistry {
|
||||
HazmatRegistry.registerHazmats();
|
||||
FluidContainerRegistry.register();
|
||||
TileEntityMachineReactorLarge.registerAll();
|
||||
BlockToolConversion.registerRecipes();
|
||||
|
||||
proxy.registerMissileItems();
|
||||
|
||||
|
||||
@ -53,6 +53,8 @@ public class NEIConfig implements IConfigureNEI {
|
||||
registerHandler(new CrucibleSmeltingHandler());
|
||||
registerHandler(new CrucibleAlloyingHandler());
|
||||
registerHandler(new CrucibleCastingHandler());
|
||||
registerHandler(new ToolingHandler());
|
||||
registerHandler(new ConstructionHandler());
|
||||
|
||||
//universal boyes
|
||||
registerHandler(new ZirnoxRecipeHandler());
|
||||
|
||||
@ -29,7 +29,7 @@ public class RenderShrapnel extends Render {
|
||||
bindTexture(new ResourceLocation(RefStrings.MODID + ":textures/entity/shrapnel.png"));
|
||||
|
||||
if(rocket instanceof EntityShrapnel) {
|
||||
if(rocket.getDataWatcher().getWatchableObjectByte(16) == 2) { //scale up lava blobs
|
||||
if(rocket.getDataWatcher().getWatchableObjectByte(16) >= 2) { //scale up lava blobs
|
||||
GL11.glScaled(3, 3, 3);
|
||||
}
|
||||
}
|
||||
|
||||
@ -6,6 +6,7 @@ import com.hbm.main.ResourceManager;
|
||||
import com.hbm.render.anim.HbmAnimations;
|
||||
|
||||
import net.minecraft.client.Minecraft;
|
||||
import net.minecraft.entity.player.EntityPlayer;
|
||||
import net.minecraft.item.ItemStack;
|
||||
import net.minecraftforge.client.IItemRenderer;
|
||||
|
||||
@ -33,6 +34,8 @@ public class ItemRenderBoltgun implements IItemRenderer {
|
||||
|
||||
GL11.glPushMatrix();
|
||||
|
||||
EntityPlayer player = Minecraft.getMinecraft().thePlayer;
|
||||
|
||||
GL11.glEnable(GL11.GL_CULL_FACE);
|
||||
GL11.glShadeModel(GL11.GL_SMOOTH);
|
||||
Minecraft.getMinecraft().renderEngine.bindTexture(ResourceManager.boltgun_tex);
|
||||
@ -50,6 +53,7 @@ public class ItemRenderBoltgun implements IItemRenderer {
|
||||
GL11.glPushMatrix();
|
||||
double[] anim = HbmAnimations.getRelevantTransformation("RECOIL");
|
||||
GL11.glTranslated(0, 0, -anim[0]);
|
||||
if(anim[0] != 0) player.isSwingInProgress = false;
|
||||
ResourceManager.boltgun.renderPart("Barrel");
|
||||
GL11.glPopMatrix();
|
||||
|
||||
|
||||
@ -44,15 +44,15 @@ public class RenderWatzMultiblock extends TileEntitySpecialRenderer {
|
||||
SmallBlockPronter.drawSmolBlockAt(ModBlocks.watz_cooler, 0, 1F, i, -2F);
|
||||
SmallBlockPronter.drawSmolBlockAt(ModBlocks.watz_cooler, 0, -1F, i, -2F);
|
||||
for(int j = -1; j < 2; j++) {
|
||||
SmallBlockPronter.drawSmolBlockAt(ModBlocks.watz_end, 0, 3F, i, j);
|
||||
SmallBlockPronter.drawSmolBlockAt(ModBlocks.watz_end, 0, j, i, 3F);
|
||||
SmallBlockPronter.drawSmolBlockAt(ModBlocks.watz_end, 0, -3F, i, j);
|
||||
SmallBlockPronter.drawSmolBlockAt(ModBlocks.watz_end, 0, j, i, -3F);
|
||||
SmallBlockPronter.drawSmolBlockAt(ModBlocks.watz_end, 1, 3F, i, j);
|
||||
SmallBlockPronter.drawSmolBlockAt(ModBlocks.watz_end, 1, j, i, 3F);
|
||||
SmallBlockPronter.drawSmolBlockAt(ModBlocks.watz_end, 1, -3F, i, j);
|
||||
SmallBlockPronter.drawSmolBlockAt(ModBlocks.watz_end, 1, j, i, -3F);
|
||||
}
|
||||
SmallBlockPronter.drawSmolBlockAt(ModBlocks.watz_end, 0, 2F, i, 2F);
|
||||
SmallBlockPronter.drawSmolBlockAt(ModBlocks.watz_end, 0, 2F, i, -2F);
|
||||
SmallBlockPronter.drawSmolBlockAt(ModBlocks.watz_end, 0, -2F, i, 2F);
|
||||
SmallBlockPronter.drawSmolBlockAt(ModBlocks.watz_end, 0, -2F, i, -2F);
|
||||
SmallBlockPronter.drawSmolBlockAt(ModBlocks.watz_end, 1, 2F, i, 2F);
|
||||
SmallBlockPronter.drawSmolBlockAt(ModBlocks.watz_end, 1, 2F, i, -2F);
|
||||
SmallBlockPronter.drawSmolBlockAt(ModBlocks.watz_end, 1, -2F, i, 2F);
|
||||
SmallBlockPronter.drawSmolBlockAt(ModBlocks.watz_end, 1, -2F, i, -2F);
|
||||
}
|
||||
|
||||
SmallBlockPronter.draw();
|
||||
|
||||
@ -23,6 +23,7 @@ import com.hbm.tileentity.IGUIProvider;
|
||||
import com.hbm.tileentity.TileEntityMachineBase;
|
||||
import com.hbm.util.CrucibleUtil;
|
||||
|
||||
import api.hbm.block.ICrucibleAcceptor;
|
||||
import api.hbm.tile.IHeatSource;
|
||||
import cpw.mods.fml.common.network.NetworkRegistry.TargetPoint;
|
||||
import cpw.mods.fml.relauncher.Side;
|
||||
@ -41,7 +42,7 @@ import net.minecraft.util.Vec3;
|
||||
import net.minecraft.world.World;
|
||||
import net.minecraftforge.common.util.ForgeDirection;
|
||||
|
||||
public class TileEntityCrucible extends TileEntityMachineBase implements IGUIProvider, IConfigurableMachine {
|
||||
public class TileEntityCrucible extends TileEntityMachineBase implements IGUIProvider, ICrucibleAcceptor, IConfigurableMachine {
|
||||
|
||||
public int heat;
|
||||
public int progress;
|
||||
@ -529,4 +530,57 @@ public class TileEntityCrucible extends TileEntityMachineBase implements IGUIPro
|
||||
public double getMaxRenderDistanceSquared() {
|
||||
return 65536.0D;
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean canAcceptPartialPour(World world, int x, int y, int z, double dX, double dY, double dZ, ForgeDirection side, MaterialStack stack) {
|
||||
|
||||
CrucibleRecipe recipe = getLoadedRecipe();
|
||||
|
||||
if(recipe == null) {
|
||||
return getQuantaFromType(this.wasteStack, null) < this.wasteZCapacity;
|
||||
}
|
||||
|
||||
int recipeContent = recipe.getInputAmount();
|
||||
int recipeInputRequired = getQuantaFromType(recipe.input, stack.material);
|
||||
int matMaximum = recipeInputRequired * this.recipeZCapacity / recipeContent;
|
||||
int amountStored = getQuantaFromType(recipeStack, stack.material);
|
||||
|
||||
return amountStored < matMaximum;
|
||||
}
|
||||
|
||||
@Override
|
||||
public MaterialStack pour(World world, int x, int y, int z, double dX, double dY, double dZ, ForgeDirection side, MaterialStack stack) {
|
||||
|
||||
CrucibleRecipe recipe = getLoadedRecipe();
|
||||
|
||||
if(recipe == null) {
|
||||
|
||||
int amount = getQuantaFromType(this.wasteStack, null);
|
||||
|
||||
if(amount + stack.amount <= this.wasteZCapacity) {
|
||||
this.addToStack(this.wasteStack, stack.copy());
|
||||
return null;
|
||||
} else {
|
||||
int toAdd = this.wasteZCapacity - amount;
|
||||
this.addToStack(this.wasteStack, new MaterialStack(stack.material, toAdd));
|
||||
return new MaterialStack(stack.material, stack.amount - toAdd);
|
||||
}
|
||||
}
|
||||
|
||||
int recipeContent = recipe.getInputAmount();
|
||||
int recipeInputRequired = getQuantaFromType(recipe.input, stack.material);
|
||||
int matMaximum = recipeInputRequired * this.recipeZCapacity / recipeContent;
|
||||
|
||||
if(recipeInputRequired + stack.amount <= matMaximum) {
|
||||
this.addToStack(this.recipeStack, stack.copy());
|
||||
return null;
|
||||
}
|
||||
|
||||
int toAdd = matMaximum - stack.amount;
|
||||
this.addToStack(this.recipeStack, new MaterialStack(stack.material, toAdd));
|
||||
return new MaterialStack(stack.material, stack.amount - toAdd);
|
||||
}
|
||||
|
||||
@Override public boolean canAcceptPartialFlow(World world, int x, int y, int z, ForgeDirection side, MaterialStack stack) { return false; }
|
||||
@Override public MaterialStack flow(World world, int x, int y, int z, ForgeDirection side, MaterialStack stack) { return null; }
|
||||
}
|
||||
|
||||
@ -2,8 +2,11 @@ package com.hbm.tileentity.machine;
|
||||
|
||||
import java.util.ArrayList;
|
||||
import java.util.List;
|
||||
import java.util.Random;
|
||||
|
||||
import com.hbm.blocks.ModBlocks;
|
||||
import com.hbm.entity.projectile.EntityShrapnel;
|
||||
import com.hbm.handler.radiation.ChunkRadiationManager;
|
||||
import com.hbm.interfaces.IControlReceiver;
|
||||
import com.hbm.inventory.container.ContainerWatz;
|
||||
import com.hbm.inventory.fluid.Fluids;
|
||||
@ -14,6 +17,9 @@ import com.hbm.inventory.gui.GUIWatz;
|
||||
import com.hbm.items.ModItems;
|
||||
import com.hbm.items.machine.ItemWatzPellet;
|
||||
import com.hbm.items.machine.ItemWatzPellet.EnumWatzType;
|
||||
import com.hbm.main.MainRegistry;
|
||||
import com.hbm.packet.AuxParticlePacketNT;
|
||||
import com.hbm.packet.PacketDispatcher;
|
||||
import com.hbm.tileentity.IGUIProvider;
|
||||
import com.hbm.tileentity.TileEntityMachineBase;
|
||||
import com.hbm.util.Compat;
|
||||
@ -22,10 +28,13 @@ import com.hbm.util.fauxpointtwelve.DirPos;
|
||||
import com.hbm.util.function.Function;
|
||||
|
||||
import api.hbm.fluid.IFluidStandardTransceiver;
|
||||
import cpw.mods.fml.common.network.NetworkRegistry.TargetPoint;
|
||||
import cpw.mods.fml.relauncher.Side;
|
||||
import cpw.mods.fml.relauncher.SideOnly;
|
||||
import net.minecraft.block.Block;
|
||||
import net.minecraft.client.gui.GuiScreen;
|
||||
import net.minecraft.entity.player.EntityPlayer;
|
||||
import net.minecraft.init.Blocks;
|
||||
import net.minecraft.inventory.Container;
|
||||
import net.minecraft.item.ItemStack;
|
||||
import net.minecraft.nbt.NBTTagCompound;
|
||||
@ -126,6 +135,29 @@ public class TileEntityWatz extends TileEntityMachineBase implements IFluidStand
|
||||
}
|
||||
|
||||
segments.get(segments.size() - 1).sendOutBottom();
|
||||
|
||||
/* explode on mud overflow */
|
||||
if(sharedTanks[2].getFill() > 0) {
|
||||
for(int x = -3; x <= 3; x++) {
|
||||
for(int y = 3; y < 6; y++) {
|
||||
for(int z = -3; z <= 3; z++) {
|
||||
worldObj.setBlock(xCoord + x, yCoord + y, zCoord + z, Blocks.air);
|
||||
}
|
||||
}
|
||||
}
|
||||
this.disassemble();
|
||||
|
||||
ChunkRadiationManager.proxy.incrementRad(worldObj, xCoord, yCoord + 1, zCoord, 1_000F);
|
||||
|
||||
worldObj.playSoundEffect(xCoord + 0.5, yCoord + 2, zCoord + 0.5, "hbm:block.rbmk_explosion", 50.0F, 1.0F);
|
||||
NBTTagCompound data = new NBTTagCompound();
|
||||
data.setString("type", "rbmkmush");
|
||||
data.setFloat("scale", 5);
|
||||
PacketDispatcher.wrapper.sendToAllAround(new AuxParticlePacketNT(data, xCoord + 0.5, yCoord + 2, zCoord + 0.5), new TargetPoint(worldObj.provider.dimensionId, xCoord, yCoord, zCoord, 250));
|
||||
MainRegistry.proxy.effectNT(data);
|
||||
|
||||
return;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@ -137,7 +169,7 @@ public class TileEntityWatz extends TileEntityMachineBase implements IFluidStand
|
||||
|
||||
public void updateCoolant(FluidTank[] tanks) {
|
||||
|
||||
double coolingFactor = 0.05D; //20% per tick, TEMP
|
||||
double coolingFactor = 0.1D; //10% per tick, TEMP
|
||||
double heatToUse = this.heat * coolingFactor;
|
||||
|
||||
FT_Heatable trait = tanks[0].getTankType().getTrait(FT_Heatable.class);
|
||||
@ -181,11 +213,11 @@ public class TileEntityWatz extends TileEntityMachineBase implements IFluidStand
|
||||
for(ItemStack stack : pellets) {
|
||||
EnumWatzType type = EnumUtil.grabEnumSafely(EnumWatzType.class, stack.getItemDamage());
|
||||
Function burnFunc = type.burnFunc;
|
||||
Function heatMod = type.heatMult;
|
||||
Function heatDiv = type.heatDiv;
|
||||
|
||||
if(burnFunc != null) {
|
||||
double mod = heatMod != null ? heatMod.effonix(heat) : 1D;
|
||||
double burn = burnFunc.effonix(inputFlux) * mod;
|
||||
double div = heatDiv != null ? heatDiv.effonix(heat) : 1D;
|
||||
double burn = burnFunc.effonix(inputFlux) / div;
|
||||
ItemWatzPellet.setYield(stack, ItemWatzPellet.getYield(stack) - burn);
|
||||
addedFlux += burn;
|
||||
addedHeat += type.heatEmission * burn;
|
||||
@ -198,7 +230,10 @@ public class TileEntityWatz extends TileEntityMachineBase implements IFluidStand
|
||||
Function absorbFunc = type.absorbFunc;
|
||||
|
||||
if(absorbFunc != null) {
|
||||
addedHeat += absorbFunc.effonix(baseFlux + fluxLastReaction);
|
||||
double absorb = absorbFunc.effonix(baseFlux + fluxLastReaction);
|
||||
addedHeat += absorb;
|
||||
ItemWatzPellet.setYield(stack, ItemWatzPellet.getYield(stack) - absorb);
|
||||
tanks[2].setFill(tanks[2].getFill() + (int) Math.round(type.mudContent * absorb));
|
||||
}
|
||||
}
|
||||
|
||||
@ -212,17 +247,21 @@ public class TileEntityWatz extends TileEntityMachineBase implements IFluidStand
|
||||
|
||||
}
|
||||
|
||||
for(int i = 0; i < 24; i++) {
|
||||
ItemStack stack = slots[i];
|
||||
|
||||
/* deplete */
|
||||
if(stack != null && stack.getItem() == ModItems.watz_pellet && ItemWatzPellet.getEnrichment(stack) <= 0) {
|
||||
slots[i] = new ItemStack(ModItems.watz_pellet_depleted, 1, stack.getItemDamage());
|
||||
continue; // depleted pellets may persist for one tick
|
||||
}
|
||||
}
|
||||
|
||||
if(above != null) {
|
||||
for(int i = 0; i < 24; i++) {
|
||||
ItemStack stackBottom = slots[i];
|
||||
ItemStack stackTop = above.slots[i];
|
||||
|
||||
/* deplete */
|
||||
if(stackBottom != null && stackBottom.getItem() == ModItems.watz_pellet && ItemWatzPellet.getYield(stackBottom) <= 0) {
|
||||
slots[i] = new ItemStack(ModItems.watz_pellet_depleted, 1, stackBottom.getItemDamage());
|
||||
continue; // depleted pellets may persist for one tick
|
||||
}
|
||||
|
||||
/* items fall down if the bottom slot is empty */
|
||||
if(stackBottom == null && stackTop != null) {
|
||||
slots[i] = stackTop.copy();
|
||||
@ -309,6 +348,7 @@ public class TileEntityWatz extends TileEntityMachineBase implements IFluidStand
|
||||
}
|
||||
|
||||
for(int i = 0; i < tanks.length; i++) tanks[i].readFromNBT(nbt, "t" + i);
|
||||
this.heat = nbt.getInteger("heat");
|
||||
this.fluxLastBase = nbt.getDouble("lastFluxB");
|
||||
this.fluxLastReaction = nbt.getDouble("lastFluxR");
|
||||
|
||||
@ -332,6 +372,7 @@ public class TileEntityWatz extends TileEntityMachineBase implements IFluidStand
|
||||
nbt.setTag("locks", list);
|
||||
|
||||
for(int i = 0; i < tanks.length; i++) tanks[i].writeToNBT(nbt, "t" + i);
|
||||
nbt.setInteger("heat", this.heat);
|
||||
nbt.setDouble("lastFluxB", fluxLastBase);
|
||||
nbt.setDouble("lastFluxR", fluxLastReaction);
|
||||
|
||||
@ -402,6 +443,73 @@ public class TileEntityWatz extends TileEntityMachineBase implements IFluidStand
|
||||
return bb;
|
||||
}
|
||||
|
||||
private void disassemble() {
|
||||
|
||||
int count = 20;
|
||||
Random rand = worldObj.rand;
|
||||
for(int i = 0; i < count * 5; i++) {
|
||||
EntityShrapnel shrapnel = new EntityShrapnel(worldObj);
|
||||
shrapnel.posX = xCoord + 0.5;
|
||||
shrapnel.posY = yCoord + 3;
|
||||
shrapnel.posZ = zCoord + 0.5;
|
||||
shrapnel.motionY = ((rand.nextFloat() * 0.5) + 0.5) * (1 + (count / (15 + rand.nextInt(21)))) + (rand.nextFloat() / 50 * count);
|
||||
shrapnel.motionX = rand.nextGaussian() * 1 * (1 + (count / 100));
|
||||
shrapnel.motionZ = rand.nextGaussian() * 1 * (1 + (count / 100));
|
||||
shrapnel.setWatz(true);
|
||||
worldObj.spawnEntityInWorld(shrapnel);
|
||||
}
|
||||
|
||||
worldObj.setBlock(xCoord, yCoord, zCoord, ModBlocks.mud_block);
|
||||
worldObj.setBlock(xCoord, yCoord + 1, zCoord, ModBlocks.mud_block);
|
||||
worldObj.setBlock(xCoord, yCoord + 2, zCoord, ModBlocks.mud_block);
|
||||
|
||||
setBrokenColumn(0, ModBlocks.watz_element, 0, 1, 0);
|
||||
setBrokenColumn(0, ModBlocks.watz_element, 0, 2, 0);
|
||||
setBrokenColumn(0, ModBlocks.watz_element, 0, 0, 1);
|
||||
setBrokenColumn(0, ModBlocks.watz_element, 0, 0, 2);
|
||||
setBrokenColumn(0, ModBlocks.watz_element, 0, -1, 0);
|
||||
setBrokenColumn(0, ModBlocks.watz_element, 0, -2, 0);
|
||||
setBrokenColumn(0, ModBlocks.watz_element, 0, 0, -1);
|
||||
setBrokenColumn(0, ModBlocks.watz_element, 0, 0, -2);
|
||||
setBrokenColumn(0, ModBlocks.watz_element, 0, 1, 1);
|
||||
setBrokenColumn(0, ModBlocks.watz_element, 0, 1, -1);
|
||||
setBrokenColumn(0, ModBlocks.watz_element, 0, -1, 1);
|
||||
setBrokenColumn(0, ModBlocks.watz_element, 0, -1, -1);
|
||||
setBrokenColumn(0, ModBlocks.watz_cooler, 0, 2, 1);
|
||||
setBrokenColumn(0, ModBlocks.watz_cooler, 0, 2, -1);
|
||||
setBrokenColumn(0, ModBlocks.watz_cooler, 0, 1, 2);
|
||||
setBrokenColumn(0, ModBlocks.watz_cooler, 0, -1, 2);
|
||||
setBrokenColumn(0, ModBlocks.watz_cooler, 0, -2, 1);
|
||||
setBrokenColumn(0, ModBlocks.watz_cooler, 0, -2, -1);
|
||||
setBrokenColumn(0, ModBlocks.watz_cooler, 0, 1, -2);
|
||||
setBrokenColumn(0, ModBlocks.watz_cooler, 0, -1, -2);
|
||||
|
||||
for(int j = -1; j < 2; j++) {
|
||||
setBrokenColumn(1, ModBlocks.watz_end, 1, 3, j);
|
||||
setBrokenColumn(1, ModBlocks.watz_end, 1, j, 3);
|
||||
setBrokenColumn(1, ModBlocks.watz_end, 1, -3, j);
|
||||
setBrokenColumn(1, ModBlocks.watz_end, 1, j, -3);
|
||||
}
|
||||
setBrokenColumn(1, ModBlocks.watz_end, 1, 2, 2);
|
||||
setBrokenColumn(1, ModBlocks.watz_end, 1, 2, -2);
|
||||
setBrokenColumn(1, ModBlocks.watz_end, 1, -2, 2);
|
||||
setBrokenColumn(1, ModBlocks.watz_end, 1, -2, -2);
|
||||
}
|
||||
|
||||
private void setBrokenColumn(int minHeight, Block b, int meta, int x, int z) {
|
||||
|
||||
int height = minHeight + worldObj.rand.nextInt(3 - minHeight);
|
||||
|
||||
for(int i = 0; i < 3; i++) {
|
||||
|
||||
if(i <= height) {
|
||||
worldObj.setBlock(xCoord + x, yCoord + i, zCoord + z, b, meta, 3);
|
||||
} else {
|
||||
worldObj.setBlock(xCoord + x, yCoord + i, zCoord + z, ModBlocks.mud_block);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
@SideOnly(Side.CLIENT)
|
||||
public double getMaxRenderDistanceSquared() {
|
||||
|
||||
@ -49,20 +49,20 @@ public class TileEntityWatzStruct extends TileEntity {
|
||||
if(!cbr(ModBlocks.watz_cooler, -1, i, -2)) return;
|
||||
|
||||
for(int j = -1; j < 2; j++) {
|
||||
if(!cbr(ModBlocks.watz_end, 3, i, j)) return;
|
||||
if(!cbr(ModBlocks.watz_end, j, i, 3)) return;
|
||||
if(!cbr(ModBlocks.watz_end, -3, i, j)) return;
|
||||
if(!cbr(ModBlocks.watz_end, j, i, -3)) return;
|
||||
if(!cbr(ModBlocks.watz_end, 1, 3, i, j)) return;
|
||||
if(!cbr(ModBlocks.watz_end, 1, j, i, 3)) return;
|
||||
if(!cbr(ModBlocks.watz_end, 1, -3, i, j)) return;
|
||||
if(!cbr(ModBlocks.watz_end, 1, j, i, -3)) return;
|
||||
}
|
||||
if(!cbr(ModBlocks.watz_end, 2, i, 2)) return;
|
||||
if(!cbr(ModBlocks.watz_end, 2, i, -2)) return;
|
||||
if(!cbr(ModBlocks.watz_end, -2, i, 2)) return;
|
||||
if(!cbr(ModBlocks.watz_end, -2, i, -2)) return;
|
||||
if(!cbr(ModBlocks.watz_end, 1, 2, i, 2)) return;
|
||||
if(!cbr(ModBlocks.watz_end, 1, 2, i, -2)) return;
|
||||
if(!cbr(ModBlocks.watz_end, 1, -2, i, 2)) return;
|
||||
if(!cbr(ModBlocks.watz_end, 1, -2, i, -2)) return;
|
||||
}
|
||||
|
||||
Watz watz = (Watz)ModBlocks.watz;
|
||||
BlockDummyable.safeRem = true;
|
||||
worldObj.setBlock(xCoord, yCoord, zCoord, ModBlocks.watz, this.getBlockMetadata() + BlockDummyable.offset, 3);
|
||||
worldObj.setBlock(xCoord, yCoord, zCoord, ModBlocks.watz, 12, 3);
|
||||
watz.fillSpace(worldObj, xCoord, yCoord, zCoord, ForgeDirection.NORTH, 0);
|
||||
BlockDummyable.safeRem = false;
|
||||
}
|
||||
@ -72,10 +72,18 @@ public class TileEntityWatzStruct extends TileEntity {
|
||||
return worldObj.getBlock(xCoord + x, yCoord + y, zCoord + z);
|
||||
}
|
||||
|
||||
/** [G]et [M]eta at [R]elative position */
|
||||
private int gmr(int x, int y, int z) {
|
||||
return worldObj.getBlockMetadata(xCoord + x, yCoord + y, zCoord + z);
|
||||
}
|
||||
|
||||
/** [C]heck [B]lock at [R]elative position */
|
||||
private boolean cbr(Block b, int x, int y, int z) {
|
||||
return b == gbr(x, y, z);
|
||||
}
|
||||
private boolean cbr(Block b, int meta, int x, int y, int z) {
|
||||
return b == gbr(x, y, z) && meta == gmr(x, y, z);
|
||||
}
|
||||
|
||||
AxisAlignedBB bb = null;
|
||||
|
||||
|
||||
@ -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);
|
||||
}
|
||||
}
|
||||
@ -27,8 +27,8 @@ public abstract class Function {
|
||||
public String getXName(boolean brackets) {
|
||||
String x = "x";
|
||||
boolean mod = false;
|
||||
if(div != 1D) x += " / " + div;
|
||||
if(off != 0D) x += " + " + off;
|
||||
if(div != 1D) x += " / " + String.format("%,.1f", div);
|
||||
if(off != 0D) x += " + " + String.format("%,.1f", off);
|
||||
if(mod && brackets) x = "(" + x + ")";
|
||||
return x;
|
||||
}
|
||||
@ -46,28 +46,35 @@ public abstract class Function {
|
||||
public static class FunctionLogarithmic extends FunctionSingleArg {
|
||||
public FunctionLogarithmic(double level) { super(level); this.withOff(1D); }
|
||||
@Override public double effonix(double x) { return Math.log10(getX(x)) * level; }
|
||||
@Override public String getLabelForFuel() { return "log10(" + getXName(false) + ") * " + level; }
|
||||
@Override public String getLabelForFuel() { return "log10(" + getXName(false) + ") * " + String.format("%,.1f", this.level); }
|
||||
@Override public String getDangerFromFuel() { return EnumChatFormatting.YELLOW + "MEDIUM / LOGARITHMIC"; }
|
||||
}
|
||||
|
||||
public static class FunctionPassive extends FunctionSingleArg {
|
||||
public FunctionPassive(double level) { super(level); }
|
||||
@Override public double effonix(double x) { return this.level; }
|
||||
@Override public String getLabelForFuel() { return "" + level; }
|
||||
@Override public String getLabelForFuel() { return "" + String.format("%,.1f", this.level); }
|
||||
@Override public String getDangerFromFuel() { return EnumChatFormatting.DARK_GREEN + "SAFE / PASSIVE"; }
|
||||
}
|
||||
|
||||
public static class FunctionSqrt extends FunctionSingleArg {
|
||||
public FunctionSqrt(double level) { super(level); }
|
||||
@Override public double effonix(double x) { return BobMathUtil.squirt(getX(x)) * this.level; }
|
||||
@Override public String getLabelForFuel() { return "sqrt(" + getXName(false) + ") * " + this.level; } //not entirely correct but good enough
|
||||
@Override public String getLabelForFuel() { return "sqrt(" + getXName(false) + ") * " + String.format("%,.3f", this.level); } //not entirely correct but good enough
|
||||
@Override public String getDangerFromFuel() { return EnumChatFormatting.YELLOW + "MEDIUM / SQUARE ROOT"; }
|
||||
}
|
||||
|
||||
public static class FunctionSqrtFalling extends FunctionSqrt {
|
||||
public FunctionSqrtFalling(double fallFactor) {
|
||||
super(1D / fallFactor);
|
||||
this.withOff(fallFactor * fallFactor);
|
||||
}
|
||||
}
|
||||
|
||||
public static class FunctionLinear extends FunctionSingleArg {
|
||||
public FunctionLinear(double level) { super(level); }
|
||||
@Override public double effonix(double x) { return getX(x) * this.level; }
|
||||
@Override public String getLabelForFuel() { return getXName(true) + " * " + this.level; }
|
||||
@Override public String getLabelForFuel() { return getXName(true) + " * " + String.format("%,.1f", this.level); }
|
||||
@Override public String getDangerFromFuel() { return EnumChatFormatting.RED + "DANGEROUS / LINEAR"; }
|
||||
}
|
||||
|
||||
@ -75,7 +82,7 @@ public abstract class Function {
|
||||
public FunctionQuadratic(double level) { super(level, 0D); }
|
||||
public FunctionQuadratic(double level, double vOff) { super(level, vOff); }
|
||||
@Override public double effonix(double x) { return getX(x) * getX(x) * this.level + this.vOff; }
|
||||
@Override public String getLabelForFuel() { return getXName(true) + "² * " + this.level + (vOff != 0 ? (" + " + vOff) : ""); }
|
||||
@Override public String getLabelForFuel() { return getXName(true) + "² * " + String.format("%,.1f", this.level) + (vOff != 0 ? (" + " + String.format("%,.1f", vOff)) : ""); }
|
||||
@Override public String getDangerFromFuel() { return EnumChatFormatting.RED + "DANGEROUS / QUADRATIC"; }
|
||||
}
|
||||
}
|
||||
|
||||
@ -416,6 +416,7 @@ container.zirnox=ZIRNOX Atomreaktor
|
||||
|
||||
crucible.aa=Herstellung - Fortgeschrittene Legierung
|
||||
crucible.cdalloy=Herstellung Cadmiumstahl
|
||||
crucible.cmb=Herstellung CMB-Stahl
|
||||
crucible.ferro=Herstellung - Ferrouran
|
||||
crucible.hematite=Herstellung - Eisen aus Hämatit
|
||||
crucible.hss=Herstellung - Schnellarbeitsstahl
|
||||
@ -781,6 +782,7 @@ hbmmat.uranium=Uran
|
||||
hbmmat.uranium233=Uran-233
|
||||
hbmmat.uranium235=Uran-235
|
||||
hbmmat.uranium238=Uran-238
|
||||
hbmmat.watzmud=Giftiger Schlamm
|
||||
hbmmat.whitephosphorus=Weißer Phosphor
|
||||
hbmmat.workersalloy=Desh
|
||||
hbmmat.wroughtiron=Schmiedeeisen
|
||||
@ -1205,6 +1207,7 @@ item.bobmazon_weapons.name=Bobmazon: Waffen und Sprengstoffe
|
||||
item.bolt_compound.name=Verstärkte Turbinenwelle
|
||||
item.bolt_dura_steel.name=Schnellarbeitsstahlbolzen
|
||||
item.bolt_tungsten.name=Wolframbolzen
|
||||
item.boltgun.name=Pneumatische Nietenpistole
|
||||
item.bomb_caller.name=Luftschlag Zielmarker
|
||||
item.bomb_waffle.name=Massenvernichtungswaffel
|
||||
item.guide_book.name=Handbuch
|
||||
@ -2013,6 +2016,7 @@ item.ingot_magnetized_tungsten.name=Magnetisierter Wolframbarren
|
||||
item.ingot_meteorite.name=Meteoritenbarren
|
||||
item.ingot_meteorite_forged.name=Geschmiedeter Meteoritenbarren
|
||||
item.ingot_mox_fuel.name=MOX-Kernbrennstoffbarren
|
||||
item.ingot_mud.name=Fester Schlammziegel
|
||||
item.ingot_neptunium.name=Neptuniumbarren
|
||||
item.ingot_neptunium_fuel.name=Neptuniumkernbrennstoffbarren
|
||||
item.ingot_niobium.name=Niobbarren
|
||||
@ -4222,6 +4226,7 @@ tile.struct_launcher_core_large.name=Startrampe-Kernkomponente
|
||||
tile.struct_plasma_core.name=Plasmaerhitzer-Kernkomponente
|
||||
tile.struct_scaffold.name=Startrampe-Gerüstblock
|
||||
tile.struct_soyuz_core.name=Soyuz-Startrampe-Kernkomponente
|
||||
tile.struct_watz_core.name=Watzkraftwerk-Kernkomponente
|
||||
tile.substation.name=Umspannwerk
|
||||
tile.sulfuric_acid_block.name=Schwefelsäure
|
||||
tile.taint.name=Korrupter Schmutz
|
||||
@ -4275,13 +4280,16 @@ tile.waste_mycelium.name=Leuchtende Myzel
|
||||
tile.waste_planks.name=Verkohlte Holzbretter
|
||||
tile.waste_trinitite.name=Trinititerz
|
||||
tile.waste_trinitite_red.name=Rotes Trinititerz
|
||||
tile.watz.name=Watzkraftwerk
|
||||
tile.watz_conductor.name=Watz-Stromanschluss
|
||||
tile.watz_control.name=Verstärkte Steuerstäbe
|
||||
tile.watz_cooler.name=Watz-Superkühler
|
||||
tile.watz_core.name=Watzreaktorkern
|
||||
tile.watz_element.name=Watzreaktionskammer
|
||||
tile.watz_end.name=Watz-Stabilitätselement
|
||||
tile.watz_end_bolted.name=Watz-Stabilitätselement (Genietet)
|
||||
tile.watz_hatch.name=Watzreaktorzugriffsluke
|
||||
tile.watz_pump.name=Watz-Druckpumpe
|
||||
tile.yellow_barrel.name=Radioaktives Fass
|
||||
tile.zirnox_destroyed.name=Zerstörter ZINOX
|
||||
|
||||
|
||||
@ -709,6 +709,7 @@ container.zirnox=ZIRNOX Nuclear Reactor
|
||||
|
||||
crucible.aa=Advanced Alloy Production
|
||||
crucible.cdalloy=Cadmium Steel Production
|
||||
crucible.cmb=CMB Steel Production
|
||||
crucible.ferro=Ferrouranium Production
|
||||
crucible.hematite=Iron Production from Hematite
|
||||
crucible.hss=High-Speed Steel Production
|
||||
@ -1358,6 +1359,7 @@ hbmmat.uranium=Uranium
|
||||
hbmmat.uranium233=Uranium-233
|
||||
hbmmat.uranium235=Uranium-235
|
||||
hbmmat.uranium238=Uranium-238
|
||||
hbmmat.watzmud=Poisonous Mud
|
||||
hbmmat.whitephosphorus=White Phosphorus
|
||||
hbmmat.workersalloy=Desh
|
||||
hbmmat.wroughtiron=Wroght Iron
|
||||
@ -1792,6 +1794,7 @@ item.bobmazon_weapons.name=Bobmazon: Weapons and Explosives
|
||||
item.bolt_compound.name=Reinforced Turbine Shaft
|
||||
item.bolt_dura_steel.name=High-Speed Steel Bolt
|
||||
item.bolt_tungsten.name=Tungsten Bolt
|
||||
item.boltgun.name=Pneumatic Rivet Gun
|
||||
item.bomb_caller.name=Airstrike Designator
|
||||
item.bomb_waffle.name=Waffle of Mass Destruction
|
||||
item.book_guide.name=Guide Book
|
||||
@ -2662,6 +2665,7 @@ item.ingot_magnetized_tungsten.name=Magnetized Tungsten Ingot
|
||||
item.ingot_meteorite.name=Meteorite Ingot
|
||||
item.ingot_meteorite_forged.name=Forged Meteorite Ingot
|
||||
item.ingot_mox_fuel.name=Ingot of MOX Fuel
|
||||
item.ingot_mud.name=Solid Mud Brick
|
||||
item.ingot_neptunium.name=Neptunium Ingot
|
||||
item.ingot_neptunium.desc=That one's my favourite!
|
||||
item.ingot_neptunium.desc.P11=Woo, scary!
|
||||
@ -5038,6 +5042,7 @@ tile.struct_launcher_core_large.name=Launch Table Core Component
|
||||
tile.struct_plasma_core.name=Plasma Heater Core Component
|
||||
tile.struct_scaffold.name=Launch Pad Scaffold Block
|
||||
tile.struct_soyuz_core.name=Soyuz Launcher Core Component
|
||||
tile.struct_watz_core.name=Watz Powerplant Core Component
|
||||
tile.substation.name=Substation
|
||||
tile.sulfuric_acid_block.name=Sulfuric Acid
|
||||
tile.taint.name=Taint
|
||||
@ -5093,13 +5098,16 @@ tile.waste_mycelium.name=Glowing Mycelium
|
||||
tile.waste_planks.name=Charred Wooden Planks
|
||||
tile.waste_trinitite.name=Trinitite Ore
|
||||
tile.waste_trinitite_red.name=Red Trinitite Ore
|
||||
tile.watz.name=Watz Powerplant
|
||||
tile.watz_conductor.name=Watz Electricity Port
|
||||
tile.watz_control.name=Reinforced Control Rods
|
||||
tile.watz_cooler.name=Watz Reactor Supercooler
|
||||
tile.watz_core.name=Watz Reactor Control
|
||||
tile.watz_element.name=Watz Reaction Chamber
|
||||
tile.watz_end.name=Watz Reactor Stability Element
|
||||
tile.watz_end_bolted.name=Watz Reactor Stability Element (Riveted)
|
||||
tile.watz_hatch.name=Watz Reactor Access Hatch
|
||||
tile.watz_pump.name=Watz Pressure Pump
|
||||
tile.yellow_barrel.name=Radioactive Barrel
|
||||
tile.zirnox_destroyed.name=Destroyed ZINROX
|
||||
|
||||
|
||||
@ -1261,6 +1261,7 @@ hbmmat.wroughtiron=Кованое железо
|
||||
hbmmat.desh=Деш
|
||||
hbmmat.cdalloy=Кадмиевая сталь
|
||||
hbmmat.cadmium=Кадмий
|
||||
hbmmat.watzmud=Токсичные отходы
|
||||
|
||||
crucible.aa=Производство продвинутого сплава
|
||||
crucible.ferro=Производство ферроуранового сплава
|
||||
@ -1274,6 +1275,7 @@ crucible.steelPig=Переплавка чугуна в сталь
|
||||
crucible.steelWrought=Переплавка кованого железа в сталь
|
||||
crucible.tcalloy=Производство технециевой стали
|
||||
crucible.cdalloy=Производство кадмиевой стали
|
||||
crucible.cmb=Производство стали Альянса
|
||||
|
||||
matshape.block=Блок %s
|
||||
matshape.blocks=Блоки %s
|
||||
@ -1716,6 +1718,7 @@ tile.struct_launcher_core_large.name=Ядро большой пусковой п
|
||||
tile.struct_soyuz_core.name=Ядро стартовой площадки Союза
|
||||
tile.struct_plasma_core.name=Ядро нагревателя плазмы
|
||||
tile.struct_iter_core.name=Ядро термоядерного реактора
|
||||
tile.struct_watz_core.name=Ядро Ватцз-реактора
|
||||
|
||||
tile.machine_difurnace_off.name=Доменная печь
|
||||
tile.machine_difurnace_on.name=Доменная печь
|
||||
@ -2094,6 +2097,8 @@ tile.machine_vacuum_distill.name=Вакуумный нефтеперерабат
|
||||
tile.machine_catalytic_reformer.name=Каталитический реформер
|
||||
container.catalyticReformer=Каталитический реформер
|
||||
tile.fan.name=Вентилятор
|
||||
tile.watz.name=Реактор Ватцз
|
||||
tile.watz_pump.name=Нагнетающая помпа Ватцза
|
||||
|
||||
container.hadron=Ускоритель частиц
|
||||
tile.hadron_access.name=Терминал доступа ускорителя частиц
|
||||
@ -2227,6 +2232,7 @@ tile.watz_element.name=Камера реакции Ватцза
|
||||
tile.watz_control.name=Упрочнённые регулирующие стержни
|
||||
tile.watz_cooler.name=Суперохладитель реактора Ватцза
|
||||
tile.watz_end.name=Стабилизатор реактора Ватцза
|
||||
tile.watz_end_bolted.name=Стабилизатор реактора Ватцза (Заклепанный)
|
||||
tile.watz_hatch.name=Люк доступа к реактору Ватцза
|
||||
tile.watz_conductor.name=Порт электричества Ватцза
|
||||
tile.watz_core.name=Контроллер реактора Ватцза
|
||||
@ -2384,6 +2390,7 @@ item.coil_gold_torus.name=Золотая кольцевая катушка
|
||||
item.lithium.name=Куб лития
|
||||
item.ingot_phosphorus.name=Брусок белого фосфора
|
||||
item.ingot_magnetized_tungsten.name=Намагниченный слиток вольфрама
|
||||
item.ingot_mud.name=Кирпич из твёрдых отходов
|
||||
item.ingot_combine_steel.name=Слиток стали Альянса
|
||||
item.ingot_combine_steel.desc=*вставьте референс на Гражданскую Оборону*
|
||||
item.ingot_combine_steel.desc.11="Я имею в виду, это глагол для громкого крика.$Инопланетяне - это не глаголы. Это существительные!"$"На самом деле, я думаю, что это также название $какого-то сельскохозяйственного оборудования, такого как $молотилка за доллар или что-то в этом роде."$"Это еще хуже. Теперь у нас есть слово,$которое может означать "смешивать вещи вместе",$часть сельскохозяйственного оборудования, и давайте посмотрим...$а да, это также может означать "самая продвинутая $форма жизни в известной вселенной".."$"И?"$"'И?' Да ладно, чувак, они же ИНОПЛАНЕТЯНЕ!"
|
||||
@ -4048,6 +4055,7 @@ item.gun_darter.name=Дротиковый пистолет
|
||||
item.gun_mymy.name=Ньетес
|
||||
item.gun_ar15.name="Джош"
|
||||
item.gun_glass_cannon.name=Стеклянная пушка
|
||||
item.boltgun.name=Пневматический заклепочник
|
||||
|
||||
item.gun_revolver_iron_ammo.name=Пуля
|
||||
item.gun_revolver_ammo.name=Свинцовая пуля
|
||||
@ -4394,6 +4402,7 @@ entity.hbm.entity_schrabnel.name=Шрапнель
|
||||
entity.entity_fucc_a_ducc.name=Утка
|
||||
entity.entity_mob_nuclear_creeper.name=Ядерный крипер
|
||||
entity.entity_mob_tainted_creeper.name=Заражённый порчей крипер
|
||||
entity.entity_mob_phosgene_creeper.name=Фосгеновый крипер
|
||||
entity.entity_mob_mask_man.name=Маскмен
|
||||
entity.entity_mob_hunter_chopper.name=Вертолёт-охотник
|
||||
entity.entity_cyber_crab.name=Киберкраб
|
||||
|
||||
@ -78,6 +78,7 @@
|
||||
"item.vice": {"category": "player", "sounds": [{"name": "tool/vice", "stream": false}]},
|
||||
"item.upgradePlug": {"category": "player", "sounds": [{"name": "tool/upgradePlug", "stream": false}]},
|
||||
"item.battery": {"category": "player", "sounds": [{"name": "tool/battery", "stream": false}]},
|
||||
"item.boltgun": {"category": "player", "sounds": [{"name": "tool/boltgun", "stream": false}]},
|
||||
|
||||
"music.recordLambdaCore": {"category": "record", "sounds": [{"name": "music/recordLambdaCore", "stream": true}]},
|
||||
"music.recordSectorSweep": {"category": "record", "sounds": [{"name": "music/recordSectorSweep", "stream": true}]},
|
||||
|
||||
BIN
src/main/resources/assets/hbm/sounds/tool/boltgun.ogg
Normal file
|
After Width: | Height: | Size: 410 B |
|
After Width: | Height: | Size: 128 B |
|
After Width: | Height: | Size: 460 B |
|
After Width: | Height: | Size: 2.0 KiB |
BIN
src/main/resources/assets/hbm/textures/items/ingot_mud.png
Normal file
|
After Width: | Height: | Size: 537 B |
|
Before Width: | Height: | Size: 1.0 KiB After Width: | Height: | Size: 1.1 KiB |