Merge branch 'main' into mishaps

This commit is contained in:
gamma-delta 2022-03-26 23:45:17 -05:00
commit 1f3f04acf6
90 changed files with 988 additions and 86 deletions

View file

@ -35,9 +35,9 @@ java.toolchain.languageVersion = JavaLanguageVersion.of(17)
// Adds the Kotlin Gradle plugin
buildscript {
dependencies {
classpath "org.jetbrains.kotlin:kotlin-gradle-plugin:1.6.0"
classpath "org.jetbrains.kotlin:kotlin-gradle-plugin:1.6.10"
// OPTIONAL Kotlin Serialization plugin
classpath 'org.jetbrains.kotlin:kotlin-serialization:1.6.0'
classpath 'org.jetbrains.kotlin:kotlin-serialization:1.6.10'
}
}
apply plugin: 'kotlin'

View file

@ -3,10 +3,12 @@
aed50918bad8a7b00cd26e45d67eb509a04c9f6c assets/hexcasting/blockstates/amethyst_tiles.json
27cedb7c1bb8fe4bc1c9b0ecb69678999ca08377 assets/hexcasting/blockstates/ancient_scroll_paper.json
080fce1ae9fb8eeb7fc0cb7ad0a2db05b2ca3dc5 assets/hexcasting/blockstates/ancient_scroll_paper_lantern.json
2834b4ef19393aabf44d659d032d0cabe2c36a4f assets/hexcasting/blockstates/empty_directrix.json
4d62b41c90cb0c5b94697e151c4aad964fb56727 assets/hexcasting/blockstates/empty_impetus.json
6ed9718a95e195cd19dcca317e653e83f830f1d1 assets/hexcasting/blockstates/impetus_look.json
8d7c7bfdca1def0205714465422d327dbcc00539 assets/hexcasting/blockstates/impetus_rightclick.json
0c9402bc7269b1069a2d39f960b2e3095d5c1733 assets/hexcasting/blockstates/impetus_storedplayer.json
73febb72e52a34e4d7abaf243a69c2e22c644ee2 assets/hexcasting/blockstates/redstone_directrix.json
1c138caef4d5964cba77dc2b5dc3febe28ab65b7 assets/hexcasting/blockstates/scroll_paper.json
77e723163f415795437b810fe87c348c96a989be assets/hexcasting/blockstates/scroll_paper_lantern.json
5cb63493ae07f5ab5d8f686e3553c97a85105931 assets/hexcasting/blockstates/slate.json
@ -15,6 +17,12 @@ de50477d8d34bbd69db98249cc6c878be8bc80f3 assets/hexcasting/models/block/amethyst
df994438c20d9dec9009c9c56de74860a847681b assets/hexcasting/models/block/amethyst_tiles.json
4e65ad75eeee22fa1d2c899fc86ac8b7b9a43701 assets/hexcasting/models/block/ancient_scroll_paper.json
2a03847eb4ce6679219784cd1e29408e9cdb2c0b assets/hexcasting/models/block/ancient_scroll_paper_lantern.json
dee605b03de1e145b8fe1b5e57cbc86cc8ceae9e assets/hexcasting/models/block/empty_directrix_dim_x.json
f23e20b75d407758c1def44d7f7a6c648fac3d59 assets/hexcasting/models/block/empty_directrix_dim_y.json
f5f34f91c22a91e479a038cedd383fa807385d20 assets/hexcasting/models/block/empty_directrix_dim_z.json
bb82eb5e96b56726bdc2146e3d5ee9259c404b66 assets/hexcasting/models/block/empty_directrix_lit_x.json
73c931554d691d679b4ac4f35f7d4b37c947310c assets/hexcasting/models/block/empty_directrix_lit_y.json
085b773f8f362754ac773a8a1b3c6d8f5661b914 assets/hexcasting/models/block/empty_directrix_lit_z.json
94c2f39fc0e4d53acbc0e8b378b0b00d0f0db7ab assets/hexcasting/models/block/empty_impetus_dim_down.json
d4d59f1e508715190a69baeb23068e3297c8e6d0 assets/hexcasting/models/block/empty_impetus_dim_east.json
c55a466e8878d6144b7b1da08eb4a6db7e12aefb assets/hexcasting/models/block/empty_impetus_dim_north.json
@ -63,6 +71,30 @@ bae9e764c5cd4faa1fb91b12e95e0cb3fa23b1e2 assets/hexcasting/models/block/impetus_
2e3426d3f3a530168b92a7276cbc2169f0c0a620 assets/hexcasting/models/block/impetus_storedplayer_lit_south.json
b13533d0c0085a5965d2143535e5004281b06f8b assets/hexcasting/models/block/impetus_storedplayer_lit_up.json
f7e114f1cb8bf4c8de3fc7bd3238a30bfdca99a5 assets/hexcasting/models/block/impetus_storedplayer_lit_west.json
81cb2a01937c3aed1e6a8091bdb2e0287297075f assets/hexcasting/models/block/redstone_directrix_powered_dim_down.json
deb0e05ddd90fe3f724a2faa9b466660a130bb0a assets/hexcasting/models/block/redstone_directrix_powered_dim_east.json
959a401d73e8ac85ae4d54a6de2d436816210e4b assets/hexcasting/models/block/redstone_directrix_powered_dim_north.json
75d6c73cf1d1771c8317f1d243d26a6a293614cd assets/hexcasting/models/block/redstone_directrix_powered_dim_south.json
82aad82e1720d8d0cdd668205967a811076d1e9a assets/hexcasting/models/block/redstone_directrix_powered_dim_up.json
479686ac2701b69fa308920e1d7ebebc1edc51c1 assets/hexcasting/models/block/redstone_directrix_powered_dim_west.json
50a7d9e5453e9daa6e998fe26f4d1ecef3f554f2 assets/hexcasting/models/block/redstone_directrix_powered_lit_down.json
3f8bc7677d54d35b38919306c8c746d0f18699f7 assets/hexcasting/models/block/redstone_directrix_powered_lit_east.json
1ad98d64732d64f7585e7d64fb7d509e819dbfdb assets/hexcasting/models/block/redstone_directrix_powered_lit_north.json
26fc3ab6a2aff5bf1e3af4844a81e89d576d2815 assets/hexcasting/models/block/redstone_directrix_powered_lit_south.json
72a1b531e11859621ee2f7fb1237d8b6df2e4ce1 assets/hexcasting/models/block/redstone_directrix_powered_lit_up.json
8854054092eabce17ad2c9b52257d6e9369e21d2 assets/hexcasting/models/block/redstone_directrix_powered_lit_west.json
f1aa939c0e5359ebb5a2e6e605443aeae8e7190a assets/hexcasting/models/block/redstone_directrix_unpowered_dim_down.json
44bc26b6062d9639ad9df8058a4a578c89167497 assets/hexcasting/models/block/redstone_directrix_unpowered_dim_east.json
4d8dd7edf79d124fe7534d403176f0987c38f2bc assets/hexcasting/models/block/redstone_directrix_unpowered_dim_north.json
6f2cade3581d4814be37a9fdc600b6feb6e60e36 assets/hexcasting/models/block/redstone_directrix_unpowered_dim_south.json
273488e8738ba3ae133434765ce3dc008d97320b assets/hexcasting/models/block/redstone_directrix_unpowered_dim_up.json
15e7f499cf6f31f69059758d2c38a73822aa6874 assets/hexcasting/models/block/redstone_directrix_unpowered_dim_west.json
982e76b746ccfd1389892a05d59de9a760777beb assets/hexcasting/models/block/redstone_directrix_unpowered_lit_down.json
a752ca73fe255f4cb2d062cba4447190985a795c assets/hexcasting/models/block/redstone_directrix_unpowered_lit_east.json
7b0f2db78d809b4c26b72c97b0f1e1d402a78ce5 assets/hexcasting/models/block/redstone_directrix_unpowered_lit_north.json
52ddbb9ce734899ede3b4c51611ce7efbad53790 assets/hexcasting/models/block/redstone_directrix_unpowered_lit_south.json
69fad01ca4978a584fe1fc76e49bda284b5bbc41 assets/hexcasting/models/block/redstone_directrix_unpowered_lit_up.json
510f136cd3bbdb9571e2f90b54678b50808ba41b assets/hexcasting/models/block/redstone_directrix_unpowered_lit_west.json
649a5d560534d6f9502ed4f2d0fd88e3afecfa24 assets/hexcasting/models/block/scroll_paper.json
9327633bd23735970a1ffe9811593a668e05947d assets/hexcasting/models/block/scroll_paper_lantern.json
d51541b464840530f4e734db1f67ed20e811ad14 assets/hexcasting/models/block/slate_block.json
@ -95,6 +127,7 @@ c2ceb08a8662a7e4a311401b0baced1add6f2e35 assets/hexcasting/models/item/dye_color
f41fb9405b869644333872cd1ece40b1b07410d2 assets/hexcasting/models/item/dye_colorizer_red.json
5894e7a1cc38ae5b09c651791c65c983d984d20c assets/hexcasting/models/item/dye_colorizer_white.json
07959b86ed25559b4960c5f4aa7bab88bf9b5bf1 assets/hexcasting/models/item/dye_colorizer_yellow.json
2d92703e675e4e5b1c2ee6ec4e9d4ca592bf1b40 assets/hexcasting/models/item/empty_directrix.json
0a552831b1ae261666bf1c8f76af55582becddaa assets/hexcasting/models/item/empty_impetus.json
f7f98a306a8a0529a54446b4876e624201525a1d assets/hexcasting/models/item/focus.json
0146e90177ed71b25d2936ff3b2d9975e47c5142 assets/hexcasting/models/item/focus_double.json
@ -145,6 +178,7 @@ fd858303001437d5aee2f134b4dce56fb8afb0aa assets/hexcasting/models/item/pride_col
e7b88cde507911c0ad1bf60976dcc43a319d498d assets/hexcasting/models/item/pride_colorizer_7.json
372ebac400778d51f5f3d32d98b1021b52da6f09 assets/hexcasting/models/item/pride_colorizer_8.json
352169689d1b82d670142478b67a1515bd71d93d assets/hexcasting/models/item/pride_colorizer_9.json
81c0a8098b595f9704e3b7b65f240bdd48457289 assets/hexcasting/models/item/redstone_directrix.json
9ef07e2885063ed1ffe1cb8f7728f26cb7c9881e assets/hexcasting/models/item/scroll.json
297b05008b9ab37b5881820a0f5c99f7441a9dfe assets/hexcasting/models/item/scroll_ancient.json
7bc2499b363ab4bef749393f2984fae9e76ea982 assets/hexcasting/models/item/scroll_paper.json
@ -226,9 +260,9 @@ eb17a23e7a9543f33922c056cdf0d63def176bf2 data/hexcasting/advancements/recipes/he
cfd93238a1774a30a9da7c6b84e66c2e1e22f243 data/hexcasting/advancements/recipes/hexcasting/wand.json
d31956749bebbcb3f0d3c37f89b569642ac8c2fb data/hexcasting/advancements/root.json
739cbdf7f204132f2acfab4df8d21c6197aa1456 data/hexcasting/advancements/y_u_no_cast_angy.json
b1a039d0e90be7882e7558b26a4ffaa30d22b968 data/hexcasting/loot_modifiers/amethyst_cluster_charged.json
e3405d91602cacf6da7d12dd35e628c6ccc749cc data/hexcasting/loot_modifiers/amethyst_cluster_dust.json
b0eac0b211d4621ab2cdda44d5d03f66582d88f7 data/hexcasting/loot_modifiers/amethyst_cluster_shard_reducer.json
70a8f77d38affa642afbfceebe129358737b09ac data/hexcasting/loot_modifiers/amethyst_cluster_charged.json
f746acc6b3e798d3b95f4ceb463c648b1f3ae8c3 data/hexcasting/loot_modifiers/amethyst_cluster_dust.json
985be42281c0396c22b4976b8466448dccd716ec data/hexcasting/loot_modifiers/amethyst_cluster_shard_reducer.json
e04be385fa9daa422e41a38ddd70fdd065107968 data/hexcasting/loot_modifiers/scroll_bastion.json
6569766d1579114149eb0a1154d05ec3c964b2a3 data/hexcasting/loot_modifiers/scroll_cartographer.json
afecba3144e00505977a4ab4de7940f949ab7818 data/hexcasting/loot_modifiers/scroll_dungeon.json
@ -240,8 +274,12 @@ afecba3144e00505977a4ab4de7940f949ab7818 data/hexcasting/loot_modifiers/scroll_d
79421f4528355837d12fbfcccb19e08a1eb40bff data/hexcasting/loot_tables/blocks/amethyst_tiles.json
558ce469f2bcbf8f0498815b6b4c1fd4f2bfbc2b data/hexcasting/loot_tables/blocks/ancient_scroll_paper.json
4ba256a96d6794214775c6ea94074f03ace6cb90 data/hexcasting/loot_tables/blocks/ancient_scroll_paper_lantern.json
41834ac09febbefdca79bdbb404d42c91a4de2e5 data/hexcasting/loot_tables/blocks/empty_directrix.json
5944235a01e31fbe3f2799f667b6deb2f8a62ca6 data/hexcasting/loot_tables/blocks/empty_impetus.json
9d882c43431b33de256f2bc0acb831a393ab4740 data/hexcasting/loot_tables/blocks/impetus_look.json
c87dcdb39d1d9cb0429763bbd32631cbf15047aa data/hexcasting/loot_tables/blocks/impetus_rightclick.json
4c65e5287cefeec17703cb4959e12546b753d26b data/hexcasting/loot_tables/blocks/impetus_storedplayer.json
e56bb2096532f216855128d5ad15085415ed9931 data/hexcasting/loot_tables/blocks/redstone_directrix.json
e66ddc68e90e5e779f273a8d081c2f63e81d6698 data/hexcasting/loot_tables/blocks/scroll_paper.json
fd662ce6977b96065bd438ff332bc5b9f62560e6 data/hexcasting/loot_tables/blocks/scroll_paper_lantern.json
17e53b980127473558a1a544e59d329a4701e7cc data/hexcasting/loot_tables/blocks/slate.json
@ -307,5 +345,5 @@ d14cf2f8f0895a5b6dc09b7582c0abf1c2514adf data/hexcasting/recipes/sub_sandwich.js
14d6be5d47b54676a349564ea32c045c76c39b45 data/hexcasting/recipes/uuid_colorizer.json
0521d57838cb3e9795fc02ce47aa58db3b0188f9 data/hexcasting/recipes/wand.json
f930dbc5b41d42150d388e39b29b940229658809 data/minecraft/tags/blocks/crystal_sound_blocks.json
6ac1852c49b696a3f31bbd83a686b348da86b003 data/minecraft/tags/blocks/mineable/pickaxe.json
f5c40ef0f3aaaa7e51f6407e96d7524bde741175 data/minecraft/tags/blocks/mineable/pickaxe.json
f55afc2c05d93b5a44bc9fd73c5e81e71b183965 data/minecraft/tags/blocks/mineable/shovel.json

