Skip to content

Commit 682354b

Browse files
author
Lee Zheng Han
committed
Change to ShapelessRecipe and allow passing of ItemMeta
1 parent 8c0579b commit 682354b

File tree

2 files changed

+64
-5
lines changed

2 files changed

+64
-5
lines changed

src/main/java/com/paratopiamc/colorbundles/ColorBundles.java

+15-5
Original file line numberDiff line numberDiff line change
@@ -1,15 +1,19 @@
11
package com.paratopiamc.colorbundles;
22

3+
import java.util.ArrayList;
4+
import java.util.List;
35
import org.bukkit.Bukkit;
46
import org.bukkit.Material;
57
import org.bukkit.NamespacedKey;
68
import org.bukkit.inventory.ItemStack;
7-
import org.bukkit.inventory.ShapedRecipe;
9+
import org.bukkit.inventory.ShapelessRecipe;
810
import org.bukkit.inventory.meta.ItemMeta;
911
import org.bukkit.plugin.java.JavaPlugin;
1012
import net.md_5.bungee.api.ChatColor;
1113

1214
public final class ColorBundles extends JavaPlugin {
15+
private List<String> recipeKeys;
16+
1317
private static enum Dyes {
1418
BLACK("black"), BLUE("blue"), BROWN("brown"), CYAN("cyan"), GRAY("gray"), GREEN("green"),
1519
LIGHT_BLUE("light_blue"), LIGHT_GRAY("light_gray"), LIME("lime"), MAGENTA("magenta"), ORANGE("orange"),
@@ -43,7 +47,9 @@ public void onEnable() {
4347
}
4448
}
4549
saveDefaultConfig();
50+
getServer().getPluginManager().registerEvents(new CraftingListener(this), this);
4651

52+
recipeKeys = new ArrayList<>();
4753
for (Dyes dye : Dyes.values()) {
4854
ItemStack item = new ItemStack(Material.BUNDLE);
4955
ItemMeta meta = item.getItemMeta();
@@ -53,16 +59,20 @@ public void onEnable() {
5359

5460
item.setItemMeta(meta);
5561
NamespacedKey key = new NamespacedKey(this, dye + "_bundle");
56-
ShapedRecipe recipe = new ShapedRecipe(key, item);
62+
ShapelessRecipe recipe = new ShapelessRecipe(key, item);
5763

58-
recipe.shape("BD");
59-
recipe.setIngredient('B', Material.BUNDLE);
60-
recipe.setIngredient('D', dye.getDye());
64+
recipe.addIngredient(Material.BUNDLE);
65+
recipe.addIngredient(dye.getDye());
6166

6267
Bukkit.addRecipe(recipe);
68+
recipeKeys.add(dye + "_bundle");
6369

6470
getServer().getConsoleSender()
6571
.sendMessage(ChatColor.GREEN + "[ColorBundles] Loaded recipes: " + dye + "_bundle");
6672
}
6773
}
74+
75+
public List<String> getRecipeKeys() {
76+
return this.recipeKeys;
77+
}
6878
}
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,49 @@
1+
package com.paratopiamc.colorbundles;
2+
3+
import java.util.HashMap;
4+
import java.util.List;
5+
import org.bukkit.Material;
6+
import org.bukkit.event.EventHandler;
7+
import org.bukkit.event.Listener;
8+
import org.bukkit.event.inventory.PrepareItemCraftEvent;
9+
import org.bukkit.inventory.CraftingInventory;
10+
import org.bukkit.inventory.ItemStack;
11+
import org.bukkit.inventory.Recipe;
12+
import org.bukkit.inventory.ShapelessRecipe;
13+
import org.bukkit.inventory.meta.ItemMeta;
14+
15+
public class CraftingListener implements Listener {
16+
private ColorBundles plugin;
17+
18+
public CraftingListener(ColorBundles plugin) {
19+
this.plugin = plugin;
20+
}
21+
22+
@EventHandler
23+
public void onCraft(PrepareItemCraftEvent evt) {
24+
Recipe recipe = evt.getRecipe();
25+
if (recipe instanceof ShapelessRecipe) {
26+
ShapelessRecipe shapeless = (ShapelessRecipe) recipe;
27+
String currentKey = shapeless.getKey().getKey();
28+
List<String> recipeKeys = this.plugin.getRecipeKeys();
29+
for (int i = 0; i < recipeKeys.size(); i++) {
30+
if (currentKey.equals(recipeKeys.get(i))) {
31+
ItemStack originalResult = shapeless.getResult();
32+
int customModelData = originalResult.getItemMeta().getCustomModelData();
33+
34+
CraftingInventory inventory = evt.getInventory();
35+
HashMap<Integer, ? extends ItemStack> mapping = inventory.all(Material.BUNDLE);
36+
Integer[] array = mapping.keySet().toArray(new Integer[2]);
37+
ItemStack finalResult = inventory.getItem(array[1]).clone();
38+
39+
ItemMeta meta = finalResult.getItemMeta();
40+
meta.setCustomModelData(customModelData);
41+
finalResult.setItemMeta(meta);
42+
43+
inventory.setResult(finalResult);
44+
break;
45+
}
46+
}
47+
}
48+
}
49+
}

0 commit comments

Comments
 (0)