Advertisement
DPOH-VAR

VS062 WS helljump

Mar 18th, 2014
206
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Groovy 21.23 KB | None | 0 0
  1. package helljump
  2.  
  3. import org.bukkit.OfflinePlayer
  4. import ru.dpohvar.varscript.event.EventHandler;
  5. import ru.dpohvar.varscript.VarScriptPlugin;
  6. import org.bukkit.entity.EntityType
  7. import org.bukkit.event.block.BlockBreakEvent
  8. import org.bukkit.event.entity.EntityDamageEvent
  9. import org.bukkit.event.entity.EntityExplodeEvent
  10. import org.bukkit.event.player.PlayerGameModeChangeEvent
  11. import org.bukkit.event.player.PlayerInteractEvent
  12. import org.bukkit.event.player.PlayerQuitEvent
  13. import org.bukkit.potion.PotionEffect
  14. import org.bukkit.potion.PotionEffectType
  15. import org.bukkit.scoreboard.DisplaySlot
  16. import org.bukkit.scoreboard.Objective
  17. import org.bukkit.scoreboard.Scoreboard
  18. import org.bukkit.Bukkit
  19. import org.bukkit.GameMode
  20. import org.bukkit.Location
  21. import org.bukkit.Material
  22. import org.bukkit.Sound
  23. import org.bukkit.World
  24. import org.bukkit.block.Block
  25. import org.bukkit.entity.Entity
  26. import org.bukkit.entity.Player
  27. import org.bukkit.entity.TNTPrimed
  28. import org.bukkit.util.Vector
  29. import ru.dpohvar.varscript.Workspace
  30.  
  31. import static org.bukkit.ChatColor.*
  32.  
  33. public class HelljumpArena{
  34.     private int basicStartDelay = 10;
  35.     private Set<Closure> endGameHandlers = [] as Set;
  36.     private static String prefix = "${RED}${BOLD}[${YELLOW}Hell${BOLD}j${YELLOW}ump${RED}${BOLD}]${RESET}";
  37.     private final Workspace workspace
  38.     private String name;
  39.     private HelljumpField field;
  40.     private boolean gameStarted = false;
  41.     private List<Player> players = [];
  42.     private Map<Player,PlayerData> playerDatas = [:];
  43.     private int platformCount;
  44.     private boolean removed = false;
  45.     private Location center;
  46.     private int radius;
  47.     private Collection<Block> blocks;
  48.     private int startDelay = 0;
  49.     private basicLevelLimit = 1000;
  50.     private levelScoreLimit;
  51.  
  52.     public int getBasicStartDelay() {
  53.         return basicStartDelay
  54.     }
  55.  
  56.     public void setBasicStartDelay(int basicStartDelay) {
  57.         this.basicStartDelay = basicStartDelay
  58.     }
  59.  
  60.     public void addEndGameHandler(Closure handler){
  61.         endGameHandlers << handler
  62.     }
  63.  
  64.     public boolean removeEndGameHandler(Closure handler){
  65.         endGameHandlers.remove handler
  66.     }
  67.  
  68.     private long bombingDelay = -1;
  69.     private long startCountPeriod = -1;
  70.     private long changeTimePeriod = -1;
  71.     private long blockBreakTrigger = -1;
  72.     private long blockInteractTrigger = -1;
  73.     private long playerDamageTrigger = -1;
  74.     private long playerScanPeriod = -1;
  75.     private long explodeTrigger = -1;
  76.     private long finisher = -1;
  77.     private long gameModeTrigger = -1;
  78.     private long leaveTrigger = -1;
  79.  
  80.     private Scores scores = new Scores()
  81.     private int score
  82.     private int level
  83.     private int time
  84.  
  85.     public HelljumpArena(String name, Location center, double radius, Workspace ws=null){
  86.         this.name = name
  87.         this.radius = radius;
  88.         this.center = center;
  89.         if (ws == null) ws = VarScriptPlugin.plugin.workspaceManager.getWorkspace("${name}@helljump")
  90.         workspace = ws;
  91.         this.field = new HelljumpField(center, radius, workspace)
  92.         this.platformCount = field.platforms.size()
  93.         assert platformCount > 1, "platforms must be > 1"
  94.         this.blocks = field.blocks;
  95.  
  96.         blockInteractTrigger = workspace.addEvent({ PlayerInteractEvent event ->
  97.             Block b = event.clickedBlock
  98.             if (b in blocks) event.cancelled = true
  99.             Player player = event.player
  100.             if (player in players) event.cancelled = true
  101.         } as EventHandler, PlayerInteractEvent.class);
  102.  
  103.         blockBreakTrigger = workspace.addEvent({ BlockBreakEvent event ->
  104.             Block b = event.block
  105.             if (b in blocks) event.cancelled = true
  106.         } as EventHandler, BlockBreakEvent.class)
  107.  
  108.         explodeTrigger = workspace.addEvent({ EntityExplodeEvent event ->
  109.             List<Block> exploded = event.blockList()
  110.             exploded.removeAll(blocks)
  111.         } as EventHandler, EntityExplodeEvent.class)
  112.  
  113.         finisher = workspace.addFinisher({
  114.             if (!removed) remove()
  115.         })
  116.     }
  117.  
  118.     private long getFuseTime(){
  119.         1 / (1d/80d + (level-1)/800d) as long
  120.     }
  121.  
  122.     private long getPlanRegenTime(){
  123.         fuseTime*2 + 10 as long
  124.     }
  125.  
  126.     private long getCreateBombTime(){
  127.         1 / platformCount / (1d/400d + (level-1)/3000d) as long
  128.     }
  129.  
  130.     private long getRandomCreateBombTime(){
  131.         long t = createBombTime;
  132.         t*0.5 + t*Math.random() as long;
  133.     }
  134.  
  135.     public boolean play(Player... players) {
  136.         play players as List
  137.     }
  138.  
  139.     public boolean play(List<Player> players){
  140.         if (removed) return false;
  141.         players.removeAll(this.players);
  142.         if (!players) return false;
  143.         int total = this.players.size() + players.size();
  144.         if (total > platformCount) {
  145.             players.each{it.sendMessage("$prefix$RED Too many players:$total (limit:$platformCount)")};
  146.             return false
  147.         };
  148.         if (gameStarted && startDelay <= 0) {
  149.             players.each{it.sendMessage("$prefix$RED game already started")};
  150.             return false
  151.         };
  152.         players.each{
  153.             playerDatas.put(it, new PlayerData(it, workspace))
  154.             it.sendMessage("$prefix$AQUA Let's Helljump in $GREEN$name$AQUA!")
  155.             for(def e in it.activePotionEffects) it.removePotionEffect(e.type)
  156.             it.gameMode = GameMode.ADVENTURE
  157.             it.foodLevel = 10000
  158.         };
  159.         field.settlePlayers(players);
  160.         scores.showTo(players);
  161.         this.players += players;
  162.         if (!gameStarted) start();
  163.  
  164.         return true;
  165.     }
  166.  
  167.     private void start(){
  168.         this.gameStarted = true;
  169.         this.startDelay = this.basicStartDelay;
  170.         score = 0
  171.         time = 0
  172.         level = 0
  173.         levelScoreLimit = 0
  174.         scores.reset();
  175.  
  176.         startCountPeriod = workspace.addPeriod({
  177.             if (startDelay>0) {
  178.                 scores.startTime = (startDelay--)
  179.             } else {
  180.                 workspace.stopPeriod(startCountPeriod)
  181.                 scores.reset();
  182.                 changeTimePeriod = workspace.addPeriod({increaseTimer()},20,0)
  183.                 bombing();
  184.             }
  185.         }, 20, 0)
  186.  
  187.         playerScanPeriod = workspace.addPeriod({scanPlayers()},20)
  188.  
  189.         playerDamageTrigger = workspace.addEvent({ EntityDamageEvent event ->
  190.             onEntityDamage event
  191.         } as EventHandler, EntityDamageEvent.class);
  192.  
  193.         gameModeTrigger = workspace.addEvent({ PlayerGameModeChangeEvent event ->
  194.             Player player = event.player
  195.             if (player in players) leave player;
  196.         } as EventHandler, PlayerGameModeChangeEvent.class);
  197.  
  198.         leaveTrigger = workspace.addEvent({ PlayerQuitEvent event ->
  199.             Player player = event.player
  200.             if (player in players) leave player
  201.         } as EventHandler, PlayerQuitEvent.class);
  202.  
  203.         field.reset();
  204.     }
  205.  
  206.     private void onEntityDamage(EntityDamageEvent event){
  207.         if (event.entityType != EntityType.PLAYER) return;
  208.         Player player = (Player) event.entity;
  209.         if (!(player in players)) return;
  210.         switch (event.cause) {
  211.             case EntityDamageEvent.DamageCause.LAVA:
  212.                 leave player;
  213.                 break;
  214.             case EntityDamageEvent.DamageCause.FALL:
  215.                 if (! field.platforms.find{it.center.distance(player.location)<2} ) {
  216.                     leave player;
  217.                 }
  218.                 break;
  219.         }
  220.         event.cancelled = true;
  221.     }
  222.  
  223.     public void scanPlayers(){
  224.         players.findAll { // игроки вне игрового региона
  225.             it.location.distance(center) > radius
  226.         } .each { leave it }; // вылетают сразу
  227.  
  228.         players.findAll { // игроки в воде
  229.             it.location.block.liquid
  230.         } .each { leave it }; // тоже вылетают из игры
  231.     }
  232.  
  233.     private void increaseTimer(){ // увеличиваем время на единичку
  234.         if (!gameStarted) workspace.stopPeriod(changeTimePeriod)
  235.         time++;
  236.         scores.time = time;
  237.     }
  238.  
  239.     private void bombing(){
  240.  
  241.         if (!players) {
  242.             stop();
  243.             return;
  244.         };
  245.  
  246.         if (field.stayPlatforms.size() > 1) {
  247.             bombingPlatform(field.stayPlatform);
  248.         }
  249.  
  250.         bombingDelay = workspace.addDelay({
  251.             bombing();
  252.         }, randomCreateBombTime);
  253.     }
  254.  
  255.     private void bombingPlatform(HelljumpPlatform platform){
  256.  
  257.         score += (1000/platformCount) as int;
  258.         scores.score = score;
  259.  
  260.         while (score > levelScoreLimit) {
  261.             level++;
  262.             scores.level = level;
  263.             levelScoreLimit += basicLevelLimit + basicLevelLimit*0.1*(level-1)
  264.         }
  265.  
  266.         platform.destroy(fuseTime) {
  267.             platform.planRegen(planRegenTime);
  268.         }
  269.  
  270.     }
  271.  
  272.     public void stop(){
  273.         playerDatas.each {
  274.             it.key.sendMessage("$prefix$AQUA$BOLD [GAME STOPPED]");
  275.             it.value.restore();
  276.         }
  277.         playerDatas.clear();
  278.         players.clear();
  279.         if (gameStarted) {
  280.             gameStarted = false;
  281.             workspace.stopDelay(bombingDelay);
  282.             workspace.stopPeriod(changeTimePeriod);
  283.             workspace.stopPeriod(playerScanPeriod);
  284.             workspace.stopPeriod(startCountPeriod);
  285.             workspace.stopEvent(playerDamageTrigger);
  286.             workspace.stopEvent(gameModeTrigger);
  287.             workspace.stopEvent(leaveTrigger);
  288.             field.reset();
  289.         }
  290.     }
  291.  
  292.     private void leave(Player player){
  293.         player.sendMessage(
  294.                 "$prefix$YELLOW$name$AQUA$BOLD [GAME OVER]\n" +
  295.                         "${YELLOW}score: $AQUA$BOLD$score\n" +
  296.                         "${YELLOW}level: $AQUA$BOLD$level\n" +
  297.                         "${YELLOW}time: $AQUA$BOLD$time${YELLOW}s"
  298.         )
  299.         players.remove(player)
  300.         playerDatas.remove(player).restore()
  301.         endGameHandlers.each {
  302.             try{
  303.                 it.call(player, score, level, time)
  304.             }catch(Error ignored){
  305.             }
  306.         }
  307.         if (players.empty) stop()
  308.     }
  309.  
  310.     public void remove(){
  311.         if (gameStarted) stop()
  312.         else field.reset()
  313.         workspace.stopPeriod(playerScanPeriod)
  314.         workspace.stopEvent(blockBreakTrigger)
  315.         workspace.stopEvent(blockInteractTrigger)
  316.         workspace.stopEvent(playerDamageTrigger)
  317.         workspace.stopEvent(explodeTrigger)
  318.         workspace.stopFinisher(finisher)
  319.         removed = true
  320.     }
  321. }
  322.  
  323. public class HelljumpField{
  324.     private static Random random = new Random();
  325.     private final Workspace workspace;
  326.     private List<HelljumpPlatform> platforms;
  327.  
  328.     public List<Block> getBlocks(){
  329.         List<Block> blocks = [];
  330.         platforms.each { blocks += it.blocks }
  331.         return blocks;
  332.     }
  333.  
  334.     public HelljumpField(Location center,double radius, Workspace ws){
  335.         this.workspace = ws;
  336.         this.platforms = findPlatforms(center, radius);
  337.     }
  338.  
  339.     public void reset(){
  340.         platforms.each{ it.reset() };
  341.     }
  342.  
  343.     public List<HelljumpPlatform> getStayPlatforms(){
  344.         return platforms.findAll{it.stay}
  345.     }
  346.  
  347.     public HelljumpPlatform getStayPlatform(){
  348.         List<HelljumpPlatform> pp = getStayPlatforms();
  349.         if (!pp) return null;
  350.         else return pp[random.nextInt(pp.size())];
  351.     }
  352.  
  353.     public HelljumpPlatform getDeadPlatform(){
  354.         List<HelljumpPlatform> pp = platforms.findAll{it.dead};
  355.         if (!pp) return null;
  356.         else return pp[random.nextInt(pp.size())];
  357.     }
  358.  
  359.     public void settlePlayers(List<Player> players){
  360.         players.each { player ->
  361.             def currentPlatforms = platforms.findAll { plf ->
  362.                 ! plf.center.world.entities.find {
  363.                     it.location.distance(plf.center) < 1
  364.                 }
  365.             }
  366.             if (currentPlatforms) currentPlatforms = platforms;
  367.             HelljumpPlatform dest = currentPlatforms.sort {random.nextDouble()} first();
  368.             player.teleport dest.center
  369.         }
  370.     }
  371.  
  372.     public List<HelljumpPlatform> getPlatforms(){
  373.         return (List<HelljumpPlatform>) platforms.clone();
  374.     }
  375.  
  376.     public static List<Block> getBlocksInSphere(Location center, double radius) {
  377.         List<Block> blocks = new ArrayList<Block>();
  378.         World world = center.world
  379.         int xa = (int) (center.x - radius - 1), ya = (int) (center.y - radius - 1), za = (int) (center.z - radius - 1);
  380.         int xb = (int) (center.x + radius + 1), yb = (int) (center.y + radius + 1), zb = (int) (center.z + radius + 1);
  381.         for (int x = xa; x < xb; x++) for (int y = ya; y < yb; y++) for (int z = za; z < zb; z++) {
  382.             Block block = world.getBlockAt(x, y, z);
  383.             if (block.location.distance(center) < radius) blocks.add(block);
  384.         }
  385.         return blocks;
  386.     }
  387.  
  388.     private List<HelljumpPlatform> findPlatforms(Location center, double radius){
  389.         return getBlocksInSphere(center,radius)
  390.         .findAll {it.getRelative(0,1,0).empty} // 0 0
  391.         .findAll {it.getRelative(0,2,0).empty} // 0 0
  392.         .findAll {it.getRelative(0,-1,0).empty} // 0 0
  393.         .findAll {it.getRelative(1,1,0).empty} // 1 0
  394.         .findAll {it.getRelative(1,2,0).empty} // 1 0
  395.         .findAll {it.getRelative(1,-1,0).empty} // 1 0
  396.         .findAll {it.getRelative(0,1,1).empty} // 0 1
  397.         .findAll {it.getRelative(0,2,1).empty} // 0 1
  398.         .findAll {it.getRelative(0,-1,1).empty} // 0 1
  399.         .findAll {it.getRelative(1,1,1).empty} // 1 1
  400.         .findAll {it.getRelative(1,2,1).empty} // 1 1
  401.         .findAll {it.getRelative(1,-1,1).empty} // 1 1
  402.         .findAll {it.getRelative(-1,0,-1).empty} // -1 -1
  403.         .findAll {it.getRelative(-1,0,0).empty} // -1 0
  404.         .findAll {it.getRelative(-1,0,1).empty} // -1 1
  405.         .findAll {it.getRelative(-1,0,2).empty} // -1 2
  406.         .findAll {it.getRelative(0,0,-1).empty} // 0 -1
  407.         .findAll {it.getRelative(0,0,2).empty} // 0 2
  408.         .findAll {it.getRelative(1,0,-1).empty} // 1 -1
  409.         .findAll {it.getRelative(1,0,2).empty} // 1 2
  410.         .findAll {it.getRelative(2,0,-1).empty} // 2 -1
  411.         .findAll {it.getRelative(2,0,0).empty} // 2 0
  412.         .findAll {it.getRelative(2,0,1).empty} // 2 1
  413.         .findAll {it.getRelative(2,0,2).empty} // 2 2
  414.         .findAll {!it.liquid}
  415.         .findAll {!it.getRelative(0,0,1).empty} // 0 1
  416.         .findAll {!it.getRelative(1,0,0).empty} // 1 0
  417.         .findAll {!it.getRelative(1,0,1).empty} // 1 1
  418.         .collect { new HelljumpPlatform(
  419.                 [it,it.getRelative(0,0,1),it.getRelative(1,0,0),it.getRelative(1,0,1)],
  420.                 it.location.add(1,1,1),
  421.                 workspace
  422.         )}
  423.     }
  424. }
  425.  
  426. @SuppressWarnings(["GrDeprecatedAPIUsage"])
  427. public class HelljumpPlatform{
  428.     private final Workspace workspace;
  429.     private Collection<Block> blocks;
  430.     private List<BlockData> blockDatas;
  431.     private Location center;
  432.     private World world;
  433.     private State state = State.DEAD;
  434.     private List<Entity> entityTrash = [];
  435.     long workingTimeout = -1;
  436.  
  437.     private static enum State{
  438.         STAY, DEAD, DESTROYING, RESTORING, PLAN
  439.     }
  440.  
  441.     public Collection<Block> getBlocks(){
  442.         return (Collection<Block>) blocks.clone();
  443.     }
  444.  
  445.     public HelljumpPlatform(Collection<Block> blocks, Location center, Workspace ws){
  446.         this.workspace = ws;
  447.         this.blocks = blocks;
  448.         this.center = center;
  449.         this.world = center.world;
  450.         this.blockDatas = blocks.collect{
  451.             new BlockData(block: it, type: it.type, data: it.data);
  452.         };
  453.     }
  454.  
  455.     public boolean isStay(){
  456.         return state == State.STAY
  457.     }
  458.     public boolean isDead(){
  459.         return state == State.DEAD
  460.     }
  461.     public boolean isRestoring(){
  462.         return state == State.RESTORING
  463.     }
  464.     public boolean isDestroying(){
  465.         return state == State.DESTROYING
  466.     }
  467.     public boolean isInPlan(){
  468.         return state == State.PLAN
  469.     }
  470.  
  471.     public Location getCenter(){
  472.         center;
  473.     }
  474.  
  475.     public World getWorld(){
  476.         world;
  477.     }
  478.  
  479.     public void reset(){
  480.         workspace.stopDelay(workingTimeout)
  481.         state = State.STAY;
  482.         blockDatas.each{
  483.             it.block.type = it.type;
  484.             it.block.data = it.data;
  485.         }
  486.         entityTrash.each{ it.remove() }.clear();
  487.     }
  488.  
  489.     public void destroy(long ticks){
  490.         destroy(ticks,null)
  491.     }
  492.  
  493.     public void destroy(long ticks, Closure callback){
  494.         if (state != State.STAY) return;
  495.         state = State.DESTROYING;
  496.         Location tntSpawnPoint = center.clone().add(0,3,0);
  497.         world.playSound(center,Sound.GHAST_FIREBALL,1,1);
  498.         TNTPrimed tnt = world.spawn(tntSpawnPoint, TNTPrimed);
  499.         tnt.yield = 0;
  500.         entityTrash << tnt;
  501.         workingTimeout = workspace.addDelay({
  502.             tnt.remove();
  503.             entityTrash.clear();
  504.             world.createExplosion(center,0f);
  505.             entityTrash += blockDatas.collect {
  506.                 it.block.type = Material.AIR;
  507.                 world.spawnFallingBlock(it.block.location, it.type, it.data as byte);
  508.             }.each {
  509.                 it.velocity = new Vector(
  510.                     it.location.x-center.x,
  511.                     0.2,
  512.                     it.location.z-center.z
  513.                 ).normalize().multiply(0.3);
  514.             }
  515.             workingTimeout = workspace.addDelay( {
  516.                 entityTrash.each{ it.remove() }
  517.                 state = State.DEAD;
  518.                 if (callback) callback();
  519.             }, 7 );
  520.         }, ticks );
  521.     }
  522.  
  523.     public void regen(){
  524.         regen(null)
  525.     }
  526.  
  527.     public void regen(Closure callback){
  528.         if (state != State.DEAD && state != State.PLAN) return;
  529.         workspace.stopDelay(workingTimeout)
  530.         entityTrash += blockDatas.collect {
  531.             Location loc = it.block.location.add(0,-2,0);
  532.             world.spawnFallingBlock( loc, it.type, (byte)it.data );
  533.         }.each {
  534.             it.setVelocity(new Vector(0,0.5,0));
  535.         };
  536.         workingTimeout = workspace.addDelay({
  537.             this.reset();
  538.             if (callback) callback();
  539.         }, 8 );
  540.     }
  541.  
  542.     public void planRegen(long ticks){
  543.         planRegen(ticks,null)
  544.     }
  545.  
  546.     public void planRegen(long ticks, Closure callback){
  547.         if (state != State.DEAD) return;
  548.         state = State.PLAN;
  549.         workingTimeout = workspace.addDelay({
  550.             regen();
  551.             if (callback) callback() ;
  552.         }, ticks);
  553.     }
  554. }
  555.  
  556. public class BlockData{
  557.     public Block block;
  558.     public Material type;
  559.     public byte data;
  560. }
  561.  
  562. @SuppressWarnings("GrDeprecatedAPIUsage")
  563. public class PlayerData{
  564.     public final Workspace workspace;
  565.     public final Player player;
  566.     public double hp;
  567.     public int food;
  568.     public GameMode gm;
  569.     public Location loc;
  570.     public Scoreboard scoreboard;
  571.  
  572.     public PlayerData(Player player, Workspace ws){
  573.         this.workspace = ws;
  574.         this.player = player;
  575.         this.hp = player.health;
  576.         this.food = player.foodLevel;
  577.         this.gm = player.gameMode;
  578.         this.loc = player.location;
  579.         this.scoreboard = player.scoreboard;
  580.     }
  581.  
  582.     public void restore(){
  583.         player.teleport(loc);
  584.         player.health = hp;
  585.         player.foodLevel = food;
  586.         player.gameMode = gm;
  587.         player.fallDistance = 0;
  588.         player.activePotionEffects.each{player.removePotionEffect(it.type)}
  589.         player.scoreboard = scoreboard;
  590.         player.addPotionEffect(new PotionEffect(PotionEffectType.FIRE_RESISTANCE,20,1))
  591.         try {
  592.             workspace.addDelay({ player.fireTicks = 0 },10);
  593.         } catch (Exception ignored){}
  594.     }
  595. }
  596.  
  597. public class Scores{
  598.     private static OfflinePlayer TIME = Bukkit.getOfflinePlayer "${YELLOW}Time:"
  599.     private static OfflinePlayer START_TIME = Bukkit.getOfflinePlayer "${YELLOW}${BOLD}Start in:"
  600.     private static OfflinePlayer SCORE = Bukkit.getOfflinePlayer "${GREEN}${BOLD}Score:"
  601.     private static OfflinePlayer LEVEL = Bukkit.getOfflinePlayer "${AQUA}Level:"
  602.  
  603.     private Scoreboard scoreboard;
  604.     private Objective objective;
  605.  
  606.     public Scores(){
  607.         this.scoreboard = Bukkit.scoreboardManager.newScoreboard;
  608.         this.objective = scoreboard.registerNewObjective("helljump","${RED}[${YELLOW}Helljump${RED}]" );
  609.         this.objective.displaySlot = DisplaySlot.SIDEBAR;
  610.     }
  611.  
  612.     public void showTo(List<Player> players){
  613.         players.each {it.scoreboard = scoreboard};
  614.     }
  615.  
  616.     public void reset(){
  617.         scoreboard.resetScores TIME
  618.         scoreboard.resetScores START_TIME
  619.         scoreboard.resetScores SCORE
  620.         scoreboard.resetScores LEVEL
  621.     }
  622.  
  623.     public void setTitle(String title){
  624.         objective.displayName = title
  625.     }
  626.  
  627.     public void setTime(int val){
  628.         objective.getScore(TIME).score = val;
  629.     }
  630.     public void setStartTime(int val){
  631.         objective.getScore(START_TIME).score = val;
  632.     }
  633.     public void setScore(int val){
  634.         objective.getScore(SCORE).score = val;
  635.     }
  636.     public void setLevel(int val){
  637.         objective.getScore(LEVEL).score = val;
  638.     }
  639. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement