Skip to content

Commit 6ee650c

Browse files
committed
- KDocを更新
1 parent df5823f commit 6ee650c

12 files changed

+115
-81
lines changed

src/api/kotlin/hiiragi283/ragium/api/RagiumAPI.kt

+16
Original file line numberDiff line numberDiff line change
@@ -11,6 +11,7 @@ import hiiragi283.ragium.api.extension.mutableTableOf
1111
import hiiragi283.ragium.api.machine.HTMachineType
1212
import hiiragi283.ragium.api.material.HTMaterialKey
1313
import hiiragi283.ragium.api.material.HTMaterialRegistry
14+
import hiiragi283.ragium.api.storage.HTItemSlot
1415
import hiiragi283.ragium.api.util.HTMultiMap
1516
import hiiragi283.ragium.api.util.HTTable
1617
import net.minecraft.core.BlockPos
@@ -23,6 +24,7 @@ import net.minecraft.server.level.ServerPlayer
2324
import net.minecraft.tags.TagKey
2425
import net.minecraft.world.entity.player.Inventory
2526
import net.minecraft.world.inventory.AbstractContainerMenu
27+
import net.minecraft.world.item.ItemStack
2628
import net.minecraft.world.level.material.Fluid
2729
import net.neoforged.fml.LogicalSide
2830
import net.neoforged.neoforge.energy.IEnergyStorage
@@ -101,6 +103,9 @@ interface RagiumAPI {
101103
*/
102104
fun getCurrentServer(): MinecraftServer?
103105

106+
/**
107+
* 現在の物理サイドを返します。
108+
*/
104109
fun getCurrentSide(): LogicalSide
105110

106111
fun getEnergyNetwork(): (ServerLevel) -> IEnergyStorage = ::getEnergyNetwork
@@ -199,4 +204,15 @@ interface RagiumAPI {
199204
* @see [HTMachineType.getBlock]
200205
*/
201206
fun getMachineBlock(type: HTMachineType): DeferredBlock<*>
207+
208+
/**
209+
* @see [HTItemSlot.Builder.build]
210+
*/
211+
fun buildItemSlot(
212+
maxSize: Int,
213+
insertFilter: (ItemStack, HTStorageIO) -> Boolean,
214+
extractFilter: (ItemStack, HTStorageIO) -> Boolean,
215+
validator: (ItemStack) -> Boolean,
216+
callback: Runnable,
217+
): HTItemSlot
202218
}

src/api/kotlin/hiiragi283/ragium/api/block/entity/HTBlockEntity.kt

+3
Original file line numberDiff line numberDiff line change
@@ -25,6 +25,9 @@ import net.minecraft.world.level.block.state.BlockState
2525
import net.minecraft.world.phys.BlockHitResult
2626
import java.util.function.Supplier
2727

28+
/**
29+
* Ragiumで使用する[BlockEntity]の基本クラス
30+
*/
2831
abstract class HTBlockEntity(type: Supplier<out BlockEntityType<*>>, pos: BlockPos, state: BlockState) :
2932
BlockEntity(type.get(), pos, state) {
3033
companion object {
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,10 @@
11
package hiiragi283.ragium.api.block.entity
22

3+
import net.minecraft.world.level.block.entity.BlockEntity
4+
5+
/**
6+
* エラーメッセージを保持する[BlockEntity]
7+
*/
38
fun interface HTErrorHoldingBlockEntity {
49
fun getErrorMessage(): String?
510
}

src/api/kotlin/hiiragi283/ragium/api/block/entity/HTPlayerOwningBlockEntity.kt

+12-2
Original file line numberDiff line numberDiff line change
@@ -3,18 +3,28 @@ package hiiragi283.ragium.api.block.entity
33
import com.mojang.serialization.Codec
44
import hiiragi283.ragium.api.RagiumAPI
55
import net.minecraft.core.UUIDUtil
6+
import net.minecraft.server.level.ServerPlayer
67
import net.minecraft.util.ExtraCodecs
7-
import net.minecraft.world.entity.player.Player
8+
import net.minecraft.world.level.block.entity.BlockEntity
89
import java.util.*
910

11+
/**
12+
* 所有者を保持する[BlockEntity]
13+
*/
1014
interface HTPlayerOwningBlockEntity {
1115
companion object {
1216
@JvmField
1317
val UUID_CODEC: Codec<Optional<UUID>> = ExtraCodecs.optionalEmptyMap(UUIDUtil.STRING_CODEC)
1418
}
1519

20+
/**
21+
* 所有者の[UUID]を返します。
22+
*/
1623
val ownerUUID: UUID?
1724

18-
val owner: Player?
25+
/**
26+
* 現在のサーバーと[ownerUUID]から,所有者の[ServerPlayer]を返します。
27+
*/
28+
val owner: ServerPlayer?
1929
get() = RagiumAPI.getInstance().getPlayer(ownerUUID)
2030
}

src/api/kotlin/hiiragi283/ragium/api/capability/HTStorageIO.kt

+21
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,7 @@
11
package hiiragi283.ragium.api.capability
22

33
import hiiragi283.ragium.api.RagiumAPI
4+
import net.minecraft.world.level.block.entity.BlockEntity
45
import net.neoforged.neoforge.energy.IEnergyStorage
56
import net.neoforged.neoforge.fluids.capability.IFluidHandler
67
import net.neoforged.neoforge.items.IItemHandlerModifiable
@@ -9,9 +10,29 @@ import net.neoforged.neoforge.items.IItemHandlerModifiable
910
* ストレージの搬入出を管理するクラス
1011
*/
1112
enum class HTStorageIO(val canInsert: Boolean, val canExtract: Boolean) {
13+
/**
14+
* ホッパーやパイプを介した搬入
15+
*/
1216
INPUT(true, false),
17+
18+
/**
19+
* ホッパーやパイプを介した搬出
20+
*/
1321
OUTPUT(false, true),
22+
23+
/**
24+
* デフォルトの操作
25+
*/
1426
GENERIC(true, true),
27+
28+
/**
29+
* GUI上のでプレイヤーによる操作
30+
*/
31+
INVENTORY(true, true),
32+
33+
/**
34+
* [BlockEntity]内での操作
35+
*/
1536
INTERNAL(false, false),
1637
;
1738

src/api/kotlin/hiiragi283/ragium/api/data/HTTagBuilder.kt

+3
Original file line numberDiff line numberDiff line change
@@ -11,6 +11,9 @@ import net.minecraft.resources.ResourceLocation
1111
import net.minecraft.tags.TagEntry
1212
import net.minecraft.tags.TagKey
1313

14+
/**
15+
* 登録した[TagKey]をソートして生成するビルダー
16+
*/
1417
@Suppress("UNCHECKED_CAST")
1518
class HTTagBuilder<T : Any>(val lookup: HolderLookup.RegistryLookup<T>) {
1619
private val entryCache: HTMultiMap.Mutable<TagKey<T>, Entry> = multiMapOf()

src/api/kotlin/hiiragi283/ragium/api/data/recipe/HTIngredientBuilder.kt

-58
This file was deleted.

src/api/kotlin/hiiragi283/ragium/api/data/recipe/HTMachineRecipeBuilderBase.kt

+6-21
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,5 @@
11
package hiiragi283.ragium.api.data.recipe
22

3-
import com.mojang.logging.LogUtils
43
import hiiragi283.ragium.api.extension.commonTag
54
import hiiragi283.ragium.api.material.HTMaterialKey
65
import hiiragi283.ragium.api.material.HTTagPrefix
@@ -26,18 +25,16 @@ import net.neoforged.neoforge.fluids.FluidStack
2625
import net.neoforged.neoforge.fluids.FluidType
2726
import net.neoforged.neoforge.fluids.crafting.FluidIngredient
2827
import net.neoforged.neoforge.registries.DeferredHolder
29-
import org.slf4j.Logger
3028
import java.util.function.Supplier
3129

30+
/**
31+
* 機械レシピのビルダーの基本クラス
32+
* @param T このクラスを継承したビルダーのクラス
33+
* @param R 生成する機械レシピのクラス
34+
* @param lookup 現在未使用
35+
*/
3236
abstract class HTMachineRecipeBuilderBase<T : HTMachineRecipeBuilderBase<T, R>, R : HTMachineRecipeBase>(val lookup: HolderGetter<Item>) :
3337
RecipeBuilder {
34-
companion object {
35-
@JvmStatic
36-
private val LOGGER: Logger = LogUtils.getLogger()
37-
}
38-
39-
private var isErrored: Boolean = false
40-
4138
// Item Input //
4239

4340
fun itemInput(item: ItemLike, count: Int = 1): T = itemInput(HTItemIngredient.of(item, count))
@@ -115,15 +112,7 @@ abstract class HTMachineRecipeBuilderBase<T : HTMachineRecipeBuilderBase<T, R>,
115112
save(recipeOutput, getPrimalId().withSuffix(suffix))
116113
}
117114

118-
private fun logWarn(id: ResourceLocation) {
119-
LOGGER.debug("Machine recipe: {} will not be saved!", id)
120-
}
121-
122115
final override fun save(recipeOutput: RecipeOutput, id: ResourceLocation) {
123-
if (isErrored) {
124-
logWarn(id)
125-
return
126-
}
127116
recipeOutput.accept(fixId(id), createRecipe(), null)
128117
}
129118

@@ -136,10 +125,6 @@ abstract class HTMachineRecipeBuilderBase<T : HTMachineRecipeBuilderBase<T, R>,
136125
protected abstract fun createRecipe(): R
137126

138127
fun export(id: ResourceLocation, consumer: (RecipeHolder<R>) -> Unit) {
139-
if (isErrored) {
140-
logWarn(id)
141-
return
142-
}
143128
consumer(RecipeHolder(fixId(id), createRecipe()))
144129
}
145130
}

src/api/kotlin/hiiragi283/ragium/api/event/HTMachineRecipesUpdatedEvent.kt

+27
Original file line numberDiff line numberDiff line change
@@ -20,12 +20,23 @@ import net.neoforged.bus.api.Event
2020
import java.util.function.Function
2121
import kotlin.jvm.optionals.getOrNull
2222

23+
/**
24+
* 機械レシピが再読み込みされたときに呼び出されるイベント
25+
* @see [HTRecipeType.reloadCache]
26+
*/
2327
class HTMachineRecipesUpdatedEvent(
2428
provider: HolderLookup.Provider,
2529
private val currentType: HTRecipeType<*>,
2630
private val consumer: (RecipeHolder<out HTMachineRecipeBase>) -> Unit,
2731
) : Event(),
2832
HolderLookup.Provider by provider {
33+
/**
34+
* 機械レシピを登録します
35+
* @param T 登録する機械レシピのクラス
36+
* @param recipeType 登録するレシピの種類
37+
* @param recipeId 登録するレシピのID
38+
* @param function 登録するレシピのビルダーを返すブロック
39+
*/
2940
fun <T : HTMachineRecipeBase> register(
3041
recipeType: HTRecipeType<T>,
3142
recipeId: ResourceLocation,
@@ -38,10 +49,22 @@ class HTMachineRecipesUpdatedEvent(
3849

3950
// Helper //
4051

52+
/**
53+
* 指定した[prefix]と[key]に含まれる[Holder]を返します。
54+
* @return 名前空間が`ragium`, `minecraft`の順に検索し,見つからない場合は最初の値を返す
55+
*/
4156
fun getFirstHolder(prefix: HTTagPrefix, key: HTMaterialKey): Holder<Item>? = getFirstHolder(prefix.createTag(key))
4257

58+
/**
59+
* 指定した[prefix]と[key]に含まれる[Item]を返します。
60+
* @return 名前空間が`ragium`, `minecraft`の順に検索し,見つからない場合は最初の値を返す
61+
*/
4362
fun getFirstItem(prefix: HTTagPrefix, key: HTMaterialKey): Item? = getFirstHolder(prefix, key)?.value()
4463

64+
/**
65+
* 指定した[tagKey]に含まれる[Holder]を返します。
66+
* @return 名前空間が`ragium`, `minecraft`の順に検索し,見つからない場合は最初の値を返す
67+
*/
4568
fun getFirstHolder(tagKey: TagKey<Item>): Holder<Item>? {
4669
val holderSet: HolderSet.Named<Item> = itemLookup().get(tagKey).getOrNull() ?: return null
4770
// Find item from Ragium
@@ -55,5 +78,9 @@ class HTMachineRecipesUpdatedEvent(
5578
return firstHolder ?: holderSet.firstOrNull()
5679
}
5780

81+
/**
82+
* 指定した[tagKey]に含まれる[Item]を返します。
83+
* @return 名前空間が`ragium`, `minecraft`の順に検索し,見つからない場合は最初の値を返す
84+
*/
5885
fun getFirstItem(tagKey: TagKey<Item>): Item? = getFirstHolder(tagKey)?.value()
5986
}

src/api/kotlin/hiiragi283/ragium/api/item/HTItemStackBuilder.kt

+3
Original file line numberDiff line numberDiff line change
@@ -9,6 +9,9 @@ import net.minecraft.world.item.ItemStack
99
import net.minecraft.world.level.ItemLike
1010
import net.neoforged.neoforge.common.MutableDataComponentHolder
1111

12+
/**
13+
* コンポーネント付きの[ItemStack]のインスタンスを作るビルダー
14+
*/
1215
class HTItemStackBuilder : MutableDataComponentHolder {
1316
private val stack: ItemStack
1417

src/api/kotlin/hiiragi283/ragium/api/item/HTSingleEnchantmentAwareItem.kt

+3
Original file line numberDiff line numberDiff line change
@@ -10,6 +10,9 @@ import net.minecraft.world.item.enchantment.ItemEnchantments
1010
import net.neoforged.neoforge.common.extensions.IItemExtension
1111
import kotlin.math.max
1212

13+
/**
14+
* 単一の[Enchantment]を常に返す[IItemExtension]
15+
*/
1316
interface HTSingleEnchantmentAwareItem : IItemExtension {
1417
val targetEnchantment: ResourceKey<Enchantment>
1518
val targetLevel: Int

src/api/kotlin/hiiragi283/ragium/api/recipe/base/HTRecipeType.kt

+16
Original file line numberDiff line numberDiff line change
@@ -39,6 +39,10 @@ class HTRecipeType<T : HTMachineRecipeBase>(val machine: HTMachineType, val seri
3939
private var lastRecipe: ResourceLocation? = null
4040
private var changed: Boolean = true
4141

42+
/**
43+
* 指定した[input]と[level]から最初に一致するレシピを返します。
44+
* @return 見つからなかった場合は[Result.failure]
45+
*/
4246
fun getFirstRecipe(input: HTMachineRecipeInput, level: Level): Result<T> {
4347
var firstRecipe: RecipeHolder<T>? = null
4448
// Check cache update
@@ -62,14 +66,23 @@ class HTRecipeType<T : HTMachineRecipeBase>(val machine: HTMachineType, val seri
6266
}
6367
}
6468

69+
/**
70+
* キャッシュされたレシピの一覧を返します。
71+
*/
6572
fun getAllRecipes(): List<RecipeHolder<T>> = recipeCache.values.toList()
6673

6774
// Cache //
6875

76+
/**
77+
* レシピを更新するフラグを立てます。
78+
*/
6979
fun setChanged() {
7080
changed = true
7181
}
7282

83+
/**
84+
* レシピを現在のサーバに基づいて更新します。
85+
*/
7386
fun reloadCache() {
7487
if (changed && RagiumAPI.getInstance().getCurrentSide().isServer) {
7588
RagiumAPI
@@ -81,6 +94,9 @@ class HTRecipeType<T : HTMachineRecipeBase>(val machine: HTMachineType, val seri
8194
}
8295
}
8396

97+
/**
98+
* 指定した[manager]からレシピを更新します。
99+
*/
84100
@Suppress("UNCHECKED_CAST")
85101
fun reloadCache(manager: RecipeManager) {
86102
lastRecipe = null

0 commit comments

Comments
 (0)