Skip to content

Commit 67412a2

Browse files
committed
Update to Minecraft 1.21.7
1 parent 7686959 commit 67412a2

File tree

10 files changed

+42
-41
lines changed

10 files changed

+42
-41
lines changed

gradle.properties

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -15,4 +15,4 @@ isUnstable=true
1515
modVersion=1.116.0
1616

1717
# Minecraft properties: We want to configure this here so we can read it in settings.gradle
18-
mcVersion=1.21.6
18+
mcVersion=1.21.7

gradle/libs.versions.toml

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -7,14 +7,14 @@
77
# Minecraft
88
# MC version is specified in gradle.properties, as we need that in settings.gradle.
99
# Remember to update corresponding versions in fabric.mod.json/neoforge.mods.toml
10-
fabric-api = "0.127.0+1.21.6"
10+
fabric-api = "0.128.0+1.21.7"
1111
fabric-loader = "0.16.14"
12-
neoForge = "21.6.12-beta"
12+
neoForge = "21.7.1-beta"
1313
neoMergeTool = "2.0.0"
1414
mixin = "0.8.5"
15-
parchment = "2025.04.19"
16-
parchmentMc = "1.21.5"
17-
yarn = "1.21.5+build.1"
15+
parchment = "2025.06.29"
16+
parchmentMc = "1.21.6"
17+
yarn = "1.21.7+build.1"
1818

1919
# Core dependencies (these versions are tied to the version Minecraft uses)
2020
fastutil = "8.5.15"