View file

@ -0,0 +1,22 @@
{
"variants": {
"axis=x,energized=false": {
"model": "hexcasting:block/empty_directrix_dim_x"
},
"axis=y,energized=false": {
"model": "hexcasting:block/empty_directrix_dim_y"
},
"axis=z,energized=false": {
"model": "hexcasting:block/empty_directrix_dim_z"
},
"axis=x,energized=true": {
"model": "hexcasting:block/empty_directrix_lit_x"
},
"axis=y,energized=true": {
"model": "hexcasting:block/empty_directrix_lit_y"
},
"axis=z,energized=true": {
"model": "hexcasting:block/empty_directrix_lit_z"
}
}
}

View file

@ -0,0 +1,76 @@
{
"variants": {
"energized=false,facing=down,powered=false": {
"model": "hexcasting:block/redstone_directrix_unpowered_dim_down"
},
"energized=true,facing=down,powered=false": {
"model": "hexcasting:block/redstone_directrix_unpowered_lit_down"
},
"energized=false,facing=up,powered=false": {
"model": "hexcasting:block/redstone_directrix_unpowered_dim_up"
},
"energized=true,facing=up,powered=false": {
"model": "hexcasting:block/redstone_directrix_unpowered_lit_up"
},
"energized=false,facing=north,powered=false": {
"model": "hexcasting:block/redstone_directrix_unpowered_dim_north"
},
"energized=true,facing=north,powered=false": {
"model": "hexcasting:block/redstone_directrix_unpowered_lit_north"
},
"energized=false,facing=south,powered=false": {
"model": "hexcasting:block/redstone_directrix_unpowered_dim_south"
},
"energized=true,facing=south,powered=false": {
"model": "hexcasting:block/redstone_directrix_unpowered_lit_south"
},
"energized=false,facing=west,powered=false": {
"model": "hexcasting:block/redstone_directrix_unpowered_dim_west"
},
"energized=true,facing=west,powered=false": {
"model": "hexcasting:block/redstone_directrix_unpowered_lit_west"
},
"energized=false,facing=east,powered=false": {
"model": "hexcasting:block/redstone_directrix_unpowered_dim_east"
},
"energized=true,facing=east,powered=false": {
"model": "hexcasting:block/redstone_directrix_unpowered_lit_east"
},
"energized=false,facing=down,powered=true": {
"model": "hexcasting:block/redstone_directrix_powered_dim_down"
},
"energized=true,facing=down,powered=true": {
"model": "hexcasting:block/redstone_directrix_powered_lit_down"
},
"energized=false,facing=up,powered=true": {
"model": "hexcasting:block/redstone_directrix_powered_dim_up"
},
"energized=true,facing=up,powered=true": {
"model": "hexcasting:block/redstone_directrix_powered_lit_up"
},
"energized=false,facing=north,powered=true": {
"model": "hexcasting:block/redstone_directrix_powered_dim_north"
},
"energized=true,facing=north,powered=true": {
"model": "hexcasting:block/redstone_directrix_powered_lit_north"
},
"energized=false,facing=south,powered=true": {
"model": "hexcasting:block/redstone_directrix_powered_dim_south"
},
"energized=true,facing=south,powered=true": {
"model": "hexcasting:block/redstone_directrix_powered_lit_south"
},
"energized=false,facing=west,powered=true": {
"model": "hexcasting:block/redstone_directrix_powered_dim_west"
},
"energized=true,facing=west,powered=true": {
"model": "hexcasting:block/redstone_directrix_powered_lit_west"
},
"energized=false,facing=east,powered=true": {
"model": "hexcasting:block/redstone_directrix_powered_dim_east"
},
"energized=true,facing=east,powered=true": {
"model": "hexcasting:block/redstone_directrix_powered_lit_east"
}
}
}

