Skip to content
This repository has been archived by the owner on Apr 12, 2022. It is now read-only.

Commit

Permalink
Some spongey fixes
Browse files Browse the repository at this point in the history
  • Loading branch information
mcmonkey4eva committed Mar 23, 2017
1 parent c890790 commit 94f55bd
Show file tree
Hide file tree
Showing 2 changed files with 20 additions and 20 deletions.
Expand Up @@ -2,18 +2,17 @@

import com.denizenscript.denizen2core.tags.AbstractTagObject;
import com.denizenscript.denizen2core.tags.TagData;
import com.denizenscript.denizen2core.tags.objects.NullTag;
import com.denizenscript.denizen2core.tags.objects.TextTag;
import com.denizenscript.denizen2core.utilities.Action;
import com.denizenscript.denizen2core.utilities.Function2;
import com.denizenscript.denizen2core.utilities.debugging.Debug;
import org.spongepowered.api.Sponge;
import org.spongepowered.api.profile.GameProfile;
import org.spongepowered.api.entity.living.player.User;
import org.spongepowered.api.service.user.UserStorageService;

import java.util.HashMap;
import java.util.Optional;
import java.util.UUID;
import java.util.concurrent.CompletableFuture;

public class OfflinePlayerTag extends AbstractTagObject {

Expand All @@ -24,13 +23,13 @@ public class OfflinePlayerTag extends AbstractTagObject {
// @Description Represents an offline player that has previously played on the server. Identified by UUID.
// -->

private GameProfile internal;
private User internal;

public OfflinePlayerTag(GameProfile player) {
public OfflinePlayerTag(User player) {
internal = player;
}

public GameProfile getInternal() {
public User getInternal() {
return internal;
}

Expand All @@ -46,14 +45,7 @@ public GameProfile getInternal() {
// @Example "Bob" .name returns "Bob".
// -->
handlers.put("name", (dat, obj) -> {
Optional<String> nameOpt = ((OfflinePlayerTag) obj).internal.getName();
if (nameOpt.isPresent()) {
return new TextTag(nameOpt.get());
}
else {
dat.error.run("Specified game profile lacks a name - file data error?");
return new NullTag();
}
return new TextTag(((OfflinePlayerTag) obj).internal.getName());
});
// <--[tag]
// @Name OfflinePlayerTag.uuid
Expand All @@ -70,19 +62,19 @@ public GameProfile getInternal() {
public static OfflinePlayerTag getFor(Action<String> error, String text) {
try {
try {
CompletableFuture<GameProfile> oplayer = Sponge.getServer().getGameProfileManager().get(UUID.fromString(text));
GameProfile gp = oplayer.get();
Optional<User> oplayer = Sponge.getGame().getServiceManager().provideUnchecked(UserStorageService.class).get(UUID.fromString(text));
User gp = oplayer.orElse(null);
if (gp == null) {
error.run("Invalid PlayerTag UUID input!");
error.run("Invalid OfflinePlayerTag UUID input!");
return null;
}
return new OfflinePlayerTag(gp);
}
catch (IllegalArgumentException e) {
CompletableFuture<GameProfile> oplayer = Sponge.getServer().getGameProfileManager().get(UUID.fromString(text));
GameProfile gp = oplayer.get();
Optional<User> oplayer = Sponge.getGame().getServiceManager().provideUnchecked(UserStorageService.class).get(text);
User gp = oplayer.orElse(null);
if (gp == null) {
error.run("Invalid PlayerTag named input!");
error.run("Invalid OfflinePlayerTag named input!");
return null;
}
return new OfflinePlayerTag(gp);
Expand Down
Expand Up @@ -68,6 +68,13 @@ public static PlayerTag getFor(Action<String> error, String text) {
}
}

public void checkValid(Action<String> error) {
if (!internal.isOnline()) {
error.run("That player is no longer online!");
throw new RuntimeException("That player is no longer online!"); // Just in case
}
}

public static PlayerTag getFor(Action<String> error, AbstractTagObject text) {
return (text instanceof PlayerTag) ? (PlayerTag) text : getFor(error, text.toString());
}
Expand All @@ -79,6 +86,7 @@ public HashMap<String, Function2<TagData, AbstractTagObject, AbstractTagObject>>

@Override
public AbstractTagObject handleElseCase(TagData data) {
checkValid(data.error);
return new EntityTag(internal);
}

Expand Down

0 comments on commit 94f55bd

Please sign in to comment.