44 lines
1.0 KiB
Java
44 lines
1.0 KiB
Java
package tc.oc.pgm.gamerules;
|
|
|
|
import java.util.Map;
|
|
import com.google.common.base.Preconditions;
|
|
import com.google.common.collect.ImmutableMap;
|
|
|
|
import tc.oc.pgm.match.Match;
|
|
import tc.oc.pgm.match.MatchModule;
|
|
import tc.oc.pgm.match.Repeatable;
|
|
import tc.oc.time.Time;
|
|
|
|
public class GameRulesMatchModule extends MatchModule {
|
|
|
|
private final Map<String, String> gameRules;
|
|
|
|
public GameRulesMatchModule(Match match, Map<String, String> gameRules) {
|
|
super(match);
|
|
this.gameRules = Preconditions.checkNotNull(gameRules, "gamerules");
|
|
}
|
|
|
|
@Override
|
|
public void load() {
|
|
update();
|
|
}
|
|
|
|
@Repeatable(interval = @Time(seconds = 1))
|
|
public void tick() {
|
|
update();
|
|
}
|
|
|
|
public void update() {
|
|
gameRulesImmutable().forEach((String rule, String val) -> match.getWorld().setGameRuleValue(rule, val));
|
|
}
|
|
|
|
public Map<String, String> gameRules() {
|
|
return gameRules;
|
|
}
|
|
|
|
public ImmutableMap<String, String> gameRulesImmutable() {
|
|
return ImmutableMap.copyOf(gameRules());
|
|
}
|
|
|
|
}
|