#BlameMojang

  • The FTB Forum is now read-only, and is here as an archive. To participate in our community discussions, please join our Discord! https://ftb.team/discord

Strikingwolf

New Member
Jul 29, 2019
3,709
-26
1
There are always a few problems with Mojang code. I don't have specifics here on a lot of the stuff I've seen, but I'll give you the gist.
  1. A bug since alpha pushed the whole texture library to the GPU every tick. Fixed in 1.7...sure you couldn't have fixed that sooner?
  2. No onArmourDequip pre-built-in. @chbachman can tell you the multiple pains associated with this one and getting it to work
 
Last edited:

FyberOptic

New Member
Jul 29, 2019
524
0
0
  • Render order made the translucent pass (with blocks like water) render on top of particles for numerous versions, starting sometime around 1.5 I believe. Forge fixed it, then stopped fixing it I believe, maybe sometime around 1.7 or 1.8.
  • When hoppers can't carry out an action, they never reset their timer and search inventories on every tick. Still in 1.8.1.
  • 1.8's model system requires you to specify definitions for every possible combination of states, including all rotations. For some blocks this isn't a big deal. For others, like redstone dust, it's a disaster.
  • 1.8's model system generates baked models for every possible combination of renderable states (again, including rotations) and caches them, not only using a lot of memory (even more massive when mods start using it), but creating a large list that must be searched to find the model for a specific combination of states for a particular block.
  • When 1.8 wants to render the block breaking damage, it has to be passed a baked block model, which it duplicates all the inner components of, parses fully to replace every texture reference with the current block breaking animation frame, renders the model again, then disposes the model, all every render tick.
  • 1.8 creates and disposes a lot of objects during the rendering process now, actually.
  • 1.8 can't actually store any of the block states directly, or transmit them through networking packets; they're converted back into metadata, which is still saved the traditional way. If you can't fit their information into 4 bits, forget it. Though to be fair, I think this is meant as a stepping stone for 1.9. Maybe.

Actually this is going to be a lot of "When 1.8..." so I'll stop there. I thought I had more from beforehand but none are coming to mind at the moment.

This isn't to trash Mojang, because I respect them a lot, and it's a big game so some things will slip by or simply have to do until they can better address them. But it's certainly things that I hope are addressed better in the future.
 

Strikingwolf

New Member
Jul 29, 2019
3,709
-26
1
This isn't to trash Mojang, because I respect them a lot, and it's a big game so some things will slip by or simply have to do until they can better address them. But it's certainly things that I hope are addressed better in the future.
Exactly. Mojang is a great game, but some things seem like people just want to watch the code burn...
 
  • Like
Reactions: gold49

ljfa

New Member
Jul 29, 2019
2,761
-46
0
Render order made the translucent pass (with blocks like water) render on top of particles for numerous versions, starting sometime around 1.5 I believe. Forge fixed it, then stopped fixing it I believe, maybe sometime around 1.7 or 1.8.
Also: Translucent entities will occlude translucent blocks...for instance if you drop a glass pane item next to a body of water you will not see the water surface through it. That doesn't look very good.
 

RavynousHunter

New Member
Jul 29, 2019
2,784
-3
1
I get the feeling that Mojang is still kinda figuring out how to do a lot of things when it comes to making a game, because a lot of their design decisions are very beginner-style mistakes. That's fine for a small game that you're mostly making to learn how to do things, but when your game becomes a best-seller, its time to drop the hapless beginner crap and get serious, maybe hire a professional developer or two to sort things out. Their design philosophy seems to come from a quote from the Fallout 2 dev team (or Origin, I forget which one): "Now is not the time for serious solutions, now is the time for HACKS!"
 

ljfa

New Member
Jul 29, 2019
2,761
-46
0
I get the feeling that Mojang is still kinda figuring out how to do a lot of things when it comes to making a game, because a lot of their design decisions are very beginner-style mistakes. That's fine for a small game that you're mostly making to learn how to do things, but when your game becomes a best-seller, its time to drop the hapless beginner crap and get serious, maybe hire a professional developer or two to sort things out. Their design philosophy seems to come from a quote from the Fallout 2 dev team (or Origin, I forget which one): "Now is not the time for serious solutions, now is the time for HACKS!"
Design as in game design or as in code design? I think they have weaknesses in both areas.
 

FyberOptic

New Member
Jul 29, 2019
524
0
0
I get the feeling that Mojang is still kinda figuring out how to do a lot of things when it comes to making a game, because a lot of their design decisions are very beginner-style mistakes.

I agree, but honestly I think a lot of it is coming from idle hands. There's a lot of rewriting of things for the sake of rewriting them, even if the benefit doesn't really outweigh the huge effort they put in. Sure, they wanted a model format added to the game. No problem. It could have been added to 1.7.10's engine in a week. Modders already did this, after all. Modders have also created some freaking awesome block, item, and entity models in this game, which exceed anything Mojang ever made to be blunt. So obviously an engine rewrite was not necessary.

