mirror of
https://github.com/Creators-of-Create/Create.git
synced 2024-12-16 00:53:41 +01:00
Hide goggle overlay if ValueBox is hovered
This commit is contained in:
parent
f425b150bd
commit
727de5425f
4 changed files with 26 additions and 6 deletions
|
@ -42,7 +42,7 @@ public class CreateClient {
|
||||||
public static SchematicHandler schematicHandler;
|
public static SchematicHandler schematicHandler;
|
||||||
public static SchematicAndQuillHandler schematicAndQuillHandler;
|
public static SchematicAndQuillHandler schematicAndQuillHandler;
|
||||||
public static SuperByteBufferCache bufferCache;
|
public static SuperByteBufferCache bufferCache;
|
||||||
public static Outliner outliner;
|
public static final Outliner outliner = new Outliner();
|
||||||
|
|
||||||
private static CustomBlockModels customBlockModels;
|
private static CustomBlockModels customBlockModels;
|
||||||
private static CustomItemModels customItemModels;
|
private static CustomItemModels customItemModels;
|
||||||
|
@ -62,7 +62,6 @@ public class CreateClient {
|
||||||
schematicSender = new ClientSchematicLoader();
|
schematicSender = new ClientSchematicLoader();
|
||||||
schematicHandler = new SchematicHandler();
|
schematicHandler = new SchematicHandler();
|
||||||
schematicAndQuillHandler = new SchematicAndQuillHandler();
|
schematicAndQuillHandler = new SchematicAndQuillHandler();
|
||||||
outliner = new Outliner();
|
|
||||||
|
|
||||||
bufferCache = new SuperByteBufferCache();
|
bufferCache = new SuperByteBufferCache();
|
||||||
bufferCache.registerCompartment(KineticTileEntityRenderer.KINETIC_TILE);
|
bufferCache.registerCompartment(KineticTileEntityRenderer.KINETIC_TILE);
|
||||||
|
|
|
@ -3,13 +3,18 @@ package com.simibubi.create.content.contraptions.goggles;
|
||||||
import com.mojang.blaze3d.systems.RenderSystem;
|
import com.mojang.blaze3d.systems.RenderSystem;
|
||||||
import com.simibubi.create.AllBlocks;
|
import com.simibubi.create.AllBlocks;
|
||||||
import com.simibubi.create.AllItems;
|
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.MechanicalPistonBlock;
|
||||||
import com.simibubi.create.content.contraptions.components.structureMovement.piston.PistonExtensionPoleBlock;
|
import com.simibubi.create.content.contraptions.components.structureMovement.piston.PistonExtensionPoleBlock;
|
||||||
import com.simibubi.create.content.contraptions.components.structureMovement.piston.PistonPolePlacementHelper;
|
import com.simibubi.create.content.contraptions.components.structureMovement.piston.PistonPolePlacementHelper;
|
||||||
import com.simibubi.create.foundation.config.AllConfigs;
|
import com.simibubi.create.foundation.config.AllConfigs;
|
||||||
import com.simibubi.create.foundation.gui.GuiGameElement;
|
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.Iterate;
|
||||||
import com.simibubi.create.foundation.utility.Lang;
|
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.block.BlockState;
|
||||||
import net.minecraft.client.Minecraft;
|
import net.minecraft.client.Minecraft;
|
||||||
import net.minecraft.client.gui.screen.Screen;
|
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.ArrayList;
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
|
import java.util.Map;
|
||||||
|
|
||||||
import static com.simibubi.create.content.contraptions.goggles.IHaveGoggleInformation.spacing;
|
import static com.simibubi.create.content.contraptions.goggles.IHaveGoggleInformation.spacing;
|
||||||
|
|
||||||
@EventBusSubscriber(value = Dist.CLIENT)
|
@EventBusSubscriber(value = Dist.CLIENT)
|
||||||
public class GoggleOverlayRenderer {
|
public class GoggleOverlayRenderer {
|
||||||
|
|
||||||
|
private static final Map<Object, OutlineEntry> outlines = CreateClient.outliner.getOutlines();
|
||||||
|
|
||||||
@SubscribeEvent
|
@SubscribeEvent
|
||||||
public static void lookingAtBlocksThroughGogglesShowsTooltip(RenderGameOverlayEvent.Post event) {
|
public static void lookingAtBlocksThroughGogglesShowsTooltip(RenderGameOverlayEvent.Post event) {
|
||||||
if (event.getType() != ElementType.HOTBAR)
|
if (event.getType() != ElementType.HOTBAR)
|
||||||
|
@ -45,6 +53,15 @@ public class GoggleOverlayRenderer {
|
||||||
if (!(objectMouseOver instanceof BlockRayTraceResult))
|
if (!(objectMouseOver instanceof BlockRayTraceResult))
|
||||||
return;
|
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;
|
BlockRayTraceResult result = (BlockRayTraceResult) objectMouseOver;
|
||||||
Minecraft mc = Minecraft.getInstance();
|
Minecraft mc = Minecraft.getInstance();
|
||||||
ClientWorld world = mc.world;
|
ClientWorld world = mc.world;
|
||||||
|
|
|
@ -28,7 +28,7 @@ public class ValueBox extends ChasingAABBOutline {
|
||||||
|
|
||||||
protected int passiveColor;
|
protected int passiveColor;
|
||||||
protected int highlightColor;
|
protected int highlightColor;
|
||||||
protected boolean isPassive;
|
public boolean isPassive;
|
||||||
|
|
||||||
protected BlockPos pos;
|
protected BlockPos pos;
|
||||||
protected ValueBoxTransform transform;
|
protected ValueBoxTransform transform;
|
||||||
|
|
|
@ -21,7 +21,11 @@ import net.minecraft.util.math.Vec3d;
|
||||||
|
|
||||||
public class Outliner {
|
public class Outliner {
|
||||||
|
|
||||||
Map<Object, OutlineEntry> outlines;
|
final Map<Object, OutlineEntry> outlines;
|
||||||
|
|
||||||
|
public Map<Object, OutlineEntry> getOutlines() {
|
||||||
|
return Collections.unmodifiableMap(outlines);
|
||||||
|
}
|
||||||
|
|
||||||
// Facade
|
// Facade
|
||||||
|
|
||||||
|
@ -136,7 +140,7 @@ public class Outliner {
|
||||||
if (entry.ticksTillRemoval < 0) {
|
if (entry.ticksTillRemoval < 0) {
|
||||||
|
|
||||||
int prevTicks = entry.ticksTillRemoval + 1;
|
int prevTicks = entry.ticksTillRemoval + 1;
|
||||||
float fadeticks = (float) OutlineEntry.fadeTicks;
|
float fadeticks = OutlineEntry.fadeTicks;
|
||||||
float lastAlpha = prevTicks >= 0 ? 1 : 1 + (prevTicks / fadeticks);
|
float lastAlpha = prevTicks >= 0 ? 1 : 1 + (prevTicks / fadeticks);
|
||||||
float currentAlpha = 1 + (entry.ticksTillRemoval / fadeticks);
|
float currentAlpha = 1 + (entry.ticksTillRemoval / fadeticks);
|
||||||
float alpha = MathHelper.lerp(Minecraft.getInstance()
|
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;
|
static final int fadeTicks = 8;
|
||||||
private Outline outline;
|
private Outline outline;
|
||||||
|
|
Loading…
Reference in a new issue