【参考模版】【1.19+】实现水壶浇水的功能
全部
精华
发布
尘末者ChenMom

发布于 2023-06-13 09:51

【1.19+】实现以绿宝石充当存点,金锄传送的功能

【实现功能】:玩家走过绿宝石块后会保存当前位置(绿宝石位置)并以actionbar的形式显示玩家存点位置玩家手持金锄右键时就会传送到最近一次踩的绿宝石位置【代码实现部分】(sever_scripts)//绿宝石存档点var playerlist = {}PlayerEvents.tick(event => {    const { player, sever } = event    let pos = player.block.offset(0, -1, 0)    if (pos.id == 'minecraft:emerald_block') {        playerlist[player.name] = [Math.floor(Number(player.x)), Math.floor(Number(player.y)), Math.floor(Number(player.z))];//获取玩家坐标使用Math.floor()舍去小数部分        player.runCommandSilent(`title @a actionbar "\u00A74记录点已设定至${playerlist[player.name][0]},${playerlist[player.name][1]},${playerlist[player.name][2]}"`);    }})ItemEvents.rightClicked(event => {    let player = event.player    //判断是否手持金锄右键(右键耕地不触发)    if (player.getHeldItem(event.hand) == Item.of('minecraft:golden_hoe')) {        if (player.name in playerlist) {            player.setPosition(playerlist[player.name][0] + 0.5, playerlist[player.name][1], playerlist[player.name][2] + 0.5)//传送时将玩家传送至方块中心,所以x、z值+0.5        }    }})【标签】:存档、存点、传送、actionbar
1
评论
尘末者ChenMom

发布于 2023-05-21 00:00

【1.19+】实现自定义砂纸的功能

