Skip to content

Commit

Permalink
Add looking at support for viewing what is inside a placed cardboard box
Browse files Browse the repository at this point in the history
  • Loading branch information
pupnewfster committed Mar 7, 2024
1 parent dc0d42d commit a1df051
Show file tree
Hide file tree
Showing 3 changed files with 12 additions and 9 deletions.
15 changes: 7 additions & 8 deletions src/main/java/mekanism/common/attachments/BlockData.java
@@ -1,8 +1,8 @@
package mekanism.common.attachments;

import java.util.List;
import java.util.Objects;
import java.util.Optional;
import java.util.function.Consumer;
import java.util.stream.Stream;
import mekanism.api.NBTConstants;
import mekanism.api.annotations.NothingNullByDefault;
Expand All @@ -20,7 +20,6 @@
import net.minecraft.network.chat.Component;
import net.minecraft.world.entity.player.Player;
import net.minecraft.world.item.ItemStack;
import net.minecraft.world.item.TooltipFlag;
import net.minecraft.world.level.Level;
import net.minecraft.world.level.block.Block;
import net.minecraft.world.level.block.Blocks;
Expand Down Expand Up @@ -123,27 +122,27 @@ public boolean tryPlaceIntoWorld(Level level, BlockPos pos, @Nullable Player pla
return true;
}

public void addToTooltip(Level level, List<Component> tooltip, TooltipFlag flag) {
public void addToTooltip(Consumer<Component> consumer) {
Block block = blockState.getBlock();
tooltip.add(MekanismLang.BLOCK.translateColored(EnumColor.INDIGO, EnumColor.GRAY, block));
consumer.accept(MekanismLang.BLOCK.translateColored(EnumColor.INDIGO, EnumColor.GRAY, block));
if (blockEntityTag != null) {
Optional<BlockEntityType<?>> blockEntityType = RegistryUtils.getById(blockEntityTag, BuiltInRegistries.BLOCK_ENTITY_TYPE);
Object beName = blockEntityType.isPresent() ? RegistryUtils.getName(blockEntityType.get()) : MekanismLang.UNKNOWN;
tooltip.add(MekanismLang.BLOCK_ENTITY.translateColored(EnumColor.INDIGO, EnumColor.GRAY, beName));
consumer.accept(MekanismLang.BLOCK_ENTITY.translateColored(EnumColor.INDIGO, EnumColor.GRAY, beName));
if (blockEntityTag != null) {
if (block instanceof SpawnerBlock || block instanceof TrialSpawnerBlock) {
String key = block instanceof SpawnerBlock ? NBTConstants.SPAWN_DATA_LEGACY : NBTConstants.SPAWN_DATA;
RegistryUtils.getById(blockEntityTag.getCompound(key).getCompound(NBTConstants.ENTITY), BuiltInRegistries.ENTITY_TYPE)
.map(entity -> MekanismLang.BLOCK_ENTITY_SPAWN_TYPE.translateColored(EnumColor.INDIGO, EnumColor.GRAY, entity))
.ifPresent(tooltip::add);
.ifPresent(consumer);
} else if (block instanceof DecoratedPotBlock) {
DecoratedPotBlockEntity.Decorations decorations = DecoratedPotBlockEntity.Decorations.load(blockEntityTag);
//Copy from DecoratedPotBlock#appendHoverText
if (!decorations.equals(DecoratedPotBlockEntity.Decorations.EMPTY)) {
tooltip.add(MekanismLang.BLOCK_ENTITY_DECORATION.translateColored(EnumColor.INDIGO));
consumer.accept(MekanismLang.BLOCK_ENTITY_DECORATION.translateColored(EnumColor.INDIGO));
Stream.of(decorations.front(), decorations.left(), decorations.right(), decorations.back())
.map(decoration -> MekanismLang.GENERIC_LIST.translateColored(EnumColor.INDIGO, EnumColor.GRAY, decoration))
.forEach(tooltip::add);
.forEach(consumer);
}
}
}
Expand Down
Expand Up @@ -29,6 +29,7 @@
import mekanism.common.lib.multiblock.MultiblockData;
import mekanism.common.lib.multiblock.MultiblockManager;
import mekanism.common.lib.multiblock.Structure;
import mekanism.common.registries.MekanismAttachmentTypes;
import mekanism.common.tile.TileEntityBoundingBlock;
import mekanism.common.tile.base.TileEntityUpdateable;
import mekanism.common.util.WorldUtils;
Expand Down Expand Up @@ -102,6 +103,9 @@ public static void addInfoOrRedirect(LookingAtHelper info, Level level, BlockPos
}

private static void addInfo(LookingAtHelper info, Level level, BlockPos pos, BlockState state, @Nullable BlockEntity tile, boolean displayTanks, boolean displayFluidTanks) {
if (tile != null) {
tile.getExistingData(MekanismAttachmentTypes.BLOCK_DATA).ifPresent(blockData -> blockData.addToTooltip(info::addText));
}
MultiblockData structure = getMultiblock(tile);
IStrictEnergyHandler energyCapability = Capabilities.STRICT_ENERGY.getCapabilityIfLoaded(level, pos, state, tile, null);
if (energyCapability != null) {
Expand Down
Expand Up @@ -42,7 +42,7 @@ public ItemBlockCardboardBox(BlockCardboardBox block) {
public void appendHoverText(@NotNull ItemStack stack, Level world, @NotNull List<Component> tooltip, @NotNull TooltipFlag flag) {
Optional<BlockData> existingData = stack.getExistingData(MekanismAttachmentTypes.BLOCK_DATA);
tooltip.add(MekanismLang.BLOCK_DATA.translateColored(EnumColor.INDIGO, YesNo.of(existingData.isPresent(), true)));
existingData.ifPresent(data -> data.addToTooltip(world, tooltip, flag));
existingData.ifPresent(data -> data.addToTooltip(tooltip::add));
}

private static boolean canReplace(Level world, Player player, BlockPos pos, Direction sideClicked, BlockState state, ItemStack stack) {
Expand Down

0 comments on commit a1df051

Please sign in to comment.