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
Original file line number Diff line number Diff line change
Expand Up @@ -91,6 +91,7 @@
import com.bencodez.votingplugin.placeholders.PlaceHolders;
import com.bencodez.votingplugin.placeholders.VotingPluginExpansion;
import com.bencodez.votingplugin.presets.VoteSitePresetSetupHandler;
import com.bencodez.votingplugin.rewards.VotingPluginRewardRegistrar;
import com.bencodez.votingplugin.servicesites.ServiceSiteHandler;
import com.bencodez.votingplugin.signs.Signs;
import com.bencodez.votingplugin.specialrewards.NameMCLikeCheckerTask;
Expand Down Expand Up @@ -699,133 +700,7 @@ public Object getObject(OfflinePlayer player) {
nameMCLikeCheckerTask.runTaskTimerAsynchronously(this, 20L, interval);
}

// Add rewards
getRewardHandler().addInjectedReward(new RewardInjectInt("Points", 0) {

@Override
public String onRewardRequest(Reward reward, com.bencodez.advancedcore.api.user.AdvancedCoreUser user,
int num, HashMap<String, String> placeholders) {
VotingPluginUser vpUser = getVotingPluginUserManager().getVotingPluginUser(user);
String str = "" + vpUser.addPoints(num);
debug("Setting points to " + str);
return str;
}
}.synchronize().asPlaceholder("newpoints").addEditButton(
new EditGUIButton(new ItemBuilder(Material.PAPER), new EditGUIValueNumber("Points", null) {

@Override
public void setValue(Player player, Number value) {
RewardEditData reward = (RewardEditData) getInv().getData("Reward");
reward.setValue("Points", value.intValue());
}
}.addLore("Give player voting points"))).validator(new RewardInjectValidator() {

@Override
public void onValidate(Reward reward, RewardInject inject, ConfigurationSection data) {
if (data.getInt(inject.getPath(), -1) == 0) {
warning(reward, inject, "Points can not be 0");
}
}
}));

getRewardHandler().addInjectedReward(new RewardInjectConfigurationSection("VoteBossBar") {

@Override
public String onRewardRequested(Reward arg0, com.bencodez.advancedcore.api.user.AdvancedCoreUser user,
ConfigurationSection section, HashMap<String, String> placeholders) {
if (section.getBoolean("Enabled")) {
user.sendBossBar(
PlaceholderUtils.replacePlaceHolder(section.getString("Message", ""), placeholders),
section.getString("Color", "BLUE"), section.getString("Style", "SOLID"),
(double) getVotingPluginUserManager().getVotingPluginUser(user).getSitesVotedOn()
/ plugin.getVoteSites().size(),
section.getInt("Delay", 30));
}
return null;
}
});

getRewardHandler().addInjectedReward(new RewardInjectConfigurationSection("WebhookReward") {

@Override
public String onRewardRequested(Reward reward, AdvancedCoreUser user, ConfigurationSection section,
HashMap<String, String> placeholders) {

if (section == null || webhooks == null) {
return null;
}

// Parse list from inside this section
List<WebhookRewardEntry> entries = WebhookRewardParser.parse(section);

if (entries == null || entries.isEmpty()) {
return null;
}

webhooks.createExecutor().executeAll(entries, (input) -> {
return PlaceholderUtils.replacePlaceHolder(input, placeholders);
});

return null;
}
});

getRewardHandler().addInjectedRequirements(new RequirementInjectConfigurationSection("VoteTotal") {

@Override
public boolean onRequirementsRequested(Reward reward, AdvancedCoreUser acUser, ConfigurationSection section,
RewardOptions rewardOptions) {
boolean atleast = section.getBoolean("AtleastMode", false);
VotingPluginUser user = plugin.getVotingPluginUserManager().getVotingPluginUser(acUser);

for (TopVoter top : TopVoter.values()) {
int required = section.getInt(top.toString(), -1);
if (required >= 0) {
int total = user.getTotal(top);
if (atleast) {
if (total < required) {
debug("Failed requirement " + top.toString() + " " + total + "/" + required);
return false;
}
} else {
if (total != required) {
debug("Failed requirement " + top.toString() + " " + total + "!=" + required);
return false;
}
}
}
}

int pointsRequired = section.getInt("Points", -1);
if (pointsRequired >= 0) {
int points = user.getPoints();
if (atleast) {
if (points < pointsRequired) {
debug("Failed requirement points " + points + "/" + pointsRequired);
return false;
}
} else {
if (points != pointsRequired) {
debug("Failed requirement points " + points + "!=" + pointsRequired);
return false;
}
}
}

return true;
}
});

for (final TopVoter top : TopVoter.values()) {
getRewardHandler().addPlaceholder(new RewardPlaceholderHandle("Total_" + top.toString()) {

@Override
public String getValue(Reward reward, com.bencodez.advancedcore.api.user.AdvancedCoreUser user) {
VotingPluginUser vUser = getVotingPluginUserManager().getVotingPluginUser(user);
return "" + vUser.getTotal(top);
}
});
}
VotingPluginRewardRegistrar.register(this);

