Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
4 changes: 4 additions & 0 deletions src/main/java/com/laytonsmith/abstraction/MCPlayer.java
Original file line number Diff line number Diff line change
Expand Up @@ -16,6 +16,10 @@

public interface MCPlayer extends MCCommandSender, MCHumanEntity, MCOfflinePlayer {

void setSleepingIgnored(boolean value);

boolean isSleepingIgnored();

boolean canSee(MCPlayer p);

void chat(String chat);
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -81,6 +81,16 @@ public Player _Player() {
return p;
}

@Override
public void setSleepingIgnored(boolean value) {
p.setSleepingIgnored(value);
}

@Override
public boolean isSleepingIgnored() {
return p.isSleepingIgnored();
}

@Override
public boolean canSee(MCPlayer p) {
return this.p.canSee(((BukkitMCPlayer) p)._Player());
Expand Down
107 changes: 107 additions & 0 deletions src/main/java/com/laytonsmith/core/functions/PlayerManagement.java
Original file line number Diff line number Diff line change
Expand Up @@ -7307,4 +7307,111 @@ public Boolean runAsync() {
return false;
}
}

@api
public static class set_player_sleeping_ignored extends AbstractFunction {

@Override public String getName() {
return "set_player_sleeping_ignored";
}

@Override public Integer[] numArgs() {
return new Integer[]{1, 2};
}

@Override
public Mixed exec(Target t, Environment env, Mixed... args)
throws ConfigRuntimeException {
final MCPlayer player;
final boolean value;
if(args.length == 1) {
player = env.getEnv(CommandHelperEnvironment.class).GetPlayer();
Static.AssertPlayerNonNull(player, t);
value = ArgumentValidation.getBoolean(args[0], t);
} else {
player = Static.GetPlayer(args[0], t);
value = ArgumentValidation.getBoolean(args[1], t);
}
player.setSleepingIgnored(value);
return CVoid.VOID;
}

@Override
public Class<? extends CREThrowable>[] thrown() {
return new Class[]{
CREPlayerOfflineException.class,
CREInsufficientArgumentsException.class,
CRECastException.class
};
}

@Override public boolean isRestricted() {
return false;
}

@Override public Boolean runAsync() {
return false;
}

@Override public MSVersion since() {
return MSVersion.V3_3_5;
}

@Override
public String docs() {
return "void {[player], boolean} Sets whether <player> is ignored when "
+ "counting sleepers to skip night.";
}
}

@api
public static class is_player_sleeping_ignored extends AbstractFunction {

@Override public String getName() {
return "is_player_sleeping_ignored";
}

@Override public Integer[] numArgs() {
return new Integer[]{0, 1};
}

@Override
public Mixed exec(Target t, Environment env, Mixed... args)
throws ConfigRuntimeException {
final MCPlayer player;
if(args.length == 0) {
player = env.getEnv(CommandHelperEnvironment.class).GetPlayer();
Static.AssertPlayerNonNull(player, t);
} else {
player = Static.GetPlayer(args[0], t);
}
return CBoolean.get(player.isSleepingIgnored());
}

@Override
public Class<? extends CREThrowable>[] thrown() {
return new Class[] {
CREPlayerOfflineException.class,
CREInsufficientArgumentsException.class
};
}

@Override public boolean isRestricted() {
return false;
}

@Override public Boolean runAsync() {
return false;
}

@Override public MSVersion since() {
return MSVersion.V3_3_5;
}

@Override
public String docs() {
return "boolean {[player]} Returns whether <player> is currently ignored "
+ "by the night-skip sleep check.";
}
}
}