Skip to content

Commit 5320b79

Browse files
committed
Preliminary support for classic, remove more lurking debug logs
1 parent 1d2a190 commit 5320b79

File tree

11 files changed

+253
-28
lines changed

11 files changed

+253
-28
lines changed

mcmmo-placeholders-bridge-2-1/src/main/java/pw/valaria/placeholders/mcmmo/bridge/v2_1/McmmoBridge21.java

+1-11
Original file line numberDiff line numberDiff line change
@@ -9,30 +9,20 @@
99
import com.gmail.nossr50.mcMMO;
1010
import com.gmail.nossr50.util.player.UserManager;
1111

12-
import org.bukkit.Bukkit;
1312
import org.bukkit.entity.Player;
1413

1514
import java.util.Collection;
1615
import java.util.LinkedHashMap;
1716
import java.util.Map;
18-
import java.util.logging.LogManager;
19-
import java.util.logging.Logger;
2017

21-
import me.clip.placeholderapi.PlaceholderAPI;
2218
import me.clip.placeholderapi.PlaceholderAPIPlugin;
2319
import pw.valaria.placeholders.mcmmo.bridge.McmmoBridge;
2420
import pw.valaria.placeholders.mcmmo.bridge.data.ISkillType;
2521
import pw.valaria.placeholders.mcmmo.bridge.v2_1.data.SkillType;
2622

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

30-
private final mcMMO mcMMOPlugin;
31-
private Map<String, SkillType> skills = new LinkedHashMap<>();
32-
33-
public McmmoBridge21() {
34-
mcMMOPlugin = (mcMMO) Bukkit.getPluginManager().getPlugin("mcMMO");
35-
}
25+
private final Map<String, SkillType> skills = new LinkedHashMap<>();
3626

