Jump to content

[1.7.10] updateGui won't call!


HappyKiller1O1

Recommended Posts

Ok so, I am trying to make it where the achievement thing that appears when you get an achievements appears also when you pick up my mods coin. So I found the class that makes the achievement thing happen and copied over then edited away unnecessary things. My problem is the updateGui, although my tick handler works just fine, won't seem to run. Someone please help!

 

Gui class:

 

package com.happykiller.crewmod.client.gui;

import net.minecraft.client.Minecraft;
import net.minecraft.client.gui.Gui;
import net.minecraft.client.gui.ScaledResolution;
import net.minecraft.client.renderer.RenderHelper;
import net.minecraft.client.renderer.entity.RenderItem;
import net.minecraft.item.ItemStack;
import net.minecraft.util.ResourceLocation;

import org.lwjgl.opengl.GL11;
import org.lwjgl.opengl.GL12;

import com.happykiller.crewmod.CrewMod;

import cpw.mods.fml.relauncher.Side;
import cpw.mods.fml.relauncher.SideOnly;

@SideOnly(Side.CLIENT)
public class GuiCoinCollected extends Gui
{
    private static final ResourceLocation texAchi = new ResourceLocation("textures/gui/achievement/achievement_background.png");

    /** Holds the instance of the game (Minecraft) */
    private Minecraft theGame;

    /** Holds the latest width scaled to fit the game window. */
    private int width;

    /** Holds the latest height scaled to fit the game window. */
    private int height;
    private String headerText;
    private String coinNameText;
    
    private RenderItem renderedItem;
    
    private boolean canUpdate;

    private long unlockedTime;
    
    public GuiCoinCollected(Minecraft mc) {
    	this.theGame = mc;
    	this.renderedItem = new RenderItem();
    	this.canUpdate = false;
    }
    
    private void updateWindowScale()
    {
    	if(!theGame.theWorld.isRemote) {
    	System.out.println("STARTING WINDOW SCALE");
        GL11.glViewport(0, 0, this.theGame.displayWidth, this.theGame.displayHeight);
        GL11.glMatrixMode(GL11.GL_PROJECTION);
        GL11.glLoadIdentity();
        GL11.glMatrixMode(GL11.GL_MODELVIEW);
        GL11.glLoadIdentity();
        this.width = this.theGame.displayWidth;
        this.height = this.theGame.displayHeight;
        ScaledResolution scaledresolution = new ScaledResolution(this.theGame, this.theGame.displayWidth, this.theGame.displayHeight);
        this.width = scaledresolution.getScaledWidth();
        this.height = scaledresolution.getScaledHeight();
        GL11.glClear(GL11.GL_DEPTH_BUFFER_BIT);
        GL11.glMatrixMode(GL11.GL_PROJECTION);
        GL11.glLoadIdentity();
        GL11.glOrtho(0.0D, (double)this.width, (double)this.height, 0.0D, 1000.0D, 3000.0D);
        GL11.glMatrixMode(GL11.GL_MODELVIEW);
        GL11.glLoadIdentity();
        GL11.glTranslatef(0.0F, 0.0F, -2000.0F);
    	System.out.println("ENDING WINDOW SCALE");
    	}
    }

    public void updateGui()
    {
    	if(!theGame.theWorld.isRemote) {
        if (this.unlockedTime != 0L && Minecraft.getMinecraft().thePlayer != null)
        {
        	System.out.println("PAST FIRST LINE!");
        	
            double d0 = (double)(Minecraft.getSystemTime() - this.unlockedTime) / 3000.0D;

            if (!this.canUpdate)
            {
            	System.out.println("canUpdate EQUALED FALSE!");
            	
                if (d0 < 0.0D || d0 > 1.0D)
                {
                   this.unlockedTime = 0L;
                   return;
               }
           }
            else if (d0 > 0.5D)
            {
                d0 = 0.5D;
            }
            
            System.out.println("STARTING RENDER");

            this.updateWindowScale();
            GL11.glDisable(GL11.GL_DEPTH_TEST);
            GL11.glDepthMask(false);
            double d1 = d0 * 2.0D;

            if (d1 > 1.0D)
            {
                d1 = 2.0D - d1;
            }

            d1 *= 4.0D;
            d1 = 1.0D - d1;

            if (d1 < 0.0D)
            {
                d1 = 0.0D;
            }

            d1 *= d1;
            d1 *= d1;
            int i = this.width - 160;
            int j = 0 - (int)(d1 * 36.0D);
            GL11.glColor4f(1.0F, 1.0F, 1.0F, 1.0F);
            GL11.glEnable(GL11.GL_TEXTURE_2D);
            this.theGame.getTextureManager().bindTexture(texAchi);
            GL11.glDisable(GL11.GL_LIGHTING);
            this.drawTexturedModalRect(i, j, 96, 202, 160, 32);
            
        	System.out.println("RENDERED BOX");

            //if (this.field_146262_n)
            //{
            //    this.theGame.fontRenderer.drawSplitString(this.field_146265_j, i + 30, j + 7, 120, -1);
            //}
            //else
           // {
                this.theGame.fontRenderer.drawString(this.headerText, i + 30, j + 7, -256);
                this.theGame.fontRenderer.drawString(this.coinNameText, i + 30, j + 18, -1);
           // }

            RenderHelper.enableGUIStandardItemLighting();
            GL11.glDisable(GL11.GL_LIGHTING);
            GL11.glEnable(GL12.GL_RESCALE_NORMAL);
            GL11.glEnable(GL11.GL_COLOR_MATERIAL);
            GL11.glEnable(GL11.GL_LIGHTING);
            this.renderedItem.renderItemAndEffectIntoGUI(this.theGame.fontRenderer, this.theGame.getTextureManager(), new ItemStack(CrewMod.crewCoin), i + 8, j + ;
            GL11.glDisable(GL11.GL_LIGHTING);
            GL11.glDepthMask(true);
            GL11.glEnable(GL11.GL_DEPTH_TEST);
            
        	System.out.println("FINISHED RENDERING");
        }
    	}
    }
    
    public void checkUnlockTime() {
    	if(this.unlockedTime != 0) {
    		updateGui();
    	}
    }
    
    public long setUnlockTime(long amount) {
    	System.out.println("SET UNLOCK TIME TO: " + amount);
    	return this.unlockedTime = amount;
    }
    
    public void setUnlockTime() {
    	this.unlockedTime = theGame.getSystemTime() + 2500L;
    	this.canUpdate = true;
    	updateGui();
    	System.out.println("SET UNLOCK TIME TO SYSTEM TIME");
    }
}

 

Tickhandler (registered through my client proxy)

package com.happykiller.crewmod.client;

import net.minecraft.client.Minecraft;
import net.minecraft.client.gui.GuiScreen;
import net.minecraft.client.multiplayer.WorldClient;

import com.happykiller.crewmod.client.gui.GuiCoinCollected;

import cpw.mods.fml.common.eventhandler.SubscribeEvent;
import cpw.mods.fml.common.gameevent.TickEvent.Phase;
import cpw.mods.fml.common.gameevent.TickEvent.RenderTickEvent;
import cpw.mods.fml.relauncher.Side;
import cpw.mods.fml.relauncher.SideOnly;

@SideOnly(Side.CLIENT)
public class TickHandlerClient {
public GuiCoinCollected guiCoin;

@SubscribeEvent
public void renderTick(RenderTickEvent event) {
	Minecraft mc = Minecraft.getMinecraft();
	guiCoin = new GuiCoinCollected(mc);
	GuiScreen screen = mc.currentScreen;

	if(mc.theWorld != null) {
		WorldClient world = mc.theWorld;

		if(event.phase == Phase.START) {
			guiCoin.updateGui();
			System.out.println("START");

		}else {
			guiCoin.updateGui();
			System.out.println("END");
		}
	}
}
}

I am not a cat. I know my profile picture is sexy and amazing beyond anything you could imagine but my cat like features only persist in my fierce eyes. I might be a cat.

Link to comment
Share on other sites

You wrote:

if(!theGame.theWorld.isRemote)

That checks if it is Server World.. In  rendering code!

You should remove that because rendering is only run on client side.

I. Stellarium for Minecraft: Configurable Universe for Minecraft! (WIP)

II. Stellar Sky, Better Star Rendering&Sky Utility mod, had separated from Stellarium.

Link to comment
Share on other sites

See, when I change it I get a "OpenGL not found in current Thread" error. Meaning, it was trying to run it server side. This problem is confusing me beyond the point of reason.

I am not a cat. I know my profile picture is sexy and amazing beyond anything you could imagine but my cat like features only persist in my fierce eyes. I might be a cat.

Link to comment
Share on other sites

When I was looking through the other code of mods that use the Achievement Get overlay for something else; they never use it. So, I was thinking to just go around it like they do. Plus, I have no idea how to use that event.

I am not a cat. I know my profile picture is sexy and amazing beyond anything you could imagine but my cat like features only persist in my fierce eyes. I might be a cat.

Link to comment
Share on other sites

When I was looking through the other code of mods that use the Achievement Get overlay for something else; they never use it. So, I was thinking to just go around it like they do. Plus, I have no idea how to use that event.

 

Use it like any other event and register it in your client proxy to register it on your client side.

I'm back from being gone for... I think its been about a year. I'm pretty sure nobody remembers me, but hello anybody who does!

Link to comment
Share on other sites

But, how would I be able to make the overlay appear? Even by using that event my problem would still persist.

 

Do this:

1. Make a class that extends Gui

2. In that class have the RenderGameOverlayEvent

3. Register the gui class in the ClientProxy

4. In the RenderGameOverlayEvent have whatever you want to do if your gui class says to(have a boolean doRender or something): rendering text, pictures,etc.

 

I'm back from being gone for... I think its been about a year. I'm pretty sure nobody remembers me, but hello anybody who does!

Link to comment
Share on other sites

So, like this?

 

@SideOnly(Side.CLIENT)
public class GuiCoinCollected extends Gui
{
    private static final ResourceLocation texAchi = new ResourceLocation("textures/gui/achievement/achievement_background.png");

