[MC 1.8.9-1.12.2] Plethora
SquidDev 06 Aug 2016
Plethora is a ComputerCraft peripheral provider for Minecraft 1.8.9+. It aims to provide both metadata and peripherals for vanilla Minecraft and most mainstream mods.
Plethora also adds a series of "modules" to the game. These modules can be used by the player with varying success. They really come in to their element when put in a manipulator, providing a series of methods which allow interacting with your environment. This includes:
- Introspection: investigating the current player's inventory (and ender chest)
- Scanner: scans blocks in an area, gathering metadata about them and allowing wrapping peripherals remotely
- Sensor: scans entities in an area. Like the scanner this allows getting metadata and wrapping them as peripherals.
- Frickin' laser beam. It fires lasers.
You can also add a kinetic augment to the neural interface. This allows controlling the host entity in various ways.
Documentation
There is pretty comprehensive documentation on the Plethora website. This contains tutorials, explanations of several fundamental concepts and thoroughly explained examples.
You can also create a HTML dump of all methods by running the command /plethora dump out.html. When run in a single player world this will save a file in the active directory (normally .minecraft or your modpack's folder). This documentation is also available online.
Download
Download from CurseForge A full list of dependencies can be found on the website.
Screenshots
Edited by SquidDev, 03 May 2019 - 12:33 PM.
Bomb Bloke 06 Aug 2016
Bomb Bloke 08 Aug 2016
Does interfacing a critter nametag them (that is, prevent them from despawning)?
Seems odd to just have kin.disableAI(), as opposed to a toggle? Said function makes it impossible to move my test dummy (a zombie pigman) at all - whether it be by my character pushing them, kin.launch(), whatever.
kin.launch() seems a tad... overpowered? I mean, kin.launch(0,270,4) translates to "send entity over fifty blocks up into the air"... Likewise, that infinite-ammo laser really packs a wallop...
getTransferLocations() seems to show up in places where it shouldn't (ie pretty much everywhere).
While messing about with inventory reading on myself, I crashed out with this. I can reproduce by entering into the Lua console:
inv = peripheral.wrap("whatevs") inv = inv.getInventory() inv.list() -- Can call this as much as I like. -- Duck out and modify inventory contents here inv.list() -- MC crash
Best I can make out there's no way to "use" items other than food yet, and no way to interact with external inventories? I may just be missing something there?
SquidDev 08 Aug 2016
Bomb Bloke, on 08 August 2016 - 05:45 AM, said:
Bomb Bloke, on 08 August 2016 - 05:45 AM, said:
Bomb Bloke, on 08 August 2016 - 05:45 AM, said:
Bomb Bloke, on 08 August 2016 - 05:45 AM, said:
Bomb Bloke, on 08 August 2016 - 05:45 AM, said:
Bomb Bloke, on 08 August 2016 - 05:45 AM, said:
Thanks for the feedback (and trying out the mod).
Bomb Bloke 08 Aug 2016
SquidDev, on 08 August 2016 - 06:40 AM, said:
If I might hazard a suggestion: an expensive crafting station would make it rather more "fair" to have individual, high-powered items at a cheap price.
You totally need to add a Cortex Reaver mob, by the way.
SquidDev, on 08 August 2016 - 06:40 AM, said:
Beats me how viable this is on the backend, but from the Lua-scripting side of things I guess it'd make sense to have the block sensor return a list of inventory blocks in range of the entity as a list of strings - presumably they have their own UUIDs or something. You could then either getInventory(UUID) them, or ownInventory.push() to them.
An augment which adds an inventory to entities which otherwise wouldn't usually have them would be cool, too, especially if it gave them the innate ability to such up dropped items automatically like a player does.
I haven't tried them, so I guess I'll ask if modems be equipped in augment slots?
SquidDev 08 Aug 2016
Bomb Bloke, on 08 August 2016 - 12:03 PM, said:
Bomb Bloke, on 08 August 2016 - 12:03 PM, said:
Bomb Bloke, on 08 August 2016 - 12:03 PM, said:
Bomb Bloke, on 08 August 2016 - 12:03 PM, said:
Bomb Bloke, on 08 August 2016 - 12:03 PM, said:
If you have other ideas do post them! Its really useful having other voices in the mix.
Edited by SquidDev, 08 August 2016 - 08:46 PM.
HDeffo 08 Aug 2016
immibis 27 Sep 2016
SquidDev 27 Sep 2016
SquidDev 12 Nov 2016
The biggest change you'll notice is that I've done a re-work of modules. Instead of each module being independent of the others, methods can depend on multiple modules. For instance if there was a "goggles of revealing" module you could use that and the introspection upgrade to list aspects inside your inventory. As a result of this, the neural interface has separate slots for peripherals and modules now: modules are mounted on the "back" slot of the computer. There is also a Mk II manipulator which can hold 5 modules at once.
I've added a load more mod-compatibility with support for Vanilla, CCTweaks, Baubles, IC2 and RF. There are also use and walk methods on the kinetic augment, allowing you to send an unsuspecting entity walking around. Sadly you can't control yourself yet .
Everything is now configurable, allowing you to disable transfer sources, meta provides and methods, blacklist entire mod specific integration and add a "base cost" to every method: allowing rate-limiting method calls.
There are also a load of bug fixes, but we'll not focus too much on them .
Edited by SquidDev, 13 November 2016 - 09:46 AM.
Bomb Bloke 13 Nov 2016
I'm having a bit of trouble with it, though. First I tried loading up a zombie pigman with modules - I could wrap them via the "back" peripheral and got a load of functions in the resulting table, but they all threw "The module has been removed" when called. Including listModules(). Putting aside that the modules were clearly still in place, it'd be handy if the error specified which modules it thought were missing...
Trying listModules() on myself didn't error, but didn't list anything, either. A quick check of launch() yielded some success (whee!), but walk() seems to be missing from my character's interface (the pigman got it, even if it didn't work - I'd assume both functions should come from the kinetic module?).
After moving the kinetic module around a bit in the hopes of getting the missing walk() / isWalking() functions to appear, I re-wrapped the rear peripheral and started getting "The module has been removed" for everything through my own interface. At this point I quit to the main menu and re-entered the world, only to find it had rolled back to a point very shortly before I had first stuck the interface on the pigman.
The resultant log's a bit lengthy, so please excuse this Mediafire link to a zip. I doubt you'll find anything of interest in it other than this being repeated ad nauseam, however:
module.use() is all kinds of awesome and I want to play with it some more.
SquidDev 13 Nov 2016
Bomb Bloke, on 13 November 2016 - 09:23 AM, said:
Sorry about this .
Bomb Bloke, on 13 November 2016 - 09:23 AM, said:
Edited by SquidDev, 13 November 2016 - 09:45 AM.
SquidDev 13 Nov 2016
Bomb Bloke, on 13 November 2016 - 09:23 AM, said:
- Were you using a world which had Plethora already on it? I don't think this would cause breakages, but I did change some item and block names which might have caused this issue.
- Did you call disableAI() on the Pigman before using walk? Otherwise the Pigman's AI might override your walk instruction and wander somewhere else.
Thanks for the report though .
I've got a 1.10.2 build working, though I'm not sure it is ready for general consumption. If people are interested in an "alpha", PM me/post something here or on the GitHub.
Bomb Bloke 13 Nov 2016
SquidDev, on 13 November 2016 - 09:32 AM, said:
Pish posh. Thank you for your work.
SquidDev, on 13 November 2016 - 09:07 PM, said:
Yes. I'd intended to test a new world (and perhaps upgrade Forge), but ran out of time last night.
Trying a new world just now yielded some success - but depending on how I shuffled the modules, I was still able to generate either "module has been removed" errors, or new "no such method X" messages. Further shuffling got it working again, but the long list of "Failed to save chunk" messages also recurred within the log.
After this I went back to the first world and tried the same thing there, and was able to get the same results (some success, some failure). One method that seems to be fairly reliable in terms of bugging things out is placing modules (any types) in just the left and / or right arrow slots, leaving the other three empty - I can't even wrap the rear peripheral that way. Putting other modules in may lead to the "missing" modules being detected, shuffling them around may make them go missing again (even if I don't touch the bugged slots directly), and so on.
Turns out I'm already on the latest Forge (11.15.1.1902), though I could try the older, "recommended" build if you think it's worthwhile (11.15.1.1722)?
SquidDev, on 13 November 2016 - 09:07 PM, said:
No, but I called a bunch of other functions beforehand. They all without exception threw the "module has been removed" error, as did walk(), so it was a bit of a moot point at the time.
Is it intentional that the interface doesn't work with all vanilla mobs at this stage? Eg, Endermites, Pigmen children? Certainly the majority of mobs seem to accept them...
Edited by Bomb Bloke, 13 November 2016 - 10:15 PM.
SquidDev 13 Nov 2016
Bomb Bloke, on 13 November 2016 - 10:12 PM, said:
Edited by SquidDev, 13 November 2016 - 11:11 PM.
Bomb Bloke 14 Nov 2016
SquidDev, on 13 November 2016 - 11:11 PM, said:
Putting aside that they're vicious little half-human, half-pig, undead abominations, and that they likely dream of being the Terminator when they grow up... because that's what the monster egg gave me.
Seriously though, it seems... arbitrary.
This is just me babbling, but launch() makes me think back to the ultra dense cannon. Makes me yearn for a module made out of compressed TNT blocks or something.
SquidDev 16 Nov 2016
Changelog
- Implement IComputerItem and IMedia on neural interface (can now be placed in disk-drive).
- Fix issue when getting metadata of turtles
- Fix NPE when serializing entities due to the DisableAI capability
- Fix neural interface peripheral not being rebound
- Add neural interface overlays for remaining mobs
- Ignite TNT when hit by a laser
- Display module name in "module removed" error message
- Nerf the Y velocity on the kinetic augment
Bomb Bloke, on 14 November 2016 - 01:29 AM, said:
Edited by SquidDev, 16 November 2016 - 06:23 PM.
Xerxes 30 Nov 2016
The 1.10.2 version of Plethora is considered stable and suitable for public server usage.
I'm hosting a HTML dump of all of the methods on the version of Plethora that SwitchCraft uses (as of version 1.10.2-1.0.0-beta3) at http://switchcraft.p...thora_docs.html
Edited by Xerxes, 30 November 2016 - 03:08 AM.
SquidDev 05 Dec 2016
You can search for items, extract them and insert them back into the system. It'll try to guess where to place items based off where items of the same type are stored and where there is room. This also requires CCTweaks in order to transfer items across the network, though I guess you could modify it to transfer using turtles instead. For those interested, you can find the source on GitHub.