Integrated REST

Integrated REST

Mod

Expose Integrated Dynamics networks as a REST API

Client and server Technology

1,172 downloads
3 followers
Created2 years ago
Updateda month ago

Follow Save
Host your Minecraft server on BisectHosting - get 25% off your first month with code MODRINTH.

 

This requires the Cyclops Core library and Integrated Dynamics!
Come talk to us in #integratedmods on the Cyclops Discord server!

 

This mod allows you to read from and write to your Integrated Dynamics networks via a REST API.
This makes it possible to read the status of your networks and worlds via Web-protocols, and interact with them by POST-ing values to HTTP Proxy blocks in your world.

 

Some examples on what is possible with this mod (and some external coding):

  • Control the lights of your home based on the day time in your Minecraft world.
  • Play a sound in Minecraft when you receive an email.
  • Show the positions of all online players in the overworld on your website.
  • Open a door from your mob farm when you gain a new Twitch or Mixer subscriber.

 

WARNING: If you have never heard about 'API' or 'REST' before, then this probably is nothing for you. This mod is mainly aimed at advanced users wanting to do very advanced automation using external system that can communicate over HTTP.

 

This mod exposes your networks as JSON on a configurable port. Here is a snippet of a single network element output:

 

{
  "@context": "https://raw.githubusercontent.com/CyclopsMC/IntegratedREST/master-1.12/src/main/resources/context.jsonld",
  "@id": "http://localhost:3000/",
  "networkElements": [
    {
      "@id": "http://localhost:3000/networkElement/integrateddynamics/part/4",
      "position": {
        "world": 0,
        "x": -26,
        "y": 57,
        "z": -249,
        "side": "ir:east"
      },
      "block": "http://localhost:3000/registry/block/integrateddynamics/cable",
      "@type": [
        "NetworkElement",
        "http://localhost:3000/registry/part/display_panel"
      ],
      "channel": 0,
      "priority": 0,
      "updateInterval": 1,
      "network": "http://localhost:3000/network/1619976862",
      "valueType": "http://localhost:3000/registry/value/valuetype/valuetypes/integrateddynamics/string/name",
      "value": "I was updated\\nvia HTTP!",
      "target": {
        "world": 0,
        "x": -25,
        "y": 57,
        "z": -249,
        "side": "ir:west"
      },
      "loaded": true
    },
  ...
  ]
}

In fact, this JSON is valid JSON-LD (Linked Data JSON), which makes it possible to use this output in RDF tools. 

 

Next to the state of your network and its elements, this mod also exposes the state of most Forge registries.
All available information (accessible via the API index page):

  • Networks
  • Network elements
  • Part types
  • Aspect types
  • Value types
  • Items
  • Blocks
  • Fluids
  • Mods

This mod adds a single craftable block to the game, the HTTP Proxy.

 

Like all network elements, this block is accessible via HTTP. For example, an HTTP Proxy with ID 7 will be accessible via http://localhost:3000/networkElement/integrateddynamics/http/7.

This block has an internal value state that can be updated via HTTP POST requests (more information on the wiki).

 

Note: If you are using this mod on a server, you'll probably want to disable starting up the HTTP server client-side, by disabling it via the config file of the players.

 

This mod collects anonymized startup data, this can be disabled in the config file and adheres to Minecraft's snooper settings.

 

  If you like this mod, consider supporting me on Patreon!

External resources



Project members

rubensworks

Owner


Technical information

License
MIT
Client side
required
Server side
required
Project ID