add force shears
This commit is contained in:
parent
28489f4c26
commit
da5208c87c
|
@ -5,14 +5,20 @@ import cpw.mods.fml.common.SidedProxy;
|
|||
import cpw.mods.fml.common.event.FMLInitializationEvent;
|
||||
import cpw.mods.fml.common.event.FMLPostInitializationEvent;
|
||||
import cpw.mods.fml.common.event.FMLPreInitializationEvent;
|
||||
import cpw.mods.fml.common.registry.EntityRegistry;
|
||||
import cpw.mods.fml.relauncher.Side;
|
||||
import ley.modding.dartcraft.block.BlockPowerOre;
|
||||
import ley.modding.dartcraft.block.Blocks;
|
||||
import ley.modding.dartcraft.event.EventHandler;
|
||||
import ley.modding.dartcraft.internal.Registry;
|
||||
import ley.modding.dartcraft.entity.EntityColdChicken;
|
||||
import ley.modding.dartcraft.entity.EntityColdCow;
|
||||
import ley.modding.dartcraft.entity.EntityColdPig;
|
||||
import ley.modding.dartcraft.item.BaseItem;
|
||||
import ley.modding.dartcraft.item.Items;
|
||||
import ley.modding.dartcraft.item.tool.ItemForceMitts;
|
||||
import ley.modding.dartcraft.item.tool.ItemForcePickaxe;
|
||||
import ley.modding.dartcraft.item.tool.ItemForceShears;
|
||||
import ley.modding.dartcraft.proxy.CommonProxy;
|
||||
import ley.modding.dartcraft.tab.DartcraftTab;
|
||||
import ley.modding.tileralib.api.IRegistry;
|
||||
|
@ -27,6 +33,7 @@ public class Dartcraft {
|
|||
|
||||
@Mod.Instance
|
||||
public static Dartcraft instance = new Dartcraft();
|
||||
public static DartcraftClient client = new DartcraftClient();
|
||||
public static IRegistry registry;
|
||||
@SidedProxy(serverSide = "ley.modding.dartcraft.proxy.CommonProxy", clientSide = "ley.modding.dartcraft.proxy.ClientProxy")
|
||||
public static CommonProxy proxy;
|
||||
|
@ -34,28 +41,35 @@ public class Dartcraft {
|
|||
public static CreativeTabs tab = new DartcraftTab();
|
||||
|
||||
@Mod.EventHandler
|
||||
public void preInit(FMLPreInitializationEvent e)
|
||||
{
|
||||
public void preInit(FMLPreInitializationEvent e) {
|
||||
MinecraftForge.EVENT_BUS.register(new EventHandler());
|
||||
}
|
||||
|
||||
@Mod.EventHandler
|
||||
public void init(FMLInitializationEvent e)
|
||||
{
|
||||
public void init(FMLInitializationEvent e) {
|
||||
// TODO: use proxys
|
||||
if (e.getSide() == Side.CLIENT)
|
||||
client.init();
|
||||
|
||||
registry = new Registry();
|
||||
Items.forcegem = registry.registerItem(new BaseItem("forcegem"));
|
||||
Items.forceingot = registry.registerItem(new BaseItem("forceingot"));
|
||||
Items.forcenugget = registry.registerItem(new BaseItem("forcenugget"));
|
||||
Items.forcestick = registry.registerItem(new BaseItem("forcestick"));
|
||||
Items.forceshard = registry.registerItem(new BaseItem("forceshard"));
|
||||
registry.registerItem(new ItemForcePickaxe());
|
||||
registry.registerItem(new ItemForceMitts());
|
||||
Items.forcemitts = registry.registerItem(new ItemForceMitts());
|
||||
Items.forcepickaxe = registry.registerItem(new ItemForcePickaxe());
|
||||
Items.forceshears = registry.registerItem(new ItemForceShears());
|
||||
Blocks.powerore = registry.registerBlock(new BlockPowerOre());
|
||||
|
||||
int entityId = 0;
|
||||
EntityRegistry.registerModEntity(EntityColdChicken.class, "coldChicken", entityId++, Dartcraft.instance, 40, 1, true);
|
||||
EntityRegistry.registerModEntity(EntityColdCow.class, "coldCow", entityId++, Dartcraft.instance, 40, 1, true);
|
||||
EntityRegistry.registerModEntity(EntityColdPig.class, "coldPig", entityId++, Dartcraft.instance, 40, 1, true);
|
||||
}
|
||||
|
||||
@Mod.EventHandler
|
||||
public void postInit(FMLPostInitializationEvent e)
|
||||
{
|
||||
public void postInit(FMLPostInitializationEvent e) {
|
||||
|
||||
}
|
||||
|
||||
|
|
|
@ -0,0 +1,22 @@
|
|||
package ley.modding.dartcraft;
|
||||
|
||||
import cpw.mods.fml.client.registry.RenderingRegistry;
|
||||
import ley.modding.dartcraft.client.renderer.entity.RenderColdAnimal;
|
||||
import ley.modding.dartcraft.entity.EntityColdChicken;
|
||||
import ley.modding.dartcraft.entity.EntityColdCow;
|
||||
import ley.modding.dartcraft.entity.EntityColdPig;
|
||||
import net.minecraft.client.model.ModelChicken;
|
||||
import net.minecraft.client.model.ModelCow;
|
||||
import net.minecraft.client.model.ModelPig;
|
||||
|
||||
class DartcraftClient {
|
||||
public void init() {
|
||||
renderEntities();
|
||||
}
|
||||
|
||||
public void renderEntities() {
|
||||
RenderingRegistry.registerEntityRenderingHandler(EntityColdChicken.class, new RenderColdAnimal(new ModelChicken(), 0.6f, "textures/entity/coldChicken.png"));
|
||||
RenderingRegistry.registerEntityRenderingHandler(EntityColdCow.class, new RenderColdAnimal(new ModelCow(), 0.6f, "textures/entity/coldCow.png"));
|
||||
RenderingRegistry.registerEntityRenderingHandler(EntityColdPig.class, new RenderColdAnimal(new ModelPig(), 0.6f, "textures/entity/coldPig.png"));
|
||||
}
|
||||
}
|
|
@ -0,0 +1,24 @@
|
|||
package ley.modding.dartcraft.client.renderer.entity;
|
||||
|
||||
import cpw.mods.fml.relauncher.Side;
|
||||
import cpw.mods.fml.relauncher.SideOnly;
|
||||
import net.minecraft.client.model.ModelBase;
|
||||
import net.minecraft.client.renderer.entity.RenderLiving;
|
||||
import net.minecraft.entity.Entity;
|
||||
import net.minecraft.util.ResourceLocation;
|
||||
|
||||
@SideOnly(Side.CLIENT)
|
||||
public class RenderColdAnimal extends RenderLiving {
|
||||
private final ResourceLocation texture;
|
||||
|
||||
public RenderColdAnimal(ModelBase par1ModelBase, float par2, String textureLocation) {
|
||||
super(par1ModelBase, par2);
|
||||
|
||||
this.texture = new ResourceLocation("dartcraft", textureLocation);
|
||||
}
|
||||
|
||||
@Override
|
||||
protected ResourceLocation getEntityTexture(Entity entity) {
|
||||
return texture;
|
||||
}
|
||||
}
|
|
@ -0,0 +1,10 @@
|
|||
package ley.modding.dartcraft.entity;
|
||||
|
||||
import net.minecraft.entity.passive.EntityChicken;
|
||||
import net.minecraft.world.World;
|
||||
|
||||
public class EntityColdChicken extends EntityChicken {
|
||||
public EntityColdChicken(World world) {
|
||||
super(world);
|
||||
}
|
||||
}
|
|
@ -0,0 +1,10 @@
|
|||
package ley.modding.dartcraft.entity;
|
||||
|
||||
import net.minecraft.entity.passive.EntityCow;
|
||||
import net.minecraft.world.World;
|
||||
|
||||
public class EntityColdCow extends EntityCow {
|
||||
public EntityColdCow(World world) {
|
||||
super(world);
|
||||
}
|
||||
}
|
|
@ -0,0 +1,10 @@
|
|||
package ley.modding.dartcraft.entity;
|
||||
|
||||
import net.minecraft.entity.passive.EntityPig;
|
||||
import net.minecraft.world.World;
|
||||
|
||||
public class EntityColdPig extends EntityPig {
|
||||
public EntityColdPig(World world) {
|
||||
super(world);
|
||||
}
|
||||
}
|
|
@ -3,8 +3,18 @@ package ley.modding.dartcraft.event;
|
|||
import cpw.mods.fml.common.eventhandler.SubscribeEvent;
|
||||
import ley.modding.dartcraft.Dartcraft;
|
||||
import ley.modding.dartcraft.api.IBreakable;
|
||||
import ley.modding.dartcraft.entity.EntityColdChicken;
|
||||
import ley.modding.dartcraft.entity.EntityColdCow;
|
||||
import ley.modding.dartcraft.entity.EntityColdPig;
|
||||
import ley.modding.dartcraft.item.Items;
|
||||
import net.minecraft.entity.passive.EntityAnimal;
|
||||
import net.minecraft.entity.passive.EntityCow;
|
||||
import net.minecraft.entity.passive.EntityChicken;
|
||||
import net.minecraft.entity.passive.EntityPig;
|
||||
import net.minecraft.entity.player.EntityPlayer;
|
||||
import net.minecraft.item.ItemStack;
|
||||
import net.minecraft.world.World;
|
||||
import net.minecraftforge.event.entity.player.EntityInteractEvent;
|
||||
import net.minecraftforge.event.entity.player.PlayerDestroyItemEvent;
|
||||
|
||||
public class EventHandler {
|
||||
|
@ -21,4 +31,106 @@ public class EventHandler {
|
|||
}
|
||||
}
|
||||
|
||||
@SubscribeEvent
|
||||
public void onEntityInteract(EntityInteractEvent event) {
|
||||
if (!Dartcraft.proxy.isSimulating(event.target.worldObj))
|
||||
return;
|
||||
|
||||
ItemStack heldItem = event.entityPlayer.getHeldItem();
|
||||
if (heldItem != null && heldItem.getItem() != Items.forceshears)
|
||||
return;
|
||||
|
||||
if (event.target instanceof EntityAnimal) {
|
||||
EntityAnimal entity = (EntityAnimal)event.target;
|
||||
ColdEntityType type = ColdEntityType.fromClass(entity.getClass());
|
||||
|
||||
if (type == null)
|
||||
return;
|
||||
|
||||
EntityAnimal newEntity = type.newInstance(entity.worldObj);
|
||||
|
||||
double x = entity.posX;
|
||||
double y = entity.posY;
|
||||
double z = entity.posZ;
|
||||
float pitch = entity.rotationPitch;
|
||||
float yaw = entity.rotationYaw;
|
||||
float camPitch = entity.cameraPitch;
|
||||
float health = entity.getHealth();
|
||||
float fall = entity.fallDistance;
|
||||
boolean onFire = entity.isBurning();
|
||||
int air = entity.getAir();
|
||||
float speed = entity.getAIMoveSpeed();
|
||||
|
||||
World world = entity.worldObj;
|
||||
|
||||
entity.entityDropItem(type.getDrop(), 1.0f);
|
||||
world.playSoundAtEntity(entity, "random.pop", 1.0f, 1.0f);
|
||||
entity.setDead();
|
||||
world.removeEntity(entity);
|
||||
|
||||
newEntity.setPositionAndRotation(x, y, z, yaw, pitch);
|
||||
newEntity.cameraPitch = camPitch;
|
||||
newEntity.setHealth(health);
|
||||
newEntity.fallDistance = fall;
|
||||
if (onFire)
|
||||
newEntity.setFire(1);
|
||||
newEntity.setAir(air);
|
||||
newEntity.setAIMoveSpeed(speed);
|
||||
|
||||
world.spawnEntityInWorld(newEntity);
|
||||
}
|
||||
}
|
||||
|
||||
enum ColdEntityType {
|
||||
COW(EntityCow.class),
|
||||
CHICKEN(EntityChicken.class),
|
||||
PIG(EntityPig.class);
|
||||
|
||||
ColdEntityType(Class<? extends EntityAnimal> clazz) {
|
||||
this.clazz = clazz;
|
||||
}
|
||||
|
||||
Class<? extends EntityAnimal> clazz;
|
||||
|
||||
static ColdEntityType fromClass(Class<?> clazz) {
|
||||
for (ColdEntityType v : ColdEntityType.values()) {
|
||||
if (v.clazz == clazz) {
|
||||
return v;
|
||||
}
|
||||
}
|
||||
return null;
|
||||
}
|
||||
|
||||
EntityAnimal newInstance(World world) {
|
||||
switch (this) {
|
||||
case COW:
|
||||
return new EntityColdCow(world);
|
||||
case PIG:
|
||||
return new EntityColdPig(world);
|
||||
case CHICKEN:
|
||||
return new EntityColdChicken(world);
|
||||
|
||||
// why is the compiler so stupid to think that this is required?
|
||||
default:
|
||||
return null;
|
||||
}
|
||||
}
|
||||
|
||||
ItemStack getDrop() {
|
||||
// gotta use full names here, because tilera had the brilliant idea to call the mod item class "Items"
|
||||
switch (this) {
|
||||
case COW:
|
||||
return new ItemStack(net.minecraft.init.Items.leather);
|
||||
case PIG:
|
||||
// TODO: add bacon item
|
||||
return new ItemStack(net.minecraft.init.Items.porkchop);
|
||||
case CHICKEN:
|
||||
return new ItemStack(net.minecraft.init.Items.feather);
|
||||
|
||||
// why is the compiler so stupid to think that this is required?
|
||||
default:
|
||||
return null;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
|
@ -1,13 +1,12 @@
|
|||
package ley.modding.dartcraft.item;
|
||||
|
||||
import ley.modding.dartcraft.Dartcraft;
|
||||
import ley.modding.dartcraft.util.Util;
|
||||
import net.minecraft.item.Item;
|
||||
|
||||
public class BaseItem extends Item {
|
||||
|
||||
public BaseItem(String id) {
|
||||
setUnlocalizedName(id);
|
||||
setTextureName(Dartcraft.MODID + ":" + id);
|
||||
setCreativeTab(Dartcraft.tab);
|
||||
Util.configureItem(this, id);
|
||||
}
|
||||
}
|
||||
|
|
|
@ -9,5 +9,8 @@ public class Items {
|
|||
public static Item forcenugget;
|
||||
public static Item forcestick;
|
||||
public static Item forceshard;
|
||||
public static Item forceshears;
|
||||
public static Item forcepickaxe;
|
||||
public static Item forcemitts;
|
||||
|
||||
}
|
||||
|
|
|
@ -7,6 +7,7 @@ import ley.modding.dartcraft.api.IBreakable;
|
|||
import ley.modding.dartcraft.api.IForceConsumer;
|
||||
import ley.modding.dartcraft.item.Items;
|
||||
import ley.modding.dartcraft.util.ForceConsumerUtils;
|
||||
import ley.modding.dartcraft.util.Util;
|
||||
import net.minecraft.client.renderer.texture.IIconRegister;
|
||||
import net.minecraft.entity.player.EntityPlayer;
|
||||
import net.minecraft.item.EnumRarity;
|
||||
|
@ -28,9 +29,7 @@ public class ItemForcePickaxe extends ItemPickaxe implements IBreakable, IForceC
|
|||
|
||||
public ItemForcePickaxe() {
|
||||
super(material);
|
||||
setUnlocalizedName("forcepickaxe");
|
||||
setTextureName(Dartcraft.MODID + ":forcepickaxe");
|
||||
setCreativeTab(Dartcraft.tab);
|
||||
Util.configureItem(this, "forcepickaxe");
|
||||
}
|
||||
|
||||
@Override
|
||||
|
|
|
@ -0,0 +1,47 @@
|
|||
package ley.modding.dartcraft.item.tool;
|
||||
|
||||
import ley.modding.dartcraft.Dartcraft;
|
||||
import ley.modding.dartcraft.api.IBreakable;
|
||||
import ley.modding.dartcraft.api.IForceConsumer;
|
||||
import ley.modding.dartcraft.item.Items;
|
||||
import ley.modding.dartcraft.util.ForceConsumerUtils;
|
||||
import ley.modding.dartcraft.util.Util;
|
||||
import net.minecraft.item.ItemShears;
|
||||
import net.minecraft.item.ItemStack;
|
||||
|
||||
public class ItemForceShears extends ItemShears implements IBreakable, IForceConsumer {
|
||||
public ItemForceShears() {
|
||||
super();
|
||||
Util.configureItem(this, "forceshears");
|
||||
}
|
||||
|
||||
@Override
|
||||
public ItemStack itemReturned() {
|
||||
return new ItemStack(Items.forceshard);
|
||||
}
|
||||
|
||||
@Override
|
||||
public int getStored(ItemStack stack) {
|
||||
return ForceConsumerUtils.getStoredForce(stack);
|
||||
}
|
||||
|
||||
@Override
|
||||
public int getMaxStored(ItemStack stack) {
|
||||
return 10000;
|
||||
}
|
||||
|
||||
@Override
|
||||
public int amountUsedBase(ItemStack stack) {
|
||||
return 0;
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean useForce(ItemStack stack, int var2, boolean var3) {
|
||||
return false;
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean attemptRepair(ItemStack stack) {
|
||||
return ForceConsumerUtils.attemptRepair(stack);
|
||||
}
|
||||
}
|
|
@ -0,0 +1,12 @@
|
|||
package ley.modding.dartcraft.util;
|
||||
|
||||
import ley.modding.dartcraft.Dartcraft;
|
||||
import net.minecraft.item.Item;
|
||||
|
||||
public class Util {
|
||||
public static void configureItem(Item item, String id) {
|
||||
item.setUnlocalizedName(id);
|
||||
item.setTextureName(Dartcraft.MODID + ":" + id);
|
||||
item.setCreativeTab(Dartcraft.tab);
|
||||
}
|
||||
}
|
|
@ -4,5 +4,6 @@ item.forcenugget.name=Force Nugget
|
|||
item.forcestick.name=Force Stick
|
||||
item.forceshard.name=Force Shard
|
||||
item.forcemitts.name=Force Mitts
|
||||
item.forceshears.name=Force Shears
|
||||
|
||||
itemGroup.dartcraft=Dartcraft
|
||||
|
|
Binary file not shown.
After Width: | Height: | Size: 3.8 KiB |
Binary file not shown.
After Width: | Height: | Size: 4.2 KiB |
Binary file not shown.
After Width: | Height: | Size: 7.9 KiB |
Binary file not shown.
After Width: | Height: | Size: 3.0 KiB |
Loading…
Reference in New Issue