Skip to content

Commit 6600bdf

Browse files
committed
feat(minecraft): update towards 25w45a
Breaking changes: - Keys.FIXED_TIME doesn't apply to DimensionType anymore, it now applies to Level, but we don't have any handling for things like that yet. See SpongePowered/SpongeAPI#2608 Notable additions: - Timelines are a thing, we may want to wrap a phase around them to handle any kind of events through them or link them as a Cause. Notable Changes: - ResourceLocation -> Identiifer - net.minecraft.Util -> net.minecraft.util.Util - critereon -> criterion See https://minecraft.wiki/w/Java_Edition_25w45a
1 parent 3134a3e commit 6600bdf

File tree

180 files changed

+628
-603
lines changed

Some content is hidden

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

180 files changed

+628
-603
lines changed

forge/src/main/java/org/spongepowered/forge/hook/ForgeChannelHooks.java

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -26,7 +26,7 @@
2626

2727
import net.minecraft.network.FriendlyByteBuf;
2828
import net.minecraft.network.protocol.common.custom.CustomPacketPayload;
29-
import net.minecraft.resources.ResourceLocation;
29+
import net.minecraft.resources.Identifier;
3030
import net.minecraftforge.network.ForgePayload;
3131
import org.spongepowered.api.ResourceKey;
3232
import org.spongepowered.common.hooks.ChannelHooks;
@@ -46,6 +46,6 @@ public void registerPlatformChannels(final Consumer<CustomPacketPayload.Type<Spo
4646
@Override
4747
public CustomPacketPayload createRegisterPayload(final Set<ResourceKey> channels) {
4848
final FriendlyByteBuf payload = (FriendlyByteBuf) RegisterChannelUtil.encodePayload(channels);
49-
return new ForgePayload((ResourceLocation) (Object) Constants.Channels.REGISTER_KEY, null, b -> b.writeBytes(payload));
49+
return new ForgePayload((Identifier) (Object) Constants.Channels.REGISTER_KEY, null, b -> b.writeBytes(payload));
5050
}
5151
}

forge/src/mixins/java/org/spongepowered/forge/mixin/core/minecraftforge/registries/ForgeRegistryMixin_Forge.java

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -26,7 +26,7 @@
2626

