mirror of
https://github.com/GTNewHorizons/Botania.git
synced 2026-10-26 14:24:22 +00:00
Color handling
This commit is contained in:
1 parent
1c608d4636
commit
3dd877e69a
23 files changed
+109
-76
No files matched your search
@@ -0,0 +1,74 @@
|
||||
package vazkii.botania.client.core.handler;
|
||||
|
||||
import net.minecraft.block.state.IBlockState;
|
||||
import net.minecraft.client.Minecraft;
|
||||
import net.minecraft.client.renderer.ItemMeshDefinition;
|
||||
import net.minecraft.client.renderer.block.model.ModelResourceLocation;
|
||||
import net.minecraft.client.renderer.color.BlockColors;
|
||||
import net.minecraft.client.renderer.color.IBlockColor;
|
||||
import net.minecraft.client.renderer.color.IItemColor;
|
||||
import net.minecraft.client.renderer.color.ItemColors;
|
||||
import net.minecraft.item.EnumDyeColor;
|
||||
import net.minecraft.item.Item;
|
||||
import net.minecraft.item.ItemStack;
|
||||
import net.minecraft.tileentity.TileEntity;
|
||||
import net.minecraft.util.math.BlockPos;
|
||||
import net.minecraft.world.IBlockAccess;
|
||||
import vazkii.botania.api.state.BotaniaStateProps;
|
||||
import vazkii.botania.common.block.BlockCamo;
|
||||
import vazkii.botania.common.block.ModBlocks;
|
||||
import vazkii.botania.common.block.tile.TileCamo;
|
||||
import vazkii.botania.common.item.IColorable;
|
||||
import vazkii.botania.common.item.ModItems;
|
||||
|
||||
public final class ColorHandler {
|
||||
|
||||
public static void init() {
|
||||
BlockColors blocks = Minecraft.getMinecraft().getBlockColors();
|
||||
|
||||
// 16 colors
|
||||
blocks.registerBlockColorHandler(
|
||||
new IBlockColor() {
|
||||
@Override
|
||||
public int colorMultiplier(IBlockState state, IBlockAccess p_186720_2_, BlockPos pos, int tintIndex) {
|
||||
return state.getValue(BotaniaStateProps.COLOR).getMapColor().colorValue;
|
||||
}
|
||||
},
|
||||
ModBlocks.specialFlower, ModBlocks.manaBeacon, ModBlocks.petalBlock, ModBlocks.unstableBlock);
|
||||
|
||||
// Platforms
|
||||
blocks.registerBlockColorHandler(
|
||||
new IBlockColor() {
|
||||
@Override
|
||||
public int colorMultiplier(IBlockState state, IBlockAccess world, BlockPos pos, int tintIndex) {
|
||||
TileEntity tile = world.getTileEntity(pos);
|
||||
if(tile instanceof TileCamo) {
|
||||
TileCamo camo = (TileCamo) tile;
|
||||
IBlockState camoState = camo.camoState;
|
||||
if(camoState != null)
|
||||
return camoState.getBlock() instanceof BlockCamo ? 0xFFFFFF : Minecraft.getMinecraft().getBlockColors().colorMultiplier(camoState, world, pos, tintIndex);
|
||||
}
|
||||
return 0xFFFFFF;
|
||||
}
|
||||
}, ModBlocks.platform);
|
||||
|
||||
ItemColors items = Minecraft.getMinecraft().getItemColors();
|
||||
|
||||
items.registerItemColorHandler(new IItemColor() {
|
||||
@Override
|
||||
public int getColorFromItemstack(ItemStack stack, int tintIndex) {
|
||||
Item item = stack.getItem();
|
||||
if (item instanceof IColorable) {
|
||||
return ((IColorable) item).getColorFromItemStack(stack, tintIndex);
|
||||
} else {
|
||||
return 0xFFFFFF;
|
||||
}
|
||||
}
|
||||
}, ModItems.dye, ModItems.petal, ModItems.manaGun, ModItems.manaMirror, ModItems.manaTablet, ModItems.signalFlare,
|
||||
ModItems.spellCloth, ModItems.brewFlask, ModItems.brewVial, ModItems.incenseStick, ModItems.bloodPendant, ModItems.enderDagger,
|
||||
ModItems.terraPick, ModItems.lens, Item.getItemFromBlock(ModBlocks.manaBeacon), Item.getItemFromBlock(ModBlocks.petalBlock), Item.getItemFromBlock(ModBlocks.unstableBlock));
|
||||
}
|
||||
|
||||
private ColorHandler() {}
|
||||
|
||||
}
|
||||
@@ -48,6 +48,7 @@ import vazkii.botania.client.core.handler.BaubleRenderHandler;
|
||||
import vazkii.botania.client.core.handler.BotaniaPlayerController;
|
||||
import vazkii.botania.client.core.handler.BoundTileRenderer;
|
||||
import vazkii.botania.client.core.handler.ClientTickHandler;
|
||||
import vazkii.botania.client.core.handler.ColorHandler;
|
||||
import vazkii.botania.client.core.handler.ContributorFancinessHandler;
|
||||
import vazkii.botania.client.core.handler.CorporeaAutoCompleteHandler;
|
||||
import vazkii.botania.client.core.handler.DebugHandler;
|
||||
@@ -180,6 +181,7 @@ public class ClientProxy extends CommonProxy {
|
||||
|
||||
MinecraftForge.EVENT_BUS.register(MiscellaneousIcons.INSTANCE);
|
||||
ModelHandler.registerModels();
|
||||
ColorHandler.init();
|
||||
initRenderers();
|
||||
}
|
||||
|
||||
|
||||
@@ -89,19 +89,6 @@ public abstract class BlockCamo extends BlockMod {
|
||||
return false;
|
||||
}
|
||||
|
||||
@Override
|
||||
@SideOnly(Side.CLIENT)
|
||||
public int colorMultiplier(IBlockAccess par1World, BlockPos pos, int pass) {
|
||||
TileEntity tile = par1World.getTileEntity(pos);
|
||||
if(tile instanceof TileCamo) {
|
||||
TileCamo camo = (TileCamo) tile;
|
||||
IBlockState state = camo.camoState;
|
||||
if(state != null)
|
||||
return state.getBlock() instanceof BlockCamo ? 0xFFFFFF : state.getBlock().getRenderColor(state);
|
||||
}
|
||||
return 0xFFFFFF;
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean hasTileEntity(IBlockState state) {
|
||||
return true;
|
||||
|
||||
@@ -193,11 +193,6 @@ public abstract class BlockModDoubleFlower extends BlockDoublePlant implements I
|
||||
return ImmutableList.of();
|
||||
}
|
||||
|
||||
@Override
|
||||
public int colorMultiplier(IBlockAccess blockAccess, BlockPos pos, int pass) {
|
||||
return 16777215;
|
||||
}
|
||||
|
||||
@Override
|
||||
public void getSubBlocks(Item p_149666_1_, CreativeTabs p_149666_2_, List<ItemStack> p_149666_3_) {
|
||||
for(int i = 0; i < COUNT; ++i)
|
||||
|
||||
@@ -286,17 +286,6 @@ public class BlockSpecialFlower extends BlockFlower implements ISpecialFlower, I
|
||||
((TileSpecialFlower) world.getTileEntity(pos)).onBlockAdded(world, pos, state);
|
||||
}
|
||||
|
||||
@Override
|
||||
public int getRenderColor(IBlockState state) {
|
||||
return state.getValue(BotaniaStateProps.COLOR)
|
||||
.getMapColor().colorValue;
|
||||
}
|
||||
|
||||
@Override
|
||||
public int colorMultiplier(IBlockAccess world, BlockPos pos, int pass) {
|
||||
return getRenderColor(world.getBlockState(pos));
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean onBlockActivated(World world, BlockPos pos, IBlockState state, EntityPlayer player, EnumFacing side, float hitX, float hitY, float hitZ) {
|
||||
ItemStack stack = player.getCurrentEquippedItem();
|
||||
|
||||
@@ -98,16 +98,6 @@ public class BlockManaBeacon extends BlockMod implements ILexiconable {
|
||||
return getMetaFromState(state);
|
||||
}
|
||||
|
||||
@Override
|
||||
public int getRenderColor(IBlockState state) {
|
||||
return state.getValue(BotaniaStateProps.COLOR).getMapColor().colorValue;
|
||||
}
|
||||
|
||||
@Override
|
||||
public int colorMultiplier(IBlockAccess par1iBlockAccess, BlockPos pos, int pass) {
|
||||
return getRenderColor(par1iBlockAccess.getBlockState(pos));
|
||||
}
|
||||
|
||||
@Override
|
||||
public LexiconEntry getEntry(World world, BlockPos pos, EntityPlayer player, ItemStack lexicon) {
|
||||
return LexiconData.unstableBlocks;
|
||||
|
||||
@@ -78,16 +78,6 @@ public class BlockPetalBlock extends BlockMod implements ILexiconable {
|
||||
return super.setUnlocalizedName(par1Str);
|
||||
}
|
||||
|
||||
@Override
|
||||
public int getRenderColor(IBlockState state) {
|
||||
return state.getValue(BotaniaStateProps.COLOR).getMapColor().colorValue;
|
||||
}
|
||||
|
||||
@Override
|
||||
public int colorMultiplier(IBlockAccess world, BlockPos pos, int pass) {
|
||||
return getRenderColor(world.getBlockState(pos));
|
||||
}
|
||||
|
||||
@Override
|
||||
public int damageDropped(IBlockState state) {
|
||||
return getMetaFromState(state);
|
||||
|
||||
@@ -110,16 +110,6 @@ public class BlockUnstable extends BlockMod implements ILexiconable {
|
||||
return getMetaFromState(state);
|
||||
}
|
||||
|
||||
@Override
|
||||
public int getRenderColor(IBlockState state) {
|
||||
return state.getValue(BotaniaStateProps.COLOR).getMapColor().colorValue;
|
||||
}
|
||||
|
||||
@Override
|
||||
public int colorMultiplier(IBlockAccess par1iBlockAccess, BlockPos pos, int pass) {
|
||||
return getRenderColor(par1iBlockAccess.getBlockState(pos));
|
||||
}
|
||||
|
||||
@Override
|
||||
public LexiconEntry getEntry(World world, BlockPos pos, EntityPlayer player, ItemStack lexicon) {
|
||||
return LexiconData.unstableBlocks;
|
||||
|
||||
@@ -0,0 +1,7 @@
|
||||
package vazkii.botania.common.item;
|
||||
|
||||
import net.minecraft.item.ItemStack;
|
||||
|
||||
public interface IColorable {
|
||||
int getColorFromItemStack(ItemStack stack, int tintIndex);
|
||||
}
|
||||
@@ -17,7 +17,7 @@ import net.minecraft.item.EnumDyeColor;
|
||||
import net.minecraft.item.Item;
|
||||
import net.minecraft.item.ItemStack;
|
||||
|
||||
public class Item16Colors extends ItemMod {
|
||||
public class Item16Colors extends ItemMod implements IColorable {
|
||||
|
||||
public Item16Colors(String name) {
|
||||
super();
|
||||
|
||||
@@ -47,7 +47,7 @@ import net.minecraftforge.fml.common.registry.GameRegistry;
|
||||
import net.minecraftforge.fml.relauncher.Side;
|
||||
import net.minecraftforge.fml.relauncher.SideOnly;
|
||||
|
||||
public class ItemManaGun extends ItemMod implements IManaUsingItem {
|
||||
public class ItemManaGun extends ItemMod implements IManaUsingItem, IColorable {
|
||||
|
||||
private static final String TAG_LENS = "lens";
|
||||
private static final String TAG_CLIP = "clip";
|
||||
|
||||
@@ -33,7 +33,7 @@ import vazkii.botania.common.block.tile.mana.TilePool;
|
||||
import vazkii.botania.common.core.helper.ItemNBTHelper;
|
||||
import vazkii.botania.common.lib.LibItemNames;
|
||||
|
||||
public class ItemManaMirror extends ItemMod implements IManaItem, ICoordBoundItem, IManaTooltipDisplay {
|
||||
public class ItemManaMirror extends ItemMod implements IManaItem, ICoordBoundItem, IManaTooltipDisplay, IColorable {
|
||||
|
||||
private static final String TAG_MANA = "mana";
|
||||
private static final String TAG_MANA_BACKLOG = "manaBacklog";
|
||||
|
||||
@@ -26,7 +26,7 @@ import vazkii.botania.api.mana.IManaTooltipDisplay;
|
||||
import vazkii.botania.common.core.helper.ItemNBTHelper;
|
||||
import vazkii.botania.common.lib.LibItemNames;
|
||||
|
||||
public class ItemManaTablet extends ItemMod implements IManaItem, ICreativeManaProvider, IManaTooltipDisplay {
|
||||
public class ItemManaTablet extends ItemMod implements IManaItem, ICreativeManaProvider, IManaTooltipDisplay, IColorable {
|
||||
|
||||
private static final int MAX_MANA = 500000;
|
||||
|
||||
|
||||
@@ -36,7 +36,7 @@ import vazkii.botania.common.core.helper.ItemNBTHelper;
|
||||
import vazkii.botania.common.entity.EntitySignalFlare;
|
||||
import vazkii.botania.common.lib.LibItemNames;
|
||||
|
||||
public class ItemSignalFlare extends ItemMod {
|
||||
public class ItemSignalFlare extends ItemMod implements IColorable {
|
||||
|
||||
private static final String TAG_COLOR = "color";
|
||||
|
||||
|
||||
@@ -21,7 +21,7 @@ import net.minecraftforge.fml.common.registry.GameRegistry;
|
||||
import net.minecraftforge.fml.relauncher.Side;
|
||||
import net.minecraftforge.fml.relauncher.SideOnly;
|
||||
|
||||
public class ItemSpellCloth extends ItemMod {
|
||||
public class ItemSpellCloth extends ItemMod implements IColorable {
|
||||
|
||||
public ItemSpellCloth() {
|
||||
setMaxDamage(35);
|
||||
|
||||
@@ -1,19 +1,21 @@
|
||||
package vazkii.botania.common.item.block;
|
||||
|
||||
import net.minecraft.block.Block;
|
||||
import net.minecraft.client.Minecraft;
|
||||
import net.minecraft.item.ItemStack;
|
||||
import net.minecraftforge.fml.relauncher.Side;
|
||||
import net.minecraftforge.fml.relauncher.SideOnly;
|
||||
import vazkii.botania.common.item.IColorable;
|
||||
|
||||
public class ItemBlockWithMetaNameAndColor extends ItemBlockWithMetadataAndName {
|
||||
public class ItemBlockWithMetaNameAndColor extends ItemBlockWithMetadataAndName implements IColorable {
|
||||
public ItemBlockWithMetaNameAndColor(Block block) {
|
||||
super(block);
|
||||
}
|
||||
|
||||
@Override
|
||||
@SideOnly(Side.CLIENT)
|
||||
public int getColorFromItemStack(ItemStack stack, int renderPass)
|
||||
{
|
||||
return this.block.getRenderColor(this.block.getStateFromMeta(stack.getMetadata()));
|
||||
public int getColorFromItemStack(ItemStack stack, int renderPass) {
|
||||
return Minecraft.getMinecraft().getBlockColors()
|
||||
.colorMultiplier(this.block.getStateFromMeta(stack.getMetadata()), null, null, renderPass);
|
||||
}
|
||||
}
|
||||
@@ -33,9 +33,10 @@ import vazkii.botania.client.core.handler.ClientTickHandler;
|
||||
import vazkii.botania.common.achievement.IPickupAchievement;
|
||||
import vazkii.botania.common.achievement.ModAchievements;
|
||||
import vazkii.botania.common.core.helper.ItemNBTHelper;
|
||||
import vazkii.botania.common.item.IColorable;
|
||||
import vazkii.botania.common.item.ItemMod;
|
||||
|
||||
public abstract class ItemBrewBase extends ItemMod implements IBrewItem, IPickupAchievement {
|
||||
public abstract class ItemBrewBase extends ItemMod implements IBrewItem, IPickupAchievement, IColorable {
|
||||
|
||||
private static final String TAG_BREW_KEY = "brewKey";
|
||||
private static final String TAG_SWIGS_LEFT = "swigsLeft";
|
||||
|
||||
@@ -28,10 +28,11 @@ import vazkii.botania.api.brew.IBrewContainer;
|
||||
import vazkii.botania.api.brew.IBrewItem;
|
||||
import vazkii.botania.client.core.handler.ClientTickHandler;
|
||||
import vazkii.botania.common.core.helper.ItemNBTHelper;
|
||||
import vazkii.botania.common.item.IColorable;
|
||||
import vazkii.botania.common.item.ItemMod;
|
||||
import vazkii.botania.common.lib.LibItemNames;
|
||||
|
||||
public class ItemIncenseStick extends ItemMod implements IBrewItem, IBrewContainer {
|
||||
public class ItemIncenseStick extends ItemMod implements IBrewItem, IBrewContainer, IColorable {
|
||||
|
||||
private static final String TAG_BREW_KEY = "brewKey";
|
||||
public static final int TIME_MULTIPLIER = 60;
|
||||
|
||||
@@ -44,10 +44,11 @@ import vazkii.botania.client.core.handler.ClientTickHandler;
|
||||
import vazkii.botania.client.core.handler.MiscellaneousIcons;
|
||||
import vazkii.botania.client.core.helper.IconHelper;
|
||||
import vazkii.botania.common.core.helper.ItemNBTHelper;
|
||||
import vazkii.botania.common.item.IColorable;
|
||||
import vazkii.botania.common.lib.LibItemNames;
|
||||
import baubles.api.BaubleType;
|
||||
|
||||
public class ItemBloodPendant extends ItemBauble implements IBrewContainer, IBrewItem, IManaUsingItem, IBaubleRender {
|
||||
public class ItemBloodPendant extends ItemBauble implements IBrewContainer, IBrewItem, IManaUsingItem, IBaubleRender, IColorable {
|
||||
|
||||
private static final String TAG_BREW_KEY = "brewKey";
|
||||
|
||||
|
||||
@@ -21,10 +21,11 @@ import net.minecraft.item.ItemStack;
|
||||
import net.minecraft.util.DamageSource;
|
||||
import net.minecraft.world.World;
|
||||
import vazkii.botania.api.BotaniaAPI;
|
||||
import vazkii.botania.common.item.IColorable;
|
||||
import vazkii.botania.common.item.equipment.tool.manasteel.ItemManasteelSword;
|
||||
import vazkii.botania.common.lib.LibItemNames;
|
||||
|
||||
public class ItemEnderDagger extends ItemManasteelSword {
|
||||
public class ItemEnderDagger extends ItemManasteelSword implements IColorable {
|
||||
|
||||
public ItemEnderDagger() {
|
||||
super(BotaniaAPI.manasteelToolMaterial, LibItemNames.ENDER_DAGGER);
|
||||
|
||||
+2
-1
@@ -37,6 +37,7 @@ import vazkii.botania.api.mana.IManaItem;
|
||||
import vazkii.botania.common.achievement.ModAchievements;
|
||||
import vazkii.botania.common.core.helper.ItemNBTHelper;
|
||||
import vazkii.botania.common.crafting.recipe.TerraPickTippingRecipe;
|
||||
import vazkii.botania.common.item.IColorable;
|
||||
import vazkii.botania.common.item.ItemTemperanceStone;
|
||||
import vazkii.botania.common.item.ModItems;
|
||||
import vazkii.botania.common.item.equipment.tool.ToolCommons;
|
||||
@@ -48,7 +49,7 @@ import net.minecraftforge.fml.common.registry.GameRegistry;
|
||||
import net.minecraftforge.fml.relauncher.Side;
|
||||
import net.minecraftforge.fml.relauncher.SideOnly;
|
||||
|
||||
public class ItemTerraPick extends ItemManasteelPick implements IManaItem, ISequentialBreaker {
|
||||
public class ItemTerraPick extends ItemManasteelPick implements IManaItem, ISequentialBreaker, IColorable {
|
||||
|
||||
private static final String TAG_ENABLED = "enabled";
|
||||
private static final String TAG_MANA = "mana";
|
||||
|
||||
@@ -35,11 +35,12 @@ import vazkii.botania.common.Botania;
|
||||
import vazkii.botania.common.core.helper.ItemNBTHelper;
|
||||
import vazkii.botania.common.crafting.recipe.CompositeLensRecipe;
|
||||
import vazkii.botania.common.crafting.recipe.LensDyeingRecipe;
|
||||
import vazkii.botania.common.item.IColorable;
|
||||
import vazkii.botania.common.item.ItemMod;
|
||||
import vazkii.botania.common.lib.LibItemNames;
|
||||
import net.minecraftforge.fml.common.registry.GameRegistry;
|
||||
|
||||
public class ItemLens extends ItemMod implements ILensControl, ICompositableLens, ITinyPlanetExcempt {
|
||||
public class ItemLens extends ItemMod implements ILensControl, ICompositableLens, ITinyPlanetExcempt, IColorable {
|
||||
|
||||
public static final int SUBTYPES = 22;
|
||||
|
||||
|
||||
@@ -36,6 +36,7 @@ import vazkii.botania.common.achievement.IPickupAchievement;
|
||||
import vazkii.botania.common.achievement.ModAchievements;
|
||||
import vazkii.botania.common.entity.EntityDoppleganger;
|
||||
import vazkii.botania.common.entity.EntityEnderAirBottle;
|
||||
import vazkii.botania.common.item.IColorable;
|
||||
import vazkii.botania.common.item.ItemMod;
|
||||
import vazkii.botania.common.item.equipment.tool.ToolCommons;
|
||||
import vazkii.botania.common.lib.LibItemNames;
|
||||
@@ -43,7 +44,7 @@ import net.minecraftforge.fml.common.eventhandler.SubscribeEvent;
|
||||
import net.minecraftforge.fml.relauncher.Side;
|
||||
import net.minecraftforge.fml.relauncher.SideOnly;
|
||||
|
||||
public class ItemManaResource extends ItemMod implements IFlowerComponent, IElvenItem, IPickupAchievement {
|
||||
public class ItemManaResource extends ItemMod implements IFlowerComponent, IElvenItem, IPickupAchievement, IColorable {
|
||||
|
||||
final int types = 24;
|
||||
|
||||
|
||||
Reference in new issue
Block a user