3
0
Fork 0

Waitingrow done for testing!

This commit is contained in:
stijnb1234 2020-06-03 16:49:56 +02:00
parent 2f7c90be62
commit 0c53cfae5e
6 changed files with 119 additions and 7 deletions

View file

@ -4,10 +4,7 @@ import club.minnced.discord.webhook.WebhookClient;
import club.minnced.discord.webhook.WebhookClientBuilder; import club.minnced.discord.webhook.WebhookClientBuilder;
import net.milkbowl.vault.economy.Economy; import net.milkbowl.vault.economy.Economy;
import nl.sbdeveloper.themeparkplus.commands.TPPCMD; import nl.sbdeveloper.themeparkplus.commands.TPPCMD;
import nl.sbdeveloper.themeparkplus.listeners.AntiFreerunListener; import nl.sbdeveloper.themeparkplus.listeners.*;
import nl.sbdeveloper.themeparkplus.listeners.DirectionalGateListener;
import nl.sbdeveloper.themeparkplus.listeners.FastpassListeners;
import nl.sbdeveloper.themeparkplus.listeners.StatusChangeListener;
import nl.sbdeveloper.themeparkplus.managers.DBManager; import nl.sbdeveloper.themeparkplus.managers.DBManager;
import nl.sbdeveloper.themeparkplus.sbutils.UpdateManager; import nl.sbdeveloper.themeparkplus.sbutils.UpdateManager;
import nl.sbdeveloper.themeparkplus.util.LGUtil; import nl.sbdeveloper.themeparkplus.util.LGUtil;
@ -140,6 +137,7 @@ public final class ThemeParkPlus extends JavaPlugin {
Bukkit.getLogger().info("[ThemeParkPlus] Loading listeners..."); Bukkit.getLogger().info("[ThemeParkPlus] Loading listeners...");
Bukkit.getPluginManager().registerEvents(new DirectionalGateListener(), this); Bukkit.getPluginManager().registerEvents(new DirectionalGateListener(), this);
Bukkit.getPluginManager().registerEvents(new FastpassListeners(), this); Bukkit.getPluginManager().registerEvents(new FastpassListeners(), this);
Bukkit.getPluginManager().registerEvents(new WaitingTimeListener(), this);
if (getSConfig().getFile().getBoolean("AntiFreerun.Enabled")) { if (getSConfig().getFile().getBoolean("AntiFreerun.Enabled")) {
Bukkit.getPluginManager().registerEvents(new AntiFreerunListener(), this); Bukkit.getPluginManager().registerEvents(new AntiFreerunListener(), this);
} }

View file

@ -1,5 +1,6 @@
package nl.sbdeveloper.themeparkplus.api; package nl.sbdeveloper.themeparkplus.api;
import com.sk89q.worldedit.bukkit.BukkitAdapter;
import de.tr7zw.changeme.nbtapi.NBTItem; import de.tr7zw.changeme.nbtapi.NBTItem;
import me.paradoxpixel.themepark.api.attraction.Attraction; import me.paradoxpixel.themepark.api.attraction.Attraction;
import nl.sbdeveloper.themeparkplus.ThemeParkPlus; import nl.sbdeveloper.themeparkplus.ThemeParkPlus;
@ -16,6 +17,7 @@ import org.jetbrains.annotations.Nullable;
import java.util.Collections; import java.util.Collections;
import java.util.HashMap; import java.util.HashMap;
import java.util.List; import java.util.List;
import java.util.Optional;
public class PlusAPI { public class PlusAPI {
private static HashMap<Location, Gate> gates = new HashMap<>(); private static HashMap<Location, Gate> gates = new HashMap<>();
@ -97,7 +99,7 @@ public class PlusAPI {
} }
/** /**
* Get a row by the location * Get a row by the rideid
* *
* @param rideID The rideID * @param rideID The rideID
* @return The row * @return The row
@ -106,6 +108,28 @@ public class PlusAPI {
return rows.get(rideID); return rows.get(rideID);
} }
/**
* Get a row by the location
*
* @param loc The location
* @return The row
*/
@NotNull
public static Optional<WaitingRow> getRow(Location loc) {
return rows.values().stream().filter(row -> row.getRegion().contains(BukkitAdapter.asBlockVector(loc))).findFirst();
}
/**
* Get a row by the sign location
*
* @param signLoc The sign location
* @return The row
*/
@NotNull
public static Optional<WaitingRow> getRowBySign(Location signLoc) {
return rows.values().stream().filter(row -> row.getSignLocations().contains(signLoc)).findFirst();
}
/** /**
* Get all the rows * Get all the rows
* *

View file

@ -14,7 +14,7 @@ public class WaitingRow {
@Getter @Setter private String rideID; @Getter @Setter private String rideID;
@Getter @Setter private Region region; @Getter @Setter private Region region;
@Getter @Setter private int waitingPlayers = 0; @Getter @Setter private int waitingPlayers = 0;
@Getter @Setter private int waitingTimeMinutes = 0; @Getter @Setter private double waitingTimeMinutes = 0;
private ArrayList<Location> signLocations = new ArrayList<>(); private ArrayList<Location> signLocations = new ArrayList<>();
public WaitingRow(String rideID, Region region) { public WaitingRow(String rideID, Region region) {

View file

@ -6,13 +6,17 @@ import nl.sbdeveloper.themeparkplus.ThemeParkPlus;
import nl.sbdeveloper.themeparkplus.api.PlusAPI; import nl.sbdeveloper.themeparkplus.api.PlusAPI;
import nl.sbdeveloper.themeparkplus.api.objects.WaitingRow; import nl.sbdeveloper.themeparkplus.api.objects.WaitingRow;
import nl.sbdeveloper.themeparkplus.util.ConfigUtil; import nl.sbdeveloper.themeparkplus.util.ConfigUtil;
import org.bukkit.block.BlockState;
import org.bukkit.block.Sign;
import org.bukkit.entity.Player; import org.bukkit.entity.Player;
import org.bukkit.event.EventHandler; import org.bukkit.event.EventHandler;
import org.bukkit.event.Listener; import org.bukkit.event.Listener;
import org.bukkit.event.block.BlockBreakEvent;
import org.bukkit.event.block.SignChangeEvent; import org.bukkit.event.block.SignChangeEvent;
import org.jetbrains.annotations.NotNull; import org.jetbrains.annotations.NotNull;
import java.util.Collections; import java.util.Collections;
import java.util.Optional;
/** /**
* Sign setup listener * Sign setup listener
@ -72,4 +76,21 @@ public class SignListeners implements Listener {
p.sendMessage(ConfigUtil.getMessage("General.IncorrectSign")); p.sendMessage(ConfigUtil.getMessage("General.IncorrectSign"));
} }
} }
@EventHandler
public void onDestroySign(BlockBreakEvent e) {
BlockState signblocks = e.getBlock().getState();
if ((signblocks instanceof Sign)) {
Optional<WaitingRow> rowOptional = PlusAPI.getRowBySign(e.getBlock().getLocation());
if (!rowOptional.isPresent()) return;
WaitingRow row = rowOptional.get();
if (row.getSignLocations().size() == 1) {
PlusAPI.removeRow(row);
} else {
row.getSignLocations().remove(e.getBlock().getLocation());
}
ThemeParkPlus.getData().save();
}
}
} }

View file

@ -0,0 +1,68 @@
package nl.sbdeveloper.themeparkplus.listeners;
import nl.sbdeveloper.themeparkplus.ThemeParkPlus;
import nl.sbdeveloper.themeparkplus.api.PlusAPI;
import nl.sbdeveloper.themeparkplus.api.objects.WaitingRow;
import nl.sbdeveloper.themeparkplus.util.ConfigUtil;
import org.bukkit.Bukkit;
import org.bukkit.Location;
import org.bukkit.block.Block;
import org.bukkit.block.BlockState;
import org.bukkit.block.Sign;
import org.bukkit.event.EventHandler;
import org.bukkit.event.Listener;
import org.bukkit.event.player.PlayerMoveEvent;
import org.jetbrains.annotations.NotNull;
import java.util.Collections;
import java.util.Optional;
public class WaitingTimeListener implements Listener {
private static final double PER_PLAYER = ThemeParkPlus.getSConfig().getFile().getDouble("WaitingRow.MinutesPerPlayer");
@EventHandler
public void onPlayerMove(@NotNull PlayerMoveEvent e) {
if (e.getTo() == null) return;
if ((e.getFrom().getBlockX() != e.getTo().getBlockX())
|| (e.getFrom().getBlockY() != e.getTo().getBlockY())
|| (e.getFrom().getBlockZ() != e.getTo().getBlockZ())) {
Optional<WaitingRow> rowOptional = PlusAPI.getRow(e.getFrom());
Optional<WaitingRow> rowOptional2 = PlusAPI.getRow(e.getTo());
WaitingRow row = null;
int waitingNew = 0;
double waitingTimeNew = 0;
if (!rowOptional.isPresent() && rowOptional2.isPresent()) {
//ENTER
row = rowOptional2.get();
waitingNew = row.getWaitingPlayers() + 1;
waitingTimeNew = row.getWaitingTimeMinutes() + PER_PLAYER;
} else if (rowOptional.isPresent() && !rowOptional2.isPresent()) {
//LEAVE
row = rowOptional.get();
waitingNew = row.getWaitingPlayers() - 1;
waitingTimeNew = row.getWaitingTimeMinutes() - PER_PLAYER;
}
if (row == null) return;
row.setWaitingPlayers(waitingNew);
row.setWaitingTimeMinutes(waitingTimeNew);
for (Location location : row.getSignLocations()) {
Block signblock = location.getBlock();
BlockState signblocks = signblock.getState();
if ((signblocks instanceof Sign)) {
Sign signs = (Sign) signblocks;
signs.setLine(3, waitingNew + " min.");
signs.update();
} else {
Bukkit.getLogger().warning(ConfigUtil.getMessage("WaitingRow.WrongLocation", Collections.singletonMap("%ridename%", row.getRideID())));
PlusAPI.removeRow(row);
ThemeParkPlus.getData().save();
}
}
}
}
}

View file

@ -35,3 +35,4 @@ Lamps:
TurnedOff: '&aLamps in region turned off!' TurnedOff: '&aLamps in region turned off!'
WaitingRow: WaitingRow:
SignCreated: '&aYou''ve successfully created a waitingrow sign!' SignCreated: '&aYou''ve successfully created a waitingrow sign!'
WrongLocation: '&cA waitingrow sign (from the attraction %ridename%) couldn''t be found! It will be deleted.'