ProjectAres/PGM/src/main/java/tc/oc/pgm/gamerules/GameRulesMatchModule.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());
}
}