Skip to content

Commit 27a930a

Browse files
committed
Merge remote-tracking branch 'origin/api-11' into loofah/api-11
2 parents 1d55c71 + 8267d70 commit 27a930a

File tree

428 files changed

+6621
-4757
lines changed

Some content is hidden

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

428 files changed

+6621
-4757
lines changed

.github/workflows/check-spotless.yaml

+1-1
Original file line numberDiff line numberDiff line change
@@ -10,6 +10,6 @@ jobs:
1010
call-check:
1111
uses: SpongePowered/.github/.github/workflows/shared-check-spotless.yaml@master
1212
with:
13-
runtime_version: 17
13+
runtime_version: 21
1414
extra_gradle_params: "-PenableTestPlugins=true -PenableSpongeForge=true"
1515
secrets: inherit

.github/workflows/common-integration-test.yaml

+1-1
Original file line numberDiff line numberDiff line change
@@ -15,7 +15,7 @@ jobs:
1515
fail-fast: false
1616
matrix:
1717
os: [ubuntu-22.04, windows-latest, macos-latest]
18-
java: [17, 21]
18+
java: [ 21 ]
1919
runs-on: "${{ matrix.os }}"
2020
steps:
2121
- name: Check out repository to use the build.gradle.kts as a hash file

.github/workflows/common-run-build.yaml

+1-1
Original file line numberDiff line numberDiff line change
@@ -16,7 +16,7 @@ jobs:
1616
id: setup
1717
uses: SpongePowered/.github/.github/actions/setup-java-env@master
1818
with:
19-
runtime_version: 17
19+
runtime_version: 21
2020
publishing_branch_regex: 'api-\d+'
2121
- name: setup / cache minecraft dependencies
2222
uses: "actions/cache@0c45773b623bea8c8e75f6c82b208c3cf94ea4f9" # v4.0.2

.github/workflows/deploy.yaml

+1-1
Original file line numberDiff line numberDiff line change
@@ -27,7 +27,7 @@ jobs:
2727
id: setup
2828
uses: SpongePowered/.github/.github/actions/setup-java-env@master
2929
with:
30-
runtime_version: 17
30+
runtime_version: 21
3131
- name: setup / minecraft cache
3232
uses: "actions/cache@0c45773b623bea8c8e75f6c82b208c3cf94ea4f9" # v4.0.2
3333
with:

README.md

