Skip to content

Commit d57b6d3

Browse files
Merge pull request #13 from GeyserMC/feature/1.21.11
Update Rainbow to 1.21.11
2 parents 27aecbf + cdef4b2 commit d57b6d3

38 files changed

+216
-210
lines changed

client/src/main/java/org/geysermc/rainbow/client/MinecraftAssetResolver.java

Lines changed: 8 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -3,16 +3,15 @@
33
import com.mojang.blaze3d.platform.NativeImage;
44
import net.minecraft.client.Minecraft;
55
import net.minecraft.client.renderer.item.ClientItem;
6-
import net.minecraft.client.renderer.texture.SpriteContents;
76
import net.minecraft.client.renderer.texture.TextureAtlas;
87
import net.minecraft.client.renderer.texture.TextureAtlasSprite;
98
import net.minecraft.client.resources.model.AtlasManager;
109
import net.minecraft.client.resources.model.EquipmentAssetManager;
1110
import net.minecraft.client.resources.model.EquipmentClientInfo;
1211
import net.minecraft.client.resources.model.ModelManager;
1312
import net.minecraft.client.resources.model.ResolvedModel;
13+
import net.minecraft.resources.Identifier;
1414
import net.minecraft.resources.ResourceKey;
15-
import net.minecraft.resources.ResourceLocation;
1615
import net.minecraft.server.packs.resources.ResourceManager;
1716
import net.minecraft.world.item.equipment.EquipmentAsset;
1817
import org.geysermc.rainbow.Rainbow;
@@ -40,13 +39,13 @@ public MinecraftAssetResolver(Minecraft minecraft) {
4039
}
4140

