diff --git a/gradle.properties b/gradle.properties index db06169..9aa74e8 100644 --- a/gradle.properties +++ b/gradle.properties @@ -1 +1 @@ -version=1.4.3 \ No newline at end of file +version=1.4.4 \ No newline at end of file diff --git a/src/main/java/fr/traqueur/recipes/api/RecipesAPI.java b/src/main/java/fr/traqueur/recipes/api/RecipesAPI.java index 48f7312..75f1b69 100644 --- a/src/main/java/fr/traqueur/recipes/api/RecipesAPI.java +++ b/src/main/java/fr/traqueur/recipes/api/RecipesAPI.java @@ -3,7 +3,6 @@ import fr.traqueur.recipes.api.hook.Hook; import fr.traqueur.recipes.impl.PrepareCraftListener; import fr.traqueur.recipes.impl.domains.recipes.RecipeConfiguration; -import fr.traqueur.recipes.impl.RecipesListener; import fr.traqueur.recipes.impl.domains.ItemRecipe; import fr.traqueur.recipes.impl.updater.Updater; import org.bukkit.Bukkit; @@ -69,8 +68,7 @@ public RecipesAPI(JavaPlugin plugin, boolean debug, boolean enableYmlSupport, co RecipeType.registerPlugin(plugin); plugin.getServer().getPluginManager().registerEvents(new PrepareCraftListener(this), plugin); - plugin.getServer().getPluginManager().registerEvents(new RecipesListener(this), plugin); - + this.unregisterRecipes(); this.runNextTick(() -> { if(this.debug) { diff --git a/src/main/java/fr/traqueur/recipes/impl/PrepareCraftListener.java b/src/main/java/fr/traqueur/recipes/impl/PrepareCraftListener.java index 400fc83..fe4256d 100644 --- a/src/main/java/fr/traqueur/recipes/impl/PrepareCraftListener.java +++ b/src/main/java/fr/traqueur/recipes/impl/PrepareCraftListener.java @@ -169,13 +169,12 @@ public void onPrepareCraft(PrepareItemCraftEvent event) { private void checkGoodShapedRecipe(ItemRecipe itemRecipe, PrepareItemCraftEvent event) { AtomicBoolean isSimilar = new AtomicBoolean(true); ItemStack[] matrix = event.getInventory().getMatrix(); + matrix = Arrays.stream(matrix).filter(stack -> stack != null && stack.getType() != Material.AIR).toArray(ItemStack[]::new); + String[] pattern = Arrays.stream(itemRecipe.pattern()).map(s -> s.split("")).flatMap(Arrays::stream).toArray(String[]::new); + for (int i = 0; i < matrix.length; i++) { ItemStack stack = matrix[i]; - if (stack == null || stack.getType() == Material.AIR) continue; - int row = i / 3; - int column = i % 3; - String[] pattern = itemRecipe.pattern(); - char sign = pattern[row].replace(" ", "\u0001").split("")[column].toCharArray()[0]; + char sign = pattern[i].charAt(0); Arrays.stream(itemRecipe.ingredients()).filter(ingredient -> ingredient.sign() == sign).findFirst().ifPresent(ingredient -> { isSimilar.set(ingredient.isSimilar(stack)); }); diff --git a/src/main/java/fr/traqueur/recipes/impl/RecipesListener.java b/src/main/java/fr/traqueur/recipes/impl/RecipesListener.java deleted file mode 100644 index 123d850..0000000 --- a/src/main/java/fr/traqueur/recipes/impl/RecipesListener.java +++ /dev/null @@ -1,37 +0,0 @@ -package fr.traqueur.recipes.impl; - -import fr.traqueur.recipes.api.RecipesAPI; -import org.bukkit.event.EventHandler; -import org.bukkit.event.Listener; -import org.bukkit.event.server.PluginDisableEvent; - -/** - * This class is used to listen to events that are related to the api. - */ -public class RecipesListener implements Listener { - - /** - * The API instance. - */ - private final RecipesAPI api; - - /** - * Creates a new RecipesListener instance. - * @param api the API instance - */ - public RecipesListener(RecipesAPI api) { - this.api = api; - } - - /** - * This method is called when a plugin is disabled. - * @param event the event - */ - @EventHandler - public void onDisable(PluginDisableEvent event) { - if (event.getPlugin().getName().equals(this.api.getPlugin().getName())) { - this.api.unregisterRecipes(); - } - } - -}