maruohon / litematica

A modern client-side schematic mod for Minecraft
GNU Lesser General Public License v3.0
723 stars 217 forks source link

how to keep the facing when placing using easy place mode? in any direction #215

Open gurachan opened 4 years ago

gurachan commented 4 years ago

sorry for bothering.. For example this placing a stair. could be nice if the facing is automated.. since schematic data knows where it facing.. and the client also shows what it's facing and reason for turning orange.
image

maruohon commented 4 years ago

The Easy Place mode does already request the proper facing, but currently it relies on other mods to do the rotation. In single player you just need the Tweakeroo mod installed to handle it, but the required code will also get added to Litematica directly when I have the chance to work on it at some point. On a server currently you would need either the QuickCarpet mod or FabricCarpet + CarpetExtra on the server, and the accurateBlockPlacement rule enabled in Carpet.

There are currently however also some bugs in the rotation code, which makes it mess up especially stair placement in some cases even if the above mentioned supporting mods are present.

gurachan commented 4 years ago

ow i will wait for the update :) thanks for your work btw i will add this .. i feel this should be ignored and dont turn orange.. i have to retry and retry until it works. it does work when u finally found its sweet spot..

image image

by placing it like this works most of the time .. its kinda strict

image

maruohon commented 4 years ago

As far as the mod is concerned, those are different block states, so it highlights it to indicate that what is in the world is not the same state that exist in the schematic. There won't be any hard coded messy exceptions to this in the mod directly. But there is a new system planned to solve this issue, by allowing the user to define "valid substitutes".

SunSerega commented 4 years ago

i have to retry and retry until it works

There isn't much to retry. You only have 2 possibilities here:

image image

Red arrow is the way you look and blue sub-block is what's added only because of surrounding stair blocks. And no, it doesn't make a difference if you look more down when placing stair. That was just luck.

I personally never deal with this issue, because when building in creative i prioritize 1 direction over other, so when rebuilding in survival i always know which one is right.

somekoder commented 3 years ago

Hey there. Any server side mods to make this work on the 1.16.5 forge port?

maruohon commented 3 years ago

Assuming the server is also running Forge, then currently I'm not aware of any, unless someone has made Carpet mod ports for Forge?

My Servux mod will likely also get Forge ports, once it actually gets more stuff like the placement protocol support. (Currently it only sends the structure bounding box data for MiniHUD.)

somekoder commented 3 years ago

Yeah unfortunately the server is using Forge mods making this a little harder, but I'll poke around for a Carpet Mod port, thank you and I look forward to all the updates you're planning! :D

maruohon commented 3 years ago

Well porting the entire Carpet mod if you just need this feature would be a ton of extra work "for nothing". Just implementing the placement protocol would be a very simple and tiny mod.

somekoder commented 3 years ago

I 100% agree, and I'd offer my help on porting but sadly I know nothing about mod development :( I poked around online and couldn't find a Carpet port anyways. I guess I'll wait until someone ports your servux mod to Forge

maruohon commented 3 years ago

Well, here is a port of Servux, with the accurate placement protocol added: https://masa.dy.fi/mcmods/servux/servux-forge-1.16.5-0.2.0.jar

somekoder commented 3 years ago

Thank you so much! You got that done really fast and I appreciate it😃 I will test it out tomorrow for sure, should I also install this client side or only server side?

maruohon commented 3 years ago

Servux is purely a server-side mod. The client mods can do anything they need by themselves on the client side.

WildWestDan commented 2 years ago

As far as the mod is concerned, those are different block states, so it highlights it to indicate that what is in the world is not the same state that exist in the schematic. There won't be any hard coded messy exceptions to this in the mod directly. But there is a new system planned to solve this issue, by allowing the user to define "valid substitutes".

Did the valid substitutes option ever get added? I don't see it, but sometimes I'm blind... LOVE the work you've done on this!

maruohon commented 2 years ago

@WildWestDan No I haven't had time to work on it yet.

I've recently finally ported the 1.12.2 Litematica code base to work with the rewritten malilib code base that I worked on over the past couple of years, and I'm now beginning to clean up the Litematica code and also add new features to it again. There was basically nothing new added or any work happening on the 1.12.2 version of Litematica in almost two years (since early 2020). And the 1.12.2 LiteLoader branch is the version where any major new systems like the valid substitutes system would get added to. No major/complex new systems or changes will be done directly to the 1.13+ versions. So now there is at least a chance that the valid substitutes system might get some work done over the next few months, depending on what mods and features I end up working on and in which order.

WildWestDan commented 2 years ago

No worries! I have a lot of roofs in my build and I didn't know about quick-build mode, so like 50% of them are yellow and I'm just ignoring them. It's not at all a big deal, just a minor inconvenience. I love how much this thing can do though, it's REALLY helped me out!! <3

LeAkuma commented 1 year ago

Well, here is a port of Servux, with the accurate placement protocol added: https://masa.dy.fi/mcmods/servux/servux-forge-1.16.5-0.2.0.jar

Is this available for 1.19.2 too?

maruohon commented 1 year ago

@LeAkuma I had totally forgotten I had even made such a temporary Forge port with that feature... So no I haven't updated it. Hopefully there will be "proper" Forge ports at some point, if I could manage to make some progress on the main development version and add the planned missing stuff.

LeAkuma commented 1 year ago

