Skip to content

Commit 9ce1783

Browse files
committed
Very much still a WIP, and I may try to move things out of using RenderContext for the OverlayRenderer system yet, as per Masa.
1 parent 5a651cf commit 9ce1783

33 files changed

+1020
-666
lines changed

gradle.properties

+2-2
Original file line numberDiff line numberDiff line change
@@ -12,12 +12,12 @@ mod_file_name = minihud-fabric
1212
mod_version = 0.34.999-dev
1313

1414
# Required malilib version
15-
malilib_version = 7a21679ab0
15+
malilib_version = aacbff698d
1616

1717
# Minecraft, Fabric Loader and API and mappings versions
1818
minecraft_version_out = 25w10a
1919
minecraft_version = 25w10a
20-
mappings_version = 25w10a+build.3
20+
mappings_version = 25w10a+build.4
2121

2222
fabric_loader_version = 0.16.10
2323
mod_menu_version = 14.0.0-beta.1

src/main/java/fi/dy/masa/minihud/InitHandler.java

+1-1
Original file line numberDiff line numberDiff line change
@@ -47,7 +47,7 @@ public void registerModHandlers()
4747

4848
TickHandler.getInstance().registerClientTickHandler(new ClientTickHandler());
4949
TickHandler.getInstance().registerClientTickHandler(EntitiesDataManager.getInstance());
50-
TickHandler.getInstance().registerClientTickHandler(OverlayRendererVillagerInfo.getInstance());
50+
TickHandler.getInstance().registerClientTickHandler(OverlayRendererVillagerInfo.INSTANCE);
5151

5252
KeyCallbacks.init();
5353
}

src/main/java/fi/dy/masa/minihud/config/RendererCallbacks.java

+9-9
Original file line numberDiff line numberDiff line change
@@ -52,7 +52,7 @@ public static void onLightLevelToggled(IConfigBoolean config)
5252
{
5353
if (config.getBooleanValue())
5454
{
55-
OverlayRendererLightLevel.setNeedsUpdate();
55+
OverlayRendererLightLevel.INSTANCE.setNeedsUpdate();
5656
}
5757
}
5858

@@ -63,7 +63,7 @@ public static void onRandomTicksFixedToggled(IConfigBoolean config)
6363
if (config.getBooleanValue() && entity != null)
6464
{
6565
Vec3d pos = entity.getPos();
66-
OverlayRendererRandomTickableChunks.newPos = pos;
66+
OverlayRendererRandomTickableChunks.INSTANCE_FIXED.setNewPos(pos);
6767
String green = GuiBase.TXT_GREEN;
6868
String rst = GuiBase.TXT_RST;
6969
String strStatus = green + StringUtils.translate("malilib.message.value.on") + rst;
@@ -78,24 +78,24 @@ public static void onRandomTicksPlayerToggled(IConfigBoolean config)
7878
{
7979
if (config.getBooleanValue())
8080
{
81-
OverlayRendererRandomTickableChunks.setNeedsUpdate();
81+
OverlayRendererRandomTickableChunks.INSTANCE_PLAYER.setNeedsUpdate();
8282
}
8383
}
8484

8585
public static void onRegionFileToggled(IConfigBoolean config)
8686
{
8787
if (config.getBooleanValue())
8888
{
89-
OverlayRendererRegion.setNeedsUpdate();
89+
OverlayRendererRegion.INSTANCE.setNeedsUpdate();
9090
}
9191
}
9292

9393
public static void onSlimeChunksToggled(IConfigBoolean config)
9494
{
9595
if (config.getBooleanValue())
9696
{
97-
OverlayRendererSlimeChunks.setNeedsUpdate();
98-
OverlayRendererSlimeChunks.onEnabled();
97+
OverlayRendererSlimeChunks.INSTANCE.setNeedsUpdate();
98+
OverlayRendererSlimeChunks.INSTANCE.onEnabled();
9999
}
100100
}
101101

@@ -112,7 +112,7 @@ public static void onSpawnChunksPlayerToggled(IConfigBoolean config)
112112
message = StringUtils.translate("minihud.message.toggled_using_player_spawn", config.getPrettyName(), strStatus, strDist);
113113

114114
InfoUtils.printActionbarMessage(message);
115-
OverlayRendererSpawnChunks.setNeedsUpdate();
115+
OverlayRendererSpawnChunks.INSTANCE_PLAYER.setNeedsUpdate();
116116
}
117117
}
118118

