Inactive [MECH/DEV] ItemCraft 1.6.6 - Support for client mods in Bukkit [1060/1000]

Discussion in 'Inactive/Unsupported Plugins' started by asdaarg, May 3, 2011.

  1. Offline




    ItemCraft is a Bukkit mod that allows adding new item and block types, crafting and furnace recipes, and custom tree generators and more. Using a Modloader and SettingsGUI interface it allows subplugins known as ICPlugins to be loaded to support client mods. ICPlugins can be created by translating a client mod using the ICTranslator ICplugin. Using a ModloaderMP interface (ported by krnlyng/liar) it allows porting multiplayer mods to bukkit.

    • Add more Block types
    • Add more Item types
    • Add more Entity types
    • Add more TileEntity types
    • Add more Crafting recipes
    • Add more Smelting recipes
    • Add more Tree generators
    • Ported ModLoader interface
    • Ported ModLoaderMP interface
    • Fake GUIAPI Settings interface
    • Startup file for configuring plugins and making simple blocks and items

    Installation & Usage:
    • Back up your world(s). Just in case.
    • ItemCraft.jar goes in same folder as craftbukkit
    • IC plugins go into ItemCraft/ICPlugins folder under craftbukkit. (folder is autocreated the first time)
    • uncomment (remove #) in front of all plugins you want to use in plugins.ics (autocreated in ItemCraft/ICScript)
    • Make sure you have the recommended version of craftbukkit in the title - since this is a mod of that version in particular.
    • Delete/rename the META-INF folder inside craftbukkit-0.0.1-SNAPSHOT.jar (Use some decent zip program (e.g. 7zip) that can do it.)
    • All players on the server needs to have the client mods installed
    • If you use the 16 bit entity id packet mod (in case you use new entites (only ICMCreatures need it)), All players need (flan's unofficial) ModLoaderMP client mod
    • All players also need the 16 bit entity id packet mod (overwrites a ModLoaderMP's class so make sure ModLoaderMP is installed first) in case you use new entites (only ICMCreatures need it) If decide not to use the packet mod, you can turn it off putting this in your startup file: false setEntityIDPacketMod
    • Sometimes you get block/item ID conflicts, between plugins. You then need to set the conflicting ids in the startup script using setID command: example. They have to be set before the plugin that uses them is loaded. Note also that there is typically a props file on the clientside you have to edit the ids on to be the same as well.
    • To start:
      • Windows:
        java -Xmx1024M -Xms1024M -cp ItemCraft.jar;craftbukkit-0.0.1-SNAPSHOT.jar org.bukkit.craftbukkit.Main
      • Others:
        java -Xmx1024M -Xms1024M -cp ItemCraft.jar:craftbukkit-0.0.1-SNAPSHOT.jar org.bukkit.craftbukkit.Main
      IF You do not understand how to install this follow THIS link! Also Try:

      ItemCraft Forum
      ItemCraft Wiki


      Installation instructions changed since 1.5

      For Minecraft 1.7.3

      Inofficial ItemCraft update by Syrome1.6.6 (#1060)
      ItemCraft 1.6.5 (#1000)
      QwertyPower files (ICSGlass, ICFancyPack addons and more...)
      o4kapuk 16 bit packet mod Does not work without (flan's unofficial) ModLoaderMP client mod.
      ICKSlopes - support for Kaevator SuperSlopes
      ICNTrees - support for Nandonalt's Trees mod. Details regarding use Ignore ScotTools or you will have problems breaking various blocks
      ICFancyPack - support for ChocolateySyrup's FancyPack unofficial update for 1.7.3 mod Details regarding use of potted plants IDs and settings
      User ported mods list maintained by icephantom

      For Minecraft 1.6.6

      ItemCraft 1.4.5
      ItemCraft 1.5.1 (for use with planes)

      ItemCraft 1.3.5 (for CB #818)
      ICSGlass - support for ChocolateySyrup's Stained Glass unofficial update for 1.6.6 mod
      ICFancyPack - support for ChocolateySyrup's FancyPack unofficial update for 1.6.6 mod Details regarding use of potted plants Also be sure to read: Release notes Does not work well and not at all with the newest FancyPack update(v6) Wait until client is stable.
      ICKSlopes - support for Kaevator SuperSlopes
      Usage notes
      ICNTrees - support for Nandonalt's Trees mod. Details regarding use
      ICMCreatures - Support for DrZhark's Mo's Creatures
      16 bit entity id packet mod
      User ported mods list maintained by Asymetrikon

      Dev tools:
      ICTranslator - How to use

      Source and old versions

      ICScript documentation

      Frequently Asked Questions

      Tutorial on how to make your own blocks also list of block and item IDs in most popular mods.

      Suggestions of mods to port
      Vote here not in this thread anymore (it gets lost in all the other stuff)

      Reporting errors:
      • Read known issues - don't report those.
      • State the version of CB, ItemCraft and ICPlugin(s) you have problems with
      • If your client crashes, start the client from command line so that you get the error report.
      • Make sure the mod(s) works in SSP First before you report any errors here.
      • You are more likely to get a response if you describe the problem in more detail and do some testing yourself first of under what circumstances it occurs
      • Do not ask for uploads of minecraft.jar.
      • Do not pm me.
      • If you have problems installing, you are likely doing something wrong. Make sure you've followed the instructions exactly, read the FAQ and Wiki. If that doesn't work you can always ask in the thread, while I will likely not reply, there are others who can help you with your problem. But at least try to get it working yourself first.

      That said, I want to thank all who have helped users with their problems. In particular special thanks to icephantom and Asymetrikon for their big efforts in this. Also a special thanks to xeronut for being generally helpful.

      Changelog: (open)

      • Inofficial update by Syrome to support CB #1060 and ModloaderMp v1.7.3v4.
      • Added changes by krnlyng/liar to support buildcraft
      • Inofficial updated by Qwertypower to support CB #1000
      • Fixed Generators not working since ModLoaderMP merged.
      • Added option to turn off packet230 being sent to clients: false setPacket230OnLogin
      • @QwertyPower's unofficial update to 1.7.2 and 1.7.3.
      • Fixed issues with ICPlugins not being able to use ModLoader methods obtained through relection.
      • Merge with @krnlyng/liar's translated vesion of SDK's ModLoaderMP
      • Added dummy method RegisterTileEntity to fake modloader.
      • Added dummy methods AddArmor and getUniqueSpriteIndex to fake modloader.
      • ItemCraft commands are now loaded automatically and can be used in init.ic
      • Fixed nonesense message when parsing a string and EOF is found after escape character.
      • Platform independent line breaks of autocreated files
      • added some stuff in the autocreated file
      • Fixed unupdated mod causing problems for other plugins accessing the enum's constants for new block ids 1.6.
      • Removed spam on use command
      • Fixed java method invocation
      • Added javamethod invocation of declared methods
      • Fixed pop removing 2 elements off stack
      • putsetting command, allowing editing settings using new script
      • putvar and getvar commands allowing use of variables in scripts
      • added if command, conditional execution of closures
      • ishidden, isCustomType and getCustomType commands
      • exec command, allowing execution of closures. Acts as function calls.
      • while command, for while-loops, execution of closures.
      • Annotation of non-standard methods allowing correction of semantics during parsing with methods that manually alter type info. (needed for for loops, and various stack commands (such as popall, push, pull,dup, casting, getvar, all that do not have a static type signature) to have any usefulness beyond execution using GUI.
      • added casts
      • Fixed setEntityIDPacketMod demanding a this pointer.
      • Fixed boolean constants missing.
      • Updated to CB #860
      • GUI is now off by default
      • Fixed illegal access of Item constructor and other methods
      • 16 bit Entity Id Packet mod can now be turned off
      • Added file loading functions that use filename rather than file class for Fileman, for use with Janino
      • Fixed intellisense being screwy, showing previous context
      • Fixed castability test of primitive types to primitive types being screwy
      • Fixed selected method in context view not being visible (scrolled down/up to).
      • Fixed array bounds error
      • added intellisense (context box showing sorted list of all applicable methods in context at cursor position, as well as selecting the one closest matching)
      • added tooltips showing documentation both in command box and in the context (list) box
      • added getmaterial method to get Minecraft's materials
      • added documentation to most methods.
      • removed some obsolete methods
      • renamed some methods
      • remove NAME: spam on classloaderlclass, 1,2,3 4.. spam and vs: spam
      • fixed classloaderlclass leaving junk on stack
      • fixed getconstructor (?)
      • fixed right square bracket without left square bracket not resulting in parse error
      • fixed parse to fail due to right bracket not yielding an array type
      • removed autocreate double spam
      • ics extension changed to ic (conflicting with korganizer and iCalendar)
      • moved plugins into plugins.ic (since it now doesn't execute "use" until it parsed the whole file, it doesn't
      • recognize ItemCraft functions in init.ic)
      • added setID
      • added back support for old file format using includeold
      • fixed execution of abstract script calling providing arguments in wrong order
      • ICScript is now completely converted into postfix
      • Completely rewritten script parsing and execution code
      • Math functions should work now
      • Scripts Are not executed until fully parsed
      • ICS now support direct invokation of java functions when no ICS function matches a call
      • ICS now support arrays
      • ICS now support closures (for later support for menus, functions, loops, conditionals)
      • Parser produces Abstract code that runs much faster, than when having to parse each time to execute code.
      • Pre 1.0-style startupfile scripts are no longer supported (for now)
      • Warning of Block loss with prompt to quit CB on any error during parsing
      • Warning of Block loss with prompt to quit CB if startup script file was not found and was autocreated. This way you can have it autocreate it safely without having to worry about loss of blocks during upgrade.
      • Detailed error reports during both parsing with line number and column and during execution.
      • added simple math functions
      • added basic string and character functions
      • fixed methods popping more than one element
      • fixed dup not duplicating
      • added primitive classes
      • added parsing of primitives as primary commands
      • added parsing of strings as primary commands
      • fixed identifier after a string being misparsed
      • fixed popup menus not working in windows
      • added methods to get icplugins and their classloaders
      • added methods to get constructors and invoke them
      • Implemented new functional script language ICScript
      • Implemented GUI
      • inclusion of files (so you can split up startupfile in smaller files)
      • loading plugins on the fly
      • executing any script commands on the fly using GUI
      • exploring variables and functions of objects in GUI
      • invoke any functions, private or public, on any class loaded in IC/ICPlugins/minecraft/CB/any bukkit plugins
      • Built in text editor (was going to be for editing java code)
      • Removal of blocks, entities and items, even on the fly
      • Adding new blocks, entities and items on the fly
      • Specify what entities spawn in what biomes and how frequently.
      • Customizable programmable menus per node type in GUI
      • IC now retrieves version number both for plugins and itself automatically and reports it when plugins are loaded
      • fixed mimic having target object mimic itself.
      • fixed invokation on wrong object when interacting with mimiced block
      • fixed setint setting a string and not an int
      • fixed case sensitivity of block parameters
      • fixed some other bugs related to block parameters
      • no more commas assigning multiple values in block parameters (because I'm lazy)
      • Mobs that are unspawnable don't crash the server anymore
      • Added new startupfile commands: blocks and entites
      • Added new startupfile commands: setbool, setint, setfloat, setdouble, that allows changing the settings of mods that use GUIAPI (nandonalt trees and mo's creatures)
      • fixed various bugs with craft command in startup script
      • removed debug spam on id command
      • fixed comments causing "unknown commands" in startup file
      • cleaned up unnecessary stuff from error report
      • fixed skip skipping over the next line too
      • Implemented modloader removespawn (could that have anything to do with the watermob problem?)
      • fixed unknown command spam on empty lines
      • fixed some bugs with craft command in startup file manager.
      • Fixed kicked when horse throws you off because of accessing protected field
      • Fixed problems adding recipes, tile entites, entites using API.
      • added items command for debug purposes
      • added a copy of spawncreatures to the mod, no idea if that will solve the issue with sharks crashing server.
      • Mimic feature of block allows block to mimic other blocks, fully or in some respect (useful to customize blocks beyond the fixed values from startup file)
      • back to start from craftbukkit folder; its no longer a plugin
      • IC plugins go into ICPlugin folder now in craftbukkit folder. These are to avoid problems caused by plugins being reloaded by CB
      • usedefaults on by default
      • fix item 0 is not valid item spam
      • implemented Modloader getUniqueEntityId,RegisterEntityID,setPrivateValue
      • implemented various SettingsGUI widgets facades, and SettingFloat, SettingsMulti
      • script pauses when error occurs to avoid startup with wrong settings
      • Items are also registered as dummy, to avoid error spam by other plugins
      • Modloader world generator interface for normal type worlds implemented
      • Barebones fake GUIAPI interface that loads default settings (might add ability to modify options through startup later)
      • Added fix for blocks not having dummy material in ICFancyPack that inherit the Block class directly
      • Dummy id changed to 255
      • Added support for Entities in API
      • Added support for adding mobs to biome spawnlist in API
      • Added support for adding tilentities in API
      • Added fake modloader for to interface with translated mod plugins
      • Added more detailed output when plugin loading fails.
      • Backward incompatible update to 766
      • Added ability to set data on input items in crafting recipe
      • Added ability to comment in startup file with #
      • Added more error handling.
      • Fixed unable to craft out of nonblocks
      • Added more error handling
      • Partial support for GUIs
      • Mod for custom tree generation
      • Custom Tree generation API
      • Custom Tree generation startup file instructions:tree,treebiome and biometreedensity
      • Added mod of org.bukkit.Material to accomodate new block types, should reduce at least some errors other plugins have.
      • Fixed Item id being offset by 256
      • Fixed startup script created Blocks not being added to item list
      • Added more error handling
      • Fixed ItemCraft not starting because of spaces in the path on windows machines
      • Fixed regexp error on windows when starting as plugin
      • More error handling added
      • Fixed freeze when adding new block properties using startup script
      • Now doubles as plugin, so you can start it as a plugin rather than a mod
      • Startup file autocreation
      • loud startup file instruction- prints out more info at startup
      • a whole lot more error handling
      • fixed bug not being able to load any other plugin that KSlopes.jar (what am I thinking)
      • Most if not all simple constant Block properties now definable from the startup file.
      • Better error handling
      • More complete Block API
      • Syntax correction
      • Initial Release
      • Made compatible with IC 1.0
      • Syntax correction
      • More information on startup
      • Fixed slopes and corners dropped having wrong data.
      • Initial Release
      • Introduced options to change settings and IDs
      • Disabled new bookshelves
      • Updated for 1.7.3
      • Fixed another NPE on startup
      • Fixed NPE on startup
      • Updated to unofficial version of 1.6.6
      • changed class path for flower, cactus and reed
      • Fixed not able to place in potted plants
      • Fixed blockcycler interaction
      • Added potted plants
      • Initial Release
      • Updated to 1.7.3
      • Fixed static construction of objects problem
      • Fixed no tree generation
      • updated to 1.6.6
      • fixed clicking on bananacake blocks, fruit leaves
      • fixed using fertilizing
      • fixed activating banana cake
      • Initial Release
      • Updated to 1.6.6
      • Made everything public and even added a public ()V constructor in water mob class (no idea if that will solve it though)
      • Says its loaded on startup when its loaded
      • Initial Release
      16 Bit Entity ID Packet Mod
      • Supports both 16 bit and 8 bit servers
      • Initial Release
      • Fixed conflict with glass bug
      • Initial Release
      • Fixed no output on windows machines.
      • More informative about files to translate not being found.
      • Made it tolerate there being no file separator at the end of retroSource.
      • Removed some spam.
      • Added checks that make sure you have all the necessary maps specified, when you translate.
      • Initial Release
      • Update to 1.7.3
      • Initial Release

      Donate (Not necessary but appreciated)
  2. Offline



    J:\Games\MMORPG\Minecraft>java -Xmx1024M -Xms512M -cp Minecraft.jar net.minecraf
    16 achievements
    146 recipes
    Setting user: Zmod, -7090028959829533188
    ModLoader Beta 1.5_01v4 Initializing...
    Overriding /terrain.png with /fancypack/craftsclay1.png @ 30. 92 left.
    Overriding /terrain.png with /fancypack/craftsclay2.png @ 39. 91 left.
    Overriding /terrain.png with /fancypack/craftsclay3.png @ 40. 90 left.
    Overriding /terrain.png with /fancypack/craftsclay4.png @ 54. 89 left.
    Overriding /terrain.png with /fancypack/craftsclay5.png @ 55. 88 left.
    Overriding /terrain.png with /fancypack/craftsclay6.png @ 56. 87 left.
    Overriding /terrain.png with /fancypack/craftsclay7.png @ 76. 86 left.
    Overriding /terrain.png with /fancypack/craftsclay8.png @ 77. 85 left.
    Overriding /terrain.png with /fancypack/craftsbone1.png @ 78. 84 left.
    Overriding /terrain.png with /fancypack/craftsbone2.png @ 84. 83 left.
    Overriding /terrain.png with /fancypack/craftsbone3.png @ 85. 82 left.
    Overriding /terrain.png with /fancypack/craftsbone4.png @ 100. 81 left.
    Overriding /terrain.png with /fancypack/craftsbone5.png @ 101. 80 left.
    Overriding /terrain.png with /fancypack/craftsbone6.png @ 106. 79 left.
    Overriding /terrain.png with /fancypack/craftsbone7.png @ 107. 78 left.
    Overriding /terrain.png with /fancypack/road.png @ 108. 77 left.
    Overriding /terrain.png with /fancypack/fancystone.png @ 109. 76 left.
    Overriding /terrain.png with /fancypack/pot.png @ 110. 75 left.
    Overriding /terrain.png with /fancypack/paperlantern.png @ 111. 74 left.
    Overriding /terrain.png with /fancypack/bonelantern.png @ 125. 73 left.
    Overriding /terrain.png with /fancypack/chain.png @ 126. 72 left.
    Overriding /terrain.png with /fancypack/cage.png @ 127. 71 left.
    Overriding /gui/items.png with /fancypack/stonechimney.png @ 38. 132 left.
    Overriding /gui/items.png with /fancypack/brickchimney.png @ 46. 131 left.
    Overriding /gui/items.png with /fancypack/uncookedcrafts.png @ 60. 130 left.
    Overriding /gui/items.png with /fancypack/uncookedpot.png @ 61. 129 left.
    Overriding /gui/items.png with /fancypack/woodtable.png @ 62. 128 left.
    Overriding /gui/items.png with /fancypack/stonetable.png @ 85. 127 left.
    Overriding /gui/items.png with /fancypack/irontable.png @ 91. 126 left.
    Overriding /gui/items.png with /fancypack/goldtable.png @ 93. 125 left.
    Overriding /gui/items.png with /fancypack/obsidiantable.png @ 101. 124 left.
    Overriding /gui/items.png with /fancypack/woodchair.png @ 102. 123 left.
    Overriding /gui/items.png with /fancypack/stonechair.png @ 105. 122 left.
    Overriding /gui/items.png with /fancypack/ironchair.png @ 106. 121 left.
    Overriding /gui/items.png with /fancypack/goldchair.png @ 107. 120 left.
    Overriding /gui/items.png with /fancypack/obsidianchair.png @ 108. 119 left.
    Overriding /gui/items.png with /fancypack/woodwall.png @ 109. 118 left.
    Overriding /gui/items.png with /fancypack/stonewall.png @ 117. 117 left.
    Overriding /gui/items.png with /fancypack/ironwall.png @ 118. 116 left.
    Overriding /gui/items.png with /fancypack/goldwall.png @ 119. 115 left.
    Overriding /gui/items.png with /fancypack/obsidianwall.png @ 120. 114 left.
    Overriding /gui/items.png with /fancypack/hellstonetable.png @ 121. 113 left.
    Overriding /gui/items.png with /fancypack/logtable.png @ 122. 112 left.
    Overriding /gui/items.png with /fancypack/hellstonechair.png @ 123. 111 left.
    Overriding /gui/items.png with /fancypack/logchair.png @ 124. 110 left.
    Overriding /gui/items.png with /fancypack/hellstonewall.png @ 125. 109 left.
    Overriding /gui/items.png with /fancypack/logwall.png @ 133. 108 left.
    Mod Loaded: mod_FancyPack 1.5_01
    Overriding /gui/items.png with /mob/horsesaddle.png @ 134. 107 left.
    Overriding /gui/items.png with /mob/haystack.png @ 137. 106 left.
    Overriding /gui/items.png with /mob/sugarlump.png @ 138. 105 left.
    Overriding /gui/items.png with /mob/sharkteeth.png @ 139. 104 left.
    Overriding /gui/items.png with /mob/sharkegg.png @ 140. 103 left.
    Overriding /gui/items.png with /mob/fishyegg.png @ 141. 102 left.
    Mod Loaded: mod_mocreatures v2.9.4 (MC 1.5_01)
    WARNING: Found unknown Windows version: Windows 7
    Attempting to use default windows plug-in.
    Failed to enumerate devices: Failed to get device description (d)

    Starting up SoundSystem...
    Initializing LWJGL OpenAL
    (The LWJGL binding of OpenAL. For more information, see http://www.lwjgl.or
    OpenAL initialized.

    at qa.a(SourceFile:202)
    at oy.b(SourceFile:431)
    at oy.c(SourceFile:661)
    at oy.b(SourceFile:498)
    at EntityRendererProxy.b(
    at Source)

    SoundSystem shutting down...
    Author: Paul Lamb,


    Now getting that ;/ any help ? :( I have Mo Creatures, FancyPack and SuperSlopes installed on the client.. I installed AudioMod and GUI API using TCFMM though..

    Singleplayer works, Multiplayer does not.
  3. Offline


    do u have modloader on the client and the pm mod
  4. Offline


    I do not recommend TCFMM, it corrupted the .jar for me. I couldn't add mods.
    And you need the 16 bit packet mod.
  5. Offline


    Nope, tried it with the 16 bit packet mod, still have the same problem.. I can go on the server fine without MoCreatures though.. and MoCreatures works 100% fine on singleplayer ..
  6. Offline


    Hmm, my client crashes when I try to make FancyStone. Now this isn't such a big deal, but still worth mentioning.
  7. Offline


    Hi is it Possible to get ICMCreatures to work with DefaultCommands? Any Permissions or so?
    here is a screenshot with my Error.

    Hope u can Help me.

    Attached Files:

  8. Offline


    If anything else works i suggest its a ID conflict meaning the ID for fancy stone is 1. Different between server/client or 2. exists only on one side (client or server)
  9. Offline


    Hi i have few questions if you ppl dont mind:
    I tried to run all douse Mods with your great plugin and only Sign Tags Beta 1.5_01 worked
    All mods were tested on Clean craftbukkit(latest offcourse) and also clean(no Slopes mod and ect) ItemCraft.
    So i want to confirm that its me doing some thing wrong or its just plugin cant do it.....
    Bsw aside douse mods Slopes and 3 others mentioned worked fine for me.....
    Runing linux....Meta inf modified...and yes i know how to use mods for SSP and where to put em....
    Ty and in advance and for great plugin^_^
    TNT Remote 1.1
    spikes 1.5_01 v1.1
    fanblock 1.5_01 v2
    sensors 1.5_01
    Speaker Block 1.5_01 1.5{SIMPLETEXT1}
    Shelf Beta 1.5_01v2
    Sign Tags Beta 1.5_01
  10. Offline


    I suggest helping you may be difficult cause i cant see any question. No Error Log and nothing what is to solve...???
  11. Offline


    I installed everything with TCFMM, the 16 bit packet mod too. But yeah, you can't edit your minecraft.jar with winrar anymore after TCFMM.
  12. Offline


    Well....there were some similar cases here in coments...when i try craft some thing from that list item blink for a moment in Redy for use box(sr do no how name it corecly) and then its error becos ther is crashes....unless i do ones on purpouse......
    I want some one confirm is douse mods work with this plugin.....if yes well then i have problem here)))
  13. Offline


    any plans to support humans+?
  14. Offline


    Can no body help me with the item buggs???
  15. Offline


    There are major upcoming changes in 1.0, but there is a tough decision for me to make too and I'd like to know what people think.

    This mod is made both for users who just want to use client mods on their servers, and developers who want to add new blocks, entities, items etc or even port entire mods. So seeing as the API is very under utilized, I've concentrated on providing control through the startup file. The control has been limited to setting fixed numeric or boolean variables for blocks and more recently I've expanded control to mimicing other blocks as a whole on in various respects to other blocks. Yet this does not provide full control of blocks that one might want if one wants to introduce blocks that have entirely new features.

    So one of the new features in 1.0 is the ability to directly write java code in the startup file (or link to a java file through inclusion.) and then IC compiles it using janino to blocks, entities and items. This might sound intimidating to some but I'm going include another feature which makes this not so intimidating but allows for a bit of experimentation for those not familiar with java, namely decompilation of blocks, entities and items as a whole, or just particular methods. This will allow for instance experimental modification of variable values and fine tuning of the behavior, something which anybody could do. The methods are then inserted back into the class and recompiled and inserted into the game. I could even allow this to be done while the game is running, which leads to the next feature, namely the ability to execute scripts from within the game, or even issue particular script commands. I could make a separate plugin for this, since IC is no longer a plugin, and I still haven't added the /ic give feature. This would allow for instance adding or removing entities and block types on the fly without having to shut down the server, and for the developers, the ability to edit blocks and entities without restarting the server all the time.

    There is a third major feature which I've been thinking about for some time and that is to turn the startup file script into a stack based postfix language. But this will it less readable, especially for those who are not used to seeing such. The benefit on the other hand would be that it would allow programming through experimentation, working with concerete values on the stack, rather than with long abstract expressions, something which could be very useful when you issue commands on the fly and do it step by step to avoid mistakes. Alternatively, I could implement a prefix language (It is currently very prefix with the exception of '=''s) or even keep it a mixed bag. This is of course more readable, but less useful for programming when you don't have a clear idea of what you are doing to start with. Prefix is very inflexible when it comes to improvisation, but it is by far more readable than postfix, albeit often less readable than infix when multiple arguments are involved. So which way would you prefer?

    There is a fourth major feature, but I think I'm going to leave it until later since its rather complicated. It is the translation of fields and functions in the decompilation and compilation from and to MCP names (far more readable and understandable than the ones in CB at low level.) Once this is done, it will allow for a universal interface to write mods both to client and server, in a similar fashion to Pogic and DynCraft.

    Edit: What is infix, postfix and prefix you may ask. Here are some examples:
    Infix: 3+4 (operator in between operands)
    Prefix: + 3 4 (operator is first)
    Postfix: 3 4 + (operator is last)

    Infix: (3+4) * 5
    Prefix: * + 3 4 5
    Postfix: 3 4 + 5 *
    Note: prefix and postfix are good at getting rid of parentheses

    Infix: cats eat rats
    Prefix: eat cats rats
    Postfix: cats rats eat

    In java all function calls are prefix: eat(cat,rat); but mathematical expressions are infix: 3+4. But nobody uses postfix usually unless you have a stack based calculator or otherwise have a liking of it, so thats why its not very readable, its much more useful when you get into it.

    Edit: Also forgot to mention the minor features.
    - Mimicing will simply be done by decompiling copying and recompiling - it'll run faster than java reflection method I'm using now.
    - Plugin independent biome specific spawn rates and type specification.
    - Removal and not just adding of blocks, items and entites, will give a lot more flexibilty, and it will allow ICFancyPack to replace the default blocks for the potted plants.
    - Script File inclusion (useful if you have a long script or want to keep things modular so you can just comment/uncomment one line to add/remove a module )
  16. Offline


    Wow....well i not so good at java...and you are inded wrote some scary stuff there if you ask me lol but i get the point....more freedom for Devs,,,,well if this allow you plugin to work with more Mods correcly then Go Go Go do more great stuff o/ ^_^
  17. Offline


    Hmmm the few things i understand sound good. :)
    I think i have to learn some Javabasics. :p
  18. Offline


    So, before I ask again about the mods that I want, I'm going to ask a bit smarter of a question. How exactly do you make an API for java? I have no idea how to do it meself and would like to learn so I can stop bugging you.
  19. Offline

    Mathew Alden

    I'm not good at all this networking and this stuff is confusing me.

    Can someone just tell me what I need to do to add new bricks to MineCraft without my clients needing to do much.
  20. Offline


    Well its really simple actually, since java does this automatically when you flag a method, field or class as "public" it becomes accessible from outside the jar. Also protected methods of non-final classes. Interfaces are also useful for doing callbacks (allowing the API user to execute something in various events.)

    You would have to make the block on the client too. But you can use tools like MMB to do that. For a basic block that does nothing special, say with the id 125, you just type
    block 125
    in the startup file.

    EDIT by Moderator: merged posts, please use the edit button instead of double posting.
    Last edited by a moderator: May 14, 2016
  21. Offline


    So, if I'm getting you right; I would need to create the com folder and tier it down to the name of whatever I want as a mod folder, then put the class files into that. Then I would need to create a yml for it and make it look something like this:
    name: ChewysMetalMod
    main: com.asdaarg.bukkit.ChewysMetalMod.ChewysMetalMod
    version: ????
    Is that about right?

    Edit: Ok now that I've picked apart what you did, I understand a bit better. The only class files you really need to reference in the API are the ones that start with the mod_ prefix. And from what you are saying, as long as I can get the ItemCraft plugin to reference that, I can make the mod a custom one by throwing it in the ICPlugins folder and adding a line to the startup.txt.
    I hope that I have that all right.

    I uploaded what I did to here:
    Would you mind taking a look and seeing if I did that right? I think there are block ID conflicts with KSlopes, but this is really a proof of concept for me.

    EDIT by Moderator: merged posts, please use the edit button instead of double posting.
    Last edited by a moderator: May 14, 2016
  22. Offline



    Sound AWESOME !!!
  23. Offline


    Nice to see how well this progresses, keep up the good work! You're the man!
  24. Offline


    Still having some problems, I have the mo creatures working find on single player, and no errors on the server, I can see the Mo' Creatures mod options ingame but no creatures, any insight?
  25. Offline


    me too
  26. Offline


    Well ty for your support ppl))) lol
    Ohh well i guess as allways i gt to figureout it my self.....
  27. Offline


    My opinion ?

    A user search all easy help to make a plugin without learning any language
    Your startup language is very usefull (i have convert some modloader plugin with it)
    I think insert java code in this only help plugin's programmer and they can make a plugin
    without itemcraft...

    I think you must just improve startup language with interesting and easy features
    If somebody want more, he can make a .jar like yours ?

    ps: sorry for my very bad english, this is not my native language and i hope you understand
    what i can want to say :)

    bones & clay idols don't change when we click on it ?
    That normal ?
  28. Offline


    After sleeping on this I've come up with a new idea. Some kind of hybrid of my earlier ideas.
    You type in prefix, so it makes it readable, but it is parsed backwards, so everything typed last is executed first.
    The stack is also preserved so when you type for instance:
    SQRT 16
    you end up with 4 on the stack. Then if you type:
    + 5
    You end up with 9.
    You have the best of both worlds.
    Then I had another idea. I could make a GUI (even though I'm not very good at those)
    In the GUI there is a commandline textbox and a bigger textbox for output above, or maybe a treeview. The reason for the treeview is this. When you type for instance:
    It wont print a huge list of all the items, but instead it will add a node at the bottom of the tree, and you can expand it to see the items. Then you can expand an item and see what it contains, and so on. The treeview represents the stack of objects that you've got from typing in functions that have return values. But objects like arrays, maps or classes that are complex, can be explored like a tree rather than having them output in a long list. Then when you find what you are looking for in the tree, you can just double click it and it will use that object as the next argument in your command line.
    And to make it easier to use for those who aren't faimilar with the language, there is always a listview on the right side where you can pick from a list of functions that are applicable in the current context e.g. lets say you have a function SETBLOCK <world> <x> <y> <z> <id>
    And you type:
    It will list all functions that return a world, and it will also list all worlds that are running on your server so you can just double click those. Then it will list all functions that return an integer since x is next. When it comes to id it will list all the block ids and their names. When you hit enter, it will execute it, and any return values will be put into the stack shown in the tree view, but when you wish to use the values on the stack, you can
    a) just type a function and it will pop out the last values that match the argument types
    b) type the function and then pick and choose the arguments from the stack by double clicking
    c) type the function and then type in a simple variable name automatically associated with each stack entry, e.g. a, b, c and so on (useful if you don't like to click but just type)
    d) type in new arguments
    e) a mix of two or more of the above.
    When you explore a block in the treeview, you can go into its fields and methods, and you can right click and add/remove/edit methods and fields. It will decompile and dump the body of say a method you clicked edit on, and then you edit it in a multiline textbox, and when you click save, it compiles it back with the rest of the body of the class and block is inserted into the game.

    That's just some wild ideas I had while trying to get out of bed this morning.
  29. Offline


    When I do this, the server does not start. :O
    Where do I have to put the ICMTrees Monsters etc. ?
  30. Offline


    Asdaarg !!! I like your dream :)

    Try to follow the install guide step by step, you don't make good !

    Sign tags beta work without itemcraft ;)

    EDIT by Moderator: merged posts, please use the edit button instead of double posting.
    Last edited by a moderator: May 14, 2016
  31. Offline


    hmm well thats some thing ty.....and the rest?)

    and bsw ppl StainedGlass1.5 from fancy pack....not work for me....any one? fancy pack it self work fine

Share This Page