MCEdit Filters

TEXTA

posted Jan 21, 2019, 12:35 AM by Adrian Brightmoore   [ updated Jan 21, 2019, 6:15 PM ]

Set the Text tag on each BlockEntity in the selection box to be the contents of the text file you specify. Use for updating Minecraft Education Edition Chalkboard text.

The attached filter file goes in your filters directory.
v1 replaces the contents of the "Text" tag.
v2 allows you to specify a different NBT tag. Make sure it is a TAG_String type otherwise you will break the BlockEntity.
v3 allows you to specify a different NBT tag and tag type (compound and List is not supported)

Go to this Twitter thread for help or more usage guidance: https://twitter.com/TheWorldFoundry/status/1087270673712525313


GLUETRAPDOORSTOBLOCK

posted Dec 30, 2018, 5:01 PM by Adrian Brightmoore   [ updated Dec 30, 2018, 5:01 PM ]

This filter fixes the problem where you've used trapdoors to wrap around a light source in your build and when you've converted it from Java to Bedrock all the trapdoors have popped open. It was requested by @Smurfmashers from Nether Pixel Studios.

For example, if you have the problem on the left and want things to look like on the right in the following picture then this filter is for you:

Inputs and details:

Note: do multiple passes if you've got more than one material type in use. Always work with a world backup.

LIFESCULPTURE

posted Dec 30, 2018, 12:11 AM by Adrian Brightmoore   [ updated Dec 30, 2018, 1:23 AM ]

Per Cold Fusion Gaming.

Render structures as time-series cellular automata in the North-South direction of the selection box.

This filter will let you import a (non Alpha) png and specify the RGB values to match as 'seed cells'. It places them in the middle of the south-most plane and runs the simulation from there. You can also select "None" and it will use the non-air blocks in the south-most plane to seed the process. The final approach is 'randomise' and you suggest the 'frequency' of live cells in the first layer as a float (i.e 0.2 = 20% chance of each cell being 'alive'). I also save off the last frame if you read in from a png file so you can start again from that point later. It's in the MCEdit binaries directory with an "_end" suffix.


ROTATESLICE

posted Nov 24, 2018, 7:05 PM by Adrian Brightmoore

Reimplemented - select a width-wise selection and this spins it 360 degrees. It renders outside the selection area, so work with enough room around the slice.

HEMISPHERE

posted Nov 10, 2018, 7:22 PM by Adrian Brightmoore

Create hemisphere/domes from a layer of material in the selection. Originally for Cold Fusion Gaming:

Select a plane of an image and then lift the selection box to the height you want the radius of the hemisphere to be. Run the filter and wait for it to finish.



Rotate Schematics in Folder

posted Oct 4, 2018, 8:15 PM by Adrian Brightmoore

Rotate schematics in a folder.

SKINNY

posted Sep 24, 2018, 3:10 PM by Adrian Brightmoore   [ updated Sep 24, 2018, 3:13 PM ]

This filter helps you edit Minecraft player skin file pngs from within MCEdit. WARNING: This filter will overwrite the filename you give it.

You build a player in the world (or import one from a skin file) and then you can edit it like any other Minecraft build using a selection of blocks, and then export the model as a skin file's INNER or OUTER layer.

The filter lets you layer the OUTER layer on an existing skin so you can develop a range of 'wearables' for your characters and adjust to suit over time.

Have a play with it to see what it does!

DUMPCHUNK

posted Aug 18, 2018, 4:32 AM by Adrian Brightmoore   [ updated Aug 18, 2018, 4:41 AM ]

Prints out NBT in each chunk in the selection box. Check the console or MCEdit log after running it.

Remember to change the console history length if you lose information due to scrolling.

Example output:

