1
0
mirror of https://github.com/kami-blue/client synced 2025-02-19 06:37:35 +00:00

Added Module MapPreview see issue #143 (#886)

Co-authored-by: Dominika <sokolov.dominika@gmail.com>
This commit is contained in:
TacticalFacePlant 2020-06-02 04:12:30 +02:00 committed by GitHub
parent f6456d6796
commit 2d82fcd72d
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
3 changed files with 80 additions and 1 deletions

View File

@ -31,7 +31,6 @@ import net.minecraft.util.FoodStats;
import net.minecraft.util.ResourceLocation;
import net.minecraftforge.client.GuiIngameForge;
import net.minecraftforge.client.event.*;
import net.minecraftforge.common.MinecraftForge;
import net.minecraftforge.event.entity.EntityJoinWorldEvent;
import net.minecraftforge.event.entity.living.LivingDamageEvent;
import net.minecraftforge.event.entity.living.LivingEntityUseItemEvent;

View File

@ -1,6 +1,7 @@
package me.zeroeightsix.kami.mixin.client;
import me.zeroeightsix.kami.module.modules.render.CleanGUI;
import me.zeroeightsix.kami.module.modules.render.MapPreview;
import me.zeroeightsix.kami.module.modules.render.ShulkerPreview;
import net.minecraft.client.Minecraft;
import net.minecraft.client.gui.FontRenderer;
@ -8,10 +9,14 @@ import net.minecraft.client.gui.GuiScreen;
import net.minecraft.client.renderer.*;
import net.minecraft.client.renderer.vertex.DefaultVertexFormats;
import net.minecraft.inventory.ItemStackHelper;
import net.minecraft.item.ItemMap;
import net.minecraft.item.ItemShulkerBox;
import net.minecraft.item.ItemStack;
import net.minecraft.nbt.NBTTagCompound;
import net.minecraft.util.NonNullList;
import net.minecraft.util.ResourceLocation;
import net.minecraft.world.storage.MapData;
import org.lwjgl.opengl.GL11;
import org.spongepowered.asm.mixin.Mixin;
import org.spongepowered.asm.mixin.Shadow;
import org.spongepowered.asm.mixin.injection.At;
@ -19,6 +24,7 @@ import org.spongepowered.asm.mixin.injection.Inject;
import org.spongepowered.asm.mixin.injection.callback.CallbackInfo;
import static me.zeroeightsix.kami.KamiMod.MODULE_MANAGER;
import static org.lwjgl.opengl.GL11.glDepthRange;
/**
* Created by 086 on 24/12/2017.
@ -29,6 +35,7 @@ public class MixinGuiScreen {
@Shadow public Minecraft mc;
RenderItem itemRender = Minecraft.getMinecraft().getRenderItem();
FontRenderer fontRenderer = Minecraft.getMinecraft().fontRenderer;
private static final ResourceLocation RES_MAP_BACKGROUND = new ResourceLocation("textures/map/map_background.png");
@Inject(method = "renderToolTip", at = @At("HEAD"), cancellable = true)
public void renderToolTip(ItemStack stack, int x, int y, CallbackInfo info) {
@ -92,6 +99,47 @@ public class MixinGuiScreen {
GlStateManager.enableRescaleNormal();
}
}
} else if (MODULE_MANAGER.isModuleEnabled(MapPreview.class) && stack.getItem() instanceof ItemMap) {
MapData mapData = MapPreview.getMapData(stack);
if (mapData == null) return;
info.cancel();
MapPreview mp = MODULE_MANAGER.getModuleT(MapPreview.class);
int xl = x + 6;
int yl = y + 6;
GL11.glPushMatrix();
GlStateManager.color(1f, 1f, 1f); // this dumbass shit is needed for some fucking reason???? thanks tiger for figuring this one out
Tessellator tessellator = Tessellator.getInstance();
BufferBuilder bufferbuilder = tessellator.getBuffer();
GlStateManager.translate(xl, yl, 0.0);
GlStateManager.scale(mp.getScale().getValue() / 5.0, mp.getScale().getValue() / 5.0, 0.0);
RenderHelper.enableGUIStandardItemLighting(); // needed to make lighting work inside non inventory containers
mc.getTextureManager().bindTexture(RES_MAP_BACKGROUND);
/* taken from mc code, draw the maps frame */
if (mp.getFrame().getValue()) {
glDepthRange(0, 0.01); // fix drawing under other layers, just draw over everything
bufferbuilder.begin(7, DefaultVertexFormats.POSITION_TEX);
bufferbuilder.pos(-7.0D, 135.0D, 0.0D).tex(0.0D, 1.0D).endVertex();
bufferbuilder.pos(135.0D, 135.0D, 0.0D).tex(1.0D, 1.0D).endVertex();
bufferbuilder.pos(135.0D, -7.0D, 0.0D).tex(1.0D, 0.0D).endVertex();
bufferbuilder.pos(-7.0D, -7.0D, 0.0D).tex(0.0D, 0.0D).endVertex();
tessellator.draw();
glDepthRange(0, 1.0); // undo changes to rendering order
}
/* Draw the map */
GlStateManager.disableDepth(); // needed to keep it on top of the frame
glDepthRange(0, 0.01);
mc.entityRenderer.getMapItemRenderer().renderMap(mapData, !mp.getFrame().getValue());
glDepthRange(0, 1.0);
GlStateManager.enableDepth(); // originally enabled
RenderHelper.disableStandardItemLighting(); // originally disabled
GL11.glPopMatrix();
}
}

View File

@ -0,0 +1,32 @@
package me.zeroeightsix.kami.module.modules.render
import me.zeroeightsix.kami.module.Module
import me.zeroeightsix.kami.setting.Setting
import me.zeroeightsix.kami.setting.Settings
import net.minecraft.item.ItemMap
import net.minecraft.item.ItemStack
import net.minecraft.world.World
import net.minecraft.world.storage.MapData
/**
* Created by fred41 on 27/05/2020.
* Greatly updated by dominikaaaa on 01/06/20, fixed loads of bugs
* @see me.zeroeightsix.kami.mixin.client.MixinGuiScreen
*/
@Module.Info(
name = "MapPreview",
category = Module.Category.RENDER,
description = "Previews maps when hovering over them"
)
class MapPreview : Module() {
val frame: Setting<Boolean> = register(Settings.b("Show Frame", true))
val scale: Setting<Double> = register(Settings.doubleBuilder("Size").withRange(0.0, 10.0).withValue(5.0).build())
companion object MapPreview {
@JvmStatic
fun getMapData(itemStack: ItemStack): MapData? {
return (itemStack.getItem() as ItemMap).getMapData(itemStack, mc.world as World)
}
}
}