From 5e27d3b05939bb67825fbb4ded4986885682773b Mon Sep 17 00:00:00 2001 From: Artemis Rosman <73006620+rozukke@users.noreply.github.com> Date: Wed, 14 Aug 2024 17:43:26 +1000 Subject: [PATCH 1/3] Add pyramid example --- example/pyramid.cpp | 52 +++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 52 insertions(+) create mode 100644 example/pyramid.cpp diff --git a/example/pyramid.cpp b/example/pyramid.cpp new file mode 100644 index 00000000..80404ca5 --- /dev/null +++ b/example/pyramid.cpp @@ -0,0 +1,52 @@ +#include <mcpp/block.h> +#include <mcpp/mcpp.h> +#include <mcpp/util.h> +#include <algorithm> + +// Change location here +mcpp::Coordinate ORIGIN {0, 0, 0}; +int PYRAMID_HEIGHT = 50; + +// Can declare globally +mcpp::MinecraftConnection mc; + +void make_ring(mcpp::Coordinate base_pt, int side_len) { + // Flat plane + mc.setBlocks( + base_pt, + base_pt + mcpp::Coordinate(side_len, 0, side_len), + mcpp::Blocks::SANDSTONE + ); + + // Air inside to make border + base_pt = base_pt + mcpp::Coordinate(1, 0, 1); + mc.setBlocks( + base_pt, + base_pt + mcpp::Coordinate(side_len - 2, 0, side_len - 2), + mcpp::Blocks::AIR + ); +} + +int main() { + int pyramid_base_len = PYRAMID_HEIGHT * 2; + + // Get heights of build area + mcpp::HeightMap heights = mc.getHeights( + ORIGIN, + ORIGIN + mcpp::Coordinate(pyramid_base_len, 0, pyramid_base_len) + ); + + // Use minimum height of the area as the lowest point on the pyramid + int min_height = *std::min_element( + heights.begin(), + heights.end() + ); + + // Build rings, diminishing up to pyramid height + mcpp::Coordinate base_pt = heights.base_pt(); + base_pt.y = min_height; + int side_len = pyramid_base_len; + for(int i = 0; i < PYRAMID_HEIGHT; i++) { + make_ring(base_pt + mcpp::Coordinate(i, i, i), side_len - (i * 2)); + } +} From 4d44f70bb5e11f02fca8201547a745cad93badb4 Mon Sep 17 00:00:00 2001 From: Artemis Rosman <73006620+rozukke@users.noreply.github.com> Date: Wed, 14 Aug 2024 17:43:43 +1000 Subject: [PATCH 2/3] Add example README.md --- example/README.md | 7 +++++++ 1 file changed, 7 insertions(+) create mode 100644 example/README.md diff --git a/example/README.md b/example/README.md new file mode 100644 index 00000000..7c3fe08f --- /dev/null +++ b/example/README.md @@ -0,0 +1,7 @@ +## Examples +A few small examples to show the capabilities of `mcpp`. + +They should be compilable with something along the lines of `g++ -std=c++17 -o example example.cpp -lmcpp` +after you have installed the library. + +Feel free to open a PR if you have an interesting usecase to include as part of the examples. From 6f7add046d297ae5f46fd33d2855bdbd9894dc94 Mon Sep 17 00:00:00 2001 From: Artemis Rosman <73006620+rozukke@users.noreply.github.com> Date: Wed, 14 Aug 2024 17:47:34 +1000 Subject: [PATCH 3/3] Fix formatting --- example/pyramid.cpp | 35 +++++++++++++---------------------- 1 file changed, 13 insertions(+), 22 deletions(-) diff --git a/example/pyramid.cpp b/example/pyramid.cpp index 80404ca5..ec6dff47 100644 --- a/example/pyramid.cpp +++ b/example/pyramid.cpp @@ -1,10 +1,10 @@ +#include <algorithm> #include <mcpp/block.h> #include <mcpp/mcpp.h> #include <mcpp/util.h> -#include <algorithm> // Change location here -mcpp::Coordinate ORIGIN {0, 0, 0}; +mcpp::Coordinate ORIGIN{0, 0, 0}; int PYRAMID_HEIGHT = 50; // Can declare globally @@ -12,41 +12,32 @@ mcpp::MinecraftConnection mc; void make_ring(mcpp::Coordinate base_pt, int side_len) { // Flat plane - mc.setBlocks( - base_pt, - base_pt + mcpp::Coordinate(side_len, 0, side_len), - mcpp::Blocks::SANDSTONE - ); + mc.setBlocks(base_pt, base_pt + mcpp::Coordinate(side_len, 0, side_len), + mcpp::Blocks::SANDSTONE); // Air inside to make border base_pt = base_pt + mcpp::Coordinate(1, 0, 1); - mc.setBlocks( - base_pt, - base_pt + mcpp::Coordinate(side_len - 2, 0, side_len - 2), - mcpp::Blocks::AIR - ); + mc.setBlocks(base_pt, + base_pt + mcpp::Coordinate(side_len - 2, 0, side_len - 2), + mcpp::Blocks::AIR); } int main() { int pyramid_base_len = PYRAMID_HEIGHT * 2; // Get heights of build area - mcpp::HeightMap heights = mc.getHeights( - ORIGIN, - ORIGIN + mcpp::Coordinate(pyramid_base_len, 0, pyramid_base_len) - ); + mcpp::HeightMap heights = + mc.getHeights(ORIGIN, ORIGIN + mcpp::Coordinate(pyramid_base_len, 0, + pyramid_base_len)); // Use minimum height of the area as the lowest point on the pyramid - int min_height = *std::min_element( - heights.begin(), - heights.end() - ); + int min_height = *std::min_element(heights.begin(), heights.end()); // Build rings, diminishing up to pyramid height mcpp::Coordinate base_pt = heights.base_pt(); base_pt.y = min_height; int side_len = pyramid_base_len; - for(int i = 0; i < PYRAMID_HEIGHT; i++) { + for (int i = 0; i < PYRAMID_HEIGHT; i++) { make_ring(base_pt + mcpp::Coordinate(i, i, i), side_len - (i * 2)); - } + } }