Skip to content

Commit 294fb6e

Browse files
Bump version and start remover code
1 parent e3a4db8 commit 294fb6e

File tree

6 files changed

+174
-3
lines changed

6 files changed

+174
-3
lines changed

build.gradle

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -8,7 +8,7 @@ plugins {
88

99
group = 'org.parallelmc'
1010

11-
version = '2.2.1'
11+
version = '2.3.0'
1212
description = 'A set of utilities and features for use on the Parallel Minecraft server'
1313

1414
java {

src/main/java/parallelmc/parallelutils/Constants.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,7 @@
22

33
public class Constants {
44

5-
public static final Version VERSION = new Version(2, 2, 1);
5+
public static final Version VERSION = new Version(2, 3, 0);
66
public static final String PLUGIN_NAME = "ParallelUtils";
77
public static final String DEFAULT_WORLD = "world2";
88
}

src/main/java/parallelmc/parallelutils/modules/charms/ParallelCharms.java

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -116,6 +116,7 @@ public void onEnable() {
116116
manager.registerEvents(new PlayerLeaveListener(puPlugin, this), puPlugin);
117117
manager.registerEvents(new PlayerSlotChangedListener(puPlugin, this), puPlugin);
118118
manager.registerEvents(new AnvilApplyCharmListener(puPlugin, this), puPlugin);
119+
//manager.registerEvents(new GrindstoneRemoveCharmListener(puPlugin, this), puPlugin);
119120
manager.registerEvents(new PlayerHeldItemListener(puPlugin, this), puPlugin);
120121
manager.registerEvents(new EntityDamageListener(this), puPlugin);
121122

@@ -126,6 +127,7 @@ public void onEnable() {
126127

127128
puPlugin.addCommand("giveCharm", new GiveCharm(this, charmOptions));
128129
puPlugin.addCommand("reloadCharms", new ReloadCharms(this));
130+
puPlugin.addCommand("giveRemover", new GiveRemover(puPlugin));
129131
}
130132

131133
@Override
Lines changed: 72 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,72 @@
1+
package parallelmc.parallelutils.modules.charms.commands;
2+
3+
import net.kyori.adventure.text.Component;
4+
import org.bukkit.Material;
5+
import org.bukkit.NamespacedKey;
6+
import org.bukkit.command.Command;
7+
import org.bukkit.command.CommandSender;
8+
import org.bukkit.entity.Player;
9+
import org.bukkit.event.inventory.InventoryMoveItemEvent;
10+
import org.bukkit.inventory.ItemStack;
11+
import org.bukkit.inventory.meta.ItemMeta;
12+
import org.bukkit.persistence.PersistentDataContainer;
13+
import org.bukkit.persistence.PersistentDataType;
14+
import org.jetbrains.annotations.NotNull;
15+
import parallelmc.parallelutils.Parallelutils;
16+
import parallelmc.parallelutils.commands.ParallelCommand;
17+
import parallelmc.parallelutils.commands.permissions.ParallelPermission;
18+
19+
import java.util.List;
20+
21+
public class GiveRemover extends ParallelCommand {
22+
23+
private final Parallelutils puPlugin;
24+
25+
public GiveRemover(Parallelutils puPlugin) {
26+
super("giveRemover", new ParallelPermission("parallelutils.removecharm"));
27+
this.puPlugin = puPlugin;
28+
}
29+
30+
@Override
31+
public boolean execute(@NotNull CommandSender sender, @NotNull Command command, @NotNull String[] args) {
32+
33+
Player player;
34+
35+
if (args.length < 2) {
36+
if (sender instanceof Player) {
37+
player = (Player) sender;
38+
} else {
39+
return false;
40+
}
41+
} else {
42+
String playerName = args[1];
43+
44+
player = sender.getServer().getPlayer(playerName);
45+
}
46+
47+
if (player == null) return false;
48+
49+
ItemStack item = new ItemStack(Material.PAPER);
50+
51+
ItemMeta meta = item.getItemMeta();
52+
53+
if (meta == null) return false;
54+
55+
meta.displayName(Component.text("<italic:false><yellow>Charm Remover"));
56+
57+
PersistentDataContainer pdc = meta.getPersistentDataContainer();
58+
59+
pdc.set(new NamespacedKey(puPlugin, "ParallelUtils.CharmRemover"), PersistentDataType.INTEGER, 1);
60+
61+
item.setItemMeta(meta);
62+
63+
player.getInventory().addItem(item);
64+
65+
return true;
66+
}
67+
68+
@Override
69+
public List<String> getTabComplete(@NotNull CommandSender sender, @NotNull String[] args) {
70+
return null;
71+
}
72+
}

src/main/java/parallelmc/parallelutils/modules/charms/listeners/AnvilApplyCharmListener.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -64,7 +64,7 @@ public void onAnvilPrep(PrepareAnvilEvent event) {
6464
return;
6565
}
6666

67-
// Check if item2 is a charm. If it is not, clear result and do nothing
67+
// Check if item2 is a charm applicator. If it is not, clear result and do nothing
6868
Charm charm = Charm.getCharmAppl(puPlugin, pCharms, item2);
6969
if (charm == null) {
7070
return;
Lines changed: 97 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,97 @@
1+
package parallelmc.parallelutils.modules.charms.listeners;
2+
3+
import com.destroystokyo.paper.event.inventory.PrepareGrindstoneEvent;
4+
import org.bukkit.Material;
5+
import org.bukkit.NamespacedKey;
6+
import org.bukkit.entity.HumanEntity;
7+
import org.bukkit.entity.Player;
8+
import org.bukkit.event.EventHandler;
9+
import org.bukkit.event.EventPriority;
10+
import org.bukkit.event.Listener;
11+
import org.bukkit.inventory.GrindstoneInventory;
12+
import org.bukkit.inventory.ItemStack;
13+
import org.bukkit.inventory.meta.ItemMeta;
14+
import org.bukkit.persistence.PersistentDataContainer;
15+
import org.bukkit.persistence.PersistentDataType;
16+
import parallelmc.parallelutils.Parallelutils;
17+
import parallelmc.parallelutils.modules.charms.ParallelCharms;
18+
import parallelmc.parallelutils.modules.charms.data.Charm;
19+
20+
import java.util.logging.Level;
21+
22+
public class GrindstoneRemoveCharmListener implements Listener {
23+
24+
private final Parallelutils puPlugin;
25+
private final ParallelCharms pCharms;
26+
27+
public GrindstoneRemoveCharmListener(Parallelutils puPlugin, ParallelCharms pCharms) {
28+
this.puPlugin = puPlugin;
29+
this.pCharms = pCharms;
30+
}
31+
32+
@EventHandler(priority = EventPriority.HIGH)
33+
public void onGrindstonePrep(PrepareGrindstoneEvent event) { // Ignore that this is deprecated. It shouldn't be
34+
GrindstoneInventory inventory = event.getInventory();
35+
36+
ItemStack upper = inventory.getUpperItem();
37+
ItemStack lower = inventory.getLowerItem();
38+
39+
if (upper == null || lower == null) {
40+
return; // Let minecraft deal with it. We don't care
41+
}
42+
43+
// If upper item does not have a charm, ignore. Let minecraft deal with it
44+
if (!Charm.hasCharm(upper)) {
45+
return;
46+
}
47+
48+
Player player = null;
49+
50+
// Only one viewer allowed
51+
for (HumanEntity e : event.getViewers()) {
52+
if (e instanceof Player pl) {
53+
if (player == null) {
54+
player = pl;
55+
} else {
56+
event.setResult(null);
57+
return;
58+
}
59+
}
60+
}
61+
62+
63+
if (lower.getType() == Material.PAPER) {
64+
ItemMeta meta = lower.getItemMeta();
65+
66+
PersistentDataContainer pdc = meta.getPersistentDataContainer();
67+
68+
Integer val = pdc.get(new NamespacedKey(puPlugin, "ParallelUtils.CharmRemover"), PersistentDataType.INTEGER);
69+
70+
if (val == null) {
71+
return;
72+
}
73+
74+
if (val == 1) {
75+
// At this point, the upper item has a charm and the lower item is a remover. Set result
76+
77+
ItemStack result = new ItemStack(upper);
78+
79+
Charm charm = Charm.parseCharm(pCharms, result, player);
80+
81+
if (charm == null) {
82+
Parallelutils.log(Level.WARNING, "Something went wrong while taking off a charm!");
83+
return;
84+
}
85+
86+
boolean res = charm.takeOff(result, player);
87+
88+
if (!res) {
89+
Parallelutils.log(Level.WARNING, "Something went wrong while taking off a charm!");
90+
return;
91+
}
92+
93+
event.setResult(result);
94+
}
95+
}
96+
}
97+
}

0 commit comments

Comments
 (0)