    /** Holds the instance of the game (Minecraft) */
    private Minecraft theGame;

    /** Holds the latest width scaled to fit the game window. */
    private int width;

    /** Holds the latest height scaled to fit the game window. */
    private int height;
    private String headerText;
    private String coinNameText;
    
    private RenderItem renderedItem;
    
    private boolean canUpdate;

    private long unlockedTime;
    
    public GuiCoinCollected(Minecraft mc) {
    	this.theGame = mc;
    	this.renderedItem = new RenderItem();
    	this.canUpdate = false;
    }
    
    private void updateWindowScale()
    {
    	//if(!theGame.theWorld.isRemote) {
    	System.out.println("STARTING WINDOW SCALE");
        GL11.glViewport(0, 0, this.theGame.displayWidth, this.theGame.displayHeight);
        GL11.glMatrixMode(GL11.GL_PROJECTION);
        GL11.glLoadIdentity();
        GL11.glMatrixMode(GL11.GL_MODELVIEW);
        GL11.glLoadIdentity();
        this.width = this.theGame.displayWidth;
        this.height = this.theGame.displayHeight;
        ScaledResolution scaledresolution = new ScaledResolution(this.theGame, this.theGame.displayWidth, this.theGame.displayHeight);
        this.width = scaledresolution.getScaledWidth();
        this.height = scaledresolution.getScaledHeight();
        GL11.glClear(GL11.GL_DEPTH_BUFFER_BIT);
        GL11.glMatrixMode(GL11.GL_PROJECTION);
        GL11.glLoadIdentity();
        GL11.glOrtho(0.0D, (double)this.width, (double)this.height, 0.0D, 1000.0D, 3000.0D);
        GL11.glMatrixMode(GL11.GL_MODELVIEW);
        GL11.glLoadIdentity();
        GL11.glTranslatef(0.0F, 0.0F, -2000.0F);
    	System.out.println("ENDING WINDOW SCALE");
    	//}
    }
    
    @SubscribeEvent(priority = EventPriority.NORMAL)
    public void onRenderExperienceBar(RenderGameOverlayEvent event) {
    	if(event.isCancelable() || event.type != ElementType.EXPERIENCE) {
    		return;
    	}
    	
    	updateGui();
    }

    public void updateGui() {
    	//if(!theGame.theWorld.isRemote) {
        if (this.unlockedTime != 0L && Minecraft.getMinecraft().thePlayer != null)
        {
        	System.out.println("PAST FIRST LINE!");
        	
            double d0 = (double)(Minecraft.getSystemTime() - this.unlockedTime) / 3000.0D;

            if (!this.canUpdate)
            {
            	System.out.println("canUpdate EQUALED FALSE!");
            	
                if (d0 < 0.0D || d0 > 1.0D)
                {
                   this.unlockedTime = 0L;
                   return;
               }
           }
            else if (d0 > 0.5D)
            {
                d0 = 0.5D;
            }
            
            System.out.println("STARTING RENDER");

            this.updateWindowScale();
            GL11.glDisable(GL11.GL_DEPTH_TEST);
            GL11.glDepthMask(false);
            double d1 = d0 * 2.0D;

            if (d1 > 1.0D)
            {
                d1 = 2.0D - d1;
            }

            d1 *= 4.0D;
            d1 = 1.0D - d1;

            if (d1 < 0.0D)
            {
                d1 = 0.0D;
            }

            d1 *= d1;
            d1 *= d1;
            int i = this.width - 160;
            int j = 0 - (int)(d1 * 36.0D);
            GL11.glColor4f(1.0F, 1.0F, 1.0F, 1.0F);
            GL11.glEnable(GL11.GL_TEXTURE_2D);
            this.theGame.getTextureManager().bindTexture(texAchi);
            GL11.glDisable(GL11.GL_LIGHTING);
            this.drawTexturedModalRect(i, j, 96, 202, 160, 32);
            
        	System.out.println("RENDERED BOX");

            //if (this.field_146262_n)
            //{
            //    this.theGame.fontRenderer.drawSplitString(this.field_146265_j, i + 30, j + 7, 120, -1);
            //}
            //else
           // {
                this.theGame.fontRenderer.drawString(this.headerText, i + 30, j + 7, -256);
                this.theGame.fontRenderer.drawString(this.coinNameText, i + 30, j + 18, -1);
           // }

            RenderHelper.enableGUIStandardItemLighting();
            GL11.glDisable(GL11.GL_LIGHTING);
            GL11.glEnable(GL12.GL_RESCALE_NORMAL);
            GL11.glEnable(GL11.GL_COLOR_MATERIAL);
            GL11.glEnable(GL11.GL_LIGHTING);
            this.renderedItem.renderItemAndEffectIntoGUI(this.theGame.fontRenderer, this.theGame.getTextureManager(), new ItemStack(CrewMod.crewCoin), i + 8, j + ;
            GL11.glDisable(GL11.GL_LIGHTING);
            GL11.glDepthMask(true);
            GL11.glEnable(GL11.GL_DEPTH_TEST);
            
        	System.out.println("FINISHED RENDERING");
        }
    	//}
    }
    
    public void checkUnlockTime() {
    	if(this.unlockedTime != 0) {
    		updateGui();
    	}
    }
    
    public long setUnlockTime(long amount) {
    	System.out.println("SET UNLOCK TIME TO: " + amount);
    	return this.unlockedTime = amount;
    }
    
    public void setUnlockTime() {
    	this.unlockedTime = theGame.getSystemTime() + 2500L;
    	this.canUpdate = true;
    	updateGui();
    	System.out.println("SET UNLOCK TIME TO SYSTEM TIME");
    }
}

I am not a cat. I know my profile picture is sexy and amazing beyond anything you could imagine but my cat like features only persist in my fierce eyes. I might be a cat.

Link to comment
Share on other sites

So, like this?

 

@SideOnly(Side.CLIENT)
public class GuiCoinCollected extends Gui
{
    private static final ResourceLocation texAchi = new ResourceLocation("textures/gui/achievement/achievement_background.png");

