MC百科社群
标题:
求助,在1.21中播放唱片的方法是什么
[打印本页]
作者:
QQ酱234405
时间:
2024-8-22 19:18
标题:
求助,在1.21中播放唱片的方法是什么
本帖最后由 QQ酱234405 于 2024-8-22 19:45 编辑
我在写模组的一个功能的时候需要播放唱片,我不知道该如何获取唱片的声音事件,也没有找到原版的唱片机播放的方法。
我该如何播放唱片?代码贴在下面了
public class DiscOnUes {
private static TypedActionResult<ItemStack> onUse(PlayerEntity player, World world, Hand hand) {
ItemStack itemStack = player.getStackInHand(hand);
ItemStack offHandStack = player.getOffHandStack();
if (!world.isClient) {
if (isRight(itemStack) && isOffHand(offHandStack)) {
//已经拿到唱片itemStack,可以获取唱片物品itemStack.getItem()
//我不知道该如何播放唱片
}
}
return new TypedActionResult<>(ActionResult.PASS, itemStack);
}
private static boolean isRight(ItemStack itemStack){
return itemStack.isIn(ModItemTags.ADISC) || itemStack.isIn(ModItemTags.MINECRAFT_DISC);
}
private static boolean isOffHand(ItemStack offHandStack) {
if (offHandStack.isEmpty()) {
return false;
}
if (offHandStack.getItem() instanceof BlockItem) {
BlockItem blockItem = (BlockItem) offHandStack.getItem();
return blockItem.getBlock() == Blocks.JUKEBOX;
}
return false;
}
public static void register() {
UseItemCallback.EVENT.register(DiscOnUes::onUse);
}
}
复制代码
求助解答
作者:
QQ酱921907
时间:
2024-10-20 16:53
if (itemStack.getItem() instanceof MusicDiscItem musicDiscItem){
SoundEvent sound = musicDiscItem.getSound();
player.playSound(sound, xxxxxx);
player.getWorld().playSound(sound,xxxxxx);
}
解释:将item转为MusicDiscItem,通过MusicDiscItem获取SoundEvent 对象,用player或world的playsound方法传入SoundEvent 对象
欢迎光临 MC百科社群 (https://bbs.mcmod.cn/)
MC百科
|最大的MineCraft中文模组百科