View file

@ -0,0 +1,12 @@
{
"parent": "minecraft:block/cube",
"textures": {
"down": "hexcasting:block/directrix/empty/horiz_dim",
"up": "hexcasting:block/directrix/empty/horiz_dim",
"north": "hexcasting:block/directrix/empty/horiz_dim",
"south": "hexcasting:block/directrix/empty/horiz_dim",
"east": "hexcasting:block/directrix/empty/end_dim",
"west": "hexcasting:block/directrix/empty/end_dim",
"particle": "hexcasting:block/slate"
}
}

View file

@ -0,0 +1,12 @@
{
"parent": "minecraft:block/cube",
"textures": {
"down": "hexcasting:block/directrix/empty/end_dim",
"up": "hexcasting:block/directrix/empty/end_dim",
"north": "hexcasting:block/directrix/empty/vert_dim",
"south": "hexcasting:block/directrix/empty/vert_dim",
"east": "hexcasting:block/directrix/empty/vert_dim",
"west": "hexcasting:block/directrix/empty/vert_dim",
"particle": "hexcasting:block/slate"
}
}

View file

@ -0,0 +1,12 @@
{
"parent": "minecraft:block/cube",
"textures": {
"down": "hexcasting:block/directrix/empty/vert_dim",
"up": "hexcasting:block/directrix/empty/vert_dim",
"north": "hexcasting:block/directrix/empty/end_dim",
"south": "hexcasting:block/directrix/empty/end_dim",
"east": "hexcasting:block/directrix/empty/horiz_dim",
"west": "hexcasting:block/directrix/empty/horiz_dim",
"particle": "hexcasting:block/slate"
}
}

View file

@ -0,0 +1,12 @@
{
"parent": "minecraft:block/cube",
"textures": {
"down": "hexcasting:block/directrix/empty/horiz_lit",
"up": "hexcasting:block/directrix/empty/horiz_lit",
"north": "hexcasting:block/directrix/empty/horiz_lit",
"south": "hexcasting:block/directrix/empty/horiz_lit",
"east": "hexcasting:block/directrix/empty/end_lit",
"west": "hexcasting:block/directrix/empty/end_lit",
"particle": "hexcasting:block/slate"
}
}

View file

@ -0,0 +1,12 @@
{
"parent": "minecraft:block/cube",
"textures": {
"down": "hexcasting:block/directrix/empty/end_lit",
"up": "hexcasting:block/directrix/empty/end_lit",
"north": "hexcasting:block/directrix/empty/vert_lit",
"south": "hexcasting:block/directrix/empty/vert_lit",
"east": "hexcasting:block/directrix/empty/vert_lit",
"west": "hexcasting:block/directrix/empty/vert_lit",
"particle": "hexcasting:block/slate"
}
}

View file

@ -0,0 +1,12 @@
{
"parent": "minecraft:block/cube",
"textures": {
"down": "hexcasting:block/directrix/empty/vert_lit",
"up": "hexcasting:block/directrix/empty/vert_lit",
"north": "hexcasting:block/directrix/empty/end_lit",
"south": "hexcasting:block/directrix/empty/end_lit",
"east": "hexcasting:block/directrix/empty/horiz_lit",
"west": "hexcasting:block/directrix/empty/horiz_lit",
"particle": "hexcasting:block/slate"
}
}

View file

@ -0,0 +1,12 @@
{
"parent": "minecraft:block/cube",
"textures": {
"down": "hexcasting:block/directrix/redstone/front_dim",
"up": "hexcasting:block/directrix/redstone/back_powered",
"north": "hexcasting:block/directrix/redstone/down_powered_dim",
"south": "hexcasting:block/directrix/redstone/down_powered_dim",
"east": "hexcasting:block/directrix/redstone/down_powered_dim",
"west": "hexcasting:block/directrix/redstone/down_powered_dim",
"particle": "hexcasting:block/slate"
}
}

View file

@ -0,0 +1,12 @@
{
"parent": "minecraft:block/cube",
"textures": {
"down": "hexcasting:block/directrix/redstone/right_powered_dim",
"up": "hexcasting:block/directrix/redstone/right_powered_dim",
"north": "hexcasting:block/directrix/redstone/left_powered_dim",
"south": "hexcasting:block/directrix/redstone/right_powered_dim",
"east": "hexcasting:block/directrix/redstone/front_dim",
"west": "hexcasting:block/directrix/redstone/back_powered",
"particle": "hexcasting:block/slate"
}
}

View file

@ -0,0 +1,12 @@
{
"parent": "minecraft:block/cube",
"textures": {
"down": "hexcasting:block/directrix/redstone/down_powered_dim",
"up": "hexcasting:block/directrix/redstone/up_powered_dim",
"north": "hexcasting:block/directrix/redstone/front_dim",
"south": "hexcasting:block/directrix/redstone/back_powered",
"east": "hexcasting:block/directrix/redstone/right_powered_dim",
"west": "hexcasting:block/directrix/redstone/left_powered_dim",
"particle": "hexcasting:block/slate"
}
}

View file

@ -0,0 +1,12 @@
{
"parent": "minecraft:block/cube",
"textures": {
"down": "hexcasting:block/directrix/redstone/up_powered_dim",
"up": "hexcasting:block/directrix/redstone/down_powered_dim",
"north": "hexcasting:block/directrix/redstone/back_powered",
"south": "hexcasting:block/directrix/redstone/front_dim",
"east": "hexcasting:block/directrix/redstone/left_powered_dim",
"west": "hexcasting:block/directrix/redstone/right_powered_dim",
"particle": "hexcasting:block/slate"
}
}

View file

@ -0,0 +1,12 @@
{
"parent": "minecraft:block/cube",
"textures": {
"down": "hexcasting:block/directrix/redstone/back_powered",
"up": "hexcasting:block/directrix/redstone/front_dim",
"north": "hexcasting:block/directrix/redstone/up_powered_dim",
"south": "hexcasting:block/directrix/redstone/up_powered_dim",
"east": "hexcasting:block/directrix/redstone/up_powered_dim",
"west": "hexcasting:block/directrix/redstone/up_powered_dim",
"particle": "hexcasting:block/slate"
}
}

View file

@ -0,0 +1,12 @@
{
"parent": "minecraft:block/cube",
"textures": {
"down": "hexcasting:block/directrix/redstone/left_powered_dim",
"up": "hexcasting:block/directrix/redstone/left_powered_dim",
"north": "hexcasting:block/directrix/redstone/right_powered_dim",
"south": "hexcasting:block/directrix/redstone/left_powered_dim",
"east": "hexcasting:block/directrix/redstone/back_powered",
"west": "hexcasting:block/directrix/redstone/front_dim",
"particle": "hexcasting:block/slate"
}
}

View file

@ -0,0 +1,12 @@
{
"parent": "minecraft:block/cube",
"textures": {
"down": "hexcasting:block/directrix/redstone/front_lit",
"up": "hexcasting:block/directrix/redstone/back_powered",
"north": "hexcasting:block/directrix/redstone/down_powered_lit",
"south": "hexcasting:block/directrix/redstone/down_powered_lit",
"east": "hexcasting:block/directrix/redstone/down_powered_lit",
"west": "hexcasting:block/directrix/redstone/down_powered_lit",
"particle": "hexcasting:block/slate"
}
}

View file

@ -0,0 +1,12 @@
{
"parent": "minecraft:block/cube",
"textures": {
"down": "hexcasting:block/directrix/redstone/right_powered_lit",
"up": "hexcasting:block/directrix/redstone/right_powered_lit",
"north": "hexcasting:block/directrix/redstone/left_powered_lit",
"south": "hexcasting:block/directrix/redstone/right_powered_lit",
"east": "hexcasting:block/directrix/redstone/front_lit",
"west": "hexcasting:block/directrix/redstone/back_powered",
"particle": "hexcasting:block/slate"
}
}

