diff --git a/pom.xml b/pom.xml index f23f950..2e75562 100644 --- a/pom.xml +++ b/pom.xml @@ -263,13 +263,13 @@ net.momirealms craft-engine-core - 0.0.58 + 26.5 provided net.momirealms craft-engine-bukkit - 0.0.58 + 26.5 provided diff --git a/src/main/java/fi/septicuss/tooltips/managers/integration/impl/craftengine/CraftEngineFurnitureProvider.java b/src/main/java/fi/septicuss/tooltips/managers/integration/impl/craftengine/CraftEngineFurnitureProvider.java index 5a6216e..c7a7d55 100644 --- a/src/main/java/fi/septicuss/tooltips/managers/integration/impl/craftengine/CraftEngineFurnitureProvider.java +++ b/src/main/java/fi/septicuss/tooltips/managers/integration/impl/craftengine/CraftEngineFurnitureProvider.java @@ -2,28 +2,57 @@ import fi.septicuss.tooltips.managers.integration.providers.FurnitureProvider; import fi.septicuss.tooltips.managers.integration.wrappers.FurnitureWrapper; +import net.momirealms.craftengine.bukkit.api.CraftEngineBlocks; import net.momirealms.craftengine.bukkit.api.CraftEngineFurniture; import net.momirealms.craftengine.bukkit.entity.furniture.BukkitFurniture; +import net.momirealms.craftengine.core.block.BlockDefinition; +import net.momirealms.craftengine.core.block.ImmutableBlockState; +import net.momirealms.craftengine.core.block.setting.BlockSettingsModifier; +import net.momirealms.craftengine.core.block.setting.BlockSettingsModifierType; +import net.momirealms.craftengine.core.block.setting.BlockSettingsModifiers; +import net.momirealms.craftengine.core.entity.furniture.FurnitureDefinition; +import net.momirealms.craftengine.core.entity.furniture.setting.FurnitureSettingsModifier; +import net.momirealms.craftengine.core.entity.furniture.setting.FurnitureSettingsModifierType; +import net.momirealms.craftengine.core.entity.furniture.setting.FurnitureSettingsModifiers; +import net.momirealms.craftengine.core.util.CustomDataType; +import net.momirealms.craftengine.core.util.Key; import org.bukkit.block.Block; import org.bukkit.entity.Entity; import org.jetbrains.annotations.Nullable; - public class CraftEngineFurnitureProvider implements FurnitureProvider { + public static final CustomDataType FURNITURE_NAME_KEY = new CustomDataType<>(); + public static final CustomDataType BLOCK_NAME_KEY = new CustomDataType<>(); + public static final FurnitureSettingsModifierType FURNITURE_NAME = FurnitureSettingsModifiers.register( + Key.of("tooltips", "furniture_name"), + value -> settings -> settings.addCustomData(FURNITURE_NAME_KEY, value.getAsString()) + ); + public static final BlockSettingsModifierType BLOCK_NAME = BlockSettingsModifiers.register( + Key.of("tooltips", "block_name"), + value -> settings -> settings.addCustomData(BLOCK_NAME_KEY, value.getAsString()) + ); @Nullable @Override public FurnitureWrapper getFurniture(Entity entity) { - BukkitFurniture furniture = CraftEngineFurniture.getLoadedFurnitureByBaseEntity(entity); - if (furniture == null) return null; - String id = furniture.id().asString(); - return new FurnitureWrapper(this.identifier(), id, id); + BukkitFurniture furniture = CraftEngineFurniture.getLoadedFurnitureByMetaEntity(entity); + if (furniture == null) { + furniture = CraftEngineFurniture.getLoadedFurnitureByCollider(entity); + if (furniture == null) return null; + } + FurnitureDefinition definition = furniture.config; + String furnitureName = definition.settings().getCustomData(FURNITURE_NAME_KEY); + return new FurnitureWrapper(this.identifier(), definition.id().asString(), furnitureName != null ? furnitureName : definition.translationKey()); } @Nullable @Override public FurnitureWrapper getFurniture(Block block) { - return null; + ImmutableBlockState blockState = CraftEngineBlocks.getCustomBlockState(block); + if (blockState == null) return null; + BlockDefinition definition = blockState.owner().value(); + String blockName = blockState.settings().getCustomData(BLOCK_NAME_KEY); + return new FurnitureWrapper(this.identifier(), definition.id().asString(), blockName != null ? blockName : definition.translationKey()); } @Override