package ru.dbotthepony.mc.otm.registry

import net.minecraft.resources.ResourceLocation
import ru.dbotthepony.mc.otm.OverdriveThatMatters

object MNames {
	const val LABORATORY_LAMP = "laboratory_lamp"
	const val LABORATORY_LAMP_INVERTED = "laboratory_lamp_inverted"
	const val LABORATORY_LAMP_LIGHT = "laboratory_lamp_light"
	const val DANGER_STRIPE_BLOCK = "danger_stripe_block"
	const val METAL_BEAM = "metal_beam"
	const val ENGINE = "engine"
	const val HOLO_SIGN = "holo_sign"
	const val FLUID_TANK = "fluid_tank"
	const val ANDROID_CHARGER = "android_charger"

	// blocks
	const val ANDROID_STATION = "android_station"
	const val BATTERY_BANK = "battery_bank"
	const val MATTER_DECOMPOSER = "matter_decomposer"
	const val MATTER_CAPACITOR_BANK = "matter_capacitor_bank"
	const val MATTER_CABLE = "matter_cable"
	const val PATTERN_STORAGE = "pattern_storage"
	const val MATTER_SCANNER = "matter_scanner"
	const val MATTER_PANEL = "matter_panel"
	const val MATTER_REPLICATOR = "matter_replicator"
	const val MATTER_BOTTLER = "matter_bottler"
	const val MATTER_RECONSTRUCTOR = "matter_reconstructor"
	const val DRIVE_VIEWER = "drive_viewer"
	const val DRIVE_RACK = "drive_rack"
	const val ITEM_MONITOR = "item_monitor"
	const val ENERGY_COUNTER = "energy_counter"
	const val CHEMICAL_GENERATOR = "chemical_generator"
	const val PLATE_PRESS = "plate_press"
	const val POWERED_FURNACE = "powered_furnace"
	const val POWERED_BLAST_FURNACE = "powered_blast_furnace"
	const val POWERED_SMOKER = "powered_smoker"
	const val TWIN_PLATE_PRESS = "twin_plate_press"
	const val MATTER_RECYCLER = "matter_recycler"
	const val ENERGY_SERVO = "energy_servo"
	const val COBBLESTONE_GENERATOR = "cobblestone_generator"
	const val ESSENCE_STORAGE = "essence_storage"
	const val TRITANIUM_ANVIL = "tritanium_anvil"

	const val STORAGE_CABLE = "storage_cable" // нужен рецепт
	const val STORAGE_POWER_SUPPLIER = "storage_power_supplier" // нужен рецепт

	const val DEBUG_EXPLOSION_SMALL = "debug_explosion_small"
	const val DEBUG_SPHERE_POINTS = "debug_sphere_points"

	const val BLACK_HOLE = "black_hole"
	const val GRAVITATION_STABILIZER = "gravitation_stabilizer" // нужен рецепт
	const val GRAVITATION_STABILIZER_LENS = "gravitation_stabilizer_lens"

	const val CARGO_CRATE = "cargo_crate"
	const val MINECART_CARGO_CRATE = "minecart_cargo_crate"
	const val DECORATIVE_CRATE = "decorative_crate"

	const val STORAGE_BUS = "storage_bus"
	const val STORAGE_IMPORTER = "storage_importer"
	const val STORAGE_EXPORTER = "storage_exporter"
	const val STORAGE_INTERFACE = "storage_interface"

	// building blocks
	const val TRITANIUM_BLOCK = "tritanium_block"
	const val TRITANIUM_STAIRS = "tritanium_stairs"
	const val TRITANIUM_SLAB = "tritanium_slab"
	const val TRITANIUM_WALL = "tritanium_wall"
	const val TRITANIUM_STRIPED_BLOCK = "tritanium_striped_block"
	const val TRITANIUM_STRIPED_STAIRS = "tritanium_striped_stairs"
	const val TRITANIUM_STRIPED_SLAB = "tritanium_striped_slab"
	const val TRITANIUM_STRIPED_WALL = "tritanium_striped_wall"

