GithubHelp home page GithubHelp logo

boxsplitgrammars-update's Introduction

Readme

This repository contains Box Split Grammars as presented in Eger, M. "Instant Architecture in Minecraft using Box-Split Grammars", presented at FDG 2022. The grammar system is written in Python 2.7, for compatibility with MCEdit, but it also allows other backends and should be convertible to Python 3, if necessary.

Setup

To run the grammar system, you will need python 2.7, as stated above. For the Minecraft-Backend you will additionally need this version of MCEdit (in particular some of the utility functions). The grammar system can be dropped somewhere in your python path, or just directly into MCEdit's stock-filter directory and then be used from any filter. Some demo filters you can find are MakeCastle.py, MakeTemple.py, MakeFloorplan.py and Tetrastyle.py, corresponding to various examples shown in the paper (more examples coming soon). makePattern.py requires Pillow, and shows how the grammar system can be used with the PNG backend.

Amulet Update

Installation / Usage

  1. Download Amulet, can be done through Github releases for exact versioning. Amulet Releases
  2. Place relevant Box-Split Grammar files in Amulet/plugins/operations/. NOTE: Do not include PNGSplitGrammar in this or any other non-MCSplitGrammar file as they can override the registered materials in MCSplitGrammar.
  3. Run Amulet and open a world. Select a section of land, switch to the Operation tool, select the relevant Operation and run it.

Notes on implementation

  • Amulet passes a SelectionGroup into an operation, which is a collection of one or more SelectionBoxes. This allows operations to work on more complex selection shapes. The current implementation of the Box-Split grammar only works on a SelectionGroup with a single SelectionBox and pass if more than one SelectionBox is present

Helpful Documentation

  • General Documentation on Amulet. link
  • Documentation on Amulet Core (Much more helpful). link
    • Documentation on the BaseLevel object passed into an operation. link
    • Documentation on the SelectionGroup object passed into an operation. link
    • Documentation on the SelectionBox object which is contained by SelectionGroups. link
  • Documentation on MCEdit's BoundingBox. link
  • Valid blockstates. link

boxsplitgrammars-update's People

Contributors

kkwik avatar yawgmoth avatar

Stargazers

Shi Johnson-Bey avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.