17173有料社区

    查看: 158|回复: 0

    [互助技巧] 彩色字体,做一把有颜色的武器 元旦快乐!

    [复制链接]

    351

    主题

    424

    帖子

    1979

    积分

    实习版主

    Rank: 15Rank: 15Rank: 15Rank: 15Rank: 15Rank: 15

    发表于 2018-1-7 15:58:21 | 显示全部楼层 |阅读模式
    在1.8出现之前,我们可以在游戏中愉快的打出彩色字体,也就是MC中的彩色符号"§"。不过,在1.8出来之后,惊奇的发现,竟然无法打出符号"§"了!不过,我们可以从告示牌json转换后获取到这个符号,详细方法如下。原理适用于1.8以上全版本。

    undefined提示:若发现执行代码后有误,请在此查阅 戳我前去
    提示:复制代码框下方白色小字可以防止出错           

    5a198f8324723.gif

    代码:
    首先执行这个代码以获取一个告示牌:
    • /give @p minecraft:sign 1 0 {BlockEntityTag:{Text1:"{"text":"右键戳我=w=","clickEvent":{"action":"run_command","value":"/setblock ~ ~ ~ minecraft:command_block 0 replace {Command:\\"say \u00a72\u00a7lwww.Ganxiaozhe.com!\\"}"}}"}}

    [color=rgb(51, 102, 153) !important]复制代码

    /give @p minecraft:sign 1 0 {BlockEntityTag:{Text1:"{\"text\":\"右键戳我=w=\",\"clickEvent\":{\"action\":\"run_command\",\"value\":\"/setblock ~ ~ ~ minecraft:command_block 0 replace {Command:\\\"say \u00a72\u00a7lwww.Ganxiaozhe.com!\\\"}\"}}"}}

    然后将其放在地上,并右键,该告示牌处就会出现一个命令方块,点开一看,呀,你就会看见彩色字体俨然在里面了~

    我们将这个指令拆开来看,告示牌无非就是放置一个具有{Command:""}数据值的命令方块。受数据值影响,被放置的命令方块中包含了指令say \u00a72\u00a7lwww.Ganxiaozhe.com!(此处\u00a72\u00a7l已经被转换为了§2§l)。若将这个指令直接执行,可以看到其显示的是\u00a72\u00a7lwww.Ganxiaozhe.com!而不是有色颜色字体(其\u00a72\u00a7l未被转换)。

    之所以同样的指令会出现两种截然不同的效果,其实就是json代码没被转换啦。想要让它被转换,就得要让它在json格式中。例如/tellraw @a [{"text":"\u00a72\u00a7lGanxiaozhe"}],执行后发现其输出为有色字体,则成功转换啦。利用这个特性,我们只需要在tellraw加上点击事件"clickEvent",其中代码为放置一个有Command:""的命令方块,则就能借助json的转换来打出颜色代码啦。

    如果你不知道颜色对于的转义码,下面这张颜色对照表没准能帮到你


    colorinfo.png
    该颜色代码适用于所有指令,不限于say,tellraw,title,give的display,summon的customName...

    注意:
    按照上述结构,执行下方指令应可得到一把金色加粗名字的木剑
    • /give @p minecraft:sign 1 0 {BlockEntityTag:{Text1:"{"text":"右键戳我=w=","clickEvent":{"action":"run_command","value":"/setblock ~ ~ ~ minecraft:command_block 0 replace {Command:\\"give @p wooden_sword 1 0 {display:{Name:"\u00a76\u00a7l轻剑"}}\\"}"}}"}}

    [color=rgb(51, 102, 153) !important]复制代码

    /give @p minecraft:sign 1 0 {BlockEntityTag:{Text1:"{\"text\":\"右键戳我=w=\",\"clickEvent\":{\"action\":\"run_command\",\"value\":\"/setblock ~ ~ ~ minecraft:command_block 0 replace {Command:\\\"give @p wooden_sword 1 0 {display:{Name:"\u00a76\u00a7l轻剑"}}\\\"}\"}}"}}
    可将它激活,却出现了这样的反馈信息数据标签分析失败:Unexpected token '\' at: \u00a76\u00a7l轻剑"}}\\\"}\"}}"。我们分析一下value中的内容,不难知道其是放置一个有指令也就是有Command数据标签的命令方块。而其格式为Command:"",是通过引号来划分哪些是属于数据标签Command的"管辖"范围。这样一来,很明显在上面指令中Name后面的引号将Command数据标签结束了。变为了/setblock ~ ~ ~ minecraft:command_block 0 replace {Command:"give @p wooden_sword 1 0 {display:{Name:"}\u00a76\u00a7l轻剑"}}。同样的,上面Command:数据标签后面加"\\\"的原因是为了区分value和Command的结束位置。我们也给Name加上斜杠来区分它与Command的结束位置,指令如下
    • /give @p minecraft:sign 1 0 {BlockEntityTag:{Text1:"{"text":"右键戳我=w=","clickEvent":{"action":"run_command","value":"/setblock ~ ~ ~ minecraft:command_block 0 replace {Command:\\"give @p wooden_sword 1 0 {display:{Name:\\\\\\"\u00a76\u00a7l轻剑\\\\\\"}}\\"}"}}"}}

    [color=rgb(51, 102, 153) !important]复制代码

    /give @p minecraft:sign 1 0 {BlockEntityTag:{Text1:"{\"text\":\"右键戳我=w=\",\"clickEvent\":{\"action\":\"run_command\",\"value\":\"/setblock ~ ~ ~ minecraft:command_block 0 replace {Command:\\\"give @p wooden_sword 1 0 {display:{Name:\\\\\\\"\u00a76\u00a7l轻剑\\\\\\\"}}\\\"}\"}}"}}

    当引号太多时,你也许会感到十分烦恼,为了优化代码数量,在这里可以不为其添加引号,指令如下
    • /give @p minecraft:sign 1 0 {BlockEntityTag:{Text1:"{"text":"右键戳我=w=","clickEvent":{"action":"run_command","value":"/setblock ~ ~ ~ minecraft:command_block 0 replace {Command:give @p wooden_sword 1 0 {display:{Name:\u00a76\u00a7l轻剑}}}"}}"}}

    [color=rgb(51, 102, 153) !important]复制代码

    /give @p minecraft:sign 1 0 {BlockEntityTag:{Text1:"{\"text\":\"右键戳我=w=\",\"clickEvent\":{\"action\":\"run_command\",\"value\":\"/setblock ~ ~ ~ minecraft:command_block 0 replace {Command:give @p wooden_sword 1 0 {display:{Name:\u00a76\u00a7l轻剑}}}\"}}"}}

    执行上述代码,你会得到一个与添加了斜杠所获取的完全一样的物品。

    回复

    使用道具 举报

    您需要登录后才可以回帖 登录 | 立即注册

    本版积分规则

    点击这里给我发消息 点击链接加入【17173社区玩家群1】