~0.7.0-534~ MachineMuse's Modular Powersuits

  • If I record some sound effects for the mod, is there any chance they could get put in? It would be a lot more satisfying to have one when you install a module for instance. Maybe a special walk sound if you weigh too much, though that is probably non-trivial.

  • If I record some sound effects for the mod, is there any chance they could get put in? It would be a lot more satisfying to have one when you install a module for instance. Maybe a special walk sound if you weigh too much, though that is probably non-trivial.


    SInce sounds are planned anyway, and if your sounds are good, they will probably get added!

  • Blast proof? Energy armor and plating already does that.
    Maybe knockback reduction.

    not realy even if i et up max protection to 20 or 100 an explosion of an charged creeper can still kill me, explosions do extremly high amounts of damage so thats why it should be a protection against it, becouse if you add that kind of protection to universal damage you cant get killed but i want something that removes a % of the blast damage, and more blast damage=more energy consumed, something like the no fall damage upgrade to the boots. I can kill myself with a multitool with explosion cize 2.5 when i have full armour with energy shield with 200 protection on each peace of armor, i think thats a bit to easy to die from explosions.

  • MPS Version 0.4.1-292 is now recommended!


    New modules:
    -Shears (to be replaced by projectile blade launcher eventually) - longer range than normal shears (10m!)
    -Rototiller - till a circle up to an 8m radius, all at once!
    -Airtight Seals - allows the helmet to act as a Galacticraft oxygen mask. Air tanks sold separately.


    New functionality on old modules:
    -Limited treecapitator emulation on woodcutting module
    -Flight control now responds to 'sneak' and has a tinker option, 'verticality', which controls how much your view angle contributes to the direction of movement (can be more like creative flight if you want)


    New configuration options:
    -Mode-switching and flight control 'go down' now have Forge keybinds
    -Mousewheel mode-switching can be turned off in config file
    -Max. flight speed can be capped so people don't load chunks too fast and bog down the server.


    Other tweaks:
    -Using items while climbing a ladder or swimming should no longer paradoxically give you a speed boost
    -Player input updates now only send on changes - should save on bandwidth for high-population servers with many idle
    -Plasma bolt rendering improved - better lightning effect and should no longer appear as a flat panel in another player's hand
    -IC2 for 1.5.1 should now be supported. **UNTESTED**
    -All items in your inventory (batteries included) should now count towards your energy & weight total - no more need to install batteries in the power tool
    -Fixed a couple crash cases (removing items while flying, shooting entities beyond 64 blocks with railgun)

  • Please stop including the IC²-API inside your Mod download. You broke the Interface of IElectricItem with that. You can always use invocation to access the IC²-API. Even for Interfaces.

  • I have learned that trick from fallenbeast. Just create multiple Classes for one Item, and then just put the one with the potentially missing Interface inside a "try", and put the Item which doesnt contain the Interface into the "catch(Throwable e)". That way you can initialize Items, without including Interfaces of the Mods. I did that for Nuclear Control and for Buildcraft (the MJ-System) compatibility.

  • I have learned that trick from fallenbeast. Just create multiple Classes for one Item, and then just put the one with the potentially missing Interface inside a "try", and put the Item which doesnt contain the Interface into the "catch(Throwable e)". That way you can initialize Items, without including Interfaces of the Mods. I did that for Nuclear Control and for Buildcraft (the MJ-System) compatibility.


    That would be fine if I only had 1 or 2, but right now I have 5 (ue, ic2, as, icbm, galacticraft) and that number will grow in the future. Since this is a combinatorial problem I will have to conditionally implement 2^n = currently 32 copies of the item, later 64 or 128 with TE, Xycraft, mekanism, and others.


    I think I can do it with reflection and proxy classes but I don't know how slow it will be.

  • Hm, it looks like a dynamic proxy will add about 500 ns per invocation. Not much on its own, but when you only have 50 ms to work with, and you could be accessing it 50 times per tick, that's not so great compared to 9ns for a static invocation.
    Which leaves asm. I want to learn more about that anyway, but it's going to be a few weeks before I have more than a few hours here and there.

  • You need to call the Invocation only once, when you use Proxy Items, and that is when initializing the Item. You could put all the Interface implementation into the Proxy Class without having the actual Interfaces in it, and then a few Dummies which are extending your Base Item and just add the Interfaces. But you cant indeed get rid of the combinatorical Problem, thats true.

  • Code talk, Code talk, and guess what? More Code talk! Hope you find a way to make it work. Love the new update, no need to carry an enchanted diamond axe when my glove of awesome sauce acts like TreeCapitator.

  • You need to call the Invocation only once, when you use Proxy Items, and that is when initializing the Item. You could put all the Interface implementation into the Proxy Class without having the actual Interfaces in it, and then a few Dummies which are extending your Base Item and just add the Interfaces. But you cant indeed get rid of the combinatorical Problem, thats true.


    Err, I was unclear. I mean Java reflection proxies not FML proxies. So I can add the interfaces dynamically at runtime by creating a class 'on the fly' that extends my base item and implements whatever other interfaces. But it's ugly because it just passes in the object it's being invoked on, a method object for the method being invoked, and the arguments as Object[]s and leaves it to your proxy to work out how to handle the invocation. So even without the 500ns overhead from reflecting everything, it still has to work out which method is being invoked and handle it accordingly, which with ~20 methods on 5 different interfaces is still a bit of a problem...


    Granted, I guess I could make my own electric item interface and implement those statically, that way the only time it takes the performance hit is when interfacing via IC2's API, e.g. when using the electric drill or when charging in a batbox. Still, that might be a lot in some cases. :/

  • Just a question: I think some of the GregTech recipes are too hard, but the other recipes are too easy. If I came up with some "soft-core" GregTech recipes, would you then be willing to add them to the mod as a seperate recipe scheme in the config?

    Age: 16. Favourite school subject: Physics/Chemistry.


    The IC2 forums could really use a lot more of [REDACTED], [DATA EXPUNGED] and ████████.


    I'm in a so called "after-school". It's freaking fantastic and nowhere near as boring as normal school!

  • It's getting to be kind of a pain to maintain all the different recipes and I kinda want to get rid of the component items entirely to go for a materials-based approach. That way we could just distribute different configs for each set of recipes and let servers put whichever they want in. Another infrastructure side project...

  • I saw you were even counting 500 nanoseconds as loading Lag. That is not really necessary to look at these small amounts of initial loading time. Nobody would complain about 10 seconds more loading time. It's only bad if the loading time gets enlengthened by something like an online Check for a stupid Changelog.


    As for Proxy Class, I meant one Item Class for everything (what is something what we here in germany call "Egglaying Woolmilkpig"), and use that Class as base for all the invokated Interfaces.

  • I saw you were even counting 500 nanoseconds as loading Lag. That is not really necessary to look at these small amounts of initial loading time. Nobody would complain about 10 seconds more loading time. It's only bad if the loading time gets enlengthened by something like an online Check for a stupid Changelog.


    As for Proxy Class, I meant one Item Class for everything (what is something what we here in germany call "Egglaying Woolmilkpig"), and use that Class as base for all the invokated Interfaces.


    For dynamic/reflection proxy: it's not loading time, it's every time the method is invoked, which is several times per tick if they have e.g. night vision or active camouflage modules or are flying or any of a dozen other things.


    I'll try it anyway. It could be negligible in the long run.


    For having a separate handler that the classes just redirect to: That is roughly what I'm currently already doing, just with 1 class. It would be really easy to separate them out into different classes, but I don't want to make 32 class files for each of the possibilities.


    EDIT: This is what I am thinking about: http://docs.oracle.com/javase/…ide/reflection/proxy.html


    EDIT2: judging by more research, it is not that much more expensive in actual practice, maybe 2x on the affected method calls. So as long as it's not used in rendering for example (it's not) the performance impact should be negligible. So that's what I'll do then :) thanks for calling me out on this, made me figure something out that will make other bits a bit easier...


    EDIT3: If it gets really bad I guess I can just use a map by player name and only update the item once per second or something.



    This dynamic proxy won't work for Item or whatever because it must have Proxy as a superclass... I will have to do bytecode manipulation after all.


    I wonder if I can use http://www.csg.is.titech.ac.jp…st/tutorial/tutorial.html to avoid making a coremod... probably not since it needs a classloader.

  • If I record some sound effects for the mod, is there any chance they could get put in? It would be a lot more satisfying to have one when you install a module for instance. Maybe a special walk sound if you weigh too much, though that is probably non-trivial.


    Sorry, I should have addressed this sooner but I didn't know what I was going to say. Lurch1985 (who did the sounds for IC2 I believe) already made a bunch but I haven't gotten around to figuring out Minecraft's sound system yet... but there are still plenty more to go.


    The thing is, they have to be VERY heavily compressed AND still sound good in order to fit in a mod jar that millions of people are going to be downloading.