4 ms·
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 th
by somat 1y ago
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.
- numberless 1y agoThey do provide deobfuscation maps these days at least
- herbst 1y agoThat'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.
- xboxnolifes 1y agoI 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 1y agoAt 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 https://thedailywtf.com/articles/the_inner-platform_effect [2] https://docs.minecraftforge.net/en/1.12.x/models/blockstates/introduction/ https://docs.minecraftforge.net/en/1.12.x/models/blockstates... [3] https://docs.fabricmc.net/develop/data-generation/block-models https://docs.fabricmc.net/develop/data-generation/block-mode... [4] https://docs.minecraftforge.net/en/1.12.x/models/overrides/ https://docs.minecraftforge.net/en/1.12.x/models/overrides/ [5] https://minecraft.fandom.com/wiki/Tutorials/Models#Example:_Fishing_Rod https://minecraft.fandom.com/wiki/Tutorials/Models#Example:_...
- tehbeard 1y agoA 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.
- accrual 1y agoI 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 1y agoIt 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.
- immibis 1y agoIt'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-complexity-clock.html https://mikehadlow.blogspot.com/2012/05/configuration-comple...
- tsunagatta 1y agoHonest question: what’s the alternative to inner-platform-effecting if you still want a system that’s highly user-customizable at runtime?
- charcircuit 1y ago>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.
- tialaramex 1y agoJava 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 1y ago>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 1y agoYes, 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?
- imtringued 1y agoThe 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.
- zimpenfish 1y ago> 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 1y agoWhats the point of the obfuscation in the first place, if they offer mappings to deobfuscate it?
- zimpenfish 1y agoI 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.
- LelouBil 1y ago> 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