3D PRINTER IN MINECRAFT

แชร์
ฝัง
  • เผยแพร่เมื่อ 21 ส.ค. 2024
  • !! IMPORTANT UPDATE !!
    Check the comment section for my top comment! The printer now works with stair shapes and such but THE VIDEO DOES NOT REFLECT THIS CHANGE. If you actually use the datapack in the description, it will print your blocks properly.
    Hey everyone, it is been a little while since my last upload. Thanks for your patience!
    Today I made a working 3D printer using the block display entities so you can shrink your builds into a single block! As always, this is 100% vanilla Minecraft, no mods or even resource packs this time. Feel free to post anything you make with this printer, but please tag me! I would love to see what y'all come up with.
    Datapack download (make sure you unzip it and grab the folder from inside to put in your world!):
    www.mediafire....
    Instagram: roakomc
    Music:
    Spelunky HD OST
    Spelunky 2 OST
    Battleblock Theater OST
    Hollow Knight OST

ความคิดเห็น • 85

  • @Roako
    @Roako  5 หลายเดือนก่อน +12

    UPDATE: I saw that a lot of were telling me to use macros to make the printer more dynamic, which I really appreciate! I can't believe I didn't try that before, I didn't even know what macros were. Anyways I did it for some blocks like stairs, doors, slabs, and logs. However, I once again became lazy and didn't bother doing it for every block property (who is really going to notice that a beehive doesn't have the proper level of honey spilling out of it). But I updated the datapack link in the description to have the new version that can print different block shapes. Give it a try! www.mediafire.com/file/j1hfjwft80d4oox/shrink.zip/file

    • @ItsAMeEpic
      @ItsAMeEpic 2 หลายเดือนก่อน

      You man is future me... I think! cuz I love making command block projects but I've never been that good to make datapacks that look like this keypads pianos you are like I love your projects dude keep up! and I think I have an idea since you made keybads and and the whole band thing were you helped someone in a drum thing and the piano and a WORKING CLOCK TOWER you are so good thank you for entertaining us!
      Edit: also I have a little thing you can try
      /data
      for blocks and you may make it WAY EASIER instead of just copying and pasting the block entity data like the way the stairs are facing for example and it also works for all the blocks like the customizable blocks only like slabs stairs banners crops dispensers chests and more actually you can just copy the data with 1 or a few commands instead of checking if a block has the data whatever

  • @hollowedraven5544
    @hollowedraven5544 6 หลายเดือนก่อน +68

    Honestly that isn't that small, its pretty average.

    • @xodriel
      @xodriel 6 หลายเดือนก่อน +2

      actually that quite big since it's around 25cm considering a block = 1m

    • @maxifire32
      @maxifire32 6 หลายเดือนก่อน +4

      That's what she said

    • @szupertntakos5000
      @szupertntakos5000 5 หลายเดือนก่อน +6

      Wait, you're the guy from 3:02

  • @teamafus6034
    @teamafus6034 6 หลายเดือนก่อน +30

    If you want an easy way to print all block states, you could create a new world in Debug mode worldtype, where every block state is placed next to each other. Then you could write some code, who scans through every single block in the Debug world and puts all the block states in a list.

    • @Roako
      @Roako  6 หลายเดือนก่อน +12

      That's a thing????

    • @teamafus6034
      @teamafus6034 6 หลายเดือนก่อน +12

      @@Roako Yeah, simply hold the Alt key while clicking the "World Type" button in the world creation menu.

    • @Roako
      @Roako  6 หลายเดือนก่อน +16

      ​@@teamafus6034you just opened pandoras box for me, my mind is blown rn thank you

    • @andresparedes-vincent2851
      @andresparedes-vincent2851 6 หลายเดือนก่อน +8

      @@Roakopart 2? 👀

  • @Shywizz
    @Shywizz 6 หลายเดือนก่อน +28

    I don't know if you know but with the new macros this would actually be a single command for actually replacing the block
    something along the lines of :
    $execute as @e[type=armor_stand,tag=] run setblock ~ ~-1 ~ minecraft $block
    Although this limit the printer to work only in versions after mojang added that soo
    Also notepad++ has recordings, incase that's not too late

    • @blarak1688
      @blarak1688 6 หลายเดือนก่อน +3

      That's what I've been thinking, right. Big problem is though that as of now, there is no command for testing what kind of block this block is. You can only ask "if block sand, if block dirt, if block stone" and so on, but you can't do something like "data get block" to get the block id. That command only works for chests and such, storage blocks.
      There are two methods though that do work.
      Method A is shooting an arrow at that block and extracting its nbt that says which block it's stuck in
      Method B is using the loot command and thus spawning the item you get from destroying that block, and then extracting the id of the item to know what block it was.
      Not the best methods for doing that stuff. I really really hope that minecraft implements a better way to check block ids. But this is all we got as of now, as much as I know.

    • @te2w
      @te2w 6 หลายเดือนก่อน +5

      @@blarak1688 I love the idea of the printer shooting arrows at every single block before copying it over. Perfectly chaotic.

    • @danielrhouck
      @danielrhouck 6 หลายเดือนก่อน +2

      I didn’t know arrows did that! I’m not sure if you can trick an arrow into getting stuck in a non-solid block or find the solid part of weirdly-shaped blocks, but otherwise it sounds perfect

    • @carterstach6034
      @carterstach6034 2 หลายเดือนก่อน

      I was telling him the same thing!

    • @carterstach6034
      @carterstach6034 2 หลายเดือนก่อน

      I was literally waiting for AGES to make something like this where it maps a block id to a block display

  • @heledron
    @heledron 6 หลายเดือนก่อน +6

    You can spawn an arrow at the target block and copy the "inBlockState" NBT tag to the block display entity.

  • @eggboi5722
    @eggboi5722 6 หลายเดือนก่อน +6

    My make-a-wish request was finally granted. Thank Roako for the video 😍

  • @GlitchlessCode
    @GlitchlessCode 6 หลายเดือนก่อน +5

    This is so cool! I love it
    Regarding the pain that is that massive hard-coded if chain, I think one could theoretically save the name string by using something along the lines of /loot give mine netherite_pickaxe[Enchantments:[{"id":"silk_touch","lvl":1}]] to give the block at X Y Z to something (Such as the armour stand you already have). This has the downside that anything that just is never dropped (For instance, bedrock would be one such block) would simply end up being ignored. Despite this, it would mean that once the item has been retrieved, I think you can just merge the item name from the armour stand's item data into the block_display's data, and then empty the armour stand's inventory for the next block.
    I haven't tested this though, so I have no clue if it would actually work, just offering some ideas!

    • @uninable
      @uninable 6 หลายเดือนก่อน +4

      this doesn’t work for blocks that don’t work with silk touch, another way (albeit even more jank) is to copy that block to some pos, shoot an arrow at arrow at it, and copy the NBT data from that arrow

    • @GlitchlessCode
      @GlitchlessCode 6 หลายเดือนก่อน +2

      @@uninable I mentioned that in my comment, but yes, that is correct. Though I did not know about the arrow thing, but it does sound janky, like you said

    • @blarak1688
      @blarak1688 6 หลายเดือนก่อน +1

      @@GlitchlessCode These are the only ones I know of, too. Man, Minecraft has been improving a lot on command implementations these last updates, so because of that I fall asleep every night praying and begging the coders to bless us with a command that relieves us of these janky ass methods 🙏🙏

    • @uninable
      @uninable 6 หลายเดือนก่อน +2

      @@blarak1688 obviously mojang intended us to use negative explosion range creepers and advancements to run commands at a certain part of the tick to create player motion 🙄🙄🤦‍♂️

  • @rlachiecyce
    @rlachiecyce 6 หลายเดือนก่อน +7

    I also made block display 3d printer myself once and also got the same problem you got. It cannot read the block state and it takes too long to run. But I found (partial) solutions to all two of them.
    I found the solution to block state problem in the comments of *this* video(thanks @blarak1688 and @uninable). An arrow stuck in a block actually stores that block's id and block states in its NBT data. Although it has a downside of only working with block that has collisions, it still enables the printer to print much more things(such as stairs, fences and glass panes) properly.
    While the printer can be optimized by making it skip air blocks, it will make huge lag spikes whenever it skips too many of them. When I was making the printer I solved it by limiting the amounts of air blocks to skip, but I found a much better way to solve this problem in a command forum a few months ago. Basically, the world border grows or shrinks based on real time, and utilizing that, you can make some code loop only up to 50 milliseconds per tick. So, you can make the printer skip air blocks as quickly as possible without producing any lag.

  • @BD0G
    @BD0G 6 หลายเดือนก่อน +2

    Monumental creation, really cool

  • @Gekoloudios
    @Gekoloudios 6 หลายเดือนก่อน +5

    as a redstoner I smiled at the notification but then I realised who it was uploaded by...
    jk good vid :)

  • @Epic_Lavit
    @Epic_Lavit หลายเดือนก่อน

    NGL you are super underrated

  • @davie53
    @davie53 6 หลายเดือนก่อน +2

    I know I just commented, but in terms of lag optimization, the issue isn't just the large amount of entities, but rather the ridiculous number of faces to render. With physical blocks Minecraft doesn't render the faces of blocks that are inside of other blocks (think about what happens if you go inside a block in spectator mode), but with block displays, it renders every face of every block display, whether it needs to render those faces or not.
    I could be wrong about this, it could be that I'm spouting misinformation, but this is what I think is going on.

  • @doovid_
    @doovid_ 6 หลายเดือนก่อน +1

    My gosh that is so cool like holy crap

  • @JishuEdits07_
    @JishuEdits07_ หลายเดือนก่อน

    If there was more than one like button, then only 50k+ likes kar deta. Brother, your channel is really underrated. Love From India❤

  • @bluecrystal_7843
    @bluecrystal_7843 6 หลายเดือนก่อน

    all we need now is a few people to brut force adding the block variations, and maybe eventually all the possible water variations.... O.O

  • @Muszy
    @Muszy 6 หลายเดือนก่อน +1

    NOT OUR PALACE!!!

  • @derZiegbert
    @derZiegbert 6 หลายเดือนก่อน +2

    MENTAL!!!

  • @data_corrupted
    @data_corrupted 6 หลายเดือนก่อน

    03:33
    - in VSCode you can use middle mouse to create multiple cursors (hold and drag downwards to select the same character in every line)
    - RegEx: just replace "^m" with "execute if block ~ ~ ~ m"

  • @dylanbeers8583
    @dylanbeers8583 6 หลายเดือนก่อน +1

    Love this terraria video!

  • @mynameisfoxxy6110
    @mynameisfoxxy6110 6 หลายเดือนก่อน +1

    One way to brute force more efficiently which is probably easier to implement than macros is a thingy called tag files (yes *tags* very original, mojang).
    To use tags you replace the block you test for with the tag name and a # identifier. Ex.: instead of "execute if block ~ ~ ~ minecraft:stone" you put "execute if block ~ ~ ~ #minecraft:base_stone_overworld" which will run for these blocks: stone, granite, diorite, andesite, tuff, deepslate (pulled straight from the wiki).
    The cool part is that you can create custom tag files in your own datapack's namespace.
    So, for one, you can segment the tests to massively reduce the average amount of tests per block.
    Now if you create tags that bundle all blocks which share the same block states such as: all stairs, all trapdoors, all glass panes & fences & redstone dust, all directional blocks such as logs & dispensers & observers, etc...
    You don't need 1600+ commands just for stairs. Instead you just do "execute if block ~ ~ ~ #Roako:stairs run function Roako:stair_check"
    The "stair_check" function now needs only a little macro/return value magic to do two things.
    One, check which stair type it is using the method you've been using but isolate only stairs.
    Two, get the block states which you can hard code with the block state values that stairs get.
    Once you have these things you got your block display.
    It's probably still going to take a while to group all blocks correctly but it's a good thing many building blocks don't get any variable states.
    If you really care about speed, however, you can still subdivide all state-less-blocks to get quicker queries.
    Unrelated but I also wanted to mention that if you set your default program for .mcfunction files to visual studio you can use alt+select to select in columns and type or paste in every line at the same spot just like what you used excel for but quicker.

    • @Roako
      @Roako  6 หลายเดือนก่อน +1

      This is the most in-depth explanation I've seen so far, which I really appreciate. I have been working the past few days on getting something like this working, but like you said, grouping all the blocks and checking each of those groups is still a huge hassle. Especially when blocks like chiseled bookshelves exist (slot_0_occupied, slot_1_occupied, etc...)
      I think what I'll end up doing is just replacing the datapack in the description with a version where the stairs, slabs, doors, trapdoors, and logs have dynamic placements. But other than that, it just has not been worth the time to make sure that properties like "honey_level" for beehives are maintained in the print.

    • @mynameisfoxxy6110
      @mynameisfoxxy6110 6 หลายเดือนก่อน +1

      @@Roako that's fair enough, look forward to seeing the improved version

    • @Roako
      @Roako  5 หลายเดือนก่อน +1

      @@mynameisfoxxy6110 I just finished updating the datapack, thanks for the suggestion! You can print with the correct block properties for stairs, slabs, doors, trapdoors, walls, fences, fence gates, logs, wood, chests, beds, and some other miscellaneous blocks that I thought might be nice to have. I'll probably just post a short on it next week.

    • @mynameisfoxxy6110
      @mynameisfoxxy6110 5 หลายเดือนก่อน

      @@Roako Amazing job bro 👍

  • @WEEEWEEEEW
    @WEEEWEEEEW 19 วันที่ผ่านมา

    this guy is crazy :D

  • @lepaj6902
    @lepaj6902 6 หลายเดือนก่อน +1

    Everybody gangsta until you find a miniature copy of your house in your world that you haven't made.

  • @gummybearGBG5916
    @gummybearGBG5916 5 หลายเดือนก่อน

    Yes finally found your channel again

  • @Zeplington
    @Zeplington 6 หลายเดือนก่อน +3

    Nice work! :D

  • @aryanmadan
    @aryanmadan 6 หลายเดือนก่อน +1

    something similar was done by another command block youtuber where he made a 3d printer which could enlarge small minecraft builds

  • @shellcraft5200
    @shellcraft5200 6 หลายเดือนก่อน

    You know mojang also had to code all the variations of stairs,fenses, walls...etc but luckily for them it is easy for them to code the base object for all of it ,but in the game we have to access each of the state of the block

  • @TinoFM_MC
    @TinoFM_MC 6 หลายเดือนก่อน

    omg wholesome!

  • @felipebatista7198
    @felipebatista7198 6 หลายเดือนก่อน +1

    We miss you

  • @szupertntakos5000
    @szupertntakos5000 5 หลายเดือนก่อน

    If I were you, I'd make a console app, that would take the name of a staircase as input, and would output 80 lines of if commands, for every variation of that stair. Wouldn't even be that difficult imo.

  • @effortless4588
    @effortless4588 5 หลายเดือนก่อน

    Insaneee bro

  • @hohyt
    @hohyt 5 หลายเดือนก่อน

    Quality 🎉🎉

  • @alankyaw9922
    @alankyaw9922 6 หลายเดือนก่อน

    Great watch! Throughly enjoyed this video.

  • @DerKlemm-Crafter
    @DerKlemm-Crafter 6 หลายเดือนก่อน

    Well done, Mate!

  • @facu5408
    @facu5408 6 หลายเดือนก่อน

    Don't worry, I am already subscribd

  • @febu-chan463
    @febu-chan463 6 หลายเดือนก่อน

    you know, you could just paste 80 lines of it into another file then, press ctrl f to open search popup, press search and replace, type the block name and replace it with another..... but ngl 1600+ lines just for wooden stairs is crazy

  • @bugalt
    @bugalt 6 หลายเดือนก่อน

    10/10

  • @oToil
    @oToil 6 หลายเดือนก่อน +1

    W

  • @colewilder6196
    @colewilder6196 6 หลายเดือนก่อน

    noice

  • @Quillbee
    @Quillbee 6 หลายเดือนก่อน +1

    subscrib'd

  • @nos_1130
    @nos_1130 5 หลายเดือนก่อน +1

    I made some simple coding and get all the block states, about 25,000 lines of code.

  • @Fantie_huts
    @Fantie_huts 6 หลายเดือนก่อน

    Wow that is cool, cant you make it run faster by making the tick speed higher or did you already try that? At least good luck to you.

  • @Munrrow
    @Munrrow 2 หลายเดือนก่อน

    Now, take a look of viniccius13 vanilla survival 3d printer, in the video "Casa Automatica - 348"

  • @SignificantSin
    @SignificantSin 6 หลายเดือนก่อน +2

    th-cam.com/video/Mm28ID-WUVY/w-d-xo.html It's cool seeing this concept 7 years later but now in vanilla

  • @theguywiththewhiteblanket
    @theguywiththewhiteblanket 2 หลายเดือนก่อน

    add code that adds code, then you can fix the block data bug easily.

  • @davie53
    @davie53 6 หลายเดือนก่อน

    Can't you use something like macros? They were recently added to Minecraft, and they allow you to input strings into commands. I'm just not sure how to make a command input some other string... I do think they're worth looking into though.

  • @The_TGD
    @The_TGD 5 หลายเดือนก่อน +1

    80 x 49 = 3920 good luck :}

  • @matveykurilko4174
    @matveykurilko4174 6 หลายเดือนก่อน

    Can’t you use loot command to pick make armor stand pick up the block and transfer not from item? I saw a faking block generator doing this.

  • @PenpenMC
    @PenpenMC 6 หลายเดือนก่อน

    cant you make it instanly print by just by running the function again in the function if its not done?
    also you could use the loot command with silk touch pickaxe and silk touch shears to get the block and use macros to place the display entities i think

    • @Roako
      @Roako  6 หลายเดือนก่อน

      Theoretically you could instantly print smaller builds in 16 resolution, but when I was running the palace print it had massive lag spikes to skip all the air blocks. So to have it instantly skip over the whole build would probably just crash or never finish. Plus I think it just looks cooler to slowly build up over time :)

  • @Yackalips
    @Yackalips 6 หลายเดือนก่อน +1

    Does this use PLA?

  • @Rnjyea1
    @Rnjyea1 6 หลายเดือนก่อน

    Make it a mod for bedrock and Java edition

  • @WEEEWEEEEW
    @WEEEWEEEEW 19 วันที่ผ่านมา

    i dont know anything about command XD

  • @xyordan4o_788
    @xyordan4o_788 6 หลายเดือนก่อน

    why is every block like ochre_froglight
    and not with his texture is this a bug

    • @Roako
      @Roako  6 หลายเดือนก่อน

      I just chose that block as the placeholder because I like the way it look as if the blocks are just "glowing" into the print

    • @xyordan4o_788
      @xyordan4o_788 6 หลายเดือนก่อน

      it's not with the blocks that have a big bug model or it's from the version@@Roako

  • @Verbosal
    @Verbosal 6 หลายเดือนก่อน

    Too bad it doesn't use actual filament 💀

  • @ahmad-f8g4h
    @ahmad-f8g4h 10 วันที่ผ่านมา

    version?

  • @JoZaHandle
    @JoZaHandle 6 หลายเดือนก่อน

    Macros! Use macros!

  • @printvoyageur4386
    @printvoyageur4386 6 หลายเดือนก่อน

    Probably use macro ?

  • @Cryosphere.
    @Cryosphere. 6 หลายเดือนก่อน

    whne segs mod????111???????????

    • @TeeArCreep
      @TeeArCreep 6 หลายเดือนก่อน

      a friend held me a gunpoint one day and I had to make a femboy sex datapack

  • @lubavich770
    @lubavich770 6 หลายเดือนก่อน +2

    why don't you just give up

  • @silver24137
    @silver24137 3 หลายเดือนก่อน

    In the new 1.20.5 release you can shrinch useing /atirubute @p Minecraft:generic.scale set 0.0