    /** Holds the instance of the game (Minecraft) */
    private Minecraft theGame;

    /** Holds the latest width scaled to fit the game window. */
    private int width;

    /** Holds the latest height scaled to fit the game window. */
    private int height;
    private String headerText;
    private String coinNameText;
    
    private RenderItem renderedItem;
    
    private boolean canUpdate;

    private long unlockedTime;
    
    public GuiCoinCollected(Minecraft mc) {
    	this.theGame = mc;
    	this.renderedItem = new RenderItem();
    	this.canUpdate = false;
    }
    
    private void updateWindowScale()
    {
    	//if(!theGame.theWorld.isRemote) {
    	System.out.println("STARTING WINDOW SCALE");
        GL11.glViewport(0, 0, this.theGame.displayWidth, this.theGame.displayHeight);
        GL11.glMatrixMode(GL11.GL_PROJECTION);
        GL11.glLoadIdentity();
        GL11.glMatrixMode(GL11.GL_MODELVIEW);
        GL11.glLoadIdentity();
        this.width = this.theGame.displayWidth;
        this.height = this.theGame.displayHeight;
        ScaledResolution scaledresolution = new ScaledResolution(this.theGame, this.theGame.displayWidth, this.theGame.displayHeight);
        this.width = scaledresolution.getScaledWidth();
        this.height = scaledresolution.getScaledHeight();
        GL11.glClear(GL11.GL_DEPTH_BUFFER_BIT);
        GL11.glMatrixMode(GL11.GL_PROJECTION);
        GL11.glLoadIdentity();
        GL11.glOrtho(0.0D, (double)this.width, (double)this.height, 0.0D, 1000.0D, 3000.0D);
        GL11.glMatrixMode(GL11.GL_MODELVIEW);
        GL11.glLoadIdentity();
        GL11.glTranslatef(0.0F, 0.0F, -2000.0F);
    	System.out.println("ENDING WINDOW SCALE");
    	//}
    }
    
    @SubscribeEvent(priority = EventPriority.NORMAL)
    public void onRenderExperienceBar(RenderGameOverlayEvent event) {
    	if(event.isCancelable() || event.type != ElementType.EXPERIENCE) {
    		return;
    	}
    	
    	updateGui();
    }

    public void updateGui() {
    	//if(!theGame.theWorld.isRemote) {
        if (this.unlockedTime != 0L && Minecraft.getMinecraft().thePlayer != null)
        {
        	System.out.println("PAST FIRST LINE!");
        	
            double d0 = (double)(Minecraft.getSystemTime() - this.unlockedTime) / 3000.0D;

            if (!this.canUpdate)
            {
            	System.out.println("canUpdate EQUALED FALSE!");
            	
                if (d0 < 0.0D || d0 > 1.0D)
                {
                   this.unlockedTime = 0L;
                   return;
               }
           }
            else if (d0 > 0.5D)
            {
                d0 = 0.5D;
            }
            
            System.out.println("STARTING RENDER");

            this.updateWindowScale();
            GL11.glDisable(GL11.GL_DEPTH_TEST);
            GL11.glDepthMask(false);
            double d1 = d0 * 2.0D;

            if (d1 > 1.0D)
            {
                d1 = 2.0D - d1;
            }

            d1 *= 4.0D;
            d1 = 1.0D - d1;

            if (d1 < 0.0D)
            {
                d1 = 0.0D;
            }

            d1 *= d1;
            d1 *= d1;
            int i = this.width - 160;
            int j = 0 - (int)(d1 * 36.0D);
            GL11.glColor4f(1.0F, 1.0F, 1.0F, 1.0F);
            GL11.glEnable(GL11.GL_TEXTURE_2D);
            this.theGame.getTextureManager().bindTexture(texAchi);
            GL11.glDisable(GL11.GL_LIGHTING);
            this.drawTexturedModalRect(i, j, 96, 202, 160, 32);
            
        	System.out.println("RENDERED BOX");

            //if (this.field_146262_n)
            //{
            //    this.theGame.fontRenderer.drawSplitString(this.field_146265_j, i + 30, j + 7, 120, -1);
            //}
            //else
           // {
                this.theGame.fontRenderer.drawString(this.headerText, i + 30, j + 7, -256);
                this.theGame.fontRenderer.drawString(this.coinNameText, i + 30, j + 18, -1);
           // }

            RenderHelper.enableGUIStandardItemLighting();
            GL11.glDisable(GL11.GL_LIGHTING);
            GL11.glEnable(GL12.GL_RESCALE_NORMAL);
            GL11.glEnable(GL11.GL_COLOR_MATERIAL);
            GL11.glEnable(GL11.GL_LIGHTING);
            this.renderedItem.renderItemAndEffectIntoGUI(this.theGame.fontRenderer, this.theGame.getTextureManager(), new ItemStack(CrewMod.crewCoin), i + 8, j + ;
            GL11.glDisable(GL11.GL_LIGHTING);
            GL11.glDepthMask(true);
            GL11.glEnable(GL11.GL_DEPTH_TEST);
            
        	System.out.println("FINISHED RENDERING");
        }
    	//}
    }
    
    public void checkUnlockTime() {
    	if(this.unlockedTime != 0) {
    		updateGui();
    	}
    }
    
    public long setUnlockTime(long amount) {
    	System.out.println("SET UNLOCK TIME TO: " + amount);
    	return this.unlockedTime = amount;
    }
    
    public void setUnlockTime() {
    	this.unlockedTime = theGame.getSystemTime() + 2500L;
    	this.canUpdate = true;
    	updateGui();
    	System.out.println("SET UNLOCK TIME TO SYSTEM TIME");
    }
}

I don't see anything wrong with it at first glance. Run it and tell us if anything goes wrong.

I'm back from being gone for... I think its been about a year. I'm pretty sure nobody remembers me, but hello anybody who does!

Link to comment
Share on other sites

So it all runs (the print outs show) but its not seeming to draw the box. Any input?

Don't use drawTexturedModalRect use this:

 

public static void drawTexturedQuadFit(double x, double y, double width, double height, double zLevel){
	Tessellator tessellator = Tessellator.instance;
        tessellator.startDrawingQuads();
        tessellator.addVertexWithUV(x + 0, y + height, zLevel, 0,1); 
        tessellator.addVertexWithUV(x + width, y + height, zLevel, 1, 1);
        tessellator.addVertexWithUV(x + width, y + 0, zLevel, 1,0);
        tessellator.addVertexWithUV(x + 0, y + 0, zLevel, 0, 0);
        tessellator.draw();
}

And call that whenever you need to instead of the drawTexturedModalRect

I dont think it will help with your problem but ok..

 

Try putting the box at 0,0 and see if that works...

I'm back from being gone for... I think its been about a year. I'm pretty sure nobody remembers me, but hello anybody who does!

Link to comment
Share on other sites

The last two parameters of Tessellator#addVertexWithUV is the UV value, so you can change that.

I. Stellarium for Minecraft: Configurable Universe for Minecraft! (WIP)

II. Stellar Sky, Better Star Rendering&Sky Utility mod, had separated from Stellarium.

Link to comment
Share on other sites

Of course you have to modify the size.. It is simple, you just need to modify width and height.

I. Stellarium for Minecraft: Configurable Universe for Minecraft! (WIP)

II. Stellar Sky, Better Star Rendering&Sky Utility mod, had separated from Stellarium.

Link to comment
Share on other sites

I forgot to add text to the strings. xD My last problem is my main one. I can't seem to call updateGui() when picking up my coin. Here are my classes:

 

GuiCoinCollected

@SideOnly(Side.CLIENT)
public class GuiCoinCollected extends Gui
{
    private static final ResourceLocation texAchi = new ResourceLocation(MR.TNAME + "textures/gui/coin_collected.png");

