Add normal time to Worlds and use full Ban Entries (+graphql)

Signed-off-by: Etzelia <etzelia@hotmail.com>
query
Etzelia 2020-08-07 16:38:17 -05:00
parent e41d54e1ed
commit 30f329a32d
No known key found for this signature in database
GPG Key ID: 708511AE7ABC5314
6 changed files with 105 additions and 29 deletions

View File

@ -1,6 +1,8 @@
package xyz.etztech.serverapi; package xyz.etztech.serverapi;
import org.bukkit.BanEntry;
import org.bukkit.BanList;
import org.bukkit.OfflinePlayer; import org.bukkit.OfflinePlayer;
import org.bukkit.World; import org.bukkit.World;
import org.bukkit.entity.Player; import org.bukkit.entity.Player;
@ -78,7 +80,7 @@ public class ServerAPI extends JavaPlugin implements IProvider {
return WorldAPI.fromMinecraft(world); return WorldAPI.fromMinecraft(world);
} }
} }
return new WorldAPI("unknown", 0, WorldAPI.WEATHER_UNKNOWN); return new WorldAPI("unknown", 0, 0, WorldAPI.WEATHER_UNKNOWN);
} }
@Override @Override
@ -100,12 +102,12 @@ public class ServerAPI extends JavaPlugin implements IProvider {
} }
@Override @Override
public Set<PlayerAPI> bans() { public Set<BanAPI> bans() {
Set<PlayerAPI> players = new HashSet<>(); Set<BanAPI> bans = new HashSet<>();
for (OfflinePlayer player : getServer().getBannedPlayers()) { for (BanEntry entry : getServer().getBanList(BanList.Type.NAME).getBanEntries()) {
players.add(PlayerAPI.fromMinecraft(player)); bans.add(BanAPI.fromMinecraft(entry));
} }
return players; return bans;
} }
@Override @Override

View File

@ -2,10 +2,7 @@ package xyz.etztech.serverapi.web;
import com.expediagroup.graphql.annotations.GraphQLName; import com.expediagroup.graphql.annotations.GraphQLName;
import io.javalin.plugin.graphql.graphql.QueryGraphql; import io.javalin.plugin.graphql.graphql.QueryGraphql;
import xyz.etztech.serverapi.web.api.PlayerAPI; import xyz.etztech.serverapi.web.api.*;
import xyz.etztech.serverapi.web.api.QueryAPI;
import xyz.etztech.serverapi.web.api.TPSAPI;
import xyz.etztech.serverapi.web.api.WorldAPI;
public class GraphQL implements QueryGraphql { public class GraphQL implements QueryGraphql {
private final IProvider provider; private final IProvider provider;
@ -14,6 +11,11 @@ public class GraphQL implements QueryGraphql {
this.provider = provider; this.provider = provider;
} }
@GraphQLName("bans")
public BanAPI[] getBans() {
return provider.bans().toArray(new BanAPI[0]);
}
@GraphQLName("players") @GraphQLName("players")
public PlayerAPI[] getPlayers() { public PlayerAPI[] getPlayers() {
return provider.players().toArray(new PlayerAPI[0]); return provider.players().toArray(new PlayerAPI[0]);

View File

@ -1,15 +1,12 @@
package xyz.etztech.serverapi.web; package xyz.etztech.serverapi.web;
import xyz.etztech.serverapi.web.api.PlayerAPI; import xyz.etztech.serverapi.web.api.*;
import xyz.etztech.serverapi.web.api.QueryAPI;
import xyz.etztech.serverapi.web.api.TPSAPI;
import xyz.etztech.serverapi.web.api.WorldAPI;
import java.util.List; import java.util.List;
import java.util.Set; import java.util.Set;
public interface IProvider { public interface IProvider {
Set<PlayerAPI> bans(); Set<BanAPI> bans();
Set<PlayerAPI> players(); Set<PlayerAPI> players();
QueryAPI query(); QueryAPI query();
TPSAPI TPS(); TPSAPI TPS();

View File

@ -0,0 +1,65 @@
package xyz.etztech.serverapi.web.api;
import com.expediagroup.graphql.annotations.GraphQLDescription;
import com.expediagroup.graphql.annotations.GraphQLDirective;
import com.expediagroup.graphql.annotations.GraphQLName;
import org.bukkit.BanEntry;
import java.util.Date;
@GraphQLName("Ban")
@GraphQLDescription("Ban GraphQL")
public class BanAPI {
private final String target;
private final String source;
private final String reason;
private final long created;
private final long expiration;
public BanAPI(String target, String source, String reason, long created, long expiration) {
this.target = target;
this.source = source;
this.reason = reason;
this.created = created;
this.expiration = expiration;
}
@GraphQLName("target")
public String getTarget() {
return target;
}
@GraphQLName("source")
public String getSource() {
return source;
}
@GraphQLName("reason")
public String getReason() {
return reason;
}
@GraphQLName("created")
public long getCreated() {
return created;
}
@GraphQLName("expiration")
public long getExpiration() {
return expiration;
}
public static BanAPI fromMinecraft(BanEntry entry) {
long expiration = -1;
if (entry.getExpiration() != null) {
expiration = entry.getExpiration().getTime();
}
return new BanAPI(
entry.getTarget(),
entry.getSource(),
entry.getReason(),
entry.getCreated().getTime(),
expiration
);
}
}

View File

@ -2,6 +2,8 @@ package xyz.etztech.serverapi.web.api;
import com.expediagroup.graphql.annotations.GraphQLDescription; import com.expediagroup.graphql.annotations.GraphQLDescription;
import com.expediagroup.graphql.annotations.GraphQLName; import com.expediagroup.graphql.annotations.GraphQLName;
import com.fasterxml.jackson.annotation.JsonProperty;
import com.fasterxml.jackson.databind.annotation.JsonNaming;
import org.bukkit.World; import org.bukkit.World;
@GraphQLName("World") @GraphQLName("World")
@ -14,11 +16,14 @@ public class WorldAPI {
private final String name; private final String name;
private final long time; private final long time;
@JsonProperty("full_time")
private final long fullTime;
private final int weather; private final int weather;
public WorldAPI(String name, long time, int weather) { public WorldAPI(String name, long time, long fullTime, int weather) {
this.name = name; this.name = name;
this.time = time; this.time = time;
this.fullTime = fullTime;
this.weather = weather; this.weather = weather;
} }
@ -28,10 +33,17 @@ public class WorldAPI {
} }
@GraphQLName("time") @GraphQLName("time")
@GraphQLDescription("Hours * 1000")
public long getTime() { public long getTime() {
return time; return time;
} }
@GraphQLName("full_time")
@GraphQLDescription("Hours * 1000")
public long getFullTime() {
return fullTime;
}
@GraphQLName("weather") @GraphQLName("weather")
public int getWeather() { public int getWeather() {
return weather; return weather;
@ -45,6 +57,6 @@ public class WorldAPI {
state = WEATHER_THUNDER; state = WEATHER_THUNDER;
} }
} }
return new WorldAPI(world.getName(), world.getFullTime(), state); return new WorldAPI(world.getName(), world.getTime(), world.getFullTime(), state);
} }
} }