@@ -148,12 +148,12 @@ public static void onSpawnChunksRealToggled(IConfigBoolean config)
148148
}
149149
else
150150
{
151-
OverlayRendererSpawnChunks.setNeedsUpdate();
151+
OverlayRendererSpawnChunks.INSTANCE_REAL.setNeedsUpdate();
152152
}
153153
}
154154
else
155155
{
156-
OverlayRendererSpawnChunks.setNeedsUpdate();
156+
OverlayRendererSpawnChunks.INSTANCE_REAL.setNeedsUpdate();
157157

158158
String strStatus = red + StringUtils.translate("malilib.message.value.off") + rst;
159159
String strPos = red + String.format("x: %d, y: %d, z: %d [R: 0]", spawn.getX(), spawn.getY(), spawn.getZ());

src/main/java/fi/dy/masa/minihud/data/HudDataManager.java

+6-6
Original file line numberDiff line numberDiff line change
@@ -211,7 +211,7 @@ public void setWorldSpawn(BlockPos spawn)
211211
{
212212
if (!this.worldSpawn.equals(spawn))
213213
{
214-
OverlayRendererSpawnChunks.setNeedsUpdate();
214+
OverlayRendererSpawnChunks.INSTANCE_REAL.setNeedsUpdate();
215215
MiniHUD.debugLog("HudDataStorage#setWorldSpawn(): set world spawn [{}] -> [{}]", this.worldSpawn.toShortString(), spawn.toShortString());
216216
}
217217
this.worldSpawn = spawn;
@@ -230,7 +230,7 @@ public void setSpawnChunkRadius(int radius, boolean message)
230230
InfoUtils.printActionbarMessage(StringUtils.translate("minihud.message.spawn_chunk_radius_set", strRadius));
231231
}
232232

233-
OverlayRendererSpawnChunks.setNeedsUpdate();
233+
OverlayRendererSpawnChunks.INSTANCE_REAL.setNeedsUpdate();
234234
MiniHUD.debugLog("HudDataStorage#setSpawnChunkRadius(): set spawn chunk radius [{}] -> [{}]", this.spawnChunkRadius, radius);
235235
}
236236
this.spawnChunkRadius = radius;
@@ -248,7 +248,7 @@ public void setWorldSpawnIfUnknown(BlockPos spawn)
248248
if (!this.worldSpawnValid)
249249
{
250250
this.setWorldSpawn(spawn);
251-
OverlayRendererSpawnChunks.setNeedsUpdate();
251+
OverlayRendererSpawnChunks.INSTANCE_REAL.setNeedsUpdate();
252252
}
253253
}
254254

@@ -257,7 +257,7 @@ public void setSpawnChunkRadiusIfUnknown(int radius)
257257
if (!this.spawnChunkRadiusValid)
258258
{
259259
this.setSpawnChunkRadius(radius, true);
260-
OverlayRendererSpawnChunks.setNeedsUpdate();
260+
OverlayRendererSpawnChunks.INSTANCE_REAL.setNeedsUpdate();
261261
}
262262
}
263263

@@ -683,7 +683,7 @@ public void receiveRecipeManager(NbtCompound data)
683683

684684
for (int i = 0; i < list.size(); i++)
685685
{
686-
NbtCompound item = list.getOrCreateCompound(i);
686+
NbtCompound item = list.getCompoundOrEmpty(i);
687687
Identifier idReg = Identifier.tryParse(item.getString("id_reg", ""));
688688
Identifier idValue = Identifier.tryParse(item.getString("id_value", ""));
689689

@@ -786,7 +786,7 @@ public void fromJson(JsonObject obj)
786786
{
787787
MiniHUD.LOGGER.warn("HudDataStorage#fromJson(): toggling feature OFF since SPAWN_CHUNK_RADIUS is set to 0");
788788
RendererToggle.OVERLAY_SPAWN_CHUNK_OVERLAY_REAL.setBooleanValue(false);
789-
OverlayRendererSpawnChunks.setNeedsUpdate();
789+
OverlayRendererSpawnChunks.INSTANCE_REAL.setNeedsUpdate();
790790
}
791791
}
792792
}

