Skip to content

Commit

Permalink
fix map ToolTip, and what broke with the last item in the shulker box…
Browse files Browse the repository at this point in the history
… preview ?
  • Loading branch information
sakura-ryoko committed Sep 19, 2024
1 parent a5d44a1 commit a6ce1e1
Show file tree
Hide file tree
Showing 13 changed files with 63 additions and 32 deletions.
4 changes: 2 additions & 2 deletions src/main/java/fi/dy/masa/malilib/MaLiLibInitHandler.java
Original file line number Diff line number Diff line change
Expand Up @@ -26,8 +26,8 @@ public void registerModHandlers()
IRenderer renderer = new TestRenderHandler();
RenderEventHandler.getInstance().registerGameOverlayRenderer(renderer);
RenderEventHandler.getInstance().registerTooltipLastRenderer(renderer);
RenderEventHandler.getInstance().registerWorldPreWeatherRenderer(renderer);
RenderEventHandler.getInstance().registerWorldLastRenderer(renderer);
//RenderEventHandler.getInstance().registerWorldPreWeatherRenderer(renderer);
//RenderEventHandler.getInstance().registerWorldLastRenderer(renderer);

SyncHandler.getInstance().registerSyncProvider(new TestDataSync());
}
Expand Down
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
package fi.dy.masa.malilib.mixin.test;
package fi.dy.masa.malilib.mixin;

import org.spongepowered.asm.mixin.Mixin;
import org.spongepowered.asm.mixin.gen.Accessor;
Expand Down
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
package fi.dy.masa.malilib.mixin.test;
package fi.dy.masa.malilib.mixin;

import net.minecraft.client.network.DataQueryHandler;
import org.spongepowered.asm.mixin.Mixin;
Expand Down
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
package fi.dy.masa.malilib.mixin.test;
package fi.dy.masa.malilib.mixin;

import net.minecraft.client.network.ClientPlayNetworkHandler;
import net.minecraft.nbt.NbtCompound;
Expand Down
11 changes: 7 additions & 4 deletions src/main/java/fi/dy/masa/malilib/mixin/MixinDrawContext.java
Original file line number Diff line number Diff line change
@@ -1,22 +1,25 @@
package fi.dy.masa.malilib.mixin;

import net.minecraft.client.font.TextRenderer;
import net.minecraft.client.gui.DrawContext;
import net.minecraft.item.ItemStack;
import org.spongepowered.asm.mixin.Mixin;
import org.spongepowered.asm.mixin.Shadow;
import org.spongepowered.asm.mixin.injection.At;
import org.spongepowered.asm.mixin.injection.Inject;
import org.spongepowered.asm.mixin.injection.callback.CallbackInfo;

import net.minecraft.client.font.TextRenderer;
import net.minecraft.client.gui.DrawContext;
import net.minecraft.item.ItemStack;

import fi.dy.masa.malilib.event.RenderEventHandler;

