Initial forge mod setup

This commit is contained in:
Blue (Lukas Rieger) 2020-01-20 14:51:20 +01:00
parent fe3f8eb53e
commit 00c28f1d3f
6 changed files with 223 additions and 3 deletions

25
BlueMapForge/build.gradle Normal file
View File

@ -0,0 +1,25 @@
buildscript {
repositories {
maven { url = 'https://files.minecraftforge.net/maven/' }
jcenter()
mavenCentral()
}
dependencies {
classpath group: 'net.minecraftforge.gradle', name: 'ForgeGradle', version: '3.+', changing: true
}
}
apply plugin: 'net.minecraftforge.gradle'
version = '0.2.1'
group = 'de.bluecolored.bluemap'
archivesBaseName = 'bluemap'
dependencies {
minecraft 'net.minecraftforge:forge:1.14.4-28.1.0'
compile project(':BlueMapCommon')
}
minecraft {
mappings = 'stable_58'
}

View File

@ -0,0 +1,117 @@
package de.bluecolored.bluemap.forge;
import java.io.File;
import java.io.IOException;
import java.util.HashMap;
import java.util.Map;
import java.util.UUID;
import org.apache.logging.log4j.LogManager;
import de.bluecolored.bluemap.common.plugin.Plugin;
import de.bluecolored.bluemap.common.plugin.serverinterface.ServerEventListener;
import de.bluecolored.bluemap.common.plugin.serverinterface.ServerInterface;
import de.bluecolored.bluemap.core.logger.Logger;
import net.minecraft.server.MinecraftServer;
import net.minecraft.world.World;
import net.minecraft.world.server.ServerWorld;
import net.minecraftforge.common.MinecraftForge;
import net.minecraftforge.eventbus.api.SubscribeEvent;
import net.minecraftforge.fml.common.Mod;
import net.minecraftforge.fml.event.server.FMLServerStartingEvent;
import net.minecraftforge.fml.event.server.FMLServerStoppingEvent;
@Mod(Plugin.PLUGIN_ID)
public class ForgeMod implements ServerInterface {
private Plugin bluemap;
private MinecraftServer server;
private Map<String, UUID> worldUUIDs;
public ForgeMod() {
Logger.global = new Log4jLogger(LogManager.getLogger());
this.bluemap = new Plugin("forge", this);
this.worldUUIDs = new HashMap<>();
MinecraftForge.EVENT_BUS.register(this);
}
@SubscribeEvent
public void onServerStarting(FMLServerStartingEvent event) {
this.server = event.getServer();
this.worldUUIDs.clear();
for (ServerWorld world : event.getServer().getWorlds()) {
try {
world.save(null, false, false);
} catch (Throwable t) {
Logger.global.logError("Failed to save world: " + world.getProviderName(), t);
}
}
new Thread(() -> {
try {
Logger.global.logInfo("Loading...");
bluemap.load();
if (bluemap.isLoaded()) Logger.global.logInfo("Loaded!");
} catch (Throwable t) {
Logger.global.logError("Failed to load!", t);
}
}).start();
}
@SubscribeEvent
public void onServerStopping(FMLServerStoppingEvent event) {
Logger.global.logInfo("Stopping...");
bluemap.unload();
Logger.global.logInfo("Saved and stopped!");
}
@Override
public void registerListener(ServerEventListener listener) {
// TODO Auto-generated method stub
}
@Override
public void unregisterAllListeners() {
// TODO Auto-generated method stub
}
@Override
public UUID getUUIDForWorld(File worldFolder) throws IOException {
worldFolder = worldFolder.getCanonicalFile();
for (ServerWorld world : server.getWorlds()) {
if (worldFolder.equals(world.getSaveHandler().getWorldDirectory().getCanonicalFile())) return getUUIDForWorld(world);
}
throw new IOException("There is no world with this folder loaded: " + worldFolder.getPath());
}
public UUID getUUIDForWorld(World world) {
synchronized (worldUUIDs) {
String key = world.getWorldInfo().getWorldName();
UUID uuid = worldUUIDs.get(key);
if (uuid == null) {
uuid = UUID.randomUUID();
worldUUIDs.put(key, uuid);
}
return uuid;
}
}
@Override
public File getConfigFolder() {
//TODO
return new File(server.getDataDirectory(), "config");
}
}

