Ajout fichier de config

This commit is contained in:
M4TH1EU 2019-07-16 11:28:29 +02:00
parent 7557a909ea
commit 2f463737d5
8 changed files with 268 additions and 61 deletions

205
.gitignore vendored
View File

@ -1,22 +1,195 @@
# eclipse
bin # Created by https://www.gitignore.io/api/java,eclipse,intellij,forgegradle
*.launch # Edit at https://www.gitignore.io/?templates=java,eclipse,intellij,forgegradle
.settings
### Eclipse ###
.metadata .metadata
.classpath bin/
tmp/
*.tmp
*.bak
*.swp
*~.nib
local.properties
.settings/
.loadpath
.recommenders
# External tool builders
.externalToolBuilders/
# Locally stored "Eclipse launch configurations"
*.launch
# PyDev specific (Python IDE for Eclipse)
*.pydevproject
# CDT-specific (C/C++ Development Tooling)
.cproject
# CDT- autotools
.autotools
# Java annotation processor (APT)
.factorypath
# PDT-specific (PHP Development Tools)
.buildpath
# sbteclipse plugin
.target
# Tern plugin
.tern-project
# TeXlipse plugin
.texlipse
# STS (Spring Tool Suite)
.springBeans
# Code Recommenders
.recommenders/
# Annotation Processing
.apt_generated/
# Scala IDE specific (Scala & Java development for Eclipse)
.cache-main
.scala_dependencies
.worksheet
### Eclipse Patch ###
# Eclipse Core
.project .project
# idea # JDT-specific (Eclipse Java Development Tools)
out .classpath
*.ipr
# Annotation Processing
.apt_generated
.sts4-cache/
### ForgeGradle ###
# Minecraft client/server files
run/**
run/
### Intellij ###
# Covers JetBrains IDEs: IntelliJ, RubyMine, PhpStorm, AppCode, PyCharm, CLion, Android Studio and WebStorm
# Reference: https://intellij-support.jetbrains.com/hc/en-us/articles/206544839
# User-specific stuff
.idea/**/workspace.xml
.idea/**/tasks.xml
.idea/**/usage.statistics.xml
.idea/**/dictionaries
.idea/**
.idea/**/
.idea/*
.idea/*/
.idea/**/shelf
# Generated files
.idea/**/contentModel.xml
# Sensitive or high-churn files
.idea/**/dataSources/
.idea/**/dataSources.ids
.idea/**/dataSources.local.xml
.idea/**/sqlDataSources.xml
.idea/**/dynamic.xml
.idea/**/uiDesigner.xml
.idea/**/dbnavigator.xml
# Gradle
.idea/**/gradle.xml
.idea/**/libraries
# Gradle and Maven with auto-import
# When using Gradle or Maven with auto-import, you should exclude module files,
# since they will be recreated, and may cause churn. Uncomment if using
# auto-import.
# .idea/modules.xml
# .idea/*.iml
# .idea/modules
# *.iml
# *.ipr
# CMake
cmake-build-*/
# Mongo Explorer plugin
.idea/**/mongoSettings.xml
# File-based project format
*.iws *.iws
*.iml
.idea
# gradle # IntelliJ
build out/
.gradle
# other # mpeltonen/sbt-idea plugin
eclipse .idea_modules/
run
# JIRA plugin
atlassian-ide-plugin.xml
# Cursive Clojure plugin
.idea/replstate.xml
# Crashlytics plugin (for Android Studio and IntelliJ)
com_crashlytics_export_strings.xml
crashlytics.properties
crashlytics-build.properties
fabric.properties
# Editor-based Rest Client
.idea/httpRequests
# Android studio 3.1+ serialized cache file
.idea/caches/build_file_checksums.ser
### Intellij Patch ###
# Comment Reason: https://github.com/joeblau/gitignore.io/issues/186#issuecomment-215987721
# *.iml
# modules.xml
# .idea/misc.xml
# *.ipr
# Sonarlint plugin
.idea/sonarlint
### Java ###
# Compiled class file
*.class
build/**
classes/**
classes/**/
classes/*/
classes/*
# Log file
*.log
# BlueJ files
*.ctxt
# Mobile Tools for Java (J2ME)
.mtj.tmp/
# Package Files #
*.jar
*.war
*.nar
*.ear
*.zip
*.tar.gz
*.rar
# virtual machine crash logs, see http://www.java.com/en/download/help/error_hotspot.xml
hs_err_pid*
# End of https://www.gitignore.io/api/java,eclipse,intellij,forgegradle

View File

@ -11,11 +11,12 @@ apply plugin: 'net.minecraftforge.gradle.forge'
//Only edit below this line, the above code adds and enables the necessary things for Forge to be setup. //Only edit below this line, the above code adds and enables the necessary things for Forge to be setup.
version = "1.0" version = "1.1"
group = "com.yourname.modid" // http://maven.apache.org/guides/mini/guide-naming-conventions.html group = "ch.m4th1eu.richpresence" // http://maven.apache.org/guides/mini/guide-naming-conventions.html
archivesBaseName = "modid" archivesBaseName = "richpresence"
sourceCompatibility = targetCompatibility = '1.8' // Need this here so eclipse task generates correctly. sourceCompatibility = targetCompatibility = '1.8' // Need
// this here so eclipse task generates correctly.
compileJava { compileJava {
sourceCompatibility = targetCompatibility = '1.8' sourceCompatibility = targetCompatibility = '1.8'
} }

View File

@ -1,9 +1,8 @@
package ch.m4th1eu.richpresence; package ch.m4th1eu.richpresence;
import ch.m4th1eu.richpresence.events.AdvancedStatusEvent;
import ch.m4th1eu.richpresence.events.EventPresence; import ch.m4th1eu.richpresence.events.EventPresence;
import ch.m4th1eu.richpresence.events.Events;
import ch.m4th1eu.richpresence.proxy.CommonProxy; import ch.m4th1eu.richpresence.proxy.CommonProxy;
import net.minecraftforge.client.event.GuiOpenEvent;
import net.minecraftforge.common.MinecraftForge; import net.minecraftforge.common.MinecraftForge;
import net.minecraftforge.common.config.Configuration; import net.minecraftforge.common.config.Configuration;
import net.minecraftforge.fml.common.Mod; import net.minecraftforge.fml.common.Mod;
@ -11,26 +10,35 @@ import net.minecraftforge.fml.common.Mod.EventHandler;
import net.minecraftforge.fml.common.SidedProxy; import net.minecraftforge.fml.common.SidedProxy;
import net.minecraftforge.fml.common.event.FMLInitializationEvent; import net.minecraftforge.fml.common.event.FMLInitializationEvent;
import net.minecraftforge.fml.common.event.FMLPreInitializationEvent; import net.minecraftforge.fml.common.event.FMLPreInitializationEvent;
import net.minecraftforge.fml.common.eventhandler.SubscribeEvent;
import org.apache.logging.log4j.Logger; import org.apache.logging.log4j.Logger;
/**
* @author M4TH1EU_#0001
*/
@Mod(modid = Main.MODID, name = Main.NAME, version = Main.VERSION) @Mod(modid = Main.MODID, name = Main.NAME, version = Main.VERSION)
public class Main { public class Main {
public static final String MODID = "richpresence"; public static final String MODID = "richpresence";
public static final String NAME = "Discord Rich Presence"; public static final String NAME = "Discord Rich Presence";
public static final String VERSION = "1.0.0"; public static final String VERSION = "1.1";
public EventPresence rpcClient;
@SidedProxy(clientSide = "ch.m4th1eu.richpresence.proxy.ClientProxy", serverSide = "ch.m4th1eu.richpresence.proxy.CommonProxy") @SidedProxy(clientSide = "ch.m4th1eu.richpresence.proxy.ClientProxy", serverSide = "ch.m4th1eu.richpresence.proxy.CommonProxy")
public static CommonProxy proxy; public static CommonProxy proxy;
public static String applicationId; /**
* Variables pour la config
*/
public static String applicationId, largeimage, largeimagetext;
public static boolean advancedstatus;
private static Logger logger; public static Logger logger;
public EventPresence rpcClient;
public Main() {
MinecraftForge.EVENT_BUS.register(new AdvancedStatusEvent());
}
@EventHandler
public void preInit(FMLPreInitializationEvent event) { public void preInit(FMLPreInitializationEvent event) {
logger = event.getModLog(); logger = event.getModLog();
proxy.preInit(event.getSuggestedConfigurationFile()); proxy.preInit(event.getSuggestedConfigurationFile());
@ -39,7 +47,11 @@ public class Main {
Configuration cfg = new Configuration(event.getSuggestedConfigurationFile()); Configuration cfg = new Configuration(event.getSuggestedConfigurationFile());
try { try {
cfg.load(); cfg.load();
applicationId = cfg.getString("applicationId", "", "applicationId", "this is a comment"); applicationId = cfg.getString("applicationID", "DiscordRichPresence", "ex: 491941559181246465", "Ici mettez le client id de votre application (https://bit.ly/2Lu1CC3).");
largeimage = cfg.getString("largeimage", "DiscordRichPresence", "logo", "Ici mettez le nom de votre image (celle dans RichPresence -> Art Assets). (sans le .png)");
largeimagetext = cfg.getString("largeimagetext", "DiscordRichPresence", "Mon serveur !", "Ici mettez le texte qui s'affichera quand vous passerez la souris sur l'image.");
advancedstatus = cfg.getBoolean("advancedstatus", "DiscordRichPresence", true, "Ici laissez \"true\" si vous voulez un status avancé sinon mettez \"false\".");
} catch (Exception ex) { } catch (Exception ex) {
event.getModLog().error("Failed to load configuration"); event.getModLog().error("Failed to load configuration");
@ -52,10 +64,6 @@ public class Main {
} }
public Main() {
MinecraftForge.EVENT_BUS.register(new Events());
}
@EventHandler @EventHandler
public void init(FMLInitializationEvent event) { public void init(FMLInitializationEvent event) {
@ -63,8 +71,12 @@ public class Main {
rpcClient = new EventPresence(); rpcClient = new EventPresence();
proxy.rpcinit(); proxy.rpcinit();
proxy.rpcupdate("Dans le menu.", null); if (Main.advancedstatus) {
proxy.rpcupdate("Dans le menu.", null);
} else {
proxy.rpcupdate("", null);
}
} }

View File

@ -7,27 +7,36 @@ import net.minecraftforge.fml.common.Mod;
import net.minecraftforge.fml.common.eventhandler.SubscribeEvent; import net.minecraftforge.fml.common.eventhandler.SubscribeEvent;
import net.minecraftforge.fml.common.network.FMLNetworkEvent; import net.minecraftforge.fml.common.network.FMLNetworkEvent;
/**
* @author M4TH1EU_#0001
*/
@Mod.EventBusSubscriber @Mod.EventBusSubscriber
public class Events { public class AdvancedStatusEvent {
@SubscribeEvent @SubscribeEvent
public void onServerJoin(FMLNetworkEvent.ClientConnectedToServerEvent event) { public void onServerJoin(FMLNetworkEvent.ClientConnectedToServerEvent event) {
Main.proxy.rpcupdate("En jeu.", null); if (Main.advancedstatus) {
Main.proxy.rpcupdate("En jeu.", null);
}
} }
@SubscribeEvent @SubscribeEvent
public void onQuitServer(FMLNetworkEvent.ClientDisconnectionFromServerEvent event) { public void onQuitServer(FMLNetworkEvent.ClientDisconnectionFromServerEvent event) {
Main.proxy.rpcupdate("Dans le menu.", null); if (Main.advancedstatus) {
Main.proxy.rpcupdate("Dans le menu principal.", null);
}
} }
@SubscribeEvent @SubscribeEvent
public void onGuiOpen(GuiOpenEvent event) { public void onGuiOpen(GuiOpenEvent event) {
if (event.getGui() instanceof GuiIngameMenu) { if (Main.advancedstatus) {
Main.proxy.rpcupdate("Dans le menu.", null); if (event.getGui() instanceof GuiIngameMenu) {
} Main.proxy.rpcupdate("Dans le menu pause.", null);
}
System.out.println(event.getGui()); System.out.println(event.getGui());
}
} }

View File

@ -1,16 +1,20 @@
package ch.m4th1eu.richpresence.events; package ch.m4th1eu.richpresence.events;
import ch.m4th1eu.richpresence.Main;
import net.arikia.dev.drpc.DiscordEventHandlers; import net.arikia.dev.drpc.DiscordEventHandlers;
import net.arikia.dev.drpc.DiscordRPC; import net.arikia.dev.drpc.DiscordRPC;
import net.arikia.dev.drpc.DiscordRichPresence; import net.arikia.dev.drpc.DiscordRichPresence;
/**
* @author M4TH1EU_#0001
*/
public class EventPresence { public class EventPresence {
private static Thread callbackRunner; private static Thread callbackRunner;
public synchronized static final void init() { public synchronized static final void init() {
DiscordEventHandlers handlers = new DiscordEventHandlers(); DiscordEventHandlers handlers = new DiscordEventHandlers();
DiscordRPC.discordInitialize("BOT CLIENT ID", handlers, true, null); DiscordRPC.discordInitialize(Main.applicationId, handlers, true, null);
if (EventPresence.callbackRunner == null) { if (EventPresence.callbackRunner == null) {
(EventPresence.callbackRunner = new Thread(() -> { (EventPresence.callbackRunner = new Thread(() -> {
while (!Thread.currentThread().isInterrupted()) { while (!Thread.currentThread().isInterrupted()) {
@ -23,13 +27,13 @@ public class EventPresence {
return; return;
}, "RPC-Callback-Handler")).start(); }, "RPC-Callback-Handler")).start();
} }
System.out.println("EventPresence has been started."); Main.logger.info("EventPresence has been started.");
} }
public static final void updatePresence(String details, String action) { public static final void updatePresence(String details, String action) {
DiscordRichPresence presence = new DiscordRichPresence(); DiscordRichPresence presence = new DiscordRichPresence();
presence.largeImageKey = "image"; presence.largeImageKey = Main.largeimage;
presence.largeImageText = "TEXT"; presence.largeImageText = Main.largeimagetext;
if (details != null) { if (details != null) {
presence.details = details; presence.details = details;

View File

@ -5,6 +5,9 @@ import net.minecraftforge.common.MinecraftForge;
import java.io.File; import java.io.File;
/**
* @author M4TH1EU_#0001
*/
public class ClientProxy extends CommonProxy { public class ClientProxy extends CommonProxy {
@Override @Override

View File

@ -2,6 +2,9 @@ package ch.m4th1eu.richpresence.proxy;
import java.io.File; import java.io.File;
/**
* @author M4TH1EU_#0001
*/
public class CommonProxy { public class CommonProxy {
public void preInit(File configFile) { public void preInit(File configFile) {

View File

@ -1,16 +1,18 @@
[ [
{ {
"modid": "richpresence", "modid": "richpresence",
"name": "Discord Rich Presence Mod", "name": "Discord Rich Presence Mod",
"description": "Un mod pour ajouter Rich Presence", "description": "Un mod pour ajouter un Rich Presence personnalisé",
"version": "1.0", "version": "${version}",
"mcversion": "1.12.2", "mcversion": "1.12.2",
"url": "https://mathieubroillet.ch/", "url": "https://mathieubroillet.ch/",
"updateUrl": "", "updateUrl": "",
"authorList": ["M4TH1EU_"], "authorList": [
"credits": "RPC Lib author(s)", "M4TH1EU_"
"logoFile": "", ],
"screenshots": [], "credits": "RPC Lib author(s)",
"dependencies": [] "logoFile": "",
} "screenshots": [],
"dependencies": []
}
] ]