Mods / Double Slabs

Category: #QoL #Tweak #Utility
Author: DanaCraluminum
Side: Both
Created: Jun 14th at 11:44 AM
Last modified: Jun 17th at 7:23 AM
Downloads: 497
Follow Unfollow 28

Latest file for Various v1.19.x:
DoubleSlabs-v0.1.1.zip 1-click install


[Discord][Buy Me A Coffee]

Ever wanted to combine two slabs together without chiseling? Well, now you can!

Wooden, stone, ceramic, even glass! All kinds of slabs can be easily combined together!

Combined slabs use the first placed slab as main block, thus there are no new blocks, items or any absurd conversion recipes!

They affect performance as much as chiseled block from exactly the same slabs.

Last added slab has its own handling of interactions when is selected. It uses flipped orientation of original slab.

I don't care that these can be chiseled in vanilla.

The mod is practically identical to Double Slabs minecraft mod, except I wrote it entirely from scratch since I have absolutely no idea where to find their source code.

Features:

  • Combine two slabs
  • Supports all vanilla slabs
  • Supports slabs from all mods (including Bricklayers)
  • Cellar support
  • Separate selections and collisions for each combined slab
  • Break only slab you're looking at
  • Middle-click in creative gives only slab you're looking at
  • Attach anything to combined slabs
  • Combined slabs don't let liquids pass through, but can keep them inside

Roadmap:

  • Chiseling support
  • World edit support
  • Use Block class instead BlockBehavior

Known issues:

  • Combined slab sounds are incosistent in creative game mode
  • Glass rendering
  • Combined slabs drop last slab when chiseled or moved with worldedit

If you love my work, you can support me on Patreon, I would greatly appreciate it ❤️, since I invest significant amount of time into modding. Donations encourage me to make new mods and update old ones more often.

Version For Game version Downloads Release date Changelog Download 1-click mod install*
v0.1.1 311 Jun 17th at 7:23 AM Show DoubleSlabs-v0.1.1.zip Install now
v0.1.0 186 Jun 14th at 6:37 PM Show DoubleSlabs-v0.1.0.zip Install now

12 Comments (oldest first | newest first)

💬 LunaGore, 1 day ago

I'm also seeing issues with horizontal slabs, it happens with all cobble types I've encountered (slate, shale, and andesite). Happens when I purposefully select "horizontal" before placing them.

💬 Moonbyes, 5 days ago

DanaCraluminum yup, it has happened multiple times. i can't tell what exactly causes it. they start out normal when i load the world but i'll be doing my thing, and then notice that the red shingle slabs on my windmill have gone invisible again. replicated the crash a second time, but otherwise i have just let them stay invisible.

💬 DanaCraluminumAuthor, 6 days ago

Moonbyes Are you able to consistently reproduce it?

💬 Moonbyes, Jun 22nd at 12:10 AM

invisible horizontal slabs (they were specifically red shingle) and trying to break one crashed my game:


System.NullReferenceException: Object reference not set to an instance of an object.
at Vintagestory.Client.NoObf.SystemRenderDecals.UpdateDecal(BlockDecal decal) in VintagestoryLib\Client\Systems\Render\RenderDecals.cs:line 251
at Vintagestory.Client.NoObf.SystemRenderDecals.AddBlockBreakDecal(BlockPos pos, Int32 stage) in VintagestoryLib\Client\Systems\Render\RenderDecals.cs:line 244
at Vintagestory.Client.NoObf.SystemRenderDecals.OnPlayerBreakingBlock(BlockDamage blockDamage) in VintagestoryLib\Client\Systems\Render\RenderDecals.cs:line 207
at Vintagestory.Client.NoObf.ClientEventManager.TriggerBlockBreaking(BlockDamage blockDamage) in VintagestoryLib\Client\Util\ClientEventManager.cs:line 382
at Vintagestory.Client.NoObf.SystemMouseInWorldInteractions.ContinueBreakSurvival(BlockSelection blockSelection, Block block, Single dt) in VintagestoryLib\Client\Systems\Player\MouseInWorldInteractions.cs:line 795
at Vintagestory.Client.NoObf.SystemMouseInWorldInteractions.HandleMouseInteractionsBlockSelected(Single dt) in VintagestoryLib\Client\Systems\Player\MouseInWorldInteractions.cs:line 444
at Vintagestory.Client.NoObf.SystemMouseInWorldInteractions.OnFinalizeFrame(Single dt) in VintagestoryLib\Client\Systems\Player\MouseInWorldInteractions.cs:line 89
at Vintagestory.Client.NoObf.ClientEventManager.TriggerRenderStage(EnumRenderStage stage, Single dt) in VintagestoryLib\Client\Util\ClientEventManager.cs:line 186
at Vintagestory.Client.NoObf.ClientMain.TriggerRenderStage(EnumRenderStage stage, Single dt) in VintagestoryLib\Client\ClientMain.cs:line 809
at Vintagestory.Client.NoObf.ClientMain.RenderToDefaultFramebuffer(Single dt) in VintagestoryLib\Client\ClientMain.cs:line 1013
at Vintagestory.Client.ScreenManager.Render(Single dt) in VintagestoryLib\Client\ScreenManager.cs:line 676
at Vintagestory.Client.ScreenManager.OnNewFrame(Single dt) in VintagestoryLib\Client\ScreenManager.cs:line 651
at Vintagestory.Client.NoObf.ClientPlatformWindows.window_RenderFrame_Patch0(ClientPlatformWindows this, FrameEventArgs e)
at OpenTK.Windowing.Desktop.GameWindow.Run()
at Vintagestory.Client.ClientProgram.Start(ClientProgramArgs args, String[] rawArgs) in VintagestoryLib\Client\ClientProgram.cs:line 324
at Vintagestory.Client.ClientProgram.<>c__DisplayClass9_0.<.ctor>b__1() in VintagestoryLib\Client\ClientProgram.cs:line 128
at Vintagestory.ClientNative.CrashReporter.Start(ThreadStart start) in VintagestoryLib\Client\ClientPlatform\ClientNative\CrashReporter.cs:line 93

