⚒️ Sistema de Crafteo
Sistema de recetas con múltiples mecanismos de bloqueo: conocimiento, nivel de memorias y nivel de bench. Soporta diferentes tipos de mesas de crafteo.
🔐 Mecanismos de Bloqueo de Recetas
Hytale implementa 3 sistemas de bloqueo para controlar el acceso a recetas:
| Mecanismo | Campo | Descripción |
|---|---|---|
| 🔐 Conocimiento | knowledgeRequired |
La receta debe ser aprendida antes de poder usarla |
| 🧠 Memorias | requiredMemoriesLevel |
Requiere cierto nivel de "memorias" del jugador (1 = siempre disponible) |
| ⚒️ Tier Bench | requiredTierLevel |
Requiere que la mesa de crafteo sea de cierto nivel/tier |
🔐 Mecanismo 1: Knowledge Required
Cómo Funciona
- Si
knowledgeRequired = true, el jugador debe aprender la receta primero - Las recetas conocidas se almacenan en
PlayerConfigData.knownRecipes - Solo aplica para mesas tipo
CraftingoDiagramCrafting
Cómo se Aprenden Recetas
// LearnRecipeInteraction.java - línea 76
CraftingPlugin.learnRecipe(ref, itemId, commandBuffer);
// CraftingPlugin.java - línea 230-240
public static boolean learnRecipe(Ref<EntityStore> ref, String recipeId, ...) {
HashSet<String> knownRecipes = new HashSet<>(playerConfigData.getKnownRecipes());
if (knownRecipes.add(recipeId)) {
playerConfigData.setKnownRecipes(knownRecipes);
CraftingPlugin.sendKnownRecipes(ref, componentAccessor);
return true;
}
return false;
}
Verificación al Craftear
// CraftingManager.java - línea 295
if (recipe.isKnowledgeRequired() &&
!playerConfigData.getKnownRecipes().contains(primaryOutputItemId)) {
// Receta bloqueada - no conocida
}
🧠 Mecanismo 2: Required Memories Level
Cómo Funciona
requiredMemoriesLevelindica el nivel mínimo de "memorias"- Nivel 1 = Siempre disponible para todos los jugadores
- Niveles superiores requieren progresión del jugador en el juego
Configuración en JSON
{
"Id": "Advanced_Sword_Recipe",
"CraftingRecipe": {
"RequiredMemoriesLevel": 3,
// ... resto de la configuración
}
}
Documentación del Código
"The level of Memories starts from 1, meaning a recipe with a RequiredMemoriesLevel set at 1 will always be available to players."
"The level of Memories starts from 1, meaning a recipe with a RequiredMemoriesLevel set at 1 will always be available to players."
⚒️ Mecanismo 3: Required Tier Level
Cómo Funciona
requiredTierLevelenBenchRequirementespecifica el nivel mínimo- Cada mesa de crafteo tiene un
tierLevelactual - Las mesas pueden mejorarse (upgrade) para desbloquear más recetas
Verificación
// CraftingRecipe.java - línea 181-190
public boolean isRestrictedByBenchTierLevel(String benchId, int tierLevel) {
for (BenchRequirement b : this.benchRequirement) {
if (!benchId.equals(b.id) || tierLevel >= b.requiredTierLevel) continue;
return true; // Bloqueada por nivel de bench
}
return false;
}
Configuración en JSON
{
"BenchRequirement": [
{
"Type": "Crafting",
"Id": "Anvil",
"RequiredTierLevel": 2,
"Categories": ["Weapons", "Armor"]
}
]
}
🪑 Tipos de Mesas de Crafteo (BenchType)
| Tipo | Descripción | Soporta Knowledge Required |
|---|---|---|
Crafting |
Mesa de crafteo estándar | ✅ Sí |
DiagramCrafting |
Crafteo con diagramas | ✅ Sí |
Structural |
Crafteo estructural | ❌ No |
Fieldcraft |
Crafteo de campo (sin delay) | ❌ No |
💻 Comandos Disponibles
El sistema incluye comandos para gestionar recetas (definidos en RecipeCommand.java):
// Comandos de servidor
/recipe learn <itemId> // Aprende una receta
/recipe forget <itemId> // Olvida una receta
/recipe list // Lista recetas conocidas
📁 Archivos Clave
- CraftingRecipe.java Definición de recetas
- CraftingPlugin.java Plugin principal
- LearnRecipeInteraction.java Interacción para aprender
- BenchRecipeRegistry.java Registro por bench
- CraftingManager.java Gestor de crafteo
- PlayerConfigData.java Datos del jugador