Code Monkey home page Code Monkey logo

concrete's Introduction

Concrete

Maven version

A solid foundation for Elytra mods.

Concrete is a varied set of useful stuff that is designed to be shaded into a mod's jar, meaning it's not a runtime dependency and is rather included in the dependent mod itself.

Modules

Common

Contains small utility classes that most Concrete mods will want to use, as well as features shared between all modules.

All Concrete modules depend on Common. If a module happens to work without Common, it may stop working at any time without notice.

Block

Contains a fluent builder for Block classes.

Inventory

Contains a Predicate-based validated IItemHandler, and associated IInventory. Also contains extremely useful replacements for Container and GuiContainer.

Reflect

Contains a set of method invokers, field accessors, and class instanciators that take advantage of MethodHandles when they are available.

Network

Depends on Reflect

Contains an easy-to-use network message framework built on top of plugin message packets, similar to SimpleImpl. Replacement for the now-deprecated LambdaNetwork.

ResGen

Depends on Reflect

Contains a fake resource pack that automatically generates the most common kinds of block and item models. Done without ASM and without any nasty hacks.

It's strongly recommended to put a README.md in your models/block and models/item assets directory explaining your use of ResGen. An example is provided in doc/resgen-README.md.

Config

Adds a dead-simple annotation-based configuration system, similar to the Network module.

UtilPackets

Depends on Network

Contains a set of pre-baked Message implementations, for painless use with a NetworkContext from the Network package.

RulesEngine

Depends on Forgelin

Adds a rules engine that provides an extensible configuration format for allowing highly configurable cause-and-effect behaviors that wouldn't be possible with a traditional config file, but in a more streamlined and efficient manner than open-ended scripting.

Anim

Adds a system for putting smoothly animated textures onto the faces of tile entities, decoupled from the vanilla texture animation system. The animations are defined in JSON and are overridable by resource packs.

Depending on Concrete

Concrete must be shaded into the jar and will throw an exception at runtime if it is not shaded.

Merge the following with your build.gradle to use Concrete:

plugins {
	id 'com.github.johnrengelman.shadow' version '1.2.3'
}

repositories {
	maven {
		url = 'https://repo.elytradev.com'
	}
}

jar {
	classifier = 'slim'
}

shadowJar {
	classifier = ''
	relocate 'com.elytradev.concrete', '<me.mymod>.repackage.com.elytradev.concrete'
	configurations = [project.configurations.shadow]
}

reobf {
	shadowJar { mappingType = 'SEARGE' }
}

tasks.build.dependsOn reobfShadowJar

artifacts {
	archives shadowJar
}

dependencies {
	deobfCompile 'com.elytradev.concrete:concrete-common:<version>'
	shadow 'com.elytradev.concrete:concrete-common:<version>'

	deobfCompile 'com.elytradev.concrete:concrete-<module name>:<version>'
	shadow 'com.elytradev.concrete:concrete-<module name>:<version>'
}

Of course, any other method of shading will work too. The Gradle Shadow plugin is what we recommend, though. (Note: Old versions of Gradle suck at SSL. If you get errors trying to download from our Maven repository, please make sure Gradle and Java are up-to-date. We enforce HTTPS redirects, so switching the URL to HTTP won't fix anything.)

Alternatively, you can use the Elytra Project Skeleton, which is designed for Elytra mods, but should work for any mod project.

Concrete only supports the latest version of Minecraft, but its utilities are generic enough that they are known to sometimes work on older versions if used with caution.

concrete's People

Contributors

alexbobp avatar calmbit avatar darkevilmac avatar endangerednayla avatar falkreon avatar gbui avatar jamierocks avatar unascribed avatar

Watchers

 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.