Skip to content

Commit

Permalink
Merge pull request #445 from VolmitSoftware/Development
Browse files Browse the repository at this point in the history
MAJOR Fixes / Changes
  • Loading branch information
NextdoorPsycho committed Jul 2, 2023
2 parents 4e30b83 + 5a33e02 commit 49fa468
Show file tree
Hide file tree
Showing 19 changed files with 363 additions and 74 deletions.
2 changes: 1 addition & 1 deletion build.gradle
Original file line number Diff line number Diff line change
Expand Up @@ -23,7 +23,7 @@ plugins {
id "de.undercouch.download" version "5.0.1"
}

version '1.11.1-1.20.1'
version '1.12.0-1.20.1'
def nmsVersion = "1.20.1" //[NMS]
def apiVersion = '1.20'
def specialSourceVersion = '1.11.0' //[NMS]
Expand Down
18 changes: 11 additions & 7 deletions src/main/java/com/volmit/adapt/Adapt.java
Original file line number Diff line number Diff line change
Expand Up @@ -31,10 +31,8 @@
import com.volmit.adapt.nms.GlowingEntities;
import com.volmit.adapt.nms.NMS;
import com.volmit.adapt.util.*;
import com.volmit.adapt.util.command.AdaptSuggestionProvider;
import com.volmit.adapt.util.command.AdaptSuggestionProviderListing;
import com.volmit.adapt.util.command.ParticleSuggestionProvider;
import com.volmit.adapt.util.command.SoundSuggestionProvider;
import com.volmit.adapt.util.command.*;
import com.volmit.adapt.util.command.suggest.*;
import com.volmit.adapt.util.secret.SecretSplash;
import de.slikey.effectlib.EffectManager;
import io.github.mqzn.commands.SpigotCommandManager;
Expand Down Expand Up @@ -84,6 +82,8 @@ public class Adapt extends VolmitPlugin {
@Getter
private Map<String, Window> guiLeftovers = new HashMap<>();





public Adapt() {
Expand All @@ -96,10 +96,15 @@ public void start() {
audiences = BukkitAudiences.create(this);
commandManager = new SpigotCommandManager(this, CommandExecutionCoordinator.Type.SYNC);
parser = new AnnotationParser<>(commandManager);
commandManager.suggestionProviderRegistry().register(new AdaptSuggestionProvider());
commandManager.suggestionProviderRegistry().register(new AdaptSuggestionProviderListing());
commandManager.suggestionProviderRegistry().register(new AdaptSkillListingProvider());
commandManager.suggestionProviderRegistry().register(new AdaptSkillProvider());

commandManager.suggestionProviderRegistry().register(new AdaptAdaptationListingProvider());
commandManager.suggestionProviderRegistry().register(new AdaptAdaptationProvider());

commandManager.suggestionProviderRegistry().register(new SoundSuggestionProvider());
commandManager.suggestionProviderRegistry().register(new ParticleSuggestionProvider());
commandManager.suggestionProviderRegistry().register(new BooleanSuggestionProvider());

NMS.init();
Localizer.updateLanguageFile();
Expand Down Expand Up @@ -142,7 +147,6 @@ public void start() {
}



public void startSim() {
ticker = new Ticker();
adaptServer = new AdaptServer();
Expand Down
116 changes: 86 additions & 30 deletions src/main/java/com/volmit/adapt/PapiExpansion.java
Original file line number Diff line number Diff line change
@@ -1,7 +1,8 @@
package com.volmit.adapt;

import com.google.common.collect.Maps;
import com.volmit.adapt.api.world.PlayerAdaptation;
import com.volmit.adapt.api.adaptation.Adaptation;
import com.volmit.adapt.api.skill.Skill;
import com.volmit.adapt.api.world.PlayerData;
import com.volmit.adapt.api.world.PlayerSkillLine;
import com.volmit.adapt.util.Localizer;
Expand All @@ -10,6 +11,7 @@
import org.jetbrains.annotations.NotNull;
import org.jetbrains.annotations.Nullable;

import java.util.List;
import java.util.Map;
import java.util.function.BiFunction;
import java.util.function.Function;
Expand All @@ -18,18 +20,20 @@ public class PapiExpansion extends PlaceholderExpansion {

private final Map<String, Function<PlayerSkillLine, String>> skillMap = Maps.newHashMap();
private final Map<String, Function<PlayerData, String>> playerMap = Maps.newHashMap();
private final Map<String, BiFunction<PlayerSkillLine, PlayerAdaptation, String>> adaptationMap = Maps.newHashMap();
private final Map<String, BiFunction<PlayerData, Adaptation<?>, String>> adaptationMap = Maps.newHashMap();

public PapiExpansion() {
// this should be %adapt_skill_level%, %adapt_skill_knowledge%, %adapt_skill_xp%, %adapt_skill_freshness%, %adapt_skill_multiplier%, %adapt_skill_name%
// where skill is the id of the skill eg: %adapt_herbalism_level%
skillMap.put("level", skill -> String.valueOf(skill.getLevel()).equals("-5000") ? "0" : String.valueOf(skill.getLevel()));
skillMap.put("knowledge", skill -> String.valueOf(skill.getKnowledge()).equals("-5000") ? "0" : String.valueOf(skill.getKnowledge()));
skillMap.put("xp", skill -> String.format("%.2f", skill.getXp()).equals("-5000.00") ? "0" : String.format("%.2f", skill.getXp()));
skillMap.put("freshness", skill -> String.valueOf(skill.getFreshness()).equals("-5000") ? "0" : String.valueOf(skill.getFreshness()));
skillMap.put("multiplier", skill -> String.valueOf(skill.getMultiplier()).equals("-5000") ? "0" : String.valueOf(skill.getMultiplier()));
skillMap.put("name", skill -> Localizer.dLocalize("skill", skill.getLine(), "name"));

//XP.getLevelForXp(adaptPlayer.getData().getMasterXp())

// this should be %adapt_player_level%, %adapt_player_multiplier%, %adapt_player_availablepower%, %adapt_player_maxpower%, %adapt_player_usedpower%, %adapt_player_wisdom%, %adapt_player_masterxp%, %adapt_player_seenthings%
// the player is provided by the ingame context
playerMap.put("level", playerData -> String.valueOf(playerData.getMultiplier()).equals("-5000") ? "0" : String.valueOf(playerData.getLevel()));
playerMap.put("multiplier", playerData -> String.valueOf(playerData.getMultiplier()).equals("-5000") ? "0" : String.valueOf(playerData.getMultiplier()));
playerMap.put("availablepower", playerData -> String.valueOf(playerData.getAvailablePower()).equals("-5000") ? "0" : String.valueOf(playerData.getAvailablePower()));
Expand All @@ -48,8 +52,37 @@ public PapiExpansion() {
+ playerData.getSeenPotionEffects().getSeen().size() + playerData.getSeenRecipes().getSeen().size()
+ playerData.getSeenPotionEffects().getSeen().size() + playerData.getSeenWorlds().getSeen().size()));

adaptationMap.put("name", (skillLine, adaptation) -> Localizer.dLocalize(skillLine.getLine(), adaptation.getId(), "name"));
adaptationMap.put("level", (skillLine, adaptation) -> String.valueOf(adaptation.getLevel()).equals("-5000") ? "0" : String.valueOf(adaptation.getLevel()));
// this should be %adapt_adaptation_<ID>_level%, %adapt_adaptation_<ID>_maxlevel%
// where adaptation is the adaptation id (e.g. %adapt_adaptation_stealth-ghost-armor_level%)
adaptationMap.put("maxlevel", (playerData, adaptation) -> String.valueOf(adaptation.getMaxLevel()));
adaptationMap.put("level", (playerData, adaptation) -> String.valueOf(getAdaptionLevel(adaptation, playerData)));
adaptationMap.put("name", (playerData, adaptation) -> String.valueOf(getAdaptionLocalizedName(adaptation)));
}

private Integer getAdaptionLevel(Adaptation<?> adaptation, PlayerData playerData) {
List<Skill<?>> skills = Adapt.instance.getAdaptServer().getSkillRegistry().getSkills();
for (Skill<?> skill : skills) {
List<Adaptation<?>> adaptations = skill.getAdaptations();
for (Adaptation<?> a : adaptations) {
if (a.equals(adaptation)) {
return playerData.getSkillLine(skill.getName()).getAdaptationLevel(adaptation.getName());
}
}
}
return 0;
}

private String getAdaptionLocalizedName(Adaptation<?> adaptation) {
List<Skill<?>> skills = Adapt.instance.getAdaptServer().getSkillRegistry().getSkills();
for (Skill<?> skill : skills) {
List<Adaptation<?>> adaptations = skill.getAdaptations();
for (Adaptation<?> a : adaptations) {
if (a.equals(adaptation)) {
return Localizer.dLocalize(skill.getId(), adaptation.getDisplayName(), "name");
}
}
}
return "Unknown";
}

@Override
Expand All @@ -72,42 +105,65 @@ public boolean persist() {
return true;
}

/* %adapt_<command/skill line>_[command/adaption]%
Example for Brian's smooth brain:
- %adapt_multiplier% - Returns the players multiplier
- %adapt_hunter_level% - Returns the level of the players hunter skill
- %adapt_nether_witherresist% - Returns the level of the Wither Armor Adaptation
*/
@Override
public @Nullable String onRequest(OfflinePlayer player, @NotNull String params) {
String[] args = params.split("_");
PlayerData p = Adapt.instance.getAdaptServer().peekData(player.getUniqueId());
String key = args[0];

if (Adapt.instance.getAdaptServer().getSkillRegistry().getSkill(args[0]) == null) {
for (String k : playerMap.keySet()) {
if (k.equalsIgnoreCase(args[0])) {
return playerMap.get(k).apply(p);
}
// Handle player attributes
if (key.equals("player")) {
String playerAttr = args.length > 1 ? args[1] : "";
if (playerMap.containsKey(playerAttr)) {
return playerMap.get(playerAttr).apply(p);
}
} else {
PlayerSkillLine line = p.getSkillLine(args[0]);
for (String k : skillMap.keySet()) {
if (k.equalsIgnoreCase(args[1])) {
return skillMap.get(k).apply(line);
}
}

// Handle skill attributes
if (key.equals("skill")) {
String skillID = args.length > 1 ? args[1] : "";
PlayerSkillLine line = p.getSkillLine(skillID);
String skillAttr = args.length > 2 ? args[2] : "";
if (line != null && skillMap.containsKey(skillAttr)) {
return skillMap.get(skillAttr).apply(line);
}
}

String adaptName = args[0] + "-" + args[1];
if (line.getAdaptations().containsKey(adaptName)) {
PlayerAdaptation adapt = line.getAdaptation(adaptName);
for (String k : adaptationMap.keySet()) {
if (k.equalsIgnoreCase(args[2])) {
return adaptationMap.get(k).apply(line, adapt);
// Handle adaptation attributes
if (key.equals("adaptation")) {
String adaptID = args.length > 1 ? args[1] : "";
String adaptAttr = args.length > 2 ? args[2] : "";
Adapt.verbose("Triggered adaptation Lookup: " + adaptID + " " + adaptAttr);
List<Skill<?>> skill = Adapt.instance.getAdaptServer().getSkillRegistry().getSkills();
for (Skill<?> s : skill) {
List<Adaptation<?>> adaptations = s.getAdaptations();
for (Adaptation<?> a : adaptations) {
Adapt.info(a.getId());
}
}
for (Skill<?> s : skill) {
List<Adaptation<?>> adaptations = s.getAdaptations();
for (Adaptation<?> a : adaptations) {
Adapt.verbose(adaptID + " " + a.getId());
if (a.getId().contains(adaptID)) {
Adapt.verbose("Found adaptation: " + a.getId());
if ("level".equalsIgnoreCase(adaptAttr)) {
Adapt.verbose("Doing Level Lookup");
return adaptationMap.get("level").apply(p, a);
} else if ("maxlevel".equalsIgnoreCase(adaptAttr)) {
Adapt.verbose("Doing MaxLevel Lookup");
return adaptationMap.get("maxlevel").apply(p, a);
} else if ("name".equalsIgnoreCase(adaptAttr)) {
Adapt.verbose("Doing Name Lookup");
return adaptationMap.get("name").apply(p, a);
}
}
}
}
}

return null;
}


}

22 changes: 14 additions & 8 deletions src/main/java/com/volmit/adapt/api/adaptation/Adaptation.java
Original file line number Diff line number Diff line change
Expand Up @@ -431,7 +431,7 @@ default void openGui(Player player) {
.addLore((isPermanent() ? C.RED + "" + C.BOLD + Localizer.dLocalize("snippets", "adaptmenu", "maynotunlearn") : ""))
.onLeftClick((e) -> {
if (mylevel >= lvl) {
unlearn(player, lvl);
unlearn(player, lvl, false);

player.getWorld().playSound(player.getLocation(), Sound.BLOCK_NETHER_GOLD_ORE_PLACE, 0.7f, 1.355f);
player.getWorld().playSound(player.getLocation(), Sound.BLOCK_BEACON_DEACTIVATE, 0.4f, 0.755f);
Expand Down Expand Up @@ -504,20 +504,27 @@ private void onGuiClose(Player player, boolean openPrevGui) {
}
}

default void unlearn(Player player, int lvl) {
if (isPermanent()) {
//todo message that this is permanent
default void unlearn(Player player, int lvl, boolean force) {
if (isPermanent() && !force) {
return;
}
int mylevel = getPlayer(player).getSkillLine(getSkill().getName()).getAdaptationLevel(getName());
int rc = getRefundCostFor(lvl - 1, mylevel);

int myLevel = getPlayer(player).getSkillLine(getSkill().getName()).getAdaptationLevel(getName());
int rc = getRefundCostFor(lvl - 1, myLevel);
if (!AdaptConfig.get().isHardcoreNoRefunds()) {
getPlayer(player).getData().getSkillLine(getSkill().getName()).giveKnowledge(rc);
}
getPlayer(player).getData().getSkillLine(getSkill().getName()).setAdaptation(this, lvl - 1);
}

default void learn(Player player, int lvl, boolean force) {
int myLevel = getPlayer(player).getSkillLine(getSkill().getName()).getAdaptationLevel(getName());
int c = getCostFor(lvl, myLevel);
if (getPlayer(player).getData().hasPowerAvailable(c) || force) {
if (getPlayer(player).getData().getSkillLine(getSkill().getName()).spendKnowledge(c) || force) {
getPlayer(player).getData().getSkillLine(getSkill().getName()).setAdaptation(this, lvl);
}
}
}

default boolean isAdaptationRecipe(Recipe recipe) {
if (!this.getSkill().isEnabled()) {
Expand All @@ -528,7 +535,6 @@ default boolean isAdaptationRecipe(Recipe recipe) {
return true;
}
}

return false;
}
}
2 changes: 2 additions & 0 deletions src/main/java/com/volmit/adapt/command/CommandAdapt.java
Original file line number Diff line number Diff line change
Expand Up @@ -6,6 +6,7 @@
import com.volmit.adapt.command.gui.CommandGUI;
import com.volmit.adapt.command.item.CommandExperience;
import com.volmit.adapt.command.item.CommandKnowledge;
import com.volmit.adapt.command.skill.CommandSkillDeterminator;
import com.volmit.adapt.util.C;
import com.volmit.adapt.util.command.FConst;
import io.github.mqzn.commands.annotations.base.Command;
Expand All @@ -24,6 +25,7 @@
@SubCommand(CommandGUI.class) // GUI
@SubCommand(CommandExperience.class) // GUI
@SubCommand(CommandKnowledge.class) // GUI
@SubCommand(CommandSkillDeterminator.class) // SKILL
public class CommandAdapt {

@Default
Expand Down
12 changes: 6 additions & 6 deletions src/main/java/com/volmit/adapt/command/gui/CommandGUI.java
Original file line number Diff line number Diff line change
Expand Up @@ -23,7 +23,7 @@
import com.volmit.adapt.api.skill.SkillRegistry;
import com.volmit.adapt.content.gui.SkillsGui;
import com.volmit.adapt.util.C;
import com.volmit.adapt.util.command.AdaptSuggestionProviderListing;
import com.volmit.adapt.util.command.suggest.AdaptAdaptationListingProvider;
import com.volmit.adapt.util.command.FConst;
import io.github.mqzn.commands.annotations.base.Arg;
import io.github.mqzn.commands.annotations.base.Default;
Expand All @@ -43,12 +43,11 @@ public final class CommandGUI {

@SubCommandExecution
public void execute(CommandSender sender,
@Arg(id = "guiTarget") @Suggest(provider = AdaptSuggestionProviderListing.class) String guiTarget,
@Arg(id = "guiTarget") @Suggest(provider = AdaptAdaptationListingProvider.class) String guiTarget,
@Arg(id = "player", optional = true) @Nullable Player player,
@Arg(id = "force", optional = true, defaultValue = "false") boolean force
){
) {
Player targetPlayer = player;
boolean forceOpen = force;
if (targetPlayer == null && sender instanceof ConsoleCommandSender) {
FConst.error("You must specify a player when using this command from console.").send(sender);
} else if (targetPlayer == null) {
Expand All @@ -63,7 +62,7 @@ public void execute(CommandSender sender,
if (guiTarget.startsWith("[Skill]")) {
for (Skill<?> skill : SkillRegistry.skills.sortV()) {
if (guiTarget.equals("[Skill]" + skill.getName())) {
if (forceOpen || skill.openGui(targetPlayer, true)) {
if (force || skill.openGui(targetPlayer, true)) {
FConst.success("Opened GUI for " + skill.getName() + " for " + targetPlayer.getName()).send(sender);
} else {
FConst.error("Failed to open GUI for " + skill.getName() + " for " + targetPlayer.getName() + " - No Permission, remove from blacklist!").send(sender);
Expand All @@ -77,7 +76,7 @@ public void execute(CommandSender sender,
for (Skill<?> skill : SkillRegistry.skills.sortV()) {
for (Adaptation<?> adaptation : skill.getAdaptations()) {
if (guiTarget.equals("[Adaptation]" + adaptation.getName())) {
if (forceOpen || adaptation.openGui(targetPlayer, true)) {
if (force || adaptation.openGui(targetPlayer, true)) {
FConst.success("Opened GUI for " + adaptation.getName() + " for " + targetPlayer.getName()).send(sender);
} else {
FConst.error("Failed to open GUI for " + adaptation.getName() + " for " + targetPlayer.getName() + " - No Permission, remove from blacklist!").send(sender);
Expand All @@ -88,6 +87,7 @@ public void execute(CommandSender sender,
}
}


info(sender);
}

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -22,7 +22,7 @@
import com.volmit.adapt.api.skill.SkillRegistry;
import com.volmit.adapt.content.item.ExperienceOrb;
import com.volmit.adapt.util.C;
import com.volmit.adapt.util.command.AdaptSuggestionProvider;
import com.volmit.adapt.util.command.suggest.AdaptSkillListingProvider;
import com.volmit.adapt.util.command.FConst;
import io.github.mqzn.commands.annotations.base.*;
import io.github.mqzn.commands.annotations.subcommands.SubCommandExecution;
Expand All @@ -38,7 +38,7 @@ public final class CommandExperience {

@SubCommandExecution
public void execute(CommandSender sender,
@Arg(id = "skillname") @Suggest(provider = AdaptSuggestionProvider.class) String skillName,
@Arg(id = "skillname") @Suggest(provider = AdaptSkillListingProvider.class) String skillName,
@Arg(id = "amount") @Range(min="1", max="100000") int amount,
@Arg(id = "player", optional = true) @Nullable Player player) {

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -22,7 +22,7 @@
import com.volmit.adapt.api.skill.SkillRegistry;
import com.volmit.adapt.content.item.KnowledgeOrb;
import com.volmit.adapt.util.C;
import com.volmit.adapt.util.command.AdaptSuggestionProvider;
import com.volmit.adapt.util.command.suggest.AdaptSkillListingProvider;
import com.volmit.adapt.util.command.FConst;
import io.github.mqzn.commands.annotations.base.*;
import io.github.mqzn.commands.annotations.subcommands.SubCommandExecution;
Expand All @@ -38,7 +38,7 @@ public final class CommandKnowledge {

@SubCommandExecution
public void execute(CommandSender sender,
@Arg(id = "skillname") @Suggest(provider = AdaptSuggestionProvider.class) String skillName,
@Arg(id = "skillname") @Suggest(provider = AdaptSkillListingProvider.class) String skillName,
@Arg(id = "amount") @Range(min="1", max="100000") int amount,
@Arg(id = "player", optional = true) @Nullable Player player) {

Expand Down

0 comments on commit 49fa468

Please sign in to comment.