38 lines
2.0 KiB
JavaScript
38 lines
2.0 KiB
JavaScript
|
|
|||
|
StartupEvents.registry("item", event => {
|
|||
|
event.create("geckojs:stepping_caculator", "animatable")
|
|||
|
.defaultGeoModel()
|
|||
|
.addController(controller => controller
|
|||
|
.name("stepping_controller")
|
|||
|
//第一个参数是命名id(把.name理解成命名空间,下边的理解成id即可)
|
|||
|
//.begin()表示从开头播放动画
|
|||
|
//.thenPlay()表示播放,thenLoop()是循环播放
|
|||
|
.triggerableAnim("using", RawAnimation.begin().thenPlay('working'))
|
|||
|
.triggerableAnim("release_using", RawAnimation.begin().thenPlay('idle'))
|
|||
|
)
|
|||
|
.usingAnimation((self, Level, Player, hand) => {
|
|||
|
self.triggerAnim(Player, GeoItem.getOrAssignId(Player.getItemInHand(hand), Level), 'stepping_controller', 'using')
|
|||
|
})
|
|||
|
.releaseUsingAnimation((self, Level, Player, hand) => {
|
|||
|
self.triggerAnim(Player, GeoItem.getOrAssignId(Player.getItemInHand(hand), Level), 'stepping_controller', 'release_using')
|
|||
|
})
|
|||
|
.useDuration(itemstack => 80)
|
|||
|
.use((level, player, hand) => true)
|
|||
|
.finishUsing((itemstack, level, entity) => {
|
|||
|
if (entity.player && entity.getOffHandItem().id == "kubejs:tin_hard_disk") {
|
|||
|
let player = entity
|
|||
|
player.offHandItem.damageValue -= Math.min(512, player.offHandItem.damageValue)
|
|||
|
}
|
|||
|
return itemstack
|
|||
|
})
|
|||
|
.releaseUsing((itemstack, level, entity, tick) => {
|
|||
|
if (entity.player && entity.getOffHandItem().id == "kubejs:tin_hard_disk") {
|
|||
|
let player = entity
|
|||
|
player.offHandItem.damageValue -= Math.min(Math.floor(512 - 6.4 * tick), player.offHandItem.damageValue)
|
|||
|
player.setStatusMessage(Text.translate("kubejs.tooltip.stepping_caculator_stop"))
|
|||
|
}
|
|||
|
})
|
|||
|
.displayName = Text.translatable("item.kubejs.stepping_caculator")
|
|||
|
})
|
|||
|
//.addAnimation(state => {state.setAndContinue(RawAnimation.begin().thenLoop("stepping_caculator_animation.model.working"))
|