	const val INDUSTRIAL_GLASS = "industrial_glass"
	const val INDUSTRIAL_GLASS_PANE = "industrial_glass_pane"

	const val METAL_MESH = "metal_mesh"
	const val METAL_JUNK = "metal_junk"
	const val CARBON_FIBRE_BLOCK = "carbon_fibre_block"

	const val FLOOR_TILES = "floor_tiles"
	const val FLOOR_TILES_STAIRS = "floor_tiles_stairs"
	const val FLOOR_TILES_SLAB = "floor_tiles_slab"
	const val UNREFINED_FLOOR_TILES = "unrefined_floor_tiles"
	const val VENT = "vent"
	const val VENT_ALTERNATIVE = "vent_alternative"

	// items
	const val GRAVITATIONAL_DISRUPTOR = "gravitational_disruptor"
	const val MATTER_DUST = "matter_dust"

	const val PILL_ANDROID = "pill_android"
	const val PILL_HUMANE = "pill_humane"
	const val PILL_OBLIVION = "pill_oblivion"
	const val PILL_HEAL = "pill_heal"

	const val BATTERY_CRUDE = "battery_crude"
	const val BATTERY_BASIC = "battery_basic"
	const val BATTERY_NORMAL = "battery_normal"
	const val BATTERY_DENSE = "battery_dense"
	const val BATTERY_CAPACITOR = "battery_capacitor"
	const val BATTERY_CREATIVE = "battery_creative"

	const val QUANTUM_BATTERY = "quantum_battery"
	const val QUANTUM_CAPACITOR = "quantum_capacitor"
	const val QUANTUM_BATTERY_CREATIVE = "quantum_battery_creative"

	const val MATTER_CAPACITOR_PARTS = "matter_capacitor_parts"
	const val MATTER_CAPACITOR_BASIC = "matter_capacitor_basic"
	const val MATTER_CAPACITOR_NORMAL = "matter_capacitor_normal"
	const val MATTER_CAPACITOR_DENSE = "matter_capacitor_dense"
	const val MATTER_CAPACITOR_CREATIVE = "matter_capacitor_creative"

	const val PATTERN_DRIVE_NORMAL = "pattern_drive_normal"
	const val PATTERN_DRIVE_CREATIVE = "pattern_drive_creative"
	const val PATTERN_DRIVE_CREATIVE2 = "pattern_drive_creative2"

	const val ZPM_BATTERY = "zpm_battery"
	const val PROCEDURAL_BATTERY = "procedural_battery"

	const val NUTRIENT_PASTE = "nutrient_paste"

	const val PORTABLE_CONDENSATION_DRIVE = "portable_condensation_drive"
	const val PORTABLE_DENSE_CONDENSATION_DRIVE = "portable_dense_condensation_drive"

	const val BLACK_HOLE_SCANNER = "black_hole_scanner"
	const val GRAVITATION_FIELD_LIMITER = "gravitation_field_limiter"
	const val GRAVITATION_FIELD_SENSOR = "gravitation_field_sensor"
	const val PORTABLE_GRAVITATION_STABILIZER = "portable_gravitation_stabilizer"

	const val EXOPACK_PROBE = "exosuit_probe"

	// armor
	const val TRITANIUM_HELMET = "tritanium_helmet"
	const val TRITANIUM_CHESTPLATE = "tritanium_chestplate"
	const val TRITANIUM_PANTS = "tritanium_pants"
	const val TRITANIUM_BOOTS = "tritanium_boots"

	const val SIMPLE_TRITANIUM_HELMET = "simple_tritanium_helmet"
	const val SIMPLE_TRITANIUM_CHESTPLATE = "simple_tritanium_chestplate"
	const val SIMPLE_TRITANIUM_PANTS = "simple_tritanium_pants"
	const val SIMPLE_TRITANIUM_BOOTS = "simple_tritanium_boots"

