Skip to content

Commit c36d9a4

Browse files
committed
First version of tool items update
1 parent c827d3c commit c36d9a4

18 files changed

Lines changed: 60 additions & 95 deletions

File tree

src/test/java/net/modificationstation/sltest/block/Blocks.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -16,7 +16,7 @@
1616

1717
public enum Blocks {
1818

19-
TEST_BLOCK("test_block", "testBlock", id -> new TemplateBlock(id, Material.CLAY).setHardness(1)),
19+
TEST_BLOCK("test_block", "testBlock", id -> new TemplateBlock(id, Material.STONE).setHardness(1)),
2020
TEST_ANIMATED_BLOCK("test_animated_block", "testAnimatedBlock", id -> new ModdedMetaBlock(id, Material.NETHER_PORTAL)),
2121
CUSTOM_MODEL_BLOCK("farlands_block", "farlands_block", id -> new ModdedModelBlock(id, Material.SOIL).setHardness(1)),
2222
FREEZER("freezer", "freezer", id -> new BlockFreezer(id).setHardness(2.5F).setSoundGroup(TemplateBlock.DEFAULT_SOUND_GROUP)),

src/test/java/net/modificationstation/sltest/item/ItemListener.java

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -7,8 +7,10 @@
77
import net.modificationstation.sltest.block.VariationBlock;
88
import net.modificationstation.stationapi.api.event.registry.ItemRegistryEvent;
99
import net.modificationstation.stationapi.api.item.tool.ToolMaterialFactory;
10+
import net.modificationstation.stationapi.api.registry.BlockRegistry;
1011
import net.modificationstation.stationapi.api.registry.ItemRegistry;
1112
import net.modificationstation.stationapi.api.registry.Registry;
13+
import net.modificationstation.stationapi.api.tag.TagKey;
1214
import net.modificationstation.stationapi.api.template.item.BlockStateItem;
1315

1416
import static net.modificationstation.sltest.SLTest.NAMESPACE;
@@ -18,7 +20,7 @@ public class ItemListener {
1820
@EventListener
1921
public void registerItems(ItemRegistryEvent event) {
2022
testItem = new ModdedItem(NAMESPACE.id("test_item")).setTranslationKey(NAMESPACE, "testItem"); //8475
21-
testMaterial = ToolMaterialFactory.create("testMaterial", 3, Integer.MAX_VALUE, Float.MAX_VALUE, Integer.MAX_VALUE - 2);
23+
testMaterial = ToolMaterialFactory.create("testMaterial", 3, Integer.MAX_VALUE, Float.MAX_VALUE, Integer.MAX_VALUE - 2).miningLevelTag(TagKey.of(BlockRegistry.KEY, NAMESPACE.id("needs_tool_level_modded")));
2224
testPickaxe = new ModdedPickaxeItem(NAMESPACE.id("test_pickaxe"), testMaterial).setTranslationKey(NAMESPACE, "testPickaxe"); //8476
2325
testNBTItem = new NBTItem(NAMESPACE.id("nbt_item")).setTranslationKey(NAMESPACE, "nbt_item"); //8477
2426
testModelItem = new ModelItem(NAMESPACE.id("model_item")).setMaxCount(1).setTranslationKey(NAMESPACE, "idkSomething");
Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,5 @@
1+
{
2+
"values": [
3+
"sltest:test_block"
4+
]
5+
}
Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,5 @@
1+
{
2+
"values": [
3+
"#sltest:needs_tool_level_modded"
4+
]
5+
}
Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,6 @@
1+
{
2+
"values": [
3+
"#needs_stone_tool",
4+
"sltest:test_block"
5+
]
6+
}

station-tools-api-v1/src/main/java/net/modificationstation/stationapi/api/item/tool/StationHoeItem.java

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -7,7 +7,6 @@
77
import net.modificationstation.stationapi.api.util.Util;
88

99
public interface StationHoeItem extends ToolLevel {
10-
1110
@Override
1211
default void setEffectiveBlocks(TagKey<Block> effectiveBlocks) {
1312
Util.assertImpl();

station-tools-api-v1/src/main/java/net/modificationstation/stationapi/api/item/tool/StationShearsItem.java

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -7,7 +7,6 @@
77
import net.modificationstation.stationapi.api.util.Util;
88

99
public interface StationShearsItem extends ToolLevel {
10-
1110
@Override
1211
default void setEffectiveBlocks(TagKey<Block> effectiveBlocks) {
1312
Util.assertImpl();

station-tools-api-v1/src/main/java/net/modificationstation/stationapi/api/item/tool/StationSwordItem.java

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -7,7 +7,6 @@
77
import net.modificationstation.stationapi.api.util.Util;
88

99
public interface StationSwordItem extends ToolLevel {
10-
1110
@Override
1211
default void setEffectiveBlocks(TagKey<Block> effectiveBlocks) {
1312
Util.assertImpl();

station-tools-api-v1/src/main/java/net/modificationstation/stationapi/api/item/tool/StationToolItem.java

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -7,7 +7,6 @@
77
import net.modificationstation.stationapi.api.util.Util;
88

99
public interface StationToolItem extends ToolLevel {
10-
1110
@Override
1211
default void setEffectiveBlocks(TagKey<Block> effectiveBlocks) {
1312
Util.assertImpl();
Lines changed: 2 additions & 34 deletions
Original file line numberDiff line numberDiff line change
@@ -1,48 +1,16 @@
11
package net.modificationstation.stationapi.api.item.tool;
22

3-
import it.unimi.dsi.fastutil.objects.ReferenceOpenHashSet;
4-
import it.unimi.dsi.fastutil.objects.ReferenceSet;
53
import net.minecraft.block.Block;
64
import net.minecraft.item.ToolMaterial;
7-
import net.modificationstation.stationapi.api.block.BlockState;
8-
import net.modificationstation.stationapi.api.util.Identifier;
95
import net.modificationstation.stationapi.api.tag.TagKey;
106
import net.modificationstation.stationapi.api.util.Util;
117

12-
import java.util.function.BiPredicate;
13-
import java.util.function.Predicate;
14-
158
public interface StationToolMaterial {
16-
17-
ReferenceSet<TagKey<Block>> ALL_TOOL_MATERIAL_TAGS = new ReferenceOpenHashSet<>();
18-
19-
default ToolMaterial inheritsFrom(ToolMaterial... toolMaterials) {
9+
default ToolMaterial miningLevelTag(TagKey<Block> tag) {
2010
return Util.assertImpl();
2111
}
2212

23-
default ToolMaterial requiredBlockTag(Identifier tag) {
13+
default TagKey<Block> getMiningLevelTag() {
2414
return Util.assertImpl();
2515
}
26-
27-
default ReferenceSet<ToolMaterial> getParentMaterials() {
28-
return Util.assertImpl();
29-
}
30-
31-
default TagKey<Block> getRequiredBlockTag() {
32-
return Util.assertImpl();
33-
}
34-
35-
default boolean matches(BlockState state) {
36-
return ALL_TOOL_MATERIAL_TAGS.stream().noneMatch(state::isIn) || matches0(state);
37-
}
38-
39-
private boolean matches0(BlockState state) {
40-
TagKey<Block> tag = getRequiredBlockTag();
41-
if (tag != null) {
42-
if (state.isIn(tag)) return true;
43-
BiPredicate<ToolMaterial, BlockState> matches0 = StationToolMaterial::matches0;
44-
Predicate<ToolMaterial> matchesThis = t -> matches0.test(t, state);
45-
return getParentMaterials().stream().anyMatch(matchesThis);
46-
} else return false;
47-
}
4816
}

0 commit comments

Comments
 (0)