Grasscutter/build.gradle

280 lines
8.3 KiB
Groovy
Raw Normal View History

2022-04-17 15:43:07 +03:00
/*
* This file was generated by the Gradle 'init' task.
*
* This generated file contains a sample Java project to get you started.
* For more details take a look at the Java Quickstart chapter in the Gradle
* User Manual available at https://docs.gradle.org/5.6.3/userguide/tutorial_java_projects.html
*/
buildscript {
repositories {
maven { url "https://plugins.gradle.org/m2/" }
}
dependencies {
classpath 'com.google.protobuf:protobuf-gradle-plugin:0.8.18'
}
}
2022-04-17 15:43:07 +03:00
plugins {
// Apply the application plugin to add support for building a CLI application
id 'application'
2022-04-17 15:43:07 +03:00
// Apply the java plugin to add support for Java
id 'java'
// Apply the protobuf auto generator
id 'com.google.protobuf' version "0.8.18"
// Eclipse Support
2022-04-27 04:59:26 +03:00
id 'eclipse'
// IntelliJ Support
id 'idea'
2022-04-26 18:13:25 +03:00
// Maven
2022-04-26 18:13:25 +03:00
id 'maven-publish'
id 'signing'
2022-04-17 15:43:07 +03:00
}
2022-05-03 07:05:00 +03:00
compileJava.options.encoding = "UTF-8"
compileTestJava.options.encoding = "UTF-8"
sourceCompatibility = JavaVersion.VERSION_17
targetCompatibility = JavaVersion.VERSION_17
group = 'xyz.grasscutters'
Version 1.3.0 Update languages [skip actions] Fix whitespace [skip actions] Add version increments to lint branch Plugin Manager localisation Update ru-RU.json fix serenitea pot main building Add command targeting by account username Fix elementless Traveler depotValue [BREAKING] dummy commit for Express -> Javalin Update contributing guidelines Move the remaining `HttpUtils` function over to `Router` Clean up http server content types Replace express with javalin in logger Update HttpServer & AuthenticationSystem to use Javalin Remove ``java-express``. Add javalin as dependency Custom Teams (#1731) Console output player command (#1722) Clean up adding extra embryo logic in Avatar::recalcStats Clean up OpenStateData onLoad logic Update default Banners.json (#1719) fix serenitea pot (#1726) fix: avatar energy transform in proudskill Update README.md Sequel (#1717) Add permission clear and list commands (#1715) Fix offline account deletion (fixes #1716) maybe drop my dev domain and use `grasscutter.io` Fix up some japanese references add dendro resonance Update README_NL.md Update readme interlinks Jp support (#1712) Update translation (#1711) Merge pull request #1710 from pfyy/development fix dungeon Dutch language updates For README (#1709) Fix weird conditional in `EquipAffixData` partial fix of dungeon Update `AvatarCostumeData` naming Fix `ReliquarySetData` naming Update README_zh-CN.md Show accessAddress in bold yellow on startup This should make it easier to help people troubleshoot networked setups. Consider telling people to try connecting to the address with a web browser on the client's machine. Update SetPropCommand strings, send cmd usage on target fail refactor some itemdepot lookups for later Fix account deletion Fix HelpCommand missing aliases Prevent material type from being null Move vehicle fightprop hacks Consolidate random point offsets De-hardcode ChestBatchUse Remove asset names from json and comments Actually fix RegionHandler Add new 3.0 Reliquary and SkillParticleGeneration data versionFix must be >= 50 not == 50 in RegionHandler Update game version to 3.0.0 Add Sumeru expeditions. Add scene tag for Vanarana. Make PointData compatible with alternative PointData Fixed Gadget Spawning 3.0 Opcodes Fix RegionHandler versions Update classes to match protos Update 3.0 protos Fix QuestEncryptionKeys Path (#1696) Update README.md (#1695) More literate README_ru-RU.md Avoid potential NPE on WL0 (#1693) Make lint workflows ignore generated folder But run them on linter and workflow changes Clean up some Position usage to avoid unneccessary unpacks Fix healing skills being able to heal dead characters Fix null pointer in `Avatar` if skill level map didnt already contain skill id Delete quests from the player if there are errors loading them from the db update zh-CN.json (#1684) Update ru-RU.json Rename lint_commit's job, don't fail on no changes Fix lint commit reference Allow adding constellations to playerless avatars Fixes #1682 Fix whitespace [skip actions] Don't lint src/generated Make TalentCommand show off new Translate function Improve translate function Make commands pass ints and floats instead of manually casting them to string first Hide resin from map when disabled Replace protos with generated protos small quest fixes (#1677) Blossom Implement (#1606) Merge pull request #1680 from 4Benj/development Remove uncompiled protos from compiled jar Remove crazy high AEXP drops from default chest rewards Fix talentcommand message key Refactor avatar skilldepot and constellation/talent changing Ensures Traveler retains talent levels and constellations on inactive elements when switching elements. Relevant for any other skillDepot-changing activities like Windtrace too, though keeping those in the db might not be as useful. Add README_fil-PH.md (#1675) Avoid allocations on Map::putIfAbsent usage Map::computeIfAbsent only runs the passed constructors when it needs to Add iterable payItems methods Shame they could never be fully generic, but oh well Change unlocked scenes from lists to sets Handbooks: use some sorted maps Stop vendoring fastutil Lombokify some more getters Remove erroneous references to excel skilldata instead of avatar skilldata Refactor team resonances and correct login behaviour and less-than-full-party behaviour Add README_ko-KR.md (#1673) Don't use UIDs as initial capacity for chat history ChatSystem nitpick Fix chat welcome messages and some slight refactoring. Fix deprecated chat references update zh-CN.json (#1662) Refactoring (#1660) chore: typo fix Bump config version. Update ConfigContainer.java (#1646) make fishhook_tp configurable Refactor Json helper functions to JsonUtils Funnel all gson calls into helper functions Remove beta message Fix TalentCommand for Traveler fix:command player said to server won't be shown at chat history (#1643) Update install_without_dependencies.sh Fixed install_without_dependencies.sh script Handle Unlocking of Waypoints and Statues (#1608) Stop language linter from fighting the main linter on \n Fix an edge case that breaks embryos if resources are loaded early Introduce a new arguments parser (#1629) Fix Claiming BP Reward Chests (#1634) Make missing languages not throw warnings Unify gacha mappings generation Remove vestigial references to gacha_mappings Remove language hack from handbook generation Generate handbooks on every launch, fix html docs Refactor handbook generation, remove singular handbook Cache used strings from TextMaps Load in all the textmaps! Implement working* burst/ultimate invincibility Added Indonesian README Added install_without_dependencies.sh file Add invoke-level invulnerability for bursts. Invoke `AbilityManager#onSkillStart` and `AbilityManager#onSkillEnd` Add a method to be invoked on skill perform and end Update README_pl-PL.md Update README_ru-RU.md Update README_es-ES.md Update README_fr-FR.md Update README_zh-TW.md Update README_zh-CN.md Update README.md fix typo Added Indonesian language Added install_without_dependencies.sh file Improve some documentation and JSON (#1618) Add `EntityDamageEvent` and implementations Add more events Update HandlerSceneTransToPointReq.java Update src/main/java/emu/grasscutter/server/packet/recv/HandlerSceneTransToPointReq.java Update src/main/java/emu/grasscutter/game/managers/mapmark/MapMarksManager.java Update src/main/java/emu/grasscutter/server/packet/recv/HandlerTryEnterHomeReq.java Polish README and setConst translation (#1614) Update ru-RU.json Create ko-KR.json Add `PlayerUseFoodEvent` and implementations Move `PlayerTeleportEvent` occurrences into `World` Merge branch 'development' into more-events Clean-up the energy manager Explicitly declare the charset of a `FileReader` in `ConfigContainer` Update zh-CN.json Changed charset of FileReader in ConfigContainer from default to utf-8. Add files via upload Auto language lint Add explicit encoding on manage_languages.py for windows users Add lock function to SetStatsCommand Improve message formatting to clients Replaces tab indents with an extra linebreak. Also adds / to the start of command usage. Neither of these changes affect messages to the server console log. Update zh-CN.json Update zh-CN.json Merge pull request #1586 from Birdulon/development Suppress stacktrace on missing questkeys file Change loading quest keys from `info` to `debug`. Update zh-CN.json Fix an NPE in `EntityGadget` when `draft_id` isn't set SceneScriptManager fix nullPointer error Move `QuestEncryptionKeys` to `resources/` Traditional Chinese | Translation Patches fix nullPointer error small nullpointer fix in EntityGadget, in case meta gadget is not set Update ru-RU.json Add spanish translation for constellation commands Merge pull request #1553 from akatatsu27/questing token fix Merge branch 'development' into questing Update ru-RU.json [Bug] New avatars always created with C0 constellation Fixes #1552 2.7+ prerendered cutscene support two small activity/event fixes * fixed GetAcitivityInfoReq proto * added draft to gadget Scene gatget, to let the client know the propper minigame for some entities Set Constellation Command (#1565) Update French translation Fix remaining traces of `Player#getPos` Attempt to fix the `teleport` command. Add `PlayerTeamDeathEvent` and implementations Add `EntityDeathEvent` and implementations Add a `Location` class (Scene + Position) Remove deprecated class Merge branch 'development' into more-events call deregisterRegion appropriately Merge branch 'development' into questing Read Open States from Excels (#1557) and misc bug fixes Major questing improvements Merge branch 'development' into more-events Translated new changes in languages files to Spanish Fix taking battle pass rewards Add `unlockall` command to unlock all openstates Fix battle pass manager saving with 0 id Set `setChooseAvatarGuid` properly Implement food buffs Use sorted containers for commands & aliases Change commands to use new usage message method. Refactor Command usage and description strings Updated Russian localization (#1543) Refactor excel datas (Mainly item data) Add `kcpInterval` to the config Rename `hasSentAvatarDataNotify()` to `hasSentLoginPackets()` Fix host team size not changing when a player joins their world for the first time Lower kcp interval to 20 Bump project version Add `PlayerTeleportEvent` Update to support `PlayerMoveEvent` Remove `Cancellable` from `PlayerMoveEvent` Implement `PlayerMoveEvent`
2022-09-03 06:36:52 +03:00
version = '1.3.0'
2022-04-25 11:55:21 +03:00
sourceCompatibility = 17
targetCompatibility = 17
2022-04-17 15:43:07 +03:00
2022-04-26 18:13:25 +03:00
java {
withJavadocJar()
withSourcesJar()
}
2022-04-17 15:43:07 +03:00
repositories {
mavenCentral()
}
dependencies {
implementation fileTree(dir: 'lib', include: ['*.jar'])
2022-08-18 12:39:39 +03:00
implementation group: 'it.unimi.dsi', name: 'fastutil', version: '8.5.8'
2022-07-18 11:56:26 +03:00
implementation group: 'org.slf4j', name: 'slf4j-api', version: '1.7.36'
implementation group: 'ch.qos.logback', name: 'logback-core', version: '1.2.11'
implementation group: 'ch.qos.logback', name: 'logback-classic', version: '1.2.11'
implementation group: 'org.jline', name: 'jline', version: '3.21.0'
implementation group: 'org.jline', name: 'jline-terminal-jna', version: '3.21.0'
implementation group: 'net.java.dev.jna', name: 'jna', version: '5.10.0'
2022-07-18 11:56:26 +03:00
implementation group: 'io.netty', name: 'netty-common', version: '4.1.79.Final'
implementation group: 'io.netty', name: 'netty-handler', version: '4.1.79.Final'
implementation group: 'io.netty', name: 'netty-transport-native-epoll', version: '4.1.79.Final'
implementation group: 'io.netty', name: 'netty-transport-native-kqueue', version: '4.1.79.Final'
2022-04-17 15:43:07 +03:00
implementation group: 'com.google.code.gson', name: 'gson', version: '2.9.0'
implementation group: 'com.google.protobuf', name: 'protobuf-java', version: '3.18.2'
implementation group: 'org.reflections', name: 'reflections', version: '0.10.2'
implementation group: 'dev.morphia.morphia', name: 'morphia-core', version: '2.2.7'
implementation group: 'org.greenrobot', name: 'eventbus-java', version: '3.3.1'
//implementation group: 'org.danilopianini', name: 'java-quadtree', version: '0.1.9'
2022-04-27 01:04:21 +03:00
implementation group: 'org.quartz-scheduler', name: 'quartz', version: '2.3.2'
implementation group: 'org.quartz-scheduler', name: 'quartz-jobs', version: '2.3.2'
implementation group: 'org.luaj', name: 'luaj-jse', version: '3.0.1'
2022-05-17 06:17:38 +03:00
implementation group: 'com.esotericsoftware', name : 'reflectasm', version: '1.11.9'
implementation group: 'com.github.davidmoten', name : 'rtree-multi', version: '0.1'
implementation group: 'io.javalin', name: 'javalin', version: '4.6.4'
implementation group: 'com.fasterxml.jackson.core', name: 'jackson-databind', version: '2.13.3'
protobuf files('proto/')
2022-05-13 18:37:17 +03:00
compileOnly 'org.projectlombok:lombok:1.18.24'
annotationProcessor 'org.projectlombok:lombok:1.18.24'
2022-07-09 07:50:25 +03:00
testCompileOnly 'org.projectlombok:lombok:1.18.24'
testAnnotationProcessor 'org.projectlombok:lombok:1.18.24'
2022-04-17 15:43:07 +03:00
}
2022-05-01 03:37:43 +03:00
configurations.all {
exclude group: 'org.slf4j', module: 'slf4j'
}
2022-04-17 15:43:07 +03:00
application {
// Define the main class for the application
2022-07-09 10:12:41 +03:00
getMainClass().set('emu.grasscutter.Grasscutter')
2022-04-17 15:43:07 +03:00
}
2022-04-17 15:43:07 +03:00
jar {
exclude '*.proto'
2022-04-17 15:43:07 +03:00
manifest {
attributes 'Main-Class': 'emu.grasscutter.Grasscutter'
}
2022-07-09 10:12:41 +03:00
archiveBaseName = 'grasscutter'
if (project.hasProperty('jarFilename')) {
archiveFileName = "${jarFilename}.${extension}"
}
2022-04-17 15:43:07 +03:00
from {
configurations.runtimeClasspath.collect { it.isDirectory() ? it : zipTree(it) }
2022-04-17 15:43:07 +03:00
}
2022-06-22 06:16:41 +03:00
duplicatesStrategy = DuplicatesStrategy.INCLUDE
2022-04-17 15:43:07 +03:00
from('src/main/java') {
include '*.xml'
}
2022-04-17 15:43:07 +03:00
2022-07-09 10:12:41 +03:00
destinationDirectory = file(".")
2022-04-17 15:43:07 +03:00
}
2022-04-26 18:13:25 +03:00
publishing {
publications {
mavenJava(MavenPublication) {
artifactId = 'grasscutter'
from components.java
versionMapping {
usage('java-api') {
fromResolutionOf('runtimeClasspath')
}
usage('java-runtime') {
fromResolutionResult()
}
}
pom {
name = 'Grasscutter'
description = 'A server software reimplementation for an anime game.'
url = 'https://github.com/Grasscutters/Grasscutter'
licenses {
license {
name = 'The Apache License, Version 2.0'
url = 'http://www.apache.org/licenses/LICENSE-2.0.txt'
}
}
developers {
developer {
id = 'meledy'
name = 'Meledy'
email = 'meledy@grasscutter.io' // not a real email kek
2022-04-26 18:13:25 +03:00
}
}
scm {
connection = 'scm:git:git@github.com:Grasscutters/Grasscutter.git'
developerConnection = 'scm:git:ssh://github.com:Grasscutters/Grasscutter.git'
url = 'https://github.com/Grasscutters/Grasscutter'
}
}
}
}
repositories {
maven {
if(version.endsWith('-dev')) {
println ("Publishing to 4benj-maven")
url 'https://repo.4benj.com/releases'
name '4benj-maven'
credentials {
username System.getenv('benj_maven_username')
password System.getenv('benj_maven_token')
}
} else {
println ("Publishing to sonatype")
def releasesRepoUrl = 'https://s01.oss.sonatype.org/service/local/staging/deploy/maven2/'
def snapshotsRepoUrl = 'https://s01.oss.sonatype.org/content/repositories/snapshots/'
url = version.endsWith('SNAPSHOT') ? snapshotsRepoUrl : releasesRepoUrl
name = 'sonatype'
credentials(PasswordCredentials)
}
2022-04-26 18:13:25 +03:00
}
}
}
clean {
delete protobuf.generatedFilesBaseDir
}
protobuf {
protoc {
// The artifact spec for the Protobuf Compiler
artifact = 'com.google.protobuf:protoc:3.18.1'
}
// generatedFilesBaseDir = "$projectDir/src/main/java/emu/grasscutter/net/proto/"
generatedFilesBaseDir = "$projectDir/src/generated/"
}
sourceSets {
main {
proto {
// In addition to the default 'src/main/proto'
srcDir 'src/generated'
}
java {
srcDir 'src/java'
}
}
}
idea {
module {
// proto files and generated Java files are automatically added as
// source dirs.
// If you have additional sources, add them here:
sourceDirs += file("/proto/");
}
}
2022-04-27 04:59:26 +03:00
eclipse {
classpath {
file.whenMerged { cp ->
cp.entries.add( new org.gradle.plugins.ide.eclipse.model.SourceFolder('src/generated/main/java', null) )
}
}
}
2022-04-26 18:13:25 +03:00
signing {
if(!version.endsWith('-dev')) {
sign publishing.publications.mavenJava
}
2022-04-26 18:13:25 +03:00
}
javadoc {
2022-05-03 07:05:00 +03:00
options.encoding = 'UTF-8'
2022-04-26 18:13:25 +03:00
if(JavaVersion.current().isJava9Compatible()) {
options.addBooleanOption('html5', true)
}
}
2022-05-11 09:34:53 +03:00
task injectGitHash {
2022-05-11 09:55:40 +03:00
def gitCommitHash = {
try {
return 'git rev-parse --verify --short HEAD'.execute().text.trim()
} catch (ignored) {
2022-05-11 09:55:40 +03:00
return "GIT_NOT_FOUND"
2022-05-11 09:34:53 +03:00
}
}
new File(projectDir, "src/main/java/emu/grasscutter/BuildConfig.java").text =
"""package emu.grasscutter;
public final class BuildConfig {
public static final String VERSION = \"${version}\";
public static final String GIT_HASH = \"${gitCommitHash()}\";
}"""
2022-05-11 09:34:53 +03:00
}
processResources {
dependsOn "generateProto"
}