diff --git a/build.gradle b/build.gradle
index dcfa89aad..8030b570d 100755
--- a/build.gradle
+++ b/build.gradle
@@ -111,9 +111,6 @@ allprojects {
unimined.minecraft {
runs.off = true
defaultRemapJar = false
- accessWidener {
- accessWidener(file("src/launch/resources/baritone.accesswidener"))
- }
}
archivesBaseName = archivesBaseName + "-common"
diff --git a/fabric/build.gradle b/fabric/build.gradle
index f3681442f..c607dbab2 100644
--- a/fabric/build.gradle
+++ b/fabric/build.gradle
@@ -27,7 +27,6 @@ archivesBaseName = archivesBaseName + "-fabric"
unimined.minecraft {
fabric {
loader project.fabric_version
- accessWidener(file("../src/launch/resources/baritone.accesswidener"))
}
}
diff --git a/fabric/src/main/resources/fabric.mod.json b/fabric/src/main/resources/fabric.mod.json
index 5ccee7fad..4dda3aa76 100644
--- a/fabric/src/main/resources/fabric.mod.json
+++ b/fabric/src/main/resources/fabric.mod.json
@@ -23,8 +23,6 @@
"mixins": [
"mixins.baritone.json"
],
- "accessWidener": "baritone.accesswidener",
-
"depends": {
"fabricloader": ">=0.14.22",
"minecraft": ["1.21.5"]
diff --git a/scripts/proguard.pro b/scripts/proguard.pro
index aee51fb0c..627fb5f53 100644
--- a/scripts/proguard.pro
+++ b/scripts/proguard.pro
@@ -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
diff --git a/src/launch/java/baritone/launch/mixins/MixinRenderPipelines.java b/src/launch/java/baritone/launch/mixins/MixinRenderPipelines.java
new file mode 100644
index 000000000..756d73001
--- /dev/null
+++ b/src/launch/java/baritone/launch/mixins/MixinRenderPipelines.java
@@ -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 .
+ */
+
+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;
+ }
+}
diff --git a/src/launch/resources/baritone.accesswidener b/src/launch/resources/baritone.accesswidener
deleted file mode 100644
index eb4a44e11..000000000
--- a/src/launch/resources/baritone.accesswidener
+++ /dev/null
@@ -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;
diff --git a/src/launch/resources/mixins.baritone.json b/src/launch/resources/mixins.baritone.json
index 9d526addc..0b845f3a0 100644
--- a/src/launch/resources/mixins.baritone.json
+++ b/src/launch/resources/mixins.baritone.json
@@ -25,6 +25,7 @@
"MixinPalettedContainer",
"MixinPalettedContainer$Data",
"MixinPlayerController",
+ "MixinRenderPipelines",
"MixinScreen",
"MixinWorldRenderer"
],
diff --git a/src/main/java/baritone/utils/BaritoneRenderType.java b/src/main/java/baritone/utils/BaritoneRenderType.java
new file mode 100644
index 000000000..a572a7166
--- /dev/null
+++ b/src/main/java/baritone/utils/BaritoneRenderType.java
@@ -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 .
+ */
+
+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();
+ }
+}
diff --git a/src/main/java/baritone/utils/IRenderer.java b/src/main/java/baritone/utils/IRenderer.java
index 1533563d6..0cadb37f1 100644
--- a/src/main/java/baritone/utils/IRenderer.java
+++ b/src/main/java/baritone/utils/IRenderer.java
@@ -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};
diff --git a/src/main/java/baritone/utils/accessor/IRenderPipelines.java b/src/main/java/baritone/utils/accessor/IRenderPipelines.java
new file mode 100644
index 000000000..8dca8292f
--- /dev/null
+++ b/src/main/java/baritone/utils/accessor/IRenderPipelines.java
@@ -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 .
+ */
+
+package baritone.utils.accessor;
+
+import com.mojang.blaze3d.pipeline.RenderPipeline;
+
+public interface IRenderPipelines {
+ RenderPipeline.Snippet getLinesSnippet();
+}