https://github.com/aternosorg/plop
Generate Minecraft function files to make structures plop into existence in Vanilla Minecraft
https://github.com/aternosorg/plop
Last synced: about 1 year ago
JSON representation
Generate Minecraft function files to make structures plop into existence in Vanilla Minecraft
- Host: GitHub
- URL: https://github.com/aternosorg/plop
- Owner: aternosorg
- License: mit
- Created: 2024-08-09T11:53:37.000Z (almost 2 years ago)
- Default Branch: master
- Last Pushed: 2024-08-09T13:27:26.000Z (almost 2 years ago)
- Last Synced: 2025-04-30T21:46:42.506Z (about 1 year ago)
- Language: PHP
- Homepage: https://packagist.org/packages/aternos/plop
- Size: 111 KB
- Stars: 6
- Watchers: 1
- Forks: 1
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
- License: LICENSE
Awesome Lists containing this project
README
# Plop
Generate Minecraft function files to make structures plop into existence in Vanilla Minecraft.

Plop uses a Vanilla structure file to generate a single function file that works without any other dependencies.
## Installation
### CLI
```bash
git clone https://github.com/aternosorg/plop.git
cd plop
composer install
```
### Library
```bash
composer require aternos/plop
```
## Usage
Plop generates its function files from Minecraft structure files.
These files can be created using the structure block in Minecraft: https://minecraft.wiki/w/Structure_Block
### CLI
Plop includes a simple CLI to generate Minecraft function files using a handful of preset animation types.
```bash
php plop.php [--function|-f ] [--output|-o ] [--animation|-a ] [--placement|-p ]
```
The only required argument is the path to your `` structure file.
#### Options
Other available options are:
| Option | Short | Description |
|---------------|-------|-----------------------------------------------------------------------------------------------------|
| `--function` | `-f` | The name of the Minecraft function to generate, e.g. plop:example |
| `--output` | `-o` | The output file to save the generated function to, prints output to terminal if not set. |
| `--animation` | `-a` | The animation preset to use, e.g. 'plop'. Defaults to no animation. |
| `--placement` | `-p` | The placement strategy preset to use, e.g. 'xzy'. Defaults to placing everything at once or 'full'. |
| `--blocks` | `-b` | List of blocks to filter for, start your list with ~ to use all blocks except the listed blocks. |
#### Animations
An animation defines how individual blocks appear usually using block entities.
You can find all available animations and parameters here: [wiki/Animations](https://github.com/aternosorg/plop/wiki/Animations)
#### Placement strategies
A placement strategy defines in which order and at which speed blocks of the structure are added to the world.
You can find all available placement strategies and parameters here: [wiki/Placement Strategies](https://github.com/aternosorg/plop/wiki/Placement-Strategies)
### Library
Using Plop as a library allows much greater control over the generation process.
It is also possible to extend Plop to support custom animation types and placement strategies.
```php
$input = \Aternos\Plop\Input\StructureFile\StructureFile::loadFile("something.nbt");
$strategy = new \Aternos\Plop\Placement\SameMaterialPlacementStrategy(perTick: 3);
$animation = new \Aternos\Plop\Animation\FloatAnimation(animationDuration: 25, x: -10, y: 6, z: -10);
$plop = new \Aternos\Plop\Plop(
input: \Aternos\Plop\Input\StructureFile\StructureFile::loadFile("something.nbt"),
functionName: "plop:example",
placementStrategy: $strategy,
defaultAnimation: $animation
);
$plop->generate();
echo $plop->getOutput()->getAsString();
```