roberttkahelin8 / thingmajigs

A mod that adds decorations to your Minecraft Worlds.
Other
1 stars 1 forks source link

Railing Curb for Bridge Railing to adjust the bridge railing model's position #16

Closed kazumadh closed 5 months ago

kazumadh commented 5 months ago

First of all, I would like to thank you for having implemented my ideas into your mod. But there is something about the bridge railing that needs to be improved. And yes, like the title said, the Railing Curb for bridge railing.

Let's have a look at this situation, I want to build a bridge with 2 sidewalks, which are 1/4 block (250 mm) higher than the road's surface like bridges IRL (I use a mod called Little Tiles to build the sidewalk). 2024-07-01_10 22 10 To connect the railings to the sidewalk, I need to build a block higher than the road's surface as a "curb", so the height of the railing measured from the top of the side walk is 750 + 1000 = 1750 mm. IRL this height is too high since it blocks people's view from the bridge. The most reasonable height for the railing should be 1250 mm (1 and 1/4 block), this mean I have to reduce the "curb"'s height by 1/2 block (500 mm). In the picture below, the sidewalk's height is raised to illustrate the railing's height should be 2024-07-01_11 15 40 You may say that the way to fix is increase the sidewalk's height to 3/4 blocks and place half-slabs on the road's surface. But I want the Y coordinate of the road's surface is an Interger so that I can place stuffs on road without seeing them floating. Also, you can't paint the half-slab asphalt blocks. Okay, so let's talk about the Railing Curb, it has a shape of the vertical half-slab and has the texture of the concrete block or its other variants like cobble or brick or maybe it's a "template block" which gets texture from the block you like by right-clicking on it while holding the block. 2024-07-01_12 25 58 We need a tool to decrease/increase the height of it from top or below, every click will increase/decrease its height by 1 standard pixel (minecraft's standard block texture is 16 pixels x 16 pixels). You can't neither decrease its height when it's only 1 pixel thick nor increase when it's 1 block height. When placing the railing on the curb, it will adjust its position to match the curb's top surface. The moddified parts need to be stored in NBT data, so you can hold Ctrl+Middle Click to pick the moddified curb up and build as you like. If you break the curb, the railing will readjust again. 2024-07-01_16 33 58 Looking forward to your response

roberttkahelin8 commented 5 months ago

Hey there, @kazumadh. Based on your detailed specifics, I can see that this feature will take significantly longer than usual. As such, I give no promises on completion/time right now, but your feature is on the list now (I'm working with 2 modloaders so the original mod gets a bit more priority since it's more noticed then the alternative Neo version, but again I have no extra coding power so I'm somewhat slower than everyone else).

Thingamajigs isn't about realism, but I do try to accommodate when possible (e.g. if someone suggests a feature, I'll try to get it working as intended, but anything beyond that is special and needs time so that it's done right, and some features I've stated will never be added in the mod, due to a million reasons). Your feature is something that has been done before, and should be done again.

I am reading that you want the bridge railing block to be height adjustable in a sense of changing the model and the collision shape (sidewalk appearing as it increases in height?), save height to an item form, and perhaps add some sort of equivalent block to smoothly end off the pieces at the edge of the bridge on either side.

Does the bridge railing need to go up further than 3 blocks in model form? If not, this makes the feature a bit more doable. And does the block need to support negative height (the railing goes further down than a block)? I think not a single 'updated' mod does this anymore, which would make it a cool feature.

And is this the design of bridge your going for? A graph-ish thingy (side view of bridge with potential intended look): r: asphalt road block s: sidewalk block p: partial sidewalk block b: bridge railing block

bp\s\s\s\s\s\s\s\spb sssssrrrrrrrrrrsssss

instead of:

b\s\s\s\s\s\s\s\s\sb sp\s\s\s\s\s\s\s\sps sssssrrrrrrrrrrsssss

I made that primitive graph as I think you want the partial sidewalk and bridge barrier to line up grid wise, which many mods had trouble supporting due to mods adding non-full and partial block sizes. I can't use multiblocks as they were removed from modloaders a long time ago, and other mods just recreated them (the only thing I can do is waterlogging, because it's built in, I also have trouble with models that require blockentities, as I can never get them to line up exactly, etc, etc. there are more issues I don't want to go into detail here).

