From 856c0d32a2f4809d28b681e822c8f36a446ee8a4 Mon Sep 17 00:00:00 2001 From: CoderJoe Date: Mon, 23 Mar 2026 19:56:31 -0400 Subject: [PATCH 1/3] Add EXPERIENCE fluid type with textures for all fluid blocks Add a new EXPERIENCE variant to FluidType and wire it through FluidBlockDialog (display name, color), FluidPump (visual state), and all fluid block YAML configs (container, merger, pipe, splitter) with corresponding XP textures. --- .../coderjoe/atlas/fluid/FluidBlockDialog.kt | 4 + .../com/coderjoe/atlas/fluid/FluidType.kt | 1 + .../coderjoe/atlas/fluid/block/FluidPump.kt | 1 + .../atlas/configuration/fluid_container.yml | 296 +++++++++++++++--- .../atlas/configuration/fluid_merger.yml | 68 +++- .../atlas/configuration/fluid_pipe.yml | 68 +++- .../atlas/configuration/fluid_splitter.yml | 68 +++- .../custom/fluid_container_back_xp_full.png | Bin 0 -> 208 bytes .../custom/fluid_container_back_xp_low.png | Bin 0 -> 303 bytes .../custom/fluid_container_back_xp_medium.png | Bin 0 -> 282 bytes .../custom/fluid_container_front_xp_full.png | Bin 0 -> 223 bytes .../custom/fluid_container_front_xp_low.png | Bin 0 -> 295 bytes .../fluid_container_front_xp_medium.png | Bin 0 -> 278 bytes .../custom/fluid_container_side_xp_full.png | Bin 0 -> 160 bytes .../custom/fluid_container_side_xp_low.png | Bin 0 -> 246 bytes .../custom/fluid_container_side_xp_medium.png | Bin 0 -> 249 bytes .../custom/fluid_container_top_xp_full.png | Bin 0 -> 159 bytes .../custom/fluid_container_top_xp_low.png | Bin 0 -> 264 bytes .../custom/fluid_container_top_xp_medium.png | Bin 0 -> 291 bytes .../block/custom/fluid_merger_back_xp.png | Bin 0 -> 172 bytes .../block/custom/fluid_merger_bottom_xp.png | Bin 0 -> 172 bytes .../block/custom/fluid_merger_front_xp.png | Bin 0 -> 168 bytes .../block/custom/fluid_merger_side_xp.png | Bin 0 -> 172 bytes .../block/custom/fluid_merger_top_xp.png | Bin 0 -> 172 bytes .../custom/fluid_pipe_back_filled_xp.png | Bin 0 -> 386 bytes .../custom/fluid_pipe_front_filled_xp.png | Bin 0 -> 393 bytes .../custom/fluid_pipe_side_filled_xp_down.png | Bin 0 -> 327 bytes .../custom/fluid_pipe_side_filled_xp_left.png | Bin 0 -> 335 bytes .../fluid_pipe_side_filled_xp_right.png | Bin 0 -> 323 bytes .../custom/fluid_pipe_side_filled_xp_up.png | Bin 0 -> 320 bytes .../block/custom/fluid_splitter_back_xp.png | Bin 0 -> 172 bytes .../block/custom/fluid_splitter_bottom_xp.png | Bin 0 -> 91 bytes .../block/custom/fluid_splitter_front_xp.png | Bin 0 -> 168 bytes .../block/custom/fluid_splitter_side_xp.png | Bin 0 -> 168 bytes .../block/custom/fluid_splitter_top_xp.png | Bin 0 -> 168 bytes .../com/coderjoe/atlas/fluid/FluidTypeTest.kt | 3 +- 36 files changed, 462 insertions(+), 47 deletions(-) create mode 100644 src/main/resources/atlas/resourcepack/assets/minecraft/textures/block/custom/fluid_container_back_xp_full.png create mode 100644 src/main/resources/atlas/resourcepack/assets/minecraft/textures/block/custom/fluid_container_back_xp_low.png create mode 100644 src/main/resources/atlas/resourcepack/assets/minecraft/textures/block/custom/fluid_container_back_xp_medium.png create mode 100644 src/main/resources/atlas/resourcepack/assets/minecraft/textures/block/custom/fluid_container_front_xp_full.png create mode 100644 src/main/resources/atlas/resourcepack/assets/minecraft/textures/block/custom/fluid_container_front_xp_low.png create mode 100644 src/main/resources/atlas/resourcepack/assets/minecraft/textures/block/custom/fluid_container_front_xp_medium.png create mode 100644 src/main/resources/atlas/resourcepack/assets/minecraft/textures/block/custom/fluid_container_side_xp_full.png create mode 100644 src/main/resources/atlas/resourcepack/assets/minecraft/textures/block/custom/fluid_container_side_xp_low.png create mode 100644 src/main/resources/atlas/resourcepack/assets/minecraft/textures/block/custom/fluid_container_side_xp_medium.png create mode 100644 src/main/resources/atlas/resourcepack/assets/minecraft/textures/block/custom/fluid_container_top_xp_full.png create mode 100644 src/main/resources/atlas/resourcepack/assets/minecraft/textures/block/custom/fluid_container_top_xp_low.png create mode 100644 src/main/resources/atlas/resourcepack/assets/minecraft/textures/block/custom/fluid_container_top_xp_medium.png create mode 100644 src/main/resources/atlas/resourcepack/assets/minecraft/textures/block/custom/fluid_merger_back_xp.png create mode 100644 src/main/resources/atlas/resourcepack/assets/minecraft/textures/block/custom/fluid_merger_bottom_xp.png create mode 100644 src/main/resources/atlas/resourcepack/assets/minecraft/textures/block/custom/fluid_merger_front_xp.png create mode 100644 src/main/resources/atlas/resourcepack/assets/minecraft/textures/block/custom/fluid_merger_side_xp.png create mode 100644 src/main/resources/atlas/resourcepack/assets/minecraft/textures/block/custom/fluid_merger_top_xp.png create mode 100644 src/main/resources/atlas/resourcepack/assets/minecraft/textures/block/custom/fluid_pipe_back_filled_xp.png create mode 100644 src/main/resources/atlas/resourcepack/assets/minecraft/textures/block/custom/fluid_pipe_front_filled_xp.png create mode 100644 src/main/resources/atlas/resourcepack/assets/minecraft/textures/block/custom/fluid_pipe_side_filled_xp_down.png create mode 100644 src/main/resources/atlas/resourcepack/assets/minecraft/textures/block/custom/fluid_pipe_side_filled_xp_left.png create mode 100644 src/main/resources/atlas/resourcepack/assets/minecraft/textures/block/custom/fluid_pipe_side_filled_xp_right.png create mode 100644 src/main/resources/atlas/resourcepack/assets/minecraft/textures/block/custom/fluid_pipe_side_filled_xp_up.png create mode 100644 src/main/resources/atlas/resourcepack/assets/minecraft/textures/block/custom/fluid_splitter_back_xp.png create mode 100644 src/main/resources/atlas/resourcepack/assets/minecraft/textures/block/custom/fluid_splitter_bottom_xp.png create mode 100644 src/main/resources/atlas/resourcepack/assets/minecraft/textures/block/custom/fluid_splitter_front_xp.png create mode 100644 src/main/resources/atlas/resourcepack/assets/minecraft/textures/block/custom/fluid_splitter_side_xp.png create mode 100644 src/main/resources/atlas/resourcepack/assets/minecraft/textures/block/custom/fluid_splitter_top_xp.png diff --git a/src/main/kotlin/com/coderjoe/atlas/fluid/FluidBlockDialog.kt b/src/main/kotlin/com/coderjoe/atlas/fluid/FluidBlockDialog.kt index 48bfcd8..1328d0d 100644 --- a/src/main/kotlin/com/coderjoe/atlas/fluid/FluidBlockDialog.kt +++ b/src/main/kotlin/com/coderjoe/atlas/fluid/FluidBlockDialog.kt @@ -60,12 +60,15 @@ object FluidBlockDialog { when (fluidBlock.storedFluid) { FluidType.WATER -> "Water (${fluidBlock.storedAmount}/${FluidContainer.MAX_CAPACITY})" FluidType.LAVA -> "Lava (${fluidBlock.storedAmount}/${FluidContainer.MAX_CAPACITY})" + FluidType.EXPERIENCE -> + "Liquid Experience (${fluidBlock.storedAmount}/${FluidContainer.MAX_CAPACITY})" FluidType.NONE -> "Empty" } } else { when (fluidBlock.storedFluid) { FluidType.WATER -> "Water" FluidType.LAVA -> "Lava" + FluidType.EXPERIENCE -> "Liquid Experience" FluidType.NONE -> "Empty" } } @@ -74,6 +77,7 @@ object FluidBlockDialog { when (fluidBlock.storedFluid) { FluidType.WATER -> NamedTextColor.AQUA FluidType.LAVA -> NamedTextColor.GOLD + FluidType.EXPERIENCE -> NamedTextColor.GREEN FluidType.NONE -> NamedTextColor.GRAY } diff --git a/src/main/kotlin/com/coderjoe/atlas/fluid/FluidType.kt b/src/main/kotlin/com/coderjoe/atlas/fluid/FluidType.kt index 8743ed8..b0641bb 100644 --- a/src/main/kotlin/com/coderjoe/atlas/fluid/FluidType.kt +++ b/src/main/kotlin/com/coderjoe/atlas/fluid/FluidType.kt @@ -3,5 +3,6 @@ package com.coderjoe.atlas.fluid enum class FluidType { WATER, LAVA, + EXPERIENCE, NONE, } diff --git a/src/main/kotlin/com/coderjoe/atlas/fluid/block/FluidPump.kt b/src/main/kotlin/com/coderjoe/atlas/fluid/block/FluidPump.kt index 7bc48d6..425cdd5 100644 --- a/src/main/kotlin/com/coderjoe/atlas/fluid/block/FluidPump.kt +++ b/src/main/kotlin/com/coderjoe/atlas/fluid/block/FluidPump.kt @@ -60,6 +60,7 @@ class FluidPump(location: Location) : FluidBlock(location) { when (storedFluid) { FluidType.WATER -> BLOCK_ID_ACTIVE FluidType.LAVA -> BLOCK_ID_ACTIVE_LAVA + FluidType.EXPERIENCE -> BLOCK_ID_ACTIVE FluidType.NONE -> BLOCK_ID } diff --git a/src/main/resources/atlas/configuration/fluid_container.yml b/src/main/resources/atlas/configuration/fluid_container.yml index d75c6e4..bc05f0c 100644 --- a/src/main/resources/atlas/configuration/fluid_container.yml +++ b/src/main/resources/atlas/configuration/fluid_container.yml @@ -29,7 +29,7 @@ items: default: north fluid: type: string - values: [none, water, lava] + values: [none, water, lava, experience] default: none fill_level: type: int @@ -37,7 +37,7 @@ items: default: 0 appearances: north: - auto-state: non_tintable_leaves + auto-state: solid model: path: minecraft:block/custom/fluid_container generation: @@ -50,22 +50,22 @@ items: up: minecraft:block/custom/fluid_container_top down: minecraft:block/custom/fluid_container_top south: - auto-state: non_tintable_leaves + auto-state: solid model: path: minecraft:block/custom/fluid_container y: 180 east: - auto-state: non_tintable_leaves + auto-state: solid model: path: minecraft:block/custom/fluid_container y: 90 west: - auto-state: non_tintable_leaves + auto-state: solid model: path: minecraft:block/custom/fluid_container y: 270 up: - auto-state: non_tintable_leaves + auto-state: solid model: path: minecraft:block/custom/fluid_container_up generation: @@ -78,7 +78,7 @@ items: up: minecraft:block/custom/fluid_container_front down: minecraft:block/custom/fluid_container_back down: - auto-state: non_tintable_leaves + auto-state: solid model: path: minecraft:block/custom/fluid_container_down generation: @@ -91,7 +91,7 @@ items: up: minecraft:block/custom/fluid_container_back down: minecraft:block/custom/fluid_container_front north_water_low: - auto-state: non_tintable_leaves + auto-state: solid model: path: minecraft:block/custom/fluid_container_water_low generation: @@ -104,22 +104,22 @@ items: up: minecraft:block/custom/fluid_container_top down: minecraft:block/custom/fluid_container_top south_water_low: - auto-state: non_tintable_leaves + auto-state: solid model: path: minecraft:block/custom/fluid_container_water_low y: 180 east_water_low: - auto-state: non_tintable_leaves + auto-state: solid model: path: minecraft:block/custom/fluid_container_water_low y: 90 west_water_low: - auto-state: non_tintable_leaves + auto-state: solid model: path: minecraft:block/custom/fluid_container_water_low y: 270 up_water_low: - auto-state: non_tintable_leaves + auto-state: solid model: path: minecraft:block/custom/fluid_container_up_water_low generation: @@ -132,7 +132,7 @@ items: up: minecraft:block/custom/fluid_container_front_water_low down: minecraft:block/custom/fluid_container_back_water_low down_water_low: - auto-state: non_tintable_leaves + auto-state: solid model: path: minecraft:block/custom/fluid_container_down_water_low generation: @@ -145,7 +145,7 @@ items: up: minecraft:block/custom/fluid_container_back_water_low down: minecraft:block/custom/fluid_container_front_water_low north_water_medium: - auto-state: non_tintable_leaves + auto-state: solid model: path: minecraft:block/custom/fluid_container_water_medium generation: @@ -158,22 +158,22 @@ items: up: minecraft:block/custom/fluid_container_top down: minecraft:block/custom/fluid_container_top south_water_medium: - auto-state: non_tintable_leaves + auto-state: solid model: path: minecraft:block/custom/fluid_container_water_medium y: 180 east_water_medium: - auto-state: non_tintable_leaves + auto-state: solid model: path: minecraft:block/custom/fluid_container_water_medium y: 90 west_water_medium: - auto-state: non_tintable_leaves + auto-state: solid model: path: minecraft:block/custom/fluid_container_water_medium y: 270 up_water_medium: - auto-state: non_tintable_leaves + auto-state: solid model: path: minecraft:block/custom/fluid_container_up_water_medium generation: @@ -186,7 +186,7 @@ items: up: minecraft:block/custom/fluid_container_front_water_medium down: minecraft:block/custom/fluid_container_back_water_medium down_water_medium: - auto-state: non_tintable_leaves + auto-state: solid model: path: minecraft:block/custom/fluid_container_down_water_medium generation: @@ -199,7 +199,7 @@ items: up: minecraft:block/custom/fluid_container_back_water_medium down: minecraft:block/custom/fluid_container_front_water_medium north_water_full: - auto-state: non_tintable_leaves + auto-state: solid model: path: minecraft:block/custom/fluid_container_water_full generation: @@ -212,22 +212,22 @@ items: up: minecraft:block/custom/fluid_container_top down: minecraft:block/custom/fluid_container_top south_water_full: - auto-state: non_tintable_leaves + auto-state: solid model: path: minecraft:block/custom/fluid_container_water_full y: 180 east_water_full: - auto-state: non_tintable_leaves + auto-state: solid model: path: minecraft:block/custom/fluid_container_water_full y: 90 west_water_full: - auto-state: non_tintable_leaves + auto-state: solid model: path: minecraft:block/custom/fluid_container_water_full y: 270 up_water_full: - auto-state: non_tintable_leaves + auto-state: solid model: path: minecraft:block/custom/fluid_container_up_water_full generation: @@ -240,7 +240,7 @@ items: up: minecraft:block/custom/fluid_container_front_water_full down: minecraft:block/custom/fluid_container_back_water_full down_water_full: - auto-state: non_tintable_leaves + auto-state: solid model: path: minecraft:block/custom/fluid_container_down_water_full generation: @@ -253,7 +253,7 @@ items: up: minecraft:block/custom/fluid_container_back_water_full down: minecraft:block/custom/fluid_container_front_water_full north_lava_low: - auto-state: non_tintable_leaves + auto-state: solid model: path: minecraft:block/custom/fluid_container_lava_low generation: @@ -266,22 +266,22 @@ items: up: minecraft:block/custom/fluid_container_top down: minecraft:block/custom/fluid_container_top south_lava_low: - auto-state: non_tintable_leaves + auto-state: solid model: path: minecraft:block/custom/fluid_container_lava_low y: 180 east_lava_low: - auto-state: non_tintable_leaves + auto-state: solid model: path: minecraft:block/custom/fluid_container_lava_low y: 90 west_lava_low: - auto-state: non_tintable_leaves + auto-state: solid model: path: minecraft:block/custom/fluid_container_lava_low y: 270 up_lava_low: - auto-state: non_tintable_leaves + auto-state: solid model: path: minecraft:block/custom/fluid_container_up_lava_low generation: @@ -294,7 +294,7 @@ items: up: minecraft:block/custom/fluid_container_front_lava_low down: minecraft:block/custom/fluid_container_back_lava_low down_lava_low: - auto-state: non_tintable_leaves + auto-state: solid model: path: minecraft:block/custom/fluid_container_down_lava_low generation: @@ -307,7 +307,7 @@ items: up: minecraft:block/custom/fluid_container_back_lava_low down: minecraft:block/custom/fluid_container_front_lava_low north_lava_medium: - auto-state: non_tintable_leaves + auto-state: solid model: path: minecraft:block/custom/fluid_container_lava_medium generation: @@ -320,22 +320,22 @@ items: up: minecraft:block/custom/fluid_container_top down: minecraft:block/custom/fluid_container_top south_lava_medium: - auto-state: non_tintable_leaves + auto-state: solid model: path: minecraft:block/custom/fluid_container_lava_medium y: 180 east_lava_medium: - auto-state: non_tintable_leaves + auto-state: solid model: path: minecraft:block/custom/fluid_container_lava_medium y: 90 west_lava_medium: - auto-state: non_tintable_leaves + auto-state: solid model: path: minecraft:block/custom/fluid_container_lava_medium y: 270 up_lava_medium: - auto-state: non_tintable_leaves + auto-state: solid model: path: minecraft:block/custom/fluid_container_up_lava_medium generation: @@ -348,7 +348,7 @@ items: up: minecraft:block/custom/fluid_container_front_lava_medium down: minecraft:block/custom/fluid_container_back_lava_medium down_lava_medium: - auto-state: non_tintable_leaves + auto-state: solid model: path: minecraft:block/custom/fluid_container_down_lava_medium generation: @@ -361,7 +361,7 @@ items: up: minecraft:block/custom/fluid_container_back_lava_medium down: minecraft:block/custom/fluid_container_front_lava_medium north_lava_full: - auto-state: non_tintable_leaves + auto-state: solid model: path: minecraft:block/custom/fluid_container_lava_full generation: @@ -374,22 +374,22 @@ items: up: minecraft:block/custom/fluid_container_top down: minecraft:block/custom/fluid_container_top south_lava_full: - auto-state: non_tintable_leaves + auto-state: solid model: path: minecraft:block/custom/fluid_container_lava_full y: 180 east_lava_full: - auto-state: non_tintable_leaves + auto-state: solid model: path: minecraft:block/custom/fluid_container_lava_full y: 90 west_lava_full: - auto-state: non_tintable_leaves + auto-state: solid model: path: minecraft:block/custom/fluid_container_lava_full y: 270 up_lava_full: - auto-state: non_tintable_leaves + auto-state: solid model: path: minecraft:block/custom/fluid_container_up_lava_full generation: @@ -402,7 +402,7 @@ items: up: minecraft:block/custom/fluid_container_front_lava_full down: minecraft:block/custom/fluid_container_back_lava_full down_lava_full: - auto-state: non_tintable_leaves + auto-state: solid model: path: minecraft:block/custom/fluid_container_down_lava_full generation: @@ -414,6 +414,168 @@ items: west: minecraft:block/custom/fluid_container_side_lava_full up: minecraft:block/custom/fluid_container_back_lava_full down: minecraft:block/custom/fluid_container_front_lava_full + north_xp_low: + auto-state: solid + model: + path: minecraft:block/custom/fluid_container_xp_low + generation: + parent: minecraft:block/cube + textures: + north: minecraft:block/custom/fluid_container_front_xp_low + south: minecraft:block/custom/fluid_container_back_xp_low + east: minecraft:block/custom/fluid_container_side_xp_low + west: minecraft:block/custom/fluid_container_side_xp_low + up: minecraft:block/custom/fluid_container_top + down: minecraft:block/custom/fluid_container_top + south_xp_low: + auto-state: solid + model: + path: minecraft:block/custom/fluid_container_xp_low + y: 180 + east_xp_low: + auto-state: solid + model: + path: minecraft:block/custom/fluid_container_xp_low + y: 90 + west_xp_low: + auto-state: solid + model: + path: minecraft:block/custom/fluid_container_xp_low + y: 270 + up_xp_low: + auto-state: solid + model: + path: minecraft:block/custom/fluid_container_up_xp_low + generation: + parent: minecraft:block/cube + textures: + north: minecraft:block/custom/fluid_container_side_xp_low + south: minecraft:block/custom/fluid_container_side_xp_low + east: minecraft:block/custom/fluid_container_side_xp_low + west: minecraft:block/custom/fluid_container_side_xp_low + up: minecraft:block/custom/fluid_container_front_xp_low + down: minecraft:block/custom/fluid_container_back_xp_low + down_xp_low: + auto-state: solid + model: + path: minecraft:block/custom/fluid_container_down_xp_low + generation: + parent: minecraft:block/cube + textures: + north: minecraft:block/custom/fluid_container_side_xp_low + south: minecraft:block/custom/fluid_container_side_xp_low + east: minecraft:block/custom/fluid_container_side_xp_low + west: minecraft:block/custom/fluid_container_side_xp_low + up: minecraft:block/custom/fluid_container_back_xp_low + down: minecraft:block/custom/fluid_container_front_xp_low + north_xp_medium: + auto-state: solid + model: + path: minecraft:block/custom/fluid_container_xp_medium + generation: + parent: minecraft:block/cube + textures: + north: minecraft:block/custom/fluid_container_front_xp_medium + south: minecraft:block/custom/fluid_container_back_xp_medium + east: minecraft:block/custom/fluid_container_side_xp_medium + west: minecraft:block/custom/fluid_container_side_xp_medium + up: minecraft:block/custom/fluid_container_top + down: minecraft:block/custom/fluid_container_top + south_xp_medium: + auto-state: solid + model: + path: minecraft:block/custom/fluid_container_xp_medium + y: 180 + east_xp_medium: + auto-state: solid + model: + path: minecraft:block/custom/fluid_container_xp_medium + y: 90 + west_xp_medium: + auto-state: solid + model: + path: minecraft:block/custom/fluid_container_xp_medium + y: 270 + up_xp_medium: + auto-state: solid + model: + path: minecraft:block/custom/fluid_container_up_xp_medium + generation: + parent: minecraft:block/cube + textures: + north: minecraft:block/custom/fluid_container_side_xp_medium + south: minecraft:block/custom/fluid_container_side_xp_medium + east: minecraft:block/custom/fluid_container_side_xp_medium + west: minecraft:block/custom/fluid_container_side_xp_medium + up: minecraft:block/custom/fluid_container_front_xp_medium + down: minecraft:block/custom/fluid_container_back_xp_medium + down_xp_medium: + auto-state: solid + model: + path: minecraft:block/custom/fluid_container_down_xp_medium + generation: + parent: minecraft:block/cube + textures: + north: minecraft:block/custom/fluid_container_side_xp_medium + south: minecraft:block/custom/fluid_container_side_xp_medium + east: minecraft:block/custom/fluid_container_side_xp_medium + west: minecraft:block/custom/fluid_container_side_xp_medium + up: minecraft:block/custom/fluid_container_back_xp_medium + down: minecraft:block/custom/fluid_container_front_xp_medium + north_xp_full: + auto-state: solid + model: + path: minecraft:block/custom/fluid_container_xp_full + generation: + parent: minecraft:block/cube + textures: + north: minecraft:block/custom/fluid_container_front_xp_full + south: minecraft:block/custom/fluid_container_back_xp_full + east: minecraft:block/custom/fluid_container_side_xp_full + west: minecraft:block/custom/fluid_container_side_xp_full + up: minecraft:block/custom/fluid_container_top + down: minecraft:block/custom/fluid_container_top + south_xp_full: + auto-state: solid + model: + path: minecraft:block/custom/fluid_container_xp_full + y: 180 + east_xp_full: + auto-state: solid + model: + path: minecraft:block/custom/fluid_container_xp_full + y: 90 + west_xp_full: + auto-state: solid + model: + path: minecraft:block/custom/fluid_container_xp_full + y: 270 + up_xp_full: + auto-state: solid + model: + path: minecraft:block/custom/fluid_container_up_xp_full + generation: + parent: minecraft:block/cube + textures: + north: minecraft:block/custom/fluid_container_side_xp_full + south: minecraft:block/custom/fluid_container_side_xp_full + east: minecraft:block/custom/fluid_container_side_xp_full + west: minecraft:block/custom/fluid_container_side_xp_full + up: minecraft:block/custom/fluid_container_front_xp_full + down: minecraft:block/custom/fluid_container_back_xp_full + down_xp_full: + auto-state: solid + model: + path: minecraft:block/custom/fluid_container_down_xp_full + generation: + parent: minecraft:block/cube + textures: + north: minecraft:block/custom/fluid_container_side_xp_full + south: minecraft:block/custom/fluid_container_side_xp_full + east: minecraft:block/custom/fluid_container_side_xp_full + west: minecraft:block/custom/fluid_container_side_xp_full + up: minecraft:block/custom/fluid_container_back_xp_full + down: minecraft:block/custom/fluid_container_front_xp_full variants: facing=north,fluid=none,fill_level=0: appearance: north @@ -559,6 +721,54 @@ items: appearance: up_lava_full facing=down,fluid=lava,fill_level=3: appearance: down_lava_full + facing=north,fluid=experience,fill_level=0: + appearance: north + facing=south,fluid=experience,fill_level=0: + appearance: south + facing=east,fluid=experience,fill_level=0: + appearance: east + facing=west,fluid=experience,fill_level=0: + appearance: west + facing=up,fluid=experience,fill_level=0: + appearance: up + facing=down,fluid=experience,fill_level=0: + appearance: down + facing=north,fluid=experience,fill_level=1: + appearance: north_xp_low + facing=south,fluid=experience,fill_level=1: + appearance: south_xp_low + facing=east,fluid=experience,fill_level=1: + appearance: east_xp_low + facing=west,fluid=experience,fill_level=1: + appearance: west_xp_low + facing=up,fluid=experience,fill_level=1: + appearance: up_xp_low + facing=down,fluid=experience,fill_level=1: + appearance: down_xp_low + facing=north,fluid=experience,fill_level=2: + appearance: north_xp_medium + facing=south,fluid=experience,fill_level=2: + appearance: south_xp_medium + facing=east,fluid=experience,fill_level=2: + appearance: east_xp_medium + facing=west,fluid=experience,fill_level=2: + appearance: west_xp_medium + facing=up,fluid=experience,fill_level=2: + appearance: up_xp_medium + facing=down,fluid=experience,fill_level=2: + appearance: down_xp_medium + facing=north,fluid=experience,fill_level=3: + appearance: north_xp_full + facing=south,fluid=experience,fill_level=3: + appearance: south_xp_full + facing=east,fluid=experience,fill_level=3: + appearance: east_xp_full + facing=west,fluid=experience,fill_level=3: + appearance: west_xp_full + facing=up,fluid=experience,fill_level=3: + appearance: up_xp_full + facing=down,fluid=experience,fill_level=3: + appearance: down_xp_full recipes: atlas:fluid_container: diff --git a/src/main/resources/atlas/configuration/fluid_merger.yml b/src/main/resources/atlas/configuration/fluid_merger.yml index 08f38d5..d2ae93f 100644 --- a/src/main/resources/atlas/configuration/fluid_merger.yml +++ b/src/main/resources/atlas/configuration/fluid_merger.yml @@ -29,7 +29,7 @@ items: default: north fluid: type: string - values: [none, water, lava] + values: [none, water, lava, experience] default: none appearances: north: @@ -194,6 +194,60 @@ items: west: minecraft:block/custom/fluid_merger_side_lava up: minecraft:block/custom/fluid_merger_back_lava down: minecraft:block/custom/fluid_merger_front_lava + north_experience: + auto-state: solid + model: + path: minecraft:block/custom/fluid_merger_xp + generation: + parent: minecraft:block/cube + textures: + north: minecraft:block/custom/fluid_merger_front_xp + south: minecraft:block/custom/fluid_merger_back_xp + east: minecraft:block/custom/fluid_merger_side_xp + west: minecraft:block/custom/fluid_merger_side_xp + up: minecraft:block/custom/fluid_merger_top_xp + down: minecraft:block/custom/fluid_merger_bottom_xp + south_experience: + auto-state: solid + model: + path: minecraft:block/custom/fluid_merger_xp + y: 180 + east_experience: + auto-state: solid + model: + path: minecraft:block/custom/fluid_merger_xp + y: 90 + west_experience: + auto-state: solid + model: + path: minecraft:block/custom/fluid_merger_xp + y: 270 + up_experience: + auto-state: solid + model: + path: minecraft:block/custom/fluid_merger_up_xp + generation: + parent: minecraft:block/cube + textures: + north: minecraft:block/custom/fluid_merger_side_xp + south: minecraft:block/custom/fluid_merger_side_xp + east: minecraft:block/custom/fluid_merger_side_xp + west: minecraft:block/custom/fluid_merger_side_xp + up: minecraft:block/custom/fluid_merger_front_xp + down: minecraft:block/custom/fluid_merger_back_xp + down_experience: + auto-state: solid + model: + path: minecraft:block/custom/fluid_merger_down_xp + generation: + parent: minecraft:block/cube + textures: + north: minecraft:block/custom/fluid_merger_side_xp + south: minecraft:block/custom/fluid_merger_side_xp + east: minecraft:block/custom/fluid_merger_side_xp + west: minecraft:block/custom/fluid_merger_side_xp + up: minecraft:block/custom/fluid_merger_back_xp + down: minecraft:block/custom/fluid_merger_front_xp variants: facing=north,fluid=none: appearance: north @@ -231,6 +285,18 @@ items: appearance: up_lava facing=down,fluid=lava: appearance: down_lava + facing=north,fluid=experience: + appearance: north_experience + facing=south,fluid=experience: + appearance: south_experience + facing=east,fluid=experience: + appearance: east_experience + facing=west,fluid=experience: + appearance: west_experience + facing=up,fluid=experience: + appearance: up_experience + facing=down,fluid=experience: + appearance: down_experience recipes: atlas:fluid_merger: diff --git a/src/main/resources/atlas/configuration/fluid_pipe.yml b/src/main/resources/atlas/configuration/fluid_pipe.yml index d4dff9d..ff644e7 100644 --- a/src/main/resources/atlas/configuration/fluid_pipe.yml +++ b/src/main/resources/atlas/configuration/fluid_pipe.yml @@ -29,7 +29,7 @@ items: default: north fluid: type: string - values: [none, water, lava] + values: [none, water, lava, experience] default: none appearances: north: @@ -194,6 +194,60 @@ items: west: minecraft:block/custom/fluid_pipe_side_filled_lava_left up: minecraft:block/custom/fluid_pipe_back_filled_lava down: minecraft:block/custom/fluid_pipe_front_filled_lava + north_experience: + auto-state: solid + model: + path: minecraft:block/custom/fluid_pipe_xp + generation: + parent: minecraft:block/cube + textures: + north: minecraft:block/custom/fluid_pipe_front_filled_xp + south: minecraft:block/custom/fluid_pipe_back_filled_xp + east: minecraft:block/custom/fluid_pipe_side_filled_xp_right + west: minecraft:block/custom/fluid_pipe_side_filled_xp_left + up: minecraft:block/custom/fluid_pipe_side_filled_xp_up + down: minecraft:block/custom/fluid_pipe_side_filled_xp_down + south_experience: + auto-state: solid + model: + path: minecraft:block/custom/fluid_pipe_xp + y: 180 + east_experience: + auto-state: solid + model: + path: minecraft:block/custom/fluid_pipe_xp + y: 90 + west_experience: + auto-state: solid + model: + path: minecraft:block/custom/fluid_pipe_xp + y: 270 + up_experience: + auto-state: solid + model: + path: minecraft:block/custom/fluid_pipe_up_xp + generation: + parent: minecraft:block/cube + textures: + north: minecraft:block/custom/fluid_pipe_side_filled_xp_up + south: minecraft:block/custom/fluid_pipe_side_filled_xp_down + east: minecraft:block/custom/fluid_pipe_side_filled_xp_right + west: minecraft:block/custom/fluid_pipe_side_filled_xp_left + up: minecraft:block/custom/fluid_pipe_front_filled_xp + down: minecraft:block/custom/fluid_pipe_back_filled_xp + down_experience: + auto-state: solid + model: + path: minecraft:block/custom/fluid_pipe_down_xp + generation: + parent: minecraft:block/cube + textures: + north: minecraft:block/custom/fluid_pipe_side_filled_xp_down + south: minecraft:block/custom/fluid_pipe_side_filled_xp_up + east: minecraft:block/custom/fluid_pipe_side_filled_xp_right + west: minecraft:block/custom/fluid_pipe_side_filled_xp_left + up: minecraft:block/custom/fluid_pipe_back_filled_xp + down: minecraft:block/custom/fluid_pipe_front_filled_xp variants: facing=north,fluid=none: appearance: north @@ -231,6 +285,18 @@ items: appearance: up_lava facing=down,fluid=lava: appearance: down_lava + facing=north,fluid=experience: + appearance: north_experience + facing=south,fluid=experience: + appearance: south_experience + facing=east,fluid=experience: + appearance: east_experience + facing=west,fluid=experience: + appearance: west_experience + facing=up,fluid=experience: + appearance: up_experience + facing=down,fluid=experience: + appearance: down_experience recipes: atlas:fluid_pipe: diff --git a/src/main/resources/atlas/configuration/fluid_splitter.yml b/src/main/resources/atlas/configuration/fluid_splitter.yml index a39910e..a7250b9 100644 --- a/src/main/resources/atlas/configuration/fluid_splitter.yml +++ b/src/main/resources/atlas/configuration/fluid_splitter.yml @@ -29,7 +29,7 @@ items: default: north fluid: type: string - values: [none, water, lava] + values: [none, water, lava, experience] default: none appearances: north: @@ -194,6 +194,60 @@ items: west: minecraft:block/custom/fluid_splitter_side_lava up: minecraft:block/custom/fluid_splitter_front_lava down: minecraft:block/custom/fluid_splitter_back_lava + north_experience: + auto-state: solid + model: + path: minecraft:block/custom/fluid_splitter_xp + generation: + parent: minecraft:block/cube + textures: + north: minecraft:block/custom/fluid_splitter_front_xp + south: minecraft:block/custom/fluid_splitter_back_xp + east: minecraft:block/custom/fluid_splitter_side_xp + west: minecraft:block/custom/fluid_splitter_side_xp + up: minecraft:block/custom/fluid_splitter_top_xp + down: minecraft:block/custom/fluid_splitter_bottom_xp + south_experience: + auto-state: solid + model: + path: minecraft:block/custom/fluid_splitter_xp + y: 180 + east_experience: + auto-state: solid + model: + path: minecraft:block/custom/fluid_splitter_xp + y: 90 + west_experience: + auto-state: solid + model: + path: minecraft:block/custom/fluid_splitter_xp + y: 270 + up_experience: + auto-state: solid + model: + path: minecraft:block/custom/fluid_splitter_up_xp + generation: + parent: minecraft:block/cube + textures: + north: minecraft:block/custom/fluid_splitter_side_xp + south: minecraft:block/custom/fluid_splitter_side_xp + east: minecraft:block/custom/fluid_splitter_side_xp + west: minecraft:block/custom/fluid_splitter_side_xp + up: minecraft:block/custom/fluid_splitter_back_xp + down: minecraft:block/custom/fluid_splitter_front_xp + down_experience: + auto-state: solid + model: + path: minecraft:block/custom/fluid_splitter_down_xp + generation: + parent: minecraft:block/cube + textures: + north: minecraft:block/custom/fluid_splitter_side_xp + south: minecraft:block/custom/fluid_splitter_side_xp + east: minecraft:block/custom/fluid_splitter_side_xp + west: minecraft:block/custom/fluid_splitter_side_xp + up: minecraft:block/custom/fluid_splitter_front_xp + down: minecraft:block/custom/fluid_splitter_back_xp variants: facing=north,fluid=none: appearance: north @@ -231,6 +285,18 @@ items: appearance: up_lava facing=down,fluid=lava: appearance: down_lava + facing=north,fluid=experience: + appearance: north_experience + facing=south,fluid=experience: + appearance: south_experience + facing=east,fluid=experience: + appearance: east_experience + facing=west,fluid=experience: + appearance: west_experience + facing=up,fluid=experience: + appearance: up_experience + facing=down,fluid=experience: + appearance: down_experience recipes: atlas:fluid_splitter: diff --git a/src/main/resources/atlas/resourcepack/assets/minecraft/textures/block/custom/fluid_container_back_xp_full.png b/src/main/resources/atlas/resourcepack/assets/minecraft/textures/block/custom/fluid_container_back_xp_full.png new file mode 100644 index 0000000000000000000000000000000000000000..35ee71d2f3deef47155d0b207e2e6396bfa2097e GIT binary patch literal 208 zcmeAS@N?(olHy`uVBq!ia0vp^3LwnE1SJ1Ryj={WrhB?LhE&W+4!LHKv_Lf>F(IKM zzo^@78TY(E=EwsF4t!YMF#pxE&AvZQ069k-k`I_hz5%Zv>S7#JFY6oX%=`yB>4k-^i|&t;ucLK6VN CZ%2jz literal 0 HcmV?d00001 diff --git a/src/main/resources/atlas/resourcepack/assets/minecraft/textures/block/custom/fluid_container_back_xp_low.png b/src/main/resources/atlas/resourcepack/assets/minecraft/textures/block/custom/fluid_container_back_xp_low.png new file mode 100644 index 0000000000000000000000000000000000000000..40c48a46e97fcffce8887e3ba8c85d3594c4853d GIT binary patch literal 303 zcmV+~0nq-5P)2o?z`(#D-6zB;3T1zP{f8>-JF%}A7#Nr!9IBiC{q-LR z18M=)P3MHMnP_S{1Ka`{na(g82cn~Kz=FxX6Z?uLaqw!|M`U*~FfhED_K})#AeP0C zCN7r6KPcjWg_t6NKy~=!QWfI8K@1I$@2lJ zVAKMFVAKMF0GbcjCV=uiEda;@!82+!GM#~e0RZN!oj~+AzyJUM002ovPDHLkV1lOc Bd{Y1b literal 0 HcmV?d00001 diff --git a/src/main/resources/atlas/resourcepack/assets/minecraft/textures/block/custom/fluid_container_back_xp_medium.png b/src/main/resources/atlas/resourcepack/assets/minecraft/textures/block/custom/fluid_container_back_xp_medium.png new file mode 100644 index 0000000000000000000000000000000000000000..f8e79335455b91492e1ab81632bfe1e3c5011567 GIT binary patch literal 282 zcmeAS@N?(olHy`uVBq!ia0vp^3LwnE1SJ1Ryj={W9(uYshE&W+4!LHKv_Lf>F(IKM zzo^@78TY(E=EwsF4k+AJKcdN%T3`RSUF(hY#`O{s5;GKJR?YtR_p3Yya~9)O-{&nG zXJ%wsG2da5nt9GZihWVD0$+r}6=goPw)6iNB!wgyCm&-pY_NRI>-lP--H+h*gJpEvB_UL>K{bXim7=L6oh$RED#%#)fsLK=h~?_jvy(!XQJey$%Y6AtRD1m94r zQOVGVZSLsw0O=JFS$Lw!yu{mezei`oK@s+p=0I+aCLm_YNNf*_3leP55wKb8rhHja bLW04U_v7oe97g>>&oX$r`njxgN@xNA#G`4H literal 0 HcmV?d00001 diff --git a/src/main/resources/atlas/resourcepack/assets/minecraft/textures/block/custom/fluid_container_front_xp_full.png b/src/main/resources/atlas/resourcepack/assets/minecraft/textures/block/custom/fluid_container_front_xp_full.png new file mode 100644 index 0000000000000000000000000000000000000000..5143b03d766e1198f2a485696b5413d073485e1c GIT binary patch literal 223 zcmeAS@N?(olHy`uVBq!ia0vp^3LwnE1SJ1Ryj={WmU+53hE&W+4!LHKv_Lf>F(IKM zzo^@78TY(E=EwsF4t!YMF#pxE&AvZQ069k-k`I_<;wPMH9*L!yc9#C{V1V0~IyF85_xDe<>}0w8QqPA}7n86KdVZnd6hr9%X0 zqGRg7ojNdo_n+;^tfo;8pa8tkR^I`A(~Zl9dBq*j4qarZ>;NryY-c0xL4CaU0%T4} z_IvO`n?`vz!wYSd9h7M$h%$810iUnMlfSwk_~L^ln=*;@My~@+GTEa}9?H?ie|A8o tfFVr*gW~sKes2D~I@AO>v9E~^;00*rj1hOG$4>wN002ovPDHLkV1lYweNq4b literal 0 HcmV?d00001 diff --git a/src/main/resources/atlas/resourcepack/assets/minecraft/textures/block/custom/fluid_container_front_xp_medium.png b/src/main/resources/atlas/resourcepack/assets/minecraft/textures/block/custom/fluid_container_front_xp_medium.png new file mode 100644 index 0000000000000000000000000000000000000000..a4083acf55fb1ae0ed717c3038b2be7c93bab912 GIT binary patch literal 278 zcmeAS@N?(olHy`uVBq!ia0vp^3LwnE1SJ1Ryj={W?s~d7hE&W+4!LHKv_Lf>F(IKM zzo^@78TY(E=EwsF4k+AJKcdN%T3`RSUF(hY#`O{s5;GKJR?YtR_p3Yya~9)O-{&nG zXJ%wsG2da5nt9GZihWVD0$+r}6=goPw)6iNB!wgyCm&;CsdrsdQtR(C?P;*s0&Qm*2TQ&wJ^iO}qzcW8AJMpXX-yFz5Gcw~WWx zF5*to3^qNVnIf1nkYF9dj*wM9KTB7eF){coc_io*m@DxfXeEQEtDnm{r-UW|%Ck81 literal 0 HcmV?d00001 diff --git a/src/main/resources/atlas/resourcepack/assets/minecraft/textures/block/custom/fluid_container_side_xp_low.png b/src/main/resources/atlas/resourcepack/assets/minecraft/textures/block/custom/fluid_container_side_xp_low.png new file mode 100644 index 0000000000000000000000000000000000000000..6bcb8d13af6dfbbdee32f257d54bc155f0a750b3 GIT binary patch literal 246 zcmeAS@N?(olHy`uVBq!ia0vp^3LwnE1SJ1Ryj={W_IkQFhE&W+4!LHKv_Lf>F(IKM zzo^@78TY(E=EwsF4k+AJKcdN%T3`Q{{oFp`-(IO3C6-ytsa5|bDz}%1hsQ^NFHH1) z{Qt(?tgBxhdC?lxaDU4C9XDCN8U-dacZ%Fp~A+Q4}(@bDljvS+xudo5BCA4h5zpT>J6PGxn0DOwd51ybP0l+XkK;)GtZ literal 0 HcmV?d00001 diff --git a/src/main/resources/atlas/resourcepack/assets/minecraft/textures/block/custom/fluid_container_side_xp_medium.png b/src/main/resources/atlas/resourcepack/assets/minecraft/textures/block/custom/fluid_container_side_xp_medium.png new file mode 100644 index 0000000000000000000000000000000000000000..2986b06d7150e3f4b650af33975d8ffb852e699d GIT binary patch literal 249 zcmeAS@N?(olHy`uVBq!ia0vp^3LwnE1SJ1Ryj={W4tTmahE&W+4!LHKv_Lf>F(IKM zzo^@78TY(E=EwsF4k+AJKcdN%T3`Q{{oFp`-(IO3C6-ytsa5|bDz}%1hsQ^NFHH1) z{Qt(?tgBxhdC?lxaDU4C9XDCN8U-d}{B)*LX&VpKH9Vsu2t2Ue^} lboqR2{R2r;DUkCR7?!wSvQv(7c>?qcgQu&X%Q~loCIB|xU*P}% literal 0 HcmV?d00001 diff --git a/src/main/resources/atlas/resourcepack/assets/minecraft/textures/block/custom/fluid_container_top_xp_full.png b/src/main/resources/atlas/resourcepack/assets/minecraft/textures/block/custom/fluid_container_top_xp_full.png new file mode 100644 index 0000000000000000000000000000000000000000..a6626ee85cd23ff5dc20ccf8861ee6ef7ddc8556 GIT binary patch literal 159 zcmeAS@N?(olHy`uVBq!ia0vp^3LwnE1SJ1Ryj={W(mY)pLn`JZhg>sATA-Scn2=DB zU)1fkjC)=nbL4>o2R^KBnEz_oX5SwtfSe-^$p=ib7!?h&7#$BZ%}L8-j8M3e;dYqU zO;>>fjJvsP61J>R5bB9Ca59?pK+;rd=D7n07#Mc@38gyB(OCerk-^i|&t;ucLK6V! Cn>Jto literal 0 HcmV?d00001 diff --git a/src/main/resources/atlas/resourcepack/assets/minecraft/textures/block/custom/fluid_container_top_xp_low.png b/src/main/resources/atlas/resourcepack/assets/minecraft/textures/block/custom/fluid_container_top_xp_low.png new file mode 100644 index 0000000000000000000000000000000000000000..feb4f4f75fbea89e6351d55a61746eae23ae7ed6 GIT binary patch literal 264 zcmV+j0r&oiP)2o?z`(#D-6zB;3T1zP{f8>-JF%}A7#Nr!9IBiC{q-LR z18M=)P3MHMnP_S{1Ka`{na(g82cm>S2_?uE7M<$p^Rq)#88w2cU9UM8i1HGG-^$ zbhy8X%?DaAJ4nrO^eQT(N9$yU(K`A2$c+OQ2u0hBCU{1TMy4|`FaQ8?fe_ZoS2o?z`(#D-6zB;3T1zP{f8>-JF%}A7#Nr!9IBiC{q-LR z1ImYhYiECgs7HShLXXH{E6Op$ZG!p$*-pvvH!R|S3DZvM0wzp5sRF(apM1cC zX(x376Q-R*EDl&`QB*udVx!c_R4ghOaMj7w0^djT0nvcwalnEsirk)|Rtt;?*-omP p&VZKDXaPVL2%b@+k?9N!3;@Rbw5Xe;nHT^7002ovPDHLkV1nJCbEN

9+9cDM2F;_Z+9!snZ(Q(kzD;G5nv$||vp+L4^Wo{M&lH&Te~Z_tJMh@mVh2NT zv+a}*3~IBo6I{5%COLbug-Qu0aE3h*FwO{enSAsS`wk_at4~yTCpmL6d<;`kFPd>a Q4rn!lr>mdKI;Vst0Qm$sUjP6A literal 0 HcmV?d00001 diff --git a/src/main/resources/atlas/resourcepack/assets/minecraft/textures/block/custom/fluid_merger_side_xp.png b/src/main/resources/atlas/resourcepack/assets/minecraft/textures/block/custom/fluid_merger_side_xp.png new file mode 100644 index 0000000000000000000000000000000000000000..eb0c210128ab72643237a1a950bd508a5502d827 GIT binary patch literal 172 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!61SBU+%rFB|#hxyXAr*6yw`|&!q`+!0amlPk z9$uXpPS1tj9k}Vn9l~*&A-rYftj5Mh!LyhB=h-+0D=I5D-(}n3ZTH4O!N=VwG3wNT z10Rx~Etfa8zo;`sLPEmg($9j-1eL3obt0B3?mHs2CgKkRzwna-2Vbf*HGJ#jXQ+=- VO}k)IdKG9rgQu&X%Q~loCIEe_K2!hz literal 0 HcmV?d00001 diff --git a/src/main/resources/atlas/resourcepack/assets/minecraft/textures/block/custom/fluid_merger_top_xp.png b/src/main/resources/atlas/resourcepack/assets/minecraft/textures/block/custom/fluid_merger_top_xp.png new file mode 100644 index 0000000000000000000000000000000000000000..eb0c210128ab72643237a1a950bd508a5502d827 GIT binary patch literal 172 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!61SBU+%rFB|#hxyXAr*6yw`|&!q`+!0amlPk z9$uXpPS1tj9k}Vn9l~*&A-rYftj5Mh!LyhB=h-+0D=I5D-(}n3ZTH4O!N=VwG3wNT z10Rx~Etfa8zo;`sLPEmg($9j-1eL3obt0B3?mHs2CgKkRzwna-2Vbf*HGJ#jXQ+=- VO}k)IdKG9rgQu&X%Q~loCIEe_K2!hz literal 0 HcmV?d00001 diff --git a/src/main/resources/atlas/resourcepack/assets/minecraft/textures/block/custom/fluid_pipe_back_filled_xp.png b/src/main/resources/atlas/resourcepack/assets/minecraft/textures/block/custom/fluid_pipe_back_filled_xp.png new file mode 100644 index 0000000000000000000000000000000000000000..344940ab2d7e23784c68bf92e9190aebbe68e336 GIT binary patch literal 386 zcmV-|0e$|7P) zumCu0PHx=k`YspEjmcqiTGZF(_Vpc5C1t6hvY#C=Q-LxS?HPAt()LaQyJt-MA}Uki zMFgAZTC{67nFKbj6@n7cuCZRAtli0_Ys9VfZX}>)1>?Q0!IIT&b^rhX literal 0 HcmV?d00001 diff --git a/src/main/resources/atlas/resourcepack/assets/minecraft/textures/block/custom/fluid_pipe_front_filled_xp.png b/src/main/resources/atlas/resourcepack/assets/minecraft/textures/block/custom/fluid_pipe_front_filled_xp.png new file mode 100644 index 0000000000000000000000000000000000000000..1d4890163d0105733398008d82af647b9b1d7b16 GIT binary patch literal 393 zcmV;40e1e0P)|>C0;TXQZi%=xJyA47qzsMSorGJj!rUi z$?-9n3w>-^WAdfo|C2O@_v5 zbuccTME3BBV`kz_cHAj+rFn)L_FOS{_Rq&RGXUVYQ+OcEm7f42ZrIV%)v$nts&{!N zq+ejby;PnFaqVQbxbB_Pf#iy6bx3nzc+D{OG#93j1`4P`V~tmh2BOW*lgLu0wmwjW z#$v5Cem5G)?$pUViBO~KBEty*Rqw9%vLpBIB+$+k{6xs>8X7vep8B?k--}lIH{gZ6 n$pi5J<3-|BrnBvwUN{tAQvIO#x}X*t00000NkvXXu0mjfr9Zg0 literal 0 HcmV?d00001 diff --git a/src/main/resources/atlas/resourcepack/assets/minecraft/textures/block/custom/fluid_pipe_side_filled_xp_down.png b/src/main/resources/atlas/resourcepack/assets/minecraft/textures/block/custom/fluid_pipe_side_filled_xp_down.png new file mode 100644 index 0000000000000000000000000000000000000000..722f825a7fc3a38e63641a108773e1bb7d3896bb GIT binary patch literal 327 zcmeAS@N?(olHy`uVBq!ia0vp^3LwnE1SJ1Ryj{$|z{uz6;uumfCpqMrLDB-%gv5k| ziu|H(w`JV(0+W*#7$!)$iFGXh6mUAAP-U@z*q%9mTcgDGxEOIw>5`C;sN4U?yT|Wx z>?R%_p5=Gtgcr{Uog=&t1mzX& zoa<-Ro7XMWNQ2tJe{oS$XXCMk&U-%}$Y*J}u}jIcTz#;eK{%qB*S6|0`p>erZ_ z7_so_85l_DOxtwr!484nJbD=$BDhpUfA`GxkbkhA-*30A*o?UABa9=e?~@q*s|n>mA@xy;M?E^r`hm`jHuSvnG2om1t_QoL_PA92-MXc-XXZ Ti9OeW0mR_x>gTe~DWM4f876qP literal 0 HcmV?d00001 diff --git a/src/main/resources/atlas/resourcepack/assets/minecraft/textures/block/custom/fluid_pipe_side_filled_xp_left.png b/src/main/resources/atlas/resourcepack/assets/minecraft/textures/block/custom/fluid_pipe_side_filled_xp_left.png new file mode 100644 index 0000000000000000000000000000000000000000..4b79fe2b8acbbc1698207ec4a62eb5d825427a13 GIT binary patch literal 335 zcmV-V0kHmwP)61MCHMQ~Uy{uFjYB=U1>&hZcuWz;D~nYDD2R~3%h_L$ zxnHY=kh%957#L7R7#JA1Ti@Z*j>Q73fJuW5tN6bgzX_CKf>4ej)Z5g{EWA$q>^|yFF$VXC@F05GhzlVs#MBQxOZM z(1qA%28*RkcgaFrbo9m#{ACfOu>1Y;FT}@0`2b=xZBx-{x5qTk2N$T3iU>sVQ5xj~ zDgvfa3kZRM$jRij9*DI-Je3EzZNrV!=E0Q31eglYg9yL=mw08dD!>^BSW7NE0GE1D h5DA`9Bgrh1001QjRu;7rk68c!002ovPDHLkV1n|Oh3WtR literal 0 HcmV?d00001 diff --git a/src/main/resources/atlas/resourcepack/assets/minecraft/textures/block/custom/fluid_pipe_side_filled_xp_right.png b/src/main/resources/atlas/resourcepack/assets/minecraft/textures/block/custom/fluid_pipe_side_filled_xp_right.png new file mode 100644 index 0000000000000000000000000000000000000000..dac8135002efd635b1dd43a3b851ace592674d26 GIT binary patch literal 323 zcmV-J0lfZ+P)61MD)IZ}Uy=;^jaxms1>&hZ_{|c>s{m6L6hz42guH+~V;%RpnmG-|<+x4>G1gSHkhFfbS_ zmZG5rM{oRKU|=xaB}*#{7#J8X#6H9059~P^kBd-%1_#6kr`;Z#?vgcFECsQQuBnIx ztLSOB$E@Pa@WPIXP+0`=F{bmWnTjr8Go5Pr;I!Lgnx`V#=7XVJ77+xa77zqPwJQD* z(Rv`(0`XKH0)n#WL4-#$0}%=^WwFNrq@*Jr;870>BEd6iBpF8%007-( VQvP?nBX$4)002ovPDHLkV1k8!f%gCa literal 0 HcmV?d00001 diff --git a/src/main/resources/atlas/resourcepack/assets/minecraft/textures/block/custom/fluid_pipe_side_filled_xp_up.png b/src/main/resources/atlas/resourcepack/assets/minecraft/textures/block/custom/fluid_pipe_side_filled_xp_up.png new file mode 100644 index 0000000000000000000000000000000000000000..4fe15c584076ec2a74662ce40b00dae3ff3c90dc GIT binary patch literal 320 zcmV-G0l)r60BpfO+?Miz*t@=(iAaU`P<7QCGOg`iG@#Zm@~r3flR zHj0EGGJqLPj2$S+l!1Za_shTd)tT;+Wnf@9?e-YLHdrhLVdDX;;>-*T42;SeMg;SL z0ochGVxQp=!3qS=sG(T!wOR;Mk+lW~0|Ud+8$XB?XJBC9ZhZ&002)Miz)>V4kPXFZ zG$uf|fJuXmpdKc?YX05$g`${&#(-&r50C+oiXrs@3o?fwxB#vIh*S&#qeTTlF!U{8fmF@3vjG4pI9Gs^ S8Fftn00009+9cDM2F;_Z+9!snZ(Q(kzD;G5nv$||vp+L4^Wo{M&lH&Te~Z_tJMh@mVh2NT zv+a}*3~IBo6I{5%COLbug-Qu0aE3h*FwO{enSAsS`wk_at4~yTCpmL6d<;`kFPd>a Q4rn!lr>mdKI;Vst0Qm$sUjP6A literal 0 HcmV?d00001 diff --git a/src/main/resources/atlas/resourcepack/assets/minecraft/textures/block/custom/fluid_splitter_side_xp.png b/src/main/resources/atlas/resourcepack/assets/minecraft/textures/block/custom/fluid_splitter_side_xp.png new file mode 100644 index 0000000000000000000000000000000000000000..e3712d9ec6deddbed26bd44d19f1c023739388cd GIT binary patch literal 168 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!61SBU+%rFB|`JOJ0Ar*6yw`|&!q`+#BD7rVG z^uN>9+9cDM2F;_Z+9!snZ(Q(kzD;G5nv$||vp+L4^Wo{M&lH&Te~Z_tJMh@mVh2NT zv+a}*3~IBo6I{5%COLbug-Qu0aE3h*FwO{enSAsS`wk_at4~yTCpmL6d<;`kFPd>a Q4rn!lr>mdKI;Vst0Qm$sUjP6A literal 0 HcmV?d00001 diff --git a/src/main/resources/atlas/resourcepack/assets/minecraft/textures/block/custom/fluid_splitter_top_xp.png b/src/main/resources/atlas/resourcepack/assets/minecraft/textures/block/custom/fluid_splitter_top_xp.png new file mode 100644 index 0000000000000000000000000000000000000000..e3712d9ec6deddbed26bd44d19f1c023739388cd GIT binary patch literal 168 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!61SBU+%rFB|`JOJ0Ar*6yw`|&!q`+#BD7rVG z^uN>9+9cDM2F;_Z+9!snZ(Q(kzD;G5nv$||vp+L4^Wo{M&lH&Te~Z_tJMh@mVh2NT zv+a}*3~IBo6I{5%COLbug-Qu0aE3h*FwO{enSAsS`wk_at4~yTCpmL6d<;`kFPd>a Q4rn!lr>mdKI;Vst0Qm$sUjP6A literal 0 HcmV?d00001 diff --git a/src/test/kotlin/com/coderjoe/atlas/fluid/FluidTypeTest.kt b/src/test/kotlin/com/coderjoe/atlas/fluid/FluidTypeTest.kt index 0327076..47ff2b9 100644 --- a/src/test/kotlin/com/coderjoe/atlas/fluid/FluidTypeTest.kt +++ b/src/test/kotlin/com/coderjoe/atlas/fluid/FluidTypeTest.kt @@ -8,9 +8,10 @@ class FluidTypeTest { @Test fun `all enum values exist`() { val values = FluidType.values() - assertEquals(3, values.size) + assertEquals(4, values.size) assertTrue(values.contains(FluidType.WATER)) assertTrue(values.contains(FluidType.LAVA)) + assertTrue(values.contains(FluidType.EXPERIENCE)) assertTrue(values.contains(FluidType.NONE)) } From f4d9a8bb89540a2a34a0df46c3adfd128aafac70 Mon Sep 17 00:00:00 2001 From: CoderJoe Date: Mon, 23 Mar 2026 19:56:45 -0400 Subject: [PATCH 2/3] Add Experience Extractor block Powered utility block that pulls items from adjacent hoppers, converts them to XP based on a tiered value table (ores 1, food 2, mob drops 3, gems 5, nether star 8), buffers the XP, and pushes Liquid Experience fluid to the connected fluid network. Costs 3 power per item extracted. Includes YAML config, directional textures, recipe, persistence, dialog integration, and 26 tests. --- src/main/kotlin/com/coderjoe/atlas/Atlas.kt | 2 + .../coderjoe/atlas/power/PowerBlockDialog.kt | 8 + .../atlas/power/PowerBlockPersistence.kt | 7 + .../utility/block/ExperienceExtractor.kt | 180 ++++++++ .../configuration/experience_extractor.yml | 213 +++++++++ .../custom/experience_extractor_back.png | Bin 0 -> 15921 bytes .../custom/experience_extractor_front.png | Bin 0 -> 22363 bytes .../experience_extractor_front_active.png | Bin 0 -> 22359 bytes .../custom/experience_extractor_housing.png | Bin 0 -> 22620 bytes .../custom/experience_extractor_side.png | Bin 0 -> 19672 bytes .../experience_extractor_top_active.png | Bin 0 -> 20817 bytes .../custom/experience_extractor_top_east.png | Bin 0 -> 20995 bytes .../custom/experience_extractor_top_north.png | Bin 0 -> 20991 bytes .../custom/experience_extractor_top_south.png | Bin 0 -> 20976 bytes .../custom/experience_extractor_top_west.png | Bin 0 -> 20973 bytes .../com/coderjoe/atlas/AtlasPluginTest.kt | 4 +- .../kotlin/com/coderjoe/atlas/TestHelper.kt | 2 + .../atlas/power/PowerBlockInitializerTest.kt | 5 +- .../atlas/utility/ExperienceExtractorTest.kt | 417 ++++++++++++++++++ 19 files changed, 834 insertions(+), 4 deletions(-) create mode 100644 src/main/kotlin/com/coderjoe/atlas/utility/block/ExperienceExtractor.kt create mode 100644 src/main/resources/atlas/configuration/experience_extractor.yml create mode 100644 src/main/resources/atlas/resourcepack/assets/minecraft/textures/block/custom/experience_extractor_back.png create mode 100644 src/main/resources/atlas/resourcepack/assets/minecraft/textures/block/custom/experience_extractor_front.png create mode 100644 src/main/resources/atlas/resourcepack/assets/minecraft/textures/block/custom/experience_extractor_front_active.png create mode 100644 src/main/resources/atlas/resourcepack/assets/minecraft/textures/block/custom/experience_extractor_housing.png create mode 100644 src/main/resources/atlas/resourcepack/assets/minecraft/textures/block/custom/experience_extractor_side.png create mode 100644 src/main/resources/atlas/resourcepack/assets/minecraft/textures/block/custom/experience_extractor_top_active.png create mode 100644 src/main/resources/atlas/resourcepack/assets/minecraft/textures/block/custom/experience_extractor_top_east.png create mode 100644 src/main/resources/atlas/resourcepack/assets/minecraft/textures/block/custom/experience_extractor_top_north.png create mode 100644 src/main/resources/atlas/resourcepack/assets/minecraft/textures/block/custom/experience_extractor_top_south.png create mode 100644 src/main/resources/atlas/resourcepack/assets/minecraft/textures/block/custom/experience_extractor_top_west.png create mode 100644 src/test/kotlin/com/coderjoe/atlas/utility/ExperienceExtractorTest.kt diff --git a/src/main/kotlin/com/coderjoe/atlas/Atlas.kt b/src/main/kotlin/com/coderjoe/atlas/Atlas.kt index 1240b1f..3d6eb5f 100644 --- a/src/main/kotlin/com/coderjoe/atlas/Atlas.kt +++ b/src/main/kotlin/com/coderjoe/atlas/Atlas.kt @@ -37,6 +37,7 @@ import com.coderjoe.atlas.utility.block.CobblestoneFactory import com.coderjoe.atlas.utility.block.Crusher import com.coderjoe.atlas.utility.block.ObsidianFactory import com.coderjoe.atlas.utility.block.SmallDrill +import com.coderjoe.atlas.utility.block.ExperienceExtractor import com.coderjoe.atlas.utility.block.SoftTouchDrill import org.bukkit.plugin.java.JavaPlugin import org.bukkit.scheduler.BukkitTask @@ -214,6 +215,7 @@ class Atlas : JavaPlugin() { Crusher.descriptor, PowerMerger.descriptor, SoftTouchDrill.descriptor, + ExperienceExtractor.descriptor, ).associateBy { it.baseBlockId } } diff --git a/src/main/kotlin/com/coderjoe/atlas/power/PowerBlockDialog.kt b/src/main/kotlin/com/coderjoe/atlas/power/PowerBlockDialog.kt index 6a623dd..068dc1b 100644 --- a/src/main/kotlin/com/coderjoe/atlas/power/PowerBlockDialog.kt +++ b/src/main/kotlin/com/coderjoe/atlas/power/PowerBlockDialog.kt @@ -14,6 +14,7 @@ import com.coderjoe.atlas.utility.block.CobblestoneFactory import com.coderjoe.atlas.utility.block.Crusher import com.coderjoe.atlas.utility.block.ObsidianFactory import com.coderjoe.atlas.utility.block.SmallDrill +import com.coderjoe.atlas.utility.block.ExperienceExtractor import com.coderjoe.atlas.utility.block.SoftTouchDrill import io.papermc.paper.dialog.Dialog import io.papermc.paper.registry.data.dialog.ActionButton @@ -136,6 +137,7 @@ object PowerBlockDialog { is ObsidianFactory -> "Obsidian Factory" is Crusher -> "Crusher (${powerBlock.facing.displayName()})" is PowerMerger -> "Power Merger (${powerBlock.facing.displayName()})" + is ExperienceExtractor -> "Experience Extractor (${powerBlock.facing.displayName()})" else -> "Power Block" } @@ -215,6 +217,12 @@ object PowerBlockDialog { is PowerMerger -> Component.text("Cable - merges power from all sides, outputs in facing direction") .color(NamedTextColor.GRAY) + is ExperienceExtractor -> + Component.text( + "Machine - extracts XP from items via hopper, outputs Liquid Experience, " + + "consumes ${ExperienceExtractor.POWER_PER_EXTRACT} power/item", + ) + .color(NamedTextColor.GRAY) else -> Component.text("Power block") .color(NamedTextColor.GRAY) diff --git a/src/main/kotlin/com/coderjoe/atlas/power/PowerBlockPersistence.kt b/src/main/kotlin/com/coderjoe/atlas/power/PowerBlockPersistence.kt index fee4085..24d9c57 100644 --- a/src/main/kotlin/com/coderjoe/atlas/power/PowerBlockPersistence.kt +++ b/src/main/kotlin/com/coderjoe/atlas/power/PowerBlockPersistence.kt @@ -1,6 +1,7 @@ package com.coderjoe.atlas.power import com.coderjoe.atlas.core.BlockPersistence +import com.coderjoe.atlas.utility.block.ExperienceExtractor import com.coderjoe.atlas.utility.block.SmallDrill import org.bukkit.plugin.java.JavaPlugin @@ -19,6 +20,9 @@ class PowerBlockPersistence(plugin: JavaPlugin) { if (block is SmallDrill) { map["enabled"] = block.enabled } + if (block is ExperienceExtractor) { + map["storedXp"] = block.storedXp + } map }, restore = { block, data -> @@ -29,6 +33,9 @@ class PowerBlockPersistence(plugin: JavaPlugin) { block.enabled = enabled } } + if (block is ExperienceExtractor) { + block.storedXp = (data["storedXp"] as? Number)?.toDouble() ?: 0.0 + } }, ) diff --git a/src/main/kotlin/com/coderjoe/atlas/utility/block/ExperienceExtractor.kt b/src/main/kotlin/com/coderjoe/atlas/utility/block/ExperienceExtractor.kt new file mode 100644 index 0000000..9ea057e --- /dev/null +++ b/src/main/kotlin/com/coderjoe/atlas/utility/block/ExperienceExtractor.kt @@ -0,0 +1,180 @@ +package com.coderjoe.atlas.utility.block + +import com.coderjoe.atlas.atlasInfo +import com.coderjoe.atlas.coordinates +import com.coderjoe.atlas.core.BlockDescriptor +import com.coderjoe.atlas.core.PlacementType +import com.coderjoe.atlas.fluid.FluidBlockRegistry +import com.coderjoe.atlas.fluid.FluidType +import com.coderjoe.atlas.power.PowerBlock +import org.bukkit.Location +import org.bukkit.Material +import org.bukkit.block.BlockFace +import org.bukkit.block.Hopper + +class ExperienceExtractor( + location: Location, + facing: BlockFace = BlockFace.NORTH, +) : PowerBlock(location, maxStorage = 12) { + override val canReceivePower: Boolean = true + override val updateIntervalTicks: Long = 20L + override val baseBlockId: String = BLOCK_ID + + var direction: BlockFace = if (facing == BlockFace.SELF) BlockFace.NORTH else facing + + override val facing: BlockFace get() = direction + + var storedXp: Double = 0.0 + + companion object { + const val BLOCK_ID = "atlas:experience_extractor" + const val BLOCK_ID_ACTIVE = "atlas:experience_extractor_active" + const val POWER_PER_EXTRACT = 3 + const val MAX_XP_BUFFER = 10.0 + const val DEFAULT_XP = 0.01 + + val XP_VALUES: Map = + mapOf( + // Ores - 1 XP + Material.COAL_ORE to 1.0, + Material.DEEPSLATE_COAL_ORE to 1.0, + Material.IRON_ORE to 1.0, + Material.DEEPSLATE_IRON_ORE to 1.0, + Material.COPPER_ORE to 1.0, + Material.DEEPSLATE_COPPER_ORE to 1.0, + Material.GOLD_ORE to 1.0, + Material.DEEPSLATE_GOLD_ORE to 1.0, + Material.NETHER_GOLD_ORE to 1.0, + Material.REDSTONE_ORE to 1.0, + Material.DEEPSLATE_REDSTONE_ORE to 1.0, + Material.LAPIS_ORE to 1.0, + Material.DEEPSLATE_LAPIS_ORE to 1.0, + Material.NETHER_QUARTZ_ORE to 1.0, + // Raw ores & minerals - 1 XP + Material.RAW_IRON to 1.0, + Material.RAW_GOLD to 1.0, + Material.RAW_COPPER to 1.0, + Material.COAL to 1.0, + Material.CHARCOAL to 1.0, + Material.LAPIS_LAZULI to 1.0, + Material.REDSTONE to 1.0, + Material.QUARTZ to 1.0, + // Cooked food - 2 XP + Material.COOKED_BEEF to 2.0, + Material.COOKED_PORKCHOP to 2.0, + Material.COOKED_CHICKEN to 2.0, + Material.COOKED_MUTTON to 2.0, + Material.COOKED_RABBIT to 2.0, + Material.COOKED_SALMON to 2.0, + Material.COOKED_COD to 2.0, + Material.BAKED_POTATO to 2.0, + // Monster drops - 3 XP + Material.BONE to 3.0, + Material.GUNPOWDER to 3.0, + Material.SPIDER_EYE to 3.0, + Material.ROTTEN_FLESH to 3.0, + Material.SLIME_BALL to 3.0, + Material.MAGMA_CREAM to 3.0, + Material.PHANTOM_MEMBRANE to 3.0, + Material.GHAST_TEAR to 3.0, + // Valuable ores & drops - 5 XP + Material.DIAMOND_ORE to 5.0, + Material.DEEPSLATE_DIAMOND_ORE to 5.0, + Material.EMERALD_ORE to 5.0, + Material.DEEPSLATE_EMERALD_ORE to 5.0, + Material.BLAZE_ROD to 5.0, + Material.ENDER_PEARL to 5.0, + Material.DIAMOND to 5.0, + Material.EMERALD to 5.0, + Material.SHULKER_SHELL to 5.0, + // Very valuable - 8 XP + Material.NETHER_STAR to 8.0, + Material.ENCHANTED_BOOK to 8.0, + ) + + val descriptor = + BlockDescriptor( + baseBlockId = BLOCK_ID, + displayName = "Experience Extractor", + description = "Extracts XP from items via hopper, outputs Liquid Experience fluid", + placementType = PlacementType.DIRECTIONAL, + additionalBlockIds = listOf(BLOCK_ID_ACTIVE), + constructor = { loc, face -> ExperienceExtractor(loc, face) }, + ) + } + + override fun getVisualStateBlockId(): String = + when { + storedXp > 0.0 || currentPower > 0 -> BLOCK_ID_ACTIVE + else -> BLOCK_ID + } + + override fun powerUpdate() { + pullPowerFromNeighbors() + + pushXpFluid() + pullFromHoppers() + + updatePoweredState() + } + + private fun pushXpFluid() { + if (storedXp < 1.0) return + + val fluidRegistry = FluidBlockRegistry.instance ?: return + val target = fluidRegistry.getAdjacentFluidBlock(location, facing) ?: return + + if (target.storeFluid(FluidType.EXPERIENCE)) { + storedXp -= 1.0 + plugin.logger.atlasInfo( + "ExperienceExtractor at ${location.coordinates} " + + "pushed 1 experience fluid (buffer: $storedXp)", + ) + } + } + + private fun pullFromHoppers() { + if (storedXp >= MAX_XP_BUFFER) return + if (currentPower < POWER_PER_EXTRACT) return + + val world = location.world ?: return + + for (face in ADJACENT_FACES) { + if (storedXp >= MAX_XP_BUFFER) break + if (currentPower < POWER_PER_EXTRACT) break + + val adjacentBlock = world.getBlockAt( + location.blockX + face.modX, + location.blockY + face.modY, + location.blockZ + face.modZ, + ) + + val hopper = adjacentBlock.state as? Hopper ?: continue + val inventory = hopper.inventory + + for (slot in 0 until inventory.size) { + if (storedXp >= MAX_XP_BUFFER) break + if (currentPower < POWER_PER_EXTRACT) break + + val stack = inventory.getItem(slot) ?: continue + if (stack.type == Material.AIR) continue + val xpValue = XP_VALUES[stack.type] ?: DEFAULT_XP + + removePower(POWER_PER_EXTRACT) + storedXp += xpValue + + if (stack.amount > 1) { + stack.amount = stack.amount - 1 + inventory.setItem(slot, stack) + } else { + inventory.setItem(slot, null) + } + + plugin.logger.atlasInfo( + "ExperienceExtractor at ${location.coordinates} " + + "consumed ${stack.type.name}, gained $xpValue XP (buffer: $storedXp)", + ) + } + } + } +} diff --git a/src/main/resources/atlas/configuration/experience_extractor.yml b/src/main/resources/atlas/configuration/experience_extractor.yml new file mode 100644 index 0000000..6a0d76f --- /dev/null +++ b/src/main/resources/atlas/configuration/experience_extractor.yml @@ -0,0 +1,213 @@ +items: + atlas:experience_extractor: + material: paper + data: + item-name: "Experience Extractor" + model: minecraft:block/custom/experience_extractor + behavior: + type: block_item + block: + loot: + template: default:loot_table/self + settings: + hardness: 4.0 + resistance: 4.0 + is-suffocating: true + is-redstone-conductor: false + push-reaction: push_only + tags: ["minecraft:mineable/pickaxe"] + sounds: + break: minecraft:block.metal.break + step: minecraft:block.metal.step + place: minecraft:block.metal.place + hit: minecraft:block.metal.hit + fall: minecraft:block.metal.fall + states: + properties: + facing: + type: horizontal_direction + default: north + powered: + type: boolean + default: false + appearances: + north: + auto-state: solid + model: + path: minecraft:block/custom/experience_extractor + generation: + parent: minecraft:block/cube + textures: + north: minecraft:block/custom/experience_extractor_front + south: minecraft:block/custom/experience_extractor_back + east: minecraft:block/custom/experience_extractor_side + west: minecraft:block/custom/experience_extractor_side + up: minecraft:block/custom/experience_extractor_top_north + down: minecraft:block/custom/experience_extractor_housing + south: + auto-state: solid + model: + path: minecraft:block/custom/experience_extractor_south + generation: + parent: minecraft:block/cube + textures: + north: minecraft:block/custom/experience_extractor_back + south: minecraft:block/custom/experience_extractor_front + east: minecraft:block/custom/experience_extractor_side + west: minecraft:block/custom/experience_extractor_side + up: minecraft:block/custom/experience_extractor_top_south + down: minecraft:block/custom/experience_extractor_housing + east: + auto-state: solid + model: + path: minecraft:block/custom/experience_extractor_east + generation: + parent: minecraft:block/cube + textures: + north: minecraft:block/custom/experience_extractor_side + south: minecraft:block/custom/experience_extractor_side + east: minecraft:block/custom/experience_extractor_front + west: minecraft:block/custom/experience_extractor_back + up: minecraft:block/custom/experience_extractor_top_east + down: minecraft:block/custom/experience_extractor_housing + west: + auto-state: solid + model: + path: minecraft:block/custom/experience_extractor_west + generation: + parent: minecraft:block/cube + textures: + north: minecraft:block/custom/experience_extractor_side + south: minecraft:block/custom/experience_extractor_side + east: minecraft:block/custom/experience_extractor_back + west: minecraft:block/custom/experience_extractor_front + up: minecraft:block/custom/experience_extractor_top_west + down: minecraft:block/custom/experience_extractor_housing + north_powered: + auto-state: solid + model: + path: minecraft:block/custom/experience_extractor_powered + generation: + parent: minecraft:block/cube + textures: + north: minecraft:block/custom/experience_extractor_front_active + south: minecraft:block/custom/experience_extractor_back + east: minecraft:block/custom/experience_extractor_side + west: minecraft:block/custom/experience_extractor_side + up: minecraft:block/custom/experience_extractor_top_active + down: minecraft:block/custom/experience_extractor_housing + south_powered: + auto-state: solid + model: + path: minecraft:block/custom/experience_extractor_south_powered + generation: + parent: minecraft:block/cube + textures: + north: minecraft:block/custom/experience_extractor_back + south: minecraft:block/custom/experience_extractor_front_active + east: minecraft:block/custom/experience_extractor_side + west: minecraft:block/custom/experience_extractor_side + up: minecraft:block/custom/experience_extractor_top_active + down: minecraft:block/custom/experience_extractor_housing + east_powered: + auto-state: solid + model: + path: minecraft:block/custom/experience_extractor_east_powered + generation: + parent: minecraft:block/cube + textures: + north: minecraft:block/custom/experience_extractor_side + south: minecraft:block/custom/experience_extractor_side + east: minecraft:block/custom/experience_extractor_front_active + west: minecraft:block/custom/experience_extractor_back + up: minecraft:block/custom/experience_extractor_top_active + down: minecraft:block/custom/experience_extractor_housing + west_powered: + auto-state: solid + model: + path: minecraft:block/custom/experience_extractor_west_powered + generation: + parent: minecraft:block/cube + textures: + north: minecraft:block/custom/experience_extractor_side + south: minecraft:block/custom/experience_extractor_side + east: minecraft:block/custom/experience_extractor_back + west: minecraft:block/custom/experience_extractor_front_active + up: minecraft:block/custom/experience_extractor_top_active + down: minecraft:block/custom/experience_extractor_housing + variants: + facing=north,powered=false: + appearance: north + facing=south,powered=false: + appearance: south + facing=east,powered=false: + appearance: east + facing=west,powered=false: + appearance: west + facing=north,powered=true: + appearance: north_powered + facing=south,powered=true: + appearance: south_powered + facing=east,powered=true: + appearance: east_powered + facing=west,powered=true: + appearance: west_powered + + atlas:experience_extractor_active: + material: paper + data: + item-name: "Experience Extractor" + model: minecraft:block/custom/experience_extractor_powered + behavior: + type: block_item + block: + loot: + pools: + - rolls: 1 + entries: + - type: item + item: atlas:experience_extractor + settings: + hardness: 4.0 + resistance: 4.0 + is-suffocating: true + is-redstone-conductor: false + push-reaction: push_only + tags: ["minecraft:mineable/pickaxe"] + sounds: + break: minecraft:block.metal.break + step: minecraft:block.metal.step + place: minecraft:block.metal.place + hit: minecraft:block.metal.hit + fall: minecraft:block.metal.fall + state: + auto-state: solid + model: + path: minecraft:block/custom/experience_extractor_powered + generation: + parent: minecraft:block/cube + textures: + north: minecraft:block/custom/experience_extractor_front_active + south: minecraft:block/custom/experience_extractor_back + east: minecraft:block/custom/experience_extractor_side + west: minecraft:block/custom/experience_extractor_side + up: minecraft:block/custom/experience_extractor_top_active + down: minecraft:block/custom/experience_extractor_housing + +recipes: + atlas:experience_extractor: + type: shapeless + category: misc + unlock-on-ingredient-obtained: true + ingredients: + - minecraft:glass_bottle + - minecraft:glass_bottle + - minecraft:blaze_powder + - minecraft:blaze_powder + - minecraft:iron_ingot + - minecraft:iron_ingot + - minecraft:redstone + - minecraft:diamond + result: + id: atlas:experience_extractor + count: 1 diff --git a/src/main/resources/atlas/resourcepack/assets/minecraft/textures/block/custom/experience_extractor_back.png b/src/main/resources/atlas/resourcepack/assets/minecraft/textures/block/custom/experience_extractor_back.png new file mode 100644 index 0000000000000000000000000000000000000000..9f40192fb99202b907f1ecc5675035d447659d16 GIT binary patch literal 15921 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 literal 0 HcmV?d00001 diff --git a/src/main/resources/atlas/resourcepack/assets/minecraft/textures/block/custom/experience_extractor_top_east.png b/src/main/resources/atlas/resourcepack/assets/minecraft/textures/block/custom/experience_extractor_top_east.png new file mode 100644 index 0000000000000000000000000000000000000000..6459df2efb5a046a2f83d8854626ab4fcece6d42 GIT binary patch literal 20995 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 literal 0 HcmV?d00001 diff --git a/src/main/resources/atlas/resourcepack/assets/minecraft/textures/block/custom/experience_extractor_top_west.png b/src/main/resources/atlas/resourcepack/assets/minecraft/textures/block/custom/experience_extractor_top_west.png new file mode 100644 index 0000000000000000000000000000000000000000..4f153ea8394a523c615908d7bc2039a90bcb197a GIT binary patch literal 20973 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 literal 0 HcmV?d00001 diff --git a/src/test/kotlin/com/coderjoe/atlas/AtlasPluginTest.kt b/src/test/kotlin/com/coderjoe/atlas/AtlasPluginTest.kt index 6776148..0d06dd2 100644 --- a/src/test/kotlin/com/coderjoe/atlas/AtlasPluginTest.kt +++ b/src/test/kotlin/com/coderjoe/atlas/AtlasPluginTest.kt @@ -32,9 +32,9 @@ class AtlasPluginTest { } @Test - fun `power system initializes with 18 block types`() { + fun `power system initializes with 21 block types`() { TestHelper.initPowerFactory() - assertEquals(19, PowerBlockFactory.getRegisteredBlockIds().size) + assertEquals(21, PowerBlockFactory.getRegisteredBlockIds().size) } @Test diff --git a/src/test/kotlin/com/coderjoe/atlas/TestHelper.kt b/src/test/kotlin/com/coderjoe/atlas/TestHelper.kt index 390770c..b8f0543 100644 --- a/src/test/kotlin/com/coderjoe/atlas/TestHelper.kt +++ b/src/test/kotlin/com/coderjoe/atlas/TestHelper.kt @@ -28,6 +28,7 @@ import com.coderjoe.atlas.utility.block.CobblestoneFactory import com.coderjoe.atlas.utility.block.Crusher import com.coderjoe.atlas.utility.block.ObsidianFactory import com.coderjoe.atlas.utility.block.SmallDrill +import com.coderjoe.atlas.utility.block.ExperienceExtractor import com.coderjoe.atlas.utility.block.SoftTouchDrill import io.mockk.every import io.mockk.mockk @@ -206,6 +207,7 @@ object TestHelper { ObsidianFactory.descriptor, Crusher.descriptor, PowerMerger.descriptor, SoftTouchDrill.descriptor, + ExperienceExtractor.descriptor, ), ) } diff --git a/src/test/kotlin/com/coderjoe/atlas/power/PowerBlockInitializerTest.kt b/src/test/kotlin/com/coderjoe/atlas/power/PowerBlockInitializerTest.kt index d7da5a8..fe2464e 100644 --- a/src/test/kotlin/com/coderjoe/atlas/power/PowerBlockInitializerTest.kt +++ b/src/test/kotlin/com/coderjoe/atlas/power/PowerBlockInitializerTest.kt @@ -40,8 +40,9 @@ class PowerBlockInitializerTest { // Crusher: 1 // PowerMerger: 1 // SoftTouchDrill: 1 - // Total: 19 - assertEquals(19, ids.size) + // ExperienceExtractor: 2 (base + active) + // Total: 21 + assertEquals(21, ids.size) } @Test diff --git a/src/test/kotlin/com/coderjoe/atlas/utility/ExperienceExtractorTest.kt b/src/test/kotlin/com/coderjoe/atlas/utility/ExperienceExtractorTest.kt new file mode 100644 index 0000000..2e8864d --- /dev/null +++ b/src/test/kotlin/com/coderjoe/atlas/utility/ExperienceExtractorTest.kt @@ -0,0 +1,417 @@ +package com.coderjoe.atlas.utility + +import com.coderjoe.atlas.TestHelper +import com.coderjoe.atlas.TestHelper.callPowerUpdate +import com.coderjoe.atlas.core.PlacementType +import com.coderjoe.atlas.fluid.FluidBlockRegistry +import com.coderjoe.atlas.fluid.FluidType +import com.coderjoe.atlas.fluid.block.FluidPipe +import com.coderjoe.atlas.power.PowerBlockFactory +import com.coderjoe.atlas.power.PowerBlockRegistry +import com.coderjoe.atlas.utility.block.ExperienceExtractor +import io.mockk.every +import io.mockk.mockk +import io.mockk.verify +import org.bukkit.Location +import org.bukkit.Material +import org.bukkit.block.Block +import org.bukkit.block.BlockFace +import org.bukkit.block.Hopper +import org.bukkit.inventory.Inventory +import org.bukkit.inventory.ItemStack +import org.junit.jupiter.api.AfterEach +import org.junit.jupiter.api.Assertions.assertDoesNotThrow +import org.junit.jupiter.api.Assertions.assertEquals +import org.junit.jupiter.api.Assertions.assertTrue +import org.junit.jupiter.api.BeforeEach +import org.junit.jupiter.api.Test + +class ExperienceExtractorTest { + @BeforeEach + fun setup() { + TestHelper.setup() + } + + @AfterEach + fun teardown() { + TestHelper.teardown() + } + + private fun mockHopperAt( + x: Int, + y: Int, + z: Int, + items: Array, + ): Hopper { + val block = mockk(relaxed = true) + val hopper = mockk(relaxed = true) + val inventory = mockk(relaxed = true) + + every { TestHelper.mockWorld.getBlockAt(x, y, z) } returns block + every { block.state } returns hopper + every { hopper.inventory } returns inventory + every { inventory.size } returns items.size + for (i in items.indices) { + every { inventory.getItem(i) } returns items[i] + } + + return hopper + } + + private fun mockNonHopperAt( + x: Int, + y: Int, + z: Int, + ) { + val block = mockk(relaxed = true) + val blockState = mockk(relaxed = true) + every { TestHelper.mockWorld.getBlockAt(x, y, z) } returns block + every { block.state } returns blockState + } + + private fun setupAdjacentNonHoppers( + centerX: Int = 0, + centerY: Int = 64, + centerZ: Int = 0, + excludeFaces: Set = emptySet(), + ) { + for (face in listOf(BlockFace.NORTH, BlockFace.SOUTH, BlockFace.EAST, BlockFace.WEST, BlockFace.UP, BlockFace.DOWN)) { + if (face in excludeFaces) continue + mockNonHopperAt( + centerX + face.modX, + centerY + face.modY, + centerZ + face.modZ, + ) + } + } + + @Test + fun `extractor has correct facing`() { + val extractor = ExperienceExtractor(TestHelper.createLocation(), BlockFace.EAST) + assertEquals(BlockFace.EAST, extractor.facing) + } + + @Test + fun `extractor defaults to NORTH when SELF`() { + val extractor = ExperienceExtractor(TestHelper.createLocation(), BlockFace.SELF) + assertEquals(BlockFace.NORTH, extractor.facing) + } + + @Test + fun `extractor base block ID is correct`() { + val extractor = ExperienceExtractor(TestHelper.createLocation(), BlockFace.NORTH) + assertEquals("atlas:experience_extractor", extractor.baseBlockId) + } + + @Test + fun `descriptor has correct properties`() { + val desc = ExperienceExtractor.descriptor + assertEquals("atlas:experience_extractor", desc.baseBlockId) + assertEquals("Experience Extractor", desc.displayName) + assertEquals(PlacementType.DIRECTIONAL, desc.placementType) + } + + @Test + fun `descriptor includes active variant`() { + val desc = ExperienceExtractor.descriptor + assertTrue(desc.additionalBlockIds.contains("atlas:experience_extractor_active")) + } + + @Test + fun `max storage is 12`() { + val extractor = ExperienceExtractor(TestHelper.createLocation(), BlockFace.NORTH) + assertEquals(12, extractor.maxStorage) + } + + @Test + fun `canReceivePower is true`() { + val extractor = ExperienceExtractor(TestHelper.createLocation(), BlockFace.NORTH) + assertTrue(extractor.canAcceptPower()) + } + + @Test + fun `visual state returns base when no power and no xp`() { + val extractor = ExperienceExtractor(TestHelper.createLocation(), BlockFace.NORTH) + extractor.currentPower = 0 + extractor.storedXp = 0.0 + assertEquals("atlas:experience_extractor", extractor.getVisualStateBlockId()) + } + + @Test + fun `visual state returns active when has power`() { + val extractor = ExperienceExtractor(TestHelper.createLocation(), BlockFace.NORTH) + extractor.currentPower = 3 + assertEquals("atlas:experience_extractor_active", extractor.getVisualStateBlockId()) + } + + @Test + fun `visual state returns active when has stored xp`() { + val extractor = ExperienceExtractor(TestHelper.createLocation(), BlockFace.NORTH) + extractor.currentPower = 0 + extractor.storedXp = 2.0 + assertEquals("atlas:experience_extractor_active", extractor.getVisualStateBlockId()) + } + + @Test + fun `base ID is registered`() { + TestHelper.initPowerFactory() + assertTrue(PowerBlockFactory.isRegistered("atlas:experience_extractor")) + } + + @Test + fun `active ID is registered`() { + TestHelper.initPowerFactory() + assertTrue(PowerBlockFactory.isRegistered("atlas:experience_extractor_active")) + } + + @Test + fun `factory creates ExperienceExtractor from base ID`() { + TestHelper.initPowerFactory() + val block = + PowerBlockFactory.createPowerBlock( + "atlas:experience_extractor", + TestHelper.createLocation(), + BlockFace.SOUTH, + ) + assertTrue(block is ExperienceExtractor) + assertEquals(BlockFace.SOUTH, block!!.facing) + } + + @Test + fun `power update does not throw with no adjacent hoppers`() { + PowerBlockRegistry(TestHelper.mockPlugin) + val extractor = ExperienceExtractor(TestHelper.createLocation(), BlockFace.NORTH) + setupAdjacentNonHoppers() + + assertDoesNotThrow { + extractor.callPowerUpdate() + } + } + + @Test + fun `pulls item from adjacent hopper and gains xp`() { + PowerBlockRegistry(TestHelper.mockPlugin) + val extractor = ExperienceExtractor(TestHelper.createLocation(0.0, 64.0, 0.0), BlockFace.NORTH) + extractor.currentPower = 3 + + val mockStack = mockk(relaxed = true) + every { mockStack.type } returns Material.COAL + every { mockStack.amount } returns 1 + + val hopper = mockHopperAt(0, 65, 0, arrayOf(mockStack)) + + extractor.callPowerUpdate() + + assertEquals(0, extractor.currentPower) + assertEquals(1.0, extractor.storedXp) + } + + @Test + fun `removes single item from hopper inventory`() { + PowerBlockRegistry(TestHelper.mockPlugin) + val extractor = ExperienceExtractor(TestHelper.createLocation(0.0, 64.0, 0.0), BlockFace.NORTH) + extractor.currentPower = 3 + + val mockStack = mockk(relaxed = true) + every { mockStack.type } returns Material.COAL + every { mockStack.amount } returns 1 + + val hopper = mockHopperAt(0, 65, 0, arrayOf(mockStack)) + val inventory = hopper.inventory + + extractor.callPowerUpdate() + + verify { inventory.setItem(0, null) } + } + + @Test + fun `decrements hopper item stack when amount greater than 1`() { + PowerBlockRegistry(TestHelper.mockPlugin) + val extractor = ExperienceExtractor(TestHelper.createLocation(0.0, 64.0, 0.0), BlockFace.NORTH) + extractor.currentPower = 3 + + val mockStack = mockk(relaxed = true) + every { mockStack.type } returns Material.COAL + every { mockStack.amount } returns 5 + + mockHopperAt(0, 65, 0, arrayOf(mockStack)) + + extractor.callPowerUpdate() + + verify { mockStack.amount = 4 } + } + + @Test + fun `does not pull items without power`() { + PowerBlockRegistry(TestHelper.mockPlugin) + val extractor = ExperienceExtractor(TestHelper.createLocation(0.0, 64.0, 0.0), BlockFace.NORTH) + extractor.currentPower = 0 + setupAdjacentNonHoppers(excludeFaces = setOf(BlockFace.UP)) + + val mockStack = mockk(relaxed = true) + every { mockStack.type } returns Material.COAL + every { mockStack.amount } returns 1 + + mockHopperAt(0, 65, 0, arrayOf(mockStack)) + + extractor.callPowerUpdate() + + assertEquals(0.0, extractor.storedXp) + } + + @Test + fun `unlisted items give default xp`() { + PowerBlockRegistry(TestHelper.mockPlugin) + val extractor = ExperienceExtractor(TestHelper.createLocation(0.0, 64.0, 0.0), BlockFace.NORTH) + extractor.currentPower = 6 + setupAdjacentNonHoppers(excludeFaces = setOf(BlockFace.UP)) + + val mockStack = mockk(relaxed = true) + every { mockStack.type } returns Material.COBBLESTONE + every { mockStack.amount } returns 1 + + mockHopperAt(0, 65, 0, arrayOf(mockStack)) + + extractor.callPowerUpdate() + + assertEquals(3, extractor.currentPower) + assertEquals(ExperienceExtractor.DEFAULT_XP, extractor.storedXp) + } + + @Test + fun `pushes experience fluid to adjacent fluid block in facing direction`() { + val powerRegistry = PowerBlockRegistry(TestHelper.mockPlugin) + val fluidRegistry = FluidBlockRegistry(TestHelper.mockPlugin) + + val extractorLoc = TestHelper.createLocation(0.0, 64.0, 0.0) + val extractor = ExperienceExtractor(extractorLoc, BlockFace.NORTH) + extractor.storedXp = 3.0 + TestHelper.addToRegistry(powerRegistry, extractor, ExperienceExtractor.BLOCK_ID) + setupAdjacentNonHoppers() + + val pipeLoc = TestHelper.createLocation(0.0, 64.0, -1.0) + val pipe = FluidPipe(pipeLoc, BlockFace.NORTH) + TestHelper.addToRegistry(fluidRegistry, pipe, FluidPipe.BLOCK_ID) + + extractor.callPowerUpdate() + + assertEquals(2.0, extractor.storedXp) + assertEquals(FluidType.EXPERIENCE, pipe.storedFluid) + } + + @Test + fun `does not push fluid when no adjacent fluid block`() { + PowerBlockRegistry(TestHelper.mockPlugin) + FluidBlockRegistry(TestHelper.mockPlugin) + + val extractor = ExperienceExtractor(TestHelper.createLocation(0.0, 64.0, 0.0), BlockFace.NORTH) + extractor.storedXp = 3.0 + setupAdjacentNonHoppers() + + extractor.callPowerUpdate() + + assertEquals(3.0, extractor.storedXp) + } + + @Test + fun `does not consume items when xp buffer is full`() { + PowerBlockRegistry(TestHelper.mockPlugin) + val extractor = ExperienceExtractor(TestHelper.createLocation(0.0, 64.0, 0.0), BlockFace.NORTH) + extractor.currentPower = 6 + extractor.storedXp = ExperienceExtractor.MAX_XP_BUFFER + setupAdjacentNonHoppers(excludeFaces = setOf(BlockFace.UP)) + + val mockStack = mockk(relaxed = true) + every { mockStack.type } returns Material.COAL + every { mockStack.amount } returns 1 + + mockHopperAt(0, 65, 0, arrayOf(mockStack)) + + extractor.callPowerUpdate() + + assertEquals(6, extractor.currentPower) + } + + @Test + fun `xp values map contains expected categories`() { + val xpValues = ExperienceExtractor.XP_VALUES + + // Ore blocks + assertEquals(1.0, xpValues[Material.IRON_ORE]) + assertEquals(1.0, xpValues[Material.DEEPSLATE_IRON_ORE]) + assertEquals(1.0, xpValues[Material.COAL_ORE]) + assertEquals(1.0, xpValues[Material.COPPER_ORE]) + assertEquals(1.0, xpValues[Material.GOLD_ORE]) + // Raw ores & minerals + assertEquals(1.0, xpValues[Material.RAW_IRON]) + assertEquals(1.0, xpValues[Material.RAW_GOLD]) + assertEquals(1.0, xpValues[Material.COAL]) + // Food + assertEquals(2.0, xpValues[Material.COOKED_BEEF]) + assertEquals(2.0, xpValues[Material.COOKED_CHICKEN]) + // Monster drops + assertEquals(3.0, xpValues[Material.BONE]) + assertEquals(3.0, xpValues[Material.GUNPOWDER]) + // Valuable ores & drops + assertEquals(5.0, xpValues[Material.DIAMOND_ORE]) + assertEquals(5.0, xpValues[Material.DEEPSLATE_DIAMOND_ORE]) + assertEquals(5.0, xpValues[Material.BLAZE_ROD]) + assertEquals(5.0, xpValues[Material.DIAMOND]) + // Very valuable + assertEquals(8.0, xpValues[Material.NETHER_STAR]) + } + + @Test + fun `pulls power from adjacent blocks`() { + val registry = PowerBlockRegistry(TestHelper.mockPlugin) + val extractorLoc = TestHelper.createLocation(0.0, 64.0, 0.0) + val extractor = ExperienceExtractor(extractorLoc, BlockFace.NORTH) + TestHelper.addToRegistry(registry, extractor, ExperienceExtractor.BLOCK_ID) + setupAdjacentNonHoppers() + + val batteryLoc = TestHelper.createLocation(1.0, 64.0, 0.0) + val battery = com.coderjoe.atlas.power.block.SmallBattery(batteryLoc, BlockFace.WEST) + battery.currentPower = 5 + TestHelper.addToRegistry(registry, battery, "atlas:small_battery") + + extractor.callPowerUpdate() + + assertTrue(extractor.currentPower > 0) + assertTrue(battery.currentPower < 5) + } + + @Test + fun `pulls ore blocks from hopper`() { + PowerBlockRegistry(TestHelper.mockPlugin) + val extractor = ExperienceExtractor(TestHelper.createLocation(0.0, 64.0, 0.0), BlockFace.NORTH) + extractor.currentPower = 3 + + val mockStack = mockk(relaxed = true) + every { mockStack.type } returns Material.IRON_ORE + every { mockStack.amount } returns 1 + + val hopper = mockHopperAt(0, 65, 0, arrayOf(mockStack)) + + extractor.callPowerUpdate() + + assertEquals(1.0, extractor.storedXp) + } + + @Test + fun `higher value items give more xp`() { + PowerBlockRegistry(TestHelper.mockPlugin) + val extractor = ExperienceExtractor(TestHelper.createLocation(0.0, 64.0, 0.0), BlockFace.NORTH) + extractor.currentPower = 3 + setupAdjacentNonHoppers(excludeFaces = setOf(BlockFace.UP)) + + val mockStack = mockk(relaxed = true) + every { mockStack.type } returns Material.NETHER_STAR + every { mockStack.amount } returns 1 + + mockHopperAt(0, 65, 0, arrayOf(mockStack)) + + extractor.callPowerUpdate() + + assertEquals(8.0, extractor.storedXp) + } +} From 32cae832368085747036d0af46828e2f2699213d Mon Sep 17 00:00:00 2001 From: CoderJoe Date: Mon, 23 Mar 2026 19:59:55 -0400 Subject: [PATCH 3/3] Refactor ExperienceExtractor imports and clean up unused code --- src/main/kotlin/com/coderjoe/atlas/Atlas.kt | 2 +- .../com/coderjoe/atlas/power/PowerBlockDialog.kt | 2 +- .../atlas/utility/block/ExperienceExtractor.kt | 11 ++++++----- src/test/kotlin/com/coderjoe/atlas/TestHelper.kt | 2 +- .../coderjoe/atlas/utility/ExperienceExtractorTest.kt | 1 - 5 files changed, 9 insertions(+), 9 deletions(-) diff --git a/src/main/kotlin/com/coderjoe/atlas/Atlas.kt b/src/main/kotlin/com/coderjoe/atlas/Atlas.kt index 3d6eb5f..32ad11c 100644 --- a/src/main/kotlin/com/coderjoe/atlas/Atlas.kt +++ b/src/main/kotlin/com/coderjoe/atlas/Atlas.kt @@ -35,9 +35,9 @@ import com.coderjoe.atlas.transport.block.ConveyorBelt import com.coderjoe.atlas.utility.block.AutoSmelter import com.coderjoe.atlas.utility.block.CobblestoneFactory import com.coderjoe.atlas.utility.block.Crusher +import com.coderjoe.atlas.utility.block.ExperienceExtractor import com.coderjoe.atlas.utility.block.ObsidianFactory import com.coderjoe.atlas.utility.block.SmallDrill -import com.coderjoe.atlas.utility.block.ExperienceExtractor import com.coderjoe.atlas.utility.block.SoftTouchDrill import org.bukkit.plugin.java.JavaPlugin import org.bukkit.scheduler.BukkitTask diff --git a/src/main/kotlin/com/coderjoe/atlas/power/PowerBlockDialog.kt b/src/main/kotlin/com/coderjoe/atlas/power/PowerBlockDialog.kt index 068dc1b..d469d1e 100644 --- a/src/main/kotlin/com/coderjoe/atlas/power/PowerBlockDialog.kt +++ b/src/main/kotlin/com/coderjoe/atlas/power/PowerBlockDialog.kt @@ -12,9 +12,9 @@ import com.coderjoe.atlas.power.block.SmallSolarPanel import com.coderjoe.atlas.utility.block.AutoSmelter import com.coderjoe.atlas.utility.block.CobblestoneFactory import com.coderjoe.atlas.utility.block.Crusher +import com.coderjoe.atlas.utility.block.ExperienceExtractor import com.coderjoe.atlas.utility.block.ObsidianFactory import com.coderjoe.atlas.utility.block.SmallDrill -import com.coderjoe.atlas.utility.block.ExperienceExtractor import com.coderjoe.atlas.utility.block.SoftTouchDrill import io.papermc.paper.dialog.Dialog import io.papermc.paper.registry.data.dialog.ActionButton diff --git a/src/main/kotlin/com/coderjoe/atlas/utility/block/ExperienceExtractor.kt b/src/main/kotlin/com/coderjoe/atlas/utility/block/ExperienceExtractor.kt index 9ea057e..982f92a 100644 --- a/src/main/kotlin/com/coderjoe/atlas/utility/block/ExperienceExtractor.kt +++ b/src/main/kotlin/com/coderjoe/atlas/utility/block/ExperienceExtractor.kt @@ -143,11 +143,12 @@ class ExperienceExtractor( if (storedXp >= MAX_XP_BUFFER) break if (currentPower < POWER_PER_EXTRACT) break - val adjacentBlock = world.getBlockAt( - location.blockX + face.modX, - location.blockY + face.modY, - location.blockZ + face.modZ, - ) + val adjacentBlock = + world.getBlockAt( + location.blockX + face.modX, + location.blockY + face.modY, + location.blockZ + face.modZ, + ) val hopper = adjacentBlock.state as? Hopper ?: continue val inventory = hopper.inventory diff --git a/src/test/kotlin/com/coderjoe/atlas/TestHelper.kt b/src/test/kotlin/com/coderjoe/atlas/TestHelper.kt index b8f0543..69accb4 100644 --- a/src/test/kotlin/com/coderjoe/atlas/TestHelper.kt +++ b/src/test/kotlin/com/coderjoe/atlas/TestHelper.kt @@ -26,9 +26,9 @@ import com.coderjoe.atlas.transport.block.ConveyorBelt import com.coderjoe.atlas.utility.block.AutoSmelter import com.coderjoe.atlas.utility.block.CobblestoneFactory import com.coderjoe.atlas.utility.block.Crusher +import com.coderjoe.atlas.utility.block.ExperienceExtractor import com.coderjoe.atlas.utility.block.ObsidianFactory import com.coderjoe.atlas.utility.block.SmallDrill -import com.coderjoe.atlas.utility.block.ExperienceExtractor import com.coderjoe.atlas.utility.block.SoftTouchDrill import io.mockk.every import io.mockk.mockk diff --git a/src/test/kotlin/com/coderjoe/atlas/utility/ExperienceExtractorTest.kt b/src/test/kotlin/com/coderjoe/atlas/utility/ExperienceExtractorTest.kt index 2e8864d..d8f6e5f 100644 --- a/src/test/kotlin/com/coderjoe/atlas/utility/ExperienceExtractorTest.kt +++ b/src/test/kotlin/com/coderjoe/atlas/utility/ExperienceExtractorTest.kt @@ -12,7 +12,6 @@ import com.coderjoe.atlas.utility.block.ExperienceExtractor import io.mockk.every import io.mockk.mockk import io.mockk.verify -import org.bukkit.Location import org.bukkit.Material import org.bukkit.block.Block import org.bukkit.block.BlockFace