mirror of
				https://github.com/SquidDev-CC/CC-Tweaked
				synced 2025-10-30 21:23:00 +00:00 
			
		
		
		
	Update to Minecraft 1.21.7
This commit is contained in:
		| @@ -15,4 +15,4 @@ isUnstable=true | |||||||
| modVersion=1.116.0 | modVersion=1.116.0 | ||||||
|  |  | ||||||
| # Minecraft properties: We want to configure this here so we can read it in settings.gradle | # Minecraft properties: We want to configure this here so we can read it in settings.gradle | ||||||
| mcVersion=1.21.6 | mcVersion=1.21.7 | ||||||
|   | |||||||
| @@ -7,14 +7,14 @@ | |||||||
| # Minecraft | # Minecraft | ||||||
| # MC version is specified in gradle.properties, as we need that in settings.gradle. | # MC version is specified in gradle.properties, as we need that in settings.gradle. | ||||||
| # Remember to update corresponding versions in fabric.mod.json/neoforge.mods.toml | # Remember to update corresponding versions in fabric.mod.json/neoforge.mods.toml | ||||||
| fabric-api = "0.127.0+1.21.6" | fabric-api = "0.128.0+1.21.7" | ||||||
| fabric-loader = "0.16.14" | fabric-loader = "0.16.14" | ||||||
| neoForge = "21.6.12-beta" | neoForge = "21.7.1-beta" | ||||||
| neoMergeTool = "2.0.0" | neoMergeTool = "2.0.0" | ||||||
| mixin = "0.8.5" | mixin = "0.8.5" | ||||||
| parchment = "2025.04.19" | parchment = "2025.06.29" | ||||||
| parchmentMc = "1.21.5" | parchmentMc = "1.21.6" | ||||||
| yarn = "1.21.5+build.1" | yarn = "1.21.7+build.1" | ||||||
|  |  | ||||||
| # Core dependencies (these versions are tied to the version Minecraft uses) | # Core dependencies (these versions are tied to the version Minecraft uses) | ||||||
| fastutil = "8.5.15" | fastutil = "8.5.15" | ||||||
|   | |||||||
| @@ -18,6 +18,7 @@ import net.minecraft.client.renderer.MultiBufferSource; | |||||||
| import net.minecraft.client.renderer.block.model.ItemTransform; | import net.minecraft.client.renderer.block.model.ItemTransform; | ||||||
| import net.minecraft.client.renderer.item.ItemModelResolver; | import net.minecraft.client.renderer.item.ItemModelResolver; | ||||||
| import net.minecraft.client.renderer.item.ItemStackRenderState; | import net.minecraft.client.renderer.item.ItemStackRenderState; | ||||||
|  | import net.minecraft.client.renderer.item.TrackingItemStackRenderState; | ||||||
| import net.minecraft.client.renderer.special.SpecialModelRenderer; | import net.minecraft.client.renderer.special.SpecialModelRenderer; | ||||||
| import net.minecraft.client.resources.model.ModelBaker; | import net.minecraft.client.resources.model.ModelBaker; | ||||||
| import net.minecraft.core.component.DataComponentPatch; | import net.minecraft.core.component.DataComponentPatch; | ||||||
| @@ -64,7 +65,7 @@ public final class ItemUpgradeModel implements TurtleUpgradeModel { | |||||||
|     public void renderForItem(UpgradeData<ITurtleUpgrade> upgrade, TurtleSide side, ItemStackRenderState renderer, ItemModelResolver resolver, ItemTransform transform, int seed) { |     public void renderForItem(UpgradeData<ITurtleUpgrade> upgrade, TurtleSide side, ItemStackRenderState renderer, ItemModelResolver resolver, ItemTransform transform, int seed) { | ||||||
|         renderer.appendModelIdentityElement(this); |         renderer.appendModelIdentityElement(this); | ||||||
| 
 | 
 | ||||||
|         var childState = new ItemStackRenderState(); |         var childState = new TrackingItemStackRenderState(); | ||||||
|         resolver.updateForTopItem(childState, upgrade.getUpgradeItem(), ItemDisplayContext.NONE, null, null, seed); |         resolver.updateForTopItem(childState, upgrade.getUpgradeItem(), ItemDisplayContext.NONE, null, null, seed); | ||||||
|         if (!childState.isEmpty()) { |         if (!childState.isEmpty()) { | ||||||
|             renderer.appendModelIdentityElement(childState.getModelIdentity()); |             renderer.appendModelIdentityElement(childState.getModelIdentity()); | ||||||
|   | |||||||
| @@ -24,6 +24,7 @@ import dan200.computercraft.shared.ModRegistry; | |||||||
| import dan200.computercraft.shared.computer.inventory.AbstractComputerMenu; | import dan200.computercraft.shared.computer.inventory.AbstractComputerMenu; | ||||||
| import net.minecraft.client.color.item.ItemTintSource; | import net.minecraft.client.color.item.ItemTintSource; | ||||||
| import net.minecraft.client.gui.render.pip.PictureInPictureRenderer; | import net.minecraft.client.gui.render.pip.PictureInPictureRenderer; | ||||||
|  | import net.minecraft.client.gui.render.state.pip.PictureInPictureRenderState; | ||||||
| import net.minecraft.client.gui.screens.MenuScreens; | import net.minecraft.client.gui.screens.MenuScreens; | ||||||
| import net.minecraft.client.gui.screens.Screen; | import net.minecraft.client.gui.screens.Screen; | ||||||
| import net.minecraft.client.gui.screens.inventory.MenuAccess; | import net.minecraft.client.gui.screens.inventory.MenuAccess; | ||||||
| @@ -49,7 +50,6 @@ import java.util.concurrent.ConcurrentHashMap; | |||||||
| import java.util.concurrent.Executor; | import java.util.concurrent.Executor; | ||||||
| import java.util.function.BiConsumer; | import java.util.function.BiConsumer; | ||||||
| import java.util.function.BiFunction; | import java.util.function.BiFunction; | ||||||
| import java.util.function.Consumer; |  | ||||||
| import java.util.function.Function; | import java.util.function.Function; | ||||||
| 
 | 
 | ||||||
| /** | /** | ||||||
| @@ -193,7 +193,11 @@ public final class ClientRegistry { | |||||||
|         register.accept(TurtleShowElfOverlay.ID, TurtleShowElfOverlay.CODEC); |         register.accept(TurtleShowElfOverlay.ID, TurtleShowElfOverlay.CODEC); | ||||||
|     } |     } | ||||||
| 
 | 
 | ||||||
|     public static void registerPictureInPictureRenderers(Consumer<Function<MultiBufferSource.BufferSource, PictureInPictureRenderer<?>>> register) { |     public interface RegisterPictureInPictureRenderer { | ||||||
|         register.accept(PrintoutScreen.PrintoutPictureRenderer::new); |         <T extends PictureInPictureRenderState> void register(Class<T> state, Function<MultiBufferSource.BufferSource, PictureInPictureRenderer<T>> factory); | ||||||
|  |     } | ||||||
|  | 
 | ||||||
|  |     public static void registerPictureInPictureRenderers(RegisterPictureInPictureRenderer register) { | ||||||
|  |         register.register(PrintoutScreen.PrintoutRenderState.class, PrintoutScreen.PrintoutPictureRenderer::new); | ||||||
|     } |     } | ||||||
| } | } | ||||||
|   | |||||||
| @@ -4,7 +4,6 @@ | |||||||
| 
 | 
 | ||||||
| package dan200.computercraft.client.platform; | package dan200.computercraft.client.platform; | ||||||
| 
 | 
 | ||||||
| import com.google.auto.service.AutoService; |  | ||||||
| import dan200.computercraft.client.ClientTableFormatter; | import dan200.computercraft.client.ClientTableFormatter; | ||||||
| import dan200.computercraft.client.gui.AbstractComputerScreen; | import dan200.computercraft.client.gui.AbstractComputerScreen; | ||||||
| import dan200.computercraft.client.gui.OptionScreen; | import dan200.computercraft.client.gui.OptionScreen; | ||||||
| @@ -36,7 +35,6 @@ import java.util.UUID; | |||||||
| /** | /** | ||||||
|  * The client-side implementation of {@link ClientNetworkContext}. |  * The client-side implementation of {@link ClientNetworkContext}. | ||||||
|  */ |  */ | ||||||
| @AutoService(ClientNetworkContext.class) |  | ||||||
| public final class ClientNetworkContextImpl implements ClientNetworkContext { | public final class ClientNetworkContextImpl implements ClientNetworkContext { | ||||||
|     @Override |     @Override | ||||||
|     public void handleChatTable(TableBuilder table) { |     public void handleChatTable(TableBuilder table) { | ||||||
|   | |||||||
| @@ -9,15 +9,14 @@ import com.mojang.brigadier.builder.LiteralArgumentBuilder; | |||||||
| import com.mojang.brigadier.builder.RequiredArgumentBuilder; | import com.mojang.brigadier.builder.RequiredArgumentBuilder; | ||||||
| import dan200.computercraft.api.ComputerCraftAPI; | import dan200.computercraft.api.ComputerCraftAPI; | ||||||
| import dan200.computercraft.api.client.FabricComputerCraftAPIClient; | import dan200.computercraft.api.client.FabricComputerCraftAPIClient; | ||||||
|  | import dan200.computercraft.client.platform.ClientNetworkContextImpl; | ||||||
| import dan200.computercraft.client.platform.FabricModelKey; | import dan200.computercraft.client.platform.FabricModelKey; | ||||||
| import dan200.computercraft.client.platform.ModelKey; | import dan200.computercraft.client.platform.ModelKey; | ||||||
| import dan200.computercraft.core.util.Nullability; | import dan200.computercraft.core.util.Nullability; | ||||||
| import dan200.computercraft.impl.Services; |  | ||||||
| import dan200.computercraft.shared.ComputerCraft; | import dan200.computercraft.shared.ComputerCraft; | ||||||
| import dan200.computercraft.shared.ModRegistry; | import dan200.computercraft.shared.ModRegistry; | ||||||
| import dan200.computercraft.shared.config.ConfigSpec; | import dan200.computercraft.shared.config.ConfigSpec; | ||||||
| import dan200.computercraft.shared.network.NetworkMessages; | import dan200.computercraft.shared.network.NetworkMessages; | ||||||
| import dan200.computercraft.shared.network.client.ClientNetworkContext; |  | ||||||
| import dan200.computercraft.shared.platform.FabricConfigFile; | import dan200.computercraft.shared.platform.FabricConfigFile; | ||||||
| import net.fabricmc.fabric.api.client.command.v2.ClientCommandRegistrationCallback; | import net.fabricmc.fabric.api.client.command.v2.ClientCommandRegistrationCallback; | ||||||
| import net.fabricmc.fabric.api.client.command.v2.FabricClientCommandSource; | import net.fabricmc.fabric.api.client.command.v2.FabricClientCommandSource; | ||||||
| @@ -32,7 +31,10 @@ import net.fabricmc.loader.api.FabricLoader; | |||||||
| import net.minecraft.Util; | import net.minecraft.Util; | ||||||
| import net.minecraft.client.Minecraft; | import net.minecraft.client.Minecraft; | ||||||
| import net.minecraft.client.color.item.ItemTintSources; | import net.minecraft.client.color.item.ItemTintSources; | ||||||
|  | import net.minecraft.client.gui.render.pip.PictureInPictureRenderer; | ||||||
|  | import net.minecraft.client.gui.render.state.pip.PictureInPictureRenderState; | ||||||
| import net.minecraft.client.gui.screens.MenuScreens; | import net.minecraft.client.gui.screens.MenuScreens; | ||||||
|  | import net.minecraft.client.renderer.MultiBufferSource; | ||||||
| import net.minecraft.client.renderer.chunk.ChunkSectionLayer; | import net.minecraft.client.renderer.chunk.ChunkSectionLayer; | ||||||
| import net.minecraft.client.renderer.item.ItemModels; | import net.minecraft.client.renderer.item.ItemModels; | ||||||
| import net.minecraft.client.renderer.item.properties.conditional.ConditionalItemModelProperties; | import net.minecraft.client.renderer.item.properties.conditional.ConditionalItemModelProperties; | ||||||
| @@ -45,12 +47,13 @@ import java.nio.file.Files; | |||||||
| import java.nio.file.Path; | import java.nio.file.Path; | ||||||
| import java.util.function.BiConsumer; | import java.util.function.BiConsumer; | ||||||
| import java.util.function.BiFunction; | import java.util.function.BiFunction; | ||||||
|  | import java.util.function.Function; | ||||||
| 
 | 
 | ||||||
| import static dan200.computercraft.core.util.Nullability.assertNonNull; | import static dan200.computercraft.core.util.Nullability.assertNonNull; | ||||||
| 
 | 
 | ||||||
| public class ComputerCraftClient { | public class ComputerCraftClient { | ||||||
|     public static void init() { |     public static void init() { | ||||||
|         var clientNetwork = Services.load(ClientNetworkContext.class); |         var clientNetwork = new ClientNetworkContextImpl(); | ||||||
|         for (var type : NetworkMessages.getClientbound()) { |         for (var type : NetworkMessages.getClientbound()) { | ||||||
|             ClientPlayNetworking.registerGlobalReceiver( |             ClientPlayNetworking.registerGlobalReceiver( | ||||||
|                 type.type(), (packet, responseSender) -> packet.handle(clientNetwork) |                 type.type(), (packet, responseSender) -> packet.handle(clientNetwork) | ||||||
| @@ -81,7 +84,12 @@ public class ComputerCraftClient { | |||||||
|         BlockRenderLayerMap.putBlock(ModRegistry.Blocks.MONITOR_NORMAL.get(), ChunkSectionLayer.CUTOUT); |         BlockRenderLayerMap.putBlock(ModRegistry.Blocks.MONITOR_NORMAL.get(), ChunkSectionLayer.CUTOUT); | ||||||
|         BlockRenderLayerMap.putBlock(ModRegistry.Blocks.MONITOR_ADVANCED.get(), ChunkSectionLayer.CUTOUT); |         BlockRenderLayerMap.putBlock(ModRegistry.Blocks.MONITOR_ADVANCED.get(), ChunkSectionLayer.CUTOUT); | ||||||
| 
 | 
 | ||||||
|         ClientRegistry.registerPictureInPictureRenderers(f -> SpecialGuiElementRegistry.register(c -> f.apply(c.vertexConsumers()))); |         ClientRegistry.registerPictureInPictureRenderers(new ClientRegistry.RegisterPictureInPictureRenderer() { | ||||||
|  |             @Override | ||||||
|  |             public <T extends PictureInPictureRenderState> void register(Class<T> ty, Function<MultiBufferSource.BufferSource, PictureInPictureRenderer<T>> f) { | ||||||
|  |                 SpecialGuiElementRegistry.register(c -> f.apply(c.vertexConsumers())); | ||||||
|  |             } | ||||||
|  |         }); | ||||||
| 
 | 
 | ||||||
|         ClientTickEvents.START_CLIENT_TICK.register(client -> ClientHooks.onTick()); |         ClientTickEvents.START_CLIENT_TICK.register(client -> ClientHooks.onTick()); | ||||||
|         // This isn't 100% consistent with Forge, but not worth a mixin. |         // This isn't 100% consistent with Forge, but not worth a mixin. | ||||||
|   | |||||||
| @@ -50,8 +50,8 @@ | |||||||
|     ], |     ], | ||||||
|     "depends": { |     "depends": { | ||||||
|         "fabricloader": ">=0.16.14", |         "fabricloader": ">=0.16.14", | ||||||
|         "fabric-api": ">=0.127.0", |         "fabric-api": ">=0.128.0", | ||||||
|         "minecraft": "=1.21.6" |         "minecraft": "=1.21.7" | ||||||
|     }, |     }, | ||||||
|     "accessWidener": "computercraft.accesswidener" |     "accessWidener": "computercraft.accesswidener" | ||||||
| } | } | ||||||
|   | |||||||
| @@ -7,9 +7,11 @@ package dan200.computercraft.client; | |||||||
| import com.google.common.reflect.TypeToken; | import com.google.common.reflect.TypeToken; | ||||||
| import dan200.computercraft.api.ComputerCraftAPI; | import dan200.computercraft.api.ComputerCraftAPI; | ||||||
| import dan200.computercraft.api.client.turtle.RegisterTurtleModelEvent; | import dan200.computercraft.api.client.turtle.RegisterTurtleModelEvent; | ||||||
|  | import dan200.computercraft.client.platform.ClientNetworkContextImpl; | ||||||
| import dan200.computercraft.client.platform.ForgeModelKey; | import dan200.computercraft.client.platform.ForgeModelKey; | ||||||
| import dan200.computercraft.client.platform.ModelKey; | import dan200.computercraft.client.platform.ModelKey; | ||||||
| import dan200.computercraft.client.render.ExtendedItemFrameRenderState; | import dan200.computercraft.client.render.ExtendedItemFrameRenderState; | ||||||
|  | import dan200.computercraft.shared.network.NetworkMessages; | ||||||
| import net.minecraft.client.Minecraft; | import net.minecraft.client.Minecraft; | ||||||
| import net.minecraft.client.renderer.entity.ItemFrameRenderer; | import net.minecraft.client.renderer.entity.ItemFrameRenderer; | ||||||
| import net.minecraft.client.resources.model.ModelBaker; | import net.minecraft.client.resources.model.ModelBaker; | ||||||
| @@ -22,6 +24,7 @@ import net.neoforged.fml.common.EventBusSubscriber; | |||||||
| import net.neoforged.fml.event.lifecycle.FMLClientSetupEvent; | import net.neoforged.fml.event.lifecycle.FMLClientSetupEvent; | ||||||
| import net.neoforged.neoforge.client.event.*; | import net.neoforged.neoforge.client.event.*; | ||||||
| import net.neoforged.neoforge.client.model.standalone.UnbakedStandaloneModel; | import net.neoforged.neoforge.client.model.standalone.UnbakedStandaloneModel; | ||||||
|  | import net.neoforged.neoforge.client.network.event.RegisterClientPayloadHandlersEvent; | ||||||
| import net.neoforged.neoforge.client.renderstate.RegisterRenderStateModifiersEvent; | import net.neoforged.neoforge.client.renderstate.RegisterRenderStateModifiersEvent; | ||||||
| 
 | 
 | ||||||
| import java.util.ArrayDeque; | import java.util.ArrayDeque; | ||||||
| @@ -40,6 +43,14 @@ public final class ForgeClientRegistry { | |||||||
|     private ForgeClientRegistry() { |     private ForgeClientRegistry() { | ||||||
|     } |     } | ||||||
| 
 | 
 | ||||||
|  |     @SubscribeEvent | ||||||
|  |     public static void registerNetwork(RegisterClientPayloadHandlersEvent event) { | ||||||
|  |         var context = new ClientNetworkContextImpl(); | ||||||
|  |         for (var type : NetworkMessages.getClientbound()) { | ||||||
|  |             event.register(type.type(), (packet, ctx) -> ctx.enqueueWork(() -> packet.handle(context))); | ||||||
|  |         } | ||||||
|  |     } | ||||||
|  | 
 | ||||||
|     @SubscribeEvent |     @SubscribeEvent | ||||||
|     public static void registerModels(ModelEvent.RegisterStandalone event) { |     public static void registerModels(ModelEvent.RegisterStandalone event) { | ||||||
|         // Load resources |         // Load resources | ||||||
|   | |||||||
| @@ -13,7 +13,6 @@ import dan200.computercraft.api.peripheral.PeripheralCapability; | |||||||
| import dan200.computercraft.api.pocket.IPocketUpgrade; | import dan200.computercraft.api.pocket.IPocketUpgrade; | ||||||
| import dan200.computercraft.api.turtle.ITurtleUpgrade; | import dan200.computercraft.api.turtle.ITurtleUpgrade; | ||||||
| import dan200.computercraft.impl.PocketUpgrades; | import dan200.computercraft.impl.PocketUpgrades; | ||||||
| import dan200.computercraft.impl.Services; |  | ||||||
| import dan200.computercraft.impl.TurtleUpgrades; | import dan200.computercraft.impl.TurtleUpgrades; | ||||||
| import dan200.computercraft.shared.CommonHooks; | import dan200.computercraft.shared.CommonHooks; | ||||||
| import dan200.computercraft.shared.ModRegistry; | import dan200.computercraft.shared.ModRegistry; | ||||||
| @@ -135,7 +134,7 @@ public final class ComputerCraft { | |||||||
|     } |     } | ||||||
| 
 | 
 | ||||||
|     private static <T extends NetworkMessage<ClientNetworkContext>> void registerClientbound(PayloadRegistrar registrar, CustomPacketPayload.TypeAndCodec<RegistryFriendlyByteBuf, T> type) { |     private static <T extends NetworkMessage<ClientNetworkContext>> void registerClientbound(PayloadRegistrar registrar, CustomPacketPayload.TypeAndCodec<RegistryFriendlyByteBuf, T> type) { | ||||||
|         registrar.playToClient(type.type(), type.codec(), (t, context) -> context.enqueueWork(() -> t.handle(ClientHolderHolder.get()))); |         registrar.playToClient(type.type(), type.codec()); | ||||||
|     } |     } | ||||||
| 
 | 
 | ||||||
|     /** |     /** | ||||||
| @@ -220,24 +219,4 @@ public final class ComputerCraft { | |||||||
|     public static void onCreativeTab(BuildCreativeModeTabContentsEvent event) { |     public static void onCreativeTab(BuildCreativeModeTabContentsEvent event) { | ||||||
|         CommonHooks.onBuildCreativeTab(event.getTabKey(), event.getParameters(), event); |         CommonHooks.onBuildCreativeTab(event.getTabKey(), event.getParameters(), event); | ||||||
|     } |     } | ||||||
| 
 |  | ||||||
|     /** |  | ||||||
|      * This holds an instance of {@link ClientNetworkContext}. This is a separate class to ensure that the instance is |  | ||||||
|      * lazily created when needed on the client. |  | ||||||
|      */ |  | ||||||
|     private static final class ClientHolderHolder { |  | ||||||
|         private static final @Nullable ClientNetworkContext INSTANCE; |  | ||||||
|         private static final @Nullable Throwable ERROR; |  | ||||||
| 
 |  | ||||||
|         static { |  | ||||||
|             var helper = Services.tryLoad(ClientNetworkContext.class); |  | ||||||
|             INSTANCE = helper.instance(); |  | ||||||
|             ERROR = helper.error(); |  | ||||||
|         } |  | ||||||
| 
 |  | ||||||
|         static ClientNetworkContext get() { |  | ||||||
|             var instance = INSTANCE; |  | ||||||
|             return instance == null ? Services.raise(ClientNetworkContext.class, ERROR) : instance; |  | ||||||
|         } |  | ||||||
|     } |  | ||||||
| } | } | ||||||
|   | |||||||
| @@ -26,7 +26,7 @@ CC: Tweaked is a fork of ComputerCraft, adding programmable computers, turtles a | |||||||
| [[dependencies.computercraft]] | [[dependencies.computercraft]] | ||||||
|     modId="neoforge" |     modId="neoforge" | ||||||
|     type="required" |     type="required" | ||||||
|     versionRange="[${neoVersion},21.7)" |     versionRange="[${neoVersion},21.8)" | ||||||
|     ordering="NONE" |     ordering="NONE" | ||||||
|     side="BOTH" |     side="BOTH" | ||||||
|  |  | ||||||
|   | |||||||
		Reference in New Issue
	
	Block a user
	 Jonathan Coates
					Jonathan Coates