MCPcopy Create free account
hub / github.com/BuildCraft/BuildCraft / RequestedHelper

Class RequestedHelper

common/buildcraft/lib/bpt/helper/RequestedHelper.java:8–58  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

6import buildcraft.api.bpt.IMaterialProvider.IRequested;
7
8public class RequestedHelper implements IRequested {
9 private final List<IRequested> requested = new ArrayList<>();
10 private boolean locked = false, used = false;
11
12 public void and(IRequested request) {
13 requested.add(request);
14 }
15
16 @Override
17 public boolean lock() throws IllegalStateException {
18 if (used) {
19 throw new IllegalArgumentException("Already used!");
20 }
21 boolean all = true;
22 for (IRequested req : requested) {
23 all &= req.lock();
24 }
25 locked = all;
26 return locked;
27 }
28
29 @Override
30 public boolean isLocked() {
31 return locked || used;
32 }
33
34 @Override
35 public void use() throws IllegalStateException {
36 if (used) {
37 throw new IllegalStateException("Already used!");
38 }
39 if (!locked) {
40 throw new IllegalStateException("Not locked!");
41 }
42 locked = false;
43 used = true;
44
45 for (IRequested req : requested) {
46 req.use();
47 }
48 }
49
50 @Override
51 public void release() {
52 for (IRequested req : requested) {
53 req.release();
54 }
55 locked = false;
56 used = true;
57 }
58}

Callers

nothing calls this directly

Calls

no outgoing calls

Tested by

no test coverage detected