+2-2
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
Sponge ![Java CI with Gradle](https://github.com/SpongePowered/Sponge/workflows/Java%20CI%20with%20Gradle/badge.svg?branch=api-8&event=push)
1+
Sponge ![Java CI with Gradle](https://github.com/SpongePowered/Sponge/workflows/Java%20CI%20with%20Gradle/badge.svg?branch=api-11&event=push)
22
=============
33

44
This is the Loofah repo fork of the upstream SpongeAPI implementation. For the Loofah README please see README.loofah.md.
@@ -28,7 +28,7 @@ The SpongeAPI implementation targeting vanilla Minecraft and 3rd party platforms
2828

2929

3030
## Prerequisites
31-
* [Java] 8
31+
* [Java] 21
3232

3333
## Clone
3434
The following steps will ensure your project is cloned properly.

SpongeAPI

Submodule SpongeAPI updated 128 files

build-logic/src/main/java/org/spongepowered/gradle/impl/OutputDependenciesToJson.java

+2-2
Original file line numberDiff line numberDiff line change
@@ -270,11 +270,11 @@ public ConfigurationHolder(final Configuration configuration) {
270270
}
271271

272272
@Input
273-
public Provider<Set<ModuleComponentIdentifier>> getIds() {
273+
public Provider<Set<String>> getIds() {
274274
return this.getArtifacts().map(set -> set.stream()
275275
.map(art -> art.getId().getComponentIdentifier())
276276
.filter(id -> id instanceof ModuleComponentIdentifier)
277-
.map(art -> (ModuleComponentIdentifier) art)
277+
.map(art -> art.getDisplayName())
278278
.collect(Collectors.toSet()));
279279
}
280280

generator/build.gradle.kts

+2-1
Original file line numberDiff line numberDiff line change
@@ -18,7 +18,8 @@ minecraft {
1818
}
1919

2020
configurations.configureEach {
21-
exclude(group = "org.slf4j", module = "slf4j-api")
21+
val dep = libs.log4j.slf4j2.get()
22+
exclude(group = dep.group, module = dep.name)
2223
}
2324

2425
dependencies {

generator/src/main/java/org/spongepowered/vanilla/generator/BlockStatePropertiesGenerator.java

+1-1
Original file line numberDiff line numberDiff line change
@@ -211,7 +211,7 @@ private Map<PropertyType, Map<String, Property<?>>> computeUsedProperties() {
211211
private void writeCatalogClass(final Context ctx, final PropertyType type, final Map<String, Property<?>> properties) throws IOException {
212212
final var clazz = Types.utilityClass(
213213
type.catalogClassName,
214-
"<!-- This file is automatically generated. Any manual changes will be overwritten. -->"
214+
Generator.GENERATED_FILE_JAVADOCS
215215
);
216216
clazz.addAnnotation(Types.suppressWarnings("unused"));
217217

generator/src/main/java/org/spongepowered/vanilla/generator/BlockStatePropertyKeysGenerator.java

+5-1
Original file line numberDiff line numberDiff line change
@@ -161,7 +161,7 @@ public String name() {
161161

162162
@Override
163163
public void generate(final Context ctx) throws IOException {
164-
final var clazz = Types.utilityClass("BlockStateKeys", GENERATED_FILE_JAVADOCS);
164+
final var clazz = Types.utilityClass("BlockStateKeys", Generator.GENERATED_FILE_JAVADOCS);
165165
clazz.addAnnotation(Types.suppressWarnings("unused"));
166166

167167
final MethodSpec factoryMethod = this.factoryMethod();
@@ -221,6 +221,10 @@ private static ClassName inDataValuePkg(final String name) {
221221
private Map<String, Property<?>> vanillaProperties() {
222222
final Map<String, Property<?>> vanillaMap = new TreeMap<>();
223223
for (Field field : BlockStateProperties.class.getDeclaredFields()) {
224+
if (field.getName().equals("TRIAL_SPAWNER_STATE")) {
225+
// TODO add spawner states to API
226+
continue;
227+
}
224228
try {
225229
final Object property = field.get(null);
226230
if (property instanceof Property<?>) {

generator/src/main/java/org/spongepowered/vanilla/generator/EnumEntriesValidator.java

+4
Original file line numberDiff line numberDiff line change
@@ -35,6 +35,8 @@
3535
import com.github.javaparser.ast.expr.MethodCallExpr;
3636
import com.github.javaparser.ast.expr.NameExpr;
3737
import com.github.javaparser.ast.expr.StringLiteralExpr;
38+
import com.github.javaparser.javadoc.Javadoc;
39+
import com.github.javaparser.javadoc.description.JavadocDescription;
3840
import net.minecraft.resources.ResourceLocation;
3941
import org.tinylog.Logger;
4042

@@ -83,6 +85,8 @@ public void generate(final Context ctx) {
8385

8486
final Object[] map = this.clazz.getEnumConstants();
8587

88+
primaryTypeDeclaration.setJavadocComment(new Javadoc(JavadocDescription.parseText(Generator.GENERATED_FILE_JAVADOCS)));
89+
8690
// Find index of first field member
8791
// Take out all field members from the members list
8892
final var members = primaryTypeDeclaration.getMembers();

generator/src/main/java/org/spongepowered/vanilla/generator/GeneratorMain.java

+23-22
Original file line numberDiff line numberDiff line change
@@ -32,7 +32,6 @@
3232
import net.minecraft.SharedConstants;
3333
import net.minecraft.Util;
3434
import net.minecraft.advancements.AdvancementType;
35-
import net.minecraft.advancements.CriteriaTriggers;
3635
import net.minecraft.commands.Commands.CommandSelection;
3736
import net.minecraft.core.LayeredRegistryAccess;
3837
import net.minecraft.core.RegistryAccess;
@@ -56,14 +55,12 @@
5655
import net.minecraft.world.entity.animal.horse.Markings;
5756
import net.minecraft.world.entity.animal.horse.Variant;
5857
import net.minecraft.world.entity.vehicle.Boat;
59-
import net.minecraft.world.flag.FeatureFlags;
60-
import net.minecraft.world.item.ArmorMaterials;
6158
import net.minecraft.world.item.DyeColor;
62-
import net.minecraft.world.item.FireworkRocketItem;
6359
import net.minecraft.world.item.ItemDisplayContext;
6460
import net.minecraft.world.item.Rarity;
65-
import net.minecraft.world.level.DataPackConfig;
61+
import net.minecraft.world.item.component.FireworkExplosion;
6662
import net.minecraft.world.level.GameRules;
63+
import net.minecraft.world.level.WorldDataConfiguration;
6764
import net.minecraft.world.level.block.state.properties.BambooLeaves;
6865
import net.minecraft.world.level.block.state.properties.NoteBlockInstrument;
6966
import org.tinylog.Logger;
@@ -148,7 +145,7 @@ private static Pair<RegistryAccess.Frozen, ReloadableServerResources> loadVanill
148145
// and call to WorldStem.load in net.minecraft.server.Main
149146
// We don't currently try to load any datapacks here
150147
final var packRepository = ServerPacksSource.createVanillaTrustedRepository();
151-
MinecraftServer.configurePackRepository(packRepository, DataPackConfig.DEFAULT, /* safeMode = */ false, FeatureFlags.DEFAULT_FLAGS);
148+
MinecraftServer.configurePackRepository(packRepository, WorldDataConfiguration.DEFAULT, /* safeMode = */ false, true);
152149
final CloseableResourceManager resourceManager = new MultiPackResourceManager(PackType.SERVER_DATA, packRepository.openAllSelected());
153150

154151
// WorldLoader.load
@@ -166,7 +163,7 @@ private static Pair<RegistryAccess.Frozen, ReloadableServerResources> loadVanill
166163
final RegistryAccess.Frozen compositeRegistries = withDimensions.getAccessForLoading(RegistryLayer.RELOADABLE);
167164
final var resourcesFuture = ReloadableServerResources.loadResources(
168165
resourceManager,
169-
compositeRegistries,
166+
withDimensions,
170167
packRepository.getRequestedFeatureFlags(),
171168
CommandSelection.ALL,
172169
2, // functionPermissionLevel
@@ -177,7 +174,7 @@ private static Pair<RegistryAccess.Frozen, ReloadableServerResources> loadVanill
177174
resourceManager.close();
178175
}
179176
}).thenApply(resources -> {
180-
resources.updateRegistryTags(compositeRegistries);
177+
resources.updateRegistryTags();
181178
return resources;
182179
});
183180

@@ -205,12 +202,6 @@ private static List<Generator> generators(final Context context) {
205202
// We are starting out by just generating Vanilla registry-backed catalogs
206203
// Enum-backed (automatically-named) catalogs can be added later as necessary
207204
return List.of(
208-
new MapEntriesValidator<>(
209-
"advancement.criteria.trigger",
210-
"Triggers",
211-
CriteriaTriggers.class,
212-
"CRITERIA"
213-
),
214205
new MapEntriesValidator<>(
215206
"world.gamerule",
216207
"GameRules",
@@ -228,8 +219,8 @@ private static List<Generator> generators(final Context context) {
228219
new EnumEntriesValidator<>(
229220
"item",
230221
"FireworkShapes",
231-
FireworkRocketItem.Shape.class,
232-
"getName",
222+
FireworkExplosion.Shape.class,
223+
"getSerializedName",
233224
"sponge"
234225
),
235226
new EnumEntriesValidator<>(
@@ -246,12 +237,12 @@ private static List<Generator> generators(final Context context) {
246237
"getName",
247238
"sponge"
248239
),
249-
new EnumEntriesValidator<>(
240+
new RegistryEntriesGenerator<>(
250241
"data.type",
251242
"ArmorMaterials",
252-
ArmorMaterials.class,
253-
"getName",
254-
"sponge"
243+
"ARMOR_MATERIAL",
244+
context.relativeClass("data.type", "ArmorMaterial"),
245+
Registries.ARMOR_MATERIAL
255246
),
256247
new EnumEntriesValidator<>(
257248
"data.type",
@@ -306,7 +297,7 @@ private static List<Generator> generators(final Context context) {
306297
"advancement",
307298
"AdvancementTypes",
308299
AdvancementType.class,
309-
"getName",
300+
"getSerializedName",
310301
"sponge"
311302
),
312303
new EnumEntriesValidator<>(
@@ -556,6 +547,15 @@ private static List<Generator> generators(final Context context) {
556547
Registries.STRUCTURE_PROCESSOR,
557548
$ -> true, RegistryScope.GAME
558549
),
550+
new RegistryEntriesGenerator<>(
551+
"advancement.criteria.trigger",
552+
"Triggers",
553+
"TRIGGER",
554+
ParameterizedTypeName.get(context.relativeClass("advancement.criteria.trigger", "Trigger"), WildcardTypeName.subtypeOf(Object.class)),
555+
Registries.TRIGGER_TYPE,
556+
$ -> true,
557+
RegistryScope.GAME
558+
),
559559
new RegistryEntriesGenerator<>(
560560
"data.type",
561561
"VillagerTypes",
@@ -574,7 +574,8 @@ private static List<Generator> generators(final Context context) {
574574
),
575575
new BlockStateDataProviderGenerator(),
576576
new BlockStatePropertiesGenerator(),
577-
new BlockStatePropertyKeysGenerator(),
577+
// TODO fix me
578+
//new BlockStatePropertyKeysGenerator(),
578579
new RegistryEntriesGenerator<>(
579580
"world.generation.feature",
580581
"PlacedFeatures",

generator/src/main/java/org/spongepowered/vanilla/generator/MapEntriesValidator.java

+4
Original file line numberDiff line numberDiff line change
@@ -35,6 +35,8 @@
3535
import com.github.javaparser.ast.expr.MethodCallExpr;
3636
import com.github.javaparser.ast.expr.NameExpr;
3737
import com.github.javaparser.ast.expr.StringLiteralExpr;
38+
import com.github.javaparser.javadoc.Javadoc;
39+
import com.github.javaparser.javadoc.description.JavadocDescription;
3840
import net.minecraft.resources.ResourceLocation;
3941
import org.tinylog.Logger;
4042

@@ -92,6 +94,8 @@ public void generate(final Context ctx) {
9294
final var primaryTypeDeclaration = compilationUnit.getPrimaryType()
9395
.orElseThrow(() -> new IllegalStateException("Could not find primary type for registry type " + this.targetClassSimpleName));
9496

97+
primaryTypeDeclaration.setJavadocComment(new Javadoc(JavadocDescription.parseText(Generator.GENERATED_FILE_JAVADOCS)));
98+
9599
final Map<ResourceLocation, ?> map;
96100
try {
97101
final var f = this.clazz.getDeclaredField(this.registry);

generator/src/main/java/org/spongepowered/vanilla/generator/RegistryEntriesGenerator.java

+2-16
Original file line numberDiff line numberDiff line change
@@ -24,7 +24,6 @@
2424
*/
2525
package org.spongepowered.vanilla.generator;
2626

27-
import com.github.javaparser.ast.body.TypeDeclaration;
2827
import com.squareup.javapoet.FieldSpec;
2928
import com.squareup.javapoet.MethodSpec;
3029
import com.squareup.javapoet.ParameterizedTypeName;
@@ -117,7 +116,7 @@ public String name() {
117116
public void generate(final Context ctx) throws IOException {
118117
final var clazz = Types.utilityClass(
119118
this.targetClassSimpleName,
120-
"<!-- This file is automatically generated. Any manual changes will be overwritten. -->"
119+
Generator.GENERATED_FILE_JAVADOCS
121120
);
122121
clazz.addAnnotation(Types.suppressWarnings("unused"));
123122

@@ -149,20 +148,7 @@ public void generate(final Context ctx) throws IOException {
149148
clazz.addMethod(factoryMethod);
150149

151150
ctx.write(this.relativePackageName, clazz.build());
152-
153-
// Then fix up before/after comments
154-
final var cu = ctx.compilationUnit(this.relativePackageName, this.targetClassSimpleName);
155-
final TypeDeclaration<?> type = cu.getPrimaryType().get();
156-
157-
final var fields = type.getFields();
158-
if (!fields.isEmpty()) {
159-
fields.get(0).setLineComment("@formatter:off");
160-
}
161-
162-
final var constructors = type.getConstructors();
163-
if (!constructors.isEmpty()) {
164-
constructors.get(0).setLineComment("@formatter:on");
165-
}
151+
ctx.compilationUnit(this.relativePackageName, this.targetClassSimpleName);
166152
}
167153

168154
private FieldSpec makeField(final String ownType, final TypeName fieldType, final MethodSpec factoryMethod, final ResourceLocation element, @Nullable final FeatureFlagSet featureFlagSet) {

generator/src/main/java/org/spongepowered/vanilla/generator/RegistryEntriesValidator.java

+4
Original file line numberDiff line numberDiff line change
@@ -35,6 +35,8 @@
3535
import com.github.javaparser.ast.expr.MethodCallExpr;
3636
import com.github.javaparser.ast.expr.NameExpr;
3737
import com.github.javaparser.ast.expr.StringLiteralExpr;
38+
import com.github.javaparser.javadoc.Javadoc;
39+
import com.github.javaparser.javadoc.description.JavadocDescription;
3840
import net.minecraft.core.Registry;
3941
import net.minecraft.core.registries.BuiltInRegistries;
4042
import net.minecraft.resources.ResourceKey;
@@ -102,6 +104,8 @@ public void generate(final Context ctx) {
102104
}
103105
}
104106

107+
primaryTypeDeclaration.setJavadocComment(new Javadoc(JavadocDescription.parseText(Generator.GENERATED_FILE_JAVADOCS)));
108+
105109
// Find index of first field member
106110
// Take out all field members from the members list
107111
final var members = primaryTypeDeclaration.getMembers();

generator/src/main/java/org/spongepowered/vanilla/generator/TagGenerator.java

+2-14
Original file line numberDiff line numberDiff line change
@@ -24,7 +24,6 @@
2424
*/
2525
package org.spongepowered.vanilla.generator;
2626

27-
import com.github.javaparser.ast.body.TypeDeclaration;
2827
import com.squareup.javapoet.FieldSpec;
2928
import com.squareup.javapoet.MethodSpec;
3029
import com.squareup.javapoet.ParameterSpec;
@@ -74,7 +73,7 @@ public String name() {
7473
public void generate(final Context ctx) throws IOException {
7574
final var clazz = Types.utilityClass(
7675
this.targetClassSimpleName,
77-
"<!-- This file is automatically generated. Any manual changes will be overwritten. -->"
76+
Generator.GENERATED_FILE_JAVADOCS
7877
);
7978
clazz.addAnnotation(Types.suppressWarnings("unused"));
8079
clazz.addAnnotation(TagGenerator.SCOPE.registryScopeAnnotation());
@@ -105,18 +104,7 @@ public void generate(final Context ctx) throws IOException {
105104
ctx.write(this.relativePackageName, clazz.build());
106105

107106
// Then fix up before/after comments
108-
final var cu = ctx.compilationUnit(this.relativePackageName, this.targetClassSimpleName);
109-
final TypeDeclaration<?> type = cu.getPrimaryType().get();
110-
111-
final var fields = type.getFields();
112-
if (!fields.isEmpty()) {
113-
fields.get(0).setLineComment("@formatter:off");
114-
}
115-
116-
final var constructors = type.getConstructors();
117-
if (!constructors.isEmpty()) {
118-
constructors.get(0).setLineComment("@formatter:on");
119-
}
107+
ctx.compilationUnit(this.relativePackageName, this.targetClassSimpleName);
120108
}
121109

122110
private FieldSpec makeField(final String ownType, final TypeName fieldType, final MethodSpec factoryMethod, final ResourceLocation element) {

gradle.properties

+2-2
Original file line numberDiff line numberDiff line change
@@ -9,10 +9,10 @@ projectDescription=The SpongeAPI implementation targeting vanilla Minecraft and
99

1010
mixinConfigs=mixins.sponge.accessors.json,mixins.sponge.api.json,mixins.sponge.concurrent.json,mixins.sponge.core.json,\
1111
mixins.sponge.entityactivation.json,mixins.sponge.exploit.json,mixins.sponge.inventory.json,mixins.sponge.movementcheck.json,\
12-
mixins.sponge.tracker.json,mixins.sponge.ipforward.json,mixins.sponge.optimization.json,mixins.sponge.bugfix.json
12+
mixins.sponge.tracker.json,mixins.sponge.ipforward.json,mixins.sponge.optimization.json
1313
superClassChanges=common.superclasschange
1414

15-
minecraftVersion=1.20.4
15+
minecraftVersion=1.20.6
1616
recommendedVersion=0-SNAPSHOT
1717

1818
org.gradle.dependency.verification.console=verbose

gradle/libs.versions.toml

+3-3
Original file line numberDiff line numberDiff line change
@@ -5,15 +5,15 @@ format = { version = "1.1" }
55
# See SpongeAPI's gradle/libs.versions.toml for many dependency declarations that Sponge also uses
66
[versions]
77
asm = "9.7"
8-
log4j = "2.19.0"
8+
log4j = "2.22.1"
99
forgeAutoRenamingTool = "1.0.6"
10-
mixin = "0.8.5"
10+
mixin = "0.8.6"
1111
modlauncher = "8.1.3"
1212
guava = "32.1.2-jre"
1313
mockito = "5.11.0"
1414
jline = "3.25.1"
1515
tinylog = "2.7.0"
16-
vineflower = "1.9.3"
16+
vineflower = "1.10.1"
1717

1818
[libraries]
1919
# common

0 commit comments

Comments
 (0)