搜索历史
清空
暂无搜索历史
论坛热搜
1
Jenny — 有趣的模拟女友模组|珍妮模组
热
3
上古老物 冒险者传说 by WhiteSword
新
5
桃色世界 - Jenny整合包|Fapcraft整合包|珍妮模组整合包
2
乌托邦探险之旅3.2
热
4
幻虚斗罗V1.5
6
洛心斗罗-福利|公会据点战|武魂||抽奖|最终版
登陆 注册 QQ登陆
快捷导航
查看: 127|回复: 0

[模组分享] Piston API (活塞API)-MOD模组

[复制链接]

5657

主题

27

回帖

7745

积分

龙❁妻

Rank: 8Rank: 8

经验
7745 EP
金粒
2021 粒
绿宝石
20 块
爱心
0 点
发表于 2025-8-10 18:52:21 | 显示全部楼层 |阅读模式
Piston API (活塞API)Github |相关wiki |源站链接支持: forge这是一个小型模组,允许其他模组和模组包处理活塞的互动!

*API特性:*

自定义方块的高级活塞互动
活塞API为方块提供了一种在位置和世界敏感的情况下与活塞进行互动的方式!主要是方块的可推动性和其粘性。
IPushableBehavior:
这个接口添加了一个方法`getPushReaction`(接受方块源和活塞信息,并返回`EnumPushReaction`)。如果方块具有高级推动反应逻辑,应该实现这个方法。此接口覆盖了原生的`getPushReaction(IBlockState)`方法,没有实现该接口的方块会回退到原生代码。对于模组开发者:可以通过[Groovyscript](链接)在postInit期间调用[`PushReactionHanlder.overridePushReaction`](链接)来覆盖每个方块的推动反应(模组开发者不应该这么做!)
Groovy脚本示例:
import static git.jbredwards.piston_api.mod.asm.PushReactionHandler.overridePushReaction
import net.minecraft.block.material.EnumPushReaction

//使泥土在被活塞推动时被破坏(类似草或叶子)
overridePushReaction(block(\'minecraft:dirt\'), EnumPushReaction.DESTROY)

//使橙色羊毛不可被活塞推动,但保持其他羊毛可以被推动
def orangeWool = blockstate(\'minecraft:wool\', 1)
overridePushReaction(block(\'minecraft:wool\'), {source, pistonInfo -> orangeWool == source.getBlockState() ? EnumPushReaction.BLOCK : EnumPushReaction.NORMAL})Copy已复制!
IStickyBehavior:
这个接口添加了两个方法:`getStickReaction`(接受方块源、要测试的相邻方块和活塞信息,并返回[`EnumStickReaction`](链接)),和`hasStickySide`(接受方块源和活塞信息,并返回方块是否有潜在的粘性边)。如果方块具有高级粘性逻辑,应该实现这两个方法。该接口覆盖了`isStickyBlock(IBlockState)`方法,没有实现该接口的方块会回退到原生代码。**对于模组开发者:** 可以通过[Groovyscript](链接)在postInit期间调用[`StickReactionHanlder.overrideStickReaction`](链接) 来覆盖每个方块的粘性结果(模组开发者不应该这么做!)
Groovy脚本示例:
import static git.jbredwards.piston_api.mod.asm.StickReactionHandler.overrideStickReaction
import git.jbredwards.piston_api.api.piston.EnumStickReaction

//使粘液块不具有粘性
overrideStickReaction(block(\'minecraft:slime\'), EnumStickReaction.PASS)

//使工作台具有粘性
overrideStickReaction(block(\'minecraft:crafting_table\'), EnumStickReaction.STICK)

//使书架永远不会粘附到任何东西
overrideStickReaction(block(\'minecraft:bookshelf\'), EnumStickReaction.NEVER)

//使染色玻璃具有粘性,但只粘附到相同颜色
overrideStickReaction(block(\'minecraft:stained_glass\'), {source, other, pistonInfo -> source.getBlockState() == other.getBlockState() ? EnumStickReaction.STICK : EnumStickReaction.PASS})

//一个更复杂的例子,使原木的开放部分具有粘性
import static git.jbredwards.piston_api.api.block.IStickyBehavior.getConnectingSide
import net.minecraft.block.BlockLog
overrideStickReaction([block(\'minecraft:log\'), block(\'minecraft:log2\')], {source, other, pistonInfo ->
    def connectingAxis = BlockLog.EnumAxis.fromFacingAxis(getConnectingSide(source, other).getAxis())
    def logAxis = source.getBlockState().getValue(BlockLog.LOG_AXIS)

    connectingAxis == logAxis ? EnumStickReaction.STICK : EnumStickReaction.PASS
})Copy已复制!

*主要特性:*

- 可配置的活塞推动限制
- 活塞可以移动方块实体
- 活塞不会破坏流体状态(当安装了[Fluidlogged API](链接)时)
- [Quark](链接) 模组兼容性

*小特性:*

- 覆盖现有的活塞互动
- 推动箱子时使它们两两粘在一起
- 当方块被活塞破坏时播放方块破坏声音和粒子效果

*注意:* 该模组不会被移植

来自Modrinth所有游戏版本1.12.2所有类型forgev1.0.2-mc1.12.2Piston-API-v1.0.2-mc1.12.2.jar下载1.0.2#Release**Features:**- ARR license**Bug Fixes:**- Fix extended state blocks not rendering properly when pushed/pulled by pistons展开版本: 1.0.2支持游戏: 1.12.2类型:ForgeRelease下载次数: 420v1.0.1-mc1.12.2Piston-API-v1.0.1-mc1.12.2.jar下载1.0.1#ReleaseInitial Modrinth Release展开版本: 1.0.1支持游戏: 1.12.2类型:ForgeRelease下载次数: 199全部版本

markdown_parsed

文章类型:收录

layui.use([\'form\'], function(){
var form = layui.form;
});

游客,如果您要查看本帖隐藏内容请回复
Piston API
小僵尸论坛感谢有你~
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则



介绍

我的世界(Minecraft)小僵尸论坛
收录了来自各地的我的世界(MC)爱好者们的各种资源

须知: 切勿滥用举报,任何与举报相关的信息必须属实!

"Minecraft"以及"我的世界"为Mojang Synergies AB的商标 本站与Mojang以及微软公司没有从属关系

官方

新浪微博 腾讯微博 微信公众号 投稿规则 版权声明 捐助我们

官方QQ①群: 291907844 (点击加群)
官方QQ②群: 421312192
官方QQ③群: 528726532

我的世界(Minecraft)小僵尸论坛

新会员

QQ|Archiver|手机版|小黑屋|Minecraft(我的世界)小僵尸论坛

GMT+8, 2026-10-27 07:58 , Processed in 0.214085 second(s), 141 queries .

快速回复 返回顶部 返回列表