| ▲ | tossit444 5 days ago |
| I think it's amazing to have a massive commercially successful game such as Minecraft give the fans the ability to be very liberal with what they can do with it. Now we have open-source re-implementaions that are pretty close to vanilla! |
|
| ▲ | somat 4 days ago | parent | next [-] |
| Minecraft is wierd because all that amazing modding that is done is in spite of mojang not because of them. I have not played minecraft in a few years but I think nothing has changed. Mojang, even pre microsoft, has never provided any sort of modding support. I grew up on quake where ID would give you the game code and tools necessary to make mods. Mojang gave nothing. modding on minecraft involved decompiling the bytecode, dealing with the terrible symbols the decompiler gave you then recompiling it back into a jar. It was ugly and unpleasant. later the bigger efforts produced some tooling and libraries to make this better, but mojang had no part in this. So minecraft is wierd, one of the most modded game in existence, yet the developers have provided no mod support. |
| |
| ▲ | charcircuit 4 days ago | parent | next [-] | | >never provided any sort of modding support Bedrock added support for modding in 2016, 9 years ago, with resource packs and behavior packs. You can make custom entities, custom items, custom blocks, etc. There is also a marketplace available to distribute these to players, built right into the game. Java edition also has had similar things for many years. | | |
| ▲ | darknavi 4 days ago | parent | next [-] | | We've worked a lot on the Typescript/JavaScript APIs available for Bedrock so most content on Bedrock platforms (console, mobile, etc) is heavily script-based. It will always be more limited that Java modding but is catching up in large areas of functionality. Amazing seeing what people are making in Bedrock running on old Android phones, Switch, and company. | |
| ▲ | makestuff 4 days ago | parent | prev | next [-] | | I remember when the c++ edition came out, but have not really followed since then. Are all of the servers/mods still written in Java and it was just the desktop client that was rewritten in c++? Or is there a division between Java mods and c++ mods? | | |
| ▲ | charcircuit 4 days ago | parent | next [-] | | Behavior packs, for Bedrock, are written in JSON and TypeScript. The client and server software is written and C++. Most people make mods using the built in modding support as I mentioned and are not making C++ mods. Most C++ mods are hack clients. | |
| ▲ | throawayonthe 4 days ago | parent | prev [-] | | two versions still exist in parallel: Java edition for PCs, and Bedrock edition (c++) for everything else the main modding community is around java edition | | |
| ▲ | natebc 4 days ago | parent [-] | | Spot on. You can also play Bedrock on a PC if that's your poison. |
|
| |
| ▲ | tialaramex 4 days ago | parent | prev [-] | | Java edition is night and day different. Take the pack I'm re-playing at the moment, Compact Claustrophobia. Even the opening moments of that pack are nothing related to the Minecraft game you can buy. Scraping materials from the bare walls? Not a thing in Minecraft, but the mod adds that because otherwise how are we going to make even a block of dirt. Oh right yeah, no dirt, we start inside an unbreakable [as far as we know] object and we have to burrow deeper and deeper into recursively defined Compact Machines, none of which exists in the Minecraft game. Your character in Compact Claustrophobia needs their own faeces to survive - if you've read "The Martian" you know how that goes. Base Minecraft of course does not have poop, so they add that. To make all this happen requires a lot of reverse engineering. Are Microsoft doing everything they can to stop it? Not at all. But they're also not some benevolent entity adding hooks left and right for the modifications. | | |
| ▲ | charcircuit 4 days ago | parent [-] | | >Not a thing in Minecraft, but the mod adds that Did you read my post? I'm saying that Bedrock has mod support built in with public documentation. There are a bunch of hooks. You can add new blocks. You can make things happen when clicking in them. You can add brand new items. | | |
| ▲ | tialaramex 3 days ago | parent [-] | | Yes, it's night and day as I said. Take the most fundamental naming element of Compact Claustrophobia - the Compact Machine. This is a block which has a pocket universe inside, we have to be able to make this, place it down, enter and exit, and have the inside of the block continue running because after all the outside is still here with us, and also the edges of the outside block correspond arbitrarily to portals inside the block for transmission of... oh right yeah, Bedrock doesn't even have a electrical power system... With the approach they're taking in Bedrock maybe the Compact Machines I was first playing with years ago become possible (if somebody puts in a lot of labour) in ten years, or in twenty - if sanctioned. But they've existed for years in Java, so why bother? |
|
|
| |
| ▲ | xboxnolifes 4 days ago | parent | prev | next [-] | | I don't know if it was done with modding in mind or not, but the transition to data packs was a non-trivial addition of mod support. | | |
| ▲ | immibis 4 days ago | parent [-] | | At the cost of inner-platform-effecting all the game code. Long-time software engineers know all about the inner platform effect - if not, see [1]. Instead of writing directly what you want, something like: new Block("mymod:mystone").setShape(Shapes.CUBE).setTexture("mymod:stone_texture").setStepSound(Sounds.STEP_ON_STONE)... you now have to do some of this inline (the part that can't be customized in data packs): new Block("mymod:mystone").setStepSound(Sounds.STEP_ON_STONE)... but the rest is looked up across 5 different cross-referenced JSON files full of magic values with no autocomplete or syntax highlighting. Start with an indirection layer in assets/mymod/blockstates/mystone.json: [2] {"variants": {"": {"model": "mystone"}}} then of course you have to actually specify how to display the block: [3] {"parent": "minecraft:block/cube_all", "textures": {"all": "fabric-docs-reference:block/steel_block"}} (you see that? there are inheritance and variables in Minecraft's ad-hoc JSON language) You need a second file to specify how to display the item when it's held in your hand. Usually it's similar boilerplate. But have a look at the abomination that is "item property overrides" [4] [5] as an example of inner-platforming. Instead of render(is_cast ? cast_model : uncast_model); there's this whole infrastructure of a registry of item property predicates written in Java which can then be referenced in JSON to select a different model file under specific conditions. [1] https://thedailywtf.com/articles/the_inner-platform_effect [2] https://docs.minecraftforge.net/en/1.12.x/models/blockstates... [3] https://docs.fabricmc.net/develop/data-generation/block-mode... [4] https://docs.minecraftforge.net/en/1.12.x/models/overrides/ [5] https://minecraft.fandom.com/wiki/Tutorials/Models#Example:_... | | |
| ▲ | tehbeard 4 days ago | parent | next [-] | | A key part you're missing either willfully or ignorantly is that they're midway through the refactoring to make it data driven, so you have these odd/rough edges. Yes, having to declare json files for your new block in your mod is a pain... Meanwhile what it was built for, resource packs, this actually gives a good amount of power to the pack maker without having to ask the client to run untrusted java code. | | |
| ▲ | immibis 4 days ago | parent | next [-] | | It's not data-driven, it's still code-driven, just now the code is written in shitty-JSON-language. This is how the inner platform effect works. See also the configuration complexity clock [1]. [1] https://mikehadlow.blogspot.com/2012/05/configuration-comple... | |
| ▲ | accrual 4 days ago | parent | prev [-] | | I was just watching a cool video on "world gen modders" where the author demonstrated by tweaking just a few values in a custom JSON it was possible to create new kinds of landscapes. At least in their corner it seems like the JSON files are exactly what they want to use to achieve their goals. | | |
| ▲ | immibis 4 days ago | parent [-] | | It was like that when it was in Java, too. Just tweak just a few values in a custom Java class. Plus you could be as weird as you wanted instead of limited to a very rigid format. You weren't limited to tweaking values. You can still override it in Java code instead of tweaking values, but it's much more painful because all the existing code is geared towards reading the tweakable values. |
|
| |
| ▲ | tsunagatta 4 days ago | parent | prev | next [-] | | Honest question: what’s the alternative to inner-platform-effecting if you still want a system that’s highly user-customizable at runtime? | | |
| ▲ | Pannoniae 4 days ago | parent [-] | | well, just have a proper code-based API? not even separate textures are necessary, you could very well use atlases and just stitch them together at runtime with rectpacking and just remap the input texcoords to the new, bigger atlas... boom, mod support with atlases without creating 400 2KB .png's in the game folder. similarly, blocks can be done in code, and modders can either use that, and optionally you can expose the same API in LUA or whatever if you need a less involved / sandboxed version of mods which can be downloaded from a server or whatever. Here's an example of shit being done from code, it's fairly terse and you don't need to trawl through 7 files to do anything: (yes I know it doesn't have i18n yet but that won't make it much more complex either) SHORT_GRASS = register(new Flower(Blocks.SHORT_GRASS, "Short Grass"));
SHORT_GRASS.setTex(crossUVs(8, 1));
SHORT_GRASS.setModel(BlockModel.makeGrass(SHORT_GRASS));
SHORT_GRASS.transparency();
SHORT_GRASS.shortGrassAABB();
SHORT_GRASS.noCollision();
SHORT_GRASS.waterTransparent();
These are fluent/chainable so I could have put all of them on one line but that's less readable IMO, but your choice really.For data files (textures, sounds and other assets) you could use a virtual filesystem like Quake did (PhysFS is a good library which vaguely approximates that) and get rid of the stupid amount of folder nesting specifying behaviour, you can just have toplevel folders and use modloader order to disambiguate. tl;dr: almost anything can be made to work with the most convenient/most sensible method of making stuff instead of using a bunch of awkward and convoluted JSON files you aren't even using! (MC internally generates the JSONs from code, so the data lives through a code -> JSON -> code roundtrip, they aren't even dogfooding their own format lol) |
| |
| ▲ | freeone3000 4 days ago | parent | prev [-] | | I still think this is better than mod load conflicts when two mods attempt to overwrite the same Minecraft-core class file. Pre-forge modding was not good. | | |
| ▲ | immibis 4 days ago | parent [-] | | Yes, but I'm not talking about pre-Forge modding. Anyway, Fabric enables similar mods without the conflicts (it's actually great. You can edit any piece of code without being limited to the hooks someone else chose to install for you. My first Fabric mod completely replaced how your inventory worked. It was installed on the modfest showcase server and drew lots of complaints.). Anyway, that's not what I'm talking about either. [1] https://www.youtube.com/watch?v=-6eNqSCTTKQ |
|
|
| |
| ▲ | imtringued 4 days ago | parent | prev | next [-] | | The developers decided to not provide mod support because the modders have infinite freedom the way they are doing things right now. More freedom than if they gave you a modding toolkit like Bethesda does. It's the Bedrock Edition of Minecraft that's crippled with its official modding support. | |
| ▲ | Its_Padar 4 days ago | parent | prev | next [-] | | They do provide deobfuscation maps these days at least | |
| ▲ | zimpenfish 4 days ago | parent | prev | next [-] | | > Mojang, even pre microsoft, has never provided any sort of modding support. I believe Mojang now provides deobfuscation mappings[0] which makes life slightly easier for modders. [0] Although all I can find are people saying "we should move to Mojang's mappings!" rather than an official Mojang announcement. | | |
| ▲ | djxfade 4 days ago | parent [-] | | Whats the point of the obfuscation in the first place, if they offer mappings to deobfuscate it? | | |
| ▲ | zimpenfish 3 days ago | parent [-] | | I suspect it's one of those "this has been in the build process for a decade and there ain't no way we're attempting to change it now" things. |
|
| |
| ▲ | herbst 4 days ago | parent | prev | next [-] | | That's where I got my update anxiety from. Everything was broken after every update, but we loved the updates still. It wasn't easy and majong did not help back then. | |
| ▲ | LelouBil 3 days ago | parent | prev [-] | | > Minecraft is wierd because all that amazing modding that is done is in spite of mojang not because of them. Umm no ? They provide deobfuscation mappings, they keep features in the code that are not exposed to players while specifically mentioning modders (new dialog system, game tests API). You also have a couple of Minecraft developers hanging out in modloaders discord servers. While it's true that they really started embracing modding in like 2019 (when they started releasing deobfuscation mappings), they were never hostile to modding |
|
|
| ▲ | CalRobert 5 days ago | parent | prev | next [-] |
| MS is slowly killing off Java so they can push Bedrock (much less flexible) on everyone though. And all my daughter's friends use Bedrock :-\. I have a server with GeyserMC running to let them play together but it definitely isn't what it once was. |
| |
| ▲ | terribleperson 5 days ago | parent | next [-] | | Bedrock might be more popular, but I think there is a large community with absolutely zero interest in ever moving away from Java.
I will never go back to playing Minecraft without Distant Horizons after experiencing it, so Bedrock is absolutely not an option for me unless they added real LOD features natively. | | |
| ▲ | accrual 4 days ago | parent | next [-] | | > Bedrock might be more popular, but I think there is a large community with absolutely zero interest in ever moving away from Java. Yes, exactly. It seems the demographic for Bedrock tends towards kids because it's supported on tablets. IME the demographic for Java is either older kids or adults or people with interest in modpacks, which is a lot of people. All the major YouTubers who have run worlds for challenges for years are all on Java. Whenever someone in my group asks to play some MC, there's no "Bedrock or Java?" question, it's just Java every time. The only major thing Bedrock has right now that Java doesn't is the new stock shaders, but I assume that is coming to Java soon. | | |
| ▲ | Kerbiter 3 days ago | parent [-] | | > The only major thing Bedrock has right now that Java doesn't is the new stock shaders, but I assume that is coming to Java soon. RealismCraft 2.0 would like to have a word with you. And it's paid. https://youtu.be/s3IiifuzjgU |
| |
| ▲ | CalRobert 5 days ago | parent | prev | next [-] | | The kids all seem to use tablets or windows with bedrock though, my own are the odd ones out with Java on Linux. | | |
| ▲ | Imustaskforhelp 4 days ago | parent [-] | | A lot of windows users use java on windows too. I do think that I have yet to see a bedrock player on windows as compared to java player on windows & I have been playing minecraft for so long and joined so many discord communities of minecraft related as well and that's my experience. Java is really peak minecraft, with modpacks as well. You should try out prismlauncher, its open source and works quite smoothly on linux and you can try a lot of modpacks which the bedrock players can't play. Fabuously Optimized is a must have modpack given how efficient it can make minecraft / give fps boosts | | |
| ▲ | terribleperson 4 days ago | parent [-] | | Prism launcher is a great piece of software, takes a lot of the pain out of modded minecraft. |
|
| |
| ▲ | squigz 4 days ago | parent | prev | next [-] | | Distant Horizons is awesome. Too bad my computer really does not agree :P | | |
| ▲ | terribleperson 4 days ago | parent [-] | | It's a bit hard on the CPU for sure, but running a server and pregeneration both help. |
| |
| ▲ | Gigachad 4 days ago | parent | prev [-] | | Tbh bedrock natively supports massive render distances. Not as far as distant horizons but way way further than Java edition. |
| |
| ▲ | p0w3n3d 4 days ago | parent | prev | next [-] | | During ramblings about new Minecraft jeb_ recently said that java is not going to be sunsetted, or at least that's what I understood. Of course the course of Microsoft and jeb_ might be different and he might get pushed towards some decisions later. The problem is that kids nowadays don't use computers. They use phones and tablets. For me Minecraft experience on phone is awful but there are many young generations that consider it native way of playing games | | | |
| ▲ | xboxnolifes 4 days ago | parent | prev | next [-] | | By the time Mojang kills off Java, mod developers will have backported the entirety of modern Minecraft to 1.7.10. | | |
| ▲ | bombcar 4 days ago | parent [-] | | Minecraft itself is just a mod on 1.7.10, the One True Release. | | |
| ▲ | mcv 3 days ago | parent [-] | | I have to ask: what's so special about 1.7.10? | | |
| ▲ | bombcar 3 days ago | parent [-] | | It is one of the versions that lots of mods were made for, and so some significant mod packs have stayed with it for decades. Part of it was the almost year between 1.7.x and 1.8, so some major mods like Thaumcraft never made the jump. Gregtech New Horizons (GTNH) has been back porting mods and features to 1.7.10 (like the ability to run on Java 20+) because that’s easier than porting the whole mod pack forward. | | |
| ▲ | fishgoesblub 3 days ago | parent [-] | | Part of the reason was 1.8 Forge made it so most mods had to be re-written iirc. Also, Thaumcraft updated past 1.7 (Unfinished as Azanor left modding, but that's besides the point) |
|
|
|
| |
| ▲ | axus 4 days ago | parent | prev | next [-] | | The impression I got was they actively promote Bedrock, but take the necessary steps to keep Java supported. They make more money from Bedrock, makes sense to budget there. | |
| ▲ | squigz 4 days ago | parent | prev | next [-] | | No they're not? Vanilla Java gets updates too, and even if they were, the modding scene is as vibrant as ever. | |
| ▲ | dm319 4 days ago | parent | prev [-] | | I find bedrock has much better performance than java. It runs very nicely using the MCPE launcher on linux. | | |
| ▲ | lacksconfidence 4 days ago | parent | next [-] | | The performance is nice, but the advanced modding scene is non-existent. In java a mod author can do just about anything they can imagine and write code for. Somehow i doubt we will ever see dimensional doors as a bedrock mod. | |
| ▲ | presbyterian 4 days ago | parent | prev [-] | | I have the opposite experience, unfortunately. It's not a perfect comparison, but my base M1 MacBook Pro (8GB RAM) gets consistently solid performance out of Java edition, but my M3 iPad Air (also 8GB RAM, but better chip) drops frames constantly in Bedrock. |
|
|
|
| ▲ | dusted 4 days ago | parent | prev | next [-] |
| I played the original a lot, and lots of modding, but I prefer Luanti these days. There are lots of great games in it, and many of them are very much Minecraft, others explore entirely different approaches which can be very interesting as well.
I'm spending some hours playing with my 5 year old too, and it's great. |
|
| ▲ | charcircuit 5 days ago | parent | prev | next [-] |
| It was like that until 2012. Ever since then they've been tightening down further and further. |
|
| ▲ | hnthrowaway1956 4 days ago | parent | prev [-] |
| no, they don't allow it, they maybe begrudgingly tolerate it. They have a history of false-copyright striking youtube videos, and they've recently started using AI (Tracer AI) to DMCA-spray claims, some of which are obviously nonsensical. Of course, they are fine with you making youtube videos about their game (itdraws people in) but try making a video about a bit darker topics related to the game and you can quickly find your video striked. I even found an instance of a project like this one (a unfinished open-source MC clone which is vaguely similar but original assets and code and everything) receiving an LLM-written copyright claim based on "it looks similar and that's protected by our IP" |