GemBlocks 1.0.1

There is a newer version of this package available.
See the version list below for details.
dotnet add package GemBlocks --version 1.0.1                
NuGet\Install-Package GemBlocks -Version 1.0.1                
This command is intended to be used within the Package Manager Console in Visual Studio, as it uses the NuGet module's version of Install-Package.
<PackageReference Include="GemBlocks" Version="1.0.1" />                
For projects that support PackageReference, copy this XML node into the project file to reference the package.
paket add GemBlocks --version 1.0.1                
#r "nuget: GemBlocks, 1.0.1"                
#r directive can be used in F# Interactive and Polyglot Notebooks. Copy this into the interactive tool or source code of the script to reference the package.
// Install GemBlocks as a Cake Addin
#addin nuget:?package=GemBlocks&version=1.0.1

// Install GemBlocks as a Cake Tool
#tool nuget:?package=GemBlocks&version=1.0.1                

A C# library for easy generation of Minecraft worlds

GemBlocks aims to provide a simple library for custom map generation. In order to use this library it is not necessary to deal with things like regions, chunks and block data. However it aims to implement all map features that Minecraft offers.

This library was forked from MorbZ/J2Blocks and converted to C# for use of .NET Minecraft implementations (Clients, World Editors, Servers, etc.)

Any assistance is welcomed! Please do a pull request if you see something that needs changed. Also changed was the naming conventions. Java conventions don't look right in C#! 😄 [→ GemBlocks Documentation] COMING SOON!

Example (TO BE UPDATED WITH REDONE C# CODE)

In this example we want to create a Minecraft world that is paved with melon-blocks. We want to create a huge structure of glass and want to set door on top of it. From the Example.java:

// Create the base layers of the generated world.
// We set the bottom layer of the world to be bedrock and the 20 layers above to be melon 
// blocks.
DefaultLayers layers = new DefaultLayers();
layers.SetLayer(0, BlockRegistry.Bedrock);
layers.SetLayers(1, 20, BlockRegistry.MelonBlock);

// Create the internal Minecraft world generator.
// We use a flat generator. We do this to make sure that the whole world will be paved 
// with melons and not just the part we generated.
IGenerator generator = new FlatGenerator(layers);

// Create the level configuration.
// We set the mode to creative creative mode and name our world. We also set the spawn point
// in the middle of our glass structure.
Level level = new Level("MelonWorld", generator);
level.SetGameType(GameType.CREATIVE);
level.SetSpawnPoint(50, 0, 50);

// Now we create the world. This is where we can set our own blocks.
World world = new World(level, layers);

// Create a huge structure of glass that has an area of 100x100 blocks and is 50 blocks 
// height. On top of the glass structure we put a layer of grass.
for(int x = 0; x < 100; x++) {
	for(int z = 0; z < 100; z++) {
		// Set glass
		for(int y = 0; y < 50; y++) {
			world.SetBlock(x, y, z, SimpleBlock.GLASS);
		}
	
		// Set grass
		world.SetBlock(x, 50, z, SimpleBlock.GRASS);
	}
}

// Now we create the door. It consists of 2 blocks, that's why we can't use a SimpleBlock 
// here.
world.SetBlock(50, 51, 50, DoorBlock.MakeLower(DoorMaterial.OAK, Facing4State.EAST, false));
world.setBlock(50, 52, 50, DoorBlock.makeUpper(DoorMaterial.OAK, HingeSide.LEFT));

// Everything's set up so we're going to save the world.
world.save();

The world has been saved to the /world/ directory in our execution directory. We can move it to the Minecraft /saves/ directory and enjoy all the melons.

The generated melon world

Known Issues

(https://github.com/MorbZ/J2Blocks/blob/master/src/net/morbz/minecraft/blocks/Material.java) the blocks that have a check mark
Feel free to help and fix the issues by submitting a pull request.

Product Compatible and additional computed target framework versions.
.NET net5.0 was computed.  net5.0-windows was computed.  net6.0 was computed.  net6.0-android was computed.  net6.0-ios was computed.  net6.0-maccatalyst was computed.  net6.0-macos was computed.  net6.0-tvos was computed.  net6.0-windows was computed.  net7.0 was computed.  net7.0-android was computed.  net7.0-ios was computed.  net7.0-maccatalyst was computed.  net7.0-macos was computed.  net7.0-tvos was computed.  net7.0-windows was computed.  net8.0 was computed.  net8.0-android was computed.  net8.0-browser was computed.  net8.0-ios was computed.  net8.0-maccatalyst was computed.  net8.0-macos was computed.  net8.0-tvos was computed.  net8.0-windows was computed. 
.NET Core netcoreapp2.0 was computed.  netcoreapp2.1 was computed.  netcoreapp2.2 was computed.  netcoreapp3.0 was computed.  netcoreapp3.1 was computed. 
.NET Standard netstandard2.0 is compatible.  netstandard2.1 was computed. 
.NET Framework net461 was computed.  net462 was computed.  net463 was computed.  net47 was computed.  net471 was computed.  net472 was computed.  net48 was computed.  net481 was computed. 
MonoAndroid monoandroid was computed. 
MonoMac monomac was computed. 
MonoTouch monotouch was computed. 
Tizen tizen40 was computed.  tizen60 was computed. 
Xamarin.iOS xamarinios was computed. 
Xamarin.Mac xamarinmac was computed. 
Xamarin.TVOS xamarintvos was computed. 
Xamarin.WatchOS xamarinwatchos was computed. 
Compatible target framework(s)
Included target framework(s) (in package)
Learn more about Target Frameworks and .NET Standard.

NuGet packages

This package is not used by any NuGet packages.

GitHub repositories

This package is not used by any popular GitHub repositories.

Version Downloads Last updated
1.1.1 626 12/20/2019
1.0.2.3 479 11/14/2019
1.0.2.2 448 11/13/2019
1.0.2.1 466 11/11/2019
1.0.2 483 11/8/2019
1.0.1 481 11/8/2019
1.0.0 467 11/8/2019