Further work on discord rich presence. Current implementation is untested.
This commit is contained in:
@@ -3,6 +3,7 @@ const path = require('path')
|
||||
const {AssetGuard} = require(path.join(__dirname, 'assets', 'js', 'assetguard.js'))
|
||||
const ProcessBuilder = require(path.join(__dirname, 'assets', 'js', 'processbuilder.js'))
|
||||
const ConfigManager = require(path.join(__dirname, 'assets', 'js', 'configmanager.js'))
|
||||
const DiscordWrapper = require(path.join(__dirname, 'assets', 'js', 'discordwrapper.js'))
|
||||
|
||||
document.addEventListener('readystatechange', function(){
|
||||
if (document.readyState === 'interactive'){
|
||||
@@ -95,6 +96,14 @@ testdownloads = async function(){
|
||||
}
|
||||
}
|
||||
proc.stdout.on('data', tempListener)
|
||||
// Init Discord Hook (Untested)
|
||||
const distro = AssetGuard.retrieveDistributionDataSync(ConfigManager.getGameDirectory)
|
||||
if(distro.discord != null && serv.discord != null){
|
||||
DiscordWrapper.initRPC(distro.discord, serv.discord)
|
||||
proc.on('close', (code, signal) => {
|
||||
DiscordWrapper.shutdownRPC()
|
||||
})
|
||||
}
|
||||
} catch(err) {
|
||||
//det_text.innerHTML = 'Error: ' + err.message;
|
||||
det_text.innerHTML = 'Error: See log for details..';
|
||||
|
||||
@@ -42,10 +42,7 @@ const DEFAULT_CONFIG = {
|
||||
clientToken: uuidV4(),
|
||||
selectedServer: null, // Resolved
|
||||
selectedAccount: null,
|
||||
authenticationDatabase: [],
|
||||
discord: {
|
||||
clientID: 385581240906022916
|
||||
}
|
||||
authenticationDatabase: []
|
||||
}
|
||||
|
||||
let config = null;
|
||||
@@ -123,25 +120,6 @@ exports.setSelectedServer = function(serverID){
|
||||
|
||||
//TODO Write Authentication Database/Selected Account accessors here
|
||||
|
||||
/**
|
||||
* Retrieve the launcher's Discord Client ID.
|
||||
*
|
||||
* @param {Boolean} def - optional. If true, the default value will be returned.
|
||||
* @returns {String} - the launcher's Discord Client ID.
|
||||
*/
|
||||
exports.getDiscordClientID = function(def = false){
|
||||
return !def ? config.discord.clientID : DEFAULT_CONFIG.discord.clientID
|
||||
}
|
||||
|
||||
/**
|
||||
* Set the launcher's Discord Client ID.
|
||||
*
|
||||
* @param {String} clientID - the launcher's new Discord Client ID.
|
||||
*/
|
||||
exports.setDiscordClientID = function(clientID){
|
||||
config.discord.clientID = clientID
|
||||
}
|
||||
|
||||
// User Configurable Settings
|
||||
|
||||
// Java Settings
|
||||
|
||||
@@ -4,24 +4,37 @@ const ConfigManager = require('./configmanager.js')
|
||||
|
||||
let rpc
|
||||
|
||||
function initRPC(){
|
||||
exports.initRPC = function(genSettings, servSettings){
|
||||
rpc = new Client({ transport: 'ipc' });
|
||||
|
||||
rpc.login(ConfigManager.getDiscordClientID()).catch(error => {
|
||||
rpc.on('ready', () => {
|
||||
const activity = {
|
||||
// state = top text
|
||||
// details = bottom text
|
||||
state: 'Server: ' + settings.shortId,
|
||||
details: '',
|
||||
largeImageKey: servSettings.largeImageKey,
|
||||
largeImageText: serSettings.largeImageText,
|
||||
smallImageKey: genSettings.smallImageKey,
|
||||
smallImageText: genSettings.smallImageText,
|
||||
startTimestamp: new Date().getTime() / 1000,
|
||||
instance: false
|
||||
}
|
||||
|
||||
rpc.setActivity(activity)
|
||||
})
|
||||
|
||||
rpc.login(genSettings.clientID()).catch(error => {
|
||||
if(error.message.includes('ENOENT')) {
|
||||
console.log('Unable to initialize Discord Rich Presence, no client detected.')
|
||||
} else {
|
||||
console.log('Unable to initialize Discord Rich Presence: ' + error.message)
|
||||
}
|
||||
})
|
||||
|
||||
const activity = {
|
||||
details: 'Playing on WesterosCraft',
|
||||
|
||||
}
|
||||
}
|
||||
|
||||
function shutdownRPC(){
|
||||
exports.shutdownRPC = function(){
|
||||
rpc.setActivity({})
|
||||
rpc.destroy()
|
||||
rpc = null
|
||||
}
|
||||
@@ -1,5 +1,10 @@
|
||||
{
|
||||
"version": "1.0",
|
||||
"discord": {
|
||||
"clientID": 385581240906022916,
|
||||
"smallImageText": "WesterosCraft",
|
||||
"smallImageKey": "seal-circle"
|
||||
},
|
||||
"servers": [
|
||||
{
|
||||
"id": "WesterosCraft-1.11.2",
|
||||
@@ -9,6 +14,11 @@
|
||||
"revision": "0.0.1",
|
||||
"server_ip": "mc.westeroscraft.com",
|
||||
"mc_version": "1.11.2",
|
||||
"discord": {
|
||||
"shortId": "Production",
|
||||
"largeImageText": "WesterosCraft Production Server",
|
||||
"largeImageKey": "server-prod"
|
||||
},
|
||||
"default_selected": true,
|
||||
"autoconnect": true,
|
||||
"modules": [
|
||||
|
||||
Reference in New Issue
Block a user