Skip to content

Commit ef1923d

Browse files
committed
Initial update to 1.21.10
1 parent 4cccf18 commit ef1923d

File tree

65 files changed

+581
-683
lines changed

Some content is hidden

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

65 files changed

+581
-683
lines changed

buildSrc/build.gradle.kts

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -25,6 +25,7 @@ repositories {
2525
name = "Fabric"
2626
content {
2727
includeGroup("net.fabricmc")
28+
includeGroup("net.fabricmc.unpick")
2829
}
2930
}
3031

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.1
1616

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

gradle/libs.versions.toml

Lines changed: 9 additions & 9 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.129.0+1.21.8"
11-
fabric-loader = "0.16.14"
12-
neoForge = "21.8.0-beta"
10+
fabric-api = "0.135.0+1.21.10"
11+
fabric-loader = "0.17.3"
12+
neoForge = "21.10.6-beta"
1313
neoMergeTool = "2.0.0"
1414
mixin = "0.8.5"
15-
parchment = "2025.06.29"
16-
parchmentMc = "1.21.6"
17-
yarn = "1.21.7+build.1"
15+
parchment = "2025.10.12"
16+
parchmentMc = "1.21.10"
17+
yarn = "1.21.10+build.2"
1818

1919
# Core dependencies (these versions are tied to the version Minecraft uses)
2020
fastutil = "8.5.15"
@@ -62,20 +62,20 @@ cctJavadoc = "1.8.5"
6262
checkstyle = "10.23.1"
6363
errorProne-core = "2.38.0"
6464
errorProne-plugin = "4.1.0"
65-
fabric-loom = "1.10.4"
65+
fabric-loom = "1.11.8"
6666
githubRelease = "2.5.2"
6767
gradleVersions = "0.50.0"
6868
ideaExt = "1.1.7"
6969
illuaminate = "0.1.0-83-g1131f68"
7070
lwjgl = "3.3.3"
7171
minotaur = "2.8.7"
72-
modDevGradle = "2.0.99"
72+
modDevGradle = "2.0.113"
7373
nullAway = "0.12.7"
7474
shadow = "8.3.1"
7575
spotless = "7.0.2"
7676
taskTree = "2.1.1"
7777
teavm = "0.13.0-SQUID.1"
78-
vanillaExtract = "0.2.1"
78+
vanillaExtract = "0.3.0"
7979
versionCatalogUpdate = "0.8.1"
8080

8181
[libraries]

gradle/wrapper/gradle-wrapper.jar

181 Bytes
Binary file not shown.

gradle/wrapper/gradle-wrapper.properties

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
distributionBase=GRADLE_USER_HOME
22
distributionPath=wrapper/dists
3-
distributionUrl=https\://services.gradle.org/distributions/gradle-8.12-bin.zip
3+
distributionUrl=https\://services.gradle.org/distributions/gradle-8.14.3-bin.zip
44
networkTimeout=10000
55
validateDistributionUrl=true
66
zipStoreBase=GRADLE_USER_HOME

gradlew

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -114,7 +114,7 @@ case "$( uname )" in #(
114114
NONSTOP* ) nonstop=true ;;
115115
esac
116116

117-
CLASSPATH=$APP_HOME/gradle/wrapper/gradle-wrapper.jar
117+
CLASSPATH="\\\"\\\""
118118

119119

120120
# Determine the Java command to use to start the JVM.
@@ -205,15 +205,15 @@ fi
205205
DEFAULT_JVM_OPTS='"-Xmx64m" "-Xms64m"'
206206

207207
# Collect all arguments for the java command:
208-
# * DEFAULT_JVM_OPTS, JAVA_OPTS, JAVA_OPTS, and optsEnvironmentVar are not allowed to contain shell fragments,
208+
# * DEFAULT_JVM_OPTS, JAVA_OPTS, and optsEnvironmentVar are not allowed to contain shell fragments,
209209
# and any embedded shellness will be escaped.
210210
# * For example: A user cannot expect ${Hostname} to be expanded, as it is an environment variable and will be
211211
# treated as '${Hostname}' itself on the command line.
212212