    /** Holds the instance of the game (Minecraft) */
    private Minecraft theGame;

    /** Holds the latest width scaled to fit the game window. */
    private int width;

    /** Holds the latest height scaled to fit the game window. */
    private int height;
    private String headerText;
    private String coinNameText;
    
    private RenderItem renderedItem;
    
    private boolean canUpdate;

    private long unlockedTime;
    
    public GuiCoinCollected(Minecraft mc) {
    	this.theGame = mc;
    	this.renderedItem = new RenderItem();
    	this.canUpdate = false;
    	this.headerText = "Coin Collected!";
    	this.coinNameText = "x ";
    }
    
    private void updateWindowScale() {
    	//if(!theGame.theWorld.isRemote) {
    	System.out.println("STARTING WINDOW SCALE");
        GL11.glViewport(0, 0, this.theGame.displayWidth, this.theGame.displayHeight);
        GL11.glMatrixMode(GL11.GL_PROJECTION);
        GL11.glLoadIdentity();
        GL11.glMatrixMode(GL11.GL_MODELVIEW);
        GL11.glLoadIdentity();
        this.width = this.theGame.displayWidth;
        this.height = this.theGame.displayHeight;
        ScaledResolution scaledresolution = new ScaledResolution(this.theGame, this.theGame.displayWidth, this.theGame.displayHeight);
        this.width = scaledresolution.getScaledWidth();
        this.height = scaledresolution.getScaledHeight();
        GL11.glClear(GL11.GL_DEPTH_BUFFER_BIT);
        GL11.glMatrixMode(GL11.GL_PROJECTION);
        GL11.glLoadIdentity();
        GL11.glOrtho(0.0D, (double)this.width, (double)this.height, 0.0D, 1000.0D, 3000.0D);
        GL11.glMatrixMode(GL11.GL_MODELVIEW);
        GL11.glLoadIdentity();
        GL11.glTranslatef(0.0F, 0.0F, -2000.0F);
    	System.out.println("ENDING WINDOW SCALE");
    	//}
    }
    
    @SubscribeEvent(priority = EventPriority.NORMAL)
    public void onRenderExperienceBar(RenderGameOverlayEvent event) {
    	if(event.isCancelable() || event.type != ElementType.EXPERIENCE) {
    		return;
    	}
    	
    	//testUpdate();
    	
    	//if(this.canUpdate) {
        //	updateGui();
    	//}
    	
    	updateGui();
    }

