/* * This file is part of Applied Energistics 2. * Copyright (c) 2013 - 2014, AlgorithmX2, All rights reserved. * * Applied Energistics 2 is free software: you can redistribute it and/or modify * it under the terms of the GNU Lesser General Public License as published by * the Free Software Foundation, either version 3 of the License, or * (at your option) any later version. * * Applied Energistics 2 is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU Lesser General Public License for more details. * * You should have received a copy of the GNU Lesser General Public License * along with Applied Energistics 2. If not, see <http://www.gnu.org/licenses/lgpl>. */ package appeng.core.features.registries; import java.util.HashMap; import net.minecraft.init.Items; import net.minecraft.item.ItemStack; import appeng.api.features.IMatterCannonAmmoRegistry; import appeng.recipes.ores.IOreListener; import appeng.recipes.ores.OreDictionaryHandler; import appeng.util.Platform; public class MatterCannonAmmoRegistry implements IOreListener, IMatterCannonAmmoRegistry { private final HashMap<ItemStack, Double> DamageModifiers = new HashMap<ItemStack, Double>(); public MatterCannonAmmoRegistry() { OreDictionaryHandler.INSTANCE.observe( this ); this.registerAmmo( new ItemStack( Items.GOLD_NUGGET ), 196.96655 ); } @Override public void registerAmmo( final ItemStack ammo, final double weight ) { this.DamageModifiers.put( ammo, weight ); } @Override public float getPenetration( final ItemStack is ) { for( final ItemStack o : this.DamageModifiers.keySet() ) { if( Platform.itemComparisons().isEqualItem( o, is ) ) { return this.DamageModifiers.get( o ).floatValue(); } } return 0; } @Override public void oreRegistered( final String name, final ItemStack item ) { if( !( name.startsWith( "berry" ) || name.startsWith( "nugget" ) ) ) { return; } // addNugget( "Cobble", 18 ); // ? this.considerItem( name, item, "MeatRaw", 32 ); this.considerItem( name, item, "MeatCooked", 32 ); this.considerItem( name, item, "Meat", 32 ); this.considerItem( name, item, "Chicken", 32 ); this.considerItem( name, item, "Beef", 32 ); this.considerItem( name, item, "Sheep", 32 ); this.considerItem( name, item, "Fish", 32 ); // real world... this.considerItem( name, item, "Lithium", 6.941 ); this.considerItem( name, item, "Beryllium", 9.0122 ); this.considerItem( name, item, "Boron", 10.811 ); this.considerItem( name, item, "Carbon", 12.0107 ); this.considerItem( name, item, "Coal", 12.0107 ); this.considerItem( name, item, "Charcoal", 12.0107 ); this.considerItem( name, item, "Sodium", 22.9897 ); this.considerItem( name, item, "Magnesium", 24.305 ); this.considerItem( name, item, "Aluminum", 26.9815 ); this.considerItem( name, item, "SILICON", 28.0855 ); this.considerItem( name, item, "Phosphorus", 30.9738 ); this.considerItem( name, item, "Sulfur", 32.065 ); this.considerItem( name, item, "Potassium", 39.0983 ); this.considerItem( name, item, "Calcium", 40.078 ); this.considerItem( name, item, "Scandium", 44.9559 ); this.considerItem( name, item, "Titanium", 47.867 ); this.considerItem( name, item, "Vanadium", 50.9415 ); this.considerItem( name, item, "Manganese", 54.938 ); this.considerItem( name, item, "Iron", 55.845 ); this.considerItem( name, item, "Nickel", 58.6934 ); this.considerItem( name, item, "Cobalt", 58.9332 ); this.considerItem( name, item, "Copper", 63.546 ); this.considerItem( name, item, "Zinc", 65.39 ); this.considerItem( name, item, "Gallium", 69.723 ); this.considerItem( name, item, "Germanium", 72.64 ); this.considerItem( name, item, "Bromine", 79.904 ); this.considerItem( name, item, "Krypton", 83.8 ); this.considerItem( name, item, "Rubidium", 85.4678 ); this.considerItem( name, item, "Strontium", 87.62 ); this.considerItem( name, item, "Yttrium", 88.9059 ); this.considerItem( name, item, "Zirconiumm", 91.224 ); this.considerItem( name, item, "Niobiumm", 92.9064 ); this.considerItem( name, item, "Technetium", 98 ); this.considerItem( name, item, "Ruthenium", 101.07 ); this.considerItem( name, item, "Rhodium", 102.9055 ); this.considerItem( name, item, "Palladium", 106.42 ); this.considerItem( name, item, "Silver", 107.8682 ); this.considerItem( name, item, "Cadmium", 112.411 ); this.considerItem( name, item, "Indium", 114.818 ); this.considerItem( name, item, "Tin", 118.71 ); this.considerItem( name, item, "Antimony", 121.76 ); this.considerItem( name, item, "Iodine", 126.9045 ); this.considerItem( name, item, "Tellurium", 127.6 ); this.considerItem( name, item, "Xenon", 131.293 ); this.considerItem( name, item, "Cesium", 132.9055 ); this.considerItem( name, item, "Barium", 137.327 ); this.considerItem( name, item, "Lanthanum", 138.9055 ); this.considerItem( name, item, "Cerium", 140.116 ); this.considerItem( name, item, "Tantalum", 180.9479 ); this.considerItem( name, item, "Tungsten", 183.84 ); this.considerItem( name, item, "Osmium", 190.23 ); this.considerItem( name, item, "Iridium", 192.217 ); this.considerItem( name, item, "Platinum", 195.078 ); this.considerItem( name, item, "Lead", 207.2 ); this.considerItem( name, item, "Bismuth", 208.9804 ); this.considerItem( name, item, "Uranium", 238.0289 ); this.considerItem( name, item, "Plutonium", 244 ); // TE stuff... this.considerItem( name, item, "Invar", ( 58.6934 + 55.845 + 55.845 ) / 3.0 ); this.considerItem( name, item, "Electrum", ( 107.8682 + 196.96655 ) / 2.0 ); } private void considerItem( final String ore, final ItemStack item, final String name, final double weight ) { if( ore.equals( "berry" + name ) || ore.equals( "nugget" + name ) ) { this.registerAmmo( item, weight ); } } }