-
Notifications
You must be signed in to change notification settings - Fork 754
/
ToolActionsModule.java
39 lines (32 loc) · 1.56 KB
/
ToolActionsModule.java
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
package slimeknights.tconstruct.library.tools.definition.module.build;
import com.google.common.collect.ImmutableSet;
import net.minecraftforge.common.ToolAction;
import slimeknights.mantle.data.loadable.Loadables;
import slimeknights.mantle.data.loadable.record.RecordLoadable;
import slimeknights.tconstruct.library.module.ModuleHook;
import slimeknights.tconstruct.library.module.HookProvider;
import slimeknights.tconstruct.library.tools.definition.module.ToolHooks;
import slimeknights.tconstruct.library.tools.definition.module.ToolModule;
import slimeknights.tconstruct.library.tools.nbt.IToolStackView;
import java.util.List;
import java.util.Set;
/** Module that allows a tool to perform tool actions */
public record ToolActionsModule(Set<ToolAction> actions) implements ToolActionToolHook, ToolModule {
private static final List<ModuleHook<?>> DEFAULT_HOOKS = HookProvider.<ToolActionsModule>defaultHooks(ToolHooks.TOOL_ACTION);
public static final RecordLoadable<ToolActionsModule> LOADER = RecordLoadable.create(Loadables.TOOL_ACTION.set().requiredField("tool_actions", ToolActionsModule::actions), ToolActionsModule::new);
public static ToolActionsModule of(ToolAction... actions) {
return new ToolActionsModule(ImmutableSet.copyOf(actions));
}
@Override
public RecordLoadable<ToolActionsModule> getLoader() {
return LOADER;
}
@Override
public List<ModuleHook<?>> getDefaultHooks() {
return DEFAULT_HOOKS;
}
@Override
public boolean canPerformAction(IToolStackView tool, ToolAction toolAction) {
return actions.contains(toolAction);
}
}