src/main/java/fi/dy/masa/minihud/event/InputHandler.java

+1-1
Original file line numberDiff line numberDiff line change
@@ -63,7 +63,7 @@ public boolean onMouseScroll(int mouseX, int mouseY, double dWheel)
6363
if (RendererToggle.OVERLAY_SLIME_CHUNKS_OVERLAY.getBooleanValue() &&
6464
RendererToggle.OVERLAY_SLIME_CHUNKS_OVERLAY.getKeybind().isKeybindHeld())
6565
{
66-
OverlayRendererSlimeChunks.overlayTopY += (dWheel < 0 ? 1 : -1);
66+
OverlayRendererSlimeChunks.INSTANCE.incrementOverlayTopY(dWheel < 0 ? 1 : -1);
6767
KeyCallbackAdjustable.setValueChanged();
6868
return true;
6969
}

src/main/java/fi/dy/masa/minihud/event/WorldLoadListener.java

+1-1
Original file line numberDiff line numberDiff line change
@@ -56,7 +56,7 @@ public void onWorldLoadPost(@Nullable ClientWorld worldBefore, @Nullable ClientW
5656
DataStorage.getInstance().reset(worldAfter == null);
5757
HudDataManager.getInstance().reset(worldAfter == null);
5858
EntitiesDataManager.getInstance().reset(worldAfter == null);
59-
OverlayRendererVillagerInfo.getInstance().reset(worldAfter == null);
59+
OverlayRendererVillagerInfo.INSTANCE.reset(worldAfter == null);
6060
DebugDataManager.getInstance().reset(worldAfter == null);
6161

6262
// Logging in to a world or changing dimensions or respawning

src/main/java/fi/dy/masa/minihud/hotkeys/KeyCallbacks.java

+13-13
Original file line numberDiff line numberDiff line change
@@ -41,24 +41,24 @@ public static void init()
4141
Configs.Colors.BEACON_RANGE_LVL4_OVERLAY_COLOR.setValueChangeCallback((config) -> updateBeaconOverlay());
4242
Configs.Colors.CONDUIT_RANGE_OVERLAY_COLOR.setValueChangeCallback(cfg -> OverlayRendererBeaconRange.INSTANCE.setNeedsUpdate());
4343

44-
Configs.Generic.LIGHT_LEVEL_RANGE.setValueChangeCallback((config) -> OverlayRendererLightLevel.setNeedsUpdate());
44+
Configs.Generic.LIGHT_LEVEL_RANGE.setValueChangeCallback((config) -> OverlayRendererLightLevel.INSTANCE.setNeedsUpdate());
4545
Configs.Generic.LIGHT_LEVEL_RENDER_THROUGH.setValueChangeCallback((config) -> OverlayRendererLightLevel.INSTANCE.setRenderThrough(config.getBooleanValue()));
4646
Configs.Generic.STRUCTURES_RENDER_THROUGH.setValueChangeCallback((config) -> OverlayRendererStructures.INSTANCE.setRenderThrough(config.getBooleanValue()));
4747

48-
Configs.Generic.SPAWN_PLAYER_OUTER_OVERLAY_ENABLED.setValueChangeCallback((config) -> OverlayRendererSpawnChunks.setNeedsUpdate());
49-
Configs.Generic.SPAWN_PLAYER_REDSTONE_OVERLAY_ENABLED.setValueChangeCallback((config) -> OverlayRendererSpawnChunks.setNeedsUpdate());
50-
Configs.Generic.SPAWN_REAL_OUTER_OVERLAY_ENABLED.setValueChangeCallback((config) -> OverlayRendererSpawnChunks.setNeedsUpdate());
51-
Configs.Generic.SPAWN_REAL_REDSTONE_OVERLAY_ENABLED.setValueChangeCallback((config) -> OverlayRendererSpawnChunks.setNeedsUpdate());
48+
Configs.Generic.SPAWN_PLAYER_OUTER_OVERLAY_ENABLED.setValueChangeCallback((config) -> OverlayRendererSpawnChunks.INSTANCE_PLAYER.setNeedsUpdate());
49+
Configs.Generic.SPAWN_PLAYER_REDSTONE_OVERLAY_ENABLED.setValueChangeCallback((config) -> OverlayRendererSpawnChunks.INSTANCE_PLAYER.setNeedsUpdate());
50+
Configs.Generic.SPAWN_REAL_OUTER_OVERLAY_ENABLED.setValueChangeCallback((config) -> OverlayRendererSpawnChunks.INSTANCE_REAL.setNeedsUpdate());
51+
Configs.Generic.SPAWN_REAL_REDSTONE_OVERLAY_ENABLED.setValueChangeCallback((config) -> OverlayRendererSpawnChunks.INSTANCE_REAL.setNeedsUpdate());
5252

53-
Configs.Colors.SPAWN_PLAYER_ENTITY_OVERLAY_COLOR.setValueChangeCallback((config) -> OverlayRendererSpawnChunks.setNeedsUpdate());
54-
Configs.Colors.SPAWN_PLAYER_REDSTONE_OVERLAY_COLOR.setValueChangeCallback((config) -> OverlayRendererSpawnChunks.setNeedsUpdate());
55-
Configs.Colors.SPAWN_PLAYER_LAZY_OVERLAY_COLOR.setValueChangeCallback((config) -> OverlayRendererSpawnChunks.setNeedsUpdate());
56-
Configs.Colors.SPAWN_PLAYER_OUTER_OVERLAY_COLOR.setValueChangeCallback((config) -> OverlayRendererSpawnChunks.setNeedsUpdate());
53+
Configs.Colors.SPAWN_PLAYER_ENTITY_OVERLAY_COLOR.setValueChangeCallback((config) -> OverlayRendererSpawnChunks.INSTANCE_PLAYER.setNeedsUpdate());
54+
Configs.Colors.SPAWN_PLAYER_REDSTONE_OVERLAY_COLOR.setValueChangeCallback((config) -> OverlayRendererSpawnChunks.INSTANCE_PLAYER.setNeedsUpdate());
55+
Configs.Colors.SPAWN_PLAYER_LAZY_OVERLAY_COLOR.setValueChangeCallback((config) -> OverlayRendererSpawnChunks.INSTANCE_PLAYER.setNeedsUpdate());
56+
Configs.Colors.SPAWN_PLAYER_OUTER_OVERLAY_COLOR.setValueChangeCallback((config) -> OverlayRendererSpawnChunks.INSTANCE_PLAYER.setNeedsUpdate());
5757

58-
Configs.Colors.SPAWN_REAL_ENTITY_OVERLAY_COLOR.setValueChangeCallback((config) -> OverlayRendererSpawnChunks.setNeedsUpdate());
59-
Configs.Colors.SPAWN_REAL_REDSTONE_OVERLAY_COLOR.setValueChangeCallback((config) -> OverlayRendererSpawnChunks.setNeedsUpdate());
60-
Configs.Colors.SPAWN_REAL_LAZY_OVERLAY_COLOR.setValueChangeCallback((config) -> OverlayRendererSpawnChunks.setNeedsUpdate());
61-
Configs.Colors.SPAWN_REAL_OUTER_OVERLAY_COLOR.setValueChangeCallback((config) -> OverlayRendererSpawnChunks.setNeedsUpdate());
58+
Configs.Colors.SPAWN_REAL_ENTITY_OVERLAY_COLOR.setValueChangeCallback((config) -> OverlayRendererSpawnChunks.INSTANCE_REAL.setNeedsUpdate());
59+
Configs.Colors.SPAWN_REAL_REDSTONE_OVERLAY_COLOR.setValueChangeCallback((config) -> OverlayRendererSpawnChunks.INSTANCE_REAL.setNeedsUpdate());
60+
Configs.Colors.SPAWN_REAL_LAZY_OVERLAY_COLOR.setValueChangeCallback((config) -> OverlayRendererSpawnChunks.INSTANCE_REAL.setNeedsUpdate());
61+
Configs.Colors.SPAWN_REAL_OUTER_OVERLAY_COLOR.setValueChangeCallback((config) -> OverlayRendererSpawnChunks.INSTANCE_REAL.setNeedsUpdate());
6262

6363
RendererToggle.OVERLAY_SLIME_CHUNKS_OVERLAY.getKeybind().setCallback(new KeyCallbackAdjustable(RendererToggle.OVERLAY_SLIME_CHUNKS_OVERLAY, new KeyCallbackToggleBooleanConfigWithMessage(RendererToggle.OVERLAY_SLIME_CHUNKS_OVERLAY)));
6464

src/main/java/fi/dy/masa/minihud/renderer/BaseBlockEntityRangeOverlay.java

-2
Original file line numberDiff line numberDiff line change
@@ -108,8 +108,6 @@ public void render(Camera camera, Matrix4f matrix4f, Matrix4f projMatrix, Minecr
108108
{
109109
Vec3d cameraPos = camera.getPos();
110110
this.renderBlockRanges(this.world, cameraPos, mc, profiler);
111-
this.clear();
112-
this.hasData = false;
113111
}
114112
}
115113

src/main/java/fi/dy/masa/minihud/renderer/IOverlayRenderer.java

-15
Original file line numberDiff line numberDiff line change
@@ -60,19 +60,4 @@ public interface IOverlayRenderer
6060
* Reset renderer's internal data
6161
*/
6262
void reset();
63-
64-
/**
65-
* Draw the buffer contents to screen
66-
*/
67-
//void draw(Matrix4f matrix4f, Matrix4f projMatrix);
68-
69-
/**
70-
* Allocates the OpenGL resources according to the current Video settings
71-
*/
72-
//void allocateGlResources();
73-
74-
/**
75-
* Removes the OpenGL buffer allocations etc.
76-
*/
77-
//void deleteGlResources();
7863
}