Entities:
TAG_Compound({
  "Chested": TAG_Byte(0),
  "Color": TAG_Byte(0),
  "Color2": TAG_Byte(0),
  "FallDistance": TAG_Float(0.0),
  "Fire": TAG_Short(0),
  "Invulnerable": TAG_Byte(0),
  "IsAngry": TAG_Byte(0),
  "IsAutonomous": TAG_Byte(0),
  "IsBaby": TAG_Byte(0),
  "IsGliding": TAG_Byte(0),
  "IsGlobal": TAG_Byte(0),
  "IsSwimming": TAG_Byte(0),
  "IsTamed": TAG_Byte(0),
  "LastDimensionId": TAG_Int(0),
  "LootDropped": TAG_Byte(0),
  "MarkVariant": TAG_Int(0),
  "Motion": TAG_List([
    TAG_Float(0.0),
    TAG_Float(0.0),
    TAG_Float(0.0),
  ]),
  "OnGround": TAG_Byte(1),
  "OwnerNew": TAG_Long(-1L),
  "PortalCooldown": TAG_Int(0),
  "Pos": TAG_List([
    TAG_Float(133.5),
    TAG_Float(32.349998474121094),
    TAG_Float(337.3836669921875),
  ]),
  "Rotation": TAG_List([
    TAG_Float(-90.0),
    TAG_Float(0.0),
  ]),
  "Saddled": TAG_Byte(0),
  "Sheared": TAG_Byte(0),
  "ShowBottom": TAG_Byte(0),
  "Sitting": TAG_Byte(0),
  "Strength": TAG_Int(0),
  "StrengthMax": TAG_Int(0),
  "UniqueID": TAG_Long(-146028888062L),
  "Variant": TAG_Int(0),
  "definitions": TAG_List([
    TAG_String(u'+minecraft:minecart'),
  ]),
  "id": TAG_String(u'Minecart'),
})
TileEntities:
TAG_Compound({
  "Command": TAG_String(u'setblock ~16 ~1 ~ redstone_block'),
  "CustomName": TAG_String(u''),
  "LPCommandMode": TAG_Int(0),
  "LPCondionalMode": TAG_Byte(0),
  "LPRedstoneMode": TAG_Byte(1),
  "LastExecution": TAG_Long(1384348L),
  "LastOutput": TAG_String(u'commands.setblock.success'),
  "LastOutputParams": TAG_List([
  ]),
  "SuccessCount": TAG_Int(1),
  "TrackOutput": TAG_Byte(1),
  "Version": TAG_Int(8),
  "auto": TAG_Byte(0),
  "conditionMet": TAG_Byte(1),
  "id": TAG_String(u'CommandBlock'),
  "isMovable": TAG_Byte(1),
  "powered": TAG_Byte(0),
  "x": TAG_Int(128),
  "y": TAG_Int(25),
  "z": TAG_Int(336),
})
TAG_Compound({
  "Command": TAG_String(u'fill ~ ~5 ~ ~15 ~95 ~15 air'),
  "CustomName": TAG_String(u''),
  "LPCommandMode": TAG_Int(0),
  "LPCondionalMode": TAG_Byte(0),
  "LPRedstoneMode": TAG_Byte(1),
  "LastExecution": TAG_Long(1384348L),
  "LastOutput": TAG_String(u'commands.fill.success'),
  "LastOutputParams": TAG_List([
    TAG_String(u'241'),
  ]),
  "SuccessCount": TAG_Int(1),
  "TrackOutput": TAG_Byte(1),
  "Version": TAG_Int(8),
  "auto": TAG_Byte(0),
  "conditionMet": TAG_Byte(1),
  "id": TAG_String(u'CommandBlock'),
  "isMovable": TAG_Byte(1),
  "powered": TAG_Byte(0),
  "x": TAG_Int(128),
  "y": TAG_Int(27),
  "z": TAG_Int(336),
})
TAG_Compound({
  "Command": TAG_String(u'setblock ~ ~2 ~ coal_block'),
  "CustomName": TAG_String(u''),
  "LPCommandMode": TAG_Int(2),
  "LPCondionalMode": TAG_Byte(1),
  "LPRedstoneMode": TAG_Byte(0),
  "LastExecution": TAG_Long(1384348L),
  "LastOutput": TAG_String(u'commands.setblock.success'),
  "LastOutputParams": TAG_List([
  ]),
  "SuccessCount": TAG_Int(1),
  "TrackOutput": TAG_Byte(1),
  "Version": TAG_Int(8),
  "auto": TAG_Byte(1),
  "conditionMet": TAG_Byte(1),
  "id": TAG_String(u'CommandBlock'),
  "isMovable": TAG_Byte(1),
  "powered": TAG_Byte(0),
  "x": TAG_Int(128),
  "y": TAG_Int(24),
  "z": TAG_Int(336),
})



EXTRABLOCKS

posted Aug 13, 2018, 2:16 AM by Adrian Brightmoore

Create waterlogged blocks (and other effects - unsafe!) in Bedrock

AMERGER

posted Jul 13, 2018, 12:13 AM by Adrian Brightmoore   [ updated Dec 13, 2018, 1:23 AM ]

Apply patterns to shapes, where the pattern is a 3D shape. Confusing, no?


  1. Generate a shape (Underworld filter has an interference function, aaanoise does a blobby griddy noise function) and then replace some of the shape with air. This is the texture (See left in diagram above).
  2. Run AMERGER in copy mode.
  3. Select the target shape (same size or smaller than original - see right in diagram above) and run AMERGER again in AND mode. It will place the template blocks over the target shape where there are blocks (not air).
  4. The XOR mode places template blocks where there ARE NOT blocks in the target.
  5. With some thought you can do some interesting masking

1-10 of 142