Files
factorio-clusterio/plugins/research_sync/info.js
T
Hornwitser 6fc3abafd5 Rename Slave to Host
The role of a slave as a host for Factorio servers is not well reflected
in its name and has caused confusion among users.  Rename slave to host
to better reflect its role as a host of Factorio servers.
2023-02-22 15:30:51 +01:00

81 lines
1.9 KiB
JavaScript

"use strict";
const { libLink } = require("@clusterio/lib");
// schema used for syncing technologies to and from the controller
const technologies = {
type: "array",
items: {
type: "array",
minItems: 4,
maxItems: 4,
items: [
{ type: "string" },
{ type: "integer" },
{ type: ["null", "number"] },
{ type: "boolean" },
],
},
};
module.exports = {
name: "research_sync",
title: "Research Sync",
description: "Synchronises technology research progress between instances.",
instanceEntrypoint: "instance",
controllerEntrypoint: "controller",
messages: {
contribution: new libLink.Event({
type: "research_sync:contribution",
links: ["instance-host", "host-controller"],
forwardTo: "controller",
eventProperties: {
"name": { type: "string" },
"level": { type: "integer" },
"contribution": { type: "number" },
},
}),
progress: new libLink.Event({
type: "research_sync:progress",
links: ["controller-host", "host-instance"],
broadcastTo: "instance",
eventProperties: {
"technologies": {
type: "array",
items: {
additionalProperties: false,
required: ["name", "level", "progress"],
properties: {
"name": { type: "string" },
"level": { type: "integer" },
"progress": { type: "number" },
},
},
},
},
}),
finished: new libLink.Event({
type: "research_sync:finished",
links: ["instance-host", "host-controller", "controller-host", "host-instance"],
forwardTo: "controller",
broadcastTo: "instance",
eventProperties: {
"name": { type: "string" },
"level": { type: "integer" },
},
}),
syncTechnologies: new libLink.Request({
type: "research_sync:sync_technologies",
links: ["instance-host", "host-controller"],
forwardTo: "controller",
requestProperties: {
"technologies": technologies,
},
responseProperties: {
"technologies": technologies,
},
}),
},
};