package joshie.harvest.mining.item;
import joshie.harvest.core.HFTab;
import joshie.harvest.core.base.item.ItemHFEnum;
import joshie.harvest.mining.entity.EntityDarkChick;
import joshie.harvest.mining.entity.EntityDarkChicken;
import joshie.harvest.mining.entity.EntityDarkCow;
import joshie.harvest.mining.entity.EntityDarkSheep;
import joshie.harvest.mining.item.ItemDarkSpawner.DarkSpawner;
import net.minecraft.client.renderer.block.model.ModelResourceLocation;
import net.minecraft.entity.monster.EntityMob;
import net.minecraft.entity.player.EntityPlayer;
import net.minecraft.item.Item;
import net.minecraft.item.ItemStack;
import net.minecraft.util.*;
import net.minecraft.util.math.BlockPos;
import net.minecraft.world.World;
import net.minecraftforge.client.model.ModelLoader;
import net.minecraftforge.fml.relauncher.Side;
import net.minecraftforge.fml.relauncher.SideOnly;
import java.util.Locale;
import static joshie.harvest.core.lib.HFModInfo.MODID;
public class ItemDarkSpawner extends ItemHFEnum<ItemDarkSpawner, DarkSpawner> {
public enum DarkSpawner implements IStringSerializable {
COW, SHEEP, CHICKEN, CHICK;
@Override
public String getName() {
return name().toLowerCase(Locale.ENGLISH);
}
}
public ItemDarkSpawner() {
super(HFTab.MINING, DarkSpawner.class);
}
public EntityMob getEntityFromEnum(World world, DarkSpawner spawner) {
switch (spawner) {
case COW:
return new EntityDarkCow(world);
case SHEEP:
return new EntityDarkSheep(world);
case CHICKEN:
return new EntityDarkChicken(world);
case CHICK:
return new EntityDarkChick(world);
default:
return null;
}
}
@Override
public EnumActionResult onItemUse(ItemStack stack, EntityPlayer player, World world, BlockPos pos, EnumHand hand, EnumFacing facing, float hitX, float hitY, float hitZ) {
if (!world.isRemote) {
EntityMob entity = getEntityFromEnum(world, getEnumFromStack(stack));
if (entity != null) {
entity.setPosition(pos.getX() + 0.5, pos.getY() + 1, pos.getZ() + 0.5);
world.spawnEntityInWorld(entity);
}
}
stack.splitStack(1);
return EnumActionResult.FAIL;
}
@SideOnly(Side.CLIENT)
@Override
public void registerModels(Item item, String name) {
for (int i = 0; i < values.length; i++) {
ModelLoader.setCustomModelResourceLocation(item, i, new ModelResourceLocation(new ResourceLocation(MODID, "dark_spawner_" + values[i].name().toLowerCase(Locale.ENGLISH)), "inventory"));
}
}
}