mirror of
https://github.com/barkeser2002/CatServer.git
synced 2026-09-25 08:00:02 +03:00
288 lines
8.2 KiB
Groovy
288 lines
8.2 KiB
Groovy
buildscript {
|
|
repositories {
|
|
mavenLocal()
|
|
mavenCentral()
|
|
maven {
|
|
name 'prok'
|
|
url 'https://repo.prok.pw/'
|
|
}
|
|
maven {
|
|
name = "forge"
|
|
url = "http://files.minecraftforge.net/maven"
|
|
}
|
|
maven {
|
|
name = "sonatype"
|
|
url = "https://oss.sonatype.org/content/repositories/snapshots/"
|
|
}
|
|
}
|
|
dependencies {
|
|
classpath 'net.minecraftforge.gradle:ForgeGradle:2.2-SNAPSHOT'
|
|
//classpath files('FG.jar')
|
|
}
|
|
}
|
|
|
|
apply plugin: 'java'
|
|
apply plugin: 'net.minecraftforge.gradle.patcher'
|
|
apply plugin: 'net.minecraftforge.gradle.launch4j'
|
|
|
|
|
|
group = 'luohuayu.CatServer'
|
|
version = '1.2.12'
|
|
|
|
repositories {
|
|
clear()
|
|
mavenLocal()
|
|
mavenCentral()
|
|
maven {
|
|
name = "forge"
|
|
url = "http://files.minecraftforge.net/maven"
|
|
}
|
|
maven {
|
|
name = "sonatype"
|
|
url = "https://oss.sonatype.org/content/repositories/snapshots/"
|
|
}
|
|
maven {
|
|
name 'minecraft'
|
|
url 'https://libraries.minecraft.net/'
|
|
}
|
|
maven {
|
|
name 'spigot'
|
|
url 'https://hub.spigotmc.org/nexus/content/repositories/snapshots/'
|
|
}
|
|
maven {
|
|
name 'maven'
|
|
url 'https://mvnrepository.com/artifact/'
|
|
}
|
|
maven {
|
|
name 'prok'
|
|
url 'https://repo.prok.pw/'
|
|
}
|
|
|
|
}
|
|
|
|
configurations{
|
|
compile.extendsFrom libraries
|
|
libraries
|
|
}
|
|
|
|
dependencies {
|
|
libraries 'it.unimi.dsi:fastutil:7.0.12_mojang'
|
|
libraries 'jline:jline:2.12.1'
|
|
libraries 'org.apache.commons:commons-lang3:3.3.2'
|
|
libraries 'com.mojang:authlib:1.5.22'
|
|
libraries 'com.mojang:realms:1.9.8'
|
|
libraries 'io.netty:netty-all:4.0.23.Final'
|
|
libraries 'net.sf.jopt-simple:jopt-simple:4.7'
|
|
libraries 'commons-lang:commons-lang:2.6'
|
|
libraries 'commons-io:commons-io:1.3.2'
|
|
libraries 'org.avaje:ebean:2.8.1'
|
|
libraries 'com.googlecode.json-simple:json-simple:1.1'
|
|
libraries 'org.yaml:snakeyaml:1.15'
|
|
libraries 'com.google.guava:guava:20.0'
|
|
libraries 'org.xerial:sqlite-jdbc:3.7.2'
|
|
libraries 'mysql:mysql-connector-java:5.1.14'
|
|
libraries 'net.sf.trove4j:trove4j:3.0.3'
|
|
libraries 'org.apache.logging.log4j:log4j-core:2.10.0'
|
|
libraries 'net.md-5:SpecialSource:1.8.0'
|
|
}
|
|
|
|
|
|
tasks.withType(JavaCompile) {
|
|
options.encoding = 'UTF-8'
|
|
}
|
|
|
|
jar{
|
|
into('lib') {
|
|
from configurations.libraries
|
|
}
|
|
exclude "**/configurations/**"
|
|
exclude "**/META-INF/**"
|
|
exclude "log4j2.xml"
|
|
}
|
|
|
|
minecraft {
|
|
version = "1.10.2"
|
|
mappings = 'snapshot_nodoc_20161111'
|
|
workspaceDir = "projects"
|
|
versionJson = "jsons/1.10.2-catserver-dev.json"
|
|
buildUserdev = false
|
|
buildInstaller = false
|
|
installerVersion = '1.5'
|
|
|
|
|
|
def common = {
|
|
patchPrefixOriginal "../src-base/minecraft"
|
|
patchPrefixChanged "../src-work/minecraft"
|
|
/* mainClassClient "net.minecraft.launchwrapper.Launch"
|
|
tweakClassClient "net.minecraftforge.fml.common.launcher.FMLTweaker"*/
|
|
mainClassServer "net.minecraft.launchwrapper.Launch"
|
|
tweakClassServer "net.minecraftforge.fml.common.launcher.FMLServerTweaker"
|
|
}
|
|
|
|
projects {
|
|
forge {
|
|
rootDir "forge/"
|
|
patchDir "forge/patches/minecraft/"
|
|
patchAfter "clean"
|
|
genPatchesFrom "clean"
|
|
genMcpPatches = false
|
|
applyMcpPatches = false
|
|
s2sKeepImports = true
|
|
//dchImports = true
|
|
//ignoreWhiteSpaces = false
|
|
with common
|
|
}
|
|
|
|
catserver {
|
|
rootDir "."
|
|
patchDir "patches/"
|
|
patchAfter "forge"
|
|
genPatchesFrom "forge"
|
|
genMcpPatches = true
|
|
applyMcpPatches = true
|
|
s2sKeepImports = true
|
|
//dchImports = true
|
|
//ignoreWhiteSpaces = false
|
|
with common
|
|
}
|
|
}
|
|
}
|
|
|
|
|
|
|
|
installer {
|
|
classifier = 'installer'
|
|
from "forge/src/main/resources/forge_logo.png"
|
|
rename "forge_logo\\.png", "big_logo.png"
|
|
}
|
|
|
|
launch4j {
|
|
jreMinVersion = '1.8.0'
|
|
}
|
|
tasks.generateXmlConfig.dependsOn installer
|
|
tasks.compileJava.enabled = false
|
|
tasks.reobfuscate.setProperty("extraSrg",["PK: org/bukkit/craftbukkit org/bukkit/craftbukkit/v1_10_R1"])
|
|
task signUniversal(type: SignJar, dependsOn: 'outputJar') {
|
|
onlyIf {
|
|
project.hasProperty('jarsigner')
|
|
}
|
|
|
|
def jarsigner = [:];
|
|
|
|
if (project.hasProperty('jarsigner'))
|
|
jarsigner = project.jarsigner;
|
|
|
|
alias = 'forge'
|
|
exclude "paulscode/**"
|
|
storePass = jarsigner.storepass
|
|
keyPass = jarsigner.keypass
|
|
keyStore = jarsigner.keystore
|
|
inputFile = outputJar.archivePath
|
|
outputFile = outputJar.archivePath
|
|
}
|
|
build.dependsOn signUniversal
|
|
installer.dependsOn signUniversal
|
|
|
|
outputJar {
|
|
classifier = "release"
|
|
archiveName = "${baseName}-${version}-${project.getGitLastCommitId()}-server.${extension}"
|
|
|
|
manifest.attributes([
|
|
"Implementation-Title": "CraftBukkit",
|
|
"Implementation-Version": "CraftBukkit-1.10.2",
|
|
"Main-Class": "net.minecraftforge.fml.relauncher.ServerLaunchWrapper",
|
|
"TweakClass": "net.minecraftforge.fml.common.launcher.FMLTweaker",
|
|
"Class-Path": getServerClasspath(file("jsons/1.10.2-catserver-rel.json"))
|
|
])
|
|
|
|
// 设置排除重复的资源文件
|
|
HashSet<String> tExclude=new HashSet<>();
|
|
doFirst{
|
|
def tCatServerResDir=minecraft.projects.catserver.getResourcesDir()
|
|
def tCatServerRes=project.fileTree(tCatServerResDir)
|
|
def tForgeResDirStr=minecraft.projects.forge.getResourcesDir().getPath();
|
|
project.fileTree(minecraft.projects.forge.getResourcesDir()).each{ file->
|
|
def tFileSuffix=file.getPath().replace(tForgeResDirStr,"");
|
|
if(file.isFile()&&tCatServerRes.contains(new File(tCatServerResDir,tFileSuffix))){
|
|
tExclude.add(file.getAbsolutePath());
|
|
}
|
|
}
|
|
|
|
eachFile { file->
|
|
File tFile=file.getFile()
|
|
|
|
if(tFile.isFile()&&tExclude.contains(tFile.getAbsolutePath())){
|
|
file.exclude();
|
|
println "Excluded duplicate forge resource file: "+tFile.getPath()
|
|
}
|
|
}
|
|
}
|
|
}
|
|
|
|
processJson {
|
|
releaseJson = "jsons/1.10.2-catserver-rel.json"
|
|
addReplacements([
|
|
"@minecraft_version@": project.minecraft.version,
|
|
"@version@": project.version,
|
|
"@project@": "CatServer",
|
|
"@artifact@": "luohuayu:project:${project.version}",
|
|
"@universal_jar@": { outputJar.archiveName },
|
|
"@timestamp@": new Date().format("yyyy-MM-dd'T'HH:mm:ssZ"),
|
|
])
|
|
}
|
|
|
|
extractForgeSources {
|
|
exclude "**/SideOnly.java", "**/Side.java"
|
|
}
|
|
|
|
genGradleProjects {
|
|
addCompileDep "junit:junit:4.12"
|
|
|
|
def tJavaLevel="1.8"
|
|
setJavaLevel tJavaLevel
|
|
|
|
doLast {
|
|
File tBuildF=new File(getWorkspaceDir(), "build.gradle")
|
|
String tContent=tBuildF.getText("UTF-8");
|
|
tContent=tContent.replace("sourceCompatibility = targetCompatibility = \""+tJavaLevel+"\" //","sourceCompatibility = targetCompatibility = \"1.6\" //")
|
|
tBuildF.setText(tContent,"UTF-8");
|
|
}
|
|
}
|
|
|
|
import groovy.json.JsonSlurper;
|
|
|
|
String getServerClasspath(File file) {
|
|
def libdir="libraries/";
|
|
def node = new JsonSlurper().parse(file);
|
|
def out = new StringBuilder()
|
|
node.versionInfo.libraries.each { lib ->
|
|
if (lib.serverreq)
|
|
{
|
|
// group : artifact : version
|
|
def split = lib.name.split(':')
|
|
def group = split[0].replace('.', '/')
|
|
def artifact = split[1]
|
|
def version = split[2]
|
|
out += libdir+"$group/$artifact/$version/$artifact-${version}.jar "
|
|
}
|
|
}
|
|
out += libdir+"net/minecraft/server/${minecraft.version}/server-${minecraft.version}.jar"
|
|
return out.toString();
|
|
}
|
|
|
|
def String getGitLastCommitId(){
|
|
try {
|
|
def tFile = new File(".git/HEAD")
|
|
if(tFile.exists()) {
|
|
String[] tContnet = tFile.getText('UTF-8').split(" ");
|
|
if(tContnet.size()>1){
|
|
return new File((".git/"+tContnet[1]).replace("\n","")).getText().substring(0, 7)
|
|
}
|
|
}
|
|
} catch (Exception e) {
|
|
e.printStackTrace()
|
|
}
|
|
return "nogit"
|
|
}
|
|
|