I just watched Rorax's video the other day where she was talking about the advantages of using a professional modeling program, and she mentioned the Wavefront model format for making Minecraft models, and I completely agree. I've used it in non-Minecraft stuff before. It's a text-based format which can do quite a lot despite its simplicity and ease to parse, and it's supported in just about any 3D modeling program (including Blender). But instead of using a standard format, Mojang invented their own proprietary one, in JSON of all things, which is full of limitations. Then to make matters worse they wrote a back-end that's so convoluted and memory-intensive with abstraction that they achieved little to no benefit from it. Literally none of that extra garbage was necessary just to add models. Now even threading will be an issue for modders. And for what? For every person who got a better framerate, someone else got a worse one. And the implications of this system when filled with mods is going to be bad.

I mean, I get why they came up with the model format that they did. They wanted something really simple that just some average young person or non-tech-savvy individual could figure out and whip up a model with. That's fine, I don't actually mind it in that regard. But then they had to do it in JSON, which is the opposite of being user-friendly. The very audience they're targeting with it is going to end up fighting with brackets and commas, and all the cryptic issues that come from that. They could have written their own incredibly simple text parser for a very similar format.

Have you guys ever looked at just how many external code libraries vanilla Minecraft requires now? Thirty. Thirty! And one of those is required just for the JSON parsing. Minecraft used to use three libraries, for comparison. Meanwhile, the game grew by almost a thousand (!!!) more classes just since 1.6, with 1.7 being when the bloat really started to roll in.

So one wall of text later, my point is basically that the game is bigger for no reason other than somebody wanted to write fancier code, and the game ended up no better for it.
 

RavynousHunter

New Member
Jul 29, 2019
2,784
-3
1
Preeeeeeeecisely, Brother FyberOptic. Though, I feel that it comes from a combination of laziness and an amateur's take on design. Mojang hasn't seemed to learn the old adage that "something isn't complete when there's nothing more to add, but when there's nothing left you can take away." Take away all the bloat, all the pea-brained JSON models, and the additional things that were added, not to make the lives of Mojang or 3rd party content creators easier, but simply because they looked neat, and you'd likely have a game that would run an order of magnitude better, would require less space both in terms of HDD space and RAM, and would end up actually being a superior product to what 1.8 is now.

They want the fancy toys, but they don't know how to use them properly, or even really why they want to use them. Why do they want a proprietary, JSON-based model format when there's things like Wavefront (which you mentioned Rorax mentioned) which do the job better and already have established toolsets that work with them? Reinventing the wheel is the kind of mistake made only by amateurs; those who've spent enough time with code know exactly why that's a bad idea. Now, certain things might require licensing to use, but I'm sure there's free and open source modelling libraries that are unencumbered by licensing fees and the like that would also be relatively easy to use and work with. Besides, its not exactly like they're hurting for money right now, anyways, I'm sure they could afford a license for a good-quality modelling library if they were that desperate to have one integrated into Minecraft rather easily.

Mojang's an amateur developer trying to play in the professional leagues. That...just doesn't work.
 

lenscas

Over-Achiever
Jul 31, 2013
2,015
1,801
248
I would not be surprised if they are just sick and bored of it.
It started as just a fun and small project notch once had, and look where it is now how much hours of dev time went into it. They already said they didn't put minecraft on the first place and instead wanted to focus on other projects but it is minecraft and as a result more time must be put into it while they probably want to work on something else and exiting.

If you don't enjoy the project you work on you tend to make bad or at least not as good decisions then when you do enjoy to work on it.

This together with the toxic community that even they probably experience and you have a perfect recepie for disaster.
 

gardenapple

Well-Known Member
Mod Developer
Jan 14, 2014
176
265
93
Not necessairly an epic rant on Mojang, but I found this little gem in the ItemPickaxe class:
Code:
    @Override
    public boolean func_150897_b(Block p_150897_1_){
        return p_150897_1_ == Blocks.obsidian ? this.toolMaterial.getHarvestLevel() == 3 : (p_150897_1_ != Blocks.diamond_block && p_150897_1_ != Blocks.diamond_ore ? (p_150897_1_ != Blocks.emerald_ore && p_150897_1_ != Blocks.emerald_block ? (p_150897_1_ != Blocks.gold_block && p_150897_1_ != Blocks.gold_ore ? (p_150897_1_ != Blocks.iron_block && p_150897_1_ != Blocks.iron_ore ? (p_150897_1_ != Blocks.lapis_block && p_150897_1_ != Blocks.lapis_ore ? (p_150897_1_ != Blocks.redstone_ore && p_150897_1_ != Blocks.lit_redstone_ore ? (p_150897_1_.getMaterial() == Material.rock ? true : (p_150897_1_.getMaterial() == Material.iron ? true : p_150897_1_.getMaterial() == Material.anvil)) : this.toolMaterial.getHarvestLevel() >= 2) : this.toolMaterial.getHarvestLevel() >= 1) : this.toolMaterial.getHarvestLevel() >= 1) : this.toolMaterial.getHarvestLevel() >= 2) : this.toolMaterial.getHarvestLevel() >= 2) : this.toolMaterial.getHarvestLevel() >= 2);
    }