Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
20 commits
Select commit Hold shift + click to select a range
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

Large diffs are not rendered by default.

Original file line number Diff line number Diff line change
@@ -0,0 +1,48 @@
package com.bencodez.advancedcore.rewards.builtin;

import com.bencodez.advancedcore.AdvancedCorePlugin;
import com.bencodez.advancedcore.api.rewards.RewardHandler;

/** Registers the built-in AdvancedCore reward implementations. */
public final class BuiltinRewards {

private BuiltinRewards() {
}

public static void register(RewardHandler handler, AdvancedCorePlugin plugin) {
// Preserve the historical registration order because sorting by priority is stable,
// so order still matters for injects with the same priority. Feature implementations
// remain grouped in their classes, but split registration methods are invoked at the
// same positions as the original RewardHandler implementation.
RewardMoney.register(handler, plugin);
RewardCommands.registerNumberCommand(handler, plugin);
RewardExp.register(handler, plugin);
RewardMessages.register(handler, plugin);
RewardCommands.registerCommand(handler, plugin);
RewardActionBar.register(handler, plugin);
RewardCommands.registerCommands(handler, plugin);
RewardJavascript.register(handler, plugin);
RewardLucky.register(handler, plugin);
RewardRandom.register(handler, plugin);
RewardSubRewards.register(handler, plugin);
RewardCommands.registerRandomCommand(handler, plugin);
RewardRandomReward.register(handler, plugin);
RewardTempPermission.register(handler, plugin);
RewardAdvancedRewards.register(handler, plugin);
RewardAdvancedRandomReward.register(handler, plugin);
RewardPriority.register(handler, plugin);
RewardPotions.register(handler, plugin);
RewardTitle.register(handler, plugin);
RewardBossBar.register(handler, plugin);
RewardSound.register(handler, plugin);
RewardEffect.register(handler, plugin);
RewardFirework.register(handler, plugin);
RewardItems.registerItem(handler, plugin);
RewardAdvancedPriority.register(handler, plugin);
RewardAdvancedWorld.register(handler, plugin);
RewardSpecialChance.register(handler, plugin);
RewardItems.registerRandomItem(handler, plugin);
RewardChoices.register(handler, plugin);
RewardItems.registerItems(handler, plugin);
}
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,66 @@
package com.bencodez.advancedcore.rewards.builtin;

import java.util.HashMap;

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

import com.bencodez.advancedcore.AdvancedCorePlugin;
import com.bencodez.advancedcore.api.inventory.BInventory.ClickEvent;
import com.bencodez.advancedcore.api.inventory.editgui.EditGUIButton;
import com.bencodez.advancedcore.api.inventory.editgui.valuetypes.EditGUIValueInventory;
import com.bencodez.advancedcore.api.item.ItemBuilder;
import com.bencodez.advancedcore.api.messages.PlaceholderUtils;
import com.bencodez.advancedcore.api.rewards.Reward;
import com.bencodez.advancedcore.api.rewards.RewardEditData;
import com.bencodez.advancedcore.api.rewards.RewardHandler;
import com.bencodez.advancedcore.api.rewards.editbuttons.RewardEditActionBar;
import com.bencodez.advancedcore.api.rewards.injected.RewardInject;
import com.bencodez.advancedcore.api.rewards.injected.RewardInjectConfigurationSection;
import com.bencodez.advancedcore.api.rewards.injected.RewardInjectValidator;
import com.bencodez.advancedcore.api.user.AdvancedCoreUser;

public final class RewardActionBar {

private RewardActionBar() {
}

public static void register(RewardHandler handler, AdvancedCorePlugin plugin) {
handler.getInjectedRewards().add(new RewardInjectConfigurationSection("ActionBar") {
@Override
public String onRewardRequested(Reward reward, AdvancedCoreUser user, ConfigurationSection section,
HashMap<String, String> placeholders) {
user.sendActionBar(PlaceholderUtils.replacePlaceHolder(section.getString("Message", ""), placeholders),
section.getInt("Delay", 30));
return null;
}
}.addEditButton(new EditGUIButton(new ItemBuilder(Material.PAPER), new EditGUIValueInventory("ActionBar") {
@Override
public void openInventory(ClickEvent clickEvent) {
RewardEditData reward = (RewardEditData) getInv().getData("Reward");
new RewardEditActionBar() {
@Override
public void setVal(String key, Object value) {
RewardEditData reward = (RewardEditData) getInv().getData("Reward");
reward.setValue(key, value);
plugin.reloadAdvancedCore(false);
}
}.open(clickEvent.getPlayer(), reward);
}
}.addLore("Actionbar configuration"))).validator(new RewardInjectValidator() {
@Override
public void onValidate(Reward reward, RewardInject inject, ConfigurationSection data) {
String message = data.getString("ActionBar.Message");
int delay = data.getInt("ActionBar.Delay", -1);
if (message != null && message.isEmpty()) {
warning(reward, inject, "No actionbar message set");
}
if (delay == -1) {
warning(reward, inject, "No actionbar delay set");
} else if (delay == 0) {
warning(reward, inject, "Actionbar delay can not be 0");
}
}
}));
}
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,77 @@
package com.bencodez.advancedcore.rewards.builtin;

import java.util.ArrayList;
import java.util.HashMap;

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

import com.bencodez.advancedcore.AdvancedCorePlugin;
import com.bencodez.advancedcore.api.inventory.BInventory.ClickEvent;
import com.bencodez.advancedcore.api.inventory.editgui.EditGUIButton;
import com.bencodez.advancedcore.api.inventory.editgui.valuetypes.EditGUIValueInventory;
import com.bencodez.advancedcore.api.item.ItemBuilder;
import com.bencodez.advancedcore.api.rewards.DefinedReward;
import com.bencodez.advancedcore.api.rewards.Reward;
import com.bencodez.advancedcore.api.rewards.RewardEditData;
import com.bencodez.advancedcore.api.rewards.RewardHandler;
import com.bencodez.advancedcore.api.rewards.RewardOptions;
import com.bencodez.advancedcore.api.rewards.SubDirectlyDefinedReward;
import com.bencodez.advancedcore.api.rewards.editbuttons.RewardEditAdvancedPriority;
import com.bencodez.advancedcore.api.rewards.injected.RewardInjectConfigurationSection;
import com.bencodez.advancedcore.api.user.AdvancedCoreUser;

public final class RewardAdvancedPriority {

private RewardAdvancedPriority() {
}

public static void register(RewardHandler handler, AdvancedCorePlugin plugin) {
handler.getInjectedRewards().add(new RewardInjectConfigurationSection("AdvancedPriority") {
@Override
public String onRewardRequested(Reward sourceReward, AdvancedCoreUser user, ConfigurationSection section,
HashMap<String, String> placeholders) {
for (String key : section.getKeys(false)) {
Reward reward = handler.getReward(section, key, new RewardOptions());
if (reward != null && reward.canGiveReward(user, new RewardOptions().withPlaceHolder(placeholders))) {
plugin.extraDebug("AdvancedPriority: Giving reward " + reward.getName());
reward.giveReward(user, new RewardOptions().setIgnoreChance(true).setIgnoreRequirements(true)
.setPrefix(sourceReward.getName() + "_AdvancedPriority").withPlaceHolder(placeholders));
return reward.getName();
}
plugin.extraDebug("AdvancedPriority: Can't give reward " + key);
}
return null;
}

@Override
public ArrayList<SubDirectlyDefinedReward> subRewards(DefinedReward direct) {
ArrayList<SubDirectlyDefinedReward> subs = new ArrayList<>();
String base = direct.getPath() + direct.needsDot() + "AdvancedPriority";
if (direct.getFileData().isConfigurationSection(base)) {
for (String key : direct.getFileData().getConfigurationSection(base).getKeys(false)) {
if (direct.getFileData().isConfigurationSection(base + "." + key)) {
subs.add(new SubDirectlyDefinedReward(direct, "AdvancedPriority." + key));
}
}
}
return subs;
}
}.addEditButton(new EditGUIButton(new ItemBuilder(Material.PAPER), new EditGUIValueInventory("AdvancedPriority") {
@Override
public void openInventory(ClickEvent clickEvent) {
RewardEditData reward = (RewardEditData) getInv().getData("Reward");
new RewardEditAdvancedPriority() {
@Override
public void setVal(String key, Object value) {
RewardEditData reward = (RewardEditData) getInv().getData("Reward");
reward.setValue(key, value);
plugin.reloadAdvancedCore(false);
}
}.open(clickEvent.getPlayer(), reward);
}
}.addLore("AdvancedPriority will run first sub reward that it can, then ignore the rest of the sub rewards")
.addLore("Can be used for permission based rewards or chance based rewards")))
.priority(10).alwaysValid().postReward());
}
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,76 @@
package com.bencodez.advancedcore.rewards.builtin;

import java.util.ArrayList;
import java.util.HashMap;
import java.util.Set;
import java.util.concurrent.ThreadLocalRandom;

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

import com.bencodez.advancedcore.AdvancedCorePlugin;
import com.bencodez.advancedcore.api.inventory.BInventory.ClickEvent;
import com.bencodez.advancedcore.api.inventory.editgui.EditGUIButton;
import com.bencodez.advancedcore.api.inventory.editgui.valuetypes.EditGUIValueInventory;
import com.bencodez.advancedcore.api.item.ItemBuilder;
import com.bencodez.advancedcore.api.rewards.DefinedReward;
import com.bencodez.advancedcore.api.rewards.Reward;
import com.bencodez.advancedcore.api.rewards.RewardEditData;
import com.bencodez.advancedcore.api.rewards.RewardHandler;
import com.bencodez.advancedcore.api.rewards.RewardOptions;
import com.bencodez.advancedcore.api.rewards.SubDirectlyDefinedReward;
import com.bencodez.advancedcore.api.rewards.editbuttons.RewardEditAdvancedRandomReward;
import com.bencodez.advancedcore.api.rewards.injected.RewardInjectConfigurationSection;
import com.bencodez.advancedcore.api.user.AdvancedCoreUser;
import com.bencodez.simpleapi.array.ArrayUtils;

public final class RewardAdvancedRandomReward {

private RewardAdvancedRandomReward() {
}

public static void register(RewardHandler handler, AdvancedCorePlugin plugin) {
handler.getInjectedRewards().add(new RewardInjectConfigurationSection("AdvancedRandomReward") {
@Override
public String onRewardRequested(Reward reward, AdvancedCoreUser user, ConfigurationSection section,
HashMap<String, String> placeholders) {
Set<String> keys = section.getKeys(false);
ArrayList<String> rewards = ArrayUtils.convert(keys);
if (!rewards.isEmpty()) {
String selected = rewards.get(ThreadLocalRandom.current().nextInt(rewards.size()));
handler.giveReward(user, section, selected, new RewardOptions().setPlaceholders(placeholders)
.setPrefix(reward.getRewardName() + "_AdvancedRandomReward"));
return selected;
}
return null;
}

@Override
public ArrayList<SubDirectlyDefinedReward> subRewards(DefinedReward direct) {
ArrayList<SubDirectlyDefinedReward> subs = new ArrayList<>();
String base = direct.getPath() + direct.needsDot() + "AdvancedRandomReward";
if (direct.getFileData().isConfigurationSection(base)) {
for (String key : direct.getFileData().getConfigurationSection(base).getKeys(false)) {
if (direct.getFileData().isConfigurationSection(base + "." + key)) {
subs.add(new SubDirectlyDefinedReward(direct, "AdvancedRandomReward." + key));
}
}
}
return subs;
}
}.addEditButton(new EditGUIButton(new ItemBuilder(Material.PAPER), new EditGUIValueInventory("AdvancedRandomReward") {
@Override
public void openInventory(ClickEvent clickEvent) {
RewardEditData reward = (RewardEditData) getInv().getData("Reward");
new RewardEditAdvancedRandomReward() {
@Override
public void setVal(String key, Object value) {
RewardEditData reward = (RewardEditData) getInv().getData("Reward");
reward.setValue(key, value);
plugin.reloadAdvancedCore(false);
}
}.open(clickEvent.getPlayer(), reward);
}
}.addLore("Execute random reward"))).asPlaceholder("RandomReward").synchronize().priority(20).postReward());
}
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,73 @@
package com.bencodez.advancedcore.rewards.builtin;

import java.util.ArrayList;
import java.util.HashMap;
import java.util.Set;

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

import com.bencodez.advancedcore.AdvancedCorePlugin;
import com.bencodez.advancedcore.api.inventory.BInventory.ClickEvent;
import com.bencodez.advancedcore.api.inventory.editgui.EditGUIButton;
import com.bencodez.advancedcore.api.inventory.editgui.valuetypes.EditGUIValueInventory;
import com.bencodez.advancedcore.api.item.ItemBuilder;
import com.bencodez.advancedcore.api.rewards.DefinedReward;
import com.bencodez.advancedcore.api.rewards.Reward;
import com.bencodez.advancedcore.api.rewards.RewardEditData;
import com.bencodez.advancedcore.api.rewards.RewardHandler;
import com.bencodez.advancedcore.api.rewards.RewardOptions;
import com.bencodez.advancedcore.api.rewards.SubDirectlyDefinedReward;
import com.bencodez.advancedcore.api.rewards.editbuttons.RewardEditAdvancedRandomReward;
import com.bencodez.advancedcore.api.rewards.injected.RewardInjectConfigurationSection;
import com.bencodez.advancedcore.api.user.AdvancedCoreUser;
import com.bencodez.simpleapi.array.ArrayUtils;

public final class RewardAdvancedRewards {

private RewardAdvancedRewards() {
}

public static void register(RewardHandler handler, AdvancedCorePlugin plugin) {
handler.getInjectedRewards().add(new RewardInjectConfigurationSection("AdvancedRewards") {
@Override
public String onRewardRequested(Reward reward, AdvancedCoreUser user, ConfigurationSection section,
HashMap<String, String> placeholders) {
Set<String> keys = section.getKeys(false);
ArrayList<String> rewards = ArrayUtils.convert(keys);
for (String rewardName : rewards) {
handler.giveReward(user, section, rewardName, new RewardOptions().setPlaceholders(placeholders)
.setPrefix(reward.getRewardName() + "_AdvancedRewards_" + rewardName));
}
return null;
}

@Override
public ArrayList<SubDirectlyDefinedReward> subRewards(DefinedReward direct) {
ArrayList<SubDirectlyDefinedReward> subs = new ArrayList<>();
String base = direct.getPath() + direct.needsDot() + "AdvancedRewards";
if (direct.getFileData().isConfigurationSection(base)) {
for (String key : direct.getFileData().getConfigurationSection(base).getKeys(false)) {
if (direct.getFileData().isConfigurationSection(base + "." + key)) {
subs.add(new SubDirectlyDefinedReward(direct, "AdvancedRewards." + key));
}
}
}
return subs;
}
}.addEditButton(new EditGUIButton(new ItemBuilder(Material.PAPER), new EditGUIValueInventory("AdvancedRewards") {
@Override
public void openInventory(ClickEvent clickEvent) {
RewardEditData reward = (RewardEditData) getInv().getData("Reward");
new RewardEditAdvancedRandomReward() {
@Override
public void setVal(String key, Object value) {
RewardEditData reward = (RewardEditData) getInv().getData("Reward");
reward.setValue(key, value);
plugin.reloadAdvancedCore(false);
}
}.open(clickEvent.getPlayer(), reward);
}
}.addLore("Execute rewards"))).synchronize().priority(20).postReward());
}
}
Loading
Loading