• 1

    posted a message on LimpLungs' Mods - LimpCore, LimpCraft2, InventoryCalculator

    Special thanks to diesieben07, Choonster and KingLemming for helping me get my sided textures rendering problem solved!


    Requirements and Downloads


    1.7.10 Forge minimum of 10.13.3.1387.

    1.8.9 Forge minimum of 11.15.1.1764 .


    • LimpCore:


    • LimpCraft2
      • Requires LimpCore. The correct version can be found here: http://limplungs.weebly.com/limpcraft.html
      • or just match the middle and last number of the coremod to the mod. (i.e. 1.0.10 for 2.0.10!)
      • NEI Support, version minimum 1.0.4.95



    • InventoryCalculator
    For an unfinished 1.7.10 version, check out the curseforge page.



    For current and legacy builds hosted on MediaFire, head over to the download page on my website to get this mod! Earliest version is MC1.4.7!

    Remember, LimpCore is required for LimpCraft2 along with Forge for MC1.7.10+ builds and Forge for all of them!


    Overview / Features


    (Many features listed here are NOT in the mod yet or were temporarily removed.)

    (Those features that lack pictures but are not specified as [Not Released Yet] or [Removed Temporarily] will have pictures and are in the mod. I reference the URL's off of my website which has low quality picture rendering and hasn't been updated in a while. This is why some pictures don't even exist :P)


    LimpCore:


    LimpCore:

    • LimpCore is the coremod for LimpCraft2 and potentially future addons. For documentation visit the more information section and link over to my website!

    LimpCraft2:


    LimpCraft2:


    • LimpCraft is a mod that focuses on carbon manipulation.
      • Types of Carbon Manipulation:
        • Blacksmithing - [NOT RELEASED YET]
        • Condensing - implemented!
          • Burning - implemented!
        • Melting - [NOT RELEASED YET]
        • Molding - [NOT RELEASED YET]
      • Machines (and Multiblocks) in LimpCraft2 will be able to automate each type of Carbon Manipulation. They can be upgraded with different modules. Doing so will allow you to better define what each machine can do. (i.e. importing and exporting, locking input slots to specific metadata item, etc).
        • Smithing Forge - Blacksmithing: [NOT RELEASED YET]
          • The Smithing Forge uses the lowest tier manipulation called Blacksmithing. Able to be done relatively quickly, the player must just mix a BUCKET OF LAVA with a BUCKET OF SLAG to make SLAGMA!
          • Smithing Forges are multiblock structures created or found already set up in the world. No, I do not add any world generation with this. That is right, the Smithing Forge multiblock comes standard in every Blacksmith's in villages!
            • After placing Slagma in the Smithing Forge, the player can then toss in Iron and Iron Weapons / Tools to create a heated form of them. This provides them with a burn on hit with against mobs and burns/damages players holding them.
            • These heated tools can be hammered away at and can then be given the sharpness enchantment, or unbreaking enchantment, depending what you add to them.
            • Steel variants are to also come sometime down the line.
        • Carbon Condenser - Condensing:
          • The Carbon Condenser is the second tier manipulation called Condensing. You can use this to condense the various forms of carbon, but for a price. It takes burning of other carbon forms to run the machine and condense them.
          • The carbon condenser also builds up slag, or waste from condensing non-pure carbon sources. This slag will eventually fill up the machine and stop it from being able to condense any more. Scoop it out with a bucket to gain a bucket of slag.
          • The Carbon Condenser is upgradeable further past the basic machine modules. You can turn the simple machine into a multiblock structure, fully capable of burning away the slag.
          • Slag Burner - Condensing:
            • This is an extension of the Carbon Condenser. It takes the buckets and automatically outputs them through the back if there is an export circuit installed in the circuit board. It will only export the bucket if the proper multiblock is created.
            • PICTURE TO COME SOON!
            • The slag can then be burned by right clicking with FLINT AND STEEL which will then refine it into more minerals lost in the initial condensing process.
            • You can also pour the BUCKET OF SLAG onto a pile of gravel which will allow the slag to settle into the gravel, settling out into various resources.
          • NEI Recipes! Recipes in game don't show INPUT STACKSIZE, but they still show in the machine GUI.
        • Carbon Melter: [NOT RELEASED YET]
          • Liquefies forms of carbon making it easily used in the Carbon Molder.
        • Carbon Molder: [NOT RELEASED YET]
          • Molds liquid carbon into various forms, using different amounts of liquid carbon.
      • Modules: can be installed in any order and at your leisure with SHIFT + RCLICK. Here is the Carbon Condenser with each module type installed! Some modules are as follow:
        • Circuit Board: The circuit board allows installation of the various circuits in the mod to the sides of the machine block. If you put a import circuit into the left side of the circuit board, the left of the machine will be able to have items imported into it.
        • The Circuit Board can be used to fasten in place import and export circuits. These allow for automated import and export through various sides.
          • Import Circuit: This circuit imports items via hoppers, Access Blocks, and pipes from other mods!
          • Export Circuit: This circuit exports to TileEntities like chests, AccessBlocks, and pipes from other mods!
        • Locking Mechanism: The locking mechanism allows the player to lock automatic importing (i.e. hopper or another mod's pipes) of each import slot (blue outlined) to a specific item.
        • [NOT RELEASED YET] Internal Storage: Some machines are capable to be upgraded so they can hold up to 4 inventory slots worth of storage (upgrade-able).
        • [REMOVED TEMPORARILY] Speed Circuits: Speed circuits used to be implemented, but were very buggy. They have since been removed entirely and will be rebuilt from the ground up.
          • x4, x16, x64 variants for speed.
      • Access Blocks:
        • Access Blocks currently area single item transport system used to pipe items around in the mod. Eventually they will be upgradeable to handle bigger stacks of items, and have an interface to manually pull items out of the block.
        • PICTURE COMING SOON!
      • Upcoming Features:
        • Locking mechanism makes a ghost copy of item instead of using an item.
        • Blacksmithing, Melting, and Molding
        • Speed and Storage Modules
        • Access Blocks upgrades and terminal.

    InventoryCalculator:


    InventoryCalculator: CURRENTLY IT IS JUST A GUI :/


      • InventoryCalculator adds an in-game handheld modular calculator.
      • Modules:
        • Power
        • Battery
        • Solar
        • Clock
        • Mirror

      • Upcoming Features:
        • NBT Saving correctly LOL
        • Actual Calculator Functionality
        • All the Modules working.

    Videos (outdated!)

    <iframe width="560" height="315" src="" frameborder="0" allowfullscreen></iframe>




    More Information (usually outdated wiki):


    You can get a more information and development posts at my website.

    http://limplungs.weebly.com/


    There are also some mirror links available at my website:

    http://limplungs.weebly.com/limpcraft.html


    If you follow me on twitter @LoganSievers you might catch some information about the next release or development as well. However, I do tend to forget that twitter exists, forewarned.


    Donations:

    If you really would like to donate, you have two options.

    • Paypal, gotta get the button to work... head to the curseforge page and it has a donate button for paypal for
    • Patreon

    Terms and Conditions:

    In short, you can use this for modpacks and non-commercial uses provided you provide me with credit for the original. Just don't be a jerk, basically.


    Creative Commons License
    LimpCore by Logan Sievers is licensed under a Creative Commons Attribution-NonCommercial 4.0 International License.


    Creative Commons License
    LimpCraft2 by Logan Sievers is licensed under a Creative Commons Attribution-NonCommercial 4.0 International License.


    Creative Commons License


    InventoryCalculator by Logan Sievers is licensed under a Creative Commons Attribution-NonCommercial 4.0 International License.

    Posted in: Minecraft Mods
  • 0

    posted a message on LimpCraft2 - Carbon Manipulation at it's finest.

    I would like to announce that I have been working diligently to remake my old mod, starting from a similar point and branching off in an entirely new way! Feel free to check it out and let me know what you think of LimpCraft2 :) The Carbon Condenser is the only machine as of now, but there are a lot of features to it!

    Posted in: WIP Mods
  • 0

    posted a message on Crystals [1.7.10] [80% done] Ore generation not added.

    Here is my world generation:

    http://pastebin.com/pdnNe4bc


    The error is probably because you forgot to put the class in front of it?


    I went ahead and labeled what each part does in the code with comments above it. The method names speak for themselves.


    control+shift+f to reformat the code if you end up copy/pasting and editing values for sake of time if you understand what it does. (I use a custom format for my own personal preference of what is easy on my eyes/brain)

    Posted in: Modification Development
  • 0

    posted a message on [SOLVED] Textures only update when ran from in Block Class :/
    Quote from LimpLungs»

    So I have my packet sending working for all my data, but the funny problem I am running into is I cannot use worldObj.markBlockForUpdate(xCoord, yCoord, zCoord) inside the updating of the texture method inside the custom TileEntity. What it requires me to do is:

    Somewhere in the block (only viable place is in onBlockActivated) run:

    Minecraft.getMinecraft().renderGlobal.markBlockForRenderUpdate(x, y, z);
    world.markBlockForUpdate(x, y, z);


    This has 2 problems. 1, I need it to update all the time (or at least every half a second or something), and second, it requires me to click on the block 2 more times before the texture finally updates. I don't know why it takes 2 times, but it does. Where can I move this code? I'm sick of posting snippets and then being asked for more of the code, so here are both the TileEntity and Block source:

    TE- http://pastebin.com/wa9jbSEb

    Block - http://pastebin.com/TmvzRFRG

    Also, in previous tests, I've used both worldObj.markBlockForUpdate(xCoord, yCoord, zCoord) alongside the Minecraft.getMinecraft().renderGlobal.markBlockForRenderUpdate(xCoord, yCoord, zCoord) but then anywhere inside the TileEntity that I put the updateCircuitTextures(), it returns a divide by zero error, which is fixed when ran without the renderGlobal update, but then it doens't actually update it until I relaunch the save file.


    So final question: Where can I safely put an update render/block method inside my TileEntity and have it update regularly, and if in a new method, where can I put that method to have it be updated regularly?


    I solved it by adding a if (worldObj.isRemote) check to the updateCircuitTexture() method, then checked it again in the updateEntity and ran the updateCircuitTexture() method. I removed the re-render checks from the block class, and ran them at the end of my updateCircuitTexture() method, and in the onDataPacket() method. I don't know if order matters, but this is the order I used:

    Minecraft.getMinecraft().renderGlobal.markBlockForRenderUpdate(xCoord, yCoord, zCoord);
    worldObj.markBlockForUpdate(xCoord, yCoord, zCoord);

    I probably missed something, so if anyone ever needs help on this in the future and wants to know how I got it working, feel free to message me on here, or my website: http://limplungs.weebly.com/


    (There is an email button at the top of the page, or twitter / youtube links. I don't want to put my email on here in fear of spam mail from people)

    Posted in: Modification Development
  • 0

    posted a message on Crystals [1.7.10] [80% done] Ore generation not added.

    I actually like those textures quite a bit, which is surprising. There are even some "AAA", if you will, mods that I find the textures atrocious in, so +1 for great textures!


    Edit - I think this would be better placed / more viewed in the WIP section of minecraft mods though, if you are serious about making it seen at this stage.


    Edit2 - I see you did go and put up a WIP section thread too :) I hope you add a lot more because I really enjoy your art style!

    Posted in: Modification Development
  • 0

    posted a message on [SOLVED] Textures only update when ran from in Block Class :/

    So I have my packet sending working for all my data, but the funny problem I am running into is I cannot use worldObj.markBlockForUpdate(xCoord, yCoord, zCoord) inside the updating of the texture method inside the custom TileEntity. What it requires me to do is:

    Somewhere in the block (only viable place is in onBlockActivated) run:

    Minecraft.getMinecraft().renderGlobal.markBlockForRenderUpdate(x, y, z);
    world.markBlockForUpdate(x, y, z);


    This has 2 problems. 1, I need it to update all the time (or at least every half a second or something), and second, it requires me to click on the block 2 more times before the texture finally updates. I don't know why it takes 2 times, but it does. Where can I move this code? I'm sick of posting snippets and then being asked for more of the code, so here are both the TileEntity and Block source:

    TE- http://pastebin.com/wa9jbSEb

    Block - http://pastebin.com/TmvzRFRG

    Also, in previous tests, I've used both worldObj.markBlockForUpdate(xCoord, yCoord, zCoord) alongside the Minecraft.getMinecraft().renderGlobal.markBlockForRenderUpdate(xCoord, yCoord, zCoord) but then anywhere inside the TileEntity that I put the updateCircuitTextures(), it returns a divide by zero error, which is fixed when ran without the renderGlobal update, but then it doens't actually update it until I relaunch the save file.


    So final question: Where can I safely put an update render/block method inside my TileEntity and have it update regularly, and if in a new method, where can I put that method to have it be updated regularly?

    Posted in: Modification Development
  • 1

    posted a message on Could somebody link me on a good tutorial on how to install and mod with an api
    Quote from Hunter6013MC»

    I know how to mod but not how to install an api.


    There are indeed a bunch of different ways to install depending on the API. I am not sure on Botania specifically, but here is how to get CCC and NEI into your instance, if you want it. I know it helps out a bunch and will allow you to create a custom NEI recipes thing in the future if you have custom crafting, etc. I mean, the method MIGHT work with Botania, I'm not sure.


    EDIT: Lol I forgot the link!

    Posted in: Modification Development
  • 0

    posted a message on Furnace source code?

    I tried to iook around for video tutorials for 1.8, but I wasnt able to.


    Yes, one of the reasons I haven't tried porting my mod over to 1.8 yet, because I am relatively new to using NBT + packets for my custom rendering, and I have a custom recipe handler, and a bunch of other custom modifications, so I don't want to deal with the hassle for right now until I can find some more knowledgeable and well explained videos or EXTREMELY in depth text explaining at least the changes. :P

    Posted in: Modification Development
  • 0

    posted a message on [Solved] Update block texture from inside it's TileEntity? / Packet help.
    Quote from LimpLungs»

    Thank you Choonster for all you have done, but it seems I still am having issues even after looking at the chisel packet stuff and this website on the exact same methods:

    http://cazzar.net/tutorials/minecraft/Tile-Entity-Updates-The-Quick-and-Dirty-Method/


    (Note - changing the 0 to a 1 in the return new S35PacketUpdateTileEntity(xCoord, yCoord, zCoord, 0, tag) does not work)


    Here is what I have coded for the updating of the texture, if anyone else knows something about packets and getting this to work, it would be much appreciated!

    Tile Entity - http://pastebin.com/WgqyHKu1

    Block - http://pastebin.com/NtVFEDZ8


    Thank you so much Choonster, you really pointed me in the right direction with that last post. The packet update is exactly what I needed. I had it implemented correctly, and it doesn't work without it, I just completely forgot to save my integers for the circuit sides in the NBT and load them. I'm really shaking my head for overlooking that part. But it still wouldn't have worked without you pointing me toward that packet trick from the Chisel2 mod and causing me to find that other article. Hopefully this helps others in the future. I do have 1 other slight problem, but I will post that in a new thread. It's related but kind of different.

    Posted in: Modification Development
  • 0

    posted a message on Furnace source code?
    • For anyone else trying to do this (It was the one thing I always wanted to learn how and finally have mostly, due to lack of GOOD tutorials out there that explain everything)
    • The basic classes you will need are:

    • BlockCustomFurnace extends BlockContainer
    • TileEntityCustomFurnace extends TileEntity implements ISidedInventory
    • GUICustomFurnace extends GuiContainer
    • ContainerCustomFurnace extends Container
    • CustomGUIHandlers implements IGuiHandler (should be able to use 1 handler for all furnaces/machines/etc by checking for the ID first)
    • OPTIONAL BUT BETTER IF YOU DO IT: SlotCustomSlot extends Slot (Allows you to discriminate between what items you want allowed and not allowed in your custom furnace)
    • ALSO OPTIONAL, BUT BETTER IF YOU DO IT: Create a custom recipe handler or even a class with returning integers / itemstacks etc. Here is an example for my custom recipe handler, but it is a pain with if statements in the canSmelt() section of the tile entity and the burn time updating etc,

    http://pastebin.com/tFpUALpD


    I finally learned how and to understand it pretty well from Grovesy's and VSWE's tutorials on this matter, and then some extra tidbits from online for specific functions I wanted, and finally just some basic logic/if statements for other parts (such as the recipes)

    Posted in: Modification Development
  • 0

    posted a message on [Solved] Update block texture from inside it's TileEntity? / Packet help.

    Thank you Choonster for all you have done, but it seems I still am having issues even after looking at the chisel packet stuff and this website on the exact same methods:

    http://cazzar.net/tutorials/minecraft/Tile-Entity-Updates-The-Quick-and-Dirty-Method/


    (Note - changing the 0 to a 1 in the return new S35PacketUpdateTileEntity(xCoord, yCoord, zCoord, 0, tag) does not work)


    Here is what I have coded for the updating of the texture, if anyone else knows something about packets and getting this to work, it would be much appreciated!

    Tile Entity - http://pastebin.com/WgqyHKu1

    Block - http://pastebin.com/NtVFEDZ8

    Posted in: Modification Development
  • 0

    posted a message on Animated gui overlay

    Oh, and if you are meaning a regular GUI without a block or item (like hunger, etc), you could just have the count going inside the draw function (and then switch the image drawn every how many ticks feels right) of the GUI because that is always being updated as far as I can tell (I'm relatively new to modding).

    EDIT- I am not sure why I said to store anything in the tile entity in the first place (Except if you want a block to remember specific progresses of the GUI, such as a furnace remembering how much of the item it has smelted when it runs out of fuel i.e. thermal expansion) If you don't want it to remember and it is fine if it restarts each time it is open, then go ahead and put the count in the GUI. It SHOULD work... <--don't hate me if I'm wrong!

    Posted in: Modification Development
  • 0

    posted a message on [Solved] Update block texture from inside it's TileEntity? / Packet help.
    Quote from LimpLungs»

    Awesome, kind of! I didn't even know you could replace the standard getIcon because eclipse was not finding the IBlockAccess version and I had to manually type it in before it recognized it.


    I replaced it and the front and blank textures (.blockIcon) return correctly and are visible in game, however the circuit textures do not update at all. Did I place this in the right location?


    Also, to note for anyone who uses this article: Don't replace the .getIcon method, but instead just add in your block class the second one. In your regular .getIcon method, you need this for the inventory to load correctly (it appears the .getIcon with IBlockAccess overwrites it in game but not in the inventory)



    @Override
    public IIcon getIcon(int side, int meta)
    {
    // Sets inventory icons
    if (side == 3 && meta == 0)
    {
    return this.sideFront;
    }
    else
    {
    return this.blockIcon;
    }
    }


    EDIT**


    http://pastebin.com/b5CQ80FY


    My problem right now is solely rendering the changed sides. I have print statemented and even programmed the check if import or export for the hopper. Everything works fine. The textures just don't get updated at all on the block, but block.getBlockMetadata(x,y,z) DOES work because it updates the front and the blank sides. But when I put in items into the slots, it however, does not update the sides. I have checked where I store the side data and it DOES indeed work, so it is a rendering issue.

    Posted in: Modification Development
  • 0

    posted a message on [Solved] Update block texture from inside it's TileEntity? / Packet help.

    Awesome, kind of! I didn't even know you could replace the standard getIcon because eclipse was not finding the IBlockAccess version and I had to manually type it in before it recognized it. So pending I have all the data being stored appropriately inside the TileEntityCarbonCondenser class I have [it does, I've tested it with print statements], this is to replace the original .getIcon(int side, int meta) method inside my CarbonCondenser block class?

    @Override
    public IIcon getIcon(IBlockAccess block, int x, int y, int z, int side)
    {
    //Sets inventory icons
    if (side == 3 && block.getBlockMetadata(x, y, z) == 0)
    {
    return this.sideFront;
    }
    if (side == block.getBlockMetadata(x, y, z))
    {
    return this.sideFront;
    }
    if (side != block.getBlockMetadata(x, y, z))
    {
    if (side == ((TileEntityCarbonCondenser)block.getTileEntity(x, y, z)).left)
    {
    if (((TileEntityCarbonCondenser)block.getTileEntity(x, y, z)).sLeft == 0)
    {
    return this.blockIcon;
    }
    else if (((TileEntityCarbonCondenser)block.getTileEntity(x, y, z)).sLeft == 1)
    {
    return this.sideImport;
    }
    else if (((TileEntityCarbonCondenser)block.getTileEntity(x, y, z)).sLeft == 2)
    {
    return this.sideExport;
    }
    }
    }

    return this.blockIcon;
    }



    I replaced it and the front and blank textures (.blockIcon) return correctly and are visible in game, however the circuit textures do not update at all. Did I place this in the right location?


    EDIT- if the code is confusing, I use .sSide for a int between 0-2 which stores which texture to return, and I use .side as an int which gets the left, right, back, top, bottom orientation of the block compared to the direction it is facing, for easier upgrade placement.


    http://pastebin.com/b5CQ80FY

    Posted in: Modification Development
  • 0

    posted a message on [Solved] Update block texture from inside it's TileEntity? / Packet help.
    Quote from Choonster jump

    Override Block#getIcon(IWorldAccess world, int x, int y, int z, int side) and use the contents of the TileEntity at the specified coordinates to determine which icon to use for the specified side.


    Make sure Block#getIcon(int side, int meta) still returns the appropriate default icon for when you don't have access to the Block's location (e.g. when it's an Item in an inventory).


    If you need more advanced rendering based on the TileEntity's contents, you'll need to use a TileEntitySpecialRenderer.



    1st: This method was coming up in-existent in both the block and tile entity. I'm not very good with internet coding help conventions so I don't know what you mean by the Block# <the #.


    2nd: This I know is done from prior testing and directional placing. (I thiiiiink)


    3rd: I don't think I'll need more advanced rendering, because proof of concept is there, I just cant separate the action between different machines instances.


    I went ahead and re-created the methods for updating my block.

    Now it works, except I ran into the same problem. When I update 1 block, it updates ALL of the same type of block. Here is the code relating to the updating... (I'm just calling the method in "onBlockActivated" for now just as a proof of concept)


    Calling the method:



    updateCircuitTextures((CarbonCondenser)world.getBlock(x, y, z), (TileEntityCarbonCondenser)world.getTileEntity(x, y, z), world, x, y, z);


    Note- All of the code relating to change of texture is in the block class


    The Method

    private static void updateCircuitTextures(CarbonCondenser block, TileEntityCarbonCondenser tileentity, World world, int x, int y, int z)
    {
    CarbonCondenser condenser = block;

    if (tileentity.getStackInSlot(4) != null)
    {
    if (tileentity.getStackInSlot(4).getItem() == Construct.circuitImport)
    {
    condenser.sTop = 1;
    Minecraft.getMinecraft().renderGlobal.markBlockForRenderUpdate(x, y, z);
    }
    else if (tileentity.getStackInSlot(4).getItem() == Construct.circuitExport)
    {
    condenser.sTop = 2;
    Minecraft.getMinecraft().renderGlobal.markBlockForRenderUpdate(x, y, z);
    }
    }
    else
    {
    condenser.sTop = 0;
    Minecraft.getMinecraft().renderGlobal.markBlockForRenderUpdate(x, y, z);
    }
    }



    Note - I only have the top changing right now to keep the code simple while I iron out this probably simple problem.

    How do I get it to individualize each carbon condenser?

    Posted in: Modification Development
  • To post a comment, please or register a new account.