Skip to content

Commit a016b2a

Browse files
committed
Merge branch '2021.1' into 2021.2
2 parents 54f30a2 + 5fb6e84 commit a016b2a

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

57 files changed

+1369
-67
lines changed

build.gradle.kts

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -236,6 +236,7 @@ license {
236236
)
237237
exclude(
238238
"com/demonwav/mcdev/platform/mcp/at/gen/**",
239+
"com/demonwav/mcdev/platform/mcp/aw/gen/**",
239240
"com/demonwav/mcdev/nbt/lang/gen/**",
240241
"com/demonwav/mcdev/platform/mixin/invalidInjectorMethodSignature/*.java",
241242
"com/demonwav/mcdev/translations/lang/gen/**"
@@ -279,6 +280,9 @@ tasks.register("format") {
279280
val generateAtLexer by lexer("AtLexer", "com/demonwav/mcdev/platform/mcp/at/gen")
280281
val generateAtParser by parser("AtParser", "com/demonwav/mcdev/platform/mcp/at/gen")
281282

283+
val generateAwLexer by lexer("AwLexer", "com/demonwav/mcdev/platform/mcp/aw/gen")
284+
val generateAwParser by parser("AwParser", "com/demonwav/mcdev/platform/mcp/aw/gen")
285+
282286
val generateNbttLexer by lexer("NbttLexer", "com/demonwav/mcdev/nbt/lang/gen")
283287
val generateNbttParser by parser("NbttParser", "com/demonwav/mcdev/nbt/lang/gen")
284288

@@ -294,6 +298,8 @@ val generate by tasks.registering {
294298
dependsOn(
295299
generateAtLexer,
296300
generateAtParser,
301+
generateAwLexer,
302+
generateAwParser,
297303
generateNbttLexer,
298304
generateNbttParser,
299305
generateLangLexer,

gradle.properties

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -14,7 +14,7 @@ kotlin.code.style=official
1414
ideaVersion = 2021.2
1515
ideaVersionName = 2021.2
1616

17-
coreVersion = 1.5.16
17+
coreVersion = 1.5.17
1818
downloadIdeaSources = true
1919

2020
pluginTomlVersion = 0.2.151.3997-212

readme.md

Lines changed: 1 addition & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -12,11 +12,7 @@ Minecraft Development for IntelliJ
1212
<td colspan="2"><a href="https://ci.demonwav.com/viewType.html?buildTypeId=MinecraftDev_Build"><img src="https://tc.demonwav.com/app/rest/builds/buildType:(id:MinecraftDev_Build)/statusIcon.svg" alt="Teamcity Build Status" /></a></td>
1313
</tr>
1414
<tr>
15-
<td align="right" rowspan="5" ><b>Nightly Builds</b></td>
16-
<td align="left">2020.3</td>
17-
<td align="left"><a href="https://ci.denwav.dev/viewType.html?buildTypeId=MinecraftDev_Nightly_20203"><img src="https://ci.denwav.dev/app/rest/builds/buildType:(id:MinecraftDev_Nightly_20203)/statusIcon.svg" alt="2020.3 Nightly Status" /></a></td>
18-
</tr>
19-
<tr>
15+
<td align="right" rowspan="4"><b>Nightly Builds</b></td>
2016
<td align="left">2021.1</td>
2117
<td align="left"><a href="https://ci.denwav.dev/viewType.html?buildTypeId=MinecraftDev_Nightly_20211"><img src="https://ci.denwav.dev/app/rest/builds/buildType:(id:MinecraftDev_Nightly_20211)/statusIcon.svg" alt="2021.1 Nightly Status" /></a></td>
2218
</tr>

src/main/grammars/AwLexer.flex

Lines changed: 88 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,88 @@
1+
/*
2+
* Minecraft Dev for IntelliJ
3+
*
4+
* https://minecraftdev.org
5+
*
6+
* Copyright (c) 2021 minecraft-dev
7+
*
8+
* MIT License
9+
*/
10+
11+
package com.demonwav.mcdev.platform.mcp.aw.gen;
12+
13+
import com.intellij.lexer.*;
14+
import com.intellij.psi.tree.IElementType;
15+
import static com.demonwav.mcdev.platform.mcp.aw.gen.psi.AwTypes.*;
16+
import static com.intellij.psi.TokenType.*;
17+
18+
%%
19+
20+
%{
21+
public AwLexer() {
22+
this((java.io.Reader)null);
23+
}
24+
%}
25+
26+
%public
27+
%class AwLexer
28+
%implements FlexLexer
29+
%function advance
30+
%type IElementType
31+
32+
%s HEADER
33+
%s CLASS_NAME
34+
%s MEMBER_NAME
35+
%s TYPES
36+
37+
%unicode
38+
39+
HEADER_NAME=accessWidener
40+
HEADER_VERSION_ELEMENT=v\d+
41+
HEADER_NAMESPACE_ELEMENT=named|intermediary
42+
PRIMITIVE=[ZBCSIFDJV]
43+
CLASS_VALUE=(\[+[ZBCSIFDJ]|(\[*L[^;\n]+;))
44+
ACCESS_ELEMENT=accessible|extendable|mutable
45+
CLASS_ELEMENT=class
46+
METHOD_ELEMENT=method
47+
FIELD_ELEMENT=field
48+
NAME_ELEMENT=\w+|<init>
49+
CLASS_NAME_ELEMENT=(\w+\/)*\w+(\$\w+)?
50+
COMMENT=#.*
51+
CRLF=\n|\r|\r\n
52+
WHITE_SPACE=\s
53+
54+
%%
55+
56+
<YYINITIAL> {
57+
{HEADER_NAME} { yybegin(HEADER); return HEADER_NAME; }
58+
{ACCESS_ELEMENT} { return ACCESS_ELEMENT; }
59+
{CLASS_ELEMENT} { yybegin(CLASS_NAME); return CLASS_ELEMENT; }
60+
{METHOD_ELEMENT} { yybegin(CLASS_NAME); return METHOD_ELEMENT; }
61+
{FIELD_ELEMENT} { yybegin(CLASS_NAME); return FIELD_ELEMENT; }
62+
}
63+
64+
<HEADER> {
65+
{HEADER_VERSION_ELEMENT} { return HEADER_VERSION_ELEMENT; }
66+
{HEADER_NAMESPACE_ELEMENT} { return HEADER_NAMESPACE_ELEMENT; }
67+
}
68+
69+
<CLASS_NAME> {
70+
{CLASS_NAME_ELEMENT} { yybegin(MEMBER_NAME); return CLASS_NAME_ELEMENT; }
71+
}
72+
73+
<MEMBER_NAME> {
74+
{NAME_ELEMENT} { yybegin(TYPES); return NAME_ELEMENT; }
75+
}
76+
77+
<TYPES> {
78+
"(" { return OPEN_PAREN; }
79+
")" { return CLOSE_PAREN; }
80+
{CLASS_VALUE} { return CLASS_VALUE; }
81+
{PRIMITIVE} ({PRIMITIVE}|{CLASS_VALUE})* { zzMarkedPos = zzStartRead + 1; return PRIMITIVE; }
82+
}
83+
84+
{CRLF} { yybegin(YYINITIAL); return CRLF; }
85+
{WHITE_SPACE} { return WHITE_SPACE; }
86+
87+
{COMMENT} { return COMMENT; }
88+
[^] { return BAD_CHARACTER; }

src/main/grammars/AwParser.bnf

Lines changed: 107 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,107 @@
1+
/*
2+
* Minecraft Dev for IntelliJ
3+
*
4+
* https://minecraftdev.org
5+
*
6+
* Copyright (c) 2021 minecraft-dev
7+
*
8+
* MIT License
9+
*/
10+
11+
{
12+
parserClass="com.demonwav.mcdev.platform.mcp.aw.gen.parser.AwParser"
13+
14+
extends="com.intellij.extapi.psi.ASTWrapperPsiElement"
15+
16+
psiClassPrefix="Aw"
17+
psiImplClassSuffix="Impl"
18+
psiPackage="com.demonwav.mcdev.platform.mcp.aw.gen.psi"
19+
psiImplPackage="com.demonwav.mcdev.platform.mcp.aw.gen.psi.impl"
20+
21+
elementTypeHolderClass="com.demonwav.mcdev.platform.mcp.aw.gen.psi.AwTypes"
22+
elementTypeClass="com.demonwav.mcdev.platform.mcp.aw.psi.AwElementType"
23+
tokenTypeClass="com.demonwav.mcdev.platform.mcp.aw.psi.AwTokenType"
24+
25+
consumeTokenMethod="consumeTokenFast"
26+
}
27+
28+
aw_file ::= header_line line*
29+
30+
private header_line ::= !<<eof>> header COMMENT? end_line
31+
32+
private line ::= !<<eof>> entry? COMMENT? end_line
33+
private end_line ::= crlf | <<eof>>
34+
35+
header ::= HEADER_NAME HEADER_VERSION_ELEMENT HEADER_NAMESPACE_ELEMENT {
36+
mixin="com.demonwav.mcdev.platform.mcp.aw.psi.mixins.impl.AwHeaderImplMixin"
37+
implements="com.demonwav.mcdev.platform.mcp.aw.psi.mixins.AwHeaderMixin"
38+
}
39+
40+
private entry ::= class_entry | method_entry | field_entry {
41+
mixin="com.demonwav.mcdev.platform.mcp.aw.psi.mixins.impl.AwEntryImplMixin"
42+
implements="com.demonwav.mcdev.platform.mcp.aw.psi.mixins.AwEntryMixin"
43+
recoverWhile = line_recover
44+
}
45+
46+
class_entry ::= access class_literal class_name {
47+
mixin="com.demonwav.mcdev.platform.mcp.aw.psi.mixins.impl.AwClassEntryImplMixin"
48+
implements="com.demonwav.mcdev.platform.mcp.aw.psi.mixins.AwClassEntryMixin"
49+
}
50+
51+
method_entry ::= access method_literal class_name member_name method_desc{
52+
mixin="com.demonwav.mcdev.platform.mcp.aw.psi.mixins.impl.AwMethodEntryImplMixin"
53+
implements="com.demonwav.mcdev.platform.mcp.aw.psi.mixins.AwMethodEntryMixin"
54+
}
55+
56+
field_entry ::= access field_literal class_name member_name field_desc{
57+
mixin="com.demonwav.mcdev.platform.mcp.aw.psi.mixins.impl.AwFieldEntryImplMixin"
58+
implements="com.demonwav.mcdev.platform.mcp.aw.psi.mixins.AwFieldEntryMixin"
59+
}
60+
61+
private line_recover ::= !(end_line | COMMENT)
62+
63+
access ::= ACCESS_ELEMENT {
64+
methods=[
65+
accessElement="ACCESS_ELEMENT"
66+
]
67+
}
68+
69+
class_literal ::= CLASS_ELEMENT
70+
71+
method_literal ::= METHOD_ELEMENT
72+
73+
field_literal ::= FIELD_ELEMENT
74+
75+
class_name ::= CLASS_NAME_ELEMENT {
76+
mixin="com.demonwav.mcdev.platform.mcp.aw.psi.mixins.impl.AwClassNameImplMixin"
77+
implements="com.demonwav.mcdev.platform.mcp.aw.psi.mixins.AwClassNameMixin"
78+
methods=[
79+
classNameElement="CLASS_NAME_ELEMENT"
80+
]
81+
}
82+
83+
member_name ::= NAME_ELEMENT {
84+
mixin= "com.demonwav.mcdev.platform.mcp.aw.psi.mixins.impl.AwMemberNameImplMixin"
85+
implements="com.demonwav.mcdev.platform.mcp.aw.psi.mixins.AwMemberNameMixin"
86+
methods=[
87+
nameElement="NAME_ELEMENT"
88+
]
89+
}
90+
91+
method_desc ::= OPEN_PAREN argument* CLOSE_PAREN return_value
92+
93+
field_desc ::= argument
94+
95+
argument ::= PRIMITIVE | CLASS_VALUE {
96+
methods=[
97+
primitive="PRIMITIVE"
98+
classValue="CLASS_VALUE"
99+
]
100+
}
101+
102+
return_value ::= PRIMITIVE | CLASS_VALUE {
103+
methods=[
104+
primitive="PRIMITIVE"
105+
classValue="CLASS_VALUE"
106+
]
107+
}

src/main/kotlin/errorreporter/ErrorReporter.kt

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -35,7 +35,7 @@ class ErrorReporter : ErrorReportSubmitter() {
3535
"Key com.demonwav.mcdev.translations.TranslationFoldingSettings duplicated",
3636
"Inspection #EntityConstructor has no description"
3737
)
38-
private val baseUrl = "https://github.com/minecraft-dev/MinecraftDev/issues"
38+
private val baseUrl = "https://github.com/minecraft-dev/mcdev-error-report/issues"
3939
override fun getReportActionText() = "Report to Minecraft Dev GitHub Issue Tracker"
4040

4141
override fun submit(

src/main/kotlin/facet/LibraryPresentationProviders.kt

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -54,7 +54,8 @@ abstract class ManifestLibraryPresentationProvider(
5454
abstract class MavenLibraryPresentationProvider(
5555
kind: LibraryKind,
5656
private val groupId: String,
57-
private val artifactId: String
57+
private val artifactId: String,
58+
private val strict: Boolean = true
5859
) :
5960
LibraryPresentationProvider<LibraryVersionProperties>(kind) {
6061

@@ -65,7 +66,7 @@ abstract class MavenLibraryPresentationProvider(
6566
val file = classesRoot.localFile
6667
val properties = JarUtil.loadProperties(file, propertiesPath) ?: continue
6768

68-
if (properties["groupId"] != groupId || properties["artifactId"] != artifactId) {
69+
if (strict && (properties["groupId"] != groupId || properties["artifactId"] != artifactId)) {
6970
continue
7071
}
7172

src/main/kotlin/platform/bukkit/creator/BukkitProjectCreator.kt

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -111,7 +111,7 @@ class BukkitGradleCreator(
111111
) : BukkitProjectCreator<GradleBuildSystem>(rootDirectory, rootModule, buildSystem, config) {
112112

113113
override fun getSingleModuleSteps(): Iterable<CreatorStep> {
114-
val buildText = BukkitTemplate.applyBuildGradle(project, buildSystem)
114+
val buildText = BukkitTemplate.applyBuildGradle(project, buildSystem, config)
115115
val propText = BukkitTemplate.applyGradleProp(project)
116116
val settingsText = BukkitTemplate.applySettingsGradle(project, buildSystem.artifactId)
117117
val files = GradleFiles(buildText, propText, settingsText)

src/main/kotlin/platform/bukkit/creator/BukkitTemplate.kt

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -51,10 +51,11 @@ object BukkitTemplate : BaseTemplate() {
5151
return project.applyTemplate(BUKKIT_SUBMODULE_POM_TEMPLATE, BasicMavenStep.pluginVersions)
5252
}
5353

54-
fun applyBuildGradle(project: Project, buildSystem: BuildSystem): String {
54+
fun applyBuildGradle(project: Project, buildSystem: BuildSystem, config: BukkitProjectConfig): String {
5555
val props = mapOf(
5656
"GROUP_ID" to buildSystem.groupId,
57-
"PLUGIN_VERSION" to buildSystem.version
57+
"PLUGIN_VERSION" to buildSystem.version,
58+
"JAVA_VERSION" to config.javaVersion.feature
5859
)
5960

6061
return project.applyTemplate(BUKKIT_BUILD_GRADLE_TEMPLATE, props)

src/main/kotlin/platform/bukkit/framework/BukkitPresentationProviders.kt

Lines changed: 6 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -22,7 +22,12 @@ class SpigotPresentationProvider : MavenLibraryPresentationProvider(SPIGOT_LIBRA
2222
override fun getIcon(properties: LibraryVersionProperties?) = PlatformAssets.SPIGOT_ICON
2323
}
2424

25-
class PaperPresentationProvider :
25+
class OldPaperPresentationProvider :
2626
MavenLibraryPresentationProvider(PAPER_LIBRARY_KIND, "com.destroystokyo.paper", "paper-api") {
2727
override fun getIcon(properties: LibraryVersionProperties?) = PlatformAssets.PAPER_ICON
2828
}
29+
30+
class PaperPresentationProvider :
31+
MavenLibraryPresentationProvider(PAPER_LIBRARY_KIND, "io.papermc.paper", "paper-api", false) {
32+
override fun getIcon(properties: LibraryVersionProperties?) = PlatformAssets.PAPER_ICON
33+
}

src/main/kotlin/platform/forge/creator/Fg3Template.kt

Lines changed: 20 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -14,6 +14,7 @@ import com.demonwav.mcdev.creator.buildsystem.BuildSystem
1414
import com.demonwav.mcdev.platform.BaseTemplate
1515
import com.demonwav.mcdev.platform.forge.util.ForgePackDescriptor
1616
import com.demonwav.mcdev.util.MinecraftTemplates.Companion.FG3_1_17_MAIN_CLASS_TEMPLATE
17+
import com.demonwav.mcdev.util.MinecraftTemplates.Companion.FG3_1_18_MAIN_CLASS_TEMPLATE
1718
import com.demonwav.mcdev.util.MinecraftTemplates.Companion.FG3_BUILD_GRADLE_TEMPLATE
1819
import com.demonwav.mcdev.util.MinecraftTemplates.Companion.FG3_GRADLE_PROPERTIES_TEMPLATE
1920
import com.demonwav.mcdev.util.MinecraftTemplates.Companion.FG3_MAIN_CLASS_TEMPLATE
@@ -65,6 +66,24 @@ object Fg3Template : BaseTemplate() {
6566
return project.applyTemplate(FG3_1_17_MAIN_CLASS_TEMPLATE, props)
6667
}
6768

69+
fun apply1_18MainClass(
70+
project: Project,
71+
buildSystem: BuildSystem,
72+
config: ForgeProjectConfig,
73+
packageName: String,
74+
className: String
75+
): String {
76+
val props = mapOf(
77+
"PACKAGE_NAME" to packageName,
78+
"CLASS_NAME" to className,
79+
"ARTIFACT_ID" to buildSystem.artifactId,
80+
"MOD_NAME" to config.pluginName,
81+
"MOD_VERSION" to buildSystem.version
82+
)
83+
84+
return project.applyTemplate(FG3_1_18_MAIN_CLASS_TEMPLATE, props)
85+
}
86+
6887
fun applyBuildGradle(
6988
project: Project,
7089
buildSystem: BuildSystem,
@@ -82,7 +101,7 @@ object Fg3Template : BaseTemplate() {
82101
"GROUP_ID" to buildSystem.groupId,
83102
"ARTIFACT_ID" to buildSystem.artifactId,
84103
"MOD_VERSION" to buildSystem.version,
85-
"JAVA_VERSION" to if (config.mcVersion < MinecraftVersions.MC1_17) 8 else 16
104+
"JAVA_VERSION" to config.javaVersion.feature
86105
)
87106
if (hasData) {
88107
props["HAS_DATA"] = "true"

src/main/kotlin/platform/forge/creator/ForgeProjectCreator.kt

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -106,7 +106,9 @@ open class Fg3ProjectCreator(
106106

107107
private fun setupMainClassStep(): BasicJavaClassStep {
108108
return createJavaClassStep(config.mainClass) { packageName, className ->
109-
if (config.mcVersion >= MinecraftVersions.MC1_17) {
109+
if (config.mcVersion >= MinecraftVersions.MC1_18) {
110+
Fg3Template.apply1_18MainClass(project, buildSystem, config, packageName, className)
111+
} else if (config.mcVersion >= MinecraftVersions.MC1_17) {
110112
Fg3Template.apply1_17MainClass(project, buildSystem, config, packageName, className)
111113
} else {
112114
Fg3Template.applyMainClass(project, buildSystem, config, packageName, className)

src/main/kotlin/platform/forge/util/ForgePackDescriptor.kt

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -38,14 +38,16 @@ data class ForgePackDescriptor(val format: Int, val comment: String) {
3838
" Note: we require v6 pack meta for all mods."
3939
)
4040
val FORMAT_7 = ForgePackDescriptor(7, "")
41+
val FORMAT_8 = ForgePackDescriptor(8, "")
4142

4243
// See https://minecraft.gamepedia.com/Tutorials/Creating_a_resource_pack#.22pack_format.22
4344
fun forMcVersion(version: SemanticVersion): ForgePackDescriptor? = when {
4445
version <= MinecraftVersions.MC1_12_2 -> FORMAT_3
4546
version <= MinecraftVersions.MC1_14_4 -> FORMAT_4
4647
version <= MinecraftVersions.MC1_16_1 -> FORMAT_5
4748
version < MinecraftVersions.MC1_17 -> FORMAT_6
48-
version >= MinecraftVersions.MC1_17 -> FORMAT_7
49+
version < MinecraftVersions.MC1_18 -> FORMAT_7
50+
version >= MinecraftVersions.MC1_18 -> FORMAT_8
4951
else -> null
5052
}
5153
}

0 commit comments

Comments
 (0)