213213
set -- \
214214
"-Dorg.gradle.appname=$APP_BASE_NAME" \
215215
-classpath "$CLASSPATH" \
216-
org.gradle.wrapper.GradleWrapperMain \
216+
-jar "$APP_HOME/gradle/wrapper/gradle-wrapper.jar" \
217217
"$@"
218218

219219
# Stop when "xargs" is not available.

gradlew.bat

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -70,11 +70,11 @@ goto fail
7070
:execute
7171
@rem Setup the command line
7272

73-
set CLASSPATH=%APP_HOME%\gradle\wrapper\gradle-wrapper.jar
73+
set CLASSPATH=
7474

7575

7676
@rem Execute Gradle
77-
"%JAVA_EXE%" %DEFAULT_JVM_OPTS% %JAVA_OPTS% %GRADLE_OPTS% "-Dorg.gradle.appname=%APP_BASE_NAME%" -classpath "%CLASSPATH%" org.gradle.wrapper.GradleWrapperMain %*
77+
"%JAVA_EXE%" %DEFAULT_JVM_OPTS% %JAVA_OPTS% %GRADLE_OPTS% "-Dorg.gradle.appname=%APP_BASE_NAME%" -classpath "%CLASSPATH%" -jar "%APP_HOME%\gradle\wrapper\gradle-wrapper.jar" %*
7878

7979
:end
8080
@rem End local scope for the variables with windows NT shell

projects/common-api/src/client/java/dan200/computercraft/api/client/StandaloneModel.java

Lines changed: 23 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -6,23 +6,27 @@
66