【实现功能呈现】:新添加一个黑曜石砂纸拥有更高的耐久度(1024耐久)但是较为复杂的制作流程(机械手持强力胶点纸获得“涂胶纸”-->机械手持黑曜石粉末点涂胶纸获得“未完成的黑曜石砂纸”-->未完成的黑曜石砂纸通过鼓风机烟熏获得最终产物)(详见评论区图片)【代码实现部分】:(sever_scripts)ServerEvents.tags('item', e => {    //为物品添加砂纸的标签    e.add('create:sandpaper', 'kubejs:obsidian_sand_paper')})ServerEvents.recipes(event => {    //机械手配方(产物:涂胶纸,材料:纸与强力胶)    event.recipes.createDeploying('kubejs:sticker', ['minecraft:paper', Item.of('create:super_glue')])    //机械手配方(产物:未完成的黑曜石砂纸,材料:涂胶纸与黑曜石粉末)    event.recipes.createDeploying('kubejs:obsidian_on_paper', ['create:powdered_obsidian', 'kubejs:sticker'])    //烟熏炉配方(如想要添加鼓风机配方仅需添加原版的烟熏炉配方即可,机械动力会同步相应配方)    event.smoking(Item.of('kubejs:obsidian_sand_paper', '{Damage:0}'),'kubejs:obsidian_on_paper')})(starup_scripts) 砂纸注册:const Base = Java.loadClass('com.simibubi.create.content.curiosities.tools.SandPaperItem')const Prop = Java.loadClass('net.minecraft.world.item.Item$Properties')const $KubeJS = Java.loadClass('dev.latvian.mods.kubejs.KubeJS')let defProperties = new Prop().tab($KubeJS.tab)//继承原版机械动力砂纸相关的功能(待证实)StartupEvents.registry('item', event => {    defProperties.defaultDurability(1024)//括号内是耐久度    event.custom('obsidian_sand_paper',  new Base(defProperties))//' '中包含的是物品ID})//这样情况下貌似使用不了.displayname()了(待证实)其他注册:StartupEvents.registry('item', e => {    e.create("sticker").displayName("涂胶纸").maxStackSize(1);//最大堆叠数为1    e.create("obsidian_on_paper").displayName("未完成的黑曜石砂纸").maxStackSize(1);})【其他要求】:需要有“机械动力”模组相关素材:【相关声明】:素材为本人以原版材质和机械动力材质为基础加以修改绘制,本文章继承砂纸部分代码出自discord官方论坛的一位大佬的帖子 【标签】:机械动力、更多(自定义)砂纸、模组物品功能继承、机械手配方、烟熏配方
  • 共7张
  • 共7张
  • 共7张
  • 共7张
  • 共7张
  • 共7张
  • 共7张
1
5
尘末者ChenMom

发布于 2023-05-20 23:17

【1.19+】实现在指定方块上获得指定效果的功能

【实现功能】:在橙色混凝土上获得加速的效果,在淡蓝色混凝土上获得跳跃提升的效果。【代码实现部分】:(sever_scripts) PlayerEvents.tick(event=>{    //淡蓝色跳跃提升    const{player,sever}=event    let pos = player.block.offset(0, -1, 0)//将pos值设为玩家脚底下坐标    if(pos.id == 'minecraft:light_blue_concrete')//判定pos值(即坐标处)是否为淡蓝色混凝土    {    event.player.potionEffects.add("minecraft:jump_boost",10,5,false,false)    }})PlayerEvents.tick(event=>{    //橙色加速    const{player,sever}=event    let pos = player.block.offset(0, -1, 0)    if(pos.id == 'minecraft:orange_concrete')    {    event.player.potionEffects.add("minecraft:speed",5,10,false,false)    }})【其他要求】:无其他要求呜喵~o( =∩ω∩= )m【标签】:方块效果、传送门、坐标相关
1
1
尘末者ChenMom

发布于 2023-05-10 21:28

【1.19+】快捷注册液体的模版(防出现贴图丢失情况)

【功能效果呈现】:【脚本代码】:(starup scripts)StartupEvents.registry('fluid', e => {    e.create('testing').displayName('Testing').thickTexture(0xF7F8FA).bucketColor(0xF7F8FA).flowingTexture('minecraft:block/water_flow').stillTexture('minecraft:block/water_still')})Texture( )括号内的“0x”前缀后跟16进制颜色代码可以使用类似线上工具:在线取色器工具
  • 共2张
  • 共2张
1
2
尘末者ChenMom

发布于 2023-05-10 14:08

【参考模版】【1.19+】实现水壶浇水的功能

【实现功能呈现】: 水壶右键土方块可以将土方块转换为湿润的耕地(有水花的粒子效果),并在公屏发送信息 ,浇水有间隔(CD)。水壶浇水消耗自身耐久,对着水右键可以灌水补充耐久,并发送灌水成功的消息。【代码实现部分】: (sever_scripts) BlockEvents.rightClicked('minecraft:dirt', event => {    if(event.player.mainHandItem.id == Item.of('kubejs:watering_can'))    {        if(event.item.nbt.Damage == 4 )//判断当水壶只剩1点耐久时禁用浇水        {            event.server.runCommand(`say 触发保护机制`)            event.cancel()        }        else        {        event.server.runCommandSilent(`setblock ${event.block.x} ${event.block.y} ${event.block.z} minecraft:farmland[moisture= 7]`)//替换方块为湿润的耕地        event.server.runCommandSilent(`particle create:fluid_drip ${event.block.x} ${event.block.y} ${event.block.z} 0.5 0.5 0.5 0.1 50`);//生成粒子(fliuid_drip可替换为其他),相关详见wiki中particle指令的内容        event.server.runCommand(`say 浇水成功喽~`)//公屏播放        event.player.damageHeldItem('main_hand', 1)//消耗一点耐久        event.player.addItemCooldown('kubejs:watering_can', 20)//废物代码)不影响浇水频率)        }    }})ItemEvents.rightClicked(e=>{    let player = e.player    if (player.getHeldItem(e.hand) == 'kubejs:watering_can') {        let target = player.rayTrace(5)        if (target.block.id == 'minecraft:water') //通过玩家实现追踪实现辨认玩家对着水右键        {            e.server.runCommand(`say 灌水成功喽~`)//公屏播放            let pos = player.block            e.server.runCommandSilent(`particle create:fluid_drip ${pos.x} ${pos.y} ${pos.z} 0.5 0.5 0.5 0.1 50`);            e.player.damageHeldItem('main_hand', -1)//增加一点耐久        }    }})(starup_scripts) StartupEvents.registry("item", event => {     event.create("watering_can", "basic").glow(true).unstackable().maxDamage(5).displayName("洒水壶") }) 【其他要求】: 自备水壶材质脚本粒子部分用到“机械动力”模组,如不想要使用可以替换为原版粒子。【标签(为方便检索)】:水壶,右键检测,耐久消耗、恢复,粒子效果、条件禁用物品功能
  • 共3张
  • 共3张
  • 共3张
2
评论
取消
DoDo提供建站支持