@LeAkuma I had totally forgotten I had even made such a temporary Forge port with that feature... So no I haven't updated it. Hopefully there will be "proper" Forge ports at some point, if I could manage to make some progress on the main development version and add the planned missing stuff.

That would be REALLY nice since i do a lot of redstone buildings and i really need the accurateBlockplacement but lets see yeah. Thanks btw.

Edit: btw do you know any other Forge ports? i cant find any for 1.19.2 sadly...

iLuvMaicraft commented 1 year ago

The Easy Place mode does already request the proper facing, but currently it relies on other mods to do the rotation. In single player you just need the Tweakeroo mod installed to handle it, but the required code will also get added to Litematica directly when I have the chance to work on it at some point. On a server currently you would need either the QuickCarpet mod or FabricCarpet + CarpetExtra on the server, and the accurateBlockPlacement rule enabled in Carpet.

There are currently however also some bugs in the rotation code, which makes it mess up especially stair placement in some cases even if the above mentioned supporting mods are present.

so, I have added FabricCarpet and CarpetExtra to my server and my mods folder, set accurateblockplacement to true, and it still doesn't work, what can I do? ( btw I use version 1.19.2 )

maruohon commented 1 year ago

@iLuvMaicraft The Carpet and CarpetExtra mods and that rule are only and specifically needed on the server side in a multiplayer scenario.

When the server has them, then things should mostly work, as long as you have the appropriate configs enabled in Tweakeroo and Litematica:

iLuvMaicraft commented 1 year ago

@iLuvMaicraft The Carpet and CarpetExtra mods and that rule are only and specifically needed on the server side in a multiplayer scenario.

When the server has them, then things should mostly work, as long as you have the appropriate configs enabled in Tweakeroo and Litematica:

  • In Tweakeroo the main option would be the Generic -> carpetAccuratePlacementProtocol option being enabled
  • In Litematica for the Easy place mode you may need to change the Generic -> easyPlaceProtocolVersion option to v2, if the default Auto value doesn't work. (Sometimes Litematica can't detect Carpet on the server, so then it won't switch to v2 when in the Auto mode, but will just use Slabs Only as a fall-back.)

ohhh.. makes sense now, i had litematica easyPlaceProtocolVersion set to auto, thanks man

ItsGlucose commented 1 year ago

Well, here is a port of Servux, with the accurate placement protocol added: https://masa.dy.fi/mcmods/servux/servux-forge-1.16.5-0.2.0.jar

Would you mind to add accurate placement protocol to servux fabric? I know QuickCarpet and CarpetExtra has this feature but both of them are banned on some server hosting services like aternos. Servux is accepted and i would appreciate that if you add it.

maruohon commented 1 year ago

@ItsGlucose The Accurate Placement Protocol has always been planned to be included in Servux. So it's definitely coming there at some point, basically together when the big mod rewrites from 1.12.2 get ported to the latest MC versions.

The 1.12.2 Servux port I have (basically just for myself) already has the placement protocol, so that I can use it on my 1.12.2 server which doesn't use Carpet mod. I just haven't added any new features to the 1.14+ versions since the first release that added the structure bounding boxes, because all major new development is supposed to happen in 1.12.2 first, as that is still the main development branch of the client mods. Otherwise I would need to do a bunch of unnecessary extra work porting stuff back and forth between versions if I first need to backport stuff from the later versions to the main development branch in 1.12.2, and then port it forward again to get all the new stuff from 1.12.2 to the later versions.

So TL;DR; is that yes it's coming, but no real ETA. We are likely talking several months at least still before things in 1.12.2 get ready enough for stuff to get properly ported forward. There will likely be "unofficial testing ports" of the client mods plus Servux long before the next "official big updates" happen, with varying feature sets and on-going development. Those will be mentioned on the mod-updates channel on my Discord server if/when they become available.

XenoWang commented 10 months ago

Well, here is a port of Servux, with the accurate placement protocol added: https://masa.dy.fi/mcmods/servux/servux-forge-1.16.5-0.2.0.jar

Hello, I am playing a forge server with my friends on minecraft version 1.16.5, may I know for the accurate block placement to work with servux, do I need to do the accurate block placement command similar to carpet mod accurate block placement? Because right now it is not functioning as expected on the server, thanks.

maruohon commented 10 months ago

That Servux version still doesn't have any configs, I'm pretty sure. So the accurate placement support should be enabled by default. But Litematica currently has no way to detect that Servux version, so you need to manually force the easyPlaceProtocolVersion option to Version 2 (or did that Servux version support Version 3? I don't remember at all...). But don't forget that option on that setting for single player or other servers, as then you'll get "problems" (ghost blocks or worse support in single player). Although now that I think about it... 1.16.5. Did that version even have the protocol version config yet? Pretty sure it didn't support Version 3 yet at least.

Martmists-GH commented 9 months ago

Are there any plans to add the feature to Servux for Fabric? Adding all of Carpet + Carpet Extra seems a bit much (especially when it conflicts with other mods)

maruohon commented 9 months ago

Yes it has always been planned for Servux. It will likely get added there once the client mod releases based on the newer "post-rewrite" code come out at some point.

I've been adding some of the planned features to the 1.12.2 Legacy-Fabric version of Servux, and more features are going to be added as one of the next things when I have time to work on stuff again. That version also already has accurate block placement protocol support, although I don't remember if it's only "v2" atm, I think so.