Jump to content

[SOLVED] Changing items texture when the mouse is over the item in the inventory


Kwibble

Recommended Posts

As the question states, I want to change the texture of my item (only the one under the mouse) to another one when the mouse is hovering over it.

 

Does anyone have any ideas and or suggestions on how to go about this? Thanks.

We all stuff up sometimes... But I seem to be at the bottom of that pot.

Link to comment
Share on other sites

Thanks diesieben07 for the idea.

 

However, I am having an annoying time trying to implement it!

 

I have this:

GuiScreen currentScreen = ModuleDendri.proxy.getCurrentScreen();

if (currentScreen != null)
{
if (currentScreen instanceof GuiContainer)
{
        	Container container = ( (GuiContainer) currentScreen ).inventorySlots;

        	for (int j = 0; j < container.inventorySlots.size(); ++j)
	{
		Slot slot = (Slot) container.inventorySlots.get(j);

		if (slot.getStack() != null)
		{
			if (slot.getStack().getItem() == ItemDendri.mist_bottle)
			{
				int x = slot.xDisplayPosition - 1;
				int y = slot.yDisplayPosition - 1;
				int mouseX = Mouse.getX();
				int mouseY = this.flippedMouseY();

                        	if (mouseX >= ( x ) && mouseX <= ( x + 17 ))
				{
					if (mouseY >= ( y ) && mouseY <= ( y + 17 ))
					{
						return this.spriteIcons[getSpriteIndex(this.containedDendri)];
					}
				}
			}
		}
	}
}
}

 

And the slot coordinates are so wrong it's not funny. Here is an example of the coordinates:

Slot X: 62
Slot Y: 111
Mouse X: 374
Mouse Y: 348

 

So what I need now is a way to move my slot coordinates to the right spot, or to have the mouse coordinates translated to the right spot. And I don't want to just go about and say Mouse.getX() - 200; or something like that. Unless of course that works when you resize the screen... (Which I highly doubt).

We all stuff up sometimes... But I seem to be at the bottom of that pot.

Link to comment
Share on other sites

What would you suggest is doing it?

 

This is what they use:

        this.mc.mcProfiler.startSection("mouse");

        if (this.mc.inGameHasFocus && flag)
        {
            this.mc.mouseHelper.mouseXYChange();
            float f1 = this.mc.gameSettings.mouseSensitivity * 0.6F + 0.2F;
            float f2 = f1 * f1 * f1 * 8.0F;
            float f3 = (float)this.mc.mouseHelper.deltaX * f2;
            float f4 = (float)this.mc.mouseHelper.deltaY * f2;
            byte b0 = 1;

            if (this.mc.gameSettings.invertMouse)
            {
                b0 = -1;
            }

            if (this.mc.gameSettings.smoothCamera)
            {
                this.smoothCamYaw += f3;
                this.smoothCamPitch += f4;
                float f5 = par1 - this.smoothCamPartialTicks;
                this.smoothCamPartialTicks = par1;
                f3 = this.smoothCamFilterX * f5;
                f4 = this.smoothCamFilterY * f5;
                this.mc.thePlayer.setAngles(f3, f4 * (float)b0);
            }
            else
            {
                this.mc.thePlayer.setAngles(f3, f4 * (float)b0);
            }
        }

        this.mc.mcProfiler.endSection();

We all stuff up sometimes... But I seem to be at the bottom of that pot.

Link to comment
Share on other sites

Thanks so much diesieben07!

 

For anyone who is wanting to know how to do it, here is what I used:

        @Override
public IIcon getIconIndex(ItemStack par1ItemStack)
{
	if (this.containsDendri)
	{
		GuiScreen currentScreen = ModuleDendri.proxy.getCurrentScreen();

		if (currentScreen != null)
		{
			if (currentScreen instanceof GuiContainer)
			{
				Container container = ( (GuiContainer) currentScreen ).inventorySlots;

				for (int j = 0; j < container.inventorySlots.size(); ++j)
				{
					Slot slot = (Slot) container.inventorySlots.get(j);

					if (slot.getStack() != null)
					{
						if (slot.getStack() == par1ItemStack)
						{
							Minecraft mc = Minecraft.getMinecraft();
							ScaledResolution sr = new ScaledResolution(mc.gameSettings, mc.displayWidth, mc.displayHeight);
							final int x = slot.xDisplayPosition - 1;
							final int y = slot.yDisplayPosition - 1;
							final int width = sr.getScaledWidth();
							final int height = sr.getScaledHeight();
							final int guiLeft = (width - 176) / 2;
							final int guiTop = (height - 166) / 2;
							final int mouseX = (Mouse.getX() * width / mc.displayWidth) - guiLeft + 9;
							final int mouseY = (height - Mouse.getY() * height / mc.displayHeight - 1) - guiTop - 15;

							if (mouseX >= ( x ) && mouseX <= ( x + 17 ))
							{
								if (mouseY >= ( y ) && mouseY <= ( y + 17 ))
								{
									return this.symbolIcons[getSymbolIndexForContainedDendri()];
								}
							}
						}
					}
				}
			}
		}
		return this.icons[1];
	}
	return this.icons[0];
}

