Skip to content

Commit

Permalink
Preliminary support for classic, remove more lurking debug logs
Browse files Browse the repository at this point in the history
  • Loading branch information
electronicboy committed Jul 16, 2019
1 parent 1d2a190 commit 5320b79
Show file tree
Hide file tree
Showing 11 changed files with 253 additions and 28 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -9,30 +9,20 @@
import com.gmail.nossr50.mcMMO;
import com.gmail.nossr50.util.player.UserManager;

import org.bukkit.Bukkit;
import org.bukkit.entity.Player;

import java.util.Collection;
import java.util.LinkedHashMap;
import java.util.Map;
import java.util.logging.LogManager;
import java.util.logging.Logger;

import me.clip.placeholderapi.PlaceholderAPI;
import me.clip.placeholderapi.PlaceholderAPIPlugin;
import pw.valaria.placeholders.mcmmo.bridge.McmmoBridge;
import pw.valaria.placeholders.mcmmo.bridge.data.ISkillType;
import pw.valaria.placeholders.mcmmo.bridge.v2_1.data.SkillType;

public class McmmoBridge21 extends McmmoBridge<SkillType> {
private static Logger LOGGER = LogManager.getLogManager().getLogger("mcmmo-placeholders");

private final mcMMO mcMMOPlugin;
private Map<String, SkillType> skills = new LinkedHashMap<>();

public McmmoBridge21() {
mcMMOPlugin = (mcMMO) Bukkit.getPluginManager().getPlugin("mcMMO");
}
private final Map<String, SkillType> skills = new LinkedHashMap<>();

protected boolean canHook() {
try {
Expand Down
25 changes: 25 additions & 0 deletions mcmmo-placeholders-bridge-classic/build.gradle
Original file line number Diff line number Diff line change
@@ -0,0 +1,25 @@
plugins {
id 'java'
}

group 'pw.valaria'
version '1.0-SNAPSHOT'

sourceCompatibility = 1.8

repositories {
mavenCentral()
maven { url = 'http://repo.extendedclip.com/content/repositories/placeholderapi/'}
maven { url = 'https://repo.valaria.pw/repository/maven-snapshots' }
maven { url = 'https://papermc.io/repo/repository/maven-public/'}

maven { url = 'https://maven.sk89q.com/repo/' }
}

dependencies {
testCompile group: 'junit', name: 'junit', version: '4.12'
compile project(":mcmmo-placeholders-bridge")
compileOnly("com.destroystokyo.paper:paper-api:1.12.2-R0.1-SNAPSHOT")
compileOnly("com.gmail.nossr50.mcMMO:mcMMO:1.6.2-SNAPSHOT")
compileOnly("me.clip:placeholderapi:2.9.2")
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,154 @@
package pw.valaria.placeholders.mcmmo.bridge.classic;

import com.gmail.nossr50.api.ExperienceAPI;
import com.gmail.nossr50.config.Config;
import com.gmail.nossr50.config.experience.ExperienceConfig;
import com.gmail.nossr50.datatypes.party.Party;
import com.gmail.nossr50.datatypes.player.McMMOPlayer;
import com.gmail.nossr50.mcMMO;
import com.gmail.nossr50.util.player.UserManager;

import org.bukkit.Bukkit;
import org.bukkit.entity.Player;

import java.util.Collection;
import java.util.LinkedHashMap;
import java.util.Map;
import java.util.logging.LogManager;
import java.util.logging.Logger;

import me.clip.placeholderapi.PlaceholderAPIPlugin;
import pw.valaria.placeholders.mcmmo.bridge.McmmoBridge;
import pw.valaria.placeholders.mcmmo.bridge.data.ISkillType;
import pw.valaria.placeholders.mcmmo.bridge.classic.data.SkillType;

public class McmmoBridgeClassic extends McmmoBridge<SkillType> {
private static Logger LOGGER = LogManager.getLogManager().getLogger("mcmmo-placeholders");

private final mcMMO mcMMOPlugin;
private final Map<String, SkillType> skills = new LinkedHashMap<>();

public McmmoBridgeClassic() {
mcMMOPlugin = (mcMMO) Bukkit.getPluginManager().getPlugin("mcMMO");
}

protected boolean canHook() {
try {
Class.forName("com.gmail.nossr50.datatypes.skills.SkillType");
} catch (ClassNotFoundException e) {
return false;
}

return true;
}

@Override
protected void init() {
// Register all skills
for (com.gmail.nossr50.datatypes.skills.SkillType skillType: com.gmail.nossr50.datatypes.skills.SkillType.values()) {
skills.put(skillType.getName().toLowerCase(), new SkillType(skillType));
}


}

@Override
public Collection<SkillType> getSkills() {
return skills.values();
}





@Override
public Integer getSkillLevel(ISkillType skillType, Player player) {
final McMMOPlayer user = UserManager.getPlayer(player);
if (user == null) return null;
return user.getSkillLevel((com.gmail.nossr50.datatypes.skills.SkillType) skillType.getNativeSkill());
}

@Override
public Integer getExpNeeded(ISkillType skillType, Player player) {
final McMMOPlayer user = UserManager.getPlayer(player);
if (user == null) return null;
return user.getXpToLevel((com.gmail.nossr50.datatypes.skills.SkillType) skillType.getNativeSkill());
}

@Override
public Integer getExp(ISkillType skill, Player player) {
final McMMOPlayer user = UserManager.getPlayer(player);
if (user == null) return null;

return user.getSkillXpLevel((com.gmail.nossr50.datatypes.skills.SkillType) skill.getNativeSkill());
}


@Override
public Integer getExpRemaining(ISkillType skillType, Player player) {
final McMMOPlayer user = UserManager.getPlayer(player);
if (user == null) return null;
int current = user.getSkillXpLevel((com.gmail.nossr50.datatypes.skills.SkillType) skillType.getNativeSkill());
int needed = user.getXpToLevel((com.gmail.nossr50.datatypes.skills.SkillType) skillType.getNativeSkill());

return needed - current;
}

@Override
public Integer getRank(ISkillType skill, Player player) {
try {
return ExperienceAPI.getPlayerRankSkill(player.getUniqueId(), skill.getSkillName());
} catch (Exception ex) {
return null;
}
}

@Override
public Integer getPowerLevel(Player player) {
final McMMOPlayer user = UserManager.getPlayer(player);
if (user == null) return null;
return user.getPowerLevel();
}

@Override
public Integer getPowerCap(Player player) {
return Config.getInstance().getPowerLevelCap();
}

@Override
public String getPartyName(Player player) {
final McMMOPlayer user = UserManager.getPlayer(player);
if (user == null) return null;
final Party party = user.getParty();

return (party == null) ? null : party.getName();
}

@Override
public String getPartyLeader(Player player) {
final McMMOPlayer user = UserManager.getPlayer(player);
if (user == null) return null;
final Party party = user.getParty();
return (party == null) ? null : party.getLeader().getPlayerName();
}

@Override
public Integer getPartySize(Player player) {
final McMMOPlayer user = UserManager.getPlayer(player);
if (user == null) return null;
final Party party = user.getParty();
return (party == null) ? null : party.getMembers().size();
}

@Override
public String getXpRate(Player player) {
return String.valueOf(ExperienceConfig.getInstance().getExperienceGainsGlobalMultiplier());
}

@Override
public String isExpEventActive(Player player) {
return mcMMO.p.isXPEventEnabled() ? PlaceholderAPIPlugin.booleanTrue() : PlaceholderAPIPlugin.booleanFalse();
}


}
Original file line number Diff line number Diff line change
@@ -0,0 +1,28 @@
package pw.valaria.placeholders.mcmmo.bridge.classic.data;


import pw.valaria.placeholders.mcmmo.bridge.data.ISkillType;

public class SkillType implements ISkillType<com.gmail.nossr50.datatypes.skills.SkillType> {

com.gmail.nossr50.datatypes.skills.SkillType skillType;

public SkillType(com.gmail.nossr50.datatypes.skills.SkillType skillType) {
this.skillType = skillType;
}

@Override
public com.gmail.nossr50.datatypes.skills.SkillType getNativeSkill() {
return skillType;
}

@Override
public String getSkillName() {
return skillType.getName();
}

@Override
public String toString() {
return getSkillName();
}
}
Original file line number Diff line number Diff line change
@@ -1,5 +1,7 @@
package pw.valaria.placeholders.mcmmo.bridge;

import com.google.common.collect.ImmutableList;

import org.bukkit.entity.Player;

import java.util.Map;
Expand All @@ -15,14 +17,27 @@ public class McMMOPlaceholderExpansion extends PlaceholderExpansion {
public McMMOPlaceholderExpansion() {
register();

try {
final Class<? extends McmmoBridge> aClass = (Class<? extends McmmoBridge>) Class.forName("pw.valaria.placeholders.mcmmo.bridge.v2_1.McmmoBridge21");
aClass.newInstance().init(this);
// TODO: Classpath scanner?
final ImmutableList<String> knownClasses = ImmutableList.<String>builder()
.add("pw.valaria.placeholders.mcmmo.bridge.classic.McmmoBridgeClassic")
.add("pw.valaria.placeholders.mcmmo.bridge.v2_1.McmmoBridge21")
.build();

} catch (ClassNotFoundException | IllegalAccessException | InstantiationException e) {
e.printStackTrace();
for (String knownClass : knownClasses) {
try {
final Class<? extends McmmoBridge> aClass = (Class<? extends McmmoBridge>) Class.forName(knownClass);
final McmmoBridge mcmmoBridge = aClass.newInstance();
if (mcmmoBridge.canHook()) {
mcmmoBridge.init(this);
return;
}
} catch (ClassNotFoundException | IllegalAccessException | InstantiationException ignored) {
}
}

throw new IllegalStateException("Did not find a valid bridge! Are you using a supported version of mcmmo?");
}

@Override
public String getIdentifier() {
return "mcmmo";
Expand All @@ -45,19 +60,19 @@ public String getRequiredPlugin() {

@Override
public String onPlaceholderRequest(Player p, String params) {
Placeholder placeholder = placeholders.get(params);

System.out.println(params);
if (placeholder != null) {
return placeholder.process(p);
} else {
return null;
}
Placeholder placeholder = placeholders.get(params);

if (placeholder != null) {
return placeholder.process(p);
} else {
return null;
}
}

public void registerPlaceholder(Placeholder placeholder) {
final Placeholder registered = placeholders.get(placeholder.getName());
if (registered != null) throw new IllegalStateException("Placeholder " + placeholder.getName() + " is already registered!");
if (registered != null)
throw new IllegalStateException("Placeholder " + placeholder.getName() + " is already registered!");

placeholders.put(placeholder.getName(), placeholder);
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -22,7 +22,6 @@

public abstract class McmmoBridge<S extends ISkillType> {
McMMOPlaceholderExpansion expansion;

/**
* @return Can this IMPL hook the current version of mcmmo
*/
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -12,11 +12,18 @@ public PartyIsLeaderPlaceholder(McmmoBridge bridge) {
this.bridge = bridge;
}

/**
* {@inheritDoc}
*/
@Override
public String process(Player player) {
String leader = bridge.getPartyLeader(player);
return (leader.equals(player.getName())) ? "true" : "false";
}

/**
* {@inheritDoc}
*/
@Override
public String getName() {
return "is_party_leader";
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -4,7 +4,14 @@

public interface Placeholder {

/**
* @param player the player to process the placeholder for
* @return the value of the placeholder
*/
String process(Player player);

/**
* @return the name of the placeholder
*/
String getName();
}
1 change: 1 addition & 0 deletions mcmmo-placeholders-plugin/build.gradle
Original file line number Diff line number Diff line change
Expand Up @@ -29,6 +29,7 @@ dependencies {
compileOnly("com.destroystokyo.paper:paper-api:1.14.2-R0.1-SNAPSHOT")
compileOnly("me.clip:placeholderapi:2.9.2")
implementation project(":mcmmo-placeholders-bridge-2-1")
implementation project(":mcmmo-placeholders-bridge-classic")
}


Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -4,8 +4,6 @@
import org.bukkit.plugin.java.JavaPlugin;

import pw.valaria.placeholders.mcmmo.bridge.McMMOPlaceholderExpansion;
import pw.valaria.placeholders.mcmmo.bridge.McmmoBridge;
import pw.valaria.placeholders.mcmmo.bridge.v2_1.McmmoBridge21;

public class McmmoPlaceholderPlugin extends JavaPlugin implements Listener {

Expand Down
1 change: 1 addition & 0 deletions settings.gradle
Original file line number Diff line number Diff line change
Expand Up @@ -2,4 +2,5 @@ rootProject.name = 'mcmmo-placeholders'
include 'mcmmo-placeholders-plugin'
include 'mcmmo-placeholders-bridge'
include 'mcmmo-placeholders-bridge-2-1'
include 'mcmmo-placeholders-bridge-classic'

0 comments on commit 5320b79

Please sign in to comment.