    public void updateGui() {
    	//if(!theGame.theWorld.isRemote) {
        if (this.unlockedTime != 0L && Minecraft.getMinecraft().thePlayer != null) {
        	System.out.println("PAST FIRST LINE!");
        	
            double d0 = (double)(Minecraft.getSystemTime() - this.unlockedTime) / 3000.0D;

            if (!this.canUpdate) {
            	System.out.println("canUpdate EQUALED FALSE!");
            	
                if (d0 < 0.0D || d0 > 1.0D) {
                   this.unlockedTime = 0L;
                   return;
                }
           }else if (d0 > 0.5D) {
                d0 = 0.5D;
           }
            
            
           System.out.println("STARTING RENDER");

           this.updateWindowScale();
           GL11.glDisable(GL11.GL_DEPTH_TEST);
           GL11.glDepthMask(false);
           double d1 = d0 * 2.0D;

           if (d1 > 1.0D) {
        	   d1 = 2.0D - d1;
           }

           d1 *= 4.0D;
           d1 = 1.0D - d1;

           if (d1 < 0.0D) {
        	   d1 = 0.0D;
           }

           d1 *= d1;
           d1 *= d1;
           int i = this.width - 160;
           int j = 0 - (int)(d1 * 36.0D);
           GL11.glColor4f(1.0F, 1.0F, 1.0F, 1.0F);
           GL11.glEnable(GL11.GL_TEXTURE_2D);
           this.theGame.getTextureManager().bindTexture(texAchi);
           GL11.glDisable(GL11.GL_LIGHTING);
           this.drawTexturedQuadFit(0, 0, 160, 32, 0);
           //this.drawTexturedModalRect(i, j, 96, 202, 160, 32);
            
           System.out.println("RENDERED BOX");

           if (this.canUpdate) {
        	   this.theGame.fontRenderer.drawSplitString(this.headerText, i + 30, j + 7, 120, -1);
           }else {
        	   this.theGame.fontRenderer.drawString(this.headerText, i + 30, j + 7, -256);
        	   this.theGame.fontRenderer.drawString(this.coinNameText, i + 30, j + 18, -1);
           }
            

            RenderHelper.enableGUIStandardItemLighting();
            GL11.glDisable(GL11.GL_LIGHTING);
            GL11.glEnable(GL12.GL_RESCALE_NORMAL);
            GL11.glEnable(GL11.GL_COLOR_MATERIAL);
            GL11.glEnable(GL11.GL_LIGHTING);
            this.renderedItem.renderItemAndEffectIntoGUI(this.theGame.fontRenderer, this.theGame.getTextureManager(), new ItemStack(CrewMod.crewCoin), i + 8, j + ;
            GL11.glDisable(GL11.GL_LIGHTING);
            GL11.glDepthMask(true);
            GL11.glEnable(GL11.GL_DEPTH_TEST);
            
        	System.out.println("FINISHED RENDERING");
        }
    	//}
    }
    
    public void testUpdate() {
    	System.out.println("STARTING RENDER");
    	
    	double d0 = 0.5D;
    	
        this.updateWindowScale();
        GL11.glDisable(GL11.GL_DEPTH_TEST);
        GL11.glDepthMask(false);
        double d1 = d0 * 2.0D;

        if (d1 > 1.0D)
        {
            d1 = 2.0D - d1;
        }

        d1 *= 4.0D;
        d1 = 1.0D - d1;

        if (d1 < 0.0D)
        {
            d1 = 0.0D;
        }

        d1 *= d1;
        d1 *= d1;
        int i = this.width - 160;
        int j = 0 - (int)(d1 * 36.0D);
        GL11.glColor4f(1.0F, 1.0F, 1.0F, 1.0F);
        GL11.glEnable(GL11.GL_TEXTURE_2D);
        this.theGame.getTextureManager().bindTexture(texAchi);
        GL11.glDisable(GL11.GL_LIGHTING);
        //this.drawTexturedQuadFit(0, 0, 160, 32, 50);
        this.drawTexturedModalRect(i - 50, j, 0, 0, 160, 32);
        
        this.theGame.fontRenderer.drawString(this.headerText, 30, 7, -256);
        this.theGame.fontRenderer.drawString(this.coinNameText, 30, 18, -1);
        
        System.out.println("FINISHED RENDER");
    }
    
    public static void drawTexturedQuadFit(double x, double y, double width, double height, double zLevel){
	Tessellator tessellator = Tessellator.instance;
        tessellator.startDrawingQuads();
        tessellator.addVertexWithUV(x + 0, y + height, zLevel, 0,1); 
        tessellator.addVertexWithUV(x + width, y + height, zLevel, 1, 1);
        tessellator.addVertexWithUV(x + width, y + 0, zLevel, 1,0);
        tessellator.addVertexWithUV(x + 0, y + 0, zLevel, 0, 0);
        tessellator.draw();
}
    
    public void checkUnlockTime() {
    	if(this.unlockedTime != 0) {
    		updateGui();
    	}
    }
    
    public long setUnlockTime(long amount) {
    	System.out.println("SET UNLOCK TIME TO: " + amount);
    	return this.unlockedTime = amount;
    }
    
    public void setUnlockTime() {
    	this.unlockedTime = theGame.getSystemTime() + 2500L;
    	this.canUpdate = true;
    	//updateGui();
    	System.out.println("SET UNLOCK TIME TO SYSTEM TIME");
    }
}

 

EventHandler:

public class CrewEventHandler {

@SubscribeEvent
public void notifyPickup(ItemPickupEvent event) {
	Minecraft mc = Minecraft.getMinecraft();
	GuiCoinCollected guiCoin = new GuiCoinCollected(mc);

	if(event.pickedUp.getEntityItem().isItemEqual(new ItemStack(CrewMod.crewCoin))) {
		event.player.inventory.consumeInventoryItem(CrewMod.crewCoin);	
		CoinKeeper.addCoin(event.player);
		PacketRegistry.network.sendTo(new PacketCoinChangeClient(event.player, CoinKeeper.getCoinAmount(event.player)), (EntityPlayerMP)event.player);

		if(!event.player.worldObj.isRemote) {
			guiCoin.setUnlockTime();
			System.out.println("CLIENT WORLD GOTTEN AND SET UNLOCK TIME");
		}
		//guiCoin.checkUnlockTime();
		//System.out.println("Ran Correctly! Your current coin total is: " + CoinKeeper.getCoinAmount(event.player));
	}
}
}

I am not a cat. I know my profile picture is sexy and amazing beyond anything you could imagine but my cat like features only persist in my fierce eyes. I might be a cat.

Link to comment
Share on other sites

14bhv1y.jpg

 

Remove all Minecraft references from everything. (Only Gui class can use them, because it is client-sided)

 

1. When player picks-up coin, you will update value on server-side holder and send packet telling to open GUI and with new value.

2. On MessageHandler you will update client's value of Coin count and open gui.

3. Gui will use that value (client one).

 

Note: Since coins are per-player: USE IEEP (IExtendedEntityProperties)

http://www.minecraftforum.net/forums/mapping-and-modding/mapping-and-modding-tutorials/1571567-1-7-2-1-6-4-eventhandler-and

2nd post in thread.

 

Also:

if(!event.player.worldObj.isRemote) {
			guiCoin.setUnlockTime();
			System.out.println("CLIENT WORLD GOTTEN AND SET UNLOCK TIME");
		}

 

!isRemote - this is server.

isRemote - this is client.

 

Note 2:

Don't declare new ItemStack - just check item instance and add stack.stackSize

1.7.10 is no longer supported by forge, you are on your own.

Link to comment
Share on other sites

Ok so, that works! But, I can't seem to get it to call the update method more than once.

 

Gui Class:

@SideOnly(Side.CLIENT)
public class GuiCoinCollected extends Gui
{
    private static final ResourceLocation texAchi = new ResourceLocation(MR.TNAME + "textures/gui/coin_collected.png");

    /** Holds the instance of the game (Minecraft) */
    private Minecraft theGame;

    /** Holds the latest width scaled to fit the game window. */
    private int width;

    /** Holds the latest height scaled to fit the game window. */
    private int height;
    private String headerText;
    private String coinNameText;
    
    private RenderItem renderedItem;
    
    private boolean canUpdate;

    private long unlockedTime;
    
    public GuiCoinCollected(Minecraft mc) {
    	this.theGame = mc;
    	this.renderedItem = new RenderItem();
    	this.canUpdate = false;
    	this.headerText = "Coin Collected!";
    	this.coinNameText = "x ";
    }
    
    private void updateWindowScale() {
    	//if(!theGame.theWorld.isRemote) {
    	System.out.println("STARTING WINDOW SCALE");
        GL11.glViewport(0, 0, this.theGame.displayWidth, this.theGame.displayHeight);
        GL11.glMatrixMode(GL11.GL_PROJECTION);
        GL11.glLoadIdentity();
        GL11.glMatrixMode(GL11.GL_MODELVIEW);
        GL11.glLoadIdentity();
        this.width = this.theGame.displayWidth;
        this.height = this.theGame.displayHeight;
        ScaledResolution scaledresolution = new ScaledResolution(this.theGame, this.theGame.displayWidth, this.theGame.displayHeight);
        this.width = scaledresolution.getScaledWidth();
        this.height = scaledresolution.getScaledHeight();
        GL11.glClear(GL11.GL_DEPTH_BUFFER_BIT);
        GL11.glMatrixMode(GL11.GL_PROJECTION);
        GL11.glLoadIdentity();
        GL11.glOrtho(0.0D, (double)this.width, (double)this.height, 0.0D, 1000.0D, 3000.0D);
        GL11.glMatrixMode(GL11.GL_MODELVIEW);
        GL11.glLoadIdentity();
        GL11.glTranslatef(0.0F, 0.0F, -2000.0F);
    	System.out.println("ENDING WINDOW SCALE");
    	//}
    }
    
    @SubscribeEvent(priority = EventPriority.NORMAL)
    public void onRenderExperienceBar(RenderGameOverlayEvent event) {
    	if(event.isCancelable() || event.type != ElementType.EXPERIENCE) {
    		return;
    	}
    	
    	//testUpdate();
    	
    	//if(this.canUpdate) {
        //	updateGui();
    	//}
    	
    	updateGui();
    }

