All Projects → mszoek → MinecraftNOC

mszoek / MinecraftNOC

Licence: AGPL-3.0 License
DevJam 2020: In-game NOC boards

Programming Languages

java
68154 projects - #9 most used programming language

Projects that are alternatives of or similar to MinecraftNOC

Nukkit-AntiCheat
AntiPlayerCheat
Stars: ✭ 24 (-11.11%)
Mutual labels:  minecraft-plugin
grafana
Ansible role to setup Grafana.
Stars: ✭ 28 (+3.7%)
Mutual labels:  grafana
yesoreyeram-boomtheme-panel
Grafana Panel for adding styles
Stars: ✭ 59 (+118.52%)
Mutual labels:  grafana
serilog-sinks-grafana-loki
A Serilog sink sending log events to Grafana Loki
Stars: ✭ 55 (+103.7%)
Mutual labels:  grafana
weather-station
A Prometheus exporter for 433 MHz temperature and humidity sensors
Stars: ✭ 60 (+122.22%)
Mutual labels:  grafana
spotify-heroic-datasource
Heroic datasource for Grafana
Stars: ✭ 15 (-44.44%)
Mutual labels:  grafana
EnderContainers
A modern and customizable Bukkit plugin to divide enderchest into multiple inventories.
Stars: ✭ 18 (-33.33%)
Mutual labels:  minecraft-plugin
docker-openshift-grafana
Grafana Docker Image for use with Red Hat OpenShift
Stars: ✭ 22 (-18.52%)
Mutual labels:  grafana
Movecraft
The original movement plugin for Bukkit. Reloaded. Again.
Stars: ✭ 79 (+192.59%)
Mutual labels:  minecraft-plugin
transmission-cli
Transmission PHP client for detect profit torrents and automate weburg.net downloads
Stars: ✭ 17 (-37.04%)
Mutual labels:  grafana
MurderMystery
Protect innocents from Murderer and kill him!
Stars: ✭ 155 (+474.07%)
Mutual labels:  minecraft-plugin
kotori
A flexible data historian based on InfluxDB, Grafana, MQTT and more. Free, open, simple.
Stars: ✭ 73 (+170.37%)
Mutual labels:  grafana
Quests
Questing plugin for Minecraft, enabling the addition of goals for players.
Stars: ✭ 88 (+225.93%)
Mutual labels:  minecraft-plugin
billing-api
Billing API - Killing a fly with a cannon
Stars: ✭ 17 (-37.04%)
Mutual labels:  grafana
thema
A CUE-based framework for portable, evolvable schema
Stars: ✭ 41 (+51.85%)
Mutual labels:  grafana
whatsapp-tracking
Scraping the status of WhatsApp contacts
Stars: ✭ 49 (+81.48%)
Mutual labels:  grafana
ruuvitag-demo
Demo of reading Bluetooth Low Energy sensor measurements of RuuviTag environmental sensors and feeding them to MQTT, a database and dashboards
Stars: ✭ 14 (-48.15%)
Mutual labels:  grafana
BetterSleeping
A Spigot plugin that will make sleeping on servers less of a hassle
Stars: ✭ 67 (+148.15%)
Mutual labels:  minecraft-plugin
web-log-analyst
🐌 Nginx日志分析处理监控
Stars: ✭ 35 (+29.63%)
Mutual labels:  grafana
Islands
A spigot plugin for creating customisable home islands with different biomes. https://www.spigotmc.org/resources/islands-home-islands-system.84303/
Stars: ✭ 18 (-33.33%)
Mutual labels:  minecraft-plugin

MinecraftNOC

DevJam 2020 project: In-game NOC boards

Overview

MinecraftNOC is a Spigot plugin that retrieves arbitrary values from the OpenNMS REST API and panel images from Grafana dashboards. Multiple dashboards are supported. These are displayed in game on signs and framed maps respectively, allowing the player to build a fully immersive collaborative virtual environment that displays real-world data. Signs and maps can be placed in any valid game location to allow for free design of the display. Images can span multiple framed maps to allow for larger sizes and rectangluar shapes.

Metrics are added to the display by clicking a sign with the selection wand (a stick) then executing a command to pass in the partial REST URL. The title takes the first line and the result will consume the remaining 3 lines of the sign (15 chars per line). Any remaining result is truncated.

Color codes are now supported in metrics! Prefix the title string with &x where x is a hex digit 0-f (i.e. standard Minecraft server color codes) to set the title color. Append another code to set the color of the result! A title that is only a single color code (e.g. &c) will omit the title and use all four lines for the result, in the specified color.

Images are added by placing framed maps in the desired shape, left-clicking the top left framed map and then right-clicking the bottom right framed map. All maps in the selected rectangle will be added to the tile set. Once selected, a command is executed to fetch and assign the image to the set of maps.

Left-clicking the air will clear the currently-selected object.

All configuration is saved in real time and loaded when the server starts. A worker thread updates the data at a user-defined interval.

Image of a MinecraftNOC display

Requirements and Compatibility

  • Java 11
  • Spigot 1.15.2
  • OpenNMS Meridian 2019 or higher (Horizon 26+ also works)
  • Grafana with PhantomJS for panel rendering

Commands

  • /getpng panelID -- load the panel with the given ID from the current dashboard
  • /getmetric Title partialURL JsonPointer -- fetch a JSON result from the REST API defined by the base URL in config.yml plus partialURL, extracting the property defined by JsonPointer.
    • /getmetric nodesnmp Title nodeID property -- helper for getting node SNMP properties such as loadavg5
    • /getmetric ifsnmp Title nodeID interfaceID property -- helper for getting interface statistic such as ifHCInOctets
  • /dashboard Operation [Tag] [URL] -- manage Grafana dashboards from which we pull images
    • /dashboard list -- show the configured dashboard tags and URL paths
    • /dashboard select Tag -- set Tag as the current dashboard for /getpng
    • /dashboard remove Tag -- remove the specified dashboard from config
    • /dashboard add Tag URL -- add the specified dashboard to config

Known Issues

So many! A few are:

  • Image rendering can lag the server even though it is in a thread
  • Very little error checking
  • Removing a sign at the wrong time can cause plugin exception

Future Work

  • Robustify and optimize
  • Multiple OpenNMS and Grafana instances
  • Span larger text results across multiple signs
  • Permissions
  • Custom selection wand item and command to get it
  • Additional image sources (e.g. Azure dashboards)
  • Support REST requests with POST and JEXL expressions

Special Thanks

Chris Manigan for the original idea to do a virtual NOC in Minecraft, wrangling OpenNMS and Grafana, and building the NOC room. Alexis Knox for helping with the plugin code.

Note that the project description data, including the texts, logos, images, and/or trademarks, for each open source project belongs to its rightful owner. If you wish to add or remove any projects, please contact us at [email protected].