Jump to content

how to add a drop to a vanilla mob [1.7.10]


2FastAssassin

Recommended Posts

Subscribe to the LivingDropsEvent event

Apparently I'm a complete and utter jerk and come to this forum just like to make fun of people, be confrontational, and make your personal life miserable.  If you think this is the case, JUST REPORT ME.  Otherwise you're just going to get reported when you reply to my posts and point it out, because odds are, I was trying to be nice.

 

Exception: If you do not understand Java, I WILL NOT HELP YOU and your thread will get locked.

 

DO NOT PM ME WITH PROBLEMS. No help will be given.

Link to comment
Share on other sites

Is this supose to be 100% drop because it didnt drop my item

 

Code:

 

package wearethewarriorsmod;

 

import wearethewarriorsmod.item.ItemAncientsword;

import wearethewarriorsmod.item.ItemDragonsword;

import wearethewarriorsmod.item.ItemSwordofcorruptedsouls;

import wearethewarriorsmod.worldgen.souloreWG;

import net.minecraft.block.Block;

import net.minecraft.block.material.Material;

import net.minecraft.creativetab.CreativeTabs;

import net.minecraft.entity.boss.EntityWither;

import net.minecraft.entity.item.EntityItem;

import net.minecraft.init.Items;

import net.minecraft.item.Item;

import net.minecraft.item.ItemStack;

import net.minecraft.util.WeightedRandomChestContent;

import net.minecraftforge.common.ChestGenHooks;

import net.minecraftforge.common.util.EnumHelper;

import net.minecraftforge.event.entity.living.LivingDropsEvent;

import cpw.mods.fml.common.Mod;

import cpw.mods.fml.common.Mod.EventHandler;

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.eventhandler.EventPriority;

import cpw.mods.fml.common.eventhandler.SubscribeEvent;

import cpw.mods.fml.common.registry.GameRegistry;

 

@Mod(modid = "watwm", name = "We Are The Warriors Mod", version = "1.0")

 

 

public class WeAreTheWarriorsMod {

 

@SubscribeEvent(priority=EventPriority.NORMAL, receiveCanceled=true)

public void onEvent(LivingDropsEvent event)

{

    if (event.entity instanceof EntityWither)

    {

        // DEBUG

        System.out.println("EntityWither drops event");

        ItemStack itemStackToDrop = new ItemStack(itemcorruptedsoul, 1);

        event.drops.add(new EntityItem(event.entity.worldObj, event.entity.posX,

              event.entity.posY, event.entity.posZ, itemStackToDrop));

    }

}

 

//items

public static Item itemsoulshard;

public static Item itemcorruptedsoulgem;

public static Item itemdragonrod;

public static Item itemflamedust;

public static Item itemcorruptedsoul;

 

//Blocks

public static Block blocksoulore;

 

//swords

public static Item swordofcorruptedsouls;

public static Item dragonsword;

public static Item ancientsword;

 

public static final Item.ToolMaterial corruptedToolMaterial = EnumHelper.addToolMaterial("corruptedToolMaterial", 0, 200000, 1.0F, 45.0F, 100);

public static final Item.ToolMaterial dragonToolMaterial = EnumHelper.addToolMaterial("dragonToolMaterial", 0, 20000, 1.0F, 20.0F, 100);

public static final Item.ToolMaterial ancientToolMaterial = EnumHelper.addToolMaterial("ancientToolMaterial", 0, 100, 0.0F, 1.0F, 0);

 

    @EventHandler

