• Home
  • Features
  • Pricing
  • Docs
  • Announcements
  • Sign In

CyclopsMC / IntegratedDynamics / 15366166327

31 May 2025 05:58PM UTC coverage: 44.766% (-0.5%) from 45.303%
15366166327

push

github

rubensworks
Bump mod version

2565 of 8515 branches covered (30.12%)

Branch coverage included in aggregate %.

11734 of 23427 relevant lines covered (50.09%)

2.38 hits per line

Source File
Press 'n' to go to next uncovered line, 'b' for previous

18.64
/src/main/java/org/cyclops/integrateddynamics/core/evaluate/variable/ValueObjectTypeBlock.java
1
package org.cyclops.integrateddynamics.core.evaluate.variable;
2

3
import lombok.ToString;
4
import net.minecraft.core.registries.BuiltInRegistries;
5
import net.minecraft.core.registries.Registries;
6
import net.minecraft.nbt.CompoundTag;
7
import net.minecraft.nbt.Tag;
8
import net.minecraft.network.chat.Component;
9
import net.minecraft.network.chat.MutableComponent;
10
import net.minecraft.world.item.BlockItem;
11
import net.minecraft.world.item.ItemStack;
12
import net.minecraft.world.level.block.Blocks;
13
import net.minecraft.world.level.block.state.BlockState;
14
import org.cyclops.cyclopscore.helper.BlockHelpers;
15
import org.cyclops.integrateddynamics.api.evaluate.variable.IValueTypeNamed;
16
import org.cyclops.integrateddynamics.api.evaluate.variable.IValueTypeNullable;
17
import org.cyclops.integrateddynamics.api.evaluate.variable.IValueTypeUniquelyNamed;
18
import org.cyclops.integrateddynamics.api.evaluate.variable.ValueDeseralizationContext;
19
import org.cyclops.integrateddynamics.core.helper.L10NValues;
20
import org.cyclops.integrateddynamics.core.logicprogrammer.ValueTypeItemStackLPElement;
21
import org.cyclops.integrateddynamics.core.logicprogrammer.ValueTypeLPElementBase;
22

23
/**
24
 * Value type with values that are blocks (these are internally stored as blockstates).
25
 * @author rubensworks
26
 */
27
public class ValueObjectTypeBlock extends ValueObjectTypeBase<ValueObjectTypeBlock.ValueBlock> implements
28
        IValueTypeNamed<ValueObjectTypeBlock.ValueBlock>, IValueTypeUniquelyNamed<ValueObjectTypeBlock.ValueBlock>,
29
        IValueTypeNullable<ValueObjectTypeBlock.ValueBlock> {
30

31
    public ValueObjectTypeBlock() {
32
        super("block", ValueObjectTypeBlock.ValueBlock.class);
4✔
33
    }
1✔
34

35
    public static MutableComponent getBlockkDisplayNameSafe(BlockState blockState) {
36
        return Component.translatable(blockState.getBlock().getDescriptionId());
×
37
    }
38

39
    @Override
40
    public ValueBlock getDefault() {
41
        return ValueBlock.of(Blocks.AIR.defaultBlockState());
×
42
    }
43

44
    @Override
45
    public MutableComponent toCompactString(ValueBlock value) {
46
        if (value.getRawValue().isPresent()) {
×
47
            BlockState blockState = value.getRawValue().get();
×
48
            ItemStack itemStack = BlockHelpers.getItemStackFromBlockState(blockState);
×
49
            if (!itemStack.isEmpty()) {
×
50
                return ValueObjectTypeItemStack.getItemStackDisplayNameSafe(itemStack);
×
51
            }
52
            return ValueObjectTypeBlock.getBlockkDisplayNameSafe(blockState);
×
53
        }
54
        return Component.literal("");
×
55
    }
56

57
    @Override
58
    public Tag serialize(ValueDeseralizationContext valueDeseralizationContext, ValueBlock value) {
59
        if(!value.getRawValue().isPresent()) return new CompoundTag();
×
60
        return BlockHelpers.serializeBlockState(value.getRawValue().get());
×
61
    }
62

63
    @Override
64
    public ValueBlock deserialize(ValueDeseralizationContext valueDeseralizationContext, Tag value) {
65
        if (value.getId() == Tag.TAG_END || (value.getId() == Tag.TAG_COMPOUND && ((CompoundTag) value).isEmpty())) {
11!
66
            return ValueBlock.of(Blocks.AIR.defaultBlockState());
×
67
        }
68
        return ValueBlock.of(BlockHelpers.deserializeBlockState(valueDeseralizationContext.holderLookupProvider().lookupOrThrow(Registries.BLOCK), (CompoundTag) value));
9✔
69
    }
70

71
    @Override
72
    public String getName(ValueBlock a) {
73
        return toCompactString(a).getString();
×
74
    }
75

76
    @Override
77
    public boolean isNull(ValueBlock a) {
78
        return !a.getRawValue().isPresent();
×
79
    }
80

81
    @Override
82
    public ValueTypeLPElementBase createLogicProgrammerElement() {
83
        return new ValueTypeItemStackLPElement<>(this, new ValueTypeItemStackLPElement.IItemStackToValue<ValueObjectTypeBlock.ValueBlock>() {
×
84
            @Override
85
            public boolean isNullable() {
86
                return true;
×
87
            }
88

89
            @Override
90
            public Component validate(ItemStack itemStack) {
91
                if(!itemStack.isEmpty() && !(itemStack.getItem() instanceof BlockItem)) {
×
92
                    return Component.translatable(L10NValues.VALUETYPE_OBJECT_BLOCK_ERROR_NOBLOCK);
×
93
                }
94
                return null;
×
95
            }
96

97
            @Override
98
            public ValueObjectTypeBlock.ValueBlock getValue(ItemStack itemStack) {
99
                return ValueObjectTypeBlock.ValueBlock.of(
×
100
                        itemStack.isEmpty() ? Blocks.AIR.defaultBlockState() : BlockHelpers.getBlockStateFromItemStack(itemStack));
×
101
            }
102

103
            @Override
104
            public ItemStack getValueAsItemStack(ValueBlock value) {
105
                return value.getRawValue()
×
106
                        .map(BlockHelpers::getItemStackFromBlockState)
×
107
                        .orElse(ItemStack.EMPTY);
×
108
            }
109
        });
110
    }
111

112
    @Override
113
    public String getUniqueName(ValueBlock value) {
114
        if (value.getRawValue().isPresent()) {
×
115
            BlockState blockState = value.getRawValue().get();
×
116
            return BuiltInRegistries.BLOCK.getKey(blockState.getBlock()).toString();
×
117
        }
118
        return "";
×
119
    }
120

121
    @ToString
×
122
    public static class ValueBlock extends ValueOptionalBase<BlockState> {
123

124
        private ValueBlock(BlockState blockState) {
125
            super(ValueTypes.OBJECT_BLOCK, blockState);
4✔
126
        }
1✔
127

128
        public static ValueBlock of(BlockState blockState) {
129
            return new ValueBlock(blockState);
5✔
130
        }
131

132
        @Override
133
        protected boolean isEqual(BlockState a, BlockState b) {
134
            return a.equals(b);
4✔
135
        }
136
    }
137

138
}
STATUS · Troubleshooting · Open an Issue · Sales · Support · CAREERS · ENTERPRISE · START FREE · SCHEDULE DEMO
ANNOUNCEMENTS · TWITTER · TOS & SLA · Supported CI Services · What's a CI service? · Automated Testing

© 2026 Coveralls, Inc