Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 1 addition & 1 deletion dependencies.gradle
Original file line number Diff line number Diff line change
Expand Up @@ -27,7 +27,7 @@ dependencies {
devOnlyNonPublishable("com.github.GTNewHorizons:Railcraft:9.17.29:dev")
compileOnlyApi("com.github.GTNewHorizons:nei-custom-diagram:1.8.30:dev") { transitive = false }
devOnlyNonPublishable("com.github.GTNewHorizons:EnhancedLootBags:1.3.4:dev")
devOnlyNonPublishable("com.github.GTNewHorizons:BetterQuesting:3.8.77-GTNH:dev")
devOnlyNonPublishable("com.github.GTNewHorizons:BetterQuesting:3.8.79-GTNH:dev")
devOnlyNonPublishable("com.github.GTNewHorizons:Angelica:2.1.53:dev")
devOnlyNonPublishable("com.github.GTNewHorizons:TX-Loader:1.8.11:dev")
devOnlyNonPublishable("curse.maven:cofh-core-69162:2388751")
Expand Down
Original file line number Diff line number Diff line change
@@ -1,5 +1,12 @@
package com.hfstudio.guidenh.integration;

import java.util.List;
import java.util.Map;
import java.util.UUID;

import net.minecraft.util.ResourceLocation;

import com.hfstudio.guidenh.client.hotkey.OpenGuideHotkey;
import com.hfstudio.guidenh.guide.scene.snapshot.GuideStructureSnapshotRegistration;
import com.hfstudio.guidenh.integration.ae2.Ae2BlockStatsProvider;
import com.hfstudio.guidenh.integration.ae2.Ae2FakeWorldIntegration;
Expand All @@ -8,6 +15,7 @@
import com.hfstudio.guidenh.integration.api.client.GuideNhClientIntegrationRegistry;
import com.hfstudio.guidenh.integration.bartworks.BartWorksFakeWorldIntegration;
import com.hfstudio.guidenh.integration.betterquesting.BetterQuestingQuestHoverProvider;
import com.hfstudio.guidenh.integration.betterquesting.BqGuidePageLinks;
import com.hfstudio.guidenh.integration.betterquesting.BqGuidePageUriHandler;
import com.hfstudio.guidenh.integration.buildcraft.BuildCraftBlockDisplayProvider;
import com.hfstudio.guidenh.integration.buildcraft.BuildCraftPreviewPrepareContributor;
Expand Down Expand Up @@ -41,6 +49,10 @@
import com.hfstudio.guidenh.integration.structurelib.StructureLibControllerIntegrationRegistry;
import com.hfstudio.guidenh.integration.tinkerconstruct.TinkersConstructPreviewPrepareContributor;

import betterquesting.api2.client.gui.context.QuestHoverRegistry;
import betterquesting.api2.client.gui.context.QuestTooltipRegistry;
import betterquesting.api2.client.gui.panels.content.PanelTextBox;

public class GuideNhClientIntegrationBootstrap {

private GuideNhClientIntegrationBootstrap() {}
Expand Down Expand Up @@ -79,9 +91,29 @@ public static void preInitClient() {

if (Mods.BetterQuesting.isModLoaded()) {
BqGuidePageUriHandler.register();

PanelTextBox.registerTextProcessor(
new ResourceLocation("guidenh", "guide_page_links"),
BqGuidePageLinks::replaceGuideTags);
QuestTooltipRegistry.register((target, tooltip) -> {
if (target instanceof UUID) {
OpenGuideHotkey.appendQuestTooltip((UUID) target, tooltip);
} else if (target instanceof Map.Entry<?, ?>) {
Object key = ((Map.Entry<?, ?>) target).getKey();
if (key instanceof UUID) {
OpenGuideHotkey.appendQuestTooltip((UUID) key, tooltip);
}
} else if (target instanceof String) {
List<String> guideTooltip = BqGuidePageLinks.getTooltip((String) target);
if (guideTooltip != null) {
tooltip.addAll(guideTooltip);
}
}
});

BetterQuestingQuestHoverProvider hoverProvider = new BetterQuestingQuestHoverProvider();
QuestHoverRegistry.register(hoverProvider);
GuideNhClientIntegrationRegistry.global()
.registerQuestHoverProvider(new BetterQuestingQuestHoverProvider());
.registerQuestHoverProvider(hoverProvider);
}
}

Expand Down
Original file line number Diff line number Diff line change
@@ -1,6 +1,7 @@
package com.hfstudio.guidenh.integration.api.client;

import java.util.ArrayList;
import java.util.Collections;
import java.util.List;
import java.util.UUID;

Expand Down Expand Up @@ -28,7 +29,7 @@ public class GuideNhClientIntegrationRegistry {
private final List<PreviewPlayerModelProvider> previewPlayerModelProviders = new ArrayList<>();
private final List<PreviewPlayerElytraProvider> previewPlayerElytraProviders = new ArrayList<>();
private final List<PreviewBlockRenderProvider> previewBlockRenderProviders = new ArrayList<>();
private final List<QuestHoverProvider> questHoverProviders = new ArrayList<>();
private volatile List<QuestHoverProvider> questHoverProviders = Collections.emptyList();

public GuideNhClientIntegrationRegistry() {}

Expand Down Expand Up @@ -92,13 +93,15 @@ public synchronized void registerQuestHoverProvider(QuestHoverProvider provider)
if (provider == null) {
throw new IllegalArgumentException("provider");
}
if (!questHoverProviders.contains(provider)) {
questHoverProviders.add(provider);
}
if (questHoverProviders.contains(provider)) return;

List<QuestHoverProvider> updatedProviders = new ArrayList<>(questHoverProviders);
updatedProviders.add(provider);
questHoverProviders = Collections.unmodifiableList(updatedProviders);
}

public synchronized List<QuestHoverProvider> questHoverProviders() {
return List.copyOf(questHoverProviders);
public List<QuestHoverProvider> questHoverProviders() {
return questHoverProviders;
}

@Nullable
Expand Down
Original file line number Diff line number Diff line change
@@ -1,5 +1,6 @@
package com.hfstudio.guidenh.integration.betterquesting;

import java.util.Map;
import java.util.UUID;

import org.jetbrains.annotations.Nullable;
Expand All @@ -9,7 +10,12 @@
import com.hfstudio.guidenh.integration.Mods;
import com.hfstudio.guidenh.integration.api.client.QuestHoverProvider;

public class BetterQuestingQuestHoverProvider implements QuestHoverProvider {
import betterquesting.api2.client.gui.context.IQuestHoverListener;

public class BetterQuestingQuestHoverProvider implements QuestHoverProvider, IQuestHoverListener {

@Nullable
private Object currentTarget;

@Override
public boolean isQuestHoverAvailable() {
Expand All @@ -18,7 +24,15 @@ public boolean isQuestHoverAvailable() {

@Override
public @Nullable UUID currentHoveredQuestId() {
return BqCompat.getCurrentHoveredQuestUuid();
if (!(currentTarget instanceof Map.Entry<?, ?>)) return null;

Object key = ((Map.Entry<?, ?>) currentTarget).getKey();
return key instanceof UUID ? (UUID) key : null;
}

@Override
public void onQuestHoverChanged(@Nullable Object target) {
currentTarget = target;
}

@Override
Expand Down
Original file line number Diff line number Diff line change
@@ -1,9 +1,6 @@
package com.hfstudio.guidenh.integration.betterquesting;

import java.util.List;
import java.util.UUID;

import org.jetbrains.annotations.Nullable;

import com.hfstudio.guidenh.guide.GuideBuilder;
import com.hfstudio.guidenh.guide.compiler.TagCompiler;
Expand All @@ -19,9 +16,6 @@
*/
public class BqCompat {

@Nullable
public static volatile UUID currentHoveredQuestUuid;

/**
* Attaches the {@link QuestIndex} to the given guide builder. Safe to call when BQ is
* absent because {@link QuestIndex} only depends on standard library types.
Expand All @@ -40,21 +34,4 @@ public static void appendCompilers(List<TagCompiler> compilers) {
compilers.add(new QuestCardCompiler());
}

/**
* Returns the UUID of the BetterQuesting quest currently under the mouse cursor in the BQ
* quest line GUI, or {@code null} if no quest is hovered. Updated by the BQ-targeted mixin
* and consumed by the open-guide hotkey handler.
*/
@Nullable
public static UUID getCurrentHoveredQuestUuid() {
return currentHoveredQuestUuid;
}

/**
* Sets the UUID of the BetterQuesting quest currently under the mouse cursor. Intended for
* use by the BQ-targeted mixin only. Pass {@code null} to clear.
*/
public static void setCurrentHoveredQuestUuid(@Nullable UUID uuid) {
currentHoveredQuestUuid = uuid;
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -109,7 +109,8 @@ public static boolean isGuideUri(@Nullable String url) {
GuidePageLinkTarget target = GuidePageLinkTarget.resolve(anchor);
List<String> tooltip = List.of(
EnumChatFormatting.AQUA + I18n.format("guidenh.compat.bq.open_guide_page"),
EnumChatFormatting.GRAY + target.title());
EnumChatFormatting.GRAY + target.title(),
EnumChatFormatting.GRAY + I18n.format("guidenh.compat.bq.click_to_jump"));
return putBounded(TOOLTIP_CACHE, url, tooltip);
}

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -9,11 +9,11 @@
import org.jetbrains.annotations.Nullable;

import com.hfstudio.guidenh.guide.scene.level.GuidebookLevel;
import com.hfstudio.guidenh.mixins.late.compat.logisticspipes.AccessorLogisticsTileGenericPipe;

import cpw.mods.fml.common.Optional;
import logisticspipes.pipes.basic.CoreUnroutedPipe;
import logisticspipes.pipes.basic.LogisticsBlockGenericPipe;
import logisticspipes.pipes.basic.LogisticsTileGenericPipe;
import logisticspipes.renderer.state.PipeRenderState;

public class LogisticsPipesHelpers {
Expand All @@ -38,10 +38,10 @@ public static ItemStack resolveDisplayStack(GuidebookLevel level, Block block, i
return null;
}
TileEntity te = level.getTileEntity(x, y, z);
if (!(te instanceof AccessorLogisticsTileGenericPipe)) {
if (!(te instanceof LogisticsTileGenericPipe lpPipe)) {
return null;
}
CoreUnroutedPipe pipe = ((AccessorLogisticsTileGenericPipe) te).getPipe();
CoreUnroutedPipe pipe = lpPipe.pipe;
if (pipe == null || pipe.item == null) {
return null;
}
Expand All @@ -56,18 +56,17 @@ public static ItemStack resolveDisplayStack(GuidebookLevel level, Block block, i
@Optional.Method(modid = "LogisticsPipes")
public static void prepare(GuidebookLevel level) {
for (TileEntity te : level.getTileEntities()) {
if (!(te instanceof AccessorLogisticsTileGenericPipe tile)) {
if (!(te instanceof LogisticsTileGenericPipe tile)) {
continue;
}
initializePipeState(tile, (TileEntity) tile, level);
initializePipeState(tile, level);
}
}

@Optional.Method(modid = "LogisticsPipes")
private static void initializePipeState(AccessorLogisticsTileGenericPipe tile, TileEntity te,
GuidebookLevel level) {
CoreUnroutedPipe pipe = tile.getPipe();
PipeRenderState renderState = tile.getRenderState();
private static void initializePipeState(LogisticsTileGenericPipe tile, GuidebookLevel level) {
CoreUnroutedPipe pipe = tile.pipe;
PipeRenderState renderState = tile.renderState;
if (pipe == null || renderState == null) {
return;
}
Expand All @@ -85,9 +84,9 @@ private static void initializePipeState(AccessorLogisticsTileGenericPipe tile, T
} catch (Throwable ignored) {}
// Compute connections from adjacent tiles. The tile's canPipeConnect() always
// returns false on the client, so we delegate to the pipe directly instead
int x = te.xCoord;
int y = te.yCoord;
int z = te.zCoord;
int x = tile.xCoord;
int y = tile.yCoord;
int z = tile.zCoord;
for (ForgeDirection dir : ForgeDirection.VALID_DIRECTIONS) {
TileEntity adj = level.getTileEntity(x + dir.offsetX, y + dir.offsetY, z + dir.offsetZ);
boolean connected = canConnect(pipe, adj, dir);
Expand Down
7 changes: 0 additions & 7 deletions src/main/java/com/hfstudio/guidenh/mixins/Mixins.java
Original file line number Diff line number Diff line change
Expand Up @@ -17,10 +17,6 @@ public enum Mixins implements IMixins {
"minecraft.AccessorSimpleReloadableResourceManager", "forge.AccessorShapedOreRecipe",
"forge.AccessorShapelessOreRecipe"),

BQ_COMPAT(Side.CLIENT, Phase.LATE, Mods.BetterQuesting, "compat.betterquesting.MixinPanelButtonQuest",
"compat.betterquesting.MixinPanelTextBox", "compat.betterquesting.AccessorPanelTextBox",
"compat.betterquesting.AccessorPanelTextBoxHotZone"),

GREGTECH_HATCH_BUILDER(Side.CLIENT, Phase.LATE, Mods.GregTech, "compat.gregtech.AccessorHatchElementBuilder"),

FMP_BLOCK_MICRO_MATERIAL(Side.CLIENT, Phase.LATE, Mods.ForgeMultipart,
Expand All @@ -29,9 +25,6 @@ public enum Mixins implements IMixins {
BC_TILE_GENERIC_PIPE(Side.CLIENT, Phase.LATE, Mods.BuildCraftTransport,
"compat.buildcraft.AccessorTileGenericPipe"),

LP_TILE_GENERIC_PIPE(Side.CLIENT, Phase.LATE, Mods.LogisticsPipes,
"compat.logisticspipes.AccessorLogisticsTileGenericPipe"),

WR_CBE_UNLOADED_JAM_STATE(Side.CLIENT, Phase.LATE, Mods.WirelessRedstoneCore,
"compat.wirelessredstone.MixinRedstoneEther"),

Expand Down

This file was deleted.

This file was deleted.

This file was deleted.

Loading
Loading