跳转至内容
  • 版块
  • 最新
  • 热门
  • 标签
  • 群组
皮肤
  • Light
  • Cerulean
  • Cosmo
  • Flatly
  • Journal
  • Litera
  • Lumen
  • Lux
  • Materia
  • Minty
  • Morph
  • Pulse
  • Sandstone
  • Simplex
  • Sketchy
  • Spacelab
  • United
  • Yeti
  • Zephyr
  • Dark
  • Cyborg
  • Darkly
  • Quartz
  • Slate
  • Solar
  • Superhero
  • Vapor

  • 默认(Zephyr)
  • 不使用皮肤
折叠
品牌标识

VariedMC 魔改论坛

忆然忆

忆然

@忆然
KubeJS
关于
帖子
34
主题
8
分享
0
群组
3
粉丝
1
关注
1
Blog

帖子

最新 最佳 有争议的

  • 论坛似了,对吗
    忆然忆 忆然

    会赢的

    壁画石窟

  • 我下辈子不碰Network!!!!!
    忆然忆 忆然

    😡😡😡

    壁画石窟

  • [模组推荐]在进入游戏的时候从网上获取信息展示
    忆然忆 忆然

    本文使用:CC-BY-NC-SA 4.0协议
    使用的mod为[YiRanVersionCheck]
    实际上就是在推荐我自己的mod
    这个mod会在进入游戏的时候访问指定的链接并在聊天栏提示你其中的文本

    使用实例:

    6f4a9e31-ca60-4fb0-870a-55584bdd07d0-image.png

    如何使用?

    首先你需要开通一个gitee仓库 github也行,但不一定好访问
    在里面创建一个纯文本文件 建议使用log后缀

    本文使用的例子为
    https://gitee.com/bakayiran/mmrryyhh/blob/master/test.txt

    本整合包免费发布,私自贩卖不得好死
    目前最新版本:§61.0.0-hotfix
    当前版本:§6${version}
    链接:[[§b§n获取最新信息§r]](https://gitee.com/bakayiran/mmrryyhh/edit/master/test.txt)
    若在游玩整合包遇到问题请先在[§b§n百科](https://www.mcmod.cn/)寻求答案
    可以灌注下[§b§n作者(B站)](https://www.bilibili.com/)吗OVO
    

    文本中的${version}会被替换成config里面的版本
    string则会解析为一个可点击,点击打开指定的链接
    一行目前只能存在一个可点击文本

    配置文件:

    #在这里填入URL
    checkUrl = "https://gitee.com/bakayiran/mmrryyhh/blob/master/test.txt"
    #在这里填入次要URL
    secondaryCheckUrl = "null"
    #当前版本
    version = "0.1.0"
    

    本mod会先尝试从主要链接获取文本,失败则会尝试次要链接
    你也可以使用kjs修改配置文件

    //在Startup,当然你也可以放client
    ClientEvents.init(event => {
      let $Config = Java.loadClass("com.yiran.versioncheck.Config")
      $Config.VERSION.set("0.1.0")
      $Config.CHECK_URL.set("https://gitee.com/bakayiran/mmrryyhh/blob/master/test.txt")
      //$Config.CHECK_URL2.set("null")
    })
    

    为什么使用这个mod?

    用于告诉整合包玩家目前的整合包版本和现在版本
    提供bug反馈链接
    用作进入世界的消息提醒
    声明整合包免费(倒勾不得好死)

    壁画石窟

  • [原创][KubeJS]kubejs获取玩家所处坐标的结构
    忆然忆 忆然

    本文使用:CC-BY-NC-SA 4.0协议
    直接上代码
    在此推荐下来自ZZZank的ProbeJS Legacy
    (已经支持1.20.1了(喜))

    /**
     * 获取实体坐标的所有结构
     * @param {Internal.Entity} entity
     * @returns {$StructureStart_[]}
     */
    function getAllStructuresAt(entity) {
      let structureList = []
      /**@type {$ServerLevel_} */
      let serverLevel = entity.level
      let entityPos = entity.block.pos
      /** @type {Internal.Structure[]} */
      let structureArray = serverLevel.structureManager().getAllStructuresAt(entityPos).keySet().toArray()
      for (let structure of structureArray) {
        let structureStart =
          serverLevel.structureManager().getStructureAt(entityPos, structure)
        if (structureStart.isValid()) {
          structureList.push(structureStart)
        }
      }
      return structureList
    }
    
    妙妙工具 kubejs

  • [原创][KubeJS][Mod]如何在1.21.1NeoForge编写一个KubeJS的附属Mod
    忆然忆 忆然

    @LirxOwO 虾头栗子,看我keybindjs仓库去

    魔改早教 kubejs

  • [原创][KubeJS][Mod]如何在1.21.1NeoForge编写一个KubeJS的附属Mod
    忆然忆 忆然

    呜呜,我当时写keybindjs找extra怎么写找了半天
    苦呀西

    魔改早教 kubejs

  • [原创][KubeJS][Mod]如何在1.21.1NeoForge编写一个KubeJS的附属Mod
    忆然忆 忆然

    怎么没介绍event的extra怎么写

    魔改早教 kubejs

  • [原创][Mod]基于opengl取色的hsv色盘屏幕
    忆然忆 忆然

    俺寻思能行.jpg
    image.png

    妙妙工具 渲染

  • 养老向的物品抽奖机:虚空草莓
    忆然忆 忆然

    呜,硬编码名称😭

    灵感大王 kubejs 作物 forge

  • [原创][KubeJS][持续更新?]在kjs中使用createCustom进行注册物品
    忆然忆 忆然

    本文使用:CC-BY-NC-SA 4.0协议
    kjs本身提供的物品注册比较有限,在注册某些kjs未提供的item的时候我们就需要用到createCustom
    如果有需要的item注册可以在本文下方留言,会考虑更新
    createCustom注册model是没有的,也就是你还得去写一份model.json(这部分可以参考原版wiki)
    下面是使用createCustom去注册一个弓的例子

    let $BowItem = Java.loadClass("net.minecraft.world.item.BowItem")
    let $Item$Properties = Java.loadClass("net.minecraft.world.item.Item$Properties")
    
    StartupEvents.registry("item", event => {
      event.createCustom("modid:item_name", () => {
        let properties = new $Item$Properties()
        //修改耐久 为0则无耐久属性
        properties.durability(0)
        //修改最大堆叠数量
        properties.stacksTo(1)
        //修改稀有度
        properties.rarity("epic")
        //创建新的bowitem
        let item = new $BowItem(properties)
        //返回新的bowitem进行注册
        return item
      })
    })
    
    灵感大王 kubejs

  • [原创][KubeJS 7][BrokenClassFilter]关于Nashorn在kjs中的应用
    忆然忆 忆然

    前言
    ClassFilter是kjs的一个保护机制,笔者在这里不建议进行对ClassFilter动手脚
    此篇仅以替换kjs的ClassFilter为例子展示Nashorn在kjs的使用
    本文使用:CC-BY-NC-SA 4.0协议

    因为1.21.1的kubejs ban了反射,因此只能在nashorn里面进行操作
    Nashorn比较复杂,这次就仅展示成品

    let $KubeJS = Java.loadClass("dev.latvian.mods.kubejs.KubeJS")
    
    let $ServerLifecycleHooks = Java.loadClass("net.neoforged.neoforge.server.ServerLifecycleHooks")
    /**@type {$MinecraftServer_} */
    let Server = $ServerLifecycleHooks.getCurrentServer()
    //所有的scriptmanager获取
    let ServerScriptMagager = Server.getServerResources().managers().kjs$getServerScriptManager()
    let ClientScriptMagager = $KubeJS.getClientScriptManager()
    let StartupScriptMagager = $KubeJS.getStartupScriptManager()
    
    
    
    let $ScriptEngineManager = Java.loadClass("javax.script.ScriptEngineManager")
    let Nashorn = new $ScriptEngineManager().getEngineFactories()[0].getScriptEngine()
    
    
    Nashorn.eval(`
      var Clazz = Java.type("java.lang.Class")
      var ClassFilter = Java.type("dev.latvian.mods.kubejs.plugin.ClassFilter")
      var HashSet = Java.type("java.util.HashSet")
      var ArrayList = Java.type("java.util.ArrayList")
    
      var ScriptManager$Clazz = Clazz.forName("dev.latvian.mods.kubejs.script.ScriptManager")
      var ScriptManager$classFilter$Field = ScriptManager$Clazz.getDeclaredField("classFilter")
    
      var ClassFilter$Clazz = Clazz.forName("dev.latvian.mods.kubejs.plugin.ClassFilter")
      var ClassFilter$denyStrong$Field = ClassFilter$Clazz.getDeclaredField("denyStrong")
      var ClassFilter$denyWeak$Field = ClassFilter$Clazz.getDeclaredField("denyWeak")
      
      ScriptManager$classFilter$Field.setAccessible(true)
      ClassFilter$denyStrong$Field.setAccessible(true)
      ClassFilter$denyWeak$Field.setAccessible(true)
    
      var unlock=function(ScriptMagager){
        var ClassFilter = ScriptManager$classFilter$Field.get(ScriptMagager)
        ClassFilter$denyStrong$Field.set(ClassFilter,new HashSet())
        ClassFilter$denyWeak$Field.set(ClassFilter,new ArrayList())
      }
    `)
    //参数传入scriptmanager即可爆破classfilter
    Nashorn.invokeFunction("unlock",ServerScriptMagager)
    let $File = Java.loadClass("java.io.File")
    
    妙妙工具 kubejs unsafe

  • [原创]使用kjs进行文件的删除
    忆然忆 忆然

    本文使用:CC-BY-NC-SA 4.0协议

    因为kjs的JsonIO并未限制文件名称的后缀
    因此这个操作并不安全

    kubejs的jsonio可以将第二个参数填入空字符串来删除文件
    JsonIO.write('kubejs/assets/test.nbt', "")
    如此便删除了.minecraft/kubejs/assets里面的test.nbt文件

    灵感大王 kubejs 危险行为 数据操作

  • [原创?][KJS6][EE.JS]较为方便地为矿物提供注册与通用配方修改的轮子
    忆然忆 忆然

    你的mod加载器和版本的tag呢(

    妙妙工具 kubejs

  • [原创][KubeJS 6][BrokenClassFilter]关于反射的应用场景与使用实例的论述
    忆然忆 忆然

    @不是椰浆 彳亍,我去塞一个

    妙妙工具 kubejs forge

  • [1.20.1]强制加载并渲染特定区块
    忆然忆 忆然

    @Mafuyu 区块强制加载有用(点头

    灵感大王 渲染 forge

  • [1.20.1]强制加载并渲染特定区块
    忆然忆 忆然

    前排瞻仰伟大的真冬女神,真是太有用了(爱你)

    灵感大王 渲染 forge

  • 【典型案例】崩溃求解答
    忆然忆 忆然

    @半梦 你紫菜吧

    周公解梦

  • 在这测试一下各种功能
    忆然忆 忆然

    我测!

    壁画石窟

  • 已经,没有modding的理由了
    忆然忆 忆然

    不modding,那就铜丝你👿

    壁画石窟
  • 1
  • 2
  • 1 / 2
  • 登录

  • 没有帐号? 注册

  • 登录或注册以进行搜索。
  • 第一个帖子
    最后一个帖子
0
  • 版块
  • 最新
  • 热门
  • 标签
  • 群组