Skip to content

Commit

Permalink
[1.9.0-dev2]配方加载基本完成,其他待完善
Browse files Browse the repository at this point in the history
  • Loading branch information
YufiriaMazenta committed Jan 8, 2024
1 parent 68d76ff commit a033a36
Show file tree
Hide file tree
Showing 19 changed files with 618 additions and 728 deletions.
2 changes: 1 addition & 1 deletion build.gradle.kts
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
import java.text.SimpleDateFormat
version = "1.9.0-dev1"
version = "1.9.0-dev2"

plugins {
`java-library`
Expand Down
Original file line number Diff line number Diff line change
@@ -1,7 +1,6 @@
package com.github.yufiriamazenta.craftorithm.menu.creator;

import com.github.yufiriamazenta.craftorithm.config.Languages;
import com.github.yufiriamazenta.craftorithm.recipe.RecipeFactory;
import com.github.yufiriamazenta.craftorithm.recipe.RecipeGroup;
import com.github.yufiriamazenta.craftorithm.recipe.RecipeManager;
import com.github.yufiriamazenta.craftorithm.recipe.RecipeType;
Expand Down

This file was deleted.

Original file line number Diff line number Diff line change
@@ -1,41 +1,26 @@
package com.github.yufiriamazenta.craftorithm.recipe;

import com.github.yufiriamazenta.craftorithm.config.PluginConfigs;
import com.github.yufiriamazenta.craftorithm.recipe.registry.RecipeRegistry;
import crypticlib.config.ConfigWrapper;
import org.bukkit.NamespacedKey;
import org.bukkit.inventory.Recipe;
import org.jetbrains.annotations.NotNull;
import org.jetbrains.annotations.Nullable;

import java.util.ArrayList;
import java.util.List;
import java.util.Map;
import java.util.concurrent.ConcurrentHashMap;
import java.util.concurrent.CopyOnWriteArrayList;

//TODO 重构RecipeGroup
public class RecipeGroup {

private String groupName;
private List<NamespacedKey> groupRecipeKeys = new CopyOnWriteArrayList<>();
private Map<NamespacedKey, RecipeRegistry> groupRegistrys = new ConcurrentHashMap<>();
private final RecipeType recipeType;
private ConfigWrapper recipeGroupConfig;
private int sortId;
private boolean unlock;
protected String groupName;
protected Map<String, NamespacedKey> groupRecipeKeyMap = new ConcurrentHashMap<>();
protected Map<NamespacedKey, RecipeRegistry> groupRecipeRegistryMap = new ConcurrentHashMap<>();
protected ConfigWrapper recipeGroupConfig;
protected int sortId;

public RecipeGroup(@NotNull String groupName, @NotNull RecipeType recipeType, @NotNull ConfigWrapper recipeGroupConfig) {
this(groupName, new ArrayList<>(), recipeType, recipeGroupConfig);
}

public RecipeGroup(@NotNull String groupName, @NotNull List<NamespacedKey> groupRecipeKeys, @NotNull RecipeType recipeType, @NotNull ConfigWrapper recipeGroupConfig) {
public RecipeGroup(@NotNull String groupName, @NotNull ConfigWrapper recipeGroupConfig, int sortId) {
this.groupName = groupName;
this.groupRecipeKeys.addAll(groupRecipeKeys);
this.recipeType = recipeType;
this.recipeGroupConfig = recipeGroupConfig;
this.sortId = recipeGroupConfig.config().getInt("sort_id", 0);
this.unlock = recipeGroupConfig.config().getBoolean("unlock", PluginConfigs.DEFAULT_RECIPE_UNLOCK.value());
this.sortId = sortId;
}

public String groupName() {
Expand All @@ -47,59 +32,72 @@ public RecipeGroup setGroupName(String groupName) {
return this;
}

public List<NamespacedKey> groupRecipeKeys() {
return groupRecipeKeys;
public int sortId() {
return sortId;
}

public RecipeGroup setGroupRecipeKeys(List<NamespacedKey> groupRecipeKeys) {
this.groupRecipeKeys = groupRecipeKeys;
public RecipeGroup setSortId(int sortId) {
this.sortId = sortId;
return this;
}

public boolean contains(NamespacedKey namespacedKey) {
return groupRecipeKeys.contains(namespacedKey);
public @NotNull ConfigWrapper recipeGroupConfig() {
return recipeGroupConfig;
}

public RecipeGroup addRecipeKey(NamespacedKey namespacedKey) {
if (groupRecipeKeys.contains(namespacedKey))
return this;
groupRecipeKeys.add(namespacedKey);
public RecipeGroup setRecipeGroupConfig(ConfigWrapper recipeGroupConfig) {
this.recipeGroupConfig = recipeGroupConfig;
return this;
}

public boolean isEmpty() {
return groupRecipeKeys.isEmpty();
public Map<String, NamespacedKey> groupRecipeKeyMap() {
return groupRecipeKeyMap;
}

public RecipeType recipeType() {
return recipeType;
public Map<NamespacedKey, RecipeRegistry> groupRecipeRegistryMap() {
return groupRecipeRegistryMap;
}

public int sortId() {
return sortId;
public RecipeGroup addRecipeRegistry(String recipeName, RecipeRegistry recipeRegistry) {
if (!recipeRegistry.group().equals(groupName))
throw new IllegalArgumentException(
"Cannot add recipe " + recipeName + " to group " + groupName + " because its group is " + recipeRegistry.group()
);
groupRecipeKeyMap.put(recipeName, recipeRegistry.namespacedKey());
groupRecipeRegistryMap.put(recipeRegistry.namespacedKey(), recipeRegistry);
return this;
}

public RecipeGroup setSortId(int sortId) {
this.sortId = sortId;
public RecipeGroup removeRecipeRegistry(String recipeName) {
NamespacedKey recipeKey = groupRecipeKeyMap.get(recipeName);
if (recipeKey == null) {
return this;
}
groupRecipeRegistryMap.remove(recipeKey);
groupRecipeKeyMap.remove(recipeName);
return this;
}

public boolean unlock() {
return unlock;
public @Nullable RecipeRegistry getRecipeRegistry(@NotNull String recipeName) {
NamespacedKey recipeKey = groupRecipeKeyMap.get(recipeName);
if (recipeKey == null) {
return null;
}
return getRecipeRegistry(recipeKey);
}

public RecipeGroup setUnlock(boolean unlock) {
this.unlock = unlock;
return this;
public @Nullable RecipeRegistry getRecipeRegistry(@NotNull NamespacedKey recipeKey) {
return groupRecipeRegistryMap.get(recipeKey);
}

public @NotNull ConfigWrapper recipeGroupConfig() {
return recipeGroupConfig;
public void register() {
for (RecipeRegistry registry : groupRecipeRegistryMap.values()) {
registry.register();
}
}

public RecipeGroup setRecipeGroupConfig(ConfigWrapper recipeGroupConfig) {
this.recipeGroupConfig = recipeGroupConfig;
return this;
public void unregister(boolean deleteFile) {
RecipeManager.INSTANCE.removeCraftorithmRecipe(groupName, deleteFile);
}

}
Loading

0 comments on commit a033a36

Please sign in to comment.