Jump to content

coolboy4531

Members
  • Posts

    584
  • Joined

  • Last visited

Posts posted by coolboy4531

  1. God, giving me a headache unable to help people and making them read the important stuff without using the Bold, Italic, and Underline futures, etc.

     

    None of the features work (utilities), if you still don't understand what I mean I'm talking about the (bold, italic, underline, strike, emoticons, imgtfy, links, pictures, code.

    The only feature I use is code and I have to manually type it... (code, /code)

     

     

    How do I fix this issue?

  2. You could create it manually, but here's the problem.

     

    You are just creating a method, and it's never even being called.

    A way I would do this probably not the correct way though is:

     

    Create two new classes. One implementing IFMLLoadingPlugin and the other DummyModContainer.

     

    FMLLoadingPlugin:

    package your.package;
    import java.util.Map;
    import cpw.mods.fml.relauncher.IFMLLoadingPlugin;
    public class ExampleFMLLoadingPlugin implements IFMLLoadingPlugin {
    @Override
    public String[] getASMTransformerClass() {
    	return null;
    }
    
    @Override
    public String getModContainerClass() {
    	return ExampleContainer.class.getName();
    }
    
    @Override
    public String getSetupClass() {
    	return null;
    }
    
    @Override
    public void injectData(Map<String, Object> data) {
    
    }
    
    @Override
    public String getAccessTransformerClass() {
    	return null;
    }
    }
    

     

    Now here is where you create your mcmod.info without actually generating to code, Forge just reads it and puts it into the mods list.

     

    >>>> i decided to be nice and filled in all the things you wanted for your mcmod.info <<<<

     

    Container [DummyMod]

    package your.package;
    import java.util.Arrays;
    import com.google.common.eventbus.EventBus;
    import com.google.common.eventbus.Subscribe;
    import cpw.mods.fml.common.DummyModContainer;
    import cpw.mods.fml.common.LoadController;
    import cpw.mods.fml.common.ModMetadata;
    import cpw.mods.fml.common.event.FMLConstructionEvent;
    import cpw.mods.fml.common.event.FMLInitializationEvent;
    import cpw.mods.fml.common.event.FMLPostInitializationEvent;
    import cpw.mods.fml.common.event.FMLPreInitializationEvent;
    
    public class ExampleContainer extends DummyModContainer {
    public ExampleContainer() {
                    //Gets ModMetadata
    	super(new ModMetadata());
    	ModMetadata meta = getMetadata();
                    //Adds mcmod.info for the mod.
    	meta.modId = "poe";
    	meta.name = "World of Poe";
    	meta.version = "Build 1";
    	meta.credits = "Created by TLHPoE";
    	meta.authorList = Arrays.asList("TLHPoE");
    	meta.description = "An extensive RPG mod made by TLHPoE.";
    	meta.url = "";
    	meta.updateUrl = "";
    	meta.screenshots = new String[0];
    	meta.logoFile = "/assets/poe/logo.png";
                    //You can fill in the Strings that are blank [""] if you want to, but it isn't required.
    }
    
    @Override
    public boolean registerBus(EventBus bus, LoadController controller)  {
    	bus.register(this);
    	return true;
    }
    
    @Subscribe
    public void modConstruction(FMLConstructionEvent e) {
    
    }
    
    @Subscribe
    public void preInit(FMLPreInitializationEvent e) {
    
    }
    
    @Subscribe
    public void init(FMLInitializationEvent e) {
    
    }
    
    @Subscribe
    public void postInit(FMLPostInitializationEvent e) {
    
    }
    }
    

  3. I'm trying to use runtime bytecode manipulation w/ help of ASM API.

    Is there a list of original class names (e.g. aaa.class, aab.class)

     

     

     

    TL;DR(which it shouldn't be):

    I'm trying to create a coremod, and need to know the class names originally (aaa.class) etc.

  4. Spawn Level:

    int randPosX = chunkX + random.nextInt(16);
    int randPosY = random.nextInt(40);
    int randPosZ = chunkZ +random.nextInt(16);
    

     

    Amount:

    (new WorldGenMinable(PupletMod.pupletOre, 10)).generate(world, random, randPosX, randPosY, randPosZ);
    

     

    Spawn Chance:

    for (int i = 0; i < 13; i++)
    

  5. Two things.

     

    Are you sure that your modid, name is the same as your base class file and you have registered the modid, and name inside your base class?

     

    dependencies:
             mod_MinecraftForge
    

     

    ???

    You don't need to verify that if "mcmod.info" does however already require Forge.

  6. I don't think:

    public void setLivingAnimations(EntityLiving par1EntityLiving, float par2, float par3, float par4)
        {
            EntityIronGolem entityirongolem = (EntityIronGolem)par1EntityLiving;
            int i = entityirongolem.getAttackTimer();
    
            if (i > 0)
            {
                this.ironGolemRightArm.rotateAngleX = -2.0F + 1.5F * this.func_78172_a((float)i - par4, 10.0F);
                this.ironGolemLeftArm.rotateAngleX = -2.0F + 1.5F * this.func_78172_a((float)i - par4, 10.0F);
            }
            else
            {
                int j = entityirongolem.getHoldRoseTick();
    
                if (j > 0)
                {
                    this.ironGolemRightArm.rotateAngleX = -0.8F + 0.025F * this.func_78172_a((float)j, 70.0F);
                    this.ironGolemLeftArm.rotateAngleX = 0.0F;
                }
                else
                {
                    this.ironGolemRightArm.rotateAngleX = (-0.2F + 1.5F * this.func_78172_a(par2, 13.0F)) * par3;
                    this.ironGolemLeftArm.rotateAngleX = (-0.2F - 1.5F * this.func_78172_a(par2, 13.0F)) * par3;
                }
            }
    

    is actually changing your mod.

     

    You are changing EntityIronGolem not your own entity. If you want to use the EntityIronGolem code, you need to change the coding to match your entity, not the Iron Golem's.

  7. Use (if) statements to determine what you want the requirement to be.

     

    > Spawn an entity, with the texture of the block to do the render the spinning animation from (EntityEnderCrystal / RenderEnderCrystal)

    > Use coding from an object that can move with angles (aka render class) to move it up to your desinated location.

  8. I have gotten it to work in 1.6.2 before, but updating it to 1.7.2? pain in the ass.

     

    Let me explain my situation, everything works fine, got my events working and tested with [system.out.println("test")]

    Whenever I replace System.out.println("test") and run it with my thingy I'm using, it creates GL11 errors.

     

    Is it because I changed the event to boolean, because I'm transferring my ModLoader mod to Forge during 1.7.2 with no ModLoader inside Forge... which I used the "onTickInGame" method, but I really don't know how to transfer a boolean to a void...

    Coding:

     

    Event Class:

    @SubscribeEvent
    public boolean onWorldTick(TickEvent.WorldTickEvent event)
    {
    	Minecraft mc = Minecraft.getMinecraft();
    	Tracker trck = Tracker.wl; //wl = this (Tracker) 
    	trck.doFunction(); //[something with this too in crash report]
    	return true;
    }
    

     

    doFunction method:

    public boolean doFunction()
        {
        	Minecraft minecraft = Minecraft.getMinecraft();
            if (minecraft == null || minecraft.currentScreen != null || minecraft.gameSettings == null || minecraft.gameSettings.showDebugInfo)
            {
                return true;
            }
            String s = (new StringBuilder()).append("No mobs tracked! D: (Press ").append(minecraft.gameSettings.getKeyDisplayString(key1.func_151463_i())).append(" to enable/disable this mod.)").toString();
            if (membyte != null)
            {
                s = (new StringBuilder()).append("Mob Info: [").append(MobStatus.infoList()).append("]\n").toString();
                s = (new StringBuilder()).append(s).append("At Coords: X: ").append((int)MobStatus.cur_posX).append(" Y: ").append((int)MobStatus.cur_posY).append(" Z: ").append((int)MobStatus.cur_posZ).append("\n").toString();
                EntityPlayerSP entityplayersp = minecraft.thePlayer;
                
                if (entityplayersp != null)
                {
                    s = (new StringBuilder()).append(s).append("X~Away: ").append((int)(MobStatus.cur_posX - ((EntityPlayer)(entityplayersp)).posX)).append(" Y~Away: ").append((int)(MobStatus.cur_posY - ((EntityPlayer)(entityplayersp)).posY)).append(" Z~Away: ").append((int)(MobStatus.cur_posZ - ((EntityPlayer)(entityplayersp)).posZ)).toString();
                }
            }
            int i = 0;
            byte byte0 = 7;
            String as[] = s.split("\n");
            int j = as.length;
            int k = 0;
    
            do
            {
                if (k >= j)
                {
                    break;
                }
                String s1 = as[k];
                if (++i > byte0)
                {
                    break;
                }
                minecraft.fontRenderer.drawStringWithShadow(s1, 23, 10 + i * 10, 0xffffff); //[main error]
                k++;
            }
            while (true);
    
            canChangeSettings++;
    
            if (!coords)
            {
                return true;
            }
    
            if (minecraft.theWorld == null)
            {
                return true;
            }
    
            if (membyte2 != null && MobStatus.isMobDead)
            {
                MobStatus.curMob = null;
            }
    
            MobStatus.curMob = null;
            boolean flag = false;
            Iterator iterator = minecraft.theWorld.loadedEntityList.iterator();
    
            do
            {
                if (!iterator.hasNext())
                {
                    break;
                }
    
                Object obj = iterator.next();
    
                if (obj instanceof EntityMob)
                {
                    if (MobStatus.curMob != null && obj.equals(MobStatus.cur_Mob))
                    {
                        flag = true;
                    }
    
                    if (MobStatus.curMob == null || minecraft.thePlayer != null && minecraft.thePlayer.getDistanceToEntity((EntityMob)obj) < minecraft.thePlayer.getDistanceToEntity(MobStatus.curMob))
                    {
                        MobStatus.curMob = (EntityMob)obj;
                    }
                }
            }
            while (true);
         }
            return true;
        }
    

     

    Event Registration [@Init]

        @EventHandler
        public void preInit(FMLPreInitializationEvent event)
        {
        	//MinecraftForge.EVENT_BUS.register(new WorldUpdateTick());
        }
    
    

     

    Crash Report:

    java.lang.RuntimeException: No OpenGL context found in the current thread.
    at org.lwjgl.opengl.GLContext.getCapabilities(GLContext.java:124)
    at org.lwjgl.opengl.GL11.glEnable(GL11.java:1012)
    at net.minecraft.client.gui.FontRenderer.drawString(FontRenderer.java:245)
    at net.minecraft.client.gui.FontRenderer.drawStringWithShadow(FontRenderer.java:237)
    at com.coolboy4531.Tracker.doFunction(Tracker.java:115)
    at com.coolboy4531.WorldUpdateTick.onWorldTick(WorldUpdateTick.java:15)
    at cpw.mods.fml.common.eventhandler.ASMEventHandler_4_WorldUpdateTick_onWorldTick_WorldTickEvent.invoke(.dynamic)
    at cpw.mods.fml.common.eventhandler.ASMEventHandler.invoke(ASMEventHandler.java:39)
    at cpw.mods.fml.common.eventhandler.EventBus.post(EventBus.java:108)
    at cpw.mods.fml.common.FMLCommonHandler.onPostWorldTick(FMLCommonHandler.java:242)
    at net.minecraft.server.MinecraftServer.updateTimeLightAndEntities(MinecraftServer.java:666)
    at net.minecraft.server.MinecraftServer.tick(MinecraftServer.java:568)
    at net.minecraft.server.integrated.IntegratedServer.tick(IntegratedServer.java:114)
    at net.minecraft.server.MinecraftServer.run(MinecraftServer.java:452)
    at net.minecraft.server.MinecraftServer$2.run(MinecraftServer.java:705)
    
    

     

    Any help will be appreciated.

    Thanks ;)

     

     

     

  9. I wonder if its a problem with 1.7.2's EnumChatFormatting (1.6.2 EnumChatFormatting works for me [tested too])

     

    Have you tried using your own String Formatter?

     

    Here try this for example:

    public class StringHandler {
    public static String dark_black = "\u00a70";
    public static String dark_blue = "\u00a71";
    public static String dark_green = "\u00a72";
    public static String dark_cyan = "\u00a73";
    public static String dark_red = "\u00a74";
    public static String dark_purple = "\u00a75";
    public static String dark_yellow = "\u00a76";
            public static String gray = "\u00a77";
    public static String dark_gray = "\u00a78";
    public static String blue = "\u00a79";
    public static String green = "\u00a7A";
    public static String cyan = "\u00a7B";
    public static String red = "\u00a7C";
    public static String purple = "\u00a7D";
    public static String yellow = "\u00a7E";
            public static String white = "\u00a7F";
    }
    

     

    Now, to use it:

    StringHandler.red + ModInfo[0] + " (" + ModInfo[1] + ") is out of date! Please visit " + ModInfo[3] + " to get the latest version (" + ModInfo[2] +")";
    

     

    Good luck :)

  10. In EnumArmorMaterial, when decompiled you should find this.

     

        DIAMOND(33, new int[]{3, 8, 6, 3}, 10);
    

     

    The 2D array of int ( int[] ) is the amount of damage it reduces (gui on armor, damage reduction)

     

    In others words,

    {3, 8, 6, 3} is the Damage Reduction / GUI on armor.
    

     

    Mess around with the code, and you shall find what changes what. :)

  11. Have you tried adding the method a few more times to reset it?

     

    Try this for example:

     

    EnumChatFormatting.RED + ModInfo[0] + " (" + ModInfo[1] + ") is out of date! Please visit " + EnumChatFormatting.RED + ModInfo[3] + " to get the " + EnumChatFormatting.RED + "latest version (" + ModInfo[2] +")";
    

     

    I don't know if it would work, because I have never had this issue before...

    worth a try ;)

  12. Maybe you can check if the Explosive is near water, and if it is remove the water block every tick, so it doesn't re-flow?

    I've actually had the same problem with you, and eventually I gave up looking and just used this method.

     

    Method (lost it, but can explain):

     

    Get the entity location, and get x+1, y+1, z+1, x-1, y-1, z-1 or you can use loops, setBlock(0)

  13. You need to use gradle to compile it.

     

    Open your build.gradle (with NotePad, NotePad++, etc.) and change these:

     

    version="1.0" //ex: 2.6, 1.3
    group="com.yourname.modid"  //ex: (your package) com.example.example
    archivesBaseName="modid" //ex: ExampleMod
    

     

    After that... save it and quit out of build.gradle.

    You now need to compile it.

     

    Use (cmd for Windows) (terminal -- I believe -- for Mac OSX)

    gradlew.bat build
    

     

    Be sure your extension goes to where you gradlew.bat is (aka your Forge folder or MCP)

×
×
  • Create New...

Important Information

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