src/main/java/fi/dy/masa/minihud/renderer/OverlayRenderer.java

+2-104
Original file line numberDiff line numberDiff line change
@@ -2,24 +2,12 @@
22

33
import org.joml.Matrix4f;
44

5-
import com.mojang.blaze3d.systems.RenderSystem;
6-
import net.minecraft.block.Blocks;
75
import net.minecraft.client.MinecraftClient;
8-
import net.minecraft.client.gl.GlUsage;
9-
import net.minecraft.client.gl.ShaderPipelines;
106
import net.minecraft.client.render.*;
117
import net.minecraft.entity.Entity;
12-
import net.minecraft.item.BlockItem;
13-
import net.minecraft.item.Item;
14-
import net.minecraft.util.math.Vec3d;
158
import net.minecraft.util.profiler.Profiler;
169

17-
import fi.dy.masa.malilib.render.MaLiLibPipelines;
18-
import fi.dy.masa.malilib.render.RenderContext;
19-
import fi.dy.masa.malilib.render.RenderUtils;
2010
import fi.dy.masa.malilib.util.EntityUtils;
21-
import fi.dy.masa.malilib.util.data.Color4f;
22-
import fi.dy.masa.minihud.config.RendererToggle;
2311

2412
public class OverlayRenderer
2513
{
@@ -56,97 +44,7 @@ public static void renderOverlays(Matrix4f matrix4f, Matrix4f projMatrix, Minecr
5644
}
5745
}
5846