4241
@Override
43-
public Optional<ResolvedModel> getResolvedModel(ResourceLocation location) {
44-
return ((ResolvedModelAccessor) modelManager).rainbow$getResolvedModel(location);
42+
public Optional<ResolvedModel> getResolvedModel(Identifier identifier) {
43+
return ((ResolvedModelAccessor) modelManager).rainbow$getResolvedModel(identifier);
4544
}
4645

4746
@Override
48-
public Optional<ClientItem> getClientItem(ResourceLocation location) {
49-
return ((ResolvedModelAccessor) modelManager).rainbow$getClientItem(location);
47+
public Optional<ClientItem> getClientItem(Identifier identifier) {
48+
return ((ResolvedModelAccessor) modelManager).rainbow$getClientItem(identifier);
5049
}
5150

5251
@Override
@@ -55,17 +54,17 @@ public Optional<EquipmentClientInfo> getEquipmentInfo(ResourceKey<EquipmentAsset
5554
}
5655

5756
@Override
58-
public Optional<TextureResource> getTexture(ResourceLocation atlasId, ResourceLocation location) {
57+
public Optional<TextureResource> getTexture(Identifier atlasId, Identifier identifier) {
5958
if (atlasId == null) {
6059
// Not in an atlas - so not animated, probably?
6160
return RainbowIO.safeIO(() -> {
62-
try (InputStream textureStream = resourceManager.open(Rainbow.decorateTextureLocation(location))) {
61+
try (InputStream textureStream = resourceManager.open(Rainbow.decorateTextureIdentifier(identifier))) {
6362
return new TextureResource(NativeImage.read(textureStream));
6463
}
6564
});
6665
}
6766
TextureAtlas atlas = atlasManager.getAtlasOrThrow(atlasId);
68-
TextureAtlasSprite sprite = atlas.getSprite(location);
67+
TextureAtlasSprite sprite = atlas.getSprite(identifier);
6968
if (sprite == atlas.missingSprite()) {
7069
return Optional.empty();
7170
}

client/src/main/java/org/geysermc/rainbow/client/MinecraftPackSerializer.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -4,10 +4,10 @@
44
import com.mojang.serialization.Codec;
55
import com.mojang.serialization.DynamicOps;
66
import com.mojang.serialization.JsonOps;
7-
import net.minecraft.Util;
87
import net.minecraft.client.Minecraft;
98
import net.minecraft.core.HolderLookup;
109
import net.minecraft.resources.RegistryOps;
10+
import net.minecraft.util.Util;
1111
import org.geysermc.rainbow.CodecUtil;
1212
import org.geysermc.rainbow.RainbowIO;
1313
import org.geysermc.rainbow.mapping.PackSerializer;

client/src/main/java/org/geysermc/rainbow/client/PackManager.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -113,7 +113,7 @@ private static String randomSummaryComment() {
113113
if (splash == null) {
114114
return "Undefined Undefined :(";
115115
}
116-
return ((SplashRendererAccessor) splash).getSplash();
116+
return ((SplashRendererAccessor) splash).getSplash().getString();
117117
}
118118
return randomBuiltinSummaryComment();
119119
}

client/src/main/java/org/geysermc/rainbow/client/RainbowClient.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -22,7 +22,7 @@ public void onInitializeClient() {
2222
ClientCommandRegistrationCallback.EVENT.register((dispatcher, buildContext) -> PackGeneratorCommand.register(dispatcher, packManager, packMapper));
2323
ClientTickEvents.START_CLIENT_TICK.register(packMapper::tick);
2424

25-
ArgumentTypeRegistry.registerArgumentType(Rainbow.getModdedLocation("command_suggestions"),
25+
ArgumentTypeRegistry.registerArgumentType(Rainbow.getModdedIdentifier("command_suggestions"),
2626
CommandSuggestionsArgumentType.class, SingletonArgumentInfo.contextFree(CommandSuggestionsArgumentType::new));
2727

2828
RainbowIO.registerExceptionListener(new RainbowClientIOHandler());

client/src/main/java/org/geysermc/rainbow/client/accessor/ResolvedModelAccessor.java

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -2,15 +2,15 @@
22

33
import net.minecraft.client.renderer.item.ClientItem;
44
import net.minecraft.client.resources.model.ResolvedModel;
5-
import net.minecraft.resources.ResourceLocation;
5+
import net.minecraft.resources.Identifier;
66

77
import java.util.Optional;
88

99
// Implemented on ModelManager, since this class doesn't keep the resolved models or unbaked client items after baking, we have to store them manually.
1010
// This comes with some extra memory usage, but Rainbow should only be used to convert packs, so it should be fine
1111
public interface ResolvedModelAccessor {
1212

13-
Optional<ResolvedModel> rainbow$getResolvedModel(ResourceLocation location);
13+
Optional<ResolvedModel> rainbow$getResolvedModel(Identifier identifier);
1414

15-
Optional<ClientItem> rainbow$getClientItem(ResourceLocation location);
15+
Optional<ClientItem> rainbow$getClientItem(Identifier identifier);
1616
}

client/src/main/java/org/geysermc/rainbow/client/mixin/ModelManagerMixin.java

Lines changed: 10 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -7,7 +7,7 @@
77
import net.minecraft.client.resources.model.ClientItemInfoLoader;
88
import net.minecraft.client.resources.model.ModelManager;
99
import net.minecraft.client.resources.model.ResolvedModel;
10-
import net.minecraft.resources.ResourceLocation;
10+
import net.minecraft.resources.Identifier;
1111
import net.minecraft.server.packs.resources.PreparableReloadListener;
1212
import org.geysermc.rainbow.client.accessor.ResolvedModelAccessor;
1313
import org.spongepowered.asm.mixin.Mixin;
@@ -22,38 +22,38 @@
2222
@Mixin(ModelManager.class)
2323
public abstract class ModelManagerMixin implements PreparableReloadListener, AutoCloseable, ResolvedModelAccessor {
2424
@Unique
25-
private Map<ResourceLocation, ResolvedModel> unbakedResolvedModels;
25+
private Map<Identifier, ResolvedModel> unbakedResolvedModels;
2626
@Unique
27-
private Map<ResourceLocation, ClientItem> clientItems;
27+
private Map<Identifier, ClientItem> clientItems;
2828

29-
@WrapOperation(method = "method_65753", at = @At(value = "INVOKE", target = "Ljava/util/concurrent/CompletableFuture;join()Ljava/lang/Object;", ordinal = 1))
29+
@WrapOperation(method = "method_65753", at = @At(value = "INVOKE", target = "Ljava/util/concurrent/CompletableFuture;join()Ljava/lang/Object;", ordinal = 2))
3030
private static Object setResolvedModels(CompletableFuture<?> instance, Operation<Object> original) {
3131
Object resolved = original.call(instance);
3232
try {
3333
// Couldn't be bothered setting up access wideners, this resolves the second component of the ResolvedModels record, which is called "models"
3434
// Ideally we'd somehow use the "this" instance, but that's not possible here since the lambda we inject into is a static one
35-
((ModelManagerMixin) (Object) Minecraft.getInstance().getModelManager()).unbakedResolvedModels = (Map<ResourceLocation, ResolvedModel>) resolved.getClass().getRecordComponents()[1].getAccessor().invoke(resolved);
35+
((ModelManagerMixin) (Object) Minecraft.getInstance().getModelManager()).unbakedResolvedModels = (Map<Identifier, ResolvedModel>) resolved.getClass().getRecordComponents()[1].getAccessor().invoke(resolved);
3636
} catch (IllegalAccessException | InvocationTargetException | ClassCastException exception) {
3737
throw new RuntimeException(exception);
3838
}
3939
return resolved;
4040
}
4141

4242
@WrapOperation(method = "method_65753", at = @At(value = "INVOKE", target = "Lnet/minecraft/client/resources/model/ClientItemInfoLoader$LoadedClientInfos;contents()Ljava/util/Map;"))
43-
private static Map<ResourceLocation, ClientItem> setClientItems(ClientItemInfoLoader.LoadedClientInfos instance, Operation<Map<ResourceLocation, ClientItem>> original) {
43+
private static Map<Identifier, ClientItem> setClientItems(ClientItemInfoLoader.LoadedClientInfos instance, Operation<Map<Identifier, ClientItem>> original) {
4444
// Same note as above for not using "this"
4545
ModelManagerMixin thiz = ((ModelManagerMixin) (Object) Minecraft.getInstance().getModelManager());
4646
thiz.clientItems = original.call(instance);
4747
return thiz.clientItems;
4848
}
4949

5050
@Override
51-
public Optional<ResolvedModel> rainbow$getResolvedModel(ResourceLocation location) {
52-
return unbakedResolvedModels == null ? Optional.empty() : Optional.ofNullable(unbakedResolvedModels.get(location));
51+
public Optional<ResolvedModel> rainbow$getResolvedModel(Identifier identifier) {
52+
return unbakedResolvedModels == null ? Optional.empty() : Optional.ofNullable(unbakedResolvedModels.get(identifier));
5353
}
5454

5555
@Override
56-
public Optional<ClientItem> rainbow$getClientItem(ResourceLocation location) {
57-
return clientItems == null ? Optional.empty() : Optional.ofNullable(clientItems.get(location));
56+
public Optional<ClientItem> rainbow$getClientItem(Identifier identifier) {
57+
return clientItems == null ? Optional.empty() : Optional.ofNullable(clientItems.get(identifier));
5858
}
5959
}
Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,12 +1,13 @@
11
package org.geysermc.rainbow.client.mixin;
22

33
import net.minecraft.client.gui.components.SplashRenderer;
4+
import net.minecraft.network.chat.Component;
45
import org.spongepowered.asm.mixin.Mixin;
56
import org.spongepowered.asm.mixin.gen.Accessor;
67

78
@Mixin(SplashRenderer.class)
89
public interface SplashRendererAccessor {
910

1011
@Accessor
11-
String getSplash();
12+
Component getSplash();
1213
}
Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
package org.geysermc.rainbow.client.render;
22

3-
import net.minecraft.resources.ResourceLocation;
3+
import net.minecraft.resources.Identifier;
44
import net.minecraft.world.item.ItemStack;
55
import org.geysermc.rainbow.mapping.geometry.GeometryRenderer;
66
import org.geysermc.rainbow.mapping.texture.TextureHolder;
@@ -11,7 +11,7 @@ public class MinecraftGeometryRenderer implements GeometryRenderer {
1111
public static final MinecraftGeometryRenderer INSTANCE = new MinecraftGeometryRenderer();
1212

1313
@Override
14-
public TextureHolder render(ResourceLocation location, ItemStack stack) {
15-
return new RenderedTextureHolder(location, stack);
14+
public TextureHolder render(Identifier identifier, ItemStack stack) {
15+
return new RenderedTextureHolder(identifier, stack);
1616
}
1717
}

client/src/main/java/org/geysermc/rainbow/client/render/RenderedTextureHolder.java

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -12,7 +12,7 @@
1212
import net.minecraft.client.gui.render.state.GuiRenderState;
1313
import net.minecraft.client.gui.render.state.pip.OversizedItemRenderState;
1414
import net.minecraft.client.renderer.item.TrackingItemStackRenderState;
15-
import net.minecraft.resources.ResourceLocation;
15+
import net.minecraft.resources.Identifier;
1616
import net.minecraft.util.ProblemReporter;
1717
import net.minecraft.world.item.ItemDisplayContext;
1818
import net.minecraft.world.item.ItemStack;
@@ -35,8 +35,8 @@
3535
public class RenderedTextureHolder extends TextureHolder {
3636
private final ItemStack stackToRender;
3737

38-
public RenderedTextureHolder(ResourceLocation location, ItemStack stackToRender) {
39-
super(location);
38+
public RenderedTextureHolder(Identifier identifier, ItemStack stackToRender) {
39+
super(identifier);
4040
this.stackToRender = stackToRender;
4141
}
4242

datagen/src/main/java/org/geysermc/rainbow/datagen/RainbowModelProvider.java

Lines changed: 22 additions & 22 deletions
Original file line numberDiff line numberDiff line change
@@ -5,7 +5,6 @@
55
import com.mojang.serialization.Codec;
66
import net.fabricmc.fabric.api.client.datagen.v1.provider.FabricModelProvider;
77
import net.fabricmc.fabric.api.datagen.v1.FabricDataOutput;
8-
import net.minecraft.Util;
98
import net.minecraft.client.data.models.model.ModelInstance;
109
import net.minecraft.client.renderer.block.model.BlockModel;
1110
import net.minecraft.client.renderer.block.model.ItemModelGenerator;
@@ -19,10 +18,11 @@
1918
import net.minecraft.data.CachedOutput;
2019
import net.minecraft.data.DataProvider;
2120
import net.minecraft.data.PackOutput;
21+
import net.minecraft.resources.Identifier;
2222
import net.minecraft.resources.ResourceKey;
23-
import net.minecraft.resources.ResourceLocation;
2423
import net.minecraft.server.packs.resources.ResourceManager;
2524
import net.minecraft.util.ProblemReporter;
25+
import net.minecraft.util.Util;
2626
import net.minecraft.world.item.Item;
2727
import net.minecraft.world.item.equipment.EquipmentAsset;
2828
import org.geysermc.rainbow.Rainbow;
@@ -60,11 +60,11 @@ public abstract class RainbowModelProvider extends FabricModelProvider {
6060
private final Path packPath;
6161

6262
private Map<Item, ClientItem> itemInfos;
63-
private Map<ResourceLocation, ModelInstance> models;
63+
private Map<Identifier, ModelInstance> models;
6464

6565
protected RainbowModelProvider(FabricDataOutput output, CompletableFuture<HolderLookup.Provider> registries,
6666
Map<ResourceKey<EquipmentAsset>, EquipmentClientInfo> equipmentInfos, String packName,
67-
ResourceLocation outputRoot, Path geyserMappingsPath, Path packPath) {
67+
Identifier outputRoot, Path geyserMappingsPath, Path packPath) {
6868
super(output);
6969
this.registries = registries;
7070
this.equipmentInfos = equipmentInfos;
@@ -78,13 +78,13 @@ protected RainbowModelProvider(FabricDataOutput output, CompletableFuture<Holder
7878

7979
protected RainbowModelProvider(FabricDataOutput output, CompletableFuture<HolderLookup.Provider> registries,
8080
Map<ResourceKey<EquipmentAsset>, EquipmentClientInfo> equipmentInfos, String packName,
81-
ResourceLocation outputRoot) {
81+
Identifier outputRoot) {
8282
this(output, registries, equipmentInfos, packName, outputRoot, Path.of("geyser_mappings.json"), Path.of("pack"));
8383
}
8484

8585
protected RainbowModelProvider(FabricDataOutput output, CompletableFuture<HolderLookup.Provider> registries,
8686
Map<ResourceKey<EquipmentAsset>, EquipmentClientInfo> equipmentInfos, String packName) {
87-
this(output, registries, equipmentInfos, packName, ResourceLocation.withDefaultNamespace("bedrock"));
87+
this(output, registries, equipmentInfos, packName, Identifier.withDefaultNamespace("bedrock"));
8888
}
8989

9090
protected RainbowModelProvider(FabricDataOutput output, CompletableFuture<HolderLookup.Provider> registries, String packName) {
@@ -105,7 +105,7 @@ protected RainbowModelProvider(FabricDataOutput output, CompletableFuture<Holder
105105
BedrockPack pack = createBedrockPack(new Serializer(output, registries),
106106
new DatagenResolver(resourceManager, equipmentInfos, itemInfos, models)).build();
107107

108-
Set<Item> sortedItemInfos = new TreeSet<>(Comparator.comparing(item -> item.builtInRegistryHolder().key().location()));
108+
Set<Item> sortedItemInfos = new TreeSet<>(Comparator.comparing(item -> item.builtInRegistryHolder().key().identifier()));
109109
sortedItemInfos.addAll(itemInfos.keySet());
110110
for (Item item : sortedItemInfos) {
111111
pack.map(getVanillaItem(item).builtInRegistryHolder(), getVanillaDataComponentPatch(item));
@@ -136,7 +136,7 @@ public void setItemInfos(Map<Item, ClientItem> itemInfos) {
136136
}
137137

138138
@ApiStatus.Internal
139-
public void setModels(Map<ResourceLocation, ModelInstance> models) {
139+
public void setModels(Map<Identifier, ModelInstance> models) {
140140
this.models = models;
141141
}
142142

@@ -162,33 +162,33 @@ public CompletableFuture<?> saveTexture(byte[] texture, Path path) {
162162
private static class DatagenResolver implements AssetResolver {
163163
private final ResourceManager resourceManager;
164164
private final Map<ResourceKey<EquipmentAsset>, EquipmentClientInfo> equipmentInfos;
165-
private final Map<ResourceLocation, ClientItem> itemInfos;
166-
private final Map<ResourceLocation, ModelInstance> models;
167-
private final Map<ResourceLocation, Optional<ResolvedModel>> resolvedModelCache = new HashMap<>();
165+
private final Map<Identifier, ClientItem> itemInfos;
166+
private final Map<Identifier, ModelInstance> models;
167+
private final Map<Identifier, Optional<ResolvedModel>> resolvedModelCache = new HashMap<>();
168168

169169
private DatagenResolver(ResourceManager resourceManager, Map<ResourceKey<EquipmentAsset>, EquipmentClientInfo> equipmentInfos,
170-
Map<Item, ClientItem> itemInfos, Map<ResourceLocation, ModelInstance> models) {
170+
Map<Item, ClientItem> itemInfos, Map<Identifier, ModelInstance> models) {
171171
this.resourceManager = resourceManager;
172172
this.equipmentInfos = equipmentInfos;
173173
this.itemInfos = new HashMap<>();
174174
for (Map.Entry<Item, ClientItem> entry : itemInfos.entrySet()) {
175-
this.itemInfos.put(entry.getKey().builtInRegistryHolder().key().location(), entry.getValue());
175+
this.itemInfos.put(entry.getKey().builtInRegistryHolder().key().identifier(), entry.getValue());
176176
}
177177
this.models = models;
178178
}
179179

180180
@Override
181-
public Optional<ResolvedModel> getResolvedModel(ResourceLocation location) {
182-
return resolvedModelCache.computeIfAbsent(location, key -> Optional.ofNullable(models.get(location))
181+
public Optional<ResolvedModel> getResolvedModel(Identifier identifier) {
182+
return resolvedModelCache.computeIfAbsent(identifier, key -> Optional.ofNullable(models.get(identifier))
183183
.<UnbakedModel>map(instance -> BlockModel.fromStream(new StringReader(instance.get().toString())))
184184
.or(() -> {
185-
if (location.equals(ItemModelGenerator.GENERATED_ITEM_MODEL_ID)) {
185+
if (identifier.equals(ItemModelGenerator.GENERATED_ITEM_MODEL_ID)) {
186186
return Optional.of(new ItemModelGenerator());
187187
}
188188
return Optional.empty();
189189
})
190190
.or(() -> RainbowIO.safeIO(() -> {
191-
try (BufferedReader reader = resourceManager.openAsReader(location.withPrefix("models/").withSuffix(".json"))) {
191+
try (BufferedReader reader = resourceManager.openAsReader(identifier.withPrefix("models/").withSuffix(".json"))) {
192192
return BlockModel.fromStream(reader);
193193
}
194194
}))
@@ -205,14 +205,14 @@ public Optional<ResolvedModel> getResolvedModel(ResourceLocation location) {
205205

206206
@Override
207207
public @NotNull String debugName() {
208-
return location.toString();
208+
return identifier.toString();
209209
}
210210
}));
211211
}
212212

213213
@Override
214-
public Optional<ClientItem> getClientItem(ResourceLocation location) {
215-
return Optional.ofNullable(itemInfos.get(location));
214+
public Optional<ClientItem> getClientItem(Identifier identifier) {
215+
return Optional.ofNullable(itemInfos.get(identifier));
216216
}
217217

218218
@Override
@@ -221,9 +221,9 @@ public Optional<EquipmentClientInfo> getEquipmentInfo(ResourceKey<EquipmentAsset
221221
}
222222

223223
@Override
224-
public Optional<TextureResource> getTexture(ResourceLocation atlas, ResourceLocation location) {
224+
public Optional<TextureResource> getTexture(Identifier atlas, Identifier identifier) {
225225
// We don't care about atlas since there are none loaded at datagen
226-
return resourceManager.getResource(Rainbow.decorateTextureLocation(location))
226+
return resourceManager.getResource(Rainbow.decorateTextureIdentifier(identifier))
227227
.flatMap(resource -> RainbowIO.safeIO(() -> {
228228
Optional<AnimationMetadataSection> animationMetadata = resource.metadata().getSection(AnimationMetadataSection.TYPE);
229229
try (InputStream textureStream = resource.open()) {

0 commit comments

Comments
 (0)