Ender IO Zoo

Ender IO Zoo

962k Downloads

Painted Trapdoor and Grass/Podzol block issue.

Dolinmyster opened this issue · 26 comments

commented

Issue Description:

When you paint a Trapdoor with Grass/Podzol block it comes out with a dirt cover.
I did search to make sure this hasn't been reported and did not find it.
This was in Tlove's Modpack that I found the issue. I removed all the mods and loaded up a world with no other mods installed other then EnderIO and EnderCore and was able to verify that it is just an EnderIO issue.

What happens:

Use painting machine to paint trap door and a grass/podzol block it comes out as dirt.

What you expected to happen:

The trap door should of had a Grass/Podzol texture on the top.

Steps to reproduce:

1.Place Grass/Podzol and Trapdoor into Painter
2.Remove painted trap door in world.


Affected Versions (Do not use "latest"):

  • EnderIO: 1.10.2-3.1.169
  • EnderCore: 1.10.2-0.4.1.65-beta
  • Minecraft: 1.10.2
  • Forge: 2185

Your most recent log file where the issue was present:

Dirt:
http://puu.sh/ui0b3/d86f55214c.png
Podzol:
http://puu.sh/ui0bx/7078ddbbdd.png
Both placed in the world:
http://puu.sh/ui0bY/9ab72ad759.png

commented

Vanilla bug design decision, that's the texture those blocks report when asked.

commented

This issue shouldn't be closed and isn't invalid. Every other mod that copies blocks can easily do grass. It does not convert to dirt. I'm honestly surprised and disappointed with this response.

commented

i would guess it is "special case" code involved ...

commented

No reason to be disappointed in the reply. He just stated when asked this is the blocks reply. You mentioned every other mod that copies blocks can easily do grass. Can you provide more details?

commented

@BluSunrize That would give me any (0..n) number of textures. For all cases but "1" the question comes up what to do. But as I wrote above, getting textures is only part of the problem, and not the hardest.

@Mowmaster I could hardcode all vanilla models. Yes, it'd take me a couple of days, but it is possible. And it would break horribly the moment there's any resource pack installed that changes vanilla models. And that's for the "getting textures" half. For the "applying textures" part, I'd need to make a copy of the models that can takes different texture for different part of them. Again, the moment a resource pack comes into play, people would complain that a "painted fence" looks completely different than an unpainted one.

Also, if this was a dedicated mod for painted objects, my answers would be different. I know through what kinds of hoops Chisel&Bits jumps to cut up random models into correct bits. However, painting trapdoors is a really, really tiny part of Ender IO. There is a good chance that you are within the first 5 people to ever paint a trapdoor.

If you want to hide a trapdoor in a grass floor, try painting it with water. I think that'll look nice, too.

commented

you can paint things with WATER ??????? you mean just add bucket ?

commented

You took the words out of my mouth @mindforger xD

commented

But for real. Thank you for at least looking into it. I know this is a once in a blue moon sort of issue. I wanted to report it just in case it was an easy fix since it would be nice for the few times I place a trap door down to paint it with a grass block. I am not a modder so I don't know how complicated it is to try to paste textures onto something. Thanks again for at least looking into it.

commented

Yes, you can. For both BlockState and Texture painting. And yes, a bucket will do nicely, as will any liquid container that isn't a valid paint source itself.

Thx Dolinmyster.

PS: When I implemented that feature I painted a block with Liquid Sunshine and walked over it. Guess which song got stuck in my head for hours... ;)

commented

i just got the most evil idea for a labyrinth ... you are great!

commented

@HenryLoenwind I mean you could average between them? Check all faces and see which sprite is the most popular one? Or just got for list.get(0)? .-.
The names are absolutely irrelevant in this case, given the fact that you get a TexturedAtlasSprite and it's not the particle one.

commented

Blu, I could do many things. I could map both model's textures into a volumetric space and map them that way. And that may even be fun to do---if there was not the remaining 99.5% of Ender IO I have to take care of.

mindforger: I see your labyrinth and glue down my shift key.

commented

@BluSunrize does slippery debuff cancel out holding shift on edges of blocks? can i request it in your tracker ? :)

commented

Ok, let me answer this in detail.

We have 2 separate ways of painting blocks:

(a) "BlockState painting": This is what happens when you paint a conduit facade or any Ender IO machine. You will see that their model is replaced with the complete model of the paint. So if you paint a Farming Station, which is more or less a cube, with a fence, you'll get a fence. This works for any paint source as long as it provides a model (e.g. not for chests which render as an entity) and any variation as longs as it is stored in the saved state (e.g. stairs rotation) or computed on-the-fly on the world blocks (e.g. fence connections) but not when computed on-the-fly from a TileEntity (e.g. on/off state of a machine). It also works with dynamic tint colors (e.g. grass) on conduit facades (other machines: TBD). Note that I have not used the word "texture" in this case---the same is true for the code doing this.

(b) "Texture painting": This happens when you paint a fence, carpet, trapdoor, ... You will see that it still renders its original model (e.g. a fence painted with stone is still shaped like a fence, not like a stone block) but it replaces its textures. That means we need to map the textures of the paint model to the textures of the display model. And guess what? That is an impossible task. If you have a look at the Minecraft model json, you'll find that the texture names are arbitrary strings that any model artist can chose as they like. A fence could name its textures "up"/"bottomside"/"north"/"opositeOfNorth"/"left"/"peppermint". And a grass block could have "dirt"/"grassynoll"/"42a". Not even the models of the vanilla texture pack have any kind of consistent naming scheme. So we had to find a way to do that mapping anyway. And the trick to that is that any model absolutely must have a texture that is named "particle". That one is used whenever you break a block or run over it. So we take that texture from the paint block and replace all textures of the display model with it.

