feat: add border shrinking

This commit is contained in:
Simon Giesel 2020-05-25 16:12:00 +02:00
parent 92786862cd
commit 876d718ccb
4 changed files with 44 additions and 16 deletions

View file

@ -80,7 +80,7 @@ public class Varo extends JavaPlugin {
this.config.addDefault("Varo.Bans", new ArrayList<String>()); this.config.addDefault("Varo.Bans", new ArrayList<String>());
this.config.addDefault("Varo.Border.X", 0); this.config.addDefault("Varo.Border.X", 0);
this.config.addDefault("Varo.Border.Z", 0); this.config.addDefault("Varo.Border.Z", 0);
this.config.addDefault("Varo.Border.Size", 4000); // 2.000x2.000 this.config.addDefault("Varo.Border.Size", 1250 * 2); // 1.250x1.250
this.config.addDefault("Varo.Border.NextSize", this.config.getDefaults().get("Varo.Border.Size")); this.config.addDefault("Varo.Border.NextSize", this.config.getDefaults().get("Varo.Border.Size"));
this.config.addDefault("Varo.Border.LastUpdate", Instant.now().toEpochMilli()); this.config.addDefault("Varo.Border.LastUpdate", Instant.now().toEpochMilli());
this.config.options().copyDefaults(true); this.config.options().copyDefaults(true);

View file

@ -28,7 +28,6 @@ public class PlayerJoinQuitListener implements Listener {
if (!this.plugin.getTeamManager().hasTeam(e.getPlayer())) { if (!this.plugin.getTeamManager().hasTeam(e.getPlayer())) {
return; return;
} }
this.plugin.getTeamManager().setAFK(e.getPlayer().getName());
if (!this.plugin.getBanUtils().isBanned(e.getPlayer().getUniqueId())) { if (!this.plugin.getBanUtils().isBanned(e.getPlayer().getUniqueId())) {
Bukkit.broadcast(this.plugin.getMessageUtils().getServiceMessage(e.getPlayer().getName(), Bukkit.broadcast(this.plugin.getMessageUtils().getServiceMessage(e.getPlayer().getName(),
"hat den Server verlassen.")); "hat den Server verlassen."));
@ -41,6 +40,7 @@ public class PlayerJoinQuitListener implements Listener {
&& !this.plugin.getBanUtils().isBanned(e.getPlayer().getUniqueId())) { && !this.plugin.getBanUtils().isBanned(e.getPlayer().getUniqueId())) {
this.plugin.getNPCManager().createClone(e.getPlayer()); this.plugin.getNPCManager().createClone(e.getPlayer());
} }
this.plugin.getTeamManager().setAFK(e.getPlayer().getName());
} }
@EventHandler @EventHandler

View file

@ -2,6 +2,7 @@ package de.cliffbreak.varo.managers;
import java.time.Instant; import java.time.Instant;
import java.time.LocalDateTime; import java.time.LocalDateTime;
import java.time.ZoneId;
import org.bukkit.Bukkit; import org.bukkit.Bukkit;
import org.bukkit.World; import org.bukkit.World;
@ -23,8 +24,8 @@ public class BorderManager {
final int size = this.plugin.getConfig().getInt("Varo.Border.Size"); final int size = this.plugin.getConfig().getInt("Varo.Border.Size");
final int x = this.plugin.getConfig().getInt("Varo.Border.X"); final int x = this.plugin.getConfig().getInt("Varo.Border.X");
final int z = this.plugin.getConfig().getInt("Varo.Border.Z"); final int z = this.plugin.getConfig().getInt("Varo.Border.Z");
for (World world : Bukkit.getWorlds()) { for (final World world : Bukkit.getWorlds()) {
Environment env = world.getEnvironment(); final Environment env = world.getEnvironment();
if (env.equals(Environment.THE_END)) if (env.equals(Environment.THE_END))
continue; continue;
final WorldBorder border = world.getWorldBorder(); final WorldBorder border = world.getWorldBorder();
@ -33,23 +34,46 @@ public class BorderManager {
border.setSize(env.equals(Environment.NORMAL) ? size : (size / 8)); border.setSize(env.equals(Environment.NORMAL) ? size : (size / 8));
border.setWarningDistance(25); border.setWarningDistance(25);
border.setWarningTime(0); border.setWarningTime(0);
border.setDamageAmount(1); border.setDamageAmount(0.2);
border.setDamageBuffer(0); border.setDamageBuffer(0);
} }
} }
public LocalDateTime shrinkBorder() { private void setBorderSize(final int size, final int time) {
this.plugin.getConfig().set("Varo.Border.LastUpdate", Instant.now().toEpochMilli()); System.out.println("Size: " + size);
int size = this.plugin.getConfig().getInt("Varo.Border.NextSize"); System.out.println("Time: " + time);
size = size - 150; // 75*2 for both directions for (final World world : Bukkit.getWorlds()) {
final Environment env = world.getEnvironment();
if (env.equals(Environment.THE_END))
continue;
final WorldBorder border = world.getWorldBorder();
border.setSize(env.equals(Environment.NORMAL) ? size : (size / 8), (long) time);
}
}
public void shrinkBorder(final int playTimeSeconds) {
final int size = this.plugin.getConfig().getInt("Varo.Border.NextSize");
this.setBorderSize(size, playTimeSeconds);
this.plugin.getConfig().set("Varo.Border.Size", size); this.plugin.getConfig().set("Varo.Border.Size", size);
this.plugin.saveConfig(); this.plugin.saveConfig();
return LocalDateTime.now(); }
public LocalDateTime broadcastBorderShrink() {
final Instant curr = Instant.now();
this.plugin.getConfig().set("Varo.Border.LastUpdate", curr.toEpochMilli());
int size = this.plugin.getConfig().getInt("Varo.Border.NextSize");
size = size - 110; // 55*2 for both directions
this.plugin.getConfig().set("Varo.Border.NextSize", size);
this.plugin.saveConfig();
this.plugin.getDiscordBot()
.broadcastMessage("@everyone In 30 Minuten geht es los!\nDie Border schrumpft heute auf " + size / 2
+ "x" + size / 2 + " Blöcke.");
return curr.atZone(ZoneId.systemDefault()).toLocalDateTime();
} }
public int addPlayerDeath() { public int addPlayerDeath() {
int size = this.plugin.getConfig().getInt("Varo.Border.NextSize"); int size = this.plugin.getConfig().getInt("Varo.Border.NextSize");
size = size - 50; // 25*2 for both directions size = size - 40; // 20*2 for both directions
this.plugin.getConfig().set("Varo.Border.NextSize", size); this.plugin.getConfig().set("Varo.Border.NextSize", size);
this.plugin.saveConfig(); this.plugin.saveConfig();
return size; return size;

View file

@ -20,10 +20,12 @@ public class GameTimeManager {
private static final int firstPlayTimeMinutes = 50; private static final int firstPlayTimeMinutes = 50;
private static final int firstPlayTimeLoginMinutes = 10; private static final int firstPlayTimeLoginMinutes = 10;
private static final LocalTime firstPlayStart = LocalTime.of(19, 10, 00); private static final LocalTime firstPlayStart = LocalTime.of(19, 10, 00);
// private static final int playTimeMinutes = 30; private static final int playTimeMinutes = 30;
private static final int playTimeMinutes = 250;
private static final int playTimeLoginMinutes = 5; private static final int playTimeLoginMinutes = 5;
private static final LocalTime playStart = LocalTime.of(19, 30, 00); private static final LocalTime playStart = LocalTime.of(19, 30, 00);
// private static final LocalTime playStart = LocalTime.now().plusMinutes(30);
// private static final LocalTime playStart = LocalTime.now().plusMinutes(1);
// private static final LocalTime playStart = LocalTime.now();
public GameTimeManager(final Varo plugin) { public GameTimeManager(final Varo plugin) {
this.plugin = plugin; this.plugin = plugin;
@ -127,7 +129,6 @@ public class GameTimeManager {
@Override @Override
public void run() { public void run() {
final LocalDateTime now = LocalDateTime.now(); final LocalDateTime now = LocalDateTime.now();
System.out.println(lastUpdate);
if (lastUpdate.getDayOfYear() < now.getDayOfYear()) { if (lastUpdate.getDayOfYear() < now.getDayOfYear()) {
if (currentDay() <= 1) { if (currentDay() <= 1) {
System.out.println("Day 1 or smaller"); System.out.println("Day 1 or smaller");
@ -136,11 +137,14 @@ public class GameTimeManager {
if (now.getHour() == playStart.minusMinutes(30).getHour() if (now.getHour() == playStart.minusMinutes(30).getHour()
&& now.getMinute() == playStart.minusMinutes(30).getMinute()) { && now.getMinute() == playStart.minusMinutes(30).getMinute()) {
System.out.println("Shrinking Border"); System.out.println("Shrinking Border");
lastUpdate = plugin.getBorderManager().shrinkBorder(); lastUpdate = plugin.getBorderManager().broadcastBorderShrink();
} }
} }
if (now.getHour() == playStart.getHour() && now.getMinute() == playStart.getMinute()) {
System.out.println("Shrinking Border");
plugin.getBorderManager().shrinkBorder(playTimeMinutes * 60);
}
} }
}.runTaskTimer(this.plugin, 0, 60 * 20); }.runTaskTimer(this.plugin, 0, 60 * 20);
} }
} }