View File

@ -0,0 +1,69 @@
/*
* This file is part of BlueMapSponge, licensed under the MIT License (MIT).
*
* Copyright (c) Blue (Lukas Rieger) <https://bluecolored.de>
* Copyright (c) contributors
*
* Permission is hereby granted, free of charge, to any person obtaining a copy
* of this software and associated documentation files (the "Software"), to deal
* in the Software without restriction, including without limitation the rights
* to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
* copies of the Software, and to permit persons to whom the Software is
* furnished to do so, subject to the following conditions:
*
* The above copyright notice and this permission notice shall be included in
* all copies or substantial portions of the Software.
*
* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
* IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
* FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
* AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
* LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
* OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
* THE SOFTWARE.
*/
package de.bluecolored.bluemap.forge;
import org.apache.logging.log4j.Logger;
import de.bluecolored.bluemap.core.logger.AbstractLogger;
public class Log4jLogger extends AbstractLogger {
private Logger out;
public Log4jLogger(Logger out) {
this.out = out;
}
@Override
public void logError(String message, Throwable throwable) {
out.error(message, throwable);
}
@Override
public void logWarning(String message) {
out.warn(message);
}
@Override
public void logInfo(String message) {
out.info(message);
}
@Override
public void logDebug(String message) {
if (out.isDebugEnabled()) out.debug(message);
}
@Override
public void noFloodDebug(String message) {
if (out.isDebugEnabled()) super.noFloodDebug(message);
}
@Override
public void noFloodDebug(String key, String message) {
if (out.isDebugEnabled()) super.noFloodDebug(key, message);
}
}

View File

@ -5,18 +5,22 @@ plugins {
allprojects {
repositories {
jcenter()
mavenCentral()
maven {
url 'https://jitpack.io'
}
maven {
name 'sponge'
url 'http://repo.spongepowered.org/maven'
url 'http://repo.spongepowered.org/maven/'
}
maven {
name 'CodeMC'
url 'https://repo.codemc.org/repository/maven-public'
url 'https://repo.codemc.org/repository/maven-public/'
}
maven {
url = 'https://files.minecraftforge.net/maven/'
}
}
compileJava.options.compilerArgs.add '-parameters'
@ -30,6 +34,7 @@ dependencies {
compile project(':BlueMapCLI')
compile project(':BlueMapBukkit')
//compile project(':BlueMapSponge')
compile project(':BlueMapForge')
}
assemble.dependsOn shadowJar {

2
gradle.properties Normal file
View File

@ -0,0 +1,2 @@
org.gradle.jvmargs=-Xmx3G
org.gradle.daemon=false

View File

@ -4,9 +4,11 @@ include ':BlueMapCLI'
include ':BlueMapCommon'
include ':BlueMapSponge'
include ':BlueMapBukkit'
include ':BlueMapForge'
project(':BlueMapCore').projectDir = "$rootDir/BlueMapCore" as File
project(':BlueMapCLI').projectDir = "$rootDir/BlueMapCLI" as File
project(':BlueMapCommon').projectDir = "$rootDir/BlueMapCommon" as File
project(':BlueMapSponge').projectDir = "$rootDir/BlueMapSponge" as File
project(':BlueMapBukkit').projectDir = "$rootDir/BlueMapBukkit" as File
project(':BlueMapBukkit').projectDir = "$rootDir/BlueMapBukkit" as File
project(':BlueMapForge').projectDir = "$rootDir/BlueMapForge" as File