diff --git a/.github/workflows/build_docs.yml b/.github/workflows/build_docs.yml
index b9421708..91084df0 100644
--- a/.github/workflows/build_docs.yml
+++ b/.github/workflows/build_docs.yml
@@ -18,7 +18,7 @@ on:
env:
PYPI_PACKAGE: hexdoc
- HEXDOC: hexdoc 0.10.3/doc/properties.toml --ci
+ HEXDOC: hexdoc doc/properties.toml --ci
permissions:
contents: read
diff --git a/.vscode/launch.json b/.vscode/launch.json
index 994a6e05..5d853ff8 100644
--- a/.vscode/launch.json
+++ b/.vscode/launch.json
@@ -18,7 +18,7 @@
"request": "launch",
"module": "hexdoc.hexdoc",
"args": [
- "0.10.3/doc/properties.toml", "-o", "out",// "--allow-missing"
+ "doc/properties.toml", "-o", "out",// "--allow-missing"
],
"console": "integratedTerminal",
"justMyCode": false
diff --git a/0.10.3/Common/build.gradle b/0.10.3/Common/build.gradle
deleted file mode 100644
index b703a769..00000000
--- a/0.10.3/Common/build.gradle
+++ /dev/null
@@ -1,60 +0,0 @@
-plugins {
- id 'org.spongepowered.gradle.vanilla' version '0.2.1-SNAPSHOT'
-}
-
-archivesBaseName = getArtifactID("common")
-
-minecraft {
- version(minecraftVersion)
- accessWideners 'src/main/resources/hexplat.accesswidener'
-}
-
-repositories {
- mavenCentral()
-
- // If you have mod jar dependencies in ./libs, you can declare them as a repository like so:
- // flatDir {
- // dir 'libs'
- // }
-
- maven { url 'https://maven.blamejared.com' }
-
- maven {
- // location of the maven that hosts JEI files
- name = "Progwml6 maven"
- url = "https://dvs1.progwml6.com/files/maven/"
- }
- maven {
- // location of a maven mirror for JEI files, as a fallback
- name = "ModMaven"
- url = "https://modmaven.dev"
- }
-}
-
-dependencies {
- compileOnly group: 'org.spongepowered', name: 'mixin', version: '0.8.5'
- implementation group: 'com.google.code.findbugs', name: 'jsr305', version: '3.0.1'
-
- compileOnly "at.petra-k.paucal:paucal-common-$minecraftVersion:$paucalVersion"
- compileOnly "vazkii.patchouli:Patchouli-xplat:$minecraftVersion-$patchouliVersion"
-
- compileOnly "org.jetbrains:annotations:$jetbrainsAnnotationsVersion"
- testCompileOnly "org.jetbrains:annotations:$jetbrainsAnnotationsVersion"
-
- testImplementation 'org.junit.jupiter:junit-jupiter-api:5.6.1'
- testRuntimeOnly 'org.junit.jupiter:junit-jupiter-engine:5.6.1'
-}
-
-test {
- useJUnitPlatform()
-}
-
-processResources {
- def buildProps = project.properties.clone()
-
- filesMatching(['pack.mcmeta']) {
- expand buildProps
- }
-}
-
-setupJar(this)
diff --git a/0.10.3/Common/src/generated/resources/assets/hexcasting/blockstates/akashic_bookshelf.json b/0.10.3/Common/src/generated/resources/assets/hexcasting/blockstates/akashic_bookshelf.json
deleted file mode 100644
index 2f79ec12..00000000
--- a/0.10.3/Common/src/generated/resources/assets/hexcasting/blockstates/akashic_bookshelf.json
+++ /dev/null
@@ -1,107 +0,0 @@
-{
- "variants": {
- "facing=east,has_books=false": {
- "model": "hexcasting:block/akashic_bookshelf_empty",
- "uvlock": true,
- "y": 90
- },
- "facing=east,has_books=true": [
- {
- "model": "hexcasting:block/akashic_bookshelf_1",
- "uvlock": true,
- "y": 90
- },
- {
- "model": "hexcasting:block/akashic_bookshelf_2",
- "uvlock": true,
- "y": 90
- },
- {
- "model": "hexcasting:block/akashic_bookshelf_3",
- "uvlock": true,
- "y": 90
- },
- {
- "model": "hexcasting:block/akashic_bookshelf_4",
- "uvlock": true,
- "y": 90
- }
- ],
- "facing=north,has_books=false": {
- "model": "hexcasting:block/akashic_bookshelf_empty",
- "uvlock": true
- },
- "facing=north,has_books=true": [
- {
- "model": "hexcasting:block/akashic_bookshelf_1",
- "uvlock": true
- },
- {
- "model": "hexcasting:block/akashic_bookshelf_2",
- "uvlock": true
- },
- {
- "model": "hexcasting:block/akashic_bookshelf_3",
- "uvlock": true
- },
- {
- "model": "hexcasting:block/akashic_bookshelf_4",
- "uvlock": true
- }
- ],
- "facing=south,has_books=false": {
- "model": "hexcasting:block/akashic_bookshelf_empty",
- "uvlock": true,
- "y": 180
- },
- "facing=south,has_books=true": [
- {
- "model": "hexcasting:block/akashic_bookshelf_1",
- "uvlock": true,
- "y": 180
- },
- {
- "model": "hexcasting:block/akashic_bookshelf_2",
- "uvlock": true,
- "y": 180
- },
- {
- "model": "hexcasting:block/akashic_bookshelf_3",
- "uvlock": true,
- "y": 180
- },
- {
- "model": "hexcasting:block/akashic_bookshelf_4",
- "uvlock": true,
- "y": 180
- }
- ],
- "facing=west,has_books=false": {
- "model": "hexcasting:block/akashic_bookshelf_empty",
- "uvlock": true,
- "y": 270
- },
- "facing=west,has_books=true": [
- {
- "model": "hexcasting:block/akashic_bookshelf_1",
- "uvlock": true,
- "y": 270
- },
- {
- "model": "hexcasting:block/akashic_bookshelf_2",
- "uvlock": true,
- "y": 270
- },
- {
- "model": "hexcasting:block/akashic_bookshelf_3",
- "uvlock": true,
- "y": 270
- },
- {
- "model": "hexcasting:block/akashic_bookshelf_4",
- "uvlock": true,
- "y": 270
- }
- ]
- }
-}
\ No newline at end of file
diff --git a/0.10.3/Common/src/generated/resources/assets/hexcasting/blockstates/akashic_connector.json b/0.10.3/Common/src/generated/resources/assets/hexcasting/blockstates/akashic_connector.json
deleted file mode 100644
index c4552b49..00000000
--- a/0.10.3/Common/src/generated/resources/assets/hexcasting/blockstates/akashic_connector.json
+++ /dev/null
@@ -1,7 +0,0 @@
-{
- "variants": {
- "": {
- "model": "hexcasting:block/akashic_ligature"
- }
- }
-}
\ No newline at end of file
diff --git a/0.10.3/Common/src/generated/resources/assets/hexcasting/blockstates/akashic_record.json b/0.10.3/Common/src/generated/resources/assets/hexcasting/blockstates/akashic_record.json
deleted file mode 100644
index c2aa512a..00000000
--- a/0.10.3/Common/src/generated/resources/assets/hexcasting/blockstates/akashic_record.json
+++ /dev/null
@@ -1,7 +0,0 @@
-{
- "variants": {
- "": {
- "model": "hexcasting:block/akashic_record"
- }
- }
-}
\ No newline at end of file
diff --git a/0.10.3/Common/src/generated/resources/assets/hexcasting/blockstates/amethyst_dust_block.json b/0.10.3/Common/src/generated/resources/assets/hexcasting/blockstates/amethyst_dust_block.json
deleted file mode 100644
index c27c62ff..00000000
--- a/0.10.3/Common/src/generated/resources/assets/hexcasting/blockstates/amethyst_dust_block.json
+++ /dev/null
@@ -1,7 +0,0 @@
-{
- "variants": {
- "": {
- "model": "hexcasting:block/amethyst_dust_block"
- }
- }
-}
\ No newline at end of file
diff --git a/0.10.3/Common/src/generated/resources/assets/hexcasting/blockstates/amethyst_edified_leaves.json b/0.10.3/Common/src/generated/resources/assets/hexcasting/blockstates/amethyst_edified_leaves.json
deleted file mode 100644
index db8af585..00000000
--- a/0.10.3/Common/src/generated/resources/assets/hexcasting/blockstates/amethyst_edified_leaves.json
+++ /dev/null
@@ -1,7 +0,0 @@
-{
- "variants": {
- "": {
- "model": "hexcasting:block/amethyst_edified_leaves"
- }
- }
-}
\ No newline at end of file
diff --git a/0.10.3/Common/src/generated/resources/assets/hexcasting/blockstates/amethyst_sconce.json b/0.10.3/Common/src/generated/resources/assets/hexcasting/blockstates/amethyst_sconce.json
deleted file mode 100644
index af524109..00000000
--- a/0.10.3/Common/src/generated/resources/assets/hexcasting/blockstates/amethyst_sconce.json
+++ /dev/null
@@ -1,7 +0,0 @@
-{
- "variants": {
- "": {
- "model": "hexcasting:block/amethyst_sconce"
- }
- }
-}
\ No newline at end of file
diff --git a/0.10.3/Common/src/generated/resources/assets/hexcasting/blockstates/amethyst_tiles.json b/0.10.3/Common/src/generated/resources/assets/hexcasting/blockstates/amethyst_tiles.json
deleted file mode 100644
index 79459a90..00000000
--- a/0.10.3/Common/src/generated/resources/assets/hexcasting/blockstates/amethyst_tiles.json
+++ /dev/null
@@ -1,7 +0,0 @@
-{
- "variants": {
- "": {
- "model": "hexcasting:block/amethyst_tiles"
- }
- }
-}
\ No newline at end of file
diff --git a/0.10.3/Common/src/generated/resources/assets/hexcasting/blockstates/ancient_scroll_paper.json b/0.10.3/Common/src/generated/resources/assets/hexcasting/blockstates/ancient_scroll_paper.json
deleted file mode 100644
index 1c809c02..00000000
--- a/0.10.3/Common/src/generated/resources/assets/hexcasting/blockstates/ancient_scroll_paper.json
+++ /dev/null
@@ -1,7 +0,0 @@
-{
- "variants": {
- "": {
- "model": "hexcasting:block/ancient_scroll_paper"
- }
- }
-}
\ No newline at end of file
diff --git a/0.10.3/Common/src/generated/resources/assets/hexcasting/blockstates/ancient_scroll_paper_lantern.json b/0.10.3/Common/src/generated/resources/assets/hexcasting/blockstates/ancient_scroll_paper_lantern.json
deleted file mode 100644
index 3a632c39..00000000
--- a/0.10.3/Common/src/generated/resources/assets/hexcasting/blockstates/ancient_scroll_paper_lantern.json
+++ /dev/null
@@ -1,7 +0,0 @@
-{
- "variants": {
- "": {
- "model": "hexcasting:block/ancient_scroll_paper_lantern"
- }
- }
-}
\ No newline at end of file
diff --git a/0.10.3/Common/src/generated/resources/assets/hexcasting/blockstates/aventurine_edified_leaves.json b/0.10.3/Common/src/generated/resources/assets/hexcasting/blockstates/aventurine_edified_leaves.json
deleted file mode 100644
index 10383418..00000000
--- a/0.10.3/Common/src/generated/resources/assets/hexcasting/blockstates/aventurine_edified_leaves.json
+++ /dev/null
@@ -1,7 +0,0 @@
-{
- "variants": {
- "": {
- "model": "hexcasting:block/aventurine_edified_leaves"
- }
- }
-}
\ No newline at end of file
diff --git a/0.10.3/Common/src/generated/resources/assets/hexcasting/blockstates/citrine_edified_leaves.json b/0.10.3/Common/src/generated/resources/assets/hexcasting/blockstates/citrine_edified_leaves.json
deleted file mode 100644
index 3207814e..00000000
--- a/0.10.3/Common/src/generated/resources/assets/hexcasting/blockstates/citrine_edified_leaves.json
+++ /dev/null
@@ -1,7 +0,0 @@
-{
- "variants": {
- "": {
- "model": "hexcasting:block/citrine_edified_leaves"
- }
- }
-}
\ No newline at end of file
diff --git a/0.10.3/Common/src/generated/resources/assets/hexcasting/blockstates/conjured.json b/0.10.3/Common/src/generated/resources/assets/hexcasting/blockstates/conjured.json
deleted file mode 100644
index 5e8ffe70..00000000
--- a/0.10.3/Common/src/generated/resources/assets/hexcasting/blockstates/conjured.json
+++ /dev/null
@@ -1,7 +0,0 @@
-{
- "variants": {
- "": {
- "model": "hexcasting:block/conjured"
- }
- }
-}
\ No newline at end of file
diff --git a/0.10.3/Common/src/generated/resources/assets/hexcasting/blockstates/conjured_block.json b/0.10.3/Common/src/generated/resources/assets/hexcasting/blockstates/conjured_block.json
deleted file mode 100644
index 5e8ffe70..00000000
--- a/0.10.3/Common/src/generated/resources/assets/hexcasting/blockstates/conjured_block.json
+++ /dev/null
@@ -1,7 +0,0 @@
-{
- "variants": {
- "": {
- "model": "hexcasting:block/conjured"
- }
- }
-}
\ No newline at end of file
diff --git a/0.10.3/Common/src/generated/resources/assets/hexcasting/blockstates/directrix_redstone.json b/0.10.3/Common/src/generated/resources/assets/hexcasting/blockstates/directrix_redstone.json
deleted file mode 100644
index 12b4b608..00000000
--- a/0.10.3/Common/src/generated/resources/assets/hexcasting/blockstates/directrix_redstone.json
+++ /dev/null
@@ -1,76 +0,0 @@
-{
- "variants": {
- "energized=false,facing=down,powered=false": {
- "model": "hexcasting:block/redstone_directrix_unpowered_dim_down"
- },
- "energized=false,facing=down,powered=true": {
- "model": "hexcasting:block/redstone_directrix_powered_dim_down"
- },
- "energized=false,facing=east,powered=false": {
- "model": "hexcasting:block/redstone_directrix_unpowered_dim_east"
- },
- "energized=false,facing=east,powered=true": {
- "model": "hexcasting:block/redstone_directrix_powered_dim_east"
- },
- "energized=false,facing=north,powered=false": {
- "model": "hexcasting:block/redstone_directrix_unpowered_dim_north"
- },
- "energized=false,facing=north,powered=true": {
- "model": "hexcasting:block/redstone_directrix_powered_dim_north"
- },
- "energized=false,facing=south,powered=false": {
- "model": "hexcasting:block/redstone_directrix_unpowered_dim_south"
- },
- "energized=false,facing=south,powered=true": {
- "model": "hexcasting:block/redstone_directrix_powered_dim_south"
- },
- "energized=false,facing=up,powered=false": {
- "model": "hexcasting:block/redstone_directrix_unpowered_dim_up"
- },
- "energized=false,facing=up,powered=true": {
- "model": "hexcasting:block/redstone_directrix_powered_dim_up"
- },
- "energized=false,facing=west,powered=false": {
- "model": "hexcasting:block/redstone_directrix_unpowered_dim_west"
- },
- "energized=false,facing=west,powered=true": {
- "model": "hexcasting:block/redstone_directrix_powered_dim_west"
- },
- "energized=true,facing=down,powered=false": {
- "model": "hexcasting:block/redstone_directrix_unpowered_lit_down"
- },
- "energized=true,facing=down,powered=true": {
- "model": "hexcasting:block/redstone_directrix_powered_lit_down"
- },
- "energized=true,facing=east,powered=false": {
- "model": "hexcasting:block/redstone_directrix_unpowered_lit_east"
- },
- "energized=true,facing=east,powered=true": {
- "model": "hexcasting:block/redstone_directrix_powered_lit_east"
- },
- "energized=true,facing=north,powered=false": {
- "model": "hexcasting:block/redstone_directrix_unpowered_lit_north"
- },
- "energized=true,facing=north,powered=true": {
- "model": "hexcasting:block/redstone_directrix_powered_lit_north"
- },
- "energized=true,facing=south,powered=false": {
- "model": "hexcasting:block/redstone_directrix_unpowered_lit_south"
- },
- "energized=true,facing=south,powered=true": {
- "model": "hexcasting:block/redstone_directrix_powered_lit_south"
- },
- "energized=true,facing=up,powered=false": {
- "model": "hexcasting:block/redstone_directrix_unpowered_lit_up"
- },
- "energized=true,facing=up,powered=true": {
- "model": "hexcasting:block/redstone_directrix_powered_lit_up"
- },
- "energized=true,facing=west,powered=false": {
- "model": "hexcasting:block/redstone_directrix_unpowered_lit_west"
- },
- "energized=true,facing=west,powered=true": {
- "model": "hexcasting:block/redstone_directrix_powered_lit_west"
- }
- }
-}
\ No newline at end of file
diff --git a/0.10.3/Common/src/generated/resources/assets/hexcasting/blockstates/edified_button.json b/0.10.3/Common/src/generated/resources/assets/hexcasting/blockstates/edified_button.json
deleted file mode 100644
index 81efad6f..00000000
--- a/0.10.3/Common/src/generated/resources/assets/hexcasting/blockstates/edified_button.json
+++ /dev/null
@@ -1,118 +0,0 @@
-{
- "variants": {
- "face=ceiling,facing=east,powered=false": {
- "model": "hexcasting:block/edified_button",
- "x": 180,
- "y": 270
- },
- "face=ceiling,facing=east,powered=true": {
- "model": "hexcasting:block/edified_button_pressed",
- "x": 180,
- "y": 270
- },
- "face=ceiling,facing=north,powered=false": {
- "model": "hexcasting:block/edified_button",
- "x": 180,
- "y": 180
- },
- "face=ceiling,facing=north,powered=true": {
- "model": "hexcasting:block/edified_button_pressed",
- "x": 180,
- "y": 180
- },
- "face=ceiling,facing=south,powered=false": {
- "model": "hexcasting:block/edified_button",
- "x": 180
- },
- "face=ceiling,facing=south,powered=true": {
- "model": "hexcasting:block/edified_button_pressed",
- "x": 180
- },
- "face=ceiling,facing=west,powered=false": {
- "model": "hexcasting:block/edified_button",
- "x": 180,
- "y": 90
- },
- "face=ceiling,facing=west,powered=true": {
- "model": "hexcasting:block/edified_button_pressed",
- "x": 180,
- "y": 90
- },
- "face=floor,facing=east,powered=false": {
- "model": "hexcasting:block/edified_button",
- "y": 90
- },
- "face=floor,facing=east,powered=true": {
- "model": "hexcasting:block/edified_button_pressed",
- "y": 90
- },
- "face=floor,facing=north,powered=false": {
- "model": "hexcasting:block/edified_button"
- },
- "face=floor,facing=north,powered=true": {
- "model": "hexcasting:block/edified_button_pressed"
- },
- "face=floor,facing=south,powered=false": {
- "model": "hexcasting:block/edified_button",
- "y": 180
- },
- "face=floor,facing=south,powered=true": {
- "model": "hexcasting:block/edified_button_pressed",
- "y": 180
- },
- "face=floor,facing=west,powered=false": {
- "model": "hexcasting:block/edified_button",
- "y": 270
- },
- "face=floor,facing=west,powered=true": {
- "model": "hexcasting:block/edified_button_pressed",
- "y": 270
- },
- "face=wall,facing=east,powered=false": {
- "model": "hexcasting:block/edified_button",
- "uvlock": true,
- "x": 90,
- "y": 90
- },
- "face=wall,facing=east,powered=true": {
- "model": "hexcasting:block/edified_button_pressed",
- "uvlock": true,
- "x": 90,
- "y": 90
- },
- "face=wall,facing=north,powered=false": {
- "model": "hexcasting:block/edified_button",
- "uvlock": true,
- "x": 90
- },
- "face=wall,facing=north,powered=true": {
- "model": "hexcasting:block/edified_button_pressed",
- "uvlock": true,
- "x": 90
- },
- "face=wall,facing=south,powered=false": {
- "model": "hexcasting:block/edified_button",
- "uvlock": true,
- "x": 90,
- "y": 180
- },
- "face=wall,facing=south,powered=true": {
- "model": "hexcasting:block/edified_button_pressed",
- "uvlock": true,
- "x": 90,
- "y": 180
- },
- "face=wall,facing=west,powered=false": {
- "model": "hexcasting:block/edified_button",
- "uvlock": true,
- "x": 90,
- "y": 270
- },
- "face=wall,facing=west,powered=true": {
- "model": "hexcasting:block/edified_button_pressed",
- "uvlock": true,
- "x": 90,
- "y": 270
- }
- }
-}
\ No newline at end of file
diff --git a/0.10.3/Common/src/generated/resources/assets/hexcasting/blockstates/edified_door.json b/0.10.3/Common/src/generated/resources/assets/hexcasting/blockstates/edified_door.json
deleted file mode 100644
index 029d3bd5..00000000
--- a/0.10.3/Common/src/generated/resources/assets/hexcasting/blockstates/edified_door.json
+++ /dev/null
@@ -1,124 +0,0 @@
-{
- "variants": {
- "facing=east,half=lower,hinge=left,open=false": {
- "model": "hexcasting:block/edified_door_bottom_left"
- },
- "facing=east,half=lower,hinge=left,open=true": {
- "model": "hexcasting:block/edified_door_bottom_left_open",
- "y": 90
- },
- "facing=east,half=lower,hinge=right,open=false": {
- "model": "hexcasting:block/edified_door_bottom_right"
- },
- "facing=east,half=lower,hinge=right,open=true": {
- "model": "hexcasting:block/edified_door_bottom_right_open",
- "y": 270
- },
- "facing=east,half=upper,hinge=left,open=false": {
- "model": "hexcasting:block/edified_door_top_left"
- },
- "facing=east,half=upper,hinge=left,open=true": {
- "model": "hexcasting:block/edified_door_top_left_open",
- "y": 90
- },
- "facing=east,half=upper,hinge=right,open=false": {
- "model": "hexcasting:block/edified_door_top_right"
- },
- "facing=east,half=upper,hinge=right,open=true": {
- "model": "hexcasting:block/edified_door_top_right_open",
- "y": 270
- },
- "facing=north,half=lower,hinge=left,open=false": {
- "model": "hexcasting:block/edified_door_bottom_left",
- "y": 270
- },
- "facing=north,half=lower,hinge=left,open=true": {
- "model": "hexcasting:block/edified_door_bottom_left_open"
- },
- "facing=north,half=lower,hinge=right,open=false": {
- "model": "hexcasting:block/edified_door_bottom_right",
- "y": 270
- },
- "facing=north,half=lower,hinge=right,open=true": {
- "model": "hexcasting:block/edified_door_bottom_right_open",
- "y": 180
- },
- "facing=north,half=upper,hinge=left,open=false": {
- "model": "hexcasting:block/edified_door_top_left",
- "y": 270
- },
- "facing=north,half=upper,hinge=left,open=true": {
- "model": "hexcasting:block/edified_door_top_left_open"
- },
- "facing=north,half=upper,hinge=right,open=false": {
- "model": "hexcasting:block/edified_door_top_right",
- "y": 270
- },
- "facing=north,half=upper,hinge=right,open=true": {
- "model": "hexcasting:block/edified_door_top_right_open",
- "y": 180
- },
- "facing=south,half=lower,hinge=left,open=false": {
- "model": "hexcasting:block/edified_door_bottom_left",
- "y": 90
- },
- "facing=south,half=lower,hinge=left,open=true": {
- "model": "hexcasting:block/edified_door_bottom_left_open",
- "y": 180
- },
- "facing=south,half=lower,hinge=right,open=false": {
- "model": "hexcasting:block/edified_door_bottom_right",
- "y": 90
- },
- "facing=south,half=lower,hinge=right,open=true": {
- "model": "hexcasting:block/edified_door_bottom_right_open"
- },
- "facing=south,half=upper,hinge=left,open=false": {
- "model": "hexcasting:block/edified_door_top_left",
- "y": 90
- },
- "facing=south,half=upper,hinge=left,open=true": {
- "model": "hexcasting:block/edified_door_top_left_open",
- "y": 180
- },
- "facing=south,half=upper,hinge=right,open=false": {
- "model": "hexcasting:block/edified_door_top_right",
- "y": 90
- },
- "facing=south,half=upper,hinge=right,open=true": {
- "model": "hexcasting:block/edified_door_top_right_open"
- },
- "facing=west,half=lower,hinge=left,open=false": {
- "model": "hexcasting:block/edified_door_bottom_left",
- "y": 180
- },
- "facing=west,half=lower,hinge=left,open=true": {
- "model": "hexcasting:block/edified_door_bottom_left_open",
- "y": 270
- },
- "facing=west,half=lower,hinge=right,open=false": {
- "model": "hexcasting:block/edified_door_bottom_right",
- "y": 180
- },
- "facing=west,half=lower,hinge=right,open=true": {
- "model": "hexcasting:block/edified_door_bottom_right_open",
- "y": 90
- },
- "facing=west,half=upper,hinge=left,open=false": {
- "model": "hexcasting:block/edified_door_top_left",
- "y": 180
- },
- "facing=west,half=upper,hinge=left,open=true": {
- "model": "hexcasting:block/edified_door_top_left_open",
- "y": 270
- },
- "facing=west,half=upper,hinge=right,open=false": {
- "model": "hexcasting:block/edified_door_top_right",
- "y": 180
- },
- "facing=west,half=upper,hinge=right,open=true": {
- "model": "hexcasting:block/edified_door_top_right_open",
- "y": 90
- }
- }
-}
\ No newline at end of file
diff --git a/0.10.3/Common/src/generated/resources/assets/hexcasting/blockstates/edified_log.json b/0.10.3/Common/src/generated/resources/assets/hexcasting/blockstates/edified_log.json
deleted file mode 100644
index 4cd8fe5d..00000000
--- a/0.10.3/Common/src/generated/resources/assets/hexcasting/blockstates/edified_log.json
+++ /dev/null
@@ -1,16 +0,0 @@
-{
- "variants": {
- "axis=x": {
- "model": "hexcasting:block/edified_log_horizontal",
- "x": 90,
- "y": 90
- },
- "axis=y": {
- "model": "hexcasting:block/edified_log"
- },
- "axis=z": {
- "model": "hexcasting:block/edified_log_horizontal",
- "x": 90
- }
- }
-}
\ No newline at end of file
diff --git a/0.10.3/Common/src/generated/resources/assets/hexcasting/blockstates/edified_panel.json b/0.10.3/Common/src/generated/resources/assets/hexcasting/blockstates/edified_panel.json
deleted file mode 100644
index 17d99a79..00000000
--- a/0.10.3/Common/src/generated/resources/assets/hexcasting/blockstates/edified_panel.json
+++ /dev/null
@@ -1,7 +0,0 @@
-{
- "variants": {
- "": {
- "model": "hexcasting:block/edified_panel"
- }
- }
-}
\ No newline at end of file
diff --git a/0.10.3/Common/src/generated/resources/assets/hexcasting/blockstates/edified_planks.json b/0.10.3/Common/src/generated/resources/assets/hexcasting/blockstates/edified_planks.json
deleted file mode 100644
index a2d790f0..00000000
--- a/0.10.3/Common/src/generated/resources/assets/hexcasting/blockstates/edified_planks.json
+++ /dev/null
@@ -1,17 +0,0 @@
-{
- "variants": {
- "": [
- {
- "model": "hexcasting:block/edified_planks",
- "weight": 3
- },
- {
- "model": "hexcasting:block/edified_planks_2",
- "weight": 3
- },
- {
- "model": "hexcasting:block/edified_planks_3"
- }
- ]
- }
-}
\ No newline at end of file
diff --git a/0.10.3/Common/src/generated/resources/assets/hexcasting/blockstates/edified_pressure_plate.json b/0.10.3/Common/src/generated/resources/assets/hexcasting/blockstates/edified_pressure_plate.json
deleted file mode 100644
index 6da4bab9..00000000
--- a/0.10.3/Common/src/generated/resources/assets/hexcasting/blockstates/edified_pressure_plate.json
+++ /dev/null
@@ -1,10 +0,0 @@
-{
- "variants": {
- "powered=false": {
- "model": "hexcasting:block/edified_pressure_plate"
- },
- "powered=true": {
- "model": "hexcasting:block/edified_pressure_plate_down"
- }
- }
-}
\ No newline at end of file
diff --git a/0.10.3/Common/src/generated/resources/assets/hexcasting/blockstates/edified_slab.json b/0.10.3/Common/src/generated/resources/assets/hexcasting/blockstates/edified_slab.json
deleted file mode 100644
index 6a4d4be0..00000000
--- a/0.10.3/Common/src/generated/resources/assets/hexcasting/blockstates/edified_slab.json
+++ /dev/null
@@ -1,13 +0,0 @@
-{
- "variants": {
- "type=bottom": {
- "model": "hexcasting:block/edified_slab"
- },
- "type=double": {
- "model": "hexcasting:block/edified_planks"
- },
- "type=top": {
- "model": "hexcasting:block/edified_slab_top"
- }
- }
-}
\ No newline at end of file
diff --git a/0.10.3/Common/src/generated/resources/assets/hexcasting/blockstates/edified_stairs.json b/0.10.3/Common/src/generated/resources/assets/hexcasting/blockstates/edified_stairs.json
deleted file mode 100644
index 23ac40ca..00000000
--- a/0.10.3/Common/src/generated/resources/assets/hexcasting/blockstates/edified_stairs.json
+++ /dev/null
@@ -1,209 +0,0 @@
-{
- "variants": {
- "facing=east,half=bottom,shape=inner_left": {
- "model": "hexcasting:block/edified_stairs_inner",
- "uvlock": true,
- "y": 270
- },
- "facing=east,half=bottom,shape=inner_right": {
- "model": "hexcasting:block/edified_stairs_inner"
- },
- "facing=east,half=bottom,shape=outer_left": {
- "model": "hexcasting:block/edified_stairs_outer",
- "uvlock": true,
- "y": 270
- },
- "facing=east,half=bottom,shape=outer_right": {
- "model": "hexcasting:block/edified_stairs_outer"
- },
- "facing=east,half=bottom,shape=straight": {
- "model": "hexcasting:block/edified_stairs"
- },
- "facing=east,half=top,shape=inner_left": {
- "model": "hexcasting:block/edified_stairs_inner",
- "uvlock": true,
- "x": 180
- },
- "facing=east,half=top,shape=inner_right": {
- "model": "hexcasting:block/edified_stairs_inner",
- "uvlock": true,
- "x": 180,
- "y": 90
- },
- "facing=east,half=top,shape=outer_left": {
- "model": "hexcasting:block/edified_stairs_outer",
- "uvlock": true,
- "x": 180
- },
- "facing=east,half=top,shape=outer_right": {
- "model": "hexcasting:block/edified_stairs_outer",
- "uvlock": true,
- "x": 180,
- "y": 90
- },
- "facing=east,half=top,shape=straight": {
- "model": "hexcasting:block/edified_stairs",
- "uvlock": true,
- "x": 180
- },
- "facing=north,half=bottom,shape=inner_left": {
- "model": "hexcasting:block/edified_stairs_inner",
- "uvlock": true,
- "y": 180
- },
- "facing=north,half=bottom,shape=inner_right": {
- "model": "hexcasting:block/edified_stairs_inner",
- "uvlock": true,
- "y": 270
- },
- "facing=north,half=bottom,shape=outer_left": {
- "model": "hexcasting:block/edified_stairs_outer",
- "uvlock": true,
- "y": 180
- },
- "facing=north,half=bottom,shape=outer_right": {
- "model": "hexcasting:block/edified_stairs_outer",
- "uvlock": true,
- "y": 270
- },
- "facing=north,half=bottom,shape=straight": {
- "model": "hexcasting:block/edified_stairs",
- "uvlock": true,
- "y": 270
- },
- "facing=north,half=top,shape=inner_left": {
- "model": "hexcasting:block/edified_stairs_inner",
- "uvlock": true,
- "x": 180,
- "y": 270
- },
- "facing=north,half=top,shape=inner_right": {
- "model": "hexcasting:block/edified_stairs_inner",
- "uvlock": true,
- "x": 180
- },
- "facing=north,half=top,shape=outer_left": {
- "model": "hexcasting:block/edified_stairs_outer",
- "uvlock": true,
- "x": 180,
- "y": 270
- },
- "facing=north,half=top,shape=outer_right": {
- "model": "hexcasting:block/edified_stairs_outer",
- "uvlock": true,
- "x": 180
- },
- "facing=north,half=top,shape=straight": {
- "model": "hexcasting:block/edified_stairs",
- "uvlock": true,
- "x": 180,
- "y": 270
- },
- "facing=south,half=bottom,shape=inner_left": {
- "model": "hexcasting:block/edified_stairs_inner"
- },
- "facing=south,half=bottom,shape=inner_right": {
- "model": "hexcasting:block/edified_stairs_inner",
- "uvlock": true,
- "y": 90
- },
- "facing=south,half=bottom,shape=outer_left": {
- "model": "hexcasting:block/edified_stairs_outer"
- },
- "facing=south,half=bottom,shape=outer_right": {
- "model": "hexcasting:block/edified_stairs_outer",
- "uvlock": true,
- "y": 90
- },
- "facing=south,half=bottom,shape=straight": {
- "model": "hexcasting:block/edified_stairs",
- "uvlock": true,
- "y": 90
- },
- "facing=south,half=top,shape=inner_left": {
- "model": "hexcasting:block/edified_stairs_inner",
- "uvlock": true,
- "x": 180,
- "y": 90
- },
- "facing=south,half=top,shape=inner_right": {
- "model": "hexcasting:block/edified_stairs_inner",
- "uvlock": true,
- "x": 180,
- "y": 180
- },
- "facing=south,half=top,shape=outer_left": {
- "model": "hexcasting:block/edified_stairs_outer",
- "uvlock": true,
- "x": 180,
- "y": 90
- },
- "facing=south,half=top,shape=outer_right": {
- "model": "hexcasting:block/edified_stairs_outer",
- "uvlock": true,
- "x": 180,
- "y": 180
- },
- "facing=south,half=top,shape=straight": {
- "model": "hexcasting:block/edified_stairs",
- "uvlock": true,
- "x": 180,
- "y": 90
- },
- "facing=west,half=bottom,shape=inner_left": {
- "model": "hexcasting:block/edified_stairs_inner",
- "uvlock": true,
- "y": 90
- },
- "facing=west,half=bottom,shape=inner_right": {
- "model": "hexcasting:block/edified_stairs_inner",
- "uvlock": true,
- "y": 180
- },
- "facing=west,half=bottom,shape=outer_left": {
- "model": "hexcasting:block/edified_stairs_outer",
- "uvlock": true,
- "y": 90
- },
- "facing=west,half=bottom,shape=outer_right": {
- "model": "hexcasting:block/edified_stairs_outer",
- "uvlock": true,
- "y": 180
- },
- "facing=west,half=bottom,shape=straight": {
- "model": "hexcasting:block/edified_stairs",
- "uvlock": true,
- "y": 180
- },
- "facing=west,half=top,shape=inner_left": {
- "model": "hexcasting:block/edified_stairs_inner",
- "uvlock": true,
- "x": 180,
- "y": 180
- },
- "facing=west,half=top,shape=inner_right": {
- "model": "hexcasting:block/edified_stairs_inner",
- "uvlock": true,
- "x": 180,
- "y": 270
- },
- "facing=west,half=top,shape=outer_left": {
- "model": "hexcasting:block/edified_stairs_outer",
- "uvlock": true,
- "x": 180,
- "y": 180
- },
- "facing=west,half=top,shape=outer_right": {
- "model": "hexcasting:block/edified_stairs_outer",
- "uvlock": true,
- "x": 180,
- "y": 270
- },
- "facing=west,half=top,shape=straight": {
- "model": "hexcasting:block/edified_stairs",
- "uvlock": true,
- "x": 180,
- "y": 180
- }
- }
-}
\ No newline at end of file
diff --git a/0.10.3/Common/src/generated/resources/assets/hexcasting/blockstates/edified_tile.json b/0.10.3/Common/src/generated/resources/assets/hexcasting/blockstates/edified_tile.json
deleted file mode 100644
index 23d71da0..00000000
--- a/0.10.3/Common/src/generated/resources/assets/hexcasting/blockstates/edified_tile.json
+++ /dev/null
@@ -1,7 +0,0 @@
-{
- "variants": {
- "": {
- "model": "hexcasting:block/edified_tile"
- }
- }
-}
\ No newline at end of file
diff --git a/0.10.3/Common/src/generated/resources/assets/hexcasting/blockstates/edified_trapdoor.json b/0.10.3/Common/src/generated/resources/assets/hexcasting/blockstates/edified_trapdoor.json
deleted file mode 100644
index 0df527ca..00000000
--- a/0.10.3/Common/src/generated/resources/assets/hexcasting/blockstates/edified_trapdoor.json
+++ /dev/null
@@ -1,68 +0,0 @@
-{
- "variants": {
- "facing=east,half=bottom,open=false": {
- "model": "hexcasting:block/edified_trapdoor_bottom",
- "y": 90
- },
- "facing=east,half=bottom,open=true": {
- "model": "hexcasting:block/edified_trapdoor_open",
- "y": 90
- },
- "facing=east,half=top,open=false": {
- "model": "hexcasting:block/edified_trapdoor_top",
- "y": 90
- },
- "facing=east,half=top,open=true": {
- "model": "hexcasting:block/edified_trapdoor_open",
- "x": 180,
- "y": 270
- },
- "facing=north,half=bottom,open=false": {
- "model": "hexcasting:block/edified_trapdoor_bottom"
- },
- "facing=north,half=bottom,open=true": {
- "model": "hexcasting:block/edified_trapdoor_open"
- },
- "facing=north,half=top,open=false": {
- "model": "hexcasting:block/edified_trapdoor_top"
- },
- "facing=north,half=top,open=true": {
- "model": "hexcasting:block/edified_trapdoor_open",
- "x": 180,
- "y": 180
- },
- "facing=south,half=bottom,open=false": {
- "model": "hexcasting:block/edified_trapdoor_bottom",
- "y": 180
- },
- "facing=south,half=bottom,open=true": {
- "model": "hexcasting:block/edified_trapdoor_open",
- "y": 180
- },
- "facing=south,half=top,open=false": {
- "model": "hexcasting:block/edified_trapdoor_top",
- "y": 180
- },
- "facing=south,half=top,open=true": {
- "model": "hexcasting:block/edified_trapdoor_open",
- "x": 180
- },
- "facing=west,half=bottom,open=false": {
- "model": "hexcasting:block/edified_trapdoor_bottom",
- "y": 270
- },
- "facing=west,half=bottom,open=true": {
- "model": "hexcasting:block/edified_trapdoor_open",
- "y": 270
- },
- "facing=west,half=top,open=false": {
- "model": "hexcasting:block/edified_trapdoor_top",
- "y": 270
- },
- "facing=west,half=top,open=true": {
- "model": "hexcasting:block/edified_trapdoor_open",
- "x": 180,
- "y": 90
- }
- }
-}
\ No newline at end of file
diff --git a/0.10.3/Common/src/generated/resources/assets/hexcasting/blockstates/edified_wood.json b/0.10.3/Common/src/generated/resources/assets/hexcasting/blockstates/edified_wood.json
deleted file mode 100644
index 1d963101..00000000
--- a/0.10.3/Common/src/generated/resources/assets/hexcasting/blockstates/edified_wood.json
+++ /dev/null
@@ -1,16 +0,0 @@
-{
- "variants": {
- "axis=x": {
- "model": "hexcasting:block/edified_wood_horizontal",
- "x": 90,
- "y": 90
- },
- "axis=y": {
- "model": "hexcasting:block/edified_wood"
- },
- "axis=z": {
- "model": "hexcasting:block/edified_wood_horizontal",
- "x": 90
- }
- }
-}
\ No newline at end of file
diff --git a/0.10.3/Common/src/generated/resources/assets/hexcasting/blockstates/empty_directrix.json b/0.10.3/Common/src/generated/resources/assets/hexcasting/blockstates/empty_directrix.json
deleted file mode 100644
index 464aa5bc..00000000
--- a/0.10.3/Common/src/generated/resources/assets/hexcasting/blockstates/empty_directrix.json
+++ /dev/null
@@ -1,22 +0,0 @@
-{
- "variants": {
- "axis=x,energized=false": {
- "model": "hexcasting:block/empty_directrix_dim_x"
- },
- "axis=x,energized=true": {
- "model": "hexcasting:block/empty_directrix_lit_x"
- },
- "axis=y,energized=false": {
- "model": "hexcasting:block/empty_directrix_dim_y"
- },
- "axis=y,energized=true": {
- "model": "hexcasting:block/empty_directrix_lit_y"
- },
- "axis=z,energized=false": {
- "model": "hexcasting:block/empty_directrix_dim_z"
- },
- "axis=z,energized=true": {
- "model": "hexcasting:block/empty_directrix_lit_z"
- }
- }
-}
\ No newline at end of file
diff --git a/0.10.3/Common/src/generated/resources/assets/hexcasting/blockstates/empty_impetus.json b/0.10.3/Common/src/generated/resources/assets/hexcasting/blockstates/empty_impetus.json
deleted file mode 100644
index 0a87a5ff..00000000
--- a/0.10.3/Common/src/generated/resources/assets/hexcasting/blockstates/empty_impetus.json
+++ /dev/null
@@ -1,40 +0,0 @@
-{
- "variants": {
- "energized=false,facing=down": {
- "model": "hexcasting:block/empty_impetus_dim_down"
- },
- "energized=false,facing=east": {
- "model": "hexcasting:block/empty_impetus_dim_east"
- },
- "energized=false,facing=north": {
- "model": "hexcasting:block/empty_impetus_dim_north"
- },
- "energized=false,facing=south": {
- "model": "hexcasting:block/empty_impetus_dim_south"
- },
- "energized=false,facing=up": {
- "model": "hexcasting:block/empty_impetus_dim_up"
- },
- "energized=false,facing=west": {
- "model": "hexcasting:block/empty_impetus_dim_west"
- },
- "energized=true,facing=down": {
- "model": "hexcasting:block/empty_impetus_lit_down"
- },
- "energized=true,facing=east": {
- "model": "hexcasting:block/empty_impetus_lit_east"
- },
- "energized=true,facing=north": {
- "model": "hexcasting:block/empty_impetus_lit_north"
- },
- "energized=true,facing=south": {
- "model": "hexcasting:block/empty_impetus_lit_south"
- },
- "energized=true,facing=up": {
- "model": "hexcasting:block/empty_impetus_lit_up"
- },
- "energized=true,facing=west": {
- "model": "hexcasting:block/empty_impetus_lit_west"
- }
- }
-}
\ No newline at end of file
diff --git a/0.10.3/Common/src/generated/resources/assets/hexcasting/blockstates/impetus_look.json b/0.10.3/Common/src/generated/resources/assets/hexcasting/blockstates/impetus_look.json
deleted file mode 100644
index b5e851cb..00000000
--- a/0.10.3/Common/src/generated/resources/assets/hexcasting/blockstates/impetus_look.json
+++ /dev/null
@@ -1,40 +0,0 @@
-{
- "variants": {
- "energized=false,facing=down": {
- "model": "hexcasting:block/impetus_look_dim_down"
- },
- "energized=false,facing=east": {
- "model": "hexcasting:block/impetus_look_dim_east"
- },
- "energized=false,facing=north": {
- "model": "hexcasting:block/impetus_look_dim_north"
- },
- "energized=false,facing=south": {
- "model": "hexcasting:block/impetus_look_dim_south"
- },
- "energized=false,facing=up": {
- "model": "hexcasting:block/impetus_look_dim_up"
- },
- "energized=false,facing=west": {
- "model": "hexcasting:block/impetus_look_dim_west"
- },
- "energized=true,facing=down": {
- "model": "hexcasting:block/impetus_look_lit_down"
- },
- "energized=true,facing=east": {
- "model": "hexcasting:block/impetus_look_lit_east"
- },
- "energized=true,facing=north": {
- "model": "hexcasting:block/impetus_look_lit_north"
- },
- "energized=true,facing=south": {
- "model": "hexcasting:block/impetus_look_lit_south"
- },
- "energized=true,facing=up": {
- "model": "hexcasting:block/impetus_look_lit_up"
- },
- "energized=true,facing=west": {
- "model": "hexcasting:block/impetus_look_lit_west"
- }
- }
-}
\ No newline at end of file
diff --git a/0.10.3/Common/src/generated/resources/assets/hexcasting/blockstates/impetus_rightclick.json b/0.10.3/Common/src/generated/resources/assets/hexcasting/blockstates/impetus_rightclick.json
deleted file mode 100644
index 85f49e7c..00000000
--- a/0.10.3/Common/src/generated/resources/assets/hexcasting/blockstates/impetus_rightclick.json
+++ /dev/null
@@ -1,40 +0,0 @@
-{
- "variants": {
- "energized=false,facing=down": {
- "model": "hexcasting:block/impetus_rightclick_dim_down"
- },
- "energized=false,facing=east": {
- "model": "hexcasting:block/impetus_rightclick_dim_east"
- },
- "energized=false,facing=north": {
- "model": "hexcasting:block/impetus_rightclick_dim_north"
- },
- "energized=false,facing=south": {
- "model": "hexcasting:block/impetus_rightclick_dim_south"
- },
- "energized=false,facing=up": {
- "model": "hexcasting:block/impetus_rightclick_dim_up"
- },
- "energized=false,facing=west": {
- "model": "hexcasting:block/impetus_rightclick_dim_west"
- },
- "energized=true,facing=down": {
- "model": "hexcasting:block/impetus_rightclick_lit_down"
- },
- "energized=true,facing=east": {
- "model": "hexcasting:block/impetus_rightclick_lit_east"
- },
- "energized=true,facing=north": {
- "model": "hexcasting:block/impetus_rightclick_lit_north"
- },
- "energized=true,facing=south": {
- "model": "hexcasting:block/impetus_rightclick_lit_south"
- },
- "energized=true,facing=up": {
- "model": "hexcasting:block/impetus_rightclick_lit_up"
- },
- "energized=true,facing=west": {
- "model": "hexcasting:block/impetus_rightclick_lit_west"
- }
- }
-}
\ No newline at end of file
diff --git a/0.10.3/Common/src/generated/resources/assets/hexcasting/blockstates/impetus_storedplayer.json b/0.10.3/Common/src/generated/resources/assets/hexcasting/blockstates/impetus_storedplayer.json
deleted file mode 100644
index b25cb7ed..00000000
--- a/0.10.3/Common/src/generated/resources/assets/hexcasting/blockstates/impetus_storedplayer.json
+++ /dev/null
@@ -1,76 +0,0 @@
-{
- "variants": {
- "energized=false,facing=down,powered=false": {
- "model": "hexcasting:block/impetus_storedplayer_dim_down"
- },
- "energized=false,facing=down,powered=true": {
- "model": "hexcasting:block/impetus_storedplayer_dim_down"
- },
- "energized=false,facing=east,powered=false": {
- "model": "hexcasting:block/impetus_storedplayer_dim_east"
- },
- "energized=false,facing=east,powered=true": {
- "model": "hexcasting:block/impetus_storedplayer_dim_east"
- },
- "energized=false,facing=north,powered=false": {
- "model": "hexcasting:block/impetus_storedplayer_dim_north"
- },
- "energized=false,facing=north,powered=true": {
- "model": "hexcasting:block/impetus_storedplayer_dim_north"
- },
- "energized=false,facing=south,powered=false": {
- "model": "hexcasting:block/impetus_storedplayer_dim_south"
- },
- "energized=false,facing=south,powered=true": {
- "model": "hexcasting:block/impetus_storedplayer_dim_south"
- },
- "energized=false,facing=up,powered=false": {
- "model": "hexcasting:block/impetus_storedplayer_dim_up"
- },
- "energized=false,facing=up,powered=true": {
- "model": "hexcasting:block/impetus_storedplayer_dim_up"
- },
- "energized=false,facing=west,powered=false": {
- "model": "hexcasting:block/impetus_storedplayer_dim_west"
- },
- "energized=false,facing=west,powered=true": {
- "model": "hexcasting:block/impetus_storedplayer_dim_west"
- },
- "energized=true,facing=down,powered=false": {
- "model": "hexcasting:block/impetus_storedplayer_lit_down"
- },
- "energized=true,facing=down,powered=true": {
- "model": "hexcasting:block/impetus_storedplayer_lit_down"
- },
- "energized=true,facing=east,powered=false": {
- "model": "hexcasting:block/impetus_storedplayer_lit_east"
- },
- "energized=true,facing=east,powered=true": {
- "model": "hexcasting:block/impetus_storedplayer_lit_east"
- },
- "energized=true,facing=north,powered=false": {
- "model": "hexcasting:block/impetus_storedplayer_lit_north"
- },
- "energized=true,facing=north,powered=true": {
- "model": "hexcasting:block/impetus_storedplayer_lit_north"
- },
- "energized=true,facing=south,powered=false": {
- "model": "hexcasting:block/impetus_storedplayer_lit_south"
- },
- "energized=true,facing=south,powered=true": {
- "model": "hexcasting:block/impetus_storedplayer_lit_south"
- },
- "energized=true,facing=up,powered=false": {
- "model": "hexcasting:block/impetus_storedplayer_lit_up"
- },
- "energized=true,facing=up,powered=true": {
- "model": "hexcasting:block/impetus_storedplayer_lit_up"
- },
- "energized=true,facing=west,powered=false": {
- "model": "hexcasting:block/impetus_storedplayer_lit_west"
- },
- "energized=true,facing=west,powered=true": {
- "model": "hexcasting:block/impetus_storedplayer_lit_west"
- }
- }
-}
\ No newline at end of file
diff --git a/0.10.3/Common/src/generated/resources/assets/hexcasting/blockstates/scroll_paper.json b/0.10.3/Common/src/generated/resources/assets/hexcasting/blockstates/scroll_paper.json
deleted file mode 100644
index 2621fa1b..00000000
--- a/0.10.3/Common/src/generated/resources/assets/hexcasting/blockstates/scroll_paper.json
+++ /dev/null
@@ -1,7 +0,0 @@
-{
- "variants": {
- "": {
- "model": "hexcasting:block/scroll_paper"
- }
- }
-}
\ No newline at end of file
diff --git a/0.10.3/Common/src/generated/resources/assets/hexcasting/blockstates/scroll_paper_lantern.json b/0.10.3/Common/src/generated/resources/assets/hexcasting/blockstates/scroll_paper_lantern.json
deleted file mode 100644
index 328e1b46..00000000
--- a/0.10.3/Common/src/generated/resources/assets/hexcasting/blockstates/scroll_paper_lantern.json
+++ /dev/null
@@ -1,7 +0,0 @@
-{
- "variants": {
- "": {
- "model": "hexcasting:block/scroll_paper_lantern"
- }
- }
-}
\ No newline at end of file
diff --git a/0.10.3/Common/src/generated/resources/assets/hexcasting/blockstates/slate.json b/0.10.3/Common/src/generated/resources/assets/hexcasting/blockstates/slate.json
deleted file mode 100644
index 8d7a817c..00000000
--- a/0.10.3/Common/src/generated/resources/assets/hexcasting/blockstates/slate.json
+++ /dev/null
@@ -1,122 +0,0 @@
-{
- "variants": {
- "energized=false,face=ceiling,facing=east": {
- "model": "hexcasting:block/slate",
- "uvlock": true,
- "x": 180
- },
- "energized=false,face=ceiling,facing=north": {
- "model": "hexcasting:block/slate",
- "uvlock": true,
- "x": 180
- },
- "energized=false,face=ceiling,facing=south": {
- "model": "hexcasting:block/slate",
- "uvlock": true,
- "x": 180
- },
- "energized=false,face=ceiling,facing=west": {
- "model": "hexcasting:block/slate",
- "uvlock": true,
- "x": 180
- },
- "energized=false,face=floor,facing=east": {
- "model": "hexcasting:block/slate",
- "uvlock": true
- },
- "energized=false,face=floor,facing=north": {
- "model": "hexcasting:block/slate",
- "uvlock": true
- },
- "energized=false,face=floor,facing=south": {
- "model": "hexcasting:block/slate",
- "uvlock": true
- },
- "energized=false,face=floor,facing=west": {
- "model": "hexcasting:block/slate",
- "uvlock": true
- },
- "energized=false,face=wall,facing=east": {
- "model": "hexcasting:block/slate",
- "uvlock": true,
- "x": 90,
- "y": 90
- },
- "energized=false,face=wall,facing=north": {
- "model": "hexcasting:block/slate",
- "uvlock": true,
- "x": 90
- },
- "energized=false,face=wall,facing=south": {
- "model": "hexcasting:block/slate",
- "uvlock": true,
- "x": 90,
- "y": 180
- },
- "energized=false,face=wall,facing=west": {
- "model": "hexcasting:block/slate",
- "uvlock": true,
- "x": 90,
- "y": 270
- },
- "energized=true,face=ceiling,facing=east": {
- "model": "hexcasting:block/slate",
- "uvlock": true,
- "x": 180
- },
- "energized=true,face=ceiling,facing=north": {
- "model": "hexcasting:block/slate",
- "uvlock": true,
- "x": 180
- },
- "energized=true,face=ceiling,facing=south": {
- "model": "hexcasting:block/slate",
- "uvlock": true,
- "x": 180
- },
- "energized=true,face=ceiling,facing=west": {
- "model": "hexcasting:block/slate",
- "uvlock": true,
- "x": 180
- },
- "energized=true,face=floor,facing=east": {
- "model": "hexcasting:block/slate",
- "uvlock": true
- },
- "energized=true,face=floor,facing=north": {
- "model": "hexcasting:block/slate",
- "uvlock": true
- },
- "energized=true,face=floor,facing=south": {
- "model": "hexcasting:block/slate",
- "uvlock": true
- },
- "energized=true,face=floor,facing=west": {
- "model": "hexcasting:block/slate",
- "uvlock": true
- },
- "energized=true,face=wall,facing=east": {
- "model": "hexcasting:block/slate",
- "uvlock": true,
- "x": 90,
- "y": 90
- },
- "energized=true,face=wall,facing=north": {
- "model": "hexcasting:block/slate",
- "uvlock": true,
- "x": 90
- },
- "energized=true,face=wall,facing=south": {
- "model": "hexcasting:block/slate",
- "uvlock": true,
- "x": 90,
- "y": 180
- },
- "energized=true,face=wall,facing=west": {
- "model": "hexcasting:block/slate",
- "uvlock": true,
- "x": 90,
- "y": 270
- }
- }
-}
\ No newline at end of file
diff --git a/0.10.3/Common/src/generated/resources/assets/hexcasting/blockstates/slate_block.json b/0.10.3/Common/src/generated/resources/assets/hexcasting/blockstates/slate_block.json
deleted file mode 100644
index 35169aaa..00000000
--- a/0.10.3/Common/src/generated/resources/assets/hexcasting/blockstates/slate_block.json
+++ /dev/null
@@ -1,7 +0,0 @@
-{
- "variants": {
- "": {
- "model": "hexcasting:block/slate_block"
- }
- }
-}
\ No newline at end of file
diff --git a/0.10.3/Common/src/generated/resources/assets/hexcasting/blockstates/stripped_edified_log.json b/0.10.3/Common/src/generated/resources/assets/hexcasting/blockstates/stripped_edified_log.json
deleted file mode 100644
index cb09f012..00000000
--- a/0.10.3/Common/src/generated/resources/assets/hexcasting/blockstates/stripped_edified_log.json
+++ /dev/null
@@ -1,16 +0,0 @@
-{
- "variants": {
- "axis=x": {
- "model": "hexcasting:block/stripped_edified_log_horizontal",
- "x": 90,
- "y": 90
- },
- "axis=y": {
- "model": "hexcasting:block/stripped_edified_log"
- },
- "axis=z": {
- "model": "hexcasting:block/stripped_edified_log_horizontal",
- "x": 90
- }
- }
-}
\ No newline at end of file
diff --git a/0.10.3/Common/src/generated/resources/assets/hexcasting/blockstates/stripped_edified_wood.json b/0.10.3/Common/src/generated/resources/assets/hexcasting/blockstates/stripped_edified_wood.json
deleted file mode 100644
index b6b89e3f..00000000
--- a/0.10.3/Common/src/generated/resources/assets/hexcasting/blockstates/stripped_edified_wood.json
+++ /dev/null
@@ -1,16 +0,0 @@
-{
- "variants": {
- "axis=x": {
- "model": "hexcasting:block/stripped_edified_wood_horizontal",
- "x": 90,
- "y": 90
- },
- "axis=y": {
- "model": "hexcasting:block/stripped_edified_wood"
- },
- "axis=z": {
- "model": "hexcasting:block/stripped_edified_wood_horizontal",
- "x": 90
- }
- }
-}
\ No newline at end of file
diff --git a/0.10.3/Common/src/generated/resources/assets/hexcasting/models/block/akashic_bookshelf.json b/0.10.3/Common/src/generated/resources/assets/hexcasting/models/block/akashic_bookshelf.json
deleted file mode 100644
index dfd9013c..00000000
--- a/0.10.3/Common/src/generated/resources/assets/hexcasting/models/block/akashic_bookshelf.json
+++ /dev/null
@@ -1,68 +0,0 @@
-{
- "elements": [
- {
- "faces": {
- "down": {
- "cullface": "down",
- "texture": "#top_bottom"
- },
- "east": {
- "cullface": "east",
- "texture": "#side"
- },
- "north": {
- "cullface": "north",
- "texture": "#front"
- },
- "south": {
- "cullface": "south",
- "texture": "#side"
- },
- "up": {
- "cullface": "up",
- "texture": "#top_bottom"
- },
- "west": {
- "cullface": "west",
- "texture": "#side"
- }
- },
- "from": [
- 0,
- 0,
- 0
- ],
- "to": [
- 16,
- 16,
- 16
- ]
- },
- {
- "faces": {
- "north": {
- "cullface": "north",
- "texture": "#overlay",
- "tintindex": 0
- }
- },
- "from": [
- 0,
- 0,
- 0
- ],
- "to": [
- 16,
- 16,
- 16
- ]
- }
- ],
- "render_type": "minecraft:cutout",
- "textures": {
- "front": "hexcasting:block/akashic_bookshelf",
- "particle": "hexcasting:block/akashic_bookshelf_vert",
- "side": "hexcasting:block/akashic_bookshelf_horiz",
- "top_bottom": "hexcasting:block/akashic_bookshelf_vert"
- }
-}
diff --git a/0.10.3/Common/src/generated/resources/assets/hexcasting/models/block/akashic_bookshelf_1.json b/0.10.3/Common/src/generated/resources/assets/hexcasting/models/block/akashic_bookshelf_1.json
deleted file mode 100644
index 2402c6c5..00000000
--- a/0.10.3/Common/src/generated/resources/assets/hexcasting/models/block/akashic_bookshelf_1.json
+++ /dev/null
@@ -1,6 +0,0 @@
-{
- "parent": "hexcasting:block/akashic_bookshelf",
- "textures": {
- "overlay": "hexcasting:block/akashic_bookshelf_overlay_1"
- }
-}
\ No newline at end of file
diff --git a/0.10.3/Common/src/generated/resources/assets/hexcasting/models/block/akashic_bookshelf_2.json b/0.10.3/Common/src/generated/resources/assets/hexcasting/models/block/akashic_bookshelf_2.json
deleted file mode 100644
index 4846d3c2..00000000
--- a/0.10.3/Common/src/generated/resources/assets/hexcasting/models/block/akashic_bookshelf_2.json
+++ /dev/null
@@ -1,6 +0,0 @@
-{
- "parent": "hexcasting:block/akashic_bookshelf",
- "textures": {
- "overlay": "hexcasting:block/akashic_bookshelf_overlay_2"
- }
-}
\ No newline at end of file
diff --git a/0.10.3/Common/src/generated/resources/assets/hexcasting/models/block/akashic_bookshelf_3.json b/0.10.3/Common/src/generated/resources/assets/hexcasting/models/block/akashic_bookshelf_3.json
deleted file mode 100644
index 9352317b..00000000
--- a/0.10.3/Common/src/generated/resources/assets/hexcasting/models/block/akashic_bookshelf_3.json
+++ /dev/null
@@ -1,6 +0,0 @@
-{
- "parent": "hexcasting:block/akashic_bookshelf",
- "textures": {
- "overlay": "hexcasting:block/akashic_bookshelf_overlay_3"
- }
-}
\ No newline at end of file
diff --git a/0.10.3/Common/src/generated/resources/assets/hexcasting/models/block/akashic_bookshelf_4.json b/0.10.3/Common/src/generated/resources/assets/hexcasting/models/block/akashic_bookshelf_4.json
deleted file mode 100644
index 4f98ee65..00000000
--- a/0.10.3/Common/src/generated/resources/assets/hexcasting/models/block/akashic_bookshelf_4.json
+++ /dev/null
@@ -1,6 +0,0 @@
-{
- "parent": "hexcasting:block/akashic_bookshelf",
- "textures": {
- "overlay": "hexcasting:block/akashic_bookshelf_overlay_4"
- }
-}
\ No newline at end of file
diff --git a/0.10.3/Common/src/generated/resources/assets/hexcasting/models/block/akashic_bookshelf_empty.json b/0.10.3/Common/src/generated/resources/assets/hexcasting/models/block/akashic_bookshelf_empty.json
deleted file mode 100644
index 9b788e5d..00000000
--- a/0.10.3/Common/src/generated/resources/assets/hexcasting/models/block/akashic_bookshelf_empty.json
+++ /dev/null
@@ -1,8 +0,0 @@
-{
- "parent": "minecraft:block/orientable",
- "textures": {
- "front": "hexcasting:block/akashic_bookshelf",
- "side": "hexcasting:block/akashic_bookshelf_horiz",
- "top": "hexcasting:block/akashic_bookshelf_vert"
- }
-}
\ No newline at end of file
diff --git a/0.10.3/Common/src/generated/resources/assets/hexcasting/models/block/akashic_ligature.json b/0.10.3/Common/src/generated/resources/assets/hexcasting/models/block/akashic_ligature.json
deleted file mode 100644
index 72a32c3a..00000000
--- a/0.10.3/Common/src/generated/resources/assets/hexcasting/models/block/akashic_ligature.json
+++ /dev/null
@@ -1,6 +0,0 @@
-{
- "parent": "minecraft:block/cube_all",
- "textures": {
- "all": "hexcasting:block/akashic_ligature"
- }
-}
\ No newline at end of file
diff --git a/0.10.3/Common/src/generated/resources/assets/hexcasting/models/block/akashic_record.json b/0.10.3/Common/src/generated/resources/assets/hexcasting/models/block/akashic_record.json
deleted file mode 100644
index 099f9920..00000000
--- a/0.10.3/Common/src/generated/resources/assets/hexcasting/models/block/akashic_record.json
+++ /dev/null
@@ -1,87 +0,0 @@
-{
- "parent": "minecraft:block/block",
- "elements": [
- {
- "faces": {
- "down": {
- "cullface": "down",
- "texture": "#outer"
- },
- "east": {
- "cullface": "east",
- "texture": "#outer"
- },
- "north": {
- "cullface": "north",
- "texture": "#outer"
- },
- "south": {
- "cullface": "south",
- "texture": "#outer"
- },
- "up": {
- "cullface": "up",
- "texture": "#outer"
- },
- "west": {
- "cullface": "west",
- "texture": "#outer"
- }
- },
- "from": [
- 0,
- 0,
- 0
- ],
- "to": [
- 16,
- 16,
- 16
- ]
- },
- {
- "faces": {
- "down": {
- "rotation": 180,
- "texture": "#inner"
- },
- "east": {
- "rotation": 180,
- "texture": "#inner"
- },
- "north": {
- "rotation": 180,
- "texture": "#inner"
- },
- "south": {
- "rotation": 180,
- "texture": "#inner"
- },
- "up": {
- "rotation": 180,
- "texture": "#inner"
- },
- "west": {
- "rotation": 180,
- "texture": "#inner"
- }
- },
- "from": [
- 15.75,
- 15.75,
- 15.75
- ],
- "to": [
- 0.25,
- 0.25,
- 0.25
- ]
- }
- ],
- "render_type": "minecraft:translucent",
- "textures": {
- "inner": "hexcasting:block/akashic_ligature",
- "outer": "hexcasting:block/akashic_record",
- "particle": "hexcasting:block/akashic_ligature"
- }
-}
diff --git a/0.10.3/Common/src/generated/resources/assets/hexcasting/models/block/amethyst_dust_block.json b/0.10.3/Common/src/generated/resources/assets/hexcasting/models/block/amethyst_dust_block.json
deleted file mode 100644
index 8fa450ab..00000000
--- a/0.10.3/Common/src/generated/resources/assets/hexcasting/models/block/amethyst_dust_block.json
+++ /dev/null
@@ -1,6 +0,0 @@
-{
- "parent": "hexcasting:block/cube_half_mirrored",
- "textures": {
- "all": "hexcasting:block/amethyst_dust_block"
- }
-}
\ No newline at end of file
diff --git a/0.10.3/Common/src/generated/resources/assets/hexcasting/models/block/amethyst_edified_leaves.json b/0.10.3/Common/src/generated/resources/assets/hexcasting/models/block/amethyst_edified_leaves.json
deleted file mode 100644
index 1430430c..00000000
--- a/0.10.3/Common/src/generated/resources/assets/hexcasting/models/block/amethyst_edified_leaves.json
+++ /dev/null
@@ -1,7 +0,0 @@
-{
- "parent": "minecraft:block/leaves",
- "render_type": "minecraft:cutout_mipped",
- "textures": {
- "all": "hexcasting:block/amethyst_edified_leaves"
- }
-}
diff --git a/0.10.3/Common/src/generated/resources/assets/hexcasting/models/block/amethyst_tiles.json b/0.10.3/Common/src/generated/resources/assets/hexcasting/models/block/amethyst_tiles.json
deleted file mode 100644
index 9870b725..00000000
--- a/0.10.3/Common/src/generated/resources/assets/hexcasting/models/block/amethyst_tiles.json
+++ /dev/null
@@ -1,6 +0,0 @@
-{
- "parent": "minecraft:block/cube_all",
- "textures": {
- "all": "hexcasting:block/amethyst_tiles"
- }
-}
\ No newline at end of file
diff --git a/0.10.3/Common/src/generated/resources/assets/hexcasting/models/block/ancient_scroll_paper.json b/0.10.3/Common/src/generated/resources/assets/hexcasting/models/block/ancient_scroll_paper.json
deleted file mode 100644
index 5b5b77bb..00000000
--- a/0.10.3/Common/src/generated/resources/assets/hexcasting/models/block/ancient_scroll_paper.json
+++ /dev/null
@@ -1,6 +0,0 @@
-{
- "parent": "minecraft:block/cube_all",
- "textures": {
- "all": "hexcasting:block/ancient_scroll_paper"
- }
-}
\ No newline at end of file
diff --git a/0.10.3/Common/src/generated/resources/assets/hexcasting/models/block/ancient_scroll_paper_lantern.json b/0.10.3/Common/src/generated/resources/assets/hexcasting/models/block/ancient_scroll_paper_lantern.json
deleted file mode 100644
index 19fc5366..00000000
--- a/0.10.3/Common/src/generated/resources/assets/hexcasting/models/block/ancient_scroll_paper_lantern.json
+++ /dev/null
@@ -1,8 +0,0 @@
-{
- "parent": "minecraft:block/cube_bottom_top",
- "textures": {
- "bottom": "hexcasting:block/ancient_scroll_paper_lantern_bottom",
- "side": "hexcasting:block/ancient_scroll_paper_lantern_side",
- "top": "hexcasting:block/ancient_scroll_paper_lantern_top"
- }
-}
\ No newline at end of file
diff --git a/0.10.3/Common/src/generated/resources/assets/hexcasting/models/block/aventurine_edified_leaves.json b/0.10.3/Common/src/generated/resources/assets/hexcasting/models/block/aventurine_edified_leaves.json
deleted file mode 100644
index 96c1a5ee..00000000
--- a/0.10.3/Common/src/generated/resources/assets/hexcasting/models/block/aventurine_edified_leaves.json
+++ /dev/null
@@ -1,7 +0,0 @@
-{
- "parent": "minecraft:block/leaves",
- "render_type": "minecraft:cutout_mipped",
- "textures": {
- "all": "hexcasting:block/aventurine_edified_leaves"
- }
-}
diff --git a/0.10.3/Common/src/generated/resources/assets/hexcasting/models/block/citrine_edified_leaves.json b/0.10.3/Common/src/generated/resources/assets/hexcasting/models/block/citrine_edified_leaves.json
deleted file mode 100644
index 37ff29d3..00000000
--- a/0.10.3/Common/src/generated/resources/assets/hexcasting/models/block/citrine_edified_leaves.json
+++ /dev/null
@@ -1,7 +0,0 @@
-{
- "parent": "minecraft:block/leaves",
- "render_type": "minecraft:cutout_mipped",
- "textures": {
- "all": "hexcasting:block/citrine_edified_leaves"
- }
-}
diff --git a/0.10.3/Common/src/generated/resources/assets/hexcasting/models/block/conjured.json b/0.10.3/Common/src/generated/resources/assets/hexcasting/models/block/conjured.json
deleted file mode 100644
index 1844be1d..00000000
--- a/0.10.3/Common/src/generated/resources/assets/hexcasting/models/block/conjured.json
+++ /dev/null
@@ -1,6 +0,0 @@
-{
- "render_type": "minecraft:cutout",
- "textures": {
- "particle": "minecraft:block/amethyst_block"
- }
-}
diff --git a/0.10.3/Common/src/generated/resources/assets/hexcasting/models/block/edified_button.json b/0.10.3/Common/src/generated/resources/assets/hexcasting/models/block/edified_button.json
deleted file mode 100644
index 1c75ef18..00000000
--- a/0.10.3/Common/src/generated/resources/assets/hexcasting/models/block/edified_button.json
+++ /dev/null
@@ -1,6 +0,0 @@
-{
- "parent": "minecraft:block/button",
- "textures": {
- "texture": "hexcasting:block/edified_planks"
- }
-}
\ No newline at end of file
diff --git a/0.10.3/Common/src/generated/resources/assets/hexcasting/models/block/edified_button_pressed.json b/0.10.3/Common/src/generated/resources/assets/hexcasting/models/block/edified_button_pressed.json
deleted file mode 100644
index a026dba7..00000000
--- a/0.10.3/Common/src/generated/resources/assets/hexcasting/models/block/edified_button_pressed.json
+++ /dev/null
@@ -1,6 +0,0 @@
-{
- "parent": "minecraft:block/button_pressed",
- "textures": {
- "texture": "hexcasting:block/edified_planks"
- }
-}
\ No newline at end of file
diff --git a/0.10.3/Common/src/generated/resources/assets/hexcasting/models/block/edified_door_bottom_left.json b/0.10.3/Common/src/generated/resources/assets/hexcasting/models/block/edified_door_bottom_left.json
deleted file mode 100644
index 13c75114..00000000
--- a/0.10.3/Common/src/generated/resources/assets/hexcasting/models/block/edified_door_bottom_left.json
+++ /dev/null
@@ -1,8 +0,0 @@
-{
- "parent": "minecraft:block/door_bottom_left",
- "render_type": "minecraft:cutout",
- "textures": {
- "bottom": "hexcasting:block/edified_door_lower",
- "top": "hexcasting:block/edified_door_upper"
- }
-}
diff --git a/0.10.3/Common/src/generated/resources/assets/hexcasting/models/block/edified_door_bottom_left_open.json b/0.10.3/Common/src/generated/resources/assets/hexcasting/models/block/edified_door_bottom_left_open.json
deleted file mode 100644
index 3c6b57c8..00000000
--- a/0.10.3/Common/src/generated/resources/assets/hexcasting/models/block/edified_door_bottom_left_open.json
+++ /dev/null
@@ -1,8 +0,0 @@
-{
- "parent": "minecraft:block/door_bottom_left_open",
- "render_type": "minecraft:cutout",
- "textures": {
- "bottom": "hexcasting:block/edified_door_lower",
- "top": "hexcasting:block/edified_door_upper"
- }
-}
diff --git a/0.10.3/Common/src/generated/resources/assets/hexcasting/models/block/edified_door_bottom_right.json b/0.10.3/Common/src/generated/resources/assets/hexcasting/models/block/edified_door_bottom_right.json
deleted file mode 100644
index a1a3a08e..00000000
--- a/0.10.3/Common/src/generated/resources/assets/hexcasting/models/block/edified_door_bottom_right.json
+++ /dev/null
@@ -1,8 +0,0 @@
-{
- "parent": "minecraft:block/door_bottom_right",
- "render_type": "minecraft:cutout",
- "textures": {
- "bottom": "hexcasting:block/edified_door_lower",
- "top": "hexcasting:block/edified_door_upper"
- }
-}
diff --git a/0.10.3/Common/src/generated/resources/assets/hexcasting/models/block/edified_door_bottom_right_open.json b/0.10.3/Common/src/generated/resources/assets/hexcasting/models/block/edified_door_bottom_right_open.json
deleted file mode 100644
index 41c7bbc9..00000000
--- a/0.10.3/Common/src/generated/resources/assets/hexcasting/models/block/edified_door_bottom_right_open.json
+++ /dev/null
@@ -1,8 +0,0 @@
-{
- "parent": "minecraft:block/door_bottom_right_open",
- "render_type": "minecraft:cutout",
- "textures": {
- "bottom": "hexcasting:block/edified_door_lower",
- "top": "hexcasting:block/edified_door_upper"
- }
-}
diff --git a/0.10.3/Common/src/generated/resources/assets/hexcasting/models/block/edified_door_top_left.json b/0.10.3/Common/src/generated/resources/assets/hexcasting/models/block/edified_door_top_left.json
deleted file mode 100644
index b135ece5..00000000
--- a/0.10.3/Common/src/generated/resources/assets/hexcasting/models/block/edified_door_top_left.json
+++ /dev/null
@@ -1,8 +0,0 @@
-{
- "parent": "minecraft:block/door_top_left",
- "render_type": "minecraft:cutout",
- "textures": {
- "bottom": "hexcasting:block/edified_door_lower",
- "top": "hexcasting:block/edified_door_upper"
- }
-}
diff --git a/0.10.3/Common/src/generated/resources/assets/hexcasting/models/block/edified_door_top_left_open.json b/0.10.3/Common/src/generated/resources/assets/hexcasting/models/block/edified_door_top_left_open.json
deleted file mode 100644
index 7d8ba1df..00000000
--- a/0.10.3/Common/src/generated/resources/assets/hexcasting/models/block/edified_door_top_left_open.json
+++ /dev/null
@@ -1,8 +0,0 @@
-{
- "parent": "minecraft:block/door_top_left_open",
- "render_type": "minecraft:cutout",
- "textures": {
- "bottom": "hexcasting:block/edified_door_lower",
- "top": "hexcasting:block/edified_door_upper"
- }
-}
diff --git a/0.10.3/Common/src/generated/resources/assets/hexcasting/models/block/edified_door_top_right.json b/0.10.3/Common/src/generated/resources/assets/hexcasting/models/block/edified_door_top_right.json
deleted file mode 100644
index 16401105..00000000
--- a/0.10.3/Common/src/generated/resources/assets/hexcasting/models/block/edified_door_top_right.json
+++ /dev/null
@@ -1,8 +0,0 @@
-{
- "parent": "minecraft:block/door_top_right",
- "render_type": "minecraft:cutout",
- "textures": {
- "bottom": "hexcasting:block/edified_door_lower",
- "top": "hexcasting:block/edified_door_upper"
- }
-}
diff --git a/0.10.3/Common/src/generated/resources/assets/hexcasting/models/block/edified_door_top_right_open.json b/0.10.3/Common/src/generated/resources/assets/hexcasting/models/block/edified_door_top_right_open.json
deleted file mode 100644
index c60867c2..00000000
--- a/0.10.3/Common/src/generated/resources/assets/hexcasting/models/block/edified_door_top_right_open.json
+++ /dev/null
@@ -1,8 +0,0 @@
-{
- "parent": "minecraft:block/door_top_right_open",
- "render_type": "minecraft:cutout",
- "textures": {
- "bottom": "hexcasting:block/edified_door_lower",
- "top": "hexcasting:block/edified_door_upper"
- }
-}
diff --git a/0.10.3/Common/src/generated/resources/assets/hexcasting/models/block/edified_log.json b/0.10.3/Common/src/generated/resources/assets/hexcasting/models/block/edified_log.json
deleted file mode 100644
index 9ba1530b..00000000
--- a/0.10.3/Common/src/generated/resources/assets/hexcasting/models/block/edified_log.json
+++ /dev/null
@@ -1,7 +0,0 @@
-{
- "parent": "minecraft:block/cube_column",
- "textures": {
- "end": "hexcasting:block/edified_log_top",
- "side": "hexcasting:block/edified_log"
- }
-}
\ No newline at end of file
diff --git a/0.10.3/Common/src/generated/resources/assets/hexcasting/models/block/edified_log_horizontal.json b/0.10.3/Common/src/generated/resources/assets/hexcasting/models/block/edified_log_horizontal.json
deleted file mode 100644
index 84e434e7..00000000
--- a/0.10.3/Common/src/generated/resources/assets/hexcasting/models/block/edified_log_horizontal.json
+++ /dev/null
@@ -1,7 +0,0 @@
-{
- "parent": "minecraft:block/cube_column_horizontal",
- "textures": {
- "end": "hexcasting:block/edified_log_top",
- "side": "hexcasting:block/edified_log"
- }
-}
\ No newline at end of file
diff --git a/0.10.3/Common/src/generated/resources/assets/hexcasting/models/block/edified_panel.json b/0.10.3/Common/src/generated/resources/assets/hexcasting/models/block/edified_panel.json
deleted file mode 100644
index 3d790f2a..00000000
--- a/0.10.3/Common/src/generated/resources/assets/hexcasting/models/block/edified_panel.json
+++ /dev/null
@@ -1,6 +0,0 @@
-{
- "parent": "minecraft:block/cube_all",
- "textures": {
- "all": "hexcasting:block/edified_panel"
- }
-}
\ No newline at end of file
diff --git a/0.10.3/Common/src/generated/resources/assets/hexcasting/models/block/edified_planks.json b/0.10.3/Common/src/generated/resources/assets/hexcasting/models/block/edified_planks.json
deleted file mode 100644
index a7223010..00000000
--- a/0.10.3/Common/src/generated/resources/assets/hexcasting/models/block/edified_planks.json
+++ /dev/null
@@ -1,6 +0,0 @@
-{
- "parent": "minecraft:block/cube_all",
- "textures": {
- "all": "hexcasting:block/edified_planks"
- }
-}
\ No newline at end of file
diff --git a/0.10.3/Common/src/generated/resources/assets/hexcasting/models/block/edified_planks_2.json b/0.10.3/Common/src/generated/resources/assets/hexcasting/models/block/edified_planks_2.json
deleted file mode 100644
index d0c4c583..00000000
--- a/0.10.3/Common/src/generated/resources/assets/hexcasting/models/block/edified_planks_2.json
+++ /dev/null
@@ -1,6 +0,0 @@
-{
- "parent": "minecraft:block/cube_all",
- "textures": {
- "all": "hexcasting:block/edified_planks_2"
- }
-}
\ No newline at end of file
diff --git a/0.10.3/Common/src/generated/resources/assets/hexcasting/models/block/edified_planks_3.json b/0.10.3/Common/src/generated/resources/assets/hexcasting/models/block/edified_planks_3.json
deleted file mode 100644
index bad8e6ac..00000000
--- a/0.10.3/Common/src/generated/resources/assets/hexcasting/models/block/edified_planks_3.json
+++ /dev/null
@@ -1,6 +0,0 @@
-{
- "parent": "minecraft:block/cube_all",
- "textures": {
- "all": "hexcasting:block/edified_planks_3"
- }
-}
\ No newline at end of file
diff --git a/0.10.3/Common/src/generated/resources/assets/hexcasting/models/block/edified_pressure_plate.json b/0.10.3/Common/src/generated/resources/assets/hexcasting/models/block/edified_pressure_plate.json
deleted file mode 100644
index 5a1b2b57..00000000
--- a/0.10.3/Common/src/generated/resources/assets/hexcasting/models/block/edified_pressure_plate.json
+++ /dev/null
@@ -1,6 +0,0 @@
-{
- "parent": "minecraft:block/pressure_plate_up",
- "textures": {
- "texture": "hexcasting:block/edified_planks"
- }
-}
\ No newline at end of file
diff --git a/0.10.3/Common/src/generated/resources/assets/hexcasting/models/block/edified_pressure_plate_down.json b/0.10.3/Common/src/generated/resources/assets/hexcasting/models/block/edified_pressure_plate_down.json
deleted file mode 100644
index eeaa3646..00000000
--- a/0.10.3/Common/src/generated/resources/assets/hexcasting/models/block/edified_pressure_plate_down.json
+++ /dev/null
@@ -1,6 +0,0 @@
-{
- "parent": "minecraft:block/pressure_plate_down",
- "textures": {
- "texture": "hexcasting:block/edified_planks"
- }
-}
\ No newline at end of file
diff --git a/0.10.3/Common/src/generated/resources/assets/hexcasting/models/block/edified_slab.json b/0.10.3/Common/src/generated/resources/assets/hexcasting/models/block/edified_slab.json
deleted file mode 100644
index 09d601ec..00000000
--- a/0.10.3/Common/src/generated/resources/assets/hexcasting/models/block/edified_slab.json
+++ /dev/null
@@ -1,8 +0,0 @@
-{
- "parent": "minecraft:block/slab",
- "textures": {
- "bottom": "hexcasting:block/edified_planks",
- "side": "hexcasting:block/edified_planks",
- "top": "hexcasting:block/edified_planks"
- }
-}
\ No newline at end of file
diff --git a/0.10.3/Common/src/generated/resources/assets/hexcasting/models/block/edified_slab_top.json b/0.10.3/Common/src/generated/resources/assets/hexcasting/models/block/edified_slab_top.json
deleted file mode 100644
index f4d2fcf9..00000000
--- a/0.10.3/Common/src/generated/resources/assets/hexcasting/models/block/edified_slab_top.json
+++ /dev/null
@@ -1,8 +0,0 @@
-{
- "parent": "minecraft:block/slab_top",
- "textures": {
- "bottom": "hexcasting:block/edified_planks",
- "side": "hexcasting:block/edified_planks",
- "top": "hexcasting:block/edified_planks"
- }
-}
\ No newline at end of file
diff --git a/0.10.3/Common/src/generated/resources/assets/hexcasting/models/block/edified_stairs.json b/0.10.3/Common/src/generated/resources/assets/hexcasting/models/block/edified_stairs.json
deleted file mode 100644
index 6e9ae9aa..00000000
--- a/0.10.3/Common/src/generated/resources/assets/hexcasting/models/block/edified_stairs.json
+++ /dev/null
@@ -1,8 +0,0 @@
-{
- "parent": "minecraft:block/stairs",
- "textures": {
- "bottom": "hexcasting:block/edified_planks",
- "side": "hexcasting:block/edified_planks",
- "top": "hexcasting:block/edified_planks"
- }
-}
\ No newline at end of file
diff --git a/0.10.3/Common/src/generated/resources/assets/hexcasting/models/block/edified_stairs_inner.json b/0.10.3/Common/src/generated/resources/assets/hexcasting/models/block/edified_stairs_inner.json
deleted file mode 100644
index 7597f2c8..00000000
--- a/0.10.3/Common/src/generated/resources/assets/hexcasting/models/block/edified_stairs_inner.json
+++ /dev/null
@@ -1,8 +0,0 @@
-{
- "parent": "minecraft:block/inner_stairs",
- "textures": {
- "bottom": "hexcasting:block/edified_planks",
- "side": "hexcasting:block/edified_planks",
- "top": "hexcasting:block/edified_planks"
- }
-}
\ No newline at end of file
diff --git a/0.10.3/Common/src/generated/resources/assets/hexcasting/models/block/edified_stairs_outer.json b/0.10.3/Common/src/generated/resources/assets/hexcasting/models/block/edified_stairs_outer.json
deleted file mode 100644
index 62d7ab50..00000000
--- a/0.10.3/Common/src/generated/resources/assets/hexcasting/models/block/edified_stairs_outer.json
+++ /dev/null
@@ -1,8 +0,0 @@
-{
- "parent": "minecraft:block/outer_stairs",
- "textures": {
- "bottom": "hexcasting:block/edified_planks",
- "side": "hexcasting:block/edified_planks",
- "top": "hexcasting:block/edified_planks"
- }
-}
\ No newline at end of file
diff --git a/0.10.3/Common/src/generated/resources/assets/hexcasting/models/block/edified_tile.json b/0.10.3/Common/src/generated/resources/assets/hexcasting/models/block/edified_tile.json
deleted file mode 100644
index 595adf00..00000000
--- a/0.10.3/Common/src/generated/resources/assets/hexcasting/models/block/edified_tile.json
+++ /dev/null
@@ -1,6 +0,0 @@
-{
- "parent": "minecraft:block/cube_all",
- "textures": {
- "all": "hexcasting:block/edified_tile"
- }
-}
\ No newline at end of file
diff --git a/0.10.3/Common/src/generated/resources/assets/hexcasting/models/block/edified_trapdoor_bottom.json b/0.10.3/Common/src/generated/resources/assets/hexcasting/models/block/edified_trapdoor_bottom.json
deleted file mode 100644
index 67b61c83..00000000
--- a/0.10.3/Common/src/generated/resources/assets/hexcasting/models/block/edified_trapdoor_bottom.json
+++ /dev/null
@@ -1,7 +0,0 @@
-{
- "parent": "minecraft:block/template_orientable_trapdoor_bottom",
- "render_type": "minecraft:cutout",
- "textures": {
- "texture": "hexcasting:block/edified_trapdoor"
- }
-}
diff --git a/0.10.3/Common/src/generated/resources/assets/hexcasting/models/block/edified_trapdoor_open.json b/0.10.3/Common/src/generated/resources/assets/hexcasting/models/block/edified_trapdoor_open.json
deleted file mode 100644
index 03b0a364..00000000
--- a/0.10.3/Common/src/generated/resources/assets/hexcasting/models/block/edified_trapdoor_open.json
+++ /dev/null
@@ -1,7 +0,0 @@
-{
- "parent": "minecraft:block/template_orientable_trapdoor_open",
- "render_type": "minecraft:cutout",
- "textures": {
- "texture": "hexcasting:block/edified_trapdoor"
- }
-}
diff --git a/0.10.3/Common/src/generated/resources/assets/hexcasting/models/block/edified_trapdoor_top.json b/0.10.3/Common/src/generated/resources/assets/hexcasting/models/block/edified_trapdoor_top.json
deleted file mode 100644
index bb9768cc..00000000
--- a/0.10.3/Common/src/generated/resources/assets/hexcasting/models/block/edified_trapdoor_top.json
+++ /dev/null
@@ -1,7 +0,0 @@
-{
- "parent": "minecraft:block/template_orientable_trapdoor_top",
- "render_type": "minecraft:cutout",
- "textures": {
- "texture": "hexcasting:block/edified_trapdoor"
- }
-}
diff --git a/0.10.3/Common/src/generated/resources/assets/hexcasting/models/block/edified_wood.json b/0.10.3/Common/src/generated/resources/assets/hexcasting/models/block/edified_wood.json
deleted file mode 100644
index 22851df0..00000000
--- a/0.10.3/Common/src/generated/resources/assets/hexcasting/models/block/edified_wood.json
+++ /dev/null
@@ -1,7 +0,0 @@
-{
- "parent": "minecraft:block/cube_column",
- "textures": {
- "end": "hexcasting:block/edified_log",
- "side": "hexcasting:block/edified_log"
- }
-}
\ No newline at end of file
diff --git a/0.10.3/Common/src/generated/resources/assets/hexcasting/models/block/edified_wood_horizontal.json b/0.10.3/Common/src/generated/resources/assets/hexcasting/models/block/edified_wood_horizontal.json
deleted file mode 100644
index 72149b4b..00000000
--- a/0.10.3/Common/src/generated/resources/assets/hexcasting/models/block/edified_wood_horizontal.json
+++ /dev/null
@@ -1,7 +0,0 @@
-{
- "parent": "minecraft:block/cube_column_horizontal",
- "textures": {
- "end": "hexcasting:block/edified_log",
- "side": "hexcasting:block/edified_log"
- }
-}
\ No newline at end of file
diff --git a/0.10.3/Common/src/generated/resources/assets/hexcasting/models/block/empty_directrix_dim_x.json b/0.10.3/Common/src/generated/resources/assets/hexcasting/models/block/empty_directrix_dim_x.json
deleted file mode 100644
index 72a80fba..00000000
--- a/0.10.3/Common/src/generated/resources/assets/hexcasting/models/block/empty_directrix_dim_x.json
+++ /dev/null
@@ -1,12 +0,0 @@
-{
- "parent": "minecraft:block/cube",
- "textures": {
- "down": "hexcasting:block/directrix/empty/horiz_dim",
- "east": "hexcasting:block/directrix/empty/end_dim",
- "north": "hexcasting:block/directrix/empty/horiz_dim",
- "particle": "hexcasting:block/slate",
- "south": "hexcasting:block/directrix/empty/horiz_dim",
- "up": "hexcasting:block/directrix/empty/horiz_dim",
- "west": "hexcasting:block/directrix/empty/end_dim"
- }
-}
\ No newline at end of file
diff --git a/0.10.3/Common/src/generated/resources/assets/hexcasting/models/block/empty_directrix_dim_y.json b/0.10.3/Common/src/generated/resources/assets/hexcasting/models/block/empty_directrix_dim_y.json
deleted file mode 100644
index 5cacc914..00000000
--- a/0.10.3/Common/src/generated/resources/assets/hexcasting/models/block/empty_directrix_dim_y.json
+++ /dev/null
@@ -1,12 +0,0 @@
-{
- "parent": "minecraft:block/cube",
- "textures": {
- "down": "hexcasting:block/directrix/empty/end_dim",
- "east": "hexcasting:block/directrix/empty/vert_dim",
- "north": "hexcasting:block/directrix/empty/vert_dim",
- "particle": "hexcasting:block/slate",
- "south": "hexcasting:block/directrix/empty/vert_dim",
- "up": "hexcasting:block/directrix/empty/end_dim",
- "west": "hexcasting:block/directrix/empty/vert_dim"
- }
-}
\ No newline at end of file
diff --git a/0.10.3/Common/src/generated/resources/assets/hexcasting/models/block/empty_directrix_dim_z.json b/0.10.3/Common/src/generated/resources/assets/hexcasting/models/block/empty_directrix_dim_z.json
deleted file mode 100644
index ecda201c..00000000
--- a/0.10.3/Common/src/generated/resources/assets/hexcasting/models/block/empty_directrix_dim_z.json
+++ /dev/null
@@ -1,12 +0,0 @@
-{
- "parent": "minecraft:block/cube",
- "textures": {
- "down": "hexcasting:block/directrix/empty/vert_dim",
- "east": "hexcasting:block/directrix/empty/horiz_dim",
- "north": "hexcasting:block/directrix/empty/end_dim",
- "particle": "hexcasting:block/slate",
- "south": "hexcasting:block/directrix/empty/end_dim",
- "up": "hexcasting:block/directrix/empty/vert_dim",
- "west": "hexcasting:block/directrix/empty/horiz_dim"
- }
-}
\ No newline at end of file
diff --git a/0.10.3/Common/src/generated/resources/assets/hexcasting/models/block/empty_directrix_lit_x.json b/0.10.3/Common/src/generated/resources/assets/hexcasting/models/block/empty_directrix_lit_x.json
deleted file mode 100644
index 84db6d31..00000000
--- a/0.10.3/Common/src/generated/resources/assets/hexcasting/models/block/empty_directrix_lit_x.json
+++ /dev/null
@@ -1,12 +0,0 @@
-{
- "parent": "minecraft:block/cube",
- "textures": {
- "down": "hexcasting:block/directrix/empty/horiz_lit",
- "east": "hexcasting:block/directrix/empty/end_lit",
- "north": "hexcasting:block/directrix/empty/horiz_lit",
- "particle": "hexcasting:block/slate",
- "south": "hexcasting:block/directrix/empty/horiz_lit",
- "up": "hexcasting:block/directrix/empty/horiz_lit",
- "west": "hexcasting:block/directrix/empty/end_lit"
- }
-}
\ No newline at end of file
diff --git a/0.10.3/Common/src/generated/resources/assets/hexcasting/models/block/empty_directrix_lit_y.json b/0.10.3/Common/src/generated/resources/assets/hexcasting/models/block/empty_directrix_lit_y.json
deleted file mode 100644
index 0b6fe067..00000000
--- a/0.10.3/Common/src/generated/resources/assets/hexcasting/models/block/empty_directrix_lit_y.json
+++ /dev/null
@@ -1,12 +0,0 @@
-{
- "parent": "minecraft:block/cube",
- "textures": {
- "down": "hexcasting:block/directrix/empty/end_lit",
- "east": "hexcasting:block/directrix/empty/vert_lit",
- "north": "hexcasting:block/directrix/empty/vert_lit",
- "particle": "hexcasting:block/slate",
- "south": "hexcasting:block/directrix/empty/vert_lit",
- "up": "hexcasting:block/directrix/empty/end_lit",
- "west": "hexcasting:block/directrix/empty/vert_lit"
- }
-}
\ No newline at end of file
diff --git a/0.10.3/Common/src/generated/resources/assets/hexcasting/models/block/empty_directrix_lit_z.json b/0.10.3/Common/src/generated/resources/assets/hexcasting/models/block/empty_directrix_lit_z.json
deleted file mode 100644
index a22d00ee..00000000
--- a/0.10.3/Common/src/generated/resources/assets/hexcasting/models/block/empty_directrix_lit_z.json
+++ /dev/null
@@ -1,12 +0,0 @@
-{
- "parent": "minecraft:block/cube",
- "textures": {
- "down": "hexcasting:block/directrix/empty/vert_lit",
- "east": "hexcasting:block/directrix/empty/horiz_lit",
- "north": "hexcasting:block/directrix/empty/end_lit",
- "particle": "hexcasting:block/slate",
- "south": "hexcasting:block/directrix/empty/end_lit",
- "up": "hexcasting:block/directrix/empty/vert_lit",
- "west": "hexcasting:block/directrix/empty/horiz_lit"
- }
-}
\ No newline at end of file
diff --git a/0.10.3/Common/src/generated/resources/assets/hexcasting/models/block/empty_impetus_dim_down.json b/0.10.3/Common/src/generated/resources/assets/hexcasting/models/block/empty_impetus_dim_down.json
deleted file mode 100644
index a8626302..00000000
--- a/0.10.3/Common/src/generated/resources/assets/hexcasting/models/block/empty_impetus_dim_down.json
+++ /dev/null
@@ -1,12 +0,0 @@
-{
- "parent": "minecraft:block/cube",
- "textures": {
- "down": "hexcasting:block/impetus/front_empty_dim",
- "east": "hexcasting:block/impetus/down_empty_dim",
- "north": "hexcasting:block/impetus/down_empty_dim",
- "particle": "hexcasting:block/slate",
- "south": "hexcasting:block/impetus/down_empty_dim",
- "up": "hexcasting:block/impetus/back_empty_dim",
- "west": "hexcasting:block/impetus/down_empty_dim"
- }
-}
\ No newline at end of file
diff --git a/0.10.3/Common/src/generated/resources/assets/hexcasting/models/block/empty_impetus_dim_east.json b/0.10.3/Common/src/generated/resources/assets/hexcasting/models/block/empty_impetus_dim_east.json
deleted file mode 100644
index 1a56be1b..00000000
--- a/0.10.3/Common/src/generated/resources/assets/hexcasting/models/block/empty_impetus_dim_east.json
+++ /dev/null
@@ -1,12 +0,0 @@
-{
- "parent": "minecraft:block/cube",
- "textures": {
- "down": "hexcasting:block/impetus/right_empty_dim",
- "east": "hexcasting:block/impetus/front_empty_dim",
- "north": "hexcasting:block/impetus/left_empty_dim",
- "particle": "hexcasting:block/slate",
- "south": "hexcasting:block/impetus/right_empty_dim",
- "up": "hexcasting:block/impetus/right_empty_dim",
- "west": "hexcasting:block/impetus/back_empty_dim"
- }
-}
\ No newline at end of file
diff --git a/0.10.3/Common/src/generated/resources/assets/hexcasting/models/block/empty_impetus_dim_north.json b/0.10.3/Common/src/generated/resources/assets/hexcasting/models/block/empty_impetus_dim_north.json
deleted file mode 100644
index 33aacabb..00000000
--- a/0.10.3/Common/src/generated/resources/assets/hexcasting/models/block/empty_impetus_dim_north.json
+++ /dev/null
@@ -1,12 +0,0 @@
-{
- "parent": "minecraft:block/cube",
- "textures": {
- "down": "hexcasting:block/impetus/down_empty_dim",
- "east": "hexcasting:block/impetus/right_empty_dim",
- "north": "hexcasting:block/impetus/front_empty_dim",
- "particle": "hexcasting:block/slate",
- "south": "hexcasting:block/impetus/back_empty_dim",
- "up": "hexcasting:block/impetus/up_empty_dim",
- "west": "hexcasting:block/impetus/left_empty_dim"
- }
-}
\ No newline at end of file
diff --git a/0.10.3/Common/src/generated/resources/assets/hexcasting/models/block/empty_impetus_dim_south.json b/0.10.3/Common/src/generated/resources/assets/hexcasting/models/block/empty_impetus_dim_south.json
deleted file mode 100644
index 80db3dc3..00000000
--- a/0.10.3/Common/src/generated/resources/assets/hexcasting/models/block/empty_impetus_dim_south.json
+++ /dev/null
@@ -1,12 +0,0 @@
-{
- "parent": "minecraft:block/cube",
- "textures": {
- "down": "hexcasting:block/impetus/up_empty_dim",
- "east": "hexcasting:block/impetus/left_empty_dim",
- "north": "hexcasting:block/impetus/back_empty_dim",
- "particle": "hexcasting:block/slate",
- "south": "hexcasting:block/impetus/front_empty_dim",
- "up": "hexcasting:block/impetus/down_empty_dim",
- "west": "hexcasting:block/impetus/right_empty_dim"
- }
-}
\ No newline at end of file
diff --git a/0.10.3/Common/src/generated/resources/assets/hexcasting/models/block/empty_impetus_dim_up.json b/0.10.3/Common/src/generated/resources/assets/hexcasting/models/block/empty_impetus_dim_up.json
deleted file mode 100644
index 91092aeb..00000000
--- a/0.10.3/Common/src/generated/resources/assets/hexcasting/models/block/empty_impetus_dim_up.json
+++ /dev/null
@@ -1,12 +0,0 @@
-{
- "parent": "minecraft:block/cube",
- "textures": {
- "down": "hexcasting:block/impetus/back_empty_dim",
- "east": "hexcasting:block/impetus/up_empty_dim",
- "north": "hexcasting:block/impetus/up_empty_dim",
- "particle": "hexcasting:block/slate",
- "south": "hexcasting:block/impetus/up_empty_dim",
- "up": "hexcasting:block/impetus/front_empty_dim",
- "west": "hexcasting:block/impetus/up_empty_dim"
- }
-}
\ No newline at end of file
diff --git a/0.10.3/Common/src/generated/resources/assets/hexcasting/models/block/empty_impetus_dim_west.json b/0.10.3/Common/src/generated/resources/assets/hexcasting/models/block/empty_impetus_dim_west.json
deleted file mode 100644
index 25cded53..00000000
--- a/0.10.3/Common/src/generated/resources/assets/hexcasting/models/block/empty_impetus_dim_west.json
+++ /dev/null
@@ -1,12 +0,0 @@
-{
- "parent": "minecraft:block/cube",
- "textures": {
- "down": "hexcasting:block/impetus/left_empty_dim",
- "east": "hexcasting:block/impetus/back_empty_dim",
- "north": "hexcasting:block/impetus/right_empty_dim",
- "particle": "hexcasting:block/slate",
- "south": "hexcasting:block/impetus/left_empty_dim",
- "up": "hexcasting:block/impetus/left_empty_dim",
- "west": "hexcasting:block/impetus/front_empty_dim"
- }
-}
\ No newline at end of file
diff --git a/0.10.3/Common/src/generated/resources/assets/hexcasting/models/block/empty_impetus_lit_down.json b/0.10.3/Common/src/generated/resources/assets/hexcasting/models/block/empty_impetus_lit_down.json
deleted file mode 100644
index fee8f57f..00000000
--- a/0.10.3/Common/src/generated/resources/assets/hexcasting/models/block/empty_impetus_lit_down.json
+++ /dev/null
@@ -1,12 +0,0 @@
-{
- "parent": "minecraft:block/cube",
- "textures": {
- "down": "hexcasting:block/impetus/front_empty_lit",
- "east": "hexcasting:block/impetus/down_empty_lit",
- "north": "hexcasting:block/impetus/down_empty_lit",
- "particle": "hexcasting:block/slate",
- "south": "hexcasting:block/impetus/down_empty_lit",
- "up": "hexcasting:block/impetus/back_empty_lit",
- "west": "hexcasting:block/impetus/down_empty_lit"
- }
-}
\ No newline at end of file
diff --git a/0.10.3/Common/src/generated/resources/assets/hexcasting/models/block/empty_impetus_lit_east.json b/0.10.3/Common/src/generated/resources/assets/hexcasting/models/block/empty_impetus_lit_east.json
deleted file mode 100644
index cbaab365..00000000
--- a/0.10.3/Common/src/generated/resources/assets/hexcasting/models/block/empty_impetus_lit_east.json
+++ /dev/null
@@ -1,12 +0,0 @@
-{
- "parent": "minecraft:block/cube",
- "textures": {
- "down": "hexcasting:block/impetus/right_empty_lit",
- "east": "hexcasting:block/impetus/front_empty_lit",
- "north": "hexcasting:block/impetus/left_empty_lit",
- "particle": "hexcasting:block/slate",
- "south": "hexcasting:block/impetus/right_empty_lit",
- "up": "hexcasting:block/impetus/right_empty_lit",
- "west": "hexcasting:block/impetus/back_empty_lit"
- }
-}
\ No newline at end of file
diff --git a/0.10.3/Common/src/generated/resources/assets/hexcasting/models/block/empty_impetus_lit_north.json b/0.10.3/Common/src/generated/resources/assets/hexcasting/models/block/empty_impetus_lit_north.json
deleted file mode 100644
index 49b977fd..00000000
--- a/0.10.3/Common/src/generated/resources/assets/hexcasting/models/block/empty_impetus_lit_north.json
+++ /dev/null
@@ -1,12 +0,0 @@
-{
- "parent": "minecraft:block/cube",
- "textures": {
- "down": "hexcasting:block/impetus/down_empty_lit",
- "east": "hexcasting:block/impetus/right_empty_lit",
- "north": "hexcasting:block/impetus/front_empty_lit",
- "particle": "hexcasting:block/slate",
- "south": "hexcasting:block/impetus/back_empty_lit",
- "up": "hexcasting:block/impetus/up_empty_lit",
- "west": "hexcasting:block/impetus/left_empty_lit"
- }
-}
\ No newline at end of file
diff --git a/0.10.3/Common/src/generated/resources/assets/hexcasting/models/block/empty_impetus_lit_south.json b/0.10.3/Common/src/generated/resources/assets/hexcasting/models/block/empty_impetus_lit_south.json
deleted file mode 100644
index 13918845..00000000
--- a/0.10.3/Common/src/generated/resources/assets/hexcasting/models/block/empty_impetus_lit_south.json
+++ /dev/null
@@ -1,12 +0,0 @@
-{
- "parent": "minecraft:block/cube",
- "textures": {
- "down": "hexcasting:block/impetus/up_empty_lit",
- "east": "hexcasting:block/impetus/left_empty_lit",
- "north": "hexcasting:block/impetus/back_empty_lit",
- "particle": "hexcasting:block/slate",
- "south": "hexcasting:block/impetus/front_empty_lit",
- "up": "hexcasting:block/impetus/down_empty_lit",
- "west": "hexcasting:block/impetus/right_empty_lit"
- }
-}
\ No newline at end of file
diff --git a/0.10.3/Common/src/generated/resources/assets/hexcasting/models/block/empty_impetus_lit_up.json b/0.10.3/Common/src/generated/resources/assets/hexcasting/models/block/empty_impetus_lit_up.json
deleted file mode 100644
index 05e81505..00000000
--- a/0.10.3/Common/src/generated/resources/assets/hexcasting/models/block/empty_impetus_lit_up.json
+++ /dev/null
@@ -1,12 +0,0 @@
-{
- "parent": "minecraft:block/cube",
- "textures": {
- "down": "hexcasting:block/impetus/back_empty_lit",
- "east": "hexcasting:block/impetus/up_empty_lit",
- "north": "hexcasting:block/impetus/up_empty_lit",
- "particle": "hexcasting:block/slate",
- "south": "hexcasting:block/impetus/up_empty_lit",
- "up": "hexcasting:block/impetus/front_empty_lit",
- "west": "hexcasting:block/impetus/up_empty_lit"
- }
-}
\ No newline at end of file
diff --git a/0.10.3/Common/src/generated/resources/assets/hexcasting/models/block/empty_impetus_lit_west.json b/0.10.3/Common/src/generated/resources/assets/hexcasting/models/block/empty_impetus_lit_west.json
deleted file mode 100644
index 9efb9a4a..00000000
--- a/0.10.3/Common/src/generated/resources/assets/hexcasting/models/block/empty_impetus_lit_west.json
+++ /dev/null
@@ -1,12 +0,0 @@
-{
- "parent": "minecraft:block/cube",
- "textures": {
- "down": "hexcasting:block/impetus/left_empty_lit",
- "east": "hexcasting:block/impetus/back_empty_lit",
- "north": "hexcasting:block/impetus/right_empty_lit",
- "particle": "hexcasting:block/slate",
- "south": "hexcasting:block/impetus/left_empty_lit",
- "up": "hexcasting:block/impetus/left_empty_lit",
- "west": "hexcasting:block/impetus/front_empty_lit"
- }
-}
\ No newline at end of file
diff --git a/0.10.3/Common/src/generated/resources/assets/hexcasting/models/block/impetus_look_dim_down.json b/0.10.3/Common/src/generated/resources/assets/hexcasting/models/block/impetus_look_dim_down.json
deleted file mode 100644
index da96cbf3..00000000
--- a/0.10.3/Common/src/generated/resources/assets/hexcasting/models/block/impetus_look_dim_down.json
+++ /dev/null
@@ -1,12 +0,0 @@
-{
- "parent": "minecraft:block/cube",
- "textures": {
- "down": "hexcasting:block/impetus/look_dim",
- "east": "hexcasting:block/impetus/down_dim",
- "north": "hexcasting:block/impetus/down_dim",
- "particle": "hexcasting:block/slate",
- "south": "hexcasting:block/impetus/down_dim",
- "up": "hexcasting:block/impetus/back_dim",
- "west": "hexcasting:block/impetus/down_dim"
- }
-}
\ No newline at end of file
diff --git a/0.10.3/Common/src/generated/resources/assets/hexcasting/models/block/impetus_look_dim_east.json b/0.10.3/Common/src/generated/resources/assets/hexcasting/models/block/impetus_look_dim_east.json
deleted file mode 100644
index 864c91ba..00000000
--- a/0.10.3/Common/src/generated/resources/assets/hexcasting/models/block/impetus_look_dim_east.json
+++ /dev/null
@@ -1,12 +0,0 @@
-{
- "parent": "minecraft:block/cube",
- "textures": {
- "down": "hexcasting:block/impetus/right_dim",
- "east": "hexcasting:block/impetus/look_dim",
- "north": "hexcasting:block/impetus/left_dim",
- "particle": "hexcasting:block/slate",
- "south": "hexcasting:block/impetus/right_dim",
- "up": "hexcasting:block/impetus/right_dim",
- "west": "hexcasting:block/impetus/back_dim"
- }
-}
\ No newline at end of file
diff --git a/0.10.3/Common/src/generated/resources/assets/hexcasting/models/block/impetus_look_dim_north.json b/0.10.3/Common/src/generated/resources/assets/hexcasting/models/block/impetus_look_dim_north.json
deleted file mode 100644
index 1c1dd3bb..00000000
--- a/0.10.3/Common/src/generated/resources/assets/hexcasting/models/block/impetus_look_dim_north.json
+++ /dev/null
@@ -1,12 +0,0 @@
-{
- "parent": "minecraft:block/cube",
- "textures": {
- "down": "hexcasting:block/impetus/down_dim",
- "east": "hexcasting:block/impetus/right_dim",
- "north": "hexcasting:block/impetus/look_dim",
- "particle": "hexcasting:block/slate",
- "south": "hexcasting:block/impetus/back_dim",
- "up": "hexcasting:block/impetus/up_dim",
- "west": "hexcasting:block/impetus/left_dim"
- }
-}
\ No newline at end of file
diff --git a/0.10.3/Common/src/generated/resources/assets/hexcasting/models/block/impetus_look_dim_south.json b/0.10.3/Common/src/generated/resources/assets/hexcasting/models/block/impetus_look_dim_south.json
deleted file mode 100644
index af39b85f..00000000
--- a/0.10.3/Common/src/generated/resources/assets/hexcasting/models/block/impetus_look_dim_south.json
+++ /dev/null
@@ -1,12 +0,0 @@
-{
- "parent": "minecraft:block/cube",
- "textures": {
- "down": "hexcasting:block/impetus/up_dim",
- "east": "hexcasting:block/impetus/left_dim",
- "north": "hexcasting:block/impetus/back_dim",
- "particle": "hexcasting:block/slate",
- "south": "hexcasting:block/impetus/look_dim",
- "up": "hexcasting:block/impetus/down_dim",
- "west": "hexcasting:block/impetus/right_dim"
- }
-}
\ No newline at end of file
diff --git a/0.10.3/Common/src/generated/resources/assets/hexcasting/models/block/impetus_look_dim_up.json b/0.10.3/Common/src/generated/resources/assets/hexcasting/models/block/impetus_look_dim_up.json
deleted file mode 100644
index 48d526d9..00000000
--- a/0.10.3/Common/src/generated/resources/assets/hexcasting/models/block/impetus_look_dim_up.json
+++ /dev/null
@@ -1,12 +0,0 @@
-{
- "parent": "minecraft:block/cube",
- "textures": {
- "down": "hexcasting:block/impetus/back_dim",
- "east": "hexcasting:block/impetus/up_dim",
- "north": "hexcasting:block/impetus/up_dim",
- "particle": "hexcasting:block/slate",
- "south": "hexcasting:block/impetus/up_dim",
- "up": "hexcasting:block/impetus/look_dim",
- "west": "hexcasting:block/impetus/up_dim"
- }
-}
\ No newline at end of file
diff --git a/0.10.3/Common/src/generated/resources/assets/hexcasting/models/block/impetus_look_dim_west.json b/0.10.3/Common/src/generated/resources/assets/hexcasting/models/block/impetus_look_dim_west.json
deleted file mode 100644
index 9ec847d8..00000000
--- a/0.10.3/Common/src/generated/resources/assets/hexcasting/models/block/impetus_look_dim_west.json
+++ /dev/null
@@ -1,12 +0,0 @@
-{
- "parent": "minecraft:block/cube",
- "textures": {
- "down": "hexcasting:block/impetus/left_dim",
- "east": "hexcasting:block/impetus/back_dim",
- "north": "hexcasting:block/impetus/right_dim",
- "particle": "hexcasting:block/slate",
- "south": "hexcasting:block/impetus/left_dim",
- "up": "hexcasting:block/impetus/left_dim",
- "west": "hexcasting:block/impetus/look_dim"
- }
-}
\ No newline at end of file
diff --git a/0.10.3/Common/src/generated/resources/assets/hexcasting/models/block/impetus_look_lit_down.json b/0.10.3/Common/src/generated/resources/assets/hexcasting/models/block/impetus_look_lit_down.json
deleted file mode 100644
index eed81db6..00000000
--- a/0.10.3/Common/src/generated/resources/assets/hexcasting/models/block/impetus_look_lit_down.json
+++ /dev/null
@@ -1,12 +0,0 @@
-{
- "parent": "minecraft:block/cube",
- "textures": {
- "down": "hexcasting:block/impetus/look_lit",
- "east": "hexcasting:block/impetus/down_lit",
- "north": "hexcasting:block/impetus/down_lit",
- "particle": "hexcasting:block/slate",
- "south": "hexcasting:block/impetus/down_lit",
- "up": "hexcasting:block/impetus/back_lit",
- "west": "hexcasting:block/impetus/down_lit"
- }
-}
\ No newline at end of file
diff --git a/0.10.3/Common/src/generated/resources/assets/hexcasting/models/block/impetus_look_lit_east.json b/0.10.3/Common/src/generated/resources/assets/hexcasting/models/block/impetus_look_lit_east.json
deleted file mode 100644
index 5f938472..00000000
--- a/0.10.3/Common/src/generated/resources/assets/hexcasting/models/block/impetus_look_lit_east.json
+++ /dev/null
@@ -1,12 +0,0 @@
-{
- "parent": "minecraft:block/cube",
- "textures": {
- "down": "hexcasting:block/impetus/right_lit",
- "east": "hexcasting:block/impetus/look_lit",
- "north": "hexcasting:block/impetus/left_lit",
- "particle": "hexcasting:block/slate",
- "south": "hexcasting:block/impetus/right_lit",
- "up": "hexcasting:block/impetus/right_lit",
- "west": "hexcasting:block/impetus/back_lit"
- }
-}
\ No newline at end of file
diff --git a/0.10.3/Common/src/generated/resources/assets/hexcasting/models/block/impetus_look_lit_north.json b/0.10.3/Common/src/generated/resources/assets/hexcasting/models/block/impetus_look_lit_north.json
deleted file mode 100644
index 2d72c132..00000000
--- a/0.10.3/Common/src/generated/resources/assets/hexcasting/models/block/impetus_look_lit_north.json
+++ /dev/null
@@ -1,12 +0,0 @@
-{
- "parent": "minecraft:block/cube",
- "textures": {
- "down": "hexcasting:block/impetus/down_lit",
- "east": "hexcasting:block/impetus/right_lit",
- "north": "hexcasting:block/impetus/look_lit",
- "particle": "hexcasting:block/slate",
- "south": "hexcasting:block/impetus/back_lit",
- "up": "hexcasting:block/impetus/up_lit",
- "west": "hexcasting:block/impetus/left_lit"
- }
-}
\ No newline at end of file
diff --git a/0.10.3/Common/src/generated/resources/assets/hexcasting/models/block/impetus_look_lit_south.json b/0.10.3/Common/src/generated/resources/assets/hexcasting/models/block/impetus_look_lit_south.json
deleted file mode 100644
index 496d4369..00000000
--- a/0.10.3/Common/src/generated/resources/assets/hexcasting/models/block/impetus_look_lit_south.json
+++ /dev/null
@@ -1,12 +0,0 @@
-{
- "parent": "minecraft:block/cube",
- "textures": {
- "down": "hexcasting:block/impetus/up_lit",
- "east": "hexcasting:block/impetus/left_lit",
- "north": "hexcasting:block/impetus/back_lit",
- "particle": "hexcasting:block/slate",
- "south": "hexcasting:block/impetus/look_lit",
- "up": "hexcasting:block/impetus/down_lit",
- "west": "hexcasting:block/impetus/right_lit"
- }
-}
\ No newline at end of file
diff --git a/0.10.3/Common/src/generated/resources/assets/hexcasting/models/block/impetus_look_lit_up.json b/0.10.3/Common/src/generated/resources/assets/hexcasting/models/block/impetus_look_lit_up.json
deleted file mode 100644
index 664800b9..00000000
--- a/0.10.3/Common/src/generated/resources/assets/hexcasting/models/block/impetus_look_lit_up.json
+++ /dev/null
@@ -1,12 +0,0 @@
-{
- "parent": "minecraft:block/cube",
- "textures": {
- "down": "hexcasting:block/impetus/back_lit",
- "east": "hexcasting:block/impetus/up_lit",
- "north": "hexcasting:block/impetus/up_lit",
- "particle": "hexcasting:block/slate",
- "south": "hexcasting:block/impetus/up_lit",
- "up": "hexcasting:block/impetus/look_lit",
- "west": "hexcasting:block/impetus/up_lit"
- }
-}
\ No newline at end of file
diff --git a/0.10.3/Common/src/generated/resources/assets/hexcasting/models/block/impetus_look_lit_west.json b/0.10.3/Common/src/generated/resources/assets/hexcasting/models/block/impetus_look_lit_west.json
deleted file mode 100644
index ae05c316..00000000
--- a/0.10.3/Common/src/generated/resources/assets/hexcasting/models/block/impetus_look_lit_west.json
+++ /dev/null
@@ -1,12 +0,0 @@
-{
- "parent": "minecraft:block/cube",
- "textures": {
- "down": "hexcasting:block/impetus/left_lit",
- "east": "hexcasting:block/impetus/back_lit",
- "north": "hexcasting:block/impetus/right_lit",
- "particle": "hexcasting:block/slate",
- "south": "hexcasting:block/impetus/left_lit",
- "up": "hexcasting:block/impetus/left_lit",
- "west": "hexcasting:block/impetus/look_lit"
- }
-}
\ No newline at end of file
diff --git a/0.10.3/Common/src/generated/resources/assets/hexcasting/models/block/impetus_rightclick_dim_down.json b/0.10.3/Common/src/generated/resources/assets/hexcasting/models/block/impetus_rightclick_dim_down.json
deleted file mode 100644
index 18b1f5ae..00000000
--- a/0.10.3/Common/src/generated/resources/assets/hexcasting/models/block/impetus_rightclick_dim_down.json
+++ /dev/null
@@ -1,12 +0,0 @@
-{
- "parent": "minecraft:block/cube",
- "textures": {
- "down": "hexcasting:block/impetus/rightclick_dim",
- "east": "hexcasting:block/impetus/down_dim",
- "north": "hexcasting:block/impetus/down_dim",
- "particle": "hexcasting:block/slate",
- "south": "hexcasting:block/impetus/down_dim",
- "up": "hexcasting:block/impetus/back_dim",
- "west": "hexcasting:block/impetus/down_dim"
- }
-}
\ No newline at end of file
diff --git a/0.10.3/Common/src/generated/resources/assets/hexcasting/models/block/impetus_rightclick_dim_east.json b/0.10.3/Common/src/generated/resources/assets/hexcasting/models/block/impetus_rightclick_dim_east.json
deleted file mode 100644
index 5cd67727..00000000
--- a/0.10.3/Common/src/generated/resources/assets/hexcasting/models/block/impetus_rightclick_dim_east.json
+++ /dev/null
@@ -1,12 +0,0 @@
-{
- "parent": "minecraft:block/cube",
- "textures": {
- "down": "hexcasting:block/impetus/right_dim",
- "east": "hexcasting:block/impetus/rightclick_dim",
- "north": "hexcasting:block/impetus/left_dim",
- "particle": "hexcasting:block/slate",
- "south": "hexcasting:block/impetus/right_dim",
- "up": "hexcasting:block/impetus/right_dim",
- "west": "hexcasting:block/impetus/back_dim"
- }
-}
\ No newline at end of file
diff --git a/0.10.3/Common/src/generated/resources/assets/hexcasting/models/block/impetus_rightclick_dim_north.json b/0.10.3/Common/src/generated/resources/assets/hexcasting/models/block/impetus_rightclick_dim_north.json
deleted file mode 100644
index cdcdec9e..00000000
--- a/0.10.3/Common/src/generated/resources/assets/hexcasting/models/block/impetus_rightclick_dim_north.json
+++ /dev/null
@@ -1,12 +0,0 @@
-{
- "parent": "minecraft:block/cube",
- "textures": {
- "down": "hexcasting:block/impetus/down_dim",
- "east": "hexcasting:block/impetus/right_dim",
- "north": "hexcasting:block/impetus/rightclick_dim",
- "particle": "hexcasting:block/slate",
- "south": "hexcasting:block/impetus/back_dim",
- "up": "hexcasting:block/impetus/up_dim",
- "west": "hexcasting:block/impetus/left_dim"
- }
-}
\ No newline at end of file
diff --git a/0.10.3/Common/src/generated/resources/assets/hexcasting/models/block/impetus_rightclick_dim_south.json b/0.10.3/Common/src/generated/resources/assets/hexcasting/models/block/impetus_rightclick_dim_south.json
deleted file mode 100644
index 0f494afd..00000000
--- a/0.10.3/Common/src/generated/resources/assets/hexcasting/models/block/impetus_rightclick_dim_south.json
+++ /dev/null
@@ -1,12 +0,0 @@
-{
- "parent": "minecraft:block/cube",
- "textures": {
- "down": "hexcasting:block/impetus/up_dim",
- "east": "hexcasting:block/impetus/left_dim",
- "north": "hexcasting:block/impetus/back_dim",
- "particle": "hexcasting:block/slate",
- "south": "hexcasting:block/impetus/rightclick_dim",
- "up": "hexcasting:block/impetus/down_dim",
- "west": "hexcasting:block/impetus/right_dim"
- }
-}
\ No newline at end of file
diff --git a/0.10.3/Common/src/generated/resources/assets/hexcasting/models/block/impetus_rightclick_dim_up.json b/0.10.3/Common/src/generated/resources/assets/hexcasting/models/block/impetus_rightclick_dim_up.json
deleted file mode 100644
index 0ab86071..00000000
--- a/0.10.3/Common/src/generated/resources/assets/hexcasting/models/block/impetus_rightclick_dim_up.json
+++ /dev/null
@@ -1,12 +0,0 @@
-{
- "parent": "minecraft:block/cube",
- "textures": {
- "down": "hexcasting:block/impetus/back_dim",
- "east": "hexcasting:block/impetus/up_dim",
- "north": "hexcasting:block/impetus/up_dim",
- "particle": "hexcasting:block/slate",
- "south": "hexcasting:block/impetus/up_dim",
- "up": "hexcasting:block/impetus/rightclick_dim",
- "west": "hexcasting:block/impetus/up_dim"
- }
-}
\ No newline at end of file
diff --git a/0.10.3/Common/src/generated/resources/assets/hexcasting/models/block/impetus_rightclick_dim_west.json b/0.10.3/Common/src/generated/resources/assets/hexcasting/models/block/impetus_rightclick_dim_west.json
deleted file mode 100644
index ca7a2ccb..00000000
--- a/0.10.3/Common/src/generated/resources/assets/hexcasting/models/block/impetus_rightclick_dim_west.json
+++ /dev/null
@@ -1,12 +0,0 @@
-{
- "parent": "minecraft:block/cube",
- "textures": {
- "down": "hexcasting:block/impetus/left_dim",
- "east": "hexcasting:block/impetus/back_dim",
- "north": "hexcasting:block/impetus/right_dim",
- "particle": "hexcasting:block/slate",
- "south": "hexcasting:block/impetus/left_dim",
- "up": "hexcasting:block/impetus/left_dim",
- "west": "hexcasting:block/impetus/rightclick_dim"
- }
-}
\ No newline at end of file
diff --git a/0.10.3/Common/src/generated/resources/assets/hexcasting/models/block/impetus_rightclick_lit_down.json b/0.10.3/Common/src/generated/resources/assets/hexcasting/models/block/impetus_rightclick_lit_down.json
deleted file mode 100644
index ed790e5d..00000000
--- a/0.10.3/Common/src/generated/resources/assets/hexcasting/models/block/impetus_rightclick_lit_down.json
+++ /dev/null
@@ -1,12 +0,0 @@
-{
- "parent": "minecraft:block/cube",
- "textures": {
- "down": "hexcasting:block/impetus/rightclick_lit",
- "east": "hexcasting:block/impetus/down_lit",
- "north": "hexcasting:block/impetus/down_lit",
- "particle": "hexcasting:block/slate",
- "south": "hexcasting:block/impetus/down_lit",
- "up": "hexcasting:block/impetus/back_lit",
- "west": "hexcasting:block/impetus/down_lit"
- }
-}
\ No newline at end of file
diff --git a/0.10.3/Common/src/generated/resources/assets/hexcasting/models/block/impetus_rightclick_lit_east.json b/0.10.3/Common/src/generated/resources/assets/hexcasting/models/block/impetus_rightclick_lit_east.json
deleted file mode 100644
index c9f13f4a..00000000
--- a/0.10.3/Common/src/generated/resources/assets/hexcasting/models/block/impetus_rightclick_lit_east.json
+++ /dev/null
@@ -1,12 +0,0 @@
-{
- "parent": "minecraft:block/cube",
- "textures": {
- "down": "hexcasting:block/impetus/right_lit",
- "east": "hexcasting:block/impetus/rightclick_lit",
- "north": "hexcasting:block/impetus/left_lit",
- "particle": "hexcasting:block/slate",
- "south": "hexcasting:block/impetus/right_lit",
- "up": "hexcasting:block/impetus/right_lit",
- "west": "hexcasting:block/impetus/back_lit"
- }
-}
\ No newline at end of file
diff --git a/0.10.3/Common/src/generated/resources/assets/hexcasting/models/block/impetus_rightclick_lit_north.json b/0.10.3/Common/src/generated/resources/assets/hexcasting/models/block/impetus_rightclick_lit_north.json
deleted file mode 100644
index 6af6c77d..00000000
--- a/0.10.3/Common/src/generated/resources/assets/hexcasting/models/block/impetus_rightclick_lit_north.json
+++ /dev/null
@@ -1,12 +0,0 @@
-{
- "parent": "minecraft:block/cube",
- "textures": {
- "down": "hexcasting:block/impetus/down_lit",
- "east": "hexcasting:block/impetus/right_lit",
- "north": "hexcasting:block/impetus/rightclick_lit",
- "particle": "hexcasting:block/slate",
- "south": "hexcasting:block/impetus/back_lit",
- "up": "hexcasting:block/impetus/up_lit",
- "west": "hexcasting:block/impetus/left_lit"
- }
-}
\ No newline at end of file
diff --git a/0.10.3/Common/src/generated/resources/assets/hexcasting/models/block/impetus_rightclick_lit_south.json b/0.10.3/Common/src/generated/resources/assets/hexcasting/models/block/impetus_rightclick_lit_south.json
deleted file mode 100644
index fc046e86..00000000
--- a/0.10.3/Common/src/generated/resources/assets/hexcasting/models/block/impetus_rightclick_lit_south.json
+++ /dev/null
@@ -1,12 +0,0 @@
-{
- "parent": "minecraft:block/cube",
- "textures": {
- "down": "hexcasting:block/impetus/up_lit",
- "east": "hexcasting:block/impetus/left_lit",
- "north": "hexcasting:block/impetus/back_lit",
- "particle": "hexcasting:block/slate",
- "south": "hexcasting:block/impetus/rightclick_lit",
- "up": "hexcasting:block/impetus/down_lit",
- "west": "hexcasting:block/impetus/right_lit"
- }
-}
\ No newline at end of file
diff --git a/0.10.3/Common/src/generated/resources/assets/hexcasting/models/block/impetus_rightclick_lit_up.json b/0.10.3/Common/src/generated/resources/assets/hexcasting/models/block/impetus_rightclick_lit_up.json
deleted file mode 100644
index fdb94e58..00000000
--- a/0.10.3/Common/src/generated/resources/assets/hexcasting/models/block/impetus_rightclick_lit_up.json
+++ /dev/null
@@ -1,12 +0,0 @@
-{
- "parent": "minecraft:block/cube",
- "textures": {
- "down": "hexcasting:block/impetus/back_lit",
- "east": "hexcasting:block/impetus/up_lit",
- "north": "hexcasting:block/impetus/up_lit",
- "particle": "hexcasting:block/slate",
- "south": "hexcasting:block/impetus/up_lit",
- "up": "hexcasting:block/impetus/rightclick_lit",
- "west": "hexcasting:block/impetus/up_lit"
- }
-}
\ No newline at end of file
diff --git a/0.10.3/Common/src/generated/resources/assets/hexcasting/models/block/impetus_rightclick_lit_west.json b/0.10.3/Common/src/generated/resources/assets/hexcasting/models/block/impetus_rightclick_lit_west.json
deleted file mode 100644
index d8ce52ee..00000000
--- a/0.10.3/Common/src/generated/resources/assets/hexcasting/models/block/impetus_rightclick_lit_west.json
+++ /dev/null
@@ -1,12 +0,0 @@
-{
- "parent": "minecraft:block/cube",
- "textures": {
- "down": "hexcasting:block/impetus/left_lit",
- "east": "hexcasting:block/impetus/back_lit",
- "north": "hexcasting:block/impetus/right_lit",
- "particle": "hexcasting:block/slate",
- "south": "hexcasting:block/impetus/left_lit",
- "up": "hexcasting:block/impetus/left_lit",
- "west": "hexcasting:block/impetus/rightclick_lit"
- }
-}
\ No newline at end of file
diff --git a/0.10.3/Common/src/generated/resources/assets/hexcasting/models/block/impetus_storedplayer_dim_down.json b/0.10.3/Common/src/generated/resources/assets/hexcasting/models/block/impetus_storedplayer_dim_down.json
deleted file mode 100644
index b1d9fedb..00000000
--- a/0.10.3/Common/src/generated/resources/assets/hexcasting/models/block/impetus_storedplayer_dim_down.json
+++ /dev/null
@@ -1,12 +0,0 @@
-{
- "parent": "minecraft:block/cube",
- "textures": {
- "down": "hexcasting:block/impetus/storedplayer_dim",
- "east": "hexcasting:block/impetus/down_dim",
- "north": "hexcasting:block/impetus/down_dim",
- "particle": "hexcasting:block/slate",
- "south": "hexcasting:block/impetus/down_dim",
- "up": "hexcasting:block/impetus/back_dim",
- "west": "hexcasting:block/impetus/down_dim"
- }
-}
\ No newline at end of file
diff --git a/0.10.3/Common/src/generated/resources/assets/hexcasting/models/block/impetus_storedplayer_dim_east.json b/0.10.3/Common/src/generated/resources/assets/hexcasting/models/block/impetus_storedplayer_dim_east.json
deleted file mode 100644
index fce67205..00000000
--- a/0.10.3/Common/src/generated/resources/assets/hexcasting/models/block/impetus_storedplayer_dim_east.json
+++ /dev/null
@@ -1,12 +0,0 @@
-{
- "parent": "minecraft:block/cube",
- "textures": {
- "down": "hexcasting:block/impetus/right_dim",
- "east": "hexcasting:block/impetus/storedplayer_dim",
- "north": "hexcasting:block/impetus/left_dim",
- "particle": "hexcasting:block/slate",
- "south": "hexcasting:block/impetus/right_dim",
- "up": "hexcasting:block/impetus/right_dim",
- "west": "hexcasting:block/impetus/back_dim"
- }
-}
\ No newline at end of file
diff --git a/0.10.3/Common/src/generated/resources/assets/hexcasting/models/block/impetus_storedplayer_dim_north.json b/0.10.3/Common/src/generated/resources/assets/hexcasting/models/block/impetus_storedplayer_dim_north.json
deleted file mode 100644
index ad81907b..00000000
--- a/0.10.3/Common/src/generated/resources/assets/hexcasting/models/block/impetus_storedplayer_dim_north.json
+++ /dev/null
@@ -1,12 +0,0 @@
-{
- "parent": "minecraft:block/cube",
- "textures": {
- "down": "hexcasting:block/impetus/down_dim",
- "east": "hexcasting:block/impetus/right_dim",
- "north": "hexcasting:block/impetus/storedplayer_dim",
- "particle": "hexcasting:block/slate",
- "south": "hexcasting:block/impetus/back_dim",
- "up": "hexcasting:block/impetus/up_dim",
- "west": "hexcasting:block/impetus/left_dim"
- }
-}
\ No newline at end of file
diff --git a/0.10.3/Common/src/generated/resources/assets/hexcasting/models/block/impetus_storedplayer_dim_south.json b/0.10.3/Common/src/generated/resources/assets/hexcasting/models/block/impetus_storedplayer_dim_south.json
deleted file mode 100644
index 299bf5d6..00000000
--- a/0.10.3/Common/src/generated/resources/assets/hexcasting/models/block/impetus_storedplayer_dim_south.json
+++ /dev/null
@@ -1,12 +0,0 @@
-{
- "parent": "minecraft:block/cube",
- "textures": {
- "down": "hexcasting:block/impetus/up_dim",
- "east": "hexcasting:block/impetus/left_dim",
- "north": "hexcasting:block/impetus/back_dim",
- "particle": "hexcasting:block/slate",
- "south": "hexcasting:block/impetus/storedplayer_dim",
- "up": "hexcasting:block/impetus/down_dim",
- "west": "hexcasting:block/impetus/right_dim"
- }
-}
\ No newline at end of file
diff --git a/0.10.3/Common/src/generated/resources/assets/hexcasting/models/block/impetus_storedplayer_dim_up.json b/0.10.3/Common/src/generated/resources/assets/hexcasting/models/block/impetus_storedplayer_dim_up.json
deleted file mode 100644
index 7731a397..00000000
--- a/0.10.3/Common/src/generated/resources/assets/hexcasting/models/block/impetus_storedplayer_dim_up.json
+++ /dev/null
@@ -1,12 +0,0 @@
-{
- "parent": "minecraft:block/cube",
- "textures": {
- "down": "hexcasting:block/impetus/back_dim",
- "east": "hexcasting:block/impetus/up_dim",
- "north": "hexcasting:block/impetus/up_dim",
- "particle": "hexcasting:block/slate",
- "south": "hexcasting:block/impetus/up_dim",
- "up": "hexcasting:block/impetus/storedplayer_dim",
- "west": "hexcasting:block/impetus/up_dim"
- }
-}
\ No newline at end of file
diff --git a/0.10.3/Common/src/generated/resources/assets/hexcasting/models/block/impetus_storedplayer_dim_west.json b/0.10.3/Common/src/generated/resources/assets/hexcasting/models/block/impetus_storedplayer_dim_west.json
deleted file mode 100644
index 7c64a839..00000000
--- a/0.10.3/Common/src/generated/resources/assets/hexcasting/models/block/impetus_storedplayer_dim_west.json
+++ /dev/null
@@ -1,12 +0,0 @@
-{
- "parent": "minecraft:block/cube",
- "textures": {
- "down": "hexcasting:block/impetus/left_dim",
- "east": "hexcasting:block/impetus/back_dim",
- "north": "hexcasting:block/impetus/right_dim",
- "particle": "hexcasting:block/slate",
- "south": "hexcasting:block/impetus/left_dim",
- "up": "hexcasting:block/impetus/left_dim",
- "west": "hexcasting:block/impetus/storedplayer_dim"
- }
-}
\ No newline at end of file
diff --git a/0.10.3/Common/src/generated/resources/assets/hexcasting/models/block/impetus_storedplayer_lit_down.json b/0.10.3/Common/src/generated/resources/assets/hexcasting/models/block/impetus_storedplayer_lit_down.json
deleted file mode 100644
index 0986f415..00000000
--- a/0.10.3/Common/src/generated/resources/assets/hexcasting/models/block/impetus_storedplayer_lit_down.json
+++ /dev/null
@@ -1,12 +0,0 @@
-{
- "parent": "minecraft:block/cube",
- "textures": {
- "down": "hexcasting:block/impetus/storedplayer_lit",
- "east": "hexcasting:block/impetus/down_lit",
- "north": "hexcasting:block/impetus/down_lit",
- "particle": "hexcasting:block/slate",
- "south": "hexcasting:block/impetus/down_lit",
- "up": "hexcasting:block/impetus/back_lit",
- "west": "hexcasting:block/impetus/down_lit"
- }
-}
\ No newline at end of file
diff --git a/0.10.3/Common/src/generated/resources/assets/hexcasting/models/block/impetus_storedplayer_lit_east.json b/0.10.3/Common/src/generated/resources/assets/hexcasting/models/block/impetus_storedplayer_lit_east.json
deleted file mode 100644
index 80c68ade..00000000
--- a/0.10.3/Common/src/generated/resources/assets/hexcasting/models/block/impetus_storedplayer_lit_east.json
+++ /dev/null
@@ -1,12 +0,0 @@
-{
- "parent": "minecraft:block/cube",
- "textures": {
- "down": "hexcasting:block/impetus/right_lit",
- "east": "hexcasting:block/impetus/storedplayer_lit",
- "north": "hexcasting:block/impetus/left_lit",
- "particle": "hexcasting:block/slate",
- "south": "hexcasting:block/impetus/right_lit",
- "up": "hexcasting:block/impetus/right_lit",
- "west": "hexcasting:block/impetus/back_lit"
- }
-}
\ No newline at end of file
diff --git a/0.10.3/Common/src/generated/resources/assets/hexcasting/models/block/impetus_storedplayer_lit_north.json b/0.10.3/Common/src/generated/resources/assets/hexcasting/models/block/impetus_storedplayer_lit_north.json
deleted file mode 100644
index 3d82c4be..00000000
--- a/0.10.3/Common/src/generated/resources/assets/hexcasting/models/block/impetus_storedplayer_lit_north.json
+++ /dev/null
@@ -1,12 +0,0 @@
-{
- "parent": "minecraft:block/cube",
- "textures": {
- "down": "hexcasting:block/impetus/down_lit",
- "east": "hexcasting:block/impetus/right_lit",
- "north": "hexcasting:block/impetus/storedplayer_lit",
- "particle": "hexcasting:block/slate",
- "south": "hexcasting:block/impetus/back_lit",
- "up": "hexcasting:block/impetus/up_lit",
- "west": "hexcasting:block/impetus/left_lit"
- }
-}
\ No newline at end of file
diff --git a/0.10.3/Common/src/generated/resources/assets/hexcasting/models/block/impetus_storedplayer_lit_south.json b/0.10.3/Common/src/generated/resources/assets/hexcasting/models/block/impetus_storedplayer_lit_south.json
deleted file mode 100644
index 2d28b4ee..00000000
--- a/0.10.3/Common/src/generated/resources/assets/hexcasting/models/block/impetus_storedplayer_lit_south.json
+++ /dev/null
@@ -1,12 +0,0 @@
-{
- "parent": "minecraft:block/cube",
- "textures": {
- "down": "hexcasting:block/impetus/up_lit",
- "east": "hexcasting:block/impetus/left_lit",
- "north": "hexcasting:block/impetus/back_lit",
- "particle": "hexcasting:block/slate",
- "south": "hexcasting:block/impetus/storedplayer_lit",
- "up": "hexcasting:block/impetus/down_lit",
- "west": "hexcasting:block/impetus/right_lit"
- }
-}
\ No newline at end of file
diff --git a/0.10.3/Common/src/generated/resources/assets/hexcasting/models/block/impetus_storedplayer_lit_up.json b/0.10.3/Common/src/generated/resources/assets/hexcasting/models/block/impetus_storedplayer_lit_up.json
deleted file mode 100644
index fd08ddaa..00000000
--- a/0.10.3/Common/src/generated/resources/assets/hexcasting/models/block/impetus_storedplayer_lit_up.json
+++ /dev/null
@@ -1,12 +0,0 @@
-{
- "parent": "minecraft:block/cube",
- "textures": {
- "down": "hexcasting:block/impetus/back_lit",
- "east": "hexcasting:block/impetus/up_lit",
- "north": "hexcasting:block/impetus/up_lit",
- "particle": "hexcasting:block/slate",
- "south": "hexcasting:block/impetus/up_lit",
- "up": "hexcasting:block/impetus/storedplayer_lit",
- "west": "hexcasting:block/impetus/up_lit"
- }
-}
\ No newline at end of file
diff --git a/0.10.3/Common/src/generated/resources/assets/hexcasting/models/block/impetus_storedplayer_lit_west.json b/0.10.3/Common/src/generated/resources/assets/hexcasting/models/block/impetus_storedplayer_lit_west.json
deleted file mode 100644
index fee87024..00000000
--- a/0.10.3/Common/src/generated/resources/assets/hexcasting/models/block/impetus_storedplayer_lit_west.json
+++ /dev/null
@@ -1,12 +0,0 @@
-{
- "parent": "minecraft:block/cube",
- "textures": {
- "down": "hexcasting:block/impetus/left_lit",
- "east": "hexcasting:block/impetus/back_lit",
- "north": "hexcasting:block/impetus/right_lit",
- "particle": "hexcasting:block/slate",
- "south": "hexcasting:block/impetus/left_lit",
- "up": "hexcasting:block/impetus/left_lit",
- "west": "hexcasting:block/impetus/storedplayer_lit"
- }
-}
\ No newline at end of file
diff --git a/0.10.3/Common/src/generated/resources/assets/hexcasting/models/block/redstone_directrix_powered_dim_down.json b/0.10.3/Common/src/generated/resources/assets/hexcasting/models/block/redstone_directrix_powered_dim_down.json
deleted file mode 100644
index 86cf0338..00000000
--- a/0.10.3/Common/src/generated/resources/assets/hexcasting/models/block/redstone_directrix_powered_dim_down.json
+++ /dev/null
@@ -1,12 +0,0 @@
-{
- "parent": "minecraft:block/cube",
- "textures": {
- "down": "hexcasting:block/directrix/redstone/front_dim",
- "east": "hexcasting:block/directrix/redstone/down_powered_dim",
- "north": "hexcasting:block/directrix/redstone/down_powered_dim",
- "particle": "hexcasting:block/slate",
- "south": "hexcasting:block/directrix/redstone/down_powered_dim",
- "up": "hexcasting:block/directrix/redstone/back_powered",
- "west": "hexcasting:block/directrix/redstone/down_powered_dim"
- }
-}
\ No newline at end of file
diff --git a/0.10.3/Common/src/generated/resources/assets/hexcasting/models/block/redstone_directrix_powered_dim_east.json b/0.10.3/Common/src/generated/resources/assets/hexcasting/models/block/redstone_directrix_powered_dim_east.json
deleted file mode 100644
index b33d9f8e..00000000
--- a/0.10.3/Common/src/generated/resources/assets/hexcasting/models/block/redstone_directrix_powered_dim_east.json
+++ /dev/null
@@ -1,12 +0,0 @@
-{
- "parent": "minecraft:block/cube",
- "textures": {
- "down": "hexcasting:block/directrix/redstone/right_powered_dim",
- "east": "hexcasting:block/directrix/redstone/front_dim",
- "north": "hexcasting:block/directrix/redstone/left_powered_dim",
- "particle": "hexcasting:block/slate",
- "south": "hexcasting:block/directrix/redstone/right_powered_dim",
- "up": "hexcasting:block/directrix/redstone/right_powered_dim",
- "west": "hexcasting:block/directrix/redstone/back_powered"
- }
-}
\ No newline at end of file
diff --git a/0.10.3/Common/src/generated/resources/assets/hexcasting/models/block/redstone_directrix_powered_dim_north.json b/0.10.3/Common/src/generated/resources/assets/hexcasting/models/block/redstone_directrix_powered_dim_north.json
deleted file mode 100644
index 414be41d..00000000
--- a/0.10.3/Common/src/generated/resources/assets/hexcasting/models/block/redstone_directrix_powered_dim_north.json
+++ /dev/null
@@ -1,12 +0,0 @@
-{
- "parent": "minecraft:block/cube",
- "textures": {
- "down": "hexcasting:block/directrix/redstone/down_powered_dim",
- "east": "hexcasting:block/directrix/redstone/right_powered_dim",
- "north": "hexcasting:block/directrix/redstone/front_dim",
- "particle": "hexcasting:block/slate",
- "south": "hexcasting:block/directrix/redstone/back_powered",
- "up": "hexcasting:block/directrix/redstone/up_powered_dim",
- "west": "hexcasting:block/directrix/redstone/left_powered_dim"
- }
-}
\ No newline at end of file
diff --git a/0.10.3/Common/src/generated/resources/assets/hexcasting/models/block/redstone_directrix_powered_dim_south.json b/0.10.3/Common/src/generated/resources/assets/hexcasting/models/block/redstone_directrix_powered_dim_south.json
deleted file mode 100644
index 949091e7..00000000
--- a/0.10.3/Common/src/generated/resources/assets/hexcasting/models/block/redstone_directrix_powered_dim_south.json
+++ /dev/null
@@ -1,12 +0,0 @@
-{
- "parent": "minecraft:block/cube",
- "textures": {
- "down": "hexcasting:block/directrix/redstone/up_powered_dim",
- "east": "hexcasting:block/directrix/redstone/left_powered_dim",
- "north": "hexcasting:block/directrix/redstone/back_powered",
- "particle": "hexcasting:block/slate",
- "south": "hexcasting:block/directrix/redstone/front_dim",
- "up": "hexcasting:block/directrix/redstone/down_powered_dim",
- "west": "hexcasting:block/directrix/redstone/right_powered_dim"
- }
-}
\ No newline at end of file
diff --git a/0.10.3/Common/src/generated/resources/assets/hexcasting/models/block/redstone_directrix_powered_dim_up.json b/0.10.3/Common/src/generated/resources/assets/hexcasting/models/block/redstone_directrix_powered_dim_up.json
deleted file mode 100644
index b1d92630..00000000
--- a/0.10.3/Common/src/generated/resources/assets/hexcasting/models/block/redstone_directrix_powered_dim_up.json
+++ /dev/null
@@ -1,12 +0,0 @@
-{
- "parent": "minecraft:block/cube",
- "textures": {
- "down": "hexcasting:block/directrix/redstone/back_powered",
- "east": "hexcasting:block/directrix/redstone/up_powered_dim",
- "north": "hexcasting:block/directrix/redstone/up_powered_dim",
- "particle": "hexcasting:block/slate",
- "south": "hexcasting:block/directrix/redstone/up_powered_dim",
- "up": "hexcasting:block/directrix/redstone/front_dim",
- "west": "hexcasting:block/directrix/redstone/up_powered_dim"
- }
-}
\ No newline at end of file
diff --git a/0.10.3/Common/src/generated/resources/assets/hexcasting/models/block/redstone_directrix_powered_dim_west.json b/0.10.3/Common/src/generated/resources/assets/hexcasting/models/block/redstone_directrix_powered_dim_west.json
deleted file mode 100644
index 76ad7af2..00000000
--- a/0.10.3/Common/src/generated/resources/assets/hexcasting/models/block/redstone_directrix_powered_dim_west.json
+++ /dev/null
@@ -1,12 +0,0 @@
-{
- "parent": "minecraft:block/cube",
- "textures": {
- "down": "hexcasting:block/directrix/redstone/left_powered_dim",
- "east": "hexcasting:block/directrix/redstone/back_powered",
- "north": "hexcasting:block/directrix/redstone/right_powered_dim",
- "particle": "hexcasting:block/slate",
- "south": "hexcasting:block/directrix/redstone/left_powered_dim",
- "up": "hexcasting:block/directrix/redstone/left_powered_dim",
- "west": "hexcasting:block/directrix/redstone/front_dim"
- }
-}
\ No newline at end of file
diff --git a/0.10.3/Common/src/generated/resources/assets/hexcasting/models/block/redstone_directrix_powered_lit_down.json b/0.10.3/Common/src/generated/resources/assets/hexcasting/models/block/redstone_directrix_powered_lit_down.json
deleted file mode 100644
index 5b04d3fa..00000000
--- a/0.10.3/Common/src/generated/resources/assets/hexcasting/models/block/redstone_directrix_powered_lit_down.json
+++ /dev/null
@@ -1,12 +0,0 @@
-{
- "parent": "minecraft:block/cube",
- "textures": {
- "down": "hexcasting:block/directrix/redstone/front_lit",
- "east": "hexcasting:block/directrix/redstone/down_powered_lit",
- "north": "hexcasting:block/directrix/redstone/down_powered_lit",
- "particle": "hexcasting:block/slate",
- "south": "hexcasting:block/directrix/redstone/down_powered_lit",
- "up": "hexcasting:block/directrix/redstone/back_powered",
- "west": "hexcasting:block/directrix/redstone/down_powered_lit"
- }
-}
\ No newline at end of file
diff --git a/0.10.3/Common/src/generated/resources/assets/hexcasting/models/block/redstone_directrix_powered_lit_east.json b/0.10.3/Common/src/generated/resources/assets/hexcasting/models/block/redstone_directrix_powered_lit_east.json
deleted file mode 100644
index 8f0e3cc0..00000000
--- a/0.10.3/Common/src/generated/resources/assets/hexcasting/models/block/redstone_directrix_powered_lit_east.json
+++ /dev/null
@@ -1,12 +0,0 @@
-{
- "parent": "minecraft:block/cube",
- "textures": {
- "down": "hexcasting:block/directrix/redstone/right_powered_lit",
- "east": "hexcasting:block/directrix/redstone/front_lit",
- "north": "hexcasting:block/directrix/redstone/left_powered_lit",
- "particle": "hexcasting:block/slate",
- "south": "hexcasting:block/directrix/redstone/right_powered_lit",
- "up": "hexcasting:block/directrix/redstone/right_powered_lit",
- "west": "hexcasting:block/directrix/redstone/back_powered"
- }
-}
\ No newline at end of file
diff --git a/0.10.3/Common/src/generated/resources/assets/hexcasting/models/block/redstone_directrix_powered_lit_north.json b/0.10.3/Common/src/generated/resources/assets/hexcasting/models/block/redstone_directrix_powered_lit_north.json
deleted file mode 100644
index 3f33bc75..00000000
--- a/0.10.3/Common/src/generated/resources/assets/hexcasting/models/block/redstone_directrix_powered_lit_north.json
+++ /dev/null
@@ -1,12 +0,0 @@
-{
- "parent": "minecraft:block/cube",
- "textures": {
- "down": "hexcasting:block/directrix/redstone/down_powered_lit",
- "east": "hexcasting:block/directrix/redstone/right_powered_lit",
- "north": "hexcasting:block/directrix/redstone/front_lit",
- "particle": "hexcasting:block/slate",
- "south": "hexcasting:block/directrix/redstone/back_powered",
- "up": "hexcasting:block/directrix/redstone/up_powered_lit",
- "west": "hexcasting:block/directrix/redstone/left_powered_lit"
- }
-}
\ No newline at end of file
diff --git a/0.10.3/Common/src/generated/resources/assets/hexcasting/models/block/redstone_directrix_powered_lit_south.json b/0.10.3/Common/src/generated/resources/assets/hexcasting/models/block/redstone_directrix_powered_lit_south.json
deleted file mode 100644
index 801dcd30..00000000
--- a/0.10.3/Common/src/generated/resources/assets/hexcasting/models/block/redstone_directrix_powered_lit_south.json
+++ /dev/null
@@ -1,12 +0,0 @@
-{
- "parent": "minecraft:block/cube",
- "textures": {
- "down": "hexcasting:block/directrix/redstone/up_powered_lit",
- "east": "hexcasting:block/directrix/redstone/left_powered_lit",
- "north": "hexcasting:block/directrix/redstone/back_powered",
- "particle": "hexcasting:block/slate",
- "south": "hexcasting:block/directrix/redstone/front_lit",
- "up": "hexcasting:block/directrix/redstone/down_powered_lit",
- "west": "hexcasting:block/directrix/redstone/right_powered_lit"
- }
-}
\ No newline at end of file
diff --git a/0.10.3/Common/src/generated/resources/assets/hexcasting/models/block/redstone_directrix_powered_lit_up.json b/0.10.3/Common/src/generated/resources/assets/hexcasting/models/block/redstone_directrix_powered_lit_up.json
deleted file mode 100644
index 6090255b..00000000
--- a/0.10.3/Common/src/generated/resources/assets/hexcasting/models/block/redstone_directrix_powered_lit_up.json
+++ /dev/null
@@ -1,12 +0,0 @@
-{
- "parent": "minecraft:block/cube",
- "textures": {
- "down": "hexcasting:block/directrix/redstone/back_powered",
- "east": "hexcasting:block/directrix/redstone/up_powered_lit",
- "north": "hexcasting:block/directrix/redstone/up_powered_lit",
- "particle": "hexcasting:block/slate",
- "south": "hexcasting:block/directrix/redstone/up_powered_lit",
- "up": "hexcasting:block/directrix/redstone/front_lit",
- "west": "hexcasting:block/directrix/redstone/up_powered_lit"
- }
-}
\ No newline at end of file
diff --git a/0.10.3/Common/src/generated/resources/assets/hexcasting/models/block/redstone_directrix_powered_lit_west.json b/0.10.3/Common/src/generated/resources/assets/hexcasting/models/block/redstone_directrix_powered_lit_west.json
deleted file mode 100644
index 2638f433..00000000
--- a/0.10.3/Common/src/generated/resources/assets/hexcasting/models/block/redstone_directrix_powered_lit_west.json
+++ /dev/null
@@ -1,12 +0,0 @@
-{
- "parent": "minecraft:block/cube",
- "textures": {
- "down": "hexcasting:block/directrix/redstone/left_powered_lit",
- "east": "hexcasting:block/directrix/redstone/back_powered",
- "north": "hexcasting:block/directrix/redstone/right_powered_lit",
- "particle": "hexcasting:block/slate",
- "south": "hexcasting:block/directrix/redstone/left_powered_lit",
- "up": "hexcasting:block/directrix/redstone/left_powered_lit",
- "west": "hexcasting:block/directrix/redstone/front_lit"
- }
-}
\ No newline at end of file
diff --git a/0.10.3/Common/src/generated/resources/assets/hexcasting/models/block/redstone_directrix_unpowered_dim_down.json b/0.10.3/Common/src/generated/resources/assets/hexcasting/models/block/redstone_directrix_unpowered_dim_down.json
deleted file mode 100644
index 5e814990..00000000
--- a/0.10.3/Common/src/generated/resources/assets/hexcasting/models/block/redstone_directrix_unpowered_dim_down.json
+++ /dev/null
@@ -1,12 +0,0 @@
-{
- "parent": "minecraft:block/cube",
- "textures": {
- "down": "hexcasting:block/directrix/redstone/front_dim",
- "east": "hexcasting:block/directrix/redstone/down_unpowered_dim",
- "north": "hexcasting:block/directrix/redstone/down_unpowered_dim",
- "particle": "hexcasting:block/slate",
- "south": "hexcasting:block/directrix/redstone/down_unpowered_dim",
- "up": "hexcasting:block/directrix/redstone/back_unpowered",
- "west": "hexcasting:block/directrix/redstone/down_unpowered_dim"
- }
-}
\ No newline at end of file
diff --git a/0.10.3/Common/src/generated/resources/assets/hexcasting/models/block/redstone_directrix_unpowered_dim_east.json b/0.10.3/Common/src/generated/resources/assets/hexcasting/models/block/redstone_directrix_unpowered_dim_east.json
deleted file mode 100644
index 40460f71..00000000
--- a/0.10.3/Common/src/generated/resources/assets/hexcasting/models/block/redstone_directrix_unpowered_dim_east.json
+++ /dev/null
@@ -1,12 +0,0 @@
-{
- "parent": "minecraft:block/cube",
- "textures": {
- "down": "hexcasting:block/directrix/redstone/right_unpowered_dim",
- "east": "hexcasting:block/directrix/redstone/front_dim",
- "north": "hexcasting:block/directrix/redstone/left_unpowered_dim",
- "particle": "hexcasting:block/slate",
- "south": "hexcasting:block/directrix/redstone/right_unpowered_dim",
- "up": "hexcasting:block/directrix/redstone/right_unpowered_dim",
- "west": "hexcasting:block/directrix/redstone/back_unpowered"
- }
-}
\ No newline at end of file
diff --git a/0.10.3/Common/src/generated/resources/assets/hexcasting/models/block/redstone_directrix_unpowered_dim_north.json b/0.10.3/Common/src/generated/resources/assets/hexcasting/models/block/redstone_directrix_unpowered_dim_north.json
deleted file mode 100644
index d9a6b0a9..00000000
--- a/0.10.3/Common/src/generated/resources/assets/hexcasting/models/block/redstone_directrix_unpowered_dim_north.json
+++ /dev/null
@@ -1,12 +0,0 @@
-{
- "parent": "minecraft:block/cube",
- "textures": {
- "down": "hexcasting:block/directrix/redstone/down_unpowered_dim",
- "east": "hexcasting:block/directrix/redstone/right_unpowered_dim",
- "north": "hexcasting:block/directrix/redstone/front_dim",
- "particle": "hexcasting:block/slate",
- "south": "hexcasting:block/directrix/redstone/back_unpowered",
- "up": "hexcasting:block/directrix/redstone/up_unpowered_dim",
- "west": "hexcasting:block/directrix/redstone/left_unpowered_dim"
- }
-}
\ No newline at end of file
diff --git a/0.10.3/Common/src/generated/resources/assets/hexcasting/models/block/redstone_directrix_unpowered_dim_south.json b/0.10.3/Common/src/generated/resources/assets/hexcasting/models/block/redstone_directrix_unpowered_dim_south.json
deleted file mode 100644
index 29d140d9..00000000
--- a/0.10.3/Common/src/generated/resources/assets/hexcasting/models/block/redstone_directrix_unpowered_dim_south.json
+++ /dev/null
@@ -1,12 +0,0 @@
-{
- "parent": "minecraft:block/cube",
- "textures": {
- "down": "hexcasting:block/directrix/redstone/up_unpowered_dim",
- "east": "hexcasting:block/directrix/redstone/left_unpowered_dim",
- "north": "hexcasting:block/directrix/redstone/back_unpowered",
- "particle": "hexcasting:block/slate",
- "south": "hexcasting:block/directrix/redstone/front_dim",
- "up": "hexcasting:block/directrix/redstone/down_unpowered_dim",
- "west": "hexcasting:block/directrix/redstone/right_unpowered_dim"
- }
-}
\ No newline at end of file
diff --git a/0.10.3/Common/src/generated/resources/assets/hexcasting/models/block/redstone_directrix_unpowered_dim_up.json b/0.10.3/Common/src/generated/resources/assets/hexcasting/models/block/redstone_directrix_unpowered_dim_up.json
deleted file mode 100644
index ed9d365b..00000000
--- a/0.10.3/Common/src/generated/resources/assets/hexcasting/models/block/redstone_directrix_unpowered_dim_up.json
+++ /dev/null
@@ -1,12 +0,0 @@
-{
- "parent": "minecraft:block/cube",
- "textures": {
- "down": "hexcasting:block/directrix/redstone/back_unpowered",
- "east": "hexcasting:block/directrix/redstone/up_unpowered_dim",
- "north": "hexcasting:block/directrix/redstone/up_unpowered_dim",
- "particle": "hexcasting:block/slate",
- "south": "hexcasting:block/directrix/redstone/up_unpowered_dim",
- "up": "hexcasting:block/directrix/redstone/front_dim",
- "west": "hexcasting:block/directrix/redstone/up_unpowered_dim"
- }
-}
\ No newline at end of file
diff --git a/0.10.3/Common/src/generated/resources/assets/hexcasting/models/block/redstone_directrix_unpowered_dim_west.json b/0.10.3/Common/src/generated/resources/assets/hexcasting/models/block/redstone_directrix_unpowered_dim_west.json
deleted file mode 100644
index a88eaf5b..00000000
--- a/0.10.3/Common/src/generated/resources/assets/hexcasting/models/block/redstone_directrix_unpowered_dim_west.json
+++ /dev/null
@@ -1,12 +0,0 @@
-{
- "parent": "minecraft:block/cube",
- "textures": {
- "down": "hexcasting:block/directrix/redstone/left_unpowered_dim",
- "east": "hexcasting:block/directrix/redstone/back_unpowered",
- "north": "hexcasting:block/directrix/redstone/right_unpowered_dim",
- "particle": "hexcasting:block/slate",
- "south": "hexcasting:block/directrix/redstone/left_unpowered_dim",
- "up": "hexcasting:block/directrix/redstone/left_unpowered_dim",
- "west": "hexcasting:block/directrix/redstone/front_dim"
- }
-}
\ No newline at end of file
diff --git a/0.10.3/Common/src/generated/resources/assets/hexcasting/models/block/redstone_directrix_unpowered_lit_down.json b/0.10.3/Common/src/generated/resources/assets/hexcasting/models/block/redstone_directrix_unpowered_lit_down.json
deleted file mode 100644
index 4bd80415..00000000
--- a/0.10.3/Common/src/generated/resources/assets/hexcasting/models/block/redstone_directrix_unpowered_lit_down.json
+++ /dev/null
@@ -1,12 +0,0 @@
-{
- "parent": "minecraft:block/cube",
- "textures": {
- "down": "hexcasting:block/directrix/redstone/front_lit",
- "east": "hexcasting:block/directrix/redstone/down_unpowered_lit",
- "north": "hexcasting:block/directrix/redstone/down_unpowered_lit",
- "particle": "hexcasting:block/slate",
- "south": "hexcasting:block/directrix/redstone/down_unpowered_lit",
- "up": "hexcasting:block/directrix/redstone/back_unpowered",
- "west": "hexcasting:block/directrix/redstone/down_unpowered_lit"
- }
-}
\ No newline at end of file
diff --git a/0.10.3/Common/src/generated/resources/assets/hexcasting/models/block/redstone_directrix_unpowered_lit_east.json b/0.10.3/Common/src/generated/resources/assets/hexcasting/models/block/redstone_directrix_unpowered_lit_east.json
deleted file mode 100644
index 6dc5b454..00000000
--- a/0.10.3/Common/src/generated/resources/assets/hexcasting/models/block/redstone_directrix_unpowered_lit_east.json
+++ /dev/null
@@ -1,12 +0,0 @@
-{
- "parent": "minecraft:block/cube",
- "textures": {
- "down": "hexcasting:block/directrix/redstone/right_unpowered_lit",
- "east": "hexcasting:block/directrix/redstone/front_lit",
- "north": "hexcasting:block/directrix/redstone/left_unpowered_lit",
- "particle": "hexcasting:block/slate",
- "south": "hexcasting:block/directrix/redstone/right_unpowered_lit",
- "up": "hexcasting:block/directrix/redstone/right_unpowered_lit",
- "west": "hexcasting:block/directrix/redstone/back_unpowered"
- }
-}
\ No newline at end of file
diff --git a/0.10.3/Common/src/generated/resources/assets/hexcasting/models/block/redstone_directrix_unpowered_lit_north.json b/0.10.3/Common/src/generated/resources/assets/hexcasting/models/block/redstone_directrix_unpowered_lit_north.json
deleted file mode 100644
index df773c09..00000000
--- a/0.10.3/Common/src/generated/resources/assets/hexcasting/models/block/redstone_directrix_unpowered_lit_north.json
+++ /dev/null
@@ -1,12 +0,0 @@
-{
- "parent": "minecraft:block/cube",
- "textures": {
- "down": "hexcasting:block/directrix/redstone/down_unpowered_lit",
- "east": "hexcasting:block/directrix/redstone/right_unpowered_lit",
- "north": "hexcasting:block/directrix/redstone/front_lit",
- "particle": "hexcasting:block/slate",
- "south": "hexcasting:block/directrix/redstone/back_unpowered",
- "up": "hexcasting:block/directrix/redstone/up_unpowered_lit",
- "west": "hexcasting:block/directrix/redstone/left_unpowered_lit"
- }
-}
\ No newline at end of file
diff --git a/0.10.3/Common/src/generated/resources/assets/hexcasting/models/block/redstone_directrix_unpowered_lit_south.json b/0.10.3/Common/src/generated/resources/assets/hexcasting/models/block/redstone_directrix_unpowered_lit_south.json
deleted file mode 100644
index 95b474f8..00000000
--- a/0.10.3/Common/src/generated/resources/assets/hexcasting/models/block/redstone_directrix_unpowered_lit_south.json
+++ /dev/null
@@ -1,12 +0,0 @@
-{
- "parent": "minecraft:block/cube",
- "textures": {
- "down": "hexcasting:block/directrix/redstone/up_unpowered_lit",
- "east": "hexcasting:block/directrix/redstone/left_unpowered_lit",
- "north": "hexcasting:block/directrix/redstone/back_unpowered",
- "particle": "hexcasting:block/slate",
- "south": "hexcasting:block/directrix/redstone/front_lit",
- "up": "hexcasting:block/directrix/redstone/down_unpowered_lit",
- "west": "hexcasting:block/directrix/redstone/right_unpowered_lit"
- }
-}
\ No newline at end of file
diff --git a/0.10.3/Common/src/generated/resources/assets/hexcasting/models/block/redstone_directrix_unpowered_lit_up.json b/0.10.3/Common/src/generated/resources/assets/hexcasting/models/block/redstone_directrix_unpowered_lit_up.json
deleted file mode 100644
index fa0655ca..00000000
--- a/0.10.3/Common/src/generated/resources/assets/hexcasting/models/block/redstone_directrix_unpowered_lit_up.json
+++ /dev/null
@@ -1,12 +0,0 @@
-{
- "parent": "minecraft:block/cube",
- "textures": {
- "down": "hexcasting:block/directrix/redstone/back_unpowered",
- "east": "hexcasting:block/directrix/redstone/up_unpowered_lit",
- "north": "hexcasting:block/directrix/redstone/up_unpowered_lit",
- "particle": "hexcasting:block/slate",
- "south": "hexcasting:block/directrix/redstone/up_unpowered_lit",
- "up": "hexcasting:block/directrix/redstone/front_lit",
- "west": "hexcasting:block/directrix/redstone/up_unpowered_lit"
- }
-}
\ No newline at end of file
diff --git a/0.10.3/Common/src/generated/resources/assets/hexcasting/models/block/redstone_directrix_unpowered_lit_west.json b/0.10.3/Common/src/generated/resources/assets/hexcasting/models/block/redstone_directrix_unpowered_lit_west.json
deleted file mode 100644
index c8f4e80c..00000000
--- a/0.10.3/Common/src/generated/resources/assets/hexcasting/models/block/redstone_directrix_unpowered_lit_west.json
+++ /dev/null
@@ -1,12 +0,0 @@
-{
- "parent": "minecraft:block/cube",
- "textures": {
- "down": "hexcasting:block/directrix/redstone/left_unpowered_lit",
- "east": "hexcasting:block/directrix/redstone/back_unpowered",
- "north": "hexcasting:block/directrix/redstone/right_unpowered_lit",
- "particle": "hexcasting:block/slate",
- "south": "hexcasting:block/directrix/redstone/left_unpowered_lit",
- "up": "hexcasting:block/directrix/redstone/left_unpowered_lit",
- "west": "hexcasting:block/directrix/redstone/front_lit"
- }
-}
\ No newline at end of file
diff --git a/0.10.3/Common/src/generated/resources/assets/hexcasting/models/block/scroll_paper.json b/0.10.3/Common/src/generated/resources/assets/hexcasting/models/block/scroll_paper.json
deleted file mode 100644
index 621451b7..00000000
--- a/0.10.3/Common/src/generated/resources/assets/hexcasting/models/block/scroll_paper.json
+++ /dev/null
@@ -1,6 +0,0 @@
-{
- "parent": "minecraft:block/cube_all",
- "textures": {
- "all": "hexcasting:block/scroll_paper"
- }
-}
\ No newline at end of file
diff --git a/0.10.3/Common/src/generated/resources/assets/hexcasting/models/block/scroll_paper_lantern.json b/0.10.3/Common/src/generated/resources/assets/hexcasting/models/block/scroll_paper_lantern.json
deleted file mode 100644
index 3c16a211..00000000
--- a/0.10.3/Common/src/generated/resources/assets/hexcasting/models/block/scroll_paper_lantern.json
+++ /dev/null
@@ -1,8 +0,0 @@
-{
- "parent": "minecraft:block/cube_bottom_top",
- "textures": {
- "bottom": "hexcasting:block/scroll_paper_lantern_bottom",
- "side": "hexcasting:block/scroll_paper_lantern_side",
- "top": "hexcasting:block/scroll_paper_lantern_top"
- }
-}
\ No newline at end of file
diff --git a/0.10.3/Common/src/generated/resources/assets/hexcasting/models/block/slate_block.json b/0.10.3/Common/src/generated/resources/assets/hexcasting/models/block/slate_block.json
deleted file mode 100644
index 0afe24d8..00000000
--- a/0.10.3/Common/src/generated/resources/assets/hexcasting/models/block/slate_block.json
+++ /dev/null
@@ -1,6 +0,0 @@
-{
- "parent": "minecraft:block/cube_all",
- "textures": {
- "all": "hexcasting:block/slate"
- }
-}
\ No newline at end of file
diff --git a/0.10.3/Common/src/generated/resources/assets/hexcasting/models/block/stripped_edified_log.json b/0.10.3/Common/src/generated/resources/assets/hexcasting/models/block/stripped_edified_log.json
deleted file mode 100644
index 4aa871e9..00000000
--- a/0.10.3/Common/src/generated/resources/assets/hexcasting/models/block/stripped_edified_log.json
+++ /dev/null
@@ -1,7 +0,0 @@
-{
- "parent": "minecraft:block/cube_column",
- "textures": {
- "end": "hexcasting:block/stripped_edified_log_top",
- "side": "hexcasting:block/stripped_edified_log"
- }
-}
\ No newline at end of file
diff --git a/0.10.3/Common/src/generated/resources/assets/hexcasting/models/block/stripped_edified_log_horizontal.json b/0.10.3/Common/src/generated/resources/assets/hexcasting/models/block/stripped_edified_log_horizontal.json
deleted file mode 100644
index 0925c23c..00000000
--- a/0.10.3/Common/src/generated/resources/assets/hexcasting/models/block/stripped_edified_log_horizontal.json
+++ /dev/null
@@ -1,7 +0,0 @@
-{
- "parent": "minecraft:block/cube_column_horizontal",
- "textures": {
- "end": "hexcasting:block/stripped_edified_log_top",
- "side": "hexcasting:block/stripped_edified_log"
- }
-}
\ No newline at end of file
diff --git a/0.10.3/Common/src/generated/resources/assets/hexcasting/models/block/stripped_edified_wood.json b/0.10.3/Common/src/generated/resources/assets/hexcasting/models/block/stripped_edified_wood.json
deleted file mode 100644
index 8ef17c0d..00000000
--- a/0.10.3/Common/src/generated/resources/assets/hexcasting/models/block/stripped_edified_wood.json
+++ /dev/null
@@ -1,7 +0,0 @@
-{
- "parent": "minecraft:block/cube_column",
- "textures": {
- "end": "hexcasting:block/stripped_edified_log",
- "side": "hexcasting:block/stripped_edified_log"
- }
-}
\ No newline at end of file
diff --git a/0.10.3/Common/src/generated/resources/assets/hexcasting/models/block/stripped_edified_wood_horizontal.json b/0.10.3/Common/src/generated/resources/assets/hexcasting/models/block/stripped_edified_wood_horizontal.json
deleted file mode 100644
index 57dcfcc5..00000000
--- a/0.10.3/Common/src/generated/resources/assets/hexcasting/models/block/stripped_edified_wood_horizontal.json
+++ /dev/null
@@ -1,7 +0,0 @@
-{
- "parent": "minecraft:block/cube_column_horizontal",
- "textures": {
- "end": "hexcasting:block/stripped_edified_log",
- "side": "hexcasting:block/stripped_edified_log"
- }
-}
\ No newline at end of file
diff --git a/0.10.3/Common/src/generated/resources/assets/hexcasting/models/item/abacus.json b/0.10.3/Common/src/generated/resources/assets/hexcasting/models/item/abacus.json
deleted file mode 100644
index f6947c43..00000000
--- a/0.10.3/Common/src/generated/resources/assets/hexcasting/models/item/abacus.json
+++ /dev/null
@@ -1,6 +0,0 @@
-{
- "parent": "minecraft:item/generated",
- "textures": {
- "layer0": "hexcasting:item/abacus"
- }
-}
\ No newline at end of file
diff --git a/0.10.3/Common/src/generated/resources/assets/hexcasting/models/item/acacia_staff.json b/0.10.3/Common/src/generated/resources/assets/hexcasting/models/item/acacia_staff.json
deleted file mode 100644
index b1db1c8f..00000000
--- a/0.10.3/Common/src/generated/resources/assets/hexcasting/models/item/acacia_staff.json
+++ /dev/null
@@ -1,26 +0,0 @@
-{
- "parent": "minecraft:item/handheld_rod",
- "overrides": [
- {
- "model": "hexcasting:item/acacia_staff",
- "predicate": {
- "hexcasting:funny_level": 0.0
- }
- },
- {
- "model": "hexcasting:item/old_staff",
- "predicate": {
- "hexcasting:funny_level": 1.0
- }
- },
- {
- "model": "hexcasting:item/bosnia_staff",
- "predicate": {
- "hexcasting:funny_level": 2.0
- }
- }
- ],
- "textures": {
- "layer0": "hexcasting:item/staves/acacia"
- }
-}
\ No newline at end of file
diff --git a/0.10.3/Common/src/generated/resources/assets/hexcasting/models/item/akashic_bookshelf.json b/0.10.3/Common/src/generated/resources/assets/hexcasting/models/item/akashic_bookshelf.json
deleted file mode 100644
index 7c88c3e2..00000000
--- a/0.10.3/Common/src/generated/resources/assets/hexcasting/models/item/akashic_bookshelf.json
+++ /dev/null
@@ -1,3 +0,0 @@
-{
- "parent": "hexcasting:block/akashic_bookshelf_empty"
-}
\ No newline at end of file
diff --git a/0.10.3/Common/src/generated/resources/assets/hexcasting/models/item/akashic_connector.json b/0.10.3/Common/src/generated/resources/assets/hexcasting/models/item/akashic_connector.json
deleted file mode 100644
index de9a37be..00000000
--- a/0.10.3/Common/src/generated/resources/assets/hexcasting/models/item/akashic_connector.json
+++ /dev/null
@@ -1,3 +0,0 @@
-{
- "parent": "hexcasting:block/akashic_ligature"
-}
\ No newline at end of file
diff --git a/0.10.3/Common/src/generated/resources/assets/hexcasting/models/item/akashic_record.json b/0.10.3/Common/src/generated/resources/assets/hexcasting/models/item/akashic_record.json
deleted file mode 100644
index 1ea5e0ee..00000000
--- a/0.10.3/Common/src/generated/resources/assets/hexcasting/models/item/akashic_record.json
+++ /dev/null
@@ -1,3 +0,0 @@
-{
- "parent": "hexcasting:block/akashic_record"
-}
\ No newline at end of file
diff --git a/0.10.3/Common/src/generated/resources/assets/hexcasting/models/item/amethyst_dust.json b/0.10.3/Common/src/generated/resources/assets/hexcasting/models/item/amethyst_dust.json
deleted file mode 100644
index 140659df..00000000
--- a/0.10.3/Common/src/generated/resources/assets/hexcasting/models/item/amethyst_dust.json
+++ /dev/null
@@ -1,6 +0,0 @@
-{
- "parent": "minecraft:item/generated",
- "textures": {
- "layer0": "hexcasting:item/amethyst_dust"
- }
-}
\ No newline at end of file
diff --git a/0.10.3/Common/src/generated/resources/assets/hexcasting/models/item/amethyst_dust_block.json b/0.10.3/Common/src/generated/resources/assets/hexcasting/models/item/amethyst_dust_block.json
deleted file mode 100644
index 8cd53fc3..00000000
--- a/0.10.3/Common/src/generated/resources/assets/hexcasting/models/item/amethyst_dust_block.json
+++ /dev/null
@@ -1,3 +0,0 @@
-{
- "parent": "hexcasting:block/amethyst_dust_block"
-}
\ No newline at end of file
diff --git a/0.10.3/Common/src/generated/resources/assets/hexcasting/models/item/amethyst_edified_leaves.json b/0.10.3/Common/src/generated/resources/assets/hexcasting/models/item/amethyst_edified_leaves.json
deleted file mode 100644
index d6015ea1..00000000
--- a/0.10.3/Common/src/generated/resources/assets/hexcasting/models/item/amethyst_edified_leaves.json
+++ /dev/null
@@ -1,3 +0,0 @@
-{
- "parent": "hexcasting:block/amethyst_edified_leaves"
-}
\ No newline at end of file
diff --git a/0.10.3/Common/src/generated/resources/assets/hexcasting/models/item/amethyst_sconce.json b/0.10.3/Common/src/generated/resources/assets/hexcasting/models/item/amethyst_sconce.json
deleted file mode 100644
index bb1657f9..00000000
--- a/0.10.3/Common/src/generated/resources/assets/hexcasting/models/item/amethyst_sconce.json
+++ /dev/null
@@ -1,3 +0,0 @@
-{
- "parent": "hexcasting:block/amethyst_sconce"
-}
\ No newline at end of file
diff --git a/0.10.3/Common/src/generated/resources/assets/hexcasting/models/item/amethyst_tiles.json b/0.10.3/Common/src/generated/resources/assets/hexcasting/models/item/amethyst_tiles.json
deleted file mode 100644
index 580c37a9..00000000
--- a/0.10.3/Common/src/generated/resources/assets/hexcasting/models/item/amethyst_tiles.json
+++ /dev/null
@@ -1,3 +0,0 @@
-{
- "parent": "hexcasting:block/amethyst_tiles"
-}
\ No newline at end of file
diff --git a/0.10.3/Common/src/generated/resources/assets/hexcasting/models/item/ancient_scroll_paper.json b/0.10.3/Common/src/generated/resources/assets/hexcasting/models/item/ancient_scroll_paper.json
deleted file mode 100644
index 810d0e68..00000000
--- a/0.10.3/Common/src/generated/resources/assets/hexcasting/models/item/ancient_scroll_paper.json
+++ /dev/null
@@ -1,3 +0,0 @@
-{
- "parent": "hexcasting:block/ancient_scroll_paper"
-}
\ No newline at end of file
diff --git a/0.10.3/Common/src/generated/resources/assets/hexcasting/models/item/ancient_scroll_paper_lantern.json b/0.10.3/Common/src/generated/resources/assets/hexcasting/models/item/ancient_scroll_paper_lantern.json
deleted file mode 100644
index 39cf0ac2..00000000
--- a/0.10.3/Common/src/generated/resources/assets/hexcasting/models/item/ancient_scroll_paper_lantern.json
+++ /dev/null
@@ -1,3 +0,0 @@
-{
- "parent": "hexcasting:block/ancient_scroll_paper_lantern"
-}
\ No newline at end of file
diff --git a/0.10.3/Common/src/generated/resources/assets/hexcasting/models/item/artifact.json b/0.10.3/Common/src/generated/resources/assets/hexcasting/models/item/artifact.json
deleted file mode 100644
index d7e2a248..00000000
--- a/0.10.3/Common/src/generated/resources/assets/hexcasting/models/item/artifact.json
+++ /dev/null
@@ -1,20 +0,0 @@
-{
- "parent": "minecraft:item/generated",
- "overrides": [
- {
- "model": "hexcasting:item/artifact",
- "predicate": {
- "hexcasting:has_patterns": -0.01
- }
- },
- {
- "model": "hexcasting:item/artifact_filled",
- "predicate": {
- "hexcasting:has_patterns": 0.99
- }
- }
- ],
- "textures": {
- "layer0": "hexcasting:item/artifact"
- }
-}
\ No newline at end of file
diff --git a/0.10.3/Common/src/generated/resources/assets/hexcasting/models/item/artifact_filled.json b/0.10.3/Common/src/generated/resources/assets/hexcasting/models/item/artifact_filled.json
deleted file mode 100644
index 9fdab84a..00000000
--- a/0.10.3/Common/src/generated/resources/assets/hexcasting/models/item/artifact_filled.json
+++ /dev/null
@@ -1,6 +0,0 @@
-{
- "parent": "minecraft:item/generated",
- "textures": {
- "layer0": "hexcasting:item/artifact_filled"
- }
-}
\ No newline at end of file
diff --git a/0.10.3/Common/src/generated/resources/assets/hexcasting/models/item/aventurine_edified_leaves.json b/0.10.3/Common/src/generated/resources/assets/hexcasting/models/item/aventurine_edified_leaves.json
deleted file mode 100644
index 0ae33021..00000000
--- a/0.10.3/Common/src/generated/resources/assets/hexcasting/models/item/aventurine_edified_leaves.json
+++ /dev/null
@@ -1,3 +0,0 @@
-{
- "parent": "hexcasting:block/aventurine_edified_leaves"
-}
\ No newline at end of file
diff --git a/0.10.3/Common/src/generated/resources/assets/hexcasting/models/item/battery.json b/0.10.3/Common/src/generated/resources/assets/hexcasting/models/item/battery.json
deleted file mode 100644
index b446fb0e..00000000
--- a/0.10.3/Common/src/generated/resources/assets/hexcasting/models/item/battery.json
+++ /dev/null
@@ -1,109 +0,0 @@
-{
- "overrides": [
- {
- "model": "hexcasting:item/phial_small_0",
- "predicate": {
- "hexcasting:max_media": 0.0,
- "hexcasting:media": 0.0
- }
- },
- {
- "model": "hexcasting:item/phial_small_1",
- "predicate": {
- "hexcasting:max_media": 0.0,
- "hexcasting:media": 0.25
- }
- },
- {
- "model": "hexcasting:item/phial_small_2",
- "predicate": {
- "hexcasting:max_media": 0.0,
- "hexcasting:media": 0.5
- }
- },
- {
- "model": "hexcasting:item/phial_small_3",
- "predicate": {
- "hexcasting:max_media": 0.0,
- "hexcasting:media": 0.75
- }
- },
- {
- "model": "hexcasting:item/phial_small_4",
- "predicate": {
- "hexcasting:max_media": 0.0,
- "hexcasting:media": 1.0
- }
- },
- {
- "model": "hexcasting:item/phial_medium_0",
- "predicate": {
- "hexcasting:max_media": 1.0,
- "hexcasting:media": 0.0
- }
- },
- {
- "model": "hexcasting:item/phial_medium_1",
- "predicate": {
- "hexcasting:max_media": 1.0,
- "hexcasting:media": 0.25
- }
- },
- {
- "model": "hexcasting:item/phial_medium_2",
- "predicate": {
- "hexcasting:max_media": 1.0,
- "hexcasting:media": 0.5
- }
- },
- {
- "model": "hexcasting:item/phial_medium_3",
- "predicate": {
- "hexcasting:max_media": 1.0,
- "hexcasting:media": 0.75
- }
- },
- {
- "model": "hexcasting:item/phial_medium_4",
- "predicate": {
- "hexcasting:max_media": 1.0,
- "hexcasting:media": 1.0
- }
- },
- {
- "model": "hexcasting:item/phial_large_0",
- "predicate": {
- "hexcasting:max_media": 2.0,
- "hexcasting:media": 0.0
- }
- },
- {
- "model": "hexcasting:item/phial_large_1",
- "predicate": {
- "hexcasting:max_media": 2.0,
- "hexcasting:media": 0.25
- }
- },
- {
- "model": "hexcasting:item/phial_large_2",
- "predicate": {
- "hexcasting:max_media": 2.0,
- "hexcasting:media": 0.5
- }
- },
- {
- "model": "hexcasting:item/phial_large_3",
- "predicate": {
- "hexcasting:max_media": 2.0,
- "hexcasting:media": 0.75
- }
- },
- {
- "model": "hexcasting:item/phial_large_4",
- "predicate": {
- "hexcasting:max_media": 2.0,
- "hexcasting:media": 1.0
- }
- }
- ]
-}
\ No newline at end of file
diff --git a/0.10.3/Common/src/generated/resources/assets/hexcasting/models/item/birch_staff.json b/0.10.3/Common/src/generated/resources/assets/hexcasting/models/item/birch_staff.json
deleted file mode 100644
index f3705923..00000000
--- a/0.10.3/Common/src/generated/resources/assets/hexcasting/models/item/birch_staff.json
+++ /dev/null
@@ -1,26 +0,0 @@
-{
- "parent": "minecraft:item/handheld_rod",
- "overrides": [
- {
- "model": "hexcasting:item/birch_staff",
- "predicate": {
- "hexcasting:funny_level": 0.0
- }
- },
- {
- "model": "hexcasting:item/old_staff",
- "predicate": {
- "hexcasting:funny_level": 1.0
- }
- },
- {
- "model": "hexcasting:item/bosnia_staff",
- "predicate": {
- "hexcasting:funny_level": 2.0
- }
- }
- ],
- "textures": {
- "layer0": "hexcasting:item/staves/birch"
- }
-}
\ No newline at end of file
diff --git a/0.10.3/Common/src/generated/resources/assets/hexcasting/models/item/bosnia_staff.json b/0.10.3/Common/src/generated/resources/assets/hexcasting/models/item/bosnia_staff.json
deleted file mode 100644
index ef91e958..00000000
--- a/0.10.3/Common/src/generated/resources/assets/hexcasting/models/item/bosnia_staff.json
+++ /dev/null
@@ -1,6 +0,0 @@
-{
- "parent": "minecraft:item/handheld_rod",
- "textures": {
- "layer0": "hexcasting:item/staves/bosnia"
- }
-}
\ No newline at end of file
diff --git a/0.10.3/Common/src/generated/resources/assets/hexcasting/models/item/charged_amethyst.json b/0.10.3/Common/src/generated/resources/assets/hexcasting/models/item/charged_amethyst.json
deleted file mode 100644
index 2d147958..00000000
--- a/0.10.3/Common/src/generated/resources/assets/hexcasting/models/item/charged_amethyst.json
+++ /dev/null
@@ -1,6 +0,0 @@
-{
- "parent": "minecraft:item/generated",
- "textures": {
- "layer0": "hexcasting:item/charged_amethyst"
- }
-}
\ No newline at end of file
diff --git a/0.10.3/Common/src/generated/resources/assets/hexcasting/models/item/citrine_edified_leaves.json b/0.10.3/Common/src/generated/resources/assets/hexcasting/models/item/citrine_edified_leaves.json
deleted file mode 100644
index f44ca6c9..00000000
--- a/0.10.3/Common/src/generated/resources/assets/hexcasting/models/item/citrine_edified_leaves.json
+++ /dev/null
@@ -1,3 +0,0 @@
-{
- "parent": "hexcasting:block/citrine_edified_leaves"
-}
\ No newline at end of file
diff --git a/0.10.3/Common/src/generated/resources/assets/hexcasting/models/item/conjured.json b/0.10.3/Common/src/generated/resources/assets/hexcasting/models/item/conjured.json
deleted file mode 100644
index a0bab4ff..00000000
--- a/0.10.3/Common/src/generated/resources/assets/hexcasting/models/item/conjured.json
+++ /dev/null
@@ -1,6 +0,0 @@
-{
- "parent": "minecraft:item/generated",
- "textures": {
- "layer0": "minecraft:item/amethyst_shard"
- }
-}
\ No newline at end of file
diff --git a/0.10.3/Common/src/generated/resources/assets/hexcasting/models/item/conjured_block.json b/0.10.3/Common/src/generated/resources/assets/hexcasting/models/item/conjured_block.json
deleted file mode 100644
index a0bab4ff..00000000
--- a/0.10.3/Common/src/generated/resources/assets/hexcasting/models/item/conjured_block.json
+++ /dev/null
@@ -1,6 +0,0 @@
-{
- "parent": "minecraft:item/generated",
- "textures": {
- "layer0": "minecraft:item/amethyst_shard"
- }
-}
\ No newline at end of file
diff --git a/0.10.3/Common/src/generated/resources/assets/hexcasting/models/item/creative_unlocker.json b/0.10.3/Common/src/generated/resources/assets/hexcasting/models/item/creative_unlocker.json
deleted file mode 100644
index 452b44f6..00000000
--- a/0.10.3/Common/src/generated/resources/assets/hexcasting/models/item/creative_unlocker.json
+++ /dev/null
@@ -1,6 +0,0 @@
-{
- "parent": "minecraft:item/generated",
- "textures": {
- "layer0": "hexcasting:item/creative_unlocker"
- }
-}
\ No newline at end of file
diff --git a/0.10.3/Common/src/generated/resources/assets/hexcasting/models/item/crimson_staff.json b/0.10.3/Common/src/generated/resources/assets/hexcasting/models/item/crimson_staff.json
deleted file mode 100644
index cc4245dc..00000000
--- a/0.10.3/Common/src/generated/resources/assets/hexcasting/models/item/crimson_staff.json
+++ /dev/null
@@ -1,26 +0,0 @@
-{
- "parent": "minecraft:item/handheld_rod",
- "overrides": [
- {
- "model": "hexcasting:item/crimson_staff",
- "predicate": {
- "hexcasting:funny_level": 0.0
- }
- },
- {
- "model": "hexcasting:item/old_staff",
- "predicate": {
- "hexcasting:funny_level": 1.0
- }
- },
- {
- "model": "hexcasting:item/bosnia_staff",
- "predicate": {
- "hexcasting:funny_level": 2.0
- }
- }
- ],
- "textures": {
- "layer0": "hexcasting:item/staves/crimson"
- }
-}
\ No newline at end of file
diff --git a/0.10.3/Common/src/generated/resources/assets/hexcasting/models/item/cypher.json b/0.10.3/Common/src/generated/resources/assets/hexcasting/models/item/cypher.json
deleted file mode 100644
index 20cd65cd..00000000
--- a/0.10.3/Common/src/generated/resources/assets/hexcasting/models/item/cypher.json
+++ /dev/null
@@ -1,20 +0,0 @@
-{
- "parent": "minecraft:item/generated",
- "overrides": [
- {
- "model": "hexcasting:item/cypher",
- "predicate": {
- "hexcasting:has_patterns": -0.01
- }
- },
- {
- "model": "hexcasting:item/cypher_filled",
- "predicate": {
- "hexcasting:has_patterns": 0.99
- }
- }
- ],
- "textures": {
- "layer0": "hexcasting:item/cypher"
- }
-}
\ No newline at end of file
diff --git a/0.10.3/Common/src/generated/resources/assets/hexcasting/models/item/cypher_filled.json b/0.10.3/Common/src/generated/resources/assets/hexcasting/models/item/cypher_filled.json
deleted file mode 100644
index 9a30752c..00000000
--- a/0.10.3/Common/src/generated/resources/assets/hexcasting/models/item/cypher_filled.json
+++ /dev/null
@@ -1,6 +0,0 @@
-{
- "parent": "minecraft:item/generated",
- "textures": {
- "layer0": "hexcasting:item/cypher_filled"
- }
-}
\ No newline at end of file
diff --git a/0.10.3/Common/src/generated/resources/assets/hexcasting/models/item/dark_oak_staff.json b/0.10.3/Common/src/generated/resources/assets/hexcasting/models/item/dark_oak_staff.json
deleted file mode 100644
index 5d11497a..00000000
--- a/0.10.3/Common/src/generated/resources/assets/hexcasting/models/item/dark_oak_staff.json
+++ /dev/null
@@ -1,26 +0,0 @@
-{
- "parent": "minecraft:item/handheld_rod",
- "overrides": [
- {
- "model": "hexcasting:item/dark_oak_staff",
- "predicate": {
- "hexcasting:funny_level": 0.0
- }
- },
- {
- "model": "hexcasting:item/old_staff",
- "predicate": {
- "hexcasting:funny_level": 1.0
- }
- },
- {
- "model": "hexcasting:item/bosnia_staff",
- "predicate": {
- "hexcasting:funny_level": 2.0
- }
- }
- ],
- "textures": {
- "layer0": "hexcasting:item/staves/dark_oak"
- }
-}
\ No newline at end of file
diff --git a/0.10.3/Common/src/generated/resources/assets/hexcasting/models/item/directrix_redstone.json b/0.10.3/Common/src/generated/resources/assets/hexcasting/models/item/directrix_redstone.json
deleted file mode 100644
index 2a2f0e74..00000000
--- a/0.10.3/Common/src/generated/resources/assets/hexcasting/models/item/directrix_redstone.json
+++ /dev/null
@@ -1,3 +0,0 @@
-{
- "parent": "hexcasting:block/redstone_directrix_unpowered_dim_north"
-}
\ No newline at end of file
diff --git a/0.10.3/Common/src/generated/resources/assets/hexcasting/models/item/dye_colorizer_black.json b/0.10.3/Common/src/generated/resources/assets/hexcasting/models/item/dye_colorizer_black.json
deleted file mode 100644
index 2f55b6c2..00000000
--- a/0.10.3/Common/src/generated/resources/assets/hexcasting/models/item/dye_colorizer_black.json
+++ /dev/null
@@ -1,6 +0,0 @@
-{
- "parent": "minecraft:item/generated",
- "textures": {
- "layer0": "hexcasting:item/colorizer/dye_black"
- }
-}
\ No newline at end of file
diff --git a/0.10.3/Common/src/generated/resources/assets/hexcasting/models/item/dye_colorizer_blue.json b/0.10.3/Common/src/generated/resources/assets/hexcasting/models/item/dye_colorizer_blue.json
deleted file mode 100644
index add421a9..00000000
--- a/0.10.3/Common/src/generated/resources/assets/hexcasting/models/item/dye_colorizer_blue.json
+++ /dev/null
@@ -1,6 +0,0 @@
-{
- "parent": "minecraft:item/generated",
- "textures": {
- "layer0": "hexcasting:item/colorizer/dye_blue"
- }
-}
\ No newline at end of file
diff --git a/0.10.3/Common/src/generated/resources/assets/hexcasting/models/item/dye_colorizer_brown.json b/0.10.3/Common/src/generated/resources/assets/hexcasting/models/item/dye_colorizer_brown.json
deleted file mode 100644
index 3be301eb..00000000
--- a/0.10.3/Common/src/generated/resources/assets/hexcasting/models/item/dye_colorizer_brown.json
+++ /dev/null
@@ -1,6 +0,0 @@
-{
- "parent": "minecraft:item/generated",
- "textures": {
- "layer0": "hexcasting:item/colorizer/dye_brown"
- }
-}
\ No newline at end of file
diff --git a/0.10.3/Common/src/generated/resources/assets/hexcasting/models/item/dye_colorizer_cyan.json b/0.10.3/Common/src/generated/resources/assets/hexcasting/models/item/dye_colorizer_cyan.json
deleted file mode 100644
index c436f315..00000000
--- a/0.10.3/Common/src/generated/resources/assets/hexcasting/models/item/dye_colorizer_cyan.json
+++ /dev/null
@@ -1,6 +0,0 @@
-{
- "parent": "minecraft:item/generated",
- "textures": {
- "layer0": "hexcasting:item/colorizer/dye_cyan"
- }
-}
\ No newline at end of file
diff --git a/0.10.3/Common/src/generated/resources/assets/hexcasting/models/item/dye_colorizer_gray.json b/0.10.3/Common/src/generated/resources/assets/hexcasting/models/item/dye_colorizer_gray.json
deleted file mode 100644
index 146f0141..00000000
--- a/0.10.3/Common/src/generated/resources/assets/hexcasting/models/item/dye_colorizer_gray.json
+++ /dev/null
@@ -1,6 +0,0 @@
-{
- "parent": "minecraft:item/generated",
- "textures": {
- "layer0": "hexcasting:item/colorizer/dye_gray"
- }
-}
\ No newline at end of file
diff --git a/0.10.3/Common/src/generated/resources/assets/hexcasting/models/item/dye_colorizer_green.json b/0.10.3/Common/src/generated/resources/assets/hexcasting/models/item/dye_colorizer_green.json
deleted file mode 100644
index 679f1479..00000000
--- a/0.10.3/Common/src/generated/resources/assets/hexcasting/models/item/dye_colorizer_green.json
+++ /dev/null
@@ -1,6 +0,0 @@
-{
- "parent": "minecraft:item/generated",
- "textures": {
- "layer0": "hexcasting:item/colorizer/dye_green"
- }
-}
\ No newline at end of file
diff --git a/0.10.3/Common/src/generated/resources/assets/hexcasting/models/item/dye_colorizer_light_blue.json b/0.10.3/Common/src/generated/resources/assets/hexcasting/models/item/dye_colorizer_light_blue.json
deleted file mode 100644
index 433877e8..00000000
--- a/0.10.3/Common/src/generated/resources/assets/hexcasting/models/item/dye_colorizer_light_blue.json
+++ /dev/null
@@ -1,6 +0,0 @@
-{
- "parent": "minecraft:item/generated",
- "textures": {
- "layer0": "hexcasting:item/colorizer/dye_light_blue"
- }
-}
\ No newline at end of file
diff --git a/0.10.3/Common/src/generated/resources/assets/hexcasting/models/item/dye_colorizer_light_gray.json b/0.10.3/Common/src/generated/resources/assets/hexcasting/models/item/dye_colorizer_light_gray.json
deleted file mode 100644
index f5625b67..00000000
--- a/0.10.3/Common/src/generated/resources/assets/hexcasting/models/item/dye_colorizer_light_gray.json
+++ /dev/null
@@ -1,6 +0,0 @@
-{
- "parent": "minecraft:item/generated",
- "textures": {
- "layer0": "hexcasting:item/colorizer/dye_light_gray"
- }
-}
\ No newline at end of file
diff --git a/0.10.3/Common/src/generated/resources/assets/hexcasting/models/item/dye_colorizer_lime.json b/0.10.3/Common/src/generated/resources/assets/hexcasting/models/item/dye_colorizer_lime.json
deleted file mode 100644
index c1cf2295..00000000
--- a/0.10.3/Common/src/generated/resources/assets/hexcasting/models/item/dye_colorizer_lime.json
+++ /dev/null
@@ -1,6 +0,0 @@
-{
- "parent": "minecraft:item/generated",
- "textures": {
- "layer0": "hexcasting:item/colorizer/dye_lime"
- }
-}
\ No newline at end of file
diff --git a/0.10.3/Common/src/generated/resources/assets/hexcasting/models/item/dye_colorizer_magenta.json b/0.10.3/Common/src/generated/resources/assets/hexcasting/models/item/dye_colorizer_magenta.json
deleted file mode 100644
index 12dcaa82..00000000
--- a/0.10.3/Common/src/generated/resources/assets/hexcasting/models/item/dye_colorizer_magenta.json
+++ /dev/null
@@ -1,6 +0,0 @@
-{
- "parent": "minecraft:item/generated",
- "textures": {
- "layer0": "hexcasting:item/colorizer/dye_magenta"
- }
-}
\ No newline at end of file
diff --git a/0.10.3/Common/src/generated/resources/assets/hexcasting/models/item/dye_colorizer_orange.json b/0.10.3/Common/src/generated/resources/assets/hexcasting/models/item/dye_colorizer_orange.json
deleted file mode 100644
index 99679c17..00000000
--- a/0.10.3/Common/src/generated/resources/assets/hexcasting/models/item/dye_colorizer_orange.json
+++ /dev/null
@@ -1,6 +0,0 @@
-{
- "parent": "minecraft:item/generated",
- "textures": {
- "layer0": "hexcasting:item/colorizer/dye_orange"
- }
-}
\ No newline at end of file
diff --git a/0.10.3/Common/src/generated/resources/assets/hexcasting/models/item/dye_colorizer_pink.json b/0.10.3/Common/src/generated/resources/assets/hexcasting/models/item/dye_colorizer_pink.json
deleted file mode 100644
index c138e93f..00000000
--- a/0.10.3/Common/src/generated/resources/assets/hexcasting/models/item/dye_colorizer_pink.json
+++ /dev/null
@@ -1,6 +0,0 @@
-{
- "parent": "minecraft:item/generated",
- "textures": {
- "layer0": "hexcasting:item/colorizer/dye_pink"
- }
-}
\ No newline at end of file
diff --git a/0.10.3/Common/src/generated/resources/assets/hexcasting/models/item/dye_colorizer_purple.json b/0.10.3/Common/src/generated/resources/assets/hexcasting/models/item/dye_colorizer_purple.json
deleted file mode 100644
index d31e3b60..00000000
--- a/0.10.3/Common/src/generated/resources/assets/hexcasting/models/item/dye_colorizer_purple.json
+++ /dev/null
@@ -1,6 +0,0 @@
-{
- "parent": "minecraft:item/generated",
- "textures": {
- "layer0": "hexcasting:item/colorizer/dye_purple"
- }
-}
\ No newline at end of file
diff --git a/0.10.3/Common/src/generated/resources/assets/hexcasting/models/item/dye_colorizer_red.json b/0.10.3/Common/src/generated/resources/assets/hexcasting/models/item/dye_colorizer_red.json
deleted file mode 100644
index 1fb8f9dd..00000000
--- a/0.10.3/Common/src/generated/resources/assets/hexcasting/models/item/dye_colorizer_red.json
+++ /dev/null
@@ -1,6 +0,0 @@
-{
- "parent": "minecraft:item/generated",
- "textures": {
- "layer0": "hexcasting:item/colorizer/dye_red"
- }
-}
\ No newline at end of file
diff --git a/0.10.3/Common/src/generated/resources/assets/hexcasting/models/item/dye_colorizer_white.json b/0.10.3/Common/src/generated/resources/assets/hexcasting/models/item/dye_colorizer_white.json
deleted file mode 100644
index db4d15eb..00000000
--- a/0.10.3/Common/src/generated/resources/assets/hexcasting/models/item/dye_colorizer_white.json
+++ /dev/null
@@ -1,6 +0,0 @@
-{
- "parent": "minecraft:item/generated",
- "textures": {
- "layer0": "hexcasting:item/colorizer/dye_white"
- }
-}
\ No newline at end of file
diff --git a/0.10.3/Common/src/generated/resources/assets/hexcasting/models/item/dye_colorizer_yellow.json b/0.10.3/Common/src/generated/resources/assets/hexcasting/models/item/dye_colorizer_yellow.json
deleted file mode 100644
index 594bb0a0..00000000
--- a/0.10.3/Common/src/generated/resources/assets/hexcasting/models/item/dye_colorizer_yellow.json
+++ /dev/null
@@ -1,6 +0,0 @@
-{
- "parent": "minecraft:item/generated",
- "textures": {
- "layer0": "hexcasting:item/colorizer/dye_yellow"
- }
-}
\ No newline at end of file
diff --git a/0.10.3/Common/src/generated/resources/assets/hexcasting/models/item/edified_button.json b/0.10.3/Common/src/generated/resources/assets/hexcasting/models/item/edified_button.json
deleted file mode 100644
index e18736c2..00000000
--- a/0.10.3/Common/src/generated/resources/assets/hexcasting/models/item/edified_button.json
+++ /dev/null
@@ -1,6 +0,0 @@
-{
- "parent": "minecraft:block/button_inventory",
- "textures": {
- "texture": "hexcasting:block/edified_planks"
- }
-}
\ No newline at end of file
diff --git a/0.10.3/Common/src/generated/resources/assets/hexcasting/models/item/edified_door.json b/0.10.3/Common/src/generated/resources/assets/hexcasting/models/item/edified_door.json
deleted file mode 100644
index 5d6fb8d7..00000000
--- a/0.10.3/Common/src/generated/resources/assets/hexcasting/models/item/edified_door.json
+++ /dev/null
@@ -1,6 +0,0 @@
-{
- "parent": "minecraft:item/generated",
- "textures": {
- "layer0": "hexcasting:item/edified_door"
- }
-}
\ No newline at end of file
diff --git a/0.10.3/Common/src/generated/resources/assets/hexcasting/models/item/edified_log.json b/0.10.3/Common/src/generated/resources/assets/hexcasting/models/item/edified_log.json
deleted file mode 100644
index d3c7aeeb..00000000
--- a/0.10.3/Common/src/generated/resources/assets/hexcasting/models/item/edified_log.json
+++ /dev/null
@@ -1,3 +0,0 @@
-{
- "parent": "hexcasting:block/edified_log"
-}
\ No newline at end of file
diff --git a/0.10.3/Common/src/generated/resources/assets/hexcasting/models/item/edified_panel.json b/0.10.3/Common/src/generated/resources/assets/hexcasting/models/item/edified_panel.json
deleted file mode 100644
index 355e2765..00000000
--- a/0.10.3/Common/src/generated/resources/assets/hexcasting/models/item/edified_panel.json
+++ /dev/null
@@ -1,3 +0,0 @@
-{
- "parent": "hexcasting:block/edified_panel"
-}
\ No newline at end of file
diff --git a/0.10.3/Common/src/generated/resources/assets/hexcasting/models/item/edified_planks.json b/0.10.3/Common/src/generated/resources/assets/hexcasting/models/item/edified_planks.json
deleted file mode 100644
index 4ed5d45a..00000000
--- a/0.10.3/Common/src/generated/resources/assets/hexcasting/models/item/edified_planks.json
+++ /dev/null
@@ -1,3 +0,0 @@
-{
- "parent": "hexcasting:block/edified_planks"
-}
\ No newline at end of file
diff --git a/0.10.3/Common/src/generated/resources/assets/hexcasting/models/item/edified_pressure_plate.json b/0.10.3/Common/src/generated/resources/assets/hexcasting/models/item/edified_pressure_plate.json
deleted file mode 100644
index 921f7f5b..00000000
--- a/0.10.3/Common/src/generated/resources/assets/hexcasting/models/item/edified_pressure_plate.json
+++ /dev/null
@@ -1,3 +0,0 @@
-{
- "parent": "hexcasting:block/edified_pressure_plate"
-}
\ No newline at end of file
diff --git a/0.10.3/Common/src/generated/resources/assets/hexcasting/models/item/edified_slab.json b/0.10.3/Common/src/generated/resources/assets/hexcasting/models/item/edified_slab.json
deleted file mode 100644
index 4772af6e..00000000
--- a/0.10.3/Common/src/generated/resources/assets/hexcasting/models/item/edified_slab.json
+++ /dev/null
@@ -1,3 +0,0 @@
-{
- "parent": "hexcasting:block/edified_slab"
-}
\ No newline at end of file
diff --git a/0.10.3/Common/src/generated/resources/assets/hexcasting/models/item/edified_staff.json b/0.10.3/Common/src/generated/resources/assets/hexcasting/models/item/edified_staff.json
deleted file mode 100644
index 02877aa7..00000000
--- a/0.10.3/Common/src/generated/resources/assets/hexcasting/models/item/edified_staff.json
+++ /dev/null
@@ -1,26 +0,0 @@
-{
- "parent": "minecraft:item/handheld_rod",
- "overrides": [
- {
- "model": "hexcasting:item/edified_staff",
- "predicate": {
- "hexcasting:funny_level": 0.0
- }
- },
- {
- "model": "hexcasting:item/old_staff",
- "predicate": {
- "hexcasting:funny_level": 1.0
- }
- },
- {
- "model": "hexcasting:item/bosnia_staff",
- "predicate": {
- "hexcasting:funny_level": 2.0
- }
- }
- ],
- "textures": {
- "layer0": "hexcasting:item/staves/edified"
- }
-}
\ No newline at end of file
diff --git a/0.10.3/Common/src/generated/resources/assets/hexcasting/models/item/edified_stairs.json b/0.10.3/Common/src/generated/resources/assets/hexcasting/models/item/edified_stairs.json
deleted file mode 100644
index 90eb4d51..00000000
--- a/0.10.3/Common/src/generated/resources/assets/hexcasting/models/item/edified_stairs.json
+++ /dev/null
@@ -1,3 +0,0 @@
-{
- "parent": "hexcasting:block/edified_stairs"
-}
\ No newline at end of file
diff --git a/0.10.3/Common/src/generated/resources/assets/hexcasting/models/item/edified_tile.json b/0.10.3/Common/src/generated/resources/assets/hexcasting/models/item/edified_tile.json
deleted file mode 100644
index 05702f6e..00000000
--- a/0.10.3/Common/src/generated/resources/assets/hexcasting/models/item/edified_tile.json
+++ /dev/null
@@ -1,3 +0,0 @@
-{
- "parent": "hexcasting:block/edified_tile"
-}
\ No newline at end of file
diff --git a/0.10.3/Common/src/generated/resources/assets/hexcasting/models/item/edified_trapdoor.json b/0.10.3/Common/src/generated/resources/assets/hexcasting/models/item/edified_trapdoor.json
deleted file mode 100644
index 8c89f1e8..00000000
--- a/0.10.3/Common/src/generated/resources/assets/hexcasting/models/item/edified_trapdoor.json
+++ /dev/null
@@ -1,3 +0,0 @@
-{
- "parent": "hexcasting:block/edified_trapdoor_bottom"
-}
\ No newline at end of file
diff --git a/0.10.3/Common/src/generated/resources/assets/hexcasting/models/item/edified_wood.json b/0.10.3/Common/src/generated/resources/assets/hexcasting/models/item/edified_wood.json
deleted file mode 100644
index c9bfee3a..00000000
--- a/0.10.3/Common/src/generated/resources/assets/hexcasting/models/item/edified_wood.json
+++ /dev/null
@@ -1,3 +0,0 @@
-{
- "parent": "hexcasting:block/edified_wood"
-}
\ No newline at end of file
diff --git a/0.10.3/Common/src/generated/resources/assets/hexcasting/models/item/empty_directrix.json b/0.10.3/Common/src/generated/resources/assets/hexcasting/models/item/empty_directrix.json
deleted file mode 100644
index 2edd6c02..00000000
--- a/0.10.3/Common/src/generated/resources/assets/hexcasting/models/item/empty_directrix.json
+++ /dev/null
@@ -1,3 +0,0 @@
-{
- "parent": "hexcasting:block/empty_directrix_dim_z"
-}
\ No newline at end of file
diff --git a/0.10.3/Common/src/generated/resources/assets/hexcasting/models/item/empty_impetus.json b/0.10.3/Common/src/generated/resources/assets/hexcasting/models/item/empty_impetus.json
deleted file mode 100644
index fc9b5e81..00000000
--- a/0.10.3/Common/src/generated/resources/assets/hexcasting/models/item/empty_impetus.json
+++ /dev/null
@@ -1,3 +0,0 @@
-{
- "parent": "hexcasting:block/empty_impetus_dim_east"
-}
\ No newline at end of file
diff --git a/0.10.3/Common/src/generated/resources/assets/hexcasting/models/item/focus.json b/0.10.3/Common/src/generated/resources/assets/hexcasting/models/item/focus.json
deleted file mode 100644
index 013dc98f..00000000
--- a/0.10.3/Common/src/generated/resources/assets/hexcasting/models/item/focus.json
+++ /dev/null
@@ -1,26 +0,0 @@
-{
- "parent": "minecraft:item/generated",
- "overrides": [
- {
- "model": "hexcasting:item/focus",
- "predicate": {
- "hexcasting:overlay_layer": 0.0
- }
- },
- {
- "model": "hexcasting:item/focus_filled",
- "predicate": {
- "hexcasting:overlay_layer": 1.0
- }
- },
- {
- "model": "hexcasting:item/focus_sealed",
- "predicate": {
- "hexcasting:overlay_layer": 2.0
- }
- }
- ],
- "textures": {
- "layer0": "hexcasting:item/focus_empty"
- }
-}
\ No newline at end of file
diff --git a/0.10.3/Common/src/generated/resources/assets/hexcasting/models/item/focus_filled.json b/0.10.3/Common/src/generated/resources/assets/hexcasting/models/item/focus_filled.json
deleted file mode 100644
index 3f3fcaa4..00000000
--- a/0.10.3/Common/src/generated/resources/assets/hexcasting/models/item/focus_filled.json
+++ /dev/null
@@ -1,7 +0,0 @@
-{
- "parent": "minecraft:item/generated",
- "textures": {
- "layer0": "hexcasting:item/focus_base",
- "layer1": "hexcasting:item/focus_overlay"
- }
-}
\ No newline at end of file
diff --git a/0.10.3/Common/src/generated/resources/assets/hexcasting/models/item/focus_sealed.json b/0.10.3/Common/src/generated/resources/assets/hexcasting/models/item/focus_sealed.json
deleted file mode 100644
index 786de1ea..00000000
--- a/0.10.3/Common/src/generated/resources/assets/hexcasting/models/item/focus_sealed.json
+++ /dev/null
@@ -1,7 +0,0 @@
-{
- "parent": "minecraft:item/generated",
- "textures": {
- "layer0": "hexcasting:item/focus_base_sealed",
- "layer1": "hexcasting:item/focus_overlay_sealed"
- }
-}
\ No newline at end of file
diff --git a/0.10.3/Common/src/generated/resources/assets/hexcasting/models/item/impetus_look.json b/0.10.3/Common/src/generated/resources/assets/hexcasting/models/item/impetus_look.json
deleted file mode 100644
index 358a31b5..00000000
--- a/0.10.3/Common/src/generated/resources/assets/hexcasting/models/item/impetus_look.json
+++ /dev/null
@@ -1,3 +0,0 @@
-{
- "parent": "hexcasting:block/impetus_look_dim_east"
-}
\ No newline at end of file
diff --git a/0.10.3/Common/src/generated/resources/assets/hexcasting/models/item/impetus_rightclick.json b/0.10.3/Common/src/generated/resources/assets/hexcasting/models/item/impetus_rightclick.json
deleted file mode 100644
index 85c8b6c2..00000000
--- a/0.10.3/Common/src/generated/resources/assets/hexcasting/models/item/impetus_rightclick.json
+++ /dev/null
@@ -1,3 +0,0 @@
-{
- "parent": "hexcasting:block/impetus_rightclick_dim_east"
-}
\ No newline at end of file
diff --git a/0.10.3/Common/src/generated/resources/assets/hexcasting/models/item/impetus_storedplayer.json b/0.10.3/Common/src/generated/resources/assets/hexcasting/models/item/impetus_storedplayer.json
deleted file mode 100644
index 22391426..00000000
--- a/0.10.3/Common/src/generated/resources/assets/hexcasting/models/item/impetus_storedplayer.json
+++ /dev/null
@@ -1,3 +0,0 @@
-{
- "parent": "hexcasting:block/impetus_storedplayer_dim_east"
-}
\ No newline at end of file
diff --git a/0.10.3/Common/src/generated/resources/assets/hexcasting/models/item/jeweler_hammer.json b/0.10.3/Common/src/generated/resources/assets/hexcasting/models/item/jeweler_hammer.json
deleted file mode 100644
index 22447e1f..00000000
--- a/0.10.3/Common/src/generated/resources/assets/hexcasting/models/item/jeweler_hammer.json
+++ /dev/null
@@ -1,6 +0,0 @@
-{
- "parent": "minecraft:item/handheld",
- "textures": {
- "layer0": "hexcasting:item/jeweler_hammer"
- }
-}
\ No newline at end of file
diff --git a/0.10.3/Common/src/generated/resources/assets/hexcasting/models/item/jungle_staff.json b/0.10.3/Common/src/generated/resources/assets/hexcasting/models/item/jungle_staff.json
deleted file mode 100644
index 43a0711d..00000000
--- a/0.10.3/Common/src/generated/resources/assets/hexcasting/models/item/jungle_staff.json
+++ /dev/null
@@ -1,26 +0,0 @@
-{
- "parent": "minecraft:item/handheld_rod",
- "overrides": [
- {
- "model": "hexcasting:item/jungle_staff",
- "predicate": {
- "hexcasting:funny_level": 0.0
- }
- },
- {
- "model": "hexcasting:item/old_staff",
- "predicate": {
- "hexcasting:funny_level": 1.0
- }
- },
- {
- "model": "hexcasting:item/bosnia_staff",
- "predicate": {
- "hexcasting:funny_level": 2.0
- }
- }
- ],
- "textures": {
- "layer0": "hexcasting:item/staves/jungle"
- }
-}
\ No newline at end of file
diff --git a/0.10.3/Common/src/generated/resources/assets/hexcasting/models/item/lens.json b/0.10.3/Common/src/generated/resources/assets/hexcasting/models/item/lens.json
deleted file mode 100644
index 2fdc8f9c..00000000
--- a/0.10.3/Common/src/generated/resources/assets/hexcasting/models/item/lens.json
+++ /dev/null
@@ -1,20 +0,0 @@
-{
- "parent": "minecraft:item/generated",
- "display": {
- "head": {
- "scale": [
- 0.4,
- 0.4,
- 0.4
- ],
- "translation": [
- -2.5,
- 0,
- -8
- ]
- }
- },
- "textures": {
- "layer0": "hexcasting:item/lens"
- }
-}
\ No newline at end of file
diff --git a/0.10.3/Common/src/generated/resources/assets/hexcasting/models/item/lore_fragment.json b/0.10.3/Common/src/generated/resources/assets/hexcasting/models/item/lore_fragment.json
deleted file mode 100644
index 2b2f9e66..00000000
--- a/0.10.3/Common/src/generated/resources/assets/hexcasting/models/item/lore_fragment.json
+++ /dev/null
@@ -1,6 +0,0 @@
-{
- "parent": "minecraft:item/generated",
- "textures": {
- "layer0": "hexcasting:item/lore_fragment"
- }
-}
\ No newline at end of file
diff --git a/0.10.3/Common/src/generated/resources/assets/hexcasting/models/item/oak_staff.json b/0.10.3/Common/src/generated/resources/assets/hexcasting/models/item/oak_staff.json
deleted file mode 100644
index 6897ef64..00000000
--- a/0.10.3/Common/src/generated/resources/assets/hexcasting/models/item/oak_staff.json
+++ /dev/null
@@ -1,26 +0,0 @@
-{
- "parent": "minecraft:item/handheld_rod",
- "overrides": [
- {
- "model": "hexcasting:item/oak_staff",
- "predicate": {
- "hexcasting:funny_level": 0.0
- }
- },
- {
- "model": "hexcasting:item/old_staff",
- "predicate": {
- "hexcasting:funny_level": 1.0
- }
- },
- {
- "model": "hexcasting:item/bosnia_staff",
- "predicate": {
- "hexcasting:funny_level": 2.0
- }
- }
- ],
- "textures": {
- "layer0": "hexcasting:item/staves/oak"
- }
-}
\ No newline at end of file
diff --git a/0.10.3/Common/src/generated/resources/assets/hexcasting/models/item/old_staff.json b/0.10.3/Common/src/generated/resources/assets/hexcasting/models/item/old_staff.json
deleted file mode 100644
index 0eb89ae6..00000000
--- a/0.10.3/Common/src/generated/resources/assets/hexcasting/models/item/old_staff.json
+++ /dev/null
@@ -1,6 +0,0 @@
-{
- "parent": "minecraft:item/handheld_rod",
- "textures": {
- "layer0": "hexcasting:item/staves/old"
- }
-}
\ No newline at end of file
diff --git a/0.10.3/Common/src/generated/resources/assets/hexcasting/models/item/patchouli_book.json b/0.10.3/Common/src/generated/resources/assets/hexcasting/models/item/patchouli_book.json
deleted file mode 100644
index a840c0e4..00000000
--- a/0.10.3/Common/src/generated/resources/assets/hexcasting/models/item/patchouli_book.json
+++ /dev/null
@@ -1,6 +0,0 @@
-{
- "parent": "minecraft:item/generated",
- "textures": {
- "layer0": "hexcasting:item/patchouli_book"
- }
-}
\ No newline at end of file
diff --git a/0.10.3/Common/src/generated/resources/assets/hexcasting/models/item/phial_large_0.json b/0.10.3/Common/src/generated/resources/assets/hexcasting/models/item/phial_large_0.json
deleted file mode 100644
index db3db02a..00000000
--- a/0.10.3/Common/src/generated/resources/assets/hexcasting/models/item/phial_large_0.json
+++ /dev/null
@@ -1,6 +0,0 @@
-{
- "parent": "minecraft:item/generated",
- "textures": {
- "layer0": "hexcasting:item/phial/phial_large_0"
- }
-}
\ No newline at end of file
diff --git a/0.10.3/Common/src/generated/resources/assets/hexcasting/models/item/phial_large_1.json b/0.10.3/Common/src/generated/resources/assets/hexcasting/models/item/phial_large_1.json
deleted file mode 100644
index bdff2d10..00000000
--- a/0.10.3/Common/src/generated/resources/assets/hexcasting/models/item/phial_large_1.json
+++ /dev/null
@@ -1,6 +0,0 @@
-{
- "parent": "minecraft:item/generated",
- "textures": {
- "layer0": "hexcasting:item/phial/phial_large_1"
- }
-}
\ No newline at end of file
diff --git a/0.10.3/Common/src/generated/resources/assets/hexcasting/models/item/phial_large_2.json b/0.10.3/Common/src/generated/resources/assets/hexcasting/models/item/phial_large_2.json
deleted file mode 100644
index 9c09bea4..00000000
--- a/0.10.3/Common/src/generated/resources/assets/hexcasting/models/item/phial_large_2.json
+++ /dev/null
@@ -1,6 +0,0 @@
-{
- "parent": "minecraft:item/generated",
- "textures": {
- "layer0": "hexcasting:item/phial/phial_large_2"
- }
-}
\ No newline at end of file
diff --git a/0.10.3/Common/src/generated/resources/assets/hexcasting/models/item/phial_large_3.json b/0.10.3/Common/src/generated/resources/assets/hexcasting/models/item/phial_large_3.json
deleted file mode 100644
index 085960c8..00000000
--- a/0.10.3/Common/src/generated/resources/assets/hexcasting/models/item/phial_large_3.json
+++ /dev/null
@@ -1,6 +0,0 @@
-{
- "parent": "minecraft:item/generated",
- "textures": {
- "layer0": "hexcasting:item/phial/phial_large_3"
- }
-}
\ No newline at end of file
diff --git a/0.10.3/Common/src/generated/resources/assets/hexcasting/models/item/phial_large_4.json b/0.10.3/Common/src/generated/resources/assets/hexcasting/models/item/phial_large_4.json
deleted file mode 100644
index c39357f8..00000000
--- a/0.10.3/Common/src/generated/resources/assets/hexcasting/models/item/phial_large_4.json
+++ /dev/null
@@ -1,6 +0,0 @@
-{
- "parent": "minecraft:item/generated",
- "textures": {
- "layer0": "hexcasting:item/phial/phial_large_4"
- }
-}
\ No newline at end of file
diff --git a/0.10.3/Common/src/generated/resources/assets/hexcasting/models/item/phial_medium_0.json b/0.10.3/Common/src/generated/resources/assets/hexcasting/models/item/phial_medium_0.json
deleted file mode 100644
index cb8b4c09..00000000
--- a/0.10.3/Common/src/generated/resources/assets/hexcasting/models/item/phial_medium_0.json
+++ /dev/null
@@ -1,6 +0,0 @@
-{
- "parent": "minecraft:item/generated",
- "textures": {
- "layer0": "hexcasting:item/phial/phial_medium_0"
- }
-}
\ No newline at end of file
diff --git a/0.10.3/Common/src/generated/resources/assets/hexcasting/models/item/phial_medium_1.json b/0.10.3/Common/src/generated/resources/assets/hexcasting/models/item/phial_medium_1.json
deleted file mode 100644
index a7f30e81..00000000
--- a/0.10.3/Common/src/generated/resources/assets/hexcasting/models/item/phial_medium_1.json
+++ /dev/null
@@ -1,6 +0,0 @@
-{
- "parent": "minecraft:item/generated",
- "textures": {
- "layer0": "hexcasting:item/phial/phial_medium_1"
- }
-}
\ No newline at end of file
diff --git a/0.10.3/Common/src/generated/resources/assets/hexcasting/models/item/phial_medium_2.json b/0.10.3/Common/src/generated/resources/assets/hexcasting/models/item/phial_medium_2.json
deleted file mode 100644
index f9f5615c..00000000
--- a/0.10.3/Common/src/generated/resources/assets/hexcasting/models/item/phial_medium_2.json
+++ /dev/null
@@ -1,6 +0,0 @@
-{
- "parent": "minecraft:item/generated",
- "textures": {
- "layer0": "hexcasting:item/phial/phial_medium_2"
- }
-}
\ No newline at end of file
diff --git a/0.10.3/Common/src/generated/resources/assets/hexcasting/models/item/phial_medium_3.json b/0.10.3/Common/src/generated/resources/assets/hexcasting/models/item/phial_medium_3.json
deleted file mode 100644
index dbfcb528..00000000
--- a/0.10.3/Common/src/generated/resources/assets/hexcasting/models/item/phial_medium_3.json
+++ /dev/null
@@ -1,6 +0,0 @@
-{
- "parent": "minecraft:item/generated",
- "textures": {
- "layer0": "hexcasting:item/phial/phial_medium_3"
- }
-}
\ No newline at end of file
diff --git a/0.10.3/Common/src/generated/resources/assets/hexcasting/models/item/phial_medium_4.json b/0.10.3/Common/src/generated/resources/assets/hexcasting/models/item/phial_medium_4.json
deleted file mode 100644
index a7501a8e..00000000
--- a/0.10.3/Common/src/generated/resources/assets/hexcasting/models/item/phial_medium_4.json
+++ /dev/null
@@ -1,6 +0,0 @@
-{
- "parent": "minecraft:item/generated",
- "textures": {
- "layer0": "hexcasting:item/phial/phial_medium_4"
- }
-}
\ No newline at end of file
diff --git a/0.10.3/Common/src/generated/resources/assets/hexcasting/models/item/phial_small_0.json b/0.10.3/Common/src/generated/resources/assets/hexcasting/models/item/phial_small_0.json
deleted file mode 100644
index fda398e2..00000000
--- a/0.10.3/Common/src/generated/resources/assets/hexcasting/models/item/phial_small_0.json
+++ /dev/null
@@ -1,6 +0,0 @@
-{
- "parent": "minecraft:item/generated",
- "textures": {
- "layer0": "hexcasting:item/phial/phial_small_0"
- }
-}
\ No newline at end of file
diff --git a/0.10.3/Common/src/generated/resources/assets/hexcasting/models/item/phial_small_1.json b/0.10.3/Common/src/generated/resources/assets/hexcasting/models/item/phial_small_1.json
deleted file mode 100644
index df784108..00000000
--- a/0.10.3/Common/src/generated/resources/assets/hexcasting/models/item/phial_small_1.json
+++ /dev/null
@@ -1,6 +0,0 @@
-{
- "parent": "minecraft:item/generated",
- "textures": {
- "layer0": "hexcasting:item/phial/phial_small_1"
- }
-}
\ No newline at end of file
diff --git a/0.10.3/Common/src/generated/resources/assets/hexcasting/models/item/phial_small_2.json b/0.10.3/Common/src/generated/resources/assets/hexcasting/models/item/phial_small_2.json
deleted file mode 100644
index f868032c..00000000
--- a/0.10.3/Common/src/generated/resources/assets/hexcasting/models/item/phial_small_2.json
+++ /dev/null
@@ -1,6 +0,0 @@
-{
- "parent": "minecraft:item/generated",
- "textures": {
- "layer0": "hexcasting:item/phial/phial_small_2"
- }
-}
\ No newline at end of file
diff --git a/0.10.3/Common/src/generated/resources/assets/hexcasting/models/item/phial_small_3.json b/0.10.3/Common/src/generated/resources/assets/hexcasting/models/item/phial_small_3.json
deleted file mode 100644
index ce4a7999..00000000
--- a/0.10.3/Common/src/generated/resources/assets/hexcasting/models/item/phial_small_3.json
+++ /dev/null
@@ -1,6 +0,0 @@
-{
- "parent": "minecraft:item/generated",
- "textures": {
- "layer0": "hexcasting:item/phial/phial_small_3"
- }
-}
\ No newline at end of file
diff --git a/0.10.3/Common/src/generated/resources/assets/hexcasting/models/item/phial_small_4.json b/0.10.3/Common/src/generated/resources/assets/hexcasting/models/item/phial_small_4.json
deleted file mode 100644
index bde40839..00000000
--- a/0.10.3/Common/src/generated/resources/assets/hexcasting/models/item/phial_small_4.json
+++ /dev/null
@@ -1,6 +0,0 @@
-{
- "parent": "minecraft:item/generated",
- "textures": {
- "layer0": "hexcasting:item/phial/phial_small_4"
- }
-}
\ No newline at end of file
diff --git a/0.10.3/Common/src/generated/resources/assets/hexcasting/models/item/pride_colorizer_agender.json b/0.10.3/Common/src/generated/resources/assets/hexcasting/models/item/pride_colorizer_agender.json
deleted file mode 100644
index 9c68ff47..00000000
--- a/0.10.3/Common/src/generated/resources/assets/hexcasting/models/item/pride_colorizer_agender.json
+++ /dev/null
@@ -1,6 +0,0 @@
-{
- "parent": "minecraft:item/generated",
- "textures": {
- "layer0": "hexcasting:item/colorizer/pride_agender"
- }
-}
\ No newline at end of file
diff --git a/0.10.3/Common/src/generated/resources/assets/hexcasting/models/item/pride_colorizer_aroace.json b/0.10.3/Common/src/generated/resources/assets/hexcasting/models/item/pride_colorizer_aroace.json
deleted file mode 100644
index eb0fabc5..00000000
--- a/0.10.3/Common/src/generated/resources/assets/hexcasting/models/item/pride_colorizer_aroace.json
+++ /dev/null
@@ -1,6 +0,0 @@
-{
- "parent": "minecraft:item/generated",
- "textures": {
- "layer0": "hexcasting:item/colorizer/pride_aroace"
- }
-}
\ No newline at end of file
diff --git a/0.10.3/Common/src/generated/resources/assets/hexcasting/models/item/pride_colorizer_aromantic.json b/0.10.3/Common/src/generated/resources/assets/hexcasting/models/item/pride_colorizer_aromantic.json
deleted file mode 100644
index 7ea60f31..00000000
--- a/0.10.3/Common/src/generated/resources/assets/hexcasting/models/item/pride_colorizer_aromantic.json
+++ /dev/null
@@ -1,6 +0,0 @@
-{
- "parent": "minecraft:item/generated",
- "textures": {
- "layer0": "hexcasting:item/colorizer/pride_aromantic"
- }
-}
\ No newline at end of file
diff --git a/0.10.3/Common/src/generated/resources/assets/hexcasting/models/item/pride_colorizer_asexual.json b/0.10.3/Common/src/generated/resources/assets/hexcasting/models/item/pride_colorizer_asexual.json
deleted file mode 100644
index d40b1f2b..00000000
--- a/0.10.3/Common/src/generated/resources/assets/hexcasting/models/item/pride_colorizer_asexual.json
+++ /dev/null
@@ -1,6 +0,0 @@
-{
- "parent": "minecraft:item/generated",
- "textures": {
- "layer0": "hexcasting:item/colorizer/pride_asexual"
- }
-}
\ No newline at end of file
diff --git a/0.10.3/Common/src/generated/resources/assets/hexcasting/models/item/pride_colorizer_bisexual.json b/0.10.3/Common/src/generated/resources/assets/hexcasting/models/item/pride_colorizer_bisexual.json
deleted file mode 100644
index e1d4b2d7..00000000
--- a/0.10.3/Common/src/generated/resources/assets/hexcasting/models/item/pride_colorizer_bisexual.json
+++ /dev/null
@@ -1,6 +0,0 @@
-{
- "parent": "minecraft:item/generated",
- "textures": {
- "layer0": "hexcasting:item/colorizer/pride_bisexual"
- }
-}
\ No newline at end of file
diff --git a/0.10.3/Common/src/generated/resources/assets/hexcasting/models/item/pride_colorizer_demiboy.json b/0.10.3/Common/src/generated/resources/assets/hexcasting/models/item/pride_colorizer_demiboy.json
deleted file mode 100644
index cd0fe060..00000000
--- a/0.10.3/Common/src/generated/resources/assets/hexcasting/models/item/pride_colorizer_demiboy.json
+++ /dev/null
@@ -1,6 +0,0 @@
-{
- "parent": "minecraft:item/generated",
- "textures": {
- "layer0": "hexcasting:item/colorizer/pride_demiboy"
- }
-}
\ No newline at end of file
diff --git a/0.10.3/Common/src/generated/resources/assets/hexcasting/models/item/pride_colorizer_demigirl.json b/0.10.3/Common/src/generated/resources/assets/hexcasting/models/item/pride_colorizer_demigirl.json
deleted file mode 100644
index afda4cab..00000000
--- a/0.10.3/Common/src/generated/resources/assets/hexcasting/models/item/pride_colorizer_demigirl.json
+++ /dev/null
@@ -1,6 +0,0 @@
-{
- "parent": "minecraft:item/generated",
- "textures": {
- "layer0": "hexcasting:item/colorizer/pride_demigirl"
- }
-}
\ No newline at end of file
diff --git a/0.10.3/Common/src/generated/resources/assets/hexcasting/models/item/pride_colorizer_gay.json b/0.10.3/Common/src/generated/resources/assets/hexcasting/models/item/pride_colorizer_gay.json
deleted file mode 100644
index 353816c8..00000000
--- a/0.10.3/Common/src/generated/resources/assets/hexcasting/models/item/pride_colorizer_gay.json
+++ /dev/null
@@ -1,6 +0,0 @@
-{
- "parent": "minecraft:item/generated",
- "textures": {
- "layer0": "hexcasting:item/colorizer/pride_gay"
- }
-}
\ No newline at end of file
diff --git a/0.10.3/Common/src/generated/resources/assets/hexcasting/models/item/pride_colorizer_genderfluid.json b/0.10.3/Common/src/generated/resources/assets/hexcasting/models/item/pride_colorizer_genderfluid.json
deleted file mode 100644
index fe3641c7..00000000
--- a/0.10.3/Common/src/generated/resources/assets/hexcasting/models/item/pride_colorizer_genderfluid.json
+++ /dev/null
@@ -1,6 +0,0 @@
-{
- "parent": "minecraft:item/generated",
- "textures": {
- "layer0": "hexcasting:item/colorizer/pride_genderfluid"
- }
-}
\ No newline at end of file
diff --git a/0.10.3/Common/src/generated/resources/assets/hexcasting/models/item/pride_colorizer_genderqueer.json b/0.10.3/Common/src/generated/resources/assets/hexcasting/models/item/pride_colorizer_genderqueer.json
deleted file mode 100644
index 270eeb01..00000000
--- a/0.10.3/Common/src/generated/resources/assets/hexcasting/models/item/pride_colorizer_genderqueer.json
+++ /dev/null
@@ -1,6 +0,0 @@
-{
- "parent": "minecraft:item/generated",
- "textures": {
- "layer0": "hexcasting:item/colorizer/pride_genderqueer"
- }
-}
\ No newline at end of file
diff --git a/0.10.3/Common/src/generated/resources/assets/hexcasting/models/item/pride_colorizer_intersex.json b/0.10.3/Common/src/generated/resources/assets/hexcasting/models/item/pride_colorizer_intersex.json
deleted file mode 100644
index 506facd3..00000000
--- a/0.10.3/Common/src/generated/resources/assets/hexcasting/models/item/pride_colorizer_intersex.json
+++ /dev/null
@@ -1,6 +0,0 @@
-{
- "parent": "minecraft:item/generated",
- "textures": {
- "layer0": "hexcasting:item/colorizer/pride_intersex"
- }
-}
\ No newline at end of file
diff --git a/0.10.3/Common/src/generated/resources/assets/hexcasting/models/item/pride_colorizer_lesbian.json b/0.10.3/Common/src/generated/resources/assets/hexcasting/models/item/pride_colorizer_lesbian.json
deleted file mode 100644
index 61d110d4..00000000
--- a/0.10.3/Common/src/generated/resources/assets/hexcasting/models/item/pride_colorizer_lesbian.json
+++ /dev/null
@@ -1,6 +0,0 @@
-{
- "parent": "minecraft:item/generated",
- "textures": {
- "layer0": "hexcasting:item/colorizer/pride_lesbian"
- }
-}
\ No newline at end of file
diff --git a/0.10.3/Common/src/generated/resources/assets/hexcasting/models/item/pride_colorizer_nonbinary.json b/0.10.3/Common/src/generated/resources/assets/hexcasting/models/item/pride_colorizer_nonbinary.json
deleted file mode 100644
index 0212b47a..00000000
--- a/0.10.3/Common/src/generated/resources/assets/hexcasting/models/item/pride_colorizer_nonbinary.json
+++ /dev/null
@@ -1,6 +0,0 @@
-{
- "parent": "minecraft:item/generated",
- "textures": {
- "layer0": "hexcasting:item/colorizer/pride_nonbinary"
- }
-}
\ No newline at end of file
diff --git a/0.10.3/Common/src/generated/resources/assets/hexcasting/models/item/pride_colorizer_pansexual.json b/0.10.3/Common/src/generated/resources/assets/hexcasting/models/item/pride_colorizer_pansexual.json
deleted file mode 100644
index 706726a3..00000000
--- a/0.10.3/Common/src/generated/resources/assets/hexcasting/models/item/pride_colorizer_pansexual.json
+++ /dev/null
@@ -1,6 +0,0 @@
-{
- "parent": "minecraft:item/generated",
- "textures": {
- "layer0": "hexcasting:item/colorizer/pride_pansexual"
- }
-}
\ No newline at end of file
diff --git a/0.10.3/Common/src/generated/resources/assets/hexcasting/models/item/pride_colorizer_plural.json b/0.10.3/Common/src/generated/resources/assets/hexcasting/models/item/pride_colorizer_plural.json
deleted file mode 100644
index e6ecd789..00000000
--- a/0.10.3/Common/src/generated/resources/assets/hexcasting/models/item/pride_colorizer_plural.json
+++ /dev/null
@@ -1,6 +0,0 @@
-{
- "parent": "minecraft:item/generated",
- "textures": {
- "layer0": "hexcasting:item/colorizer/pride_plural"
- }
-}
\ No newline at end of file
diff --git a/0.10.3/Common/src/generated/resources/assets/hexcasting/models/item/pride_colorizer_transgender.json b/0.10.3/Common/src/generated/resources/assets/hexcasting/models/item/pride_colorizer_transgender.json
deleted file mode 100644
index 2655a8e5..00000000
--- a/0.10.3/Common/src/generated/resources/assets/hexcasting/models/item/pride_colorizer_transgender.json
+++ /dev/null
@@ -1,6 +0,0 @@
-{
- "parent": "minecraft:item/generated",
- "textures": {
- "layer0": "hexcasting:item/colorizer/pride_transgender"
- }
-}
\ No newline at end of file
diff --git a/0.10.3/Common/src/generated/resources/assets/hexcasting/models/item/scroll.json b/0.10.3/Common/src/generated/resources/assets/hexcasting/models/item/scroll.json
deleted file mode 100644
index 5453ed3e..00000000
--- a/0.10.3/Common/src/generated/resources/assets/hexcasting/models/item/scroll.json
+++ /dev/null
@@ -1,16 +0,0 @@
-{
- "overrides": [
- {
- "model": "hexcasting:item/scroll_pristine_large",
- "predicate": {
- "hexcasting:ancient": 0.0
- }
- },
- {
- "model": "hexcasting:item/scroll_ancient_large",
- "predicate": {
- "hexcasting:ancient": 1.0
- }
- }
- ]
-}
\ No newline at end of file
diff --git a/0.10.3/Common/src/generated/resources/assets/hexcasting/models/item/scroll_ancient_large.json b/0.10.3/Common/src/generated/resources/assets/hexcasting/models/item/scroll_ancient_large.json
deleted file mode 100644
index 192b9920..00000000
--- a/0.10.3/Common/src/generated/resources/assets/hexcasting/models/item/scroll_ancient_large.json
+++ /dev/null
@@ -1,6 +0,0 @@
-{
- "parent": "minecraft:item/generated",
- "textures": {
- "layer0": "hexcasting:item/scroll_ancient_large"
- }
-}
\ No newline at end of file
diff --git a/0.10.3/Common/src/generated/resources/assets/hexcasting/models/item/scroll_ancient_medium.json b/0.10.3/Common/src/generated/resources/assets/hexcasting/models/item/scroll_ancient_medium.json
deleted file mode 100644
index eccfe83c..00000000
--- a/0.10.3/Common/src/generated/resources/assets/hexcasting/models/item/scroll_ancient_medium.json
+++ /dev/null
@@ -1,6 +0,0 @@
-{
- "parent": "minecraft:item/generated",
- "textures": {
- "layer0": "hexcasting:item/scroll_ancient_medium"
- }
-}
\ No newline at end of file
diff --git a/0.10.3/Common/src/generated/resources/assets/hexcasting/models/item/scroll_ancient_small.json b/0.10.3/Common/src/generated/resources/assets/hexcasting/models/item/scroll_ancient_small.json
deleted file mode 100644
index 5f66417b..00000000
--- a/0.10.3/Common/src/generated/resources/assets/hexcasting/models/item/scroll_ancient_small.json
+++ /dev/null
@@ -1,6 +0,0 @@
-{
- "parent": "minecraft:item/generated",
- "textures": {
- "layer0": "hexcasting:item/scroll_ancient_small"
- }
-}
\ No newline at end of file
diff --git a/0.10.3/Common/src/generated/resources/assets/hexcasting/models/item/scroll_medium.json b/0.10.3/Common/src/generated/resources/assets/hexcasting/models/item/scroll_medium.json
deleted file mode 100644
index 7752e9be..00000000
--- a/0.10.3/Common/src/generated/resources/assets/hexcasting/models/item/scroll_medium.json
+++ /dev/null
@@ -1,16 +0,0 @@
-{
- "overrides": [
- {
- "model": "hexcasting:item/scroll_pristine_medium",
- "predicate": {
- "hexcasting:ancient": 0.0
- }
- },
- {
- "model": "hexcasting:item/scroll_ancient_medium",
- "predicate": {
- "hexcasting:ancient": 1.0
- }
- }
- ]
-}
\ No newline at end of file
diff --git a/0.10.3/Common/src/generated/resources/assets/hexcasting/models/item/scroll_paper.json b/0.10.3/Common/src/generated/resources/assets/hexcasting/models/item/scroll_paper.json
deleted file mode 100644
index ee576746..00000000
--- a/0.10.3/Common/src/generated/resources/assets/hexcasting/models/item/scroll_paper.json
+++ /dev/null
@@ -1,3 +0,0 @@
-{
- "parent": "hexcasting:block/scroll_paper"
-}
\ No newline at end of file
diff --git a/0.10.3/Common/src/generated/resources/assets/hexcasting/models/item/scroll_paper_lantern.json b/0.10.3/Common/src/generated/resources/assets/hexcasting/models/item/scroll_paper_lantern.json
deleted file mode 100644
index 8fafbd4a..00000000
--- a/0.10.3/Common/src/generated/resources/assets/hexcasting/models/item/scroll_paper_lantern.json
+++ /dev/null
@@ -1,3 +0,0 @@
-{
- "parent": "hexcasting:block/scroll_paper_lantern"
-}
\ No newline at end of file
diff --git a/0.10.3/Common/src/generated/resources/assets/hexcasting/models/item/scroll_pristine_large.json b/0.10.3/Common/src/generated/resources/assets/hexcasting/models/item/scroll_pristine_large.json
deleted file mode 100644
index 0042b784..00000000
--- a/0.10.3/Common/src/generated/resources/assets/hexcasting/models/item/scroll_pristine_large.json
+++ /dev/null
@@ -1,6 +0,0 @@
-{
- "parent": "minecraft:item/generated",
- "textures": {
- "layer0": "hexcasting:item/scroll_pristine_large"
- }
-}
\ No newline at end of file
diff --git a/0.10.3/Common/src/generated/resources/assets/hexcasting/models/item/scroll_pristine_medium.json b/0.10.3/Common/src/generated/resources/assets/hexcasting/models/item/scroll_pristine_medium.json
deleted file mode 100644
index a219c785..00000000
--- a/0.10.3/Common/src/generated/resources/assets/hexcasting/models/item/scroll_pristine_medium.json
+++ /dev/null
@@ -1,6 +0,0 @@
-{
- "parent": "minecraft:item/generated",
- "textures": {
- "layer0": "hexcasting:item/scroll_pristine_medium"
- }
-}
\ No newline at end of file
diff --git a/0.10.3/Common/src/generated/resources/assets/hexcasting/models/item/scroll_pristine_small.json b/0.10.3/Common/src/generated/resources/assets/hexcasting/models/item/scroll_pristine_small.json
deleted file mode 100644
index 6405ebef..00000000
--- a/0.10.3/Common/src/generated/resources/assets/hexcasting/models/item/scroll_pristine_small.json
+++ /dev/null
@@ -1,6 +0,0 @@
-{
- "parent": "minecraft:item/generated",
- "textures": {
- "layer0": "hexcasting:item/scroll_pristine_small"
- }
-}
\ No newline at end of file
diff --git a/0.10.3/Common/src/generated/resources/assets/hexcasting/models/item/scroll_small.json b/0.10.3/Common/src/generated/resources/assets/hexcasting/models/item/scroll_small.json
deleted file mode 100644
index 583fd0f3..00000000
--- a/0.10.3/Common/src/generated/resources/assets/hexcasting/models/item/scroll_small.json
+++ /dev/null
@@ -1,16 +0,0 @@
-{
- "overrides": [
- {
- "model": "hexcasting:item/scroll_pristine_small",
- "predicate": {
- "hexcasting:ancient": 0.0
- }
- },
- {
- "model": "hexcasting:item/scroll_ancient_small",
- "predicate": {
- "hexcasting:ancient": 1.0
- }
- }
- ]
-}
\ No newline at end of file
diff --git a/0.10.3/Common/src/generated/resources/assets/hexcasting/models/item/slate.json b/0.10.3/Common/src/generated/resources/assets/hexcasting/models/item/slate.json
deleted file mode 100644
index 146695e2..00000000
--- a/0.10.3/Common/src/generated/resources/assets/hexcasting/models/item/slate.json
+++ /dev/null
@@ -1,16 +0,0 @@
-{
- "overrides": [
- {
- "model": "hexcasting:item/slate_blank",
- "predicate": {
- "hexcasting:written": 0.0
- }
- },
- {
- "model": "hexcasting:item/slate_written",
- "predicate": {
- "hexcasting:written": 1.0
- }
- }
- ]
-}
\ No newline at end of file
diff --git a/0.10.3/Common/src/generated/resources/assets/hexcasting/models/item/slate_blank.json b/0.10.3/Common/src/generated/resources/assets/hexcasting/models/item/slate_blank.json
deleted file mode 100644
index df037ffa..00000000
--- a/0.10.3/Common/src/generated/resources/assets/hexcasting/models/item/slate_blank.json
+++ /dev/null
@@ -1,6 +0,0 @@
-{
- "parent": "minecraft:item/generated",
- "textures": {
- "layer0": "hexcasting:item/slate_blank"
- }
-}
\ No newline at end of file
diff --git a/0.10.3/Common/src/generated/resources/assets/hexcasting/models/item/slate_block.json b/0.10.3/Common/src/generated/resources/assets/hexcasting/models/item/slate_block.json
deleted file mode 100644
index c40e37f1..00000000
--- a/0.10.3/Common/src/generated/resources/assets/hexcasting/models/item/slate_block.json
+++ /dev/null
@@ -1,3 +0,0 @@
-{
- "parent": "hexcasting:block/slate_block"
-}
\ No newline at end of file
diff --git a/0.10.3/Common/src/generated/resources/assets/hexcasting/models/item/slate_written.json b/0.10.3/Common/src/generated/resources/assets/hexcasting/models/item/slate_written.json
deleted file mode 100644
index a17de30b..00000000
--- a/0.10.3/Common/src/generated/resources/assets/hexcasting/models/item/slate_written.json
+++ /dev/null
@@ -1,6 +0,0 @@
-{
- "parent": "minecraft:item/generated",
- "textures": {
- "layer0": "hexcasting:item/slate_written"
- }
-}
\ No newline at end of file
diff --git a/0.10.3/Common/src/generated/resources/assets/hexcasting/models/item/spellbook.json b/0.10.3/Common/src/generated/resources/assets/hexcasting/models/item/spellbook.json
deleted file mode 100644
index 1a9c4ba6..00000000
--- a/0.10.3/Common/src/generated/resources/assets/hexcasting/models/item/spellbook.json
+++ /dev/null
@@ -1,26 +0,0 @@
-{
- "parent": "minecraft:item/generated",
- "overrides": [
- {
- "model": "hexcasting:item/spellbook",
- "predicate": {
- "hexcasting:overlay_layer": 0.0
- }
- },
- {
- "model": "hexcasting:item/spellbook_filled",
- "predicate": {
- "hexcasting:overlay_layer": 1.0
- }
- },
- {
- "model": "hexcasting:item/spellbook_sealed",
- "predicate": {
- "hexcasting:overlay_layer": 2.0
- }
- }
- ],
- "textures": {
- "layer0": "hexcasting:item/spellbook_empty"
- }
-}
\ No newline at end of file
diff --git a/0.10.3/Common/src/generated/resources/assets/hexcasting/models/item/spellbook_filled.json b/0.10.3/Common/src/generated/resources/assets/hexcasting/models/item/spellbook_filled.json
deleted file mode 100644
index 9527a5ec..00000000
--- a/0.10.3/Common/src/generated/resources/assets/hexcasting/models/item/spellbook_filled.json
+++ /dev/null
@@ -1,7 +0,0 @@
-{
- "parent": "minecraft:item/generated",
- "textures": {
- "layer0": "hexcasting:item/spellbook_base",
- "layer1": "hexcasting:item/spellbook_overlay"
- }
-}
\ No newline at end of file
diff --git a/0.10.3/Common/src/generated/resources/assets/hexcasting/models/item/spellbook_sealed.json b/0.10.3/Common/src/generated/resources/assets/hexcasting/models/item/spellbook_sealed.json
deleted file mode 100644
index d2df3984..00000000
--- a/0.10.3/Common/src/generated/resources/assets/hexcasting/models/item/spellbook_sealed.json
+++ /dev/null
@@ -1,7 +0,0 @@
-{
- "parent": "minecraft:item/generated",
- "textures": {
- "layer0": "hexcasting:item/spellbook_base_sealed",
- "layer1": "hexcasting:item/spellbook_overlay_sealed"
- }
-}
\ No newline at end of file
diff --git a/0.10.3/Common/src/generated/resources/assets/hexcasting/models/item/spruce_staff.json b/0.10.3/Common/src/generated/resources/assets/hexcasting/models/item/spruce_staff.json
deleted file mode 100644
index 043989b5..00000000
--- a/0.10.3/Common/src/generated/resources/assets/hexcasting/models/item/spruce_staff.json
+++ /dev/null
@@ -1,26 +0,0 @@
-{
- "parent": "minecraft:item/handheld_rod",
- "overrides": [
- {
- "model": "hexcasting:item/spruce_staff",
- "predicate": {
- "hexcasting:funny_level": 0.0
- }
- },
- {
- "model": "hexcasting:item/old_staff",
- "predicate": {
- "hexcasting:funny_level": 1.0
- }
- },
- {
- "model": "hexcasting:item/bosnia_staff",
- "predicate": {
- "hexcasting:funny_level": 2.0
- }
- }
- ],
- "textures": {
- "layer0": "hexcasting:item/staves/spruce"
- }
-}
\ No newline at end of file
diff --git a/0.10.3/Common/src/generated/resources/assets/hexcasting/models/item/stripped_edified_log.json b/0.10.3/Common/src/generated/resources/assets/hexcasting/models/item/stripped_edified_log.json
deleted file mode 100644
index 69e44843..00000000
--- a/0.10.3/Common/src/generated/resources/assets/hexcasting/models/item/stripped_edified_log.json
+++ /dev/null
@@ -1,3 +0,0 @@
-{
- "parent": "hexcasting:block/stripped_edified_log"
-}
\ No newline at end of file
diff --git a/0.10.3/Common/src/generated/resources/assets/hexcasting/models/item/stripped_edified_wood.json b/0.10.3/Common/src/generated/resources/assets/hexcasting/models/item/stripped_edified_wood.json
deleted file mode 100644
index 45e5b99e..00000000
--- a/0.10.3/Common/src/generated/resources/assets/hexcasting/models/item/stripped_edified_wood.json
+++ /dev/null
@@ -1,3 +0,0 @@
-{
- "parent": "hexcasting:block/stripped_edified_wood"
-}
\ No newline at end of file
diff --git a/0.10.3/Common/src/generated/resources/assets/hexcasting/models/item/sub_sandwich.json b/0.10.3/Common/src/generated/resources/assets/hexcasting/models/item/sub_sandwich.json
deleted file mode 100644
index c5dd346a..00000000
--- a/0.10.3/Common/src/generated/resources/assets/hexcasting/models/item/sub_sandwich.json
+++ /dev/null
@@ -1,6 +0,0 @@
-{
- "parent": "minecraft:item/generated",
- "textures": {
- "layer0": "hexcasting:item/sub_sandwich"
- }
-}
\ No newline at end of file
diff --git a/0.10.3/Common/src/generated/resources/assets/hexcasting/models/item/trinket.json b/0.10.3/Common/src/generated/resources/assets/hexcasting/models/item/trinket.json
deleted file mode 100644
index 154e5af3..00000000
--- a/0.10.3/Common/src/generated/resources/assets/hexcasting/models/item/trinket.json
+++ /dev/null
@@ -1,20 +0,0 @@
-{
- "parent": "minecraft:item/generated",
- "overrides": [
- {
- "model": "hexcasting:item/trinket",
- "predicate": {
- "hexcasting:has_patterns": -0.01
- }
- },
- {
- "model": "hexcasting:item/trinket_filled",
- "predicate": {
- "hexcasting:has_patterns": 0.99
- }
- }
- ],
- "textures": {
- "layer0": "hexcasting:item/trinket"
- }
-}
\ No newline at end of file
diff --git a/0.10.3/Common/src/generated/resources/assets/hexcasting/models/item/trinket_filled.json b/0.10.3/Common/src/generated/resources/assets/hexcasting/models/item/trinket_filled.json
deleted file mode 100644
index 84b09d42..00000000
--- a/0.10.3/Common/src/generated/resources/assets/hexcasting/models/item/trinket_filled.json
+++ /dev/null
@@ -1,6 +0,0 @@
-{
- "parent": "minecraft:item/generated",
- "textures": {
- "layer0": "hexcasting:item/trinket_filled"
- }
-}
\ No newline at end of file
diff --git a/0.10.3/Common/src/generated/resources/assets/hexcasting/models/item/uuid_colorizer.json b/0.10.3/Common/src/generated/resources/assets/hexcasting/models/item/uuid_colorizer.json
deleted file mode 100644
index 0b76dd8f..00000000
--- a/0.10.3/Common/src/generated/resources/assets/hexcasting/models/item/uuid_colorizer.json
+++ /dev/null
@@ -1,6 +0,0 @@
-{
- "parent": "minecraft:item/generated",
- "textures": {
- "layer0": "hexcasting:item/colorizer/uuid"
- }
-}
\ No newline at end of file
diff --git a/0.10.3/Common/src/generated/resources/assets/hexcasting/models/item/warped_staff.json b/0.10.3/Common/src/generated/resources/assets/hexcasting/models/item/warped_staff.json
deleted file mode 100644
index 256f63dd..00000000
--- a/0.10.3/Common/src/generated/resources/assets/hexcasting/models/item/warped_staff.json
+++ /dev/null
@@ -1,26 +0,0 @@
-{
- "parent": "minecraft:item/handheld_rod",
- "overrides": [
- {
- "model": "hexcasting:item/warped_staff",
- "predicate": {
- "hexcasting:funny_level": 0.0
- }
- },
- {
- "model": "hexcasting:item/old_staff",
- "predicate": {
- "hexcasting:funny_level": 1.0
- }
- },
- {
- "model": "hexcasting:item/bosnia_staff",
- "predicate": {
- "hexcasting:funny_level": 2.0
- }
- }
- ],
- "textures": {
- "layer0": "hexcasting:item/staves/warped"
- }
-}
\ No newline at end of file
diff --git a/0.10.3/Common/src/generated/resources/data/hexcasting/advancements/aaa_wasteful_cast.json b/0.10.3/Common/src/generated/resources/data/hexcasting/advancements/aaa_wasteful_cast.json
deleted file mode 100644
index 3f334657..00000000
--- a/0.10.3/Common/src/generated/resources/data/hexcasting/advancements/aaa_wasteful_cast.json
+++ /dev/null
@@ -1,33 +0,0 @@
-{
- "parent": "hexcasting:root",
- "criteria": {
- "waste_amt": {
- "conditions": {
- "media_wasted": {
- "min": 89000
- }
- },
- "trigger": "hexcasting:spend_media"
- }
- },
- "display": {
- "announce_to_chat": true,
- "description": {
- "translate": "advancement.hexcasting:wasteful_cast.desc"
- },
- "frame": "task",
- "hidden": false,
- "icon": {
- "item": "minecraft:glistering_melon_slice"
- },
- "show_toast": true,
- "title": {
- "translate": "advancement.hexcasting:wasteful_cast"
- }
- },
- "requirements": [
- [
- "waste_amt"
- ]
- ]
-}
\ No newline at end of file
diff --git a/0.10.3/Common/src/generated/resources/data/hexcasting/advancements/aab_big_cast.json b/0.10.3/Common/src/generated/resources/data/hexcasting/advancements/aab_big_cast.json
deleted file mode 100644
index 8955dfac..00000000
--- a/0.10.3/Common/src/generated/resources/data/hexcasting/advancements/aab_big_cast.json
+++ /dev/null
@@ -1,33 +0,0 @@
-{
- "parent": "hexcasting:root",
- "criteria": {
- "cast_amt": {
- "conditions": {
- "media_spent": {
- "min": 6400000
- }
- },
- "trigger": "hexcasting:spend_media"
- }
- },
- "display": {
- "announce_to_chat": true,
- "description": {
- "translate": "advancement.hexcasting:big_cast.desc"
- },
- "frame": "task",
- "hidden": false,
- "icon": {
- "item": "hexcasting:charged_amethyst"
- },
- "show_toast": true,
- "title": {
- "translate": "advancement.hexcasting:big_cast"
- }
- },
- "requirements": [
- [
- "cast_amt"
- ]
- ]
-}
\ No newline at end of file
diff --git a/0.10.3/Common/src/generated/resources/data/hexcasting/advancements/enlightenment.json b/0.10.3/Common/src/generated/resources/data/hexcasting/advancements/enlightenment.json
deleted file mode 100644
index 4488f207..00000000
--- a/0.10.3/Common/src/generated/resources/data/hexcasting/advancements/enlightenment.json
+++ /dev/null
@@ -1,37 +0,0 @@
-{
- "parent": "hexcasting:opened_eyes",
- "criteria": {
- "health_used": {
- "conditions": {
- "health_used": {
- "min": 0.8
- },
- "mojang_i_am_begging_and_crying_please_add_an_entity_health_criterion": {
- "max": 1.0,
- "min": 2.2250738585072014E-308
- }
- },
- "trigger": "hexcasting:overcast"
- }
- },
- "display": {
- "announce_to_chat": true,
- "description": {
- "translate": "advancement.hexcasting:enlightenment.desc"
- },
- "frame": "challenge",
- "hidden": true,
- "icon": {
- "item": "minecraft:music_disc_11"
- },
- "show_toast": true,
- "title": {
- "translate": "advancement.hexcasting:enlightenment"
- }
- },
- "requirements": [
- [
- "health_used"
- ]
- ]
-}
\ No newline at end of file
diff --git a/0.10.3/Common/src/generated/resources/data/hexcasting/advancements/lore.json b/0.10.3/Common/src/generated/resources/data/hexcasting/advancements/lore.json
deleted file mode 100644
index 9df730eb..00000000
--- a/0.10.3/Common/src/generated/resources/data/hexcasting/advancements/lore.json
+++ /dev/null
@@ -1,35 +0,0 @@
-{
- "criteria": {
- "used_item": {
- "conditions": {
- "item": {
- "items": [
- "hexcasting:lore_fragment"
- ]
- }
- },
- "trigger": "minecraft:consume_item"
- }
- },
- "display": {
- "announce_to_chat": true,
- "background": "hexcasting:textures/block/slate.png",
- "description": {
- "translate": "advancement.hexcasting:lore.desc"
- },
- "frame": "goal",
- "hidden": false,
- "icon": {
- "item": "hexcasting:akashic_connector"
- },
- "show_toast": true,
- "title": {
- "translate": "advancement.hexcasting:lore"
- }
- },
- "requirements": [
- [
- "used_item"
- ]
- ]
-}
\ No newline at end of file
diff --git a/0.10.3/Common/src/generated/resources/data/hexcasting/advancements/lore/experiment1.json b/0.10.3/Common/src/generated/resources/data/hexcasting/advancements/lore/experiment1.json
deleted file mode 100644
index f6a26fb8..00000000
--- a/0.10.3/Common/src/generated/resources/data/hexcasting/advancements/lore/experiment1.json
+++ /dev/null
@@ -1,28 +0,0 @@
-{
- "parent": "hexcasting:lore",
- "criteria": {
- "grant": {
- "trigger": "minecraft:impossible"
- }
- },
- "display": {
- "announce_to_chat": true,
- "description": {
- "text": ""
- },
- "frame": "task",
- "hidden": true,
- "icon": {
- "item": "hexcasting:lore_fragment"
- },
- "show_toast": true,
- "title": {
- "translate": "advancement.hexcasting:lore/experiment1"
- }
- },
- "requirements": [
- [
- "grant"
- ]
- ]
-}
\ No newline at end of file
diff --git a/0.10.3/Common/src/generated/resources/data/hexcasting/advancements/lore/experiment2.json b/0.10.3/Common/src/generated/resources/data/hexcasting/advancements/lore/experiment2.json
deleted file mode 100644
index de4705e9..00000000
--- a/0.10.3/Common/src/generated/resources/data/hexcasting/advancements/lore/experiment2.json
+++ /dev/null
@@ -1,28 +0,0 @@
-{
- "parent": "hexcasting:lore",
- "criteria": {
- "grant": {
- "trigger": "minecraft:impossible"
- }
- },
- "display": {
- "announce_to_chat": true,
- "description": {
- "text": ""
- },
- "frame": "task",
- "hidden": true,
- "icon": {
- "item": "hexcasting:lore_fragment"
- },
- "show_toast": true,
- "title": {
- "translate": "advancement.hexcasting:lore/experiment2"
- }
- },
- "requirements": [
- [
- "grant"
- ]
- ]
-}
\ No newline at end of file
diff --git a/0.10.3/Common/src/generated/resources/data/hexcasting/advancements/lore/inventory.json b/0.10.3/Common/src/generated/resources/data/hexcasting/advancements/lore/inventory.json
deleted file mode 100644
index 52847918..00000000
--- a/0.10.3/Common/src/generated/resources/data/hexcasting/advancements/lore/inventory.json
+++ /dev/null
@@ -1,28 +0,0 @@
-{
- "parent": "hexcasting:lore",
- "criteria": {
- "grant": {
- "trigger": "minecraft:impossible"
- }
- },
- "display": {
- "announce_to_chat": true,
- "description": {
- "text": ""
- },
- "frame": "task",
- "hidden": true,
- "icon": {
- "item": "hexcasting:lore_fragment"
- },
- "show_toast": true,
- "title": {
- "translate": "advancement.hexcasting:lore/inventory"
- }
- },
- "requirements": [
- [
- "grant"
- ]
- ]
-}
\ No newline at end of file
diff --git a/0.10.3/Common/src/generated/resources/data/hexcasting/advancements/lore/terabithia1.json b/0.10.3/Common/src/generated/resources/data/hexcasting/advancements/lore/terabithia1.json
deleted file mode 100644
index 6f3cfca2..00000000
--- a/0.10.3/Common/src/generated/resources/data/hexcasting/advancements/lore/terabithia1.json
+++ /dev/null
@@ -1,28 +0,0 @@
-{
- "parent": "hexcasting:lore",
- "criteria": {
- "grant": {
- "trigger": "minecraft:impossible"
- }
- },
- "display": {
- "announce_to_chat": true,
- "description": {
- "text": ""
- },
- "frame": "task",
- "hidden": true,
- "icon": {
- "item": "hexcasting:lore_fragment"
- },
- "show_toast": true,
- "title": {
- "translate": "advancement.hexcasting:lore/terabithia1"
- }
- },
- "requirements": [
- [
- "grant"
- ]
- ]
-}
\ No newline at end of file
diff --git a/0.10.3/Common/src/generated/resources/data/hexcasting/advancements/lore/terabithia2.json b/0.10.3/Common/src/generated/resources/data/hexcasting/advancements/lore/terabithia2.json
deleted file mode 100644
index 0b321d75..00000000
--- a/0.10.3/Common/src/generated/resources/data/hexcasting/advancements/lore/terabithia2.json
+++ /dev/null
@@ -1,28 +0,0 @@
-{
- "parent": "hexcasting:lore",
- "criteria": {
- "grant": {
- "trigger": "minecraft:impossible"
- }
- },
- "display": {
- "announce_to_chat": true,
- "description": {
- "text": ""
- },
- "frame": "task",
- "hidden": true,
- "icon": {
- "item": "hexcasting:lore_fragment"
- },
- "show_toast": true,
- "title": {
- "translate": "advancement.hexcasting:lore/terabithia2"
- }
- },
- "requirements": [
- [
- "grant"
- ]
- ]
-}
\ No newline at end of file
diff --git a/0.10.3/Common/src/generated/resources/data/hexcasting/advancements/lore/terabithia3.json b/0.10.3/Common/src/generated/resources/data/hexcasting/advancements/lore/terabithia3.json
deleted file mode 100644
index ecf9beaa..00000000
--- a/0.10.3/Common/src/generated/resources/data/hexcasting/advancements/lore/terabithia3.json
+++ /dev/null
@@ -1,28 +0,0 @@
-{
- "parent": "hexcasting:lore",
- "criteria": {
- "grant": {
- "trigger": "minecraft:impossible"
- }
- },
- "display": {
- "announce_to_chat": true,
- "description": {
- "text": ""
- },
- "frame": "task",
- "hidden": true,
- "icon": {
- "item": "hexcasting:lore_fragment"
- },
- "show_toast": true,
- "title": {
- "translate": "advancement.hexcasting:lore/terabithia3"
- }
- },
- "requirements": [
- [
- "grant"
- ]
- ]
-}
\ No newline at end of file
diff --git a/0.10.3/Common/src/generated/resources/data/hexcasting/advancements/lore/terabithia4.json b/0.10.3/Common/src/generated/resources/data/hexcasting/advancements/lore/terabithia4.json
deleted file mode 100644
index 0e0ddea4..00000000
--- a/0.10.3/Common/src/generated/resources/data/hexcasting/advancements/lore/terabithia4.json
+++ /dev/null
@@ -1,28 +0,0 @@
-{
- "parent": "hexcasting:lore",
- "criteria": {
- "grant": {
- "trigger": "minecraft:impossible"
- }
- },
- "display": {
- "announce_to_chat": true,
- "description": {
- "text": ""
- },
- "frame": "task",
- "hidden": true,
- "icon": {
- "item": "hexcasting:lore_fragment"
- },
- "show_toast": true,
- "title": {
- "translate": "advancement.hexcasting:lore/terabithia4"
- }
- },
- "requirements": [
- [
- "grant"
- ]
- ]
-}
\ No newline at end of file
diff --git a/0.10.3/Common/src/generated/resources/data/hexcasting/advancements/lore/terabithia5.json b/0.10.3/Common/src/generated/resources/data/hexcasting/advancements/lore/terabithia5.json
deleted file mode 100644
index fbcc786a..00000000
--- a/0.10.3/Common/src/generated/resources/data/hexcasting/advancements/lore/terabithia5.json
+++ /dev/null
@@ -1,28 +0,0 @@
-{
- "parent": "hexcasting:lore",
- "criteria": {
- "grant": {
- "trigger": "minecraft:impossible"
- }
- },
- "display": {
- "announce_to_chat": true,
- "description": {
- "text": ""
- },
- "frame": "task",
- "hidden": true,
- "icon": {
- "item": "hexcasting:lore_fragment"
- },
- "show_toast": true,
- "title": {
- "translate": "advancement.hexcasting:lore/terabithia5"
- }
- },
- "requirements": [
- [
- "grant"
- ]
- ]
-}
\ No newline at end of file
diff --git a/0.10.3/Common/src/generated/resources/data/hexcasting/advancements/opened_eyes.json b/0.10.3/Common/src/generated/resources/data/hexcasting/advancements/opened_eyes.json
deleted file mode 100644
index fde10466..00000000
--- a/0.10.3/Common/src/generated/resources/data/hexcasting/advancements/opened_eyes.json
+++ /dev/null
@@ -1,33 +0,0 @@
-{
- "parent": "hexcasting:y_u_no_cast_angy",
- "criteria": {
- "health_used": {
- "conditions": {
- "mojang_i_am_begging_and_crying_please_add_an_entity_health_criterion": {
- "min": 0.0
- }
- },
- "trigger": "hexcasting:overcast"
- }
- },
- "display": {
- "announce_to_chat": true,
- "description": {
- "translate": "advancement.hexcasting:opened_eyes.desc"
- },
- "frame": "task",
- "hidden": false,
- "icon": {
- "item": "minecraft:ender_eye"
- },
- "show_toast": true,
- "title": {
- "translate": "advancement.hexcasting:opened_eyes"
- }
- },
- "requirements": [
- [
- "health_used"
- ]
- ]
-}
\ No newline at end of file
diff --git a/0.10.3/Common/src/generated/resources/data/hexcasting/advancements/root.json b/0.10.3/Common/src/generated/resources/data/hexcasting/advancements/root.json
deleted file mode 100644
index 33e7a6de..00000000
--- a/0.10.3/Common/src/generated/resources/data/hexcasting/advancements/root.json
+++ /dev/null
@@ -1,35 +0,0 @@
-{
- "criteria": {
- "has_charged_amethyst": {
- "conditions": {
- "items": [
- {
- "tag": "hexcasting:grants_root_advancement"
- }
- ]
- },
- "trigger": "minecraft:inventory_changed"
- }
- },
- "display": {
- "announce_to_chat": true,
- "background": "minecraft:textures/block/calcite.png",
- "description": {
- "translate": "advancement.hexcasting:root.desc"
- },
- "frame": "task",
- "hidden": true,
- "icon": {
- "item": "minecraft:budding_amethyst"
- },
- "show_toast": true,
- "title": {
- "translate": "advancement.hexcasting:root"
- }
- },
- "requirements": [
- [
- "has_charged_amethyst"
- ]
- ]
-}
\ No newline at end of file
diff --git a/0.10.3/Common/src/generated/resources/data/hexcasting/advancements/y_u_no_cast_angy.json b/0.10.3/Common/src/generated/resources/data/hexcasting/advancements/y_u_no_cast_angy.json
deleted file mode 100644
index 49ebde35..00000000
--- a/0.10.3/Common/src/generated/resources/data/hexcasting/advancements/y_u_no_cast_angy.json
+++ /dev/null
@@ -1,28 +0,0 @@
-{
- "parent": "hexcasting:root",
- "criteria": {
- "did_the_thing": {
- "trigger": "hexcasting:fail_to_cast_great_spell"
- }
- },
- "display": {
- "announce_to_chat": true,
- "description": {
- "translate": "advancement.hexcasting:y_u_no_cast_angy.desc"
- },
- "frame": "task",
- "hidden": false,
- "icon": {
- "item": "minecraft:blaze_powder"
- },
- "show_toast": true,
- "title": {
- "translate": "advancement.hexcasting:y_u_no_cast_angy"
- }
- },
- "requirements": [
- [
- "did_the_thing"
- ]
- ]
-}
\ No newline at end of file
diff --git a/0.10.3/Common/src/main/java/at/petrak/hexcasting/README.md b/0.10.3/Common/src/main/java/at/petrak/hexcasting/README.md
deleted file mode 100644
index 5eb52a0c..00000000
--- a/0.10.3/Common/src/main/java/at/petrak/hexcasting/README.md
+++ /dev/null
@@ -1,9 +0,0 @@
-Hello, intrepid Github reader!
-
-The "flavor text" words for things in this mod and the internal names are different. (Sorry.)
-
-- A "Hex" is a `Cast`, cast through a [`CastingHarness`](api/spell/casting/CastingHarness.kt)
-- A "Pattern" is a [`HexPattern`](api/spell/math/HexPattern.kt)
-- An "Action" is an [`Operator`](api/spell/Action.kt)
-- An action that pushes a spell is a [`Spell`](api/spell/SpellAction.kt)
-
diff --git a/0.10.3/Common/src/main/java/at/petrak/hexcasting/annotations/SoftImplement.java b/0.10.3/Common/src/main/java/at/petrak/hexcasting/annotations/SoftImplement.java
deleted file mode 100644
index c9094918..00000000
--- a/0.10.3/Common/src/main/java/at/petrak/hexcasting/annotations/SoftImplement.java
+++ /dev/null
@@ -1,30 +0,0 @@
-package at.petrak.hexcasting.annotations;
-
-import java.lang.annotation.ElementType;
-import java.lang.annotation.Retention;
-import java.lang.annotation.RetentionPolicy;
-import java.lang.annotation.Target;
-
-// https://github.com/VazkiiMods/Botania/blob/1.18.x/Common/src/main/java/vazkii/botania/common/annotations/SoftImplement.java
-// yoinky sploinky
-
-/**
- * A purely-documentative annotation.
- * This annotation is used by developers in xplat code. The annotated method is intended
- * to "soft implement" a certain method in a loader specific interface that cannot be
- * named in xplat code and thus cannot be checked with @Override.
- * In this context, "soft implement" means to implement the method by matching the signature
- * with the intended interface method.
- * Examples of interfaces that we would use this for is IForgeItem or FabricItem.
- *
- * The intent is that we audit such sites every major Minecraft version or so, to ensure
- * that they still properly override the intended target.
- */
-@Retention(RetentionPolicy.SOURCE)
-@Target(ElementType.METHOD)
-public @interface SoftImplement {
- /**
- * What interface we're soft implementing
- */
- String value();
-}
diff --git a/0.10.3/Common/src/main/java/at/petrak/hexcasting/api/HexAPI.java b/0.10.3/Common/src/main/java/at/petrak/hexcasting/api/HexAPI.java
deleted file mode 100644
index e22627dc..00000000
--- a/0.10.3/Common/src/main/java/at/petrak/hexcasting/api/HexAPI.java
+++ /dev/null
@@ -1,32 +0,0 @@
-package at.petrak.hexcasting.api;
-
-import com.google.common.base.Suppliers;
-import net.minecraft.resources.ResourceLocation;
-import org.apache.logging.log4j.LogManager;
-import org.apache.logging.log4j.Logger;
-
-import java.util.function.Supplier;
-
-public interface HexAPI {
- String MOD_ID = "hexcasting";
- Logger LOGGER = LogManager.getLogger(MOD_ID);
-
- Supplier INSTANCE = Suppliers.memoize(() -> {
- try {
- return (HexAPI) Class.forName("at.petrak.hexcasting.common.impl.HexAPIImpl")
- .getDeclaredConstructor().newInstance();
- } catch (ReflectiveOperationException e) {
- LogManager.getLogger().warn("Unable to find HexAPIImpl, using a dummy");
- return new HexAPI() {
- };
- }
- });
-
- static HexAPI instance() {
- return INSTANCE.get();
- }
-
- static ResourceLocation modLoc(String s) {
- return new ResourceLocation(MOD_ID, s);
- }
-}
diff --git a/0.10.3/Common/src/main/java/at/petrak/hexcasting/api/PatternRegistry.java b/0.10.3/Common/src/main/java/at/petrak/hexcasting/api/PatternRegistry.java
deleted file mode 100644
index 7e8bae1e..00000000
--- a/0.10.3/Common/src/main/java/at/petrak/hexcasting/api/PatternRegistry.java
+++ /dev/null
@@ -1,336 +0,0 @@
-package at.petrak.hexcasting.api;
-
-import at.petrak.hexcasting.api.spell.Action;
-import at.petrak.hexcasting.api.spell.math.EulerPathFinder;
-import at.petrak.hexcasting.api.spell.math.HexDir;
-import at.petrak.hexcasting.api.spell.math.HexPattern;
-import at.petrak.hexcasting.api.spell.mishaps.MishapInvalidPattern;
-import com.mojang.datafixers.util.Pair;
-import net.minecraft.nbt.CompoundTag;
-import net.minecraft.resources.ResourceLocation;
-import net.minecraft.server.level.ServerLevel;
-import net.minecraft.world.level.saveddata.SavedData;
-import org.jetbrains.annotations.Nullable;
-
-import java.util.HashMap;
-import java.util.HashSet;
-import java.util.Map;
-import java.util.Set;
-import java.util.concurrent.ConcurrentHashMap;
-import java.util.concurrent.ConcurrentLinkedDeque;
-import java.util.concurrent.ConcurrentMap;
-import java.util.stream.Collectors;
-
-public class PatternRegistry {
- private static final ConcurrentMap actionLookup = new ConcurrentHashMap<>();
- private static final ConcurrentMap keyLookup = new ConcurrentHashMap<>();
- private static final ConcurrentLinkedDeque specialHandlers = new ConcurrentLinkedDeque<>();
-
- // Map signatures to the "preferred" direction they start in and their operator ID.
- private static final ConcurrentMap regularPatternLookup =
- new ConcurrentHashMap<>();
-
- private static final ConcurrentMap perWorldPatternLookup =
- new ConcurrentHashMap<>();
-
- public static void mapPattern(HexPattern pattern, ResourceLocation id,
- Action action) throws RegisterPatternException {
- mapPattern(pattern, id, action, false);
- }
-
- /**
- * Associate a given angle signature with a SpellOperator.
- */
- public static void mapPattern(HexPattern pattern, ResourceLocation id, Action action,
- boolean isPerWorld) throws RegisterPatternException {
- if (actionLookup.containsKey(id)) {
- throw new RegisterPatternException("The operator with id `%s` was already registered to: %s", id,
- actionLookup.get(id));
- }
-
- actionLookup.put(id, action);
- keyLookup.put(action, id);
- if (isPerWorld) {
- perWorldPatternLookup.put(id, new PerWorldEntry(pattern, id));
- } else {
- regularPatternLookup.put(pattern.anglesSignature(), new RegularEntry(pattern.getStartDir(), id));
- }
- }
-
-
- /**
- * Add a special handler, to take an arbitrary pattern and return whatever kind of operator you like.
- */
- public static void addSpecialHandler(SpecialHandlerEntry handler) {
- specialHandlers.add(handler);
- }
-
- /**
- * Add a special handler, to take an arbitrary pattern and return whatever kind of operator you like.
- */
- public static void addSpecialHandler(ResourceLocation id, SpecialHandler handler) {
- addSpecialHandler(new SpecialHandlerEntry(id, handler));
- }
-
- /**
- * Internal use only.
- */
- public static Action matchPattern(HexPattern pat, ServerLevel overworld) throws MishapInvalidPattern {
- return matchPatternAndID(pat, overworld).getFirst();
- }
-
- /**
- * Internal use only.
- */
- public static Pair matchPatternAndID(HexPattern pat,
- ServerLevel overworld) throws MishapInvalidPattern {
- // Pipeline:
- // patterns are registered here every time the game boots
- // when we try to look
- for (var handler : specialHandlers) {
- var op = handler.handler.handlePattern(pat);
- if (op != null) {
- return new Pair<>(op, handler.id);
- }
- }
-
- // Is it global?
- var sig = pat.anglesSignature();
- if (regularPatternLookup.containsKey(sig)) {
- var it = regularPatternLookup.get(sig);
- if (!actionLookup.containsKey(it.opId)) {
- throw new MishapInvalidPattern();
- }
- var op = actionLookup.get(it.opId);
- return new Pair<>(op, it.opId);
- }
-
- // Look it up in the world?
- var ds = overworld.getDataStorage();
- Save perWorldPatterns =
- ds.computeIfAbsent(Save::load, () -> Save.create(overworld.getSeed()), TAG_SAVED_DATA);
- perWorldPatterns.fillMissingEntries(overworld.getSeed());
- if (perWorldPatterns.lookup.containsKey(sig)) {
- var it = perWorldPatterns.lookup.get(sig);
- return new Pair<>(actionLookup.get(it.getFirst()), it.getFirst());
- }
-
- throw new MishapInvalidPattern();
- }
-
- /**
- * Internal use only.
- */
- @Nullable
- public static Action lookupPatternByShape(HexPattern pat) {
- // Pipeline:
- // patterns are registered here every time the game boots
- // when we try to look
- for (var handler : specialHandlers) {
- var op = handler.handler.handlePattern(pat);
- if (op != null) {
- return op;
- }
- }
-
- // Is it global?
- var sig = pat.anglesSignature();
- if (regularPatternLookup.containsKey(sig)) {
- var it = regularPatternLookup.get(sig);
- if (!actionLookup.containsKey(it.opId)) {
- return null;
- }
- return actionLookup.get(it.opId);
- }
-
- // Currently, there's no way to look up the name of a Great Spell, as the client is unaware of the correct
- // mapping.
- // TODO: add code to match any pattern in the shape of a Great Spell to its operator.
-
- // var ds = overworld.getDataStorage();
- // Save perWorldPatterns =
- // ds.computeIfAbsent(Save::load, () -> Save.create(overworld.getSeed()), TAG_SAVED_DATA);
- // perWorldPatterns.fillMissingEntries(overworld.getSeed());
- // if (perWorldPatterns.lookup.containsKey(sig)) {
- // var it = perWorldPatterns.lookup.get(sig);
- // return new Pair<>(actionLookup.get(it.getFirst()), it.getFirst());
- // }
-
- return null;
- }
-
- /**
- * Internal use only.
- *
- * Map of signatures to (op id, canonical start dir)
- */
- public static Map> getPerWorldPatterns(ServerLevel overworld) {
- var ds = overworld.getDataStorage();
- Save perWorldPatterns =
- ds.computeIfAbsent(Save::load, () -> Save.create(overworld.getSeed()), TAG_SAVED_DATA);
- return perWorldPatterns.lookup;
- }
-
- public static ResourceLocation lookupPattern(Action action) {
- return keyLookup.get(action);
- }
-
- /**
- * Internal use only.
- */
- public static PatternEntry lookupPattern(ResourceLocation opId) {
- if (perWorldPatternLookup.containsKey(opId)) {
- var it = perWorldPatternLookup.get(opId);
- return new PatternEntry(it.prototype, actionLookup.get(it.opId), true);
- }
- for (var kv : regularPatternLookup.entrySet()) {
- var sig = kv.getKey();
- var entry = kv.getValue();
- if (entry.opId.equals(opId)) {
- var pattern = HexPattern.fromAngles(sig, entry.preferredStart);
- return new PatternEntry(pattern, actionLookup.get(entry.opId), false);
- }
- }
-
- throw new IllegalArgumentException("could not find a pattern for " + opId);
- }
-
- /**
- * Internal use only.
- */
- public static Set getAllPerWorldPatternNames() {
- return perWorldPatternLookup.keySet();
- }
-
- /**
- * Special handling of a pattern. Before checking any of the normal angle-signature based patterns,
- * a given pattern is run by all of these special handlers patterns. If none of them return non-null,
- * then its signature is checked.
- *
- * In the base mod, this is used for number patterns and Bookkeeper's Gambit.
- */
- @FunctionalInterface
- public interface SpecialHandler {
- @Nullable Action handlePattern(HexPattern pattern);
- }
-
- public record SpecialHandlerEntry(ResourceLocation id, SpecialHandler handler) {
- }
-
- public static class RegisterPatternException extends Exception {
- public RegisterPatternException(String msg, Object... formats) {
- super(String.format(msg, formats));
- }
- }
-
- private record RegularEntry(HexDir preferredStart, ResourceLocation opId) {
- }
-
- private record PerWorldEntry(HexPattern prototype, ResourceLocation opId) {
- }
-
- // Fake class we pretend to use internally
- public record PatternEntry(HexPattern prototype, Action action, boolean isPerWorld) {
- }
-
- /**
- * Maps angle sigs to resource locations and their preferred start dir so we can look them up in the main registry
- * Save this on the world in case the random algorithm changes.
- */
- public static class Save extends SavedData {
- private static final String TAG_OP_ID = "op_id";
- private static final String TAG_START_DIR = "start_dir";
-
- // Maps hex signatures to (op ids, canonical start dir)
- private Map> lookup;
- private boolean missingEntries;
-
- public Save(Map> lookup, boolean missingEntries) {
- this.lookup = lookup;
- this.missingEntries = missingEntries;
- }
-
- public Save(Map> lookup) {
- this(lookup, missingEntries(lookup));
- }
-
- private static boolean missingEntries(Map> lookup) {
- var allIds = lookup.values().stream().map(Pair::getFirst).collect(Collectors.toSet());
- return perWorldPatternLookup.values().stream().anyMatch(it -> allIds.contains(it.opId));
- }
-
- private void fillMissingEntries(long seed) {
- if (missingEntries) {
- var doneAny = false;
-
- var allIds = lookup.values().stream().map(Pair::getFirst).collect(Collectors.toSet());
- for (var entry : perWorldPatternLookup.values()) {
- if (!allIds.contains(entry.opId)) {
- scrungle(lookup, entry.prototype, entry.opId, seed);
- doneAny = true;
- }
- }
-
- if (doneAny) {
- setDirty();
- missingEntries = false;
- }
- }
- }
-
- @Override
- public CompoundTag save(CompoundTag tag) {
- this.lookup.forEach((sig, rhs) -> {
- var entry = new CompoundTag();
- entry.putString(TAG_OP_ID, rhs.getFirst().toString());
- entry.putInt(TAG_START_DIR, rhs.getSecond().ordinal());
- tag.put(sig, entry);
- });
- return tag;
- }
-
- private static Save load(CompoundTag tag) {
- var map = new HashMap>();
- var allIds = new HashSet();
- for (var sig : tag.getAllKeys()) {
- var entry = tag.getCompound(sig);
- var opId = ResourceLocation.tryParse(entry.getString(TAG_OP_ID));
- allIds.add(opId);
- var startDir = HexDir.values()[entry.getInt(TAG_START_DIR)];
- map.put(sig, new Pair<>(opId, startDir));
- }
- var missingEntries = perWorldPatternLookup.values().stream().anyMatch(it -> allIds.contains(it.opId));
-
- return new Save(map, missingEntries);
- }
-
- private static void scrungle(Map> lookup, HexPattern prototype,
- ResourceLocation opId, long seed) {
- var scrungled = EulerPathFinder.findAltDrawing(prototype, seed, it -> {
- var sig = it.anglesSignature();
- return !lookup.containsKey(sig) &&
- !regularPatternLookup.containsKey(sig)
- && specialHandlers.stream().noneMatch(handler -> handler.handler.handlePattern(it) != null);
- });
- lookup.put(scrungled.anglesSignature(), new Pair<>(opId, scrungled.getStartDir()));
- }
-
- public static Save create(long seed) {
- var map = new HashMap>();
- PatternRegistry.perWorldPatternLookup.values().forEach(it -> scrungle(map, it.prototype, it.opId, seed));
- var save = new Save(map);
- save.setDirty();
- return save;
- }
- }
-
- public static final String TAG_SAVED_DATA = "hex.per-world-patterns";
-
- public static String getPatternCountInfo() {
- return String.format(
- "Loaded %d regular patterns, " +
- "%d per-world patterns, and " +
- "%d special handlers.", regularPatternLookup.size(), perWorldPatternLookup.size(),
- specialHandlers.size());
- }
-}
diff --git a/0.10.3/Common/src/main/java/at/petrak/hexcasting/api/addldata/ADColorizer.java b/0.10.3/Common/src/main/java/at/petrak/hexcasting/api/addldata/ADColorizer.java
deleted file mode 100644
index cc11653b..00000000
--- a/0.10.3/Common/src/main/java/at/petrak/hexcasting/api/addldata/ADColorizer.java
+++ /dev/null
@@ -1,37 +0,0 @@
-package at.petrak.hexcasting.api.addldata;
-
-import net.minecraft.util.FastColor;
-import net.minecraft.util.Mth;
-import net.minecraft.world.phys.Vec3;
-
-import java.util.UUID;
-
-public interface ADColorizer {
- int color(UUID owner, float time, Vec3 position);
-
- static int morphBetweenColors(int[] colors, Vec3 gradientDir, float time, Vec3 position) {
- float fIdx = Mth.positiveModulo(time + (float) gradientDir.dot(position), 1f) * colors.length;
-
- int baseIdx = Mth.floor(fIdx);
- float tRaw = fIdx - baseIdx;
- float t = tRaw < 0.5 ? 4 * tRaw * tRaw * tRaw : (float) (1 - Math.pow(-2 * tRaw + 2, 3) / 2);
- int start = colors[baseIdx % colors.length];
- int end = colors[(baseIdx + 1) % colors.length];
-
- var r1 = FastColor.ARGB32.red(start);
- var g1 = FastColor.ARGB32.green(start);
- var b1 = FastColor.ARGB32.blue(start);
- var a1 = FastColor.ARGB32.alpha(start);
- var r2 = FastColor.ARGB32.red(end);
- var g2 = FastColor.ARGB32.green(end);
- var b2 = FastColor.ARGB32.blue(end);
- var a2 = FastColor.ARGB32.alpha(end);
-
- var r = Mth.lerp(t, r1, r2);
- var g = Mth.lerp(t, g1, g2);
- var b = Mth.lerp(t, b1, b2);
- var a = Mth.lerp(t, a1, a2);
-
- return FastColor.ARGB32.color((int) a, (int) r, (int) g, (int) b);
- }
-}
diff --git a/0.10.3/Common/src/main/java/at/petrak/hexcasting/api/addldata/ADHexHolder.java b/0.10.3/Common/src/main/java/at/petrak/hexcasting/api/addldata/ADHexHolder.java
deleted file mode 100644
index d0da5b78..00000000
--- a/0.10.3/Common/src/main/java/at/petrak/hexcasting/api/addldata/ADHexHolder.java
+++ /dev/null
@@ -1,21 +0,0 @@
-package at.petrak.hexcasting.api.addldata;
-
-import at.petrak.hexcasting.api.spell.iota.Iota;
-import net.minecraft.server.level.ServerLevel;
-import org.jetbrains.annotations.Nullable;
-
-import java.util.List;
-
-public interface ADHexHolder {
-
- boolean canDrawMediaFromInventory();
-
- boolean hasHex();
-
- @Nullable
- List getHex(ServerLevel level);
-
- void writeHex(List patterns, int media);
-
- void clearHex();
-}
diff --git a/0.10.3/Common/src/main/java/at/petrak/hexcasting/api/addldata/ADIotaHolder.java b/0.10.3/Common/src/main/java/at/petrak/hexcasting/api/addldata/ADIotaHolder.java
deleted file mode 100644
index 812f4574..00000000
--- a/0.10.3/Common/src/main/java/at/petrak/hexcasting/api/addldata/ADIotaHolder.java
+++ /dev/null
@@ -1,32 +0,0 @@
-package at.petrak.hexcasting.api.addldata;
-
-import at.petrak.hexcasting.api.spell.iota.Iota;
-import at.petrak.hexcasting.common.lib.hex.HexIotaTypes;
-import net.minecraft.nbt.CompoundTag;
-import net.minecraft.server.level.ServerLevel;
-import org.jetbrains.annotations.Nullable;
-
-public interface ADIotaHolder {
- @Nullable
- CompoundTag readIotaTag();
-
- @Nullable
- default Iota readIota(ServerLevel world) {
- var tag = readIotaTag();
- if (tag != null) {
- return HexIotaTypes.deserialize(tag, world);
- } else {
- return null;
- }
- }
-
- @Nullable
- default Iota emptyIota() {
- return null;
- }
-
- /**
- * @return if the writing succeeded/would succeed
- */
- boolean writeIota(@Nullable Iota iota, boolean simulate);
-}
diff --git a/0.10.3/Common/src/main/java/at/petrak/hexcasting/api/addldata/ADMediaHolder.java b/0.10.3/Common/src/main/java/at/petrak/hexcasting/api/addldata/ADMediaHolder.java
deleted file mode 100644
index 403a0227..00000000
--- a/0.10.3/Common/src/main/java/at/petrak/hexcasting/api/addldata/ADMediaHolder.java
+++ /dev/null
@@ -1,108 +0,0 @@
-package at.petrak.hexcasting.api.addldata;
-
-import org.jetbrains.annotations.ApiStatus;
-
-public interface ADMediaHolder {
-
- /**
- * Use {@code withdrawMedia(-1, true)}
- *
- * @see ADMediaHolder#withdrawMedia(int, boolean)
- */
- @ApiStatus.OverrideOnly
- int getMedia();
-
- /**
- * Use {@code withdrawMedia(-1, true) + insertMedia(-1, true)} where possible
- *
- * @see ADMediaHolder#insertMedia(int, boolean)
- * @see ADMediaHolder#withdrawMedia(int, boolean)
- */
- @ApiStatus.OverrideOnly
- int getMaxMedia();
-
- /**
- * Use {@code insertMedia(media - withdrawMedia(-1, true), false)} where possible
- *
- * @see ADMediaHolder#insertMedia(int, boolean)
- * @see ADMediaHolder#withdrawMedia(int, boolean)
- */
- @ApiStatus.OverrideOnly
- void setMedia(int media);
-
- /**
- * Whether this media holder can have media inserted into it.
- */
- boolean canRecharge();
-
- /**
- * Whether this media holder can be extracted from.
- */
- boolean canProvide();
-
- /**
- * The priority for this media holder to be selected when casting a hex. Higher priorities are taken first.
- *
- * By default,
- * * Charged Amethyst has priority 1000
- * * Amethyst Shards have priority 2000
- * * Amethyst Dust has priority 3000
- * * Items which hold media have priority 4000
- */
- int getConsumptionPriority();
-
- /**
- * Whether the media inside this media holder may be used to construct a battery.
- */
- boolean canConstructBattery();
-
- /**
- * Withdraws media from the holder. Returns the amount of media extracted, which may be less or more than the cost.
- *
- * Even if {@link ADMediaHolder#canProvide} is false, you can still withdraw media this way.
- *
- * Withdrawing a negative amount will act as though you attempted to withdraw as much media as the holder contains.
- */
- default int withdrawMedia(int cost, boolean simulate) {
- var mediaHere = getMedia();
- if (cost < 0) {
- cost = mediaHere;
- }
- if (!simulate) {
- var mediaLeft = mediaHere - cost;
- setMedia(mediaLeft);
- }
- return Math.min(cost, mediaHere);
- }
-
- /**
- * Inserts media into the holder. Returns the amount of media inserted, which may be less than the requested amount.
- *
- * Even if {@link ADMediaHolder#canRecharge} is false, you can still insert media this way.
- *
- * Inserting a negative amount will act as though you attempted to insert exactly as much media as the holder was missing.
- */
- default int insertMedia(int amount, boolean simulate) {
- var mediaHere = getMedia();
- int emptySpace = getMaxMedia() - mediaHere;
- if (emptySpace <= 0) {
- return 0;
- }
- if (amount < 0) {
- amount = emptySpace;
- }
-
- int inserting = Math.min(amount, emptySpace);
-
- if (!simulate) {
- var newMedia = mediaHere + inserting;
- setMedia(newMedia);
- }
- return inserting;
- }
-
- int CHARGED_AMETHYST_PRIORITY = 1000;
- int AMETHYST_SHARD_PRIORITY = 2000;
- int AMETHYST_DUST_PRIORITY = 3000;
- int BATTERY_PRIORITY = 4000;
-}
diff --git a/0.10.3/Common/src/main/java/at/petrak/hexcasting/api/addldata/ItemDelegatingEntityIotaHolder.java b/0.10.3/Common/src/main/java/at/petrak/hexcasting/api/addldata/ItemDelegatingEntityIotaHolder.java
deleted file mode 100644
index d123f0de..00000000
--- a/0.10.3/Common/src/main/java/at/petrak/hexcasting/api/addldata/ItemDelegatingEntityIotaHolder.java
+++ /dev/null
@@ -1,83 +0,0 @@
-package at.petrak.hexcasting.api.addldata;
-
-import at.petrak.hexcasting.api.spell.iota.Iota;
-import at.petrak.hexcasting.common.entities.EntityWallScroll;
-import at.petrak.hexcasting.xplat.IXplatAbstractions;
-import net.minecraft.nbt.CompoundTag;
-import net.minecraft.server.level.ServerLevel;
-import net.minecraft.world.entity.decoration.ItemFrame;
-import net.minecraft.world.entity.item.ItemEntity;
-import net.minecraft.world.item.ItemStack;
-import org.jetbrains.annotations.Nullable;
-
-import java.util.function.Consumer;
-import java.util.function.Supplier;
-
-public abstract class ItemDelegatingEntityIotaHolder implements ADIotaHolder {
- private final Supplier stackSupplier;
-
- private final Consumer save;
-
- public ItemDelegatingEntityIotaHolder(Supplier stackSupplier, Consumer save) {
- this.stackSupplier = stackSupplier;
- this.save = save;
- }
-
- @Override
- public @Nullable CompoundTag readIotaTag() {
- var delegate = IXplatAbstractions.INSTANCE.findDataHolder(this.stackSupplier.get());
- return delegate == null ? null : delegate.readIotaTag();
- }
-
- @Override
- public boolean writeIota(@Nullable Iota datum, boolean simulate) {
- var stacc = this.stackSupplier.get();
- var delegate = IXplatAbstractions.INSTANCE.findDataHolder(stacc);
- var success = delegate != null && delegate.writeIota(datum, simulate);
- if (success && !simulate) {
- this.save.accept(stacc);
- }
- return success;
- }
-
- @Override
- public @Nullable Iota readIota(ServerLevel world) {
- var delegate = IXplatAbstractions.INSTANCE.findDataHolder(this.stackSupplier.get());
- return delegate == null ? null : delegate.readIota(world);
- }
-
- @Override
- public @Nullable Iota emptyIota() {
- var delegate = IXplatAbstractions.INSTANCE.findDataHolder(this.stackSupplier.get());
- return delegate == null ? null : delegate.emptyIota();
- }
-
- public static class ToItemEntity extends ItemDelegatingEntityIotaHolder {
- public ToItemEntity(ItemEntity entity) {
- super(entity::getItem, stack -> {
- // https://github.com/VazkiiMods/Botania/blob/e6d095ff5010074b45408d6cce8ee1e328af3383/Xplat/src/main/java/vazkii/botania/common/helper/EntityHelper.java#L16
- entity.setItem(ItemStack.EMPTY);
- entity.setItem(stack);
- entity.setUnlimitedLifetime();
- });
- }
- }
-
- public static class ToItemFrame extends ItemDelegatingEntityIotaHolder {
- public ToItemFrame(ItemFrame entity) {
- super(entity::getItem, entity::setItem);
- }
- }
-
- public static class ToWallScroll extends ItemDelegatingEntityIotaHolder {
- public ToWallScroll(EntityWallScroll entity) {
- super(() -> entity.scroll.copy(), stack -> {
- });
- }
-
- @Override
- public boolean writeIota(@Nullable Iota datum, boolean simulate) {
- return false;
- }
- }
-}
diff --git a/0.10.3/Common/src/main/java/at/petrak/hexcasting/api/addldata/package-info.java b/0.10.3/Common/src/main/java/at/petrak/hexcasting/api/addldata/package-info.java
deleted file mode 100644
index a11787c8..00000000
--- a/0.10.3/Common/src/main/java/at/petrak/hexcasting/api/addldata/package-info.java
+++ /dev/null
@@ -1,10 +0,0 @@
-/**
- * An "Additional Data," or AD, is what I am calling the abstraction over capabilities on Forge and
- * cardinal components on Fabric.
- *
- * An {@code ADFooBar} in this package will be implemented by a {@code CCFooBar} on Fabric.
- * On Forge, there are a set of private records that implement them.
- *
- * The point is, this provides an interface for interacting with however whatever platform sticks extra info on stuff.
- */
-package at.petrak.hexcasting.api.addldata;
diff --git a/0.10.3/Common/src/main/java/at/petrak/hexcasting/api/advancements/FailToCastGreatSpellTrigger.java b/0.10.3/Common/src/main/java/at/petrak/hexcasting/api/advancements/FailToCastGreatSpellTrigger.java
deleted file mode 100644
index 66179154..00000000
--- a/0.10.3/Common/src/main/java/at/petrak/hexcasting/api/advancements/FailToCastGreatSpellTrigger.java
+++ /dev/null
@@ -1,40 +0,0 @@
-package at.petrak.hexcasting.api.advancements;
-
-import com.google.gson.JsonObject;
-import net.minecraft.advancements.critereon.*;
-import net.minecraft.resources.ResourceLocation;
-import net.minecraft.server.level.ServerPlayer;
-
-public class FailToCastGreatSpellTrigger extends SimpleCriterionTrigger {
- private static final ResourceLocation ID = new ResourceLocation("hexcasting", "fail_to_cast_great_spell");
-
- @Override
- public ResourceLocation getId() {
- return ID;
- }
-
- @Override
- public Instance createInstance(JsonObject json, EntityPredicate.Composite predicate,
- DeserializationContext pContext) {
- return new Instance(predicate);
- }
-
- public void trigger(ServerPlayer player) {
- super.trigger(player, e -> true);
- }
-
- public static class Instance extends AbstractCriterionTriggerInstance {
- public Instance(EntityPredicate.Composite pPlayer) {
- super(ID, pPlayer);
- }
-
- @Override
- public ResourceLocation getCriterion() {
- return ID;
- }
-
- public JsonObject serializeToJson(SerializationContext pConditions) {
- return new JsonObject();
- }
- }
-}
diff --git a/0.10.3/Common/src/main/java/at/petrak/hexcasting/api/advancements/HexAdvancementTriggers.java b/0.10.3/Common/src/main/java/at/petrak/hexcasting/api/advancements/HexAdvancementTriggers.java
deleted file mode 100644
index 16af02ab..00000000
--- a/0.10.3/Common/src/main/java/at/petrak/hexcasting/api/advancements/HexAdvancementTriggers.java
+++ /dev/null
@@ -1,15 +0,0 @@
-package at.petrak.hexcasting.api.advancements;
-
-import at.petrak.hexcasting.mixin.accessor.CriteriaTriggersAccessor;
-
-public class HexAdvancementTriggers {
- public static final OvercastTrigger OVERCAST_TRIGGER = new OvercastTrigger();
- public static final SpendMediaTrigger SPEND_MEDIA_TRIGGER = new SpendMediaTrigger();
- public static final FailToCastGreatSpellTrigger FAIL_GREAT_SPELL_TRIGGER = new FailToCastGreatSpellTrigger();
-
- public static void registerTriggers() {
- CriteriaTriggersAccessor.hex$register(OVERCAST_TRIGGER);
- CriteriaTriggersAccessor.hex$register(SPEND_MEDIA_TRIGGER);
- CriteriaTriggersAccessor.hex$register(FAIL_GREAT_SPELL_TRIGGER);
- }
-}
diff --git a/0.10.3/Common/src/main/java/at/petrak/hexcasting/api/advancements/OvercastTrigger.java b/0.10.3/Common/src/main/java/at/petrak/hexcasting/api/advancements/OvercastTrigger.java
deleted file mode 100644
index ae972d1c..00000000
--- a/0.10.3/Common/src/main/java/at/petrak/hexcasting/api/advancements/OvercastTrigger.java
+++ /dev/null
@@ -1,86 +0,0 @@
-package at.petrak.hexcasting.api.advancements;
-
-import at.petrak.hexcasting.api.mod.HexConfig;
-import com.google.gson.JsonObject;
-import net.minecraft.advancements.critereon.*;
-import net.minecraft.resources.ResourceLocation;
-import net.minecraft.server.level.ServerPlayer;
-
-// https://github.com/TelepathicGrunt/Bumblezone/blob/latest-released/src/main/java/com/telepathicgrunt/the_bumblezone/advancements/CleanupStickyHoneyResidueTrigger.java
-// https://github.com/VazkiiMods/Botania/blob/b8706e2e0bba20f67f1e103559a4ce39d63d48f9/src/main/java/vazkii/botania/common/advancements/CorporeaRequestTrigger.java
-
-public class OvercastTrigger extends SimpleCriterionTrigger {
- private static final ResourceLocation ID = new ResourceLocation("hexcasting", "overcast");
-
- private static final String TAG_MEDIA_GENERATED = "media_generated";
- private static final String TAG_HEALTH_USED = "health_used";
- // HEY KIDS DID YOYU KNOW THERE'S NOT A CRITERIA FOR HOW MUCH ***HEALTH*** AN ENTITY HAS
- private static final String TAG_HEALTH_LEFT =
- "mojang_i_am_begging_and_crying_please_add_an_entity_health_criterion";
-
- @Override
- public ResourceLocation getId() {
- return ID;
- }
-
- @Override
- protected Instance createInstance(JsonObject json, EntityPredicate.Composite predicate,
- DeserializationContext pContext) {
- return new Instance(predicate,
- MinMaxBounds.Ints.fromJson(json.get(TAG_MEDIA_GENERATED)),
- MinMaxBounds.Doubles.fromJson(json.get(TAG_HEALTH_USED)),
- MinMaxBounds.Doubles.fromJson(json.get(TAG_HEALTH_LEFT)));
- }
-
- public void trigger(ServerPlayer player, int mediaGenerated) {
- super.trigger(player, inst -> {
- var mediaToHealth = HexConfig.common().mediaToHealthRate();
- var healthUsed = mediaGenerated / mediaToHealth;
- return inst.test(mediaGenerated, healthUsed / player.getMaxHealth(), player.getHealth());
- });
- }
-
- public static class Instance extends AbstractCriterionTriggerInstance {
- protected final MinMaxBounds.Ints mediaGenerated;
- // This is the *proporttion* of the health bar.
- protected final MinMaxBounds.Doubles healthUsed;
- // DID YOU KNOW THERES ONE TO CHECK THE WORLD TIME, BUT NOT THE HEALTH!?
- protected final MinMaxBounds.Doubles healthLeft;
-
- public Instance(EntityPredicate.Composite predicate, MinMaxBounds.Ints mediaGenerated,
- MinMaxBounds.Doubles healthUsed, MinMaxBounds.Doubles healthLeft) {
- super(OvercastTrigger.ID, predicate);
- this.mediaGenerated = mediaGenerated;
- this.healthUsed = healthUsed;
- // DID YOU KNOW THERE'S ONE TO CHECK THE FUCKING C A T T Y P E BUT NOT THE HEALTH
- this.healthLeft = healthLeft;
- }
-
- @Override
- public ResourceLocation getCriterion() {
- return ID;
- }
-
- @Override
- public JsonObject serializeToJson(SerializationContext ctx) {
- JsonObject json = super.serializeToJson(ctx);
- if (!this.mediaGenerated.isAny()) {
- json.add(TAG_MEDIA_GENERATED, this.mediaGenerated.serializeToJson());
- }
- if (!this.healthUsed.isAny()) {
- json.add(TAG_HEALTH_USED, this.healthUsed.serializeToJson());
- }
- if (!this.healthLeft.isAny()) {
- json.add(TAG_HEALTH_LEFT, this.healthLeft.serializeToJson());
- }
- return json;
- }
-
- private boolean test(int mediaGeneratedIn, double healthUsedIn, float healthLeftIn) {
- return this.mediaGenerated.matches(mediaGeneratedIn)
- && this.healthUsed.matches(healthUsedIn)
- // DID YOU KNOW ALL THE ENEITYT PREDICATES ARE HARD-CODED AND YOU CANT MAKE NEW ONES
- && this.healthLeft.matches(healthLeftIn);
- }
- }
-}
diff --git a/0.10.3/Common/src/main/java/at/petrak/hexcasting/api/advancements/SpendMediaTrigger.java b/0.10.3/Common/src/main/java/at/petrak/hexcasting/api/advancements/SpendMediaTrigger.java
deleted file mode 100644
index 3679711d..00000000
--- a/0.10.3/Common/src/main/java/at/petrak/hexcasting/api/advancements/SpendMediaTrigger.java
+++ /dev/null
@@ -1,63 +0,0 @@
-package at.petrak.hexcasting.api.advancements;
-
-import com.google.gson.JsonObject;
-import net.minecraft.advancements.critereon.*;
-import net.minecraft.resources.ResourceLocation;
-import net.minecraft.server.level.ServerPlayer;
-
-public class SpendMediaTrigger extends SimpleCriterionTrigger {
- private static final ResourceLocation ID = new ResourceLocation("hexcasting", "spend_media");
-
- private static final String TAG_MEDIA_SPENT = "media_spent";
- private static final String TAG_MEDIA_WASTED = "media_wasted";
-
- @Override
- public ResourceLocation getId() {
- return ID;
- }
-
- @Override
- protected Instance createInstance(JsonObject json, EntityPredicate.Composite predicate,
- DeserializationContext pContext) {
- return new Instance(predicate,
- MinMaxBounds.Ints.fromJson(json.get(TAG_MEDIA_SPENT)),
- MinMaxBounds.Ints.fromJson(json.get(TAG_MEDIA_WASTED)));
- }
-
- public void trigger(ServerPlayer player, int mediaSpent, int mediaWasted) {
- super.trigger(player, inst -> inst.test(mediaSpent, mediaWasted));
- }
-
- public static class Instance extends AbstractCriterionTriggerInstance {
- protected final MinMaxBounds.Ints mediaSpent;
- protected final MinMaxBounds.Ints mediaWasted;
-
- public Instance(EntityPredicate.Composite predicate, MinMaxBounds.Ints mediaSpent,
- MinMaxBounds.Ints mediaWasted) {
- super(SpendMediaTrigger.ID, predicate);
- this.mediaSpent = mediaSpent;
- this.mediaWasted = mediaWasted;
- }
-
- @Override
- public ResourceLocation getCriterion() {
- return ID;
- }
-
- @Override
- public JsonObject serializeToJson(SerializationContext ctx) {
- JsonObject json = super.serializeToJson(ctx);
- if (!this.mediaSpent.isAny()) {
- json.add(TAG_MEDIA_SPENT, this.mediaSpent.serializeToJson());
- }
- if (!this.mediaWasted.isAny()) {
- json.add(TAG_MEDIA_WASTED, this.mediaWasted.serializeToJson());
- }
- return json;
- }
-
- private boolean test(int mediaSpentIn, int mediaWastedIn) {
- return this.mediaSpent.matches(mediaSpentIn) && this.mediaWasted.matches(mediaWastedIn);
- }
- }
-}
diff --git a/0.10.3/Common/src/main/java/at/petrak/hexcasting/api/block/HexBlockEntity.java b/0.10.3/Common/src/main/java/at/petrak/hexcasting/api/block/HexBlockEntity.java
deleted file mode 100644
index e531ddb1..00000000
--- a/0.10.3/Common/src/main/java/at/petrak/hexcasting/api/block/HexBlockEntity.java
+++ /dev/null
@@ -1,49 +0,0 @@
-package at.petrak.hexcasting.api.block;
-
-import net.minecraft.core.BlockPos;
-import net.minecraft.nbt.CompoundTag;
-import net.minecraft.network.protocol.Packet;
-import net.minecraft.network.protocol.game.ClientGamePacketListener;
-import net.minecraft.network.protocol.game.ClientboundBlockEntityDataPacket;
-import net.minecraft.world.level.block.entity.BlockEntity;
-import net.minecraft.world.level.block.entity.BlockEntityType;
-import net.minecraft.world.level.block.state.BlockState;
-
-public abstract class HexBlockEntity extends BlockEntity {
- public HexBlockEntity(BlockEntityType> pType, BlockPos pWorldPosition, BlockState pBlockState) {
- super(pType, pWorldPosition, pBlockState);
- }
-
- protected abstract void saveModData(CompoundTag tag);
-
- protected abstract void loadModData(CompoundTag tag);
-
- @Override
- protected void saveAdditional(CompoundTag pTag) {
- this.saveModData(pTag);
- }
-
- @Override
- public void load(CompoundTag pTag) {
- super.load(pTag);
- this.loadModData(pTag);
- }
-
- @Override
- public CompoundTag getUpdateTag() {
- CompoundTag tag = new CompoundTag();
- this.saveModData(tag);
- return tag;
- }
-
- @Override
- public Packet getUpdatePacket() {
- return ClientboundBlockEntityDataPacket.create(this);
- }
-
- public void sync() {
- this.setChanged();
- this.level.sendBlockUpdated(this.getBlockPos(), this.getBlockState(), this.getBlockState(), 3);
- }
-
-}
diff --git a/0.10.3/Common/src/main/java/at/petrak/hexcasting/api/block/circle/BlockAbstractImpetus.java b/0.10.3/Common/src/main/java/at/petrak/hexcasting/api/block/circle/BlockAbstractImpetus.java
deleted file mode 100644
index 958e99f7..00000000
--- a/0.10.3/Common/src/main/java/at/petrak/hexcasting/api/block/circle/BlockAbstractImpetus.java
+++ /dev/null
@@ -1,94 +0,0 @@
-package at.petrak.hexcasting.api.block.circle;
-
-import at.petrak.hexcasting.api.spell.math.HexPattern;
-import net.minecraft.core.BlockPos;
-import net.minecraft.core.Direction;
-import net.minecraft.server.level.ServerLevel;
-import net.minecraft.util.RandomSource;
-import net.minecraft.world.item.context.BlockPlaceContext;
-import net.minecraft.world.level.Level;
-import net.minecraft.world.level.block.Block;
-import net.minecraft.world.level.block.EntityBlock;
-import net.minecraft.world.level.block.Mirror;
-import net.minecraft.world.level.block.Rotation;
-import net.minecraft.world.level.block.state.BlockState;
-import net.minecraft.world.level.block.state.StateDefinition;
-import net.minecraft.world.level.block.state.properties.BlockStateProperties;
-import net.minecraft.world.level.block.state.properties.DirectionProperty;
-import org.jetbrains.annotations.Nullable;
-
-import java.util.EnumSet;
-
-// Facing dir is the direction it starts searching for slates in to start
-public abstract class BlockAbstractImpetus extends BlockCircleComponent implements EntityBlock {
- public static final DirectionProperty FACING = BlockStateProperties.FACING;
-
- public BlockAbstractImpetus(Properties p_49795_) {
- super(p_49795_);
- this.registerDefaultState(
- this.stateDefinition.any().setValue(ENERGIZED, false).setValue(FACING, Direction.NORTH));
- }
-
- @Override
- public boolean canEnterFromDirection(Direction enterDir, Direction normalDir, BlockPos pos, BlockState bs,
- Level world) {
- return enterDir != bs.getValue(FACING);
- }
-
- @Override
- public EnumSet exitDirections(BlockPos pos, BlockState bs, Level world) {
- return EnumSet.of(bs.getValue(FACING));
- }
-
- @Override
- public @Nullable HexPattern getPattern(BlockPos pos, BlockState bs, Level world) {
- return null;
- }
-
- @Override
- public Direction normalDir(BlockPos pos, BlockState bs, Level world, int recursionLeft) {
- return normalDirOfOther(pos.relative(bs.getValue(FACING)), world, recursionLeft);
- }
-
- @Override
- public float particleHeight(BlockPos pos, BlockState bs, Level world) {
- return 0.5f;
- }
-
- @Override
- public void tick(BlockState pState, ServerLevel pLevel, BlockPos pPos, RandomSource pRandom) {
- if (pLevel.getBlockEntity(pPos) instanceof BlockEntityAbstractImpetus tile && pState.getValue(ENERGIZED)) {
- tile.stepCircle();
- }
- }
-
- @Override
- public void onRemove(BlockState pState, Level pLevel, BlockPos pPos, BlockState pNewState, boolean pIsMoving) {
- if (!pNewState.is(pState.getBlock())
- && pLevel.getBlockEntity(pPos) instanceof BlockEntityAbstractImpetus impetus) {
- impetus.stopCasting();
- }
- super.onRemove(pState, pLevel, pPos, pNewState, pIsMoving);
- }
-
- @Override
- protected void createBlockStateDefinition(StateDefinition.Builder builder) {
- super.createBlockStateDefinition(builder);
- builder.add(FACING);
- }
-
- @Override
- public BlockState getStateForPlacement(BlockPlaceContext pContext) {
- return this.defaultBlockState().setValue(FACING, pContext.getNearestLookingDirection());
- }
-
- @Override
- public BlockState rotate(BlockState pState, Rotation pRot) {
- return pState.setValue(FACING, pRot.rotate(pState.getValue(FACING)));
- }
-
- @Override
- public BlockState mirror(BlockState pState, Mirror pMirror) {
- return pState.rotate(pMirror.getRotation(pState.getValue(FACING)));
- }
-}
diff --git a/0.10.3/Common/src/main/java/at/petrak/hexcasting/api/block/circle/BlockCircleComponent.java b/0.10.3/Common/src/main/java/at/petrak/hexcasting/api/block/circle/BlockCircleComponent.java
deleted file mode 100644
index 9aead246..00000000
--- a/0.10.3/Common/src/main/java/at/petrak/hexcasting/api/block/circle/BlockCircleComponent.java
+++ /dev/null
@@ -1,77 +0,0 @@
-package at.petrak.hexcasting.api.block.circle;
-
-import at.petrak.hexcasting.api.spell.math.HexPattern;
-import net.minecraft.core.BlockPos;
-import net.minecraft.core.Direction;
-import net.minecraft.world.level.Level;
-import net.minecraft.world.level.block.Block;
-import net.minecraft.world.level.block.state.BlockState;
-import net.minecraft.world.level.block.state.StateDefinition;
-import net.minecraft.world.level.block.state.properties.BooleanProperty;
-import org.jetbrains.annotations.Nullable;
-
-import java.util.EnumSet;
-
-public abstract class BlockCircleComponent extends Block {
- public static final BooleanProperty ENERGIZED = BooleanProperty.create("energized");
-
- public BlockCircleComponent(Properties p_49795_) {
- super(p_49795_);
- }
-
- /**
- * Can this component get transferred to from a block coming in from that direction, with the given normal?
- */
- abstract public boolean canEnterFromDirection(Direction enterDir, Direction normalDir, BlockPos pos,
- BlockState bs, Level world);
-
- abstract public EnumSet exitDirections(BlockPos pos, BlockState bs, Level world);
-
- @Nullable
- abstract public HexPattern getPattern(BlockPos pos, BlockState bs, Level world);
-
- /**
- * Which direction points "up" or "out" for this block?
- * This is used for {@link BlockCircleComponent#canEnterFromDirection(Direction, Direction, BlockPos, BlockState, Level)}
- * as well as particles.
- */
- public Direction normalDir(BlockPos pos, BlockState bs, Level world) {
- return normalDir(pos, bs, world, 16);
- }
-
- abstract public Direction normalDir(BlockPos pos, BlockState bs, Level world, int recursionLeft);
-
- public static Direction normalDirOfOther(BlockPos other, Level world, int recursionLeft) {
- if (recursionLeft <= 0) {
- return Direction.UP;
- }
-
- var stateThere = world.getBlockState(other);
- if (stateThere.getBlock() instanceof BlockCircleComponent bcc) {
- return bcc.normalDir(other, stateThere, world, recursionLeft - 1);
- } else {
- return Direction.UP;
- }
- }
-
- /**
- * How many blocks in the {@link BlockCircleComponent#normalDir(BlockPos, BlockState, Level)} from the center
- * particles should be spawned in
- */
- abstract public float particleHeight(BlockPos pos, BlockState bs, Level world);
-
- @Override
- protected void createBlockStateDefinition(StateDefinition.Builder pBuilder) {
- pBuilder.add(ENERGIZED);
- }
-
- @Override
- public boolean hasAnalogOutputSignal(BlockState pState) {
- return true;
- }
-
- @Override
- public int getAnalogOutputSignal(BlockState pState, Level pLevel, BlockPos pPos) {
- return pState.getValue(ENERGIZED) ? 15 : 0;
- }
-}
diff --git a/0.10.3/Common/src/main/java/at/petrak/hexcasting/api/block/circle/BlockEntityAbstractImpetus.java b/0.10.3/Common/src/main/java/at/petrak/hexcasting/api/block/circle/BlockEntityAbstractImpetus.java
deleted file mode 100644
index 58c64637..00000000
--- a/0.10.3/Common/src/main/java/at/petrak/hexcasting/api/block/circle/BlockEntityAbstractImpetus.java
+++ /dev/null
@@ -1,578 +0,0 @@
-package at.petrak.hexcasting.api.block.circle;
-
-import at.petrak.hexcasting.api.block.HexBlockEntity;
-import at.petrak.hexcasting.api.misc.FrozenColorizer;
-import at.petrak.hexcasting.api.misc.MediaConstants;
-import at.petrak.hexcasting.api.mod.HexConfig;
-import at.petrak.hexcasting.api.spell.ParticleSpray;
-import at.petrak.hexcasting.api.spell.casting.CastingContext;
-import at.petrak.hexcasting.api.spell.casting.CastingHarness;
-import at.petrak.hexcasting.api.spell.casting.SpellCircleContext;
-import at.petrak.hexcasting.api.spell.iota.PatternIota;
-import at.petrak.hexcasting.api.utils.MediaHelper;
-import at.petrak.hexcasting.common.items.magic.ItemCreativeUnlocker;
-import at.petrak.hexcasting.common.lib.HexItems;
-import at.petrak.hexcasting.common.lib.HexSounds;
-import at.petrak.hexcasting.xplat.IXplatAbstractions;
-import com.mojang.datafixers.util.Pair;
-import net.minecraft.core.BlockPos;
-import net.minecraft.core.Direction;
-import net.minecraft.nbt.CompoundTag;
-import net.minecraft.nbt.ListTag;
-import net.minecraft.nbt.NbtUtils;
-import net.minecraft.nbt.Tag;
-import net.minecraft.network.chat.Component;
-import net.minecraft.server.level.ServerLevel;
-import net.minecraft.server.level.ServerPlayer;
-import net.minecraft.sounds.SoundSource;
-import net.minecraft.tags.BlockTags;
-import net.minecraft.util.Mth;
-import net.minecraft.world.InteractionHand;
-import net.minecraft.world.WorldlyContainer;
-import net.minecraft.world.entity.player.Player;
-import net.minecraft.world.item.DyeColor;
-import net.minecraft.world.item.ItemStack;
-import net.minecraft.world.item.Items;
-import net.minecraft.world.level.Level;
-import net.minecraft.world.level.block.Blocks;
-import net.minecraft.world.level.block.entity.BlockEntityType;
-import net.minecraft.world.level.block.state.BlockState;
-import net.minecraft.world.phys.AABB;
-import net.minecraft.world.phys.Vec3;
-import org.jetbrains.annotations.Contract;
-import org.jetbrains.annotations.Nullable;
-
-import java.text.DecimalFormat;
-import java.util.*;
-
-public abstract class BlockEntityAbstractImpetus extends HexBlockEntity implements WorldlyContainer {
- public static final String
- TAG_ACTIVATOR = "activator",
- TAG_COLORIZER = "colorizer",
- TAG_NEXT_BLOCK = "next_block",
- TAG_TRACKED_BLOCKS = "tracked_blocks",
- TAG_FOUND_ALL = "found_all",
- TAG_MEDIA = "media",
- TAG_LAST_MISHAP = "last_mishap";
-
- private static final DecimalFormat DUST_AMOUNT = new DecimalFormat("###,###.##");
-
- @Nullable
- private UUID activator = null;
- @Nullable
- private FrozenColorizer colorizer = null;
- @Nullable
- private BlockPos nextBlock = null;
- @Nullable
- private List trackedBlocks = null;
- private transient Set knownBlocks = null;
- private boolean foundAll = false;
- @Nullable
- private Component lastMishap = null;
-
- private static final int MAX_CAPACITY = 2_000_000_000;
-
- private int media = 0;
-
- public BlockEntityAbstractImpetus(BlockEntityType> pType, BlockPos pWorldPosition, BlockState pBlockState) {
- super(pType, pWorldPosition, pBlockState);
- }
-
- abstract public boolean activatorAlwaysInRange();
-
- public int getMedia() {
- return this.media;
- }
-
- public void setMedia(int media) {
- this.media = media;
- }
-
- @Nullable
- public Component getLastMishap() {
- return lastMishap;
- }
-
- public void setLastMishap(@Nullable Component lastMishap) {
- this.lastMishap = lastMishap;
- }
-
- public void activateSpellCircle(ServerPlayer activator) {
- if (this.nextBlock != null) {
- return;
- }
- this.level.scheduleTick(this.getBlockPos(), this.getBlockState().getBlock(), this.getTickSpeed());
-
- this.activator = activator.getUUID();
- this.nextBlock = this.getBlockPos();
- this.trackedBlocks = new ArrayList<>();
- this.knownBlocks = new HashSet<>();
- this.colorizer = IXplatAbstractions.INSTANCE.getColorizer(activator);
-
- this.level.setBlockAndUpdate(this.getBlockPos(),
- this.getBlockState().setValue(BlockAbstractImpetus.ENERGIZED, true));
- this.stepCircle();
- }
-
- public void applyScryingLensOverlay(List> lines,
- BlockState state, BlockPos pos,
- Player observer, Level world,
- Direction hitFace) {
- if (world.getBlockEntity(pos) instanceof BlockEntityAbstractImpetus beai) {
- if (beai.getMedia() < 0) {
- lines.add(new Pair<>(new ItemStack(HexItems.AMETHYST_DUST), ItemCreativeUnlocker.infiniteMedia(world)));
- } else {
- var dustCount = (float) beai.getMedia() / (float) MediaConstants.DUST_UNIT;
- var dustCmp = Component.translatable("hexcasting.tooltip.media",
- DUST_AMOUNT.format(dustCount));
- lines.add(new Pair<>(new ItemStack(HexItems.AMETHYST_DUST), dustCmp));
- }
-
- var mishap = this.getLastMishap();
- if (mishap != null) {
- lines.add(new Pair<>(new ItemStack(Items.MUSIC_DISC_11), mishap));
- }
- }
- }
-
- @Override
- protected void saveModData(CompoundTag tag) {
- if (this.activator != null && this.colorizer != null && this.nextBlock != null && this.trackedBlocks != null) {
- tag.putUUID(TAG_ACTIVATOR, this.activator);
- tag.put(TAG_NEXT_BLOCK, NbtUtils.writeBlockPos(this.nextBlock));
- tag.put(TAG_COLORIZER, this.colorizer.serializeToNBT());
- tag.putBoolean(TAG_FOUND_ALL, this.foundAll);
-
- var trackeds = new ListTag();
- for (var tracked : this.trackedBlocks) {
- trackeds.add(NbtUtils.writeBlockPos(tracked));
- }
- tag.put(TAG_TRACKED_BLOCKS, trackeds);
- }
-
- tag.putInt(TAG_MEDIA, this.media);
- if (this.lastMishap != null) {
- tag.putString(TAG_LAST_MISHAP, Component.Serializer.toJson(this.lastMishap));
- }
- }
-
- @Override
- protected void loadModData(CompoundTag tag) {
- if (tag.contains(TAG_ACTIVATOR, Tag.TAG_INT_ARRAY) &&
- tag.contains(TAG_COLORIZER, Tag.TAG_COMPOUND) &&
- tag.contains(TAG_NEXT_BLOCK, Tag.TAG_COMPOUND) &&
- tag.contains(TAG_TRACKED_BLOCKS, Tag.TAG_LIST)) {
- this.activator = tag.getUUID(TAG_ACTIVATOR);
- this.colorizer = FrozenColorizer.fromNBT(tag.getCompound(TAG_COLORIZER));
- this.nextBlock = NbtUtils.readBlockPos(tag.getCompound(TAG_NEXT_BLOCK));
- this.foundAll = tag.getBoolean(TAG_FOUND_ALL);
- var trackeds = tag.getList(TAG_TRACKED_BLOCKS, Tag.TAG_COMPOUND);
- this.trackedBlocks = new ArrayList<>(trackeds.size());
- this.knownBlocks = new HashSet<>();
- for (var tracked : trackeds) {
- var pos = NbtUtils.readBlockPos((CompoundTag) tracked);
- this.trackedBlocks.add(pos);
- this.knownBlocks.add(pos);
- }
- } else {
- this.activator = null;
- this.colorizer = null;
- this.nextBlock = null;
- this.foundAll = false;
- this.trackedBlocks = new ArrayList<>();
- this.knownBlocks = new HashSet<>();
- }
-
- this.media = tag.getInt(TAG_MEDIA);
- if (tag.contains(TAG_LAST_MISHAP, Tag.TAG_STRING)) {
- this.lastMishap = Component.Serializer.fromJson(tag.getString(TAG_LAST_MISHAP));
- } else {
- this.lastMishap = null;
- }
- }
-
- void stepCircle() {
- this.setChanged();
-
- // haha which silly idiot would have done something like this
- if (this.activator == null || this.colorizer == null || this.nextBlock == null || this.trackedBlocks == null) {
- return;
- }
-
- var possibleErrorPos = this.checkEverythingOk();
- if (possibleErrorPos != null) {
- this.sfx(possibleErrorPos, false);
- this.stopCasting();
- return;
- }
-
- if (this.foundAll) {
- this.clearEnergized();
- this.castSpell();
- this.stopCasting();
- return;
- }
-
- // This should only fail if we remove blocks halfway through casting
- var bsHere = this.level.getBlockState(this.nextBlock);
- if (!this.trackedBlocks.isEmpty() && bsHere.getBlock() instanceof BlockAbstractImpetus) {
- // no two impetuses!
- this.sfx(this.nextBlock, false);
- this.stopCasting();
- return;
- }
- var blockHere = bsHere.getBlock();
- if (!(blockHere instanceof BlockCircleComponent cc)) {
- this.sfx(this.nextBlock, false);
- this.stopCasting();
- return;
- }
- // Awesome we know this block is OK
- var thisNormal = cc.normalDir(this.nextBlock, bsHere, this.level);
- var possibleExits = cc.exitDirections(this.nextBlock, bsHere, this.level);
- BlockPos foundPos = null;
- for (var exit : possibleExits) {
- var neighborPos = this.nextBlock.relative(exit);
- var blockThere = this.level.getBlockState(neighborPos);
- // at this point, we haven't actually added nextBlock to trackedBlocks
- // so, in the smallest circle case (a 2x2), this will have a size of 3 (with this block being the 4th).
- var closedLoop = (this.trackedBlocks.size() >= 3 && this.trackedBlocks.get(0).equals(neighborPos));
- var mightBeOkThere = closedLoop
- || this.trackedBlocks.isEmpty()
- || !this.trackedBlocks.get(this.trackedBlocks.size() - 1).equals(neighborPos);
- if (mightBeOkThere
- && blockThere.getBlock() instanceof BlockCircleComponent cc2
- && cc2.canEnterFromDirection(exit.getOpposite(), thisNormal, neighborPos, blockThere, this.level)
- // another good use for the implies operator 😩
- && (!blockThere.getValue(BlockCircleComponent.ENERGIZED) || this.knownBlocks.contains(neighborPos))) {
- if (foundPos == null) {
- foundPos = neighborPos;
- this.foundAll |= closedLoop;
- } else {
- // uh oh, fork in the road
- this.sfx(this.nextBlock, false);
- this.stopCasting();
- return;
- }
- }
- }
- if (foundPos != null) {
- // pog
- this.trackedBlocks.add(this.nextBlock);
- this.knownBlocks.add(this.nextBlock);
- this.nextBlock = foundPos;
- } else {
- // end of the line
- this.sfx(this.nextBlock, false);
- this.stopCasting();
- return;
- }
-
- var lastPos = this.trackedBlocks.get(this.trackedBlocks.size() - 1);
- var justTrackedBlock = this.level.getBlockState(lastPos);
- this.level.setBlockAndUpdate(lastPos, justTrackedBlock.setValue(BlockCircleComponent.ENERGIZED, true));
- this.sfx(lastPos, true);
-
- this.level.scheduleTick(this.getBlockPos(), this.getBlockState().getBlock(), this.getTickSpeed());
- }
-
- private void castSpell() {
- var player = this.getPlayer();
-
- if (player instanceof ServerPlayer splayer) {
- var bounds = getBounds(this.trackedBlocks);
-
- var ctx = new CastingContext(splayer, InteractionHand.MAIN_HAND,
- new SpellCircleContext(this.getBlockPos(), bounds, this.activatorAlwaysInRange()));
- var harness = new CastingHarness(ctx);
-
- BlockPos erroredPos = null;
- for (var tracked : this.trackedBlocks) {
- var bs = this.level.getBlockState(tracked);
- if (bs.getBlock() instanceof BlockCircleComponent cc) {
- var newPattern = cc.getPattern(tracked, bs, this.level);
- if (newPattern != null) {
- var info = harness.executeIota(new PatternIota(newPattern), splayer.getLevel());
- if (!info.getResolutionType().getSuccess()) {
- erroredPos = tracked;
- break;
- }
- }
- }
- }
-
- if (erroredPos != null) {
- this.sfx(erroredPos, false);
- } else {
- this.setLastMishap(null);
- }
-
- this.setChanged();
- }
- }
-
- @Contract(pure = true)
- private static AABB getBounds(List poses) {
- int minX = Integer.MAX_VALUE;
- int minY = Integer.MAX_VALUE;
- int minZ = Integer.MAX_VALUE;
- int maxX = Integer.MIN_VALUE;
- int maxY = Integer.MIN_VALUE;
- int maxZ = Integer.MIN_VALUE;
-
- for (var pos : poses) {
- if (pos.getX() < minX) {
- minX = pos.getX();
- }
- if (pos.getY() < minY) {
- minY = pos.getY();
- }
- if (pos.getZ() < minZ) {
- minZ = pos.getZ();
- }
- if (pos.getX() > maxX) {
- maxX = pos.getX();
- }
- if (pos.getY() > maxY) {
- maxY = pos.getY();
- }
- if (pos.getZ() > maxZ) {
- maxZ = pos.getZ();
- }
- }
-
- return new AABB(minX, minY, minZ, maxX + 1, maxY + 1, maxZ + 1);
- }
-
- @Nullable
- private BlockPos checkEverythingOk() {
- // if they logged out or changed dimensions or something
- if (this.getPlayer() == null) {
- return this.getBlockPos();
- }
-
- for (var pos : this.trackedBlocks) {
- if (!(this.level.getBlockState(pos).getBlock() instanceof BlockCircleComponent)) {
- return pos;
- }
- }
-
- if (this.trackedBlocks.size() > HexConfig.server().maxSpellCircleLength()) {
- return this.trackedBlocks.get(this.trackedBlocks.size() - 1);
- }
-
- return null;
- }
-
- private void sfx(BlockPos pos, boolean success) {
- Vec3 vpos;
- Vec3 vecOutDir;
-
- var bs = this.level.getBlockState(pos);
- if (bs.getBlock() instanceof BlockCircleComponent bcc) {
- var outDir = bcc.normalDir(pos, bs, this.level);
- var height = bcc.particleHeight(pos, bs, this.level);
- vecOutDir = new Vec3(outDir.step());
- vpos = Vec3.atCenterOf(pos).add(vecOutDir.scale(height));
- } else {
- // we probably are doing this because it's an error and we removed a block
- vpos = Vec3.atCenterOf(pos);
- vecOutDir = new Vec3(0, 0, 0);
- }
-
- if (this.level instanceof ServerLevel serverLevel) {
- var spray = new ParticleSpray(vpos, vecOutDir.scale(success ? 1.0 : 1.5), success ? 0.1 : 0.5,
- Mth.PI / (success ? 4 : 2), success ? 30 : 100);
- spray.sprayParticles(serverLevel,
- success ? this.colorizer : new FrozenColorizer(new ItemStack(HexItems.DYE_COLORIZERS.get(DyeColor.RED)),
- this.activator));
- }
-
- var pitch = 1f;
- var sound = HexSounds.SPELL_CIRCLE_FAIL;
- if (success) {
- sound = HexSounds.SPELL_CIRCLE_FIND_BLOCK;
- // This is a good use of my time
- var note = this.trackedBlocks.size() - 1;
- var semitone = this.semitoneFromScale(note);
- pitch = (float) Math.pow(2.0, (semitone - 8) / 12d);
- }
- level.playSound(null, vpos.x, vpos.y, vpos.z, sound, SoundSource.BLOCKS, 1f, pitch);
- }
-
- protected void clearEnergized() {
- if (this.trackedBlocks != null) {
- for (var tracked : this.trackedBlocks) {
- var bs = this.level.getBlockState(tracked);
- if (bs.getBlock() instanceof BlockCircleComponent) {
- this.level.setBlockAndUpdate(tracked, bs.setValue(BlockCircleComponent.ENERGIZED, false));
- }
- }
- }
- }
-
- protected void stopCasting() {
- clearEnergized();
-
- this.activator = null;
- this.nextBlock = null;
- this.trackedBlocks = null;
- this.foundAll = false;
-
- // without this check, breaking the block will just immediately replace it with
- // the new unenergized state
- if (this.level.getBlockState(this.getBlockPos()).getBlock() instanceof BlockAbstractImpetus) {
- this.level.setBlockAndUpdate(this.getBlockPos(),
- this.getBlockState().setValue(BlockCircleComponent.ENERGIZED, false));
- }
- }
-
- @Nullable
- protected Player getPlayer() {
- return this.level.getPlayerByUUID(this.activator);
- }
-
- protected int getTickSpeed() {
- if (this.trackedBlocks == null) {
- return 10;
- } else {
- return Math.max(2, 10 - trackedBlocks.size() / 3);
- }
- }
-
- protected int semitoneFromScale(int note) {
- var blockBelow = this.level.getBlockState(this.getBlockPos().below());
- var scale = MAJOR_SCALE;
- if (blockBelow.is(Blocks.CRYING_OBSIDIAN)) {
- scale = MINOR_SCALE;
- } else if (blockBelow.is(BlockTags.DOORS) || blockBelow.is(BlockTags.TRAPDOORS)) {
- scale = DORIAN_SCALE;
- } else if (blockBelow.is(Blocks.PISTON) || blockBelow.is(Blocks.STICKY_PISTON)) {
- scale = MIXOLYDIAN_SCALE;
- } else if (blockBelow.is(Blocks.BLUE_WOOL)
- || blockBelow.is(Blocks.BLUE_CONCRETE) || blockBelow.is(Blocks.BLUE_CONCRETE_POWDER)
- || blockBelow.is(Blocks.BLUE_TERRACOTTA) || blockBelow.is(Blocks.BLUE_GLAZED_TERRACOTTA)
- || blockBelow.is(Blocks.BLUE_STAINED_GLASS) || blockBelow.is(Blocks.BLUE_STAINED_GLASS_PANE)) {
- scale = BLUES_SCALE;
- } else if (blockBelow.is(Blocks.BONE_BLOCK)) {
- scale = BAD_TIME;
- } else if (blockBelow.is(Blocks.COMPOSTER)) {
- scale = SUSSY_BAKA;
- }
-
- note = Mth.clamp(note, 0, scale.length - 1);
- return scale[note];
- }
-
- // this is a good use of my time
- private static final int[] MAJOR_SCALE = {0, 2, 4, 5, 7, 9, 11, 12};
- private static final int[] MINOR_SCALE = {0, 2, 3, 5, 7, 8, 11, 12};
- private static final int[] DORIAN_SCALE = {0, 2, 3, 5, 7, 9, 10, 12};
- private static final int[] MIXOLYDIAN_SCALE = {0, 2, 4, 5, 7, 9, 10, 12};
- private static final int[] BLUES_SCALE = {0, 3, 5, 6, 7, 10, 12};
- private static final int[] BAD_TIME = {0, 0, 12, 7, 6, 5, 3, 0, 3, 5};
- private static final int[] SUSSY_BAKA = {5, 8, 10, 11, 10, 8, 5, 3, 7, 5};
-
- private static final int[] SLOTS = {0};
-
- @Override
- public int[] getSlotsForFace(Direction var1) {
- return SLOTS;
- }
-
- @Override
- public boolean canPlaceItemThroughFace(int index, ItemStack stack, @Nullable Direction dir) {
- return this.canPlaceItem(index, stack);
- }
-
- @Override
- public boolean canTakeItemThroughFace(int var1, ItemStack var2, Direction var3) {
- return false;
- }
-
- @Override
- public int getContainerSize() {
- return 1;
- }
-
- @Override
- public boolean isEmpty() {
- return true;
- }
-
- @Override
- public ItemStack getItem(int index) {
- return ItemStack.EMPTY.copy();
- }
-
- @Override
- public ItemStack removeItem(int index, int count) {
- return ItemStack.EMPTY.copy();
- }
-
- @Override
- public ItemStack removeItemNoUpdate(int index) {
- return ItemStack.EMPTY.copy();
- }
-
- @Override
- public void setItem(int index, ItemStack stack) {
- insertMedia(stack);
- }
-
- @Override
- public boolean stillValid(Player player) {
- return false;
- }
-
- @Override
- public void clearContent() {
- // NO-OP
- }
-
- @Override
- public boolean canPlaceItem(int index, ItemStack stack) {
- if (remainingMediaCapacity() == 0) {
- return false;
- }
-
- if (stack.is(HexItems.CREATIVE_UNLOCKER)) {
- return true;
- }
-
- var mediamount = extractMediaFromItem(stack, true);
- return mediamount > 0;
- }
-
- public int extractMediaFromItem(ItemStack stack, boolean simulate) {
- if (this.media < 0) {
- return 0;
- }
- return MediaHelper.extractMedia(stack, remainingMediaCapacity(), true, simulate);
- }
-
- public void insertMedia(ItemStack stack) {
- if (getMedia() >= 0 && !stack.isEmpty() && stack.getItem() == HexItems.CREATIVE_UNLOCKER) {
- setInfiniteMedia();
- stack.shrink(1);
- } else {
- var mediamount = extractMediaFromItem(stack, false);
- if (mediamount > 0) {
- this.media = Math.min(mediamount + media, MAX_CAPACITY);
- this.sync();
- }
- }
- }
-
- public void setInfiniteMedia() {
- this.media = -1;
- this.sync();
- }
-
- public int remainingMediaCapacity() {
- if (this.media < 0) {
- return 0;
- }
- return Math.max(0, MAX_CAPACITY - this.media);
- }
-}
diff --git a/0.10.3/Common/src/main/java/at/petrak/hexcasting/api/client/ScryingLensOverlayRegistry.java b/0.10.3/Common/src/main/java/at/petrak/hexcasting/api/client/ScryingLensOverlayRegistry.java
deleted file mode 100644
index 88cc62df..00000000
--- a/0.10.3/Common/src/main/java/at/petrak/hexcasting/api/client/ScryingLensOverlayRegistry.java
+++ /dev/null
@@ -1,191 +0,0 @@
-package at.petrak.hexcasting.api.client;
-
-import at.petrak.hexcasting.xplat.IXplatAbstractions;
-import com.google.common.collect.Lists;
-import com.mojang.datafixers.util.Pair;
-import net.minecraft.client.Minecraft;
-import net.minecraft.world.level.Level;
-import net.minecraft.world.entity.player.Player;
-import net.minecraft.core.BlockPos;
-import net.minecraft.core.Direction;
-import net.minecraft.network.chat.Component;
-import net.minecraft.resources.ResourceLocation;
-import net.minecraft.world.item.ItemStack;
-import net.minecraft.world.level.block.BeehiveBlock;
-import net.minecraft.world.level.block.Block;
-import net.minecraft.world.level.block.Blocks;
-import net.minecraft.world.level.block.state.BlockState;
-import net.minecraft.world.phys.BlockHitResult;
-import net.minecraft.world.phys.HitResult;
-import org.jetbrains.annotations.NotNull;
-
-import java.util.List;
-import java.util.Map;
-import java.util.Vector;
-import java.util.WeakHashMap;
-import java.util.concurrent.ConcurrentHashMap;
-import java.util.concurrent.ConcurrentMap;
-
-/**
- * Use this to make things display when the player looks at things with a Scrying Lens.
- *
- * Client-side only.
- */
-public final class ScryingLensOverlayRegistry {
- private static final ConcurrentMap ID_LOOKUP = new ConcurrentHashMap<>();
- // vectors are thread-safe!
- private static final List> PREDICATE_LOOKUP = new Vector<>();
-
- // implemented as a map to allow for weak dereferencing
- private static final Map> comparatorData = new WeakHashMap<>();
- private static final Map> beeData = new WeakHashMap<>();
-
- public static void receiveComparatorAndBeeValue(BlockPos pos, int comparator, int bee) {
- Player player = Minecraft.getInstance().player;
- if (player != null) {
- if (pos == null || comparator == -1) {
- comparatorData.remove(player);
- } else {
- comparatorData.put(player, new Pair<>(pos, comparator));
- }
-
- if (pos == null || bee == -1) {
- beeData.remove(player);
- } else {
- beeData.put(player, new Pair<>(pos, bee));
- }
- }
- }
-
- public static int getComparatorValue(boolean onlyRealComparators) {
- var mc = Minecraft.getInstance();
- var player = mc.player;
- var level = mc.level;
- var result = mc.hitResult;
-
- if (player == null || level == null || result == null || result.getType() != HitResult.Type.BLOCK) {
- return -1;
- }
-
- var comparatorValue = comparatorData.get(player);
- if (comparatorValue == null) {
- return -1;
- }
-
- var pos = ((BlockHitResult) result).getBlockPos();
- if (!pos.equals(comparatorValue.getFirst())) {
- return -1;
- }
-
- var state = mc.level.getBlockState(pos);
- if ((onlyRealComparators && !state.is(
- Blocks.COMPARATOR)) || (!onlyRealComparators && !state.hasAnalogOutputSignal())) {
- return -1;
- }
-
- return comparatorValue.getSecond();
- }
-
- public static int getBeeValue() {
- var mc = Minecraft.getInstance();
- var player = mc.player;
- var level = mc.level;
- var result = mc.hitResult;
-
- if (player == null || level == null || result == null || result.getType() != HitResult.Type.BLOCK) {
- return -1;
- }
-
- var beeValue = beeData.get(player);
- if (beeValue == null) {
- return -1;
- }
-
- var pos = ((BlockHitResult) result).getBlockPos();
- if (!pos.equals(beeValue.getFirst())) {
- return -1;
- }
-
- var state = mc.level.getBlockState(pos);
- if (!(state.getBlock() instanceof BeehiveBlock)) {
- return -1;
- }
-
- return beeValue.getSecond();
- }
-
- /**
- * Add the block to display things when the player is holding a lens and looking at it.
- *
- * @throws IllegalArgumentException if the block is already registered.
- */
- public static void addDisplayer(Block block, OverlayBuilder displayer) {
- addDisplayer(IXplatAbstractions.INSTANCE.getID(block), displayer);
- }
-
- /**
- * Add the block to display things when the player is holding a lens and looking at it.
- *
- * @throws IllegalArgumentException if the block ID is already registered.
- */
- public static void addDisplayer(ResourceLocation blockID, OverlayBuilder displayer) {
- if (ID_LOOKUP.containsKey(blockID)) {
- throw new IllegalArgumentException("Already have a displayer for " + blockID);
- }
- ID_LOOKUP.put(blockID, displayer);
- }
-
- /**
- * Display things when the player is holding a lens and looking at some block via a predicate.
- *
- * These have a lower priority than the standard ID-based displays, so if an ID and predicate both match,
- * this won't be displayed.
- */
- public static void addPredicateDisplayer(OverlayPredicate predicate, OverlayBuilder displayer) {
- PREDICATE_LOOKUP.add(new Pair<>(predicate, displayer));
- }
-
- /**
- * Internal use only.
- */
- public static @NotNull List> getLines(BlockState state, BlockPos pos,
- Player observer, Level world,
- Direction hitFace) {
- List> lines = Lists.newArrayList();
- var idLookedup = ID_LOOKUP.get(IXplatAbstractions.INSTANCE.getID(state.getBlock()));
- if (idLookedup != null) {
- idLookedup.addLines(lines, state, pos, observer, world, hitFace);
- }
-
- for (var pair : PREDICATE_LOOKUP) {
- if (pair.getFirst().test(state, pos, observer, world, hitFace)) {
- pair.getSecond().addLines(lines, state, pos, observer, world, hitFace);
- }
- }
-
- return lines;
- }
-
- /**
- * Return the lines displayed by the cursor: an item and some text.
- *
- * The ItemStack can be empty; if it is, the text isn't shifted over for it.
- */
- @FunctionalInterface
- public interface OverlayBuilder {
- void addLines(List> lines,
- BlockState state, BlockPos pos, Player observer,
- Level world,
- Direction hitFace);
- }
-
- /**
- * Predicate for matching on a block state.
- */
- @FunctionalInterface
- public interface OverlayPredicate {
- boolean test(BlockState state, BlockPos pos, Player observer,
- Level world,
- Direction hitFace);
- }
-}
diff --git a/0.10.3/Common/src/main/java/at/petrak/hexcasting/api/item/ColorizerItem.java b/0.10.3/Common/src/main/java/at/petrak/hexcasting/api/item/ColorizerItem.java
deleted file mode 100644
index bcfd4dde..00000000
--- a/0.10.3/Common/src/main/java/at/petrak/hexcasting/api/item/ColorizerItem.java
+++ /dev/null
@@ -1,18 +0,0 @@
-package at.petrak.hexcasting.api.item;
-
-import net.minecraft.world.item.ItemStack;
-import net.minecraft.world.phys.Vec3;
-import org.jetbrains.annotations.ApiStatus;
-
-import java.util.UUID;
-
-/**
- * Items which can be used as a colorizer can implement this interface.
- *
- * On both the Forge and Fabric sides, the registry will be scanned for all items which implement this interface,
- * and the appropriate cap/CC will be attached.
- */
-@ApiStatus.OverrideOnly
-public interface ColorizerItem {
- int color(ItemStack stack, UUID owner, float time, Vec3 position);
-}
diff --git a/0.10.3/Common/src/main/java/at/petrak/hexcasting/api/item/HexHolderItem.java b/0.10.3/Common/src/main/java/at/petrak/hexcasting/api/item/HexHolderItem.java
deleted file mode 100644
index bf276235..00000000
--- a/0.10.3/Common/src/main/java/at/petrak/hexcasting/api/item/HexHolderItem.java
+++ /dev/null
@@ -1,30 +0,0 @@
-package at.petrak.hexcasting.api.item;
-
-import at.petrak.hexcasting.api.spell.iota.Iota;
-import net.minecraft.server.level.ServerLevel;
-import net.minecraft.world.item.ItemStack;
-import org.jetbrains.annotations.ApiStatus;
-import org.jetbrains.annotations.Nullable;
-
-import java.util.List;
-
-/**
- * Items which can cast a packaged Hex can implement this interface.
- *
- * On both the Forge and Fabric sides, the registry will be scanned for all items which implement this interface,
- * and the appropriate cap/CC will be attached.
- */
-@ApiStatus.OverrideOnly
-public interface HexHolderItem extends MediaHolderItem {
-
- boolean canDrawMediaFromInventory(ItemStack stack);
-
- boolean hasHex(ItemStack stack);
-
- @Nullable
- List getHex(ItemStack stack, ServerLevel level);
-
- void writeHex(ItemStack stack, List program, int media);
-
- void clearHex(ItemStack stack);
-}
diff --git a/0.10.3/Common/src/main/java/at/petrak/hexcasting/api/item/IotaHolderItem.java b/0.10.3/Common/src/main/java/at/petrak/hexcasting/api/item/IotaHolderItem.java
deleted file mode 100644
index 3aeef986..00000000
--- a/0.10.3/Common/src/main/java/at/petrak/hexcasting/api/item/IotaHolderItem.java
+++ /dev/null
@@ -1,114 +0,0 @@
-package at.petrak.hexcasting.api.item;
-
-import at.petrak.hexcasting.api.spell.iota.Iota;
-import at.petrak.hexcasting.api.utils.HexUtils;
-import at.petrak.hexcasting.api.utils.NBTHelper;
-import at.petrak.hexcasting.client.ClientTickCounter;
-import at.petrak.hexcasting.common.lib.hex.HexIotaTypes;
-import net.minecraft.ChatFormatting;
-import net.minecraft.nbt.CompoundTag;
-import net.minecraft.nbt.NbtUtils;
-import net.minecraft.network.chat.Component;
-import net.minecraft.resources.ResourceLocation;
-import net.minecraft.server.level.ServerLevel;
-import net.minecraft.util.Mth;
-import net.minecraft.world.item.ItemStack;
-import net.minecraft.world.item.TooltipFlag;
-import org.jetbrains.annotations.Nullable;
-
-import java.util.List;
-
-/**
- * Items that store an iota to their tag can implement this interface.
- *
- * On both the Forge and Fabric sides, the registry will be scanned for all items which implement this interface,
- * and the appropriate cap/CC will be attached.
- */
-public interface IotaHolderItem {
- /**
- * If this key is set on the item, we ignore the rest of the item and render this as if it were of the
- * {@link at.petrak.hexcasting.api.spell.iota.IotaType IotaType} given by the resource location.
- *
- * This is not useful to the player at all.
- */
- String TAG_OVERRIDE_VISUALLY = "VisualOverride";
-
- @Nullable
- CompoundTag readIotaTag(ItemStack stack);
-
- @Nullable
- default Iota readIota(ItemStack stack, ServerLevel world) {
- if (!(stack.getItem() instanceof IotaHolderItem dh)) {
- // this should be checked via mishap beforehand
- throw new IllegalArgumentException("stack's item must be an IotaHolderItem but was " + stack.getItem());
- }
-
- var tag = dh.readIotaTag(stack);
- if (tag != null) {
- return HexIotaTypes.deserialize(tag, world);
- } else {
- return null;
- }
- }
-
- /**
- * What is this considered to contain when nothing can be read?
- *
- * TODO i'm not sure what this exists for
- */
- @Nullable
- default Iota emptyIota(ItemStack stack) {
- return null;
- }
-
- default int getColor(ItemStack stack) {
- if (NBTHelper.hasString(stack, TAG_OVERRIDE_VISUALLY)) {
- var override = NBTHelper.getString(stack, TAG_OVERRIDE_VISUALLY);
-
- if (override != null && ResourceLocation.isValidResourceLocation(override)) {
- var key = new ResourceLocation(override);
- if (HexIotaTypes.REGISTRY.containsKey(key)) {
- var iotaType = HexIotaTypes.REGISTRY.get(key);
- if (iotaType != null) {
- return iotaType.color();
- }
- }
- }
-
- return 0xFF000000 | Mth.hsvToRgb(ClientTickCounter.getTotal() * 2 % 360 / 360F, 0.75F, 1F);
- }
-
- var tag = this.readIotaTag(stack);
- if (tag == null) {
- return HexUtils.ERROR_COLOR;
- }
-
- return HexIotaTypes.getColor(tag);
- }
-
- /**
- * Write {@code null} to indicate erasing
- */
- boolean canWrite(ItemStack stack, @Nullable Iota iota);
-
- /**
- * Write {@code null} to indicate erasing
- */
- void writeDatum(ItemStack stack, @Nullable Iota iota);
-
- static void appendHoverText(IotaHolderItem self, ItemStack stack, List components,
- TooltipFlag flag) {
- var datumTag = self.readIotaTag(stack);
- if (datumTag != null) {
- var cmp = HexIotaTypes.getDisplay(datumTag);
- components.add(Component.translatable("hexcasting.spelldata.onitem", cmp));
-
- if (flag.isAdvanced()) {
- components.add(Component.literal("").append(NbtUtils.toPrettyComponent(datumTag)));
- }
- } else if (NBTHelper.hasString(stack, IotaHolderItem.TAG_OVERRIDE_VISUALLY)) {
- components.add(Component.translatable("hexcasting.spelldata.onitem",
- Component.translatable("hexcasting.spelldata.anything").withStyle(ChatFormatting.LIGHT_PURPLE)));
- }
- }
-}
diff --git a/0.10.3/Common/src/main/java/at/petrak/hexcasting/api/item/MediaHolderItem.java b/0.10.3/Common/src/main/java/at/petrak/hexcasting/api/item/MediaHolderItem.java
deleted file mode 100644
index 43456722..00000000
--- a/0.10.3/Common/src/main/java/at/petrak/hexcasting/api/item/MediaHolderItem.java
+++ /dev/null
@@ -1,62 +0,0 @@
-package at.petrak.hexcasting.api.item;
-
-import net.minecraft.world.item.ItemStack;
-import org.jetbrains.annotations.ApiStatus;
-
-/**
- * Items which can store Media can implement this interface.
- *
- * On both the Forge and Fabric sides, the registry will be scanned for all items which implement this interface,
- * and the appropriate cap/CC will be attached.
- */
-@ApiStatus.OverrideOnly
-public interface MediaHolderItem {
- int getMedia(ItemStack stack);
-
- int getMaxMedia(ItemStack stack);
-
- void setMedia(ItemStack stack, int media);
-
- boolean canProvideMedia(ItemStack stack);
-
- boolean canRecharge(ItemStack stack);
-
- default float getMediaFullness(ItemStack stack) {
- int max = getMaxMedia(stack);
- if (max == 0) {
- return 0;
- }
- return (float) getMedia(stack) / (float) max;
- }
-
- default int withdrawMedia(ItemStack stack, int cost, boolean simulate) {
- var mediaHere = getMedia(stack);
- if (cost < 0) {
- cost = mediaHere;
- }
- if (!simulate) {
- var mediaLeft = mediaHere - cost;
- setMedia(stack, mediaLeft);
- }
- return Math.min(cost, mediaHere);
- }
-
- default int insertMedia(ItemStack stack, int amount, boolean simulate) {
- var mediaHere = getMedia(stack);
- int emptySpace = getMaxMedia(stack) - mediaHere;
- if (emptySpace <= 0) {
- return 0;
- }
- if (amount < 0) {
- amount = emptySpace;
- }
-
- int inserting = Math.min(amount, emptySpace);
-
- if (!simulate) {
- var newMedia = mediaHere + inserting;
- setMedia(stack, newMedia);
- }
- return inserting;
- }
-}
diff --git a/0.10.3/Common/src/main/java/at/petrak/hexcasting/api/misc/DamageSourceOvercast.java b/0.10.3/Common/src/main/java/at/petrak/hexcasting/api/misc/DamageSourceOvercast.java
deleted file mode 100644
index 9cd89eea..00000000
--- a/0.10.3/Common/src/main/java/at/petrak/hexcasting/api/misc/DamageSourceOvercast.java
+++ /dev/null
@@ -1,12 +0,0 @@
-package at.petrak.hexcasting.api.misc;
-
-import net.minecraft.world.damagesource.DamageSource;
-
-public class DamageSourceOvercast extends DamageSource {
- public DamageSourceOvercast() {
- super("hexcasting.overcast");
- this.bypassArmor();
- this.bypassMagic();
- this.setMagic();
- }
-}
diff --git a/0.10.3/Common/src/main/java/at/petrak/hexcasting/api/misc/DamageSourceShameOnYou.java b/0.10.3/Common/src/main/java/at/petrak/hexcasting/api/misc/DamageSourceShameOnYou.java
deleted file mode 100644
index 32595b85..00000000
--- a/0.10.3/Common/src/main/java/at/petrak/hexcasting/api/misc/DamageSourceShameOnYou.java
+++ /dev/null
@@ -1,12 +0,0 @@
-package at.petrak.hexcasting.api.misc;
-
-import net.minecraft.world.damagesource.DamageSource;
-
-public class DamageSourceShameOnYou extends DamageSource {
- public DamageSourceShameOnYou() {
- super("hexcasting.shame");
- this.bypassArmor();
- this.bypassMagic();
- this.setMagic();
- }
-}
diff --git a/0.10.3/Common/src/main/java/at/petrak/hexcasting/api/misc/DiscoveryHandlers.java b/0.10.3/Common/src/main/java/at/petrak/hexcasting/api/misc/DiscoveryHandlers.java
deleted file mode 100644
index f231fe6f..00000000
--- a/0.10.3/Common/src/main/java/at/petrak/hexcasting/api/misc/DiscoveryHandlers.java
+++ /dev/null
@@ -1,103 +0,0 @@
-package at.petrak.hexcasting.api.misc;
-
-import at.petrak.hexcasting.api.addldata.ADMediaHolder;
-import at.petrak.hexcasting.api.spell.casting.CastingContext;
-import at.petrak.hexcasting.api.spell.casting.CastingHarness;
-import com.google.common.collect.Lists;
-import net.minecraft.world.entity.player.Player;
-import net.minecraft.world.item.ItemStack;
-
-import java.util.ArrayList;
-import java.util.List;
-import java.util.function.BiFunction;
-import java.util.function.Function;
-import java.util.function.Predicate;
-
-public class DiscoveryHandlers {
- private static final List> HAS_LENS_PREDICATE = new ArrayList<>();
- private static final List>> MEDIA_HOLDER_DISCOVERY = new ArrayList<>();
- private static final List> GRID_SCALE_MODIFIERS = new ArrayList<>();
- private static final List>> ITEM_SLOT_DISCOVERER = new ArrayList<>();
- private static final List>> OPERATIVE_SLOT_DISCOVERER = new ArrayList<>();
- private static final List> DEBUG_DISCOVERER = new ArrayList<>();
-
- public static boolean hasLens(Player player) {
- for (var predicate : HAS_LENS_PREDICATE) {
- if (predicate.test(player)) {
- return true;
- }
- }
- return false;
- }
-
- public static List collectMediaHolders(CastingHarness harness) {
- List holders = Lists.newArrayList();
- for (var discoverer : MEDIA_HOLDER_DISCOVERY) {
- holders.addAll(discoverer.apply(harness));
- }
- return holders;
- }
-
- public static float gridScaleModifier(Player player) {
- float mod = 1;
- for (var modifier : GRID_SCALE_MODIFIERS) {
- mod *= modifier.apply(player);
- }
- return mod;
- }
-
- public static List collectItemSlots(CastingContext ctx) {
- List stacks = Lists.newArrayList();
- for (var discoverer : ITEM_SLOT_DISCOVERER) {
- stacks.addAll(discoverer.apply(ctx));
- }
- return stacks;
- }
-
- public static List collectOperableSlots(CastingContext ctx) {
- List stacks = Lists.newArrayList();
- for (var discoverer : OPERATIVE_SLOT_DISCOVERER) {
- stacks.addAll(discoverer.apply(ctx));
- }
- return stacks;
- }
-
- public static ItemStack findDebugItem(Player player, String type) {
- for (var discoverer : DEBUG_DISCOVERER) {
- var stack = discoverer.apply(player, type);
- if (!stack.isEmpty()) {
- return stack;
- }
- }
- return ItemStack.EMPTY;
- }
-
- public static void addLensPredicate(Predicate predicate) {
- HAS_LENS_PREDICATE.add(predicate);
- }
-
- public static void addMediaHolderDiscoverer(Function> discoverer) {
- MEDIA_HOLDER_DISCOVERY.add(discoverer);
- }
-
- public static void addGridScaleModifier(FunctionToFloat modifier) {
- GRID_SCALE_MODIFIERS.add(modifier);
- }
-
- public static void addItemSlotDiscoverer(Function> discoverer) {
- ITEM_SLOT_DISCOVERER.add(discoverer);
- }
-
- public static void addOperativeSlotDiscoverer(Function> discoverer) {
- OPERATIVE_SLOT_DISCOVERER.add(discoverer);
- }
-
- public static void addDebugItemDiscoverer(BiFunction discoverer) {
- DEBUG_DISCOVERER.add(discoverer);
- }
-
- @FunctionalInterface
- public interface FunctionToFloat {
- float apply(T t);
- }
-}
diff --git a/0.10.3/Common/src/main/java/at/petrak/hexcasting/api/misc/EntityDamageSourceOvercast.java b/0.10.3/Common/src/main/java/at/petrak/hexcasting/api/misc/EntityDamageSourceOvercast.java
deleted file mode 100644
index 659ccbff..00000000
--- a/0.10.3/Common/src/main/java/at/petrak/hexcasting/api/misc/EntityDamageSourceOvercast.java
+++ /dev/null
@@ -1,13 +0,0 @@
-package at.petrak.hexcasting.api.misc;
-
-import net.minecraft.world.damagesource.EntityDamageSource;
-import net.minecraft.world.entity.Entity;
-
-public class EntityDamageSourceOvercast extends EntityDamageSource {
- public EntityDamageSourceOvercast(Entity entity) {
- super("hexcasting.overcast", entity);
- this.bypassArmor();
- this.bypassMagic();
- this.setMagic();
- }
-}
diff --git a/0.10.3/Common/src/main/java/at/petrak/hexcasting/api/misc/FrozenColorizer.java b/0.10.3/Common/src/main/java/at/petrak/hexcasting/api/misc/FrozenColorizer.java
deleted file mode 100644
index ce2603f9..00000000
--- a/0.10.3/Common/src/main/java/at/petrak/hexcasting/api/misc/FrozenColorizer.java
+++ /dev/null
@@ -1,78 +0,0 @@
-package at.petrak.hexcasting.api.misc;
-
-import at.petrak.hexcasting.api.addldata.ADColorizer;
-import at.petrak.hexcasting.common.lib.HexItems;
-import at.petrak.hexcasting.xplat.IXplatAbstractions;
-import net.minecraft.Util;
-import net.minecraft.nbt.CompoundTag;
-import net.minecraft.util.FastColor;
-import net.minecraft.world.item.DyeColor;
-import net.minecraft.world.item.ItemStack;
-import net.minecraft.world.phys.Vec3;
-
-import java.util.UUID;
-import java.util.function.Supplier;
-
-/**
- * A colorizer item and the player who owned it at the time of making the color.
- */
-public record FrozenColorizer(ItemStack item, UUID owner) {
-
- private static final int[] MINIMUM_LUMINANCE_COLOR_WHEEL = {
- 0xFF200000, 0xFF202000, 0xFF002000, 0xFF002020, 0xFF000020, 0xFF200020
- };
-
- public static final String TAG_STACK = "stack";
- public static final String TAG_OWNER = "owner";
-
- public static final Supplier DEFAULT =
- () -> new FrozenColorizer(new ItemStack(HexItems.DYE_COLORIZERS.get(DyeColor.WHITE)), Util.NIL_UUID);
-
- public CompoundTag serializeToNBT() {
- var out = new CompoundTag();
- out.put(TAG_STACK, this.item.save(new CompoundTag()));
- out.putUUID(TAG_OWNER, this.owner);
- return out;
- }
-
- public static FrozenColorizer fromNBT(CompoundTag tag) {
- if (tag.isEmpty()) {
- return FrozenColorizer.DEFAULT.get();
- }
- try {
- CompoundTag stackTag = tag.getCompound(TAG_STACK);
- var stack = ItemStack.of(stackTag);
- var uuid = tag.getUUID(TAG_OWNER);
- return new FrozenColorizer(stack, uuid);
- } catch (NullPointerException exn) {
- return FrozenColorizer.DEFAULT.get();
- }
- }
-
- /**
- * Gets a color with a minimum luminance applied.
- *
- * @param time absolute world time in ticks
- * @param position a position for the icosahedron, a randomish number for particles.
- * @return an AARRGGBB color.
- */
- public int getColor(float time, Vec3 position) {
- int raw = IXplatAbstractions.INSTANCE.getRawColor(this, time, position);
-
- var r = FastColor.ARGB32.red(raw);
- var g = FastColor.ARGB32.green(raw);
- var b = FastColor.ARGB32.blue(raw);
- double luminance = (0.2126 * r + 0.7152 * g + 0.0722 * b) / 0xFF; // Standard relative luminance calculation
-
- if (luminance < 0.05) {
- int rawMod = ADColorizer.morphBetweenColors(MINIMUM_LUMINANCE_COLOR_WHEEL, new Vec3(0.1, 0.1, 0.1),
- time / 20 / 20, position);
-
- r += FastColor.ARGB32.red(rawMod);
- g += FastColor.ARGB32.green(rawMod);
- b += FastColor.ARGB32.blue(rawMod);
- }
-
- return 0xff_000000 | (r << 16) | (g << 8) | b;
- }
-}
diff --git a/0.10.3/Common/src/main/java/at/petrak/hexcasting/api/misc/HexDamageSources.java b/0.10.3/Common/src/main/java/at/petrak/hexcasting/api/misc/HexDamageSources.java
deleted file mode 100644
index 8dd06719..00000000
--- a/0.10.3/Common/src/main/java/at/petrak/hexcasting/api/misc/HexDamageSources.java
+++ /dev/null
@@ -1,13 +0,0 @@
-package at.petrak.hexcasting.api.misc;
-
-import net.minecraft.world.damagesource.DamageSource;
-import net.minecraft.world.entity.Entity;
-
-public final class HexDamageSources {
- public static final DamageSourceOvercast OVERCAST = new DamageSourceOvercast();
- public static final DamageSourceShameOnYou SHAME = new DamageSourceShameOnYou();
-
- public static DamageSource overcastDamageFrom(Entity cause) {
- return new EntityDamageSourceOvercast(cause);
- }
-}
diff --git a/0.10.3/Common/src/main/java/at/petrak/hexcasting/api/misc/MediaConstants.java b/0.10.3/Common/src/main/java/at/petrak/hexcasting/api/misc/MediaConstants.java
deleted file mode 100644
index 322a9c82..00000000
--- a/0.10.3/Common/src/main/java/at/petrak/hexcasting/api/misc/MediaConstants.java
+++ /dev/null
@@ -1,7 +0,0 @@
-package at.petrak.hexcasting.api.misc;
-
-public final class MediaConstants {
- public static final int DUST_UNIT = 10000;
- public static final int SHARD_UNIT = 5 * DUST_UNIT;
- public static final int CRYSTAL_UNIT = 10 * DUST_UNIT;
-}
diff --git a/0.10.3/Common/src/main/java/at/petrak/hexcasting/api/misc/ScrollQuantity.java b/0.10.3/Common/src/main/java/at/petrak/hexcasting/api/misc/ScrollQuantity.java
deleted file mode 100644
index bc262ea3..00000000
--- a/0.10.3/Common/src/main/java/at/petrak/hexcasting/api/misc/ScrollQuantity.java
+++ /dev/null
@@ -1,24 +0,0 @@
-package at.petrak.hexcasting.api.misc;
-
-import net.minecraft.resources.ResourceLocation;
-import org.jetbrains.annotations.Nullable;
-
-import static at.petrak.hexcasting.api.HexAPI.modLoc;
-
-public enum ScrollQuantity {
- NONE(null),
- FEW(modLoc("inject/scroll_loot_few")),
- SOME(modLoc("inject/scroll_loot_some")),
- MANY(modLoc("inject/scroll_loot_many"));
-
- private final ResourceLocation pool;
-
- ScrollQuantity(ResourceLocation pool) {
- this.pool = pool;
- }
-
- @Nullable
- public ResourceLocation getPool() {
- return pool;
- }
-}
diff --git a/0.10.3/Common/src/main/java/at/petrak/hexcasting/api/misc/TriPredicate.java b/0.10.3/Common/src/main/java/at/petrak/hexcasting/api/misc/TriPredicate.java
deleted file mode 100644
index 04f70220..00000000
--- a/0.10.3/Common/src/main/java/at/petrak/hexcasting/api/misc/TriPredicate.java
+++ /dev/null
@@ -1,9 +0,0 @@
-package at.petrak.hexcasting.api.misc;
-
-/**
- * Society if java actually had first-class function support
- */
-@FunctionalInterface
-public interface TriPredicate {
- boolean test(A a, B b, C c);
-}
diff --git a/0.10.3/Common/src/main/java/at/petrak/hexcasting/api/mod/HexApiMessages.java b/0.10.3/Common/src/main/java/at/petrak/hexcasting/api/mod/HexApiMessages.java
deleted file mode 100644
index 44c04c79..00000000
--- a/0.10.3/Common/src/main/java/at/petrak/hexcasting/api/mod/HexApiMessages.java
+++ /dev/null
@@ -1,51 +0,0 @@
-package at.petrak.hexcasting.api.mod;
-
-// Don't understand what this does so i commented it all out :gigachad:
-/*
-
-import at.petrak.hexcasting.api.misc.FrozenColorizer;
-import at.petrak.hexcasting.api.player.Sentinel;
-import at.petrak.hexcasting.api.spell.ParticleSpray;
-import net.minecraftforge.network.simple.SimpleChannel;
-import org.jetbrains.annotations.ApiStatus;
-
-import java.util.function.BiFunction;
-import java.util.function.Function;
-
-@ApiStatus.Internal
-public final class HexApiMessages {
- private static SimpleChannel channel;
- private static Function sentinelMessage;
- private static Function colorizerMessage;
- private static BiFunction particleSprayMessage;
-
- public static void setSyncChannel(SimpleChannel channel,
- Function sentinelMessage,
- Function colorizerMessage,
- BiFunction particleSprayMessage) {
- if (HexApiMessages.channel != null)
- throw new IllegalStateException("Already set sync channel! If you're not Hex, you shouldn't be calling this.");
- HexApiMessages.channel = channel;
- HexApiMessages.sentinelMessage = sentinelMessage;
- HexApiMessages.colorizerMessage = colorizerMessage;
- HexApiMessages.particleSprayMessage = particleSprayMessage;
- }
-
- public static SimpleChannel getChannel() {
- return channel;
- }
-
- public static Object getColorizerMessage(FrozenColorizer colorizer) {
- return colorizerMessage.apply(colorizer);
- }
-
- public static Object getSentinelMessage(Sentinel colorizer) {
- return sentinelMessage.apply(colorizer);
- }
-
- public static Object getParticleSprayMessage(ParticleSpray spray, FrozenColorizer colorizer) {
- return particleSprayMessage.apply(spray, colorizer);
- }
-}
-
- */
diff --git a/0.10.3/Common/src/main/java/at/petrak/hexcasting/api/mod/HexConfig.java b/0.10.3/Common/src/main/java/at/petrak/hexcasting/api/mod/HexConfig.java
deleted file mode 100644
index aec2c2ca..00000000
--- a/0.10.3/Common/src/main/java/at/petrak/hexcasting/api/mod/HexConfig.java
+++ /dev/null
@@ -1,139 +0,0 @@
-package at.petrak.hexcasting.api.mod;
-
-import at.petrak.hexcasting.api.HexAPI;
-import at.petrak.hexcasting.api.misc.MediaConstants;
-import at.petrak.hexcasting.api.misc.ScrollQuantity;
-import net.minecraft.resources.ResourceKey;
-import net.minecraft.resources.ResourceLocation;
-import net.minecraft.world.item.Tier;
-import net.minecraft.world.item.Tiers;
-import net.minecraft.world.level.Level;
-
-import java.util.List;
-
-public class HexConfig {
- public interface CommonConfigAccess {
-
- int dustMediaAmount();
-
- int shardMediaAmount();
-
- int chargedCrystalMediaAmount();
-
- double mediaToHealthRate();
-
- int DEFAULT_DUST_MEDIA_AMOUNT = MediaConstants.DUST_UNIT;
- int DEFAULT_SHARD_MEDIA_AMOUNT = MediaConstants.SHARD_UNIT;
- int DEFAULT_CHARGED_MEDIA_AMOUNT = MediaConstants.CRYSTAL_UNIT;
- double DEFAULT_MEDIA_TO_HEALTH_RATE = 2 * MediaConstants.CRYSTAL_UNIT / 20.0;
-
- }
-
- public interface ClientConfigAccess {
- boolean ctrlTogglesOffStrokeOrder();
-
- boolean invertSpellbookScrollDirection();
-
- boolean invertAbacusScrollDirection();
-
- double gridSnapThreshold();
-
- boolean DEFAULT_CTRL_TOGGLES_OFF_STROKE_ORDER = false;
- boolean DEFAULT_INVERT_SPELLBOOK_SCROLL = false;
- boolean DEFAULT_INVERT_ABACUS_SCROLL = false;
- double DEFAULT_GRID_SNAP_THRESHOLD = 0.5;
- }
-
- public interface ServerConfigAccess {
- int opBreakHarvestLevelBecauseForgeThoughtItWasAGoodIdeaToImplementHarvestTiersUsingAnHonestToGodTopoSort();
-
- int maxRecurseDepth();
-
- int maxSpellCircleLength();
-
- boolean isActionAllowed(ResourceLocation actionID);
-
- boolean isActionAllowedInCircles(ResourceLocation actionID);
-
- boolean doVillagersTakeOffenseAtMindMurder();
-
- // fun fact, although dimension keys are a RegistryHolder, they aren't a registry, so i can't do tags
- boolean canTeleportInThisDimension(ResourceKey dimension);
-
- ScrollQuantity scrollsForLootTable(ResourceLocation lootTable);
-
- int DEFAULT_MAX_RECURSE_DEPTH = 512;
- int DEFAULT_MAX_SPELL_CIRCLE_LENGTH = 1024;
- int DEFAULT_OP_BREAK_HARVEST_LEVEL = 3;
-
- boolean DEFAULT_VILLAGERS_DISLIKE_MIND_MURDER = true;
- List DEFAULT_FEW_SCROLL_TABLES = List.of("minecraft:chests/jungle_temple",
- "minecraft:chests/simple_dungeon", "minecraft:chests/village/village_cartographer");
- List DEFAULT_SOME_SCROLL_TABLES = List.of("minecraft:chests/bastion_treasure",
- "minecraft:chests/shipwreck_map");
- List DEFAULT_MANY_SCROLL_TABLES = List.of("minecraft:chests/stronghold_library");
-
- List DEFAULT_DIM_TP_DENYLIST = List.of("twilightforest:twilight_forest");
-
- default Tier opBreakHarvestLevel() {
- return switch (this.opBreakHarvestLevelBecauseForgeThoughtItWasAGoodIdeaToImplementHarvestTiersUsingAnHonestToGodTopoSort()) {
- case 0 -> Tiers.WOOD;
- case 1 -> Tiers.STONE;
- case 2 -> Tiers.IRON;
- case 3 -> Tiers.DIAMOND;
- case 4 -> Tiers.NETHERITE;
- default -> throw new RuntimeException("please only return a value in 0<=x<=4");
- };
- }
- }
-
- // Simple extensions for resource location configs
- public static boolean anyMatch(List extends String> keys, ResourceLocation key) {
- return keys.stream().map(ResourceLocation::new).anyMatch(key::equals);
- }
-
- public static boolean noneMatch(List extends String> keys, ResourceLocation key) {
- return keys.stream().map(ResourceLocation::new).noneMatch(key::equals);
- }
-
- // oh man this is aesthetically pleasing
- private static CommonConfigAccess common = null;
- private static ClientConfigAccess client = null;
- private static ServerConfigAccess server = null;
-
- public static CommonConfigAccess common() {
- return common;
- }
-
- public static ClientConfigAccess client() {
- return client;
- }
-
- public static ServerConfigAccess server() {
- return server;
- }
-
- public static void setCommon(CommonConfigAccess access) {
- if (common != null) {
- HexAPI.LOGGER.warn("CommonConfigAccess was replaced! Old {} New {}",
- common.getClass().getName(), access.getClass().getName());
- }
- common = access;
- }
-
- public static void setClient(ClientConfigAccess access) {
- if (client != null) {
- HexAPI.LOGGER.warn("ClientConfigAccess was replaced! Old {} New {}",
- client.getClass().getName(), access.getClass().getName());
- }
- client = access;
- }
-
- public static void setServer(ServerConfigAccess access) {
- if (server != null) {
- HexAPI.LOGGER.warn("ServerConfigAccess was replaced! Old {} New {}",
- server.getClass().getName(), access.getClass().getName());
- }
- server = access;
- }
-}
diff --git a/0.10.3/Common/src/main/java/at/petrak/hexcasting/api/mod/HexStatistics.java b/0.10.3/Common/src/main/java/at/petrak/hexcasting/api/mod/HexStatistics.java
deleted file mode 100644
index 5262980d..00000000
--- a/0.10.3/Common/src/main/java/at/petrak/hexcasting/api/mod/HexStatistics.java
+++ /dev/null
@@ -1,29 +0,0 @@
-package at.petrak.hexcasting.api.mod;
-
-import at.petrak.hexcasting.api.misc.MediaConstants;
-import net.minecraft.core.Registry;
-import net.minecraft.resources.ResourceLocation;
-import net.minecraft.stats.StatFormatter;
-import net.minecraft.stats.Stats;
-
-import static at.petrak.hexcasting.api.HexAPI.modLoc;
-
-public class HexStatistics {
- public static final ResourceLocation MEDIA_USED = makeCustomStat("media_used",
- mediamount -> StatFormatter.DEFAULT.format(mediamount / MediaConstants.DUST_UNIT));
- public static final ResourceLocation MEDIA_OVERCAST = makeCustomStat("media_overcast",
- mediamount -> StatFormatter.DEFAULT.format(mediamount / MediaConstants.DUST_UNIT));
- public static final ResourceLocation PATTERNS_DRAWN = makeCustomStat("patterns_drawn", StatFormatter.DEFAULT);
- public static final ResourceLocation SPELLS_CAST = makeCustomStat("spells_cast", StatFormatter.DEFAULT);
-
- public static void register() {
- // wake up java
- }
-
- private static ResourceLocation makeCustomStat(String key, StatFormatter formatter) {
- ResourceLocation resourcelocation = modLoc(key);
- Registry.register(Registry.CUSTOM_STAT, key, resourcelocation);
- Stats.CUSTOM.get(resourcelocation, formatter);
- return resourcelocation;
- }
-}
diff --git a/0.10.3/Common/src/main/java/at/petrak/hexcasting/api/mod/HexTags.java b/0.10.3/Common/src/main/java/at/petrak/hexcasting/api/mod/HexTags.java
deleted file mode 100644
index 41df2c90..00000000
--- a/0.10.3/Common/src/main/java/at/petrak/hexcasting/api/mod/HexTags.java
+++ /dev/null
@@ -1,46 +0,0 @@
-package at.petrak.hexcasting.api.mod;
-
-import net.minecraft.core.Registry;
-import net.minecraft.resources.ResourceLocation;
-import net.minecraft.tags.TagKey;
-import net.minecraft.world.entity.EntityType;
-import net.minecraft.world.item.Item;
-import net.minecraft.world.level.block.Block;
-
-import static at.petrak.hexcasting.api.HexAPI.modLoc;
-
-public class HexTags {
- public static final class Items {
- public static final TagKey- EDIFIED_LOGS = create("edified_logs");
- public static final TagKey
- EDIFIED_PLANKS = create("edified_planks");
- public static final TagKey
- STAVES = create("staves");
- public static final TagKey
- PHIAL_BASE = create("phial_base");
- public static final TagKey
- GRANTS_ROOT_ADVANCEMENT = create("grants_root_advancement");
-
- public static TagKey
- create(String name) {
- return create(modLoc(name));
- }
-
- public static TagKey
- create(ResourceLocation id) {
- return TagKey.create(Registry.ITEM_REGISTRY, id);
- }
- }
-
- public static final class Blocks {
- public static final TagKey EDIFIED_LOGS = create("edified_logs");
- public static final TagKey EDIFIED_PLANKS = create("edified_planks");
-
- public static TagKey create(String name) {
- return TagKey.create(Registry.BLOCK_REGISTRY, modLoc(name));
- }
- }
-
- public static final class Entities {
- public static final TagKey> STICKY_TELEPORTERS = create("sticky_teleporters");
- public static final TagKey> CANNOT_TELEPORT = create("cannot_teleport");
-
- public static TagKey> create(String name) {
- return TagKey.create(Registry.ENTITY_TYPE_REGISTRY, modLoc(name));
- }
- }
-}
diff --git a/0.10.3/Common/src/main/java/at/petrak/hexcasting/api/player/FlightAbility.java b/0.10.3/Common/src/main/java/at/petrak/hexcasting/api/player/FlightAbility.java
deleted file mode 100644
index 55828a7e..00000000
--- a/0.10.3/Common/src/main/java/at/petrak/hexcasting/api/player/FlightAbility.java
+++ /dev/null
@@ -1,11 +0,0 @@
-package at.petrak.hexcasting.api.player;
-
-import net.minecraft.resources.ResourceKey;
-import net.minecraft.world.level.Level;
-import net.minecraft.world.phys.Vec3;
-
-public record FlightAbility(boolean allowed, int timeLeft, ResourceKey dimension, Vec3 origin, double radius) {
- public static FlightAbility deny() {
- return new FlightAbility(false, 0, Level.OVERWORLD, Vec3.ZERO, 0);
- }
-}
diff --git a/0.10.3/Common/src/main/java/at/petrak/hexcasting/api/player/Sentinel.java b/0.10.3/Common/src/main/java/at/petrak/hexcasting/api/player/Sentinel.java
deleted file mode 100644
index f7cb6274..00000000
--- a/0.10.3/Common/src/main/java/at/petrak/hexcasting/api/player/Sentinel.java
+++ /dev/null
@@ -1,14 +0,0 @@
-package at.petrak.hexcasting.api.player;
-
-import net.minecraft.resources.ResourceKey;
-import net.minecraft.world.level.Level;
-import net.minecraft.world.phys.Vec3;
-
-public record Sentinel(boolean hasSentinel, boolean extendsRange, Vec3 position,
- ResourceKey dimension) {
- public static Sentinel none() {
- return new Sentinel(false, false, Vec3.ZERO, Level.OVERWORLD);
- }
-
-
-}
diff --git a/0.10.3/Common/src/main/java/at/petrak/hexcasting/api/spell/Action.kt b/0.10.3/Common/src/main/java/at/petrak/hexcasting/api/spell/Action.kt
deleted file mode 100644
index 8f1095be..00000000
--- a/0.10.3/Common/src/main/java/at/petrak/hexcasting/api/spell/Action.kt
+++ /dev/null
@@ -1,93 +0,0 @@
-package at.petrak.hexcasting.api.spell
-
-import at.petrak.hexcasting.api.PatternRegistry
-import at.petrak.hexcasting.api.spell.casting.CastingContext
-import at.petrak.hexcasting.api.spell.casting.eval.SpellContinuation
-import at.petrak.hexcasting.api.spell.iota.Iota
-import at.petrak.hexcasting.api.utils.asTranslatedComponent
-import at.petrak.hexcasting.api.utils.lightPurple
-import net.minecraft.network.chat.Component
-import net.minecraft.resources.ResourceLocation
-import net.minecraft.world.phys.Vec3
-import java.text.DecimalFormat
-
-/**
- * Manipulates the stack in some way, usually by popping some number of values off the stack
- * and pushing one new value.
- * For a more "traditional" pop arguments, push return experience, see [ConstMediaAction].
- *
- * Implementors MUST NOT mutate the context.
- */
-interface Action {
- /**
- * Operate on the stack. Return the new stack and any side effects of the cast.
- *
- * Although this is passed a [MutableList], this is only for the convenience of implementors.
- * It is a clone of the stack and modifying it does nothing. You must return the new stack
- * with the [OperationResult].
- *
- * A particle effect at the cast site and various messages and advancements are done automagically.
- */
- fun operate(
- continuation: SpellContinuation,
- stack: MutableList,
- ravenmind: Iota?,
- ctx: CastingContext
- ): OperationResult
-
- /**
- * Do you need to be enlightened to use this operator? (i.e. is this operator a Great Pattern)
- */
- val isGreat: Boolean get() = false
-
- /**
- * Should this Great Pattern process and have side effects, even if its user isn't enlightened?
- *
- * The pattern itself may modify its effects based on whether the user is enlightened or not, regardless of what this value is.
- */
- val alwaysProcessGreatSpell: Boolean get() = this is SpellAction
-
- /**
- * Can this Great Pattern give you Blind Diversion?
- */
- val causesBlindDiversion: Boolean get() = this is SpellAction
-
- /**
- * The component for displaying this pattern's name. Override for dynamic patterns.
- */
- val displayName: Component get() = "hexcasting.spell.${PatternRegistry.lookupPattern(this)}".asTranslatedComponent.lightPurple
-
- companion object {
- // I see why vzakii did this: you can't raycast out to infinity!
- const val MAX_DISTANCE: Double = 32.0
- const val MAX_DISTANCE_FROM_SENTINEL: Double = 16.0
-
- @JvmStatic
- fun raycastEnd(origin: Vec3, look: Vec3): Vec3 =
- origin.add(look.normalize().scale(MAX_DISTANCE))
-
- @JvmStatic
- fun makeConstantOp(x: Iota): Action = object : ConstMediaAction {
- override val argc: Int
- get() = 0
-
- override fun execute(args: List, ctx: CastingContext): List =
- listOf(x)
- }
-
- private val DOUBLE_FORMATTER = DecimalFormat("####.####")
-
- @JvmStatic
- fun makeConstantOp(x: Double, key: ResourceLocation): Action = object : ConstMediaAction {
- override val argc: Int
- get() = 0
-
- override fun execute(args: List, ctx: CastingContext): List =
- x.asActionResult
-
- override val displayName: Component
- get() = "hexcasting.spell.$key".asTranslatedComponent(DOUBLE_FORMATTER.format(x)).lightPurple
- }
- }
-}
-
diff --git a/0.10.3/Common/src/main/java/at/petrak/hexcasting/api/spell/ConstMediaAction.kt b/0.10.3/Common/src/main/java/at/petrak/hexcasting/api/spell/ConstMediaAction.kt
deleted file mode 100644
index 1f721bc1..00000000
--- a/0.10.3/Common/src/main/java/at/petrak/hexcasting/api/spell/ConstMediaAction.kt
+++ /dev/null
@@ -1,36 +0,0 @@
-package at.petrak.hexcasting.api.spell
-
-import at.petrak.hexcasting.api.spell.casting.CastingContext
-import at.petrak.hexcasting.api.spell.casting.eval.SpellContinuation
-import at.petrak.hexcasting.api.spell.casting.sideeffects.OperatorSideEffect
-import at.petrak.hexcasting.api.spell.iota.Iota
-import at.petrak.hexcasting.api.spell.mishaps.MishapNotEnoughArgs
-
-/**
- * A SimpleOperator that always costs the same amount of media.
- */
-interface ConstMediaAction : Action {
- val argc: Int
- val mediaCost: Int
- get() = 0
-
- fun execute(args: List, ctx: CastingContext): List
-
- override fun operate(
- continuation: SpellContinuation,
- stack: MutableList,
- ravenmind: Iota?,
- ctx: CastingContext
- ): OperationResult {
- if (this.argc > stack.size)
- throw MishapNotEnoughArgs(this.argc, stack.size)
- val args = stack.takeLast(this.argc)
- repeat(this.argc) { stack.removeLast() }
- val newData = this.execute(args, ctx)
- stack.addAll(newData)
-
- val sideEffects = mutableListOf(OperatorSideEffect.ConsumeMedia(this.mediaCost))
-
- return OperationResult(continuation, stack, ravenmind, sideEffects)
- }
-}
diff --git a/0.10.3/Common/src/main/java/at/petrak/hexcasting/api/spell/OperationResult.kt b/0.10.3/Common/src/main/java/at/petrak/hexcasting/api/spell/OperationResult.kt
deleted file mode 100644
index 364a4fa3..00000000
--- a/0.10.3/Common/src/main/java/at/petrak/hexcasting/api/spell/OperationResult.kt
+++ /dev/null
@@ -1,15 +0,0 @@
-package at.petrak.hexcasting.api.spell
-
-import at.petrak.hexcasting.api.spell.casting.eval.SpellContinuation
-import at.petrak.hexcasting.api.spell.casting.sideeffects.OperatorSideEffect
-import at.petrak.hexcasting.api.spell.iota.Iota
-
-/**
- * What happens when an operator is through?
- */
-data class OperationResult(
- val newContinuation: SpellContinuation,
- val newStack: List,
- val newRavenmind: Iota?,
- val sideEffects: List
-)
diff --git a/0.10.3/Common/src/main/java/at/petrak/hexcasting/api/spell/OperatorUtils.kt b/0.10.3/Common/src/main/java/at/petrak/hexcasting/api/spell/OperatorUtils.kt
deleted file mode 100644
index 6389208f..00000000
--- a/0.10.3/Common/src/main/java/at/petrak/hexcasting/api/spell/OperatorUtils.kt
+++ /dev/null
@@ -1,312 +0,0 @@
-@file:JvmName("OperatorUtils")
-
-package at.petrak.hexcasting.api.spell
-
-import at.petrak.hexcasting.api.spell.iota.*
-import at.petrak.hexcasting.api.spell.math.HexPattern
-import at.petrak.hexcasting.api.spell.mishaps.MishapInvalidIota
-import at.petrak.hexcasting.api.spell.mishaps.MishapNotEnoughArgs
-import at.petrak.hexcasting.api.utils.asTranslatedComponent
-import com.mojang.datafixers.util.Either
-import com.mojang.math.Vector3f
-import net.minecraft.core.BlockPos
-import net.minecraft.server.level.ServerPlayer
-import net.minecraft.world.entity.Entity
-import net.minecraft.world.entity.LivingEntity
-import net.minecraft.world.entity.decoration.ArmorStand
-import net.minecraft.world.entity.item.ItemEntity
-import net.minecraft.world.entity.npc.Villager
-import net.minecraft.world.phys.Vec3
-import java.util.function.DoubleUnaryOperator
-import kotlin.math.abs
-import kotlin.math.roundToInt
-import kotlin.math.roundToLong
-
-fun List.getDouble(idx: Int, argc: Int = 0): Double {
- val x = this.getOrElse(idx) { throw MishapNotEnoughArgs(idx + 1, this.size) }
- if (x is DoubleIota) {
- return x.double
- } else {
- // TODO: I'm not sure this calculation is correct
- throw MishapInvalidIota.ofType(x, if (argc == 0) idx else argc - (idx + 1), "double")
- }
-}
-
-fun List.getEntity(idx: Int, argc: Int = 0): Entity {
- val x = this.getOrElse(idx) { throw MishapNotEnoughArgs(idx + 1, this.size) }
- if (x is EntityIota) {
- return x.entity
- } else {
- throw MishapInvalidIota.ofType(x, if (argc == 0) idx else argc - (idx + 1), "entity")
- }
-}
-
-fun List.getList(idx: Int, argc: Int = 0): SpellList {
- val x = this.getOrElse(idx) { throw MishapNotEnoughArgs(idx + 1, this.size) }
- if (x is ListIota) {
- return x.list
- } else {
- throw MishapInvalidIota.ofType(x, if (argc == 0) idx else argc - (idx + 1), "list")
- }
-}
-
-fun List.getPattern(idx: Int, argc: Int = 0): HexPattern {
- val x = this.getOrElse(idx) { throw MishapNotEnoughArgs(idx + 1, this.size) }
- if (x is PatternIota) {
- return x.pattern
- } else {
- throw MishapInvalidIota.ofType(x, if (argc == 0) idx else argc - (idx + 1), "pattern")
- }
-}
-
-fun List.getVec3(idx: Int, argc: Int = 0): Vec3 {
- val x = this.getOrElse(idx) { throw MishapNotEnoughArgs(idx + 1, this.size) }
- if (x is Vec3Iota) {
- return x.vec3
- } else {
- throw MishapInvalidIota.ofType(x, if (argc == 0) idx else argc - (idx + 1), "vector")
- }
-}
-
-fun List.getBool(idx: Int, argc: Int = 0): Boolean {
- val x = this.getOrElse(idx) { throw MishapNotEnoughArgs(idx + 1, this.size) }
- if (x is BooleanIota) {
- return x.bool
- } else {
- throw MishapInvalidIota.ofType(x, if (argc == 0) idx else argc - (idx + 1), "boolean")
- }
-}
-
-// Helpers
-
-fun List.getItemEntity(idx: Int, argc: Int = 0): ItemEntity {
- val x = this.getOrElse(idx) { throw MishapNotEnoughArgs(idx + 1, this.size) }
- if (x is EntityIota) {
- val e = x.entity
- if (e is ItemEntity)
- return e
- }
- throw MishapInvalidIota.ofType(x, if (argc == 0) idx else argc - (idx + 1), "entity.item")
-}
-
-fun List.getPlayer(idx: Int, argc: Int = 0): ServerPlayer {
- val x = this.getOrElse(idx) { throw MishapNotEnoughArgs(idx + 1, this.size) }
- if (x is EntityIota) {
- val e = x.entity
- if (e is ServerPlayer)
- return e
- }
- throw MishapInvalidIota.ofType(x, if (argc == 0) idx else argc - (idx + 1), "entity.player")
-}
-
-fun List.getVillager(idx: Int, argc: Int = 0): Villager {
- val x = this.getOrElse(idx) { throw MishapNotEnoughArgs(idx + 1, this.size) }
- if (x is EntityIota) {
- val e = x.entity
- if (e is Villager)
- return e
- }
- throw MishapInvalidIota.ofType(x, if (argc == 0) idx else argc - (idx + 1), "entity.villager")
-}
-
-fun List.getLivingEntityButNotArmorStand(idx: Int, argc: Int = 0): LivingEntity {
- val x = this.getOrElse(idx) { throw MishapNotEnoughArgs(idx + 1, this.size) }
- if (x is EntityIota) {
- val e = x.entity
- if (e is LivingEntity && e !is ArmorStand)
- return e
- }
- throw MishapInvalidIota.ofType(x, if (argc == 0) idx else argc - (idx + 1), "entity.living")
-}
-
-fun List.getPositiveDouble(idx: Int, argc: Int = 0): Double {
- val x = this.getOrElse(idx) { throw MishapNotEnoughArgs(idx + 1, this.size) }
- if (x is DoubleIota) {
- val double = x.double
- if (0 <= double) {
- return double
- }
- }
- throw MishapInvalidIota.of(x, if (argc == 0) idx else argc - (idx + 1), "double.positive")
-}
-
-fun List.getPositiveDoubleUnder(idx: Int, max: Double, argc: Int = 0): Double {
- val x = this.getOrElse(idx) { throw MishapNotEnoughArgs(idx + 1, this.size) }
- if (x is DoubleIota) {
- val double = x.double
- if (0.0 <= double && double < max) {
- return double
- }
- }
- throw MishapInvalidIota.of(x, if (argc == 0) idx else argc - (idx + 1), "double.positive.less", max)
-}
-
-fun List.getPositiveDoubleUnderInclusive(idx: Int, max: Double, argc: Int = 0): Double {
- val x = this.getOrElse(idx) { throw MishapNotEnoughArgs(idx + 1, this.size) }
- if (x is DoubleIota) {
- val double = x.double
- if (double in 0.0..max) {
- return double
- }
- }
- throw MishapInvalidIota.of(x, if (argc == 0) idx else argc - (idx + 1), "double.positive.less.equal", max)
-}
-
-fun List.getDoubleBetween(idx: Int, min: Double, max: Double, argc: Int = 0): Double {
- val x = this.getOrElse(idx) { throw MishapNotEnoughArgs(idx + 1, this.size) }
- if (x is DoubleIota) {
- val double = x.double
- if (double in min..max) {
- return double
- }
- }
- throw MishapInvalidIota.of(x, if (argc == 0) idx else argc - (idx + 1), "double.between", min, max)
-}
-
-fun List.getInt(idx: Int, argc: Int = 0): Int {
- val x = this.getOrElse(idx) { throw MishapNotEnoughArgs(idx + 1, this.size) }
- if (x is DoubleIota) {
- val double = x.double
- val rounded = double.roundToInt()
- if (abs(double - rounded) <= DoubleIota.TOLERANCE) {
- return rounded
- }
- }
- throw MishapInvalidIota.of(x, if (argc == 0) idx else argc - (idx + 1), "int")
-}
-
-fun List.getLong(idx: Int, argc: Int = 0): Long {
- val x = this.getOrElse(idx) { throw MishapNotEnoughArgs(idx + 1, this.size) }
- if (x is DoubleIota) {
- val double = x.double
- val rounded = double.roundToLong()
- if (abs(double - rounded) <= DoubleIota.TOLERANCE) {
- return rounded
- }
- }
- throw MishapInvalidIota.of(x, if (argc == 0) idx else argc - (idx + 1), "int") // shh we're lying
-}
-
-fun List.getPositiveInt(idx: Int, argc: Int = 0): Int {
- val x = this.getOrElse(idx) { throw MishapNotEnoughArgs(idx + 1, this.size) }
- if (x is DoubleIota) {
- val double = x.double
- val rounded = double.roundToInt()
- if (abs(double - rounded) <= DoubleIota.TOLERANCE && rounded >= 0) {
- return rounded
- }
- }
- throw MishapInvalidIota.of(x, if (argc == 0) idx else argc - (idx + 1), "int.positive")
-}
-
-fun List.getPositiveIntUnder(idx: Int, max: Int, argc: Int = 0): Int {
- val x = this.getOrElse(idx) { throw MishapNotEnoughArgs(idx + 1, this.size) }
- if (x is DoubleIota) {
- val double = x.double
- val rounded = double.roundToInt()
- if (abs(double - rounded) <= DoubleIota.TOLERANCE && rounded in 0 until max) {
- return rounded
- }
- }
- throw MishapInvalidIota.of(x, if (argc == 0) idx else argc - (idx + 1), "int.positive.less", max)
-}
-
-fun List.getPositiveIntUnderInclusive(idx: Int, max: Int, argc: Int = 0): Int {
- val x = this.getOrElse(idx) { throw MishapNotEnoughArgs(idx + 1, this.size) }
- if (x is DoubleIota) {
- val double = x.double
- val rounded = double.roundToInt()
- if (abs(double - rounded) <= DoubleIota.TOLERANCE && rounded in 0 .. max) {
- return rounded
- }
- }
- throw MishapInvalidIota.of(x, if (argc == 0) idx else argc - (idx + 1), "int.positive.less.equal", max)
-}
-
-fun List.getIntBetween(idx: Int, min: Int, max: Int, argc: Int = 0): Int {
- val x = this.getOrElse(idx) { throw MishapNotEnoughArgs(idx + 1, this.size) }
- if (x is DoubleIota) {
- val double = x.double
- val rounded = double.roundToInt()
- if (abs(double - rounded) <= DoubleIota.TOLERANCE && rounded in min..max) {
- return rounded
- }
- }
- throw MishapInvalidIota.of(x, if (argc == 0) idx else argc - (idx + 1), "double.between", min, max)
-}
-
-fun List.getBlockPos(idx: Int, argc: Int = 0): BlockPos {
- val x = this.getOrElse(idx) { throw MishapNotEnoughArgs(idx + 1, this.size) }
- if (x is Vec3Iota) {
- return BlockPos(x.vec3)
- }
-
- throw MishapInvalidIota.ofType(x, if (argc == 0) idx else argc - (idx + 1), "vector")
-}
-
-fun List.getNumOrVec(idx: Int, argc: Int = 0): Either {
- val datum = this.getOrElse(idx) { throw MishapNotEnoughArgs(idx + 1, this.size) }
- return when (datum) {
- is DoubleIota -> Either.left(datum.double)
- is Vec3Iota -> Either.right(datum.vec3)
- else -> throw MishapInvalidIota.of(
- datum,
- if (argc == 0) idx else argc - (idx + 1),
- "numvec"
- )
- }
-}
-
-fun List.getLongOrList(idx: Int, argc: Int = 0): Either {
- val datum = this.getOrElse(idx) { throw MishapNotEnoughArgs(idx + 1, this.size) }
- if (datum is DoubleIota) {
- val double = datum.double
- val rounded = double.roundToLong()
- if (abs(double - rounded) <= DoubleIota.TOLERANCE) {
- return Either.left(rounded)
- }
- } else if (datum is ListIota) {
- return Either.right(datum.list)
- }
- throw MishapInvalidIota.of(
- datum,
- if (argc == 0) idx else argc - (idx + 1),
- "numlist"
- )
-}
-
-fun evaluatable(datum: Iota, reverseIdx: Int): Either =
- when (datum) {
- is PatternIota -> Either.left(datum.pattern)
- is ListIota -> Either.right(datum.list)
- else -> throw MishapInvalidIota(
- datum,
- reverseIdx,
- "hexcasting.mishap.invalid_value.evaluatable".asTranslatedComponent
- )
- }
-
-fun Iota?.orNull() = this ?: NullIota()
-
-// TODO do we make this work on lists
-// there should probably be some way to abstract function application over lists, vecs, and numbers,
-// and i bet it's fucking monads
-fun aplKinnie(operatee: Either, fn: DoubleUnaryOperator): Iota =
- operatee.map(
- { num -> DoubleIota(fn.applyAsDouble(num)) },
- { vec -> Vec3Iota(Vec3(fn.applyAsDouble(vec.x), fn.applyAsDouble(vec.y), fn.applyAsDouble(vec.z))) }
- )
-
-inline val Boolean.asActionResult get() = listOf(BooleanIota(this))
-inline val Double.asActionResult get() = listOf(DoubleIota(this))
-inline val Number.asActionResult get() = listOf(DoubleIota(this.toDouble()))
-
-inline val SpellList.asActionResult get() = listOf(ListIota(this))
-inline val List.asActionResult get() = listOf(ListIota(this))
-
-inline val BlockPos.asActionResult get() = listOf(Vec3Iota(Vec3.atCenterOf(this)))
-inline val Vector3f.asActionResult get() = listOf(Vec3Iota(Vec3(this)))
-inline val Vec3.asActionResult get() = listOf(Vec3Iota(this))
-
-inline val Entity?.asActionResult get() = listOf(if (this == null) NullIota() else EntityIota(this))
-inline val HexPattern.asActionResult get() = listOf(PatternIota(this))
diff --git a/0.10.3/Common/src/main/java/at/petrak/hexcasting/api/spell/ParticleSpray.kt b/0.10.3/Common/src/main/java/at/petrak/hexcasting/api/spell/ParticleSpray.kt
deleted file mode 100644
index 617ee5c0..00000000
--- a/0.10.3/Common/src/main/java/at/petrak/hexcasting/api/spell/ParticleSpray.kt
+++ /dev/null
@@ -1,25 +0,0 @@
-package at.petrak.hexcasting.api.spell
-
-import at.petrak.hexcasting.api.misc.FrozenColorizer
-import at.petrak.hexcasting.common.network.MsgCastParticleAck
-import at.petrak.hexcasting.xplat.IXplatAbstractions
-import net.minecraft.server.level.ServerLevel
-import net.minecraft.world.phys.Vec3
-
-data class ParticleSpray(val pos: Vec3, val vel: Vec3, val fuzziness: Double, val spread: Double, val count: Int = 20) {
- companion object {
- @JvmStatic
- fun burst(pos: Vec3, size: Double, count: Int = 20): ParticleSpray {
- return ParticleSpray(pos, Vec3(size, 0.0, 0.0), 0.0, 3.14, count)
- }
-
- @JvmStatic
- fun cloud(pos: Vec3, size: Double, count: Int = 20): ParticleSpray {
- return ParticleSpray(pos, Vec3(0.0, 0.001, 0.0), size, 0.0, count)
- }
- }
-
- fun sprayParticles(world: ServerLevel, color: FrozenColorizer) {
- IXplatAbstractions.INSTANCE.sendPacketNear(this.pos, 128.0, world, MsgCastParticleAck(this, color))
- }
-}
diff --git a/0.10.3/Common/src/main/java/at/petrak/hexcasting/api/spell/RenderedSpell.kt b/0.10.3/Common/src/main/java/at/petrak/hexcasting/api/spell/RenderedSpell.kt
deleted file mode 100644
index 5929aa71..00000000
--- a/0.10.3/Common/src/main/java/at/petrak/hexcasting/api/spell/RenderedSpell.kt
+++ /dev/null
@@ -1,7 +0,0 @@
-package at.petrak.hexcasting.api.spell
-
-import at.petrak.hexcasting.api.spell.casting.CastingContext
-
-interface RenderedSpell {
- fun cast(ctx: CastingContext)
-}
diff --git a/0.10.3/Common/src/main/java/at/petrak/hexcasting/api/spell/SpellAction.kt b/0.10.3/Common/src/main/java/at/petrak/hexcasting/api/spell/SpellAction.kt
deleted file mode 100644
index 856c2b09..00000000
--- a/0.10.3/Common/src/main/java/at/petrak/hexcasting/api/spell/SpellAction.kt
+++ /dev/null
@@ -1,55 +0,0 @@
-package at.petrak.hexcasting.api.spell
-
-import at.petrak.hexcasting.api.spell.casting.CastingContext
-import at.petrak.hexcasting.api.spell.casting.eval.SpellContinuation
-import at.petrak.hexcasting.api.spell.casting.sideeffects.OperatorSideEffect
-import at.petrak.hexcasting.api.spell.iota.Iota
-import at.petrak.hexcasting.api.spell.mishaps.MishapNotEnoughArgs
-
-interface SpellAction : Action {
- val argc: Int
-
- fun hasCastingSound(ctx: CastingContext): Boolean = true
-
- fun awardsCastingStat(ctx: CastingContext): Boolean = true
-
- fun execute(
- args: List,
- ctx: CastingContext
- ): Triple>?
-
- override fun operate(
- continuation: SpellContinuation,
- stack: MutableList,
- ravenmind: Iota?,
- ctx: CastingContext
- ): OperationResult {
- if (this.argc > stack.size)
- throw MishapNotEnoughArgs(this.argc, stack.size)
- val args = stack.takeLast(this.argc)
- for (_i in 0 until this.argc) stack.removeLast()
- val executeResult = this.execute(args, ctx) ?: return OperationResult(continuation, stack, ravenmind, listOf())
- val (spell, media, particles) = executeResult
-
- val sideEffects = mutableListOf()
-
- if (media > 0)
- sideEffects.add(OperatorSideEffect.ConsumeMedia(media))
-
- // Don't have an effect if the caster isn't enlightened, even if processing other side effects
- if (!isGreat || ctx.isCasterEnlightened)
- sideEffects.add(
- OperatorSideEffect.AttemptSpell(
- spell,
- this.hasCastingSound(ctx),
- this.awardsCastingStat(ctx)
- )
- )
-
- for (spray in particles)
- sideEffects.add(OperatorSideEffect.Particles(spray))
-
- return OperationResult(continuation, stack, ravenmind, sideEffects)
- }
-
-}
diff --git a/0.10.3/Common/src/main/java/at/petrak/hexcasting/api/spell/SpellList.kt b/0.10.3/Common/src/main/java/at/petrak/hexcasting/api/spell/SpellList.kt
deleted file mode 100644
index c1472008..00000000
--- a/0.10.3/Common/src/main/java/at/petrak/hexcasting/api/spell/SpellList.kt
+++ /dev/null
@@ -1,93 +0,0 @@
-package at.petrak.hexcasting.api.spell
-
-import at.petrak.hexcasting.api.spell.iota.Iota
-
-/**
- * Restricted interface for functional lists.
- *
- * ...Surely this won't have any performance implications.
- */
-sealed class SpellList : Iterable {
-
- abstract val nonEmpty: Boolean
- abstract val car: Iota
- abstract val cdr: SpellList
-
- class LPair(override val car: Iota, override val cdr: SpellList) : SpellList() {
- override val nonEmpty = true
- }
-
- class LList(val idx: Int, val list: List) : SpellList() {
- override val nonEmpty: Boolean
- get() = idx < list.size
- override val car: Iota
- get() = list[idx]
- override val cdr: SpellList
- get() = LList(idx + 1, list)
-
- constructor(list: List) : this(0, list)
- }
-
- fun modifyAt(startIdx: Int, modify: (SpellList) -> SpellList): SpellList {
- val stack = mutableListOf()
- val ptr = iterator()
- var idx = startIdx
- if (idx < 0) {
- return this
- }
- while (idx > 0) {
- if (!ptr.hasNext()) {
- return this
- }
- idx--
- stack.add(ptr.next())
- }
- var value = modify(ptr.list)
- for (datum in stack.asReversed()) {
- value = LPair(datum, value)
- }
- return value
- }
-
- fun getAt(startIdx: Int): Iota {
- var ptr = this
- var idx = startIdx
- if (idx < 0) {
- throw ArrayIndexOutOfBoundsException()
- }
- while (idx > 0) {
- when (ptr) {
- is LPair -> ptr = ptr.cdr
- is LList -> return ptr.list[ptr.idx + idx]
- }
- idx--
- }
- return ptr.car
- }
-
- override fun toString() = toList().toString()
-
- override fun iterator() = SpellListIterator(this)
-
- /**
- * Note this is O(n), probably.
- */
- fun size(): Int {
- var size = 0
- var ptr = this
- while (ptr.nonEmpty) {
- ptr = ptr.cdr
- size++
- }
- return size
- }
-
- class SpellListIterator(var list: SpellList) : Iterator {
- override fun hasNext() = list.nonEmpty
- override operator fun next(): Iota {
- val car = list.car
- list = list.cdr
- return car
- }
- }
-}
diff --git a/0.10.3/Common/src/main/java/at/petrak/hexcasting/api/spell/casting/CastingContext.kt b/0.10.3/Common/src/main/java/at/petrak/hexcasting/api/spell/casting/CastingContext.kt
deleted file mode 100644
index 0ae90378..00000000
--- a/0.10.3/Common/src/main/java/at/petrak/hexcasting/api/spell/casting/CastingContext.kt
+++ /dev/null
@@ -1,253 +0,0 @@
-package at.petrak.hexcasting.api.spell.casting
-
-import at.petrak.hexcasting.api.HexAPI.modLoc
-import at.petrak.hexcasting.api.misc.DiscoveryHandlers
-import at.petrak.hexcasting.api.mod.HexConfig
-import at.petrak.hexcasting.api.spell.Action
-import at.petrak.hexcasting.api.spell.mishaps.MishapEntityTooFarAway
-import at.petrak.hexcasting.api.spell.mishaps.MishapEvalTooDeep
-import at.petrak.hexcasting.api.spell.mishaps.MishapLocationTooFarAway
-import at.petrak.hexcasting.api.utils.otherHand
-import at.petrak.hexcasting.common.items.magic.ItemCreativeUnlocker
-import at.petrak.hexcasting.xplat.IXplatAbstractions
-import net.minecraft.core.BlockPos
-import net.minecraft.server.level.ServerLevel
-import net.minecraft.server.level.ServerPlayer
-import net.minecraft.world.InteractionHand
-import net.minecraft.world.entity.Entity
-import net.minecraft.world.entity.player.Player
-import net.minecraft.world.item.ItemStack
-import net.minecraft.world.level.GameType
-import net.minecraft.world.phys.Vec3
-import java.util.function.Predicate
-import kotlin.math.min
-
-/**
- * Transient info about the moment the spell started being cast.
- */
-data class CastingContext(
- val caster: ServerPlayer,
- val castingHand: InteractionHand,
- val source: CastSource,
- val spellCircle: SpellCircleContext? = null
-) {
- constructor(caster: ServerPlayer, castingHand: InteractionHand, source: CastSource) : this(
- caster,
- castingHand,
- source,
- null
- )
-
- constructor(caster: ServerPlayer, castingHand: InteractionHand, spellCircleContext: SpellCircleContext) :
- this(caster, castingHand, CastSource.SPELL_CIRCLE, spellCircleContext)
-
- private var depth: Int = 0
-
- val world: ServerLevel get() = caster.getLevel()
- val otherHand: InteractionHand get() = otherHand(this.castingHand)
- val position: Vec3 get() = caster.position()
-
- private val entitiesGivenMotion = mutableSetOf()
-
- inline fun getHeldItemToOperateOn(acceptItemIf: (ItemStack) -> Boolean): Pair {
- val handItem = caster.getItemInHand(otherHand)
- if (!acceptItemIf(handItem)) {
- val castingItem = caster.getItemInHand(castingHand)
- if (acceptItemIf(castingItem)) {
- return castingItem to castingHand
- }
- }
- return handItem to otherHand
- }
-
- /**
- * Throws if we get too deep.
- */
- fun incDepth() {
- this.depth++
- val maxAllowedDepth = HexConfig.server().maxRecurseDepth()
- if (this.depth > maxAllowedDepth) {
- throw MishapEvalTooDeep()
- }
- }
-
- /**
- * Check to make sure a vec is in world.
- */
- fun assertVecInWorld(vec: Vec3) {
- if (!isVecInWorld(vec))
- throw MishapLocationTooFarAway(vec, "out_of_world")
- }
-
- /**
- * Check to make sure a vec is in range.
- */
- fun assertVecInRange(vec: Vec3) {
- if (!isVecInRange(vec)) throw MishapLocationTooFarAway(vec)
- assertVecInWorld(vec)
- }
-
- fun assertVecInRange(pos: BlockPos) {
- assertVecInRange(Vec3.atCenterOf(pos))
- }
-
- /**
- * Check to make sure an entity is in range. Will not mishap for players.
- */
- fun assertEntityInRange(entity: Entity) {
- if (entity !is Player && !isEntityInRange(entity)) throw MishapEntityTooFarAway(entity)
- }
-
- fun hasBeenGivenMotion(target: Entity): Boolean {
- return entitiesGivenMotion.contains(target)
- }
-
- fun isVecInWorld(vec: Vec3) =
- world.isInWorldBounds(BlockPos(vec)) && world.worldBorder.isWithinBounds(vec.x, vec.z, 0.5)
-
- fun isVecInRange(vec: Vec3): Boolean {
- val sentinel = IXplatAbstractions.INSTANCE.getSentinel(caster)
- if (sentinel.hasSentinel
- && sentinel.extendsRange
- && world.dimension() == sentinel.dimension
- && vec.distanceToSqr(sentinel.position) < Action.MAX_DISTANCE_FROM_SENTINEL * Action.MAX_DISTANCE_FROM_SENTINEL
- )
- return true
-
-
- if (this.spellCircle != null) {
- // we use the eye position cause thats where the caster gets their "position" from
- val range = this.caster.bbHeight
- if (this.spellCircle.activatorAlwaysInRange && vec.distanceToSqr(this.caster.eyePosition) <= range * range)
- return true
- return this.spellCircle.aabb.contains(vec)
- }
-
- return vec.distanceToSqr(this.caster.eyePosition) <= Action.MAX_DISTANCE * Action.MAX_DISTANCE
- }
-
- fun isEntityInWorld(entity: Entity) = isVecInWorld(entity.position())
-
- fun isEntityInRange(entity: Entity): Boolean {
- if (this.spellCircle != null && this.spellCircle.activatorAlwaysInRange && this.caster == entity)
- return true
- return isVecInRange(entity.position())
- }
-
- fun canEditBlockAt(pos: BlockPos): Boolean {
- return this.isVecInRange(Vec3.atCenterOf(pos))
- && this.caster.gameMode.gameModeForPlayer != GameType.ADVENTURE
- && this.world.mayInteract(this.caster, pos)
- }
-
- /**
- * Return the slot from which to take blocks and items.
- */
- // https://wiki.vg/Inventory is WRONG
- // slots 0-8 are the hotbar
- // for what purpose i cannot imagine
- // http://redditpublic.com/images/b/b2/Items_slot_number.png looks right
- // and offhand is 150 Inventory.java:464
- fun getOperativeSlot(stackOK: Predicate): ItemStack? {
- val operable = DiscoveryHandlers.collectOperableSlots(this)
-
- for (stack in operable) {
- if (stackOK.test(stack)) {
- return stack
- }
- }
- return null
- }
-
- /**
- * Remove the given count of the specified item from somewhere in the inventory, favoring slots not in the hotbar.
- * Return whether the withdrawal was successful.
- */
- // https://github.com/VazkiiMods/Psi/blob/master/src/main/java/vazkii/psi/common/spell/trick/block/PieceTrickPlaceBlock.java#L143
- fun withdrawItem(item: ItemStack, count: Int, actuallyRemove: Boolean): Boolean {
- if (this.caster.isCreative) return true
-
- val operativeItem = item.copy()
-
- // TODO: withdraw from ender chest given a specific ender charm?
- val stacksToExamine = DiscoveryHandlers.collectItemSlots(this)
-
- fun matches(stack: ItemStack): Boolean =
- !stack.isEmpty && ItemStack.isSameItemSameTags(operativeItem, stack)
-
- val presentCount = stacksToExamine.fold(0) { acc, stack ->
- acc + if (matches(stack)) stack.count else 0
- }
- if (presentCount < count) return false
-
- // now that we know we have enough items, if we don't need to remove anything we're through.
- if (!actuallyRemove) return true
-
- var remaining = count
- for (stack in stacksToExamine) {
- if (matches(stack)) {
- val toWithdraw = min(stack.count, remaining)
- stack.shrink(toWithdraw)
-
- remaining -= toWithdraw
- if (remaining <= 0) {
- return true
- }
- }
- }
- throw RuntimeException("unreachable")
- }
-
- fun markEntityAsMotionAdded(entity: Entity) {
- this.entitiesGivenMotion.add(entity)
- }
-
- val canOvercast: Boolean
- get() {
- val adv = this.world.server.advancements.getAdvancement(modLoc("y_u_no_cast_angy"))
- val advs = this.caster.advancements
- return advs.getOrStartProgress(adv!!).isDone
- }
-
- val isCasterEnlightened: Boolean
- get() {
- val adv = this.world.server.advancements.getAdvancement(modLoc("enlightenment"))
- val advs = this.caster.advancements
- return advs.getOrStartProgress(adv!!).isDone
- }
-
- val debugPatterns: Boolean by lazy {
- !DiscoveryHandlers.findDebugItem(this.caster, ItemCreativeUnlocker.DISPLAY_PATTERNS).isEmpty
- }
-
- companion object {
- init {
- DiscoveryHandlers.addItemSlotDiscoverer {
- val inv = it.caster.inventory
- inv.items.toMutableList().apply { removeAt(inv.selected) }.asReversed().toMutableList().apply {
- addAll(inv.offhand)
- add(inv.getSelected())
- }
- }
-
- DiscoveryHandlers.addOperativeSlotDiscoverer {
- val slots = mutableListOf()
- val anchorSlot =
- if (it.castingHand == InteractionHand.MAIN_HAND) (it.caster.inventory.selected + 1) % 9 else 0
-
- slots.add(it.caster.getItemInHand(it.otherHand))
- for (delta in 0 until 9) {
- val slot = (anchorSlot + delta) % 9
- slots.add(it.caster.inventory.getItem(slot))
- }
- slots
- }
- }
- }
-
- enum class CastSource {
- STAFF,
- PACKAGED_HEX,
- SPELL_CIRCLE,
- }
-}
diff --git a/0.10.3/Common/src/main/java/at/petrak/hexcasting/api/spell/casting/CastingHarness.kt b/0.10.3/Common/src/main/java/at/petrak/hexcasting/api/spell/casting/CastingHarness.kt
deleted file mode 100644
index 780b6548..00000000
--- a/0.10.3/Common/src/main/java/at/petrak/hexcasting/api/spell/casting/CastingHarness.kt
+++ /dev/null
@@ -1,689 +0,0 @@
-package at.petrak.hexcasting.api.spell.casting
-
-import at.petrak.hexcasting.api.PatternRegistry
-import at.petrak.hexcasting.api.advancements.HexAdvancementTriggers
-import at.petrak.hexcasting.api.block.circle.BlockEntityAbstractImpetus
-import at.petrak.hexcasting.api.misc.DiscoveryHandlers
-import at.petrak.hexcasting.api.misc.FrozenColorizer
-import at.petrak.hexcasting.api.misc.HexDamageSources
-import at.petrak.hexcasting.api.mod.HexConfig
-import at.petrak.hexcasting.api.mod.HexStatistics
-import at.petrak.hexcasting.api.mod.HexTags
-import at.petrak.hexcasting.api.spell.Action
-import at.petrak.hexcasting.api.spell.ParticleSpray
-import at.petrak.hexcasting.api.spell.SpellList
-import at.petrak.hexcasting.api.spell.casting.eval.ContinuationFrame
-import at.petrak.hexcasting.api.spell.casting.eval.FrameEvaluate
-import at.petrak.hexcasting.api.spell.casting.eval.FunctionalData
-import at.petrak.hexcasting.api.spell.casting.eval.SpellContinuation
-import at.petrak.hexcasting.api.spell.casting.sideeffects.EvalSound
-import at.petrak.hexcasting.api.spell.casting.sideeffects.OperatorSideEffect
-import at.petrak.hexcasting.api.spell.iota.Iota
-import at.petrak.hexcasting.api.spell.iota.ListIota
-import at.petrak.hexcasting.api.spell.iota.PatternIota
-import at.petrak.hexcasting.api.spell.math.HexDir
-import at.petrak.hexcasting.api.spell.math.HexPattern
-import at.petrak.hexcasting.api.spell.mishaps.*
-import at.petrak.hexcasting.api.utils.*
-import at.petrak.hexcasting.common.lib.hex.HexEvalSounds
-import at.petrak.hexcasting.common.lib.hex.HexIotaTypes
-import at.petrak.hexcasting.xplat.IXplatAbstractions
-import net.minecraft.ChatFormatting
-import net.minecraft.nbt.CompoundTag
-import net.minecraft.nbt.Tag
-import net.minecraft.network.chat.Component
-import net.minecraft.resources.ResourceLocation
-import net.minecraft.server.level.ServerLevel
-import net.minecraft.sounds.SoundSource
-import net.minecraft.util.Mth
-import net.minecraft.world.level.gameevent.GameEvent
-import net.minecraft.world.phys.Vec3
-import kotlin.math.max
-import kotlin.math.min
-
-/**
- * Keeps track of a player casting a spell on the server.
- * It's stored as NBT on the wand.
- */
-class CastingHarness private constructor(
- var stack: MutableList,
- var ravenmind: Iota?,
- var parenCount: Int,
- var parenthesized: List,
- var escapeNext: Boolean,
- val ctx: CastingContext,
- val prepackagedColorizer: FrozenColorizer? // for trinkets with colorizers
-) {
-
- @JvmOverloads
- constructor(
- ctx: CastingContext,
- prepackagedColorizer: FrozenColorizer? = null
- ) : this(mutableListOf(), null, 0, mutableListOf(), false, ctx, prepackagedColorizer)
-
- /**
- * Execute a single iota.
- */
- fun executeIota(iota: Iota, world: ServerLevel): ControllerInfo = executeIotas(listOf(iota), world)
-
- private fun displayPattern(escapeNext: Boolean, parenCount: Int, iotaRepresentation: Component) {
- if (this.ctx.debugPatterns) {
- val display = " ".repeat(parenCount).asTextComponent
- if (escapeNext)
- display.append("\\ ".asTextComponent.gold)
- display.append(iotaRepresentation)
-
- this.ctx.caster.sendSystemMessage(display)
- }
- }
-
- private fun getOperatorForPattern(iota: Iota, world: ServerLevel): Action? {
- if (iota is PatternIota)
- return PatternRegistry.matchPattern(iota.pattern, world)
- return null
- }
-
- private fun getPatternForFrame(frame: ContinuationFrame): HexPattern? {
- if (frame !is FrameEvaluate) return null
-
- return (frame.list.car as? PatternIota)?.pattern
- }
-
- private fun getOperatorForFrame(frame: ContinuationFrame, world: ServerLevel): Action? {
- if (frame !is FrameEvaluate) return null
-
- return getOperatorForPattern(frame.list.car, world)
- }
-
- /**
- * Given a list of iotas, execute them in sequence.
- */
- fun executeIotas(iotas: List, world: ServerLevel): ControllerInfo {
- // Initialize the continuation stack to a single top-level eval for all iotas.
- var continuation = SpellContinuation.Done.pushFrame(FrameEvaluate(SpellList.LList(0, iotas), false))
- // Begin aggregating info
- val info = TempControllerInfo(earlyExit = false)
- var lastResolutionType = ResolvedPatternType.UNRESOLVED
- var sound = HexEvalSounds.NOTHING
- while (continuation is SpellContinuation.NotDone && !info.earlyExit) {
- // Take the top of the continuation stack...
- val next = continuation.frame
- // ...and execute it.
- val result = try {
- next.evaluate(continuation.next, world, this)
- } catch (mishap: Mishap) {
- val pattern = getPatternForFrame(next)
- val operator = try {
- getOperatorForFrame(next, world)
- } catch (e: Throwable) {
- null
- }
- CastResult(
- continuation,
- null,
- mishap.resolutionType(ctx),
- listOf(
- OperatorSideEffect.DoMishap(
- mishap,
- Mishap.Context(pattern ?: HexPattern(HexDir.WEST), operator)
- )
- ),
- HexEvalSounds.MISHAP,
- )
- }
- // Then write all pertinent data back to the harness for the next iteration.
- if (result.newData != null) {
- this.applyFunctionalData(result.newData)
- }
- continuation = result.continuation
- lastResolutionType = result.resolutionType
- performSideEffects(info, result.sideEffects)
- info.earlyExit = info.earlyExit || !lastResolutionType.success
- sound = if (result.sound == HexEvalSounds.MISHAP) {
- HexEvalSounds.MISHAP
- } else {
- sound.greaterOf(result.sound)
- }
- }
-
- sound.sound?.let {
- this.ctx.world.playSound(
- null, this.ctx.position.x, this.ctx.position.y, this.ctx.position.z, it,
- SoundSource.PLAYERS, 1f, 1f
- )
- // TODO: is it worth mixing in to the immut map and making our own game event with blackjack and hookers
- this.ctx.world.gameEvent(this.ctx.caster, GameEvent.ITEM_INTERACT_FINISH, this.ctx.position)
- }
-
- if (continuation is SpellContinuation.NotDone) {
- lastResolutionType =
- if (lastResolutionType.success) ResolvedPatternType.EVALUATED else ResolvedPatternType.ERRORED
- }
-
- val (stackDescs, parenDescs, ravenmind) = generateDescs()
-
- return ControllerInfo(
- this.stack.isEmpty() && this.parenCount == 0 && !this.escapeNext,
- lastResolutionType,
- stackDescs,
- parenDescs,
- ravenmind,
- this.parenCount
- )
- }
-
- fun getUpdate(iota: Iota, world: ServerLevel, continuation: SpellContinuation): CastResult {
- try {
- // TODO we can have a special intro/retro sound
- this.handleParentheses(iota)?.let { (data, resolutionType) ->
- return@getUpdate CastResult(continuation, data, resolutionType, listOf(), HexEvalSounds.OPERATOR)
- }
-
- if (iota is PatternIota) {
- return updateWithPattern(iota.pattern, world, continuation)
- } else {
- return CastResult(
- continuation,
- null,
- ResolvedPatternType.INVALID, // Should never matter
- listOf(
- OperatorSideEffect.DoMishap(
- MishapUnescapedValue(iota),
- Mishap.Context(HexPattern(HexDir.WEST), null)
- )
- ),
- HexEvalSounds.MISHAP
- )
- }
- } catch (mishap: Mishap) {
- val operator = try {
- getOperatorForPattern(iota, world)
- } catch (e: Throwable) {
- null
- }
- return CastResult(
- continuation,
- null,
- mishap.resolutionType(ctx),
- listOf(
- OperatorSideEffect.DoMishap(
- mishap,
- Mishap.Context(
- (iota as? PatternIota)?.pattern ?: HexPattern(HexDir.WEST),
- operator
- )
- )
- ),
- HexEvalSounds.MISHAP
- )
- } catch (exception: Exception) {
- // This means something very bad has happened
- exception.printStackTrace()
- val operator = try {
- getOperatorForPattern(iota, world)
- } catch (e: Throwable) {
- null
- }
- return CastResult(
- continuation,
- null,
- ResolvedPatternType.ERRORED,
- listOf(
- OperatorSideEffect.DoMishap(
- MishapError(exception),
- Mishap.Context(
- (iota as? PatternIota)?.pattern ?: HexPattern(HexDir.WEST),
- operator
- )
- )
- ),
- HexEvalSounds.MISHAP
- )
- }
- }
-
- /**
- * When the server gets a packet from the client with a new pattern,
- * handle it functionally.
- */
- fun updateWithPattern(newPat: HexPattern, world: ServerLevel, continuation: SpellContinuation): CastResult {
- var actionIdPair: Pair? = null
- try {
- // Don't catch this one
- val mojangPair = PatternRegistry.matchPatternAndID(newPat, world)
- actionIdPair = mojangPair.first to mojangPair.second
-
- if (this.ctx.spellCircle == null && !HexConfig.server().isActionAllowed(actionIdPair.second)) {
- throw MishapDisallowedSpell()
- } else if (this.ctx.spellCircle != null
- && !HexConfig.server().isActionAllowedInCircles(actionIdPair.second)
- ) {
- throw MishapDisallowedSpell("disallowed_circle")
- }
-
- val pattern = actionIdPair.first
-
- val unenlightened = pattern.isGreat && !ctx.isCasterEnlightened
-
- val sideEffects = mutableListOf()
- var stack2: List? = null
- var cont2 = continuation
- var ravenmind2: Iota? = null
-
- if (!unenlightened || pattern.alwaysProcessGreatSpell) {
- displayPattern(false, 0, pattern.displayName)
- val result = pattern.operate(
- continuation,
- this.stack.toMutableList(),
- this.ravenmind,
- this.ctx
- )
- cont2 = result.newContinuation
- stack2 = result.newStack
- ravenmind2 = result.newRavenmind
- // TODO parens also break prescience
- sideEffects.addAll(result.sideEffects)
- }
-
- if (unenlightened) {
- sideEffects.add(OperatorSideEffect.RequiredEnlightenment(pattern.causesBlindDiversion))
- }
-
- // Stick a poofy particle effect at the caster position
- if (this.ctx.spellCircle == null)
- sideEffects.add(
- OperatorSideEffect.Particles(
- ParticleSpray(
- this.ctx.position,
- Vec3(0.0, 1.0, 0.0),
- 0.5, 1.0
- )
- )
- )
-
- val hereFd = this.getFunctionalData()
- val fd = if (stack2 != null) {
- hereFd.copy(
- stack = stack2,
- ravenmind = ravenmind2
- )
- } else {
- hereFd
- }
-
- var soundType = if (this.ctx.source == CastingContext.CastSource.STAFF) {
- HexEvalSounds.OPERATOR
- } else {
- HexEvalSounds.NOTHING
- }
- for (se in sideEffects) {
- if (se is OperatorSideEffect.AttemptSpell) {
- soundType = if (se.hasCastingSound) {
- soundType.greaterOf(HexEvalSounds.SPELL)
- } else {
- // WITH CATLIKE TREAD
- // UPON OUR PREY WE STEAL
- HexEvalSounds.NOTHING
- }
- } else if (se is OperatorSideEffect.DoMishap) {
- soundType = HexEvalSounds.MISHAP
- }
- }
- return CastResult(
- cont2,
- fd,
- ResolvedPatternType.EVALUATED,
- sideEffects,
- soundType,
- )
-
- } catch (mishap: Mishap) {
- return CastResult(
- continuation,
- null,
- mishap.resolutionType(ctx),
- listOf(OperatorSideEffect.DoMishap(mishap, Mishap.Context(newPat, actionIdPair?.first))),
- HexEvalSounds.MISHAP
- )
- }
- }
-
- /**
- * Execute the side effects of a pattern, updating our aggregated info.
- */
- fun performSideEffects(info: TempControllerInfo, sideEffects: List) {
- for (haskellProgrammersShakingandCryingRN in sideEffects) {
- val mustStop = haskellProgrammersShakingandCryingRN.performEffect(this)
- if (mustStop) {
- info.earlyExit = true
- break
- }
- }
- }
-
- fun generateDescs() = Triple(
- stack.map(HexIotaTypes::serialize),
- parenthesized.map(HexIotaTypes::serialize),
- ravenmind?.let(HexIotaTypes::serialize)
- )
-
- /**
- * Return the functional update represented by the current state (for use with `copy`)
- */
- fun getFunctionalData() = FunctionalData(
- this.stack.toList(),
- this.parenCount,
- this.parenthesized.toList(),
- this.escapeNext,
- this.ravenmind,
- )
-
- /**
- * Apply the functional update.
- */
- fun applyFunctionalData(data: FunctionalData) {
- this.stack.clear()
- this.stack.addAll(data.stack)
- this.parenCount = data.parenCount
- this.parenthesized = data.parenthesized
- this.escapeNext = data.escapeNext
- this.ravenmind = data.ravenmind
- }
-
- /**
- * Return a non-null value if we handled this in some sort of parenthesey way,
- * either escaping it onto the stack or changing the parenthese-handling state.
- */
- private fun handleParentheses(iota: Iota): Pair? {
- val sig = (iota as? PatternIota)?.pattern?.anglesSignature()
-
- var displayDepth = this.parenCount
-
- val out = if (this.parenCount > 0) {
- if (this.escapeNext) {
- val newParens = this.parenthesized.toMutableList()
- newParens.add(iota)
- this.getFunctionalData().copy(
- escapeNext = false,
- parenthesized = newParens
- ) to ResolvedPatternType.ESCAPED
- } else {
-
- when (sig) {
- SpecialPatterns.CONSIDERATION.anglesSignature() -> {
- this.getFunctionalData().copy(
- escapeNext = true,
- ) to ResolvedPatternType.EVALUATED
- }
-
- SpecialPatterns.INTROSPECTION.anglesSignature() -> {
- // we have escaped the parens onto the stack; we just also record our count.
- val newParens = this.parenthesized.toMutableList()
- newParens.add(iota)
- this.getFunctionalData().copy(
- parenthesized = newParens,
- parenCount = this.parenCount + 1
- ) to if (this.parenCount == 0) ResolvedPatternType.EVALUATED else ResolvedPatternType.ESCAPED
- }
-
- SpecialPatterns.RETROSPECTION.anglesSignature() -> {
- val newParenCount = this.parenCount - 1
- displayDepth--
- if (newParenCount == 0) {
- val newStack = this.stack.toMutableList()
- newStack.add(ListIota(this.parenthesized.toList()))
- this.getFunctionalData().copy(
- stack = newStack,
- parenCount = newParenCount,
- parenthesized = listOf()
- ) to ResolvedPatternType.EVALUATED
- } else if (newParenCount < 0) {
- throw MishapTooManyCloseParens()
- } else {
- // we have this situation: "(()"
- // we need to add the close paren
- val newParens = this.parenthesized.toMutableList()
- newParens.add(iota)
- this.getFunctionalData().copy(
- parenCount = newParenCount,
- parenthesized = newParens
- ) to ResolvedPatternType.ESCAPED
- }
- }
-
- else -> {
- val newParens = this.parenthesized.toMutableList()
- newParens.add(iota)
- this.getFunctionalData().copy(
- parenthesized = newParens
- ) to ResolvedPatternType.ESCAPED
- }
- }
- }
- } else if (this.escapeNext) {
- val newStack = this.stack.toMutableList()
- newStack.add(iota)
- this.getFunctionalData().copy(
- stack = newStack,
- escapeNext = false,
- ) to ResolvedPatternType.ESCAPED
- } else {
- when (sig) {
- SpecialPatterns.CONSIDERATION.anglesSignature() -> {
- this.getFunctionalData().copy(
- escapeNext = true
- ) to ResolvedPatternType.EVALUATED
- }
-
- SpecialPatterns.INTROSPECTION.anglesSignature() -> {
- this.getFunctionalData().copy(
- parenCount = this.parenCount + 1
- ) to ResolvedPatternType.EVALUATED
- }
-
- SpecialPatterns.RETROSPECTION.anglesSignature() -> {
- throw MishapTooManyCloseParens()
- }
-
- else -> {
- null
- }
- }
- }
-
- if (out != null) {
- val display = if (iota is PatternIota) {
- PatternNameHelper.representationForPattern(iota.pattern)
- .copy()
- .withStyle(if (out.second == ResolvedPatternType.ESCAPED) ChatFormatting.YELLOW else ChatFormatting.AQUA)
- } else iota.display()
- displayPattern(this.escapeNext, displayDepth, display)
- }
- return out
- }
-
- /**
- * Might cast from hitpoints.
- * Returns the media cost still remaining after we deplete everything. It will be <= 0 if we could pay for it.
- *
- * Also awards stats and achievements and such
- */
- fun withdrawMedia(mediaCost: Int, allowOvercast: Boolean): Int {
- // prevent poor impls from gaining you media
- if (mediaCost <= 0) return 0
- var costLeft = mediaCost
-
- val fake = this.ctx.caster.isCreative
-
- if (this.ctx.spellCircle != null) {
- if (fake)
- return 0
-
- val tile = this.ctx.world.getBlockEntity(this.ctx.spellCircle.impetusPos)
- if (tile is BlockEntityAbstractImpetus) {
- val mediaAvailable = tile.media
- if (mediaAvailable < 0)
- return 0
-
- val mediaToTake = min(costLeft, mediaAvailable)
- costLeft -= mediaToTake
- tile.media = mediaAvailable - mediaToTake
- }
- } else {
- val casterStack = this.ctx.caster.getItemInHand(this.ctx.castingHand)
- val casterMediaHolder = IXplatAbstractions.INSTANCE.findMediaHolder(casterStack)
- val casterHexHolder = IXplatAbstractions.INSTANCE.findHexHolder(casterStack)
- val hexHolderDrawsFromInventory = if (casterHexHolder != null) {
- if (casterMediaHolder != null) {
- val mediaAvailable = casterMediaHolder.withdrawMedia(-1, true)
- val mediaToTake = min(costLeft, mediaAvailable)
- if (!fake) casterMediaHolder.withdrawMedia(mediaToTake, false)
- costLeft -= mediaToTake
- }
- casterHexHolder.canDrawMediaFromInventory()
- } else {
- false
- }
-
- if (casterStack.`is`(HexTags.Items.STAVES) || hexHolderDrawsFromInventory) {
- val mediaSources = DiscoveryHandlers.collectMediaHolders(this)
- .sortedWith(Comparator(::compareMediaItem).reversed())
- for (source in mediaSources) {
- costLeft -= extractMedia(source, costLeft, simulate = fake)
- if (costLeft <= 0)
- break
- }
-
- if (allowOvercast && costLeft > 0) {
- // Cast from HP!
- val mediaToHealth = HexConfig.common().mediaToHealthRate()
- val healthToRemove = max(costLeft.toDouble() / mediaToHealth, 0.5)
- val mediaAbleToCastFromHP = this.ctx.caster.health * mediaToHealth
-
- val mediaToActuallyPayFor = min(mediaAbleToCastFromHP.toInt(), costLeft)
- costLeft -= if (!fake) {
- Mishap.trulyHurt(this.ctx.caster, HexDamageSources.OVERCAST, healthToRemove.toFloat())
-
- val actuallyTaken = Mth.ceil(mediaAbleToCastFromHP - (this.ctx.caster.health * mediaToHealth))
-
- HexAdvancementTriggers.OVERCAST_TRIGGER.trigger(this.ctx.caster, actuallyTaken)
- this.ctx.caster.awardStat(HexStatistics.MEDIA_OVERCAST, mediaCost - costLeft)
- actuallyTaken
- } else {
- mediaToActuallyPayFor
- }
- }
- }
- }
-
- if (!fake) {
- // this might be more than the media cost! for example if we waste a lot of media from an item
- this.ctx.caster.awardStat(HexStatistics.MEDIA_USED, mediaCost - costLeft)
- HexAdvancementTriggers.SPEND_MEDIA_TRIGGER.trigger(
- this.ctx.caster,
- mediaCost - costLeft,
- if (costLeft < 0) -costLeft else 0
- )
- }
-
- return if (fake) 0 else costLeft
- }
-
- fun getColorizer(): FrozenColorizer {
- if (this.prepackagedColorizer != null)
- return this.prepackagedColorizer
-
- return IXplatAbstractions.INSTANCE.getColorizer(this.ctx.caster)
- }
-
-
- fun serializeToNBT() = NBTBuilder {
- TAG_STACK %= stack.serializeToNBT()
-
- if (ravenmind != null)
- TAG_LOCAL %= HexIotaTypes.serialize(ravenmind!!)
- TAG_PAREN_COUNT %= parenCount
- TAG_ESCAPE_NEXT %= escapeNext
-
- TAG_PARENTHESIZED %= parenthesized.serializeToNBT()
-
- if (prepackagedColorizer != null)
- TAG_PREPACKAGED_COLORIZER %= prepackagedColorizer.serializeToNBT()
- }
-
-
- companion object {
- const val TAG_STACK = "stack"
- const val TAG_LOCAL = "local"
- const val TAG_PAREN_COUNT = "open_parens"
- const val TAG_PARENTHESIZED = "parenthesized"
- const val TAG_ESCAPE_NEXT = "escape_next"
- const val TAG_PREPACKAGED_COLORIZER = "prepackaged_colorizer"
-
- init {
- DiscoveryHandlers.addMediaHolderDiscoverer {
- it.ctx.caster.inventory.items
- .filter(::isMediaItem)
- .mapNotNull(IXplatAbstractions.INSTANCE::findMediaHolder)
- }
- DiscoveryHandlers.addMediaHolderDiscoverer {
- it.ctx.caster.inventory.armor
- .filter(::isMediaItem)
- .mapNotNull(IXplatAbstractions.INSTANCE::findMediaHolder)
- }
- DiscoveryHandlers.addMediaHolderDiscoverer {
- it.ctx.caster.inventory.offhand
- .filter(::isMediaItem)
- .mapNotNull(IXplatAbstractions.INSTANCE::findMediaHolder)
- }
- }
-
- @JvmStatic
- fun fromNBT(nbt: CompoundTag, ctx: CastingContext): CastingHarness {
- return try {
- val stack = mutableListOf()
- val stackTag = nbt.getList(TAG_STACK, Tag.TAG_COMPOUND)
- for (subtag in stackTag) {
- val datum = HexIotaTypes.deserialize(subtag.asCompound, ctx.world)
- stack.add(datum)
- }
-
- val ravenmind = if (nbt.contains(TAG_LOCAL))
- HexIotaTypes.deserialize(nbt.getCompound(TAG_LOCAL), ctx.world)
- else
- null
-
- val parenthesized = mutableListOf()
- val parenTag = nbt.getList(TAG_PARENTHESIZED, Tag.TAG_COMPOUND)
- for (subtag in parenTag) {
- parenthesized.add(HexIotaTypes.deserialize(subtag.downcast(CompoundTag.TYPE), ctx.world))
- }
-
- val parenCount = nbt.getInt(TAG_PAREN_COUNT)
- val escapeNext = nbt.getBoolean(TAG_ESCAPE_NEXT)
-
- val colorizer = if (nbt.contains(TAG_PREPACKAGED_COLORIZER)) {
- FrozenColorizer.fromNBT(nbt.getCompound(TAG_PREPACKAGED_COLORIZER))
- } else {
- null
- }
-
- CastingHarness(stack, ravenmind, parenCount, parenthesized, escapeNext, ctx, colorizer)
- } catch (exn: Exception) {
- CastingHarness(ctx)
- }
- }
- }
-
- data class TempControllerInfo(
- var earlyExit: Boolean,
- )
-
- data class CastResult(
- val continuation: SpellContinuation,
- val newData: FunctionalData?,
- val resolutionType: ResolvedPatternType,
- val sideEffects: List,
- val sound: EvalSound,
- )
-}
diff --git a/0.10.3/Common/src/main/java/at/petrak/hexcasting/api/spell/casting/ControllerInfo.kt b/0.10.3/Common/src/main/java/at/petrak/hexcasting/api/spell/casting/ControllerInfo.kt
deleted file mode 100644
index 64d60aba..00000000
--- a/0.10.3/Common/src/main/java/at/petrak/hexcasting/api/spell/casting/ControllerInfo.kt
+++ /dev/null
@@ -1,16 +0,0 @@
-package at.petrak.hexcasting.api.spell.casting
-
-import net.minecraft.nbt.CompoundTag
-
-/**
- * Information for the sake of the GUI.
- */
-data class ControllerInfo(
- val isStackClear: Boolean,
- val resolutionType: ResolvedPatternType,
- val stack: List,
- val parenthesized: List,
- val ravenmind: CompoundTag?,
- val parenCount: Int,
-)
-
diff --git a/0.10.3/Common/src/main/java/at/petrak/hexcasting/api/spell/casting/ResolvedPattern.kt b/0.10.3/Common/src/main/java/at/petrak/hexcasting/api/spell/casting/ResolvedPattern.kt
deleted file mode 100644
index 0413f64c..00000000
--- a/0.10.3/Common/src/main/java/at/petrak/hexcasting/api/spell/casting/ResolvedPattern.kt
+++ /dev/null
@@ -1,27 +0,0 @@
-package at.petrak.hexcasting.api.spell.casting
-
-import at.petrak.hexcasting.api.spell.math.HexCoord
-import at.petrak.hexcasting.api.spell.math.HexPattern
-import at.petrak.hexcasting.api.utils.NBTBuilder
-import net.minecraft.nbt.CompoundTag
-import java.util.*
-
-
-data class ResolvedPattern(val pattern: HexPattern, val origin: HexCoord, var type: ResolvedPatternType) {
- fun serializeToNBT() = NBTBuilder {
- "Pattern" %= pattern.serializeToNBT()
- "OriginQ" %= origin.q
- "OriginR" %= origin.r
- "Valid" %= type.name.lowercase(Locale.ROOT)
- }
-
- companion object {
- @JvmStatic
- fun fromNBT(tag: CompoundTag): ResolvedPattern {
- val pattern = HexPattern.fromNBT(tag.getCompound("Pattern"))
- val origin = HexCoord(tag.getInt("OriginQ"), tag.getInt("OriginR"))
- val valid = ResolvedPatternType.fromString(tag.getString("Valid"))
- return ResolvedPattern(pattern, origin, valid)
- }
- }
-}
diff --git a/0.10.3/Common/src/main/java/at/petrak/hexcasting/api/spell/casting/ResolvedPatternType.kt b/0.10.3/Common/src/main/java/at/petrak/hexcasting/api/spell/casting/ResolvedPatternType.kt
deleted file mode 100644
index 518f3cec..00000000
--- a/0.10.3/Common/src/main/java/at/petrak/hexcasting/api/spell/casting/ResolvedPatternType.kt
+++ /dev/null
@@ -1,18 +0,0 @@
-package at.petrak.hexcasting.api.spell.casting
-
-import at.petrak.hexcasting.api.utils.getSafe
-
-enum class ResolvedPatternType(val color: Int, val fadeColor: Int, val success: Boolean) {
- UNRESOLVED(0x7f7f7f, 0xcccccc, false),
- EVALUATED(0x7385de, 0xfecbe6, true),
- ESCAPED(0xddcc73, 0xfffae5, true),
- ERRORED(0xde6262, 0xffc7a0, false),
- INVALID(0xb26b6b, 0xcca88e, false);
-
- companion object {
- @JvmStatic
- fun fromString(key: String): ResolvedPatternType {
- return values().getSafe(key)
- }
- }
-}
diff --git a/0.10.3/Common/src/main/java/at/petrak/hexcasting/api/spell/casting/SpecialPatterns.java b/0.10.3/Common/src/main/java/at/petrak/hexcasting/api/spell/casting/SpecialPatterns.java
deleted file mode 100644
index e784b87a..00000000
--- a/0.10.3/Common/src/main/java/at/petrak/hexcasting/api/spell/casting/SpecialPatterns.java
+++ /dev/null
@@ -1,10 +0,0 @@
-package at.petrak.hexcasting.api.spell.casting;
-
-import at.petrak.hexcasting.api.spell.math.HexDir;
-import at.petrak.hexcasting.api.spell.math.HexPattern;
-
-public final class SpecialPatterns {
- public static final HexPattern INTROSPECTION = HexPattern.fromAngles("qqq", HexDir.WEST);
- public static final HexPattern RETROSPECTION = HexPattern.fromAngles("eee", HexDir.EAST);
- public static final HexPattern CONSIDERATION = HexPattern.fromAngles("qqqaw", HexDir.EAST);
-}
diff --git a/0.10.3/Common/src/main/java/at/petrak/hexcasting/api/spell/casting/SpellCircleContext.kt b/0.10.3/Common/src/main/java/at/petrak/hexcasting/api/spell/casting/SpellCircleContext.kt
deleted file mode 100644
index 404575f2..00000000
--- a/0.10.3/Common/src/main/java/at/petrak/hexcasting/api/spell/casting/SpellCircleContext.kt
+++ /dev/null
@@ -1,56 +0,0 @@
-package at.petrak.hexcasting.api.spell.casting
-
-import at.petrak.hexcasting.api.utils.NBTBuilder
-import net.minecraft.core.BlockPos
-import net.minecraft.nbt.CompoundTag
-import net.minecraft.world.phys.AABB
-
-/**
- * Optional field on a [CastingContext] for the spell circle
- */
-data class SpellCircleContext(val impetusPos: BlockPos, val aabb: AABB, val activatorAlwaysInRange: Boolean) {
- fun serializeToNBT() = NBTBuilder {
- TAG_IMPETUS_X %= impetusPos.x
- TAG_IMPETUS_Y %= impetusPos.y
- TAG_IMPETUS_Z %= impetusPos.z
-
- TAG_MIN_X %= aabb.minX
- TAG_MIN_Y %= aabb.minY
- TAG_MIN_Z %= aabb.minZ
- TAG_MAX_X %= aabb.maxX
- TAG_MAX_Y %= aabb.maxY
- TAG_MAX_Z %= aabb.maxZ
-
- TAG_PLAYER_ALWAYS_IN_RANGE %= activatorAlwaysInRange
- }
-
- companion object {
- const val TAG_IMPETUS_X = "impetus_x"
- const val TAG_IMPETUS_Y = "impetus_y"
- const val TAG_IMPETUS_Z = "impetus_z"
- const val TAG_MIN_X = "min_x"
- const val TAG_MIN_Y = "min_y"
- const val TAG_MIN_Z = "min_z"
- const val TAG_MAX_X = "max_x"
- const val TAG_MAX_Y = "max_y"
- const val TAG_MAX_Z = "max_z"
- const val TAG_PLAYER_ALWAYS_IN_RANGE = "player_always_in_range"
-
- fun fromNBT(tag: CompoundTag): SpellCircleContext {
- val impX = tag.getInt(TAG_IMPETUS_X)
- val impY = tag.getInt(TAG_IMPETUS_Y)
- val impZ = tag.getInt(TAG_IMPETUS_Z)
-
- val minX = tag.getDouble(TAG_MIN_X)
- val minY = tag.getDouble(TAG_MIN_Y)
- val minZ = tag.getDouble(TAG_MIN_Z)
- val maxX = tag.getDouble(TAG_MAX_X)
- val maxY = tag.getDouble(TAG_MAX_Y)
- val maxZ = tag.getDouble(TAG_MAX_Z)
-
- val playerAIR = tag.getBoolean(TAG_PLAYER_ALWAYS_IN_RANGE)
-
- return SpellCircleContext(BlockPos(impX, impY, impZ), AABB(minX, minY, minZ, maxX, maxY, maxZ), playerAIR)
- }
- }
-}
diff --git a/0.10.3/Common/src/main/java/at/petrak/hexcasting/api/spell/casting/eval/ContinuationFrame.kt b/0.10.3/Common/src/main/java/at/petrak/hexcasting/api/spell/casting/eval/ContinuationFrame.kt
deleted file mode 100644
index 4d768732..00000000
--- a/0.10.3/Common/src/main/java/at/petrak/hexcasting/api/spell/casting/eval/ContinuationFrame.kt
+++ /dev/null
@@ -1,78 +0,0 @@
-package at.petrak.hexcasting.api.spell.casting.eval
-
-import at.petrak.hexcasting.api.spell.SpellList
-import at.petrak.hexcasting.api.spell.casting.CastingHarness
-import at.petrak.hexcasting.api.spell.casting.CastingHarness.CastResult
-import at.petrak.hexcasting.api.spell.iota.Iota
-import at.petrak.hexcasting.api.utils.getList
-import at.petrak.hexcasting.api.utils.hasList
-import at.petrak.hexcasting.common.lib.hex.HexIotaTypes
-import net.minecraft.nbt.CompoundTag
-import net.minecraft.nbt.Tag
-import net.minecraft.server.level.ServerLevel
-
-// TODO this should probably be a registry too
-/**
- * A single frame of evaluation during the execution of a spell.
- *
- * Specifically, an evaluation will keep a stack of these frames.
- * An evaluation with no meta-eval will consist of a single [Evaluate(rest of the pats)] at all times.
- * When an Eval is invoked, we push Evaluate(pats) to the top of the stack.
- *
- * Evaluation is performed by repeatedly popping the top-most (i.e. innermost) frame from the stack,
- * then evaluating that frame (and possibly allowing it to push other frames (e.g. if it's a Hermes)).
- *
- * Once the stack of frames is empty, there are no more computations to run, so we're done.
- *
- */
-sealed interface ContinuationFrame {
- /**
- * Step the evaluation forward once.
- * For Evaluate, this consumes one pattern; for ForEach this queues the next iteration of the outer loop.
- * @return the result of this pattern step
- */
- fun evaluate(continuation: SpellContinuation, level: ServerLevel, harness: CastingHarness): CastResult
-
- /**
- * The OpHalt instruction wants us to "jump to" the END of the nearest meta-eval.
- * In other words, we should consume Evaluate frames until we hit a FinishEval or Thoth frame.
- * @return whether the break should stop here, alongside the new stack state (e.g. for finalizing a Thoth)
- */
- fun breakDownwards(stack: List): Pair>
-
- /**
- * Serializes this frame. Used for things like delays, where we pause execution.
- */
- fun serializeToNBT(): CompoundTag
-
- companion object {
- @JvmStatic
- fun fromNBT(tag: CompoundTag, world: ServerLevel): ContinuationFrame {
- return when (tag.getString("type")) {
- "eval" -> FrameEvaluate(
- HexIotaTypes.LIST.deserialize(
- tag.getList("patterns", Tag.TAG_COMPOUND),
- world
- )!!.list,
- tag.getBoolean("isMetacasting")
- )
-
- "end" -> FrameFinishEval
- "foreach" -> FrameForEach(
- HexIotaTypes.LIST.deserialize(tag.getList("data", Tag.TAG_COMPOUND), world)!!.list,
- HexIotaTypes.LIST.deserialize(tag.getList("code", Tag.TAG_COMPOUND), world)!!.list,
- if (tag.hasList("base", Tag.TAG_COMPOUND))
- HexIotaTypes.LIST.deserialize(tag.getList("base", Tag.TAG_COMPOUND), world)!!.list.toList()
- else
- null,
- HexIotaTypes.LIST.deserialize(
- tag.getList("accumulator", Tag.TAG_COMPOUND),
- world
- )!!.list.toMutableList()
- )
-
- else -> FrameEvaluate(SpellList.LList(0, listOf()), false)
- }
- }
- }
-}
diff --git a/0.10.3/Common/src/main/java/at/petrak/hexcasting/api/spell/casting/eval/FrameEvaluate.kt b/0.10.3/Common/src/main/java/at/petrak/hexcasting/api/spell/casting/eval/FrameEvaluate.kt
deleted file mode 100644
index f8052f2d..00000000
--- a/0.10.3/Common/src/main/java/at/petrak/hexcasting/api/spell/casting/eval/FrameEvaluate.kt
+++ /dev/null
@@ -1,51 +0,0 @@
-package at.petrak.hexcasting.api.spell.casting.eval
-
-import at.petrak.hexcasting.api.spell.SpellList
-import at.petrak.hexcasting.api.spell.casting.CastingHarness
-import at.petrak.hexcasting.api.spell.casting.ResolvedPatternType
-import at.petrak.hexcasting.api.spell.iota.Iota
-import at.petrak.hexcasting.api.utils.NBTBuilder
-import at.petrak.hexcasting.api.utils.serializeToNBT
-import at.petrak.hexcasting.common.lib.hex.HexEvalSounds
-import net.minecraft.server.level.ServerLevel
-
-/**
- * A list of patterns to be evaluated in sequence.
- * @property list the *remaining* list of patterns to be evaluated
- * @property isMetacasting only for sound effects, if this is being cast from a hermes / iris
- */
-data class FrameEvaluate(val list: SpellList, val isMetacasting: Boolean) : ContinuationFrame {
- // Discard this frame and keep discarding frames.
- override fun breakDownwards(stack: List) = false to stack
-
- // Step the list of patterns, evaluating a single one.
- override fun evaluate(
- continuation: SpellContinuation,
- level: ServerLevel,
- harness: CastingHarness
- ): CastingHarness.CastResult {
- // If there are patterns left...
- return if (list.nonEmpty) {
- val newCont = if (list.cdr.nonEmpty) { // yay TCO
- // ...enqueue the evaluation of the rest of the patterns...
- continuation.pushFrame(FrameEvaluate(list.cdr, this.isMetacasting))
- } else continuation
- // ...before evaluating the first one in the list.
- val update = harness.getUpdate(list.car, level, newCont)
- if (this.isMetacasting && update.sound != HexEvalSounds.MISHAP) {
- update.copy(sound = HexEvalSounds.HERMES)
- } else {
- update
- }
- } else {
- // If there are no patterns (e.g. empty Hermes), just return OK.
- CastingHarness.CastResult(continuation, null, ResolvedPatternType.EVALUATED, listOf(), HexEvalSounds.HERMES)
- }
- }
-
- override fun serializeToNBT() = NBTBuilder {
- "type" %= "evaluate"
- "patterns" %= list.serializeToNBT()
- "isMetacasting" %= isMetacasting
- }
-}
\ No newline at end of file
diff --git a/0.10.3/Common/src/main/java/at/petrak/hexcasting/api/spell/casting/eval/FrameFinishEval.kt b/0.10.3/Common/src/main/java/at/petrak/hexcasting/api/spell/casting/eval/FrameFinishEval.kt
deleted file mode 100644
index 05ec820b..00000000
--- a/0.10.3/Common/src/main/java/at/petrak/hexcasting/api/spell/casting/eval/FrameFinishEval.kt
+++ /dev/null
@@ -1,36 +0,0 @@
-package at.petrak.hexcasting.api.spell.casting.eval
-
-import at.petrak.hexcasting.api.spell.casting.CastingHarness
-import at.petrak.hexcasting.api.spell.casting.ResolvedPatternType
-import at.petrak.hexcasting.api.spell.iota.Iota
-import at.petrak.hexcasting.api.utils.NBTBuilder
-import at.petrak.hexcasting.common.lib.hex.HexEvalSounds
-import net.minecraft.server.level.ServerLevel
-
-/**
- * A stack marker representing the end of a Hermes evaluation,
- * so that we know when to stop removing frames during a Halt.
- */
-object FrameFinishEval : ContinuationFrame {
- // Don't do anything else to the stack, just finish the halt statement.
- override fun breakDownwards(stack: List) = true to stack
-
- // Evaluating it does nothing; it's only a boundary condition.
- override fun evaluate(
- continuation: SpellContinuation,
- level: ServerLevel,
- harness: CastingHarness
- ): CastingHarness.CastResult {
- return CastingHarness.CastResult(
- continuation,
- FunctionalData(harness.stack.toList(), 0, listOf(), false, harness.ravenmind),
- ResolvedPatternType.EVALUATED,
- listOf(),
- HexEvalSounds.NOTHING,
- )
- }
-
- override fun serializeToNBT() = NBTBuilder {
- "type" %= "end"
- }
-}
\ No newline at end of file
diff --git a/0.10.3/Common/src/main/java/at/petrak/hexcasting/api/spell/casting/eval/FrameForEach.kt b/0.10.3/Common/src/main/java/at/petrak/hexcasting/api/spell/casting/eval/FrameForEach.kt
deleted file mode 100644
index 40107399..00000000
--- a/0.10.3/Common/src/main/java/at/petrak/hexcasting/api/spell/casting/eval/FrameForEach.kt
+++ /dev/null
@@ -1,87 +0,0 @@
-package at.petrak.hexcasting.api.spell.casting.eval
-
-import at.petrak.hexcasting.api.spell.SpellList
-import at.petrak.hexcasting.api.spell.casting.CastingHarness
-import at.petrak.hexcasting.api.spell.casting.ResolvedPatternType
-import at.petrak.hexcasting.api.spell.iota.Iota
-import at.petrak.hexcasting.api.spell.iota.ListIota
-import at.petrak.hexcasting.api.utils.NBTBuilder
-import at.petrak.hexcasting.api.utils.serializeToNBT
-import at.petrak.hexcasting.common.lib.hex.HexEvalSounds
-import net.minecraft.server.level.ServerLevel
-
-/**
- * A frame representing all the state for a Thoth evaluation.
- * Pushed by an OpForEach.
- * @property first whether the input stack state is the first one (since we don't want to save the base-stack before any changes are made)
- * @property data list of *remaining* datums to ForEach over
- * @property code code to run per datum
- * @property baseStack the stack state at Thoth entry
- * @property acc concatenated list of final stack states after Thoth exit
- */
-data class FrameForEach(
- val data: SpellList,
- val code: SpellList,
- val baseStack: List?,
- val acc: MutableList
-) : ContinuationFrame {
-
- /** When halting, we add the stack state at halt to the stack accumulator, then return the original pre-Thoth stack, plus the accumulator. */
- override fun breakDownwards(stack: List): Pair> {
- val newStack = baseStack?.toMutableList() ?: mutableListOf()
- acc.addAll(stack)
- newStack.add(ListIota(acc))
- return true to newStack
- }
-
- /** Step the Thoth computation, enqueueing one code evaluation. */
- override fun evaluate(
- continuation: SpellContinuation,
- level: ServerLevel,
- harness: CastingHarness
- ): CastingHarness.CastResult {
- // If this isn't the very first Thoth step (i.e. no Thoth computations run yet)...
- val stack = if (baseStack == null) {
- // init stack to the harness stack...
- harness.stack.toList()
- } else {
- // else save the stack to the accumulator and reuse the saved base stack.
- acc.addAll(harness.stack)
- baseStack
- }
-
- // If we still have data to process...
- val (stackTop, newCont) = if (data.nonEmpty) {
- // Increment the evaluation depth,
- harness.ctx.incDepth()
- // push the next datum to the top of the stack,
- data.car to continuation
- // put the next Thoth object back on the stack for the next Thoth cycle,
- .pushFrame(FrameForEach(data.cdr, code, stack, acc))
- // and prep the Thoth'd code block for evaluation.
- .pushFrame(FrameEvaluate(code, true))
- } else {
- // Else, dump our final list onto the stack.
- ListIota(acc) to continuation
- }
- val tStack = stack.toMutableList()
- tStack.add(stackTop)
- // TODO: this means we could have Thoth casting do a different sound
- return CastingHarness.CastResult(
- newCont,
- FunctionalData(tStack, 0, listOf(), false, harness.ravenmind),
- ResolvedPatternType.EVALUATED,
- listOf(),
- HexEvalSounds.THOTH,
- )
- }
-
- override fun serializeToNBT() = NBTBuilder {
- "type" %= "foreach"
- "data" %= data.serializeToNBT()
- "code" %= code.serializeToNBT()
- if (baseStack != null)
- "base" %= baseStack.serializeToNBT()
- "accumulator" %= acc.serializeToNBT()
- }
-}
\ No newline at end of file
diff --git a/0.10.3/Common/src/main/java/at/petrak/hexcasting/api/spell/casting/eval/FunctionalData.kt b/0.10.3/Common/src/main/java/at/petrak/hexcasting/api/spell/casting/eval/FunctionalData.kt
deleted file mode 100644
index 32ad396e..00000000
--- a/0.10.3/Common/src/main/java/at/petrak/hexcasting/api/spell/casting/eval/FunctionalData.kt
+++ /dev/null
@@ -1,15 +0,0 @@
-package at.petrak.hexcasting.api.spell.casting.eval
-
-import at.petrak.hexcasting.api.spell.iota.Iota
-
-/**
- * A change to the data in a CastHarness after a pattern is drawn.
- */
-data class FunctionalData(
- val stack: List,
- val parenCount: Int,
- val parenthesized: List,
- val escapeNext: Boolean,
- val ravenmind: Iota?
-)
-
diff --git a/0.10.3/Common/src/main/java/at/petrak/hexcasting/api/spell/casting/eval/SpellContinuation.kt b/0.10.3/Common/src/main/java/at/petrak/hexcasting/api/spell/casting/eval/SpellContinuation.kt
deleted file mode 100644
index d956f6a0..00000000
--- a/0.10.3/Common/src/main/java/at/petrak/hexcasting/api/spell/casting/eval/SpellContinuation.kt
+++ /dev/null
@@ -1,12 +0,0 @@
-package at.petrak.hexcasting.api.spell.casting.eval
-
-/**
- * A continuation during the execution of a spell.
- */
-sealed interface SpellContinuation {
- object Done : SpellContinuation
-
- data class NotDone(val frame: ContinuationFrame, val next: SpellContinuation) : SpellContinuation
-
- fun pushFrame(frame: ContinuationFrame): SpellContinuation = NotDone(frame, this)
-}
diff --git a/0.10.3/Common/src/main/java/at/petrak/hexcasting/api/spell/casting/sideeffects/EvalSound.java b/0.10.3/Common/src/main/java/at/petrak/hexcasting/api/spell/casting/sideeffects/EvalSound.java
deleted file mode 100644
index 73e2ad71..00000000
--- a/0.10.3/Common/src/main/java/at/petrak/hexcasting/api/spell/casting/sideeffects/EvalSound.java
+++ /dev/null
@@ -1,18 +0,0 @@
-package at.petrak.hexcasting.api.spell.casting.sideeffects;
-
-import net.minecraft.sounds.SoundEvent;
-import org.jetbrains.annotations.Nullable;
-
-/**
- * The kind of sound that plays after a cast.
- *
- * @param sound the actual sound file
- * @param priority the priority of this sound. the sound with the highest priority in a given cast will be
- * playd.
- * shortcutMetacasting takes precedence over this.
- */
-public record EvalSound(@Nullable SoundEvent sound, int priority) {
- public EvalSound greaterOf(EvalSound that) {
- return (this.priority > that.priority) ? this : that;
- }
-}
diff --git a/0.10.3/Common/src/main/java/at/petrak/hexcasting/api/spell/casting/sideeffects/OperatorSideEffect.kt b/0.10.3/Common/src/main/java/at/petrak/hexcasting/api/spell/casting/sideeffects/OperatorSideEffect.kt
deleted file mode 100644
index e1aa04f7..00000000
--- a/0.10.3/Common/src/main/java/at/petrak/hexcasting/api/spell/casting/sideeffects/OperatorSideEffect.kt
+++ /dev/null
@@ -1,100 +0,0 @@
-package at.petrak.hexcasting.api.spell.casting.sideeffects
-
-import at.petrak.hexcasting.api.advancements.HexAdvancementTriggers
-import at.petrak.hexcasting.api.block.circle.BlockEntityAbstractImpetus
-import at.petrak.hexcasting.api.misc.FrozenColorizer
-import at.petrak.hexcasting.api.mod.HexStatistics
-import at.petrak.hexcasting.api.spell.ParticleSpray
-import at.petrak.hexcasting.api.spell.RenderedSpell
-import at.petrak.hexcasting.api.spell.casting.CastingHarness
-import at.petrak.hexcasting.api.spell.mishaps.Mishap
-import at.petrak.hexcasting.api.utils.asTranslatedComponent
-import at.petrak.hexcasting.common.lib.HexItems
-import net.minecraft.Util
-import net.minecraft.world.item.DyeColor
-import net.minecraft.world.item.ItemStack
-
-/**
- * Things that happen after a spell is cast.
- */
-sealed class OperatorSideEffect {
- /** Return whether to cancel all further [OperatorSideEffect] */
- abstract fun performEffect(harness: CastingHarness): Boolean
-
- data class RequiredEnlightenment(val awardStat: Boolean) : OperatorSideEffect() {
- override fun performEffect(harness: CastingHarness): Boolean {
- harness.ctx.caster.sendSystemMessage("hexcasting.message.cant_great_spell".asTranslatedComponent)
-
- if (awardStat)
- HexAdvancementTriggers.FAIL_GREAT_SPELL_TRIGGER.trigger(harness.ctx.caster)
-
- return true
- }
- }
-
- /** Try to cast a spell */
- data class AttemptSpell(
- val spell: RenderedSpell,
- val hasCastingSound: Boolean = true,
- val awardStat: Boolean = true
- ) :
- OperatorSideEffect() {
- override fun performEffect(harness: CastingHarness): Boolean {
- this.spell.cast(harness.ctx)
- if (awardStat)
- harness.ctx.caster.awardStat(HexStatistics.SPELLS_CAST)
-
- return false
- }
- }
-
- data class ConsumeMedia(val amount: Int) : OperatorSideEffect() {
- override fun performEffect(harness: CastingHarness): Boolean {
- val overcastOk = harness.ctx.canOvercast
- val leftoverMedia = harness.withdrawMedia(this.amount, overcastOk)
- if (leftoverMedia > 0 && !overcastOk) {
- harness.ctx.caster.sendSystemMessage("hexcasting.message.cant_overcast".asTranslatedComponent)
- }
- return leftoverMedia > 0
- }
- }
-
- data class Particles(val spray: ParticleSpray) : OperatorSideEffect() {
- override fun performEffect(harness: CastingHarness): Boolean {
- this.spray.sprayParticles(harness.ctx.world, harness.getColorizer())
-
- return false
- }
- }
-
- data class DoMishap(val mishap: Mishap, val errorCtx: Mishap.Context) : OperatorSideEffect() {
- override fun performEffect(harness: CastingHarness): Boolean {
- val msg = mishap.errorMessage(harness.ctx, errorCtx);
- if (harness.ctx.spellCircle != null) {
- val tile = harness.ctx.world.getBlockEntity(harness.ctx.spellCircle.impetusPos)
- if (tile is BlockEntityAbstractImpetus) {
- tile.lastMishap = msg
- tile.setChanged()
- }
- } else {
- // for now
- harness.ctx.caster.sendSystemMessage(msg)
- }
-
- val spray = mishap.particleSpray(harness.ctx)
- val color = mishap.accentColor(harness.ctx, errorCtx)
- spray.sprayParticles(harness.ctx.world, color)
- spray.sprayParticles(
- harness.ctx.world,
- FrozenColorizer(
- ItemStack(HexItems.DYE_COLORIZERS[DyeColor.RED]!!),
- Util.NIL_UUID
- )
- )
-
- mishap.execute(harness.ctx, errorCtx, harness.stack)
-
- return true
- }
- }
-}
diff --git a/0.10.3/Common/src/main/java/at/petrak/hexcasting/api/spell/iota/BooleanIota.java b/0.10.3/Common/src/main/java/at/petrak/hexcasting/api/spell/iota/BooleanIota.java
deleted file mode 100644
index 54e3f2be..00000000
--- a/0.10.3/Common/src/main/java/at/petrak/hexcasting/api/spell/iota/BooleanIota.java
+++ /dev/null
@@ -1,68 +0,0 @@
-package at.petrak.hexcasting.api.spell.iota;
-
-import at.petrak.hexcasting.api.utils.HexUtils;
-import at.petrak.hexcasting.common.lib.hex.HexIotaTypes;
-import net.minecraft.ChatFormatting;
-import net.minecraft.nbt.ByteTag;
-import net.minecraft.nbt.Tag;
-import net.minecraft.network.chat.Component;
-import net.minecraft.server.level.ServerLevel;
-import org.jetbrains.annotations.NotNull;
-import org.jetbrains.annotations.Nullable;
-
-public class BooleanIota extends Iota {
- public BooleanIota(boolean d) {
- super(HexIotaTypes.BOOLEAN, d);
- }
-
- public boolean getBool() {
- return (boolean) this.payload;
- }
-
- @Override
- public boolean isTruthy() {
- return this.getBool();
- }
-
- @Override
- public boolean toleratesOther(Iota that) {
- return typesMatch(this, that)
- && that instanceof BooleanIota b
- && this.getBool() == b.getBool();
- }
-
- @Override
- public @NotNull Tag serialize() {
- // there is no boolean tag :(
- return ByteTag.valueOf(this.getBool());
- }
-
- public static IotaType TYPE = new IotaType<>() {
- @Nullable
- @Override
- public BooleanIota deserialize(Tag tag, ServerLevel world) throws IllegalArgumentException {
- return BooleanIota.deserialize(tag);
- }
-
- @Override
- public Component display(Tag tag) {
- return BooleanIota.display(BooleanIota.deserialize(tag).getBool());
- }
-
- @Override
- public int color() {
- // We can't set red or green ... so do yellow, I guess
- return 0xff_ffff55;
- }
- };
-
- public static BooleanIota deserialize(Tag tag) throws IllegalArgumentException {
- var dtag = HexUtils.downcast(tag, ByteTag.TYPE);
- return new BooleanIota(dtag.getAsByte() != 0);
- }
-
- public static Component display(boolean b) {
- return Component.translatable(b ? "hexcasting.tooltip.boolean_true" : "hexcasting.tooltip.boolean_false")
- .withStyle(b ? ChatFormatting.DARK_GREEN : ChatFormatting.DARK_RED);
- }
-}
diff --git a/0.10.3/Common/src/main/java/at/petrak/hexcasting/api/spell/iota/DoubleIota.java b/0.10.3/Common/src/main/java/at/petrak/hexcasting/api/spell/iota/DoubleIota.java
deleted file mode 100644
index 288501f7..00000000
--- a/0.10.3/Common/src/main/java/at/petrak/hexcasting/api/spell/iota/DoubleIota.java
+++ /dev/null
@@ -1,71 +0,0 @@
-package at.petrak.hexcasting.api.spell.iota;
-
-import at.petrak.hexcasting.api.utils.HexUtils;
-import at.petrak.hexcasting.common.lib.hex.HexIotaTypes;
-import net.minecraft.ChatFormatting;
-import net.minecraft.nbt.DoubleTag;
-import net.minecraft.nbt.Tag;
-import net.minecraft.network.chat.Component;
-import net.minecraft.server.level.ServerLevel;
-import org.jetbrains.annotations.NotNull;
-import org.jetbrains.annotations.Nullable;
-
-public class DoubleIota extends Iota {
- public static final double TOLERANCE = 0.0001;
-
- public DoubleIota(double d) {
- super(HexIotaTypes.DOUBLE, d);
- }
-
- public double getDouble() {
- return HexUtils.fixNAN((Double) this.payload);
- }
-
- @Override
- public boolean isTruthy() {
- return this.getDouble() != 0.0;
- }
-
- @Override
- public boolean toleratesOther(Iota that) {
- return typesMatch(this, that)
- && that instanceof DoubleIota dd
- && tolerates(this.getDouble(), dd.getDouble());
- }
-
- public static boolean tolerates(double a, double b) {
- return Math.abs(a - b) < TOLERANCE;
- }
-
- @Override
- public @NotNull Tag serialize() {
- return DoubleTag.valueOf(this.getDouble());
- }
-
- public static IotaType TYPE = new IotaType<>() {
- @Nullable
- @Override
- public DoubleIota deserialize(Tag tag, ServerLevel world) throws IllegalArgumentException {
- return DoubleIota.deserialize(tag);
- }
-
- @Override
- public Component display(Tag tag) {
- return DoubleIota.display(DoubleIota.deserialize(tag).getDouble());
- }
-
- @Override
- public int color() {
- return 0xff_55ff55;
- }
- };
-
- public static DoubleIota deserialize(Tag tag) throws IllegalArgumentException {
- var dtag = HexUtils.downcast(tag, DoubleTag.TYPE);
- return new DoubleIota(dtag.getAsDouble());
- }
-
- public static Component display(double d) {
- return Component.literal(String.format("%.2f", d)).withStyle(ChatFormatting.GREEN);
- }
-}
diff --git a/0.10.3/Common/src/main/java/at/petrak/hexcasting/api/spell/iota/EntityIota.java b/0.10.3/Common/src/main/java/at/petrak/hexcasting/api/spell/iota/EntityIota.java
deleted file mode 100644
index 7c5b0be6..00000000
--- a/0.10.3/Common/src/main/java/at/petrak/hexcasting/api/spell/iota/EntityIota.java
+++ /dev/null
@@ -1,84 +0,0 @@
-package at.petrak.hexcasting.api.spell.iota;
-
-import at.petrak.hexcasting.api.utils.HexUtils;
-import at.petrak.hexcasting.common.lib.hex.HexIotaTypes;
-import net.minecraft.ChatFormatting;
-import net.minecraft.nbt.CompoundTag;
-import net.minecraft.nbt.NbtUtils;
-import net.minecraft.nbt.Tag;
-import net.minecraft.network.chat.Component;
-import net.minecraft.server.level.ServerLevel;
-import net.minecraft.world.entity.Entity;
-import org.jetbrains.annotations.NotNull;
-import org.jetbrains.annotations.Nullable;
-
-public class EntityIota extends Iota {
- public EntityIota(@NotNull Entity e) {
- super(HexIotaTypes.ENTITY, e);
- }
-
- public Entity getEntity() {
- return (Entity) this.payload;
- }
-
- @Override
- public boolean toleratesOther(Iota that) {
- return typesMatch(this, that)
- && that instanceof EntityIota dent
- && this.getEntity() == dent.getEntity();
- }
-
- @Override
- public boolean isTruthy() {
- return true;
- }
-
- @Override
- public @NotNull
- Tag serialize() {
- var out = new CompoundTag();
- out.putUUID("uuid", this.getEntity().getUUID());
- out.putString("name", Component.Serializer.toJson(this.getEntity().getName()));
- return out;
- }
-
- @Override
- public Component display() {
- return this.getEntity().getName().copy().withStyle(ChatFormatting.AQUA);
- }
-
- public static IotaType TYPE = new IotaType<>() {
- @Nullable
- @Override
- public EntityIota deserialize(Tag tag, ServerLevel world) throws IllegalArgumentException {
- var ctag = HexUtils.downcast(tag, CompoundTag.TYPE);
- Tag uuidTag = ctag.get("uuid");
- if (uuidTag == null) {
- return null;
- }
- var uuid = NbtUtils.loadUUID(uuidTag);
- var entity = world.getEntity(uuid);
- if (entity == null) {
- return null;
- }
- return new EntityIota(entity);
- }
-
- @Override
- public Component display(Tag tag) {
- if (!(tag instanceof CompoundTag ctag)) {
- return Component.translatable("hexcasting.spelldata.entity.whoknows");
- }
- if (!ctag.contains("name", Tag.TAG_STRING)) {
- return Component.translatable("hexcasting.spelldata.entity.whoknows");
- }
- var nameJson = ctag.getString("name");
- return Component.Serializer.fromJsonLenient(nameJson).withStyle(ChatFormatting.AQUA);
- }
-
- @Override
- public int color() {
- return 0xff_55ffff;
- }
- };
-}
diff --git a/0.10.3/Common/src/main/java/at/petrak/hexcasting/api/spell/iota/GarbageIota.java b/0.10.3/Common/src/main/java/at/petrak/hexcasting/api/spell/iota/GarbageIota.java
deleted file mode 100644
index 4d480f53..00000000
--- a/0.10.3/Common/src/main/java/at/petrak/hexcasting/api/spell/iota/GarbageIota.java
+++ /dev/null
@@ -1,63 +0,0 @@
-package at.petrak.hexcasting.api.spell.iota;
-
-import at.petrak.hexcasting.common.lib.hex.HexIotaTypes;
-import net.minecraft.ChatFormatting;
-import net.minecraft.nbt.CompoundTag;
-import net.minecraft.nbt.Tag;
-import net.minecraft.network.chat.Component;
-import net.minecraft.server.level.ServerLevel;
-import org.jetbrains.annotations.NotNull;
-import org.jetbrains.annotations.Nullable;
-
-import java.util.Random;
-
-/**
- * this is LITERALLY a copy of NullIota but I can't see how to do it any better, i hate java generics
- */
-public class GarbageIota extends Iota {
- private static final Object NULL_SUBSTITUTE = new Object();
-
- public static final Component DISPLAY = Component.literal("arimfexendrapuse")
- .withStyle(ChatFormatting.DARK_GRAY, ChatFormatting.OBFUSCATED);
-
- private static final Random RANDOM = new Random();
-
- public GarbageIota() {
- // We have to pass *something* here, but there's nothing that actually needs to go there,
- // so we just do this i guess
- super(HexIotaTypes.GARBAGE, NULL_SUBSTITUTE);
- }
-
- @Override
- public boolean isTruthy() {
- return false;
- }
-
- @Override
- public boolean toleratesOther(Iota that) {
- return typesMatch(this, that);
- }
-
- @Override
- public @NotNull Tag serialize() {
- return new CompoundTag();
- }
-
- public static IotaType TYPE = new IotaType<>() {
- @Nullable
- @Override
- public GarbageIota deserialize(Tag tag, ServerLevel world) throws IllegalArgumentException {
- return new GarbageIota();
- }
-
- @Override
- public Component display(Tag tag) {
- return DISPLAY;
- }
-
- @Override
- public int color() {
- return 0xff_505050;
- }
- };
-}
diff --git a/0.10.3/Common/src/main/java/at/petrak/hexcasting/api/spell/iota/Iota.java b/0.10.3/Common/src/main/java/at/petrak/hexcasting/api/spell/iota/Iota.java
deleted file mode 100644
index 90489361..00000000
--- a/0.10.3/Common/src/main/java/at/petrak/hexcasting/api/spell/iota/Iota.java
+++ /dev/null
@@ -1,56 +0,0 @@
-package at.petrak.hexcasting.api.spell.iota;
-
-import at.petrak.hexcasting.common.lib.hex.HexIotaTypes;
-import net.minecraft.nbt.Tag;
-import net.minecraft.network.chat.Component;
-import org.jetbrains.annotations.NotNull;
-
-public abstract class Iota {
- @NotNull
- protected final Object payload;
- @NotNull
- protected final IotaType> type;
-
- protected Iota(@NotNull IotaType> type, @NotNull Object payload) {
- this.type = type;
- this.payload = payload;
- }
-
- public @NotNull IotaType> getType() {
- return this.type;
- }
-
- abstract public boolean isTruthy();
-
- /**
- * Compare this to another object, within a tolerance.
- */
- abstract protected boolean toleratesOther(Iota that);
-
- /**
- * Serialize this under the {@code data} tag.
- *
- * You probably don't want to call this directly; use {@link HexIotaTypes#serialize}.
- */
- abstract public @NotNull Tag serialize();
-
- public Component display() {
- return this.type.display(this.serialize());
- }
-
- /**
- * Helper method to see if two iotas have the same type.
- */
- public static boolean typesMatch(Iota a, Iota b) {
- var resA = HexIotaTypes.REGISTRY.getKey(a.getType());
- var resB = HexIotaTypes.REGISTRY.getKey(b.getType());
- return resA != null && resA.equals(resB);
- }
-
- /**
- * Helper method to see if either iota tolerates the other.
- */
- public static boolean tolerates(Iota a, Iota b) {
- return a.toleratesOther(b) || b.toleratesOther(a);
- }
-}
diff --git a/0.10.3/Common/src/main/java/at/petrak/hexcasting/api/spell/iota/IotaType.java b/0.10.3/Common/src/main/java/at/petrak/hexcasting/api/spell/iota/IotaType.java
deleted file mode 100644
index f40f024c..00000000
--- a/0.10.3/Common/src/main/java/at/petrak/hexcasting/api/spell/iota/IotaType.java
+++ /dev/null
@@ -1,44 +0,0 @@
-package at.petrak.hexcasting.api.spell.iota;
-
-import at.petrak.hexcasting.common.lib.hex.HexIotaTypes;
-import net.minecraft.nbt.Tag;
-import net.minecraft.network.chat.Component;
-import net.minecraft.network.chat.TextColor;
-import net.minecraft.server.level.ServerLevel;
-
-import javax.annotation.Nullable;
-
-// Take notes from ForgeRegistryEntry
-public abstract class IotaType {
- /**
- * Spell datums are stored as such: {@code { "type": "modid:type", "datum": a_tag }}.
- *
- * The {@code type} key is given when registering the spell datum type; this method
- * deserializes the tag associated with {@code "datum"}.
- *
- * Returning {@code null} makes the resulting datum be {@link NullIota}.
- * Throwing an exception raises a mishap.
- */
- @Nullable
- public abstract T deserialize(Tag tag, ServerLevel world) throws IllegalArgumentException;
-
- /**
- * Get a display of this datum from the {@code data} tag, without the world.
- * This is for use on the client.
- */
- public abstract Component display(Tag tag);
-
- /**
- * Get the color associated with this datum type.
- */
- public abstract int color();
-
- /**
- * Get a display component that's the name of this iota type.
- */
- public Component typeName() {
- var key = HexIotaTypes.REGISTRY.getKey(this);
- return Component.translatable("hexcasting.iota." + key)
- .withStyle(style -> style.withColor(TextColor.fromRgb(color())));
- }
-}
diff --git a/0.10.3/Common/src/main/java/at/petrak/hexcasting/api/spell/iota/ListIota.java b/0.10.3/Common/src/main/java/at/petrak/hexcasting/api/spell/iota/ListIota.java
deleted file mode 100644
index 69f7f3a4..00000000
--- a/0.10.3/Common/src/main/java/at/petrak/hexcasting/api/spell/iota/ListIota.java
+++ /dev/null
@@ -1,117 +0,0 @@
-package at.petrak.hexcasting.api.spell.iota;
-
-import at.petrak.hexcasting.api.spell.SpellList;
-import at.petrak.hexcasting.api.utils.HexUtils;
-import at.petrak.hexcasting.common.lib.hex.HexIotaTypes;
-import net.minecraft.ChatFormatting;
-import net.minecraft.nbt.CompoundTag;
-import net.minecraft.nbt.ListTag;
-import net.minecraft.nbt.Tag;
-import net.minecraft.network.chat.Component;
-import net.minecraft.server.level.ServerLevel;
-import org.jetbrains.annotations.NotNull;
-import org.jetbrains.annotations.Nullable;
-
-import java.util.ArrayList;
-import java.util.List;
-
-/**
- * This is a wrapper for {@link SpellList}.
- */
-public class ListIota extends Iota {
- public ListIota(@NotNull SpellList list) {
- super(HexIotaTypes.LIST, list);
- }
-
- public ListIota(@NotNull List list) {
- this(new SpellList.LList(list));
- }
-
- public SpellList getList() {
- return (SpellList) this.payload;
- }
-
- @Override
- public boolean isTruthy() {
- return this.getList().getNonEmpty();
- }
-
- @Override
- public boolean toleratesOther(Iota that) {
- if (!typesMatch(this, that)) {
- return false;
- }
- var a = this.getList();
- if (!(that instanceof ListIota list)) {
- return false;
- }
- var b = list.getList();
-
- SpellList.SpellListIterator aIter = a.iterator(), bIter = b.iterator();
- for (; ; ) {
- if (!aIter.hasNext() && !bIter.hasNext()) {
- // we ran out together!
- return true;
- }
- if (aIter.hasNext() != bIter.hasNext()) {
- // one remains full before the other
- return false;
- }
- Iota x = aIter.next(), y = bIter.next();
- if (!Iota.tolerates(x, y)) {
- return false;
- }
- }
- }
-
- @Override
- public @NotNull Tag serialize() {
- var out = new ListTag();
- for (var subdatum : this.getList()) {
- out.add(HexIotaTypes.serialize(subdatum));
- }
- return out;
- }
-
- public static IotaType TYPE = new IotaType<>() {
- @Nullable
- @Override
- public ListIota deserialize(Tag tag, ServerLevel world) throws IllegalArgumentException {
- var listTag = HexUtils.downcast(tag, ListTag.TYPE);
- var out = new ArrayList(listTag.size());
-
- for (var sub : listTag) {
- var csub = HexUtils.downcast(sub, CompoundTag.TYPE);
- var subiota = HexIotaTypes.deserialize(csub, world);
- if (subiota == null) {
- return null;
- }
- out.add(subiota);
- }
-
- return new ListIota(out);
- }
-
- @Override
- public Component display(Tag tag) {
- var out = Component.empty();
- var list = HexUtils.downcast(tag, ListTag.TYPE);
- for (int i = 0; i < list.size(); i++) {
- Tag sub = list.get(i);
- var csub = HexUtils.downcast(sub, CompoundTag.TYPE);
-
- out.append(HexIotaTypes.getDisplay(csub));
-
- if (i < list.size() - 1) {
- out.append(", ");
- }
- }
- return Component.translatable("hexcasting.tooltip.list_contents", out).withStyle(ChatFormatting.DARK_PURPLE);
- }
-
- @Override
- public int color() {
- return 0xff_aa00aa;
- }
- };
-}
diff --git a/0.10.3/Common/src/main/java/at/petrak/hexcasting/api/spell/iota/NullIota.java b/0.10.3/Common/src/main/java/at/petrak/hexcasting/api/spell/iota/NullIota.java
deleted file mode 100644
index 30ab1b2b..00000000
--- a/0.10.3/Common/src/main/java/at/petrak/hexcasting/api/spell/iota/NullIota.java
+++ /dev/null
@@ -1,59 +0,0 @@
-package at.petrak.hexcasting.api.spell.iota;
-
-import at.petrak.hexcasting.common.lib.hex.HexIotaTypes;
-import net.minecraft.ChatFormatting;
-import net.minecraft.nbt.CompoundTag;
-import net.minecraft.nbt.Tag;
-import net.minecraft.network.chat.Component;
-import net.minecraft.server.level.ServerLevel;
-import org.jetbrains.annotations.NotNull;
-import org.jetbrains.annotations.Nullable;
-
-/**
- * An iota with no data associated with it.
- */
-public class NullIota extends Iota {
- private static final Object NULL_SUBSTITUTE = new Object();
-
- public static final Component DISPLAY =
- Component.translatable("hexcasting.tooltip.null_iota").withStyle(ChatFormatting.GRAY);
-
- public NullIota() {
- // We have to pass *something* here, but there's nothing that actually needs to go there,
- // so we just do this i guess
- super(HexIotaTypes.NULL, NULL_SUBSTITUTE);
- }
-
- @Override
- public boolean isTruthy() {
- return false;
- }
-
- @Override
- public boolean toleratesOther(Iota that) {
- return typesMatch(this, that);
- }
-
- @Override
- public @NotNull Tag serialize() {
- return new CompoundTag();
- }
-
- public static IotaType TYPE = new IotaType<>() {
- @Nullable
- @Override
- public NullIota deserialize(Tag tag, ServerLevel world) throws IllegalArgumentException {
- return new NullIota();
- }
-
- @Override
- public Component display(Tag tag) {
- return DISPLAY;
- }
-
- @Override
- public int color() {
- return 0xff_aaaaaa;
- }
- };
-}
diff --git a/0.10.3/Common/src/main/java/at/petrak/hexcasting/api/spell/iota/PatternIota.java b/0.10.3/Common/src/main/java/at/petrak/hexcasting/api/spell/iota/PatternIota.java
deleted file mode 100644
index f7a28597..00000000
--- a/0.10.3/Common/src/main/java/at/petrak/hexcasting/api/spell/iota/PatternIota.java
+++ /dev/null
@@ -1,82 +0,0 @@
-package at.petrak.hexcasting.api.spell.iota;
-
-import at.petrak.hexcasting.api.spell.math.HexPattern;
-import at.petrak.hexcasting.api.utils.HexUtils;
-import at.petrak.hexcasting.common.lib.hex.HexIotaTypes;
-import net.minecraft.ChatFormatting;
-import net.minecraft.nbt.CompoundTag;
-import net.minecraft.nbt.Tag;
-import net.minecraft.network.chat.Component;
-import net.minecraft.server.level.ServerLevel;
-import org.jetbrains.annotations.NotNull;
-import org.jetbrains.annotations.Nullable;
-
-public class PatternIota extends Iota {
- public PatternIota(@NotNull HexPattern pattern) {
- super(HexIotaTypes.PATTERN, pattern);
- }
-
- public HexPattern getPattern() {
- return (HexPattern) this.payload;
- }
-
- protected PatternIota(@NotNull IotaType> type, @NotNull Object payload) {
- super(type, payload);
- }
-
- @Override
- public boolean isTruthy() {
- return true;
- }
-
- @Override
- public boolean toleratesOther(Iota that) {
- return typesMatch(this, that)
- && that instanceof PatternIota piota
- && this.getPattern().anglesSignature().equals(piota.getPattern().anglesSignature());
- }
-
- @Override
- public @NotNull Tag serialize() {
- return this.getPattern().serializeToNBT();
- }
-
-
- public static IotaType TYPE = new IotaType<>() {
- @Nullable
- @Override
- public PatternIota deserialize(Tag tag, ServerLevel world) throws IllegalArgumentException {
- return PatternIota.deserialize(tag);
- }
-
- @Override
- public Component display(Tag tag) {
- return PatternIota.display(PatternIota.deserialize(tag).getPattern());
- }
-
- @Override
- public int color() {
- return 0xff_ffaa00;
- }
- };
-
- public static PatternIota deserialize(Tag tag) throws IllegalArgumentException {
- var patTag = HexUtils.downcast(tag, CompoundTag.TYPE);
- HexPattern pat = HexPattern.fromNBT(patTag);
- return new PatternIota(pat);
- }
-
- public static Component display(HexPattern pat) {
- var bob = new StringBuilder();
- bob.append(pat.getStartDir());
-
- var sig = pat.anglesSignature();
- if (!sig.isEmpty()) {
- bob.append(" ");
- bob.append(sig);
- }
- return Component.translatable("hexcasting.tooltip.pattern_iota",
- Component.literal(bob.toString()).withStyle(ChatFormatting.WHITE))
- .withStyle(ChatFormatting.GOLD);
- }
-}
diff --git a/0.10.3/Common/src/main/java/at/petrak/hexcasting/api/spell/iota/Vec3Iota.java b/0.10.3/Common/src/main/java/at/petrak/hexcasting/api/spell/iota/Vec3Iota.java
deleted file mode 100644
index 1babae96..00000000
--- a/0.10.3/Common/src/main/java/at/petrak/hexcasting/api/spell/iota/Vec3Iota.java
+++ /dev/null
@@ -1,78 +0,0 @@
-package at.petrak.hexcasting.api.spell.iota;
-
-import at.petrak.hexcasting.api.utils.HexUtils;
-import at.petrak.hexcasting.common.lib.hex.HexIotaTypes;
-import net.minecraft.ChatFormatting;
-import net.minecraft.nbt.LongArrayTag;
-import net.minecraft.nbt.Tag;
-import net.minecraft.network.chat.Component;
-import net.minecraft.server.level.ServerLevel;
-import net.minecraft.world.phys.Vec3;
-import org.jetbrains.annotations.NotNull;
-import org.jetbrains.annotations.Nullable;
-
-public class Vec3Iota extends Iota {
- public Vec3Iota(@NotNull Vec3 datum) {
- super(HexIotaTypes.VEC3, datum);
- }
-
- public Vec3 getVec3() {
- var v = (Vec3) this.payload;
- return new Vec3(
- HexUtils.fixNAN(v.x),
- HexUtils.fixNAN(v.y),
- HexUtils.fixNAN(v.z)
- );
- }
-
- @Override
- public boolean isTruthy() {
- var v = this.getVec3();
- return v.x != 0.0 && v.y != 0.0 && v.z != 0.0;
- }
-
- @Override
- public boolean toleratesOther(Iota that) {
- return typesMatch(this, that)
- && that instanceof Vec3Iota viota
- && this.getVec3().distanceToSqr(viota.getVec3()) < DoubleIota.TOLERANCE * DoubleIota.TOLERANCE;
- }
-
- @Override
- public @NotNull Tag serialize() {
- return HexUtils.serializeToNBT(this.getVec3());
- }
-
- public static IotaType TYPE = new IotaType<>() {
- @Nullable
- @Override
- public Vec3Iota deserialize(Tag tag, ServerLevel world) throws IllegalArgumentException {
- return Vec3Iota.deserialize(tag);
- }
-
- @Override
- public Component display(Tag tag) {
- return Vec3Iota.display(Vec3Iota.deserialize(tag).getVec3());
- }
-
- @Override
- public int color() {
- return 0xff_ff3030;
- }
- };
-
- public static Vec3Iota deserialize(Tag tag) throws IllegalArgumentException {
- var lat = HexUtils.downcast(tag, LongArrayTag.TYPE);
- var vec = HexUtils.vecFromNBT(lat.getAsLongArray());
- return new Vec3Iota(vec);
- }
-
- public static Component display(double x, double y, double z) {
- return Component.literal(String.format("(%.2f, %.2f, %.2f)", x, y, z))
- .withStyle(ChatFormatting.RED);
- }
-
- public static Component display(Vec3 v) {
- return display(v.x, v.y, v.z);
- }
-}
diff --git a/0.10.3/Common/src/main/java/at/petrak/hexcasting/api/spell/math/EulerPathFinder.kt b/0.10.3/Common/src/main/java/at/petrak/hexcasting/api/spell/math/EulerPathFinder.kt
deleted file mode 100644
index efdbe780..00000000
--- a/0.10.3/Common/src/main/java/at/petrak/hexcasting/api/spell/math/EulerPathFinder.kt
+++ /dev/null
@@ -1,88 +0,0 @@
-package at.petrak.hexcasting.api.spell.math
-
-import at.petrak.hexcasting.api.HexAPI
-import java.util.*
-import kotlin.random.Random
-
-object EulerPathFinder {
- /**
- * Find an alternative way to draw the given pattern, based on a random seed.
- */
- @JvmStatic
- @JvmOverloads
- fun findAltDrawing(original: HexPattern, seed: Long, rule: (HexPattern) -> Boolean = { true }): HexPattern {
- // http://www.graph-magics.com/articles/euler.php
-
- val rand = Random(seed)
-
- // Don't try for too long, in case all paths are exhausted.
- // Unlikely to ever actually reach this limit, and can only happen if the same pattern
- // is registered both as a Great Pattern and as a special handler or regular pattern,
- // or if the random seed has some sort of strange repeating property to it.
- var iterationsLeft = 100
- var path: HexPattern
- while (iterationsLeft > 0) {
- iterationsLeft--
- path = walkPath(original, rand)
- if (rule(path)) {
- return path
- }
- }
-
- HexAPI.LOGGER.warn("Didn't find alternate path for {} in time", original)
- return original
- }
-
- private fun walkPath(original: HexPattern, rand: Random): HexPattern {
- val graph = toGraph(original)
- val oddNodes = graph.filter { (_, dirs) -> dirs.size % 2 == 1 }
- var current: HexCoord = when (oddNodes.size) {
- // An euler-walkable graph must have 0 odd nodes and start anywhere...
- 0 -> graph.keys.random(rand)
- // or two, and start at one of them
- 2 -> oddNodes.keys.random(rand)
- else -> throw IllegalStateException()
- }
-
- val stack = Stack()
- val out = mutableListOf()
- do {
- val exits = graph[current]!!
- if (exits.isEmpty()) {
- out.add(current)
- current = stack.pop()
- } else {
- stack.push(current)
- // This is where the random part happens, mostly
- val burnDir = exits.random(rand)
- exits.remove(burnDir)
- graph[current + burnDir]?.remove(burnDir * HexAngle.BACK)
- current += burnDir
- }
- } while (graph[current]?.isNotEmpty() == true || stack.isNotEmpty())
- out.add(current)
-
- val dirs = out.zipWithNext { a, b -> a.immediateDelta(b)!! }
- val angles = dirs.zipWithNext { a, b -> b.angleFrom(a) }
- return HexPattern(dirs[0], angles.toMutableList())
- }
-
- private fun toGraph(pat: HexPattern): HashMap> {
- val graph = HashMap>()
-
- var compass: HexDir = pat.startDir
- var cursor = HexCoord.Origin
- for (a in pat.angles) {
- // i hate kotlin
- graph.getOrPut(cursor) { EnumSet.noneOf(HexDir::class.java) }.add(compass)
- graph.getOrPut(cursor + compass) { EnumSet.noneOf(HexDir::class.java) }.add(compass * HexAngle.BACK)
-
- cursor += compass
- compass *= a
- }
- graph.getOrPut(cursor) { EnumSet.noneOf(HexDir::class.java) }.add(compass)
- graph.getOrPut(cursor + compass) { EnumSet.noneOf(HexDir::class.java) }.add(compass * HexAngle.BACK)
-
- return graph
- }
-}
diff --git a/0.10.3/Common/src/main/java/at/petrak/hexcasting/api/spell/math/HexAngle.kt b/0.10.3/Common/src/main/java/at/petrak/hexcasting/api/spell/math/HexAngle.kt
deleted file mode 100644
index 4565329b..00000000
--- a/0.10.3/Common/src/main/java/at/petrak/hexcasting/api/spell/math/HexAngle.kt
+++ /dev/null
@@ -1,8 +0,0 @@
-package at.petrak.hexcasting.api.spell.math
-
-enum class HexAngle {
- FORWARD, RIGHT, RIGHT_BACK, BACK, LEFT_BACK, LEFT;
-
- fun rotatedBy(a: HexAngle) = values()[(this.ordinal + a.ordinal) % values().size]
- operator fun times(a: HexAngle) = this.rotatedBy(a)
-}
diff --git a/0.10.3/Common/src/main/java/at/petrak/hexcasting/api/spell/math/HexCoord.kt b/0.10.3/Common/src/main/java/at/petrak/hexcasting/api/spell/math/HexCoord.kt
deleted file mode 100644
index 82506f0e..00000000
--- a/0.10.3/Common/src/main/java/at/petrak/hexcasting/api/spell/math/HexCoord.kt
+++ /dev/null
@@ -1,62 +0,0 @@
-package at.petrak.hexcasting.api.spell.math
-
-import kotlin.math.abs
-import kotlin.math.max
-import kotlin.math.min
-
-/**
- * Uses axial coordinates as per https://www.redblobgames.com/grids/hexagons/
- */
-data class HexCoord(val q: Int, val r: Int) {
- fun s(): Int = this.q - this.r
-
- fun shiftedBy(x: HexCoord): HexCoord = HexCoord(this.q + x.q, this.r + x.r)
-
- fun shiftedBy(d: HexDir) = this.shiftedBy(d.asDelta())
-
- fun delta(x: HexCoord): HexCoord = HexCoord(this.q - x.q, this.r - x.r)
-
- operator fun plus(x: HexCoord) = this.shiftedBy(x)
- operator fun plus(d: HexDir) = this.shiftedBy(d)
- operator fun minus(x: HexCoord) = this.delta(x)
-
- fun distanceTo(x: HexCoord) =
- (abs(this.q - x.q) + abs(this.q + this.r - x.q - x.r) + abs(this.r - x.r)) / 2
-
- fun rangeAround(radius: Int): Iterator = RingIter(this, radius)
-
- /** Get the direction that would bring you from this to its neighbor */
- fun immediateDelta(neighbor: HexCoord): HexDir? =
- when (neighbor - this) {
- HexCoord(1, 0) -> HexDir.EAST
- HexCoord(0, 1) -> HexDir.SOUTH_EAST
- HexCoord(-1, 1) -> HexDir.SOUTH_WEST
- HexCoord(-1, 0) -> HexDir.WEST
- HexCoord(0, -1) -> HexDir.NORTH_WEST
- HexCoord(1, -1) -> HexDir.NORTH_EAST
- else -> null
- }
-
- // https://docs.rs/hex2d/1.1.0/src/hex2d/lib.rs.html#785
- private class RingIter(val center: HexCoord, val radius: Int) : Iterator {
- var q: Int = -radius
- var r: Int = max(-radius, 0)
-
- override fun hasNext(): Boolean = r <= radius + min(0, -q) || q < radius
-
- override fun next(): HexCoord {
- if (r > radius + min(0, -q)) {
- q++
- r = -radius + max(0, -q)
- }
- val out = HexCoord(center.q + q, center.r + r)
- r++
- return out
- }
- }
-
- companion object {
- @JvmStatic
- val Origin = HexCoord(0, 0)
- }
-}
diff --git a/0.10.3/Common/src/main/java/at/petrak/hexcasting/api/spell/math/HexDir.kt b/0.10.3/Common/src/main/java/at/petrak/hexcasting/api/spell/math/HexDir.kt
deleted file mode 100644
index afef8666..00000000
--- a/0.10.3/Common/src/main/java/at/petrak/hexcasting/api/spell/math/HexDir.kt
+++ /dev/null
@@ -1,34 +0,0 @@
-package at.petrak.hexcasting.api.spell.math
-
-import at.petrak.hexcasting.api.utils.getSafe
-
-enum class HexDir {
- NORTH_EAST, EAST, SOUTH_EAST, SOUTH_WEST, WEST, NORTH_WEST;
-
- fun rotatedBy(a: HexAngle): HexDir =
- values()[(this.ordinal + a.ordinal).mod(values().size)]
-
- operator fun times(a: HexAngle) = this.rotatedBy(a)
-
- fun angleFrom(other: HexDir): HexAngle =
- HexAngle.values()[(this.ordinal - other.ordinal).mod(HexAngle.values().size)]
-
- operator fun minus(other: HexDir) = this.angleFrom(other)
-
- fun asDelta(): HexCoord =
- when (this) {
- NORTH_EAST -> HexCoord(1, -1)
- EAST -> HexCoord(1, 0)
- SOUTH_EAST -> HexCoord(0, 1)
- SOUTH_WEST -> HexCoord(-1, 1)
- WEST -> HexCoord(-1, 0)
- NORTH_WEST -> HexCoord(0, -1)
- }
-
- companion object {
- @JvmStatic
- fun fromString(key: String): HexDir {
- return values().getSafe(key, WEST)
- }
- }
-}
diff --git a/0.10.3/Common/src/main/java/at/petrak/hexcasting/api/spell/math/HexPattern.kt b/0.10.3/Common/src/main/java/at/petrak/hexcasting/api/spell/math/HexPattern.kt
deleted file mode 100644
index d05d6874..00000000
--- a/0.10.3/Common/src/main/java/at/petrak/hexcasting/api/spell/math/HexPattern.kt
+++ /dev/null
@@ -1,171 +0,0 @@
-package at.petrak.hexcasting.api.spell.math
-
-import at.petrak.hexcasting.api.utils.NBTBuilder
-import at.petrak.hexcasting.api.utils.coordToPx
-import at.petrak.hexcasting.api.utils.findCenter
-import at.petrak.hexcasting.api.utils.getSafe
-import net.minecraft.nbt.CompoundTag
-import net.minecraft.nbt.Tag
-import net.minecraft.world.phys.Vec2
-
-/**
- * Sequence of angles to define a pattern traced.
- */
-data class HexPattern(public val startDir: HexDir, public val angles: MutableList = arrayListOf()) {
- /**
- * @return True if it successfully appended, false if not.
- */
- fun tryAppendDir(newDir: HexDir): Boolean {
- // Two restrictions:
- // - No adding a pos/dir pair we previously added
- // - No backtracking
- val linesSeen = mutableSetOf>()
-
- var compass = this.startDir
- var cursor = HexCoord.Origin
- for (a in this.angles) {
- linesSeen.add(cursor to compass)
- // Line from here to there also blocks there to here
- linesSeen.add(cursor + compass to compass.rotatedBy(HexAngle.BACK))
- cursor += compass
- compass *= a
- }
- cursor += compass
-
- val potentialNewLine = cursor to newDir
- if (potentialNewLine in linesSeen) return false
- val nextAngle = newDir - compass
- if (nextAngle == HexAngle.BACK) return false
-
- this.angles.add(nextAngle)
- return true
- }
-
- @JvmOverloads
- fun positions(start: HexCoord = HexCoord.Origin): List {
- val out: ArrayList = ArrayList(this.angles.size + 2)
- out.add(start)
- var compass: HexDir = this.startDir
- var cursor = start
- for (a in this.angles) {
- cursor += compass
- out.add(cursor)
- compass *= a
- }
- out.add(cursor + compass)
- return out
- }
-
- fun directions(): List {
- val out = ArrayList(this.angles.size + 1)
- out.add(this.startDir)
-
- var compass: HexDir = this.startDir
- for (a in this.angles) {
- compass *= a
- out.add(compass)
- }
- return out
- }
-
- fun finalDir(): HexDir =
- this.angles.fold(this.startDir) { acc, angle -> acc * angle }
-
-
- fun serializeToNBT() = NBTBuilder {
- TAG_START_DIR %= byte(startDir.ordinal)
- TAG_ANGLES %= byteArray(angles.map(HexAngle::ordinal))
- }
-
- // Terrible shorthand method for easy matching
- fun anglesSignature(): String {
- return buildString {
- for (a in this@HexPattern.angles) {
- append(
- when (a) {
- HexAngle.FORWARD -> "w"
- HexAngle.RIGHT -> "e"
- HexAngle.RIGHT_BACK -> "d"
- HexAngle.BACK -> "s"
- HexAngle.LEFT_BACK -> "a"
- HexAngle.LEFT -> "q"
- }
- )
- }
- }
- }
-
- /**
- * Return the "center of mass" of the pattern.
- * Drawing the pattern with the returned vector as the origin will center the pattern around it.
- */
- @JvmOverloads
- fun getCenter(hexRadius: Float, origin: HexCoord = HexCoord.Origin): Vec2 {
- val originPx = coordToPx(origin, hexRadius, Vec2.ZERO)
- val points = this.toLines(hexRadius, originPx)
- return findCenter(points)
- }
-
-
- /**
- * Convert a hex pattern into a sequence of straight linePoints spanning its points.
- */
- fun toLines(hexSize: Float, origin: Vec2): List =
- this.positions().map { coordToPx(it, hexSize, origin) }
-
- fun sigsEqual(that: HexPattern) = this.anglesSignature() == that.anglesSignature()
-
- override fun toString(): String = buildString {
- append("HexPattern[")
- append(this@HexPattern.startDir)
- append(", ")
- append(this@HexPattern.anglesSignature())
- append("]")
- }
-
- companion object {
- const val TAG_START_DIR = "start_dir"
- const val TAG_ANGLES = "angles"
-
- @JvmStatic
- fun isPattern(tag: CompoundTag): Boolean {
- return tag.contains(TAG_START_DIR, Tag.TAG_ANY_NUMERIC.toInt()) && tag.contains(
- TAG_ANGLES,
- Tag.TAG_BYTE_ARRAY.toInt()
- )
- }
-
- @JvmStatic
- fun fromNBT(tag: CompoundTag): HexPattern {
- val startDir = HexDir.values().getSafe(tag.getByte(TAG_START_DIR))
- val angles = tag.getByteArray(TAG_ANGLES).map(HexAngle.values()::getSafe)
- return HexPattern(startDir, angles.toMutableList())
- }
-
- @JvmStatic
- fun fromAngles(signature: String, startDir: HexDir): HexPattern {
- val out = HexPattern(startDir)
- var compass = startDir
-
- for ((idx, c) in signature.withIndex()) {
- val angle = when (c) {
- 'w' -> HexAngle.FORWARD
- 'e' -> HexAngle.RIGHT
- 'd' -> HexAngle.RIGHT_BACK
- // for completeness ...
- 's' -> HexAngle.BACK
- 'a' -> HexAngle.LEFT_BACK
- 'q' -> HexAngle.LEFT
- else -> throw IllegalArgumentException("Cannot match $c at idx $idx to a direction")
- }
- compass *= angle
- val success = out.tryAppendDir(compass)
- if (!success) {
- throw IllegalStateException("Adding the angle $c at index $idx made the pattern invalid by looping back on itself")
- }
- }
- return out
- }
-
- }
-}
diff --git a/0.10.3/Common/src/main/java/at/petrak/hexcasting/api/spell/mishaps/Mishap.kt b/0.10.3/Common/src/main/java/at/petrak/hexcasting/api/spell/mishaps/Mishap.kt
deleted file mode 100644
index 44ee54f9..00000000
--- a/0.10.3/Common/src/main/java/at/petrak/hexcasting/api/spell/mishaps/Mishap.kt
+++ /dev/null
@@ -1,142 +0,0 @@
-package at.petrak.hexcasting.api.spell.mishaps
-
-import at.petrak.hexcasting.api.misc.FrozenColorizer
-import at.petrak.hexcasting.api.mod.HexTags
-import at.petrak.hexcasting.api.spell.Action
-import at.petrak.hexcasting.api.spell.ParticleSpray
-import at.petrak.hexcasting.api.spell.casting.CastingContext
-import at.petrak.hexcasting.api.spell.casting.ResolvedPatternType
-import at.petrak.hexcasting.api.spell.iota.Iota
-import at.petrak.hexcasting.api.spell.math.HexPattern
-import at.petrak.hexcasting.api.utils.asTranslatedComponent
-import at.petrak.hexcasting.api.utils.lightPurple
-import at.petrak.hexcasting.common.lib.HexItems
-import at.petrak.hexcasting.ktxt.*
-import at.petrak.hexcasting.xplat.IXplatAbstractions
-import net.minecraft.Util
-import net.minecraft.core.BlockPos
-import net.minecraft.network.chat.Component
-import net.minecraft.world.InteractionHand
-import net.minecraft.world.damagesource.DamageSource
-import net.minecraft.world.entity.LivingEntity
-import net.minecraft.world.entity.item.ItemEntity
-import net.minecraft.world.item.DyeColor
-import net.minecraft.world.item.ItemStack
-import net.minecraft.world.phys.Vec3
-
-abstract class Mishap : Throwable() {
- /** Mishaps spray half-red, half-this-color. */
- abstract fun accentColor(ctx: CastingContext, errorCtx: Context): FrozenColorizer
-
- open fun particleSpray(ctx: CastingContext): ParticleSpray {
- return ParticleSpray(ctx.position.add(0.0, 0.2, 0.0), Vec3(0.0, 2.0, 0.0), 0.2, Math.PI / 4, 40)
- }
-
- open fun resolutionType(ctx: CastingContext): ResolvedPatternType = ResolvedPatternType.ERRORED
-
- /**
- * Execute the actual effect, not any sfx.
- *
- * You can also mess up the stack with this.
- */
- abstract fun execute(ctx: CastingContext, errorCtx: Context, stack: MutableList)
-
- abstract fun errorMessage(ctx: CastingContext, errorCtx: Context): Component
-
- // Useful helper functions
-
- protected fun dyeColor(color: DyeColor): FrozenColorizer =
- FrozenColorizer(
- ItemStack(HexItems.DYE_COLORIZERS[color]!!),
- Util.NIL_UUID
- )
-
- protected fun error(stub: String, vararg args: Any): Component =
- "hexcasting.mishap.$stub".asTranslatedComponent(*args)
-
- protected fun actionName(action: Action?): Component =
- action?.displayName ?: "hexcasting.spell.null".asTranslatedComponent.lightPurple
-
- protected fun yeetHeldItemsTowards(ctx: CastingContext, targetPos: Vec3) {
- // Knock the player's items out of their hands
- val items = mutableListOf()
- for (hand in InteractionHand.values()) {
- if (hand != ctx.castingHand || ctx.caster.getItemInHand(hand).`is`(HexTags.Items.STAVES)) {
- items.add(ctx.caster.getItemInHand(hand).copy())
- ctx.caster.setItemInHand(hand, ItemStack.EMPTY)
- }
- }
-
- val delta = targetPos.subtract(ctx.position).normalize().scale(0.5)
-
- for (item in items) {
- yeetItem(item, ctx, delta)
- }
- }
-
- protected fun yeetHeldItem(ctx: CastingContext, hand: InteractionHand) {
- val item = ctx.caster.getItemInHand(hand).copy()
- if (hand == ctx.castingHand && IXplatAbstractions.INSTANCE.findHexHolder(item) != null)
- return
- ctx.caster.setItemInHand(hand, ItemStack.EMPTY)
-
- val delta = ctx.caster.lookAngle.scale(0.5)
- yeetItem(item, ctx, delta)
- }
-
- protected fun yeetItem(stack: ItemStack, ctx: CastingContext, delta: Vec3) {
- val entity = ItemEntity(
- ctx.world,
- ctx.position.x, ctx.position.y, ctx.position.z,
- stack,
- delta.x + (Math.random() - 0.5) * 0.1,
- delta.y + (Math.random() - 0.5) * 0.1,
- delta.z + (Math.random() - 0.5) * 0.1
- )
- entity.setPickUpDelay(40)
- ctx.world.addWithUUID(entity)
- }
-
- protected fun blockAtPos(ctx: CastingContext, pos: BlockPos): Component {
- return ctx.world.getBlockState(pos).block.name
- }
-
- data class Context(val pattern: HexPattern, val action: Action?)
-
- companion object {
- fun trulyHurt(entity: LivingEntity, source: DamageSource, amount: Float) {
- entity.setHurtWithStamp(source, entity.level.gameTime)
-
- val targetHealth = entity.health - amount
- if (entity.invulnerableTime > 10) {
- val lastHurt = entity.lastHurt
- if (lastHurt < amount)
- entity.invulnerableTime = 0
- else
- entity.lastHurt -= amount
- }
- if (!entity.hurt(source, amount) &&
- !entity.isInvulnerableTo(source) &&
- !entity.level.isClientSide &&
- !entity.isDeadOrDying
- ) {
-
- // Ok, if you REALLY don't want to play nice...
- entity.health = targetHealth
- entity.markHurt()
-
- if (entity.isDeadOrDying) {
- if (!entity.checkTotemDeathProtection(source)) {
- val sound = entity.deathSoundAccessor
- if (sound != null) {
- entity.playSound(sound, entity.soundVolumeAccessor, entity.voicePitch)
- }
- entity.die(source)
- }
- } else {
- entity.playHurtSound(source)
- }
- }
- }
- }
-}
diff --git a/0.10.3/Common/src/main/java/at/petrak/hexcasting/api/spell/mishaps/MishapAlreadyBrainswept.kt b/0.10.3/Common/src/main/java/at/petrak/hexcasting/api/spell/mishaps/MishapAlreadyBrainswept.kt
deleted file mode 100644
index d23b1092..00000000
--- a/0.10.3/Common/src/main/java/at/petrak/hexcasting/api/spell/mishaps/MishapAlreadyBrainswept.kt
+++ /dev/null
@@ -1,25 +0,0 @@
-package at.petrak.hexcasting.api.spell.mishaps
-
-import at.petrak.hexcasting.api.misc.FrozenColorizer
-import at.petrak.hexcasting.api.misc.HexDamageSources
-import at.petrak.hexcasting.api.spell.iota.Iota
-import at.petrak.hexcasting.api.spell.ParticleSpray
-import at.petrak.hexcasting.api.spell.casting.CastingContext
-import net.minecraft.world.entity.npc.Villager
-import net.minecraft.world.item.DyeColor
-
-class MishapAlreadyBrainswept(val villager: Villager) : Mishap() {
- override fun accentColor(ctx: CastingContext, errorCtx: Context): FrozenColorizer =
- dyeColor(DyeColor.GREEN)
-
- override fun execute(ctx: CastingContext, errorCtx: Context, stack: MutableList) {
- villager.hurt(HexDamageSources.overcastDamageFrom(ctx.caster), villager.health)
- }
-
- override fun particleSpray(ctx: CastingContext) =
- ParticleSpray.burst(villager.eyePosition, 1.0)
-
- override fun errorMessage(ctx: CastingContext, errorCtx: Context) =
- error("already_brainswept")
-
-}
diff --git a/0.10.3/Common/src/main/java/at/petrak/hexcasting/api/spell/mishaps/MishapBadBlock.kt b/0.10.3/Common/src/main/java/at/petrak/hexcasting/api/spell/mishaps/MishapBadBlock.kt
deleted file mode 100644
index 822515c1..00000000
--- a/0.10.3/Common/src/main/java/at/petrak/hexcasting/api/spell/mishaps/MishapBadBlock.kt
+++ /dev/null
@@ -1,34 +0,0 @@
-package at.petrak.hexcasting.api.spell.mishaps
-
-import at.petrak.hexcasting.api.misc.FrozenColorizer
-import at.petrak.hexcasting.api.spell.ParticleSpray
-import at.petrak.hexcasting.api.spell.iota.Iota
-import at.petrak.hexcasting.api.spell.casting.CastingContext
-import at.petrak.hexcasting.api.utils.asTranslatedComponent
-import net.minecraft.core.BlockPos
-import net.minecraft.network.chat.Component
-import net.minecraft.world.item.DyeColor
-import net.minecraft.world.level.Explosion
-import net.minecraft.world.phys.Vec3
-
-class MishapBadBlock(val pos: BlockPos, val expected: Component) : Mishap() {
- override fun accentColor(ctx: CastingContext, errorCtx: Context): FrozenColorizer =
- dyeColor(DyeColor.LIME)
-
- override fun execute(ctx: CastingContext, errorCtx: Context, stack: MutableList) {
- ctx.world.explode(null, pos.x + 0.5, pos.y + 0.5, pos.z + 0.5, 0.25f, Explosion.BlockInteraction.NONE)
- }
-
- override fun particleSpray(ctx: CastingContext) =
- ParticleSpray.burst(Vec3.atCenterOf(pos), 1.0)
-
- override fun errorMessage(ctx: CastingContext, errorCtx: Context) =
- error("bad_block", expected, this.pos.toShortString(), blockAtPos(ctx, this.pos))
-
- companion object {
- @JvmStatic
- fun of(pos: BlockPos, stub: String): MishapBadBlock {
- return MishapBadBlock(pos, "hexcasting.mishap.bad_block.$stub".asTranslatedComponent)
- }
- }
-}
diff --git a/0.10.3/Common/src/main/java/at/petrak/hexcasting/api/spell/mishaps/MishapBadBrainsweep.kt b/0.10.3/Common/src/main/java/at/petrak/hexcasting/api/spell/mishaps/MishapBadBrainsweep.kt
deleted file mode 100644
index 7f121c18..00000000
--- a/0.10.3/Common/src/main/java/at/petrak/hexcasting/api/spell/mishaps/MishapBadBrainsweep.kt
+++ /dev/null
@@ -1,27 +0,0 @@
-package at.petrak.hexcasting.api.spell.mishaps
-
-import at.petrak.hexcasting.api.misc.FrozenColorizer
-import at.petrak.hexcasting.api.misc.HexDamageSources
-import at.petrak.hexcasting.api.spell.ParticleSpray
-import at.petrak.hexcasting.api.spell.iota.Iota
-import at.petrak.hexcasting.api.spell.casting.CastingContext
-import net.minecraft.core.BlockPos
-import net.minecraft.world.entity.npc.Villager
-import net.minecraft.world.item.DyeColor
-import net.minecraft.world.phys.Vec3
-
-class MishapBadBrainsweep(val villager: Villager, val pos: BlockPos) : Mishap() {
- override fun accentColor(ctx: CastingContext, errorCtx: Context): FrozenColorizer =
- dyeColor(DyeColor.GREEN)
-
- override fun execute(ctx: CastingContext, errorCtx: Context, stack: MutableList) {
- trulyHurt(villager, HexDamageSources.overcastDamageFrom(ctx.caster), villager.health)
- }
-
- override fun particleSpray(ctx: CastingContext): ParticleSpray {
- return ParticleSpray.burst(Vec3.atCenterOf(pos), 1.0)
- }
-
- override fun errorMessage(ctx: CastingContext, errorCtx: Context) =
- error("bad_brainsweep", blockAtPos(ctx, this.pos))
-}
diff --git a/0.10.3/Common/src/main/java/at/petrak/hexcasting/api/spell/mishaps/MishapBadEntity.kt b/0.10.3/Common/src/main/java/at/petrak/hexcasting/api/spell/mishaps/MishapBadEntity.kt
deleted file mode 100644
index ba3cbcec..00000000
--- a/0.10.3/Common/src/main/java/at/petrak/hexcasting/api/spell/mishaps/MishapBadEntity.kt
+++ /dev/null
@@ -1,33 +0,0 @@
-package at.petrak.hexcasting.api.spell.mishaps
-
-import at.petrak.hexcasting.api.misc.FrozenColorizer
-import at.petrak.hexcasting.api.spell.casting.CastingContext
-import at.petrak.hexcasting.api.spell.iota.Iota
-import at.petrak.hexcasting.api.utils.aqua
-import at.petrak.hexcasting.api.utils.asTranslatedComponent
-import net.minecraft.network.chat.Component
-import net.minecraft.world.entity.Entity
-import net.minecraft.world.entity.item.ItemEntity
-import net.minecraft.world.item.DyeColor
-
-class MishapBadEntity(val entity: Entity, val wanted: Component) : Mishap() {
- override fun accentColor(ctx: CastingContext, errorCtx: Context): FrozenColorizer =
- dyeColor(DyeColor.BROWN)
-
- override fun execute(ctx: CastingContext, errorCtx: Context, stack: MutableList) {
- yeetHeldItemsTowards(ctx, entity.position())
- }
-
- override fun errorMessage(ctx: CastingContext, errorCtx: Context) =
- error("bad_entity", actionName(errorCtx.action), wanted, entity.displayName.plainCopy().aqua)
-
- companion object {
- @JvmStatic
- fun of(entity: Entity, stub: String): Mishap {
- val component = "hexcasting.mishap.bad_item.$stub".asTranslatedComponent
- if (entity is ItemEntity)
- return MishapBadItem(entity, component)
- return MishapBadEntity(entity, component)
- }
- }
-}
diff --git a/0.10.3/Common/src/main/java/at/petrak/hexcasting/api/spell/mishaps/MishapBadItem.kt b/0.10.3/Common/src/main/java/at/petrak/hexcasting/api/spell/mishaps/MishapBadItem.kt
deleted file mode 100644
index e147e634..00000000
--- a/0.10.3/Common/src/main/java/at/petrak/hexcasting/api/spell/mishaps/MishapBadItem.kt
+++ /dev/null
@@ -1,30 +0,0 @@
-package at.petrak.hexcasting.api.spell.mishaps
-
-import at.petrak.hexcasting.api.misc.FrozenColorizer
-import at.petrak.hexcasting.api.spell.iota.Iota
-import at.petrak.hexcasting.api.spell.casting.CastingContext
-import at.petrak.hexcasting.api.utils.asTranslatedComponent
-import net.minecraft.network.chat.Component
-import net.minecraft.world.entity.item.ItemEntity
-import net.minecraft.world.item.DyeColor
-
-class MishapBadItem(val item: ItemEntity, val wanted: Component) : Mishap() {
- override fun accentColor(ctx: CastingContext, errorCtx: Context): FrozenColorizer =
- dyeColor(DyeColor.BROWN)
-
- override fun execute(ctx: CastingContext, errorCtx: Context, stack: MutableList) {
- item.deltaMovement = item.deltaMovement.add((Math.random() - 0.5) * 0.05, 0.75, (Math.random() - 0.5) * 0.05)
- }
-
- override fun errorMessage(ctx: CastingContext, errorCtx: Context) = if (item.item.isEmpty)
- error("no_item", actionName(errorCtx.action), wanted)
- else
- error("bad_item", actionName(errorCtx.action), wanted, item.item.count, item.item.displayName)
-
- companion object {
- @JvmStatic
- fun of(item: ItemEntity, stub: String): MishapBadItem {
- return MishapBadItem(item, "hexcasting.mishap.bad_item.$stub".asTranslatedComponent)
- }
- }
-}
diff --git a/0.10.3/Common/src/main/java/at/petrak/hexcasting/api/spell/mishaps/MishapBadOffhandItem.kt b/0.10.3/Common/src/main/java/at/petrak/hexcasting/api/spell/mishaps/MishapBadOffhandItem.kt
deleted file mode 100644
index 71dda350..00000000
--- a/0.10.3/Common/src/main/java/at/petrak/hexcasting/api/spell/mishaps/MishapBadOffhandItem.kt
+++ /dev/null
@@ -1,31 +0,0 @@
-package at.petrak.hexcasting.api.spell.mishaps
-
-import at.petrak.hexcasting.api.misc.FrozenColorizer
-import at.petrak.hexcasting.api.spell.iota.Iota
-import at.petrak.hexcasting.api.spell.casting.CastingContext
-import at.petrak.hexcasting.api.utils.asTranslatedComponent
-import net.minecraft.network.chat.Component
-import net.minecraft.world.InteractionHand
-import net.minecraft.world.item.DyeColor
-import net.minecraft.world.item.ItemStack
-
-class MishapBadOffhandItem(val item: ItemStack, val hand: InteractionHand, val wanted: Component) : Mishap() {
- override fun accentColor(ctx: CastingContext, errorCtx: Context): FrozenColorizer =
- dyeColor(DyeColor.BROWN)
-
- override fun execute(ctx: CastingContext, errorCtx: Context, stack: MutableList) {
- yeetHeldItem(ctx, hand)
- }
-
- override fun errorMessage(ctx: CastingContext, errorCtx: Context) = if (item.isEmpty)
- error("no_item.offhand", actionName(errorCtx.action), wanted)
- else
- error("bad_item.offhand", actionName(errorCtx.action), wanted, item.count, item.displayName)
-
- companion object {
- @JvmStatic
- fun of(item: ItemStack, hand: InteractionHand, stub: String, vararg args: Any): MishapBadOffhandItem {
- return MishapBadOffhandItem(item, hand, "hexcasting.mishap.bad_item.$stub".asTranslatedComponent(*args))
- }
- }
-}
diff --git a/0.10.3/Common/src/main/java/at/petrak/hexcasting/api/spell/mishaps/MishapDisallowedSpell.kt b/0.10.3/Common/src/main/java/at/petrak/hexcasting/api/spell/mishaps/MishapDisallowedSpell.kt
deleted file mode 100644
index 65da779f..00000000
--- a/0.10.3/Common/src/main/java/at/petrak/hexcasting/api/spell/mishaps/MishapDisallowedSpell.kt
+++ /dev/null
@@ -1,21 +0,0 @@
-package at.petrak.hexcasting.api.spell.mishaps
-
-import at.petrak.hexcasting.api.misc.FrozenColorizer
-import at.petrak.hexcasting.api.spell.iota.Iota
-import at.petrak.hexcasting.api.spell.casting.CastingContext
-import at.petrak.hexcasting.api.spell.casting.ResolvedPatternType
-import net.minecraft.world.item.DyeColor
-
-class MishapDisallowedSpell(val type: String = "disallowed") : Mishap() {
- override fun accentColor(ctx: CastingContext, errorCtx: Context): FrozenColorizer =
- dyeColor(DyeColor.BLACK)
-
- override fun resolutionType(ctx: CastingContext) = ResolvedPatternType.INVALID
-
- override fun execute(ctx: CastingContext, errorCtx: Context, stack: MutableList) {
- // NO-OP
- }
-
- override fun errorMessage(ctx: CastingContext, errorCtx: Context) =
- error(type, actionName(errorCtx.action))
-}
diff --git a/0.10.3/Common/src/main/java/at/petrak/hexcasting/api/spell/mishaps/MishapDivideByZero.kt b/0.10.3/Common/src/main/java/at/petrak/hexcasting/api/spell/mishaps/MishapDivideByZero.kt
deleted file mode 100644
index 7b9ec707..00000000
--- a/0.10.3/Common/src/main/java/at/petrak/hexcasting/api/spell/mishaps/MishapDivideByZero.kt
+++ /dev/null
@@ -1,75 +0,0 @@
-package at.petrak.hexcasting.api.spell.mishaps
-
-import at.petrak.hexcasting.api.misc.FrozenColorizer
-import at.petrak.hexcasting.api.misc.HexDamageSources
-import at.petrak.hexcasting.api.spell.casting.CastingContext
-import at.petrak.hexcasting.api.spell.iota.DoubleIota
-import at.petrak.hexcasting.api.spell.iota.GarbageIota
-import at.petrak.hexcasting.api.spell.iota.Iota
-import at.petrak.hexcasting.api.spell.iota.Vec3Iota
-import at.petrak.hexcasting.api.utils.asTranslatedComponent
-import net.minecraft.network.chat.Component
-import net.minecraft.world.item.DyeColor
-import net.minecraft.world.phys.Vec3
-
-class MishapDivideByZero(val operand1: Component, val operand2: Component, val suffix: String = "divide") : Mishap() {
-
- override fun accentColor(ctx: CastingContext, errorCtx: Context): FrozenColorizer =
- dyeColor(DyeColor.RED)
-
- override fun execute(ctx: CastingContext, errorCtx: Context, stack: MutableList) {
- stack.add(GarbageIota())
- trulyHurt(ctx.caster, HexDamageSources.OVERCAST, ctx.caster.health / 2)
- }
-
- override fun errorMessage(ctx: CastingContext, errorCtx: Context) =
- error("divide_by_zero.$suffix", operand1, operand2)
-
- companion object {
- private const val PREFIX = "hexcasting.mishap.divide_by_zero"
-
- @JvmStatic
- fun of(operand1: Iota, operand2: Iota, suffix: String = "divide"): MishapDivideByZero {
- if (suffix == "exponent")
- return MishapDivideByZero(translate(operand1), powerOf(operand2), suffix)
- return MishapDivideByZero(translate(operand1), translate(operand2), suffix)
- }
-
- @JvmStatic
- fun tan(angle: DoubleIota): MishapDivideByZero {
- val translatedAngle = translate(angle)
- return MishapDivideByZero(
- "$PREFIX.sin".asTranslatedComponent(translatedAngle),
- "$PREFIX.cos".asTranslatedComponent(translatedAngle)
- )
- }
-
- @JvmStatic
- val zero
- get() = "$PREFIX.zero".asTranslatedComponent
-
- @JvmStatic
- val zerothPower
- get() = "$PREFIX.zero.power".asTranslatedComponent
-
- @JvmStatic
- val zeroVector
- get() = "$PREFIX.zero.vec".asTranslatedComponent
-
- @JvmStatic
- fun powerOf(power: Component) = "$PREFIX.power".asTranslatedComponent(power)
-
- @JvmStatic
- fun powerOf(datum: Iota): Component = when {
- datum is DoubleIota && datum.double == 0.0 -> zerothPower
- else -> datum.display()
- }
-
- @JvmStatic
- fun translate(datum: Iota): Component = when {
- datum is DoubleIota && datum.double == 0.0 -> zero
- datum is Vec3Iota && datum.vec3 == Vec3.ZERO -> zeroVector
- else -> datum.display()
- }
- }
-}
diff --git a/0.10.3/Common/src/main/java/at/petrak/hexcasting/api/spell/mishaps/MishapEntityTooFarAway.kt b/0.10.3/Common/src/main/java/at/petrak/hexcasting/api/spell/mishaps/MishapEntityTooFarAway.kt
deleted file mode 100644
index 5eb5fab7..00000000
--- a/0.10.3/Common/src/main/java/at/petrak/hexcasting/api/spell/mishaps/MishapEntityTooFarAway.kt
+++ /dev/null
@@ -1,21 +0,0 @@
-package at.petrak.hexcasting.api.spell.mishaps
-
-import at.petrak.hexcasting.api.misc.FrozenColorizer
-import at.petrak.hexcasting.api.spell.casting.CastingContext
-import at.petrak.hexcasting.api.spell.iota.Iota
-import net.minecraft.network.chat.Component
-import net.minecraft.world.entity.Entity
-import net.minecraft.world.item.DyeColor
-
-class MishapEntityTooFarAway(val entity: Entity) : Mishap() {
- override fun accentColor(ctx: CastingContext, errorCtx: Context): FrozenColorizer =
- dyeColor(DyeColor.PINK)
-
- override fun execute(ctx: CastingContext, errorCtx: Context, stack: MutableList) {
- // Knock the player's items out of their hands
- yeetHeldItemsTowards(ctx, entity.position())
- }
-
- override fun errorMessage(ctx: CastingContext, errorCtx: Context): Component =
- error("entity_too_far", entity.displayName, actionName(errorCtx.action))
-}
diff --git a/0.10.3/Common/src/main/java/at/petrak/hexcasting/api/spell/mishaps/MishapError.kt b/0.10.3/Common/src/main/java/at/petrak/hexcasting/api/spell/mishaps/MishapError.kt
deleted file mode 100644
index 0f6d4666..00000000
--- a/0.10.3/Common/src/main/java/at/petrak/hexcasting/api/spell/mishaps/MishapError.kt
+++ /dev/null
@@ -1,18 +0,0 @@
-package at.petrak.hexcasting.api.spell.mishaps
-
-import at.petrak.hexcasting.api.misc.FrozenColorizer
-import at.petrak.hexcasting.api.spell.iota.Iota
-import at.petrak.hexcasting.api.spell.casting.CastingContext
-import net.minecraft.world.item.DyeColor
-
-class MishapError(val exception: Exception) : Mishap() {
- override fun accentColor(ctx: CastingContext, errorCtx: Context): FrozenColorizer =
- dyeColor(DyeColor.BLACK)
-
- override fun execute(ctx: CastingContext, errorCtx: Context, stack: MutableList) {
- // NO-OP
- }
-
- override fun errorMessage(ctx: CastingContext, errorCtx: Context) =
- error("unknown", actionName(errorCtx.action), exception)
-}
diff --git a/0.10.3/Common/src/main/java/at/petrak/hexcasting/api/spell/mishaps/MishapEvalTooDeep.kt b/0.10.3/Common/src/main/java/at/petrak/hexcasting/api/spell/mishaps/MishapEvalTooDeep.kt
deleted file mode 100644
index c118486f..00000000
--- a/0.10.3/Common/src/main/java/at/petrak/hexcasting/api/spell/mishaps/MishapEvalTooDeep.kt
+++ /dev/null
@@ -1,18 +0,0 @@
-package at.petrak.hexcasting.api.spell.mishaps
-
-import at.petrak.hexcasting.api.misc.FrozenColorizer
-import at.petrak.hexcasting.api.spell.iota.Iota
-import at.petrak.hexcasting.api.spell.casting.CastingContext
-import net.minecraft.world.item.DyeColor
-
-class MishapEvalTooDeep : Mishap() {
- override fun accentColor(ctx: CastingContext, errorCtx: Context): FrozenColorizer =
- dyeColor(DyeColor.BLUE)
-
- override fun execute(ctx: CastingContext, errorCtx: Context, stack: MutableList) {
- ctx.caster.airSupply -= 290
- }
-
- override fun errorMessage(ctx: CastingContext, errorCtx: Context) =
- error("eval_too_deep")
-}
diff --git a/0.10.3/Common/src/main/java/at/petrak/hexcasting/api/spell/mishaps/MishapImmuneEntity.kt b/0.10.3/Common/src/main/java/at/petrak/hexcasting/api/spell/mishaps/MishapImmuneEntity.kt
deleted file mode 100644
index 793641f4..00000000
--- a/0.10.3/Common/src/main/java/at/petrak/hexcasting/api/spell/mishaps/MishapImmuneEntity.kt
+++ /dev/null
@@ -1,20 +0,0 @@
-package at.petrak.hexcasting.api.spell.mishaps
-
-import at.petrak.hexcasting.api.misc.FrozenColorizer
-import at.petrak.hexcasting.api.spell.iota.Iota
-import at.petrak.hexcasting.api.spell.casting.CastingContext
-import at.petrak.hexcasting.api.utils.aqua
-import net.minecraft.world.entity.Entity
-import net.minecraft.world.item.DyeColor
-
-class MishapImmuneEntity(val entity: Entity) : Mishap() {
- override fun accentColor(ctx: CastingContext, errorCtx: Context): FrozenColorizer =
- dyeColor(DyeColor.BLUE)
-
- override fun execute(ctx: CastingContext, errorCtx: Context, stack: MutableList) {
- yeetHeldItemsTowards(ctx, entity.position())
- }
-
- override fun errorMessage(ctx: CastingContext, errorCtx: Context) =
- error("immune_entity", actionName(errorCtx.action), entity.displayName.plainCopy().aqua)
-}
diff --git a/0.10.3/Common/src/main/java/at/petrak/hexcasting/api/spell/mishaps/MishapInvalidIota.kt b/0.10.3/Common/src/main/java/at/petrak/hexcasting/api/spell/mishaps/MishapInvalidIota.kt
deleted file mode 100644
index 1e1b6b83..00000000
--- a/0.10.3/Common/src/main/java/at/petrak/hexcasting/api/spell/mishaps/MishapInvalidIota.kt
+++ /dev/null
@@ -1,46 +0,0 @@
-package at.petrak.hexcasting.api.spell.mishaps
-
-import at.petrak.hexcasting.api.misc.FrozenColorizer
-import at.petrak.hexcasting.api.spell.casting.CastingContext
-import at.petrak.hexcasting.api.spell.iota.GarbageIota
-import at.petrak.hexcasting.api.spell.iota.Iota
-import at.petrak.hexcasting.api.utils.asTranslatedComponent
-import net.minecraft.network.chat.Component
-import net.minecraft.world.item.DyeColor
-
-/**
- * The value failed some kind of predicate.
- *
- * [MishapInvalidIota.reverseIdx] is the index from the *back* of the stack.
- */
-class MishapInvalidIota(
- val perpetrator: Iota,
- val reverseIdx: Int,
- val expected: Component
-) : Mishap() {
- override fun accentColor(ctx: CastingContext, errorCtx: Context): FrozenColorizer =
- dyeColor(DyeColor.GRAY)
-
- override fun execute(ctx: CastingContext, errorCtx: Context, stack: MutableList) {
- stack[stack.size - 1 - reverseIdx] = GarbageIota();
- }
-
- override fun errorMessage(ctx: CastingContext, errorCtx: Context) =
- error(
- "invalid_value", actionName(errorCtx.action), expected, reverseIdx,
- perpetrator.display()
- )
-
- companion object {
- @JvmStatic
- fun ofType(perpetrator: Iota, reverseIdx: Int, name: String): MishapInvalidIota {
- return of(perpetrator, reverseIdx, "class.$name")
- }
-
- @JvmStatic
- fun of(perpetrator: Iota, reverseIdx: Int, name: String, vararg translations: Any): MishapInvalidIota {
- val key = "hexcasting.mishap.invalid_value.$name"
- return MishapInvalidIota(perpetrator, reverseIdx, key.asTranslatedComponent(*translations))
- }
- }
-}
diff --git a/0.10.3/Common/src/main/java/at/petrak/hexcasting/api/spell/mishaps/MishapInvalidPattern.kt b/0.10.3/Common/src/main/java/at/petrak/hexcasting/api/spell/mishaps/MishapInvalidPattern.kt
deleted file mode 100644
index f1bee32a..00000000
--- a/0.10.3/Common/src/main/java/at/petrak/hexcasting/api/spell/mishaps/MishapInvalidPattern.kt
+++ /dev/null
@@ -1,22 +0,0 @@
-package at.petrak.hexcasting.api.spell.mishaps
-
-import at.petrak.hexcasting.api.misc.FrozenColorizer
-import at.petrak.hexcasting.api.spell.casting.CastingContext
-import at.petrak.hexcasting.api.spell.casting.ResolvedPatternType
-import at.petrak.hexcasting.api.spell.iota.GarbageIota
-import at.petrak.hexcasting.api.spell.iota.Iota
-import net.minecraft.world.item.DyeColor
-
-class MishapInvalidPattern : Mishap() {
- override fun accentColor(ctx: CastingContext, errorCtx: Context): FrozenColorizer =
- dyeColor(DyeColor.YELLOW)
-
- override fun resolutionType(ctx: CastingContext) = ResolvedPatternType.INVALID
-
- override fun execute(ctx: CastingContext, errorCtx: Context, stack: MutableList) {
- stack.add(GarbageIota())
- }
-
- override fun errorMessage(ctx: CastingContext, errorCtx: Context) =
- error("invalid_pattern")
-}
diff --git a/0.10.3/Common/src/main/java/at/petrak/hexcasting/api/spell/mishaps/MishapInvalidSpellDatumType.kt b/0.10.3/Common/src/main/java/at/petrak/hexcasting/api/spell/mishaps/MishapInvalidSpellDatumType.kt
deleted file mode 100644
index 49ea0825..00000000
--- a/0.10.3/Common/src/main/java/at/petrak/hexcasting/api/spell/mishaps/MishapInvalidSpellDatumType.kt
+++ /dev/null
@@ -1,21 +0,0 @@
-package at.petrak.hexcasting.api.spell.mishaps
-
-import at.petrak.hexcasting.api.misc.FrozenColorizer
-import at.petrak.hexcasting.api.spell.iota.Iota
-import at.petrak.hexcasting.api.spell.casting.CastingContext
-import net.minecraft.world.item.DyeColor
-
-/**
- * this is bad
- */
-class MishapInvalidSpellDatumType(val perpetrator: Any) : Mishap() {
- override fun accentColor(ctx: CastingContext, errorCtx: Context): FrozenColorizer =
- dyeColor(DyeColor.BLACK)
-
- override fun execute(ctx: CastingContext, errorCtx: Context, stack: MutableList) {
- // NO-OP
- }
-
- override fun errorMessage(ctx: CastingContext, errorCtx: Context) =
- error("invalid_spell_datum_type", this.perpetrator.toString(), this.perpetrator.javaClass.typeName)
-}
diff --git a/0.10.3/Common/src/main/java/at/petrak/hexcasting/api/spell/mishaps/MishapLocationInWrongDimension.kt b/0.10.3/Common/src/main/java/at/petrak/hexcasting/api/spell/mishaps/MishapLocationInWrongDimension.kt
deleted file mode 100644
index 865036da..00000000
--- a/0.10.3/Common/src/main/java/at/petrak/hexcasting/api/spell/mishaps/MishapLocationInWrongDimension.kt
+++ /dev/null
@@ -1,24 +0,0 @@
-package at.petrak.hexcasting.api.spell.mishaps
-
-import at.petrak.hexcasting.api.misc.FrozenColorizer
-import at.petrak.hexcasting.api.spell.casting.CastingContext
-import at.petrak.hexcasting.api.spell.iota.GarbageIota
-import at.petrak.hexcasting.api.spell.iota.Iota
-import net.minecraft.network.chat.Component
-import net.minecraft.resources.ResourceLocation
-import net.minecraft.world.item.DyeColor
-
-class MishapLocationInWrongDimension(val properDimension: ResourceLocation) : Mishap() {
- override fun accentColor(ctx: CastingContext, errorCtx: Context): FrozenColorizer =
- dyeColor(DyeColor.MAGENTA)
-
- override fun execute(ctx: CastingContext, errorCtx: Context, stack: MutableList) {
- stack.add(GarbageIota())
- }
-
- override fun errorMessage(ctx: CastingContext, errorCtx: Context): Component =
- error(
- "wrong_dimension", actionName(errorCtx.action!!), properDimension.toString(),
- ctx.world.dimension().location().toString()
- )
-}
diff --git a/0.10.3/Common/src/main/java/at/petrak/hexcasting/api/spell/mishaps/MishapLocationTooFarAway.kt b/0.10.3/Common/src/main/java/at/petrak/hexcasting/api/spell/mishaps/MishapLocationTooFarAway.kt
deleted file mode 100644
index f22a4dcf..00000000
--- a/0.10.3/Common/src/main/java/at/petrak/hexcasting/api/spell/mishaps/MishapLocationTooFarAway.kt
+++ /dev/null
@@ -1,21 +0,0 @@
-package at.petrak.hexcasting.api.spell.mishaps
-
-import at.petrak.hexcasting.api.misc.FrozenColorizer
-import at.petrak.hexcasting.api.spell.casting.CastingContext
-import at.petrak.hexcasting.api.spell.iota.Iota
-import at.petrak.hexcasting.api.spell.iota.Vec3Iota
-import net.minecraft.network.chat.Component
-import net.minecraft.world.item.DyeColor
-import net.minecraft.world.phys.Vec3
-
-class MishapLocationTooFarAway(val location: Vec3, val type: String = "too_far") : Mishap() {
- override fun accentColor(ctx: CastingContext, errorCtx: Context): FrozenColorizer =
- dyeColor(DyeColor.MAGENTA)
-
- override fun execute(ctx: CastingContext, errorCtx: Context, stack: MutableList) {
- yeetHeldItemsTowards(ctx, location)
- }
-
- override fun errorMessage(ctx: CastingContext, errorCtx: Context): Component =
- error("location_$type", Vec3Iota.display(location), actionName(errorCtx.action))
-}
diff --git a/0.10.3/Common/src/main/java/at/petrak/hexcasting/api/spell/mishaps/MishapNoAkashicRecord.kt b/0.10.3/Common/src/main/java/at/petrak/hexcasting/api/spell/mishaps/MishapNoAkashicRecord.kt
deleted file mode 100644
index 66a323f2..00000000
--- a/0.10.3/Common/src/main/java/at/petrak/hexcasting/api/spell/mishaps/MishapNoAkashicRecord.kt
+++ /dev/null
@@ -1,19 +0,0 @@
-package at.petrak.hexcasting.api.spell.mishaps
-
-import at.petrak.hexcasting.api.misc.FrozenColorizer
-import at.petrak.hexcasting.api.spell.iota.Iota
-import at.petrak.hexcasting.api.spell.casting.CastingContext
-import net.minecraft.core.BlockPos
-import net.minecraft.world.item.DyeColor
-
-class MishapNoAkashicRecord(val pos: BlockPos) : Mishap() {
- override fun accentColor(ctx: CastingContext, errorCtx: Context): FrozenColorizer =
- dyeColor(DyeColor.PURPLE)
-
- override fun execute(ctx: CastingContext, errorCtx: Context, stack: MutableList) {
- ctx.caster.giveExperiencePoints(-100)
- }
-
- override fun errorMessage(ctx: CastingContext, errorCtx: Context) =
- error("no_akashic_record", pos.toShortString())
-}
diff --git a/0.10.3/Common/src/main/java/at/petrak/hexcasting/api/spell/mishaps/MishapNoSpellCircle.kt b/0.10.3/Common/src/main/java/at/petrak/hexcasting/api/spell/mishaps/MishapNoSpellCircle.kt
deleted file mode 100644
index 35726671..00000000
--- a/0.10.3/Common/src/main/java/at/petrak/hexcasting/api/spell/mishaps/MishapNoSpellCircle.kt
+++ /dev/null
@@ -1,35 +0,0 @@
-package at.petrak.hexcasting.api.spell.mishaps
-
-import at.petrak.hexcasting.api.misc.FrozenColorizer
-import at.petrak.hexcasting.api.spell.casting.CastingContext
-import at.petrak.hexcasting.api.spell.iota.Iota
-import net.minecraft.world.entity.player.Player
-import net.minecraft.world.item.DyeColor
-import net.minecraft.world.item.ItemStack
-import net.minecraft.world.item.enchantment.EnchantmentHelper
-
-class MishapNoSpellCircle : Mishap() {
- override fun accentColor(ctx: CastingContext, errorCtx: Context): FrozenColorizer =
- dyeColor(DyeColor.LIGHT_BLUE)
-
- private inline fun dropAll(player: Player, stacks: MutableList, filter: (ItemStack) -> Boolean = { true }) {
- for (index in stacks.indices) {
- val item = stacks[index]
- if (!item.isEmpty && filter(item)) {
- player.drop(item, true, false)
- stacks[index] = ItemStack.EMPTY
- }
- }
- }
-
- override fun execute(ctx: CastingContext, errorCtx: Context, stack: MutableList) {
- dropAll(ctx.caster, ctx.caster.inventory.items)
- dropAll(ctx.caster, ctx.caster.inventory.offhand)
- dropAll(ctx.caster, ctx.caster.inventory.armor) {
- !EnchantmentHelper.hasBindingCurse(it)
- }
- }
-
- override fun errorMessage(ctx: CastingContext, errorCtx: Context) =
- error("no_spell_circle", actionName(errorCtx.action))
-}
diff --git a/0.10.3/Common/src/main/java/at/petrak/hexcasting/api/spell/mishaps/MishapNotEnoughArgs.kt b/0.10.3/Common/src/main/java/at/petrak/hexcasting/api/spell/mishaps/MishapNotEnoughArgs.kt
deleted file mode 100644
index e94b1542..00000000
--- a/0.10.3/Common/src/main/java/at/petrak/hexcasting/api/spell/mishaps/MishapNotEnoughArgs.kt
+++ /dev/null
@@ -1,22 +0,0 @@
-package at.petrak.hexcasting.api.spell.mishaps
-
-import at.petrak.hexcasting.api.misc.FrozenColorizer
-import at.petrak.hexcasting.api.spell.casting.CastingContext
-import at.petrak.hexcasting.api.spell.iota.GarbageIota
-import at.petrak.hexcasting.api.spell.iota.Iota
-import net.minecraft.world.item.DyeColor
-
-class MishapNotEnoughArgs(val expected: Int, val got: Int) : Mishap() {
- override fun accentColor(ctx: CastingContext, errorCtx: Context): FrozenColorizer =
- dyeColor(DyeColor.LIGHT_GRAY)
-
- override fun execute(ctx: CastingContext, errorCtx: Context, stack: MutableList) {
- repeat(expected - got) { stack.add(GarbageIota()) }
- }
-
- override fun errorMessage(ctx: CastingContext, errorCtx: Context) =
- if (got == 0)
- error("no_args", actionName(errorCtx.action), expected)
- else
- error("not_enough_args", actionName(errorCtx.action), expected, got)
-}
diff --git a/0.10.3/Common/src/main/java/at/petrak/hexcasting/api/spell/mishaps/MishapOthersName.kt b/0.10.3/Common/src/main/java/at/petrak/hexcasting/api/spell/mishaps/MishapOthersName.kt
deleted file mode 100644
index fa2e16b4..00000000
--- a/0.10.3/Common/src/main/java/at/petrak/hexcasting/api/spell/mishaps/MishapOthersName.kt
+++ /dev/null
@@ -1,58 +0,0 @@
-package at.petrak.hexcasting.api.spell.mishaps
-
-import at.petrak.hexcasting.api.misc.FrozenColorizer
-import at.petrak.hexcasting.api.spell.casting.CastingContext
-import at.petrak.hexcasting.api.spell.iota.EntityIota
-import at.petrak.hexcasting.api.spell.iota.Iota
-import at.petrak.hexcasting.api.spell.iota.ListIota
-import net.minecraft.world.effect.MobEffectInstance
-import net.minecraft.world.effect.MobEffects
-import net.minecraft.world.entity.player.Player
-import net.minecraft.world.item.DyeColor
-
-/**
- * Also throwable for your *own* name, for cases like Chronicler's Gambit
- */
-class MishapOthersName(val confidant: Player) : Mishap() {
- override fun accentColor(ctx: CastingContext, errorCtx: Context): FrozenColorizer =
- dyeColor(DyeColor.BLACK)
-
- override fun execute(ctx: CastingContext, errorCtx: Context, stack: MutableList) {
- val seconds = if (this.confidant == ctx.caster) 5 else 60;
- ctx.caster.addEffect(MobEffectInstance(MobEffects.BLINDNESS, seconds * 20))
- }
-
- override fun errorMessage(ctx: CastingContext, errorCtx: Context) =
- if (this.confidant == ctx.caster)
- error("others_name.self")
- else
- error("others_name", confidant.name)
-
- companion object {
- /**
- * Return any true names found in this iota.
- *
- * If `caster` is non-null, it will ignore that when checking.
- */
- @JvmStatic
- fun getTrueNameFromDatum(datum: Iota, caster: Player?): Player? {
- val poolToSearch = ArrayDeque()
- poolToSearch.addLast(datum)
-
- while (poolToSearch.isNotEmpty()) {
- val datumToCheck = poolToSearch.removeFirst()
- if (datumToCheck is EntityIota && datumToCheck.entity is Player && datumToCheck.entity != caster)
- return datumToCheck.entity as Player
- if (datumToCheck is ListIota)
- poolToSearch.addAll(datumToCheck.list)
- }
-
- return null
- }
-
- @JvmStatic
- fun getTrueNameFromArgs(datums: List, caster: Player): Player? {
- return datums.firstNotNullOfOrNull { getTrueNameFromDatum(it, caster) }
- }
- }
-}
diff --git a/0.10.3/Common/src/main/java/at/petrak/hexcasting/api/spell/mishaps/MishapShameOnYou.kt b/0.10.3/Common/src/main/java/at/petrak/hexcasting/api/spell/mishaps/MishapShameOnYou.kt
deleted file mode 100644
index 8700cedf..00000000
--- a/0.10.3/Common/src/main/java/at/petrak/hexcasting/api/spell/mishaps/MishapShameOnYou.kt
+++ /dev/null
@@ -1,18 +0,0 @@
-package at.petrak.hexcasting.api.spell.mishaps
-
-import at.petrak.hexcasting.api.misc.FrozenColorizer
-import at.petrak.hexcasting.api.misc.HexDamageSources
-import at.petrak.hexcasting.api.spell.casting.CastingContext
-import at.petrak.hexcasting.api.spell.iota.Iota
-import net.minecraft.world.item.DyeColor
-
-class MishapShameOnYou() : Mishap() {
- override fun accentColor(ctx: CastingContext, errorCtx: Context): FrozenColorizer =
- dyeColor(DyeColor.BLACK)
-
- override fun execute(ctx: CastingContext, errorCtx: Context, stack: MutableList) {
- Mishap.trulyHurt(ctx.caster, HexDamageSources.SHAME, 69420f)
- }
-
- override fun errorMessage(ctx: CastingContext, errorCtx: Context) = error("shame")
-}
diff --git a/0.10.3/Common/src/main/java/at/petrak/hexcasting/api/spell/mishaps/MishapTooManyCloseParens.kt b/0.10.3/Common/src/main/java/at/petrak/hexcasting/api/spell/mishaps/MishapTooManyCloseParens.kt
deleted file mode 100644
index 5420d090..00000000
--- a/0.10.3/Common/src/main/java/at/petrak/hexcasting/api/spell/mishaps/MishapTooManyCloseParens.kt
+++ /dev/null
@@ -1,20 +0,0 @@
-package at.petrak.hexcasting.api.spell.mishaps
-
-import at.petrak.hexcasting.api.misc.FrozenColorizer
-import at.petrak.hexcasting.api.spell.casting.CastingContext
-import at.petrak.hexcasting.api.spell.iota.Iota
-import at.petrak.hexcasting.api.spell.iota.PatternIota
-import net.minecraft.world.item.DyeColor
-
-class MishapTooManyCloseParens : Mishap() {
- override fun accentColor(ctx: CastingContext, errorCtx: Context): FrozenColorizer =
- dyeColor(DyeColor.ORANGE)
-
- override fun execute(ctx: CastingContext, errorCtx: Context, stack: MutableList) {
- // TODO this is a kinda shitty mishap
- stack.add(PatternIota(errorCtx.pattern))
- }
-
- override fun errorMessage(ctx: CastingContext, errorCtx: Context) =
- error("too_many_close_parens")
-}
diff --git a/0.10.3/Common/src/main/java/at/petrak/hexcasting/api/spell/mishaps/MishapUnescapedValue.kt b/0.10.3/Common/src/main/java/at/petrak/hexcasting/api/spell/mishaps/MishapUnescapedValue.kt
deleted file mode 100644
index f952f6d0..00000000
--- a/0.10.3/Common/src/main/java/at/petrak/hexcasting/api/spell/mishaps/MishapUnescapedValue.kt
+++ /dev/null
@@ -1,35 +0,0 @@
-package at.petrak.hexcasting.api.spell.mishaps
-
-import at.petrak.hexcasting.api.misc.FrozenColorizer
-import at.petrak.hexcasting.api.spell.iota.Iota
-import at.petrak.hexcasting.api.spell.casting.CastingContext
-import net.minecraft.world.item.DyeColor
-
-/**
- * The value was a naked iota without being Considered or Retrospected.
- */
-class MishapUnescapedValue(
- val perpetrator: Iota
-) : Mishap() {
- override fun accentColor(ctx: CastingContext, errorCtx: Context): FrozenColorizer =
- dyeColor(DyeColor.GRAY)
-
- override fun execute(ctx: CastingContext, errorCtx: Context, stack: MutableList) {
- // TODO
- /*
- val idx = stack.indexOfLast { it.getType() == DatumType.LIST }
- if (idx != -1) {
- val list = stack[idx].payload as SpellList
- val idxOfIota = list.indexOfFirst { it == perpetrator }
- if (idxOfIota != -1) {
- stack[idx] = SpellDatum.make(list.modifyAt(idxOfIota) {
- SpellList.LPair(SpellDatum.make(Widget.GARBAGE), it.cdr)
- })
- }
- }
- */
- }
-
- override fun errorMessage(ctx: CastingContext, errorCtx: Context) =
- error("unescaped", perpetrator.display())
-}
diff --git a/0.10.3/Common/src/main/java/at/petrak/hexcasting/api/utils/HexUtils.kt b/0.10.3/Common/src/main/java/at/petrak/hexcasting/api/utils/HexUtils.kt
deleted file mode 100644
index 7f65b885..00000000
--- a/0.10.3/Common/src/main/java/at/petrak/hexcasting/api/utils/HexUtils.kt
+++ /dev/null
@@ -1,274 +0,0 @@
-@file:JvmName("HexUtils")
-
-package at.petrak.hexcasting.api.utils
-
-import at.petrak.hexcasting.api.spell.iota.Iota
-import at.petrak.hexcasting.api.spell.iota.ListIota
-import at.petrak.hexcasting.api.spell.math.HexCoord
-import at.petrak.hexcasting.common.lib.hex.HexIotaTypes
-import net.minecraft.ChatFormatting
-import net.minecraft.nbt.*
-import net.minecraft.network.chat.Component
-import net.minecraft.network.chat.MutableComponent
-import net.minecraft.network.chat.Style
-import net.minecraft.world.InteractionHand
-import net.minecraft.world.item.ItemStack
-import net.minecraft.world.phys.Vec2
-import net.minecraft.world.phys.Vec3
-import java.lang.ref.WeakReference
-import java.util.*
-import kotlin.math.absoluteValue
-import kotlin.math.max
-import kotlin.math.min
-import kotlin.math.roundToInt
-import kotlin.reflect.KProperty
-
-const val TAU = Math.PI * 2.0
-const val SQRT_3 = 1.7320508f
-
-fun Vec3.serializeToNBT(): LongArrayTag =
- LongArrayTag(longArrayOf(this.x.toRawBits(), this.y.toRawBits(), this.z.toRawBits()))
-
-fun vecFromNBT(tag: LongArray): Vec3 = if (tag.size != 3) Vec3.ZERO else
- Vec3(
- Double.fromBits(tag[0]),
- Double.fromBits(tag[1]),
- Double.fromBits(tag[2])
- )
-
-fun Vec2.serializeToNBT(): LongArrayTag =
- LongArrayTag(longArrayOf(this.x.toDouble().toRawBits(), this.y.toDouble().toRawBits()))
-
-fun vec2FromNBT(tag: LongArray): Vec2 = if (tag.size != 2) Vec2.ZERO else
- Vec2(
- Double.fromBits(tag[0]).toFloat(),
- Double.fromBits(tag[1]).toFloat(),
- )
-
-fun otherHand(hand: InteractionHand) =
- if (hand == InteractionHand.MAIN_HAND) InteractionHand.OFF_HAND else InteractionHand.MAIN_HAND
-
-fun fixNAN(n: Double): Double = if (n.isFinite()) n else 0.0
-
-fun findCenter(points: List): Vec2 {
- var minX = Float.POSITIVE_INFINITY
- var minY = Float.POSITIVE_INFINITY
- var maxX = Float.NEGATIVE_INFINITY
- var maxY = Float.NEGATIVE_INFINITY
-
- for (pos in points) {
- minX = min(minX, pos.x)
- minY = min(minY, pos.y)
- maxX = max(maxX, pos.x)
- maxY = max(maxY, pos.y)
- }
- return Vec2(
- (minX + maxX) / 2f,
- (minY + maxY) / 2f
- )
-}
-
-fun coordToPx(coord: HexCoord, size: Float, offset: Vec2): Vec2 =
- Vec2(
- SQRT_3 * coord.q.toFloat() + SQRT_3 / 2.0f * coord.r.toFloat(),
- 1.5f * coord.r.toFloat()
- ).scale(size).add(offset)
-
-fun pxToCoord(px: Vec2, size: Float, offset: Vec2): HexCoord {
- val offsetted = px.add(offset.negated())
- var qf = (SQRT_3 / 3.0f * offsetted.x - 0.33333f * offsetted.y) / size
- var rf = (0.66666f * offsetted.y) / size
-
- val q = qf.roundToInt()
- val r = rf.roundToInt()
- qf -= q
- rf -= r
- return if (q.absoluteValue >= r.absoluteValue)
- HexCoord(q + (qf + 0.5f * rf).roundToInt(), r)
- else
- HexCoord(q, r + (rf + 0.5 * qf).roundToInt())
-}
-
-@JvmOverloads
-fun > Array.getSafe(key: String, default: T = this[0]): T {
- val lowercaseKey = key.lowercase(Locale.ROOT)
- return firstOrNull { it.name.lowercase(Locale.ROOT) == lowercaseKey } ?: default
-}
-
-@JvmOverloads
-fun > Array.getSafe(index: Byte, default: T = this[0]) = getSafe(index.toInt(), default)
-
-@JvmOverloads
-fun > Array.getSafe(index: Int, default: T = this[0]) = if (index in indices) this[index] else default
-
-fun String.withStyle(op: (Style) -> Style): MutableComponent = asTextComponent.withStyle(op)
-fun String.withStyle(style: Style): MutableComponent = asTextComponent.withStyle(style)
-fun String.withStyle(formatting: ChatFormatting): MutableComponent = asTextComponent.withStyle(formatting)
-fun String.withStyle(vararg formatting: ChatFormatting): MutableComponent = asTextComponent.withStyle(*formatting)
-
-infix fun String.styledWith(op: (Style) -> Style) = withStyle(op)
-infix fun String.styledWith(style: Style) = withStyle(style)
-infix fun String.styledWith(formatting: ChatFormatting) = withStyle(formatting)
-
-infix fun MutableComponent.styledWith(op: (Style) -> Style): MutableComponent = withStyle(op)
-infix fun MutableComponent.styledWith(style: Style): MutableComponent = withStyle(style)
-infix fun MutableComponent.styledWith(formatting: ChatFormatting): MutableComponent = withStyle(formatting)
-
-val String.black get() = this styledWith ChatFormatting.BLACK
-val MutableComponent.black get() = this styledWith ChatFormatting.BLACK
-
-val String.darkBlue get() = this styledWith ChatFormatting.DARK_BLUE
-val MutableComponent.darkBlue get() = this styledWith ChatFormatting.DARK_BLUE
-
-val String.darkGreen get() = this styledWith ChatFormatting.DARK_GREEN
-val MutableComponent.darkGreen get() = this styledWith ChatFormatting.DARK_GREEN
-
-val String.darkAqua get() = this styledWith ChatFormatting.DARK_AQUA
-val MutableComponent.darkAqua get() = this styledWith ChatFormatting.DARK_AQUA
-
-val String.darkRed get() = this styledWith ChatFormatting.DARK_RED
-val MutableComponent.darkRed get() = this styledWith ChatFormatting.DARK_RED
-
-val String.darkPurple get() = this styledWith ChatFormatting.DARK_PURPLE
-val MutableComponent.darkPurple get() = this styledWith ChatFormatting.DARK_PURPLE
-
-val String.gold get() = this styledWith ChatFormatting.GOLD
-val MutableComponent.gold get() = this styledWith ChatFormatting.GOLD
-
-val String.gray get() = this styledWith ChatFormatting.GRAY
-val MutableComponent.gray get() = this styledWith ChatFormatting.GRAY
-
-val String.darkGray get() = this styledWith ChatFormatting.DARK_GRAY
-val MutableComponent.darkGray get() = this styledWith ChatFormatting.DARK_GRAY
-
-val String.blue get() = this styledWith ChatFormatting.BLUE
-val MutableComponent.blue get() = this styledWith ChatFormatting.BLUE
-
-val String.green get() = this styledWith ChatFormatting.GREEN
-val MutableComponent.green get() = this styledWith ChatFormatting.GREEN
-
-val String.aqua get() = this styledWith ChatFormatting.AQUA
-val MutableComponent.aqua get() = this styledWith ChatFormatting.AQUA
-
-val String.red get() = this styledWith ChatFormatting.RED
-val MutableComponent.red get() = this styledWith ChatFormatting.RED
-
-val String.lightPurple get() = this styledWith ChatFormatting.LIGHT_PURPLE
-val MutableComponent.lightPurple get() = this styledWith ChatFormatting.LIGHT_PURPLE
-
-val String.yellow get() = this styledWith ChatFormatting.YELLOW
-val MutableComponent.yellow get() = this styledWith ChatFormatting.YELLOW
-
-val String.white get() = this styledWith ChatFormatting.WHITE
-val MutableComponent.white get() = this styledWith ChatFormatting.WHITE
-
-val String.obfuscated get() = this styledWith ChatFormatting.OBFUSCATED
-val MutableComponent.obfuscated get() = this styledWith ChatFormatting.OBFUSCATED
-
-val String.bold get() = this styledWith ChatFormatting.BOLD
-val MutableComponent.bold get() = this styledWith ChatFormatting.BOLD
-
-val String.strikethrough get() = this styledWith ChatFormatting.STRIKETHROUGH
-val MutableComponent.strikethrough get() = this styledWith ChatFormatting.STRIKETHROUGH
-
-val String.underline get() = this styledWith ChatFormatting.UNDERLINE
-val MutableComponent.underline get() = this styledWith ChatFormatting.UNDERLINE
-
-val String.italic get() = this styledWith ChatFormatting.ITALIC
-val MutableComponent.italic get() = this styledWith ChatFormatting.ITALIC
-
-operator fun MutableComponent.plusAssign(component: Component) {
- append(component)
-}
-
-val String.asTextComponent: MutableComponent get() = Component.literal(this)
-val String.asTranslatedComponent: MutableComponent get() = Component.translatable(this)
-
-fun String.asTranslatedComponent(vararg args: Any): MutableComponent = Component.translatable(this, *args)
-
-/**
- * Represents a value that the garbage collector is still allowed to collect.
- * To create an instance of a [WeakValue], use [weakReference] or [weakMapped].
- */
-interface WeakValue {
- var value: T?
-}
-
-/**
- * A weakly referenced value that relies directly on a [WeakReference].
- *
- * This means that if there are no other places where the contained object is referenced,
- * the reference will expire, and value contained within this reference will become null.
- */
-private class WeakReferencedValue(var reference: WeakReference?) : WeakValue {
- override var value: T?
- get() = reference?.get()
- set(value) {
- reference = value?.let(::WeakReference)
- }
-}
-
-/**
- * A weakly referenced value that relies on a [WeakHashMap].
- *
- * Unlike [WeakReferencedValue], it relies on the continued existence of something else (obtained by [keyGen]).
- * For example, this can be used to hold an entity, and have the reference expire when the world it's in is unloaded.
- */
-private class WeakMappedValue(val keyGen: (T) -> K) : WeakValue {
- val reference = WeakHashMap()
- override var value: T?
- get() = reference.values.firstOrNull()
- set(value) {
- reference.clear()
- if (value != null) reference[keyGen(value)] = value
- }
-}
-
-/**
- * Creates a [WeakReferencedValue], the contents of which will expire when nothing else is referencing them.
- */
-fun weakReference(value: T? = null): WeakValue = WeakReferencedValue(value?.let { WeakReference(it) })
-
-/**
- * Creates a [WeakMappedValue], the contents of which will expire when nothing else is referencing the value returned by [keyGen].
- */
-fun weakMapped(keyGen: (T) -> K): WeakValue = WeakMappedValue(keyGen)
-
-// kt boilerplate for making WeakValues work as delegates (using the keyword `by`)
-@Suppress("NOTHING_TO_INLINE")
-inline operator fun WeakValue.getValue(thisRef: Any?, property: KProperty<*>): T? = value
-
-@Suppress("NOTHING_TO_INLINE")
-inline operator fun WeakValue