Skip to content
Draft
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 1 addition & 1 deletion build.gradle.kts
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
@Suppress("DSL_SCOPE_VIOLATION")
plugins {
id("site.siredvin.root") version "0.3.6"
id("site.siredvin.root") version "0.3.8"
}

subprojectShaking {
Expand Down
2 changes: 1 addition & 1 deletion gradle.properties
Original file line number Diff line number Diff line change
Expand Up @@ -3,7 +3,7 @@ org.gradle.jvmargs = -Xmx4G
org.gradle.warning.mode = all
minecraftVersion = 1.19.4
# Mod Properties
modVersion = 0.6.3-1
modVersion = 0.6.3-2
mavenGroup = site.siredvin
modBaseName = turtlematic
archivesBaseName = turtlematic
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -7,14 +7,16 @@ enum class AutomataCoreTier(
private val defaultInteractionRadius: Int,
private val defaultMaxFuelConsumptionRate: Int,
private val defaultCooldownReduceFactor: Double,
private val defaultStorageScalingFactor: Double,
private val _traits: Set<ResourceLocation> = emptySet(),
) : IAutomataCoreTier {
TIER1(2, 2, 1.0),
TIER2(4, 3, 1.0),
TIER1(2, 2, 1.0, 1.0),
TIER2(4, 3, 1.0, 2.0),
TIER3(
8,
4,
0.8,
4.0,
setOf(
AutomataCoreTraits.DURABILITY_REFUND_CHANCE,
AutomataCoreTraits.APPRENTICE,
Expand All @@ -24,6 +26,7 @@ enum class AutomataCoreTier(
16,
6,
0.5,
8.0,
setOf(
AutomataCoreTraits.DURABILITY_REFUND,
AutomataCoreTraits.STARBOUND_REGENERATION,
Expand All @@ -35,6 +38,7 @@ enum class AutomataCoreTier(
Int.MAX_VALUE,
Int.MAX_VALUE,
0.0,
16.0,
setOf(
AutomataCoreTraits.DURABILITY_REFUND,
AutomataCoreTraits.FUEL_CONSUMPTION_DISABLED,
Expand All @@ -48,6 +52,7 @@ enum class AutomataCoreTier(
private var _interactionRadius: ForgeConfigSpec.IntValue? = null
private var _maxFuelConsumptionRate: ForgeConfigSpec.IntValue? = null
private var _cooldownReduceFactor: ForgeConfigSpec.DoubleValue? = null
private var _storageScalingFactor: ForgeConfigSpec.DoubleValue? = null

override val interactionRadius: Int
get() = _interactionRadius?.get() ?: defaultInteractionRadius
Expand All @@ -58,6 +63,9 @@ enum class AutomataCoreTier(
override val cooldownReduceFactor: Double
get() = _cooldownReduceFactor?.get() ?: defaultCooldownReduceFactor

override val storageScaleFactor: Double
get() = _storageScalingFactor?.get() ?: defaultStorageScalingFactor

override val traits: Set<ResourceLocation>
get() = _traits

Expand All @@ -83,5 +91,11 @@ enum class AutomataCoreTier(
0.0,
1.0,
)
_storageScalingFactor = builder.defineInRange(
settingsName() + "StorageScalingFactory",
defaultStorageScalingFactor,
0.0,
1000.0,
)
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -8,6 +8,7 @@ import kotlin.random.Random
interface IAutomataCoreTier : IConfigHandler {
val interactionRadius: Int
val maxFuelConsumptionRate: Int
val storageScaleFactor: Double

/**
* This is number, that cooldown will be multiply at
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -48,8 +48,8 @@ object TurtlematicConfig : IOperationAbilityConfig {
get() = ConfigHolder.COMMON_CONFIG.ENABLE_END_AUTOMATA_CORE.get()
val enableHusbandryAutomataCore: Boolean
get() = ConfigHolder.COMMON_CONFIG.ENABLE_HUSBANDRY_AUTOMATA_CORE.get()
val enableMercantileAutomataCore: Boolean
get() = ConfigHolder.COMMON_CONFIG.ENABLE_MERCANTILE_AUTOMATA_CORE.get()
val enableFluidyAutomataCore: Boolean
get() = ConfigHolder.COMMON_CONFIG.ENABLE_FLUIDY_AUTOMATA_CORE.get()
val enableEnormousAutomata: Boolean
get() = ConfigHolder.COMMON_CONFIG.ENABLE_ENORMOUS_AUTOMATA.get()

Expand All @@ -65,6 +65,8 @@ object TurtlematicConfig : IOperationAbilityConfig {

val enableMasonAutomataCore: Boolean
get() = ConfigHolder.COMMON_CONFIG.ENABLE_MASON_AUTOMATA_CORE.get()
val enableMercantileAutomataCore: Boolean
get() = ConfigHolder.COMMON_CONFIG.ENABLE_MERCANTILE_AUTOMATA_CORE.get()

// automata cores configuration
val endAutomataCoreWarpPointLimit: Int
Expand All @@ -82,6 +84,12 @@ object TurtlematicConfig : IOperationAbilityConfig {
val creativeHusbandryAutomataGrownPeriod: Int
get() = ConfigHolder.COMMON_CONFIG.CREATIVE_HUSBANDRY_AUTOMATA_GROWN_PERIOD.get()

val fluidyAutomataBaseTankCount: Int
get() = ConfigHolder.COMMON_CONFIG.FLUIDY_AUTOMATA_BASE_TANK_COUNT.get()

val fluidyAutomataBaseTankCapacity: Int
get() = ConfigHolder.COMMON_CONFIG.FLUIDY_AUTOMATA_BASE_TANK_CAPACITY.get()

val durabilityRestoreChance: Double
get() = ConfigHolder.COMMON_CONFIG.DURABILITY_RESTORE_CHANCE.get()

Expand Down Expand Up @@ -119,14 +127,15 @@ object TurtlematicConfig : IOperationAbilityConfig {
val ENABLE_AUTOMATA_CORE: ForgeConfigSpec.BooleanValue
val ENABLE_END_AUTOMATA_CORE: ForgeConfigSpec.BooleanValue
val ENABLE_HUSBANDRY_AUTOMATA_CORE: ForgeConfigSpec.BooleanValue
val ENABLE_MERCANTILE_AUTOMATA_CORE: ForgeConfigSpec.BooleanValue
val ENABLE_FLUIDY_AUTOMATA_CORE: ForgeConfigSpec.BooleanValue
val ENABLE_ENORMOUS_AUTOMATA: ForgeConfigSpec.BooleanValue

// Forged automata core
val ENABLE_BREWING_AUTOMATA_CORE: ForgeConfigSpec.BooleanValue
val ENABLE_SMITHING_AUTOMATA_CORE: ForgeConfigSpec.BooleanValue
val ENABLE_ENCHANTING_AUTOMATA_CORE: ForgeConfigSpec.BooleanValue
val ENABLE_MASON_AUTOMATA_CORE: ForgeConfigSpec.BooleanValue
val ENABLE_MERCANTILE_AUTOMATA_CORE: ForgeConfigSpec.BooleanValue

val STARBOUND_AUTOMATA_FUEL_GENERATION_CHANCE: ForgeConfigSpec.DoubleValue
val STARBOUND_AUTOMATA_FUEL_GENERATION_AMOUNT: ForgeConfigSpec.IntValue
Expand All @@ -135,6 +144,8 @@ object TurtlematicConfig : IOperationAbilityConfig {
val NETHERITE_HUSBANDRY_AUTOMATA_GROWN_PERIOD: ForgeConfigSpec.IntValue
val STARBOUND_HUSBANDRY_AUTOMATA_GROWN_PERIOD: ForgeConfigSpec.IntValue
val CREATIVE_HUSBANDRY_AUTOMATA_GROWN_PERIOD: ForgeConfigSpec.IntValue
val FLUIDY_AUTOMATA_BASE_TANK_COUNT: ForgeConfigSpec.IntValue
val FLUIDY_AUTOMATA_BASE_TANK_CAPACITY: ForgeConfigSpec.IntValue
val DURABILITY_RESTORE_CHANCE: ForgeConfigSpec.DoubleValue
val BREWING_XP_REWARD: ForgeConfigSpec.DoubleValue
val ENCHANTING_WIPE_CHANGE: ForgeConfigSpec.DoubleValue
Expand Down Expand Up @@ -172,13 +183,14 @@ object TurtlematicConfig : IOperationAbilityConfig {
ENABLE_AUTOMATA_CORE = builder.define("enableWeakAutomataCore", true)
ENABLE_END_AUTOMATA_CORE = builder.define("enableEndAutomataCore", true)
ENABLE_HUSBANDRY_AUTOMATA_CORE = builder.define("enableHusbandryAutomataCore", true)
ENABLE_MERCANTILE_AUTOMATA_CORE = builder.define("enableMercantileAutomataCore", true)
ENABLE_FLUIDY_AUTOMATA_CORE = builder.define("enableFluidyAutomataCore", true)
ENABLE_ENORMOUS_AUTOMATA = builder.define("enableEnormousAutomata", true)

ENABLE_BREWING_AUTOMATA_CORE = builder.define("enableBrewingAutomataCore", true)
ENABLE_SMITHING_AUTOMATA_CORE = builder.define("enableSmithingAutomataCore", true)
ENABLE_ENCHANTING_AUTOMATA_CORE = builder.define("enableEnchantingAutomataCore", true)
ENABLE_MASON_AUTOMATA_CORE = builder.define("enableMasonAutomataCore", true)
ENABLE_MERCANTILE_AUTOMATA_CORE = builder.define("enableMercantileAutomataCore", true)

END_AUTOMATA_CORE_WARP_POINT_LIMIT = builder.comment("Defines max warp point stored in warp core. Mostly need to not allow NBT overflow error")
.defineInRange("endAutomataCoreWarpPointLimit", 64, 1, Int.MAX_VALUE)
Expand All @@ -190,6 +202,10 @@ object TurtlematicConfig : IOperationAbilityConfig {
.defineInRange("starboundHusbandryAutomataGrownPeriod", 2, 1, Int.MAX_VALUE)
CREATIVE_HUSBANDRY_AUTOMATA_GROWN_PERIOD = builder.comment("Amount of ticks that separate single random tick for all of surrounding crops for creative husbandry automata")
.defineInRange("creativeHusbandryAutomataGrownPeriod", 40, 1, Int.MAX_VALUE)
FLUIDY_AUTOMATA_BASE_TANK_COUNT = builder.comment("Defines base fluidy automata tank count")
.defineInRange("fluidyAutomataBaseTankCount", 1, 1, 16)
FLUIDY_AUTOMATA_BASE_TANK_CAPACITY = builder.comment("Defines base fluidy automata tank capacity in forge buckets")
.defineInRange("fluidyAutomataBaseTankCapacity", 4, 1, Int.MAX_VALUE)
DURABILITY_RESTORE_CHANCE = builder.comment("Defined chance to not loose item durability for netherite cores")
.defineInRange("durabilityRestoreChance", 0.1, 0.0, 1.0)
STARBOUND_AUTOMATA_FUEL_GENERATION_CHANCE = builder.comment("Defines chance for starbound automata to regenerate fuel points")
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -64,16 +64,13 @@ object SoulHarvestRecipeRegistry {
),
Items.HUSBANDRY_AUTOMATA_CORE.get(),
)
val mercantileSoulRecord =
SoulHarvestRecipe(
listOf(
SimpleSoulHarvestIngredient(EntityType.WANDERING_TRADER, 1),
),
Items.MERCANTILE_AUTOMATA_CORE.get(),
)
val fluidySoulRecipe = SoulHarvestRecipe(
listOf(SimpleSoulHarvestIngredient(EntityType.SQUID, 4)),
Items.FLUIDY_AUTOMATA_CORE.get(),
)
addRecipe(Items.AUTOMATA_CORE.get(), endSoulRecord)
addRecipe(Items.AUTOMATA_CORE.get(), husbandrySoulRecord)
addRecipe(Items.FORGED_AUTOMATA_CORE.get(), mercantileSoulRecord)
addRecipe(Items.AUTOMATA_CORE.get(), fluidySoulRecipe)
}

fun injectForgedAutomataCoreRecipes() {
Expand All @@ -89,9 +86,17 @@ object SoulHarvestRecipeRegistry {
listOf(VillagerSoulHarvestIngredient(VillagerProfession.TOOLSMITH)),
Items.SMITHING_AUTOMATA_CORE.get(),
)
val mercantileSoulRecord =
SoulHarvestRecipe(
listOf(
SimpleSoulHarvestIngredient(EntityType.WANDERING_TRADER, 1),
),
Items.MERCANTILE_AUTOMATA_CORE.get(),
)

addRecipe(Items.FORGED_AUTOMATA_CORE.get(), brewingAutomataRecord)
addRecipe(Items.FORGED_AUTOMATA_CORE.get(), enchantingAutomataRecord)
addRecipe(Items.FORGED_AUTOMATA_CORE.get(), smithingAutomataRecord)
addRecipe(Items.FORGED_AUTOMATA_CORE.get(), mercantileSoulRecord)
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -25,24 +25,36 @@ object Items {
val END_AUTOMATA_CORE = TurtlematicPlatform.registerItem("end_automata_core") {
RecipeAutomataCore(AutomataCoreTier.TIER2, TurtlematicConfig::enableEndAutomataCore)
}
val FLUIDY_AUTOMATA_CORE = TurtlematicPlatform.registerItem("fluidy_automata_core") {
RecipeAutomataCore(AutomataCoreTier.TIER2, TurtlematicConfig::enableFluidyAutomataCore)
}
val NETHERITE_HUSBANDRY_AUTOMATA_CORE = TurtlematicPlatform.registerItem("netherite_husbandry_automata_core") {
BaseAutomataCore(AutomataCoreTier.TIER3, TurtlematicConfig::enableHusbandryAutomataCore, itemUsageTooltip, husbandryTooltip)
}
val NETHERITE_END_AUTOMATA_CORE = TurtlematicPlatform.registerItem("netherite_end_automata_core") {
BaseAutomataCore(AutomataCoreTier.TIER3, TurtlematicConfig::enableEndAutomataCore, itemUsageTooltip)
}
val NETHERITE_FLUIDY_AUTOMATA_CORE = TurtlematicPlatform.registerItem("netherite_fluidy_automata_core") {
BaseAutomataCore(AutomataCoreTier.TIER3, TurtlematicConfig::enableFluidyAutomataCore, itemUsageTooltip)
}
val STARBOUND_HUSBANDRY_AUTOMATA_CORE = TurtlematicPlatform.registerItem("starbound_husbandry_automata_core") {
BaseAutomataCore(AutomataCoreTier.TIER4, TurtlematicConfig::enableHusbandryAutomataCore, itemUsageTooltip, husbandryTooltip)
}
val STARBOUND_END_AUTOMATA_CORE = TurtlematicPlatform.registerItem("starbound_end_automata_core") {
BaseAutomataCore(AutomataCoreTier.TIER4, TurtlematicConfig::enableEndAutomataCore, itemUsageTooltip)
}
val STARBOUND_FLUIDY_AUTOMATA_CORE = TurtlematicPlatform.registerItem("starbound_fluidy_automata_core") {
BaseAutomataCore(AutomataCoreTier.TIER4, TurtlematicConfig::enableFluidyAutomataCore, itemUsageTooltip)
}
val CREATIVE_HUSBANDRY_AUTOMATA_CORE = TurtlematicPlatform.registerItem("creative_husbandry_automata_core") {
BaseAutomataCore(AutomataCoreTier.CREATIVE, TurtlematicConfig::enableHusbandryAutomataCore, itemUsageTooltip, husbandryTooltip)
}
val CREATIVE_END_AUTOMATA_CORE = TurtlematicPlatform.registerItem("creative_end_automata_core") {
BaseAutomataCore(AutomataCoreTier.CREATIVE, TurtlematicConfig::enableEndAutomataCore, itemUsageTooltip)
}
val CREATIVE_FLUIDY_AUTOMATA_CORE = TurtlematicPlatform.registerItem("creative_fluidy_automata_core") {
BaseAutomataCore(AutomataCoreTier.CREATIVE, TurtlematicConfig::enableFluidyAutomataCore, itemUsageTooltip)
}
val ENORMOUS_AUTOMATA_CORE = TurtlematicPlatform.registerItem("enormous_automata_core") {
BaseAutomataCore(AutomataCoreTier.CREATIVE, TurtlematicConfig::enableEnormousAutomata, itemUsageTooltip)
}
Expand Down
Original file line number Diff line number Diff line change
@@ -0,0 +1,43 @@
package site.siredvin.turtlematic.computercraft.peripheral.automatas

import dan200.computercraft.api.turtle.ITurtleAccess
import dan200.computercraft.api.turtle.TurtleSide
import site.siredvin.peripheralium.computercraft.peripheral.ability.PeripheralOwnerAbility
import site.siredvin.peripheralium.computercraft.peripheral.ability.ScanningAbility
import site.siredvin.turtlematic.api.IAutomataCoreTier
import site.siredvin.turtlematic.api.PeripheralConfiguration
import site.siredvin.turtlematic.common.configuration.TurtlematicConfig
import site.siredvin.turtlematic.computercraft.operations.SphereOperation
import site.siredvin.turtlematic.computercraft.plugins.*

class FluidyAutomataCorePeripheral(
turtle: ITurtleAccess,
side: TurtleSide,
tier: IAutomataCoreTier,
) : BaseAutomataCorePeripheral(
TYPE,
turtle,
side,
tier,
) {
init {
addPlugin(AutomataLookPlugin(this))
addPlugin(AutomataInteractionPlugin(this))
peripheralOwner.attachAbility(
PeripheralOwnerAbility.SCANNING,
ScanningAbility(
peripheralOwner,
tier.interactionRadius,
).attachItemScan(SphereOperation.SCAN_ITEMS).attachBlockScan(
SphereOperation.SCAN_BLOCKS,
),
)
}

companion object : PeripheralConfiguration {
override val TYPE = "fluidyAutomata"
}

override val isEnabled: Boolean
get() = TurtlematicConfig.enableFluidyAutomataCore
}
Original file line number Diff line number Diff line change
Expand Up @@ -24,7 +24,6 @@ import site.siredvin.peripheralium.util.representation.animalData
import site.siredvin.peripheralium.util.representation.beeNestAnalyze
import site.siredvin.peripheralium.util.representation.cropAge
import site.siredvin.peripheralium.util.representation.honeyLevel
import site.siredvin.peripheralium.util.world.FakePlayerProxy
import site.siredvin.turtlematic.api.AutomataCoreTraits
import site.siredvin.turtlematic.api.IAutomataCoreTier
import site.siredvin.turtlematic.api.PeripheralConfiguration
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -32,7 +32,6 @@ import site.siredvin.peripheralium.util.LimitedInventory
import site.siredvin.peripheralium.util.Pair
import site.siredvin.peripheralium.util.representation.LuaInterpretation
import site.siredvin.peripheralium.util.representation.stateProperties
import site.siredvin.peripheralium.util.world.FakePlayerProxy
import site.siredvin.peripheralium.xplat.PeripheraliumPlatform
import site.siredvin.peripheralium.xplat.XplatRegistries
import site.siredvin.turtlematic.api.IAutomataCoreTier
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -24,7 +24,6 @@ import site.siredvin.peripheralium.api.peripheral.IPeripheralOperation
import site.siredvin.peripheralium.api.storage.ContainerUtils
import site.siredvin.peripheralium.computercraft.peripheral.ability.PeripheralOwnerAbility
import site.siredvin.peripheralium.util.*
import site.siredvin.peripheralium.util.world.FakePlayerProxy
import site.siredvin.peripheralium.xplat.PeripheraliumPlatform
import site.siredvin.turtlematic.api.IAutomataCoreTier
import site.siredvin.turtlematic.api.PeripheralConfiguration
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -11,7 +11,6 @@ import net.minecraft.world.entity.player.Player
import net.minecraft.world.phys.EntityHitResult
import site.siredvin.peripheralium.computercraft.peripheral.OwnedPeripheral
import site.siredvin.peripheralium.computercraft.peripheral.owner.TurtlePeripheralOwner
import site.siredvin.peripheralium.util.world.FakePlayerProxy
import site.siredvin.turtlematic.api.ISoulFeedableItem
import site.siredvin.turtlematic.api.PeripheralConfiguration

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -9,7 +9,6 @@ import net.minecraft.world.entity.Mob
import net.minecraft.world.phys.EntityHitResult
import net.minecraft.world.phys.HitResult
import site.siredvin.peripheralium.api.datatypes.VerticalDirection
import site.siredvin.peripheralium.util.world.FakePlayerProxy
import site.siredvin.turtlematic.computercraft.peripheral.automatas.BaseAutomataCorePeripheral
import java.util.function.Predicate

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -20,7 +20,6 @@ import site.siredvin.peripheralium.api.peripheral.IPeripheralCheck
import site.siredvin.peripheralium.api.peripheral.IPeripheralFunction
import site.siredvin.peripheralium.api.peripheral.IPeripheralOperation
import site.siredvin.peripheralium.util.representation.LuaRepresentation
import site.siredvin.peripheralium.util.world.FakePlayerProxy
import site.siredvin.peripheralium.xplat.PeripheraliumPlatform
import site.siredvin.peripheralium.xplat.XplatRegistries
import site.siredvin.turtlematic.computercraft.operations.SingleOperation
Expand Down
Original file line number Diff line number Diff line change
@@ -0,0 +1,23 @@
package site.siredvin.turtlematic.computercraft.plugins

import dan200.computercraft.api.lua.LuaFunction
import dan200.computercraft.api.lua.MethodResult
import site.siredvin.turtlematic.computercraft.peripheral.automatas.BaseAutomataCorePeripheral

class AutomataFluidStoragePlugin(private val tankCount: Int, private val tankCapacity: Int, automataCore: BaseAutomataCorePeripheral) : AutomataCorePlugin(automataCore) {

@LuaFunction(mainThread = true)
fun storeFluid(): MethodResult {
return MethodResult.of()
}

@LuaFunction(mainThread = true)
fun placeFluid(destination: String, name: String): MethodResult {
return MethodResult.of()
}

@LuaFunction(mainThread = true)
fun getStored(): MethodResult {
return MethodResult.of()
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -5,13 +5,11 @@ import dan200.computercraft.api.lua.LuaException
import dan200.computercraft.api.lua.LuaFunction
import dan200.computercraft.api.lua.MethodResult
import net.minecraft.world.entity.Entity
import net.minecraft.world.entity.Pose
import net.minecraft.world.item.ItemStack
import site.siredvin.peripheralium.api.datatypes.InteractionMode
import site.siredvin.peripheralium.api.datatypes.VerticalDirection
import site.siredvin.peripheralium.api.peripheral.IPeripheralOperation
import site.siredvin.peripheralium.computercraft.peripheral.owner.TurtlePeripheralOwner
import site.siredvin.peripheralium.util.world.FakePlayerProxy
import site.siredvin.turtlematic.computercraft.operations.SingleOperation
import site.siredvin.turtlematic.computercraft.peripheral.automatas.BaseAutomataCorePeripheral
import java.util.function.Predicate
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -12,7 +12,6 @@ import net.minecraft.world.phys.HitResult
import site.siredvin.peripheralium.api.datatypes.InteractionMode
import site.siredvin.peripheralium.api.datatypes.VerticalDirection
import site.siredvin.peripheralium.util.representation.LuaRepresentation
import site.siredvin.peripheralium.util.world.FakePlayerProxy
import site.siredvin.turtlematic.computercraft.peripheral.automatas.BaseAutomataCorePeripheral
import java.util.function.BiConsumer

Expand Down
Loading