77
import com.google.common.base.Suppliers;
88
import com.mojang.blaze3d.vertex.PoseStack;
9+
import com.mojang.blaze3d.vertex.SheetedDecalTextureGenerator;
10+
import com.mojang.blaze3d.vertex.VertexConsumer;
911
import dan200.computercraft.api.client.turtle.TurtleUpgradeModel;
1012
import net.minecraft.client.multiplayer.ClientLevel;
11-
import net.minecraft.client.renderer.MultiBufferSource;
1213
import net.minecraft.client.renderer.RenderType;
1314
import net.minecraft.client.renderer.Sheets;
15+
import net.minecraft.client.renderer.SubmitNodeCollector;
1416
import net.minecraft.client.renderer.block.model.BakedQuad;
17+
import net.minecraft.client.renderer.feature.ModelFeatureRenderer;
1518
import net.minecraft.client.renderer.item.BlockModelWrapper;
1619
import net.minecraft.client.renderer.item.ItemModel;
1720
import net.minecraft.client.renderer.item.ItemModelResolver;
1821
import net.minecraft.client.renderer.item.ItemStackRenderState;
1922
import net.minecraft.client.renderer.texture.TextureAtlasSprite;
2023
import net.minecraft.client.resources.model.BlockModelRotation;
2124
import net.minecraft.client.resources.model.ModelBaker;
25+
import net.minecraft.client.resources.model.ModelBakery;
2226
import net.minecraft.client.resources.model.ResolvedModel;
2327
import net.minecraft.resources.ResourceLocation;
2428
import net.minecraft.util.ARGB;
25-
import net.minecraft.world.entity.LivingEntity;
29+
import net.minecraft.world.entity.ItemOwner;
2630
import net.minecraft.world.item.ItemDisplayContext;
2731
import net.minecraft.world.item.ItemStack;
2832
import org.joml.Vector3f;
@@ -113,7 +117,7 @@ private static StandaloneModel ofUncached(ResolvedModel model, ModelBaker baker)
113117
* Set up an {@link ItemStackRenderState.LayerRenderState} to render this model.
114118
*
115119
* @param layer The layer to set up.
116-
* @see ItemModel#update(ItemStackRenderState, ItemStack, ItemModelResolver, ItemDisplayContext, ClientLevel, LivingEntity, int)
120+
* @see ItemModel#update(ItemStackRenderState, ItemStack, ItemModelResolver, ItemDisplayContext, ClientLevel, ItemOwner, int)
117121
*/
118122
public void setupItemLayer(ItemStackRenderState.LayerRenderState layer) {
119123
layer.setExtents(extents);
@@ -127,26 +131,35 @@ public void setupItemLayer(ItemStackRenderState.LayerRenderState layer) {
127131
* Render the model directly.
128132
*
129133
* @param transform The current pose stack transformations.
130-
* @param buffers The buffer source to use for rendering.
134+
* @param collector The node collector to render to.
131135
* @param light The current light texture coordinate.
132136
* @param overlay The current overlay texture coordinate.
133137
*/
134-
public void render(PoseStack transform, MultiBufferSource buffers, int light, int overlay) {
135-
render(transform, buffers, light, overlay, null);
138+
public void submit(PoseStack transform, SubmitNodeCollector collector, int light, int overlay) {
139+
submit(transform, collector, light, overlay, null, null);
136140
}
137141

138142
/**
139143
* Render the model directly.
140144
*
141145
* @param transform The current pose stack transformations.
142-
* @param buffers The buffer source to use for rendering.
146+
* @param collector The node collector to render to.
143147
* @param light The current light texture coordinate.
144148
* @param overlay The current overlay texture coordinate.
145149
* @param tints The tints for this model.
146150
*/
147-
public void render(PoseStack transform, MultiBufferSource buffers, int light, int overlay, int @Nullable [] tints) {
148-
var pose = transform.last();
149-
var buffer = buffers.getBuffer(renderType);
151+
public void submit(PoseStack transform, SubmitNodeCollector collector, int light, int overlay, int @Nullable [] tints, ModelFeatureRenderer.@Nullable CrumblingOverlay crumblingOverlay) {
152+
collector.submitCustomGeometry(transform, renderType, (pose, buffer) -> render(pose, buffer, tints, light, overlay));
153+
154+
if (crumblingOverlay != null && renderType.affectsCrumbling()) {
155+
collector.submitCustomGeometry(transform, ModelBakery.DESTROY_TYPES.get(crumblingOverlay.progress()), (pose, buffer) ->
156+
// FIXME: This does not work. Should we have a custom hook for this instead?
157+
render(pose, new SheetedDecalTextureGenerator(buffer, crumblingOverlay.cameraPose(), 1.0f), tints, light, overlay)
158+
);
159+
}
160+
}
161+
162+
private void render(PoseStack.Pose pose, VertexConsumer buffer, int @Nullable [] tints, int light, int overlay) {
150163
for (var quad : quads) {
151164
float r, g, b, a;
152165
var idx = quad.tintIndex();

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

Lines changed: 0 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -4,16 +4,13 @@
44

55
package dan200.computercraft.api.client.turtle;
66

7-
import com.mojang.blaze3d.vertex.PoseStack;
87
import com.mojang.serialization.MapCodec;
98
import com.mojang.serialization.codecs.RecordCodecBuilder;
109
import dan200.computercraft.api.ComputerCraftAPI;
1110
import dan200.computercraft.api.client.StandaloneModel;
12-
import dan200.computercraft.api.turtle.ITurtleAccess;
1311
import dan200.computercraft.api.turtle.ITurtleUpgrade;
1412
import dan200.computercraft.api.turtle.TurtleSide;
1513
import dan200.computercraft.api.upgrades.UpgradeData;
16-
import net.minecraft.client.renderer.MultiBufferSource;
1714
import net.minecraft.client.renderer.block.model.ItemTransform;
1815
import net.minecraft.client.renderer.item.BlockModelWrapper;
1916
import net.minecraft.client.renderer.item.ItemModelResolver;
@@ -70,11 +67,6 @@ public void renderForItem(UpgradeData<ITurtleUpgrade> upgrade, TurtleSide side,
7067
getModel(side).setupItemLayer(layer);
7168
}
7269

73-
@Override
74-
public void renderForLevel(UpgradeData<ITurtleUpgrade> upgrade, TurtleSide side, ITurtleAccess turtle, PoseStack transform, MultiBufferSource buffers, int light, int overlay) {
75-
getModel(side).render(transform, buffers, light, overlay);
76-
}
77-
7870
private record Unbaked(ResourceLocation left, ResourceLocation right) implements TurtleUpgradeModel.Unbaked {
7971
@Override
8072
public MapCodec<? extends TurtleUpgradeModel.Unbaked> type() {

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

Lines changed: 5 additions & 17 deletions
Original file line numberDiff line numberDiff line change
@@ -9,12 +9,10 @@
99
import com.mojang.math.Transformation;
1010
import com.mojang.serialization.MapCodec;
1111
import dan200.computercraft.api.ComputerCraftAPI;
12-
import dan200.computercraft.api.turtle.ITurtleAccess;
1312
import dan200.computercraft.api.turtle.ITurtleUpgrade;
1413
import dan200.computercraft.api.turtle.TurtleSide;
1514
import dan200.computercraft.api.upgrades.UpgradeData;
16-
import net.minecraft.client.Minecraft;
17-
import net.minecraft.client.renderer.MultiBufferSource;
15+
import net.minecraft.client.renderer.SubmitNodeCollector;
1816
import net.minecraft.client.renderer.block.model.ItemTransform;
1917
import net.minecraft.client.renderer.item.ItemModelResolver;
2018
import net.minecraft.client.renderer.item.ItemStackRenderState;
@@ -23,7 +21,6 @@
2321
import net.minecraft.client.resources.model.ModelBaker;
2422
import net.minecraft.core.component.DataComponentPatch;
2523
import net.minecraft.resources.ResourceLocation;
26-
import net.minecraft.util.Mth;
2724
import net.minecraft.world.item.ItemDisplayContext;
2825
import net.minecraft.world.item.ItemStack;
2926
import org.joml.Matrix4f;
@@ -77,15 +74,6 @@ public void renderForItem(UpgradeData<ITurtleUpgrade> upgrade, TurtleSide side,
7774
}
7875
}
7976

80-
@Override
81-
public void renderForLevel(UpgradeData<ITurtleUpgrade> upgrade, TurtleSide side, ITurtleAccess turtle, PoseStack transform, MultiBufferSource buffers, int light, int overlay) {
82-
transform.mulPose(getRenderer(side).transform().getMatrix());
83-
transform.mulPose(Axis.YP.rotation(Mth.PI));
84-
Minecraft.getInstance().getItemRenderer().renderStatic(
85-
upgrade.getUpgradeItem(), ItemDisplayContext.FIXED, light, overlay, transform, buffers, turtle.getLevel(), 0
86-
);
87-
}
88-
8977
private static final class Unbaked implements TurtleUpgradeModel.Unbaked {
9078
@Override
9179
public MapCodec<? extends TurtleUpgradeModel.Unbaked> type() {
@@ -120,14 +108,14 @@ private static TransformedRenderer getRenderer(TurtleSide side) {
120108

121109
private record TransformedRenderer(Transformation transform) implements SpecialModelRenderer<ItemStackRenderState> {
122110
@Override
123-
public void render(
124-
@Nullable ItemStackRenderState state, ItemDisplayContext itemDisplayContext, PoseStack poseStack,
125-
MultiBufferSource multiBufferSource, int overlay, int light, boolean bl
111+
public void submit(
112+
@Nullable ItemStackRenderState state, ItemDisplayContext context, PoseStack poseStack, SubmitNodeCollector sink,
113+
int light, int overlay, boolean foil, int outlineColour
126114
) {
127115
if (state == null) return;
128116
poseStack.pushPose();
129117
poseStack.mulPose(transform.getMatrix());
130-
state.render(poseStack, multiBufferSource, overlay, light);
118+
state.submit(poseStack, sink, light, overlay, outlineColour);
131119
poseStack.popPose();
132120
}
133121

0 commit comments

Comments
 (0)