View file

@ -0,0 +1,12 @@
{
"parent": "minecraft:block/cube",
"textures": {
"down": "hexcasting:block/directrix/redstone/down_powered_lit",
"up": "hexcasting:block/directrix/redstone/up_powered_lit",
"north": "hexcasting:block/directrix/redstone/front_lit",
"south": "hexcasting:block/directrix/redstone/back_powered",
"east": "hexcasting:block/directrix/redstone/right_powered_lit",
"west": "hexcasting:block/directrix/redstone/left_powered_lit",
"particle": "hexcasting:block/slate"
}
}

View file

@ -0,0 +1,12 @@
{
"parent": "minecraft:block/cube",
"textures": {
"down": "hexcasting:block/directrix/redstone/up_powered_lit",
"up": "hexcasting:block/directrix/redstone/down_powered_lit",
"north": "hexcasting:block/directrix/redstone/back_powered",
"south": "hexcasting:block/directrix/redstone/front_lit",
"east": "hexcasting:block/directrix/redstone/left_powered_lit",
"west": "hexcasting:block/directrix/redstone/right_powered_lit",
"particle": "hexcasting:block/slate"
}
}

View file

@ -0,0 +1,12 @@
{
"parent": "minecraft:block/cube",
"textures": {
"down": "hexcasting:block/directrix/redstone/back_powered",
"up": "hexcasting:block/directrix/redstone/front_lit",
"north": "hexcasting:block/directrix/redstone/up_powered_lit",
"south": "hexcasting:block/directrix/redstone/up_powered_lit",
"east": "hexcasting:block/directrix/redstone/up_powered_lit",
"west": "hexcasting:block/directrix/redstone/up_powered_lit",
"particle": "hexcasting:block/slate"
}
}

View file

@ -0,0 +1,12 @@
{
"parent": "minecraft:block/cube",
"textures": {
"down": "hexcasting:block/directrix/redstone/left_powered_lit",
"up": "hexcasting:block/directrix/redstone/left_powered_lit",
"north": "hexcasting:block/directrix/redstone/right_powered_lit",
"south": "hexcasting:block/directrix/redstone/left_powered_lit",
"east": "hexcasting:block/directrix/redstone/back_powered",
"west": "hexcasting:block/directrix/redstone/front_lit",
"particle": "hexcasting:block/slate"
}
}

View file

@ -0,0 +1,12 @@
{
"parent": "minecraft:block/cube",
"textures": {
"down": "hexcasting:block/directrix/redstone/front_dim",
"up": "hexcasting:block/directrix/redstone/back_unpowered",
"north": "hexcasting:block/directrix/redstone/down_unpowered_dim",
"south": "hexcasting:block/directrix/redstone/down_unpowered_dim",
"east": "hexcasting:block/directrix/redstone/down_unpowered_dim",
"west": "hexcasting:block/directrix/redstone/down_unpowered_dim",
"particle": "hexcasting:block/slate"
}
}

View file

@ -0,0 +1,12 @@
{
"parent": "minecraft:block/cube",
"textures": {
"down": "hexcasting:block/directrix/redstone/right_unpowered_dim",
"up": "hexcasting:block/directrix/redstone/right_unpowered_dim",
"north": "hexcasting:block/directrix/redstone/left_unpowered_dim",
"south": "hexcasting:block/directrix/redstone/right_unpowered_dim",
"east": "hexcasting:block/directrix/redstone/front_dim",
"west": "hexcasting:block/directrix/redstone/back_unpowered",
"particle": "hexcasting:block/slate"
}
}

View file

@ -0,0 +1,12 @@
{
"parent": "minecraft:block/cube",
"textures": {
"down": "hexcasting:block/directrix/redstone/down_unpowered_dim",
"up": "hexcasting:block/directrix/redstone/up_unpowered_dim",
"north": "hexcasting:block/directrix/redstone/front_dim",
"south": "hexcasting:block/directrix/redstone/back_unpowered",
"east": "hexcasting:block/directrix/redstone/right_unpowered_dim",
"west": "hexcasting:block/directrix/redstone/left_unpowered_dim",
"particle": "hexcasting:block/slate"
}
}

View file

@ -0,0 +1,12 @@
{
"parent": "minecraft:block/cube",
"textures": {
"down": "hexcasting:block/directrix/redstone/up_unpowered_dim",
"up": "hexcasting:block/directrix/redstone/down_unpowered_dim",
"north": "hexcasting:block/directrix/redstone/back_unpowered",
"south": "hexcasting:block/directrix/redstone/front_dim",
"east": "hexcasting:block/directrix/redstone/left_unpowered_dim",
"west": "hexcasting:block/directrix/redstone/right_unpowered_dim",
"particle": "hexcasting:block/slate"
}
}

View file

@ -0,0 +1,12 @@
{
"parent": "minecraft:block/cube",
"textures": {
"down": "hexcasting:block/directrix/redstone/back_unpowered",
"up": "hexcasting:block/directrix/redstone/front_dim",
"north": "hexcasting:block/directrix/redstone/up_unpowered_dim",
"south": "hexcasting:block/directrix/redstone/up_unpowered_dim",
"east": "hexcasting:block/directrix/redstone/up_unpowered_dim",
"west": "hexcasting:block/directrix/redstone/up_unpowered_dim",
"particle": "hexcasting:block/slate"
}
}

View file

@ -0,0 +1,12 @@
{
"parent": "minecraft:block/cube",
"textures": {
"down": "hexcasting:block/directrix/redstone/left_unpowered_dim",
"up": "hexcasting:block/directrix/redstone/left_unpowered_dim",
"north": "hexcasting:block/directrix/redstone/right_unpowered_dim",
"south": "hexcasting:block/directrix/redstone/left_unpowered_dim",
"east": "hexcasting:block/directrix/redstone/back_unpowered",
"west": "hexcasting:block/directrix/redstone/front_dim",
"particle": "hexcasting:block/slate"
}
}

View file

@ -0,0 +1,12 @@
{
"parent": "minecraft:block/cube",
"textures": {
"down": "hexcasting:block/directrix/redstone/front_lit",
"up": "hexcasting:block/directrix/redstone/back_unpowered",
"north": "hexcasting:block/directrix/redstone/down_unpowered_lit",
"south": "hexcasting:block/directrix/redstone/down_unpowered_lit",
"east": "hexcasting:block/directrix/redstone/down_unpowered_lit",
"west": "hexcasting:block/directrix/redstone/down_unpowered_lit",
"particle": "hexcasting:block/slate"
}
}

View file

@ -0,0 +1,12 @@
{
"parent": "minecraft:block/cube",
"textures": {
"down": "hexcasting:block/directrix/redstone/right_unpowered_lit",
"up": "hexcasting:block/directrix/redstone/right_unpowered_lit",
"north": "hexcasting:block/directrix/redstone/left_unpowered_lit",
"south": "hexcasting:block/directrix/redstone/right_unpowered_lit",
"east": "hexcasting:block/directrix/redstone/front_lit",
"west": "hexcasting:block/directrix/redstone/back_unpowered",
"particle": "hexcasting:block/slate"
}
}

View file

@ -0,0 +1,12 @@
{
"parent": "minecraft:block/cube",
"textures": {
"down": "hexcasting:block/directrix/redstone/down_unpowered_lit",
"up": "hexcasting:block/directrix/redstone/up_unpowered_lit",
"north": "hexcasting:block/directrix/redstone/front_lit",
"south": "hexcasting:block/directrix/redstone/back_unpowered",
"east": "hexcasting:block/directrix/redstone/right_unpowered_lit",
"west": "hexcasting:block/directrix/redstone/left_unpowered_lit",
"particle": "hexcasting:block/slate"
}
}

View file

@ -0,0 +1,12 @@
{
"parent": "minecraft:block/cube",
"textures": {
"down": "hexcasting:block/directrix/redstone/up_unpowered_lit",
"up": "hexcasting:block/directrix/redstone/down_unpowered_lit",
"north": "hexcasting:block/directrix/redstone/back_unpowered",
"south": "hexcasting:block/directrix/redstone/front_lit",
"east": "hexcasting:block/directrix/redstone/left_unpowered_lit",
"west": "hexcasting:block/directrix/redstone/right_unpowered_lit",
"particle": "hexcasting:block/slate"
}
}

View file

@ -0,0 +1,12 @@
{
"parent": "minecraft:block/cube",
"textures": {
"down": "hexcasting:block/directrix/redstone/back_unpowered",
"up": "hexcasting:block/directrix/redstone/front_lit",
"north": "hexcasting:block/directrix/redstone/up_unpowered_lit",
"south": "hexcasting:block/directrix/redstone/up_unpowered_lit",
"east": "hexcasting:block/directrix/redstone/up_unpowered_lit",
"west": "hexcasting:block/directrix/redstone/up_unpowered_lit",
"particle": "hexcasting:block/slate"
}
}

