Created
March 9, 2020 16:52
-
-
Save Lanse505/5e963414950dabe8f835d909a5aa9273 to your computer and use it in GitHub Desktop.
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| package com.teamacronymcoders.essence.blocks; | |
| import com.hrznstudio.titanium.block.BasicBlock; | |
| import com.hrznstudio.titanium.recipe.generator.TitaniumLootTableProvider; | |
| import com.teamacronymcoders.essence.Essence; | |
| import com.teamacronymcoders.essence.utils.EssenceObjectHolders; | |
| import com.teamacronymcoders.essence.utils.helpers.EssenceColorHelper; | |
| import net.minecraft.block.Block; | |
| import net.minecraft.block.BlockState; | |
| import net.minecraft.block.material.Material; | |
| import net.minecraft.block.material.MaterialColor; | |
| import net.minecraft.entity.player.PlayerEntity; | |
| import net.minecraft.item.DyeColor; | |
| import net.minecraft.item.ItemStack; | |
| import net.minecraft.tags.ItemTags; | |
| import net.minecraft.util.ActionResultType; | |
| import net.minecraft.util.Hand; | |
| import net.minecraft.util.ResourceLocation; | |
| import net.minecraft.util.math.BlockPos; | |
| import net.minecraft.util.math.BlockRayTraceResult; | |
| import net.minecraft.world.IBlockReader; | |
| import net.minecraft.world.World; | |
| import net.minecraftforge.common.ToolType; | |
| import net.minecraftforge.common.util.Constants; | |
| import javax.annotation.Nonnull; | |
| import java.util.*; | |
| public class EssenceBrickBlock extends BasicBlock { | |
| private static Map<DyeColor, EssenceBrickBlock> dyeToColorMap = new HashMap<>(); | |
| public final DyeColor color; | |
| static { | |
| dyeToColorMap.put(DyeColor.WHITE, EssenceObjectHolders.ESSENCE_BRICKS_WHITE); | |
| dyeToColorMap.put(DyeColor.ORANGE, EssenceObjectHolders.ESSENCE_BRICKS_ORANGE); | |
| dyeToColorMap.put(DyeColor.MAGENTA, EssenceObjectHolders.ESSENCE_BRICKS_MAGENTA); | |
| dyeToColorMap.put(DyeColor.LIGHT_BLUE, EssenceObjectHolders.ESSENCE_BRICKS_LIGHT_BLUE); | |
| dyeToColorMap.put(DyeColor.YELLOW, EssenceObjectHolders.ESSENCE_BRICKS_YELLOW); | |
| dyeToColorMap.put(DyeColor.LIME, EssenceObjectHolders.ESSENCE_BRICKS_LIME); | |
| dyeToColorMap.put(DyeColor.PINK, EssenceObjectHolders.ESSENCE_BRICKS_PINK); | |
| dyeToColorMap.put(DyeColor.GRAY, EssenceObjectHolders.ESSENCE_BRICKS_GRAY); | |
| dyeToColorMap.put(DyeColor.LIGHT_GRAY, EssenceObjectHolders.ESSENCE_BRICKS_LIGHT_GRAY); | |
| dyeToColorMap.put(DyeColor.CYAN, EssenceObjectHolders.ESSENCE_BRICKS_CYAN); | |
| dyeToColorMap.put(DyeColor.PURPLE, EssenceObjectHolders.ESSENCE_BRICKS_PURPLE); | |
| dyeToColorMap.put(DyeColor.BLUE, EssenceObjectHolders.ESSENCE_BRICKS_BLUE); | |
| dyeToColorMap.put(DyeColor.BROWN, EssenceObjectHolders.ESSENCE_BRICKS_BROWN); | |
| dyeToColorMap.put(DyeColor.GREEN, EssenceObjectHolders.ESSENCE_BRICKS_GREEN); | |
| dyeToColorMap.put(DyeColor.RED, EssenceObjectHolders.ESSENCE_BRICKS_RED); | |
| dyeToColorMap.put(DyeColor.BLACK, EssenceObjectHolders.ESSENCE_BRICKS_BLACK); | |
| } | |
| public EssenceBrickBlock(ResourceLocation resourceLocation, DyeColor color) { | |
| super(Block.Properties.create(Material.ROCK).harvestLevel(1).harvestTool(ToolType.PICKAXE).hardnessAndResistance(1.5F, 1200F)); | |
| setRegistryName(resourceLocation + "_" + color.getTranslationKey()); | |
| this.color = color; | |
| } | |
| @SuppressWarnings("deprecation") | |
| @Override | |
| public ActionResultType onBlockActivated(BlockState state, World worldIn, BlockPos pos, PlayerEntity player, Hand handIn, BlockRayTraceResult result) { | |
| if (worldIn.isRemote) { | |
| return ActionResultType.PASS; | |
| } | |
| ItemStack stack = player.getHeldItem(handIn); | |
| Set<ResourceLocation> tags = stack.getItem().getTags(); | |
| List<DyeColor> colors = new ArrayList<>(); | |
| tags.stream().filter(tag -> !colors.contains(EssenceColorHelper.getColorByTag(new ItemTags.Wrapper(tag)))) | |
| .forEach(tag -> colors.add(EssenceColorHelper.getColorByTag(new ItemTags.Wrapper(tag)))); | |
| EssenceBrickBlock newBlock = getBlockByColor(state, colors.stream().skip(Essence.RANDOM.nextInt(colors.size())).findFirst().orElse(null)); | |
| if (!state.equals(newBlock.getDefaultState())) { | |
| worldIn.setBlockState(pos, newBlock.getDefaultState()); | |
| worldIn.notifyBlockUpdate(pos, state, newBlock.getDefaultState(), Constants.BlockFlags.NOTIFY_NEIGHBORS); | |
| } | |
| return ActionResultType.PASS; | |
| } | |
| public static EssenceBrickBlock getBlockByColor(BlockState state, DyeColor color) { | |
| if (color == null) { | |
| EssenceBrickBlock block = (EssenceBrickBlock) state.getBlock(); | |
| return dyeToColorMap.get(block.getColor()); | |
| } | |
| return dyeToColorMap.get(color); | |
| } | |
| @Override | |
| public MaterialColor getMaterialColor(BlockState state, IBlockReader worldIn, BlockPos pos) { | |
| return color.getMapColor(); | |
| } | |
| @Override | |
| public void createLootTable(@Nonnull TitaniumLootTableProvider provider) { | |
| super.createLootTable(provider); | |
| } | |
| public DyeColor getColor() { | |
| return this.color; | |
| } | |
| } |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment