From 5318686674f213b73f86b79134d69751df947506 Mon Sep 17 00:00:00 2001 From: shedaniel Date: Fri, 6 May 2022 19:39:37 +0800 Subject: [PATCH] Add ArchitecturyRecordItem (#250) [ci skip] --- .../core/item/ArchitecturyRecordItem.java | 46 +++++++++++++++++++ .../main/resources/architectury.accessWidener | 1 + 2 files changed, 47 insertions(+) create mode 100644 common/src/main/java/dev/architectury/core/item/ArchitecturyRecordItem.java diff --git a/common/src/main/java/dev/architectury/core/item/ArchitecturyRecordItem.java b/common/src/main/java/dev/architectury/core/item/ArchitecturyRecordItem.java new file mode 100644 index 00000000..314494d6 --- /dev/null +++ b/common/src/main/java/dev/architectury/core/item/ArchitecturyRecordItem.java @@ -0,0 +1,46 @@ +/* + * This file is part of architectury. + * Copyright (C) 2020, 2021, 2022 architectury + * + * This program is free software; you can redistribute it and/or + * modify it under the terms of the GNU Lesser General Public + * License as published by the Free Software Foundation; either + * version 3 of the License, or (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public License + * along with this program; if not, write to the Free Software Foundation, + * Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. + */ + +package dev.architectury.core.item; + +import dev.architectury.registry.registries.RegistrySupplier; +import net.minecraft.sounds.SoundEvent; +import net.minecraft.world.item.RecordItem; + +public class ArchitecturyRecordItem extends RecordItem { + private final RegistrySupplier sound; + + public ArchitecturyRecordItem(int analogOutput, RegistrySupplier sound, Properties properties) { + super(analogOutput, sound.orElse(null), properties); + this.sound = sound; + + if (!sound.isPresent()) { + RecordItem.BY_NAME.remove(null); + + sound.listen(soundEvent -> { + RecordItem.BY_NAME.put(soundEvent, this); + }); + } + } + + @Override + public SoundEvent getSound() { + return sound.get(); + } +} diff --git a/common/src/main/resources/architectury.accessWidener b/common/src/main/resources/architectury.accessWidener index b08f2c69..ba4f57e8 100644 --- a/common/src/main/resources/architectury.accessWidener +++ b/common/src/main/resources/architectury.accessWidener @@ -122,6 +122,7 @@ transitive-accessible class net/minecraft/client/renderer/RenderType$OutlineProp accessible field net/minecraft/world/item/SpawnEggItem BY_ID Ljava/util/Map; accessible field net/minecraft/world/item/SpawnEggItem defaultType Lnet/minecraft/world/entity/EntityType; mutable field net/minecraft/world/item/SpawnEggItem defaultType Lnet/minecraft/world/entity/EntityType; +accessible field net/minecraft/world/item/RecordItem BY_NAME Ljava/util/Map; accessible field net/minecraft/client/particle/ParticleEngine textureAtlas Lnet/minecraft/client/renderer/texture/TextureAtlas; accessible class net/minecraft/client/particle/ParticleEngine$MutableSpriteSet accessible field net/minecraft/client/particle/ParticleEngine$MutableSpriteSet sprites Ljava/util/List;