I don't make texture packs but I do use them. How will this idea benefit me?
The idea is to have a text file texture pack creators could include inside their texture packs. It would allow them to fully control how terrain.png (where all of the block textures are located) in their texture pack is read
One of the greatest changes texture pack users like yourself would notice, is the ability to change what
each face of any block looks like. Some textures look good on the side of a block, but not the top (especially when the texture is very shaded, or is asymmetric in some way, or the texture does not connect to the sides properly). This idea would allow texture packs to change faces of even half slabs.
If doors have too wide of a window, or if they create shading, it goes on the left and right edges of the door. Doors have hinges on every face. Trapdoors usually show shading on the sides from holes in the top. Stone pressure plates and buttons remain unseen against stone. Pistons cannot have a metal arm and a wooden head, as the crafting recipe would imply.All of these problems could be solved by a texture pack creator if this idea were implemented.
This idea might even allow for cool effects such as obsidian as a portal frame looking different, or blocks having a different appearance in different dimensions.
I am making a texture pack. I hear you have an idea.
Are you constantly finding yourself frustrated when you can't change one texture without ruining another?
t would be this text file that you would make that would allow you to customized what blocks use what textures in many different ways.
Most importantly, it would allow you to change current derivative textures in minecraft.
If you don't get what I mean by derivative textures, I mean things like:
Fence textures
Piston arm texture
Piston head side texture
Stairs
Half Slabs
Buttons
Pressure plates
ect.
You could change the derivative textures of these, or give them dedicated textures. You also can give blocks more than one texture.
Now, I know what you're thinking (possibly). That something like this will be having texture artists overly use this causing more a decrease in performance. It would allow artists to not only make more derivative textures, and take blocks with (in default) multiple textures and make them use one texture for all sides.
Also, possibly the best part of this idea, would be the ability to use greyscale. This idea would allow you to take one texture, make it grayscale, and give it color (like biomes do) with your choice of color in hexadecimal color code (#000000) format.
When would grayscale be useful? For things taking up a bunch of room in your terrain.png that look identical with only changing color (wools, planks). This would allow you to cut greatly on texture space, allowing you space that you know won't be used by new textures in the future, as well less redundancy. When looking at your terrain.png file.
So, you're interested, and wondering: How might I do this for my texture pack if this idea were implemented?
Well, like I said, this would all be done using a text file. It would look similar to how the .lang files look. You'll get what I mean if you open up en_us.lang with a basic text editor, and you'll see what I mean with the example. I looked at the newer version, and it looks bad. It used to look like this, though (*shakes fist at crowdin*) :
So I'll show you how to make a basic texture re-assign. In my texture pack, my sandstone texture is rough-looking, Like something you would see on the outside of an Egyptian pyramid, so I don't really need 3 textures for it. Just one. So, with this idea, this is how I'd do it:
tile.sandstone.texture= tile(0, 12);
So, it's that simple. What does tile do? It would be a way of defining a perfect square, specifically how Minecraft reads them. This will not need to change with the resolution of the pack. The number ranges from 0-15, and is in (x,y) format. Imagine the texture spaces as you use them now as a grid. For example: Grass is (0,0), bedrock is (1,1), sugarcane is (9,4). Tile is useful when you're working with very large images.
So what about textures that don't fit in those tiles? Rect. Rect would be just like tile only pixel based. This would allow you to assign a non-normal grid or non-square texture. You would use this for many of the derivative textures.
For example, in my texture pack, I want a piston head side that is different from the piston arm side texture:
tile.pistonHead.arm.texture= rect(0,208, 15,211);
Well why did I place it there? Well, I just freed up space by making sandstone use one texture, So I put it below where the sandstone side used to go. As I told you, rect is pixel based. It is in the format of (x1,y1, x2,y2). The first set of coordinates is the top left corner, and the second set is the bottom right corner. What about the side of the piston head I talked about? It would stay in the same place, as with the new system they would be separated (but with the same texture in vanilla) and it you specify one, the other would derive from its original texture space. Minecraft would use the original texture locations for unspecified models, just as if you had missing files in your texture pack.
How do I find out the coordinates to use? I don't want to have to count all those pixels!
Most likely your image editor has something so you don't need to count. In photoshop, open up the "info" panel, and when you move your cursor on the canvas it will tell you the x and y of where it's at. Paint.net has the same thing built right into the GUI at the bottom of the screen (bottom right).
Tell me about grayscale. I'll bet that's complex!
Well, not really. For this next one, I'll be making a few of the wooden planks' texture based on a grayscale image. I'll be using a grayscale version of the original wooden planks' location, and adding color to it to form other wooden planks' texture
I've chosen not to use just the grayscale method for pine planks because it is much darker than the rest of the planks. The format of tint could be (color, grayscale area)
Well what about brightness? Different colors have different values!
Yeah, I just thought about that when writing this suggestion. So, I want to change the pine planks, too! So:
The format of shade would be (brightness, contrast, area). This would not be limited to grayscale use (but that would be its most useful use).
Wait, can I do things in multiple places on one texture? And what about assigning multiple textures to one model?
Why yes! And Most of the time, assigning multiple textures will involve tile extensions based on an item after placed in relation to the player. For instance, the door has always bothered me , the fact that it derives the side textures from the sides of the front, and the fact that it has hinges in 4 places. So here's how I would fix it using my idea:
In this code, pixelswould cover up the hinges from the derivative texture, but only on the front and left side (the side not connected to the wall if there is one) leaving the hinges on the back face, and the side that is actually the door's pivot. Note that how I used the methods, they are separated by a space. A semicolon denotes the end of methods for whatever comes after the equals sign.
More advanced models would require specific name extensions (In fact many I've been using I made up, like anything after tile.____.). such things might be things like
Is that it?
Yea, pretty much. I'd also like to note that I tried to make this as simple yet informational as possible, to show how you might use this feature, as well as things Mojang would need to make work. Mojang could make more methods to make less typing required (like square and line) but for time, I didn't explain any more. Also, Mojang would probably use names as they appear in the code.
Technical non-FAQ explanation:
The idea is to have Mojang add a piece of code into Minecraft that would interpret a single .TXT file
on the root directory of a texture pack that would control how textures from terrain.png are read.
The text created by the texture author would mock that of what the game already uses.They would put
tile.____.texture= ;
Tile would be in nearly all of the initiating lines, the first line of underscores would be the block name, and could have extensions after it (".top" ".left" ect.) and this would always end with ".texture" (for changing textures) and then anything after the equals sign and before the semicolon is the code that designates where the texture is from, and how it should be used.
Artists will use things called methods. Methods designate from where or how a texture is used. They also allow the game to do things to certain textures without modifying or needing a new texture.
Methods need to be applied in a certain order. If they are applied first, they are on the bottom, it is under the methods after it. Many things could be done with multiple selections, but layering is a much easier way to achieve the effect.
But that is way too much! I don't want to have to modify all of this code just to make a texture pack!
The great thing about this idea, is that it is all optional. It is up to you, as an artist, how much of this you are comfortable using. Use all of it, use some of it, or just do the same thing you've been doing (none of it). It is up to you. Just like a texture pack itself, just because you change one texture location, does not mean you have to change them all. If you don't specify a texture map/location whatchamacallit Minecraft assumes to use default, just like if you don't modify items.png your items are all default.
Method list:
tile-Selects a resolution dependant square, snapped to a grid on how the game would normally look, based on coordinates that won't change with resolution
rect-Selects a rectangle based on the two coordinates given.
lineX- Selects a straight line based on 1 Y value and a starting and stopping X value.
lineY- Selects a straight line based on 1 X value and a starting and stopping Y value.
tint-Recolors a selection based on the given color.
hueshift- Changes color of selection based on its current color, and shift value.
shade-Changes brightness/contrast of selection.
pixels(name subject to change)-Adds pixels in the given selection (only for this use of the texture).
opacity- Gives the selection a specific opacity (good for layering).
function()- does a check with the game for a variable.
function(grasscolor)- Does a check of what biome the block is in, and returns grass' color (allows any
block to be biome-colored).
function(leafcolor)- Does a check of what biome the block is in, and returns leaves' color (allows any block to be biome-colored).
function(effect)- Does a check of what color the particle would normally be recolored to (potion effect particles, enchanted hit particles, ect.).
There are more things I have thought of that could be done with this idea, that I'm not asking for, but would be a nice addition, and if the system were implemented correctly, would be easily enough added by modders. More uses:
Nether portal texture:
tile.obsidian.portal.texture=;
Allows Obsidian to have a separate texture when it turns into a nether portal.
Allows Redstone ore to have a different texture when it activates. Still changes the lighting. Also, the on/off extension could (and would probably need to) be used on other redstone objects (well, only really needed for the redstone torch)
This would allow texture packs to have different textures depending on the dimension. For instance, blocks in the nether could be decaying and have a light source from the bottom, not the top, as lava is usually below you, and there is no sun. That same block would be normal in the normal world, and it could be crystallized with no light source in the end, as there is no global light source at all. Also, this could apply to mobs as well, for instance you could texture an enderman normally in the end, but to look like a scout/spy/theif/warrior/soldier when in the normal world.
These would allow the separation of many derivative particle textures, allowing texture artists to give them individual textures. Using the frame.# extension, you can change the number of frames, and where they load from. Remember, that if you don't define new textures (like portal particles) they will use and recolor the smoke texture as usual. If you make them have separate textures, you get to choose the color, or use function(effect) to automatically recolor the chosen selection to the color that the game would choose. The frame.# extension would work differently for portal and ender particles, chooesing different frames to send out (like it does with the smoke particle animation now)
(that isn't all of the particles, but you get my point....)
Once again, features that would be possible, or come later. Beyond textures, models:
This would allow to give certain blocks (like those without collision) use of existing models (but better names ), like this:
I thought of this when carrots and potatoes were added, as I don't like the model it uses, and would rather have them grow as a single plant in the middle of the farmland.
Mobs:
entity.Villager.model= model(humanoid);
This would allow mobs to use other mob models. Obviously I chose a change that will be most popular if this feature were added. This would change the mob's model, but the collision box for mobs would not change, and the model would be scaled to the mob's size. For instance, if you changed skeletons to use the Enderman model, it would be shorter, and thus the model would need to be smaller to compensate. Also, some models might not work with others, like changing the enderdragon to a slime (but you could change it to a giant chicken ). Also, mobs would animate in their own movement style when possible (like a dragon-chicken would flap its wings), but specific animations would not be carried over, such as magma cube sproing or enderman freaking out.
Why can't this just be made into a mod like MCpatcher or something?
Mod users get all of the cool stuff. HD. Animated textures. Biome water. ect. I don't like the burden of imbalanced-gameplay and waiting for mods to become compatible with vanilla. (I don't use mods) But it's time vanilla Minecraft gets some texturing love! Besides, people are always saying how Mojang never makes any cool stuff anymore, that <insert Mojang employee here> has only added things you hate.
Can I use your ideas to make this a mod?
No. I want this implemented into vanilla, but if it isn't implemented by the time the mod API comes out, I will try and make it myself. I'm a programmer, but not with Java, and I'd like the reason and project to start modding and learning Java.
What can I do to support?
Post, vote, and twitter Jeb_, or make a thread on Reddit. If you do, make sure to include the forum link.
Or, post on the epicness of this suggestion, tell me what doesn't make sense, if I should rewrite something, or request I write a little more on something. Give your friends the link. Anything.
EDIT: I have spent a little time making a mock-up (out of my texture pack VTC, but it is heavily outdated now) of what one of these text files would look like, and the terrain.png to go with it, as an example of what you might expect to be able to do. (I will add more to this later with things like the button, fence, ect. later)
EDIT2: Both the text file and the textures are out of date, they aren't that ugly anymore :3
"I'm an outsider by choice, but not truly.
It’s the unpleasantness of the system that keeps me out.
I’d rather be in, in a good system. That’s where my discontent comes from:
being forced to choose to stay outside.
My advice: Just keep movin’ straight ahead.
Every now and then you find yourself in a different place."
-George Carlin
I don't really get this at all, and from the TL;DR version, I am pretty sure most of that is possible for texture pack makers.
No. It is for texture pack makers, but certain textures derive from other textures and you cannot change them without modding. Like the buttons and stone pressure plates look like stone, fences look like wooden planks, and piston arm/head side are linked, you can only change one and both change. Get what I mean?
Rollback Post to RevisionRollBack
"I'm an outsider by choice, but not truly.
It’s the unpleasantness of the system that keeps me out.
I’d rather be in, in a good system. That’s where my discontent comes from:
being forced to choose to stay outside.
My advice: Just keep movin’ straight ahead.
Every now and then you find yourself in a different place."
-George Carlin
I support this fully. As well as being able to select pixel areas you should also allow block numbers, so people can quickly select an entire block without much effort.
That's what tile is for. Unless you meant how animations work how a block on terrain.png are labeled with a number to designate what tile, but it isn't coordinate based, just numerical. I guess tile could support that if only one number was given.
"I'm an outsider by choice, but not truly.
It’s the unpleasantness of the system that keeps me out.
I’d rather be in, in a good system. That’s where my discontent comes from:
being forced to choose to stay outside.
My advice: Just keep movin’ straight ahead.
Every now and then you find yourself in a different place."
-George Carlin
Would an easier way to describe this be:
"Able to change the looks of every block, even the derivative ones, like you can of the small and large chests"?
Rollback Post to RevisionRollBack
Theevilpplz is so fabulous, hetrosexual men turn bi when he passes by.
Would an easier way to describe this be:
"Able to change the looks of every block, even the derivative ones, like you can of the small and large chests"?
Well... yes... and no. You could texture something with a model as advanced as the chests, however I wouldn't recommend doing so on the terrain.png that is 16x. It is would end up being 10 spots... if you're lucky.
If you're just saying the method, I would say that isn't a good explanation as it is quite different. Maybe yes if you append "in the fact that it allows users to make a better looking texture that takes up less room on the terrain.png and has more texture and does not use static textures for blocks with dynamic placement"
In other words, it fixed this:
However, this idea is much more revolutionary than that!
"I'm an outsider by choice, but not truly.
It’s the unpleasantness of the system that keeps me out.
I’d rather be in, in a good system. That’s where my discontent comes from:
being forced to choose to stay outside.
My advice: Just keep movin’ straight ahead.
Every now and then you find yourself in a different place."
-George Carlin
Wow insomniac! You really have done your research! I fully agree that we need to have this implemented officialy, if not a mod then added to McPatcher. You should re-post into the mod discussion page and ask for anyone's help there, that could get the bat rolling.
I despise derivative textures, as it means I must create wood, cobblestone, and many other blocks with several drafts before the derivative texture, let's say a fence or step, looks aesthetically pleasing.
In all honesty, when I first saw the code, I was like "What kind of black magic sorcery is this!?", yet after you explained it, I now understand how to use this, again, if it were implemented.
I like the way you can simplify stuff like colored wool into one grayscale texture, or utilize them to their full extent with different textures if you desire. Very powerful.
If Mojang could pull this off that would be awesome.
Rollback Post to RevisionRollBack
Mostly moved on. May check back a few times a year.
I think this is a great idea for making specific kinds of blocks, and would be really useful for a texture pack I'm making, but I don't like the idea of making too many things grayscale. A lot of texture packs use those extra textures for different purposes (including mine for both wool and planks), and it would be a bit annoying if you could only really have one texture but recolored. I apologize if I didn't read that right, but I do like your main idea.
Rollback Post to RevisionRollBack
"Victory is like a watermelon. It's hard to spell and it tastes good."
Wow insomniac! You really have done your research! I fully agree that we need to have this implemented officialy, I despise derivative textures, as it means I must create wood, cobblestone, and many other blocks with several drafts before the derivative texture, let's say a fence or step, looks aesthetically pleasing.
In all honesty, when I first saw the code, I was like "What kind of black magic sorcery is this!?", yet after you explained it, I now understand how to use this, again, if it were implemented.
Thank you! I spent a good deal of time thinking about it. And the good thing about my idea is, say you make a texture that looks good as a derivative texture, but bad as a main texture, you could just use
tile.fence.texture= tile(x,y);
(with the tile that the texture is on of course) and Minecraft would wrap it like it does wooden planks (but with the texture you choose). Quick, easy.
I think this is a great idea for making specific kinds of blocks, and would be really useful for a texture pack I'm making, but I don't like the idea of making too many things grayscale. A lot of texture packs use those extra textures for different purposes (including mine for both wool and planks), and it would be a bit annoying if you could only really have one texture but recolored. I apologize if I didn't read that right, but I do like your main idea.
The thing about this idea is that it's all optional. You could go about your pack without it. Default would not employ these methods (such as grayscale on non biome blocks) nor would you be required to. If you wanted, you could just use tile to shuffle around textures. The feature is to give texture artists full control. ALL OPTIONAL. Terrain.png would either be the same thing you've been working on, or your own personal playground.
"I'm an outsider by choice, but not truly.
It’s the unpleasantness of the system that keeps me out.
I’d rather be in, in a good system. That’s where my discontent comes from:
being forced to choose to stay outside.
My advice: Just keep movin’ straight ahead.
Every now and then you find yourself in a different place."
-George Carlin
I agree to this completely. I'm making a texture pack for an adventure map I'm working on but I want to make the fences look metallic while the wood will stay wooden.
Also, another addition: Please make the 32X32, 64X64 and so on resolution textures compatible without the use of a patcher...
I kind of get it. But were would the fence texture, button texture ect go? If it was just a flat block texture in the terrain.png it would be quite difficult to get to understand. Maybe they each have a template in the items folder?
On the terrain.png. You would be able to change all of the sides of it. For example: (in 16x) The front face of the button is 6x4 pixels, top/bottom is 6x2, and left/right sides are 2x4. How did I find that? Just looked in game. You can place these custom textures wherever you want in the terrain.png, share them (like top/bottom are same, ect.) or even derive the texture from an existing texture. However, like I said you could just make a bigger texture and assign it to the whole model so you don't have to assign every face.
Perhaps to make it even clearer you should make a txt. file example which incorporates all the parts. Because even though I know what you're saying, I can't create a full picture of the idea in my head.
als have some and a (+)
Also how would .gif files work?
Thank you. Maybe I will do this, Like I would actually keep going and have the completed .txt as well as the terrain.png of when it's done.
Gif files don't work? This idea is not for animation, and even in the texture mods with animation they use .PNGs in long strips to animate.
"I'm an outsider by choice, but not truly.
It’s the unpleasantness of the system that keeps me out.
I’d rather be in, in a good system. That’s where my discontent comes from:
being forced to choose to stay outside.
My advice: Just keep movin’ straight ahead.
Every now and then you find yourself in a different place."
-George Carlin
What about the fence? That would take up WAY to much space, unless all the connecters shared the same textures which wouldn't be fully customizable.
Not really. As you could make textures derive from other places (and modify how they use it) you could free up a lot of space. Looking at my terrain.png, I estimate I will have at least 23 free spots if this idea was implemented.
I assume that you would be able to modify the fence texture using
To save space on terrain.png, you could just assign the same texture to different sides (like top & bottom boards have one, front & back share one, top and bottom are same ect.). When I say this, I mean your decision (not that being the only option).
I think the model only grabs one texture for one half of the boards (120 pixels) and that is used for all of the arms.
Does that sound fair? or do you actually want the ability to modify each arm (like the boards that go to the left, and the ones that go to the right being different)?
"I'm an outsider by choice, but not truly.
It’s the unpleasantness of the system that keeps me out.
I’d rather be in, in a good system. That’s where my discontent comes from:
being forced to choose to stay outside.
My advice: Just keep movin’ straight ahead.
Every now and then you find yourself in a different place."
-George Carlin
Perhaps to make it even clearer you should make a txt. file example which incorporates all the parts. Because even though I know what you're saying, I can't create a full picture of the idea in my head.
I included a sample at the bottom of the OP
Rollback Post to RevisionRollBack
"I'm an outsider by choice, but not truly.
It’s the unpleasantness of the system that keeps me out.
I’d rather be in, in a good system. That’s where my discontent comes from:
being forced to choose to stay outside.
My advice: Just keep movin’ straight ahead.
Every now and then you find yourself in a different place."
-George Carlin
I posted this idea on getsatisfaction. The link is in the OP.
Would photoshopped pictures of what the "code" in the text file accomplishes make things more clear of what they do? I would put these in the last spoiler, in another spoiler.
Also, later I'll do more with the text file and terrain.png to show how I would use this to texture buttons, levers, and fences. Maybe I might explain more about how extensions would work, and more cool extensions as well.
All I'll say for now is that It will make the Nether more cool.
"I'm an outsider by choice, but not truly.
It’s the unpleasantness of the system that keeps me out.
I’d rather be in, in a good system. That’s where my discontent comes from:
being forced to choose to stay outside.
My advice: Just keep movin’ straight ahead.
Every now and then you find yourself in a different place."
-George Carlin
alright; so... what I gathered from reading you want a text files that tells minecraft when and where to implement textures on an exact part of a block (or even a non block item like a ladder or a fence)?
Maybe I don't understand but can you not just do that when editing textures?
what would this mean?
the new block, bloodstone, would hurt when you touch it (cactitouch) secondly when broken, usig the same breaking mechanics as stone as indicated by the ''tile.stone.'' it will spawn a solid lava block and 64 diamonds.
Well, this idea is SPECIFICALLY for textures. I'd imagine that if this was implemented, the mod wizards could look at how the implemented system works, and adapt it into something like you're saying,
But, I don't think the code you gave would even work. For one, the main extension you used would actually modify STONE, not be a new block. And second, the coordinates you used wouldn't work. You would need to use tile(7,6); .
So more realistically, the code would probably look like:
(diamonds are called emerald in the code as that's what they used to be called)
Please note, I'm not advocating this idea in any way, and I think trying to MAKE blocks using similar methods to my idea would be too complex when it comes to things like vein size and shape, spawning underground, spawning in cave systems, determining what a sapling grows into, ect. I think this would much more easily done with just modding, or with a mod maker. Plus... the the idea seems overpowered, and I'm not even sure dropping lava would do what you think it will... I think it would actually drop it as an item that you would be able to place, showed as a square with the lava animation (like you see on TMI). Making it spawn a lava source when broken would be a bit more complex as well.
alright; so... what I gathered from reading you want a text files that tells minecraft when and where to implement textures on an exact part of a block (or even a non block item like a ladder or a fence)?
Maybe I don't understand but can you not just do that when editing textures?
That's pretty much the idea, yes. Well, as it is you edit terrain.png and Minecraft reads textures from specific places on terrain.png, and uses some of those textures for other things, that texture artists cannot otherwise change separately from the block the texture originally derives from. Like fences, fences get their texture from the original wooden planks' texture, and Minecraft wraps it using parts of that block's texture.
With my idea, texture pack creators would not only be able to change the terrain.png, but also change how it is read by Minecraft as well, including giving derivative textures their own textures.
"I'm an outsider by choice, but not truly.
It’s the unpleasantness of the system that keeps me out.
I’d rather be in, in a good system. That’s where my discontent comes from:
being forced to choose to stay outside.
My advice: Just keep movin’ straight ahead.
Every now and then you find yourself in a different place."
-George Carlin
Great Idea! I'd love to be able to design a nice fence post and staircase like this! I don't really get the greyscale and tinting, though, what is that for?
I don't make texture packs but I do use them. How will this idea benefit me?
The idea is to have a text file texture pack creators could include inside their texture packs. It would allow them to fully control how terrain.png (where all of the block textures are located) in their texture pack is read
One of the greatest changes texture pack users like yourself would notice, is the ability to change what
each face of any block looks like. Some textures look good on the side of a block, but not the top (especially when the texture is very shaded, or is asymmetric in some way, or the texture does not connect to the sides properly). This idea would allow texture packs to change faces of even half slabs.
If doors have too wide of a window, or if they create shading, it goes on the left and right edges of the door. Doors have hinges on every face. Trapdoors usually show shading on the sides from holes in the top. Stone pressure plates and buttons remain unseen against stone. Pistons cannot have a metal arm and a wooden head, as the crafting recipe would imply.All of these problems could be solved by a texture pack creator if this idea were implemented.
This idea might even allow for cool effects such as obsidian as a portal frame looking different, or blocks having a different appearance in different dimensions.
I am making a texture pack. I hear you have an idea.
Are you constantly finding yourself frustrated when you can't change one texture without ruining another?
t would be this text file that you would make that would allow you to customized what blocks use what textures in many different ways.
Most importantly, it would allow you to change current derivative textures in minecraft.
If you don't get what I mean by derivative textures, I mean things like:
Now, I know what you're thinking (possibly). That something like this will be having texture artists overly use this causing more a decrease in performance. It would allow artists to not only make more derivative textures, and take blocks with (in default) multiple textures and make them use one texture for all sides.
Also, possibly the best part of this idea, would be the ability to use greyscale. This idea would allow you to take one texture, make it grayscale, and give it color (like biomes do) with your choice of color in hexadecimal color code (#000000) format.
When would grayscale be useful? For things taking up a bunch of room in your terrain.png that look identical with only changing color (wools, planks). This would allow you to cut greatly on texture space, allowing you space that you know won't be used by new textures in the future, as well less redundancy. When looking at your terrain.png file.
So, you're interested, and wondering: How might I do this for my texture pack if this idea were implemented?
Well, like I said, this would all be done using a text file. It would look similar to how the .lang files look. You'll get what I mean if you open up en_us.lang with a basic text editor, and you'll see what I mean with the example. I looked at the newer version, and it looks bad. It used to look like this, though (*shakes fist at crowdin*) :
So I'll show you how to make a basic texture re-assign. In my texture pack, my sandstone texture is rough-looking, Like something you would see on the outside of an Egyptian pyramid, so I don't really need 3 textures for it. Just one. So, with this idea, this is how I'd do it:
So, it's that simple. What does tile do? It would be a way of defining a perfect square, specifically how Minecraft reads them. This will not need to change with the resolution of the pack. The number ranges from 0-15, and is in (x,y) format. Imagine the texture spaces as you use them now as a grid. For example: Grass is (0,0), bedrock is (1,1), sugarcane is (9,4). Tile is useful when you're working with very large images.
So what about textures that don't fit in those tiles?
Rect. Rect would be just like tile only pixel based. This would allow you to assign a non-normal grid or non-square texture. You would use this for many of the derivative textures.
For example, in my texture pack, I want a piston head side that is different from the piston arm side texture:
Well why did I place it there? Well, I just freed up space by making sandstone use one texture, So I put it below where the sandstone side used to go. As I told you, rect is pixel based. It is in the format of (x1,y1, x2,y2). The first set of coordinates is the top left corner, and the second set is the bottom right corner. What about the side of the piston head I talked about? It would stay in the same place, as with the new system they would be separated (but with the same texture in vanilla) and it you specify one, the other would derive from its original texture space. Minecraft would use the original texture locations for unspecified models, just as if you had missing files in your texture pack.
How do I find out the coordinates to use? I don't want to have to count all those pixels!
Most likely your image editor has something so you don't need to count. In photoshop, open up the "info" panel, and when you move your cursor on the canvas it will tell you the x and y of where it's at. Paint.net has the same thing built right into the GUI at the bottom of the screen (bottom right).
Tell me about grayscale. I'll bet that's complex!
Well, not really. For this next one, I'll be making a few of the wooden planks' texture based on a grayscale image. I'll be using a grayscale version of the original wooden planks' location, and adding color to it to form other wooden planks' texture
I've chosen not to use just the grayscale method for pine planks because it is much darker than the rest of the planks. The format of tint could be (color, grayscale area)
Well what about brightness? Different colors have different values!
Yeah, I just thought about that when writing this suggestion. So, I want to change the pine planks, too! So:
The format of shade would be (brightness, contrast, area). This would not be limited to grayscale use (but that would be its most useful use).
Wait, can I do things in multiple places on one texture?
And what about assigning multiple textures to one model?
Why yes! And Most of the time, assigning multiple textures will involve tile extensions based on an item after placed in relation to the player. For instance, the door has always bothered me , the fact that it derives the side textures from the sides of the front, and the fact that it has hinges in 4 places. So here's how I would fix it using my idea:
In this code, pixelswould cover up the hinges from the derivative texture, but only on the front and left side (the side not connected to the wall if there is one) leaving the hinges on the back face, and the side that is actually the door's pivot. Note that how I used the methods, they are separated by a space. A semicolon denotes the end of methods for whatever comes after the equals sign.
More advanced models would require specific name extensions (In fact many I've been using I made up, like anything after tile.____.). such things might be things like
What would I do with all of this code again?
It would go in a text file.
Is that it?
Yea, pretty much. I'd also like to note that I tried to make this as simple yet informational as possible, to show how you might use this feature, as well as things Mojang would need to make work. Mojang could make more methods to make less typing required (like square and line) but for time, I didn't explain any more. Also, Mojang would probably use names as they appear in the code.
Technical non-FAQ explanation:
The idea is to have Mojang add a piece of code into Minecraft that would interpret a single .TXT file
on the root directory of a texture pack that would control how textures from terrain.png are read.
The text created by the texture author would mock that of what the game already uses.They would put
Tile would be in nearly all of the initiating lines, the first line of underscores would be the block name, and could have extensions after it (".top" ".left" ect.) and this would always end with ".texture" (for changing textures) and then anything after the equals sign and before the semicolon is the code that designates where the texture is from, and how it should be used.
Artists will use things called methods. Methods designate from where or how a texture is used. They also allow the game to do things to certain textures without modifying or needing a new texture.
Methods need to be applied in a certain order. If they are applied first, they are on the bottom, it is under the methods after it. Many things could be done with multiple selections, but layering is a much easier way to achieve the effect.
But that is way too much! I don't want to have to modify all of this code just to make a texture pack!
The great thing about this idea, is that it is all optional. It is up to you, as an artist, how much of this you are comfortable using. Use all of it, use some of it, or just do the same thing you've been doing (none of it). It is up to you. Just like a texture pack itself, just because you change one texture location, does not mean you have to change them all. If you don't specify a texture map/location whatchamacallit Minecraft assumes to use default, just like if you don't modify items.png your items are all default.
Method list:
tile-Selects a resolution dependant square, snapped to a grid on how the game would normally look, based on coordinates that won't change with resolution
rect-Selects a rectangle based on the two coordinates given.
lineX- Selects a straight line based on 1 Y value and a starting and stopping X value.
lineY- Selects a straight line based on 1 X value and a starting and stopping Y value.
tint-Recolors a selection based on the given color.
hueshift- Changes color of selection based on its current color, and shift value.
shade-Changes brightness/contrast of selection.
pixels(name subject to change)-Adds pixels in the given selection (only for this use of the texture).
opacity- Gives the selection a specific opacity (good for layering).
function()- does a check with the game for a variable.
function(grasscolor)- Does a check of what biome the block is in, and returns grass' color (allows any
block to be biome-colored).
function(leafcolor)- Does a check of what biome the block is in, and returns leaves' color (allows any block to be biome-colored).
function(effect)- Does a check of what color the particle would normally be recolored to (potion effect particles, enchanted hit particles, ect.).
There are more things I have thought of that could be done with this idea, that I'm not asking for, but would be a nice addition, and if the system were implemented correctly, would be easily enough added by modders. More uses:
Nether portal texture:
Allows Obsidian to have a separate texture when it turns into a nether portal.
Redstone:
Allows Redstone ore to have a different texture when it activates. Still changes the lighting. Also, the on/off extension could (and would probably need to) be used on other redstone objects (well, only really needed for the redstone torch)
Dimension-specific textures:
This would allow texture packs to have different textures depending on the dimension. For instance, blocks in the nether could be decaying and have a light source from the bottom, not the top, as lava is usually below you, and there is no sun. That same block would be normal in the normal world, and it could be crystallized with no light source in the end, as there is no global light source at all. Also, this could apply to mobs as well, for instance you could texture an enderman normally in the end, but to look like a scout/spy/theif/warrior/soldier when in the normal world.
Particles:
These would allow the separation of many derivative particle textures, allowing texture artists to give them individual textures. Using the frame.# extension, you can change the number of frames, and where they load from. Remember, that if you don't define new textures (like portal particles) they will use and recolor the smoke texture as usual. If you make them have separate textures, you get to choose the color, or use function(effect) to automatically recolor the chosen selection to the color that the game would choose. The frame.# extension would work differently for portal and ender particles, chooesing different frames to send out (like it does with the smoke particle animation now)
(that isn't all of the particles, but you get my point....)
Once again, features that would be possible, or come later. Beyond textures, models:
Blocks:
This would allow to give certain blocks (like those without collision) use of existing models (but better names
I thought of this when carrots and potatoes were added, as I don't like the model it uses, and would rather have them grow as a single plant in the middle of the farmland.
Mobs:
This would allow mobs to use other mob models. Obviously I chose a change that will be most popular if this feature were added. This would change the mob's model, but the collision box for mobs would not change, and the model would be scaled to the mob's size. For instance, if you changed skeletons to use the Enderman model, it would be shorter, and thus the model would need to be smaller to compensate. Also, some models might not work with others, like changing the enderdragon to a slime (but you could change it to a giant chicken
Why can't this just be made into a mod like MCpatcher or something?
Mod users get all of the cool stuff. HD. Animated textures. Biome water. ect. I don't like the burden of imbalanced-gameplay and waiting for mods to become compatible with vanilla. (I don't use mods) But it's time vanilla Minecraft gets some texturing love! Besides, people are always saying how Mojang never makes any cool stuff anymore, that <insert Mojang employee here> has only added things you hate.
Can I use your ideas to make this a mod?
No. I want this implemented into vanilla, but if it isn't implemented by the time the mod API comes out, I will try and make it myself. I'm a programmer, but not with Java, and I'd like the reason and project to start modding and learning Java.
What can I do to support?
Post, vote, and twitter Jeb_, or make a thread on Reddit. If you do, make sure to include the forum link.
Or, post on the epicness of this suggestion, tell me what doesn't make sense, if I should rewrite something, or request I write a little more on something. Give your friends the link. Anything.
Also: I made a getsatisfaction post. Not sure if that matters. Meh.
EDIT: I have spent a little time making a mock-up (out of my texture pack VTC, but it is heavily outdated now) of what one of these text files would look like, and the terrain.png to go with it, as an example of what you might expect to be able to do. (I will add more to this later with things like the button, fence, ect. later)
EDIT2: Both the text file and the textures are out of date, they aren't that ugly anymore :3
Corresponding text file: Mediafire
Sig it!
"I'm an outsider by choice, but not truly.
It’s the unpleasantness of the system that keeps me out.
I’d rather be in, in a good system. That’s where my discontent comes from:
being forced to choose to stay outside.
My advice: Just keep movin’ straight ahead.
Every now and then you find yourself in a different place."
-George Carlin
No. It is for texture pack makers, but certain textures derive from other textures and you cannot change them without modding. Like the buttons and stone pressure plates look like stone, fences look like wooden planks, and piston arm/head side are linked, you can only change one and both change. Get what I mean?
"I'm an outsider by choice, but not truly.
It’s the unpleasantness of the system that keeps me out.
I’d rather be in, in a good system. That’s where my discontent comes from:
being forced to choose to stay outside.
My advice: Just keep movin’ straight ahead.
Every now and then you find yourself in a different place."
-George Carlin
Also, in the meantime you should try to get MCpatcher or Optifine to include a mod like this.
That's what tile is for. Unless you meant how animations work how a block on terrain.png are labeled with a number to designate what tile, but it isn't coordinate based, just numerical. I guess tile could support that if only one number was given.
"I'm an outsider by choice, but not truly.
It’s the unpleasantness of the system that keeps me out.
I’d rather be in, in a good system. That’s where my discontent comes from:
being forced to choose to stay outside.
My advice: Just keep movin’ straight ahead.
Every now and then you find yourself in a different place."
-George Carlin
"Able to change the looks of every block, even the derivative ones, like you can of the small and large chests"?
Well... yes... and no. You could texture something with a model as advanced as the chests, however I wouldn't recommend doing so on the terrain.png that is 16x. It is would end up being 10 spots... if you're lucky.
If you're just saying the method, I would say that isn't a good explanation as it is quite different. Maybe yes if you append "in the fact that it allows users to make a better looking texture that takes up less room on the terrain.png and has more texture and does not use static textures for blocks with dynamic placement"
In other words, it fixed this:
"I'm an outsider by choice, but not truly.
It’s the unpleasantness of the system that keeps me out.
I’d rather be in, in a good system. That’s where my discontent comes from:
being forced to choose to stay outside.
My advice: Just keep movin’ straight ahead.
Every now and then you find yourself in a different place."
-George Carlin
I despise derivative textures, as it means I must create wood, cobblestone, and many other blocks with several drafts before the derivative texture, let's say a fence or step, looks aesthetically pleasing.
In all honesty, when I first saw the code, I was like "What kind of black magic sorcery is this!?", yet after you explained it, I now understand how to use this, again, if it were implemented.
If Mojang could pull this off that would be awesome.
Mostly moved on. May check back a few times a year.
Dos no one read Why can't this just be made into a mod like MCpatcher or something?
Oh, and bats don't roll, they fly. Lol
Thank you! I spent a good deal of time thinking about it. And the good thing about my idea is, say you make a texture that looks good as a derivative texture, but bad as a main texture, you could just use
(with the tile that the texture is on of course) and Minecraft would wrap it like it does wooden planks (but with the texture you choose). Quick, easy.
The thing about this idea is that it's all optional. You could go about your pack without it. Default would not employ these methods (such as grayscale on non biome blocks) nor would you be required to. If you wanted, you could just use tile to shuffle around textures. The feature is to give texture artists full control. ALL OPTIONAL. Terrain.png would either be the same thing you've been working on, or your own personal playground.
Does that help?
"I'm an outsider by choice, but not truly.
It’s the unpleasantness of the system that keeps me out.
I’d rather be in, in a good system. That’s where my discontent comes from:
being forced to choose to stay outside.
My advice: Just keep movin’ straight ahead.
Every now and then you find yourself in a different place."
-George Carlin
My wip 32x texture pack.
Also, another addition: Please make the 32X32, 64X64 and so on resolution textures compatible without the use of a patcher...
On the terrain.png. You would be able to change all of the sides of it. For example: (in 16x) The front face of the button is 6x4 pixels, top/bottom is 6x2, and left/right sides are 2x4. How did I find that? Just looked in game. You can place these custom textures wherever you want in the terrain.png, share them (like top/bottom are same, ect.) or even derive the texture from an existing texture. However, like I said you could just make a bigger texture and assign it to the whole model so you don't have to assign every face.
Thank you. Maybe I will do this, Like I would actually keep going and have the completed .txt as well as the terrain.png of when it's done.
Gif files don't work? This idea is not for animation, and even in the texture mods with animation they use .PNGs in long strips to animate.
"I'm an outsider by choice, but not truly.
It’s the unpleasantness of the system that keeps me out.
I’d rather be in, in a good system. That’s where my discontent comes from:
being forced to choose to stay outside.
My advice: Just keep movin’ straight ahead.
Every now and then you find yourself in a different place."
-George Carlin
Not really. As you could make textures derive from other places (and modify how they use it) you could free up a lot of space. Looking at my terrain.png, I estimate I will have at least 23 free spots if this idea was implemented.
I assume that you would be able to modify the fence texture using
To save space on terrain.png, you could just assign the same texture to different sides (like top & bottom boards have one, front & back share one, top and bottom are same ect.). When I say this, I mean your decision (not that being the only option).
I think the model only grabs one texture for one half of the boards (120 pixels) and that is used for all of the arms.
Does that sound fair? or do you actually want the ability to modify each arm (like the boards that go to the left, and the ones that go to the right being different)?
"I'm an outsider by choice, but not truly.
It’s the unpleasantness of the system that keeps me out.
I’d rather be in, in a good system. That’s where my discontent comes from:
being forced to choose to stay outside.
My advice: Just keep movin’ straight ahead.
Every now and then you find yourself in a different place."
-George Carlin
+1 for you good sir.
I included a sample at the bottom of the OP
"I'm an outsider by choice, but not truly.
It’s the unpleasantness of the system that keeps me out.
I’d rather be in, in a good system. That’s where my discontent comes from:
being forced to choose to stay outside.
My advice: Just keep movin’ straight ahead.
Every now and then you find yourself in a different place."
-George Carlin
Would photoshopped pictures of what the "code" in the text file accomplishes make things more clear of what they do? I would put these in the last spoiler, in another spoiler.
Also, later I'll do more with the text file and terrain.png to show how I would use this to texture buttons, levers, and fences. Maybe I might explain more about how extensions would work, and more cool extensions as well.
All I'll say for now is that It will make the Nether more cool.
"I'm an outsider by choice, but not truly.
It’s the unpleasantness of the system that keeps me out.
I’d rather be in, in a good system. That’s where my discontent comes from:
being forced to choose to stay outside.
My advice: Just keep movin’ straight ahead.
Every now and then you find yourself in a different place."
-George Carlin
Maybe I don't understand but can you not just do that when editing textures?
Well, this idea is SPECIFICALLY for textures. I'd imagine that if this was implemented, the mod wizards could look at how the implemented system works, and adapt it into something like you're saying,
But, I don't think the code you gave would even work. For one, the main extension you used would actually modify STONE, not be a new block. And second, the coordinates you used wouldn't work. You would need to use tile(7,6); .
So more realistically, the code would probably look like:
(diamonds are called emerald in the code as that's what they used to be called)
Please note, I'm not advocating this idea in any way, and I think trying to MAKE blocks using similar methods to my idea would be too complex when it comes to things like vein size and shape, spawning underground, spawning in cave systems, determining what a sapling grows into, ect. I think this would much more easily done with just modding, or with a mod maker. Plus... the the idea seems overpowered, and I'm not even sure dropping lava would do what you think it will... I think it would actually drop it as an item that you would be able to place, showed as a square with the lava animation (like you see on TMI). Making it spawn a lava source when broken would be a bit more complex as well.
That's pretty much the idea, yes. Well, as it is you edit terrain.png and Minecraft reads textures from specific places on terrain.png, and uses some of those textures for other things, that texture artists cannot otherwise change separately from the block the texture originally derives from. Like fences, fences get their texture from the original wooden planks' texture, and Minecraft wraps it using parts of that block's texture.
With my idea, texture pack creators would not only be able to change the terrain.png, but also change how it is read by Minecraft as well, including giving derivative textures their own textures.
"I'm an outsider by choice, but not truly.
It’s the unpleasantness of the system that keeps me out.
I’d rather be in, in a good system. That’s where my discontent comes from:
being forced to choose to stay outside.
My advice: Just keep movin’ straight ahead.
Every now and then you find yourself in a different place."
-George Carlin