#Bedrock IPC (Inter Pack Communication)
1 messages Ā· Page 1 of 1 (latest)
Huh, doesn't Omniac's IPC work already? Is this like a extended version of his?
The structure of this one is more organized, Its modular, the maintainability is easier, and has better scalability
Also this one is documented
so it should be easier for new devs to learn how to use it
Thanks ^^
In aspect of maintainability - his approach is cleaner.
Also he uses TypeScript, which is much better for libraries in general
Not really, but it depends, the way he has its not a good practice, at least for me that would be harder to maintain or do upgrades
But yea I can include a typescript version too
I mean, both of you miss some important things in my opinion
I refer to my own library, which has almost everything (except NPM bundling) what it should have to be easy to use & maintain
Perfect š¤©
By the way, don't take my words as an attack - I just try to give other people good advice š
I know donāt worry I love feedback
so this can communicate from pack to pack or smth?
Yea
Genuinely looks like AI-Generated code
Itās not, I did generate some of the JSDocs which was just the copilot tab thing
I could have just delete it but since itās an open source project itās better for the others to understand what every function does š
It's a good project
Check the repo, in the DOCS.md there is an example. But basically itās for 2 packs to communicate
Do u mean communication between add-ons scripts ?
For example imagine you make an auction house system and you store all of that data in a dynamic property or in memory, with this system, you can ask for that data from another addon
Yea
This is made with scriptevents
I mean is it possible i didn't thought it was possible
There is a way to send an scriptevent with its id and message, and there is an receive afterEvent scriptevent
For example I use this to detect in my addons if VEX essential (another addon made by me) is installed, because some features in my addons depends from that one
Or requires a specific version of that addon
Really useful for me
Nice
So, must i use it in one script
Or every add'on script to work
@prime shale that s very great work
Thanks ^^ hope is useful for you guys, if you have more ideas or anything I could implement to it let me know, I would like to hear some feedback
Yea you can use it if you want other devs to have access to certain properties, data or interact with your addon
I don't care if it is either. The project is clean and useful. Who doesn't need AI for writing good code nowadays :V
ooh it looks nice
but i think there may be an issue, since it doesn't look like you can pass any ids or anything to identify which client
Iāll add typescript Iām working on it
I'm not talking about that š
Wdym?
which basically means no encrypted channels, and also all clients can access the channels
see his ipc is used something like:
const channel = main.connect(...)
channel.on
channel.etc
but also
const main = ...;
main.on // global, any channel sends message here, it gets caught
main.send // global, all connected channels get this message
main.etc
and also it has an optional encrypted version using diffie-hellman exchange method (i think that's his name, tho i don't remember names that well š )
my main concern is that all ipc clients can access all channels
the other stuff can be implemented later on if you want to
Ik what you mean, but how is that an issue?
see if i were to add some apis (services) i want only one pack to access
like
ipc.handle(...)
i don't get the id from whom i got the message, and i also don't get anything to make sure it's only them
any ipc client (any pack) can just do ipc.invoke
while yes i can make it send some kind of key
Yea I will add that too as an optional thing
that only both packs have, it's a bit over engineering for such stuff
especially when you start to do many keys
Yea I get it, thought of that at the beginning but idk maybe someone wants to offer like an api for his addon
true
that's why i suggested this
the main client is created with say stuff like id, and it can have global apis like main.handle
So basically make that only one pack can connect to a channel right?
but if you want to communicate to JUST one channel, you do const channel = main.connect(...) and maybe pass in the id of the channel u wanna connect to.
no not exactly.
many should be able to
may i add that the main.connect should only connect when the other pack also does main.connect?
it's basically supposed to be a 2 party channel. end to end. not a group chat
the current system is basically group chat
anyway other than that, this ipc is soooo well documented, super super nice to use and has many examples and such.
anyway enough of my yap, if you do take my feedback, good luck
Sure!
Thank you :D.
I get it, Iāll make an update
interested in what you've found that isn't good practice though, lmk
yes that is correct, in the DirectIPC extension library
if you have any feedback lmk, interested
why? if its different, what i mean is that both systems are compatible
and leaved this MCBE_IPC_V3: 'mcbe-ipc:v3'
you are required to include my original copyright notice and license in your repo to be compliant with MIT since it's substantially the same code
copies or substantial portions of the Software.```
you just need to add Copyright (c) 2025 OmniacDev under yours
CI tests, examples, pre-commit tool
ohh alright thanks
ah yeah
I have an internal testing suite I use, other than that I've just been too busy to write docs lol
I recommend Cursor for writing docs, much easier
yeah I tested out DeepWiki, it worked fairly well so I might end up just fixing that up and using that
generally not a fan of using AI but in this case it did it very well so an exception can be made lol
AI is only good for repetitive tasks like docs, similar classes/logic (database services, etc.)
its good for many things, as long as you know what you are doing, its also good for starting a project like a kind of a template, i always say that the hard part of coding is thinking in the logic of what you are going to code
once you have that, you can tell the ai to write it for you, its super useful this way
no worries, awaiting the update :)
is this what you mean?
I usually use TypeDoc.
why the emoji š
You converted it from
to
and proceeded to say it had better maintainability, when in reality JS by definition has MUCH WORSE maintainability.
I HATE it when people do stuff like that.
what does that even had to do, i just missed that part, and i said i was going to upload it later ._.
The whole project should be TS, not just a TS version.
i was just in a rush because i had to travel, still im doing a complete different version internally
Why would you publish the JS versions without your internal TS then lol, it takes no extra effort to do.
well its not stated anywere that i should do it that way š¤·āāļø
im not comparing the TS with a JS version
Wel anyone experienced knows that you should be using TS for projects, not JS.
of course its better in TS but i just didnt have time to upload that version
Wait... are you making the TS and JS separately instead of just using TSCā½
I just realized there aren't even any .d.ts files in the JS version, which are basically required for projects you want other people to use.
no, but its a long story hehe since some friends of mine dont know TS i had to sent them the JS version
and since i had it already in hand i just upload that one
š
yea ik, i usually leave those in my projects
buy hey not everyone knows TS
.d.ts is for the JS users not the TS users lol, for the TS users they would just use the source .ts files
i mean im talking about this
no need to flame the guy
he was uploading in a rush, he should've uploaded the types and the lib def if he already had an āinternalā TS version but aye we all miss stuff when we're doing stuff in a rush
yup
except it should be flushed-ish
it should have a timeout built-in instead of waiting indefinitely and have the .connect pass the duration optionally
and it should basically be implemented like:
if i use .connect, and a message from the other ipc tells me it wants to connect, I'll connect
even IF our message didn't reach their message.
and then we send a message that we connected
to basically help with race cases
i second this
AI has been a massive helpful tool. it's extremely nice to help with mundane tasks
as long as you know what you're doing and what it's doing, and also double check the code, you should be fine
I strongly advise against using this āBedrock-IPCā library. Although it is being advertised as a more maintainable, scalable, and higherāperformance alternative, the project is largely a thin wrapper around the internal implementation of MCBE-IPC, with most of its functional logic directly copied from my library.
Because the implementation was copied, all existing/unknown bugs and limitations present in MCBE-IPC at the time were also copied into this project. In addition, several performance optimizations from MCBE-IPC were removed, and extra wrapper layers were added, which introduce additional allocation overhead. As a result, the performance characteristics of Bedrock-IPC are objectively worse, not better.
Since I am not involved with this project, any future fixes, improvements, or updates made to MCBE-IPC will not be retroactively applied to Bedrock-IPC. I do not endorse this library, and I cannot guarantee its correctness, stability, or longāterm maintenance.
For accurate behaviour, ongoing support, and a reliable implementation, please use the official MCBE-IPC library:
https://github.com/OmniacDev/MCBE-IPC
For more information regarding MCBE-IPC, please refer to this: https://discord.com/channels/523663022053392405/1277940040688996512
^ same thing applies for DirectIPC
Awh š
gameza is cookd yh
What are you talking about, I already told you I was reworking everything lol
How can you make such an advice like that without even waiting for me to upload my new version
mmm alr, well then ill change what is needed
this?
Itās funny because as we already discuss this and you didnāt make any test to check how bad it is, this is only an opinion, also this looks like a self promo or something? My code is very clean, and open source, so people can check it out and see if it suits their needs
Yes, I made a whole rework of it
Iāll probably update it later
As I always like to share my work with others, instead of just keeping it for myself
mate 90% (probably more) of the code in that repo is directly copied from MCBE-IPC, all you've done is add a wrapper around it and removed the TS typings. The stuff in your AI generated docs is also very incorrect
So if you found it useful use it, if you found more useful omniacs then use his system
you can't claim that as "your code"
And why you get mad? You are taking this is a competition? Wow
I told you I was making a rework
This is why bedrock is still below Java because of his big ego developers
it's not a competition, and how would you like it if someone came and copied essentially everything from a project you've worked hard on, then claimed it as their own?
Because I had to make what you didnāt in the original repo
But donāt worry Iām changing everything š«£
Just donāt come here and say that is worse than yours without any tests or numbers, because not everything is about performance as I said, 2, 3 ms delay or 20kb of extra ram wouldnāt matter
If you can understand better the code or even expand its functions
tell me how your wrapper is more "expandable" than mine?
I really wonāt care, I donāt do this for recognition
Itās just a game, I do it for help others, and if this is useful for at least one person then go ahead
guys chill
you stated yourself that you did it for your portfolio...
Good for him
i am gonna be honest here, you both are kinda wrong. gameza you need to put his original license if you used portions of the code
Yea but I also have it for more reasons
and you omniac shouldn't flame the guy, he said he is gonna update and rework the library
Ik and look
I'm not flaming him, I'm just stating the facts here
.
if that is considered flaming then there's obviously an issue
indeed but when said many times without any updates from the other party then it starts lookin' like flaming
I was going to do that but this guy was getting mad at me so I completely made my own from scratch
I mean no problem is not that hard to code one
wdym?
I just didnāt do it instantly Iām not going to make a push on something that I was changing
if you have code that uses some of his code, then you need to include his license no matter what. until you completely make the library from scratch.
Well still doesnāt matter anymore this discussion I make a new one from scratch so Iām just working on the docs now
you kept stating the same facts even tho he hadn't updated anything (I'm talking about performance stuff), he hadn't updated the library with the full rework yet
you have every right to state the fact he didn't add your license on the other hand tho.
It might be similar in the api and protocol but this is to make it compatible with his system, but a protocol itās like a standard so yea doesnāt matter
right but he made that protocol
oh well yeah I had no clue he was doing a "rework", I'm just talking about the current state of the library. I'll def have a look at the rework though
which is a āportionā of his code kinda.
Yea but if he plans to make that one the standard then itās not an issue
great then we have that settled
Because as he said in dms he is worried about compatibility
interesting, well i didn't see any of these DMs
Itās like if someone made the http protocol, you canāt claim copyright for that
For using it I mean
yes you can...
For using?
protocols are still licensed
you can, and you should. it's your credits
if you use the protocol in another protocol that's a superset then yes you need to license the original
But you canāt license an idea or formats
Itās like license a rule?
A rule for communication
nope but you should credit them. and alot of people want credits
it's like someone invented the internet
then someone else made a wrapper on it and called it their better Internet without even giving credits to the original
ofc the first author will be extremely mad
but we're not talking about that here tho.
But what if the code is completely different and he is only using the protocols to communicate with the rest of the world
if you really don't want to include my license, then you need to do this: https://en.wikipedia.org/wiki/Clean-room_design
but since you've already read my code, that's impossible atp
Clean-room design (also known as the Chinese wall technique) is the method of copying a design by reverse engineering and then recreating it without infringing any of the copyrights associated with the original design. Clean-room design is useful as a defense against copyright infringement because it relies on independent creation. However, beca...
I mean I donāt have an issues with including your license I was going to
then yeah you don't need to license
then why the argument in the first place
couldn't be that hard to just push a file to the repo
could it?????
Will it matter? Iām uploading today a new version and deleting the old one
honestly in that period, someone could see your library and if you include omniac's licence they could also see his library
Hmm probably well yea
it's not that hard bro
just put the license first and publish the update whenever you want to.
you can remove it later if you implement the code completely by yourself without any portions of his code being in yours
anyway great work you both, and good luck
also I'd like to clarify, you both need to put speed tests and benchmarks
seriously it's extremely important for libs like this
Yea new one im working in has all of that
nice, great work
Also whatās wrong in the docs?
what?
i didn't say anything about the docs
He said that the docs had issues
just wrong stuff
no just the AI getting stuff wrong, like the "memory leak" stuff is wrong, that listener would never fire since you instantly remove it. in the Q&A's there's something about debugging, which also does nothing, that channel is never used in the source code. etc etc
i don't see any problems with it tbh
A: Yes, add logging in your handlers:
IPC.on('debug:channel', PROTO.String, (msg) => {
console.log('[IPC Debug]', msg);
});```
don't see what's the problem
that doesn't do anything
that's the problem lol
it logs whenever the channel receives content
That you can add a console log in your listeners
incase you are wondering what packs are sending data/how many times etc.
question says monitoring the traffic, setting up your own logging isn't traffic monitoring
AI JSDoc stuff is cuz the lib was written in rush so i don't mind, he said he is revamping the lib
clearly it is monitoring all traffic going through this channel
Still I made sure everything worked in the docs
don't see him saying through all channels
that's not... something to brag about
I can include that too but I think the response will be slower
docs should only include working stuff.
Just an extra param to log in the constructor
uh
So you donāt have to put that console log manually xD
yeah i don't think that's a good idea
gameza is this supposed to receive data from the IPC itself?
that's gonna add a bit, while yes very micro slowness
should just let ppl add the console logs if they want to
Well yea you are right it doesnāt take too much time
i think he might've phrased it wrong
he meant the channel possibly
but his IPC is clearly following... quite a different approach. which might justify this miswording
the current IPC or the rework?
since the IPCs all have access to the same channels
the current
?
i thought yours- oh yea mb i got it mixed up with your direct ipc
lol
well anyhow, you both did fantastic jobs, and i hope both your IPCs can coexist sometime soon and serve different purposes
maybe one of them will serve the purpose of transferring heavy data and encryption
not to be an ass but currently his is mostly copied from mine, not much of a job done there
right but he is remaking
yeah we will see what it ends up like
yup
and the other for pure speed
but who am i to tell you both what to do with your IPCs
oh I like the feedback
anyway good afternoon to you both
lmfao š
peak argumenting but I should say to Gameza just put the credits in license till you remake it
@marsh elk This is wild, had you read the code?
The code was already changed lol
I will just delete the repo and make a new one š¤·āāļø not a big issue, good luck trying to take down my new IPC system
Doesnāt matter what you pull out, if someone finds my solution better they will use it
Why are u even mad bro
If someone already made it and it works well why are u trying to copy it, have ur own ideas and post them, if he took it down because of copyright and GitHub agreed is because of a clear REASON..
Iām not even mad, and of course I have my own ideas, the thing is that I only wanted to share my own version to anyone that this could be useful, as it was for me, and some others, but bedrock definitely needs other type of developers not this ones with their high ego
My mission here is to spread knowledge, and tools, and this guy is fighting for recognition
Instead of trying to help others
And thatās pretty sad
Everyone already knows his IPC system, it is up to date and itās very well structured and programmed. I donāt see why we need more versions. Also I donāt see him really fighting for recognition, I see that he is protecting his rights. Yeah, you can spread knowledge but not based on otherās ideas.
You can do whatever u want, like re doing his idea but donāt get mad when he takes it down.
You looked really childish and immature with your āI will just delete the repo and make a new one, good luck trying to take down my IPC systemā.
āDonāt reinvent the wheelā
I agree that thereās no need to reinvent the wheel. However, having multiple implementations can serve different use cases, improve maintainability, or explore alternative design trade-offs
You canāt just stay with one option, it will always be 100% better to have more than one option
Itās not about reinventing the wheel is about having more tools, and let the developers choose the one that fits their needs and style
Thatās true, I was just pointing out the fact that you in fact got mad because he took down your IPC system (or reported it I donāt really know what happened but iām guessing based on what u said) as I said the way you took it was just too childish.
And yes he is looking for recognition, you didnāt say his dm messages but he was basically trying to convince me to get rid of the ipc system
I made because his argument was that I was going to cause confuse by having more than one, but the 2 of them work just fine
And also the same day he claim I changed my code
And still he insisted
I mean I bet youād also be mad if someone just took your idea. Maybe you donāt know because I hasnāt happened to you.
It has happened to me, but instead of getting mad Iām happy, i mean in the long term is better for all of us
Starting with the fact that the code was similar or very similar at first, that proves that he can be mad.
And idk maybe in the future someone could take this code and improve it or make something completely different out of this, by just taking the good stuff
Yea the first time it was my mistake and I was going to add him in the license too
But he started to flame me
So I just rewrite everything
Letās say someone finds out how to deobfuscate your whole Vex essentials addon, they just change the looks, colors and texts and then posts it, I bet youād be mad.
Still that is a completely different situation since thatās a closed source addon
You could compare it like with my chunk loader
I wonāt even get mad if someone improves it
Like I will even use the one that is better
If you didnāt do it at first even tho you knew it was a re-made of his system thatās a problem.
As I said I just forgot to add him, and if you look at the messages above, he told me to just add it in the license and no problem
But this guy just made the problem bigger
I mean Iām really impressed that he filled all the report for a free open source code, he must have a lot of free time. Can you see my point? I donāt even have time to appeal I just delete it
And submit it here, and that one is made by me from scratch
Yea the same idea but different code, and some of the code might have the same logic idk but this is intended for compatibility between both ipc
Since my main goal with this is to help others, so if they wish to change their code to use this IPC system wonāt cause many trouble
Oh and btw yea his IPC system is older and never gave an official documentation, basically the project was abandoned, no updates and a mess like all into a single file, how is that a good practice, and it matter because itās not an addon, itās a tool a library that other developers will use, how is that not documented. After I upload my version he started to make all of those changes, you see?
If you can get something good out of this is that basically I made him do the documentation, otherwise he probably wouldnāt make itā¦
Proving my first point, having more tools is better for us
yeah I obviously read the code lmao, how do you think I listed those 13 examples copyright infringement?
and I filed this after your "rewrite". I already directly told you here, in DMs, and in an issue on your repository that you were in violation of my license, and I gave you more than enough time to fix it. I even warned you again after your "rewrite" that it was still in violation, and you didn't fix it. That's on you.
All I'm doing here is protecting my copyright, there is no "high ego" or me "fighting for recognition", the only thing I'm fighting is to not have >1.5 years of work just illegally stolen from me.
so don't try to slander me as if I've done something wrong here. You were violating my license by having substantially copied my code for your "implementation", I gave you multiple chances to fix that violation and you essentially refused.
project was not abandoned, the reason for it having "no updates" is because the project had stabilized, so the only actual updates needed are small bug fixes or performance improvements, which are very rare at this point.
I also purposefully only use a single src file so that users can easily copy it into their projects as a drop-in library, and the library is compact enough that it works fine.
if you can make it without copying all my code go ahead, I have no issue with that
Donāt have time for that
I will just share it here
š¤·āāļø is up to you if you want to continue wasting your time
you don't have time to write your own code?
I already did
Check last commit
It was like days ago