blob: c11e57036d1110ab0fd1323c60272113768fc1fa [file] [log] [blame] [raw]
package com.gildedgames.the_aether.api;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Random;
import com.gildedgames.the_aether.api.accessories.AetherAccessory;
import com.gildedgames.the_aether.api.enchantments.AetherEnchantment;
import com.gildedgames.the_aether.api.enchantments.AetherEnchantmentFuel;
import com.gildedgames.the_aether.api.freezables.AetherFreezable;
import com.gildedgames.the_aether.api.freezables.AetherFreezableFuel;
import com.gildedgames.the_aether.api.moa.AetherMoaType;
import com.gildedgames.the_aether.api.player.IPlayerAether;
import net.minecraft.entity.player.EntityPlayer;
import net.minecraft.item.ItemStack;
import net.minecraft.util.ResourceLocation;
public class AetherAPI {
private static final HashMap<ResourceLocation, AetherAccessory> iAccessoryRegistry = new HashMap<ResourceLocation, AetherAccessory>(4096);
private static final HashMap<ResourceLocation, AetherEnchantment> iEnchantmentRegistry = new HashMap<ResourceLocation, AetherEnchantment>(4096);
private static final HashMap<ResourceLocation, AetherEnchantmentFuel> iEnchantmentFuelRegistry = new HashMap<ResourceLocation, AetherEnchantmentFuel>(4096);
private static final HashMap<ResourceLocation, AetherFreezable> iFreezableRegistry = new HashMap<ResourceLocation, AetherFreezable>(4096);
private static final HashMap<ResourceLocation, AetherFreezableFuel> iFreezableFuelRegistry = new HashMap<ResourceLocation, AetherFreezableFuel>(4096);
private static final HashMap<ResourceLocation, AetherMoaType> iMoaTypeRegistry = new HashMap<ResourceLocation, AetherMoaType>(4096);
private static final AetherAPI instance = new AetherAPI();
public static final IPlayerAether get(EntityPlayer playerIn) {
return (IPlayerAether) playerIn.getExtendedProperties("aether_legacy:player_aether");
}
public AetherAccessory register(AetherAccessory type) {
ItemStack stack = type.getAccessoryStack();
ResourceLocation registryName = new ResourceLocation(stack.getItem().getUnlocalizedName().toString() + "_meta_" + (stack.isItemStackDamageable() ? 0 : stack.getItemDamage()));
iAccessoryRegistry.put(registryName, (AetherAccessory) type.setRegistryName(registryName));
return type;
}
public AetherEnchantment register(AetherEnchantment type) {
ItemStack stack = type.getInput();
ResourceLocation registryName = new ResourceLocation(stack.getItem().getUnlocalizedName().toString() + "_meta_" + (stack.isItemStackDamageable() ? 0 : stack.getItemDamage()));
iEnchantmentRegistry.put(registryName, (AetherEnchantment) type.setRegistryName(registryName));
return type;
}
public AetherEnchantmentFuel register(AetherEnchantmentFuel type) {
ItemStack stack = type.getFuelStack();
ResourceLocation registryName = new ResourceLocation(stack.getItem().getUnlocalizedName().toString() + "_meta_" + (stack.isItemStackDamageable() ? 0 : stack.getItemDamage()));
iEnchantmentFuelRegistry.put(registryName, (AetherEnchantmentFuel) type.setRegistryName(registryName));
return type;
}
public AetherFreezable register(AetherFreezable type) {
ItemStack stack = type.getInput();
ResourceLocation registryName = new ResourceLocation(stack.getItem().getUnlocalizedName().toString() + "_meta_" + (stack.isItemStackDamageable() ? 0 : stack.getItemDamage()));
iFreezableRegistry.put(registryName, (AetherFreezable) type.setRegistryName(registryName));
return type;
}
public AetherFreezableFuel register(AetherFreezableFuel type) {
ItemStack stack = type.getFuelStack();
ResourceLocation registryName = new ResourceLocation(stack.getItem().getUnlocalizedName().toString() + "_meta_" + (stack.isItemStackDamageable() ? 0 : stack.getItemDamage()));
iFreezableFuelRegistry.put(registryName, (AetherFreezableFuel) type.setRegistryName(registryName));
return type;
}
public AetherMoaType register(String modId, String name, AetherMoaType type) {
iMoaTypeRegistry.put(new ResourceLocation(modId, name), (AetherMoaType) type.setRegistryName(modId, name));
return type;
}
public AetherMoaType register(ResourceLocation registryName, AetherMoaType type) {
iMoaTypeRegistry.put(registryName, (AetherMoaType) type.setRegistryName(registryName));
return type;
}
public boolean isAccessory(ItemStack stack) {
return iAccessoryRegistry.containsKey(new ResourceLocation(stack.getItem().getUnlocalizedName().toString() + "_meta_" + (stack.isItemStackDamageable() ? 0 : stack.getItemDamage())));
}
public AetherAccessory getAccessory(ItemStack stack) {
return iAccessoryRegistry.get(new ResourceLocation(stack.getItem().getUnlocalizedName().toString() + "_meta_" + (stack.isItemStackDamageable() ? 0 : stack.getItemDamage())));
}
public boolean hasEnchantment(ItemStack stack) {
return iEnchantmentRegistry.containsKey(new ResourceLocation(stack.getItem().getUnlocalizedName().toString() + "_meta_" + (stack.isItemStackDamageable() ? 0 : stack.getItemDamage())));
}
public AetherEnchantment getEnchantment(ItemStack stack) {
return iEnchantmentRegistry.get(new ResourceLocation(stack.getItem().getUnlocalizedName().toString() + "_meta_" + (stack.isItemStackDamageable() ? 0 : stack.getItemDamage())));
}
public boolean isEnchantmentFuel(ItemStack stack) {
return iEnchantmentFuelRegistry.containsKey(new ResourceLocation(stack.getItem().getUnlocalizedName().toString() + "_meta_" + (stack.isItemStackDamageable() ? 0 : stack.getItemDamage())));
}
public AetherEnchantmentFuel getEnchantmentFuel(ItemStack stack) {
return iEnchantmentFuelRegistry.get(new ResourceLocation(stack.getItem().getUnlocalizedName().toString() + "_meta_" + (stack.isItemStackDamageable() ? 0 : stack.getItemDamage())));
}
public boolean hasFreezable(ItemStack stack) {
return iFreezableRegistry.containsKey(new ResourceLocation(stack.getItem().getUnlocalizedName().toString() + "_meta_" + (stack.isItemStackDamageable() ? 0 : stack.getItemDamage())));
}
public AetherFreezable getFreezable(ItemStack stack) {
return iFreezableRegistry.get(new ResourceLocation(stack.getItem().getUnlocalizedName().toString() + "_meta_" + (stack.isItemStackDamageable() ? 0 : stack.getItemDamage())));
}
public boolean isFreezableFuel(ItemStack stack) {
return iFreezableFuelRegistry.containsKey(new ResourceLocation(stack.getItem().getUnlocalizedName().toString() + "_meta_" + (stack.isItemStackDamageable() ? 0 : stack.getItemDamage())));
}
public AetherFreezableFuel getFreezableFuel(ItemStack stack) {
return iFreezableFuelRegistry.get(new ResourceLocation(stack.getItem().getUnlocalizedName().toString() + "_meta_" + (stack.isItemStackDamageable() ? 0 : stack.getItemDamage())));
}
public List<AetherEnchantment> getEnchantmentValues() {
return new ArrayList<AetherEnchantment>(iEnchantmentRegistry.values());
}
public List<AetherFreezable> getFreezableValues() {
return new ArrayList<AetherFreezable>(iFreezableRegistry.values());
}
public List<AetherMoaType> getMoaTypeValues() {
return new ArrayList<AetherMoaType>(iMoaTypeRegistry.values());
}
public int getMoaTypeId(AetherMoaType type) {
return this.getMoaTypeValues().indexOf(type);
}
public AetherMoaType getMoaType(int id) {
return this.getMoaTypeValues().get(id);
}
public AetherMoaType getRandomMoaType() {
return this.getMoaTypeValues().get(new Random().nextInt(this.getMoaTypeSize()));
}
public int getMoaTypeSize() {
return this.getMoaTypeValues().size();
}
public static AetherAPI instance() {
return instance;
}
}