Фильтр мода. ParentMod

Версия Minecraft
1.7.10
Привет всем. Да-да это снова я.

На этот раз вопрос таков-Есть мод который выдаёт абсолютно рандомные предметы. Хочу запретить выдачу микроблоков. Пробовал через ParentMod,но происходит краш... Хелпуйте плиз!
package com.endie.grs.items;

import java.util.ArrayList;
import java.util.Iterator;
import java.util.Set;

import codechicken.microblock.FaceMicroblock;
import codechicken.microblock.Microblock;
import codechicken.microblock.MicroblockClass;
import codechicken.microblock.MicroblockGenerator;
import cpw.mods.fml.common.Loader;
import cpw.mods.fml.common.ModContainer;
import cpw.mods.fml.common.registry.GameRegistry;
import net.minecraft.client.renderer.texture.IIconRegister;
import net.minecraft.creativetab.CreativeTabs;
import net.minecraft.entity.item.EntityItem;
import net.minecraft.entity.player.EntityPlayer;
import net.minecraft.item.Item;
import net.minecraft.item.ItemStack;
import net.minecraft.util.IIcon;
import net.minecraft.world.World;
import net.minecraftforge.oredict.OreDictionary;

public class ItemRandomGiver extends Item {

public IIcon icon;


public ItemRandomGiver() {
this.setUnlocalizedName("grs:random_giver");
this.setTextureName("grs:random_giver");
this.setCreativeTab(CreativeTabs.tabMisc);
}

public void registerIcons(IIconRegister ir) {
this.icon = ir.registerIcon(this.getUnlocalizedName().substring(5));
}

public IIcon getIcon(ItemStack stack, int pass) {
return this.icon;
}

public IIcon getIconFromDamageForRenderPass(int p_77618_1_, int p_77618_2_) {
return this.icon;
}

public IIcon getIconIndex(ItemStack p_77650_1_) {
return this.icon;
}

public IIcon getIconFromDamage(int p_77617_1_) {
return this.icon;
}

public IIcon getIcon(ItemStack stack, int renderPass, EntityPlayer player, ItemStack usingItem, int useRemaining) {
return this.icon;
}

public ItemStack onItemRightClick(ItemStack stack, World world, EntityPlayer player) {
if(!world.isRemote) {
EntityItem ei = new EntityItem(world, player.posX, player.posY, player.posZ, select(world, 1));
ei.delayBeforeCanPickup = 0;
world.spawnEntityInWorld(ei);

}

return stack;
}
public static ModContainer getParentMod(Item item) {
GameRegistry.UniqueIdentifier id = GameRegistry
.findUniqueIdentifierFor(item);
return Loader.instance().getIndexedModList().get(id.modId);
}


public static ItemStack select(World world, int count) {
Set data = Item.itemRegistry.getKeys();
ArrayList items = new ArrayList();
Iterator st = data.iterator();
while(st.hasNext()) {
Object st1 = st.next();
Item it = (Item)Item.itemRegistry.getObject(st1);
ModContainer ParentMod = getParentMod(it);
if(!(it instanceof ItemRandomGiver)) {
if (ParentMod.getModId()!="ForgeMicroblock") {
new ArrayList();
it.getSubItems(it, it.getCreativeTab(), items);
}
}}

ItemStack st11 = ((ItemStack)items.get(world.rand.nextInt(items.size()))).copy();
st11.stackSize = count;
return st11;
}}
 
Решение
Код:
    @Override
    public ItemStack onItemRightClick(ItemStack is, World w, EntityPlayer p) {
        if (!w.isRemote) {
            EntityItem ei = new EntityItem(w, p.posX, p.posY, p.posZ, select(w, 1));
            ei.delayBeforeCanPickup = 0;
            w.spawnEntityInWorld(ei);
        }
        return is;
    }

    private ItemStack select(World w, int i) {
        Item item = null;
        while (item == null) {
            Item ret = (Item) Item.itemRegistry.getObjectById(w.rand.nextInt(Item.itemRegistry.getKeys().size()));
            if (ret != null && !GameRegistry.findUniqueIdentifierFor(ret).modId.equalsIgnoreCase("ForgeMicroblock"))
                item = ret;
        }
        return new ItemStack(item, i);
    }
3,005
192
592
Замени
if (ParentMod.getModId()!="ForgeMicroblock")
На
if (!ParentMod.getModId().equalsIgnoreCase("ForgeMicroblock")
 
Краш
java.lang.NullPointerException: Ticking memory connection

at com.endie.grs.items.ItemRandomGiver.select(ItemRandomGiver.java:85)

at com.endie.grs.items.ItemRandomGiver.func_77659_a(ItemRandomGiver.java:61)

at net.minecraft.item.ItemStack.func_77957_a(ItemStack.java:146)

at net.minecraft.server.management.ItemInWorldManager.func_73085_a(ItemInWorldManager.java:316)

at net.minecraft.network.NetHandlerPlayServer.func_147346_a(NetHandlerPlayServer.java:539)

at net.minecraft.network.play.client.C08PacketPlayerBlockPlacement.func_148833_a(SourceFile:60)

at net.minecraft.network.play.client.C08PacketPlayerBlockPlacement.func_148833_a(SourceFile:9)

at net.minecraft.network.NetworkManager.func_74428_b(NetworkManager.java:212)

at net.minecraft.network.NetworkSystem.func_151269_c(NetworkSystem.java:165)

at net.minecraft.server.MinecraftServer.func_71190_q(MinecraftServer.java:659)

at net.minecraft.server.MinecraftServer.func_71217_p(MinecraftServer.java:547)

at net.minecraft.server.integrated.IntegratedServer.func_71217_p(IntegratedServer.java:111)

at net.minecraft.server.MinecraftServer.run(MinecraftServer.java:427)

at net.minecraft.server.MinecraftServer$2.run(MinecraftServer.java:685)
 
3,005
192
592
Код:
    @Override
    public ItemStack onItemRightClick(ItemStack is, World w, EntityPlayer p) {
        if (!w.isRemote) {
            EntityItem ei = new EntityItem(w, p.posX, p.posY, p.posZ, select(w, 1));
            ei.delayBeforeCanPickup = 0;
            w.spawnEntityInWorld(ei);
        }
        return is;
    }

    private ItemStack select(World w, int i) {
        Item item = null;
        while (item == null) {
            Item ret = (Item) Item.itemRegistry.getObjectById(w.rand.nextInt(Item.itemRegistry.getKeys().size()));
            if (ret != null && !GameRegistry.findUniqueIdentifierFor(ret).modId.equalsIgnoreCase("ForgeMicroblock"))
                item = ret;
        }
        return new ItemStack(item, i);
    }
 
Сверху