Results 1 to 1 of 1
  1. #1
    Halfwise's Avatar
    Join Date
    Apr 2024
    Gender
    male
    Posts
    1
    Reputation
    10
    Thanks
    0
    My Mood
    Doh

    Remotely adding symbols to maps

    This is a fully manual tutorial because I don't really have the skill to make more effective tools

    First, some context.

    Minecraft maps, as you no doubt know, operate within an ID system. All copies of, say, map #35 will see the same thing, including banner markers and item frames holding the map, because all that information is stored to the map ID.

    Treasure and explorer maps show icons to mark points of interest in a similar way, where an icon will appear for all maps of the same ID. Treasure maps, however, hold the information for their decorations entirely in their NBT -- but maps haven't functionally changed outside of that. Maps are still just rendered from IDs, including decorations. The same thing that makes banners appear on a map is being used to make that NBT show decorations. So, it can only work by taking that nbt and associating it with the map ID temporarily. Temporarily being, until the server restarts.






    ______________________________________________

    This NBT will apply to any map of the same ID in any world -- including survival worlds outside of the creative world, provided that you:
    A. Know the X/Z location of the map
    B. Have the ID of the map
    C. Have access to a creative world on the server in question to bring items with custom NBT in.

    A is the biggest hurdle for this as I'm not aware of any tools that let you pinpoint the location that a map is centered at.

    So you can draw map decorations on whatever you want; be it a custom map billboard, map art, or a map in someone's base, and as long as you're able to load these maps into a creative world, it'll be able to apply these symbols to maps of the same ID in any other world. It should be noted, however, that they only remain loaded until the server restarts. Hiding these maps near high traffic areas is strategic to keep them loaded as often as possible.

    Now, in the NBT of a map, decorations are stored in a compound list. With the new NBT format in 1.20.5, it would look something like this:

    Code:
    minecraft:map_decorations={decoration_1:{rotation:0.0f ,x:0.0d, z:0.0d, type:"minecraft:red_x"}, decoration_2:{rotation:90.0f, x:350.0d, z:350.0d, type:"minecraft:banner_red"}}
    This one has two decorations, a red X at (0,0), and a red banner at (350,350) rotated 90 degrees

    Pulling out one unit here we have this:


    Code:
    decoration_1:{rotation: 0.0f,x: 0.0d,z: 0.0d,type:"minecraft:red_x"}
    "decoration_1": the name of the decoration, used as a way to prevent redundancies. Make sure your decoration names are unique or they'll conflict with one another. Treasure maps have their decorations named "+" by default, but if you make a + decoration on a map first, it won't render -- usable to make treasure maps worthless. The decoration names are first come first serve per map, so if you have two decorations named decoration_1, only the first one that the server loads will be applied to that map ID.

    "rotation": Degrees; turns the symbol clockwise, though 180 is upright and 0 is upside down. The "f" suffix declares the tag type as a "float".

    "x" and "z": the coordinate locations of the symbol; they're still loaded normally if they aren't on the map but won't be rendered. The "d" suffix declares the tag type as a 'double'. This is why you need to know the location of the map.

    "type": A namespaced ID for the symbol; This determines what the symbol looks like. These include "banner_red(or whatever color), "red_x", "target_x", "target_point", "mansion", "monument", "desert_village", "plains_village", "savanna_village", "taiga_village", "jungle_pyramid", "swamp_hut", and "frame".

    Certain map symbols also only show up when in your hand, which might be useful in some instances. These include "player", "red_marker", "blue_marker", "player_off_map", and "player_off_limits",
    __________________________________________________ __________________

    You can probably use some sort of nbt editor mod to make these but for simplicity I'll stick to vanilla methods.

    In a singleplayer world, this would be the command format to create a decorated map, where map_id is the id # of the map you wish to apply symbols to, and the map_decorations list would have however many decorations you'd like for that map ID. If there was a map with ID 35 at 0,0 that you wanted to make a x_x face at, you might use a command like this:

    Code:
    /give @p minecraft:filled_map[
    minecraft:map_decorations={
    eye_1:{rotation: 0.0f,x: 25.0d,z: -25.0d,type:"minecraft:red_x"},
    eye_2:{rotation: 0.0f,x: -25.0d,z: -25.0d,type:"minecraft:red_x"},
    nose:{rotation: 90.0f,x: 0.0d,z: 0.0d,type:"minecraft:target_point"},
    mouth1:{rotation: 270.0f,x: -20.0d,z: 25.0d,type:"minecraft:banner_red"},
    mouth2:{rotation: 270.0f,x: -16.0d,z: 25.0d,type:"minecraft:banner_red"},
    mouth3:{rotation: 270.0f,x: -12.0d,z: 25.0d,type:"minecraft:banner_red"},
    mouth4:{rotation: 270.0f,x: -8.0d,z: 25.0d,type:"minecraft:banner_red"},
    mouth5:{rotation: 270.0f,x: -4.0d,z: 25.0d,type:"minecraft:banner_red"},
    mouth0:{rotation: 270.0f,x: 0.0d,z: 25.0d,type:"minecraft:banner_red"},
    mouth6:{rotation: 270.0f,x: 4.0d,z: 25.0d,type:"minecraft:banner_red"},
    mouth7:{rotation: 270.0f,x: 8.0d,z: 25.0d,type:"minecraft:banner_red"},
    mouth8:{rotation: 270.0f,x: 12.0d,z: 25.0d,type:"minecraft:banner_red"},
    mouth9:{rotation: 270.0f,x: 16.0d,z: 25.0d,type:"minecraft:banner_red"},
    mouth10:{rotation: 270.0f,x: 20.0d,z: 25.0d,type:"minecraft:banner_red"},
    },
    minecraft:map_id=35]
    You'll get something that looks like this:



    If you're particularly enterprising, you could also turn maps into computer melting walls of symbols:



    Or a stealthier pillar of thousands of the same decoration in the same spot:



    Save whatever maps you want to bring into a server's creative world to a hotbar by holding C and pressing any number from 1-9, then place it down. Even if it's destroyed, the symbols will remain on all maps with a matching ID until the server restarts, and from limited testing it seems that these custom maps bypass custom NBT prevention on some servers.

    I have yet to find an upper limit to this, but it extends into the thousands at a minimum. There is a limit to the size of command that a command block may accept, but even that doesn't prevent you from simply splitting the payload into multiple copies of the map.
    Last edited by Halfwise; 2 Weeks Ago at 03:01 PM.

Similar Threads

  1. [Help Request] Adding Davy's Map
    By Jankos in forum Realm of the Mad God Private Servers Help
    Replies: 2
    Last Post: 12-03-2013, 01:37 PM
  2. adding vehicles on map to silents esp
    By bmitch5150 in forum DayZ Discussion
    Replies: 1
    Last Post: 02-05-2013, 07:17 PM
  3. [WTS] Selling remote exec - few options added
    By SMIRL in forum DayZ Selling / Trading / Buying
    Replies: 0
    Last Post: 11-23-2012, 02:00 PM
  4. [Release] Zombies Chaz v2 with JETPACKs for Humans/zombies, CLAYMOREs, New MAPS added..and More
    By blackmirror in forum Call of Duty Modern Warfare 2 Server / GSC Modding
    Replies: 4
    Last Post: 02-29-2012, 10:49 AM
  5. Adding Fire To Map
    By MuLtiHuNTeR in forum Call of Duty Modern Warfare 2 GSC Modding Help/Discussion
    Replies: 7
    Last Post: 02-06-2011, 04:19 AM