mirror of
https://github.com/SquidDev-CC/CC-Tweaked
synced 2025-08-30 17:17:55 +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