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: 1160
Follow Unfollow 47

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


[Discord][Buy Me A Coffee]

I'm living in Ukraine and there is war happening right now. Most of my free time I spend on modding when I get a few hours between electricity blackouts.
If you love my work, you can support me on Patreon, I would greatly appreciate it ❤️. Donations keep me doing what I truly love - modding.


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

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

17 Comments (oldest first | newest first)

💬 TheAmethyst, Aug 4th at 7:19 PM

DanaCraluminum

 

Running on 64 bit Windows 10.0.22631.0 with 32621 MB RAM
Game Version: v1.19.8 (Stable)
8/3/2024 3:17:09 PM: Critical error occurred
Loaded Mods: abandonedkingdom@0.0.4, autopanning@1.0.1, bettertraders@0.0.7, buzzwords@1.7.0, cavecontent@1.0.1, crazyskincustomization@1.0.0, extraclayforming@1.0.0, HangingOilLamps@1.0.1, immersivecorpsedrop@1.0.2, juicyores@1.0.0, justmoreruins@0.9.8, MoreTorchHolders@1.0.0, nocharcoallost@1.0.0, quickleatherproduction@1.1.0, roas@1.0.0, shearsspeedscales@1.0.0, temporal_gears_stack@1.0.0, traderballoonsmod@1.0.0, usefuldrifterloot@1.1.0, Vanilla_PlusWorldGen@1.3.5, volumetricshadingreupdated@0.7.5, game@1.19.8, weedbegone@1.0.0, zoombuttonreborn@1.8.0, accessibilitytweaks@3.7.1, ancienttools@1.5.18, egocaribautomapmarkers@3.1.0, betterfirepit@1.1.4, betterruins@0.3.7, biggercellars@1.0.0, carryon@1.7.4, Clumps@1.0.0, commonlib@2.5.0-rc.2, creaturekilledby@1.0.0, danatweaks@2.3.0, doubleslabs@0.1.1, extrainfo@1.8.0, hit@2.1.1, hudclock@3.4.0, knapster@2.10.0, maltiezbows@1.0.4, mif@1.0.1, natsachievements@1.1.0, particlesplus@1.1.0, playerlist@2.1.4, rivers@3.1.0, simplefootstepsredux@1.0.0, stickemup@1.1.0, targetDotSmall@1.1.0, th3dungeon@0.2.1, trailmod@1.0.8, versionchecker@1.0.0, vtpp@1.1.1, creative@1.19.8, vsimgui@1.1.5, survival@1.19.8, vsvillage@1.0.6, awearablelight@1.1.1, tradercamps@1.1.4, configlib@1.3.13, extraoverlays@1.4.0, sleekdoorglass@1.0.0, pickupartist@0.2.0, playercorpse@1.10.1-rc.1, simplevillages@1.0.1, th3dungeontopentrance@0.1.1, vsvillagedesert@1.0.0, vsvillageviking@1.0.0, vsvillageaged@0.0.4, vsvillageindustrial@0.0.4, vsvillagetowers@0.0.4, xinvtweaks@1.6.6
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 237
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_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
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, Aug 4th at 8:51 AM

TheAmethyst Please do that either here or on discord, I don't respond on forums

💬 TheAmethyst, Aug 3rd at 9:46 PM

DanaCraluminum I tagged you in a fourm post under "Vintarian Support" which includes the crash log. I don't belive the crash log provides much help though.

💬 DanaCraluminumAuthor, Aug 3rd at 9:18 PM

TheAmethyst Send crash 

💬 TheAmethyst, Aug 3rd at 8:36 PM

Right clicking on glass slabs with this mod installed, causes the texture to change, unloading the chunks makes the slabs that were right clicked on and any slabs placed/connected to said slabs invisible. Trying to break any of these invisible slabs crashes the game. I've only tested with glass slabs. DanaCraluminum

💬 LunaGore, Jun 27th at 7:55 PM

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, Jun 24th at 4:29 AM

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, Jun 22nd at 8:42 AM

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)