    public void updateGui() {
    	//if(!theGame.theWorld.isRemote) {
        if (this.unlockedTime != 0L && Minecraft.getMinecraft().thePlayer != null) {
        	System.out.println("PAST FIRST LINE!");
        	
            double d0 = (double)(Minecraft.getSystemTime() - this.unlockedTime) / 3000.0D;

            if (!this.canUpdate) {
            	System.out.println("canUpdate EQUALED FALSE!");
            	
                if (d0 < 0.0D || d0 > 1.0D) {
                   this.unlockedTime = 0L;
                   return;
                }
           }else if (d0 > 0.5D) {
                d0 = 0.5D;
           }
            
            
           System.out.println("STARTING RENDER");

           this.updateWindowScale();
           GL11.glDisable(GL11.GL_DEPTH_TEST);
           GL11.glDepthMask(false);
           double d1 = d0 * 2.0D;

           if (d1 > 1.0D) {
        	   d1 = 2.0D - d1;
           }

           d1 *= 4.0D;
           d1 = 1.0D - d1;

           if (d1 < 0.0D) {
        	   d1 = 0.0D;
           }

           d1 *= d1;
           d1 *= d1;
           int i = this.width - 160;
           int j = 0 - (int)(d1 * 36.0D);
           GL11.glColor4f(1.0F, 1.0F, 1.0F, 1.0F);
           GL11.glEnable(GL11.GL_TEXTURE_2D);
           this.theGame.getTextureManager().bindTexture(texAchi);
           GL11.glDisable(GL11.GL_LIGHTING);
           this.drawTexturedQuadFit(0, 0, 160, 32, 0);
           this.drawTexturedModalRect(i - 50, j, 0, 0, 160, 32);
            
           System.out.println("RENDERED BOX");

           if (this.canUpdate) {
        	   this.theGame.fontRenderer.drawSplitString(this.headerText, i + 30, j + 7, 120, -1);
           }else {
        	   this.theGame.fontRenderer.drawString(this.headerText, 30, 7, -256);
               this.theGame.fontRenderer.drawString(this.coinNameText, 30, 18, -1);
           }
            

            RenderHelper.enableGUIStandardItemLighting();
            GL11.glDisable(GL11.GL_LIGHTING);
            GL11.glEnable(GL12.GL_RESCALE_NORMAL);
            GL11.glEnable(GL11.GL_COLOR_MATERIAL);
            GL11.glEnable(GL11.GL_LIGHTING);
            this.renderedItem.renderItemAndEffectIntoGUI(this.theGame.fontRenderer, this.theGame.getTextureManager(), new ItemStack(CrewMod.crewCoin), i + 8, j + ;
            GL11.glDisable(GL11.GL_LIGHTING);
            GL11.glDepthMask(true);
            GL11.glEnable(GL11.GL_DEPTH_TEST);
            
        	System.out.println("FINISHED RENDERING");
        }
    	//}
    }
    
    public void testUpdate() {
    	System.out.println("STARTING RENDER");
    	
    	double d0 = 0.5D;
    	
        this.updateWindowScale();
        GL11.glDisable(GL11.GL_DEPTH_TEST);
        GL11.glDepthMask(false);
        double d1 = d0 * 2.0D;

        if (d1 > 1.0D)
        {
            d1 = 2.0D - d1;
        }

        d1 *= 4.0D;
        d1 = 1.0D - d1;

        if (d1 < 0.0D)
        {
            d1 = 0.0D;
        }

        d1 *= d1;
        d1 *= d1;
        int i = this.width - 160;
        int j = 0 - (int)(d1 * 36.0D);
        GL11.glColor4f(1.0F, 1.0F, 1.0F, 1.0F);
        GL11.glEnable(GL11.GL_TEXTURE_2D);
        this.theGame.getTextureManager().bindTexture(texAchi);
        GL11.glDisable(GL11.GL_LIGHTING);
        //this.drawTexturedQuadFit(0, 0, 160, 32, 50);
        this.drawTexturedModalRect(i - 50, j, 0, 0, 160, 32);
        
        this.theGame.fontRenderer.drawString(this.headerText, 30, 7, -256);
        this.theGame.fontRenderer.drawString(this.coinNameText, 30, 18, -1);
        
        System.out.println("FINISHED RENDER");
    }
    
    public static void drawTexturedQuadFit(double x, double y, double width, double height, double zLevel){
	Tessellator tessellator = Tessellator.instance;
        tessellator.startDrawingQuads();
        tessellator.addVertexWithUV(x + 0, y + height, zLevel, 0,1); 
        tessellator.addVertexWithUV(x + width, y + height, zLevel, 1, 1);
        tessellator.addVertexWithUV(x + width, y + 0, zLevel, 1,0);
        tessellator.addVertexWithUV(x + 0, y + 0, zLevel, 0, 0);
        tessellator.draw();
}
    
    public void checkUnlockTime() {
    	if(this.unlockedTime != 0) {
    		updateGui();
    	}
    }
    
    public long setUnlockTime(long amount) {
    	System.out.println("SET UNLOCK TIME TO: " + amount);
    	return this.unlockedTime = amount;
    }
    
    public void setUnlockTime() {
    	this.unlockedTime = theGame.getSystemTime() + 2500L;
    	this.canUpdate = true;
    	//updateGui();
    	System.out.println("SET UNLOCK TIME TO SYSTEM TIME");
    }
}

 

EventHandler Class:

public class CrewEventHandler {

@SubscribeEvent
public void notifyPickup(ItemPickupEvent event) {
	if(event.pickedUp.getEntityItem().isItemEqual(new ItemStack(CrewMod.crewCoin))) {
		event.player.inventory.consumeInventoryItem(CrewMod.crewCoin);	
		CoinKeeper.addCoin(event.player);
		PacketRegistry.network.sendTo(new PacketCoinChangeClient(event.player, CoinKeeper.getCoinAmount(event.player)),(EntityPlayerMP)event.player);
	}
}
}

I am not a cat. I know my profile picture is sexy and amazing beyond anything you could imagine but my cat like features only persist in my fierce eyes. I might be a cat.

Link to comment
Share on other sites

Uhm what?

public void onRenderExperienceBar(RenderGameOverlayEvent event)
{
    updateGui();
}

This will LITERALLY call updateGui() every frame-render. What is your problem?

Look at IEEP tutorial - you need to store coins per-player OR inside some static field.

 

I don't have time now to write all tutorial on this, but Skype: ernio333    I'll be ON in 14hours.

 

If you want to figure it faster - you hold 2 different values per client and server, server updates it and sends new value to client along with info that GUI should do whatever it does. Gui should be rendered ALWAYS (updateGui() is called every frame) and use clien-side value. E.g if you want something to display only when coins change you set some boolean in Gui class that will change to true after receiving packet of coin change, then to get it back to false you can use ClientTickEvent (i think it has phases, so check that also).

1.7.10 is no longer supported by forge, you are on your own.

Link to comment
Share on other sites

My coinkeeper class uses player ID's in a HashMap to store the gold info so, no worries. But, I have used the tick handler and, no matter if it sets a boolean or not; the updateGui() is only called once. I put it in the render method as a test for the display so, ignore that. xD All I want it to do is, when you pick up a coin, like when getting an achievement; the box in the top right corner of the screen displays with the info.

I am not a cat. I know my profile picture is sexy and amazing beyond anything you could imagine but my cat like features only persist in my fierce eyes. I might be a cat.

Link to comment
Share on other sites

Didi you register that event? ;_;

 

MinecraftForge.EVENT_BUS.register(new ClassContainingSubscribeEventWithRenderGameOverlayEvent());

 

...in client proxy.

 

Edit: EVENTS SHOULD BE IN SEPARATE CLASS.

1.7.10 is no longer supported by forge, you are on your own.

Link to comment
Share on other sites

Yes I registered it in my ClientProxy xD

 

public class ClientProxy extends CommonProxy {
public void initialize() {
	super.initialize();
	FMLCommonHandler.instance().bus().register(new TickHandlerClient());
	MinecraftForge.EVENT_BUS.register(new GuiCoinCollected(Minecraft.getMinecraft()));
	System.out.println("CLIENT PROXY REGISTERED ALL THINGS");
}
}

 

Like I said, it runs once but only once. These are the times I wish the creator of Java was a door away. xD

I am not a cat. I know my profile picture is sexy and amazing beyond anything you could imagine but my cat like features only persist in my fierce eyes. I might be a cat.

Link to comment
Share on other sites

Did you specifically done this:

@SubscribeEvent
public void onRenderExperienceBar(RenderGameOverlayEvent event)
{
    updateGui();
}

 

Because if not, no wonder it is not passing:

if(event.isCancelable() || event.type != ElementType.EXPERIENCE) {
    		return;
    	}

1.7.10 is no longer supported by forge, you are on your own.

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.

Announcements



