diff --git a/pom.xml b/pom.xml index f23f950..964e3bb 100644 --- a/pom.xml +++ b/pom.xml @@ -263,13 +263,13 @@ net.momirealms craft-engine-core - 0.0.58 + 0.0.66 provided net.momirealms craft-engine-bukkit - 0.0.58 + 0.0.66 provided diff --git a/src/main/java/fi/septicuss/tooltips/managers/integration/IntegrationManager.java b/src/main/java/fi/septicuss/tooltips/managers/integration/IntegrationManager.java index f2a432e..46d239e 100644 --- a/src/main/java/fi/septicuss/tooltips/managers/integration/IntegrationManager.java +++ b/src/main/java/fi/septicuss/tooltips/managers/integration/IntegrationManager.java @@ -9,6 +9,7 @@ import fi.septicuss.tooltips.managers.integration.impl.betonquest.conversation.TooltipsConversationIO; import fi.septicuss.tooltips.managers.integration.impl.betonquest.conversation.TooltipsConversationIOFactory; import fi.septicuss.tooltips.managers.integration.impl.craftengine.CraftEngineFurnitureProvider; +import fi.septicuss.tooltips.managers.integration.impl.craftengine.CraftEngineListener; import fi.septicuss.tooltips.managers.integration.impl.crucible.CrucibleFurnitureProvider; import fi.septicuss.tooltips.managers.integration.impl.itemsadder.ItemsAdderFurnitureProvider; import fi.septicuss.tooltips.managers.integration.impl.nexo.NexoFurnitureProvider; @@ -72,6 +73,7 @@ public void registerDefaultIntegrations() { if (isPresent("CraftEngine")) { this.addFurnitureProvider(new CraftEngineFurnitureProvider()); + this.plugin.getServer().getPluginManager().registerEvents(new CraftEngineListener(plugin), plugin); } if (isPresent("WorldGuard")) { 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..4136110 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,19 +2,21 @@ 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.ImmutableBlockState; import org.bukkit.block.Block; import org.bukkit.entity.Entity; +import org.bukkit.entity.Player; import org.jetbrains.annotations.Nullable; - public class CraftEngineFurnitureProvider implements FurnitureProvider { @Nullable @Override public FurnitureWrapper getFurniture(Entity entity) { - BukkitFurniture furniture = CraftEngineFurniture.getLoadedFurnitureByBaseEntity(entity); + BukkitFurniture furniture = CraftEngineFurniture.getLoadedFurnitureByMetaEntity(entity); if (furniture == null) return null; String id = furniture.id().asString(); return new FurnitureWrapper(this.identifier(), id, id); @@ -23,7 +25,25 @@ public FurnitureWrapper getFurniture(Entity entity) { @Nullable @Override public FurnitureWrapper getFurniture(Block block) { - return null; + ImmutableBlockState blockState = CraftEngineBlocks.getCustomBlockState(block); + if (blockState == null) { + return null; + } + String id = blockState.owner().value().id().asString(); + return new FurnitureWrapper(this.identifier(), id, id); + } + + @Override + public FurnitureWrapper getTargetFurniture(Player player) { + BukkitFurniture furniture = CraftEngineFurniture.rayTrace(player); + if (furniture == null) return null; + String id = furniture.id().asString(); + return new FurnitureWrapper(this.identifier(), id, id); + } + + @Override + public boolean hasCustomRaytrace() { + return true; } @Override diff --git a/src/main/java/fi/septicuss/tooltips/managers/integration/impl/craftengine/CraftEngineListener.java b/src/main/java/fi/septicuss/tooltips/managers/integration/impl/craftengine/CraftEngineListener.java new file mode 100644 index 0000000..d925738 --- /dev/null +++ b/src/main/java/fi/septicuss/tooltips/managers/integration/impl/craftengine/CraftEngineListener.java @@ -0,0 +1,25 @@ +package fi.septicuss.tooltips.managers.integration.impl.craftengine; + +import fi.septicuss.tooltips.Tooltips; +import fi.septicuss.tooltips.managers.preset.actions.DefaultTooltipAction; +import net.momirealms.craftengine.bukkit.api.event.FurnitureInteractEvent; +import org.bukkit.event.EventHandler; +import org.bukkit.event.Listener; + +import java.util.Optional; + +public class CraftEngineListener implements Listener { + + private final Tooltips plugin; + + public CraftEngineListener(Tooltips plugin) { + this.plugin = plugin; + } + + @EventHandler + public void onFurnitureInteract(FurnitureInteractEvent event) { + Optional.ofNullable(plugin.getTooltipManager()).ifPresent(tooltipManager -> { + tooltipManager.runActions(DefaultTooltipAction.RIGHT_CLICK, event.getPlayer()); + }); + } +} diff --git a/src/main/resources/default/config/config.yml b/src/main/resources/default/config/config.yml index 2c8f50f..9e9cc3b 100644 --- a/src/main/resources/default/config/config.yml +++ b/src/main/resources/default/config/config.yml @@ -8,7 +8,7 @@ copy-resource-pack: path: '' # Which furniture plugin is used if there are multiple -# Options: Automatic, Oraxen, ItemsAdder, MythicCrucible +# Options: Automatic, Oraxen, ItemsAdder, MythicCrucible, CraftEngine furniture-plugin: automatic # This determines, which negative space mode is used. Set to 'false' for versions before