Note that for models that use the standard Minecraft "cube" model (e.g. grass), we could find out which textures it uses for which of its 6 sides. However, that still wouldn't help us to find out how to map it to the target model (fence, ...). We could do a hand-crafted mapping for the vanilla models, but that doesn't help either---the standard fence model only has one texture and uses it for all 6 sides.

commented

I do have an idea on this matter. I don't know how relevant it is and how applicable it'll be to your stuff @HenryLoenwind, I haven't actually checked the code. Just came to me as I read this issue.
If you just grab the IBakedModel, and use getQuads, using EnumFacing.UP, that should give you the top side of a block. Then from there, you have a BakedQuad, and you can call getSprite on it, which should return the top texture of the block, should it not?

commented

I understand making it work perfectly for all mods is a bit insane but to make it work perfectly in the vanilla game with vanilla blocks? That I feel should be expected.

commented

So, you will not fix this? It’s pretty annoying, and I know that it’s fixable.

2017-04-09_12 36 42

commented

What you're trying to say is "I don't care that you spent hours explaining the technical reasons, you are wrong because I say so", isn't it?

Feel free to PR a solution for this. I mean, for you it should be a matter of minutes to write the code for rendering any model into an off-screen buffer, extracting the tinted and textured vertex data from it and transform it into a correct texture.

commented

If you’d take a second to stop acting so pretentious, you’d see that I merely asked if you’re planning to fix it.

It’s a simple yes or no question.

commented

@PapiDimmi just a hint, i think he was upset about the following

and I know that it’s fixable.

and if you'd take just a second and get your ass up of your chair grab a book and learn some java you could work this out in just a few weeks ... why don't you selfish a*******s don't get that your demanding personality and ignorant "know it all better" behaviour is REASON NUMBER ONE for mod devs quitting work? do you want another dead mod or what? get your attention back on reddit, there you can score your karma points with this utterly nonsense all day long!

people like henry spend literally HOURS a day to fix stuff beein really broken and not just astethics ... you have yet not said ANY POSITIVE things about this mod and the work Henry did as far as i can see

@HenryLoenwind i am utterly sorry for this rant, i am so fed up with his behaviour

people like him simply don't think about what they are writing and how other feel about what they are saying (or spamming negative emotes) because they feel so safe behind their virtual identity to not take any responsibility for anything they did

commented

Huh, forgot I was still subscribed to this one.
Goodness @mindforger, I've never seen you this angry :D

commented

@mindforger If your feelings are hurt by a yellow thumbs down emoji formed by pixels on your computer monitor, you need to take off your headphones and take a walk outside, because it’s clear that you need some time off.

Ender IO is one of my favourite mods, and I fully respect its developers. I merely asked if this bug were going to be fixed. I said that I know it’s fixable because I want an answer beyond “It’s not possible to fix,” which is what @HenryLoenwind implied in an earlier comment.

Rather than a developer politely answering my question, you went ahead and insulted me and started a pointless argument. I have absolutely no idea how asking the developers whether a bug will be fixed is so insulting to you.

What you need to do is calm down, turn off your computer, and take a deep breath, because it’s clear that you have some issues.

commented

Mate, he already clearly stated that he's not got the fracking time to do it.
Give it a rest and enjoy the fact that developers are investing months of their free time into enjoyment that you don't pay for

You have no fucking claim to make on free entertainment.

commented

Please take a deep breath and watch your language.

All I did was ask if this bug were going to be fixed. That’s it. All I wanted was a “Yes” or “No” answer, not to be continuously insulted. The reason I commented in the first place was that I discovered this bug whilst I was playing and took a screenshot of it. I saw that the issue has already been reported, so I included my screenshot in a comment so that others can see what the bug looks like.

I love Ender IO, and I respect its developers, but being harassed for asking them a question is not something that I appreciate.

I apologize if I, somehow, offended anyone, but I never intended to; I merely asked a question. I’d really appreciate if you’d stop arguing, as it’s rather pointless.

commented

I want to make it clear that I absolutely love Ender IO, and I am super grateful for everyone who works on and has contributed to this wonderful mod. I feel as though I do not appreciate the insults and unnecessary arguments thrown at me.

When I look back at my comment, I can see how it may seem pretentious, and I can promise you that this was not my intention.

This is not a bug that personally irritates me. All I did to bypass this bug was to make invisible pressure plates (using quite clear glass) instead of pressure plates painted as dirt. That’s it; it’s not something that bugs me when I wake up every day. This is not a major bug that needs to be fixed immediately. I said what I said because I know that it can be fixed (although I don’t know how, as I do not code Minecraft mods); therefore, I want an answer by one of Ender IO’s developers which explains why this won’t be fixed, other than “This can’t be fixed,” which isn’t true.

I do not have any kind of “beef” with anyone here. I don’t care if this bug if fixed or not. I just want a simple answer as to why it won’t be fixed—or if it will be fixed in the future. At this point, I don’t really care about an answer; I just don’t want anyone to argue with me or be mad at me for reasons that are completely unnecessary.

I sincerely apologize if I happened to offend anyone; I never intended to start any kind of argument in this issue.

commented

So, you read through this whole thread, and then came to the conclusion that "maybe it still might be fixed?" How? The issue has been closed and the technical reasons explaining exactly why it will never be fixed have been said multiple times over. So let's just put this one to rest. It's not getting fixed anytime soon, unless you do it yourself.