Merge remote-tracking branch 'origin/1.21' into 1.21

This commit is contained in:
DBotThePony 2024-11-13 18:52:04 +07:00
commit 46d04a4217
Signed by: DBot
GPG Key ID: DCC23B5715498507
8 changed files with 107 additions and 10 deletions

View File

@ -10,6 +10,7 @@ import net.minecraft.world.item.Items
import net.minecraft.world.item.crafting.Ingredient
import net.neoforged.neoforge.common.Tags
import ru.dbotthepony.mc.otm.block.entity.MatteryBlockEntity
import ru.dbotthepony.mc.otm.config.CablesConfig
import ru.dbotthepony.mc.otm.registry.MBlocks
import ru.dbotthepony.mc.otm.registry.MItemTags
import ru.dbotthepony.mc.otm.registry.MItems
@ -460,4 +461,36 @@ fun addCraftingTableRecipes(consumer: RecipeOutput) {
.row(MItemTags.IRON_PLATES, MItemTags.CRAFTING_TABLES, MItemTags.IRON_PLATES)
.unlockedBy(Tags.Items.DYES)
.build(consumer)
MatteryRecipe(MItems.CHEST_UPGRADER, category = RecipeCategory.TOOLS)
.rowAC(Items.REDSTONE, Items.REDSTONE)
.row(MItemTags.TRITANIUM_PLATES, Items.ENDER_PEARL, MItemTags.TRITANIUM_PLATES)
.rowB(ItemTags.STONE_BUTTONS)
.unlockedBy(Tags.Items.CHESTS_WOODEN)
.unlockedBy(Tags.Items.BARRELS_WOODEN)
.unlockedBy(MItemTags.CARGO_CRATES)
.build(consumer)
MatteryRecipe(MItems.ENERGY_CABLES[CablesConfig.E.CRUDE]!!.asItem(), category = machinesCategory, count = 8)
.row(MItemTags.IRON_PLATES, Items.REDSTONE, MItemTags.IRON_PLATES)
.unlockedBy(Items.REDSTONE)
.build(consumer)
MatteryRecipe(MItems.ENERGY_CABLES[CablesConfig.E.REGULAR]!!.asItem(), category = machinesCategory, count = 16)
.row(MItemTags.IRON_PLATES, MItemTags.IRON_PLATES, MItemTags.IRON_PLATES)
.row(MItemTags.COPPER_WIRES, Items.REDSTONE, MItemTags.COPPER_WIRES)
.row(MItemTags.IRON_PLATES, MItemTags.IRON_PLATES, MItemTags.IRON_PLATES)
.build(consumer)
MatteryRecipe(MItems.ENERGY_CABLES[CablesConfig.E.ADVANCED]!!.asItem(), category = machinesCategory, count = 16)
.row(MItemTags.TRITANIUM_PLATES, MItemTags.TRITANIUM_PLATES, MItemTags.TRITANIUM_PLATES)
.row(MItemTags.GOLD_WIRES, Items.REDSTONE, MItemTags.GOLD_WIRES)
.row(MItemTags.TRITANIUM_PLATES, MItemTags.TRITANIUM_PLATES, MItemTags.TRITANIUM_PLATES)
.build(consumer)
MatteryRecipe(MItems.ENERGY_CABLES[CablesConfig.E.SUPERCONDUCTOR]!!.asItem(), category = machinesCategory)
.row(MItemTags.REINFORCED_TRITANIUM_PLATES, MItems.ELECTROMAGNET, MItemTags.REINFORCED_TRITANIUM_PLATES)
.row(Tags.Items.INGOTS_GOLD, Tags.Items.INGOTS_GOLD, Tags.Items.INGOTS_GOLD)
.row(MItemTags.REINFORCED_TRITANIUM_PLATES, Items.BLUE_ICE, MItemTags.REINFORCED_TRITANIUM_PLATES)
.build(consumer)
}

View File

@ -34,7 +34,7 @@ class FluidTankBlockEntity(blockPos: BlockPos, blockState: BlockState) : Mattery
if (level is ServerLevel) {
markDirtyFast()
}
}), FluidStack.STREAM_CODEC.wrap()))
}), FluidStack.OPTIONAL_STREAM_CODEC.wrap()))
val fillInput = MatteryContainer(::markDirtyFast, 1).also(::addDroppableContainer)
val drainInput = MatteryContainer(::markDirtyFast, 1).also(::addDroppableContainer)

View File

