public int colorMultiplier(ItemStack stack, int tintIndex) { return ColorHelper.getDyeColor(ItemHelper.getItemDamage(stack)); }
@Override @SideOnly (Side.CLIENT) public void registerModels() { ModelLoader.setCustomMeshDefinition(this, stack -> new ModelResourceLocation(getRegistryName(), String.format("color0=%s,mode=%s_%s,type=%s", ColorHelper.hasColor0(stack) ? 1 : 0, this.getEnergyStored(stack) > 0 && this.isActive(stack) ? 1 : 0, this.getMode(stack), typeMap.get(ItemHelper.getItemDamage(stack)).name))); for (Map.Entry<Integer, ItemEntry> entry : itemMap.entrySet()) { for (int color0 = 0; color0 < 2; color0++) { for (int active = 0; active < 2; active++) { for (int mode = 0; mode < 3; mode++) { ModelBakery.registerItemVariants(this, new ModelResourceLocation(getRegistryName(), String.format("color0=%s,mode=%s_%s,type=%s", color0, active, mode, entry.getValue().name))); } } } } }
@Override @SideOnly (Side.CLIENT) public void registerModels() { ModelLoader.setCustomMeshDefinition(this, stack -> new ModelResourceLocation(getRegistryName(), String.format("access=%s,color0=%s,color1=%s,type=%s", SecurityHelper.getAccess(stack).toString().toLowerCase(Locale.US), ColorHelper.hasColor0(stack) ? 1 : 0, ColorHelper.hasColor1(stack) ? 1 : 0, typeMap.get(ItemHelper.getItemDamage(stack)).name))); for (Map.Entry<Integer, ItemEntry> entry : itemMap.entrySet()) { for (int access = 0; access < AccessMode.values().length; access++) { for (int color0 = 0; color0 < 2; color0++) { for (int color1 = 0; color1 < 2; color1++) { ModelBakery.registerItemVariants(this, new ModelResourceLocation(getRegistryName(), String.format("access=%s,color0=%s,color1=%s,type=%s", AccessMode.values()[access].toString().toLowerCase(Locale.US), color0, color1, entry.getValue().name))); } } } } }
ItemStack stack = inv.getStackInSlot(i); if (!stack.isEmpty()) { if (ColorHelper.isDye(stack) && dyeStack.isEmpty()) { dyeStack = stack.copy(); dyeIndex = i; } else if (ColorHelper.isDye(stack)) { dyeStack2 = stack.copy(); colorableItem.applyColor(outputStack, ColorHelper.getDyeColor(dyeStack), dyeIndex < colorableIndex ? 0 : 1); } else { colorableItem.applyColor(outputStack, ColorHelper.getDyeColor(dyeStack), 0); colorableItem.applyColor(outputStack, ColorHelper.getDyeColor(dyeStack2), 1);
@Override public List<BakedQuad> bakeItemQuads(EnumFacing face, ItemStack stack) { List<BakedQuad> quads = new ArrayList<>(); if (face == null) { int index = ItemMulti.isCreative(stack) ? 5 : stack.getMetadata(); boolean hasColor = ColorHelper.hasColor0(stack); boolean active = TEItems.itemReservoir.isActive(stack); int mode = TEItems.itemReservoir.getMode(stack); // Insertion order matters, index is used for the quad's tint index. List<TextureAtlasSprite> sprites = new LinkedList<>(); // Safe guard metadata from the item, could cause weird crashes. sprites.add(index >= TETextures.RESERVOIR.length ? TextureUtils.getMissingSprite() : TETextures.RESERVOIR[index]); sprites.add(TETextures.RESERVOIR_MODE[((active ? 1 : 0) << 1) | mode]); if (hasColor) { sprites.add(TETextures.RESERVOIR_COLOR_0); } quads.addAll(ItemQuadBakery.bakeItem(sprites)); if (stack.hasTagCompound() && stack.getTagCompound().hasKey(CoreProps.FLUID)) { FluidStack fluid_stack = FluidStack.loadFluidStackFromNBT(stack.getTagCompound().getCompoundTag(CoreProps.FLUID)); if (fluid_stack != null) { Fluid fluid = fluid_stack.getFluid(); TextureAtlasSprite fluidSprite = TextureHelper.getTexture(fluid.getStill(fluid_stack)); quads.addAll(ItemTextureQuadConverter.convertTexture(DefaultVertexFormats.ITEM, TRSRTransformation.identity(), TETextures.RESERVOIR_MASK, fluidSprite, NORTH_Z_FLUID, EnumFacing.NORTH, fluid.getColor(fluid_stack))); quads.addAll(ItemTextureQuadConverter.convertTexture(DefaultVertexFormats.ITEM, TRSRTransformation.identity(), TETextures.RESERVOIR_MASK, fluidSprite, SOUTH_Z_FLUID, EnumFacing.SOUTH, fluid.getColor(fluid_stack))); } } } return quads; }
@Override @SideOnly (Side.CLIENT) public void registerModels() { ModelResourceLocation loc = new ModelResourceLocation(getRegistryName(), "inventory"); ModelLoader.setCustomMeshDefinition(this, stack -> loc); ModelRegistryHelper.register(loc, new CCBakeryModel()); ModelBakery.registerItemKeyGenerator(this, stack -> { int colour = ColorHelper.hasColor0(stack) ? 1 : 0; int active = isActive(stack) ? 1 : 0; int mode = getMode(stack); String fluid_hash = "none"; if (stack.hasTagCompound() && stack.getTagCompound().hasKey(CoreProps.FLUID)) { FluidStack fluid = FluidStack.loadFluidStackFromNBT(stack.getTagCompound().getCompoundTag(CoreProps.FLUID)); if (fluid != null) { fluid_hash = Integer.toString(FluidHelper.getFluidHash(fluid)); } } return String.format("%s|%s,color0=%s,mode=%s_%s,fluid=%s", getRegistryName(), stack.getMetadata(), colour, active, mode, fluid_hash); }); }