From 58976b02b5260db1e0031e50b7ffb074acd4e4c6 Mon Sep 17 00:00:00 2001
From: Sollace <sollacea@gmail.com>
Date: Fri, 3 Nov 2023 12:11:31 +0000
Subject: [PATCH] Make dense cloud compactable

---
 .../unicopia/block/UBlocks.java               |   9 +-
 .../blockstates/compacted_dense_cloud.json    | 268 ++++++++++++++++++
 .../resources/assets/unicopia/lang/en_us.json |   1 +
 .../flattened_dense_cloud_corner_full.json    |   6 +
 .../block/flattened_dense_cloud_corner_x.json |   6 +
 .../flattened_dense_cloud_corner_xy.json      |   6 +
 .../flattened_dense_cloud_corner_xyz.json     |   6 +
 .../flattened_dense_cloud_corner_xz.json      |   6 +
 .../block/flattened_dense_cloud_corner_y.json |   6 +
 .../flattened_dense_cloud_corner_yz.json      |   6 +
 .../block/flattened_dense_cloud_corner_z.json |   6 +
 11 files changed, 323 insertions(+), 3 deletions(-)
 create mode 100644 src/main/resources/assets/unicopia/blockstates/compacted_dense_cloud.json
 create mode 100644 src/main/resources/assets/unicopia/models/block/flattened_dense_cloud_corner_full.json
 create mode 100644 src/main/resources/assets/unicopia/models/block/flattened_dense_cloud_corner_x.json
 create mode 100644 src/main/resources/assets/unicopia/models/block/flattened_dense_cloud_corner_xy.json
 create mode 100644 src/main/resources/assets/unicopia/models/block/flattened_dense_cloud_corner_xyz.json
 create mode 100644 src/main/resources/assets/unicopia/models/block/flattened_dense_cloud_corner_xz.json
 create mode 100644 src/main/resources/assets/unicopia/models/block/flattened_dense_cloud_corner_y.json
 create mode 100644 src/main/resources/assets/unicopia/models/block/flattened_dense_cloud_corner_yz.json
 create mode 100644 src/main/resources/assets/unicopia/models/block/flattened_dense_cloud_corner_z.json