@ -26,7 +26,7 @@ open class BlockMatteryFluidHandler(private val _capacity: IntSupplier, field: D
get() = _capacity.asInt
override fun serializeNBT(registry: HolderLookup.Provider): Tag {
return fluid.save(registry)
return fluid.saveOptional(registry)
}
override fun deserializeNBT(registry: HolderLookup.Provider, nbt: Tag?) {

View File

@ -4,9 +4,15 @@ import io.wispforest.condensed_creative.entry.impl.CondensedItemEntry
import io.wispforest.condensed_creative.registry.CondensedCreativeInitializer
import io.wispforest.condensed_creative.registry.CondensedEntryRegistry
import net.minecraft.core.RegistryAccess
import net.minecraft.core.registries.BuiltInRegistries
import net.minecraft.world.item.CreativeModeTab
import net.minecraft.world.item.DyeColor
import net.minecraft.world.item.Item
import net.minecraft.world.item.ItemStack
import net.minecraft.world.level.material.Fluids
import net.neoforged.neoforge.capabilities.Capabilities
import net.neoforged.neoforge.fluids.FluidStack
import net.neoforged.neoforge.fluids.capability.IFluidHandler
import ru.dbotthepony.mc.otm.core.registryName
import ru.dbotthepony.mc.otm.registry.MCreativeTabs
import ru.dbotthepony.mc.otm.registry.MItems
@ -48,6 +54,9 @@ class CondensedCreativeCompat : CondensedCreativeInitializer {
addByBase(MItems.ITEM_MONITOR, MCreativeTabs.MAIN)
addByBase(MItems.STORAGE_POWER_SUPPLIER, MCreativeTabs.MAIN)
addByFluids(MItems.FLUID_CAPSULE, MCreativeTabs.MAIN)
addByFluids(MItems.FLUID_TANK, MCreativeTabs.MAIN)
addByBase(MItems.TRITANIUM_DOOR, MCreativeTabs.DECORATIVE)
addByBase(MItems.TRITANIUM_TRAPDOOR, MCreativeTabs.DECORATIVE)
addByBase(MRegistry.TRITANIUM_PRESSURE_PLATE.allItems, MCreativeTabs.DECORATIVE)
@ -111,4 +120,23 @@ class CondensedCreativeCompat : CondensedCreativeInitializer {
tabs.forEach { builder.addToItemGroup(it) }
return builder
}
private fun addByFluids(item: Item, vararg tabs: CreativeModeTab): CondensedItemEntry.Builder? {
val base = ItemStack(item, 1)
val list = arrayListOf(base)
for (fluid in BuiltInRegistries.FLUID) {
if (fluid != Fluids.EMPTY && fluid.isSource(fluid.defaultFluidState())) {
list.add(base.copy().also {
it.getCapability(Capabilities.FluidHandler.ITEM)?.let {
it.fill(FluidStack(fluid, it.getTankCapacity(0)), IFluidHandler.FluidAction.EXECUTE)
}
})
}
}
val builder = CondensedEntryRegistry.fromItemStacks(item.registryName, base, list)
tabs.forEach { builder.addToItemGroup(it) }
return builder
}
}

View File

@ -0,0 +1,26 @@
package ru.dbotthepony.mc.otm.item.block
import net.minecraft.ChatFormatting
import net.minecraft.network.chat.Component
import net.minecraft.world.item.BlockItem
import net.minecraft.world.item.ItemStack
import net.minecraft.world.item.TooltipFlag
import ru.dbotthepony.mc.otm.config.CablesConfig
import ru.dbotthepony.mc.otm.core.util.formatPower
import ru.dbotthepony.mc.otm.registry.MBlocks
class EnergyCableItem(val conf: CablesConfig.E, properties: Properties) : BlockItem(MBlocks.ENERGY_CABLES[conf]!!, properties) {
override fun appendHoverText(
stack: ItemStack,
context: TooltipContext,
tooltip: MutableList<Component>,
flag: TooltipFlag
) {
super.appendHoverText(stack, context, tooltip, flag)
tooltip.add(
Component.translatable("otm.item.power.throughput_mono", conf.throughput.formatPower())
.withStyle(ChatFormatting.GRAY))
}
}

View File

@ -1,4 +1,4 @@
package ru.dbotthepony.mc.otm.item
package ru.dbotthepony.mc.otm.item.block
import net.minecraft.client.renderer.BlockEntityWithoutLevelRenderer
import net.minecraft.network.chat.Component
@ -16,6 +16,7 @@ import ru.dbotthepony.mc.otm.capability.fluid.BlockMatteryFluidHandler
import ru.dbotthepony.mc.otm.client.render.blockentity.FluidTankRenderer
import ru.dbotthepony.mc.otm.core.TooltipList
import ru.dbotthepony.mc.otm.core.TranslatableComponent
import ru.dbotthepony.mc.otm.item.FluidCapsuleItem
import ru.dbotthepony.mc.otm.registry.CapabilitiesRegisterListener
import java.util.function.Consumer
import java.util.function.IntSupplier
@ -36,9 +37,18 @@ class FluidTankItem(block: FluidTankBlock, properties: Properties, val capacity:
if (pContext.player?.isCrouching == true)
return InteractionResult.PASS
val context = FluidCapsuleItem.Context(pContext.clickedPos, pContext.level.getBlockState(pContext.clickedPos), pContext.clickedFace)
val context = FluidCapsuleItem.Context(
pContext.clickedPos,
pContext.level.getBlockState(pContext.clickedPos),
pContext.clickedFace
)
if (FluidCapsuleItem.canInteract(pContext.itemInHand, pContext.player ?: return InteractionResult.FAIL, context))
if (FluidCapsuleItem.canInteract(
pContext.itemInHand,
pContext.player ?: return InteractionResult.FAIL,
context
)
)
return FluidCapsuleItem.interact(pContext.itemInHand, pContext.player!!, context)
return super.onItemUseFirst(stack, pContext)

View File

@ -17,7 +17,7 @@ class FluidGaugeWidget(synchronizer: SynchableGroup) {
var fluidSupplier = Supplier { FluidStack.EMPTY }
val maxCapacity by synchronizer.computedInt(IntSupplier { maxCapacitySupplier.asInt })
val fluid by synchronizer.computed({ fluidSupplier.get() }, FluidStack.STREAM_CODEC.wrap())
val fluid by synchronizer.computed({ fluidSupplier.get() }, FluidStack.OPTIONAL_STREAM_CODEC.wrap())
val percentage: Float get() {
if (maxCapacity <= 0 || fluid.isEmpty) {

View File

@ -25,7 +25,6 @@ import net.minecraft.world.item.Tiers
import net.minecraft.world.item.crafting.Ingredient
import net.minecraft.world.level.block.Block
import net.neoforged.bus.api.IEventBus
import net.neoforged.neoforge.capabilities.RegisterCapabilitiesEvent
import net.neoforged.neoforge.common.SimpleTier
import ru.dbotthepony.mc.otm.capability.ITieredUpgradeSet
import ru.dbotthepony.mc.otm.capability.MatteryPlayer
@ -43,7 +42,7 @@ import ru.dbotthepony.mc.otm.item.CrudeBatteryItem
import ru.dbotthepony.mc.otm.item.EssenceCapsuleItem
import ru.dbotthepony.mc.otm.item.EssenceServoItem
import ru.dbotthepony.mc.otm.item.FluidCapsuleItem
import ru.dbotthepony.mc.otm.item.FluidTankItem
import ru.dbotthepony.mc.otm.item.block.FluidTankItem
import ru.dbotthepony.mc.otm.item.GravitationalDisruptorItem
import ru.dbotthepony.mc.otm.item.HealPillItem
import ru.dbotthepony.mc.otm.item.MatteryItem
@ -58,6 +57,7 @@ import ru.dbotthepony.mc.otm.item.ZPMItem
import ru.dbotthepony.mc.otm.item.addSimpleDescription
import ru.dbotthepony.mc.otm.item.armor.PortableGravitationStabilizerItem
import ru.dbotthepony.mc.otm.item.armor.TritaniumArmorItem
import ru.dbotthepony.mc.otm.item.block.EnergyCableItem
import ru.dbotthepony.mc.otm.item.exopack.ExopackProbeItem
import ru.dbotthepony.mc.otm.item.exopack.ExopackSlotUpgradeItem
import ru.dbotthepony.mc.otm.item.exopack.ExopackUpgradeItem
@ -84,7 +84,7 @@ object MItems {
}
val ENERGY_CABLES: Map<CablesConfig.E, BlockItem> = SupplierMap(CablesConfig.E.entries.map { conf ->
conf to registry.register("${conf.name.lowercase()}_energy_cable") { BlockItem(MBlocks.ENERGY_CABLES[conf]!!, DEFAULT_PROPERTIES) }
conf to registry.register("${conf.name.lowercase()}_energy_cable") { EnergyCableItem(conf, DEFAULT_PROPERTIES) }
})
val ANDROID_STATION = register(MNames.ANDROID_STATION, MBlocks.ANDROID_STATION)
@ -323,7 +323,7 @@ object MItems {
val ESSENCE_DRIVE: EssenceCapsuleItem by registry.register("essence_drive") { EssenceCapsuleItem(true) }
val FLUID_CAPSULE: FluidCapsuleItem by registry.register("fluid_capsule") { FluidCapsuleItem(ItemsConfig::FLUID_CAPSULE_CAPACITY) }
val FLUID_TANK: FluidTankItem by registry.register(MNames.FLUID_TANK) { FluidTankItem(MBlocks.FLUID_TANK, Item.Properties().stacksTo(1), ItemsConfig::FLUID_TANK_CAPACITY) }
val FLUID_TANK: FluidTankItem by registry.register(MNames.FLUID_TANK) { FluidTankItem(MBlocks.FLUID_TANK, Properties().stacksTo(1), ItemsConfig::FLUID_TANK_CAPACITY) }
val LIQUID_XP_BUCKET: BucketItem by registry.register("liquid_xp_bucket") { BucketItem(MFluids.LIQUID_XP, Item.Properties().stacksTo(1).rarity(Rarity.UNCOMMON)) }
val TRITANIUM_COMPONENT: SimpleTier = SimpleTier(