This repository has been archived on 2023-11-26. You can view files and clone it, but cannot push or open issues or pull requests.
EnergonRelics/src/main/java/com/thebrokenrail/energonrelics/registry/laser/IndustrialLaserRegistry.java

73 lines
2.4 KiB
Java

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<Block, Function<Random, ItemStack>> 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);
}
}