diff --git a/src/main/java/com/minelittlepony/unicopia/block/UBlocks.java b/src/main/java/com/minelittlepony/unicopia/block/UBlocks.java
index 468856b2..c947d3ee 100644
--- a/src/main/java/com/minelittlepony/unicopia/block/UBlocks.java
+++ b/src/main/java/com/minelittlepony/unicopia/block/UBlocks.java
@@ -169,9 +169,12 @@ public interface UBlocks {
     SoggyCloudSlabBlock SOGGY_CLOUD_SLAB = register("soggy_cloud_slab", new SoggyCloudSlabBlock(Settings.copy(SOGGY_CLOUD), () -> UBlocks.CLOUD_SLAB));
     SoggyCloudStairsBlock SOGGY_CLOUD_STAIRS = register("soggy_cloud_stairs", new SoggyCloudStairsBlock(SOGGY_CLOUD.getDefaultState(), Settings.copy(CLOUD), () -> UBlocks.CLOUD_STAIRS));
 
-    Block DENSE_CLOUD = register("dense_cloud", new CloudBlock(Settings.create().mapColor(MapColor.GRAY).hardness(0.5F).resistance(0).sounds(BlockSoundGroup.WOOL).solid(), false), ItemGroups.NATURAL);
-    Block DENSE_CLOUD_SLAB = register("dense_cloud_slab", new CloudSlabBlock(Settings.copy(DENSE_CLOUD), false, null), ItemGroups.NATURAL);
-    Block DENSE_CLOUD_STAIRS = register("dense_cloud_stairs", new CloudStairsBlock(DENSE_CLOUD.getDefaultState(), Settings.copy(DENSE_CLOUD)), ItemGroups.NATURAL);
+    Block DENSE_CLOUD = register("dense_cloud", new NaturalCloudBlock(Settings.create().mapColor(MapColor.GRAY).hardness(0.5F).resistance(0).sounds(BlockSoundGroup.WOOL).solid(), false,
+            null,
+            () -> UBlocks.COMPACTED_DENSE_CLOUD), ItemGroups.BUILDING_BLOCKS);
+    Block COMPACTED_DENSE_CLOUD = register("compacted_dense_cloud", new CompactedCloudBlock(Settings.copy(DENSE_CLOUD)));
+    Block DENSE_CLOUD_SLAB = register("dense_cloud_slab", new CloudSlabBlock(Settings.copy(DENSE_CLOUD), false, null), ItemGroups.BUILDING_BLOCKS);
+    Block DENSE_CLOUD_STAIRS = register("dense_cloud_stairs", new CloudStairsBlock(DENSE_CLOUD.getDefaultState(), Settings.copy(DENSE_CLOUD)), ItemGroups.BUILDING_BLOCKS);
 
     Block CARVED_CLOUD = register("carved_cloud", new OrientedCloudBlock(Settings.copy(CLOUD).hardness(0.4F).requiresTool().solid(), false), ItemGroups.BUILDING_BLOCKS);
     Block UNSTABLE_CLOUD = register("unstable_cloud", new UnstableCloudBlock(Settings.copy(CLOUD)), ItemGroups.NATURAL);
diff --git a/src/main/resources/assets/unicopia/blockstates/compacted_dense_cloud.json b/src/main/resources/assets/unicopia/blockstates/compacted_dense_cloud.json
new file mode 100644
index 00000000..087d05e7
--- /dev/null
+++ b/src/main/resources/assets/unicopia/blockstates/compacted_dense_cloud.json
@@ -0,0 +1,268 @@
+{
+  "multipart": [
+    {
+      "apply": { "model": "unicopia:block/flattened_dense_cloud_corner_full", "uvlock": true },
+      "when": { "down": true, "north": true, "east": true }
+    },
+    {
+      "apply": { "model": "unicopia:block/flattened_dense_cloud_corner_x", "uvlock": true },
+      "when": { "down": true, "north": true, "east": false }
+    },
+    {
+      "apply": { "model": "unicopia:block/flattened_dense_cloud_corner_y", "uvlock": true },
+      "when": { "down": false, "north": true, "east": true }
+    },
+    {
+      "apply": { "model": "unicopia:block/flattened_dense_cloud_corner_z", "uvlock": true },
+      "when": { "down": true, "north": false, "east": true }
+    },
+    {
+      "apply": { "model": "unicopia:block/flattened_dense_cloud_corner_xz", "uvlock": true },
+      "when": { "down": true, "north": false, "east": false }
+    },
+    {
+      "apply": { "model": "unicopia:block/flattened_dense_cloud_corner_xy", "uvlock": true },
+      "when": { "down": false, "north": true, "east": false }
+    },
+    {
+      "apply": { "model": "unicopia:block/flattened_dense_cloud_corner_yz", "uvlock": true },
+      "when": { "down": false, "north": false, "east": true }
+    },
+    {
+      "apply": { "model": "unicopia:block/flattened_dense_cloud_corner_xyz", "uvlock": true },
+      "when": { "down": false, "north": false, "east": false }
+    },
+    
+    {
+      "apply": { "model": "unicopia:block/flattened_dense_cloud_corner_full", "uvlock": true, "y": 90 },
+      "when": { "down": true, "south": true, "east": true }
+    },
+    {
+      "apply": { "model": "unicopia:block/flattened_dense_cloud_corner_z", "uvlock": true, "y": 90 },
+      "when": { "down": true, "south": true, "east": false }
+    },
+    {
+      "apply": { "model": "unicopia:block/flattened_dense_cloud_corner_y", "uvlock": true, "y": 90 },
+      "when": { "down": false, "south": true, "east": true }
+    },
+    {
+      "apply": { "model": "unicopia:block/flattened_dense_cloud_corner_x", "uvlock": true, "y": 90 },
+      "when": { "down": true, "south": false, "east": true }
+    },
+    {
+      "apply": { "model": "unicopia:block/flattened_dense_cloud_corner_xz", "uvlock": true, "y": 90 },
+      "when": { "down": true, "south": false, "east": false }
+    },
+    {
+      "apply": { "model": "unicopia:block/flattened_dense_cloud_corner_yz", "uvlock": true, "y": 90 },
+      "when": { "down": false, "south": true, "east": false }
+    },
+    {
+      "apply": { "model": "unicopia:block/flattened_dense_cloud_corner_xy", "uvlock": true, "y": 90 },
+      "when": { "down": false, "south": false, "east": true }
+    },
+    {
+      "apply": { "model": "unicopia:block/flattened_dense_cloud_corner_xyz", "uvlock": true, "y": 90 },
+      "when": { "down": false, "south": false, "east": false }
+    },
+    
+    {
+      "apply": { "model": "unicopia:block/flattened_dense_cloud_corner_full", "uvlock": true, "y": 180 },
+      "when": { "down": true, "south": true, "west": true }
+    },
+    {
+      "apply": { "model": "unicopia:block/flattened_dense_cloud_corner_x", "uvlock": true, "y": 180 },
+      "when": { "down": true, "south": true, "west": false }
+    },
+    {
+      "apply": { "model": "unicopia:block/flattened_dense_cloud_corner_y", "uvlock": true, "y": 180 },
+      "when": { "down": false, "south": true, "west": true }
+    },
+    {
+      "apply": { "model": "unicopia:block/flattened_dense_cloud_corner_z", "uvlock": true, "y": 180 },
+      "when": { "down": true, "south": false, "west": true }
+    },
+    {
+      "apply": { "model": "unicopia:block/flattened_dense_cloud_corner_xz", "uvlock": true, "y": 180 },
+      "when": { "down": true, "south": false, "west": false }
+    },
+    {
+      "apply": { "model": "unicopia:block/flattened_dense_cloud_corner_xy", "uvlock": true, "y": 180 },
+      "when": { "down": false, "south": true, "west": false }
+    },
+    {
+      "apply": { "model": "unicopia:block/flattened_dense_cloud_corner_yz", "uvlock": true, "y": 180 },
+      "when": { "down": false, "south": false, "west": true }
+    },
+    {
+      "apply": { "model": "unicopia:block/flattened_dense_cloud_corner_xyz", "uvlock": true, "y": 180 },
+      "when": { "down": false, "south": false, "west": false }
+    },
+    
+    {
+      "apply": { "model": "unicopia:block/flattened_dense_cloud_corner_full", "uvlock": true, "y": 270 },
+      "when": { "down": true, "north": true, "west": true }
+    },
+    {
+      "apply": { "model": "unicopia:block/flattened_dense_cloud_corner_z", "uvlock": true, "y": 270 },
+      "when": { "down": true, "north": true, "west": false }
+    },
+    {
+      "apply": { "model": "unicopia:block/flattened_dense_cloud_corner_y", "uvlock": true, "y": 270 },
+      "when": { "down": false, "north": true, "west": true }
+    },
+    {
+      "apply": { "model": "unicopia:block/flattened_dense_cloud_corner_x", "uvlock": true, "y": 270 },
+      "when": { "down": true, "north": false, "west": true }
+    },
+    {
+      "apply": { "model": "unicopia:block/flattened_dense_cloud_corner_xz", "uvlock": true, "y": 270 },
+      "when": { "down": true, "north": false, "west": false }
+    },
+    {
+      "apply": { "model": "unicopia:block/flattened_dense_cloud_corner_yz", "uvlock": true, "y": 270 },
+      "when": { "down": false, "north": true, "west": false }
+    },
+    {
+      "apply": { "model": "unicopia:block/flattened_dense_cloud_corner_xy", "uvlock": true, "y": 270 },
+      "when": { "down": false, "north": false, "west": true }
+    },
+    {
+      "apply": { "model": "unicopia:block/flattened_dense_cloud_corner_xyz", "uvlock": true, "y": 270 },
+      "when": { "down": false, "north": false, "west": false }
+    },
+
+
+    {
+      "apply": { "model": "unicopia:block/flattened_dense_cloud_corner_full", "uvlock": true, "x": 180 },
+      "when": { "up": true, "south": true, "east": true }
+    },
+    {
+      "apply": { "model": "unicopia:block/flattened_dense_cloud_corner_x", "uvlock": true, "x": 180 },
+      "when": { "up": true, "south": true, "east": false }
+    },
+    {
+      "apply": { "model": "unicopia:block/flattened_dense_cloud_corner_y", "uvlock": true, "x": 180 },
+      "when": { "up": false, "south": true, "east": true }
+    },
+    {
+      "apply": { "model": "unicopia:block/flattened_dense_cloud_corner_z", "uvlock": true, "x": 180 },
+      "when": { "up": true, "south": false, "east": true }
+    },
+    {
+      "apply": { "model": "unicopia:block/flattened_dense_cloud_corner_xz", "uvlock": true, "x": 180 },
+      "when": { "up": true, "south": false, "east": false }
+    },
+    {
+      "apply": { "model": "unicopia:block/flattened_dense_cloud_corner_xy", "uvlock": true, "x": 180 },
+      "when": { "up": false, "south": true, "east": false }
+    },
+    {
+      "apply": { "model": "unicopia:block/flattened_dense_cloud_corner_yz", "uvlock": true, "x": 180 },
+      "when": { "up": false, "south": false, "east": true }
+    },
+    {
+      "apply": { "model": "unicopia:block/flattened_dense_cloud_corner_xyz", "uvlock": true, "x": 180 },
+      "when": { "up": false, "south": false, "east": false }
+    },
+    
+    {
+      "apply": { "model": "unicopia:block/flattened_dense_cloud_corner_full", "uvlock": true, "x": 180, "y": 90 },
+      "when": { "up": true, "south": true, "west": true }
+    },
+    {
+      "apply": { "model": "unicopia:block/flattened_dense_cloud_corner_z", "uvlock": true, "x": 180, "y": 90 },
+      "when": { "up": true, "south": true, "west": false }
+    },
+    {
+      "apply": { "model": "unicopia:block/flattened_dense_cloud_corner_y", "uvlock": true, "x": 180, "y": 90 },
+      "when": { "up": false, "south": true, "west": true }
+    },
+    {
+      "apply": { "model": "unicopia:block/flattened_dense_cloud_corner_x", "uvlock": true, "x": 180, "y": 90 },
+      "when": { "up": true, "south": false, "west": true }
+    },
+    {
+      "apply": { "model": "unicopia:block/flattened_dense_cloud_corner_xz", "uvlock": true, "x": 180, "y": 90 },
+      "when": { "up": true, "south": false, "west": false }
+    },
+    {
+      "apply": { "model": "unicopia:block/flattened_dense_cloud_corner_yz", "uvlock": true, "x": 180, "y": 90 },
+      "when": { "up": false, "south": true, "west": false }
+    },
+    {
+      "apply": { "model": "unicopia:block/flattened_dense_cloud_corner_xy", "uvlock": true, "x": 180, "y": 90 },
+      "when": { "up": false, "south": false, "west": true }
+    },
+    {
+      "apply": { "model": "unicopia:block/flattened_dense_cloud_corner_xyz", "uvlock": true, "x": 180, "y": 90 },
+      "when": { "up": false, "south": false, "west": false }
+    },
+    
+    {
+      "apply": { "model": "unicopia:block/flattened_dense_cloud_corner_full", "uvlock": true, "x": 180, "y": 180 },
+      "when": { "up": true, "north": true, "west": true }
+    },
+    {
+      "apply": { "model": "unicopia:block/flattened_dense_cloud_corner_x", "uvlock": true, "x": 180, "y": 180 },
+      "when": { "up": true, "north": true, "west": false }
+    },
+    {
+      "apply": { "model": "unicopia:block/flattened_dense_cloud_corner_y", "uvlock": true, "x": 180, "y": 180 },
+      "when": { "up": false, "north": true, "west": true }
+    },
+    {
+      "apply": { "model": "unicopia:block/flattened_dense_cloud_corner_z", "uvlock": true, "x": 180, "y": 180 },
+      "when": { "up": true, "north": false, "west": true }
+    },
+    {
+      "apply": { "model": "unicopia:block/flattened_dense_cloud_corner_xz", "uvlock": true, "x": 180, "y": 180 },
+      "when": { "up": true, "north": false, "west": false }
+    },
+    {
+      "apply": { "model": "unicopia:block/flattened_dense_cloud_corner_xy", "uvlock": true, "x": 180, "y": 180 },
+      "when": { "up": false, "north": true, "west": false }
+    },
+    {
+      "apply": { "model": "unicopia:block/flattened_dense_cloud_corner_yz", "uvlock": true, "x": 180, "y": 180 },
+      "when": { "up": false, "north": false, "west": true }
+    },
+    {
+      "apply": { "model": "unicopia:block/flattened_dense_cloud_corner_xyz", "uvlock": true, "x": 180, "y": 180 },
+      "when": { "up": false, "north": false, "west": false }
+    },
+    
+    {
+      "apply": { "model": "unicopia:block/flattened_dense_cloud_corner_full", "uvlock": true, "x": 180, "y": 270 },
+      "when": { "up": true, "north": true, "east": true }
+    },
+    {
+      "apply": { "model": "unicopia:block/flattened_dense_cloud_corner_z", "uvlock": true, "x": 180, "y": 270 },
+      "when": { "up": true, "north": true, "east": false }
+    },
+    {
+      "apply": { "model": "unicopia:block/flattened_dense_cloud_corner_y", "uvlock": true, "x": 180, "y": 270 },
+      "when": { "up": false, "north": true, "east": true }
+    },
+    {
+      "apply": { "model": "unicopia:block/flattened_dense_cloud_corner_x", "uvlock": true, "x": 180, "y": 270 },
+      "when": { "up": true, "north": false, "east": true }
+    },
+    {
+      "apply": { "model": "unicopia:block/flattened_dense_cloud_corner_xz", "uvlock": true, "x": 180, "y": 270 },
+      "when": { "up": true, "north": false, "east": false }
+    },
+    {
+      "apply": { "model": "unicopia:block/flattened_dense_cloud_corner_yz", "uvlock": true, "x": 180, "y": 270 },
+      "when": { "up": false, "north": true, "east": false }
+    },
+    {
+      "apply": { "model": "unicopia:block/flattened_dense_cloud_corner_xy", "uvlock": true, "x": 180, "y": 270 },
+      "when": { "up": false, "north": false, "east": true }
+    },
+    {
+      "apply": { "model": "unicopia:block/flattened_dense_cloud_corner_xyz", "uvlock": true, "x": 180, "y": 270 },
+      "when": { "up": false, "north": false, "east": false }
+    }
+  ]
+}
diff --git a/src/main/resources/assets/unicopia/lang/en_us.json b/src/main/resources/assets/unicopia/lang/en_us.json
index 59c29785..9cf54e20 100644
--- a/src/main/resources/assets/unicopia/lang/en_us.json
+++ b/src/main/resources/assets/unicopia/lang/en_us.json
@@ -273,6 +273,7 @@
   "block.unicopia.dense_cloud": "Dense Cloud",
   "block.unicopia.dense_cloud_slab": "Dense Cloud Slab",
   "block.unicopia.dense_cloud_stairs": "Dense Cloud Stairs",
+  "block.unicopia.compacted_dense_cloud": "Dense Cloud",
   "block.unicopia.cloud_pillar": "Cloud Pillar",
   "block.unicopia.cloth_bed": "Fancy Cloth Bed",
   "block.unicopia.cloud_bed": "Cloud Bed",
diff --git a/src/main/resources/assets/unicopia/models/block/flattened_dense_cloud_corner_full.json b/src/main/resources/assets/unicopia/models/block/flattened_dense_cloud_corner_full.json
new file mode 100644
index 00000000..96ed79e2
--- /dev/null
+++ b/src/main/resources/assets/unicopia/models/block/flattened_dense_cloud_corner_full.json
@@ -0,0 +1,6 @@
+{
+  "parent": "unicopia:block/flattened_cloud_corner_full",
+	"textures": {
+		"all": "unicopia:block/dense_cloud"
+	}
+}
\ No newline at end of file
diff --git a/src/main/resources/assets/unicopia/models/block/flattened_dense_cloud_corner_x.json b/src/main/resources/assets/unicopia/models/block/flattened_dense_cloud_corner_x.json
new file mode 100644
index 00000000..a0e2924d
--- /dev/null
+++ b/src/main/resources/assets/unicopia/models/block/flattened_dense_cloud_corner_x.json
@@ -0,0 +1,6 @@
+{
+  "parent": "unicopia:block/flattened_cloud_corner_x",
+  "textures": {
+    "all": "unicopia:block/dense_cloud"
+  }
+}
\ No newline at end of file
diff --git a/src/main/resources/assets/unicopia/models/block/flattened_dense_cloud_corner_xy.json b/src/main/resources/assets/unicopia/models/block/flattened_dense_cloud_corner_xy.json
new file mode 100644
index 00000000..f38b7250
--- /dev/null
+++ b/src/main/resources/assets/unicopia/models/block/flattened_dense_cloud_corner_xy.json
@@ -0,0 +1,6 @@
+{
+  "parent": "unicopia:block/flattened_cloud_corner_xy",
+  "textures": {
+    "all": "unicopia:block/dense_cloud"
+  }
+}
\ No newline at end of file
diff --git a/src/main/resources/assets/unicopia/models/block/flattened_dense_cloud_corner_xyz.json b/src/main/resources/assets/unicopia/models/block/flattened_dense_cloud_corner_xyz.json
new file mode 100644
index 00000000..382df9ab
--- /dev/null
+++ b/src/main/resources/assets/unicopia/models/block/flattened_dense_cloud_corner_xyz.json
@@ -0,0 +1,6 @@
+{
+  "parent": "unicopia:block/flattened_cloud_corner_xyz",
+  "textures": {
+    "all": "unicopia:block/dense_cloud"
+  }
+}
\ No newline at end of file
diff --git a/src/main/resources/assets/unicopia/models/block/flattened_dense_cloud_corner_xz.json b/src/main/resources/assets/unicopia/models/block/flattened_dense_cloud_corner_xz.json
new file mode 100644
index 00000000..bad87c59
--- /dev/null
+++ b/src/main/resources/assets/unicopia/models/block/flattened_dense_cloud_corner_xz.json
@@ -0,0 +1,6 @@
+{
+  "parent": "unicopia:block/flattened_cloud_corner_xz",
+  "textures": {
+    "all": "unicopia:block/dense_cloud"
+  }
+}
\ No newline at end of file
diff --git a/src/main/resources/assets/unicopia/models/block/flattened_dense_cloud_corner_y.json b/src/main/resources/assets/unicopia/models/block/flattened_dense_cloud_corner_y.json
new file mode 100644
index 00000000..2e2572a5
--- /dev/null
+++ b/src/main/resources/assets/unicopia/models/block/flattened_dense_cloud_corner_y.json
@@ -0,0 +1,6 @@
+{
+  "parent": "unicopia:block/flattened_cloud_corner_y",
+  "textures": {
+    "all": "unicopia:block/dense_cloud"
+  }
+}
\ No newline at end of file
diff --git a/src/main/resources/assets/unicopia/models/block/flattened_dense_cloud_corner_yz.json b/src/main/resources/assets/unicopia/models/block/flattened_dense_cloud_corner_yz.json
new file mode 100644
index 00000000..b4e0a676
--- /dev/null
+++ b/src/main/resources/assets/unicopia/models/block/flattened_dense_cloud_corner_yz.json
@@ -0,0 +1,6 @@
+{
+  "parent": "unicopia:block/flattened_cloud_corner_yz",
+  "textures": {
+    "all": "unicopia:block/dense_cloud"
+  }
+}
\ No newline at end of file
diff --git a/src/main/resources/assets/unicopia/models/block/flattened_dense_cloud_corner_z.json b/src/main/resources/assets/unicopia/models/block/flattened_dense_cloud_corner_z.json
new file mode 100644
index 00000000..fa657f3b
--- /dev/null
+++ b/src/main/resources/assets/unicopia/models/block/flattened_dense_cloud_corner_z.json
@@ -0,0 +1,6 @@
+{
+  "parent": "unicopia:block/flattened_cloud_corner_z",
+  "textures": {
+    "all": "unicopia:block/dense_cloud"
+  }
+}
\ No newline at end of file