Skip to content

Commit 3036503

Browse files
Merge pull request #501 from VolmitSoftware/Development
Commands, Skill, and some achievements
2 parents 1f9337e + 6970cab commit 3036503

File tree

7 files changed

+205
-63
lines changed

7 files changed

+205
-63
lines changed

src/main/java/com/volmit/adapt/api/world/AdaptServer.java

Lines changed: 15 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -136,31 +136,31 @@ public void on(ProjectileLaunchEvent e) {
136136
Skill<?> skill = getSkillRegistry().getSkill(data.getSkill());
137137
data.apply(p);
138138
SoundNotification.builder()
139-
.sound(Sound.ENTITY_ALLAY_AMBIENT_WITHOUT_ITEM)
140-
.volume(0.35f).pitch(1.455f)
141-
.build().play(getPlayer(p));
139+
.sound(Sound.ENTITY_ALLAY_AMBIENT_WITHOUT_ITEM)
140+
.volume(0.35f).pitch(1.455f)
141+
.build().play(getPlayer(p));
142142
SoundNotification.builder()
143-
.sound(Sound.ENTITY_SHULKER_OPEN)
144-
.volume(1f).pitch(1.655f)
145-
.build().play(getPlayer(p));
143+
.sound(Sound.ENTITY_SHULKER_OPEN)
144+
.volume(1f).pitch(1.655f)
145+
.build().play(getPlayer(p));
146146
getPlayer(p).getNot().queue(AdvancementNotification.builder()
147-
.icon(Material.BOOK)
148-
.title(C.GRAY + "+ " + C.WHITE + data.getKnowledge() + " " + skill.getDisplayName() + " Knowledge")
149-
.build());
147+
.icon(Material.BOOK)
148+
.title(C.GRAY + "+ " + C.WHITE + data.getKnowledge() + " " + skill.getDisplayName() + " Knowledge")
149+
.build());
150150
e.setCancelled(false);
151151
e.getEntity().setVelocity(e.getEntity().getVelocity().multiply(1000));
152152
} else {
153153
ExperienceOrb.Data datax = ExperienceOrb.get(s.getItem());
154154
if (datax != null) {
155155
datax.apply(p);
156156
SoundNotification.builder()
157-
.sound(Sound.ENTITY_ALLAY_AMBIENT_WITHOUT_ITEM)
158-
.volume(0.35f).pitch(1.455f)
159-
.build().play(getPlayer(p));
157+
.sound(Sound.ENTITY_ALLAY_AMBIENT_WITHOUT_ITEM)
158+
.volume(0.35f).pitch(1.455f)
159+
.build().play(getPlayer(p));
160160
SoundNotification.builder()
161-
.sound(Sound.ENTITY_SHULKER_OPEN)
162-
.volume(1f).pitch(1.655f)
163-
.build().play(getPlayer(p));
161+
.sound(Sound.ENTITY_SHULKER_OPEN)
162+
.volume(1f).pitch(1.655f)
163+
.build().play(getPlayer(p));
164164
e.setCancelled(false);
165165
e.getEntity().setVelocity(e.getEntity().getVelocity().multiply(1000));
166166
}

src/main/java/com/volmit/adapt/command/CommandAdapt.java

Lines changed: 43 additions & 36 deletions
Original file line numberDiff line numberDiff line change
@@ -17,18 +17,21 @@
1717
import com.volmit.adapt.util.decree.specialhandlers.NullablePlayerHandler;
1818
import org.bukkit.entity.Player;
1919

20+
import java.util.HashMap;
21+
import java.util.Map;
22+
2023
@Decree(name = "adapt", description = "Basic Command")
2124
public class CommandAdapt implements DecreeExecutor {
2225
private CommandDebug debug;
2326

2427
@Decree(description = "Boost Target player, or Global Experience gain.")
2528
public void boost(
26-
@Param(aliases = "seconds", description = "Amount of seconds", defaultValue = "10")
27-
int seconds,
28-
@Param(aliases = "multiplier", description = "Strength of the boost ", defaultValue = "10")
29-
int multiplier,
30-
@Param(description = "player", defaultValue = "---", customHandler = NullablePlayerHandler.class)
31-
Player player
29+
@Param(aliases = "seconds", description = "Amount of seconds", defaultValue = "10")
30+
int seconds,
31+
@Param(aliases = "multiplier", description = "Strength of the boost ", defaultValue = "10")
32+
int multiplier,
33+
@Param(description = "player", defaultValue = "---", customHandler = NullablePlayerHandler.class)
34+
Player player
3235

3336
) {
3437
if (!sender().hasPermission("adapt.boost")) {
@@ -48,12 +51,12 @@ public void boost(
4851

4952
@Decree(description = "Open the Adapt GUI")
5053
public void gui(
51-
@Param(aliases = "target", defaultValue = "[Main]")
52-
AdaptationListingHandler.AdaptationList guiTarget,
53-
@Param(aliases = "player", defaultValue = "---", customHandler = NullablePlayerHandler.class)
54-
Player player,
55-
@Param(aliases = "force", defaultValue = "false")
56-
boolean force
54+
@Param(aliases = "target", defaultValue = "[Main]")
55+
AdaptationListingHandler.AdaptationList guiTarget,
56+
@Param(aliases = "player", defaultValue = "---", customHandler = NullablePlayerHandler.class)
57+
Player player,
58+
@Param(aliases = "force", defaultValue = "false")
59+
boolean force
5760
) {
5861
if (!sender().hasPermission("adapt.gui")) {
5962
sender().sendMessage("You lack the Permission 'adapt.gui'");
@@ -103,12 +106,12 @@ public void gui(
103106

104107
@Decree(description = "Give yourself an experience orb")
105108
public void experience(
106-
@Param(aliases = "skill")
107-
AdaptationListingHandler.AdaptationSkillList skillName,
108-
@Param(aliases = "amount", defaultValue = "10")
109-
int amount,
110-
@Param(aliases = "player", defaultValue = "---", customHandler = NullablePlayerHandler.class)
111-
Player player
109+
@Param(aliases = "skill")
110+
AdaptationListingHandler.AdaptationSkillList skillName,
111+
@Param(aliases = "amount", defaultValue = "10")
112+
int amount,
113+
@Param(aliases = "player", defaultValue = "---", customHandler = NullablePlayerHandler.class)
114+
Player player
112115

113116
) {
114117
if (!sender().hasPermission("adapt.cheatitem")) {
@@ -128,9 +131,11 @@ public void experience(
128131
}
129132

130133
if (skillName.equals("[all]")) {
134+
Map<String, Double> experienceMap = new HashMap<>();
131135
for (Skill<?> skill : SkillRegistry.skills.sortV()) {
132-
targetPlayer.getInventory().addItem(ExperienceOrb.with(skill.getName(), amount));
136+
experienceMap.put(skill.getName(), (double) amount);
133137
}
138+
targetPlayer.getInventory().addItem(ExperienceOrb.with(experienceMap));
134139
FConst.success("Giving all orbs").send(sender());
135140
return;
136141
}
@@ -150,12 +155,12 @@ public void experience(
150155

151156
@Decree(description = "Give yourself a knowledge orb")
152157
public void knowledge(
153-
@Param(aliases = "skill")
154-
AdaptationListingHandler.AdaptationSkillList skillName,
155-
@Param(aliases = "amount", defaultValue = "10")
156-
int amount,
157-
@Param(aliases = "player", defaultValue = "---", customHandler = NullablePlayerHandler.class)
158-
Player player
158+
@Param(aliases = "skill")
159+
AdaptationListingHandler.AdaptationSkillList skillName,
160+
@Param(aliases = "amount", defaultValue = "10")
161+
int amount,
162+
@Param(aliases = "player", defaultValue = "---", customHandler = NullablePlayerHandler.class)
163+
Player player
159164
) {
160165
if (!sender().hasPermission("adapt.cheatitem")) {
161166
sender().sendMessage("You lack the Permission 'adapt.cheatitem'");
@@ -173,9 +178,11 @@ public void knowledge(
173178
}
174179

175180
if (skillName.equals("[all]")) {
181+
Map<String, Integer> knowledgeMap = new HashMap<>();
176182
for (Skill<?> skill : SkillRegistry.skills.sortV()) {
177-
targetPlayer.getInventory().addItem(KnowledgeOrb.with(skill.getName(), amount));
183+
knowledgeMap.put(skill.getName(), amount);
178184
}
185+
targetPlayer.getInventory().addItem(KnowledgeOrb.with(knowledgeMap));
179186
FConst.success("Giving all orbs").send(sender());
180187
return;
181188
}
@@ -195,16 +202,16 @@ public void knowledge(
195202

196203
@Decree(description = "Assign a skill, or UnAssign a skill as if you are learning / unlearning a skill.")
197204
public void determine(
198-
@Param(aliases = "adaptationTarget")
199-
AdaptationListingHandler.AdaptationProvider adaptationTarget,
200-
@Param(aliases = "assign")
201-
boolean assign,
202-
@Param(aliases = "force")
203-
boolean force,
204-
@Param(aliases = "level")
205-
int level,
206-
@Param(aliases = "player", defaultValue = "---", customHandler = NullablePlayerHandler.class)
207-
Player player
205+
@Param(aliases = "adaptationTarget")
206+
AdaptationListingHandler.AdaptationProvider adaptationTarget,
207+
@Param(aliases = "assign")
208+
boolean assign,
209+
@Param(aliases = "force")
210+
boolean force,
211+
@Param(aliases = "level")
212+
int level,
213+
@Param(aliases = "player", defaultValue = "---", customHandler = NullablePlayerHandler.class)
214+
Player player
208215

209216
) {
210217
if (!sender().hasPermission("adapt.determine")) {
Lines changed: 79 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,79 @@
1+
package com.volmit.adapt.content.adaptation.rift;
2+
3+
import com.volmit.adapt.api.adaptation.SimpleAdaptation;
4+
import com.volmit.adapt.util.C;
5+
import com.volmit.adapt.util.Element;
6+
import com.volmit.adapt.util.Localizer;
7+
import lombok.NoArgsConstructor;
8+
import org.bukkit.Material;
9+
import org.bukkit.entity.Enderman;
10+
import org.bukkit.entity.Entity;
11+
import org.bukkit.entity.Player;
12+
import org.bukkit.event.EventHandler;
13+
import org.bukkit.event.entity.EntityTargetEvent;
14+
import org.bukkit.inventory.ItemStack;
15+
16+
public class RiftVisage extends SimpleAdaptation<RiftVisage.Config> {
17+
public RiftVisage() {
18+
super("rift-visage");
19+
registerConfiguration(Config.class);
20+
setDescription(Localizer.dLocalize("rift", "visage", "description"));
21+
setDisplayName(Localizer.dLocalize("rift", "visage", "name"));
22+
setIcon(Material.POPPED_CHORUS_FRUIT);
23+
setBaseCost(getConfig().baseCost);
24+
setCostFactor(getConfig().costFactor);
25+
setMaxLevel(getConfig().maxLevel);
26+
setInitialCost(getConfig().initialCost);
27+
setInterval(1000);
28+
}
29+
30+
@Override
31+
public void addStats(int level, Element v) {
32+
v.addLore(C.ITALIC + Localizer.dLocalize("rift", "visage", "lore1"));
33+
}
34+
35+
@EventHandler
36+
public void onEntityTarget(EntityTargetEvent event) {
37+
Entity entity = event.getEntity();
38+
if (entity instanceof Enderman) {
39+
if (event.getTarget() instanceof Player player) {
40+
if (hasAdaptation(player) && hasEnderPearl(player)) {
41+
event.setCancelled(true);
42+
}
43+
}
44+
}
45+
}
46+
47+
private boolean hasEnderPearl(Player player) {
48+
for (ItemStack item : player.getInventory().getContents()) {
49+
if (item != null && item.getType() == Material.ENDER_PEARL) {
50+
return true;
51+
}
52+
}
53+
return false;
54+
}
55+
56+
@Override
57+
public void onTick() {
58+
}
59+
60+
@Override
61+
public boolean isEnabled() {
62+
return getConfig().enabled;
63+
}
64+
65+
@Override
66+
public boolean isPermanent() {
67+
return getConfig().permanent;
68+
}
69+
70+
@NoArgsConstructor
71+
protected static class Config {
72+
boolean permanent = true;
73+
boolean enabled = true;
74+
int baseCost = 8;
75+
double costFactor = 0;
76+
int maxLevel = 1;
77+
int initialCost = 2;
78+
}
79+
}

src/main/java/com/volmit/adapt/content/item/ExperienceOrb.java

Lines changed: 31 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -33,7 +33,9 @@
3333
import org.bukkit.inventory.ItemStack;
3434
import org.bukkit.inventory.meta.ItemMeta;
3535

36+
import java.util.HashMap;
3637
import java.util.List;
38+
import java.util.Map;
3739

3840
@AllArgsConstructor
3941
@Data
@@ -52,6 +54,10 @@ public static ItemStack with(String skill, double xp) {
5254
return io.withData(new Data(skill, xp));
5355
}
5456

57+
public static ItemStack with(Map<String, Double> experienceMap) {
58+
return io.withData(new Data(experienceMap));
59+
}
60+
5561
@Override
5662
public Material getMaterial() {
5763
return Material.SNOWBALL;
@@ -64,26 +70,45 @@ public Class<Data> getType() {
6470

6571
@Override
6672
public void applyLore(Data data, List<String> lore) {
67-
Skill<?> skill = Adapt.instance.getAdaptServer().getSkillRegistry().getSkill(data.skill);
68-
lore.add(C.WHITE + Localizer.dLocalize("snippets", "experienceorb", "contains") + " " + C.UNDERLINE + C.WHITE + Form.f(data.experience, 0) + " " + skill.getDisplayName() + C.GRAY + " " + Localizer.dLocalize("snippets", "experienceorb", "xp"));
73+
for (Map.Entry<String, Double> entry : data.getExperienceMap().entrySet()) {
74+
String skill = entry.getKey();
75+
double experience = entry.getValue();
76+
lore.add(C.WHITE + Form.capitalize(Localizer.dLocalize("snippets", "experienceorb", "contains")) + " " + C.UNDERLINE + C.WHITE + Form.f(experience, 0) + " " + Adapt.instance.getAdaptServer().getSkillRegistry().getSkill(skill).getDisplayName() + C.GRAY + " " + Localizer.dLocalize("snippets", "experienceorb", "xp"));
77+
}
6978
lore.add(C.LIGHT_PURPLE + Localizer.dLocalize("snippets", "experienceorb", "rightclick") + " " + C.GRAY + Localizer.dLocalize("snippets", "experienceorb", "togainxp"));
7079
}
7180

7281
@Override
7382
public void applyMeta(Data data, ItemMeta meta) {
7483
meta.addEnchant(Enchantment.BINDING_CURSE, 10, true);
7584
meta.addItemFlags(ItemFlag.HIDE_ATTRIBUTES, ItemFlag.HIDE_ENCHANTS);
76-
meta.setDisplayName(Adapt.instance.getAdaptServer().getSkillRegistry().getSkill(data.skill).getDisplayName() + " " + Localizer.dLocalize("snippets", "experienceorb", "xporb"));
85+
meta.setDisplayName(Localizer.dLocalize("snippets", "experienceorb", "xporb"));
7786
}
7887

7988
@AllArgsConstructor
8089
@lombok.Data
8190
public static class Data {
82-
private String skill;
83-
private double experience;
91+
private Map<String, Double> experienceMap;
92+
93+
public Data(String skill, double experience) {
94+
this.experienceMap = new HashMap<>();
95+
this.experienceMap.put(skill, experience);
96+
}
97+
98+
public String getSkill() {
99+
return experienceMap.keySet().iterator().next();
100+
}
101+
102+
public double getExperience() {
103+
return experienceMap.values().iterator().next();
104+
}
84105

85106
public void apply(Player p) {
86-
Adapt.instance.getAdaptServer().getPlayer(p).getSkillLine(skill).giveXPFresh(Adapt.instance.getAdaptServer().getPlayer(p).getNot(), experience);
107+
for (Map.Entry<String, Double> entry : experienceMap.entrySet()) {
108+
String skill = entry.getKey();
109+
double experience = entry.getValue();
110+
Adapt.instance.getAdaptServer().getPlayer(p).getSkillLine(skill).giveXPFresh(Adapt.instance.getAdaptServer().getPlayer(p).getNot(), experience);
111+
}
87112
}
88113
}
89114
}

0 commit comments

Comments
 (0)