View file

@ -0,0 +1,12 @@
{
"parent": "minecraft:block/cube",
"textures": {
"down": "hexcasting:block/directrix/redstone/left_unpowered_lit",
"up": "hexcasting:block/directrix/redstone/left_unpowered_lit",
"north": "hexcasting:block/directrix/redstone/right_unpowered_lit",
"south": "hexcasting:block/directrix/redstone/left_unpowered_lit",
"east": "hexcasting:block/directrix/redstone/back_unpowered",
"west": "hexcasting:block/directrix/redstone/front_lit",
"particle": "hexcasting:block/slate"
}
}

View file

@ -0,0 +1,3 @@
{
"parent": "hexcasting:block/empty_directrix_dim_z"
}

View file

@ -0,0 +1,3 @@
{
"parent": "hexcasting:block/redstone_directrix_unpowered_dim_north"
}

View file

@ -21,9 +21,10 @@
"condition": "minecraft:table_bonus",
"enchantment": "minecraft:fortune",
"chances": [
0.25,
0.35,
0.5,
0.8,
0.9,
0.75,
1.0
]
}

View file

@ -22,7 +22,11 @@
"functions": [
{
"function": "minecraft:set_count",
"count": 4.0,
"count": {
"type": "minecraft:uniform",
"min": 1.0,
"max": 4.0
},
"add": false
},
{

View file

@ -3,6 +3,19 @@
{
"condition": "forge:loot_table_id",
"loot_table_id": "minecraft:blocks/amethyst_cluster"
},
{
"condition": "minecraft:inverted",
"term": {
"condition": "minecraft:match_tool",
"predicate": {
"enchantments": [
{
"enchantment": "minecraft:silk_touch"
}
]
}
}
}
],
"item": "minecraft:amethyst_shard",
@ -10,7 +23,7 @@
{
"function": "minecraft:set_count",
"count": -2.0,
"add": false
"add": true
}
],
"type": "paucal:add_item"

View file

@ -0,0 +1,16 @@
{
"type": "minecraft:block",
"pools": [
{
"name": "empty_directrix",
"rolls": 1.0,
"bonus_rolls": 0.0,
"entries": [
{
"type": "minecraft:item",
"name": "hexcasting:empty_directrix"
}
]
}
]
}

View file

@ -0,0 +1,16 @@
{
"type": "minecraft:block",
"pools": [
{
"name": "impetus_look",
"rolls": 1.0,
"bonus_rolls": 0.0,
"entries": [
{
"type": "minecraft:item",
"name": "hexcasting:impetus_look"
}
]
}
]
}

View file

@ -0,0 +1,16 @@
{
"type": "minecraft:block",
"pools": [
{
"name": "impetus_storedplayer",
"rolls": 1.0,
"bonus_rolls": 0.0,
"entries": [
{
"type": "minecraft:item",
"name": "hexcasting:impetus_storedplayer"
}
]
}
]
}

View file

@ -0,0 +1,16 @@
{
"type": "minecraft:block",
"pools": [
{
"name": "redstone_directrix",
"rolls": 1.0,
"bonus_rolls": 0.0,
"entries": [
{
"type": "minecraft:item",
"name": "hexcasting:redstone_directrix"
}
]
}
]
}

View file

@ -3,8 +3,12 @@
"values": [
"hexcasting:slate_block",
"hexcasting:slate",
"hexcasting:empty_directrix",
"hexcasting:redstone_directrix",
"hexcasting:empty_impetus",
"hexcasting:impetus_rightclick",
"hexcasting:impetus_look",
"hexcasting:impetus_storedplayer",
"hexcasting:amethyst_tiles",
"hexcasting:amethyst_sconce"
]

View file

@ -5,6 +5,8 @@ import at.petrak.hexcasting.api.circle.BlockAbstractImpetus;
import at.petrak.hexcasting.common.blocks.circles.BlockEmptyImpetus;
import at.petrak.hexcasting.common.blocks.circles.BlockEntitySlate;
import at.petrak.hexcasting.common.blocks.circles.BlockSlate;
import at.petrak.hexcasting.common.blocks.circles.directrix.BlockEmptyDirectrix;
import at.petrak.hexcasting.common.blocks.circles.directrix.BlockRedstoneDirectrix;
import at.petrak.hexcasting.common.blocks.circles.impetuses.*;
import at.petrak.hexcasting.common.blocks.decoration.BlockSconce;
import at.petrak.hexcasting.common.items.HexItems;
@ -57,6 +59,11 @@ public class HexBlocks {
public static final RegistryObject<BlockEmptyImpetus> EMPTY_IMPETUS = blockItem("empty_impetus",
() -> new BlockEmptyImpetus(slateish()));
public static final RegistryObject<BlockEmptyDirectrix> EMPTY_DIRECTRIX = blockItem("empty_directrix",
() -> new BlockEmptyDirectrix(slateish()));
public static final RegistryObject<BlockRedstoneDirectrix> DIRECTRIX_REDSTONE = blockItem("redstone_directrix",
() -> new BlockRedstoneDirectrix(slateish()));
public static final RegistryObject<BlockRightClickImpetus> IMPETUS_RIGHTCLICK = blockItem(
"impetus_rightclick",
() -> new BlockRightClickImpetus(slateish()

View file

@ -13,6 +13,7 @@ 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 net.minecraft.world.level.material.PushReaction;
import org.jetbrains.annotations.Nullable;
import java.util.EnumSet;
@ -53,6 +54,11 @@ public class BlockEmptyImpetus extends BlockCircleComponent {
return 0.5f;
}
@Override
public PushReaction getPistonPushReaction(BlockState pState) {
return PushReaction.BLOCK;
}
@Override
protected void createBlockStateDefinition(StateDefinition.Builder<Block, BlockState> builder) {
super.createBlockStateDefinition(builder);

View file

@ -0,0 +1,79 @@
package at.petrak.hexcasting.common.blocks.circles.directrix;
import at.petrak.hexcasting.api.circle.BlockCircleComponent;
import at.petrak.hexcasting.hexmath.HexPattern;
import net.minecraft.core.BlockPos;
import net.minecraft.core.Direction;
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.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.EnumProperty;
import net.minecraft.world.level.material.PushReaction;
import org.jetbrains.annotations.Nullable;
import java.util.EnumSet;
public class BlockEmptyDirectrix extends BlockCircleComponent {
public static final EnumProperty<Direction.Axis> AXIS = BlockStateProperties.AXIS;
public BlockEmptyDirectrix(Properties p_49795_) {
super(p_49795_);
this.registerDefaultState(this.stateDefinition.any()
.setValue(ENERGIZED, false)
.setValue(AXIS, Direction.Axis.X));
}
@Override
public boolean canEnterFromDirection(Direction enterDir, Direction normalDir, BlockPos pos, BlockState bs,
Level world) {
return true;
}
@Override
public EnumSet<Direction> exitDirections(BlockPos pos, BlockState bs, Level world) {
var sign = world.random.nextBoolean() ? Direction.AxisDirection.POSITIVE : Direction.AxisDirection.NEGATIVE;
return EnumSet.of(Direction.fromAxisAndDirection(bs.getValue(AXIS), sign));
}
@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 Direction.UP;
}
@Override
public float particleHeight(BlockPos pos, BlockState bs, Level world) {
return 0.5f;
}
@Override
public PushReaction getPistonPushReaction(BlockState pState) {
return PushReaction.BLOCK;
}
@Override
protected void createBlockStateDefinition(StateDefinition.Builder<Block, BlockState> builder) {
super.createBlockStateDefinition(builder);
builder.add(AXIS);
}
@Override
public BlockState getStateForPlacement(BlockPlaceContext pContext) {
return this.defaultBlockState().setValue(AXIS, pContext.getNearestLookingDirection().getAxis());
}
@Override
public BlockState rotate(BlockState pState, Rotation pRot) {
return pState.setValue(AXIS,
pRot.rotate(Direction.get(Direction.AxisDirection.POSITIVE, pState.getValue(AXIS))).getAxis());
}
}

View file

@ -0,0 +1,127 @@
package at.petrak.hexcasting.common.blocks.circles.directrix;
import at.petrak.hexcasting.api.circle.BlockCircleComponent;
import at.petrak.hexcasting.hexmath.HexPattern;
import net.minecraft.core.BlockPos;
import net.minecraft.core.Direction;
import net.minecraft.core.particles.DustParticleOptions;
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.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.BooleanProperty;
import net.minecraft.world.level.block.state.properties.DirectionProperty;
import net.minecraft.world.level.material.PushReaction;
import net.minecraft.world.phys.Vec3;
import org.jetbrains.annotations.Nullable;
import java.util.EnumSet;
import java.util.Random;
public class BlockRedstoneDirectrix extends BlockCircleComponent {
public static final DirectionProperty FACING = BlockStateProperties.FACING;
public static final BooleanProperty REDSTONE_POWERED = BlockStateProperties.POWERED;
public BlockRedstoneDirectrix(Properties p_49795_) {
super(p_49795_);
this.registerDefaultState(this.stateDefinition.any()
.setValue(REDSTONE_POWERED, false)
.setValue(ENERGIZED, false)
.setValue(FACING, Direction.NORTH));
}
@Override
public boolean canEnterFromDirection(Direction enterDir, Direction normalDir, BlockPos pos, BlockState bs,
Level world) {
return enterDir != getRealFacing(bs);
}
@Override
public EnumSet<Direction> exitDirections(BlockPos pos, BlockState bs, Level world) {
return EnumSet.of(getRealFacing(bs));
}
@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(getRealFacing(bs)), world, recursionLeft);
}
@Override
public float particleHeight(BlockPos pos, BlockState bs, Level world) {
return 0.5f;
}
protected Direction getRealFacing(BlockState bs) {
var facing = bs.getValue(FACING);
if (bs.getValue(REDSTONE_POWERED)) {
return facing.getOpposite();
} else {
return facing;
}
}
@Override
public void neighborChanged(BlockState pState, Level pLevel, BlockPos pPos, Block pBlock, BlockPos pFromPos,
boolean pIsMoving) {
super.neighborChanged(pState, pLevel, pPos, pBlock, pFromPos, pIsMoving);
if (!pLevel.isClientSide) {
boolean currentlyPowered = pState.getValue(REDSTONE_POWERED);
if (currentlyPowered != pLevel.hasNeighborSignal(pPos)) {
pLevel.setBlock(pPos, pState.setValue(REDSTONE_POWERED, !currentlyPowered), 2);
}
}
}
@Override
public void animateTick(BlockState bs, Level pLevel, BlockPos pos, Random rand) {
if (bs.getValue(REDSTONE_POWERED)) {
for (int i = 0; i < 2; i++) {
var step = bs.getValue(FACING).getOpposite().step();
var center = Vec3.atCenterOf(pos).add(step.x() * 0.5, step.y() * 0.5, step.z() * 0.5);
double x = center.x + (rand.nextDouble() - 0.5) * 0.5D;
double y = center.y + (rand.nextDouble() - 0.5) * 0.5D;
double z = center.z + (rand.nextDouble() - 0.5) * 0.5D;
pLevel.addParticle(DustParticleOptions.REDSTONE, x, y, z,
step.x() * 0.1, step.y() * 0.1, step.z() * 0.1);
}
}
}
@Override
public PushReaction getPistonPushReaction(BlockState pState) {
return PushReaction.BLOCK;
}
@Override
protected void createBlockStateDefinition(StateDefinition.Builder<Block, BlockState> builder) {
super.createBlockStateDefinition(builder);
builder.add(REDSTONE_POWERED, 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)));
}
}