59-
if (RendererToggle.OVERLAY_BEACON_RANGE.getBooleanValue())
60-
{
61-
profiler.push("BeaconRangeHeldItem");
62-
renderBeaconBoxForPlayerIfHoldingItem(entity, mc);
63-
profiler.pop();
64-
}
65-
66-
RenderContainer.INSTANCE.render(entity, matrix4f, projMatrix, mc, camera, profiler);
67-
}
68-
69-
70-
public static void renderBeaconBoxForPlayerIfHoldingItem(Entity entity, MinecraftClient mc)
71-
{
72-
Item item = mc.player.getMainHandStack().getItem();
73-
74-
if (item instanceof BlockItem && ((BlockItem) item).getBlock() == Blocks.BEACON)
75-
{
76-
renderBeaconBoxForPlayer(entity, mc);
77-
return;
78-
}
79-
80-
item = mc.player.getMainHandStack().getItem();
81-
82-
if (item instanceof BlockItem && ((BlockItem) item).getBlock() == Blocks.BEACON)
83-
{
84-
renderBeaconBoxForPlayer(entity, mc);
85-
}
86-
}
87-
88-
private static void renderBeaconBoxForPlayer(Entity entity, MinecraftClient mc)
89-
{
90-
Vec3d cameraPos = mc.gameRenderer.getCamera().getPos();
91-
double x = Math.floor(entity.getX()) - cameraPos.x;
92-
double y = Math.floor(entity.getY()) - cameraPos.y;
93-
double z = Math.floor(entity.getZ()) - cameraPos.z;
94-
// Use the slot number as the level if sneaking
95-
int level = mc.player.isSneaking() ? Math.min(4, mc.player.getInventory().getSelectedSlot() + 1) : 4;
96-
float range = level * 10 + 10;
97-
float minX = (float) (x - range);
98-
float minY = (float) (y - range);
99-
float minZ = (float) (z - range);
100-
float maxX = (float) (x + range + 1);
101-
float maxY = (float) (y + 4);
102-
float maxZ = (float) (z + range + 1);
103-
Color4f color = OverlayRendererBeaconRange.getColorForLevel(level);
104-
105-
/*
106-
RenderSystem.disableCull();
107-
RenderSystem.enableDepthTest();
108-
RenderSystem.depthMask(false);
109-
RenderSystem.polygonOffset(-3f, -3f);
110-
RenderSystem.enablePolygonOffset();
111-
*/
112-
fi.dy.masa.malilib.render.RenderUtils.blend(true);
113-
fi.dy.masa.malilib.render.RenderUtils.color(1f, 1f, 1f, 1f);
114-
115-
// RenderSystem.setShader(ShaderProgramKeys.POSITION_COLOR);
116-
// ShaderPipelines.DEBUG_LINE_STRIP
117-
RenderContext ctx = new RenderContext(() -> "", VertexFormats.POSITION_COLOR, VertexFormat.DrawMode.QUADS, GlUsage.STATIC_WRITE);
118-
ctx.setShader(MaLiLibPipelines.POSITION_COLOR_SIMPLE);
119-
BufferBuilder buffer = ctx.getBuilder();
120-
121-
fi.dy.masa.malilib.render.RenderUtils.drawBoxAllSidesBatchedQuads(minX, minY, minZ, maxX, maxY, maxZ, Color4f.fromColor(color.intValue, 0.3f), buffer);
122-
123-
try
124-
{
125-
ctx.drawColor(buffer.endNullable());
126-
ctx.reset();
127-
}
128-
catch (Exception ignored) { }
129-
130-
buffer = ctx.startNoShader(VertexFormats.POSITION_COLOR, VertexFormat.DrawMode.DEBUG_LINES);
131-
ctx.setShader(MaLiLibPipelines.POSITION_COLOR_SIMPLE);
132-
133-
//buffer = tessellator.begin(VertexFormat.DrawMode.DEBUG_LINES, VertexFormats.POSITION_COLOR);
134-
135-
fi.dy.masa.malilib.render.RenderUtils.drawBoxAllEdgesBatchedLines(minX, minY, minZ, maxX, maxY, maxZ, Color4f.fromColor(color.intValue, 1f), buffer);
136-
137-
try
138-
{
139-
ctx.drawColor(buffer.endNullable());
140-
ctx.close();
141-
}
142-
catch (Exception ignored) { }
143-
144-
/*
145-
RenderSystem.polygonOffset(0f, 0f);
146-
RenderSystem.disablePolygonOffset();
147-
RenderSystem.enableCull();
148-
RenderSystem.disableBlend();
149-
*/
150-
RenderUtils.blend(false);
47+
RenderContainer.INSTANCE.updateIfNeeded(camera.getPos(), entity, mc, profiler);
48+
RenderContainer.INSTANCE.render(camera, matrix4f, projMatrix, mc, profiler);
15149
}
15250
}

0 commit comments

Comments
 (0)