Skip to content

Commit

Permalink
修改kubejs支持
Browse files Browse the repository at this point in the history
  • Loading branch information
dmzz-yyhyy committed Jun 23, 2024
1 parent cfc1427 commit 5e78e1e
Show file tree
Hide file tree
Showing 6 changed files with 70 additions and 0 deletions.
Original file line number Diff line number Diff line change
@@ -0,0 +1,8 @@
package dev.dubhe.anvilcraft.api.event.recipe;

import lombok.Getter;

@Getter
public class RecipeReloadEvent {
public RecipeReloadEvent() {}
}
Original file line number Diff line number Diff line change
@@ -1,5 +1,7 @@
package dev.dubhe.anvilcraft.api.recipe;

import dev.dubhe.anvilcraft.AnvilCraft;
import dev.dubhe.anvilcraft.api.event.recipe.RecipeReloadEvent;
import dev.dubhe.anvilcraft.data.recipe.anvil.AnvilRecipe;
import dev.dubhe.anvilcraft.init.ModRecipeTypes;
import lombok.Getter;
Expand All @@ -22,6 +24,7 @@
public class AnvilRecipeManager {
@Getter
private static List<AnvilRecipe> anvilRecipeList = List.of();
public static List<AnvilRecipe> externalRecipeList = new ArrayList<>();

/**
* 更新配方
Expand All @@ -31,6 +34,9 @@ public class AnvilRecipeManager {
public static void updateRecipes(@NotNull MinecraftServer server) {
RecipeManager manager = server.getRecipeManager();
ArrayList<AnvilRecipe> anvilRecipes = new ArrayList<>(manager.getAllRecipesFor(ModRecipeTypes.ANVIL_RECIPE));
AnvilCraft.EVENT_BUS.post(new RecipeReloadEvent());
anvilRecipes.addAll(externalRecipeList);
externalRecipeList = new ArrayList<>();
List<ItemStack> needFilter = new ArrayList<>();
for (CampfireCookingRecipe recipe : manager.getAllRecipesFor(RecipeType.CAMPFIRE_COOKING)) {
AnvilRecipe anvilRecipe = AnvilRecipe.of(recipe, server.registryAccess());
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -2,6 +2,7 @@

import dev.dubhe.anvilcraft.AnvilCraft;
import dev.dubhe.anvilcraft.data.recipe.anvil.AnvilRecipe;
import dev.dubhe.anvilcraft.data.recipe.anvil.AnvilRecipeType;
import dev.dubhe.anvilcraft.data.recipe.anvil.outcome.DamageAnvil;
import dev.dubhe.anvilcraft.data.recipe.anvil.outcome.RunCommand;
import dev.dubhe.anvilcraft.data.recipe.anvil.outcome.SelectOne;
Expand All @@ -16,6 +17,8 @@
import dev.dubhe.anvilcraft.data.recipe.anvil.predicate.NotHasBlock;
import dev.dubhe.anvilcraft.init.ModBlocks;
import dev.dubhe.anvilcraft.init.ModItems;
import dev.dubhe.anvilcraft.integration.kubejs.evnet.AnvilEvents;
import dev.dubhe.anvilcraft.integration.kubejs.listner.RecipeReloadEventListener;
import dev.dubhe.anvilcraft.integration.kubejs.recipe.AnvilCraftRecipeSchema;
import dev.dubhe.anvilcraft.integration.kubejs.recipe.MobTransformRecipeSchema;
import dev.dubhe.anvilcraft.integration.kubejs.recipe.builder.SelectOneBuilder;
Expand All @@ -31,6 +34,7 @@ public class AnvilCraftKubeJsPlugin extends KubeJSPlugin {
@Override
public void init() {
AnvilRecipe.init();
AnvilCraft.EVENT_BUS.register(new RecipeReloadEventListener());
}

@Override
Expand All @@ -40,6 +44,12 @@ public void registerRecipeSchemas(RegisterRecipeSchemasEvent event) {
event.register(AnvilCraft.of("mob_transform"), MobTransformRecipeSchema.SCHEMA);
}

@Override
public void registerEvents() {
super.registerEvents();
AnvilEvents.GROUP.register();
}

@Override
public void registerClasses(ScriptType type, ClassFilter filter) {
super.registerClasses(type, filter);
Expand Down Expand Up @@ -75,5 +85,9 @@ public void registerBindings(BindingsEvent event) {

// builder
event.add("SelectOneBuilder", SelectOneBuilder.class);

// recipe
event.add("AnvilRecipe", AnvilRecipe.class);
event.add("AnvilRecipeType", AnvilRecipeType.class);
}
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,13 @@
package dev.dubhe.anvilcraft.integration.kubejs.evnet;

import dev.latvian.mods.kubejs.event.EventGroup;
import dev.latvian.mods.kubejs.event.EventHandler;

/**
* kubeJs的铁砧工艺事件
*/
public interface AnvilEvents {
EventGroup GROUP = EventGroup.of("AnvilEvents");
EventHandler LOAD_ANVIL_CRAFTING_RECIPES =
GROUP.server("load_anvil_crafting_recipes", () -> LoadAnvilCraftingRecipeEvent.class);
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,16 @@
package dev.dubhe.anvilcraft.integration.kubejs.evnet;

import dev.dubhe.anvilcraft.api.recipe.AnvilRecipeManager;
import dev.dubhe.anvilcraft.data.recipe.anvil.AnvilRecipe;
import dev.latvian.mods.kubejs.event.EventJS;

public class LoadAnvilCraftingRecipeEvent extends EventJS {
public static final String ID = "anvil.recipe.load";


public LoadAnvilCraftingRecipeEvent() {}

public void register(AnvilRecipe anvilRecipe) {
AnvilRecipeManager.externalRecipeList.add(anvilRecipe);
}
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,13 @@
package dev.dubhe.anvilcraft.integration.kubejs.listner;

import dev.dubhe.anvilcraft.api.event.SubscribeEvent;
import dev.dubhe.anvilcraft.api.event.recipe.RecipeReloadEvent;
import dev.dubhe.anvilcraft.integration.kubejs.evnet.AnvilEvents;
import dev.dubhe.anvilcraft.integration.kubejs.evnet.LoadAnvilCraftingRecipeEvent;

public class RecipeReloadEventListener {
@SubscribeEvent
public void onReload(RecipeReloadEvent recipeReloadEvent) {
AnvilEvents.LOAD_ANVIL_CRAFTING_RECIPES.post(new LoadAnvilCraftingRecipeEvent());
}
}

0 comments on commit 5e78e1e

Please sign in to comment.