	// tools
	const val TRITANIUM_SWORD = "tritanium_sword"
	const val TRITANIUM_AXE = "tritanium_axe"
	const val TRITANIUM_PICKAXE = "tritanium_pickaxe"
	const val TRITANIUM_SHOVEL = "tritanium_shovel"
	const val TRITANIUM_HOE = "tritanium_hoe"
	const val TRITANIUM_SHEARS = "tritanium_shears"
	const val TRITANIUM_SHIELD = "tritanium_shield"

	const val ENERGY_SWORD = "energy_sword"

	const val PLASMA_RIFLE = "plasma_rifle"

	// items: crafting components
	const val TRITANIUM_DUST = "tritanium_dust"
	const val TRITANIUM_NUGGET = "tritanium_nugget"
	const val TRITANIUM_INGOT = "tritanium_ingot"
	const val TRITANIUM_INGOT_BLOCK = "tritanium_ingot_block"
	const val TRITANIUM_BARS = "tritanium_bars"

	const val MATTER_IO_PORT = "matter_io_port"
	const val MATTER_TRANSFORM_MATRIX = "matter_transform_matrix"

	const val CARBON_MESH = "carbon_mesh"
	const val REINFORCED_TRITANIUM_PLATE = "reinforced_tritanium_plate"

	const val ENERGY_BUS = "energy_bus"
	const val ELECTRIC_PARTS = "electric_parts"

	const val MACHINE_FRAME = "machine_frame"
	const val TRITANIUM_PLATE = "tritanium_plate"
	const val IRON_PLATE = "iron_plate"
	const val GOLD_PLATE = "gold_plate"
	const val COPPER_WIRING = "copper_wiring"
	const val GOLD_WIRING = "gold_wiring"

	const val PORTABLE_CONDENSATION_DRIVE_CASING = "portable_condensation_drive_casing"
	const val PORTABLE_DENSE_CONDENSATION_DRIVE_CASING = "portable_dense_condensation_drive_casing"

	const val CIRCUIT_PLATING = "circuit_plating"
	const val BASIC_CONTROL_CIRCUIT = "basic_control_circuit"
	const val ADVANCED_CONTROL_CIRCUIT = "advanced_control_circuit"

	const val TRITANIUM_ORE = "tritanium_ore"
	const val DEEPSLATE_TRITANIUM_ORE = "deepslate_tritanium_ore"
	const val TRITANIUM_RAW_BLOCK = "tritanium_raw_block"
	const val TRITANIUM_ORE_CLUMP = "tritanium_ore_clump"

	// android features and research
	const val AIR_BAGS = "air_bags"
	const val STEP_ASSIST = "step_assist"

	const val LIMB_OVERCLOCKING = "limb_overclocking"
	const val LIMB_OVERCLOCKING_1 = "limb_overclocking_1"
	const val LIMB_OVERCLOCKING_2 = "limb_overclocking_2"
	const val LIMB_OVERCLOCKING_3 = "limb_overclocking_3"
	const val LIMB_OVERCLOCKING_4 = "limb_overclocking_4"

	const val ATTACK_BOOST =   "attack_boost"
	const val ATTACK_BOOST_1 = "attack_boost_1"
	const val ATTACK_BOOST_2 = "attack_boost_2"
	const val ATTACK_BOOST_3 = "attack_boost_3"
	const val ATTACK_BOOST_4 = "attack_boost_4"

	val LIMB_OVERCLOCKING_LIST = listOf(LIMB_OVERCLOCKING_1, LIMB_OVERCLOCKING_2, LIMB_OVERCLOCKING_3, LIMB_OVERCLOCKING_4)
	val ATTACK_BOOST_LIST = listOf(ATTACK_BOOST_1,
			ATTACK_BOOST_2,
			ATTACK_BOOST_3,
			ATTACK_BOOST_4)