We all stuff up sometimes... But I seem to be at the bottom of that pot.

Link to comment
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.
Note: Your post will require moderator approval before it will be visible.

Guest
Unfortunately, your content contains terms that we do not allow. Please edit your content to remove the highlighted words below.
Reply to this topic...

×   Pasted as rich text.   Restore formatting

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.



  • Recently Browsing

    • No registered users viewing this page.
  • Posts

    • So, ive seen this issue before, and i've deleted the forge-client.toml file already, because the part in other issues closely related to this, but this seems to be new to me. everytime it loads everything in the forge menu, it then says loading minecraft, and as it gets to the home page, it crashes, and it states this in the crash report. "the game crashed while rendering overlay. Error: java.lang.ExceptionInInitializerError: null" 
    • So I tried to search the issue but came up with nothing, the most I could get was some people having a mod location between the colon and the word "failed" but I seem to have nothing there. I am also making a modpack of my own, and tips are appreciated!
    • Heres a updated version of my github https://github.com/THEKINGSKULL01/TSOTD0.0.30Forge1.20.1
    • When i go to the forge website to download any of the choices of versions I am unable to download anything. It just says that I am unable to reach this website for some reason.
    • hi everyone how can i make this script smoother or make them delay    @SubscribeEvent(       priority = EventPriority.HIGH    )    public void renderCrosshair(RenderGameOverlayEvent event) {       if(mc.gameSettings.guiScale == 2) {       Minecraft minecraft = Minecraft.getMinecraft();       if(event.type == ElementType.CROSSHAIRS && isGunInHand(minecraft.thePlayer)) {          event.setCanceled(true);          Icon crosshairIcon = ClientProxy.iconRegistry.crosshairIcon;          double scale = 6.0F + getScaleByMotion(minecraft.thePlayer);          if(FlansModClient.currentScope == null)          scale = 45.0F + getScaleByMotion(minecraft.thePlayer);                    GL11.glPushAttrib(16384);          GL11.glPushMatrix();          GL11.glEnable(3042);          OpenGlHelper.glBlendFunc(775, 769, 1, 0);          GL11.glEnable(3008);          GL11.glColor3d(1.0D, 1.0D, 1.0D);          GL11.glTranslated((double)(event.resolution.getScaledWidth() / 2), (double)(event.resolution.getScaledHeight() / 2), 0.0D);          GL11.glPushMatrix();          ClientProxy.iconRegistry.bindSheet();          GL11.glRotated(90.0D, 0.0D, 0.0D, 2.0D);          ClientProxy.iconRegistry.renderIcon(crosshairIcon, -1.9D, (double)(-scale) + 0.1D);          GL11.glRotated(90.0D, 0.0D, 0.0D, 1.0D);          ClientProxy.iconRegistry.renderIcon(crosshairIcon, -3.0D, (double)(-scale) - 0.1D);          GL11.glRotated(90.0D, 0.0D, 0.0D, 1.0D);          ClientProxy.iconRegistry.renderIcon(crosshairIcon, -3.0D, (double)(-scale) + 0.9D);                    if(FlansModClient.currentScope == null)                        {          GL11.glRotated(90.0D, 0.0D, 0.0D, 1.0D);          ClientProxy.iconRegistry.renderIcon(crosshairIcon, -2.1D, (double)(-scale) + 0.9D);          }                    else if (scale >= 6.5F)          {          GL11.glRotated(90.0D, 0.0D, 0.0D, 1.0D);          ClientProxy.iconRegistry.renderIcon(crosshairIcon, -2.1D, (double)(-scale) + 0.9D);          }                    GL11.glPopMatrix();          GL11.glPopMatrix();          GL11.glPopAttrib();          minecraft.getTextureManager().bindTexture(Gui.icons);       }       }    }
  • Topics

×
×
  • Create New...

Important Information

By using this site, you agree to our Terms of Use.