2
0
Fork 0
You cannot select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

146 lines
5.7 KiB
Java

package com.zivilon.cinder_loe.items;
import com.zivilon.cinder_loe.LoECreativeTabs;
import com.zivilon.cinder_loe.entity.*;
import com.zivilon.cinder_loe.entity.corrupt.*;
import com.zivilon.cinder_loe.entity.npc.*;
import com.zivilon.cinder_loe.entity.npc.dwarf.RedDwarfArbalest;
import com.zivilon.cinder_loe.entity.npc.dwarf.RedDwarfBannerBearer;
import com.zivilon.cinder_loe.entity.npc.dwarf.RedDwarfCommander;
import com.zivilon.cinder_loe.entity.npc.dwarf.RedDwarfWarrior;
import com.zivilon.cinder_loe.entity.npc.evil_human.*;
import com.zivilon.cinder_loe.entity.npc.good_human.*;
import com.zivilon.cinder_loe.entity.npc.radagast.*;
import com.zivilon.cinder_loe.entity.trader.*;
import net.minecraft.creativetab.CreativeTabs;
import net.minecraft.entity.Entity;
import net.minecraft.entity.EntityLiving;
import net.minecraft.entity.EntityList;
import net.minecraft.entity.player.EntityPlayer;
import net.minecraft.item.Item;
import net.minecraft.item.ItemStack;
import net.minecraft.util.MathHelper;
import net.minecraft.util.MovingObjectPosition;
import net.minecraft.world.World;
import java.util.ArrayList;
import java.util.List;
public class CinderLoESpawnEgg extends Item {
public static List<Class<? extends Entity>> ENTITY_CLASSES = new ArrayList<>();
public String entity_type;
public CinderLoESpawnEgg() {
this.setTextureName("lotr:spawn_egg");
this.setCreativeTab(LoECreativeTabs.tabSpawnLoE);
setHasSubtypes(true);
}
@Override
public String getUnlocalizedName(ItemStack item) {
return "item.spawn_egg_" + getEntityUnlocalizedName(item.getItemDamage()).replaceFirst("^cinder_loe\\.", "");
}
public static Class<? extends Entity> getEntityClass(int meta) {
if (meta >= 0 && meta < ENTITY_CLASSES.size()) {
return ENTITY_CLASSES.get(meta);
}
return Renegade.class;
}
public static String getEntityUnlocalizedName(int meta) {
Class<? extends Entity> entityClass = getEntityClass(meta);
String unlocalizedName = (String) EntityList.classToStringMapping.get(entityClass);
return unlocalizedName != null ? unlocalizedName : "Unknown";
}
static {
ENTITY_CLASSES.add(Renegade.class);
ENTITY_CLASSES.add(RenegadeCaptain.class);
ENTITY_CLASSES.add(DarkSpider.class);
ENTITY_CLASSES.add(Wraith.class);
ENTITY_CLASSES.add(Limwaith.class);
ENTITY_CLASSES.add(LimwaithBoneWarrior.class);
ENTITY_CLASSES.add(LimwaithWarrior.class);
ENTITY_CLASSES.add(LimwaithBlowgunner.class);
ENTITY_CLASSES.add(LimwaithBannerBearer.class);
ENTITY_CLASSES.add(LimwaithChieftain.class);
ENTITY_CLASSES.add(RedDwarfWarrior.class);
ENTITY_CLASSES.add(RedDwarfArbalest.class);
ENTITY_CLASSES.add(RedDwarfBannerBearer.class);
ENTITY_CLASSES.add(RedDwarfCommander.class);
ENTITY_CLASSES.add(ArnorSoldier.class);
ENTITY_CLASSES.add(ArnorSoldierArcher.class);
ENTITY_CLASSES.add(ArnorBannerBearer.class);
ENTITY_CLASSES.add(BattleNun.class);
ENTITY_CLASSES.add(ArnorCaptain.class);
ENTITY_CLASSES.add(BreeSoldier.class);
ENTITY_CLASSES.add(BreeCrossbowman.class);
ENTITY_CLASSES.add(BreeOutrider.class);
ENTITY_CLASSES.add(BreeSoldierBannerBearer.class);
ENTITY_CLASSES.add(BreeCaptain.class);
ENTITY_CLASSES.add(FangornElk.class);
ENTITY_CLASSES.add(FangornBear.class);
ENTITY_CLASSES.add(FangornWildBoar.class);
ENTITY_CLASSES.add(FangornWolf.class);
ENTITY_CLASSES.add(FangornAuroch.class);
ENTITY_CLASSES.add(BladorthinSmith.class);
ENTITY_CLASSES.add(LimwaithFishmonger.class);
ENTITY_CLASSES.add(LimwaithShaman.class);
ENTITY_CLASSES.add(RedDwarfSmith.class);
ENTITY_CLASSES.add(CorruptDwarf.class);
ENTITY_CLASSES.add(CorruptElf.class);
ENTITY_CLASSES.add(CorruptEnt.class);
ENTITY_CLASSES.add(CorruptHobbit.class);
ENTITY_CLASSES.add(CorruptMan.class);
ENTITY_CLASSES.add(CorruptOrc.class);
ENTITY_CLASSES.add(HobbitBannerBearer.class);
}
@Override
public void getSubItems(Item item, CreativeTabs tab, List list) {
for (int i = 0; i < ENTITY_CLASSES.size(); i++) {
list.add(new ItemStack(item, 1, i));
}
}
public static void spawnCustomCreature(World world, Entity entity) {
if (entity instanceof EntityLiving) {
EntityLiving entityLiving = (EntityLiving)entity;
entityLiving.onSpawnWithEgg(null);
world.spawnEntityInWorld(entity);
entityLiving.playLivingSound();
}
}
@Override
public ItemStack onItemRightClick(ItemStack itemStack, World world, EntityPlayer player) {
if (!world.isRemote) {
MovingObjectPosition target = getMovingObjectPositionFromPlayer(world, player, true);
if (target != null && target.typeOfHit == MovingObjectPosition.MovingObjectType.BLOCK) {
int x = target.blockX;
int y = target.blockY;
int z = target.blockZ;
y += 1;
try {
Entity entity = getEntityClass(itemStack.getItemDamage()).getConstructor(World.class).newInstance(world);
entity.setLocationAndAngles(x + 0.5, y, z + 0.5, MathHelper.wrapAngleTo180_float(world.rand.nextFloat() * 360.0F), 0.0F);
spawnCustomCreature(world, entity);
} catch (Exception e) {
e.printStackTrace();
}
}
}
if (!player.capabilities.isCreativeMode) {
--itemStack.stackSize;
}
return itemStack;
}
}