Merge branch 'master' into light
This commit is contained in:
commit
ac9fcd9ece
122 files changed
+7753
-1373
No files matched your search
@@ -0,0 +1,53 @@
|
||||
// This file isn't necessary at all, because the language module would use the strings coded in the source if language "none" is selected.
|
||||
// So en_us is the default language and probably no change will be made after loading this file.
|
||||
// But it could be a good example for writing the language file for other languages.
|
||||
|
||||
{
|
||||
"// Rules:": "",
|
||||
"rule.portalSuffocationFix.name": "",
|
||||
"// the key is genetated as:" : "String.format('rule.%s.name', rule.name)",
|
||||
|
||||
|
||||
"rule.portalSuffocationFix.desc": "",
|
||||
"// the key is genetated as:" : "String.format('rule.%s.desc', rule.name)",
|
||||
|
||||
|
||||
"rule.portalSuffocationFix.extra.0": "",
|
||||
"rule.portalSuffocationFix.extra.1": "",
|
||||
"// the key is genetated as:" : "String.format('rule.%s.extra.%i', rule.name, index)",
|
||||
|
||||
|
||||
"// Categories:": "",
|
||||
|
||||
"category.bugfix": "bugfix",
|
||||
"category.survival": "survival",
|
||||
"category.creative": "creative",
|
||||
"category.experimental": "experimental",
|
||||
"category.optimization": "optimization",
|
||||
"category.feature": "feature",
|
||||
"category.command": "command",
|
||||
"category.tnt": "TNT",
|
||||
"category.dispenser": "dispenser",
|
||||
"category.scarpet": "scarpet",
|
||||
"category.client": "client",
|
||||
|
||||
"// Settings command UI elements": "",
|
||||
|
||||
"ui.browse_categories": "Browse categories",
|
||||
"ui.list_all_%(cat)s_settings": "list all %s settings",
|
||||
"ui.version": "Version",
|
||||
"ui.current_%(mod)s_settings": "Current %s settings",
|
||||
"ui.switch_to": "Switch to",
|
||||
"ui.settings_are_locked": "settings are locked",
|
||||
"ui.is_set_to": "is set to",
|
||||
"ui.unknown_rule": "Unknown rule",
|
||||
"ui.current_%(mod)s_startup_settings_from_%(conf)s": "Current %s Startup Settings from %s",
|
||||
"ui.%(mod)s_settings_matching_'%(query)s'": "%s settings matching \"%s\" ",
|
||||
"ui.all_%(mod)s_settings": "All %s settings",
|
||||
"ui.tags": "Tags",
|
||||
"ui.change_permanently": "Change permanently",
|
||||
"ui.click_to_keep_the_settings_in_%(conf)s_to_save_across_restarts": "click to keep the settings in %s to save across restarts",
|
||||
"ui.rule_%(rule)s_will_now_default_to_%(value)s": "rule %s will now default to %s",
|
||||
"ui.current_value": "current value"
|
||||
|
||||
}
|
||||
@@ -0,0 +1,234 @@
|
||||
{
|
||||
"rule.antiCheatDisabled.name": "移动检测通杀",
|
||||
"rule.antiCheatDisabled.desc": "防止玩家因为“本服务器未启用飞行”,“移动过快”等原因被踢出",
|
||||
|
||||
"rule.carpets.name": "放置地毯执行功能",
|
||||
"rule.carpets.desc": "通过放置地毯方块快捷执行部分功能",
|
||||
|
||||
"rule.combineXPOrbs.name": "经验球合并",
|
||||
"rule.combineXPOrbs.desc": "会将多个小经验球合并为更大的经验球",
|
||||
|
||||
"rule.commandCameramode.name": "灵魂出窍模式",
|
||||
"rule.commandCameramode.desc": "启用/c和/s命令使得玩家可以在生存模式和观察者模式间切换",
|
||||
"rule.commandCameramode.extra.0": "/c和/s命令所有玩家(包括非OP玩家)都可以使用",
|
||||
|
||||
"rule.commandDistance.name": "距离测量",
|
||||
"rule.commandDistance.desc": "启用/distance命令以测量游戏中两点间距离",
|
||||
"rule.commandDistance.extra.0": "可以通过放置棕色地毯的方式使用本功能,前提是“放置地毯执行功能”已启用",
|
||||
|
||||
"rule.commandDraw.name": "画图",
|
||||
"rule.commandDraw.desc": "启用/draw命令以允许绘制一些简单图形",
|
||||
|
||||
"rule.commandInfo.name": "获取方块数据",
|
||||
"rule.commandInfo.desc": "启用/info命令以获取方块数据",
|
||||
"rule.commandInfo.extra.0": "可以通过放置灰色地毯的方式使用本功能,前提是“放置地毯执行功能”已启用",
|
||||
|
||||
"rule.commandLog.name": "游戏数据监视器",
|
||||
"rule.commandLog.desc": "启用/log命令以在聊天栏/Tab栏监视游戏部分数据",
|
||||
|
||||
"rule.commandPerimeterInfo.name": "刷怪区域搜寻器",
|
||||
"rule.commandPerimeterInfo.desc": "启用/perimeterinfo命令以搜寻周围的可刷怪区域",
|
||||
|
||||
"rule.commandPlayer.name": "假人控制",
|
||||
"rule.commandPlayer.desc": "启用/player命令以控制/召唤玩家",
|
||||
|
||||
"rule.commandScript.name": "地毯脚本控制器",
|
||||
"rule.commandScript.desc": "启用/script相关命令",
|
||||
"rule.commandScript.extra.0": "一个Scarpet语言的游戏内API",
|
||||
|
||||
"rule.commandSpawn.name": "刷怪追踪器",
|
||||
"rule.commandSpawn.desc": "启用/spawn命令用于怪物生成追踪",
|
||||
|
||||
"rule.commandTick.name": "游戏时钟控制器",
|
||||
"rule.commandTick.desc": "启用/tick命令以控制游戏时钟",
|
||||
|
||||
"rule.commandTrackAI.name": "AI追踪器",
|
||||
"rule.commandTrackAI.desc": "启用/track命令以追踪生物的AI",
|
||||
|
||||
"rule.ctrlQCraftingFix.name": "ctrlQ合成修复",
|
||||
"rule.ctrlQCraftingFix.desc": "在合成时允许使用ctrl+Q快捷键扔出结果格内所有物品",
|
||||
|
||||
"rule.customMOTD.name": "MOTD更改",
|
||||
"rule.customMOTD.desc": "设置一个不同的MOTD信息",
|
||||
"rule.customMOTD.extra.0": "使用'_'时将发送默认MOTD(从server.properties中读取)",
|
||||
|
||||
"rule.defaultLoggers.name": "默认游戏监视器",
|
||||
"rule.defaultLoggers.desc": "为所有新进入玩家设置部分监视器默认开启",
|
||||
"rule.defaultLoggers.extra.0": "比如设置'tps,mobcaps'作为默认监视器",
|
||||
|
||||
"rule.desertShrubs.name": "树苗在沙漠干枯",
|
||||
"rule.desertShrubs.desc": "树苗将在附近无水源的沙漠群系枯萎",
|
||||
|
||||
"rule.disableSpawnChunks.name": "允许出生点区块卸载",
|
||||
"rule.disableSpawnChunks.desc": "允许出生点区块卸载",
|
||||
|
||||
"rule.explosionNoBlockDamage.name": "防爆",
|
||||
"rule.explosionNoBlockDamage.desc": "任何形式的爆炸都不会摧毁方块",
|
||||
|
||||
"rule.extremeBehaviours.name": "随机极端情况",
|
||||
"rule.extremeBehaviours.desc": "大幅度提升极端情况出现概率,仅用于测试",
|
||||
"rule.extremeBehaviours.extra.0": "发射器和投掷器将使用最大随机刻",
|
||||
|
||||
"rule.fastRedstoneDust.name": "红石粉卡顿优化",
|
||||
"rule.fastRedstoneDust.desc": "红石粉卡顿优化 作者 Theosib",
|
||||
|
||||
"rule.fillLimit.name": "fill/clone上限更改",
|
||||
"rule.fillLimit.desc": "将fill/clone上限更改为自己需要的值",
|
||||
"rule.fillLimit.extra.0": "你必须在1-20M之间取一个值",
|
||||
|
||||
"rule.fillUpdates.name": "fill更新开关",
|
||||
"rule.fillUpdates.desc": "fill/clone/setblock命令以及结构方块执行时是否产生更新",
|
||||
"rule.fillUpdates.extra.0": "设置为true有更新 设置为false时为无更新",
|
||||
|
||||
"rule.flatWorldStructureSpawning.name": "结构怪在超平坦世界生成",
|
||||
"rule.flatWorldStructureSpawning.desc": "允许结构怪在超平坦世界生成",
|
||||
|
||||
"rule.flippinCactus.name": "仙人掌扳手",
|
||||
"rule.flippinCactus.desc": "允许使用仙人掌调整方块朝向,并且不会产生更新",
|
||||
|
||||
"rule.hardcodeTNTangle.name": "硬编码TNT角度",
|
||||
"rule.hardcodeTNTangle.desc": "把TNT水平随机角度设为固定值,可用于测试机器",
|
||||
"rule.hardcodeTNTangle.extra.0": "默认为-1,必须在0与360之间,或者-1",
|
||||
|
||||
"rule.hopperCounters.name": "漏斗计数器",
|
||||
"rule.hopperCounters.desc": "漏斗指向的羊毛会计算经过的物品",
|
||||
"rule.hopperCounters.extra.0": "在羊毛上放置红色或绿色地毯,使用/counter命令可启用",
|
||||
"rule.hopperCounters.extra.1": "使用 /counter <color?> reset重置计数器,使用/counter <color?>查询",
|
||||
"rule.hopperCounters.extra.2": "在生存模式,在同色羊毛上放绿地毯可以查询,放红地毯重置",
|
||||
"rule.hopperCounters.extra.3": "数据是全局性在玩家间共享的,并且有16颜色可用",
|
||||
"rule.hopperCounters.extra.4": "物品会被销毁,每个漏斗每tick销毁一组物品",
|
||||
|
||||
"rule.huskSpawningInTemples.name": "尸壳在神殿里生成",
|
||||
"rule.huskSpawningInTemples.desc": "只有尸壳会在沙漠神殿生成",
|
||||
|
||||
"rule.lagFreeSpawning.name": "延迟自然生成",
|
||||
"rule.lagFreeSpawning.desc": "生物生成需要更少的CPU和内存",
|
||||
|
||||
"rule.leadFix.name": "栓绳修复",
|
||||
"rule.leadFix.desc": "修复栓绳在未加载区块中,变得不可见的问题",
|
||||
|
||||
"rule.maxEntityCollisions.name": "最大实体挤压数",
|
||||
"rule.maxEntityCollisions.desc": "设定最大实体挤压限制,0表示无限大",
|
||||
|
||||
"rule.mergeTNT.name": "合并TNT",
|
||||
"rule.mergeTNT.desc": "合并静止的点燃的tnt实体",
|
||||
|
||||
"rule.missingTools.name": "工具缺失修复",
|
||||
"rule.missingTools.desc": "活塞,玻璃和海绵可以用合适的工具更快地破坏",
|
||||
|
||||
"rule.movableBlockEntities.name": "容器移动",
|
||||
"rule.movableBlockEntities.desc": "活塞可推动方块实体,比如箱子,漏斗",
|
||||
|
||||
"rule.onePlayerSleeping.name": "单个玩家睡觉",
|
||||
"rule.onePlayerSleeping.desc": "服务器里一个玩家睡觉可跳过夜晚",
|
||||
|
||||
"rule.optimizedTNT.name": "TNT优化",
|
||||
"rule.optimizedTNT.desc": "tnt在相同的地点或在流体里,爆炸造成更小的延迟",
|
||||
|
||||
"rule.persistentParrots.name": "鹦鹉停留",
|
||||
"rule.persistentParrots.desc": "鹦鹉不会离开你的肩膀,除非你收到伤害",
|
||||
|
||||
"rule.placementRotationFix.name": "放置旋转修复",
|
||||
"rule.placementRotationFix.desc": "修复了玩家放置方块时快速转身造成的问题",
|
||||
|
||||
"rule.pushLimit.name": "自定义推动上限",
|
||||
"rule.pushLimit.desc": "自定义活塞推动上限",
|
||||
"rule.pushLimit.extra.0": "你必须在1-1024中选取一个值",
|
||||
|
||||
"rule.quasiConnectivity.name": "qC激活开关",
|
||||
"rule.quasiConnectivity.desc": "活塞,发射器和投掷器在他们上方方块激活时是否响应",
|
||||
"rule.quasiConnectivity.extra.0": "设置为true为开启 设置为false为禁用",
|
||||
|
||||
"rule.railPowerLimit.name": "自定义动力铁轨激活距离",
|
||||
"rule.railPowerLimit.desc": "动力铁轨激活上限可自定义",
|
||||
"rule.railPowerLimit.extra.0": "你必须在1-1024中选取一个值",
|
||||
|
||||
"rule.renewableCoral.name": "珊瑚可再生",
|
||||
"rule.renewableCoral.desc": "使用骨粉可催熟珊瑚以生成珊瑚结构",
|
||||
|
||||
"rule.renewableSponges.name": "海绵可再生",
|
||||
"rule.renewableSponges.desc": "守卫者将在被雷击后会变为远古守卫者",
|
||||
|
||||
"rule.rotatorBlock.name": "仙人掌扳手发射器版",
|
||||
"rule.rotatorBlock.desc": "发射器中的仙人掌可以旋转方块(尽可能以逆时针)",
|
||||
|
||||
"rule.scriptsAutoload.name": "Scarpet脚本自动加载",
|
||||
"rule.scriptsAutoload.desc": "在服务器/世界加载的时候将会自动从世界文件中加载Scarpet脚本文件",
|
||||
"rule.scriptsAutoload.extra.0": "/script命令必须启用",
|
||||
|
||||
"rule.shulkerSpawningInEndCities.name": "潜影贝重生",
|
||||
"rule.shulkerSpawningInEndCities.desc": "潜影贝将会在末地城中重生",
|
||||
|
||||
"rule.silverFishDropGravel.name": "蠹虫钻出方块掉落沙砾",
|
||||
"rule.silverFishDropGravel.desc": "蠹虫钻出方块时会掉落沙砾",
|
||||
|
||||
"rule.smoothClientAnimations.name": "平滑客户端动画",
|
||||
"rule.smoothClientAnimations.desc": "低TPS设置时可以使客户端动画更加平滑",
|
||||
"rule.smoothClientAnimations.extra.0": "仅在单人游戏中生效,并且会降低客户端运行速度",
|
||||
|
||||
"rule.stackableShulkerBoxes.name": "潜影盒堆叠",
|
||||
"rule.stackableShulkerBoxes.desc": "空潜影盒仍在地上时将自动堆叠,直至堆叠为1组",
|
||||
"rule.stackableShulkerBoxes.extra.0": "在物品GUI中,请使用shift键+单击以移动整组潜影盒",
|
||||
|
||||
"rule.summonNaturalLightning.name": "召唤闪电自然化",
|
||||
"rule.summonNaturalLightning.desc": "召唤的闪电将拥有所有自然生成闪电拥有的特性",
|
||||
|
||||
"rule.tntDoNotUpdate.name": "TNT放置时不产生更新",
|
||||
"rule.tntDoNotUpdate.desc": "TNT在放置时不会产生任何方块更新(不会激活)",
|
||||
|
||||
"rule.tntPrimerMomentumRemoved.name": "移除TNT点燃时随机动量",
|
||||
"rule.tntPrimerMomentumRemoved.desc": "TNT点燃时的随机动量将被移除",
|
||||
|
||||
"rule.tntRandomRange.name": "TNT爆炸范围设置",
|
||||
"rule.tntRandomRange.desc": "设置TNT随机爆炸范围为一个固定的值,设为-1以禁用",
|
||||
"rule.tntRandomRange.extra.0": "必须启用optimizedTNT功能",
|
||||
"rule.tntRandomRange.extra.1": "不能为负值,除了-1",
|
||||
|
||||
"rule.unloadedEntityFix.name": "未加载实体修复",
|
||||
"rule.unloadedEntityFix.desc": "进入或者被推入未加载区块的实体不会消失",
|
||||
|
||||
"rule.viewDistance.name": "自定义视距",
|
||||
"rule.viewDistance.desc": "改变服务器视距,设为0以使用默认值",
|
||||
"rule.viewDistance.extra.0": "你必须在0(使用服务器默认设置)-32取一个整数",
|
||||
|
||||
"rule.xpNoCooldown.name": "经验吸收无冷却",
|
||||
"rule.xpNoCooldown.desc": "玩家吸收经验球时不会有冷却时间",
|
||||
|
||||
"rule.portalSuffocationFix.name": "传送门窒息修复",
|
||||
"rule.portalSuffocationFix.desc": "使下界传送门正确地传送实体",
|
||||
"rule.portalSuffocationFix.extra.0": "传送的实体将不再卡在黑曜石里面",
|
||||
|
||||
"rule.portalCreativeDelay.name": "创造玩家不被地狱门传送",
|
||||
"rule.portalCreativeDelay.desc": "创造模式的玩家将不会立即被地狱门传送",
|
||||
|
||||
|
||||
"category.bugfix": "BUG修复",
|
||||
"category.survival": "生存",
|
||||
"category.creative": "创造",
|
||||
"category.experimental": "试验性",
|
||||
"category.optimization": "优化",
|
||||
"category.feature": "特性",
|
||||
"category.command": "指令",
|
||||
"category.tnt": "TNT",
|
||||
"category.dispenser": "发射器",
|
||||
"category.scarpet": "scarpet脚本语言",
|
||||
"category.client": "客户端",
|
||||
|
||||
"ui.browse_categories": "浏览分类",
|
||||
"ui.list_all_%(cat)s_settings": "列出所有 %s 选项",
|
||||
"ui.version": "版本",
|
||||
"ui.current_%(mod)s_settings": "目前启用的 %s 选项",
|
||||
"ui.switch_to": "切换至",
|
||||
"ui.settings_are_locked": "选项被锁定",
|
||||
"ui.is_set_to": "被设置为",
|
||||
"ui.unknown_rule": "未知的规则选项",
|
||||
"ui.current_%(mod)s_startup_settings_from_%(conf)s": "目前启用的%s选项,从%s中读取得",
|
||||
"ui.%(mod)s_settings_matching_'%(query)s'": "%s中符合\"%s\"的选项:",
|
||||
"ui.all_%(mod)s_settings": "所有的%s选项",
|
||||
"ui.tags": "分类",
|
||||
"ui.change_permanently": "永久更改",
|
||||
"ui.click_to_keep_the_settings_in_%(conf)s_to_save_across_restarts": "点击此按钮以使此选项保存于%s,重启后依旧生效",
|
||||
"ui.rule_%(rule)s_will_now_default_to_%(value)s": "规则%s将会被默认设置为%s",
|
||||
"ui.current_value": "当前的值"
|
||||
|
||||
}
|
||||
@@ -0,0 +1,234 @@
|
||||
{
|
||||
"rule.antiCheatDisabled.name": "關閉伺服器作弊檢測",
|
||||
"rule.antiCheatDisabled.desc": "防止玩家因為“本伺服器不允許飛行”,“移動速度過快”等原因被請出伺服器",
|
||||
|
||||
"rule.carpets.name": "放置地毯顯示進階數據",
|
||||
"rule.carpets.desc": "通過把地毯放置在地上取得更進階信息",
|
||||
|
||||
"rule.combineXPOrbs.name": "合併小經驗球",
|
||||
"rule.combineXPOrbs.desc": "會將大量的小經驗球合併成等效的大經驗球",
|
||||
|
||||
"rule.commandCameramode.name": "旁觀者模式",
|
||||
"rule.commandCameramode.desc": "允許玩家使用/c切換成旁觀者模式,利用/s切換回生存模式",
|
||||
"rule.commandCameramode.extra.0": "/c及/s不需要op權限也可使用",
|
||||
|
||||
"rule.commandDistance.name": "距離測定",
|
||||
"rule.commandDistance.desc": "使用/distance指令測定兩點的距離",
|
||||
"rule.commandDistance.extra.0": "可以使用放置棕色地毯來使用此功能,前提是“放置地毯顯示進階數據”已啟用",
|
||||
|
||||
"rule.commandDraw.name": "繪製圖形",
|
||||
"rule.commandDraw.desc": "使用/draw指令以允許繪製一些簡易圖形",
|
||||
|
||||
"rule.commandInfo.name": "獲取方塊進階資訊",
|
||||
"rule.commandInfo.desc": "允許使用/info指令以獲得方塊進階資訊",
|
||||
"rule.commandInfo.extra.0": "可以使用放置灰色地毯來使用此功能,前提是“放置地毯顯示進階數據”已啟用",
|
||||
|
||||
"rule.commandLog.name": "遊戲數據追蹤器",
|
||||
"rule.commandLog.desc": "允許使用/log指令使在Tab欄位追蹤遊戲部分數據",
|
||||
|
||||
"rule.commandPerimeterInfo.name": "刷怪區域追蹤器",
|
||||
"rule.commandPerimeterInfo.desc": "允許使用/perimeterinfo指令以探查周圍可生怪區域",
|
||||
|
||||
"rule.commandPlayer.name": "機器人控制",
|
||||
"rule.commandPlayer.desc": "允許使用/player指令以控制/召喚已存在的玩家id作為機器人",
|
||||
|
||||
"rule.commandScript.name": "地毯腳本控制器",
|
||||
"rule.commandScript.desc": "允許使用/script相關指令",
|
||||
"rule.commandScript.extra.0": "一個Scarpet程式語言的遊戲內API",
|
||||
|
||||
"rule.commandSpawn.name": "刷怪追蹤器",
|
||||
"rule.commandSpawn.desc": "允許使用/spawn指令用於怪物生成追蹤",
|
||||
|
||||
"rule.commandTick.name": "遊戲時鐘控制器",
|
||||
"rule.commandTick.desc": "允許使用/tick指令控制遊戲內的伺服器端運行速度",
|
||||
|
||||
"rule.commandTrackAI.name": "AI追蹤器",
|
||||
"rule.commandTrackAI.desc": "允許使用/track指令以追蹤生物的AI",
|
||||
|
||||
"rule.ctrlQCraftingFix.name": "ctrlQ合成修復",
|
||||
"rule.ctrlQCraftingFix.desc": "在合成時允許使用ctrl+Q快捷鍵扔出結果格內所有物品",
|
||||
|
||||
"rule.customMOTD.name": "MOTD更改",
|
||||
"rule.customMOTD.desc": "設置一個不同的MOTD信息",
|
||||
"rule.customMOTD.extra.0": "設置成'_'時將採用默認的MOTD(從server.properties中讀取的)",
|
||||
|
||||
"rule.defaultLoggers.name": "默認開啟的遊戲數據追蹤器",
|
||||
"rule.defaultLoggers.desc": "為所有新加入的玩家設置部分遊戲數據追蹤器默認為開啟狀態",
|
||||
"rule.defaultLoggers.extra.0": "比如設置'tps,mobcaps'最為默認遊戲數據追蹤",
|
||||
|
||||
"rule.desertShrubs.name": "樹苗在沙漠中乾枯",
|
||||
"rule.desertShrubs.desc": "樹苗將在附近無水源狀態的沙漠生態群系變成枯灌木",
|
||||
|
||||
"rule.disableSpawnChunks.name": "允許出生點區塊被卸載",
|
||||
"rule.disableSpawnChunks.desc": "允許出生點區塊被卸載",
|
||||
|
||||
"rule.explosionNoBlockDamage.name": "爆炸不破壞方塊",
|
||||
"rule.explosionNoBlockDamage.desc": "任何形式的爆炸都無法摧毀方塊",
|
||||
|
||||
"rule.extremeBehaviours.name": "隨機參數極端化",
|
||||
"rule.extremeBehaviours.desc": "大幅度提升極端情況出現的概率,僅用於測試",
|
||||
"rule.extremeBehaviours.extra.0": "發射器和投擲器將使用最大隨機刻",
|
||||
|
||||
"rule.fastRedstoneDust.name": "紅石粉卡頓優化",
|
||||
"rule.fastRedstoneDust.desc": "紅石粉卡頓優化 作者 Theosib",
|
||||
|
||||
"rule.fillLimit.name": "fill/clone上限更改",
|
||||
"rule.fillLimit.desc": "將fill/clone上限更改為自己設定的值",
|
||||
"rule.fillLimit.extra.0": "你必須在1-2千萬之間取一個整數值",
|
||||
|
||||
"rule.fillUpdates.name": "fill更新設置",
|
||||
"rule.fillUpdates.desc": "fill/clone/setblock指令以及結構方塊執行時是否產生更新",
|
||||
"rule.fillUpdates.extra.0": "設置為true時有更新 設置為false時為無更新",
|
||||
|
||||
"rule.flatWorldStructureSpawning.name": "特定建築怪在超平坦世界生成",
|
||||
"rule.flatWorldStructureSpawning.desc": "允許特定建築的怪物在超平坦世界生成",
|
||||
|
||||
"rule.flippinCactus.name": "仙人掌扳手",
|
||||
"rule.flippinCactus.desc": "允許使用仙人掌調整方塊朝向,並且不會造成更新",
|
||||
|
||||
"rule.hardcodeTNTangle.name": "強制TNT角度",
|
||||
"rule.hardcodeTNTangle.desc": "把TNT水平隨機角度設定為固定值,可用於測試機器",
|
||||
"rule.hardcodeTNTangle.extra.0": "默認為-1,必須在0與360之間,或者-1",
|
||||
|
||||
"rule.hopperCounters.name": "漏斗計數器",
|
||||
"rule.hopperCounters.desc": "漏斗指向的羊毛方塊會計算吸收的物品並清除",
|
||||
"rule.hopperCounters.extra.0": "在羊毛方塊上放置紅色或綠色地毯,使用/counter指令可啟用",
|
||||
"rule.hopperCounters.extra.1": "使用 /counter <color?> reset重置計數器,使用/counter <color?>查詢資訊",
|
||||
"rule.hopperCounters.extra.2": "在生存模式,在同色羊毛上放置綠色地毯可以查詢,放紅色地毯重置",
|
||||
"rule.hopperCounters.extra.3": "數據是全伺服器玩家共享的,並且有16色可以使用",
|
||||
"rule.hopperCounters.extra.4": "物品會被銷毀,每個漏斗每tick銷毀一組物品",
|
||||
|
||||
"rule.huskSpawningInTemples.name": "屍殼在沙漠神殿裡生成",
|
||||
"rule.huskSpawningInTemples.desc": "只有屍殼會在沙漠神殿生成",
|
||||
|
||||
"rule.lagFreeSpawning.name": "延遲自然生成",
|
||||
"rule.lagFreeSpawning.desc": "生物生成需要更少的CPU和RAM",
|
||||
|
||||
"rule.leadFix.name": "栓繩修復",
|
||||
"rule.leadFix.desc": "修復栓繩在未加載區塊中,變得不可見的問題",
|
||||
|
||||
"rule.maxEntityCollisions.name": "最大實體擠壓數量",
|
||||
"rule.maxEntityCollisions.desc": "設定最大實體擠壓限制,0表示無限大",
|
||||
|
||||
"rule.mergeTNT.name": "合併TNT",
|
||||
"rule.mergeTNT.desc": "合併靜止的點燃的tnt實體",
|
||||
|
||||
"rule.missingTools.name": "工具缺失修復",
|
||||
"rule.missingTools.desc": "活塞,玻璃和海綿可以使用合適的工具更快地破壞",
|
||||
|
||||
"rule.movableBlockEntities.name": "容器方塊移動",
|
||||
"rule.movableBlockEntities.desc": "活塞可以推動具有容器標籤的方塊,比如箱子,漏斗",
|
||||
|
||||
"rule.onePlayerSleeping.name": "單個玩家睡覺跳過夜晚",
|
||||
"rule.onePlayerSleeping.desc": "只要伺服器中其中一人睡覺即可跳過全伺服器夜晚",
|
||||
|
||||
"rule.optimizedTNT.name": "TNT優化",
|
||||
"rule.optimizedTNT.desc": "tnt在相同位置或者在流體裡,爆炸將造成更低延遲",
|
||||
|
||||
"rule.persistentParrots.name": "鸚鵡停留",
|
||||
"rule.persistentParrots.desc": "鸚鵡不會離開你的肩膀,除非你受到傷害",
|
||||
|
||||
"rule.placementRotationFix.name": "放置旋轉問題修復",
|
||||
"rule.placementRotationFix.desc": "修復玩家放置方塊時快速轉身造成的問題",
|
||||
|
||||
"rule.pushLimit.name": "自訂義推動上限",
|
||||
"rule.pushLimit.desc": "自訂義活塞推動上限",
|
||||
"rule.pushLimit.extra.0": "你必須在1-1024中選取一個值,預設是12",
|
||||
|
||||
"rule.quasiConnectivity.name": "半連接激活開關",
|
||||
"rule.quasiConnectivity.desc": "活塞,發射器和投擲器在他們上方方塊激活時是否響應",
|
||||
"rule.quasiConnectivity.extra.0": "設置為true為開啟 設置為false為禁用",
|
||||
|
||||
"rule.railPowerLimit.name": "自訂義動力鐵軌激活距離",
|
||||
"rule.railPowerLimit.desc": "動力鐵軌激活距離能在此更改",
|
||||
"rule.railPowerLimit.extra.0": "你必須在1-1024中選取一個數值",
|
||||
|
||||
"rule.renewableCoral.name": "可再生珊瑚",
|
||||
"rule.renewableCoral.desc": "使用骨粉可催熟珊瑚以長成珊瑚方塊結構",
|
||||
|
||||
"rule.renewableSponges.name": "可再生海綿",
|
||||
"rule.renewableSponges.desc": "深海守衛將在被雷擊後變成遠古深海守衛",
|
||||
|
||||
"rule.rotatorBlock.name": "仙人掌扳手發射器版",
|
||||
"rule.rotatorBlock.desc": "發射器中的仙人掌可以旋轉方塊(盡可能以逆時針)",
|
||||
|
||||
"rule.scriptsAutoload.name": "Scarpet腳本自動加載",
|
||||
"rule.scriptsAutoload.desc": "在伺服器/世界加載的時候將會自動從世界文件中加載Scarpet腳本文件",
|
||||
"rule.scriptsAutoload.extra.0": "/script指令必須為啟用狀態",
|
||||
|
||||
"rule.shulkerSpawningInEndCities.name": "可重生界伏蚌",
|
||||
"rule.shulkerSpawningInEndCities.desc": "界伏蚌將會在終界城市中重生",
|
||||
|
||||
"rule.silverFishDropGravel.name": "蠹魚鑽出放塊掉落礫石",
|
||||
"rule.silverFishDropGravel.desc": "蠹魚鑽出放塊時會掉落礫石",
|
||||
|
||||
"rule.smoothClientAnimations.name": "更平暢玩家端動畫",
|
||||
"rule.smoothClientAnimations.desc": "降低TPS設置時可以使玩家端動畫更加平暢",
|
||||
"rule.smoothClientAnimations.extra.0": "僅在單人模式中生效,並且會降低玩家端運行速度",
|
||||
|
||||
"rule.stackableShulkerBoxes.name": "可堆疊界伏盒",
|
||||
"rule.stackableShulkerBoxes.desc": "空的界伏盒扔在地上時將會自動堆疊,直到堆疊為1組",
|
||||
"rule.stackableShulkerBoxes.extra.0": "在物品GUI中,請使用shift鍵+單擊以移動整組界伏盒",
|
||||
|
||||
"rule.summonNaturalLightning.name": "召喚閃電自然化",
|
||||
"rule.summonNaturalLightning.desc": "召喚的閃電將具有自然生成時的特性",
|
||||
|
||||
"rule.tntDoNotUpdate.name": "TNT放置時不會被更新",
|
||||
"rule.tntDoNotUpdate.desc": "TNT在放置時不會產生任何方塊更新(不會激活)",
|
||||
|
||||
"rule.tntPrimerMomentumRemoved.name": "移除TNT點燃時隨機動量",
|
||||
"rule.tntPrimerMomentumRemoved.desc": "TNT點燃時的隨機動量將被移除",
|
||||
|
||||
"rule.tntRandomRange.name": "TNT爆炸範圍設置",
|
||||
"rule.tntRandomRange.desc": "設置TNT隨機爆炸範圍為一個固定的值,設為-1以禁用",
|
||||
"rule.tntRandomRange.extra.0": "必須啟用optimizedTNT功能",
|
||||
"rule.tntRandomRange.extra.1": "不能設置為負數,除了-1",
|
||||
|
||||
"rule.unloadedEntityFix.name": "未加載實體修復",
|
||||
"rule.unloadedEntityFix.desc": "進入或者被推入未加載區塊的實體不會消失",
|
||||
|
||||
"rule.viewDistance.name": "自訂義視野",
|
||||
"rule.viewDistance.desc": "改變伺服器端視野距離,設置為0以使用默認值",
|
||||
"rule.viewDistance.extra.0": "你必須在0(使用伺服器默認設置)-32取一個整數",
|
||||
|
||||
"rule.xpNoCooldown.name": "經驗球吸收無冷卻",
|
||||
"rule.xpNoCooldown.desc": "玩家吸收經驗球不會有冷卻時間",
|
||||
|
||||
"rule.portalSuffocationFix.name": "傳送門窒息修復",
|
||||
"rule.portalSuffocationFix.desc": "使地獄傳送門正確地傳送實體",
|
||||
"rule.portalSuffocationFix.extra.0": "傳送的實體將不再卡在黑曜石裡",
|
||||
|
||||
"rule.portalCreativeDelay.name": "創造模式玩家地獄門傳送延遲",
|
||||
"rule.portalCreativeDelay.desc": "創造模式下使用地獄傳送門將同生存時產生延遲",
|
||||
|
||||
|
||||
"category.bugfix": "BUG修復",
|
||||
"category.survival": "生存用",
|
||||
"category.creative": "創造用",
|
||||
"category.experimental": "實驗用",
|
||||
"category.optimization": "優化",
|
||||
"category.feature": "特性",
|
||||
"category.command": "指令",
|
||||
"category.tnt": "TNT",
|
||||
"category.dispenser": "發射器",
|
||||
"category.scarpet": "scarpet腳本程式語言",
|
||||
"category.client": "玩家端",
|
||||
|
||||
"ui.browse_categories": "瀏覽分類",
|
||||
"ui.list_all_%(cat)s_settings": "列出所有 %s 選項",
|
||||
"ui.version": "版本",
|
||||
"ui.current_%(mod)s_settings": "目前啟用的 %s 選項",
|
||||
"ui.switch_to": "切換至",
|
||||
"ui.settings_are_locked": "選項被鎖定",
|
||||
"ui.is_set_to": "被設置為",
|
||||
"ui.unknown_rule": "未知的規則選項",
|
||||
"ui.current_%(mod)s_startup_settings_from_%(conf)s": "目前啟用的%s選項,從%s中讀取得",
|
||||
"ui.%(mod)s_settings_matching_'%(query)s'": "%s中符合\"%s\"的選項:",
|
||||
"ui.all_%(mod)s_settings": "所有的%s選項",
|
||||
"ui.tags": "分類",
|
||||
"ui.change_permanently": "設為預設",
|
||||
"ui.click_to_keep_the_settings_in_%(conf)s_to_save_across_restarts": "點擊此按鈕以使此選項保存於%s,重啟後依舊生效",
|
||||
"ui.rule_%(rule)s_will_now_default_to_%(value)s": "規則%s將會被默認設置為%s",
|
||||
"ui.current_value": "當前的值"
|
||||
|
||||
}
|
||||
@@ -49,6 +49,11 @@ __command() ->
|
||||
print(' "/camera show": Show current path particles');
|
||||
print(' color of particles used is different for different players');
|
||||
print(' "/camera hide": Hide path display');
|
||||
print(' "/camera prefer_smooth_play": ');
|
||||
print(' Eat CPU spikes and continue as usual');
|
||||
print(' "/camera prefer_synced_play": ');
|
||||
print(' After CPU spikes jump to where you should be');
|
||||
|
||||
print('');
|
||||
''
|
||||
);
|
||||
@@ -483,6 +488,11 @@ hide() ->
|
||||
);
|
||||
|
||||
// runs the player on the path
|
||||
global_prefer_sync = false;
|
||||
|
||||
prefer_smooth_play() -> (global_prefer_sync = false; 'Smooth path play');
|
||||
prefer_synced_play() -> (global_prefer_sync = true; 'Synchronized path play');
|
||||
|
||||
play() ->
|
||||
(
|
||||
if (err = __is_not_valid_for_motion(), exit(err));
|
||||
@@ -501,6 +511,7 @@ play() ->
|
||||
global_playing_path = true;
|
||||
mspt = 1000 / 60;
|
||||
start_time = time();
|
||||
very_start = start_time;
|
||||
point = 0;
|
||||
p = __get_player();
|
||||
try (
|
||||
@@ -514,9 +525,14 @@ play() ->
|
||||
modify(p, 'location', v);
|
||||
point += 1;
|
||||
end_time = time();
|
||||
took = end_time - start_time;
|
||||
if (took < mspt, sleep(mspt-took));
|
||||
start_time = time()
|
||||
if (global_prefer_sync,
|
||||
should_be = very_start + mspt*point;
|
||||
if (end_time < should_be, sleep(should_be-end_time) )
|
||||
,
|
||||
took = end_time - start_time;
|
||||
if (took < mspt, sleep(mspt-took));
|
||||
start_time = time()
|
||||
)
|
||||
)
|
||||
);
|
||||
);
|
||||
|
||||
@@ -0,0 +1,179 @@
|
||||
global_chunk_colors = m(
|
||||
// loaded ticking
|
||||
l(3, l(0xAAdd0000, 0x66990000)), // lime, green
|
||||
l(2, l(0xFF000000, 0x88000000)), // red
|
||||
l(1, l(0xFFcc0000, 0xbbaa0000)), // yellowish
|
||||
// 'unloaded' (in memory, so rather 'inaccessible')
|
||||
l(0, l(0xcccccc00, 0x11111100)), // gray / hi constast
|
||||
// stable full generation (for '0's, all 1,2,3 are always 'full')
|
||||
l('full', l(0xbbbbbb00, 0x88888800)), // gray
|
||||
// unstable final bits
|
||||
l('heightmaps', l(0x33333300, 0x22222200)), // checker
|
||||
l('spawn', l(0x00333300, 0x00222200)), // checker
|
||||
l('light_gen', l(0x55550000, 0x44440000)), // checker
|
||||
// stable features
|
||||
l('features', l(0x88bb2200, 0x66882200)), // green muddled
|
||||
//stable terrain
|
||||
l('liquid_carvers', l(0x65432100, 0x54321000)), // browns
|
||||
//unstable terrain - not generated yet
|
||||
l('carvers', l(0x33003300, 0x22002200)), // checker
|
||||
l('surface', l(0x33330000, 0x22220000)), // checker
|
||||
l('noise', l(0x33000000, 0x22000000)), // checker
|
||||
l('biomes', l(0x00330000, 0x00220000)), // checker
|
||||
l('structure_references', l(0x00003300, 0x00002200)), // checker
|
||||
// stable
|
||||
l('structure_starts', l(0x66666600, 0x22222200)), // darkgrey
|
||||
// not stated yet
|
||||
l('empty', l(0xFF888800, 0xDD444400)), // pink
|
||||
// proper not in memory
|
||||
l(null , l(0xFFFFFF00, 0xFFFFFF00)), // hwite
|
||||
|
||||
// ticket types
|
||||
l('player', l(0x0000DD00, 0x00008800)), // blue
|
||||
l('portal', l(0xAA00AA00, 0xAA00AA00)), // purple
|
||||
l('dragon', l(0xAA008800, 0xAA008800)), // purple
|
||||
l('forced', l(0xAABBFF00, 0x8899AA00)), // blue
|
||||
l('light', l(0xFFFF0000, 0xBBBB0000)), // yellow
|
||||
l('post_teleport', l(0xAA00AA00, 0xAA00AA00)), // purple
|
||||
l('start', l(0xDDFF0000, 0xDDFF0000)), // lime, green
|
||||
// recent chunk requests
|
||||
l('unknown', l(0xFF55FF00, 0xff99ff00)) // pink purple
|
||||
);
|
||||
|
||||
// map representing current displayed chunkloading setup
|
||||
global_current_setup = null;
|
||||
|
||||
// which blocks in the inventory represent which dimension
|
||||
global_block_markers = m(
|
||||
l('netherrack', 'the_nether'),
|
||||
l('grass_block', 'overworld'),
|
||||
l('end_stone', 'the_end')
|
||||
);
|
||||
|
||||
__on_player_uses_item(player, item_tuple, hand) ->
|
||||
(
|
||||
if (hand != 'mainhand', return());
|
||||
if (!has(global_block_markers, item_tuple:0), return());
|
||||
if (item_tuple:1%16 != 0, return());
|
||||
new_setup = true;
|
||||
if (global_current_setup,
|
||||
new_setup = __remove_previous_setup(player)
|
||||
);
|
||||
if (!new_setup, return());
|
||||
tag = nbt('{}');
|
||||
put(tag:'Enchantments','[]');
|
||||
put(tag:'Enchantments', '{lvl:1s,id:"minecraft:protection"}', 0);
|
||||
inventory_set(player, player~'selected_slot', item_tuple:1, item_tuple:0, tag);
|
||||
__setup_tracker(player, item_tuple);
|
||||
);
|
||||
|
||||
__remove_previous_setup(new_player) ->
|
||||
(
|
||||
if (!global_current_setup, return());
|
||||
global_running = false;
|
||||
p = player();
|
||||
if (p &&
|
||||
global_block_markers:((item = inventory_get(p, global_current_setup:'inventory_slot')):0)==global_current_setup:'source_dimension' &&
|
||||
item:1 == global_current_setup:'radius' &&
|
||||
item:2,
|
||||
inventory_set(p, global_current_setup:'inventory_slot', item:1, item:0, null); // disenchant
|
||||
if( new_player == p && new_player~'selected_slot' == global_current_setup:'inventory_slot',
|
||||
disabled = true
|
||||
);
|
||||
);
|
||||
global_current_setup = null;
|
||||
!disabled
|
||||
);
|
||||
|
||||
__setup_tracker(player, item) ->
|
||||
(
|
||||
setup = m();
|
||||
setup:'player_name' = str(player);
|
||||
setup:'inventory_slot' = player ~ 'selected_slot';
|
||||
setup:'plot_dimension' = player ~ 'dimension';
|
||||
setup:'plot_center' = map(pos(player), floor(_))-l(0,1,0);
|
||||
setup:'radius' = item:1;
|
||||
setup:'source_dimension' = global_block_markers:(item:0);
|
||||
multiplier = 1;
|
||||
if (setup:'source_dimension' != setup:'plot_dimension',
|
||||
multiplier = if (
|
||||
setup:'source_dimension' == 'the_nether', 1/8,
|
||||
setup:'source_dimension' == 'the_end', 0,
|
||||
8);
|
||||
);
|
||||
setup:'source_center' = setup:'plot_center' * multiplier;
|
||||
print(setup:'source_dimension'+' around '+setup:'source_center'+' with '+setup:'radius'+' radius ('+ (2*setup:'radius'+1)^2 +' chunks)');
|
||||
|
||||
l(sx, sy, sz) = setup:'source_center';
|
||||
global_status_cache = m();
|
||||
loop( 2*setup:'radius'+1, dx = _ - setup:'radius';
|
||||
loop( 2*setup:'radius'+1, dz = _ - setup:'radius';
|
||||
source_pos = l(sx+16*dx,sy,sz+16*dz);
|
||||
global_status_cache:source_pos = l(null, 0);
|
||||
)
|
||||
);
|
||||
global_current_setup = setup;
|
||||
global_running = true;
|
||||
schedule(0, '__chunk_visualizer_tick', player);
|
||||
);
|
||||
|
||||
global_status_cache = m();
|
||||
|
||||
__chunk_visualizer_tick(p) ->
|
||||
(
|
||||
setup = global_current_setup;
|
||||
if(!setup, return());
|
||||
if (!global_running, return());
|
||||
show_activity = (p~'holds':0 == 'redstone_torch');
|
||||
yval = setup:'plot_center':1+16;
|
||||
in_dimension( setup:'plot_dimension',
|
||||
l(sx, sy, sz) = setup:'source_center';
|
||||
l(px, py, pz) = setup:'plot_center';
|
||||
source_center = setup:'source_center';
|
||||
radius = setup:'radius';
|
||||
source_dimension = setup:'source_dimension';
|
||||
|
||||
shapes = l();
|
||||
now = tick_time();
|
||||
|
||||
loop( 2*radius+1, dx = _ - radius;
|
||||
loop( 2*radius+1, dz = _ - radius;
|
||||
changed = false;
|
||||
source_pos = l(sx+16*dx,sy,sz+16*dz);
|
||||
status = in_dimension( source_dimension,
|
||||
loaded_status = loaded_status(source_pos);
|
||||
if (loaded_status > 0, loaded_status, generation_status(source_pos))
|
||||
);
|
||||
// will mix with light ticket
|
||||
if (status=='light', status = 'light_gen');
|
||||
|
||||
|
||||
if (loaded_status > 0,
|
||||
tickets = in_dimension( source_dimension, chunk_tickets(source_pos));
|
||||
for(tickets,
|
||||
l(type, level) = _;
|
||||
if (show_activity || type != 'unknown',
|
||||
status = type;
|
||||
);
|
||||
);
|
||||
);
|
||||
l(cached_status, expiry) = global_status_cache:source_pos;
|
||||
changed = (status != cached_status);
|
||||
if ( changed || (expiry < now),
|
||||
global_status_cache:source_pos = l(status, now+100+floor(rand(40)));
|
||||
bpos = l(dx/2, yval, dz/2);
|
||||
bcol = global_chunk_colors:status:((dx+dz)%2);
|
||||
shapes += l('box', 150, 'from', bpos, 'to', bpos + l(0.5,0,0.5),
|
||||
'color', 0xffffff00, 'fill', bcol+128, 'follow', p, 'snap', 'xz');
|
||||
if (changed,
|
||||
pbcol = global_chunk_colors:cached_status:((dx+dz)%2);
|
||||
shapes += l('box', 0, 'from', bpos, 'to', bpos + l(0.5,0,0.5),
|
||||
'color', 0xffffff00, 'fill', pbcol+128, 'follow', p, 'snap', 'xz');
|
||||
);
|
||||
);
|
||||
);
|
||||
);
|
||||
draw_shape(shapes);
|
||||
);
|
||||
schedule(1, '__chunk_visualizer_tick', p)
|
||||
)
|
||||
@@ -185,3 +185,62 @@ __on_player_places_block(player, item_tuple, hand, block) ->
|
||||
print(' > count: '+count);
|
||||
print(' > nbt: '+nbt);
|
||||
);
|
||||
|
||||
__on_player_takes_damage(player, amount, source, entity) ->
|
||||
(
|
||||
print('');
|
||||
print('__on_player_takes_damage(player, amount, source, source_entity)');
|
||||
print('player takes damage:');
|
||||
print(' - player: '+player);
|
||||
print(' - amount: '+str('%.2f',amount));
|
||||
print(' - source: '+source);
|
||||
print(' - source_entity: '+entity);
|
||||
);
|
||||
|
||||
__on_player_deals_damage(player, amount, entity) ->
|
||||
(
|
||||
print('');
|
||||
print('__on_player_deals_damage(player, amount, target)');
|
||||
print('player deals damage:');
|
||||
print(' - player: '+player);
|
||||
print(' - amount: '+str('%.2f',amount));
|
||||
print(' - target: '+entity);
|
||||
);
|
||||
|
||||
__on_player_dies(player) ->
|
||||
(
|
||||
print('');
|
||||
print('__on_player_dies(player)');
|
||||
print('Player '+player+' dies.')
|
||||
);
|
||||
|
||||
__on_player_respawns(player) ->
|
||||
(
|
||||
print('');
|
||||
print('__on_player_respawns(player)');
|
||||
print('Player '+player+' respawns.')
|
||||
);
|
||||
|
||||
__on_player_changes_dimension(player, from_pos, from_dimension, to_pos, to_dimension) ->
|
||||
(
|
||||
print('');
|
||||
print('__on_player_changes_dimension(player, from_pos, from_dimension, to_pos, to_dimension)');
|
||||
print('player changes dimensions:');
|
||||
print(' - player: '+player);
|
||||
print(' - from '+from_dimension+' at '+map(from_pos, str('%.2f',_)));
|
||||
print(' - to '+to_dimension+if(to_pos == null, '', ' at '+map(to_pos, str('%.2f',_))));
|
||||
);
|
||||
|
||||
__on_player_connects(player) ->
|
||||
( // you will never sees it
|
||||
print('');
|
||||
print('__on_player_connects(player)');
|
||||
print('Player '+player+' connects.')
|
||||
);
|
||||
|
||||
__on_player_disconnects(player, reason) ->
|
||||
( // you will never sees it either
|
||||
print('');
|
||||
print('__on_player_disconnects(player)');
|
||||
print('Player '+player+' disconnects because: '+reason)
|
||||
);
|
||||
@@ -6,13 +6,13 @@ global_renderers = m(
|
||||
l('handler', '__structure_renderer'),
|
||||
l('tasks', m()),
|
||||
l('range', 3),
|
||||
l('max_pieces', 4)
|
||||
l('max_pieces', 6)
|
||||
)),
|
||||
l('chunks', m(
|
||||
l('active', false),
|
||||
l('handler', '__chunk_renderer'),
|
||||
l('tasks', m()),
|
||||
l('range', 4)
|
||||
l('range', 6)
|
||||
)),
|
||||
l('shapes', m(
|
||||
l('active', false),
|
||||
@@ -89,22 +89,25 @@ __structure_renderer(player_name) ->
|
||||
for (starts, l(position, name) = _;
|
||||
structure_data = structures(position):name;
|
||||
if (!structure_data, continue()); // messed up references - shouldn't happen
|
||||
structure_pieces = structures(position, name);
|
||||
structure_pieces = structures(position, name):'pieces';
|
||||
if (!structure_pieces, continue()); // messed up references - shouldn't happen
|
||||
l(from, to) = structure_data;
|
||||
total_size = _euclidean(from, to);
|
||||
density = max(10, total_size/10);
|
||||
particle_rect('dust 0 1 1 2', from, to+1, density);
|
||||
draw_shape('box', 15, 'from', from, 'to', to+1, 'color', 0x00FFFFFF, 'line', 3, 'fill', 0x00FFFF22);
|
||||
structure_pieces = slice(sort_key(structure_pieces, _euclidean_sq((_:2+_:3)/2,ppos)), 0, config:'max_pieces');
|
||||
for (structure_pieces, l(piece, direction, from, to) = _;
|
||||
factor = 1- _i / config:'max_pieces' / 2;
|
||||
total_size = _euclidean(from, to);
|
||||
density = max(_i+1, total_size/10);
|
||||
particle_rect(str('dust %.2f %.2f 1 1',factor, factor), from, to+1, density);
|
||||
r = 255 - floor(128 * _i/config:'max_pieces');
|
||||
g = r;
|
||||
b = 255;
|
||||
a = 255;
|
||||
color = 256*(b+256*(g+256*r)); // leaving out a
|
||||
draw_shape('box', 15, 'from', from, 'to', to+1, 'color', color+a);
|
||||
draw_shape('box', 15, 'from', from, 'to', to+1, 'color', 0xffffff00, 'fill', 0xffffff22);
|
||||
)
|
||||
)
|
||||
);
|
||||
schedule(3, '__structure_renderer', player_name);
|
||||
schedule(10, '__structure_renderer', player_name);
|
||||
);
|
||||
|
||||
__chunk_renderer(player_name) ->
|
||||
@@ -115,28 +118,32 @@ __chunk_renderer(player_name) ->
|
||||
// get lower corner of the chunk
|
||||
ppos = map(pos(p)/16, floor(_))*16;
|
||||
ppos:1 = 0;
|
||||
|
||||
r = config:'range';
|
||||
for(range(-r,r), cx =_;
|
||||
for (range(-r,r), cz = _;
|
||||
rang = config:'range';
|
||||
for(range(-rang,rang), cx =_;
|
||||
for (range(-rang,rang), cz = _;
|
||||
ref_pos = ppos + l(16*cx,0,16*cz);
|
||||
if(has(config:'tasks':'slime_chunks') && in_slime_chunk(ref_pos),
|
||||
player_distance = _euclidean(ppos, ref_pos+8);
|
||||
player_distance = _euclidean(ppos, ref_pos);
|
||||
top_00 = ref_pos + l(0, top('terrain', ref_pos)+10, 0);
|
||||
top_11 = ref_pos + l(16, top('terrain', ref_pos+l(15,0,15))+10, 16);
|
||||
top_10 = ref_pos + l(16, top('terrain', ref_pos+l(15, 0, 0))+10, 0);
|
||||
top_01 = ref_pos + l(0, top('terrain', ref_pos+l(0, 0, 15))+10, 16);
|
||||
part = 'dust 0.2 0.8 0.2 2';
|
||||
density = 2+player_distance/2;
|
||||
particle_line(part, top_00, top_10, density);
|
||||
particle_line(part, top_10, top_11, density);
|
||||
particle_line(part, top_11, top_01, density);
|
||||
particle_line(part, top_01, top_00, density);
|
||||
particle_line(part, top_00, top_11, density);
|
||||
particle_line(part, top_01, top_10, density);
|
||||
r = 30;
|
||||
g = 220;
|
||||
b = 30;
|
||||
a = max(0, 255-player_distance);
|
||||
color = a+256*(b+256*(g+256*r));
|
||||
draw_shape(l(
|
||||
l('line', 15, 'from', top_00, 'to', top_10, 'color', color, 'line', 3),
|
||||
l('line', 15, 'from', top_10, 'to', top_11, 'color', color, 'line', 3),
|
||||
l('line', 15, 'from', top_11, 'to', top_01, 'color', color, 'line', 3),
|
||||
l('line', 15, 'from', top_01, 'to', top_00, 'color', color, 'line', 3),
|
||||
l('line', 15, 'from', top_00, 'to', top_11, 'color', color, 'line', 3),
|
||||
l('line', 15, 'from', top_01, 'to', top_10, 'color', color, 'line', 3)
|
||||
));
|
||||
)
|
||||
)
|
||||
)
|
||||
);
|
||||
schedule(3, '__chunk_renderer', player_name);
|
||||
schedule(10, '__chunk_renderer', player_name);
|
||||
)
|
||||
@@ -6,6 +6,9 @@
|
||||
"mixins": [
|
||||
"CommandManagerMixin",
|
||||
|
||||
"ServerPlayNetworkHandlerMixin",
|
||||
"CustomPayloadC2SPacketMixin",
|
||||
|
||||
"FillCommandMixin",
|
||||
"CloneCommandMixin",
|
||||
"SetBlockCommandMixin",
|
||||
@@ -25,11 +28,15 @@
|
||||
"ServerWorld_tickMixin",
|
||||
"ServerChunkManager_tickMixin",
|
||||
"ThreadedAnvilChunkStorage_tickMixin",
|
||||
"ChunkTicketManager_tickMixin",
|
||||
|
||||
"ThreadedAnvilChunkStorage_scarpetChunkCreationMixin",
|
||||
"ChunkHolder_scarpetChunkCreationMixin",
|
||||
"ServerLightingProvider_scarpetChunkCreationMixin",
|
||||
|
||||
"ChunkTicketManager_spawnChunksMixin",
|
||||
"ServerWorld_spawnChunksMixin",
|
||||
|
||||
"MobEntityMixin",
|
||||
"ServerWorld_unloadedEntityMixin",
|
||||
"EntityTrackerEntry_leashFixMixin",
|
||||
@@ -61,6 +68,8 @@
|
||||
"CoralFeatureMixin",
|
||||
"StructureFeatureMixin",
|
||||
"World_scarpetPlopMixin",
|
||||
"ChunkRegion_scarpetPlopMixin",
|
||||
"StructurePiece_scarpetPlopMixin",
|
||||
|
||||
"ServerPlayNetworkHandler_scarpetEventsMixin",
|
||||
"ServerPlayerInteractionManager_scarpetEventsMixin",
|
||||
@@ -141,19 +150,24 @@
|
||||
"ServerPlayerEntity_scarpetEventMixin",
|
||||
"FallingBlockEntity_scarpetEventsMixin",
|
||||
"BlockItem_scarpetEventMixin",
|
||||
"PlayerManager_scarpetEventsMixin",
|
||||
|
||||
"ChunkTicketManager_scarpetMixin",
|
||||
"ServerChunkManager_scarpetMixin",
|
||||
"StatType_scarpetMixin",
|
||||
"PointOfInterest_scarpetMixin",
|
||||
"ServerWorld_scarpetEventMixin",
|
||||
|
||||
"HungerManagerMixin_scarpetEventsMixin",
|
||||
|
||||
"PistonBlock_movableTEMixin",
|
||||
"PistonBlockEntity_movableTEMixin",
|
||||
"World_movableTEMixin",
|
||||
"WorldChunk_movableTEMixin",
|
||||
"PistonHandler_movableTEMixin"
|
||||
"PistonHandler_movableTEMixin",
|
||||
"PlayerEntity_creativeNoClipMixin",
|
||||
"PistonBlockEntity_creativeNoClipMixin",
|
||||
"BlockItem_creativeNoClipMixin",
|
||||
"LivingEntity_creativeFlyMixin"
|
||||
|
||||
],
|
||||
"client": [
|
||||
"RenderTickCounter_tickSpeedMixin",
|
||||
@@ -165,7 +179,12 @@
|
||||
"PlayerListHudMixin",
|
||||
"PistonBlockEntityRenderer_movableTEMixin",
|
||||
"ClientPlayNetworkHandler_smoothClientAnimationsMixin",
|
||||
"ClientPlayerEntity_clientCommandMixin"
|
||||
"ClientPlayerEntity_clientCommandMixin",
|
||||
"WorldRenderer_fogOffMixin",
|
||||
"WorldRenderer_creativeNoClipMixin",
|
||||
"ClientPlayNetworkHandlerMixin",
|
||||
"DebugRenderer_scarpetRenderMixin",
|
||||
"WorldRenderer_scarpetRenderMixin"
|
||||
],
|
||||
"server": [
|
||||
"MinecraftDedicatedServerMixin"
|
||||
|
||||
@@ -1,7 +1,7 @@
|
||||
{
|
||||
"schemaVersion": 1,
|
||||
"id": "carpet",
|
||||
"version": "1.3.17",
|
||||
"version": "1.3.29",
|
||||
|
||||
"name": "Carpet Mod in Fabric",
|
||||
"description": "Carpet made out of fabric",
|
||||
|
||||
Reference in new issue
Block a user