plugin.getLogger().info("Enabled VotingPlugin " + plugin.getDescription().getVersion());
if (plugin.getDescription().getVersion().contains("SNAPSHOT")) {
Expand Down
Original file line number Diff line number Diff line change
@@ -0,0 +1,27 @@
package com.bencodez.votingplugin.rewards;

import com.bencodez.votingplugin.VotingPluginMain;
import com.bencodez.votingplugin.rewards.builtin.RewardPoints;
import com.bencodez.votingplugin.rewards.builtin.RewardVoteBossBar;
import com.bencodez.votingplugin.rewards.builtin.RewardWebhook;
import com.bencodez.votingplugin.rewards.builtin.placeholders.RewardTotalPlaceholder;
import com.bencodez.votingplugin.rewards.builtin.requirements.RequirementVoteTotal;
import com.bencodez.votingplugin.topvoter.TopVoter;

/** Registers VotingPlugin-specific AdvancedCore reward extensions. */
public final class VotingPluginRewardRegistrar {

private VotingPluginRewardRegistrar() {
}

public static void register(VotingPluginMain plugin) {
plugin.getRewardHandler().addInjectedReward(new RewardPoints(plugin));
plugin.getRewardHandler().addInjectedReward(new RewardVoteBossBar(plugin));
plugin.getRewardHandler().addInjectedReward(new RewardWebhook(plugin));
plugin.getRewardHandler().addInjectedRequirements(new RequirementVoteTotal(plugin));

for (TopVoter topVoter : TopVoter.values()) {
plugin.getRewardHandler().addPlaceholder(new RewardTotalPlaceholder(plugin, topVoter));
}
}
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,53 @@
package com.bencodez.votingplugin.rewards.builtin;

import java.util.HashMap;

import org.bukkit.Material;
import org.bukkit.configuration.ConfigurationSection;
import org.bukkit.entity.Player;

import com.bencodez.advancedcore.api.inventory.editgui.EditGUIButton;
import com.bencodez.advancedcore.api.inventory.editgui.valuetypes.EditGUIValueNumber;
import com.bencodez.advancedcore.api.item.ItemBuilder;
import com.bencodez.advancedcore.api.rewards.Reward;
import com.bencodez.advancedcore.api.rewards.RewardEditData;
import com.bencodez.advancedcore.api.rewards.injected.RewardInject;
import com.bencodez.advancedcore.api.rewards.injected.RewardInjectInt;
import com.bencodez.advancedcore.api.rewards.injected.RewardInjectValidator;
import com.bencodez.votingplugin.VotingPluginMain;
import com.bencodez.votingplugin.user.VotingPluginUser;

/** VotingPlugin's injected Points reward. */
public class RewardPoints extends RewardInjectInt {

private final VotingPluginMain plugin;

public RewardPoints(VotingPluginMain plugin) {
super("Points", 0);
this.plugin = plugin;
synchronize().asPlaceholder("newpoints").addEditButton(
new EditGUIButton(new ItemBuilder(Material.PAPER), new EditGUIValueNumber("Points", null) {
@Override
public void setValue(Player player, Number value) {
RewardEditData reward = (RewardEditData) getInv().getData("Reward");
reward.setValue("Points", value.intValue());
}
}.addLore("Give player voting points"))).validator(new RewardInjectValidator() {
@Override
public void onValidate(Reward reward, RewardInject inject, ConfigurationSection data) {
if (data.getInt(inject.getPath(), -1) == 0) {
warning(reward, inject, "Points can not be 0");
}
}
});
}

@Override
public String onRewardRequest(Reward reward, com.bencodez.advancedcore.api.user.AdvancedCoreUser user, int num,
HashMap<String, String> placeholders) {
VotingPluginUser vpUser = plugin.getVotingPluginUserManager().getVotingPluginUser(user);
String result = "" + vpUser.addPoints(num);
plugin.debug("Setting points to " + result);
return result;
}
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,34 @@
package com.bencodez.votingplugin.rewards.builtin;

import java.util.HashMap;

import org.bukkit.configuration.ConfigurationSection;

import com.bencodez.advancedcore.api.messages.PlaceholderUtils;
import com.bencodez.advancedcore.api.rewards.Reward;
import com.bencodez.advancedcore.api.rewards.injected.RewardInjectConfigurationSection;
import com.bencodez.votingplugin.VotingPluginMain;

/** VotingPlugin's injected vote progress boss-bar reward. */
public class RewardVoteBossBar extends RewardInjectConfigurationSection {

private final VotingPluginMain plugin;

public RewardVoteBossBar(VotingPluginMain plugin) {
super("VoteBossBar");
this.plugin = plugin;
}

@Override
public String onRewardRequested(Reward reward, com.bencodez.advancedcore.api.user.AdvancedCoreUser user,
ConfigurationSection section, HashMap<String, String> placeholders) {
if (section.getBoolean("Enabled")) {
user.sendBossBar(PlaceholderUtils.replacePlaceHolder(section.getString("Message", ""), placeholders),
section.getString("Color", "BLUE"), section.getString("Style", "SOLID"),
(double) plugin.getVotingPluginUserManager().getVotingPluginUser(user).getSitesVotedOn()
/ plugin.getVoteSites().size(),
section.getInt("Delay", 30));
}
return null;
}
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,39 @@
package com.bencodez.votingplugin.rewards.builtin;

import java.util.HashMap;
import java.util.List;

import org.bukkit.configuration.ConfigurationSection;

import com.bencodez.advancedcore.api.messages.PlaceholderUtils;
import com.bencodez.advancedcore.api.rewards.Reward;
import com.bencodez.advancedcore.api.rewards.injected.RewardInjectConfigurationSection;
import com.bencodez.votingplugin.VotingPluginMain;
import com.bencodez.votingplugin.webhook.WebhookRewardEntry;
import com.bencodez.votingplugin.webhook.WebhookRewardParser;

/** VotingPlugin's injected webhook reward. */
public class RewardWebhook extends RewardInjectConfigurationSection {

private final VotingPluginMain plugin;

public RewardWebhook(VotingPluginMain plugin) {
super("WebhookReward");
this.plugin = plugin;
}

@Override
public String onRewardRequested(Reward reward, com.bencodez.advancedcore.api.user.AdvancedCoreUser user,
ConfigurationSection section, HashMap<String, String> placeholders) {
if (section == null || plugin.getWebhooks() == null) {
return null;
}
List<WebhookRewardEntry> entries = WebhookRewardParser.parse(section);
if (entries == null || entries.isEmpty()) {
return null;
}
plugin.getWebhooks().createExecutor().executeAll(entries,
input -> PlaceholderUtils.replacePlaceHolder(input, placeholders));
return null;
}
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,25 @@
package com.bencodez.votingplugin.rewards.builtin.placeholders;

import com.bencodez.advancedcore.api.rewards.Reward;
import com.bencodez.advancedcore.api.rewards.RewardPlaceholderHandle;
import com.bencodez.advancedcore.api.user.AdvancedCoreUser;
import com.bencodez.votingplugin.VotingPluginMain;
import com.bencodez.votingplugin.topvoter.TopVoter;

/** Reward placeholder exposing one VotingPlugin total. */
public class RewardTotalPlaceholder extends RewardPlaceholderHandle {

private final VotingPluginMain plugin;
private final TopVoter topVoter;

public RewardTotalPlaceholder(VotingPluginMain plugin, TopVoter topVoter) {
super("Total_" + topVoter.toString());
this.plugin = plugin;
this.topVoter = topVoter;
}

@Override
public String getValue(Reward reward, AdvancedCoreUser user) {
return "" + plugin.getVotingPluginUserManager().getVotingPluginUser(user).getTotal(topVoter);
}
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,51 @@
package com.bencodez.votingplugin.rewards.builtin.requirements;

import org.bukkit.configuration.ConfigurationSection;

import com.bencodez.advancedcore.api.rewards.Reward;
import com.bencodez.advancedcore.api.rewards.RewardOptions;
import com.bencodez.advancedcore.api.rewards.injectedrequirement.RequirementInjectConfigurationSection;
import com.bencodez.advancedcore.api.user.AdvancedCoreUser;
import com.bencodez.votingplugin.VotingPluginMain;
import com.bencodez.votingplugin.topvoter.TopVoter;
import com.bencodez.votingplugin.user.VotingPluginUser;

/** VotingPlugin vote-total/points reward requirement. */
public class RequirementVoteTotal extends RequirementInjectConfigurationSection {

private final VotingPluginMain plugin;

public RequirementVoteTotal(VotingPluginMain plugin) {
super("VoteTotal");
this.plugin = plugin;
}

@Override
public boolean onRequirementsRequested(Reward reward, AdvancedCoreUser acUser, ConfigurationSection section,
RewardOptions rewardOptions) {
boolean atleast = section.getBoolean("AtleastMode", false);
VotingPluginUser user = plugin.getVotingPluginUserManager().getVotingPluginUser(acUser);

for (TopVoter top : TopVoter.values()) {
int required = section.getInt(top.toString(), -1);
if (required < 0) {
continue;
}
int total = user.getTotal(top);
if (atleast ? total < required : total != required) {
plugin.debug("Failed requirement " + top + " " + total + (atleast ? "/" : "!=") + required);
return false;
}
}

int pointsRequired = section.getInt("Points", -1);
if (pointsRequired >= 0) {
int points = user.getPoints();
if (atleast ? points < pointsRequired : points != pointsRequired) {
plugin.debug("Failed requirement points " + points + (atleast ? "/" : "!=") + pointsRequired);
return false;
}
}
return true;
}
}
Loading