diff --git a/pom.xml b/pom.xml
index 2351edd..3cc1a19 100644
--- a/pom.xml
+++ b/pom.xml
@@ -6,7 +6,7 @@
net.trafficlunar
VillagerRehab
- 1.0.0
+ 1.0.1
jar
VillagerRehab
diff --git a/src/main/java/net/trafficlunar/villagerrehab/TradesDataType.java b/src/main/java/net/trafficlunar/villagerrehab/TradesDataType.java
new file mode 100644
index 0000000..9fd4807
--- /dev/null
+++ b/src/main/java/net/trafficlunar/villagerrehab/TradesDataType.java
@@ -0,0 +1,40 @@
+package net.trafficlunar.villagerrehab;
+
+import org.bukkit.persistence.PersistentDataAdapterContext;
+import org.bukkit.persistence.PersistentDataType;
+
+// Stolen from https://github.com/spartacus04/InstantRestock/blob/master/src/main/java/me/spartacus04/instantrestock/TradesDataType.kt
+public class TradesDataType implements PersistentDataType {
+
+ @Override
+ public Class getPrimitiveType() {
+ return byte[].class;
+ }
+
+ @Override
+ public Class getComplexType() {
+ return int[].class;
+ }
+
+ @Override
+ public byte[] toPrimitive(int[] complex, PersistentDataAdapterContext context) {
+ byte[] bytes = new byte[complex.length];
+
+ for (int i = 0; i < complex.length; i++) {
+ bytes[i] = (byte) complex[i];
+ }
+
+ return bytes;
+ }
+
+ @Override
+ public int[] fromPrimitive(byte[] primitive, PersistentDataAdapterContext context) {
+ int[] ints = new int[primitive.length];
+
+ for (int i = 0; i < primitive.length; i++) {
+ ints[i] = primitive[i];
+ }
+
+ return ints;
+ }
+}
\ No newline at end of file
diff --git a/src/main/java/net/trafficlunar/villagerrehab/listeners/InteractListener.java b/src/main/java/net/trafficlunar/villagerrehab/listeners/InteractListener.java
index 2a5af97..b00862f 100644
--- a/src/main/java/net/trafficlunar/villagerrehab/listeners/InteractListener.java
+++ b/src/main/java/net/trafficlunar/villagerrehab/listeners/InteractListener.java
@@ -4,22 +4,24 @@ import net.kyori.adventure.key.Key;
import net.kyori.adventure.sound.Sound;
import net.kyori.adventure.text.Component;
import net.kyori.adventure.text.format.NamedTextColor;
-import net.trafficlunar.villagerrehab.commands.WandCommand;
-import org.bukkit.Bukkit;
-import org.bukkit.Effect;
+import net.trafficlunar.villagerrehab.TradesDataType;
+import org.bukkit.NamespacedKey;
import org.bukkit.Particle;
-import org.bukkit.attribute.Attribute;
-import org.bukkit.attribute.AttributeInstance;
import org.bukkit.entity.Entity;
import org.bukkit.entity.Player;
import org.bukkit.entity.Villager;
import org.bukkit.event.EventHandler;
import org.bukkit.event.Listener;
import org.bukkit.event.player.PlayerInteractEntityEvent;
+import org.bukkit.inventory.MerchantRecipe;
+
+import java.util.List;
import static net.trafficlunar.villagerrehab.VillagerRehab.wandItem;
public class InteractListener implements Listener {
+ private final NamespacedKey KEY = new NamespacedKey("instantrestock", "instant_restock");
+
@EventHandler
public void onInteract(PlayerInteractEntityEvent event) {
Player player = event.getPlayer();
@@ -30,7 +32,25 @@ public class InteractListener implements Listener {
if (clickedEntity instanceof Villager villager) {
event.setCancelled(true);
- villager.clearReputations();
+
+ int[] originalUses = villager.getPersistentDataContainer().get(KEY, new TradesDataType());
+ int i = 0;
+
+ List recipes = villager.getRecipes();
+
+ for (MerchantRecipe recipe : recipes) {
+ if (originalUses != null && i < originalUses.length) {
+ recipe.setMaxUses(originalUses[i]);
+ } else {
+ recipe.setMaxUses(12); // fallback
+ }
+ recipe.setUses(0);
+ recipe.setDemand(0);
+ i++;
+ }
+
+ villager.setRecipes(recipes);
+
player.sendMessage(Component.text("Rehabbed!").color(NamedTextColor.GOLD));
player.playSound(Sound.sound(Key.key("block.amethyst_block.chime"), Sound.Source.BLOCK, 100.0f, 1.0f));
player.getWorld().spawnParticle(Particle.FIREWORK, villager.getLocation(), 150);