    public void preInit(FMLPreInitializationEvent event) {

   

    //Items

itemsoulshard = new Itemsoulshard().setUnlocalizedName("Itemsoulshard").setTextureName("watwm:soul_shard").setCreativeTab(tabWeAreTheWarriorsMod);

    itemcorruptedsoulgem = new Itemcorruptedsoulgem().setUnlocalizedName("Itemcorruptedsoulgem").setTextureName("watwm:corrupted_soul_gem").setCreativeTab(tabWeAreTheWarriorsMod);

    itemdragonrod = new Itemdragonrod().setUnlocalizedName("Itemdragonrod").setTextureName("watwm:dragon_rod").setCreativeTab(tabWeAreTheWarriorsMod);

    itemflamedust = new Itemflamedust().setUnlocalizedName("Itemflamedust").setTextureName("watwm:flame_dust").setCreativeTab(tabWeAreTheWarriorsMod);

    itemcorruptedsoul = new itemcorruptedsoul().setUnlocalizedName("Itemcorruptedsoul").setTextureName("watwm:corrupted_soul").setCreativeTab(tabWeAreTheWarriorsMod);

   

    GameRegistry.registerItem(itemsoulshard, itemsoulshard.getUnlocalizedName().substring(5));

    GameRegistry.registerItem(itemcorruptedsoulgem, itemcorruptedsoulgem.getUnlocalizedName().substring(5));

    GameRegistry.registerItem(itemdragonrod, itemdragonrod.getUnlocalizedName().substring(5));

    GameRegistry.registerItem(itemflamedust, itemflamedust.getUnlocalizedName().substring(5));

    GameRegistry.registerItem(itemcorruptedsoul, itemcorruptedsoul.getUnlocalizedName().substring(5));

   

    //Blocks

    blocksoulore = new blocksoulore(Material.rock).setBlockName("Blocksoulore").setBlockTextureName("watwm:soul_ore").setCreativeTab(tabWeAreTheWarriorsMod);

   

    GameRegistry.registerBlock(blocksoulore, blocksoulore.getUnlocalizedName().substring(5));

   

    //Swords

    swordofcorruptedsouls = new ItemSwordofcorruptedsouls(corruptedToolMaterial).setUnlocalizedName("ItemSwordofcorruptedsouls").setTextureName("watwm:sword_of_corrupted_souls").setCreativeTab(tabWeAreTheWarriorsMod);

    dragonsword = new ItemDragonsword(dragonToolMaterial).setUnlocalizedName("ItemDragonsword").setTextureName("watwm:dragon_sword").setCreativeTab(tabWeAreTheWarriorsMod);

    ancientsword = new ItemAncientsword(ancientToolMaterial).setUnlocalizedName("ItemAncientsword").setTextureName("watwm:ancient_sword").setCreativeTab(tabWeAreTheWarriorsMod);

   

    GameRegistry.registerItem(swordofcorruptedsouls, swordofcorruptedsouls.getUnlocalizedName().substring(5));

    GameRegistry.registerItem(dragonsword, dragonsword.getUnlocalizedName().substring(5));

    GameRegistry.registerItem(ancientsword, ancientsword.getUnlocalizedName().substring(5));

   

    //Ores

    souloreWG worldgen1 = new souloreWG();

    GameRegistry.registerWorldGenerator(worldgen1, 1);

   

    //Recipes

    GameRegistry.addRecipe(new ItemStack(itemcorruptedsoulgem, 1), new Object[]{"AAA", "ABA", "AAA", Character.valueOf('A'), new ItemStack(itemsoulshard, 1, 0),Character.valueOf('B'), new ItemStack(itemcorruptedsoul, 1, 0)});

    GameRegistry.addRecipe(new ItemStack(itemflamedust, 1), new Object[] {" A ", "AAA", " A ", Character.valueOf('A'), new ItemStack(Items.blaze_rod, 1, 0)});

    GameRegistry.addRecipe(new ItemStack(itemdragonrod, 1), new Object [] {" A ", " A ", " A ", Character.valueOf('A'), new ItemStack(itemflamedust, 1, 0)});

    GameRegistry.addRecipe(new ItemStack(swordofcorruptedsouls, 1), new Object [] {" A ", " A ", " X ", Character.valueOf('A'), new ItemStack(itemcorruptedsoulgem, 1, 0), Character.valueOf('X'), Items.stick});

    GameRegistry.addRecipe(new ItemStack(dragonsword, 1), new Object [] {" A ", " A ", " X ", Character.valueOf('A'), new ItemStack(itemdragonrod, 1, 0), Character.valueOf('X'), Items.blaze_rod});

   

    //Custom Dungeon Loot

    ChestGenHooks.getInfo(ChestGenHooks.DUNGEON_CHEST).addItem(new WeightedRandomChestContent(new ItemStack(ancientsword),1,1,5));

}

@EventHandler

    public void postInit(FMLPostInitializationEvent event) {

    }

    public static CreativeTabs tabWeAreTheWarriorsMod = new CreativeTabs("tabWeAreTheWarriorsMod"){

    @Override

    public Item getTabIconItem(){

    return itemcorruptedsoulgem;

    }

   

    };

    }

 

 

Link to comment
Share on other sites

Remove that onEvent method from your WeAreTheWarriorsMod class, then create a new class called ForgeEventHandler (or something like that), and add the following method to it:

 

@SubscribeEvent

public void onLivingItemDropped(LivingDropsEvent event){}

 

You can handle the item drops in that method. Then in your @Mod class, create a new public static ForgeEventHandler object, then register it in your postInit method with MinecraftForge.EVENT_BUS.register(forgeEventHandler).

Potato's have skin. I have skin. Therefore, i am a potato.

 

Follow me on Twitter!

http://www.twitter.com/I_Mod_Minecraft

Link to comment
Share on other sites

I added this to the postInit:

 

MinecraftForge.EVENT_BUS.register(new EntityWither());

 

and it says "add argument to match "EntityWither(World)"" and I clicked on it and it adds a null, so I took it out but thats the only fix it says

