Skip to content

Commit 8386b30

Browse files
committed
fix 1.8.9 matrix access
- add config options to AxolotlClient's menu for better accessibility - fix a few other bugs
1 parent dfdc35a commit 8386b30

File tree

18 files changed

+154
-85
lines changed

18 files changed

+154
-85
lines changed

1.20/src/main/java/io/github/axolotlclient/waypoints/AxolotlClientWaypoints.java

Lines changed: 3 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -66,7 +66,6 @@ public class AxolotlClientWaypoints implements ClientModInitializer {
6666
public static final WaypointRenderer WAYPOINT_RENDERER = new WaypointRenderer();
6767
public static final Listener NETWORK_LISTENER = new Listener();
6868

69-
public static OptionCategory category = OptionCategory.create(AxolotlClientWaypointsCommon.MODID);
7069
private final OptionCategory waypoints = OptionCategory.create("waypoints");
7170
public static BooleanOption renderWaypoints = new BooleanOption("render_waypoints", true);
7271
public static BooleanOption renderWaypointsInWorld = new BooleanOption("render_waypoints_in_world", true);
@@ -81,7 +80,7 @@ public void onInitializeClient() {
8180
AxolotlClientWaypointsCommon.init();
8281
MINIMAP.init();
8382

84-
category.add(waypoints);
83+
AxolotlClientWaypointsCommon.category.add(waypoints);
8584
waypoints.add(renderWaypoints, renderWaypointsInWorld, renderOutOfViewWaypointsOnScreenEdge);
8685

8786
try {
@@ -90,7 +89,7 @@ public void onInitializeClient() {
9089
log.warn("Failed to create config dir, options may not save correctly!", e);
9190
}
9291
ConfigManager configManager;
93-
AxolotlClientConfig.getInstance().register(configManager = new VersionedJsonConfigManager(AxolotlClientWaypointsCommon.OPTIONS_PATH, category, 1,
92+
AxolotlClientConfig.getInstance().register(configManager = new VersionedJsonConfigManager(AxolotlClientWaypointsCommon.OPTIONS_PATH, AxolotlClientWaypointsCommon.category, 1,
9493
(oldVersion, newVersion, rootCategory, json) -> json));
9594
configManager.load();
9695
configManager.save();
@@ -111,7 +110,7 @@ public void onInitializeClient() {
111110
}
112111

113112
public static Screen createOptionsScreen(Screen parent) {
114-
return ConfigStyles.createScreen(parent, category);
113+
return ConfigStyles.createScreen(parent, AxolotlClientWaypointsCommon.category);
115114
}
116115

117116
public static ResourceLocation rl(String path) {

1.20/src/main/java/io/github/axolotlclient/waypoints/map/Minimap.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -65,7 +65,7 @@ public class Minimap extends MinimapCommon {
6565

6666
public void init() {
6767
minimap.add(enabled, lockMapToNorth, arrowScale, minimapOutline, outlineColor, enableBiomeBlending, mapScale, showWaypoints, showCardinalDirections);
68-
AxolotlClientWaypoints.category.add(Minimap.minimap);
68+
AxolotlClientWaypointsCommon.category.add(Minimap.minimap);
6969
if (AxolotlClientWaypointsCommon.AXOLOTLCLIENT_PRESENT) {
7070
usingHud = true;
7171
var save = HudCreator.createHud(this);

1.20/src/main/java/io/github/axolotlclient/waypoints/map/WorldMapScreen.java

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -51,7 +51,6 @@
5151
import net.minecraft.client.gui.GuiGraphics;
5252
import net.minecraft.client.gui.components.AbstractSliderButton;
5353
import net.minecraft.client.gui.screens.Screen;
54-
import net.minecraft.client.renderer.BiomeColors;
5554
import net.minecraft.client.renderer.texture.DynamicTexture;
5655
import net.minecraft.core.BlockPos;
5756
import net.minecraft.core.Direction;
@@ -699,7 +698,7 @@ public void update(int caveY, boolean atSurface, Level level) {
699698
if (mapColor == MapColor.WATER) {
700699
var floorBlock = levelChunk.getBlockState(mutableBlockPos2);
701700
var floorColor = floorBlock.getMapColor(level, mutableBlockPos2).col;
702-
int biomeColor = BiomeColors.getAverageWaterColor(level, mutableBlockPos);
701+
int biomeColor = mapColor.col; //BiomeColors.getAverageWaterColor(level, mutableBlockPos);
703702
float shade = level.getShade(Direction.UP, true);
704703
int waterColor = biomeColor;
705704
waterColor = ARGB.colorFromFloat(1f, ARGB.redFloat(waterColor) * shade, ARGB.greenFloat(waterColor) * shade, ARGB.blueFloat(waterColor) * shade);

1.21.8/src/main/java/io/github/axolotlclient/waypoints/AxolotlClientWaypoints.java

Lines changed: 3 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -61,7 +61,6 @@ public class AxolotlClientWaypoints implements ClientModInitializer {
6161
public static final WaypointRenderer WAYPOINT_RENDERER = new WaypointRenderer();
6262
public static final Listener NETWORK_LISTENER = new Listener();
6363

64-
public static OptionCategory category = OptionCategory.create(AxolotlClientWaypointsCommon.MODID);
6564
private final OptionCategory waypoints = OptionCategory.create("waypoints");
6665
public static BooleanOption renderWaypoints = new BooleanOption("render_waypoints", true);
6766
public static BooleanOption renderWaypointsInWorld = new BooleanOption("render_waypoints_in_world", true);
@@ -76,11 +75,11 @@ public void onInitializeClient() {
7675
AxolotlClientWaypointsCommon.init();
7776
MINIMAP.init();
7877

79-
category.add(waypoints);
78+
AxolotlClientWaypointsCommon.category.add(waypoints);
8079
waypoints.add(renderWaypoints, renderWaypointsInWorld, renderOutOfViewWaypointsOnScreenEdge);
8180

8281
ConfigManager configManager;
83-
AxolotlClientConfig.getInstance().register(configManager = new VersionedJsonConfigManager(AxolotlClientWaypointsCommon.OPTIONS_PATH, category, 1,
82+
AxolotlClientConfig.getInstance().register(configManager = new VersionedJsonConfigManager(AxolotlClientWaypointsCommon.OPTIONS_PATH, AxolotlClientWaypointsCommon.category, 1,
8483
(oldVersion, newVersion, rootCategory, json) -> json));
8584
configManager.load();
8685
configManager.save();
@@ -101,7 +100,7 @@ public void onInitializeClient() {
101100
}
102101

103102
public static Screen createOptionsScreen(Screen parent) {
104-
return ConfigStyles.createScreen(parent, category);
103+
return ConfigStyles.createScreen(parent, AxolotlClientWaypointsCommon.category);
105104
}
106105

107106
public static ResourceLocation rl(String path) {

1.21.8/src/main/java/io/github/axolotlclient/waypoints/map/Minimap.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -67,7 +67,7 @@ public class Minimap extends MinimapCommon {
6767

6868
public void init() {
6969
minimap.add(enabled, lockMapToNorth, arrowScale, minimapOutline, outlineColor, enableBiomeBlending, mapScale, showWaypoints, showCardinalDirections);
70-
AxolotlClientWaypoints.category.add(minimap);
70+
AxolotlClientWaypointsCommon.category.add(minimap);
7171
if (AxolotlClientWaypointsCommon.AXOLOTLCLIENT_PRESENT) {
7272
usingHud = true;
7373
var save = HudCreator.createHud(this);

1.21/src/main/java/io/github/axolotlclient/waypoints/AxolotlClientWaypoints.java

Lines changed: 3 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -66,7 +66,6 @@ public class AxolotlClientWaypoints implements ClientModInitializer {
6666
public static final WaypointRenderer WAYPOINT_RENDERER = new WaypointRenderer();
6767
public static final Listener NETWORK_LISTENER = new Listener();
6868

69-
public static OptionCategory category = OptionCategory.create(AxolotlClientWaypointsCommon.MODID);
7069
private final OptionCategory waypoints = OptionCategory.create("waypoints");
7170
public static BooleanOption renderWaypoints = new BooleanOption("render_waypoints", true);
7271
public static BooleanOption renderWaypointsInWorld = new BooleanOption("render_waypoints_in_world", true);
@@ -81,7 +80,7 @@ public void onInitializeClient() {
8180
AxolotlClientWaypointsCommon.init();
8281
MINIMAP.init();
8382

84-
category.add(waypoints);
83+
AxolotlClientWaypointsCommon.category.add(waypoints);
8584
waypoints.add(renderWaypoints, renderWaypointsInWorld, renderOutOfViewWaypointsOnScreenEdge);
8685

8786
try {
@@ -90,7 +89,7 @@ public void onInitializeClient() {
9089
log.warn("Failed to create config dir, options may not save correctly!", e);
9190
}
9291
ConfigManager configManager;
93-
AxolotlClientConfig.getInstance().register(configManager = new VersionedJsonConfigManager(AxolotlClientWaypointsCommon.OPTIONS_PATH, category, 1,
92+
AxolotlClientConfig.getInstance().register(configManager = new VersionedJsonConfigManager(AxolotlClientWaypointsCommon.OPTIONS_PATH, AxolotlClientWaypointsCommon.category, 1,
9493
(oldVersion, newVersion, rootCategory, json) -> json));
9594
configManager.load();
9695
configManager.save();
@@ -111,7 +110,7 @@ public void onInitializeClient() {
111110
}
112111

113112
public static Screen createOptionsScreen(Screen parent) {
114-
return ConfigStyles.createScreen(parent, category);
113+
return ConfigStyles.createScreen(parent, AxolotlClientWaypointsCommon.category);
115114
}
116115

117116
public static ResourceLocation rl(String path) {

1.21/src/main/java/io/github/axolotlclient/waypoints/map/Minimap.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -67,7 +67,7 @@ public class Minimap extends MinimapCommon {
6767

6868
public void init() {
6969
minimap.add(enabled, lockMapToNorth, arrowScale, minimapOutline, outlineColor, enableBiomeBlending, mapScale, showWaypoints, showCardinalDirections);
70-
AxolotlClientWaypoints.category.add(Minimap.minimap);
70+
AxolotlClientWaypointsCommon.category.add(Minimap.minimap);
7171
if (AxolotlClientWaypointsCommon.AXOLOTLCLIENT_PRESENT) {
7272
usingHud = true;
7373
var save = HudCreator.createHud(this);

1.21/src/main/java/io/github/axolotlclient/waypoints/map/WorldMapScreen.java

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -50,7 +50,6 @@
5050
import net.minecraft.client.gui.components.ImageButton;
5151
import net.minecraft.client.gui.components.WidgetSprites;
5252
import net.minecraft.client.gui.screens.Screen;
53-
import net.minecraft.client.renderer.BiomeColors;
5453
import net.minecraft.client.renderer.texture.DynamicTexture;
5554
import net.minecraft.core.BlockPos;
5655
import net.minecraft.core.Direction;
@@ -708,7 +707,7 @@ public void update(int caveY, boolean atSurface, Level level) {
708707
if (mapColor == MapColor.WATER) {
709708
var floorBlock = levelChunk.getBlockState(mutableBlockPos2);
710709
var floorColor = floorBlock.getMapColor(level, mutableBlockPos2).col;
711-
int biomeColor = BiomeColors.getAverageWaterColor(level, mutableBlockPos);
710+
int biomeColor = mapColor.col; //BiomeColors.getAverageWaterColor(level, mutableBlockPos);
712711
float shade = level.getShade(Direction.UP, true);
713712
int waterColor = biomeColor;
714713
waterColor = ARGB.colorFromFloat(1f, ARGB.redFloat(waterColor) * shade, ARGB.greenFloat(waterColor) * shade, ARGB.blueFloat(waterColor) * shade);

1.8.9/src/main/java/io/github/axolotlclient/waypoints/AxolotlClientWaypoints.java

Lines changed: 5 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -53,17 +53,18 @@
5353
import net.minecraft.resource.Identifier;
5454
import net.ornithemc.osl.keybinds.api.KeyBindingEvents;
5555
import net.ornithemc.osl.lifecycle.api.client.MinecraftClientEvents;
56+
import org.joml.Matrix4fStack;
5657
import org.lwjgl.input.Keyboard;
5758

5859
@Slf4j
5960
public class AxolotlClientWaypoints implements ClientModInitializer {
6061

62+
public static final Matrix4fStack MATRIX_STACK = new Matrix4fStack(32);
6163
public static final Minimap MINIMAP = new Minimap();
6264
public static final WaypointStorage WAYPOINT_STORAGE = new WaypointStorage();
6365
public static final WaypointRenderer WAYPOINT_RENDERER = new WaypointRenderer();
6466
public static final Listener NETWORK_LISTENER = new Listener();
6567

66-
public static OptionCategory category = OptionCategory.create(AxolotlClientWaypointsCommon.MODID);
6768
private final OptionCategory waypoints = OptionCategory.create("waypoints");
6869
public static BooleanOption renderWaypoints = new BooleanOption("render_waypoints", true);
6970
public static BooleanOption renderWaypointsInWorld = new BooleanOption("render_waypoints_in_world", true);
@@ -78,7 +79,7 @@ public void onInitializeClient() {
7879
AxolotlClientWaypointsCommon.init();
7980
MINIMAP.init();
8081

81-
category.add(waypoints);
82+
AxolotlClientWaypointsCommon.category.add(waypoints);
8283
waypoints.add(renderWaypoints, renderWaypointsInWorld, renderOutOfViewWaypointsOnScreenEdge);
8384

8485
try {
@@ -87,7 +88,7 @@ public void onInitializeClient() {
8788
log.warn("Failed to create config dir, options may not save correctly!", e);
8889
}
8990
ConfigManager configManager;
90-
AxolotlClientConfig.getInstance().register(configManager = new VersionedJsonConfigManager(AxolotlClientWaypointsCommon.OPTIONS_PATH, category, 1,
91+
AxolotlClientConfig.getInstance().register(configManager = new VersionedJsonConfigManager(AxolotlClientWaypointsCommon.OPTIONS_PATH, AxolotlClientWaypointsCommon.category, 1,
9192
(oldVersion, newVersion, rootCategory, json) -> json));
9293
configManager.load();
9394
configManager.save();
@@ -110,7 +111,7 @@ public void onInitializeClient() {
110111
}
111112

112113
public static Screen createOptionsScreen(Screen parent) {
113-
return ConfigStyles.createScreen(parent, category);
114+
return ConfigStyles.createScreen(parent, AxolotlClientWaypointsCommon.category);
114115
}
115116

116117
public static Identifier rl(String path) {

1.8.9/src/main/java/io/github/axolotlclient/waypoints/map/Minimap.java

Lines changed: 23 additions & 29 deletions
Original file line numberDiff line numberDiff line change
@@ -43,7 +43,6 @@
4343
import net.minecraft.util.math.MathHelper;
4444
import net.minecraft.world.chunk.WorldChunk;
4545
import net.ornithemc.osl.lifecycle.api.client.MinecraftClientEvents;
46-
import org.joml.Matrix4fStack;
4746
import org.joml.Vector3f;
4847

4948
public class Minimap extends MinimapCommon {
@@ -56,13 +55,12 @@ public class Minimap extends MinimapCommon {
5655
private int mapCenterX, mapCenterZ;
5756
private boolean usingHud;
5857
public boolean allowCaves = true;
59-
private final Matrix4fStack matrixStack = new Matrix4fStack(5);
6058

6159
private final Minecraft minecraft = Minecraft.getInstance();
6260

6361
public void init() {
6462
minimap.add(enabled, lockMapToNorth, arrowScale, minimapOutline, outlineColor, enableBiomeBlending, mapScale, showWaypoints, showCardinalDirections);
65-
AxolotlClientWaypoints.category.add(Minimap.minimap);
63+
AxolotlClientWaypointsCommon.category.add(Minimap.minimap);
6664
if (AxolotlClientWaypointsCommon.AXOLOTLCLIENT_PRESENT) {
6765
usingHud = true;
6866
var save = HudCreator.createHud(this);
@@ -105,14 +103,17 @@ public void renderMap(AxoRenderContext ctx) {
105103
renderMap();
106104
}
107105

106+
108107
public void renderMap() {
109108
if (!isEnabled()) {
110109
return;
111110
}
112-
matrixStack.clear().pushMatrix();
111+
GlStateManager.color4f(1, 1, 1, 1);
113112
GlStateManager.pushMatrix();
114113
{
115-
DrawUtil.pushScissor(x, y, size, size);
114+
var vec1 = AxolotlClientWaypoints.MATRIX_STACK.transformPosition(x, y, 0, new Vector3f());
115+
var vec2 = AxolotlClientWaypoints.MATRIX_STACK.transformPosition(x+size, y+size, 0, new Vector3f());
116+
DrawUtil.pushScissor(MathHelper.floor(vec1.x), MathHelper.floor(vec1.y), MathHelper.floor(vec2.x-vec1.x), MathHelper.floor(vec2.y-vec1.y));
116117
GlStateManager.pushMatrix();
117118
GlStateManager.translatef(x, y, 0);
118119
GlStateManager.translatef(radius, radius, 0);
@@ -140,22 +141,21 @@ public void renderMap() {
140141
}
141142
if (showCardinalDirections.get()) {
142143
Vector3f pos = new Vector3f();
143-
matrixStack.pushMatrix();
144144
var directions = new String[]{"N", "W", "E", "S"};
145145
for (int i : new int[]{-2, 1, 2, -1}) {
146146
var label = directions[i < 0 ? i + 2 : i + 1];
147147
var labelWidth = minecraft.textRenderer.getWidth(label);
148148
var labelHeight = minecraft.textRenderer.fontHeight;
149-
matrixStack.pushMatrix();
150-
matrixStack.identity();
151-
matrixStack.translate(x + radius, y + radius, 0);
149+
AxolotlClientWaypoints.MATRIX_STACK.pushMatrix();
150+
AxolotlClientWaypoints.MATRIX_STACK.identity();
151+
AxolotlClientWaypoints.MATRIX_STACK.translate(x + radius, y + radius, 0);
152152
if (!lockMapToNorth.get()) {
153-
matrixStack.rotate((float) -(((minecraft.player.getHeadYaw() + 180) / 180) * Math.PI), 0, 0, 1);
153+
AxolotlClientWaypoints.MATRIX_STACK.rotate((float) -(((minecraft.player.getHeadYaw() + 180) / 180) * Math.PI), 0, 0, 1);
154154
}
155-
matrixStack.translate((i % 2) * size, ((int) (i / 2f)) * size, 0);
155+
AxolotlClientWaypoints.MATRIX_STACK.translate((i % 2) * size, ((int) (i / 2f)) * size, 0);
156156
pos.zero();
157-
matrixStack.transformPosition(pos);
158-
matrixStack.popMatrix();
157+
AxolotlClientWaypoints.MATRIX_STACK.transformPosition(pos);
158+
AxolotlClientWaypoints.MATRIX_STACK.popMatrix();
159159
pos.x = MathHelper.clamp(pos.x, x, x + size);
160160
pos.y = MathHelper.clamp(pos.y, y, y + size);
161161
GlStateManager.pushMatrix();
@@ -165,7 +165,6 @@ public void renderMap() {
165165
minecraft.textRenderer.draw(label, -labelWidth / 2, -labelHeight / 2, -1);
166166
GlStateManager.popMatrix();
167167
}
168-
matrixStack.popMatrix();
169168
}
170169

171170
GlStateManager.pushMatrix();
@@ -180,35 +179,32 @@ public void renderMap() {
180179
GuiElement.drawTexture(0, 0, 0, 0, arrowSize, arrowSize, arrowSize, arrowSize);
181180
GlStateManager.popMatrix();
182181

183-
matrixStack.popMatrix();
184182
GlStateManager.popMatrix();
185183
}
186184

187185
private void renderMapWaypoints() {
188186
if (!AxolotlClientWaypoints.renderWaypoints.get()) return;
189-
matrixStack.pushMatrix();
190187
GlStateManager.pushMatrix();
191188
Vector3f pos = new Vector3f();
192189
for (Waypoint waypoint : AxolotlClientWaypoints.getCurrentWaypoints()) {
193-
matrixStack.pushMatrix();
194190
GlStateManager.pushMatrix();
195191
float posX = (float) (waypoint.x() - minecraft.player.x);
196192
float posY = (float) (waypoint.z() - minecraft.player.z);
197193

198194
{
199195
pos.zero();
200-
matrixStack.pushMatrix();
201-
matrixStack.identity();
202-
matrixStack.translate(x, y, 0);
203-
matrixStack.translate(radius, radius, 0);
204-
matrixStack.scale((float) Math.sqrt(2), (float) Math.sqrt(2), 1);
205-
matrixStack.scale(mapScale.get(), mapScale.get(), 1);
196+
AxolotlClientWaypoints.MATRIX_STACK.pushMatrix();
197+
AxolotlClientWaypoints.MATRIX_STACK.identity();
198+
AxolotlClientWaypoints.MATRIX_STACK.translate(x, y, 0);
199+
AxolotlClientWaypoints.MATRIX_STACK.translate(radius, radius, 0);
200+
AxolotlClientWaypoints.MATRIX_STACK.scale((float) Math.sqrt(2), (float) Math.sqrt(2), 1);
201+
AxolotlClientWaypoints.MATRIX_STACK.scale(mapScale.get(), mapScale.get(), 1);
206202
if (!lockMapToNorth.get()) {
207-
matrixStack.rotate((float) -Math.toRadians(minecraft.player.headYaw + 180), 0, 0, 1);
203+
AxolotlClientWaypoints.MATRIX_STACK.rotate((float) -Math.toRadians(minecraft.player.headYaw + 180), 0, 0, 1);
208204
}
209-
matrixStack.translate(posX, posY, 1);
210-
matrixStack.transformPosition(pos);
211-
matrixStack.popMatrix();
205+
AxolotlClientWaypoints.MATRIX_STACK.translate(posX, posY, 1);
206+
AxolotlClientWaypoints.MATRIX_STACK.transformPosition(pos);
207+
AxolotlClientWaypoints.MATRIX_STACK.popMatrix();
212208
}
213209

214210
{
@@ -222,10 +218,8 @@ private void renderMapWaypoints() {
222218
int textHeight = minecraft.textRenderer.fontHeight;
223219
GuiElement.fill(-(textWidth / 2) - Waypoint.displayXOffset(), -(textHeight / 2) - Waypoint.displayYOffset(), (textWidth / 2) + Waypoint.displayXOffset(), (textHeight / 2) + Waypoint.displayYOffset(), waypoint.color().toInt());
224220
minecraft.textRenderer.draw(waypoint.display(), -(textWidth / 2f), -textHeight / 2f, -1, false);
225-
matrixStack.popMatrix();
226221
GlStateManager.popMatrix();
227222
}
228-
matrixStack.popMatrix();
229223
GlStateManager.popMatrix();
230224
}
231225

0 commit comments

Comments
 (0)