Now, about those asphalt blocks: They were a pain to get working in the first place just with 4 ages and 3 variants of paint alone. The paintbrush items are what you could use in this instance (what's shown in the first image), as paintbrushes save their data and also show what they will paint (i'm not sure if many people know about the paintbrushes' functionality). The amount of paint variants * 4 road ages basically made it implausible to continue, hence why the paintbrushes are the only way right now. Road slabs were going to have lines because of the issue you can see in the first image.

The White, Blue, and Yellow paintbrushes have a tutorial video, not sure if you knew about it, if you did and it wasn't a satisfactory feature, then I can understand why. At some point in the past, it was planned to make paintbrushes change asphalt directly, however the feature wasn't working as intended, and paint was actually it's own separate block using blockstates. Paint blocks don't attach to any blocks, they are like carpets, but flat. This will have to be changed (at some point), because it's starting to annoy me with my road builds.

Anyways, at some point the asphalt may be overhauled to address these "simple at first glance issues". Please comment again if you have any questions about code and such.

kazumadh commented 5 months ago

Thanks for your response. About the adjustment of the bridge railing. To simply put, when you place the railing curb down, it's 1-block high at first. Now I use a tool, look at its upper surface and click on it to lower the top of the curb by 1 pixel (decrease the curb's thickness, not reposition it) (16 pixels high = 1 block), the railing will automatically go down by 1 pixel. And then if I look at its lower surface and click on it, the thickness will decrease by 1 pixel from the bottom, but the railing doesn't go down since the top surface doesn't get affected. I will call this method "Find Surface Below It" (FSBI) As you know very well that most blocks/models only stand on the top of normal 1x1x1 block, which means that if you place a block/model on a bottom half slab, it will float as if the half-slab is placed at the top. But with this method, if you place a block/model right on a bottom half slab, it will find the surface of the bottom half-slab and stand on it. Speaking of your pain about the asphalt blocks, FSBI will be very necessary for you. Road paints will automatically find the asphalt's surface and stand on it. You only need to have various heights of these asphalt blocks if you succeed. You said that this feature has been done before? You mean you have created something like FSBI, don't you? Looking forward to your answer.

roberttkahelin8 commented 5 months ago

In regards to the "feature seen/done before" that I mentioned, I think some old mod did some feature similar but I'm not certain in what way or what the title of the mod was. In regards to the railing details, thank you for the clarified details, it helps quite a bit.

So the railings just attach to the block they are placed on so they look seamless then right? That could be done by replacing the block at that position with a custom one (or by adding a state to the railings themselves, however dynamic models would be challenging as I've not done them before).

As in, I would click on the slab, and the railing would be on top of the slab as if one singular block (or is a singular block?), and would be visually on top of the slab. Which wouldn't be resizing or repositioning the model... but replacing a block with another block... if that's what you mean in this case.

Lower Slab + Railing => Lower Slab Railing

Back to the asphalt blocks; The asphalt blocks are currently 2 things. One block for a road without paint, and one with paint. The paintbrush places a separate block called RoadMarking. So perhaps the new method would combine the blocks into a single feature, the paint brush, allowing the paint brush to paint on top of blocks and convert blocks into painted variants, or just convert them into variants only? The paintbrush currently uses shift to change type, and right click to place paint on top of a block only. Perhaps changing right click to instead change asphalt without placing any paint on top..? Would like to hear thoughts on this.

roberttkahelin8 commented 5 months ago

Heres an example of what I think your getting at in terms of resizing or placing the rail on top of the slab:

slabrailing
roberttkahelin8 commented 5 months ago

And here is a 1 pixel high variation:

1pixelhighvar
roberttkahelin8 commented 5 months ago

More about railings: The railing is at 0 already, so it would change depending on the height of the block you click on right? E.g.: Half-slab it would be 8 pixels offset block. Trapdoor height blocks would be 2-3 pixels offset block, and so on. These 'offset blocks' would be separately registered blocks, instead of block states. Also, what tool should control this behavior? I'm trying to clarify as much stuff as possible so the feature is correct on release time.

More about roads and their markings: I'm thinking that RoadMarkings will have to be like glow-lichen/vines, which can attach to any side of a block.

kazumadh commented 5 months ago

Okay, let me summarize my idea to be as understandable as possible.

  1. About the railing: Non-full blocks like half-slabs, carpets or trapdoors have fixed height. Railings need to stand right on their upper surface, no tool will interfere in this behavior. Pic 1: This is how the railing should be when it's placed on non-full block. 2024-07-02_06 47 02
  2. About the Curb that can adjust height: I use a mod called Little Tiles to illustrate this idea as percisely as possible. I build a vertical half-slab as an initial shape of the Curb. I use a tool to adjust its height from top or bottom. The railings only need to stand on the upper surface of the curb. https://github.com/roberttkahelin8/thingmajigs/assets/140326816/6f75bf78-1741-405b-b189-a9ea2a95c1aa
  3. About the paints on half-slab asphalt: You say that road paints are like carpets, don't you? The only thing you need to do is make the paints stand on Non-full blocks like railings do (as shown in pic 1). I actually don't want you to spend a large amount of time just to redraw the texture of those asphalt slabs to match with those countless road markings. Looking forward to your response if there is something more to make clear.
roberttkahelin8 commented 5 months ago

Alright I have this idea set I think now, but like another suggestion, there are issues with the mod itself addressed here: https://github.com/roberttkahelin8/thingmajigs/issues/18#issuecomment-2202912446

This issue seems to involve specifics with LittleTiles-like functionality, and multiblock systems in general, multiblock of which has not been in many mods for years because of it's complexity and not being a standard implementation in the game or any modloader for years, something this mod cannot do right now or for many versions. It may have to be done by an addon mod due to the complexity of this request.

Don't take these words as a "never will be implemented" or "i don't care"; more-so, it is a request/call for other modders to allow any mod's content to seamlessly work with these multiblock systems (and to allow individual modded' elements to inherit this ability to be placed any way on any block without a bunch of hassle).

I'm closing this issue and putting this idea in the backlog as a result. Thank you for your suggestion, it is quite appreciated.