Rewrote matter cannon ammo registry to be tag based.

This commit is contained in:
Sebastian Hartte
2020-06-21 22:48:42 +02:00
parent 9ab91cd98b
commit e1131bd1e2
3 changed files with 117 additions and 101 deletions
+1 -5
View File
@@ -233,11 +233,7 @@ final class Registration {
registries.cell().addCellGuiHandler(new BasicItemCellGuiHandler());
registries.cell().addCellGuiHandler(new BasicFluidCellGuiHandler());
api.definitions().materials().matterBall().maybeStack(1).ifPresent(ammoStack -> {
final double weight = 32;
registries.matterCannon().registerAmmo(ammoStack, weight);
});
registries.matterCannon().registerAmmoItem(api.definitions().materials().matterBall().item(), 32);
PartItemPredicate.register();
}
@@ -19,120 +19,129 @@
package appeng.core.features.registries;
import java.util.HashMap;
import java.util.IdentityHashMap;
import java.util.Map;
import net.minecraft.item.Item;
import net.minecraft.item.ItemStack;
import net.minecraft.item.Items;
import appeng.api.features.IMatterCannonAmmoRegistry;
import net.minecraft.util.ResourceLocation;
public class MatterCannonAmmoRegistry implements /* FIXME IOreListener, */ IMatterCannonAmmoRegistry {
public class MatterCannonAmmoRegistry implements IMatterCannonAmmoRegistry {
private final HashMap<ItemStack, Double> DamageModifiers = new HashMap<>();
/**
* Contains a mapping from
*/
private final Map<ResourceLocation, Double> tagDamageModifiers = new HashMap<>();
private final Map<Item, Double> itemDamageModifiers = new IdentityHashMap<>();
public MatterCannonAmmoRegistry() {
// FIXME OreDictionaryHandler.INSTANCE.observe( this );
this.registerAmmo(new ItemStack(Items.GOLD_NUGGET), 196.96655);
this.addTagWeight( "forge:nuggets/meatraw", 32 );
this.addTagWeight( "forge:nuggets/meatcooked", 32 );
this.addTagWeight( "forge:nuggets/meat", 32 );
this.addTagWeight( "forge:nuggets/chicken", 32 );
this.addTagWeight( "forge:nuggets/beef", 32 );
this.addTagWeight( "forge:nuggets/sheep", 32 );
this.addTagWeight( "forge:nuggets/fish", 32 );
// real world...
this.addTagWeight( "forge:nuggets/lithium", 6.941 );
this.addTagWeight( "forge:nuggets/beryllium", 9.0122 );
this.addTagWeight( "forge:nuggets/boron", 10.811 );
this.addTagWeight( "forge:nuggets/carbon", 12.0107 );
this.addTagWeight( "forge:nuggets/coal", 12.0107 );
this.addTagWeight( "forge:nuggets/charcoal", 12.0107 );
this.addTagWeight( "forge:nuggets/sodium", 22.9897 );
this.addTagWeight( "forge:nuggets/magnesium", 24.305 );
this.addTagWeight( "forge:nuggets/aluminum", 26.9815 );
this.addTagWeight( "forge:nuggets/silicon", 28.0855 );
this.addTagWeight( "forge:nuggets/phosphorus", 30.9738 );
this.addTagWeight( "forge:nuggets/sulfur", 32.065 );
this.addTagWeight( "forge:nuggets/potassium", 39.0983 );
this.addTagWeight( "forge:nuggets/calcium", 40.078 );
this.addTagWeight( "forge:nuggets/scandium", 44.9559 );
this.addTagWeight( "forge:nuggets/titanium", 47.867 );
this.addTagWeight( "forge:nuggets/vanadium", 50.9415 );
this.addTagWeight( "forge:nuggets/manganese", 54.938 );
this.addTagWeight( "forge:nuggets/iron", 55.845 );
this.addTagWeight( "forge:nuggets/gold", 196.96655 );
this.addTagWeight( "forge:nuggets/nickel", 58.6934 );
this.addTagWeight( "forge:nuggets/cobalt", 58.9332 );
this.addTagWeight( "forge:nuggets/copper", 63.546 );
this.addTagWeight( "forge:nuggets/zinc", 65.39 );
this.addTagWeight( "forge:nuggets/gallium", 69.723 );
this.addTagWeight( "forge:nuggets/germanium", 72.64 );
this.addTagWeight( "forge:nuggets/bromine", 79.904 );
this.addTagWeight( "forge:nuggets/krypton", 83.8 );
this.addTagWeight( "forge:nuggets/rubidium", 85.4678 );
this.addTagWeight( "forge:nuggets/strontium", 87.62 );
this.addTagWeight( "forge:nuggets/yttrium", 88.9059 );
this.addTagWeight( "forge:nuggets/zirconium", 91.224 );
this.addTagWeight( "forge:nuggets/niobium", 92.9064 );
this.addTagWeight( "forge:nuggets/technetium", 98 );
this.addTagWeight( "forge:nuggets/ruthenium", 101.07 );
this.addTagWeight( "forge:nuggets/rhodium", 102.9055 );
this.addTagWeight( "forge:nuggets/palladium", 106.42 );
this.addTagWeight( "forge:nuggets/silver", 107.8682 );
this.addTagWeight( "forge:nuggets/cadmium", 112.411 );
this.addTagWeight( "forge:nuggets/indium", 114.818 );
this.addTagWeight( "forge:nuggets/tin", 118.71 );
this.addTagWeight( "forge:nuggets/antimony", 121.76 );
this.addTagWeight( "forge:nuggets/iodine", 126.9045 );
this.addTagWeight( "forge:nuggets/tellurium", 127.6 );
this.addTagWeight( "forge:nuggets/xenon", 131.293 );
this.addTagWeight( "forge:nuggets/cesium", 132.9055 );
this.addTagWeight( "forge:nuggets/barium", 137.327 );
this.addTagWeight( "forge:nuggets/lanthanum", 138.9055 );
this.addTagWeight( "forge:nuggets/cerium", 140.116 );
this.addTagWeight( "forge:nuggets/tantalum", 180.9479 );
this.addTagWeight( "forge:nuggets/tungsten", 183.84 );
this.addTagWeight( "forge:nuggets/osmium", 190.23 );
this.addTagWeight( "forge:nuggets/iridium", 192.217 );
this.addTagWeight( "forge:nuggets/platinum", 195.078 );
this.addTagWeight( "forge:nuggets/lead", 207.2 );
this.addTagWeight( "forge:nuggets/bismuth", 208.9804 );
this.addTagWeight( "forge:nuggets/uranium", 238.0289 );
this.addTagWeight( "forge:nuggets/plutonium", 244 );
// TE stuff...
this.addTagWeight( "forge:nuggets/invar", ( 58.6934 + 55.845 + 55.845 ) / 3.0 );
this.addTagWeight( "forge:nuggets/electrum", ( 107.8682 + 196.96655 ) / 2.0 );
}
@Override
public void registerAmmo(final ItemStack ammo, final double weight) {
this.DamageModifiers.put(ammo, weight);
public void registerAmmoItem(final Item ammo, final double weight) {
this.itemDamageModifiers.put(ammo, weight);
}
@Override
public void registerAmmoTag(final ResourceLocation ammoTag, final double weight) {
this.tagDamageModifiers.put(ammoTag, weight);
}
@Override
public float getPenetration(final ItemStack is) {
for (final ItemStack o : this.DamageModifiers.keySet()) {
if (ItemStack.areItemsEqual(o, is)) {
return this.DamageModifiers.get(o).floatValue();
// Check for an exact item match first
Item item = is.getItem();
Double weight = itemDamageModifiers.get(item);
if (weight != null) {
return weight.floatValue();
}
// Next, check each item tag
for (ResourceLocation tag : item.getTags()) {
weight = tagDamageModifiers.get(tag);
if (weight != null) {
return weight.floatValue();
}
}
return 0;
}
// FIXME @Override
// FIXME public void oreRegistered( final String name, final ItemStack item )
// FIXME {
// FIXME if( !( name.startsWith( "berry" ) || name.startsWith( "nugget" ) ) )
// FIXME {
// FIXME return;
// FIXME }
// FIXME
// FIXME // addNugget( "Cobble", 18 ); // ?
// FIXME this.considerItem( name, item, "MeatRaw", 32 );
// FIXME this.considerItem( name, item, "MeatCooked", 32 );
// FIXME this.considerItem( name, item, "Meat", 32 );
// FIXME this.considerItem( name, item, "Chicken", 32 );
// FIXME this.considerItem( name, item, "Beef", 32 );
// FIXME this.considerItem( name, item, "Sheep", 32 );
// FIXME this.considerItem( name, item, "Fish", 32 );
// FIXME
// FIXME // real world...
// FIXME this.considerItem( name, item, "Lithium", 6.941 );
// FIXME this.considerItem( name, item, "Beryllium", 9.0122 );
// FIXME this.considerItem( name, item, "Boron", 10.811 );
// FIXME this.considerItem( name, item, "Carbon", 12.0107 );
// FIXME this.considerItem( name, item, "Coal", 12.0107 );
// FIXME this.considerItem( name, item, "Charcoal", 12.0107 );
// FIXME this.considerItem( name, item, "Sodium", 22.9897 );
// FIXME this.considerItem( name, item, "Magnesium", 24.305 );
// FIXME this.considerItem( name, item, "Aluminum", 26.9815 );
// FIXME this.considerItem( name, item, "SILICON", 28.0855 );
// FIXME this.considerItem( name, item, "Phosphorus", 30.9738 );
// FIXME this.considerItem( name, item, "Sulfur", 32.065 );
// FIXME this.considerItem( name, item, "Potassium", 39.0983 );
// FIXME this.considerItem( name, item, "Calcium", 40.078 );
// FIXME this.considerItem( name, item, "Scandium", 44.9559 );
// FIXME this.considerItem( name, item, "Titanium", 47.867 );
// FIXME this.considerItem( name, item, "Vanadium", 50.9415 );
// FIXME this.considerItem( name, item, "Manganese", 54.938 );
// FIXME this.considerItem( name, item, "Iron", 55.845 );
// FIXME this.considerItem( name, item, "Nickel", 58.6934 );
// FIXME this.considerItem( name, item, "Cobalt", 58.9332 );
// FIXME this.considerItem( name, item, "Copper", 63.546 );
// FIXME this.considerItem( name, item, "Zinc", 65.39 );
// FIXME this.considerItem( name, item, "Gallium", 69.723 );
// FIXME this.considerItem( name, item, "Germanium", 72.64 );
// FIXME this.considerItem( name, item, "Bromine", 79.904 );
// FIXME this.considerItem( name, item, "Krypton", 83.8 );
// FIXME this.considerItem( name, item, "Rubidium", 85.4678 );
// FIXME this.considerItem( name, item, "Strontium", 87.62 );
// FIXME this.considerItem( name, item, "Yttrium", 88.9059 );
// FIXME this.considerItem( name, item, "Zirconiumm", 91.224 );
// FIXME this.considerItem( name, item, "Niobiumm", 92.9064 );
// FIXME this.considerItem( name, item, "Technetium", 98 );
// FIXME this.considerItem( name, item, "Ruthenium", 101.07 );
// FIXME this.considerItem( name, item, "Rhodium", 102.9055 );
// FIXME this.considerItem( name, item, "Palladium", 106.42 );
// FIXME this.considerItem( name, item, "Silver", 107.8682 );
// FIXME this.considerItem( name, item, "Cadmium", 112.411 );
// FIXME this.considerItem( name, item, "Indium", 114.818 );
// FIXME this.considerItem( name, item, "Tin", 118.71 );
// FIXME this.considerItem( name, item, "Antimony", 121.76 );
// FIXME this.considerItem( name, item, "Iodine", 126.9045 );
// FIXME this.considerItem( name, item, "Tellurium", 127.6 );
// FIXME this.considerItem( name, item, "Xenon", 131.293 );
// FIXME this.considerItem( name, item, "Cesium", 132.9055 );
// FIXME this.considerItem( name, item, "Barium", 137.327 );
// FIXME this.considerItem( name, item, "Lanthanum", 138.9055 );
// FIXME this.considerItem( name, item, "Cerium", 140.116 );
// FIXME this.considerItem( name, item, "Tantalum", 180.9479 );
// FIXME this.considerItem( name, item, "Tungsten", 183.84 );
// FIXME this.considerItem( name, item, "Osmium", 190.23 );
// FIXME this.considerItem( name, item, "Iridium", 192.217 );
// FIXME this.considerItem( name, item, "Platinum", 195.078 );
// FIXME this.considerItem( name, item, "Lead", 207.2 );
// FIXME this.considerItem( name, item, "Bismuth", 208.9804 );
// FIXME this.considerItem( name, item, "Uranium", 238.0289 );
// FIXME this.considerItem( name, item, "Plutonium", 244 );
// FIXME
// FIXME // TE stuff...
// FIXME this.considerItem( name, item, "Invar", ( 58.6934 + 55.845 + 55.845 ) / 3.0 );
// FIXME this.considerItem( name, item, "Electrum", ( 107.8682 + 196.96655 ) / 2.0 );
// FIXME }
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);
}
private void addTagWeight(String name, final double weight) {
this.registerAmmoTag(new ResourceLocation(name), weight);
}
}