Fix testing / rewards & access for invited players

This commit is contained in:
Tim Daniel Saukel 2021-04-20 00:53:58 +02:00
parent 475abcc304
commit 5df7c41720
4 changed files with 43 additions and 39 deletions

View File

@ -29,7 +29,7 @@ import de.erethon.dungeonsxl.player.DGroup;
import de.erethon.dungeonsxl.player.DInstancePlayer;
import de.erethon.dungeonsxl.player.DPermission;
import de.erethon.dungeonsxl.util.commons.chat.MessageUtil;
import org.bukkit.Bukkit;
import de.erethon.dungeonsxl.util.commons.config.CommonMessage;
import org.bukkit.command.CommandSender;
import org.bukkit.entity.Player;
@ -44,7 +44,6 @@ public class TestCommand extends DCommand {
setMinArgs(1);
setMaxArgs(1);
setHelp(DMessage.CMD_TEST_HELP.getMessage());
setPermission(DPermission.TEST.getNode());
setPlayerCommand(true);
setConsoleCommand(false);
}
@ -64,6 +63,11 @@ public class TestCommand extends DCommand {
return;
}
if (!dungeon.getMap().isInvitedPlayer(player) && !DPermission.hasPermission(player, DPermission.TEST)) {
MessageUtil.sendMessage(player, CommonMessage.CMD_NO_PERMISSION.getMessage());
return;
}
DGroup group = (DGroup) dPlayer.getGroup();
if (group != null && group.isPlaying()) {
MessageUtil.sendMessage(player, DMessage.ERROR_LEAVE_GROUP.getMessage());

View File

@ -54,7 +54,7 @@ public class DGame implements Game {
private int floorCount;
private List<PlayerGroup> groups = new ArrayList<>();
private boolean tutorial;
private boolean test;
private boolean rewards = true;
private boolean started;
private int waveCount;
private Map<String, Integer> gameKills = new HashMap<>();
@ -70,7 +70,6 @@ public class DGame implements Game {
}
tutorial = false;
started = false;
}
public DGame(DungeonsXL plugin, Dungeon dungeon, PlayerGroup group) {
@ -211,12 +210,12 @@ public class DGame implements Game {
@Override
public boolean hasRewards() {
return test;
return rewards;
}
@Override
public void setRewards(boolean enabled) {
test = enabled;
rewards = enabled;
}
/**

View File

@ -397,31 +397,8 @@ public class DGamePlayer extends DInstancePlayer implements GamePlayer {
}
if (getGame() != null && finished && getGame().hasRewards()) {
List<Reward> rewards = new ArrayList<>(dGroup.getRewards());
rewards.addAll(rules.getState(GameRule.REWARDS));
GlobalPlayerRewardPayOutEvent globalPlayerPayOutRewardEvent = new GlobalPlayerRewardPayOutEvent(this, rewards);
Bukkit.getPluginManager().callEvent(globalPlayerPayOutRewardEvent);
if (!globalPlayerPayOutRewardEvent.isCancelled()) {
giveLoot(getGroup().getDungeon(), globalPlayerPayOutRewardEvent.getRewards());
}
getData().logTimeLastFinished(getGroup().getDungeonName());
// Tutorial Permissions
if (getGame().isTutorial()) {
getData().setFinishedTutorial(true);
if (plugin.getPermissionProvider() != null && plugin.getPermissionProvider().hasGroupSupport()) {
String endGroup = plugin.getMainConfig().getTutorialEndGroup();
if (plugin.isGroupEnabled(endGroup)) {
plugin.getPermissionProvider().playerAddGroup(getPlayer(), endGroup);
}
String startGroup = plugin.getMainConfig().getTutorialStartGroup();
if (plugin.isGroupEnabled(startGroup)) {
plugin.getPermissionProvider().playerRemoveGroup(getPlayer(), startGroup);
}
}
}
plugin.log("Rewarding " + this);
reward();
}
if (getGroup() != null) {
@ -471,6 +448,35 @@ public class DGamePlayer extends DInstancePlayer implements GamePlayer {
}
}
public void reward() {
List<Reward> rewards = new ArrayList<>(dGroup.getRewards());
rewards.addAll(getGame().getRules().getState(GameRule.REWARDS));
GlobalPlayerRewardPayOutEvent globalPlayerPayOutRewardEvent = new GlobalPlayerRewardPayOutEvent(this, rewards);
Bukkit.getPluginManager().callEvent(globalPlayerPayOutRewardEvent);
if (!globalPlayerPayOutRewardEvent.isCancelled()) {
giveLoot(getGroup().getDungeon(), globalPlayerPayOutRewardEvent.getRewards());
}
getData().logTimeLastFinished(getGroup().getDungeonName());
// Tutorial Permissions
if (!getGame().isTutorial()) {
return;
}
getData().setFinishedTutorial(true);
if (plugin.getPermissionProvider() != null && plugin.getPermissionProvider().hasGroupSupport()) {
String endGroup = plugin.getMainConfig().getTutorialEndGroup();
if (plugin.isGroupEnabled(endGroup)) {
plugin.getPermissionProvider().playerAddGroup(getPlayer(), endGroup);
}
String startGroup = plugin.getMainConfig().getTutorialStartGroup();
if (plugin.isGroupEnabled(startGroup)) {
plugin.getPermissionProvider().playerRemoveGroup(getPlayer(), startGroup);
}
}
}
@Override
public void kill() {
GroupPlayerKickEvent dPlayerKickEvent = new GroupPlayerKickEvent(getGroup(), this, GroupPlayerKickEvent.Cause.DEATH);
@ -490,10 +496,6 @@ public class DGamePlayer extends DInstancePlayer implements GamePlayer {
@Override
public boolean ready() {
return ready(true);
}
public boolean ready(boolean rewards) {
if (dGroup == null) {
return false;
}
@ -502,9 +504,8 @@ public class DGamePlayer extends DInstancePlayer implements GamePlayer {
if (game == null) {
game = new DGame(plugin, dGroup.getDungeon(), dGroup);
}
game.setRewards(rewards);
if (rewards && !checkRequirements(game.getDungeon())) {
if (game.hasRewards() && !checkRequirements(game.getDungeon())) {
return false;
}

View File

@ -387,8 +387,8 @@ public class DGlobalPlayer implements GlobalPlayer {
return;
}
rewards.forEach(r -> r.giveTo(player.getPlayer()));
if (getGroup() != null && getGroup().getDungeon() != null) {
getData().logTimeLastLoot(getGroup().getDungeon().getName());
if (dungeon != null) {
getData().logTimeLastLoot(dungeon.getName());
}
}