From 34536ec96a4b3f196b31ad19b2d2fd4a5c3103c8 Mon Sep 17 00:00:00 2001 From: raoulvdberge Date: Wed, 4 Jul 2018 20:25:35 +0200 Subject: [PATCH] Add covers to JEI. --- .../com/raoulvdberge/refinedstorage/RS.java | 12 ++++++ .../network/node/cover/CoverManager.java | 4 +- .../refinedstorage/item/ItemCover.java | 39 +++++++++++++++++++ .../assets/refinedstorage/lang/en_us.lang | 1 + 4 files changed, 55 insertions(+), 1 deletion(-) diff --git a/src/main/java/com/raoulvdberge/refinedstorage/RS.java b/src/main/java/com/raoulvdberge/refinedstorage/RS.java index 113cbe3d3..2889d768b 100755 --- a/src/main/java/com/raoulvdberge/refinedstorage/RS.java +++ b/src/main/java/com/raoulvdberge/refinedstorage/RS.java @@ -1,8 +1,10 @@ package com.raoulvdberge.refinedstorage; import com.raoulvdberge.refinedstorage.command.CommandCreateDisk; +import com.raoulvdberge.refinedstorage.item.ItemCover; import com.raoulvdberge.refinedstorage.proxy.ProxyCommon; import net.minecraft.creativetab.CreativeTabs; +import net.minecraft.init.Blocks; import net.minecraft.item.ItemStack; import net.minecraftforge.fluids.FluidRegistry; import net.minecraftforge.fml.common.FMLLog; @@ -40,6 +42,16 @@ public final class RS { return new ItemStack(RSItems.STORAGE_HOUSING); } }; + public final CreativeTabs coversTab = new CreativeTabs(ID + ".covers") { + @Override + public ItemStack getTabIconItem() { + ItemStack stack = new ItemStack(RSItems.COVER); + + ItemCover.setItem(stack, new ItemStack(Blocks.STONE)); + + return stack; + } + }; @EventHandler public void preInit(FMLPreInitializationEvent e) { diff --git a/src/main/java/com/raoulvdberge/refinedstorage/apiimpl/network/node/cover/CoverManager.java b/src/main/java/com/raoulvdberge/refinedstorage/apiimpl/network/node/cover/CoverManager.java index 4a873d438..b1f5eb040 100644 --- a/src/main/java/com/raoulvdberge/refinedstorage/apiimpl/network/node/cover/CoverManager.java +++ b/src/main/java/com/raoulvdberge/refinedstorage/apiimpl/network/node/cover/CoverManager.java @@ -7,6 +7,8 @@ import com.raoulvdberge.refinedstorage.apiimpl.network.node.ICoverable; import com.raoulvdberge.refinedstorage.apiimpl.network.node.NetworkNode; import com.raoulvdberge.refinedstorage.item.ItemCover; import net.minecraft.block.Block; +import net.minecraft.block.BlockGlass; +import net.minecraft.block.BlockStainedGlass; import net.minecraft.block.state.IBlockState; import net.minecraft.init.Blocks; import net.minecraft.item.ItemStack; @@ -138,7 +140,7 @@ public class CoverManager { IBlockState state = getBlockState(item); - return block != null && state != null && isModelSupported(state) && block.isTopSolid(state) && !block.getTickRandomly() && !block.hasTileEntity(state); + return block != null && state != null && ((isModelSupported(state) && block.isTopSolid(state) && !block.getTickRandomly() && !block.hasTileEntity(state)) || block instanceof BlockGlass || block instanceof BlockStainedGlass); } private static boolean isModelSupported(IBlockState state) { diff --git a/src/main/java/com/raoulvdberge/refinedstorage/item/ItemCover.java b/src/main/java/com/raoulvdberge/refinedstorage/item/ItemCover.java index bccd2425c..cf2c51ea5 100644 --- a/src/main/java/com/raoulvdberge/refinedstorage/item/ItemCover.java +++ b/src/main/java/com/raoulvdberge/refinedstorage/item/ItemCover.java @@ -1,18 +1,26 @@ package com.raoulvdberge.refinedstorage.item; +import com.raoulvdberge.refinedstorage.RS; +import com.raoulvdberge.refinedstorage.RSItems; import com.raoulvdberge.refinedstorage.api.network.node.INetworkNode; import com.raoulvdberge.refinedstorage.api.network.security.Permission; import com.raoulvdberge.refinedstorage.apiimpl.network.node.ICoverable; +import com.raoulvdberge.refinedstorage.apiimpl.network.node.cover.CoverManager; import com.raoulvdberge.refinedstorage.tile.TileNode; import com.raoulvdberge.refinedstorage.util.WorldUtils; +import net.minecraft.block.Block; import net.minecraft.client.util.ITooltipFlag; +import net.minecraft.creativetab.CreativeTabs; import net.minecraft.entity.player.EntityPlayer; +import net.minecraft.init.Items; +import net.minecraft.item.Item; import net.minecraft.item.ItemStack; import net.minecraft.nbt.NBTTagCompound; import net.minecraft.tileentity.TileEntity; import net.minecraft.util.EnumActionResult; import net.minecraft.util.EnumFacing; import net.minecraft.util.EnumHand; +import net.minecraft.util.NonNullList; import net.minecraft.util.math.BlockPos; import net.minecraft.world.World; @@ -25,6 +33,8 @@ public class ItemCover extends ItemBase { public ItemCover() { super("cover"); + + setCreativeTab(RS.INSTANCE.coversTab); } public static void setItem(ItemStack cover, ItemStack item) { @@ -55,6 +65,35 @@ public class ItemCover extends ItemBase { } } + @Override + public void getSubItems(CreativeTabs tab, NonNullList items) { + if (!isInCreativeTab(tab)) { + return; + } + + for (Block block : Block.REGISTRY) { + Item item = Item.getItemFromBlock(block); + + if (item == Items.AIR) { + continue; + } + + NonNullList subBlocks = NonNullList.create(); + + block.getSubBlocks(CreativeTabs.SEARCH, subBlocks); + + for (ItemStack subBlock : subBlocks) { + if (CoverManager.isValidCover(subBlock)) { + ItemStack stack = new ItemStack(RSItems.COVER); + + setItem(stack, subBlock); + + items.add(stack); + } + } + } + } + @Override public EnumActionResult onItemUse(EntityPlayer player, World world, BlockPos pos, EnumHand hand, EnumFacing facing, float hitX, float hitY, float hitZ) { ItemStack stack = player.getHeldItem(hand); diff --git a/src/main/resources/assets/refinedstorage/lang/en_us.lang b/src/main/resources/assets/refinedstorage/lang/en_us.lang index be08a4a1f..eed5ccf25 100644 --- a/src/main/resources/assets/refinedstorage/lang/en_us.lang +++ b/src/main/resources/assets/refinedstorage/lang/en_us.lang @@ -1,4 +1,5 @@ itemGroup.refinedstorage=Refined Storage +itemGroup.refinedstorage.covers=Refined Storage Covers key.refinedstorage.focusSearchBar=Focus Grid Search Bar key.refinedstorage.clearGridCraftingMatrix=Clear Grid Crafting Matrix