-
-
Notifications
You must be signed in to change notification settings - Fork 44
/
WrappedScheduledTickHandler.java
57 lines (48 loc) · 1.77 KB
/
WrappedScheduledTickHandler.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
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
package nallar.tickthreading.util;
import cpw.mods.fml.common.IScheduledTickHandler;
import cpw.mods.fml.common.ITickHandler;
import cpw.mods.fml.common.SingleIntervalHandler;
import cpw.mods.fml.common.TickType;
import cpw.mods.fml.common.modloader.BaseModTicker;
import nallar.tickthreading.Log;
import java.util.*;
public class WrappedScheduledTickHandler implements IScheduledTickHandler {
public final EnumSet<TickType> ticks;
private final IScheduledTickHandler scheduledTickHandler;
@Override
public int nextTickSpacing() {
return scheduledTickHandler.nextTickSpacing();
}
@Override
public void tickStart(final EnumSet<TickType> type, final Object... tickData) {
scheduledTickHandler.tickStart(type, tickData);
}
@Override
public void tickEnd(final EnumSet<TickType> type, final Object... tickData) {
scheduledTickHandler.tickEnd(type, tickData);
}
@Override
public EnumSet<TickType> ticks() {
return ticks == null ? scheduledTickHandler.ticks() : ticks;
}
@Override
public String getLabel() {
return scheduledTickHandler.getLabel();
}
public WrappedScheduledTickHandler(IScheduledTickHandler scheduledTickHandler) {
EnumSet<TickType> ticks = scheduledTickHandler.ticks();
ITickHandler tickHandler = scheduledTickHandler;
if (tickHandler instanceof SingleIntervalHandler) {
tickHandler = ReflectUtil.get(scheduledTickHandler, "wrapped");
}
boolean baseModTicker = tickHandler instanceof BaseModTicker;
if (ticks == null || ticks.isEmpty() || baseModTicker) {
ticks = null;
if (!baseModTicker) {
Log.warning("Null ticks for tick handler " + Log.toString(tickHandler) + ':' + tickHandler.getLabel());
}
}
this.ticks = ticks;
this.scheduledTickHandler = scheduledTickHandler;
}
}