Link to comment
Share on other sites

is this correct for making the method:

 

public static int onLivingItemDropped(int a, int b) {

return b;

}

 

and if it is how do I edit the drops

Link to comment
Share on other sites

Create a class called "EventHandler". After that add this method:

 

@SubscribeEvent
public void onLivingDrop(LivingDropsEvent event) {
	if(event.entity instanceof EntityWither) {
		ItemStack itemStackToDrop = new ItemStack(itemcorruptedsoul, 1);
           event.drops.add(new EntityItem(event.entity.worldObj, event.entity.posX, event.entity.posY, event.entity.posZ, itemStackToDrop));
	}
}

 

Next, go into your main class and go into the init method and register your event handler:

 

@EventHandler //MAKE SURE YOU HAVE THIS ANNOTATION 
public void init(FMLInitializationEvent event) {
	MinecraftForge.EVENT_BUS.register(new EventHandler());
	FMLCommonHandler.instance().bus().register(new EventHandler()); //Only add this if your event doesn't fire with the first register.
}

 

Now go run your mod and see if it works. I encourage you to learn more about Java so you can have a understanding on how the game works. Don't go looking around for copy and paste code. Go on the wonderful journey of trial and error until you finally figure out your problem and smile at the accomplishment.

I am not a cat. I know my profile picture is sexy and amazing beyond anything you could imagine but my cat like features only persist in my fierce eyes. I might be a cat.

Link to comment
Share on other sites

thanks for that I will try to learn java more, at the moment i just find it a bit hard to understand how the say it in articles, im more a visual learner like from vids and stuff. havent seen if it works yet because :

}

    @EventHandler

    public void Init(FMLInitializationEvent event) {

    MinecraftForge.EVENT_BUS.register(new EventHandler());

    FMLCommonHandler.instance().bus().register(new EventHandler());

   

    }

The two EventHandlers in the brackets are underlined and say: cant Instintaite the type Mod.EventHandler

Link to comment
Share on other sites

Did you import it? Also, you made EventHandler a separate class, right? If that is all true, then make sure you're registering your EventHandler CLASS and not the method.

I am not a cat. I know my profile picture is sexy and amazing beyond anything you could imagine but my cat like features only persist in my fierce eyes. I might be a cat.

Link to comment
Share on other sites

package wearethewarriorsmod;

 

import cpw.mods.fml.common.eventhandler.SubscribeEvent;

import net.minecraft.entity.boss.EntityWither;

import net.minecraft.entity.item.EntityItem;

import net.minecraft.item.ItemStack;

import net.minecraftforge.event.entity.living.LivingDropsEvent;

 

my EventHolder class:

 

public class EventHandler {

@SubscribeEvent

public void onLivingDrop(LivingDropsEvent event) {

if(event.entity instanceof EntityWither) {

ItemStack itemStackToDrop = new ItemStack(itemcorruptedsoul, 1);

          event.drops.add(new EntityItem(event.entity.worldObj, event.entity.posX, event.entity.posY, event.entity.posZ, itemStackToDrop));

}

}

}

Link to comment
Share on other sites

Instead of doing "itemcorruptedsoul" do "yourmod.itemcorruptedsoul". Also, I suggest organizing classes into different packages.

I am not a cat. I know my profile picture is sexy and amazing beyond anything you could imagine but my cat like features only persist in my fierce eyes. I might be a cat.

Link to comment
Share on other sites

Im sorry with my lack of knowledge with java, Im just starting with my first mod and im only 14, I thought it would be some fun and that I might be a ble to get some help but some people just judge and Im not someone that can just read a tutorial, im more a visual learner so thats why i find it a bit tough. but thank you to those that have helped, its very appreciated

  • Sad 1
Link to comment
Share on other sites

I was in your position 3 years ago (I was 12) and, honestly a lot people expect you to know a good amount about Minecraft mod creation before posting. My first mod I just added everything I could think of. Might seem stupid but, it broadened my knowledge to a very far extent. Now I am creating a Java game just from trial and error. Keep going and never give up even when the going gets tough!

I am not a cat. I know my profile picture is sexy and amazing beyond anything you could imagine but my cat like features only persist in my fierce eyes. I might be a cat.

Link to comment
Share on other sites

Just a note:

a lot people expect you to know a good amount about Minecraft mod creation before posting.

Java*, bro, Java.

 

As to other "never give up stuff" - true that.

1.7.10 is no longer supported by forge, you are on your own.

Link to comment
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.
Note: Your post will require moderator approval before it will be visible.

Guest
Unfortunately, your content contains terms that we do not allow. Please edit your content to remove the highlighted words below.
Reply to this topic...

×   Pasted as rich text.   Restore formatting

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

Announcements



×
×
  • Create New...

Important Information

By using this site, you agree to our Terms of Use.