Giter Site home page Giter Site logo

ignite-fork's Introduction

Ignite Logo

Ignite is a Mixin loader for Spigot/Paper.


Build Status MIT License Discord Maven Central Sonatype Nexus (Snapshots)

Install

Download the ignite.jar from the releases page.

Place the ignite.jar into the same directory with your Minecraft Server jar (i.e paper.jar, spigot.jar or server.jar).

Run your original start command, but replace the normal server jar with ignite.jar. If you are using Java 8 you will need to add -javaagent:./ignite.jar to your start command.

If Ignite cannot start your server, you may need to add additional startup flags. See the Advanced Section below for more information. If you're still confused, be sure to ask for help.

The mods can then be placed into the mods directory that will be created.

Making a Mod

The ignite-mod-template is a template you can use to start a project for Paper without needing to do all the setup yourself.

To depend on the Ignite API in order to create your mod, you will need to add the following to your buildscript:

Gradle

repositories {
  mavenCentral()
  maven {
    url = "https://repo.spongepowered.org/maven/"
  }
}

dependencies {
  compileOnly "space.vectrix.ignite:ignite-api:1.0.1"
  compileOnly "org.spongepowered:mixin:0.8.5"
  compileOnly "io.github.llamalad7:mixinextras-common:0.3.5"
}

Maven

<repositories>
  <repository>
    <url>https://repo.spongepowered.org/maven/</url>
  </repository>
</repositories>

<dependencies>
  <dependency>
    <groupId>space.vectrix.ignite</groupId>
    <artifactId>ignite-api</artifactId>
    <version>1.0.1</version>
  </dependency>
  <dependency>
    <groupId>org.spongepowered</groupId>
    <artifactId>mixin</artifactId>
    <version>0.8.5</version>
  </dependency>
  <dependency>
    <groupId>io.github.llamalad7</groupId>
    <artifactId>mixinextras-common</artifactId>
    <version>0.3.5</version>
  </dependency>
</dependencies>

Note: To support custom mappings you should check out ignite-mod-template if you're running Paper. For Spigot check out Pacifist Remapper.

Configuring your Mod

Your mod will require a ignite.mod.json in order to be located as a mod. The ignite.mod.json provides the metadata needed to load your mixins and access wideners.

Example ignite.mod.json:

{
  "id": "example",
  "version": "1.0.0",
  "mixins": [
    "mixins.example.core.json"
  ],
  "wideners": [
    "example.accesswidener"
  ]
}

The mods will need to be placed in the directory the launcher will be targeting to load.

Using Mixins

The Mixin configuration files will need to be available in your mods binary in order to be loaded. The name of each configuration file should be added to the mixins section in your ignite.mod.json, or alternatively could be added to your jar manifest.

Mixin Specification

Using Access Wideners

The Access Wideners configuration files will need to be available in your mods binary in order to be loaded. The name of each configuration file should be added to the wideners section in your ignite.mod.json, or alternatively could be added to your jar manifest with the AccessWidener key.

Warning: Access wideners should only be used in situations where Mixin will not work!

Access Widener Specification

Advanced Usage

Ignite has some properties that can be set on startup to change the launch target, mod directory and more. The following could be added to your startup script:

  • The game locator service to use. (e.g -Dignite.locator=dummy)
  • The path to the server jar. (e.g -Dignite.jar=./server.jar)
  • The classpath to the server entry point. (e.g -Dignite.target=org.bukkit.craftbukkit.Main)
  • The directory ignite libraries will be located. (e.g -Dignite.libraries=./libraries)
  • The directory ignite mods will be located. (e.g -Dignite.mods=./mods)

Game Locators

Game locators provide platform specific modifications to the launch process. In some cases where the platform cannot be automatically detected, these flags can set the information it needs to launch.

The following targets could use the following flags:

  • Paper (1.18+):

    • Service name: paper (e.g -Dignite.locator=paper)
    • Extra properties:
      • The path to the paperclip jar. (e.g -Dignite.paper.jar=./paper.jar)
      • The classpath to the paperclip entry point. (e.g -Dignite.paper.target=io.papermc.paperclip.Paperclip)
      • The minecraft server version paperclip will be patching. (e.g -Dignite.paper.version=1.20.4)
  • Spigot (1.18+):

    • Service name: spigot (e.g -Dignite.locator=spigot)
    • Extra properties:
      • Tge path to the spigot bundler directory. (e.g -Dignite.spigot.bundler=./bundler)
      • The path to the spigot bootstrap jar. (e.g -Dignite.spigot.jar=./spigot.jar)
      • The classpath to the spigot bootstrap entry point. (e.g -Dignite.spigot.target=org.bukkit.craftbukkit.bootstrap.Main)
      • The spigot version it will be using. (e.g -Dignite.spigot.version=1.20.4-R0.1-SNAPSHOT)
  • Paper Legacy:

    • Service name: legacy_paper (e.g -Dignite.locator=legacy_paper)
    • Extra properties:
      • The path to the paperclip jar. (e.g -Dignite.paper.jar=./paper.jar)
      • The classpath to the paperclip entry point. (e.g -Dignite.paper.target=io.papermc.paperclip.Paperclip)
      • The minecraft server version paperclip will be patching. (e.g -Dignite.paper.version=1.12.2)

Building

Note: If you do not have Gradle installed then use ./gradlew for Unix systems or Git Bash and gradlew.bat for Windows systems in place of any 'gradle' command.

In order to build Ignite you simply need to run the gradle build command. You can find the compiled JAR file in ./build/libs/ named 'ignite.jar'.

Inspiration

This project has many parts inspired by the following projects:

ignite-fork's People

Contributors

vectrixdevelops avatar renovate[bot] avatar renovate-bot avatar dependabot[bot] avatar floweynt avatar kujoumolean avatar buepas avatar aromaa 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.