View file

@ -178,35 +178,35 @@ public class RegisterPatterns {
PatternRegistry.mapPattern(HexPattern.FromAnglesSig("qqqqqaqwawaw", HexDir.NORTH_WEST),
prefix("potion/weakness"),
new OpPotionEffect(MobEffects.WEAKNESS, 10_000 / 10, true));
new OpPotionEffect(MobEffects.WEAKNESS, 10_000 / 10, true, false));
PatternRegistry.mapPattern(HexPattern.FromAnglesSig("qqqqqawwawawd", HexDir.WEST),
prefix("potion/levitation"),
new OpPotionEffect(MobEffects.LEVITATION, 10_000 / 5, false));
new OpPotionEffect(MobEffects.LEVITATION, 10_000 / 5, false, false));
PatternRegistry.mapPattern(HexPattern.FromAnglesSig("qqqqqaewawawe", HexDir.SOUTH_WEST),
prefix("potion/wither"),
new OpPotionEffect(MobEffects.WITHER, 10_000, true));
new OpPotionEffect(MobEffects.WITHER, 10_000, true, false));
PatternRegistry.mapPattern(HexPattern.FromAnglesSig("qqqqqadwawaww", HexDir.SOUTH_EAST),
prefix("potion/poison"),
new OpPotionEffect(MobEffects.POISON, 10_000 / 3, true));
new OpPotionEffect(MobEffects.POISON, 10_000 / 3, true, false));
PatternRegistry.mapPattern(HexPattern.FromAnglesSig("qqqqqadwawaw", HexDir.SOUTH_EAST),
prefix("potion/slowness"),
new OpPotionEffect(MobEffects.MOVEMENT_SLOWDOWN, 10_000 / 3, true));
new OpPotionEffect(MobEffects.MOVEMENT_SLOWDOWN, 10_000 / 3, true, false));
PatternRegistry.mapPattern(HexPattern.FromAnglesSig("qqqqaawawaedd", HexDir.NORTH_WEST),
prefix("potion/regeneration"),
new OpPotionEffect(MobEffects.REGENERATION, 10_000, true), true);
new OpPotionEffect(MobEffects.REGENERATION, 10_000, true, true), true);
PatternRegistry.mapPattern(HexPattern.FromAnglesSig("qqqaawawaeqdd", HexDir.WEST),
prefix("potion/night_vision"),
new OpPotionEffect(MobEffects.NIGHT_VISION, 10_000 / 5, false), true);
new OpPotionEffect(MobEffects.NIGHT_VISION, 10_000 / 5, false, true), true);
PatternRegistry.mapPattern(HexPattern.FromAnglesSig("qqaawawaeqqdd", HexDir.SOUTH_WEST),
prefix("potion/absorption"),
new OpPotionEffect(MobEffects.ABSORPTION, 10_000, true), true);
new OpPotionEffect(MobEffects.ABSORPTION, 10_000, true, true), true);
PatternRegistry.mapPattern(HexPattern.FromAnglesSig("qaawawaeqqqdd", HexDir.SOUTH_EAST),
prefix("potion/haste"),
new OpPotionEffect(MobEffects.DIG_SPEED, 10_000 / 3, true), true);
new OpPotionEffect(MobEffects.DIG_SPEED, 10_000 / 3, true, true), true);
PatternRegistry.mapPattern(HexPattern.FromAnglesSig("aawawaeqqqqdd", HexDir.EAST),
prefix("potion/strength"),
new OpPotionEffect(MobEffects.DAMAGE_BOOST, 10_000 / 3, true), true);
new OpPotionEffect(MobEffects.DAMAGE_BOOST, 10_000 / 3, true, true), true);
PatternRegistry.mapPattern(HexPattern.FromAnglesSig("waeawae", HexDir.EAST),
prefix("sentinel/create"),
@ -343,7 +343,7 @@ public class RegisterPatterns {
OpAppend.INSTANCE);
PatternRegistry.mapPattern(HexPattern.FromAnglesSig("qaeaq", HexDir.NORTH_WEST), prefix("concat"),
OpConcat.INSTANCE);
PatternRegistry.mapPattern(HexPattern.FromAnglesSig("deeed", HexDir.NORTH_EAST), prefix("index"),
PatternRegistry.mapPattern(HexPattern.FromAnglesSig("deeed", HexDir.NORTH_WEST), prefix("index"),
OpIndex.INSTANCE);
PatternRegistry.mapPattern(HexPattern.FromAnglesSig("dadad", HexDir.NORTH_EAST), prefix("for_each"),
OpForEach.INSTANCE);

View file

@ -11,9 +11,14 @@ import net.minecraft.world.effect.MobEffectInstance
import net.minecraft.world.entity.LivingEntity
import kotlin.math.max
class OpPotionEffect(val effect: MobEffect, val baseCost: Int, val potency: Boolean) : SpellOperator {
class OpPotionEffect(
val effect: MobEffect,
val baseCost: Int,
val allowPotency: Boolean,
val potencyCubic: Boolean
) : SpellOperator {
override val argc: Int
get() = if (this.potency) 3 else 2
get() = if (this.allowPotency) 3 else 2
override fun execute(
args: List<SpellDatum<*>>,
@ -22,11 +27,15 @@ class OpPotionEffect(val effect: MobEffect, val baseCost: Int, val potency: Bool
val target = args.getChecked<LivingEntity>(0)
val duration = max(args.getChecked(1), 0.0)
ctx.assertEntityInRange(target)
val potency = if (this.potency)
val potency = if (this.allowPotency)
max(args.getChecked(2), 1.0)
else 1.0
val cost = this.baseCost * duration * potency
val cost = this.baseCost * duration * if (potencyCubic) {
potency * potency * potency
} else {
potency * potency
}
return Triple(
Spell(effect, target, duration, potency),
cost.toInt(),

View file

@ -4,6 +4,7 @@ import at.petrak.hexcasting.HexMod;
import at.petrak.hexcasting.api.circle.BlockCircleComponent;
import at.petrak.hexcasting.common.blocks.HexBlocks;
import at.petrak.hexcasting.common.blocks.circles.BlockSlate;
import at.petrak.hexcasting.common.blocks.circles.directrix.BlockRedstoneDirectrix;
import at.petrak.paucal.api.datagen.PaucalBlockStateAndModelProvider;
import net.minecraft.core.Direction;
import net.minecraft.data.DataGenerator;
@ -51,6 +52,72 @@ public class HexBlockStatesAndModels extends PaucalBlockStateAndModelProvider {
"impetus/right_empty"
);
// auugh
getVariantBuilder(HexBlocks.DIRECTRIX_REDSTONE.get()).forAllStates(bs -> {
var isLit = bs.getValue(BlockCircleComponent.ENERGIZED);
var litness = isLit ? "lit" : "dim";
var isPowered = bs.getValue(BlockRedstoneDirectrix.REDSTONE_POWERED);
var poweredness = isPowered ? "powered" : "unpowered";
var dir = bs.getValue(BlockStateProperties.FACING);
var up = modLoc("block/directrix/redstone/up_" + poweredness + "_" + litness);
var left = modLoc("block/directrix/redstone/left_" + poweredness + "_" + litness);
var right = modLoc("block/directrix/redstone/right_" + poweredness + "_" + litness);
var down = modLoc("block/directrix/redstone/down_" + poweredness + "_" + litness);
var front = modLoc("block/directrix/redstone/front_" + litness);
var back = modLoc("block/directrix/redstone/back_" + poweredness);
var routing = routeReslocsForArrowBlock(dir, front, back, up, down, left, right);
var modelName = "redstone_directrix_" + poweredness + "_" + litness + "_" + dir.getName();
var model = models().cube(modelName, routing[0], routing[1], routing[2], routing[3], routing[4], routing[5])
.texture("particle", modLoc("block/slate"));
if (!isLit && !isPowered && dir == Direction.NORTH) {
simpleBlockItem(HexBlocks.DIRECTRIX_REDSTONE.get(), model);
}
return ConfiguredModel.builder()
.modelFile(model)
.build();
});
getVariantBuilder(HexBlocks.EMPTY_DIRECTRIX.get()).forAllStates(bs -> {
var isLit = bs.getValue(BlockCircleComponent.ENERGIZED);
var litness = isLit ? "lit" : "dim";
var axis = bs.getValue(BlockStateProperties.AXIS);
var horiz = modLoc("block/directrix/empty/horiz_" + litness);
var vert = modLoc("block/directrix/empty/vert_" + litness);
var end = modLoc("block/directrix/empty/end_" + litness);
ResourceLocation x = null, y = null, z = null;
switch (axis) {
case X -> {
x = end;
y = horiz;
z = horiz;
}
case Y -> {
x = vert;
y = end;
z = vert;
}
case Z -> {
x = horiz;
y = vert;
z = end;
}
}
var modelName = "empty_directrix_" + litness + "_" + axis.getName();
var model = models().cube(modelName, y, y, z, z, x, x)
.texture("particle", modLoc("block/slate"));
if (!isLit && axis == Direction.Axis.Z) {
simpleBlockItem(HexBlocks.EMPTY_DIRECTRIX.get(), model);
}
return ConfiguredModel.builder()
.modelFile(model)
.build();
});
blockAndItem(HexBlocks.SLATE_BLOCK.get(), models().cubeAll("slate_block", modLoc("block/slate")));
cubeBlockAndItem(HexBlocks.AMETHYST_DUST_BLOCK.get(), "amethyst_dust_block");
cubeBlockAndItem(HexBlocks.AMETHYST_TILES.get(), "amethyst_tiles");
@ -89,54 +156,10 @@ public class HexBlockStatesAndModels extends PaucalBlockStateAndModelProvider {
var right = modLoc("block/" + rightStub + "_" + litness);
var down = modLoc("block/" + downStub + "_" + litness);
ResourceLocation bottom = null, top = null, north = null, south = null, east = null, west = null;
switch (dir) {
case UP -> {
top = front;
bottom = back;
north = east = south = west = up;
}
case DOWN -> {
bottom = front;
top = back;
north = east = south = west = down;
}
case NORTH -> {
north = front;
south = back;
west = left;
east = right;
top = up;
bottom = down;
}
case SOUTH -> {
south = front;
north = back;
west = right;
east = left;
top = down;
bottom = up;
}
case WEST -> {
west = front;
east = back;
north = right;
south = left;
top = left;
bottom = left;
}
case EAST -> {
east = front;
west = back;
north = left;
south = right;
top = right;
bottom = right;
}
}
var routing = routeReslocsForArrowBlock(dir, front, back, up, down, left, right);
var modelName = name + "_" + litness + "_" + dir.getName();
var model = models().cube(modelName, bottom, top, north, south, east, west)
var model = models().cube(modelName, routing[0], routing[1], routing[2], routing[3], routing[4], routing[5])
.texture("particle", particle);
// Ordinarily i would use north, because north is the lower-right direction in the inv
// and that's where other blocks face.
@ -150,4 +173,56 @@ public class HexBlockStatesAndModels extends PaucalBlockStateAndModelProvider {
.build();
});
}
private static ResourceLocation[] routeReslocsForArrowBlock(Direction dir, ResourceLocation front,
ResourceLocation back,
ResourceLocation up, ResourceLocation down,
ResourceLocation left, ResourceLocation right) {
ResourceLocation bottom = null, top = null, north = null, south = null, east = null, west = null;
switch (dir) {
case UP -> {
top = front;
bottom = back;
north = east = south = west = up;
}
case DOWN -> {
bottom = front;
top = back;
north = east = south = west = down;
}
case NORTH -> {
north = front;
south = back;
west = left;
east = right;
top = up;
bottom = down;
}
case SOUTH -> {
south = front;
north = back;
west = right;
east = left;
top = down;
bottom = up;
}
case WEST -> {
west = front;
east = back;
north = right;
south = left;
top = left;
bottom = left;
}
case EAST -> {
east = front;
west = back;
north = left;
south = right;
top = right;
bottom = right;
}
}
return new ResourceLocation[]{bottom, top, north, south, east, west};
}
}

View file

@ -17,8 +17,10 @@ public class HexBlockTags extends BlockTagsProvider {
@Override
protected void addTags() {
tag(BlockTags.MINEABLE_WITH_PICKAXE)
.add(HexBlocks.SLATE_BLOCK.get(), HexBlocks.SLATE.get(), HexBlocks.EMPTY_IMPETUS.get(),
HexBlocks.IMPETUS_RIGHTCLICK.get(),
.add(HexBlocks.SLATE_BLOCK.get(), HexBlocks.SLATE.get(),
HexBlocks.EMPTY_DIRECTRIX.get(), HexBlocks.DIRECTRIX_REDSTONE.get(),
HexBlocks.EMPTY_IMPETUS.get(),
HexBlocks.IMPETUS_RIGHTCLICK.get(), HexBlocks.IMPETUS_LOOK.get(), HexBlocks.IMPETUS_STOREDPLAYER.get(),
HexBlocks.AMETHYST_TILES.get(), HexBlocks.SCONCE.get());
tag(BlockTags.MINEABLE_WITH_SHOVEL)

View file

@ -3,8 +3,6 @@ package at.petrak.hexcasting.datagen;
import at.petrak.hexcasting.common.blocks.HexBlocks;
import at.petrak.hexcasting.common.blocks.circles.BlockEntitySlate;
import at.petrak.paucal.api.datagen.PaucalLootTableProvider;
import com.google.gson.Gson;
import com.google.gson.GsonBuilder;
import net.minecraft.data.DataGenerator;
import net.minecraft.world.level.block.Block;
import net.minecraft.world.level.storage.loot.LootPool;
@ -19,16 +17,15 @@ import java.util.Map;
// https://github.com/XuulMedia/Flint-Age/blob/4638289130ef80dafe9b6a3fdcb461a72688100f/src/main/java/xuul/flint/datagen/BaseLootTableProvider.java#L61
// auugh mojang whyyyy
public class HexLootTables extends PaucalLootTableProvider {
private static final Gson GSON = new GsonBuilder().setPrettyPrinting().disableHtmlEscaping().create();
public HexLootTables(DataGenerator pGenerator) {
super(pGenerator);
}
@Override
protected void makeLootTables(Map<Block, LootTable.Builder> lootTables) {
dropSelfTable(lootTables, HexBlocks.EMPTY_IMPETUS, HexBlocks.IMPETUS_RIGHTCLICK,
dropSelfTable(lootTables, HexBlocks.EMPTY_IMPETUS,
HexBlocks.IMPETUS_RIGHTCLICK, HexBlocks.IMPETUS_LOOK, HexBlocks.IMPETUS_STOREDPLAYER,
HexBlocks.DIRECTRIX_REDSTONE, HexBlocks.EMPTY_DIRECTRIX,
HexBlocks.SLATE_BLOCK, HexBlocks.AMETHYST_DUST_BLOCK, HexBlocks.AMETHYST_TILES, HexBlocks.SCROLL_PAPER,
HexBlocks.ANCIENT_SCROLL_PAPER, HexBlocks.SCROLL_PAPER_LANTERN, HexBlocks.ANCIENT_SCROLL_PAPER_LANTERN,
HexBlocks.SCONCE);

View file

@ -18,6 +18,7 @@ import net.minecraft.world.level.storage.loot.predicates.BonusLevelTableConditio
import net.minecraft.world.level.storage.loot.predicates.LootItemCondition;
import net.minecraft.world.level.storage.loot.predicates.MatchTool;
import net.minecraft.world.level.storage.loot.providers.number.ConstantValue;
import net.minecraft.world.level.storage.loot.providers.number.UniformGenerator;
import net.minecraftforge.common.data.GlobalLootModifierProvider;
import net.minecraftforge.common.loot.GlobalLootModifierSerializer;
import net.minecraftforge.common.loot.LootTableIdCondition;
@ -40,12 +41,20 @@ public class HexLootModifiers extends GlobalLootModifierProvider {
ResourceLocation amethystCluster = new ResourceLocation("minecraft:blocks/amethyst_cluster");
// 4? that's a lot!
add("amethyst_cluster_shard_reducer", PaucalLootMods.ADD_ITEM.get(), new PaucalAddItemModifier(
Items.AMETHYST_SHARD, -2, amethystCluster
Items.AMETHYST_SHARD, new LootItemFunction[]{
SetItemCountFunction.setCount(ConstantValue.exactly(-2), true).build(),
}, new LootItemCondition[]{
LootTableIdCondition.builder(amethystCluster).build(),
MatchTool.toolMatches(
ItemPredicate.Builder.item().hasEnchantment(
new EnchantmentPredicate(Enchantments.SILK_TOUCH, MinMaxBounds.Ints.ANY)))
.invert().build(),
}
));
add("amethyst_cluster_dust", PaucalLootMods.ADD_ITEM.get(), new PaucalAddItemModifier(
HexItems.AMETHYST_DUST.get(), new LootItemFunction[]{
SetItemCountFunction.setCount(ConstantValue.exactly(4)).build(),
SetItemCountFunction.setCount(UniformGenerator.between(1, 4)).build(),
ApplyBonusCount.addOreBonusCount(Enchantments.BLOCK_FORTUNE).build()
}, new LootItemCondition[]{
LootTableIdCondition.builder(amethystCluster).build(),
@ -62,7 +71,8 @@ public class HexLootModifiers extends GlobalLootModifierProvider {
ItemPredicate.Builder.item().hasEnchantment(
new EnchantmentPredicate(Enchantments.SILK_TOUCH, MinMaxBounds.Ints.ANY)))
.invert().build(),
BonusLevelTableCondition.bonusLevelFlatChance(Enchantments.BLOCK_FORTUNE, 0.5f, 0.8f, 0.9f, 1.0f).build()
BonusLevelTableCondition.bonusLevelFlatChance(Enchantments.BLOCK_FORTUNE,
0.25f, 0.35f, 0.5f, 0.75f, 1.0f).build()
}));

View file

@ -52,6 +52,8 @@
"block.hexcasting.slate.blank": "Blank Slate",
"block.hexcasting.slate.written": "Patterned Slate",
"block.hexcasting.empty_impetus": "Empty Impetus",
"block.hexcasting.redstone_directrix": "Redstone Directrix",
"block.hexcasting.empty_directrix": "Empty Directrix",
"block.hexcasting.impetus_rightclick": "Toolsmith Impetus",
"block.hexcasting.impetus_look": "Fletcher Impetus",
"block.hexcasting.impetus_storedplayer": "Cleric Impetus",
@ -650,7 +652,7 @@
"hexcasting.page.blockworks.9": "Extinguish blocks in a large area. Costs about two $(item)Amethyst Crystal/$s.",
"hexcasting.entry.nadirs": "Nadirs",
"hexcasting.page.nadirs.1": "This family of spells all impart a negative potion effect upon an entity. They all take an entity, the recipient, and one or two numbers, the first being the duration and the second, if present, being the potency (starting at 1).$(br2)Each one has a \"base cost;\" the actual cost is equal to that base cost, multiplied by the potency.",
"hexcasting.page.nadirs.1": "This family of spells all impart a negative potion effect upon an entity. They all take an entity, the recipient, and one or two numbers, the first being the duration and the second, if present, being the potency (starting at 1).$(br2)Each one has a \"base cost;\" the actual cost is equal to that base cost, multiplied by the potency squared.",
"hexcasting.page.nadirs.2": "According to certain legends, these spells and their sisters, the $(l:patterns/great_spells/zeniths)$(action)Zeniths/$, were \"[...] inspired by a world near to this one, where powerful wizards would gather magic from the land and hold duels to the death. Unfortunately, much was lost in translation...\"$(br2)Perhaps that is the reason for their peculiar names.",
"hexcasting.page.nadirs.3": "Bestows weakness. Base cost is one $(item)Amethyst Dust/$ per 10 seconds.",
"hexcasting.page.nadirs.4": "Bestows levitation. Base cost is one $(item)Amethyst Dust/$ per 5 seconds.",
@ -665,8 +667,8 @@
"hexcasting.page.hexcasting_spell.4": "Costs about ten $(item)Charged Amethyst/$s.",
"hexcasting.page.hexcasting_spell.5": "Recharge a _media-containing item in my other hand. Costs about one $(item)Charged Amethyst/$.",
"hexcasting.page.hexcasting_spell.6": "This spell is cast in a similar method to the crafting spells; an entity representing a dropped stack of $(item)Amethyst/$ is provided, and recharges the _media battery of the item in my other hand.$(br2)This spell $(italic)cannot/$ recharge the item farther than its original battery size.",
"hexcasting.page.hexcasting_spell.7": "Erase a _Hex-containing item in my other hand. Costs about one $(item)Amethyst Dust/$.",
"hexcasting.page.hexcasting_spell.8": "The spell will also void all the _media stored inside the item, releasing it back to Nature and returning the item to a perfectly clean slate.",
"hexcasting.page.hexcasting_spell.7": "Clear a _Hex-containing item in my other hand. Costs about one $(item)Amethyst Dust/$.",
"hexcasting.page.hexcasting_spell.8": "The spell will also void all the _media stored inside the item, releasing it back to Nature and returning the item to a perfectly clean slate. This way, I can re-use $(item)Trinket/$s I have put an erroneous spell into, for example.",
"hexcasting.entry.sentinels": "Sentinels",
"hexcasting.page.sentinels.1": "$(italic)Hence, away! Now all is well,$(br)One aloof stand sentinel./$$(br2)A $(thing)Sentinel/$ is a mysterious force I can summon to assist in the casting of _Hexes, like a familiar or guardian spirit. It appears as a spinning geometric shape to my eyes, but is invisible to everyone else.",
@ -693,7 +695,7 @@
"hexcasting.page.teleport.2": "The entity will be teleported by the given vector, which is an offset from its given position. No matter the distance, it always seems to cost about ten $(item)Charged Crystal/$s.$(br2)The transference is not perfect, and it seems when teleporting something as complex as a player, their inventory doesn't $(italic)quite/$ stay attached, and tends to splatter everywhere at the destination.",
"hexcasting.entry.zeniths": "Zeniths",
"hexcasting.page.zeniths.1": "This family of spells all impart a positive potion effect upon an entity.$(br2)See the $(l:patterns/spells/nadirs)$(action)Nadirs/$ for more information.",
"hexcasting.page.zeniths.1": "This family of spells all impart a positive potion effect upon an entity, similar to the $(l:patterns/spells/nadirs)$(action)Nadirs/$. However, these have their _media costs increase with the $(italic)cube/$ of the potency.",
"hexcasting.page.zeniths.2": "Bestows regeneration. Base cost is one $(item)Amethyst Dust/$ per second.",
"hexcasting.page.zeniths.3": "Bestows night vision. Base cost is one $(item)Amethyst Dust/$ per 5 seconds.",
"hexcasting.page.zeniths.4": "Bestows absorption. Base cost is one $(item)Amethyst Dust/$ per second.",

Binary file not shown.

After

Width:  |  Height:  |  Size: 421 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 500 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 486 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 585 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 474 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 572 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 458 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 459 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 616 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 606 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 609 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 607 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 491 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 497 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 624 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 616 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 619 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 615 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 626 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 628 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 628 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 629 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 644 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 613 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 639 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 613 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 457 B

After

Width:  |  Height:  |  Size: 497 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 476 B

After

Width:  |  Height:  |  Size: 575 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 422 B

After

Width:  |  Height:  |  Size: 521 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 525 B

After

Width:  |  Height:  |  Size: 591 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 479 B

After

Width:  |  Height:  |  Size: 580 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 521 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 482 B

After

Width:  |  Height:  |  Size: 557 B