  • Recently Browsing

    • No registered users viewing this page.
  • Posts

    • Join one of the largest civilization experiments in Minecraft under our banner!   Our goal is to create the largest and most prominent civilization across the entirety of Minecraft, and we’d like you to join! We offer lots of unique roles and jobs that tailor to your specific skillset in Minecraft! You can build a city, participate in the government, or fight for Gold, God, and Glory on the battlefield!   Join our nation today! https://discord.gg/hb3cuaDezA
    • SOLVED: I had to make my own markDirty method, in that method I just call serializenbt. I have an issue where after I exit the world the capability data does not save when I reload the world. It will save the initial data such as village name but if I modify any data during gameplay theres a 5% chance the data saves when I exit then reload the world. I read the docs and was told that chunks need to be marked dirty but the docs does not say how to mark the chunk dirty... Heres the provider: public class ChunkCapProvider implements ICapabilityProvider, ICapabilitySerializable<CompoundTag> { private final Capability<IChunk> capability = ChunkCapability.CHUNK_CAPABILITY; private final ChunkCapability instance = new ChunkCapability(); private final LazyOptional lazy = LazyOptional.of(()->instance).cast(); public void invalidate(){ lazy.invalidate(); } @Nonnull @Override public <T> LazyOptional<T> getCapability(@Nonnull Capability<T> cap, @Nullable Direction direction) { if(cap == capability ) return lazy; return LazyOptional.empty(); } @Override public CompoundTag serializeNBT() { return instance.serializeNBT(); } @Override public void deserializeNBT(CompoundTag tag) { instance.deserializeNBT(tag); } }   Heres the capability class: public class ChunkCapability implements IChunk { public static final ResourceLocation ID = new ResourceLocation(Main.MODID, "owner"); public static final String VILLAGE_NAME = "village_name"; public static final String SAVED_ROLES = "saved_roles"; public static final String SAVED_POINTS = "saved_points"; public static final String BAD_CHUNK = "BAD_VILLAGE_CHUNK"; public static Capability<IChunk> CHUNK_CAPABILITY = null; private String villageName = "BAD_VILLAGE_CHUNK"; private String savedRoles = ""; private String savedPoints = ""; public ChunkCapability(){ this.getClass(); } @Override public CompoundTag serializeNBT() { CompoundTag nbt = new CompoundTag(); nbt.putString(SAVED_ROLES, this.savedRoles); nbt.putString(SAVED_POINTS, this.savedPoints); nbt.putString(VILLAGE_NAME, this.villageName); return nbt; } public void deserializeNBT(CompoundTag tag) { this.setVillageName(tag.getString(VILLAGE_NAME)); this.setSavedRoles(tag.getString(SAVED_ROLES)); this.setSavedPoints(tag.getString(SAVED_POINTS)); } public String getVillageName() { return this.villageName; } public void setVillageName(String str) { this.villageName = str; } public void setSavedRoles(String str) { this.savedRoles = str; } public void setRole(String name, String role){ if(!this.hasRole(name)) { this.savedRoles += (name + ":" + role + ","); this.savedPoints += (name + ":" + 10 + ","); return; } String roleName = this.getRole(name); String firstStr = this.savedRoles.substring(0, this.savedRoles.indexOf(name + ":") + name.length() + 1); String lastStr = this.savedRoles.substring(this.savedRoles.indexOf(name + ":") + ((name.length() + 1) + roleName.length())); this.savedRoles = firstStr + role + lastStr; } public String getRole(String name){ if(this.savedRoles.isEmpty() || !this.savedRoles.contains(name)) { this.setRole(name, Roles.Role.FOREIGNER.getName()); } String fStr = this.savedRoles.substring(this.savedRoles.indexOf(name + ":"), this.savedRoles.indexOf(',')); return fStr.substring(fStr.indexOf(':') + 1); } public boolean hasRole(String name) { if(this.savedRoles.isEmpty()) return false; return this.savedRoles.contains(name); } public String getSavedRoles() { return this.savedRoles; } public String getSavedPoints() { return this.savedPoints; } public void setSavedPoints(String name) { this.savedPoints = name; } public int getPoints(String name) { if(this.savedPoints.isEmpty() || !this.savedRoles.contains(name)) this.setPoints(name, 10); String fStr = this.savedPoints.substring(this.savedPoints.indexOf(name + ':')); return Integer.parseInt(fStr.substring(fStr.indexOf(':') + 1, fStr.indexOf(','))); } public void setPoints(String name, int rV) { if(!this.hasPoints(name)){ this.savedPoints += (name + ":" + rV + ","); return; } String oldPoints = String.valueOf(this.getPoints(name)); String points = String.valueOf(rV); String firstStr = this.savedPoints.substring(0, this.savedPoints.indexOf(name + ":") + name.length() + 1); String lastStr = this.savedPoints.substring(this.savedPoints.indexOf(name + ":") + ((name.length() + 1) + oldPoints.length())); Minecraft.getInstance().player.displayClientMessage(Component.nullToEmpty("Saved String: " + (firstStr + points + lastStr)), false); this.savedPoints = (firstStr + points + lastStr); } public boolean hasPoints(String name) { if(this.savedPoints.isEmpty()) return false; return this.savedPoints.contains(name); } }   Heres where I attach/register: @Mod.EventBusSubscriber(modid = Main.MODID) public class CapabilityEvents { @SubscribeEvent public static void attachCapability(AttachCapabilitiesEvent<LevelChunk> event){ ChunkCapProvider provider = new ChunkCapProvider(); event.addCapability(ChunkCapability.ID, provider); event.addListener(provider::invalidate); } }  
    • Id use this ServerLevel#findNearestMapFeature  
    • Trying to play with the mods: Tinkers Construct, Buildcraft and the Blood Magic addon Blood Arsenal; the game crashes. I noticed that when trying to use only two of the three in any combination the game opens without problems, but when trying to put all three together the error occurs. Is there any configuration I can modify or any other way to solve the problem?   ---- Minecraft Crash Report ---- // Hi. I'm Minecraft, and I'm a crashaholic. Time: 5/22/24 8:48 PM Description: There was a severe problem during mod loading that has caused the game to fail cpw.mods.fml.common.LoaderException: java.lang.NoClassDefFoundError: tconstruct/library/weaponry/AmmoWeapon     at cpw.mods.fml.common.LoadController.transition(LoadController.java:163)     at cpw.mods.fml.common.Loader.loadMods(Loader.java:544)     at cpw.mods.fml.client.FMLClientHandler.beginMinecraftLoading(FMLClientHandler.java:208)     at net.minecraft.client.Minecraft.func_71384_a(Minecraft.java:480)     at net.minecraft.client.Minecraft.func_99999_d(Minecraft.java:878)     at net.minecraft.client.main.Main.main(SourceFile:148)     at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)     at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source)     at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source)     at java.lang.reflect.Method.invoke(Unknown Source)     at net.minecraft.launchwrapper.Launch.launch(Launch.java:135)     at net.minecraft.launchwrapper.Launch.main(Launch.java:28) Caused by: java.lang.NoClassDefFoundError: tconstruct/library/weaponry/AmmoWeapon     at java.lang.Class.forName0(Native Method)     at java.lang.Class.forName(Unknown Source)     at cpw.mods.fml.common.ProxyInjector.inject(ProxyInjector.java:42)     at cpw.mods.fml.common.FMLModContainer.constructMod(FMLModContainer.java:512)     at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)     at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source)     at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source)     at java.lang.reflect.Method.invoke(Unknown Source)     at com.google.common.eventbus.EventSubscriber.handleEvent(EventSubscriber.java:74)     at com.google.common.eventbus.SynchronizedEventSubscriber.handleEvent(SynchronizedEventSubscriber.java:47)     at com.google.common.eventbus.EventBus.dispatch(EventBus.java:322)     at com.google.common.eventbus.EventBus.dispatchQueuedEvents(EventBus.java:304)     at com.google.common.eventbus.EventBus.post(EventBus.java:275)     at cpw.mods.fml.common.LoadController.sendEventToModContainer(LoadController.java:212)     at cpw.mods.fml.common.LoadController.propogateStateMessage(LoadController.java:190)     at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)     at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source)     at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source)     at java.lang.reflect.Method.invoke(Unknown Source)     at com.google.common.eventbus.EventSubscriber.handleEvent(EventSubscriber.java:74)     at com.google.common.eventbus.SynchronizedEventSubscriber.handleEvent(SynchronizedEventSubscriber.java:47)     at com.google.common.eventbus.EventBus.dispatch(EventBus.java:322)     at com.google.common.eventbus.EventBus.dispatchQueuedEvents(EventBus.java:304)     at com.google.common.eventbus.EventBus.post(EventBus.java:275)     at cpw.mods.fml.common.LoadController.distributeStateMessage(LoadController.java:119)     at cpw.mods.fml.common.Loader.loadMods(Loader.java:513)     ... 10 more Caused by: java.lang.ClassNotFoundException: tconstruct.library.weaponry.AmmoWeapon     at net.minecraft.launchwrapper.LaunchClassLoader.findClass(LaunchClassLoader.java:191)     at java.lang.ClassLoader.loadClass(Unknown Source)     at java.lang.ClassLoader.loadClass(Unknown Source)     ... 36 more Caused by: java.lang.NoClassDefFoundError: tconstruct/library/weaponry/AmmoItem     at java.lang.ClassLoader.defineClass1(Native Method)     at java.lang.ClassLoader.defineClass(Unknown Source)     at java.security.SecureClassLoader.defineClass(Unknown Source)     at net.minecraft.launchwrapper.LaunchClassLoader.findClass(LaunchClassLoader.java:182)     ... 38 more Caused by: java.lang.ClassNotFoundException: tconstruct.library.weaponry.AmmoItem     at net.minecraft.launchwrapper.LaunchClassLoader.findClass(LaunchClassLoader.java:101)     at java.lang.ClassLoader.loadClass(Unknown Source)     at java.lang.ClassLoader.loadClass(Unknown Source)     ... 42 more A detailed walkthrough of the error, its code path and all known details is as follows: --------------------------------------------------------------------------------------- -- System Details -- Details:     Minecraft Version: 1.7.10     Operating System: Windows 10 (x86) version 10.0     Java Version: 1.8.0_411, Oracle Corporation     Java VM Version: Java HotSpot(TM) Client VM (mixed mode, sharing), Oracle Corporation     Memory: 271923192 bytes (259 MB) / 402653184 bytes (384 MB) up to 536870912 bytes (512 MB)     JVM Flags: 9 total; -Xmx512M -XX:+UnlockExperimentalVMOptions -XX:+UseG1GC -XX:G1NewSizePercent=20 -XX:G1ReservePercent=20 -XX:MaxGCPauseMillis=50 -XX:G1HeapRegionSize=32M -XX:+IgnoreUnrecognizedVMOptions -XX:HeapDumpPath=MojangTricksIntelDriversForPerformance_javaw.exe_minecraft.exe.heapdump     AABB Pool Size: 0 (0 bytes; 0 MB) allocated, 0 (0 bytes; 0 MB) used     IntCache: cache: 0, tcache: 0, allocated: 0, tallocated: 0     FML: MCP v9.05 FML v7.10.99.99 Minecraft Forge 10.13.4.1614 14 mods loaded, 14 mods active     States: 'U' = Unloaded 'L' = Loaded 'C' = Constructed 'H' = Pre-initialized 'I' = Initialized 'J' = Post-initialized 'A' = Available 'D' = Disabled 'E' = Errored     UC    mcp{9.05} [Minecraft Coder Pack] (minecraft.jar)      UC    FML{7.10.99.99} [Forge Mod Loader] (forge-1.7.10-10.13.4.1614-1.7.10.jar)      UC    Forge{10.13.4.1614} [Minecraft Forge] (forge-1.7.10-10.13.4.1614-1.7.10.jar)      UC    AWWayofTime{v1.3.3} [Blood Magic: Alchemical Wizardry] (BloodMagic-1.7.10-1.3.3-17.jar)      UC    Mantle{1.7.10-0.3.2.jenkins191} [Mantle] (Mantle-1.7.10-0.3.2b.jar)      UE    TConstruct{1.7.10-1.8.8.build991} [Tinkers' Construct] (TConstruct-1.7.10-1.8.8.build991.jar)      UC    BloodArsenal{1.2-5} [Blood Arsenal] (BloodArsenal-1.7.10-1.2-5.jar)      UC    BuildCraft|Core{7.1.25} [BuildCraft] (buildcraft-7.1.25.jar)      UC    BuildCraft|Builders{7.1.25} [BC Builders] (buildcraft-7.1.25.jar)      UC    BuildCraft|Robotics{7.1.25} [BC Robotics] (buildcraft-7.1.25.jar)      UC    BuildCraft|Silicon{7.1.25} [BC Silicon] (buildcraft-7.1.25.jar)      UC    BuildCraft|Energy{7.1.25} [BC Energy] (buildcraft-7.1.25.jar)      UC    BuildCraft|Transport{7.1.25} [BC Transport] (buildcraft-7.1.25.jar)      UC    BuildCraft|Factory{7.1.25} [BC Factory] (buildcraft-7.1.25.jar)      GL info: ' Vendor: 'Intel' Version: '4.4.0 - Build 21.20.16.4541' Renderer: 'Intel(R) HD Graphics 610'     Mantle Environment: Environment healthy.     TConstruct Environment: Environment healthy.
    • fixed this problem but now i have a new one  java.lang.RuntimeException: java.lang.NoSuchFieldException: processor  Help 
  • Topics

×
×
  • Create New...

Important Information

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