diff --git a/src/dark/core/common/items/ItemBattery.java b/src/dark/core/common/items/ItemBattery.java index dafec71c..b3752995 100644 --- a/src/dark/core/common/items/ItemBattery.java +++ b/src/dark/core/common/items/ItemBattery.java @@ -3,16 +3,19 @@ package dark.core.common.items; import net.minecraft.client.renderer.texture.IconRegister; import net.minecraft.creativetab.CreativeTabs; import net.minecraft.item.ItemStack; +import net.minecraftforge.common.Configuration; +import net.minecraftforge.oredict.OreDictionary; import universalelectricity.core.item.ItemElectric; import cpw.mods.fml.relauncher.Side; import cpw.mods.fml.relauncher.SideOnly; import dark.core.common.DarkMain; +import dark.core.interfaces.IExtraInfo.IExtraItemInfo; import dark.core.prefab.ModPrefab; /** Simple battery to store energy * * @author DarkGuardsman */ -public class ItemBattery extends ItemElectric +public class ItemBattery extends ItemElectric implements IExtraItemInfo { public ItemBattery() { @@ -45,4 +48,23 @@ public class ItemBattery extends ItemElectric { return 5000; } + + @Override + public boolean hasExtraConfigs() + { + return false; + } + + @Override + public void loadExtraConfigs(Configuration config) + { + // TODO Auto-generated method stub + + } + + @Override + public void loadOreNames() + { + OreDictionary.registerOre("Battery", this); + } } diff --git a/src/dark/core/prefab/LaserEntityDamageSource.java b/src/dark/core/prefab/LaserEntityDamageSource.java new file mode 100644 index 00000000..8a6f46bd --- /dev/null +++ b/src/dark/core/prefab/LaserEntityDamageSource.java @@ -0,0 +1,55 @@ +package dark.core.prefab; + +import net.minecraft.entity.Entity; +import net.minecraft.entity.monster.EntityCreeper; +import net.minecraft.entity.player.EntityPlayer; +import net.minecraft.item.Item; +import net.minecraft.item.ItemStack; +import net.minecraft.util.EntityDamageSource; +import net.minecraftforge.event.ForgeSubscribe; +import net.minecraftforge.event.entity.living.LivingAttackEvent; +import net.minecraftforge.event.entity.living.LivingDeathEvent; + +public class LaserEntityDamageSource extends EntityDamageSource +{ + public LaserEntityDamageSource(Entity par2Entity) + { + super("Laser", par2Entity); + } + + @ForgeSubscribe + public void LivingDeathEvent(LivingDeathEvent event) + { + if (event.entity instanceof EntityCreeper) + { + if (!event.entity.worldObj.isRemote && event.source instanceof LaserEntityDamageSource) + { + boolean flag = event.entity.worldObj.getGameRules().getGameRuleBooleanValue("mobGriefing"); + + if (((EntityCreeper) event.entity).getPowered()) + { + event.entity.worldObj.createExplosion(event.entity, event.entity.posX, event.entity.posY, event.entity.posZ, 3 * 2, flag); + } + else + { + event.entity.worldObj.createExplosion(event.entity, event.entity.posX, event.entity.posY, event.entity.posZ, 3, flag); + } + } + } + } + + @ForgeSubscribe + public void LivingAttackEvent(LivingAttackEvent event) + { + if (event.entity instanceof EntityPlayer) + { + if (((EntityPlayer) event.entity).inventory.armorItemInSlot(3) == new ItemStack(Item.plateDiamond, 1)) + { + if(event.isCancelable()) + { + event.setCanceled(true); + } + } + } + } +} diff --git a/src/dark/core/prefab/ModPrefab.java b/src/dark/core/prefab/ModPrefab.java index 766a079a..c6220caa 100644 --- a/src/dark/core/prefab/ModPrefab.java +++ b/src/dark/core/prefab/ModPrefab.java @@ -105,6 +105,7 @@ public abstract class ModPrefab { MinecraftForge.EVENT_BUS.register(new FluidHelper()); MinecraftForge.EVENT_BUS.register(SaveManager.instance()); + MinecraftForge.EVENT_BUS.register(new LaserEntityDamageSource(null)); TickRegistry.registerTickHandler(NetworkUpdateHandler.instance(), Side.SERVER); TickRegistry.registerScheduledTickHandler(new PlayerKeyHandler(), Side.CLIENT); UniversalElectricity.initiate();