projects/common-api/src/client/java/dan200/computercraft/api/client/turtle/ItemUpgradeModel.java

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -18,6 +18,7 @@
1818
import net.minecraft.client.renderer.block.model.ItemTransform;
1919
import net.minecraft.client.renderer.item.ItemModelResolver;
2020
import net.minecraft.client.renderer.item.ItemStackRenderState;
21+
import net.minecraft.client.renderer.item.TrackingItemStackRenderState;
2122
import net.minecraft.client.renderer.special.SpecialModelRenderer;
2223
import net.minecraft.client.resources.model.ModelBaker;
2324
import net.minecraft.core.component.DataComponentPatch;
@@ -64,7 +65,7 @@ public static TurtleUpgradeModel.Unbaked unbaked() {
6465
public void renderForItem(UpgradeData<ITurtleUpgrade> upgrade, TurtleSide side, ItemStackRenderState renderer, ItemModelResolver resolver, ItemTransform transform, int seed) {
6566
renderer.appendModelIdentityElement(this);
6667

67-
var childState = new ItemStackRenderState();
68+
var childState = new TrackingItemStackRenderState();
6869
resolver.updateForTopItem(childState, upgrade.getUpgradeItem(), ItemDisplayContext.NONE, null, null, seed);
6970
if (!childState.isEmpty()) {
7071
renderer.appendModelIdentityElement(childState.getModelIdentity());

projects/common/src/client/java/dan200/computercraft/client/ClientRegistry.java

Lines changed: 7 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -24,6 +24,7 @@
2424
import dan200.computercraft.shared.computer.inventory.AbstractComputerMenu;
2525
import net.minecraft.client.color.item.ItemTintSource;
2626
import net.minecraft.client.gui.render.pip.PictureInPictureRenderer;
27+
import net.minecraft.client.gui.render.state.pip.PictureInPictureRenderState;
2728
import net.minecraft.client.gui.screens.MenuScreens;
2829
import net.minecraft.client.gui.screens.Screen;
2930
import net.minecraft.client.gui.screens.inventory.MenuAccess;
@@ -49,7 +50,6 @@
4950
import java.util.concurrent.Executor;
5051
import java.util.function.BiConsumer;
5152
import java.util.function.BiFunction;
52-
import java.util.function.Consumer;
5353
import java.util.function.Function;
5454

5555
/**
@@ -193,7 +193,11 @@ public static void registerConditionalItemProperties(BiConsumer<ResourceLocation
193193
register.accept(TurtleShowElfOverlay.ID, TurtleShowElfOverlay.CODEC);
194194
}
195195

196-
public static void registerPictureInPictureRenderers(Consumer<Function<MultiBufferSource.BufferSource, PictureInPictureRenderer<?>>> register) {
197-
register.accept(PrintoutScreen.PrintoutPictureRenderer::new);
196+
public interface RegisterPictureInPictureRenderer {
197+
<T extends PictureInPictureRenderState> void register(Class<T> state, Function<MultiBufferSource.BufferSource, PictureInPictureRenderer<T>> factory);
198+
}
199+
200+
public static void registerPictureInPictureRenderers(RegisterPictureInPictureRenderer register) {
201+
register.register(PrintoutScreen.PrintoutRenderState.class, PrintoutScreen.PrintoutPictureRenderer::new);
198202
}
199203
}

projects/common/src/client/java/dan200/computercraft/client/platform/ClientNetworkContextImpl.java

Lines changed: 0 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,6 @@
44

55
package dan200.computercraft.client.platform;
66

7-
import com.google.auto.service.AutoService;
87
import dan200.computercraft.client.ClientTableFormatter;
98
import dan200.computercraft.client.gui.AbstractComputerScreen;
109
import dan200.computercraft.client.gui.OptionScreen;
@@ -36,7 +35,6 @@
3635
/**
3736
* The client-side implementation of {@link ClientNetworkContext}.
3837
*/
39-
@AutoService(ClientNetworkContext.class)
4038
public final class ClientNetworkContextImpl implements ClientNetworkContext {
4139
@Override
4240
public void handleChatTable(TableBuilder table) {

projects/fabric/src/client/java/dan200/computercraft/client/ComputerCraftClient.java

Lines changed: 12 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -9,15 +9,14 @@
99
import com.mojang.brigadier.builder.RequiredArgumentBuilder;
1010
import dan200.computercraft.api.ComputerCraftAPI;
1111
import dan200.computercraft.api.client.FabricComputerCraftAPIClient;
12+
import dan200.computercraft.client.platform.ClientNetworkContextImpl;
1213
import dan200.computercraft.client.platform.FabricModelKey;
1314
import dan200.computercraft.client.platform.ModelKey;
1415
import dan200.computercraft.core.util.Nullability;
15-
import dan200.computercraft.impl.Services;
1616
import dan200.computercraft.shared.ComputerCraft;
1717
import dan200.computercraft.shared.ModRegistry;
1818
import dan200.computercraft.shared.config.ConfigSpec;
1919
import dan200.computercraft.shared.network.NetworkMessages;
20-
import dan200.computercraft.shared.network.client.ClientNetworkContext;
2120
import dan200.computercraft.shared.platform.FabricConfigFile;
2221
import net.fabricmc.fabric.api.client.command.v2.ClientCommandRegistrationCallback;
2322
import net.fabricmc.fabric.api.client.command.v2.FabricClientCommandSource;
@@ -32,7 +31,10 @@
3231
import net.minecraft.Util;
3332
import net.minecraft.client.Minecraft;
3433
import net.minecraft.client.color.item.ItemTintSources;
34+
import net.minecraft.client.gui.render.pip.PictureInPictureRenderer;
35+
import net.minecraft.client.gui.render.state.pip.PictureInPictureRenderState;
3536
import net.minecraft.client.gui.screens.MenuScreens;
37+
import net.minecraft.client.renderer.MultiBufferSource;
3638
import net.minecraft.client.renderer.chunk.ChunkSectionLayer;
3739
import net.minecraft.client.renderer.item.ItemModels;
3840
import net.minecraft.client.renderer.item.properties.conditional.ConditionalItemModelProperties;
@@ -45,12 +47,13 @@
4547
import java.nio.file.Path;
4648
import java.util.function.BiConsumer;
4749
import java.util.function.BiFunction;
50+
import java.util.function.Function;
4851

4952
import static dan200.computercraft.core.util.Nullability.assertNonNull;
5053

5154
public class ComputerCraftClient {
5255
public static void init() {
53-
var clientNetwork = Services.load(ClientNetworkContext.class);
56+
var clientNetwork = new ClientNetworkContextImpl();
5457
for (var type : NetworkMessages.getClientbound()) {
5558
ClientPlayNetworking.registerGlobalReceiver(
5659
type.type(), (packet, responseSender) -> packet.handle(clientNetwork)
@@ -81,7 +84,12 @@ public <U, T> void register(ModelKey<T> key, U unbaked, BiConsumer<U, Resolvable
8184
BlockRenderLayerMap.putBlock(ModRegistry.Blocks.MONITOR_NORMAL.get(), ChunkSectionLayer.CUTOUT);
8285
BlockRenderLayerMap.putBlock(ModRegistry.Blocks.MONITOR_ADVANCED.get(), ChunkSectionLayer.CUTOUT);
8386

84-
ClientRegistry.registerPictureInPictureRenderers(f -> SpecialGuiElementRegistry.register(c -> f.apply(c.vertexConsumers())));
87+
ClientRegistry.registerPictureInPictureRenderers(new ClientRegistry.RegisterPictureInPictureRenderer() {
88+
@Override
89+
public <T extends PictureInPictureRenderState> void register(Class<T> ty, Function<MultiBufferSource.BufferSource, PictureInPictureRenderer<T>> f) {
90+
SpecialGuiElementRegistry.register(c -> f.apply(c.vertexConsumers()));
91+
}
92+
});
8593

8694
ClientTickEvents.START_CLIENT_TICK.register(client -> ClientHooks.onTick());
8795
// This isn't 100% consistent with Forge, but not worth a mixin.

projects/fabric/src/main/resources/fabric.mod.json

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -50,8 +50,8 @@
5050
],
5151
"depends": {
5252
"fabricloader": ">=0.16.14",
53-
"fabric-api": ">=0.127.0",
54-
"minecraft": "=1.21.6"
53+
"fabric-api": ">=0.128.0",
54+
"minecraft": "=1.21.7"
5555
},
5656
"accessWidener": "computercraft.accesswidener"
5757
}

projects/forge/src/client/java/dan200/computercraft/client/ForgeClientRegistry.java

Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -7,9 +7,11 @@
77
import com.google.common.reflect.TypeToken;
88
import dan200.computercraft.api.ComputerCraftAPI;
99
import dan200.computercraft.api.client.turtle.RegisterTurtleModelEvent;
10+
import dan200.computercraft.client.platform.ClientNetworkContextImpl;
1011
import dan200.computercraft.client.platform.ForgeModelKey;
1112
import dan200.computercraft.client.platform.ModelKey;
1213
import dan200.computercraft.client.render.ExtendedItemFrameRenderState;
14+
import dan200.computercraft.shared.network.NetworkMessages;
1315
import net.minecraft.client.Minecraft;
1416
import net.minecraft.client.renderer.entity.ItemFrameRenderer;
1517
import net.minecraft.client.resources.model.ModelBaker;
@@ -22,6 +24,7 @@
2224
import net.neoforged.fml.event.lifecycle.FMLClientSetupEvent;
2325
import net.neoforged.neoforge.client.event.*;
2426
import net.neoforged.neoforge.client.model.standalone.UnbakedStandaloneModel;
27+
import net.neoforged.neoforge.client.network.event.RegisterClientPayloadHandlersEvent;
2528
import net.neoforged.neoforge.client.renderstate.RegisterRenderStateModifiersEvent;
2629

2730
import java.util.ArrayDeque;
@@ -40,6 +43,14 @@ public final class ForgeClientRegistry {
4043
private ForgeClientRegistry() {
4144
}
4245

46+
@SubscribeEvent
47+
public static void registerNetwork(RegisterClientPayloadHandlersEvent event) {
48+
var context = new ClientNetworkContextImpl();
49+
for (var type : NetworkMessages.getClientbound()) {
50+
event.register(type.type(), (packet, ctx) -> ctx.enqueueWork(() -> packet.handle(context)));
51+
}
52+
}
53+
4354
@SubscribeEvent
4455
public static void registerModels(ModelEvent.RegisterStandalone event) {
4556
// Load resources

projects/forge/src/main/java/dan200/computercraft/ComputerCraft.java

Lines changed: 1 addition & 22 deletions
Original file line numberDiff line numberDiff line change
@@ -13,7 +13,6 @@
1313
import dan200.computercraft.api.pocket.IPocketUpgrade;
1414
import dan200.computercraft.api.turtle.ITurtleUpgrade;
1515
import dan200.computercraft.impl.PocketUpgrades;
16-
import dan200.computercraft.impl.Services;
1716
import dan200.computercraft.impl.TurtleUpgrades;
1817
import dan200.computercraft.shared.CommonHooks;
1918
import dan200.computercraft.shared.ModRegistry;
@@ -135,7 +134,7 @@ private static <T extends NetworkMessage<ServerNetworkContext>> void registerSer
135134
}
136135

137136
private static <T extends NetworkMessage<ClientNetworkContext>> void registerClientbound(PayloadRegistrar registrar, CustomPacketPayload.TypeAndCodec<RegistryFriendlyByteBuf, T> type) {
138-
registrar.playToClient(type.type(), type.codec(), (t, context) -> context.enqueueWork(() -> t.handle(ClientHolderHolder.get())));
137+
registrar.playToClient(type.type(), type.codec());
139138
}
140139

141140
/**
@@ -220,24 +219,4 @@ private static void syncConfig(ModConfig config) {
220219
public static void onCreativeTab(BuildCreativeModeTabContentsEvent event) {
221220
CommonHooks.onBuildCreativeTab(event.getTabKey(), event.getParameters(), event);
222221
}
223-
224-
/**
225-
* This holds an instance of {@link ClientNetworkContext}. This is a separate class to ensure that the instance is
226-
* lazily created when needed on the client.
227-
*/
228-
private static final class ClientHolderHolder {
229-
private static final @Nullable ClientNetworkContext INSTANCE;
230-
private static final @Nullable Throwable ERROR;
231-
232-
static {
233-
var helper = Services.tryLoad(ClientNetworkContext.class);
234-
INSTANCE = helper.instance();
235-
ERROR = helper.error();
236-
}
237-
238-
static ClientNetworkContext get() {
239-
var instance = INSTANCE;
240-
return instance == null ? Services.raise(ClientNetworkContext.class, ERROR) : instance;
241-
}
242-
}
243222
}

projects/forge/src/main/resources/META-INF/neoforge.mods.toml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -26,7 +26,7 @@ CC: Tweaked is a fork of ComputerCraft, adding programmable computers, turtles a
2626
[[dependencies.computercraft]]
2727
modId="neoforge"
2828
type="required"
29-
versionRange="[${neoVersion},21.7)"
29+
versionRange="[${neoVersion},21.8)"
3030
ordering="NONE"
3131
side="BOTH"
3232

0 commit comments

Comments
 (0)