diff --git a/src/main/java/mod/chiselsandbits/chiseledblock/BlockChiseled.java b/src/main/java/mod/chiselsandbits/chiseledblock/BlockChiseled.java index 36ddeba5..9b7d38fe 100644 --- a/src/main/java/mod/chiselsandbits/chiseledblock/BlockChiseled.java +++ b/src/main/java/mod/chiselsandbits/chiseledblock/BlockChiseled.java @@ -297,8 +297,8 @@ public boolean canRenderInLayer( } public static @Nonnull TileEntityBlockChiseled getTileEntity( - final IBlockAccess world, - final BlockPos pos ) throws ExceptionNoTileEntity + final @Nonnull IBlockAccess world, + final @Nonnull BlockPos pos ) throws ExceptionNoTileEntity { return getTileEntity( ModUtil.getTileEntitySafely( world, pos ) ); } @@ -671,6 +671,7 @@ public void addCollisionBoxesToList( * * @return if the method results in a non-full cube box. */ + @Nonnull private AxisAlignedBB setBounds( final TileEntityBlockChiseled tec, final BlockPos pos, @@ -782,6 +783,7 @@ public AxisAlignedBB getSelectedBoundingBox( return super.getSelectedBoundingBox( state, worldIn, pos ); } + @Nonnull public AxisAlignedBB getSelectedBoundingBox( final TileEntityBlockChiseled tec, final BlockPos pos ) @@ -940,8 +942,8 @@ public boolean rotateBlock( } public static boolean replaceWithChisled( - final World world, - final BlockPos pos, + final @Nonnull World world, + final @Nonnull BlockPos pos, final IBlockState originalState, final int fragmentBlockStateID, final boolean triggerUpdate ) diff --git a/src/main/java/mod/chiselsandbits/chiseledblock/ItemBlockChiseled.java b/src/main/java/mod/chiselsandbits/chiseledblock/ItemBlockChiseled.java index 2482802f..32274ade 100644 --- a/src/main/java/mod/chiselsandbits/chiseledblock/ItemBlockChiseled.java +++ b/src/main/java/mod/chiselsandbits/chiseledblock/ItemBlockChiseled.java @@ -3,6 +3,8 @@ import java.util.ArrayList; import java.util.List; +import javax.annotation.Nonnull; + import mod.chiselsandbits.api.EventBlockBitModification; import mod.chiselsandbits.chiseledblock.data.BitLocation; import mod.chiselsandbits.chiseledblock.data.IntegerBox; @@ -95,9 +97,9 @@ public boolean canPlaceBlockOnSide( } public boolean vanillaStylePlacementTest( - final World worldIn, - BlockPos pos, - EnumFacing side, + final @Nonnull World worldIn, + @Nonnull BlockPos pos, + @Nonnull EnumFacing side, final EntityPlayer player, final ItemStack stack ) { @@ -116,9 +118,9 @@ else if ( !block.isReplaceable( worldIn, pos ) ) } public boolean canPlaceBlockHere( - final World worldIn, - final BlockPos pos, - final EnumFacing side, + final @Nonnull World worldIn, + final @Nonnull BlockPos pos, + final @Nonnull EnumFacing side, final EntityPlayer player, final ItemStack stack ) { @@ -275,13 +277,13 @@ public boolean placeBlockAt( } static public boolean tryPlaceBlockAt( - final Block block, - final ItemStack stack, - final EntityPlayer player, - final World world, - BlockPos pos, - final EnumFacing side, - final EnumHand hand, + final @Nonnull Block block, + final @Nonnull ItemStack stack, + final @Nonnull EntityPlayer player, + final @Nonnull World world, + @Nonnull BlockPos pos, + final @Nonnull EnumFacing side, + final @Nonnull EnumHand hand, final BlockPos partial, final boolean modulateWorld ) { diff --git a/src/main/java/mod/chiselsandbits/chiseledblock/data/BitLocation.java b/src/main/java/mod/chiselsandbits/chiseledblock/data/BitLocation.java index fcf02a43..6b3cf5fa 100644 --- a/src/main/java/mod/chiselsandbits/chiseledblock/data/BitLocation.java +++ b/src/main/java/mod/chiselsandbits/chiseledblock/data/BitLocation.java @@ -1,5 +1,7 @@ package mod.chiselsandbits.chiseledblock.data; +import javax.annotation.Nonnull; + import mod.chiselsandbits.api.IBitLocation; import mod.chiselsandbits.helpers.BitOperation; import net.minecraft.util.math.BlockPos; @@ -9,6 +11,7 @@ public class BitLocation implements IBitLocation { private static final double One32nd = 0.5 / VoxelBlob.dim; + @Nonnull public final BlockPos blockPos; public final int bitX, bitY, bitZ; diff --git a/src/main/java/mod/chiselsandbits/chiseledblock/data/VoxelNeighborRenderTracker.java b/src/main/java/mod/chiselsandbits/chiseledblock/data/VoxelNeighborRenderTracker.java index bd2420fd..330f4d5d 100644 --- a/src/main/java/mod/chiselsandbits/chiseledblock/data/VoxelNeighborRenderTracker.java +++ b/src/main/java/mod/chiselsandbits/chiseledblock/data/VoxelNeighborRenderTracker.java @@ -111,6 +111,8 @@ public void update( for ( final EnumFacing f : EnumFacing.VALUES ) { + assert f != null; + final TileEntityBlockChiseled tebc = ModUtil.getChiseledTileEntity( access, pos.offset( f ) ); if ( tebc != null ) { diff --git a/src/main/java/mod/chiselsandbits/core/ChiselsAndBits.java b/src/main/java/mod/chiselsandbits/core/ChiselsAndBits.java index 8704bbab..49f72848 100644 --- a/src/main/java/mod/chiselsandbits/core/ChiselsAndBits.java +++ b/src/main/java/mod/chiselsandbits/core/ChiselsAndBits.java @@ -4,6 +4,8 @@ import java.util.ArrayList; import java.util.List; +import javax.annotation.Nonnull; + import mod.chiselsandbits.api.IChiselAndBitsAPI; import mod.chiselsandbits.chiseledblock.BlockBitInfo; import mod.chiselsandbits.chiseledblock.data.VoxelBlob; @@ -54,9 +56,9 @@ guiFactory = "mod.chiselsandbits.client.gui.ModConfigGuiFactory" ) public class ChiselsAndBits { - public static final String MODNAME = "Chisels & Bits"; - public static final String MODID = "chiselsandbits"; - public static final String VERSION = "@VERSION@"; + public static final @Nonnull String MODNAME = "Chisels & Bits"; + public static final @Nonnull String MODID = "chiselsandbits"; + public static final @Nonnull String VERSION = "@VERSION@"; public static final String DEPENDENCIES = "required-after:Forge@[12.17.0.1909,);after:mcmultipart;after:JEI@[3.7.8.234,)"; // buildVersion diff --git a/src/main/java/mod/chiselsandbits/core/ClientSide.java b/src/main/java/mod/chiselsandbits/core/ClientSide.java index 125eda18..83358b93 100644 --- a/src/main/java/mod/chiselsandbits/core/ClientSide.java +++ b/src/main/java/mod/chiselsandbits/core/ClientSide.java @@ -1461,9 +1461,9 @@ public BitLocation getStartPos() } public void pointAt( - final ChiselToolType type, - final BitLocation pos, - final EnumHand hand ) + @Nonnull final ChiselToolType type, + @Nonnull final BitLocation pos, + @Nonnull final EnumHand hand ) { if ( drawStart == null ) { @@ -1473,7 +1473,10 @@ public void pointAt( } } + @Nonnull ChiselToolType lastTool = ChiselToolType.CHISEL; + + @Nonnull EnumHand lastHand = EnumHand.MAIN_HAND; KeyBinding getToolKey() @@ -1489,8 +1492,8 @@ KeyBinding getToolKey() } public boolean addBlockDestroyEffects( - final World world, - final BlockPos pos, + @Nonnull final World world, + @Nonnull final BlockPos pos, IBlockState state, final ParticleManager effectRenderer ) { diff --git a/src/main/java/mod/chiselsandbits/core/api/BitAccess.java b/src/main/java/mod/chiselsandbits/core/api/BitAccess.java index 0d44ab8c..9dfec1ad 100644 --- a/src/main/java/mod/chiselsandbits/core/api/BitAccess.java +++ b/src/main/java/mod/chiselsandbits/core/api/BitAccess.java @@ -110,21 +110,27 @@ public void setBitAt( public void commitChanges( final boolean triggerUpdates ) { - TileEntityBlockChiseled tile = ModUtil.getChiseledTileEntity( world, pos, true ); - final BlobStats cb = blob.getVoxelStats(); + final World w = world; + final BlockPos p = pos; - if ( tile == null && BlockChiseled.replaceWithChisled( world, pos, world.getBlockState( pos ), cb.mostCommonState, false ) ) + if ( w != null && p != null ) { - tile = ModUtil.getChiseledTileEntity( world, pos, true ); - } + TileEntityBlockChiseled tile = ModUtil.getChiseledTileEntity( w, p, true ); + final BlobStats cb = blob.getVoxelStats(); - if ( tile != null ) - { - final VoxelBlobStateReference before = tile.getBlobStateReference(); - tile.setBlob( blob, triggerUpdates ); - final VoxelBlobStateReference after = tile.getBlobStateReference(); + if ( tile == null && BlockChiseled.replaceWithChisled( w, p, world.getBlockState( p ), cb.mostCommonState, false ) ) + { + tile = ModUtil.getChiseledTileEntity( w, p, true ); + } + + if ( tile != null ) + { + final VoxelBlobStateReference before = tile.getBlobStateReference(); + tile.setBlob( blob, triggerUpdates ); + final VoxelBlobStateReference after = tile.getBlobStateReference(); - UndoTracker.getInstance().add( world, pos, before, after ); + UndoTracker.getInstance().add( w, p, before, after ); + } } } @@ -171,13 +177,13 @@ public ItemStack getBitsAsItem( switch ( type ) { case MIRROR_DESIGN: - stack = new ItemStack( ChiselsAndBits.getItems().itemMirrorprint ); + stack = ModUtil.makeStack( ChiselsAndBits.getItems().itemMirrorprint ); break; case NEGATIVE_DESIGN: - stack = new ItemStack( ChiselsAndBits.getItems().itemNegativeprint ); + stack = ModUtil.makeStack( ChiselsAndBits.getItems().itemNegativeprint ); break; case POSITIVE_DESIGN: - stack = new ItemStack( ChiselsAndBits.getItems().itemPositiveprint ); + stack = ModUtil.makeStack( ChiselsAndBits.getItems().itemPositiveprint ); break; default: return ModUtil.getEmptyStack(); diff --git a/src/main/java/mod/chiselsandbits/helpers/ActingPlayer.java b/src/main/java/mod/chiselsandbits/helpers/ActingPlayer.java index f404b8fe..60a1cb46 100644 --- a/src/main/java/mod/chiselsandbits/helpers/ActingPlayer.java +++ b/src/main/java/mod/chiselsandbits/helpers/ActingPlayer.java @@ -59,9 +59,9 @@ public ItemStack getCurrentEquippedItem() Boolean permissionResult = null; public boolean canPlayerManipulate( - final BlockPos pos, - final EnumFacing side, - final ItemStack is, + final @Nonnull BlockPos pos, + final @Nonnull EnumFacing side, + final @Nonnull ItemStack is, final boolean placement ) { // only re-test if something changes. @@ -111,6 +111,7 @@ public void playerDestroyItem( } } + @Nonnull public static ActingPlayer actingAs( final EntityPlayer player, final EnumHand hand ) @@ -118,6 +119,7 @@ public static ActingPlayer actingAs( return new ActingPlayer( player, true, hand ); } + @Nonnull public static ActingPlayer testingAs( final EntityPlayer player, final EnumHand hand ) diff --git a/src/main/java/mod/chiselsandbits/helpers/ContinousChisels.java b/src/main/java/mod/chiselsandbits/helpers/ContinousChisels.java index fc4154db..ad6a7006 100644 --- a/src/main/java/mod/chiselsandbits/helpers/ContinousChisels.java +++ b/src/main/java/mod/chiselsandbits/helpers/ContinousChisels.java @@ -4,6 +4,8 @@ import java.util.HashMap; import java.util.List; +import javax.annotation.Nonnull; + import com.google.common.collect.ArrayListMultimap; import com.google.common.collect.Lists; @@ -25,9 +27,9 @@ public class ContinousChisels implements IContinuousInventory private final boolean canEdit; public ContinousChisels( - final ActingPlayer who, - final BlockPos pos, - final EnumFacing side ) + final @Nonnull ActingPlayer who, + final @Nonnull BlockPos pos, + final @Nonnull EnumFacing side ) { this.who = who; final ItemStack inHand = who.getCurrentEquippedItem(); diff --git a/src/main/java/mod/chiselsandbits/helpers/ModUtil.java b/src/main/java/mod/chiselsandbits/helpers/ModUtil.java index 3f79bfe3..f1f23742 100644 --- a/src/main/java/mod/chiselsandbits/helpers/ModUtil.java +++ b/src/main/java/mod/chiselsandbits/helpers/ModUtil.java @@ -50,7 +50,10 @@ public class ModUtil { + @Nonnull public static final String NBT_SIDE = "side"; + + @Nonnull public static final String NBT_BLOCKENTITYTAG = "BlockEntityTag"; private final static Random RAND = new Random(); @@ -355,8 +358,8 @@ static public T firstNonNull( } public static TileEntity getTileEntitySafely( - final IBlockAccess world, - final BlockPos pos ) + final @Nonnull IBlockAccess world, + final @Nonnull BlockPos pos ) { // not going to lie, this is really stupid. if ( world instanceof ChunkCache ) @@ -378,8 +381,8 @@ else if ( world instanceof World ) } public static TileEntityBlockChiseled getChiseledTileEntity( - final IBlockAccess world, - final BlockPos pos ) + @Nonnull final IBlockAccess world, + @Nonnull final BlockPos pos ) { final TileEntity te = getTileEntitySafely( world, pos ); if ( te instanceof TileEntityBlockChiseled ) @@ -391,8 +394,8 @@ public static TileEntityBlockChiseled getChiseledTileEntity( } public static TileEntityBlockChiseled getChiseledTileEntity( - final World world, - final BlockPos pos, + @Nonnull final World world, + @Nonnull final BlockPos pos, final boolean create ) { if ( world.isBlockLoaded( pos ) ) @@ -409,8 +412,8 @@ public static TileEntityBlockChiseled getChiseledTileEntity( } public static void removeChisledBlock( - final World world, - final BlockPos pos ) + @Nonnull final World world, + @Nonnull final BlockPos pos ) { final TileEntity te = world.getTileEntity( pos ); @@ -550,7 +553,7 @@ public static VoxelBlob getBlobFromStack( cData = stack.getTagCompound(); } - tmp.readChisleData( cData ); + tmp.readChisleData( cData, VoxelBlob.VERSION_ANY ); VoxelBlob blob = tmp.getBlob(); if ( rotationPlayer != null ) @@ -569,15 +572,15 @@ public static VoxelBlob getBlobFromStack( } public static void sendUpdate( - final World worldObj, - final BlockPos pos ) + @Nonnull final World worldObj, + @Nonnull final BlockPos pos ) { final IBlockState state = worldObj.getBlockState( pos ); worldObj.notifyBlockUpdate( pos, state, state, 0 ); } public static ItemStack getItemFromBlock( - final IBlockState state ) + @Nonnull final IBlockState state ) { final Block blk = state.getBlock(); @@ -592,19 +595,9 @@ public static ItemStack getItemFromBlock( return new ItemStack( Blocks.GRASS ); } - if ( i == null ) + if ( i == null || blockVarient == null || blockVarient != i ) { - return null; - } - - if ( blockVarient == null ) - { - return null; - } - - if ( blockVarient != i ) - { - return null; + return ModUtil.getEmptyStack(); } if ( blockVarient instanceof ItemBlock ) @@ -613,7 +606,7 @@ public static ItemStack getItemFromBlock( if ( meta != ib.getMetadata( damage ) ) { // this item dosn't drop itself... BAIL! - return null; + return ModUtil.getEmptyStack(); } } @@ -796,7 +789,7 @@ public static IBlockState getStateFromItem( final IBlockState state = iblk.getBlock().getStateFromMeta( iblk.getMetadata( is.getItemDamage() ) ); final ItemStack out = ModUtil.getItemFromBlock( state ); - if ( out.getItem() == is.getItem() && is.getItemDamage() == out.getItemDamage() ) + if ( !ModUtil.isEmpty( out ) && out.getItem() == is.getItem() && is.getItemDamage() == out.getItemDamage() ) { return state; } @@ -811,8 +804,8 @@ public static IBlockState getStateFromItem( } public static void damageItem( - final ItemStack is, - final Random r ) + @Nonnull final ItemStack is, + @Nonnull final Random r ) { if ( is.isItemStackDamageable() ) { @@ -823,4 +816,33 @@ public static void damageItem( } } + @Nonnull + public static ItemStack makeStack( + final Item item ) + { + return makeStack( item, 1 ); + } + + @Nonnull + public static ItemStack makeStack( + final Item item, + final int stackSize ) + { + return makeStack( item, 1, 0 ); + } + + @Nonnull + public static ItemStack makeStack( + final Item item, + final int stackSize, + final int damage ) + { + if ( item == null || stackSize < 1 ) + { + return ModUtil.getEmptyStack(); + } + + return new ItemStack( item, stackSize, damage ); + } + } diff --git a/src/main/java/mod/chiselsandbits/integration/mods/JustEnoughItems.java b/src/main/java/mod/chiselsandbits/integration/mods/JustEnoughItems.java index bd8c1110..553f2d32 100644 --- a/src/main/java/mod/chiselsandbits/integration/mods/JustEnoughItems.java +++ b/src/main/java/mod/chiselsandbits/integration/mods/JustEnoughItems.java @@ -8,6 +8,7 @@ import mezz.jei.api.IModRegistry; import mod.chiselsandbits.core.ChiselsAndBits; import mod.chiselsandbits.helpers.LocalStrings; +import mod.chiselsandbits.helpers.ModUtil; import net.minecraft.block.Block; import net.minecraft.item.Item; import net.minecraft.item.ItemStack; @@ -23,7 +24,7 @@ public void register( { if ( !ChiselsAndBits.getConfig().ShowBitsInJEI ) { - registry.getJeiHelpers().getItemBlacklist().addItemToBlacklist( new ItemStack( ChiselsAndBits.getItems().itemBlockBit, 1, OreDictionary.WILDCARD_VALUE ) ); + registry.getJeiHelpers().getItemBlacklist().addItemToBlacklist( ModUtil.makeStack( ChiselsAndBits.getItems().itemBlockBit, 1, OreDictionary.WILDCARD_VALUE ) ); } for ( final Block blk : ChiselsAndBits.getBlocks().getConversions().values() ) diff --git a/src/main/java/mod/chiselsandbits/items/ItemChisel.java b/src/main/java/mod/chiselsandbits/items/ItemChisel.java index ac7261cd..a6ee7e58 100644 --- a/src/main/java/mod/chiselsandbits/items/ItemChisel.java +++ b/src/main/java/mod/chiselsandbits/items/ItemChisel.java @@ -6,6 +6,8 @@ import java.util.regex.Matcher; import java.util.regex.Pattern; +import javax.annotation.Nonnull; + import org.apache.commons.lang3.tuple.Pair; import com.google.common.base.Stopwatch; @@ -121,7 +123,7 @@ public boolean onBlockStartBreak( static public boolean fromBreakToChisel( final ChiselMode mode, final ItemStack itemstack, - final BlockPos pos, + final @Nonnull BlockPos pos, final EntityPlayer player, final EnumHand hand ) { @@ -253,7 +255,7 @@ static void useChisel( final ChiselMode mode, final EntityPlayer player, final World world, - final BlockPos pos, + final @Nonnull BlockPos pos, final EnumFacing side, final float hitX, final float hitY, @@ -360,7 +362,7 @@ public static boolean canMine( final IBlockState state, final EntityPlayer player, final World world, - final BlockPos pos ) + final @Nonnull BlockPos pos ) { final int targetState = ModUtil.getStateId( state ); ItemStackSlot chiselSlot = chiselInv.getItem( targetState ); diff --git a/src/main/java/mod/chiselsandbits/items/ItemChiseledBit.java b/src/main/java/mod/chiselsandbits/items/ItemChiseledBit.java index 7f15f3d6..682972bb 100644 --- a/src/main/java/mod/chiselsandbits/items/ItemChiseledBit.java +++ b/src/main/java/mod/chiselsandbits/items/ItemChiseledBit.java @@ -218,11 +218,11 @@ public int getItemStackLimit() @Override public EnumActionResult onItemUse( - final EntityPlayer player, - final World world, - final BlockPos usedBlock, - final EnumHand hand, - final EnumFacing side, + final @Nonnull EntityPlayer player, + final @Nonnull World world, + final @Nonnull BlockPos usedBlock, + final @Nonnull EnumHand hand, + final @Nonnull EnumFacing side, final float hitX, final float hitY, final float hitZ ) diff --git a/src/main/java/mod/chiselsandbits/items/ItemNegativePrint.java b/src/main/java/mod/chiselsandbits/items/ItemNegativePrint.java index b119ca61..9306b113 100644 --- a/src/main/java/mod/chiselsandbits/items/ItemNegativePrint.java +++ b/src/main/java/mod/chiselsandbits/items/ItemNegativePrint.java @@ -3,6 +3,8 @@ import java.util.ArrayList; import java.util.List; +import javax.annotation.Nonnull; + import mod.chiselsandbits.chiseledblock.BlockChiseled; import mod.chiselsandbits.chiseledblock.NBTBlobConverter; import mod.chiselsandbits.chiseledblock.TileEntityBlockChiseled; @@ -244,7 +246,7 @@ public ItemStack getPatternedItem( final IBlockState state = ModUtil.getStateById( stats.mostCommonState ); final ItemStack is = ModUtil.getItemFromBlock( state ); - if ( is != null ) + if ( !ModUtil.isEmpty( is ) ) { return is; } @@ -259,14 +261,14 @@ public ItemStack getPatternedItem( } protected void applyPrint( - final ItemStack stack, - final World world, - final BlockPos pos, - final EnumFacing side, - final VoxelBlob vb, - final VoxelBlob pattern, - final EntityPlayer who, - final EnumHand hand ) + @Nonnull final ItemStack stack, + @Nonnull final World world, + @Nonnull final BlockPos pos, + @Nonnull final EnumFacing side, + @Nonnull final VoxelBlob vb, + @Nonnull final VoxelBlob pattern, + @Nonnull final EntityPlayer who, + @Nonnull final EnumHand hand ) { // snag a tool... final ActingPlayer player = ActingPlayer.actingAs( who, hand ); diff --git a/src/main/java/mod/chiselsandbits/network/packets/PacketAccurateSneakPlace.java b/src/main/java/mod/chiselsandbits/network/packets/PacketAccurateSneakPlace.java index d8e90ef5..7c1a0251 100644 --- a/src/main/java/mod/chiselsandbits/network/packets/PacketAccurateSneakPlace.java +++ b/src/main/java/mod/chiselsandbits/network/packets/PacketAccurateSneakPlace.java @@ -2,6 +2,8 @@ import java.io.IOException; +import javax.annotation.Nonnull; + import mod.chiselsandbits.helpers.ModUtil; import mod.chiselsandbits.network.ModPacket; import net.minecraft.entity.player.EntityPlayer; @@ -21,12 +23,12 @@ public interface IItemBlockAccurate { EnumActionResult doItemUse( - ItemStack inHand, - EntityPlayer playerEntity, - World worldObj, - BlockPos pos, - EnumHand hand, - EnumFacing side, + @Nonnull ItemStack inHand, + @Nonnull EntityPlayer playerEntity, + @Nonnull World worldObj, + @Nonnull BlockPos pos, + @Nonnull EnumHand hand, + @Nonnull EnumFacing side, float hitX, float hitY, float hitZ ); diff --git a/src/main/java/mod/chiselsandbits/render/helpers/ModelUtil.java b/src/main/java/mod/chiselsandbits/render/helpers/ModelUtil.java index e1470553..9fd79c48 100644 --- a/src/main/java/mod/chiselsandbits/render/helpers/ModelUtil.java +++ b/src/main/java/mod/chiselsandbits/render/helpers/ModelUtil.java @@ -177,19 +177,23 @@ private static List getModelQuads( } - final IBakedModel secondModel = model.getOverrides().handleItemState( model, ModUtil.getItemFromBlock( state ), Minecraft.getMinecraft().theWorld, Minecraft.getMinecraft().thePlayer ); - - if ( secondModel != null ) + final ItemStack is = ModUtil.getItemFromBlock( state ); + if ( !ModUtil.isEmpty( is ) ) { - try - { - return secondModel.getQuads( null, f, rand ); - } - catch ( final Throwable t ) + final IBakedModel secondModel = model.getOverrides().handleItemState( model, is, Minecraft.getMinecraft().theWorld, Minecraft.getMinecraft().thePlayer ); + + if ( secondModel != null ) { + try + { + return secondModel.getQuads( null, f, rand ); + } + catch ( final Throwable t ) + { - } + } + } } // try to not crash... @@ -321,7 +325,7 @@ public static IBakedModel solveModel( { // if the model is empty then lets grab an item and try that... final ItemStack is = ModUtil.getItemFromBlock( state ); - if ( is != null ) + if ( !ModUtil.isEmpty( is ) ) { final IBakedModel itemModel = Minecraft.getMinecraft().getRenderItem().getItemModelWithOverrides( is, Minecraft.getMinecraft().theWorld, Minecraft.getMinecraft().thePlayer ); return itemModel;