2025 and baritone cant use accesswideners

This commit is contained in:
rfresh2
2025-04-04 14:45:30 -07:00
parent 0120256fb1
commit 42015d4a7f
10 changed files with 187 additions and 84 deletions

View File

@@ -111,9 +111,6 @@ allprojects {
unimined.minecraft {
runs.off = true
defaultRemapJar = false
accessWidener {
accessWidener(file("src/launch/resources/baritone.accesswidener"))
}
}
archivesBaseName = archivesBaseName + "-common"

View File

@@ -27,7 +27,6 @@ archivesBaseName = archivesBaseName + "-fabric"
unimined.minecraft {
fabric {
loader project.fabric_version
accessWidener(file("../src/launch/resources/baritone.accesswidener"))
}
}

View File

@@ -23,8 +23,6 @@
"mixins": [
"mixins.baritone.json"
],
"accessWidener": "baritone.accesswidener",
"depends": {
"fabricloader": ">=0.14.22",
"minecraft": ["1.21.5"]

View File

@@ -21,8 +21,6 @@
-dontwarn baritone.launch.BaritoneForgeModXD
# progard doesn't like signature polymorphism
-dontwarn java.lang.invoke.MethodHandle
# todo: fix IRenderer accesswidener'd members
-dontwarn **
# please do not change the comment below
-keep class baritone.api.** { *; } # this is the keep api

View File

@@ -0,0 +1,35 @@
/*
* This file is part of Baritone.
*
* Baritone is free software: you can redistribute it and/or modify
* it under the terms of the GNU Lesser General Public License as published by
* the Free Software Foundation, either version 3 of the License, or
* (at your option) any later version.
*
* Baritone is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU Lesser General Public License for more details.
*
* You should have received a copy of the GNU Lesser General Public License
* along with Baritone. If not, see <https://www.gnu.org/licenses/>.
*/
package baritone.launch.mixins;
import baritone.utils.accessor.IRenderPipelines;
import com.mojang.blaze3d.pipeline.RenderPipeline;
import net.minecraft.client.renderer.RenderPipelines;
import org.spongepowered.asm.mixin.Final;
import org.spongepowered.asm.mixin.Mixin;
import org.spongepowered.asm.mixin.Shadow;
@Mixin(RenderPipelines.class)
public class MixinRenderPipelines implements IRenderPipelines {
@Final @Shadow
private static RenderPipeline.Snippet LINES_SNIPPET;
public RenderPipeline.Snippet getLinesSnippet() {
return LINES_SNIPPET;
}
}

View File

@@ -1,67 +0,0 @@
accessWidener v2 named
transitive-accessible method net/minecraft/client/renderer/RenderType create (Ljava/lang/String;ILcom/mojang/blaze3d/pipeline/RenderPipeline;Lnet/minecraft/client/renderer/RenderType$CompositeState;)Lnet/minecraft/client/renderer/RenderType$CompositeRenderType;
transitive-accessible method net/minecraft/client/renderer/RenderType create (Ljava/lang/String;IZZLcom/mojang/blaze3d/pipeline/RenderPipeline;Lnet/minecraft/client/renderer/RenderType$CompositeState;)Lnet/minecraft/client/renderer/RenderType$CompositeRenderType;
transitive-accessible class net/minecraft/client/renderer/RenderType$CompositeRenderType
transitive-accessible class net/minecraft/client/renderer/RenderType$CompositeState
transitive-accessible class net/minecraft/client/renderer/RenderType$OutlineProperty
transitive-accessible field net/minecraft/client/renderer/RenderStateShard BLOCK_SHEET_MIPPED Lnet/minecraft/client/renderer/RenderStateShard$TextureStateShard;
transitive-accessible field net/minecraft/client/renderer/RenderStateShard BLOCK_SHEET Lnet/minecraft/client/renderer/RenderStateShard$TextureStateShard;
transitive-accessible field net/minecraft/client/renderer/RenderStateShard NO_TEXTURE Lnet/minecraft/client/renderer/RenderStateShard$EmptyTextureStateShard;
transitive-accessible field net/minecraft/client/renderer/RenderStateShard DEFAULT_TEXTURING Lnet/minecraft/client/renderer/RenderStateShard$TexturingStateShard;
transitive-accessible field net/minecraft/client/renderer/RenderStateShard GLINT_TEXTURING Lnet/minecraft/client/renderer/RenderStateShard$TexturingStateShard;
transitive-accessible field net/minecraft/client/renderer/RenderStateShard ENTITY_GLINT_TEXTURING Lnet/minecraft/client/renderer/RenderStateShard$TexturingStateShard;
transitive-accessible field net/minecraft/client/renderer/RenderStateShard ARMOR_ENTITY_GLINT_TEXTURING Lnet/minecraft/client/renderer/RenderStateShard$TexturingStateShard;
transitive-accessible field net/minecraft/client/renderer/RenderStateShard LIGHTMAP Lnet/minecraft/client/renderer/RenderStateShard$LightmapStateShard;
transitive-accessible field net/minecraft/client/renderer/RenderStateShard NO_LIGHTMAP Lnet/minecraft/client/renderer/RenderStateShard$LightmapStateShard;
transitive-accessible field net/minecraft/client/renderer/RenderStateShard OVERLAY Lnet/minecraft/client/renderer/RenderStateShard$OverlayStateShard;
transitive-accessible field net/minecraft/client/renderer/RenderStateShard NO_OVERLAY Lnet/minecraft/client/renderer/RenderStateShard$OverlayStateShard;
transitive-accessible field net/minecraft/client/renderer/RenderStateShard NO_LAYERING Lnet/minecraft/client/renderer/RenderStateShard$LayeringStateShard;
transitive-accessible field net/minecraft/client/renderer/RenderStateShard VIEW_OFFSET_Z_LAYERING Lnet/minecraft/client/renderer/RenderStateShard$LayeringStateShard;
transitive-accessible field net/minecraft/client/renderer/RenderStateShard VIEW_OFFSET_Z_LAYERING_FORWARD Lnet/minecraft/client/renderer/RenderStateShard$LayeringStateShard;
transitive-accessible field net/minecraft/client/renderer/RenderStateShard MAIN_TARGET Lnet/minecraft/client/renderer/RenderStateShard$OutputStateShard;
transitive-accessible field net/minecraft/client/renderer/RenderStateShard OUTLINE_TARGET Lnet/minecraft/client/renderer/RenderStateShard$OutputStateShard;
transitive-accessible field net/minecraft/client/renderer/RenderStateShard TRANSLUCENT_TARGET Lnet/minecraft/client/renderer/RenderStateShard$OutputStateShard;
transitive-accessible field net/minecraft/client/renderer/RenderStateShard PARTICLES_TARGET Lnet/minecraft/client/renderer/RenderStateShard$OutputStateShard;
transitive-accessible field net/minecraft/client/renderer/RenderStateShard WEATHER_TARGET Lnet/minecraft/client/renderer/RenderStateShard$OutputStateShard;
transitive-accessible field net/minecraft/client/renderer/RenderStateShard ITEM_ENTITY_TARGET Lnet/minecraft/client/renderer/RenderStateShard$OutputStateShard;
transitive-accessible field net/minecraft/client/renderer/RenderStateShard DEFAULT_LINE Lnet/minecraft/client/renderer/RenderStateShard$LineStateShard;
transitive-accessible class net/minecraft/client/renderer/RenderStateShard$TextureStateShard
transitive-accessible class net/minecraft/client/renderer/RenderStateShard$EmptyTextureStateShard
transitive-accessible class net/minecraft/client/renderer/RenderStateShard$TexturingStateShard
transitive-accessible class net/minecraft/client/renderer/RenderStateShard$LightmapStateShard
transitive-accessible class net/minecraft/client/renderer/RenderStateShard$OverlayStateShard
transitive-accessible class net/minecraft/client/renderer/RenderStateShard$LayeringStateShard
transitive-accessible class net/minecraft/client/renderer/RenderStateShard$OutputStateShard
transitive-accessible class net/minecraft/client/renderer/RenderStateShard$LineStateShard
transitive-accessible class net/minecraft/client/renderer/RenderStateShard$OffsetTexturingStateShard
transitive-accessible class net/minecraft/client/renderer/RenderStateShard$MultiTextureStateShard
transitive-accessible method net/minecraft/client/renderer/RenderType$CompositeState$CompositeStateBuilder setTextureState (Lnet/minecraft/client/renderer/RenderStateShard$EmptyTextureStateShard;)Lnet/minecraft/client/renderer/RenderType$CompositeState$CompositeStateBuilder;
transitive-accessible method net/minecraft/client/renderer/RenderType$CompositeState$CompositeStateBuilder setLightmapState (Lnet/minecraft/client/renderer/RenderStateShard$LightmapStateShard;)Lnet/minecraft/client/renderer/RenderType$CompositeState$CompositeStateBuilder;
transitive-accessible method net/minecraft/client/renderer/RenderType$CompositeState$CompositeStateBuilder setOverlayState (Lnet/minecraft/client/renderer/RenderStateShard$OverlayStateShard;)Lnet/minecraft/client/renderer/RenderType$CompositeState$CompositeStateBuilder;
transitive-accessible method net/minecraft/client/renderer/RenderType$CompositeState$CompositeStateBuilder setLayeringState (Lnet/minecraft/client/renderer/RenderStateShard$LayeringStateShard;)Lnet/minecraft/client/renderer/RenderType$CompositeState$CompositeStateBuilder;
transitive-accessible method net/minecraft/client/renderer/RenderType$CompositeState$CompositeStateBuilder setOutputState (Lnet/minecraft/client/renderer/RenderStateShard$OutputStateShard;)Lnet/minecraft/client/renderer/RenderType$CompositeState$CompositeStateBuilder;
transitive-accessible method net/minecraft/client/renderer/RenderType$CompositeState$CompositeStateBuilder setTexturingState (Lnet/minecraft/client/renderer/RenderStateShard$TexturingStateShard;)Lnet/minecraft/client/renderer/RenderType$CompositeState$CompositeStateBuilder;
transitive-accessible method net/minecraft/client/renderer/RenderType$CompositeState$CompositeStateBuilder setLineState (Lnet/minecraft/client/renderer/RenderStateShard$LineStateShard;)Lnet/minecraft/client/renderer/RenderType$CompositeState$CompositeStateBuilder;
transitive-accessible method net/minecraft/client/renderer/RenderType$CompositeState$CompositeStateBuilder createCompositeState (Z)Lnet/minecraft/client/renderer/RenderType$CompositeState;
transitive-accessible method net/minecraft/client/renderer/RenderType$CompositeState$CompositeStateBuilder createCompositeState (Lnet/minecraft/client/renderer/RenderType$OutlineProperty;)Lnet/minecraft/client/renderer/RenderType$CompositeState;
transitive-accessible field net/minecraft/client/renderer/RenderPipelines MATRICES_SNIPPET Lcom/mojang/blaze3d/pipeline/RenderPipeline$Snippet;
transitive-accessible field net/minecraft/client/renderer/RenderPipelines FOG_NO_COLOR_SNIPPET Lcom/mojang/blaze3d/pipeline/RenderPipeline$Snippet;
transitive-accessible field net/minecraft/client/renderer/RenderPipelines FOG_SNIPPET Lcom/mojang/blaze3d/pipeline/RenderPipeline$Snippet;
transitive-accessible field net/minecraft/client/renderer/RenderPipelines MATRICES_COLOR_SNIPPET Lcom/mojang/blaze3d/pipeline/RenderPipeline$Snippet;
transitive-accessible field net/minecraft/client/renderer/RenderPipelines MATRICES_COLOR_FOG_SNIPPET Lcom/mojang/blaze3d/pipeline/RenderPipeline$Snippet;
transitive-accessible field net/minecraft/client/renderer/RenderPipelines MATRICES_COLOR_FOG_OFFSET_SNIPPET Lcom/mojang/blaze3d/pipeline/RenderPipeline$Snippet;
transitive-accessible field net/minecraft/client/renderer/RenderPipelines MATRICES_COLOR_FOG_LIGHT_DIR_SNIPPET Lcom/mojang/blaze3d/pipeline/RenderPipeline$Snippet;
transitive-accessible field net/minecraft/client/renderer/RenderPipelines TERRAIN_SNIPPET Lcom/mojang/blaze3d/pipeline/RenderPipeline$Snippet;
transitive-accessible field net/minecraft/client/renderer/RenderPipelines ENTITY_SNIPPET Lcom/mojang/blaze3d/pipeline/RenderPipeline$Snippet;
transitive-accessible field net/minecraft/client/renderer/RenderPipelines BEACON_BEAM_SNIPPET Lcom/mojang/blaze3d/pipeline/RenderPipeline$Snippet;
transitive-accessible field net/minecraft/client/renderer/RenderPipelines TEXT_SNIPPET Lcom/mojang/blaze3d/pipeline/RenderPipeline$Snippet;
transitive-accessible field net/minecraft/client/renderer/RenderPipelines END_PORTAL_SNIPPET Lcom/mojang/blaze3d/pipeline/RenderPipeline$Snippet;
transitive-accessible field net/minecraft/client/renderer/RenderPipelines CLOUDS_SNIPPET Lcom/mojang/blaze3d/pipeline/RenderPipeline$Snippet;
transitive-accessible field net/minecraft/client/renderer/RenderPipelines LINES_SNIPPET Lcom/mojang/blaze3d/pipeline/RenderPipeline$Snippet;
transitive-accessible field net/minecraft/client/renderer/RenderPipelines DEBUG_FILLED_SNIPPET Lcom/mojang/blaze3d/pipeline/RenderPipeline$Snippet;
transitive-accessible field net/minecraft/client/renderer/RenderPipelines PARTICLE_SNIPPET Lcom/mojang/blaze3d/pipeline/RenderPipeline$Snippet;
transitive-accessible field net/minecraft/client/renderer/RenderPipelines WEATHER_SNIPPET Lcom/mojang/blaze3d/pipeline/RenderPipeline$Snippet;
transitive-accessible field net/minecraft/client/renderer/RenderPipelines GUI_SNIPPET Lcom/mojang/blaze3d/pipeline/RenderPipeline$Snippet;
transitive-accessible field net/minecraft/client/renderer/RenderPipelines GUI_TEXTURED_SNIPPET Lcom/mojang/blaze3d/pipeline/RenderPipeline$Snippet;
transitive-accessible field net/minecraft/client/renderer/RenderPipelines OUTLINE_SNIPPET Lcom/mojang/blaze3d/pipeline/RenderPipeline$Snippet;
transitive-accessible method net/minecraft/client/renderer/RenderPipelines register (Lcom/mojang/blaze3d/pipeline/RenderPipeline;)Lcom/mojang/blaze3d/pipeline/RenderPipeline;

View File

@@ -25,6 +25,7 @@
"MixinPalettedContainer",
"MixinPalettedContainer$Data",
"MixinPlayerController",
"MixinRenderPipelines",
"MixinScreen",
"MixinWorldRenderer"
],

View File

@@ -0,0 +1,121 @@
/*
* This file is part of Baritone.
*
* Baritone is free software: you can redistribute it and/or modify
* it under the terms of the GNU Lesser General Public License as published by
* the Free Software Foundation, either version 3 of the License, or
* (at your option) any later version.
*
* Baritone is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU Lesser General Public License for more details.
*
* You should have received a copy of the GNU Lesser General Public License
* along with Baritone. If not, see <https://www.gnu.org/licenses/>.
*/
package baritone.utils;
import com.mojang.blaze3d.buffers.GpuBuffer;
import com.mojang.blaze3d.pipeline.RenderPipeline;
import com.mojang.blaze3d.pipeline.RenderTarget;
import com.mojang.blaze3d.systems.RenderPass;
import com.mojang.blaze3d.systems.RenderSystem;
import com.mojang.blaze3d.textures.GpuTexture;
import com.mojang.blaze3d.vertex.MeshData;
import com.mojang.blaze3d.vertex.VertexFormat;
import net.minecraft.client.renderer.RenderStateShard;
import net.minecraft.client.renderer.RenderType;
import java.util.OptionalDouble;
import java.util.OptionalInt;
public class BaritoneRenderType extends RenderType {
private final RenderPipeline renderPipeline;
public BaritoneRenderType(String name, int bufferSize, boolean affectsCrumbling, boolean sortOnUpload, RenderPipeline renderPipeline) {
super(name, bufferSize, affectsCrumbling, sortOnUpload, () -> {}, () -> {});
this.renderPipeline = renderPipeline;
}
public static BaritoneRenderType create(String name, int bufferSize, RenderPipeline renderPipeline) {
return new BaritoneRenderType(name, bufferSize, false, false, renderPipeline);
}
@Override
public RenderPipeline getRenderPipeline() {
return this.renderPipeline;
}
@Override
public VertexFormat format() {
return this.renderPipeline.getVertexFormat();
}
@Override
public VertexFormat.Mode mode() {
return this.renderPipeline.getVertexFormatMode();
}
@Override
public void draw(final MeshData meshData) {
RenderPipeline renderPipeline = this.getRenderPipeline();
this.setupRenderState();
try {
GpuBuffer gpuBuffer = renderPipeline.getVertexFormat().uploadImmediateVertexBuffer(meshData.vertexBuffer());
GpuBuffer gpuBuffer2;
VertexFormat.IndexType indexType;
if (meshData.indexBuffer() == null) {
RenderSystem.AutoStorageIndexBuffer autoStorageIndexBuffer = RenderSystem.getSequentialBuffer(meshData.drawState().mode());
gpuBuffer2 = autoStorageIndexBuffer.getBuffer(meshData.drawState().indexCount());
indexType = autoStorageIndexBuffer.type();
} else {
gpuBuffer2 = renderPipeline.getVertexFormat().uploadImmediateIndexBuffer(meshData.indexBuffer());
indexType = meshData.drawState().indexType();
}
RenderTarget renderTarget = getRenderTarget();
try (RenderPass renderPass = RenderSystem.getDevice().createCommandEncoder().createRenderPass(
renderTarget.getColorTexture(),
OptionalInt.empty(),
renderTarget.useDepth ? renderTarget.getDepthTexture() : null,
OptionalDouble.empty())
) {
renderPass.setPipeline(renderPipeline);
renderPass.setVertexBuffer(0, gpuBuffer);
if (RenderSystem.SCISSOR_STATE.isEnabled()) {
renderPass.enableScissor(RenderSystem.SCISSOR_STATE);
}
for(int i = 0; i < 12; ++i) {
GpuTexture gpuTexture = RenderSystem.getShaderTexture(i);
if (gpuTexture != null) {
renderPass.bindSampler("Sampler" + i, gpuTexture);
}
}
renderPass.setIndexBuffer(gpuBuffer2, indexType);
renderPass.drawIndexed(0, meshData.drawState().indexCount());
}
} catch (Throwable e) {
try {
meshData.close();
} catch (Throwable e2) {
e.addSuppressed(e2);
}
throw e;
}
meshData.close();
this.clearRenderState();
}
@Override
public RenderTarget getRenderTarget() {
return RenderStateShard.MAIN_TARGET.getRenderTarget();
}
}

View File

@@ -20,6 +20,7 @@ package baritone.utils;
import baritone.api.BaritoneAPI;
import baritone.api.Settings;
import baritone.utils.accessor.IEntityRenderManager;
import baritone.utils.accessor.IRenderPipelines;
import com.mojang.blaze3d.pipeline.BlendFunction;
import com.mojang.blaze3d.pipeline.RenderPipeline;
import com.mojang.blaze3d.platform.DepthTestFunction;
@@ -40,7 +41,7 @@ public interface IRenderer {
Tesselator tessellator = Tesselator.getInstance();
IEntityRenderManager renderManager = (IEntityRenderManager) Minecraft.getInstance().getEntityRenderDispatcher();
Settings settings = BaritoneAPI.getSettings();
RenderPipeline.Snippet BARITONE_LINES_SNIPPET = RenderPipeline.builder(RenderPipelines.LINES_SNIPPET)
RenderPipeline.Snippet BARITONE_LINES_SNIPPET = RenderPipeline.builder(((IRenderPipelines) new RenderPipelines()).getLinesSnippet())
.withBlend(new BlendFunction(
SourceFactor.SRC_ALPHA,
DestFactor.ONE_MINUS_SRC_ALPHA,
@@ -50,25 +51,21 @@ public interface IRenderer {
.withDepthWrite(false)
.withCull(false)
.buildSnippet();
RenderType linesWithDepthRenderType = RenderType.create(
RenderType linesWithDepthRenderType = BaritoneRenderType.create(
"renderType/baritone_lines_with_depth",
256,
RenderPipeline.builder(BARITONE_LINES_SNIPPET)
.withLocation("pipelines/baritone_lines_with_depth")
.withDepthTestFunction(DepthTestFunction.LEQUAL_DEPTH_TEST)
.build(),
RenderType.CompositeState.builder()
.createCompositeState(false)
.build()
);
RenderType linesNoDepthRenderType = RenderType.create(
RenderType linesNoDepthRenderType = BaritoneRenderType.create(
"renderType/baritone_lines_no_depth",
256,
RenderPipeline.builder(BARITONE_LINES_SNIPPET)
.withLocation("pipelines/baritone_lines_no_depth")
.withDepthTestFunction(DepthTestFunction.NO_DEPTH_TEST)
.build(),
RenderType.CompositeState.builder()
.createCompositeState(false)
.build()
);
float[] color = new float[]{1.0F, 1.0F, 1.0F, 255.0F};

View File

@@ -0,0 +1,24 @@
/*
* This file is part of Baritone.
*
* Baritone is free software: you can redistribute it and/or modify
* it under the terms of the GNU Lesser General Public License as published by
* the Free Software Foundation, either version 3 of the License, or
* (at your option) any later version.
*
* Baritone is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU Lesser General Public License for more details.
*
* You should have received a copy of the GNU Lesser General Public License
* along with Baritone. If not, see <https://www.gnu.org/licenses/>.
*/
package baritone.utils.accessor;
import com.mojang.blaze3d.pipeline.RenderPipeline;
public interface IRenderPipelines {
RenderPipeline.Snippet getLinesSnippet();
}