3727
protected boolean canHook() {
3828
try {
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,25 @@
1+
plugins {
2+
id 'java'
3+
}
4+
5+
group 'pw.valaria'
6+
version '1.0-SNAPSHOT'
7+
8+
sourceCompatibility = 1.8
9+
10+
repositories {
11+
mavenCentral()
12+
maven { url = 'http://repo.extendedclip.com/content/repositories/placeholderapi/'}
13+
maven { url = 'https://repo.valaria.pw/repository/maven-snapshots' }
14+
maven { url = 'https://papermc.io/repo/repository/maven-public/'}
15+
16+
maven { url = 'https://maven.sk89q.com/repo/' }
17+
}
18+
19+
dependencies {
20+
testCompile group: 'junit', name: 'junit', version: '4.12'
21+
compile project(":mcmmo-placeholders-bridge")
22+
compileOnly("com.destroystokyo.paper:paper-api:1.12.2-R0.1-SNAPSHOT")
23+
compileOnly("com.gmail.nossr50.mcMMO:mcMMO:1.6.2-SNAPSHOT")
24+
compileOnly("me.clip:placeholderapi:2.9.2")
25+
}
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,154 @@
1+
package pw.valaria.placeholders.mcmmo.bridge.classic;
2+
3+
import com.gmail.nossr50.api.ExperienceAPI;
4+
import com.gmail.nossr50.config.Config;
5+
import com.gmail.nossr50.config.experience.ExperienceConfig;
6+
import com.gmail.nossr50.datatypes.party.Party;
7+
import com.gmail.nossr50.datatypes.player.McMMOPlayer;
8+
import com.gmail.nossr50.mcMMO;
9+
import com.gmail.nossr50.util.player.UserManager;
10+
11+
import org.bukkit.Bukkit;
12+
import org.bukkit.entity.Player;
13+
14+
import java.util.Collection;
15+
import java.util.LinkedHashMap;
16+
import java.util.Map;
17+
import java.util.logging.LogManager;
18+
import java.util.logging.Logger;
19+
20+
import me.clip.placeholderapi.PlaceholderAPIPlugin;
21+
import pw.valaria.placeholders.mcmmo.bridge.McmmoBridge;
22+
import pw.valaria.placeholders.mcmmo.bridge.data.ISkillType;
23+
import pw.valaria.placeholders.mcmmo.bridge.classic.data.SkillType;
24+
25+
public class McmmoBridgeClassic extends McmmoBridge<SkillType> {
26+
private static Logger LOGGER = LogManager.getLogManager().getLogger("mcmmo-placeholders");
27+
28+
private final mcMMO mcMMOPlugin;
29+
private final Map<String, SkillType> skills = new LinkedHashMap<>();
30+
31+
public McmmoBridgeClassic() {
32+
mcMMOPlugin = (mcMMO) Bukkit.getPluginManager().getPlugin("mcMMO");
33+
}
34+
35+
protected boolean canHook() {
36+
try {
37+
Class.forName("com.gmail.nossr50.datatypes.skills.SkillType");
38+
} catch (ClassNotFoundException e) {
39+
return false;
40+
}
41+
42+
return true;
43+
}
44+
45+
@Override
46+
protected void init() {
47+
// Register all skills
48+
for (com.gmail.nossr50.datatypes.skills.SkillType skillType: com.gmail.nossr50.datatypes.skills.SkillType.values()) {
49+
skills.put(skillType.getName().toLowerCase(), new SkillType(skillType));
50+
}
51+
52+
53+
}
54+
55+
@Override
56+
public Collection<SkillType> getSkills() {
57+
return skills.values();
58+
}
59+
60+
61+
62+
63+
64+
@Override
65+
public Integer getSkillLevel(ISkillType skillType, Player player) {
66+
final McMMOPlayer user = UserManager.getPlayer(player);
67+
if (user == null) return null;
68+
return user.getSkillLevel((com.gmail.nossr50.datatypes.skills.SkillType) skillType.getNativeSkill());
69+
}
70+
71+
@Override
72+
public Integer getExpNeeded(ISkillType skillType, Player player) {
73+
final McMMOPlayer user = UserManager.getPlayer(player);
74+
if (user == null) return null;
75+
return user.getXpToLevel((com.gmail.nossr50.datatypes.skills.SkillType) skillType.getNativeSkill());
76+
}
77+
78+
@Override
79+
public Integer getExp(ISkillType skill, Player player) {
80+
final McMMOPlayer user = UserManager.getPlayer(player);
81+
if (user == null) return null;
82+
83+
return user.getSkillXpLevel((com.gmail.nossr50.datatypes.skills.SkillType) skill.getNativeSkill());
84+
}
85+
86+
87+
@Override
88+
public Integer getExpRemaining(ISkillType skillType, Player player) {
89+
final McMMOPlayer user = UserManager.getPlayer(player);
90+
if (user == null) return null;
91+
int current = user.getSkillXpLevel((com.gmail.nossr50.datatypes.skills.SkillType) skillType.getNativeSkill());
92+
int needed = user.getXpToLevel((com.gmail.nossr50.datatypes.skills.SkillType) skillType.getNativeSkill());
93+
94+
return needed - current;
95+
}
96+
97+
@Override
98+
public Integer getRank(ISkillType skill, Player player) {
99+
try {
100+
return ExperienceAPI.getPlayerRankSkill(player.getUniqueId(), skill.getSkillName());
101+
} catch (Exception ex) {
102+
return null;
103+
}
104+
}
105+
106+
@Override
107+
public Integer getPowerLevel(Player player) {
108+
final McMMOPlayer user = UserManager.getPlayer(player);
109+
if (user == null) return null;
110+
return user.getPowerLevel();
111+
}
112+
113+
@Override
114+
public Integer getPowerCap(Player player) {
115+
return Config.getInstance().getPowerLevelCap();
116+
}
117+
118+
@Override
119+
public String getPartyName(Player player) {
120+
final McMMOPlayer user = UserManager.getPlayer(player);
121+
if (user == null) return null;
122+
final Party party = user.getParty();
123+
124+
return (party == null) ? null : party.getName();
125+
}
126+
127+
@Override
128+
public String getPartyLeader(Player player) {
129+
final McMMOPlayer user = UserManager.getPlayer(player);
130+
if (user == null) return null;
131+
final Party party = user.getParty();
132+
return (party == null) ? null : party.getLeader().getPlayerName();
133+
}
134+
135+
@Override
136+
public Integer getPartySize(Player player) {
137+
final McMMOPlayer user = UserManager.getPlayer(player);
138+
if (user == null) return null;
139+
final Party party = user.getParty();
140+
return (party == null) ? null : party.getMembers().size();
141+
}
142+
143+
@Override
144+
public String getXpRate(Player player) {
145+
return String.valueOf(ExperienceConfig.getInstance().getExperienceGainsGlobalMultiplier());
146+
}
147+
148+
@Override
149+
public String isExpEventActive(Player player) {
150+
return mcMMO.p.isXPEventEnabled() ? PlaceholderAPIPlugin.booleanTrue() : PlaceholderAPIPlugin.booleanFalse();
151+
}
152+
153+
154+
}
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,28 @@
1+
package pw.valaria.placeholders.mcmmo.bridge.classic.data;
2+
3+
4+
import pw.valaria.placeholders.mcmmo.bridge.data.ISkillType;
5+
6+
public class SkillType implements ISkillType<com.gmail.nossr50.datatypes.skills.SkillType> {
7+
8+
com.gmail.nossr50.datatypes.skills.SkillType skillType;
9+
10+
public SkillType(com.gmail.nossr50.datatypes.skills.SkillType skillType) {
11+
this.skillType = skillType;
12+
}
13+
14+
@Override
15+
public com.gmail.nossr50.datatypes.skills.SkillType getNativeSkill() {
16+
return skillType;
17+
}
18+
19+
@Override
20+
public String getSkillName() {
21+
return skillType.getName();
22+
}
23+
24+
@Override
25+
public String toString() {
26+
return getSkillName();
27+
}
28+
}

mcmmo-placeholders-bridge/src/main/java/pw/valaria/placeholders/mcmmo/bridge/McMMOPlaceholderExpansion.java

+29-14
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,7 @@
11
package pw.valaria.placeholders.mcmmo.bridge;
22

3+
import com.google.common.collect.ImmutableList;
4+
35
import org.bukkit.entity.Player;
46

57
import java.util.Map;
@@ -15,14 +17,27 @@ public class McMMOPlaceholderExpansion extends PlaceholderExpansion {
1517
public McMMOPlaceholderExpansion() {
1618
register();
1719

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

22-
} catch (ClassNotFoundException | IllegalAccessException | InstantiationException e) {
23-
e.printStackTrace();
26+
for (String knownClass : knownClasses) {
27+
try {
28+
final Class<? extends McmmoBridge> aClass = (Class<? extends McmmoBridge>) Class.forName(knownClass);
29+
final McmmoBridge mcmmoBridge = aClass.newInstance();
30+
if (mcmmoBridge.canHook()) {
31+
mcmmoBridge.init(this);
32+
return;
33+
}
34+
} catch (ClassNotFoundException | IllegalAccessException | InstantiationException ignored) {
35+
}
2436
}
37+
38+
throw new IllegalStateException("Did not find a valid bridge! Are you using a supported version of mcmmo?");
2539
}
40+
2641
@Override
2742
public String getIdentifier() {
2843
return "mcmmo";
@@ -45,19 +60,19 @@ public String getRequiredPlugin() {
4560

4661
@Override
4762
public String onPlaceholderRequest(Player p, String params) {
48-
Placeholder placeholder = placeholders.get(params);
49-
50-
System.out.println(params);
51-
if (placeholder != null) {
52-
return placeholder.process(p);
53-
} else {
54-
return null;
55-
}
63+
Placeholder placeholder = placeholders.get(params);
64+
65+
if (placeholder != null) {
66+
return placeholder.process(p);
67+
} else {
68+
return null;
69+
}
5670
}
5771

5872
public void registerPlaceholder(Placeholder placeholder) {
5973
final Placeholder registered = placeholders.get(placeholder.getName());
60-
if (registered != null) throw new IllegalStateException("Placeholder " + placeholder.getName() + " is already registered!");
74+
if (registered != null)
75+
throw new IllegalStateException("Placeholder " + placeholder.getName() + " is already registered!");
6176

6277
placeholders.put(placeholder.getName(), placeholder);
6378
}

mcmmo-placeholders-bridge/src/main/java/pw/valaria/placeholders/mcmmo/bridge/McmmoBridge.java

-1
Original file line numberDiff line numberDiff line change
@@ -22,7 +22,6 @@
2222

2323
public abstract class McmmoBridge<S extends ISkillType> {
2424
McMMOPlaceholderExpansion expansion;
25-
2625
/**
2726
* @return Can this IMPL hook the current version of mcmmo
2827
*/

mcmmo-placeholders-bridge/src/main/java/pw/valaria/placeholders/mcmmo/bridge/placeholders/PartyIsLeaderPlaceholder.java

+7
Original file line numberDiff line numberDiff line change
@@ -12,11 +12,18 @@ public PartyIsLeaderPlaceholder(McmmoBridge bridge) {
1212
this.bridge = bridge;
1313
}
1414

15+
/**
16+
* {@inheritDoc}
17+
*/
1518
@Override
1619
public String process(Player player) {
1720
String leader = bridge.getPartyLeader(player);
1821
return (leader.equals(player.getName())) ? "true" : "false";
1922
}
23+
24+
/**
25+
* {@inheritDoc}
26+
*/
2027
@Override
2128
public String getName() {
2229
return "is_party_leader";

mcmmo-placeholders-bridge/src/main/java/pw/valaria/placeholders/mcmmo/bridge/placeholders/Placeholder.java

+7
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,14 @@
44

55
public interface Placeholder {
66

7+
/**
8+
* @param player the player to process the placeholder for
9+
* @return the value of the placeholder
10+
*/
711
String process(Player player);
812

13+
/**
14+
* @return the name of the placeholder
15+
*/
916
String getName();
1017
}

mcmmo-placeholders-plugin/build.gradle

+1
Original file line numberDiff line numberDiff line change
@@ -29,6 +29,7 @@ dependencies {
2929
compileOnly("com.destroystokyo.paper:paper-api:1.14.2-R0.1-SNAPSHOT")
3030
compileOnly("me.clip:placeholderapi:2.9.2")
3131
implementation project(":mcmmo-placeholders-bridge-2-1")
32+
implementation project(":mcmmo-placeholders-bridge-classic")
3233
}
3334

3435

mcmmo-placeholders-plugin/src/main/java/pw/valaria/placeholders/mcmmo/McmmoPlaceholderPlugin.java

-2
Original file line numberDiff line numberDiff line change
@@ -4,8 +4,6 @@
44
import org.bukkit.plugin.java.JavaPlugin;
55

66
import pw.valaria.placeholders.mcmmo.bridge.McMMOPlaceholderExpansion;
7-
import pw.valaria.placeholders.mcmmo.bridge.McmmoBridge;
8-
import pw.valaria.placeholders.mcmmo.bridge.v2_1.McmmoBridge21;
97

108
public class McmmoPlaceholderPlugin extends JavaPlugin implements Listener {
119

settings.gradle

+1
Original file line numberDiff line numberDiff line change
@@ -2,4 +2,5 @@ rootProject.name = 'mcmmo-placeholders'
22
include 'mcmmo-placeholders-plugin'
33
include 'mcmmo-placeholders-bridge'
44
include 'mcmmo-placeholders-bridge-2-1'
5+
include 'mcmmo-placeholders-bridge-classic'
56

0 commit comments

Comments
 (0)