public static ColorMeta fromDyeDamage(int damage) { final EnumDyeColor vanilla = EnumDyeColor.byDyeDamage(damage); return fromVanillaEnum(vanilla); }
@Override public void readFromNBT(NBTTagCompound tagCompound) { super.readFromNBT(tagCompound); color = EnumDyeColor.byDyeDamage(tagCompound.getByte("Color")); }
@Override protected ItemStack getStack() { EnumDyeColor baseColor = EnumDyeColor.byDyeDamage(tag.getInteger("Base")); NBTTagList patterns = tag.getTagList("Patterns", 10); return ItemBanner.makeBanner(baseColor, patterns); }
@Override public void readFromNBT(NBTTagCompound tagCompound) { super.readFromNBT(tagCompound); waterTank.readFromNBT(tagCompound); color = EnumDyeColor.byDyeDamage(tagCompound.getByte("Color")); }
@Override @Nonnull public String getTranslationKey(ItemStack stack) { if (!glazed) return super.getTranslationKey(stack); return super.getTranslationKey(stack) + "." + EnumDyeColor.byDyeDamage(stack.getItemDamage()).getName(); }
@Override @Nonnull public String getTranslationKey(ItemStack stack) { if (!glazed) return super.getTranslationKey(stack); return super.getTranslationKey(stack) + "." + EnumDyeColor.byDyeDamage(stack.getItemDamage()).getName(); }
/** * Check if itemStack can be used as compost. * @param itemStack the stack to check. * @return true if so. */ private boolean isCompost(final ItemStack itemStack) { if (itemStack.getItem() == ModItems.compost) { return true; } if (itemStack.getItem() == Items.DYE) { final EnumDyeColor enumdyecolor = EnumDyeColor.byDyeDamage(itemStack.getMetadata()); return enumdyecolor == EnumDyeColor.WHITE; } return false; }
@Override public int colorMultiplier(@Nonnull ItemStack stack, int tintIndex) { Item item = stack.getItem(); if (!(item instanceof ItemSteamExosuitArmor)) { return -1; } ItemSteamExosuitArmor armor = (ItemSteamExosuitArmor) item; ItemStack vanity = armor.getStackInSlot(stack, 2); if (!vanity.isEmpty() && (tintIndex == 1 || (tintIndex > 1 && !stack.getTagCompound().hasKey("Plate")))) { int dye = ModelSteamExosuit.findDyeIndexFromItemStack(vanity); if (dye != -1) { float[] color = EntitySheep.getDyeRgb(EnumDyeColor.byDyeDamage(dye)); return new Color(color[0], color[1], color[2]).getRGB(); } } return -1; } }
@Nonnull @Override public Map<Object, Object> getMeta(@Nonnull ItemStack stack) { if (!(stack.getItem() instanceof ItemBanner)) return Collections.emptyMap(); int idx = 0; Map<Object, Object> out = Maps.newHashMap(); NBTTagCompound tag = stack.getSubCompound("BlockEntityTag"); if (tag != null && tag.hasKey("Patterns")) { NBTTagList nbttaglist = tag.getTagList("Patterns", 10); for (int i = 0; i < nbttaglist.tagCount() && i < 6; ++i) { NBTTagCompound patternTag = nbttaglist.getCompoundTagAt(i); EnumDyeColor color = EnumDyeColor.byDyeDamage(patternTag.getInteger("Color")); BannerPattern pattern = getPatternByID(patternTag.getString("Pattern")); if (pattern != null) { Map<String, String> entry = Maps.newHashMap(); entry.put("id", pattern.getHashname()); // patternName String name = ObfuscationReflectionHelper.getPrivateValue(BannerPattern.class, pattern, "field_191014_N"); entry.put("name", name); entry.put("colour", color.toString()); entry.put("color", color.toString()); out.put(++idx, entry); } } } return out; }
@Override void addBlocks(ChiselBlockFactory factory) { IBlockState wool = Blocks.WOOL.getDefaultState(); IProperty<EnumDyeColor> prop = BlockColored.COLOR; for(int c = 0; c < dyeColors.length; c++) { Carving.chisel.addVariation("wool_" + (dyeColors[c].toLowerCase()), CarvingUtils.variationFor(wool.withProperty(prop, EnumDyeColor.byDyeDamage(c)), -1)); factory.newBlock(Material.CLOTH, "wool_" + (dyeColors[c].toLowerCase()), provider) .setParentFolder("wool") .newVariation("legacy_"+(dyeColors[c].toLowerCase())) .next("llama_"+(dyeColors[c].toLowerCase())) .addOreDict("blockWool") .build(b -> b.setSoundType(SoundType.CLOTH).setHardness(0.8F)); } } };
@Override void addBlocks(ChiselBlockFactory factory) { IBlockState carpet = Blocks.CARPET.getDefaultState(); IProperty<EnumDyeColor> prop = BlockCarpet.COLOR; for(int c = 0; c < dyeColors.length; c++) { Carving.chisel.addVariation("carpet_" + (dyeColors[c].toLowerCase()), CarvingUtils.variationFor(carpet.withProperty(prop, EnumDyeColor.byDyeDamage(c)), -1)); factory.newBlock(Material.CARPET, "carpet_" + (dyeColors[c].toLowerCase()), new ChiselBlockProvider<>(BlockCarvableCarpet::new, BlockCarvableCarpet.class)).opaque(false) .setParentFolder("carpet") .newVariation("legacy_"+(dyeColors[c].toLowerCase())) .next("llama_"+(dyeColors[c].toLowerCase())) .build(b -> b.setSoundType(SoundType.CLOTH).setHardness(0.1F).setLightOpacity(0)); } } },
@Override public void readFromNBT(NBTTagCompound tagCompound) { super.readFromNBT(tagCompound); NBTTagCompound itemHandlerCompound = tagCompound.getCompoundTag("ItemHandler"); if (ModConfig.general.largeCounters && itemHandlerCompound.getInteger("Size") < 54) { itemHandlerCompound.setInteger("Size", 54); } itemHandler.deserializeNBT(itemHandlerCompound); color = EnumDyeColor.byDyeDamage(tagCompound.getByte("Color")); }
@Override public void readFromNBT(NBTTagCompound tagCompound) { super.readFromNBT(tagCompound); if (tagCompound.hasKey("NoFilterBook")) { setNoFilterBook(new ItemStack(tagCompound.getCompoundTag("NoFilterBook"))); } color = EnumDyeColor.byDyeDamage(tagCompound.getByte("Color")); }
@Override public boolean onBlockActivated(World world, BlockPos pos, IBlockState state, EntityPlayer player, EnumHand hand, EnumFacing facing, float hitX, float hitY, float hitZ) { ItemStack heldItem = player.getHeldItem(hand); if (!heldItem.isEmpty() && heldItem.getItem() == Items.DYE) { if (recolorBlock(world, pos, facing, EnumDyeColor.byDyeDamage(heldItem.getItemDamage()))) { heldItem.shrink(1); } return true; } return false; }
@Override public void readFromNBT(NBTTagCompound tagCompound) { super.readFromNBT(tagCompound); itemHandler.deserializeNBT(tagCompound.getCompoundTag("ItemHandler")); fridgeColor = EnumDyeColor.byDyeDamage(tagCompound.getByte("FridgeColor")); hasIceUpgrade = tagCompound.getBoolean("HasIceUpgrade"); hasPreservationUpgrade = tagCompound.getBoolean("HasPreservationUpgrade"); }
@SubscribeEvent @SideOnly(Side.CLIENT) public void onTooltip(ItemTooltipEvent event) { ItemStack stack = event.getItemStack(); if(!stack.isEmpty() && stack.getItem() == Items.ELYTRA) { int color = ItemNBTHelper.getInt(stack, TAG_ELYTRA_DYE, 15); EnumDyeColor dye = EnumDyeColor.byDyeDamage(color); if(dye != EnumDyeColor.WHITE) event.getToolTip().add(I18n.format("quark.dyedElytra", I18n.format("quark.dye." + dye.getUnlocalizedName()))); } }
@Override public boolean onBlockActivated(World worldIn, BlockPos pos, IBlockState state, EntityPlayer playerIn, EnumHand hand, EnumFacing facing, float hitX, float hitY, float hitZ) { if(!worldIn.isRemote) { ItemStack heldItem = playerIn.getHeldItem(hand); if(!heldItem.isEmpty() && heldItem.getItem() instanceof ItemDye) { TileEntity tileEntity = worldIn.getTileEntity(pos); if(tileEntity instanceof TileEntityDigitalClock) { TileEntityDigitalClock digitalClock = (TileEntityDigitalClock) tileEntity; digitalClock.setTextColorColor(EnumDyeColor.byDyeDamage(heldItem.getMetadata())); if(!playerIn.capabilities.isCreativeMode) { heldItem.shrink(1); } } } } return true; }
@Override public boolean pick(World world, IBlockState state, BlockPos pos, int fortune, IItemHandler inventory) { NonNullList<ItemStack> drops = NonNullList.create(); Blocks.COCOA.getDrops(drops, world, pos, state, fortune); if (!InventoryTools.canInventoryHold(inventory, drops)) { return false; } IBlockState newState = state.withProperty(BlockCocoa.AGE, 0); world.setBlockState(pos, newState); world.playEvent(2001, pos, Block.getStateId(newState)); //remove that one cocoa bean that was just "replanted" InventoryTools.removeItem(drops, s -> s.getItem() == Items.DYE && EnumDyeColor.byDyeDamage(s.getMetadata()) == EnumDyeColor.BROWN, 1); InventoryTools.insertOrDropItems(inventory, drops, world, pos); return true; }
@SubscribeEvent @SideOnly(Side.CLIENT) @SuppressWarnings("deprecation") public static void registerColorHandlerItems(ColorHandlerEvent.Item event) { ItemColors itemColors = event.getItemColors(); itemColors.registerItemColorHandler((stack, tintIndex) -> event.getBlockColors().colorMultiplier(((ItemBlock) stack.getItem()).getBlock().getStateFromMeta(stack.getMetadata()), null, null, tintIndex), BlocksTFC.getAllBlockRockVariants().stream().filter(x -> x.type.isGrass).toArray(BlockRockVariant[]::new)); itemColors.registerItemColorHandler((stack, tintIndex) -> event.getBlockColors().colorMultiplier(((ItemBlock) stack.getItem()).getBlock().getStateFromMeta(stack.getMetadata()), null, null, tintIndex), BlocksTFC.PEAT_GRASS); itemColors.registerItemColorHandler((stack, tintIndex) -> event.getBlockColors().colorMultiplier(((ItemBlock) stack.getItem()).getBlock().getStateFromMeta(stack.getMetadata()), null, null, tintIndex), BlocksTFC.getAllLeafBlocks().toArray(new BlockLeavesTFC[0])); itemColors.registerItemColorHandler((stack, tintIndex) -> tintIndex == 1 ? EnumDyeColor.byDyeDamage(stack.getItemDamage()).getColorValue() : 0xFFFFFF, ItemsTFC.CERAMICS_UNFIRED_VESSEL_GLAZED, ItemsTFC.CERAMICS_FIRED_VESSEL_GLAZED); }
@Override public boolean onBlockActivated(World world, BlockPos pos, IBlockState state, EntityPlayer player, EnumHand hand, EnumFacing facing, float hitX, float hitY, float hitZ) { ItemStack heldItem = player.getHeldItem(hand); if (!heldItem.isEmpty() && heldItem.getItem() == Items.DYE) { if (recolorBlock(world, pos, facing, EnumDyeColor.byDyeDamage(heldItem.getItemDamage()))) { heldItem.shrink(1); } return true; } if (facing == state.getValue(FACING)) { TileCounter tileCounter = (TileCounter) world.getTileEntity(pos); if (tileCounter != null) { if (player.isSneaking()) { tileCounter.getDoorAnimator().toggleForcedOpen(); return true; } else if (!heldItem.isEmpty() && tileCounter.getDoorAnimator().isForcedOpen()) { heldItem = ItemHandlerHelper.insertItemStacked(tileCounter.getItemHandler(), heldItem, false); player.setHeldItem(hand, heldItem); return true; } } } if (!world.isRemote) { if (facing == EnumFacing.UP && !heldItem.isEmpty() && (heldItem.getItem() instanceof ItemBlock || heldItem.getItem() == Compat.cuttingBoardItem)) { return false; } player.openGui(CookingForBlockheads.instance, GuiHandler.COUNTER, world, pos.getX(), pos.getY(), pos.getZ()); } return true; }