Have you considered doing a video on the behind-the-scenes of Update Suppression? In case you are unaware, It involves an actual Java Stack Overflow triggered from within Minecraft to allow you to do stuff that isn't possible normally, like slicing nether portals in halve etc. Highlights some deeper digging into Minecraft and edge cases to consider when writing code and can be integrated into some kind of story you want to tell in your Minecraft videos. Also lets you do some code comparison, how Mojang (attempted) to fix it in different versions of the game. Love your content!
There's also now obtaining any block in survival like bedrock and command blocks, which abuses a single async getBlockState call in the beacon refresh code
Can somebody recommend me good place to start learning about the very advanced techs to mess with Minecraft (update suppression, tick manipulations)? I saw some scraps of information around the internet, but I'm still missing some fundamental parts I think
If you ever go on the hunt for player bases, do the 2b2t method. This does not require access to the server (which would be kinda lame for finding bases...) and instead they look for whether chunks have been already generated and with that you can follow paths of players. (The technique is called newchunks in most modded clients)
Plugin developer here: At 3:25 you go over the goals that the creeper goes through. There are 2 goal selectors, one for targetting, and the other for world interaction. The targetSelector is for selecting a target, which is then set on the creeper's navigation. The goalSelector is for world interaction, so things like ocelots and floating in water have priority over targets. Regardless, the "isVisible" visibility check only checks if the creeper can pathfind to the target mob, and not if it has direct line of sight.
I just tested it. Yes, it also applies to Zombified Piglins and it also works in the nether. However, in survival you would need to break some Bedrock since 0, 0, 0 is of course a Bedrock block in the nether dimension.
@@kebien6020 NO because the egg would be on top of the trapdoor at 0 1 0 not 0 0 0 where the trapdoor itself is! Also the Neather doesnt have the extra 64 blocks below it as the overworld got.
3:25, a higher priority seems to indicate that lower goals are ignored. Having cats scares creepers away, so them having a higher priority means they will flee before trying to target players
Note during your creeper code review: there are actually TWO different sets of priorities: the goalSelectors, and the targetSelectors; these don't block each other.
Self-taught programmer who stumbled on this by chance, thank you for explaining these concepts with very simple Minecraft examples.
2 ปีที่แล้ว +6
0 0 coordinates are often good for funny bugs. Until very recently, all foxes started walking towards 0 0 during thunderstorms. Which is extra weird, because foxes aren't even supposed to have any special behaviour for thunderstorms.
When you obfuscate your code by misusing inheritance... Key takeaway: never ever, under no circumstance, use inheritance to share methods and allow overriding them. Tracing the flow going up and down the inheritance tree is the most painful experience. Instead, move the logic into separate classes and use polymorphism (declare interfaces with just accessors or use abstract classes) to allow passing instances of various classes into the functions. That's how you reuse code in a flexible, readable and testable way.
That's a damn good LiveOverflow intro with the blocks. Was that command blocks or stills or... ?? Is that onscreen text phrased correctly at 3:47? You're talking about what creepers are scared of but it's asking what a creeper scares, which is interesting enough. The answer may be "play minecraft" because the only thing creepers scare is the player 😂
You say only zombies are affected by the 0/0/0 bug. If giants inherit this class (although they have no AI, but maybe...) could you then make them also track to spawn?
5:15 but the answer is 23 blocks to kill a creeper, not 24 blocks. Did you see the part in the code with (FallDistance - 3.0F - f)? Creepers have 20 health (10 hearts). f will be 0.0F, as long as the creeper doesn't have a status effect. Falldistance - 3.0F -0.0F = 20.0F | + 3.0F Falldistance = 23.0F A creeper needs to fall 23 blocks to die and will be at half a heart when Falling 22 blocks.
people on the scicraft server have gotten bedrock quite some time ago, congrats to whoever this is though as the setup is incredibly convoluted and hard to pull off!
I was thinking if it would be cool to hear your way of the new chat reporting system. When seeing the Minecraft community a lot of users just say it is stupid and mojang should remove it. I guess your view as an technical competent security person (or whatever it’s called sry 😅) is an interesting perspective because you always get clear with facts and the code and don’t just blame mojang for making „stupid“ decisionsy
the egg: this is why not using an explicit Option as type is bad. (of course, in Java, it's harder because of performance, but still) (and why nulls are bad, as they are only useful to mean Option.None or for initializing of mutable stuff)
I don't know if this was meant as a question or not, but nulls are generally not advised as they require testing for null instead of performing an inert action. So if a value is set to null and you try to do something with it like (object.getData()) and this would cause a nullpointerexception, which actually takes more time to handle because of behind the scenes things and is generally bad to rely on error handling as a method of processing. If (object) is set to a generic value where (object.getData()) has no effect on the running process there is no need to do a (object == null); if you did have that check it would cause branching instructions to be interrupted throwing away processing cycles in the CPU leading to a reduction in performance. so instead of having if (object == null) doNothing(); you have object.getData() = doNothing(); Edit: The above line doesn't mean an assignment, it means the call is doing nothing to the process, as in having no effect.
@@gameglitcher I'm talking about the _functional_ type Option(/Maybe). Using it does not help performance, only correctness. - I've never said one should trigger nullptr ex. - My comment is about preventing bugs, when people use null as an Option type. - Unless your code is on hot path (in some (tight) loop, likely) it's premature optimization to worry about branch prediction, and one should always prioritize correctness first. (Admittedly, in games / rt, maybe not, but still: correctness comes first) - Having "inert impls" is often problematic, and having virtual calls is on average not significantly cheaper than branching. virtual calls on an interface are often more expensive than explicit branching. - And I'm confused: o.getX() should never have effect (beyond maybe realizing something lazy) as it breaks intuition of what a getter is.
@@Verrisin Oh my bad I misread it. Yeah, they could/should have done that. I know the type you are referring to, That was released in java 1.8 and there is no reason they couldn't have refactored the code to include it once that was released. They just continued to operate with the old method since Minecraft came out before that type existed. Java 1.8: 2014 Minecraft: 2011
@@gameglitcher I wouldn't say they should have done that. It can make it more expensive. Sometimes, it's even more annoying to work with it. - I was simply arguing for the usefulness of modelling ways it's used in the type. (with focus on Option) - Pointing out a nice example that shows it. - Depending on how it's optimized, I might not have used it myself.
Will you be playing on the server anytime in the future? I scanned a server about 2 weeks ago that looks like yours and the world looked more or less identical to what I saw in the videos (bee farm and all when I first joined). However, I haven't seen you online on the server so the more skeptical side of me wonders if it really was the right server or just a clone of it. It would be nice if we had some way to confirm if we found the correct server. I suspect some people want to build stuff, but are hesitant to invest the time since they have not seen you online. I sent a twitter DM after I found it explaining my approach and asking if I had the right IP, but didn't get a response. For anyone that wants to try scanning for it: - Yes it is still up - There is no whitelist - There are more buildings now than in the video - Roughly 50 people have found it and left a sign by spawn
Go for it. The server is still running and is not whitelisted. A discord server was created with a link on a sign by spawn. At the moment that discord has 53 people in it.
Can you help me and my friend? We got a minecraft server and someone is hacking it. It runs on minehut, but yeah he is charching $20 and even then he aint gonna stop crashing the server. Can you maybe help us find the exploid? We really need your help!
1. I feel like you should enable a whitelist so that player doesn’t join 2. If you are able to do /timings report (only works on paper servers) you can see what part of minecraft generally taking the longest to tick 3. It could be a lag machine 4 (probably not). Log4shell exploit still works on your server software I hope that helps a bit :) I don’t know what else to say
1. we are a public server. Also the player has a lot of alts and also uses a VPN. Also the exploit has been found by the minehut support and they say the only solution is to use 1.18.2 or 1.19 (not the 1.17 that we use now). But still thx for your thoughts
u should do an ep on anarchy servers, dynamic testing is all you do when looking for exploits in game or patches, but also not really since you can also look for exploits in paper or whatever the server is being hosted with
Supposing you installed a Linux system and want to use it as your personal PC doing important stuff on it. How to check if it has backdoors or not for sure? Thank you in advance!
As a programmer when you are getting new thing you check the completion on zeros, so this could be found within gameplay… I barely understood code part, but instantly understood why it happens when shown. Or it’s just me who prioritise gameplay over reading? XD
@Sebastian Moser I'll have to find that video then. Also, Mojang can't prevent you from decompiling, the courts have backed this up that it's perfectly legal to reverse engineer something. It's a large part of why we have emulators still, thankfully.
I learned how and scanned 3.7B ip addresses with masscan, then I setup and modify the Minecraft-Server-Scanner script to process with mcstatus 300k potential addresses. 18 hours later I have a list with 460 active servers, but none of them have motd "LiveOverflow". feelsbadman.jpg
“Hackers have no skill so they use hacks” This guy builds better then me and he's somewhat new to minecraft. IVE BEEN PLAYING FOR 3 YEARS AND I CAN BARELY EVEN BUILD A GOOD HOUSE!? 💀💀
Hey can I have source code to your hack client please I need it to troll a friend that’s the most secret hack out their please I am looking on your githu what one is it?
You need to decompile it and remap. I suggest to use MaxPixelStudios/MinecraftDecompiler for getting source code of newer versions. If you're going to edit it and compile, use Hexeption/MCP-Reborn
Have you considered doing a video on the behind-the-scenes of Update Suppression? In case you are unaware, It involves an actual Java Stack Overflow triggered from within Minecraft to allow you to do stuff that isn't possible normally, like slicing nether portals in halve etc.
Highlights some deeper digging into Minecraft and edge cases to consider when writing code and can be integrated into some kind of story you want to tell in your Minecraft videos.
Also lets you do some code comparison, how Mojang (attempted) to fix it in different versions of the game.
Love your content!
yes. very good topic idea!
There's also now obtaining any block in survival like bedrock and command blocks, which abuses a single async getBlockState call in the beacon refresh code
Can somebody recommend me good place to start learning about the very advanced techs to mess with Minecraft (update suppression, tick manipulations)? I saw some scraps of information around the internet, but I'm still missing some fundamental parts I think
Patched in 1.19
@@begga9682 1.12 only
If you ever go on the hunt for player bases, do the 2b2t method. This does not require access to the server (which would be kinda lame for finding bases...) and instead they look for whether chunks have been already generated and with that you can follow paths of players. (The technique is called newchunks in most modded clients)
It's patched in 1.13 though
@@SKBotNL might be patched in chunk information, but its still possible if you have the seed, and 2b2ts seed is known
@@amberglass7397 I'm talking about lifeoverflow's server
@@SKBotNL That seed is also known
@@inv41id nvm
Plugin developer here:
At 3:25 you go over the goals that the creeper goes through. There are 2 goal selectors, one for targetting, and the other for world interaction.
The targetSelector is for selecting a target, which is then set on the creeper's navigation.
The goalSelector is for world interaction, so things like ocelots and floating in water have priority over targets.
Regardless, the "isVisible" visibility check only checks if the creeper can pathfind to the target mob, and not if it has direct line of sight.
10:10 Zombie Pigmen also target turtle eggs, so maybe they extend Zombie class in some way? 🤔
Maybe the trick could also work in the nether somehow?
I just tested it. Yes, it also applies to Zombified Piglins and it also works in the nether. However, in survival you would need to break some Bedrock since 0, 0, 0 is of course a Bedrock block in the nether dimension.
@@271anonym you would also need to place turtle eggs floating over the void, so its actually impossible.
@@wChris_ Couldn't you place a trapdoor or similar at 0,0,0 and then place the egg on top of it?
@@kebien6020 NO because the egg would be on top of the trapdoor at 0 1 0 not 0 0 0 where the trapdoor itself is! Also the Neather doesnt have the extra 64 blocks below it as the overworld got.
3:25, a higher priority seems to indicate that lower goals are ignored. Having cats scares creepers away, so them having a higher priority means they will flee before trying to target players
I love that you kept in Doc's singing for added humour - can't believe that was almost 6 months ago already.
I was thinking why wasn't he using binary search when you were testing the creep fall
those red blocks where at the perfect place :)
You’ve nailed the concept and made it approachable for newbies like myself. Brilliant and thank you!!
This is by far one of my favorite videos by you, Minecraft’s source is so cleanly written in my opinion and it made me want to play MineCraft
We get really used to start our variables with 0, that we forget the cases in which 0 is used before getting set to something else.
Note during your creeper code review: there are actually TWO different sets of priorities: the goalSelectors, and the targetSelectors; these don't block each other.
Hey! I’m sorry to respond to a 4 month old comment out of the blue, but could you please tell me how to get minecraft source code. Thank you
Self-taught programmer who stumbled on this by chance, thank you for explaining these concepts with very simple Minecraft examples.
0 0 coordinates are often good for funny bugs. Until very recently, all foxes started walking towards 0 0 during thunderstorms. Which is extra weird, because foxes aren't even supposed to have any special behaviour for thunderstorms.
Maybe their goal is to hide somewhere, but they don't see anything suitable or a feature was forgotten so their goal just stays at the origin
Krass! Da guckt man einmal ein paar Jahre nicht auf deinen Channel und schon bist du "famous" :)
Herzlichen Glückwunsch :)
Nice video as always!
luv ur video😆. may dis research will play an important role in future
When you obfuscate your code by misusing inheritance...
Key takeaway: never ever, under no circumstance, use inheritance to share methods and allow overriding them. Tracing the flow going up and down the inheritance tree is the most painful experience. Instead, move the logic into separate classes and use polymorphism (declare interfaces with just accessors or use abstract classes) to allow passing instances of various classes into the functions. That's how you reuse code in a flexible, readable and testable way.
That's a damn good LiveOverflow intro with the blocks.
Was that command blocks or stills or... ??
Is that onscreen text phrased correctly at 3:47? You're talking about what creepers are scared of but it's asking what a creeper scares, which is interesting enough.
The answer may be "play minecraft" because the only thing creepers scare is the player 😂
i think this is my favorite minecraft channel now
this is really strange video man, but I'm all here for it
My man, this is one of the most interesting videos ever.
You say only zombies are affected by the 0/0/0 bug. If giants inherit this class (although they have no AI, but maybe...) could you then make them also track to spawn?
I love your minecraft era. 10/10
You've become my favourite Minecraft TH-camr. Good work!
"I really like this hole behind me and I wanted to make something with it" god I'm such a child......
5:02 even better would be to use binary search instead of going 1 block up each time ;)
5:15 but the answer is 23 blocks to kill a creeper, not 24 blocks. Did you see the part in the code with (FallDistance - 3.0F - f)? Creepers have 20 health (10 hearts). f will be 0.0F, as long as the creeper doesn't have a status effect.
Falldistance - 3.0F -0.0F = 20.0F | + 3.0F
Falldistance = 23.0F
A creeper needs to fall 23 blocks to die and will be at half a heart when Falling 22 blocks.
There was a spanish player that recently got the first bedrock block in survival, you could take a look at that.
people on the scicraft server have gotten bedrock quite some time ago, congrats to whoever this is though as the setup is incredibly convoluted and hard to pull off!
I was thinking if it would be cool to hear your way of the new chat reporting system. When seeing the Minecraft community a lot of users just say it is stupid and mojang should remove it. I guess your view as an technical competent security person (or whatever it’s called sry 😅) is an interesting perspective because you always get clear with facts and the code and don’t just blame mojang for making „stupid“ decisionsy
Imagine if the fall damage was really calculated with the fall speed lol
about the 0 0 0 egg will attarct zombies its seems like it may not be still working or im doing something wrong
the egg: this is why not using an explicit Option as type is bad.
(of course, in Java, it's harder because of performance, but still)
(and why nulls are bad, as they are only useful to mean Option.None or for initializing of mutable stuff)
I don't know if this was meant as a question or not, but nulls are generally not advised as they require testing for null instead of performing an inert action.
So if a value is set to null and you try to do something with it like (object.getData()) and this would cause a nullpointerexception, which actually takes more time to handle because of behind the scenes things and is generally bad to rely on error handling as a method of processing.
If (object) is set to a generic value where (object.getData()) has no effect on the running process there is no need to do a (object == null); if you did have that check it would cause branching instructions to be interrupted throwing away processing cycles in the CPU leading to a reduction in performance.
so instead of having
if (object == null)
doNothing();
you have
object.getData() = doNothing();
Edit: The above line doesn't mean an assignment, it means the call is doing nothing to the process, as in having no effect.
@@gameglitcher I'm talking about the _functional_ type Option(/Maybe). Using it does not help performance, only correctness.
- I've never said one should trigger nullptr ex.
- My comment is about preventing bugs, when people use null as an Option type.
- Unless your code is on hot path (in some (tight) loop, likely) it's premature optimization to worry about branch prediction, and one should always prioritize correctness first. (Admittedly, in games / rt, maybe not, but still: correctness comes first)
- Having "inert impls" is often problematic, and having virtual calls is on average not significantly cheaper than branching. virtual calls on an interface are often more expensive than explicit branching.
- And I'm confused: o.getX() should never have effect (beyond maybe realizing something lazy) as it breaks intuition of what a getter is.
@@gameglitcher in java called Optional
@@Verrisin Oh my bad I misread it. Yeah, they could/should have done that.
I know the type you are referring to, That was released in java 1.8 and there is no reason they couldn't have refactored the code to include it once that was released. They just continued to operate with the old method since Minecraft came out before that type existed.
Java 1.8: 2014
Minecraft: 2011
@@gameglitcher I wouldn't say they should have done that. It can make it more expensive. Sometimes, it's even more annoying to work with it. - I was simply arguing for the usefulness of modelling ways it's used in the type. (with focus on Option)
- Pointing out a nice example that shows it.
- Depending on how it's optimized, I might not have used it myself.
Will you be playing on the server anytime in the future? I scanned a server about 2 weeks ago that looks like yours and the world looked more or less identical to what I saw in the videos (bee farm and all when I first joined). However, I haven't seen you online on the server so the more skeptical side of me wonders if it really was the right server or just a clone of it. It would be nice if we had some way to confirm if we found the correct server. I suspect some people want to build stuff, but are hesitant to invest the time since they have not seen you online. I sent a twitter DM after I found it explaining my approach and asking if I had the right IP, but didn't get a response.
For anyone that wants to try scanning for it:
- Yes it is still up
- There is no whitelist
- There are more buildings now than in the video
- Roughly 50 people have found it and left a sign by spawn
Hey. Can i get a guide on how to find his server
@@nitrowo 3 weeks ago was video about this
what did ImALolNoob use for playing noteblocks? some baritone?
Is the IP public at all?
I don’t want to create an IP searcher just to play survival but would love to join and play for a bit
Go for it. The server is still running and is not whitelisted. A discord server was created with a link on a sign by spawn. At the moment that discord has 53 people in it.
3:00 wait what? I thought minecraft source code is closed source. where did he get the source code?
Waiting!
5:36 Daran, wie du choose ausgesprochen hast, kann man direkt merken, dass du deutsch sprichst xD
The ai code is probably the only allright piece of code in mc.
Nice Vid!
Can you help me and my friend? We got a minecraft server and someone is hacking it. It runs on minehut, but yeah he is charching $20 and even then he aint gonna stop crashing the server. Can you maybe help us find the exploid? We really need your help!
Hi, I am the owner of the server he is talking about, we really need your help!
1. I feel like you should enable a whitelist so that player doesn’t join
2. If you are able to do /timings report (only works on paper servers) you can see what part of minecraft generally taking the longest to tick
3. It could be a lag machine
4 (probably not). Log4shell exploit still works on your server software
I hope that helps a bit :) I don’t know what else to say
1. we are a public server. Also the player has a lot of alts and also uses a VPN.
Also the exploit has been found by the minehut support and they say the only solution is to use 1.18.2 or 1.19 (not the 1.17 that we use now).
But still thx for your thoughts
u should do an ep on anarchy servers, dynamic testing is all you do when looking for exploits in game or patches, but also not really since you can also look for exploits in paper or whatever the server is being hosted with
great video
This was actually really interesting to watch, I've seen a couple of your videos and good job! - Keep it up! :D
But how do you read codes? It feels like learning to read again. I know quite a few languages, I'm not coding ignorant.
Really jamming to silence there huh? 🤣
Supposing you installed a Linux system and want to use it as your personal PC doing important stuff on it. How to check if it has backdoors or not for sure? Thank you in advance!
WOW! BItte mach mehr Videos wie dieses! Mein Lieblings spiel + mein lieblings hobby = 12/12
As a programmer when you are getting new thing you check the completion on zeros, so this could be found within gameplay… I barely understood code part, but instantly understood why it happens when shown. Or it’s just me who prioritise gameplay over reading? XD
Let's go
going to go make my first soft! My first soft!! Here I go! Wish luck.
👏🏼👏🏼👏🏼
How are you able to view all the Minecraft code?
I’d love to see a video of you playing with prismarineJS mineflayer and Minecraft account automation
Wow, those are long spaghettis
sooo anarchy server when?
i think it would be very interesting seing all those mind bending exploit
How do I look at the code ? I need help please help me
u can use modcoderpack
@@rivenissmart ? Use the one he uses IntelliJ
@@espero_dev you have to download the code from modcoderpack, then import it into intellij.
@@rivenissmart why?
@@rivenissmart I bet you I don’t have to
whats the server ip?
But how are you flying???
Could someone point me on where could I found source code of minecraft?
How did you get the source code to Minecraft?
@Sebastian Moser I'll have to find that video then. Also, Mojang can't prevent you from decompiling, the courts have backed this up that it's perfectly legal to reverse engineer something. It's a large part of why we have emulators still, thankfully.
Can someone tell me the code editor he is using.Thanks in advance and what an awesome video totally understandable by noobs like me.
@João Francisco Cocca Fukuda thanks a lot sir
9:30 - that's the reason why nullable variables are considered unsafe code.
that idea of dynamic vs code review has bit me square in the butt several times with bug bounty. APK testing is better for that kind of thing
Why am I not getting notifications for your videos
Fucking Great video ! Thanks
I learned how and scanned 3.7B ip addresses with masscan, then I setup and modify the Minecraft-Server-Scanner script to process with mcstatus 300k potential addresses. 18 hours later I have a list with 460 active servers, but none of them have motd "LiveOverflow". feelsbadman.jpg
Nvm I got the app you used thanks
I think you should do a video drinking REAL mate, greetings from Argentina!!!
“Hackers have no skill so they use hacks”
This guy builds better then me and he's somewhat new to minecraft.
IVE BEEN PLAYING FOR 3 YEARS AND I CAN BARELY EVEN BUILD A GOOD HOUSE!? 💀💀
theres also another method, googling
Hey wait. Is this some minecraft channel ?
He uses Minecraft to teach general hacking knowledge
das ist ja lustig und das kannte ich noch nicht.
redstone.
Hey can I have source code to your hack client please I need it to troll a friend that’s the most secret hack out their please I am looking on your githu what one is it?
u should look for vulnerabilites in the player chat reporting system
?? Not everyone who codes can read code??? I assumed everyone could.
please dont use blurring in your videos, it hurts my eyes
Translation for script readers..?
Good video. :) I reached out via mail some months ago but didn't get a response... :(
How the fuck do I read the code?
You need to decompile it and remap. I suggest to use MaxPixelStudios/MinecraftDecompiler for getting source code of newer versions. If you're going to edit it and compile, use Hexeption/MCP-Reborn
@@ericssooooon I am not using that shit I’m using the code viewer that he used IntelliJ
Early
And yes, your video got copyrighted.