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