package com.thebrokenrail.energonrelics.registry.laser; import com.thebrokenrail.energonrelics.EnergonRelics; import com.thebrokenrail.energonrelics.config.HardcodedConfig; import net.minecraft.block.Block; import net.minecraft.block.Blocks; import net.minecraft.item.Item; import net.minecraft.item.ItemStack; import net.minecraft.item.Items; import java.util.HashMap; import java.util.Map; import java.util.Random; import java.util.function.Function; /** * Industrial Laser Registry */ public class IndustrialLaserRegistry { private static final Map> map = new HashMap<>(); /** * Add To Registry * @param ore Ore Block * @param ingot Ingot Item * @param storage Storage Block */ public static void add(Block ore, Item ingot, Block storage) { map.put(ore, random -> { int min = HardcodedConfig.INDUSTRIAL_LASER_MIN_INGOTS_FROM_ORE; int max = HardcodedConfig.INDUSTRIAL_LASER_MAX_INGOTS_FROM_ORE; int count = random.nextInt(max - min + 1) + min; return new ItemStack(ingot, count); }); if (storage != null) { map.put(storage, random -> new ItemStack(ingot, HardcodedConfig.INDUSTRIAL_LASER_INGOTS_FROM_STORAGE)); } } /** * Check If Registry Contains Block * @param block Block * @return If Registry Contains Block */ public static boolean has(Block block) { return map.containsKey(block); } /** * Get From Registry * @param block Block * @param random Random * @return Output Item(s) */ public static ItemStack get(Block block, Random random) { return map.get(block).apply(random); } static { add(Blocks.REDSTONE_ORE, Items.REDSTONE, Blocks.REDSTONE_BLOCK); add(Blocks.LAPIS_ORE, Items.LAPIS_LAZULI, Blocks.LAPIS_BLOCK); add(Blocks.COAL_ORE, Items.COAL, Blocks.COAL_BLOCK); add(Blocks.IRON_ORE, Items.IRON_INGOT, Blocks.IRON_BLOCK); add(Blocks.GOLD_ORE, Items.GOLD_INGOT, Blocks.GOLD_BLOCK); add(Blocks.NETHER_GOLD_ORE, Items.GOLD_INGOT, null); add(Blocks.DIAMOND_ORE, Items.DIAMOND, Blocks.DIAMOND_BLOCK); add(Blocks.EMERALD_ORE, Items.EMERALD, Blocks.EMERALD_BLOCK); add(EnergonRelics.Blocks.VERIDIUM_ORE, EnergonRelics.Items.VERIDIUM_INGOT, EnergonRelics.Blocks.VERIDIUM_BLOCK); } }