Hide goggle overlay if ValueBox is hovered

This commit is contained in:
Snownee 2020-12-11 17:00:36 +08:00
parent f425b150bd
commit 727de5425f
4 changed files with 26 additions and 6 deletions

View file

@ -42,7 +42,7 @@ public class CreateClient {
public static SchematicHandler schematicHandler;
public static SchematicAndQuillHandler schematicAndQuillHandler;
public static SuperByteBufferCache bufferCache;
public static Outliner outliner;
public static final Outliner outliner = new Outliner();
private static CustomBlockModels customBlockModels;
private static CustomItemModels customItemModels;
@ -62,7 +62,6 @@ public class CreateClient {
schematicSender = new ClientSchematicLoader();
schematicHandler = new SchematicHandler();
schematicAndQuillHandler = new SchematicAndQuillHandler();
outliner = new Outliner();
bufferCache = new SuperByteBufferCache();
bufferCache.registerCompartment(KineticTileEntityRenderer.KINETIC_TILE);

View file

@ -3,13 +3,18 @@ package com.simibubi.create.content.contraptions.goggles;
import com.mojang.blaze3d.systems.RenderSystem;
import com.simibubi.create.AllBlocks;
import com.simibubi.create.AllItems;
import com.simibubi.create.CreateClient;
import com.simibubi.create.content.contraptions.components.structureMovement.piston.MechanicalPistonBlock;
import com.simibubi.create.content.contraptions.components.structureMovement.piston.PistonExtensionPoleBlock;
import com.simibubi.create.content.contraptions.components.structureMovement.piston.PistonPolePlacementHelper;
import com.simibubi.create.foundation.config.AllConfigs;
import com.simibubi.create.foundation.gui.GuiGameElement;
import com.simibubi.create.foundation.tileEntity.behaviour.ValueBox;
import com.simibubi.create.foundation.utility.Iterate;
import com.simibubi.create.foundation.utility.Lang;
import com.simibubi.create.foundation.utility.outliner.Outline;
import com.simibubi.create.foundation.utility.outliner.Outliner.OutlineEntry;
import net.minecraft.block.BlockState;
import net.minecraft.client.Minecraft;
import net.minecraft.client.gui.screen.Screen;
@ -30,12 +35,15 @@ import net.minecraftforge.fml.common.Mod.EventBusSubscriber;
import java.util.ArrayList;
import java.util.List;
import java.util.Map;
import static com.simibubi.create.content.contraptions.goggles.IHaveGoggleInformation.spacing;
@EventBusSubscriber(value = Dist.CLIENT)
public class GoggleOverlayRenderer {
private static final Map<Object, OutlineEntry> outlines = CreateClient.outliner.getOutlines();
@SubscribeEvent
public static void lookingAtBlocksThroughGogglesShowsTooltip(RenderGameOverlayEvent.Post event) {
if (event.getType() != ElementType.HOTBAR)
@ -45,6 +53,15 @@ public class GoggleOverlayRenderer {
if (!(objectMouseOver instanceof BlockRayTraceResult))
return;
for (OutlineEntry entry : outlines.values()) {
if (!entry.isAlive())
continue;
Outline outline = entry.getOutline();
if (outline instanceof ValueBox && !((ValueBox) outline).isPassive) {
return;
}
}
BlockRayTraceResult result = (BlockRayTraceResult) objectMouseOver;
Minecraft mc = Minecraft.getInstance();
ClientWorld world = mc.world;

View file

@ -28,7 +28,7 @@ public class ValueBox extends ChasingAABBOutline {
protected int passiveColor;
protected int highlightColor;
protected boolean isPassive;
public boolean isPassive;
protected BlockPos pos;
protected ValueBoxTransform transform;

View file

@ -21,7 +21,11 @@ import net.minecraft.util.math.Vec3d;
public class Outliner {
Map<Object, OutlineEntry> outlines;
final Map<Object, OutlineEntry> outlines;
public Map<Object, OutlineEntry> getOutlines() {
return Collections.unmodifiableMap(outlines);
}
// Facade
@ -136,7 +140,7 @@ public class Outliner {
if (entry.ticksTillRemoval < 0) {
int prevTicks = entry.ticksTillRemoval + 1;
float fadeticks = (float) OutlineEntry.fadeTicks;
float fadeticks = OutlineEntry.fadeTicks;
float lastAlpha = prevTicks >= 0 ? 1 : 1 + (prevTicks / fadeticks);
float currentAlpha = 1 + (entry.ticksTillRemoval / fadeticks);
float alpha = MathHelper.lerp(Minecraft.getInstance()
@ -150,7 +154,7 @@ public class Outliner {
});
}
private class OutlineEntry {
public static class OutlineEntry {
static final int fadeTicks = 8;
private Outline outline;