@Mixin(DrawContext.class)
public abstract class MixinDrawContext
{
@Shadow public abstract void draw();

@Inject(method = "drawItemTooltip", at = @At(value = "RETURN"))
private void onRenderTooltip(TextRenderer textRenderer, ItemStack stack, int x, int y, CallbackInfo ci)
{
((RenderEventHandler) RenderEventHandler.getInstance()).onRenderTooltipLast((DrawContext) (Object) this, stack, x, y);
this.draw();
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -25,6 +25,7 @@ private void onRenderTooltip(DrawContext drawContext, int x, int y, CallbackInfo
if (this.focusedSlot != null && this.focusedSlot.hasStack())
{
((RenderEventHandler) RenderEventHandler.getInstance()).onRenderTooltipLast(drawContext, this.focusedSlot.getStack(), x, y);
drawContext.draw();
}
}
}
12 changes: 9 additions & 3 deletions src/main/java/fi/dy/masa/malilib/mixin/MixinInGameHud.java
Original file line number Diff line number Diff line change
Expand Up @@ -23,12 +23,18 @@ public abstract class MixinInGameHud
@Inject(method = "<init>", at = @At("TAIL"))
private void malilib_onInit(CallbackInfo info)
{
this.layeredDrawer.addLayer(this::malilib_onGameOverlayPost);
this.layeredDrawer.addLayer(this::malilib_renderGameOverlay);
}

@Inject(method = "render", at = @At("TAIL"))
private void malilib_onGameOverlayPost(DrawContext context, RenderTickCounter tickCounter, CallbackInfo ci)
{
this.malilib_renderGameOverlay(context, tickCounter);
//((RenderEventHandler) RenderEventHandler.getInstance()).onRenderGameOverlayPost(context, this.client, tickCounter.getTickDelta(false));
}

//@Inject(method = "render", at = @At("RETURN"))
@Unique
private void malilib_onGameOverlayPost(DrawContext context, RenderTickCounter tickCounter)
private void malilib_renderGameOverlay(DrawContext context, RenderTickCounter tickCounter)
{
((RenderEventHandler) RenderEventHandler.getInstance()).onRenderGameOverlayPost(context, this.client, tickCounter.getTickDelta(false));
}
Expand Down
3 changes: 3 additions & 0 deletions src/main/java/fi/dy/masa/malilib/render/InventoryOverlay.java
Original file line number Diff line number Diff line change
Expand Up @@ -468,6 +468,7 @@ else if (type == InventoryRenderType.BREWING_STAND)

if (stack.isEmpty() == false)
{
//System.out.printf("renderInventoryStacks - slot[%d/%d]: [%s]\n", slot, slots, stack);
renderStackAt(stack, x, y, 1, mc, drawContext, mouseX, mouseY);
}

Expand Down Expand Up @@ -566,6 +567,7 @@ public static void renderStackAt(ItemStack stack, float x, float y, float scale,

public static void renderStackAt(ItemStack stack, float x, float y, float scale, MinecraftClient mc, DrawContext drawContext, double mouseX, double mouseY)
{
//String count = stack.getCount() > 1 ? Integer.toString(stack.getCount()) : null;
MatrixStack matrixStack = drawContext.getMatrices();
matrixStack.push();
matrixStack.translate(x, y, 0.f);
Expand All @@ -577,6 +579,7 @@ public static void renderStackAt(ItemStack stack, float x, float y, float scale,
drawContext.drawItem(stack, 0, 0);

RenderUtils.color(1f, 1f, 1f, 1f);
//System.out.printf("renderStackAt - [%s] // [%s]\n", stack, count);
drawContext.drawItemInSlot( mc.textRenderer, stack, 0, 0);

RenderUtils.color(1f, 1f, 1f, 1f);
Expand Down
28 changes: 20 additions & 8 deletions src/main/java/fi/dy/masa/malilib/render/RenderUtils.java
Original file line number Diff line number Diff line change
Expand Up @@ -1179,12 +1179,12 @@ private static void blockTargetingOverlayTranslations(double x, double y, double
matrix4fStack.translate((float) (-x), (float) (-y), (float) ((-z) + 0.510));
}

public static void renderMapPreview(ItemStack stack, int x, int y, int dimensions)
public static void renderMapPreview(ItemStack stack, int x, int y, int dimensions, DrawContext drawContext)
{
renderMapPreview(stack, x, y, dimensions, true);
renderMapPreview(stack, x, y, dimensions, true, drawContext);
}

public static void renderMapPreview(ItemStack stack, int x, int y, int dimensions, boolean requireShift)
public static void renderMapPreview(ItemStack stack, int x, int y, int dimensions, boolean requireShift, DrawContext drawContext)
{
if (stack.getItem() instanceof FilledMapItem && (!requireShift || GuiBase.isShiftDown()))
{
Expand All @@ -1195,18 +1195,29 @@ public static void renderMapPreview(ItemStack stack, int x, int y, int dimension
int x1 = x + 8;
int x2 = x1 + dimensions;
int z = 300;
int uv = 0xF000F0;

MapState mapState = FilledMapItem.getMapState(stack, mc().world);
ComponentMap data = stack.getComponents();
MapIdComponent mapId = data.get(DataComponentTypes.MAP_ID);

Identifier bgTexture = mapState == null ? TEXTURE_MAP_BACKGROUND : TEXTURE_MAP_BACKGROUND_CHECKERBOARD;
bindTexture(bgTexture);
setupBlend();
//bindTexture(bgTexture);
VertexConsumer vertex = bindTexture(bgTexture, drawContext);
Matrix4f matrix4f = drawContext.getMatrices().peek().getPositionMatrix();
//setupBlend();

RenderSystem.setShader(ShaderProgramKeys.POSITION_TEX_COLOR);
vertex.vertex(matrix4f, x1, y2, z).color(-1).texture(0.0f, 1.0f).light(uv);
vertex.vertex(matrix4f, x2, y2, z).color(-1).texture(1.0f, 1.0f).light(uv);
vertex.vertex(matrix4f, x2, y1, z).color(-1).texture(1.0f, 0.0f).light(uv);
vertex.vertex(matrix4f, x1, y1, z).color(-1).texture(0.0f, 0.0f).light(uv);

forceDraw(drawContext);

//RenderSystem.setShader(ShaderProgramKeys.POSITION_TEX_COLOR);
//RenderSystem.setShader(GameRenderer::getPositionTexProgram);
//RenderSystem.applyModelViewMatrix();
/*
Tessellator tessellator = Tessellator.getInstance();
BufferBuilder buffer = tessellator.begin(VertexFormat.DrawMode.QUADS, VertexFormats.POSITION_TEXTURE);
BuiltBuffer builtBuffer;
Expand All @@ -1225,6 +1236,7 @@ public static void renderMapPreview(ItemStack stack, int x, int y, int dimension
catch (Exception ignored) { }
RenderSystem.disableBlend();
*/

if (mapState != null)
{
Expand All @@ -1241,7 +1253,7 @@ public static void renderMapPreview(ItemStack stack, int x, int y, int dimension

MapRenderState mapRenderState = new MapRenderState();
mc().getMapRenderer().update(mapId, mapState, mapRenderState);
mc().getMapRenderer().draw(mapRenderState, matrixStack, consumer, false, 0xF000F0);
mc().getMapRenderer().draw(mapRenderState, matrixStack, consumer, false, uv);
consumer.draw();
matrixStack.pop();
}
Expand Down Expand Up @@ -1294,7 +1306,7 @@ public static void renderShulkerBoxPreview(ItemStack stack, int baseX, int baseY
enableDiffuseLightingGui3D();

Inventory inv = InventoryUtils.getAsInventory(items);
InventoryOverlay.renderInventoryStacks(type, inv, x + props.slotOffsetX, y + props.slotOffsetY, props.slotsPerRow, 0, ShulkerBoxBlockEntity.INVENTORY_SIZE, mc(), drawContext);
InventoryOverlay.renderInventoryStacks(type, inv, x + props.slotOffsetX, y + props.slotOffsetY, props.slotsPerRow, 0, (inv.size()), mc(), drawContext);

matrix4fStack.popMatrix();
//drawContext.getMatrices().pop();
Expand Down
2 changes: 1 addition & 1 deletion src/main/java/fi/dy/masa/malilib/test/TestDataSync.java
Original file line number Diff line number Diff line change
Expand Up @@ -19,7 +19,7 @@

import fi.dy.masa.malilib.MaLiLibConfigs;
import fi.dy.masa.malilib.interfaces.ISyncProvider;
import fi.dy.masa.malilib.mixin.test.IMixinDataQueryHandler;
import fi.dy.masa.malilib.mixin.IMixinDataQueryHandler;
import fi.dy.masa.malilib.sync.cache.SyncCache;
import fi.dy.masa.malilib.sync.fbe.FakeBlockEntity;
import fi.dy.masa.malilib.sync.fe.FakeEntity;
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -100,7 +100,7 @@ public void onRenderTooltipLast(DrawContext drawContext, ItemStack stack, int x,
{
if (MaLiLibConfigs.Test.TEST_CONFIG_BOOLEAN.getBooleanValue() && GuiBase.isShiftDown())
{
RenderUtils.renderMapPreview(stack, x, y, 160, false);
RenderUtils.renderMapPreview(stack, x, y, 160, false, drawContext);
}
}
else if (stack.getComponents().contains(DataComponentTypes.CONTAINER) && InventoryUtils.shulkerBoxHasItems(stack))
Expand Down
20 changes: 13 additions & 7 deletions src/main/java/fi/dy/masa/malilib/util/InventoryUtils.java
Original file line number Diff line number Diff line change
Expand Up @@ -380,13 +380,13 @@ else if (state.getBlock() instanceof CrafterBlock && te instanceof CrafterBlockE
* @param stackShulkerBox
* @return
*/
public static boolean shulkerBoxHasItems(ItemStack stackShulkerBox)
public static boolean shulkerBoxHasItems(ItemStack stack)
{
ContainerComponent countContainer = stackShulkerBox.getComponents().get(DataComponentTypes.CONTAINER);
ContainerComponent container = stack.getComponents().get(DataComponentTypes.CONTAINER);

if (countContainer != null)
if (container != null)
{
return countContainer.iterateNonEmpty().iterator().hasNext();
return container.iterateNonEmpty().iterator().hasNext();
}

return false;
Expand Down Expand Up @@ -504,11 +504,13 @@ public static DefaultedList<ItemStack> getStoredItems(ItemStack stackIn)
{
Iterator<ItemStack> iter = container.streamNonEmpty().iterator();
DefaultedList<ItemStack> items = DefaultedList.ofSize((int) container.streamNonEmpty().count());
int i = 0;

// Using 'container.copyTo(items)' will break Litematica's Material List
while (iter.hasNext())
{
items.add(iter.next());
items.add(iter.next().copy());
i++;
}

return items;
Expand Down Expand Up @@ -549,14 +551,18 @@ public static DefaultedList<ItemStack> getStoredItems(ItemStack stackIn, int slo

for (int i = 0; i < slotCount; i++)
{
ItemStack entry;

if (iter.hasNext())
{
items.add(iter.next());
entry = iter.next();
}
else
{
items.add(ItemStack.EMPTY);
entry = ItemStack.EMPTY;
}

items.add(entry.copy());
}

return items;
Expand Down
6 changes: 3 additions & 3 deletions src/main/resources/mixins.malilib.json
Original file line number Diff line number Diff line change
Expand Up @@ -19,9 +19,9 @@
"MixinPiglinEntity",
"MixinSimpleInventory",
"MixinWorldRenderer",
"test.IMixinAbstractHorseEntity",
"test.IMixinDataQueryHandler",
"test.MixinClientPlayNetworkHandler_NbtQuery"
"IMixinAbstractHorseEntity",
"IMixinDataQueryHandler",
"MixinClientPlayNetworkHandler_NbtQuery"
],
"injectors": {
"defaultRequire": 1
Expand Down

0 comments on commit a6ce1e1

Please sign in to comment.