View File

@ -1,10 +1,7 @@
package xyz.etztech.serverapi; package xyz.etztech.serverapi;
import xyz.etztech.serverapi.web.IProvider; import xyz.etztech.serverapi.web.IProvider;
import xyz.etztech.serverapi.web.api.PlayerAPI; import xyz.etztech.serverapi.web.api.*;
import xyz.etztech.serverapi.web.api.QueryAPI;
import xyz.etztech.serverapi.web.api.TPSAPI;
import xyz.etztech.serverapi.web.api.WorldAPI;
import java.util.*; import java.util.*;
@ -13,9 +10,9 @@ public class MockProvider implements IProvider {
public MockProvider() { public MockProvider() {
worlds = Arrays.asList( worlds = Arrays.asList(
new WorldAPI("overworld", 1000, WorldAPI.WEATHER_CLEAR), new WorldAPI("overworld", 1000, 10000, WorldAPI.WEATHER_CLEAR),
new WorldAPI("nether", 1500, WorldAPI.WEATHER_STORM), new WorldAPI("nether", 1500, 15000, WorldAPI.WEATHER_STORM),
new WorldAPI("end", 2000, WorldAPI.WEATHER_THUNDER) new WorldAPI("end", 2000, 20000, WorldAPI.WEATHER_THUNDER)
); );
} }
@ -31,7 +28,7 @@ public class MockProvider implements IProvider {
return mock; return mock;
} }
} }
return new WorldAPI("unknown", 0, WorldAPI.WEATHER_CLEAR); return new WorldAPI("unknown", 0, 0, WorldAPI.WEATHER_CLEAR);
} }
@Override @Override
@ -40,11 +37,12 @@ public class MockProvider implements IProvider {
} }
@Override @Override
public Set<PlayerAPI> bans() { public Set<BanAPI> bans() {
long now = new Date().getTime();
return new HashSet<>(Arrays.asList( return new HashSet<>(Arrays.asList(
new PlayerAPI("Badzelia", "bf0446a8-9695-4c41-aa4c-7ff45bfd1171"), new BanAPI("Etzelia", "Console", "Reasons", now, now),
new PlayerAPI("LessThanZeroSD", "fe7e8413-2570-4588-9203-2b69ff188bc3"), new BanAPI("Zero", "Notch", "lol lmao", now, now),
new PlayerAPI("Vakbuttzel", "7afbf663-2bf0-49ef-915f-22e81b298d17") new BanAPI("Vak", "Server", "brr", now, now)
)); ));
} }