Jump to content

m_pro_m

Members
  • Posts

    7
  • Joined

  • Last visited

Posts posted by m_pro_m

  1. Hey guys,

    I am trying to create a GUI with a scrolling list. Inside that, I want to display "achievements". Problem is, they are somehow out of position..

    Screenshots: http://pho.to/9doT0 (second one is fullscreen)

    My code:

    GuiAchievements.java

    import cpw.mods.fml.client.GuiScrollingList;
    import eu.mprom.gm.achievements.GMAchievements;
    import net.minecraft.client.Minecraft;
    import net.minecraft.client.gui.FontRenderer;
    import net.minecraft.client.gui.GuiButton;
    import net.minecraft.client.gui.GuiScreen;
    import net.minecraft.client.renderer.Tessellator;
    import net.minecraft.entity.player.EntityPlayer;
    import net.minecraft.util.ResourceLocation;
    import org.lwjgl.input.Mouse;
    import org.lwjgl.opengl.GL11;
    
    import java.util.ArrayList;
    
    public class GuiAchievements extends GuiScreen{
    
        protected int guiWidth = 256;
        protected int guiHeight = 200;
    
        private ArrayList<String> achievements;
        private GuiSlotAchievement achievementsList;
    
        private EntityPlayer player;
    
        public GuiAchievements(EntityPlayer player) {
            this.player = player;
    
            achievements = new ArrayList<String>();
            for(int i=0; i<10; i++) {
                achievements.add("Achv " + i);
            }
        }
    
        @Override
        public void initGui() {
            super.initGui();
    
            int guiX = (width - guiWidth) / 2;
            int guiY = (height - guiHeight) / 2;
    
            this.buttonList.add( new GuiButton(1, guiX + 9, guiY + 148, 50, 15, "Close"));
    
            this.achievementsList=new GuiSlotAchievement(this, achievements);
            this.achievementsList.registerScrollButtons(this.buttonList, 7, ;
        }
    
        @Override
        protected void keyTyped(char p_73869_1_, int p_73869_2_) {
            player.closeScreen();
        }
    
        @Override
        protected void actionPerformed(GuiButton button) {
            if (button.enabled)
            {
                switch (button.id) {
                    case 1:
                        this.player.closeScreen();
                        return;
                }
            }
            super.actionPerformed(button);
        }
    
        @Override
        public void drawScreen(int x, int y, float ticks) {
            super.drawScreen(x, y, ticks);
            GL11.glColor4f(1, 1, 1, 1);
            drawDefaultBackground();
    
            int guiX = (width - guiWidth) / 2;
            int guiY = (height - guiHeight) / 2;
    
    
            mc.renderEngine.bindTexture(new ResourceLocation(GMAchievements.MOD_ID, "textures/gui/achievements.png"));
            drawTexturedModalRect(guiX, guiY, 0, 0, 256, 200);
            //drawTexturedModalRect(guiX + 18, guiY + 18, 0, 200, 200, 30);
    
            this.achievementsList.drawScreen(x, y, ticks);
    
        }
    
        Minecraft getMinecraftInstance() {
            /** Reference to the Minecraft object. */
            return mc;
        }
    
        FontRenderer getFontRenderer() {
            /** The FontRenderer used by GuiScreen */
            return fontRendererObj;
        }
    
    }
    

    GuiSlotAchievement.java

    import cpw.mods.fml.client.GuiScrollingList;
    import eu.mprom.gm.achievements.GMAchievements;
    import net.minecraft.client.Minecraft;
    import net.minecraft.client.renderer.Tessellator;
    import net.minecraft.util.ResourceLocation;
    import org.lwjgl.opengl.GL11;
    
    import java.util.ArrayList;
    
    public class GuiSlotAchievement extends GuiScrollingList {
    
        private ArrayList<String> achievements;
        private GuiAchievements parent;
    
        public GuiSlotAchievement(GuiAchievements parent, ArrayList<String> achievements) {
            super(
                    parent.getMinecraftInstance(),
                    240,
                    140,
                    (parent.height - parent.guiHeight) / 2 + 8,
                    (parent.height - parent.guiHeight) / 2 + 190,
                    (parent.width - parent.guiWidth) / 2 + 7,
                    50
            );
            this.func_27259_a(true, -22);
            this.parent = parent;
            this.achievements = achievements;
        }
    
        @Override
        protected int getSize() {
            return achievements.size();
        }
    
        @Override
        protected void elementClicked(int index, boolean doubleClick) {
    
        }
    
        @Override
        protected boolean isSelected(int index) {
            return false;
        }
    
        @Override
        protected void drawBackground() {
            //this.parent.drawDefaultBackground();
        }
    /*
        @Override
        protected int getContentHeight() {
            return this.getSize() * 30;
        }
    */
        @Override
        protected void drawSlot(int listIndex, int var2, int var3, int var4, Tessellator var5) {
            int guiX = (this.parent.width - this.parent.guiWidth) / 2;
            int guiY = (this.parent.height - this.parent.guiHeight) / 2;
    
            GL11.glDisable(GL11.GL_LIGHTING);
            GL11.glDisable(GL11.GL_FOG);
            GL11.glColor4f(1,1,1,1);
    
            this.parent.mc.renderEngine.bindTexture(new ResourceLocation(GMAchievements.MOD_ID, "textures/gui/achievements.png"));
            this.parent.drawTexturedModalRect(guiX + 15, guiY + var3, 0, 200, 200, 30);
    
            this.parent.getFontRenderer().drawString("Achievement name", guiX + 20, guiY + var3 + 5, 0x000000);
        }
    }
    

    I was trying to do something with this function this.func_27259_a(true, -22);, but it just moves the content up and down.

    Main problem is: When I scroll the slider, content is displayed over the container that holds it (over the top and bottom - you can sometimes see up to 5 elements).

    Second problem is the fullscreen (see screenshot), but I guess all I have to do is to reposition everything on resize of the window, right? Any pointers to the window resize event?

    Last thing, I was trying to close the GUI after clicking the button or pressing a keyboard, but it doesn't work. I also tried this.mc.thePlayer.closeScreen(). Any ideas?

    Thank you!

  2. Hey guys,

    I've been trying to create a simple GUI, but I keep getting this error message everytime I am trying to use a texture:

     

    [18:10:39] [Client thread/WARN]: Failed to load texture: gmachievements:textures/gui/magic_bag.png

    java.io.FileNotFoundException: gmachievements:textures/gui/magic_bag.png

    at net.minecraft.client.resources.SimpleReloadableResourceManager.getResource(SimpleReloadableResourceManager.java:71) ~[simpleReloadableResourceManager.class:?]

    ...etc

     

    I tried all of these methods to bind my texture

     

    mc.renderEngine.bindTexture(new ResourceLocation("gmachievements", "textures/gui/magic_bag.png"));

    mc.renderEngine.bindTexture(new ResourceLocation("gmachievements:textures/gui/magic_bag.png"));

    mc.renderEngine.bindTexture(new ResourceLocation(GMAchievements.MOD_ID, "textures/gui/magic_bag.png"));

    mc.renderEngine.bindTexture(new ResourceLocation(GMAchievements.MOD_ID + ':' + "textures/gui/magic_bag"));

     

    MOD_ID is "gmachievements"

     

    Project structure

    http://pasteboard.co/2GWAvAyX.png

     

    I read all the topics here on forums with similar problems, but everyting was pointing to wrong typo or no modid.. I tried a lot of things, even creating a totally new project - nothing helped me.

    Btw I am sorry but I couldnt use any of the formatting tools (JS errors in console!)

     

  3. Hello,

    I made a mod that merges XP Orbs together. It's just a utility mod (for servers).

    Purpose of this mod is to ensure there aren't tons of XP Orbs dropped nearby XP farms, you can not remove easily with 5 FPS...

    I hope you will find this useful :)

     

    Download: XPPackager.zip

  4. Hello,

    I've got a code that removes some xp orb entities. Whenever it removes something, console says

    [WARNING] Fetching addPacket for removed entity

    That's ton of spam. Can I do something about it ?

     

    My code is simple .. I have got an event and then entity.setDead();

     

    // Solved

    using event EntityEvent and checking if entity exists for at least 1 tick

  5. Hello,

     

    i am trying to load my custom sounds using this code:

    @ForgeSubscribe
        public void onSound(SoundLoadEvent event)
        {
    	try 
    	{
    		event.manager.addSound("randmusic:song1.ogg");
    		System.out.println("[Random Music] Songs loaded !");
    	} 
    	catch (Exception e)
    	{
    	    System.out.println("[Random Music] Error loading music files ");
    	}
        }

    It's working fine, but I will have more and more songs in my mod's assets folder. And I don't want to update my code everytime I add a song.

    So I need to get a count of files in the mod.zip (assets/sound/...). Is it event possible or will I have to update it everytime in code ?

    I am talking about

    event.manager.addSound("randmusic:song1.ogg");

×
×
  • Create New...

Important Information

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