	const val NANOBOTS = "nanobots"
	const val NANOBOTS_REGENERATION = "nanobots_regeneration"
	const val NANOBOTS_REGENERATION_1 = "nanobots_regeneration_1"
	const val NANOBOTS_REGENERATION_2 = "nanobots_regeneration_2"
	const val NANOBOTS_REGENERATION_3 = "nanobots_regeneration_3"
	const val NANOBOTS_REGENERATION_4 = "nanobots_regeneration_4"

	val NANOBOTS_REGENERATION_LIST = listOf(NANOBOTS_REGENERATION_1, NANOBOTS_REGENERATION_2, NANOBOTS_REGENERATION_3, NANOBOTS_REGENERATION_4)

	const val NANOBOTS_ARMOR = "nanobots_armor"

	const val NANOBOTS_ARMOR_STRENGTH_1 = "nanobots_armor_strength_1"
	const val NANOBOTS_ARMOR_STRENGTH_2 = "nanobots_armor_strength_2"
	const val NANOBOTS_ARMOR_STRENGTH_3 = "nanobots_armor_strength_3"
	val NANOBOTS_ARMOR_STRENGTH_LIST = listOf(
		NANOBOTS_ARMOR_STRENGTH_1,
		NANOBOTS_ARMOR_STRENGTH_2,
		NANOBOTS_ARMOR_STRENGTH_3,
	)

	const val NANOBOTS_ARMOR_SPEED_1 = "nanobots_armor_speed_1"
	const val NANOBOTS_ARMOR_SPEED_2 = "nanobots_armor_speed_2"
	const val NANOBOTS_ARMOR_SPEED_3 = "nanobots_armor_speed_3"
	val NANOBOTS_ARMOR_SPEED_LIST = listOf(
		NANOBOTS_ARMOR_SPEED_1,
		NANOBOTS_ARMOR_SPEED_2,
		NANOBOTS_ARMOR_SPEED_3,
	)

	const val HYDRAULICS_OVERLOAD = "hydraulics_overload"
	const val HYDRAULICS_OVERLOAD_1 = "hydraulics_overload_1"
	const val HYDRAULICS_OVERLOAD_2 = "hydraulics_overload_2"
	const val HYDRAULICS_OVERLOAD_3 = "hydraulics_overload_3"

	const val EXTENDED_REACH = "extended_reach"
	const val NIGHT_VISION = "night_vision"
	const val SHOCKWAVE = "shockwave"
	const val ITEM_MAGNET = "item_magnet"
	const val FALL_DAMPENERS = "fall_dampeners"
	const val IMPROVED_LIMBS = "improved_limbs"

	// stats
	const val DAMAGE_ABSORBED = "damage_absorbed"
	const val HEALTH_REGENERATED = "health_regenerated"
	const val POWER_CONSUMED = "power_consumed"

	// entities
	const val PLASMA = "plasma_projectile"

	const val PHANTOM_ATTRACTOR = "phantom_attractor"
	const val JUMP_BOOST = "jump_boost"
	const val ENDER_TELEPORTER = "ender_teleporter"

	const val TRITANIUM_DOOR = "tritanium_door"
	const val TRITANIUM_TRAPDOOR = "tritanium_trapdoor"
	const val TRITANIUM_PRESSURE_PLATE = "tritanium_pressure_plate"
}

object StatNames {
	val DAMAGE_ABSORBED = ResourceLocation(OverdriveThatMatters.MOD_ID, MNames.DAMAGE_ABSORBED)
	val HEALTH_REGENERATED = ResourceLocation(OverdriveThatMatters.MOD_ID, MNames.HEALTH_REGENERATED)
	val POWER_CONSUMED = ResourceLocation(OverdriveThatMatters.MOD_ID, MNames.POWER_CONSUMED)
}