2727
import com.google.common.collect.Maps;
2828
import net.minecraft.core.Registry;
29-
import net.minecraft.resources.ResourceLocation;
29+
import net.minecraft.resources.Identifier;
3030
import net.minecraftforge.registries.ForgeRegistry;
3131
import net.minecraftforge.registries.IForgeRegistry;
3232
import org.spongepowered.api.ResourceKey;
@@ -55,8 +55,8 @@ public abstract class ForgeRegistryMixin_Forge<V> {
5555
private final Map<ResourceKey, RegistryBridge<V>> forge$parents = Maps.newHashMap();
5656
private boolean forge$warnedIfNoParent;
5757

58-
@Inject(method = "add(ILnet/minecraft/resources/ResourceLocation;Ljava/lang/Object;Ljava/lang/String;)I", at = @At("TAIL"))
59-
public void forge$writeToParent(final int id, final ResourceLocation key, final V value, final String owner, final CallbackInfoReturnable<Integer> cir) {
58+
@Inject(method = "add(ILnet/minecraft/resources/Identifier;Ljava/lang/Object;Ljava/lang/String;)I", at = @At("TAIL"))
59+
public void forge$writeToParent(final int id, final Identifier key, final V value, final String owner, final CallbackInfoReturnable<Integer> cir) {
6060
final ResourceKey root = (ResourceKey) (Object) this.key.registry();
6161
final ResourceKey location = (ResourceKey) (Object) this.key.location();
6262

forge/src/mixins/java/org/spongepowered/forge/mixin/core/minecraftforge/registries/RegistryManagerMixin_Forge.java

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -24,7 +24,7 @@
2424
*/
2525
package org.spongepowered.forge.mixin.core.minecraftforge.registries;
2626

27-
import net.minecraft.resources.ResourceLocation;
27+
import net.minecraft.resources.Identifier;
2828
import net.minecraftforge.registries.ForgeRegistry;
2929
import net.minecraftforge.registries.RegistryManager;
3030
import org.spongepowered.asm.mixin.Mixin;
@@ -39,7 +39,7 @@ public class RegistryManagerMixin_Forge {
3939

4040
@SuppressWarnings("UnstableApiUsage")
4141
@Inject(method = "takeSnapshot", at = @At("RETURN"))
42-
public void forge$dontSendSpongeDataToClient(boolean savingToDisc, CallbackInfoReturnable<Map<ResourceLocation, ForgeRegistry.Snapshot>> cir) {
42+
public void forge$dontSendSpongeDataToClient(boolean savingToDisc, CallbackInfoReturnable<Map<Identifier, ForgeRegistry.Snapshot>> cir) {
4343
if (savingToDisc) {
4444
return;
4545
}

forge/src/mixins/java/org/spongepowered/forge/mixin/core/network/protocol/common/ClientboundCustomPayloadPacketMixin_Forge.java

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -28,7 +28,7 @@
2828
import net.minecraft.network.codec.StreamCodec;
2929
import net.minecraft.network.protocol.common.ClientboundCustomPayloadPacket;
3030
import net.minecraft.network.protocol.common.custom.CustomPacketPayload;
31-
import net.minecraft.resources.ResourceLocation;
31+
import net.minecraft.resources.Identifier;
3232
import net.minecraftforge.network.NetworkRegistry;
3333
import org.spongepowered.api.ResourceKey;
3434
import org.spongepowered.api.Sponge;
@@ -49,7 +49,7 @@ public abstract class ClientboundCustomPayloadPacketMixin_Forge {
4949
// @formatter: on
5050

5151
@Inject(method = { "lambda$static$0", "lambda$static$2" }, at = @At("HEAD"), cancellable = true)
52-
private static void forge$getSpongeCustomPacketPayload(final ResourceLocation channelKey, final CallbackInfoReturnable<StreamCodec<FriendlyByteBuf, ? extends CustomPacketPayload>> cir) {
52+
private static void forge$getSpongeCustomPacketPayload(final Identifier channelKey, final CallbackInfoReturnable<StreamCodec<FriendlyByteBuf, ? extends CustomPacketPayload>> cir) {
5353
if (NetworkRegistry.findTarget(channelKey) != null) {
5454
return;
5555
}

forge/src/mixins/java/org/spongepowered/forge/mixin/core/network/protocol/common/ServerboundCustomPayloadPacketMixin_Forge.java

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -28,7 +28,7 @@
2828
import net.minecraft.network.codec.StreamCodec;
2929
import net.minecraft.network.protocol.common.ServerboundCustomPayloadPacket;
3030
import net.minecraft.network.protocol.common.custom.CustomPacketPayload;
31-
import net.minecraft.resources.ResourceLocation;
31+
import net.minecraft.resources.Identifier;
3232
import net.minecraftforge.network.NetworkRegistry;
3333
import org.spongepowered.api.ResourceKey;
3434
import org.spongepowered.api.Sponge;
@@ -49,7 +49,7 @@ public abstract class ServerboundCustomPayloadPacketMixin_Forge {
4949
// @formatter: on
5050

5151
@Inject(method = { "lambda$static$0" }, at = @At("HEAD"), cancellable = true)
52-
private static void forge$getSpongeCustomPacketPayload(final ResourceLocation channelKey, final CallbackInfoReturnable<StreamCodec<FriendlyByteBuf, ? extends CustomPacketPayload>> cir) {
52+
private static void forge$getSpongeCustomPacketPayload(final Identifier channelKey, final CallbackInfoReturnable<StreamCodec<FriendlyByteBuf, ? extends CustomPacketPayload>> cir) {
5353
if (NetworkRegistry.findTarget(channelKey) != null) {
5454
return;
5555
}

forge/src/mixins/java/org/spongepowered/forge/mixin/core/tags/TagLoaderMixin_Forge.java

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -27,7 +27,7 @@
2727
import com.llamalad7.mixinextras.injector.wrapoperation.Operation;
2828
import com.llamalad7.mixinextras.injector.wrapoperation.WrapOperation;
2929
import com.llamalad7.mixinextras.sugar.Local;
30-
import net.minecraft.resources.ResourceLocation;
30+
import net.minecraft.resources.Identifier;
3131
import net.minecraft.tags.TagEntry;
3232
import net.minecraft.tags.TagLoader;
3333
import org.spongepowered.asm.mixin.Mixin;
@@ -56,7 +56,7 @@ public abstract class TagLoaderMixin_Forge<T> implements TagLoaderBridge<T> {
5656
}
5757

5858
@Inject(method = "lambda$build$6", at = @At("HEAD"))
59-
private void forge$onStartBuildingTag(final TagEntry.Lookup<T> $$0x, final Map<ResourceLocation, Collection<T>> $$1x, final ResourceLocation $$2x,
59+
private void forge$onStartBuildingTag(final TagEntry.Lookup<T> $$0x, final Map<Identifier, Collection<T>> $$1x, final Identifier $$2x,
6060
final @Coerce Object $$3x, final CallbackInfo ci) {
6161
this.bridge$buildingTagKey($$2x);
6262
}

forge/src/mixins/java/org/spongepowered/forge/mixin/tracker/world/level/block/BlockMixin_Forge_Tracker.java

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -25,7 +25,7 @@
2525
package org.spongepowered.forge.mixin.tracker.world.level.block;
2626

2727

28-
import net.minecraft.resources.ResourceLocation;
28+
import net.minecraft.resources.Identifier;
2929
import net.minecraft.world.level.block.Block;
3030
import net.minecraft.world.level.block.state.BlockState;
3131
import org.spongepowered.asm.mixin.Mixin;
@@ -42,7 +42,7 @@ public abstract class BlockMixin_Forge_Tracker extends BlockBehaviorMixin_Forge_
4242
//@formatter:on
4343

4444
@Override
45-
protected void forgeTracker$initializeTrackingState(CallbackInfoReturnable<ResourceLocation> cir) {
45+
protected void forgeTracker$initializeTrackingState(CallbackInfoReturnable<Identifier> cir) {
4646
// TODO Not the best check but the tracker options only matter during block ticks...
4747
if (this.isRandomlyTicking(this.defaultBlockState())) {
4848
this.bridge$refreshTrackerStates();

forge/src/mixins/java/org/spongepowered/forge/mixin/tracker/world/level/block/state/BlockBehaviorMixin_Forge_Tracker.java

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -25,7 +25,7 @@
2525
package org.spongepowered.forge.mixin.tracker.world.level.block.state;
2626

2727

28-
import net.minecraft.resources.ResourceLocation;
28+
import net.minecraft.resources.Identifier;
2929
import net.minecraft.world.level.block.state.BlockBehaviour;
3030
import net.minecraft.world.level.block.state.BlockState;
3131
import org.spongepowered.asm.mixin.Mixin;
@@ -46,6 +46,6 @@ public abstract class BlockBehaviorMixin_Forge_Tracker {
4646
remap = false
4747
)
4848
)
49-
protected void forgeTracker$initializeTrackingState(CallbackInfoReturnable<ResourceLocation> cir) {
49+
protected void forgeTracker$initializeTrackingState(CallbackInfoReturnable<Identifier> cir) {
5050
}
5151
}

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

Lines changed: 17 additions & 17 deletions
Original file line numberDiff line numberDiff line change
@@ -37,7 +37,7 @@
3737
import com.github.javaparser.ast.expr.StringLiteralExpr;
3838
import com.github.javaparser.javadoc.Javadoc;
3939
import com.github.javaparser.javadoc.description.JavadocDescription;
40-
import net.minecraft.resources.ResourceLocation;
40+
import net.minecraft.resources.Identifier;
4141
import org.tinylog.Logger;
4242

4343
import java.util.ArrayList;
@@ -55,21 +55,21 @@ public class ClassFieldsValidator<V> implements Generator {
5555
private final String relativePackageName;
5656
private final String targetClassSimpleName;
5757
private final Class<?> clazz;
58-
private final Function<String, ResourceLocation> mapping;
58+
private final Function<String, Identifier> mapping;
5959

6060
public ClassFieldsValidator(
6161
final String targetRelativePackage,
6262
final String targetClassSimpleName,
6363
final Class<?> clazz
6464
) {
65-
this(targetRelativePackage, targetClassSimpleName, clazz, name -> ResourceLocation.tryBuild("sponge", name.toLowerCase(Locale.ROOT)));
65+
this(targetRelativePackage, targetClassSimpleName, clazz, name -> Identifier.tryBuild("sponge", name.toLowerCase(Locale.ROOT)));
6666
}
6767

6868
public ClassFieldsValidator(
6969
final String targetRelativePackage,
7070
final String targetClassSimpleName,
7171
final Class<?> clazz,
72-
final Function<String, ResourceLocation> mapping
72+
final Function<String, Identifier> mapping
7373
) {
7474
this.relativePackageName = targetRelativePackage;
7575
this.targetClassSimpleName = targetClassSimpleName;
@@ -92,7 +92,7 @@ public void generate(final Context ctx) {
9292

9393
primaryTypeDeclaration.setJavadocComment(new Javadoc(JavadocDescription.parseText(Generator.GENERATED_FILE_JAVADOCS)));
9494

95-
final List<ResourceLocation> map = new ArrayList<>();
95+
final List<Identifier> map = new ArrayList<>();
9696
for (final var field : this.clazz.getDeclaredFields()) {
9797
if (!java.lang.reflect.Modifier.isPublic(field.getModifiers())
9898
|| !java.lang.reflect.Modifier.isStatic(field.getModifiers())) {
@@ -107,7 +107,7 @@ public void generate(final Context ctx) {
107107
// Find index of first field member
108108
// Take out all field members from the members list
109109
final var members = primaryTypeDeclaration.getMembers();
110-
final var fields = new HashMap<ResourceLocation, FieldDeclaration>();
110+
final var fields = new HashMap<Identifier, FieldDeclaration>();
111111
int lastNonFieldIndex = -1;
112112
for (final var it = members.listIterator(); it.hasNext(); ) {
113113
final var node = it.next();
@@ -123,10 +123,10 @@ public void generate(final Context ctx) {
123123
}
124124

125125
// Now, iterate the registry, discovering which fields were added and removed
126-
final var added = new HashSet<ResourceLocation>();
126+
final var added = new HashSet<Identifier>();
127127
final var processedFields = new ArrayList<FieldDeclaration>(map.size());
128-
final Set<ResourceLocation> allKeys = new HashSet<>(map);
129-
for (final ResourceLocation key : allKeys) {
128+
final Set<Identifier> allKeys = new HashSet<>(map);
129+
for (final Identifier key : allKeys) {
130130
final FieldDeclaration existing = fields.remove(key);
131131
if (existing != null) {
132132
processedFields.add(existing);
@@ -149,36 +149,36 @@ public void generate(final Context ctx) {
149149
}
150150

151151
// Attempt to get a resource location from the field by parsing its initializer
152-
private ResourceLocation extractFieldIdentifier(final FieldDeclaration declaration) {
152+
private Identifier extractFieldIdentifier(final FieldDeclaration declaration) {
153153
if (declaration.getVariables().isEmpty()) {
154154
throw new IllegalStateException("No variables for " + declaration);
155155
}
156156
final VariableDeclarator var = declaration.getVariable(0);
157157
final Expression initializer = var.getInitializer().orElse(null);
158158
if (!(initializer instanceof MethodCallExpr) || ((MethodCallExpr) initializer).getArguments().size() != 1) {
159-
return ResourceLocation.parse(var.getNameAsString().toLowerCase(Locale.ROOT)); // a best guess
159+
return Identifier.parse(var.getNameAsString().toLowerCase(Locale.ROOT)); // a best guess
160160
}
161161

162162
final Expression argument = ((MethodCallExpr) initializer).getArgument(0);
163163
if (!(argument instanceof final MethodCallExpr keyInitializer)
164164
|| keyInitializer.getArguments().size() < 1) {
165-
return ResourceLocation.parse(var.getNameAsString().toLowerCase(Locale.ROOT)); // a best guess
165+
return Identifier.parse(var.getNameAsString().toLowerCase(Locale.ROOT)); // a best guess
166166
}
167167

168168
if (keyInitializer.getArguments().size() == 1) { // method name as namespace
169-
return ResourceLocation.fromNamespaceAndPath(keyInitializer.getNameAsString(), keyInitializer.getArgument(0).asStringLiteralExpr().asString());
169+
return Identifier.fromNamespaceAndPath(keyInitializer.getNameAsString(), keyInitializer.getArgument(0).asStringLiteralExpr().asString());
170170
} else if (keyInitializer.getArguments().size() == 2) { // (namespace, path)
171-
return ResourceLocation.fromNamespaceAndPath(
171+
return Identifier.fromNamespaceAndPath(
172172
keyInitializer.getArgument(0).asStringLiteralExpr().asString(),
173173
keyInitializer.getArgument(1).asStringLiteralExpr().asString()
174174
);
175175
} else {
176-
return ResourceLocation.parse(var.getNameAsString().toLowerCase(Locale.ROOT)); // a best guess
176+
return Identifier.parse(var.getNameAsString().toLowerCase(Locale.ROOT)); // a best guess
177177
}
178178

179179
}
180180

181-
private FieldDeclaration makeField(final String ownType, final String factoryMethod, final ResourceLocation element) {
181+
private FieldDeclaration makeField(final String ownType, final String factoryMethod, final Identifier element) {
182182
final FieldDeclaration fieldDeclaration = new FieldDeclaration();
183183
final VariableDeclarator variable = new VariableDeclarator(StaticJavaParser.parseType("DefaultedRegistryReference<FixMe>"), Types.keyToFieldName(element.getPath()));
184184
fieldDeclaration.getVariables().add(variable);
@@ -187,7 +187,7 @@ private FieldDeclaration makeField(final String ownType, final String factoryMet
187187
return fieldDeclaration;
188188
}
189189

190-
public static MethodCallExpr resourceKey(final ResourceLocation location) {
190+
public static MethodCallExpr resourceKey(final Identifier location) {
191191
Objects.requireNonNull(location, "location");
192192
final var resourceKey = new NameExpr("ResourceKey");
193193
return switch (location.getNamespace()) {

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

Lines changed: 12 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -37,7 +37,7 @@
3737
import com.github.javaparser.ast.expr.StringLiteralExpr;
3838
import com.github.javaparser.javadoc.Javadoc;
3939
import com.github.javaparser.javadoc.description.JavadocDescription;
40-
import net.minecraft.resources.ResourceLocation;
40+
import net.minecraft.resources.Identifier;
4141
import net.minecraft.util.StringRepresentable;
4242
import org.tinylog.Logger;
4343

@@ -91,7 +91,7 @@ public void generate(final Context ctx) {
9191
// Find index of first field member
9292
// Take out all field members from the members list
9393
final var members = primaryTypeDeclaration.getMembers();
94-
final var fields = new HashMap<ResourceLocation, FieldDeclaration>();
94+
final var fields = new HashMap<Identifier, FieldDeclaration>();
9595
int lastNonFieldIndex = -1;
9696
for (final var it = members.listIterator(); it.hasNext();) {
9797
final var node = it.next();
@@ -107,7 +107,7 @@ public void generate(final Context ctx) {
107107
}
108108

109109
// Now, iterate the registry, discovering which fields were added and removed
110-
final var added = new HashSet<ResourceLocation>();
110+
final var added = new HashSet<Identifier>();
111111
final var processedFields = new ArrayList<FieldDeclaration>(map.length);
112112
for (final Enum<?> f : map) {
113113
final String name;
@@ -123,7 +123,7 @@ public void generate(final Context ctx) {
123123
} catch (Exception e) {
124124
throw new IllegalStateException("Failed to name for enum field in class " + this.clazz.getName(), e);
125125
}
126-
final ResourceLocation key = ResourceLocation.fromNamespaceAndPath(this.namespace, name);
126+
final Identifier key = Identifier.fromNamespaceAndPath(this.namespace, name);
127127

128128
final FieldDeclaration existing = fields.remove(key);
129129
if (existing != null) {
@@ -151,36 +151,36 @@ public void generate(final Context ctx) {
151151
}
152152

153153
// Attempt to get a resource location from the field by parsing its initializer
154-
private ResourceLocation extractFieldIdentifier(final FieldDeclaration declaration) {
154+
private Identifier extractFieldIdentifier(final FieldDeclaration declaration) {
155155
if (declaration.getVariables().isEmpty()) {
156156
throw new IllegalStateException("No variables for " + declaration);
157157
}
158158
final VariableDeclarator var = declaration.getVariable(0);
159159
final Expression initializer = var.getInitializer().orElse(null);
160160
if (!(initializer instanceof MethodCallExpr) || ((MethodCallExpr) initializer).getArguments().size() != 1) {
161-
return ResourceLocation.parse(var.getNameAsString().toLowerCase(Locale.ROOT)); // a best guess
161+
return Identifier.parse(var.getNameAsString().toLowerCase(Locale.ROOT)); // a best guess
162162
}
163163

164164
final Expression argument = ((MethodCallExpr) initializer).getArgument(0);
165165
if (!(argument instanceof final MethodCallExpr keyInitializer)
166166
|| keyInitializer.getArguments().size() < 1) {
167-
return ResourceLocation.parse(var.getNameAsString().toLowerCase(Locale.ROOT)); // a best guess
167+
return Identifier.parse(var.getNameAsString().toLowerCase(Locale.ROOT)); // a best guess
168168
}
169169

170170
if (keyInitializer.getArguments().size() == 1) { // method name as namespace
171-
return ResourceLocation.fromNamespaceAndPath(keyInitializer.getNameAsString(), keyInitializer.getArgument(0).asStringLiteralExpr().asString());
171+
return Identifier.fromNamespaceAndPath(keyInitializer.getNameAsString(), keyInitializer.getArgument(0).asStringLiteralExpr().asString());
172172
} else if (keyInitializer.getArguments().size() == 2) { // (namespace, path)
173-
return ResourceLocation.fromNamespaceAndPath(
173+
return Identifier.fromNamespaceAndPath(
174174
keyInitializer.getArgument(0).asStringLiteralExpr().asString(),
175175
keyInitializer.getArgument(1).asStringLiteralExpr().asString()
176176
);
177177
} else {
178-
return ResourceLocation.parse(var.getNameAsString().toLowerCase(Locale.ROOT)); // a best guess
178+
return Identifier.parse(var.getNameAsString().toLowerCase(Locale.ROOT)); // a best guess
179179
}
180180

181181
}
182182

183-
private FieldDeclaration makeField(final String ownType, final String factoryMethod, final ResourceLocation element) {
183+
private FieldDeclaration makeField(final String ownType, final String factoryMethod, final Identifier element) {
184184
final FieldDeclaration fieldDeclaration = new FieldDeclaration();
185185
final VariableDeclarator variable = new VariableDeclarator(StaticJavaParser.parseType("DefaultedRegistryReference<FixMe>"), Types.keyToFieldName(element.getPath()));
186186
fieldDeclaration.getVariables().add(variable);
@@ -189,7 +189,7 @@ private FieldDeclaration makeField(final String ownType, final String factoryMet
189189
return fieldDeclaration;
190190
}
191191

192-
public static MethodCallExpr resourceKey(final ResourceLocation location) {
192+
public static MethodCallExpr resourceKey(final Identifier location) {
193193
Objects.requireNonNull(location, "location");
194194
final var resourceKey = new NameExpr("ResourceKey");
195195
return switch (location.getNamespace()) {

0 commit comments

Comments
 (0)