💬 DanaCraluminumAuthor, Jun 21st at 9:08 AM

gndrneutralnoun Thank you

💬 gndrneutralnoun, Jun 20th at 5:49 PM

Bless you, Dana. You're the real MVP.

💬 DanaCraluminumAuthor, Jun 17th at 7:24 AM

Horsekoch Fixed

💬 Horsekoch, Jun 16th at 10:48 PM

Game crashes when right-clicking on a vertical slab, with an empty hand.

Game Version: v1.19.8 (Stable)

...
System.NullReferenceException: Object reference not set to an instance of an object.
at DoubleSlabs.ItemSlotSlab.CanTakeFrom(ItemSlot sourceSlot, EnumMergePriority priority) in D:\VSCode\Repos\Modding_VintageStory\DoubleSlabs\src\Inventory\ItemSlotSlab.cs:line 13
at Vintagestory.API.Common.ItemSlot.TryPutInto(ItemSlot sinkSlot, ItemStackMoveOperation& op) in VintagestoryApi\Common\Inventory\ItemSlot.cs:line 229
at Vintagestory.API.Common.ItemSlot.TryPutInto(IWorldAccessor world, ItemSlot sinkSlot, Int32 quantity) in VintagestoryApi\Common\Inventory\ItemSlot.cs:line 176
at DoubleSlabs.BEBehaviorDoubleSlab.TryPut(ItemSlot slot, IPlayer player) in D:\VSCode\Repos\Modding_VintageStory\DoubleSlabs\src\BlockEntityBehavior\BEBehaviorDoubleSlab.cs:line 89
at DoubleSlabs.BlockBehaviorDoubleSlab.OnBlockInteractStart(IWorldAccessor world, IPlayer byPlayer, BlockSelection blockSel, EnumHandling& handling) in D:\VSCode\Repos\Modding_VintageStory\DoubleSlabs\src\BlockBehavior\BlockBehaviorDoubleSlab.cs:line 73
at Vintagestory.API.Common.Block.OnBlockInteractStart(IWorldAccessor world, IPlayer byPlayer, BlockSelection blockSel) in VintagestoryApi\Common\Collectible\Block\Block.cs:line 1374
at Vintagestory.Client.NoObf.SystemMouseInWorldInteractions.TryBeginUseBlock(Block selectedBlock, BlockSelection blockSelection) in VintagestoryLib\Client\Systems\Player\MouseInWorldInteractions.cs:line 885
at Vintagestory.Client.NoObf.SystemMouseInWorldInteractions.HandleMouseInteractionsBlockSelected_Patch1(SystemMouseInWorldInteractions this, Single dt)
at Vintagestory.Client.NoObf.SystemMouseInWorldInteractions.OnFinalizeFrame(Single dt) in VintagestoryLib\Client\Systems\Player\MouseInWorldInteractions.cs:line 89
at Vintagestory.Client.NoObf.ClientEventManager.TriggerRenderStage(EnumRenderStage stage, Single dt) in VintagestoryLib\Client\Util\ClientEventManager.cs:line 186
at Vintagestory.Client.NoObf.ClientMain.TriggerRenderStage(EnumRenderStage stage, Single dt) in VintagestoryLib\Client\ClientMain.cs:line 809
at Vintagestory.Client.NoObf.ClientMain.RenderToDefaultFramebuffer(Single dt) in VintagestoryLib\Client\ClientMain.cs:line 1013
at Vintagestory.Client.ScreenManager.Render(Single dt) in VintagestoryLib\Client\ScreenManager.cs:line 676
at Vintagestory.Client.ScreenManager.OnNewFrame(Single dt) in VintagestoryLib\Client\ScreenManager.cs:line 651
at Vintagestory.Client.NoObf.ClientPlatformWindows.window_RenderFrame(FrameEventArgs e) in VintagestoryLib\Client\ClientPlatform\GameWindow.cs:line 88
...

💬 DanaCraluminumAuthor, Jun 15th at 9:35 AM

Fatigue I don't have plans for this 

💬 Fatigue, Jun 15th at 7:22 AM

What could make this mod even more awesome would be the ability to place items / lean items against walls on half slabs. I'm building Japanese style houses on half slabs right now with decorative tables that are full bocks that are pretend half slabs, but being able to put down crocks or bowls on half slabs- Or even full blocks somehow (beds, chests) would be insane. I understand though that putting a full block a half step out of place would completely mess up the grid system, but shelvable items would be a godsend. Love this mod, hope our server adds it.

💬 Rythillian, Jun 15th at 5:34 AM

Woah

💬 CKitt, Jun 14th at 7:25 PM

Oh, man! That immediately appeals to me. Thanks very much for making this!

(edit comment delete)