Compare commits
4 Commits
4ef66dff7c
...
b0bf4adb0f
Author | SHA1 | Date | |
---|---|---|---|
b0bf4adb0f | |||
78896089ec | |||
e53a7f65d8 | |||
8c4e2b1ea6 |
@ -2,6 +2,7 @@ package ru.dbotthepony.mc.otm.datagen
|
||||
|
||||
import net.minecraft.data.worldgen.BootstrapContext
|
||||
import net.minecraft.tags.DamageTypeTags
|
||||
import net.minecraft.world.damagesource.DamageEffects
|
||||
import net.minecraft.world.damagesource.DamageScaling
|
||||
import net.minecraft.world.damagesource.DamageType
|
||||
import ru.dbotthepony.mc.otm.datagen.tags.TagsProvider
|
||||
@ -20,6 +21,7 @@ fun registerDamageTypes(context: BootstrapContext<DamageType>) {
|
||||
context.register(MDamageTypes.EXPLOSIVE_HAMMER, DamageType("otm_explosive_hammer", DamageScaling.NEVER, 0.1f))
|
||||
context.register(MDamageTypes.HAMMER_NAIL, DamageType("otm_hammer_nail", DamageScaling.NEVER, 0.1f))
|
||||
context.register(MDamageTypes.ANDROID_DISCHARGE, DamageType("otm_android_discharge", DamageScaling.NEVER, 4.0f))
|
||||
context.register(MDamageTypes.NOT_NORMAL_PILL, DamageType("otm_not_normal_pill", DamageScaling.NEVER, 0f, DamageEffects.DROWNING))
|
||||
}
|
||||
|
||||
fun registerDamageTypeTags(provider: TagsProvider.Delegate<DamageType>) {
|
||||
@ -36,6 +38,7 @@ fun registerDamageTypeTags(provider: TagsProvider.Delegate<DamageType>) {
|
||||
.add(MDamageTypes.SHOCKWAVE)
|
||||
.add(MDamageTypes.COSMIC_RAYS)
|
||||
.add(MDamageTypes.ANDROID_DISCHARGE)
|
||||
.add(MDamageTypes.NOT_NORMAL_PILL)
|
||||
|
||||
ignoreMagic
|
||||
.add(MDamageTypes.EXOPACK_PROBE)
|
||||
@ -43,9 +46,11 @@ fun registerDamageTypeTags(provider: TagsProvider.Delegate<DamageType>) {
|
||||
.add(MDamageTypes.BECOME_HUMANE)
|
||||
.add(MDamageTypes.COSMIC_RAYS)
|
||||
.add(MDamageTypes.ANDROID_DISCHARGE)
|
||||
.add(MDamageTypes.NOT_NORMAL_PILL)
|
||||
|
||||
ignoreInvl
|
||||
.add(MDamageTypes.BECOME_HUMANE)
|
||||
.add(MDamageTypes.BECOME_ANDROID)
|
||||
.add(MDamageTypes.ANDROID_DISCHARGE)
|
||||
.add(MDamageTypes.NOT_NORMAL_PILL)
|
||||
}
|
||||
|
@ -48,6 +48,7 @@ import ru.dbotthepony.mc.otm.datagen.loot.*
|
||||
import ru.dbotthepony.mc.otm.datagen.loot.LootModifiers
|
||||
import ru.dbotthepony.mc.otm.datagen.recipes.*
|
||||
import ru.dbotthepony.mc.otm.datagen.tags.TagsProvider
|
||||
import ru.dbotthepony.mc.otm.datagen.tags.addSuspiciousTags
|
||||
import ru.dbotthepony.mc.otm.datagen.tags.addTags
|
||||
import ru.dbotthepony.mc.otm.datagen.textures.ColorizedSpritesProvider
|
||||
import ru.dbotthepony.mc.otm.matter.MatterDataProvider
|
||||
@ -515,6 +516,7 @@ object DataGen {
|
||||
)) {}
|
||||
|
||||
addTags(tagsProvider)
|
||||
addSuspiciousTags(tagsProvider)
|
||||
|
||||
event.generator.addProvider(event.includeClient(), colorizedSpritesProvider)
|
||||
event.generator.addProvider(event.includeClient(), blockModelProvider)
|
||||
@ -575,6 +577,7 @@ object DataGen {
|
||||
addOreSmeltingRecipes(consumer)
|
||||
addPainterRecipes(consumer)
|
||||
addMatterEntanglerRecipes(consumer)
|
||||
addSuspiciousRecipes(consumer)
|
||||
}
|
||||
|
||||
addPlatePressRecipes(recipeProvider)
|
||||
|
@ -538,10 +538,10 @@ fun addAdvancements(serializer: Consumer<AdvancementHolder>, lang: MatteryLangua
|
||||
},
|
||||
)
|
||||
.requirements(Strategy.OR)
|
||||
.addCriterion("pill1", criterion(MItems.PILL_ANDROID))
|
||||
.addCriterion("pill2", criterion(MItems.PILL_HEAL))
|
||||
.addCriterion("pill3", criterion(MItems.PILL_HUMANE))
|
||||
.addCriterion("pill4", criterion(MItems.PILL_OBLIVION))
|
||||
.also {
|
||||
for ((i, item) in MItems.PILLS.withIndex())
|
||||
it.addCriterion("pill$i", criterion(item))
|
||||
}
|
||||
.save(serializer, modLocation("regular/pill"))
|
||||
|
||||
AdvancementBuilder()
|
||||
@ -559,10 +559,10 @@ fun addAdvancements(serializer: Consumer<AdvancementHolder>, lang: MatteryLangua
|
||||
)
|
||||
.rewards(AdvancementRewards.Builder.experience(200))
|
||||
.requirements(Strategy.AND)
|
||||
.addCriterion("pill1", criterion(MItems.PILL_ANDROID))
|
||||
.addCriterion("pill2", criterion(MItems.PILL_HEAL))
|
||||
.addCriterion("pill3", criterion(MItems.PILL_HUMANE))
|
||||
.addCriterion("pill4", criterion(MItems.PILL_OBLIVION))
|
||||
.also {
|
||||
for ((i, item) in MItems.PILLS.withIndex())
|
||||
it.addCriterion("pill$i", criterion(item))
|
||||
}
|
||||
.save(serializer, modLocation("regular/all_pills"))
|
||||
|
||||
val essenceCapsule = AdvancementBuilder()
|
||||
|
@ -222,4 +222,6 @@ fun addItemModels(provider: MatteryItemModelProvider) {
|
||||
for ((color, item) in MItems.CARGO_CRATE_MINECARTS) {
|
||||
provider.generated(item)
|
||||
}
|
||||
|
||||
MItems.SUSPICIOUS_FOODS.ITEMS.forEach { provider.inherit(it, it.mimicking()) }
|
||||
}
|
||||
|
@ -32,6 +32,10 @@ class MatteryItemModelProvider(event: GatherDataEvent) : ItemModelProvider(event
|
||||
fun block(item: Item) = exec { withExistingParent(item.registryName!!.path, modLocation("block/${item.registryName!!.path}")) }
|
||||
fun block(item: Item, path: String) = exec { withExistingParent(item.registryName!!.path, modLocation("block/$path")) }
|
||||
|
||||
fun inherit(item: Item, parent: Item) {
|
||||
exec { withExistingParent(item.registryName!!.path, parent.registryName!!) }
|
||||
}
|
||||
|
||||
fun coloredWithBaseBlock(items: Map<DyeColor?, Item>, path: String) {
|
||||
for (color in DyeColor.entries) {
|
||||
block(items[color]!!, path + "_${color.name.lowercase()}")
|
||||
|
@ -362,6 +362,10 @@ private fun misc(provider: MatteryLanguageProvider) {
|
||||
misc("pill.heal", "Instantly restores 4 hearts upon ingestion, provides 2 min Absorption V and 8 seconds Regeneration III.")
|
||||
misc("pill.heal_android", "Does nothing to androids.")
|
||||
|
||||
misc("pill.not_normal", "Instantly kills fleshy creatures upon ingestion")
|
||||
misc("pill.suspicious_food.desc", "On closer inspection, this food doesn't seem right...")
|
||||
misc("pill.suspicious_food", "Suspicious %s")
|
||||
|
||||
misc("pill.message", "Nothing happened, but you feel... exhausted?.. Maybe get rest.")
|
||||
misc("pill.message_finish", "§kONE OF US ONE OF US ONE OF US")
|
||||
|
||||
@ -451,6 +455,8 @@ private fun death(provider: MatteryLanguageProvider) {
|
||||
death("otm_emp", "%1\$s electronics' fried")
|
||||
death("otm_cosmic_rays", "%1\$s electronics' got scrambled by cosmic radiation")
|
||||
death("otm_android_discharge", "%1\$s ran out of power")
|
||||
death("otm_not_normal_pill", "%1\$s took meds")
|
||||
death("otm_not_normal_pill.item", "%1\$s took %2\$s")
|
||||
|
||||
death("otm_become_android.player", "%1\$s lost their humanity whilst %2\$s tried to reason with them")
|
||||
death("otm_become_humane.player", "%1\$s gained their humanity whilst %2\$s tried to reason with them")
|
||||
@ -757,6 +763,7 @@ private fun items(provider: MatteryLanguageProvider) {
|
||||
add(MItems.PILL_HUMANE, "Humane Pill")
|
||||
add(MItems.PILL_OBLIVION, "Android Factory Reset Pill")
|
||||
add(MItems.PILL_HEAL, "Medical Pill")
|
||||
add(MItems.PILL_NOT_NORMAL, "Not/Normal Pill")
|
||||
|
||||
add(MItems.MATTER_CAPACITOR_PARTS, "Matter Capacitor Parts")
|
||||
add(MItems.MATTER_CAPACITOR_BASIC, "Basic Matter Capacitor")
|
||||
|
@ -368,6 +368,10 @@ private fun misc(provider: MatteryLanguageProvider) {
|
||||
misc("pill.heal", "Мгновенно восполняет 4 сердца при употреблении, а так же даёт на 2 минуты поглощение V и на 8 секунд регенерацию III.")
|
||||
misc("pill.heal_android", "Не действует на андроидов.")
|
||||
|
||||
misc("pill.not_normal", "Мгновенно убивает существ из плоти")
|
||||
misc("pill.suspicious_food.desc", "При более тщательном рассмотрении данная пища выглядит подозрительно...")
|
||||
misc("pill.suspicious_food", "Подозрительный %s")
|
||||
|
||||
misc("pill.message", "Ничего не произошло, но вы чувствуете... себя уставшим?.. Возможно надо отдохнуть.")
|
||||
misc("pill.message_finish", "§kОДИН ИЗ НАС ОДИН ИЗ НАС ОДИН ИЗ НАС ОДИН ИЗ НАС ОДИН ИЗ НАС")
|
||||
|
||||
@ -452,6 +456,8 @@ private fun death(provider: MatteryLanguageProvider) {
|
||||
death("otm_emp", "Электроника %1\$s перегорела")
|
||||
death("otm_cosmic_rays", "Электроника %1\$s была ошеломлена космическим излучением")
|
||||
death("otm_android_discharge", "В аккумуляторах %1\$s закончился заряд")
|
||||
death("otm_not_normal_pill", "%1\$s принял таблетки")
|
||||
death("otm_not_normal_pill.item", "%1\$s принял %2\$s")
|
||||
|
||||
death("otm_become_android.player", "%1\$s потерял свою человечность, когда %2\$s пытался образумить их")
|
||||
death("otm_become_humane.player", "%1\$s восстановил свою человечность, когда %2\$s пытался образумить их")
|
||||
@ -758,6 +764,7 @@ private fun items(provider: MatteryLanguageProvider) {
|
||||
add(MItems.PILL_HUMANE, "Пилюля человечности")
|
||||
add(MItems.PILL_OBLIVION, "Пилюля сброса андроида до заводских настроек")
|
||||
add(MItems.PILL_HEAL, "Медицинская пилюля")
|
||||
add(MItems.PILL_NOT_NORMAL, "Не/Нормальная пилюля")
|
||||
|
||||
add(MItems.MATTER_CAPACITOR_PARTS, "Части накопителя материи")
|
||||
add(MItems.MATTER_CAPACITOR_BASIC, "Простой накопитель материи")
|
||||
|
@ -129,6 +129,7 @@ fun addLootModifiers(it: LootModifiers) {
|
||||
ItemStack(MItems.PILL_ANDROID, 1) to 0.1,
|
||||
ItemStack(MItems.PILL_HEAL, 2) to 0.5,
|
||||
ItemStack(MItems.PILL_HEAL, 1) to 0.75,
|
||||
ItemStack(MItems.PILL_NOT_NORMAL, 3) to 0.25,
|
||||
))
|
||||
|
||||
it.add("mineshaft_pill", PlainLootAppender(
|
||||
@ -136,6 +137,7 @@ fun addLootModifiers(it: LootModifiers) {
|
||||
ItemStack(MItems.PILL_ANDROID, 1) to 0.04,
|
||||
ItemStack(MItems.PILL_HEAL, 2) to 0.1,
|
||||
ItemStack(MItems.PILL_HEAL, 1) to 0.4,
|
||||
ItemStack(MItems.PILL_NOT_NORMAL, 3) to 0.25,
|
||||
))
|
||||
|
||||
it.add("mineshaft_nutrient_paste", PlainLootAppender(
|
||||
@ -149,11 +151,13 @@ fun addLootModifiers(it: LootModifiers) {
|
||||
arrayOf(LootTableIdCondition(BuiltInLootTables.DESERT_PYRAMID)),
|
||||
ItemStack(MItems.PILL_ANDROID, 1) to 0.15,
|
||||
ItemStack(MItems.PILL_HEAL, 1) to 0.3,
|
||||
ItemStack(MItems.PILL_NOT_NORMAL, 3) to 0.25,
|
||||
))
|
||||
|
||||
it.add("jungle_temple_pill", PlainLootAppender(
|
||||
arrayOf(LootTableIdCondition(BuiltInLootTables.JUNGLE_TEMPLE)),
|
||||
ItemStack(MItems.PILL_ANDROID, 1) to 0.5
|
||||
ItemStack(MItems.PILL_ANDROID, 1) to 0.5,
|
||||
ItemStack(MItems.PILL_NOT_NORMAL, 8) to 0.2,
|
||||
))
|
||||
|
||||
it.add("end_city_modifications", PlainLootAppender(
|
||||
@ -161,7 +165,7 @@ fun addLootModifiers(it: LootModifiers) {
|
||||
ItemStack(MItems.PILL_ANDROID, 1) to 0.15,
|
||||
ItemStack(MItems.PILL_HUMANE, 1) to 0.3,
|
||||
ItemStack(MItems.PILL_OBLIVION, 1) to 0.5,
|
||||
ItemStack(MItems.ZPM_BATTERY, 1) to 0.005,
|
||||
ItemStack(MItems.ZPM_BATTERY, 1) to 0.01,
|
||||
))
|
||||
|
||||
it.add("shipwreck_supply_pill", PlainLootAppender(
|
||||
@ -171,6 +175,7 @@ fun addLootModifiers(it: LootModifiers) {
|
||||
ItemStack(MItems.PILL_HEAL, 1) to 0.6,
|
||||
ItemStack(MItems.PILL_HEAL, 1) to 0.6,
|
||||
ItemStack(MItems.PILL_HEAL, 1) to 0.6,
|
||||
ItemStack(MItems.PILL_NOT_NORMAL, 4) to 0.25,
|
||||
))
|
||||
|
||||
it.add("shipwreck_supply_nutrient_paste", PlainLootAppender(
|
||||
|
@ -0,0 +1,54 @@
|
||||
package ru.dbotthepony.mc.otm.datagen.recipes
|
||||
|
||||
import net.minecraft.data.recipes.RecipeCategory
|
||||
import net.minecraft.data.recipes.RecipeOutput
|
||||
import net.minecraft.data.recipes.ShapelessRecipeBuilder
|
||||
import net.minecraft.data.recipes.SimpleCookingRecipeBuilder
|
||||
import net.minecraft.world.item.ItemStack
|
||||
import net.minecraft.world.item.crafting.Ingredient
|
||||
import net.neoforged.neoforge.common.Tags
|
||||
import ru.dbotthepony.mc.otm.core.registryName
|
||||
import ru.dbotthepony.mc.otm.datagen.modLocation
|
||||
import ru.dbotthepony.mc.otm.registry.MItems
|
||||
|
||||
fun addSuspiciousRecipes(consumer: RecipeOutput) {
|
||||
for (item in MItems.SUSPICIOUS_FOODS.ITEMS) {
|
||||
if (item.defaultMaxStackSize == 1) {
|
||||
ShapelessRecipeBuilder.shapeless(RecipeCategory.FOOD, ItemStack(item))
|
||||
.requires(item.mimicking())
|
||||
.unlockedBy(MItems.PILL_NOT_NORMAL)
|
||||
.requires(MItems.PILL_NOT_NORMAL)
|
||||
.save(consumer)
|
||||
} else {
|
||||
ShapelessRecipeBuilder.shapeless(RecipeCategory.FOOD, ItemStack(item, 8))
|
||||
.requires(item.mimicking(), 8)
|
||||
.unlockedBy(MItems.PILL_NOT_NORMAL)
|
||||
.requires(MItems.PILL_NOT_NORMAL)
|
||||
.save(consumer)
|
||||
}
|
||||
}
|
||||
|
||||
MatteryRecipe(MItems.SUSPICIOUS_FOODS.GOLDEN_CARROT, 8, RecipeCategory.FOOD)
|
||||
.row(MItems.SUSPICIOUS_FOODS.CARROT, MItems.SUSPICIOUS_FOODS.CARROT, MItems.SUSPICIOUS_FOODS.CARROT)
|
||||
.row(MItems.SUSPICIOUS_FOODS.CARROT, Tags.Items.NUGGETS_GOLD, MItems.SUSPICIOUS_FOODS.CARROT)
|
||||
.row(MItems.SUSPICIOUS_FOODS.CARROT, MItems.SUSPICIOUS_FOODS.CARROT, MItems.SUSPICIOUS_FOODS.CARROT)
|
||||
.unlockedBy(MItems.SUSPICIOUS_FOODS.CARROT)
|
||||
.build(consumer, "upgrade")
|
||||
|
||||
val cooking = listOf(
|
||||
MItems.SUSPICIOUS_FOODS.POTATO to MItems.SUSPICIOUS_FOODS.BAKED_POTATO,
|
||||
MItems.SUSPICIOUS_FOODS.BEEF to MItems.SUSPICIOUS_FOODS.COOKED_BEEF,
|
||||
MItems.SUSPICIOUS_FOODS.CHICKEN to MItems.SUSPICIOUS_FOODS.COOKED_CHICKEN,
|
||||
MItems.SUSPICIOUS_FOODS.COD to MItems.SUSPICIOUS_FOODS.COOKED_COD,
|
||||
MItems.SUSPICIOUS_FOODS.MUTTON to MItems.SUSPICIOUS_FOODS.COOKED_MUTTON,
|
||||
MItems.SUSPICIOUS_FOODS.PORKCHOP to MItems.SUSPICIOUS_FOODS.COOKED_PORKCHOP,
|
||||
MItems.SUSPICIOUS_FOODS.RABBIT to MItems.SUSPICIOUS_FOODS.COOKED_RABBIT,
|
||||
MItems.SUSPICIOUS_FOODS.SALMON to MItems.SUSPICIOUS_FOODS.COOKED_SALMON,
|
||||
)
|
||||
|
||||
for ((source, target) in cooking) {
|
||||
SimpleCookingRecipeBuilder.smelting(Ingredient.of(source), RecipeCategory.FOOD, target, 0.1f, 200).unlockedBy(source).save(consumer, modLocation("cooking_${source.registryName!!.path}"))
|
||||
SimpleCookingRecipeBuilder.smoking(Ingredient.of(source), RecipeCategory.FOOD, target, 0.1f, 100).unlockedBy(source).save(consumer, modLocation("smoking_${source.registryName!!.path}"))
|
||||
SimpleCookingRecipeBuilder.campfireCooking(Ingredient.of(source), RecipeCategory.FOOD, target, 0.1f, 600).unlockedBy(source).save(consumer, modLocation("campfire_cooking_${source.registryName!!.path}"))
|
||||
}
|
||||
}
|
@ -0,0 +1,68 @@
|
||||
package ru.dbotthepony.mc.otm.datagen.tags
|
||||
|
||||
import net.minecraft.tags.ItemTags
|
||||
import net.minecraft.world.entity.EntityType
|
||||
import net.minecraft.world.item.Items
|
||||
import ru.dbotthepony.mc.otm.registry.MItems
|
||||
|
||||
fun addSuspiciousTags(tagsProvider: TagsProvider) {
|
||||
tagsProvider.entityTypes.Appender(MItems.SUSPICIOUS_FOODS.OWNED_MEAT_CONSUMERS)
|
||||
.add(MItems.SUSPICIOUS_FOODS.MEAT_CONSUMERS)
|
||||
|
||||
tagsProvider.entityTypes.Appender(MItems.SUSPICIOUS_FOODS.OWNED_FISH_CONSUMERS)
|
||||
.add(MItems.SUSPICIOUS_FOODS.FISH_CONSUMERS)
|
||||
|
||||
tagsProvider.entityTypes.Appender(MItems.SUSPICIOUS_FOODS.OWNED_COOKIE_CONSUMERS)
|
||||
.add(MItems.SUSPICIOUS_FOODS.COOKIE_CONSUMERS)
|
||||
|
||||
tagsProvider.entityTypes.Appender(MItems.SUSPICIOUS_FOODS.OWNED_CARROT_CONSUMERS)
|
||||
.add(MItems.SUSPICIOUS_FOODS.CARROT_CONSUMERS)
|
||||
|
||||
tagsProvider.entityTypes.Appender(MItems.SUSPICIOUS_FOODS.CARROT_CONSUMERS)
|
||||
.add(EntityType.RABBIT)
|
||||
|
||||
tagsProvider.items.Appender(ItemTags.RABBIT_FOOD)
|
||||
.add(MItems.SUSPICIOUS_FOODS.CARROT)
|
||||
|
||||
tagsProvider.items.Appender(ItemTags.WOLF_FOOD)
|
||||
.add(MItems.SUSPICIOUS_FOODS.MUTTON)
|
||||
.add(MItems.SUSPICIOUS_FOODS.CHICKEN)
|
||||
.add(MItems.SUSPICIOUS_FOODS.BEEF)
|
||||
.add(MItems.SUSPICIOUS_FOODS.RABBIT)
|
||||
.add(MItems.SUSPICIOUS_FOODS.PORKCHOP)
|
||||
.add(MItems.SUSPICIOUS_FOODS.COOKED_MUTTON)
|
||||
.add(MItems.SUSPICIOUS_FOODS.COOKED_BEEF)
|
||||
.add(MItems.SUSPICIOUS_FOODS.COOKED_CHICKEN)
|
||||
.add(MItems.SUSPICIOUS_FOODS.COOKED_RABBIT)
|
||||
.add(MItems.SUSPICIOUS_FOODS.COOKED_PORKCHOP)
|
||||
.add(MItems.SUSPICIOUS_FOODS.ROTTEN_FLESH)
|
||||
|
||||
tagsProvider.entityTypes.Appender(MItems.SUSPICIOUS_FOODS.MEAT_CONSUMERS)
|
||||
.add(EntityType.WOLF)
|
||||
|
||||
tagsProvider.entityTypes.Appender(MItems.SUSPICIOUS_FOODS.FISH_CONSUMERS)
|
||||
.add(EntityType.OCELOT)
|
||||
.add(EntityType.CAT)
|
||||
|
||||
tagsProvider.entityTypes.Appender(MItems.SUSPICIOUS_FOODS.COOKIE_CONSUMERS)
|
||||
.add(EntityType.PARROT)
|
||||
|
||||
// Cats easily can eat cooked food and a lot of cats even PREFER to eat fish cooked,
|
||||
// literally begging for fish when they smell it being cooked (and ignoring it while it lays raw)
|
||||
// What mojang were thinking?
|
||||
tagsProvider.items.Appender(ItemTags.OCELOT_FOOD)
|
||||
.add(Items.COOKED_COD)
|
||||
.add(Items.COOKED_SALMON)
|
||||
.add(MItems.SUSPICIOUS_FOODS.COD)
|
||||
.add(MItems.SUSPICIOUS_FOODS.COOKED_COD)
|
||||
.add(MItems.SUSPICIOUS_FOODS.SALMON)
|
||||
.add(MItems.SUSPICIOUS_FOODS.COOKED_SALMON)
|
||||
|
||||
tagsProvider.items.Appender(ItemTags.CAT_FOOD)
|
||||
.add(Items.COOKED_COD)
|
||||
.add(Items.COOKED_SALMON)
|
||||
.add(MItems.SUSPICIOUS_FOODS.COD)
|
||||
.add(MItems.SUSPICIOUS_FOODS.COOKED_COD)
|
||||
.add(MItems.SUSPICIOUS_FOODS.SALMON)
|
||||
.add(MItems.SUSPICIOUS_FOODS.COOKED_SALMON)
|
||||
}
|
@ -152,7 +152,7 @@ class TagsProvider(private val event: GatherDataEvent) {
|
||||
val appender = tag(tag)
|
||||
|
||||
for (value in values) {
|
||||
appender.addTag(value)
|
||||
appender.addOptionalTag(value)
|
||||
}
|
||||
}
|
||||
}
|
||||
@ -178,6 +178,7 @@ class TagsProvider(private val event: GatherDataEvent) {
|
||||
val fluids = Delegate(BuiltInRegistries.FLUID)
|
||||
val fluidTypes = Delegate(NeoForgeRegistries.Keys.FLUID_TYPES)
|
||||
val mobEffects = Delegate(BuiltInRegistries.MOB_EFFECT)
|
||||
val entityTypes = Delegate(BuiltInRegistries.ENTITY_TYPE)
|
||||
val damageTypes = Delegate(Registries.DAMAGE_TYPE)
|
||||
|
||||
private val coloredItems = EnumMap<DyeColor, Delegate<Item>.Appender>(DyeColor::class.java)
|
||||
|
@ -57,6 +57,7 @@ import ru.dbotthepony.mc.otm.item.tool.ExplosiveHammerItem
|
||||
import ru.dbotthepony.mc.otm.item.armor.TritaniumArmorItem
|
||||
import ru.dbotthepony.mc.otm.item.QuantumBatteryItem
|
||||
import ru.dbotthepony.mc.otm.item.PortableCondensationDriveItem
|
||||
import ru.dbotthepony.mc.otm.item.consumables.NotNormalFood
|
||||
import ru.dbotthepony.mc.otm.item.tool.RedstoneInteractorItem
|
||||
import ru.dbotthepony.mc.otm.matter.AbstractRegistryAction
|
||||
import ru.dbotthepony.mc.otm.matter.IMatterFunction
|
||||
@ -206,6 +207,8 @@ object OverdriveThatMatters {
|
||||
|
||||
FORGE_BUS.addListener(EventPriority.NORMAL, RedstoneInteractorItem::onUse)
|
||||
|
||||
FORGE_BUS.addListener(EventPriority.NORMAL, NotNormalFood::onInteract)
|
||||
|
||||
if (isCuriosLoaded) {
|
||||
FORGE_BUS.addListener(EventPriority.NORMAL, ::onCuriosSlotModifiersUpdated)
|
||||
}
|
||||
|
@ -134,7 +134,7 @@ abstract class EnergyCableBlockEntity(type: BlockEntityType<*>, blockPos: BlockP
|
||||
private var ongoingNewState: Boolean? = null
|
||||
|
||||
fun updatePoweredState(newState: Boolean) {
|
||||
if (isRemoved) return
|
||||
if (isRemoved || !SERVER_IS_LIVE) return
|
||||
val level = level ?: return
|
||||
|
||||
if (isPoweredState != newState || ongoingNewState != newState) {
|
||||
|
@ -29,7 +29,7 @@ import ru.dbotthepony.mc.otm.core.getEntitiesInEllipsoid
|
||||
import ru.dbotthepony.mc.otm.core.lookupOrThrow
|
||||
import ru.dbotthepony.mc.otm.core.math.Vector
|
||||
import ru.dbotthepony.mc.otm.core.util.countingLazy
|
||||
import ru.dbotthepony.mc.otm.item.EssenceCapsuleItem
|
||||
import ru.dbotthepony.mc.otm.item.consumables.EssenceCapsuleItem
|
||||
import ru.dbotthepony.mc.otm.item.EssenceServoItem
|
||||
import ru.dbotthepony.mc.otm.menu.tech.EssenceStorageMenu
|
||||
import ru.dbotthepony.mc.otm.registry.MBlockEntities
|
||||
|
@ -44,7 +44,7 @@ open class FluidGaugePanel<out S : Screen>(
|
||||
|
||||
protected open fun makeTooltip(): MutableList<Component> {
|
||||
val tooltip = mutableListOf<Component>(
|
||||
if (widget.fluid.isEmpty) TranslatableComponent("otm.gui.empty") else TextComponent(String.format("%s: %.2f%%", widget.fluid.displayName.string, widget.percentage * 100.0)),
|
||||
if (widget.fluid.isEmpty) TranslatableComponent("otm.gui.empty") else TextComponent(String.format("%s: %.2f%%", widget.fluid.hoverName.string, widget.percentage * 100.0)),
|
||||
formatFluidLevel(if (widget.fluid.isEmpty) 0 else widget.fluid.amount, widget.maxCapacity, formatAsReadable = ShiftPressedCond)
|
||||
)
|
||||
|
||||
@ -67,7 +67,7 @@ open class FluidGaugePanel<out S : Screen>(
|
||||
override fun innerRender(graphics: MGUIGraphics, mouseX: Float, mouseY: Float, partialTick: Float) {
|
||||
if (widget.percentage > 0.01f && widget.fluid.isNotEmpty) {
|
||||
val data = IClientFluidTypeExtensions.of(widget.fluid.fluid)
|
||||
val texture = data.stillTexture!!
|
||||
val texture = data.stillTexture
|
||||
val sprite = minecraft.getTextureAtlas(InventoryMenu.BLOCK_ATLAS).apply(texture)!!
|
||||
val tint = RGBAColor.argb(data.getTintColor(widget.fluid))
|
||||
var height = (height * widget.percentage) / 16f
|
||||
|
@ -8,6 +8,7 @@ import mezz.jei.api.gui.handlers.IGuiContainerHandler
|
||||
import mezz.jei.api.helpers.IJeiHelpers
|
||||
import mezz.jei.api.neoforge.NeoForgeTypes
|
||||
import mezz.jei.api.registration.IGuiHandlerRegistration
|
||||
import mezz.jei.api.registration.IModInfoRegistration
|
||||
import mezz.jei.api.registration.IRecipeCatalystRegistration
|
||||
import mezz.jei.api.registration.IRecipeCategoryRegistration
|
||||
import mezz.jei.api.registration.IRecipeRegistration
|
||||
@ -64,12 +65,17 @@ class JEIPlugin : IModPlugin {
|
||||
return LOCATION
|
||||
}
|
||||
|
||||
override fun registerModInfo(modAliasRegistration: IModInfoRegistration) {
|
||||
modAliasRegistration.addModAliases(OverdriveThatMatters.MOD_ID, "otm", "matteroverdrive")
|
||||
}
|
||||
|
||||
override fun registerRecipeCatalysts(registration: IRecipeCatalystRegistration) {
|
||||
registration.addRecipeCatalyst(ItemStack(MItems.CHEMICAL_GENERATOR[null]!!), RecipeTypes.FUELING)
|
||||
registration.addRecipeCatalyst(ItemStack(MItems.POWERED_FURNACE[null]!!), RecipeTypes.SMELTING)
|
||||
registration.addRecipeCatalyst(ItemStack(MItems.ExopackUpgrades.SMELTING_UPGRADE), RecipeTypes.SMELTING)
|
||||
registration.addRecipeCatalyst(ItemStack(MItems.POWERED_BLAST_FURNACE[null]!!), RecipeTypes.BLASTING)
|
||||
registration.addRecipeCatalyst(ItemStack(MItems.POWERED_SMOKER[null]!!), RecipeTypes.SMOKING)
|
||||
registration.addRecipeCatalyst(ItemStack(MItems.GRILL[null]!!), RecipeTypes.SMOKING)
|
||||
MItems.POWERED_SMOKER.values.forEach { registration.addRecipeCatalyst(ItemStack(it), MicrowaveRecipeCategory.recipeType) }
|
||||
registration.addRecipeCatalyst(ItemStack(MItems.ExopackUpgrades.CRAFTING_UPGRADE), RecipeTypes.CRAFTING)
|
||||
registration.addRecipeCatalyst(ItemStack(MItems.ITEM_MONITOR[null]!!), RecipeTypes.CRAFTING)
|
||||
|
@ -29,6 +29,7 @@ import ru.dbotthepony.mc.otm.core.nbt.map
|
||||
import ru.dbotthepony.mc.otm.core.nbt.mapPresent
|
||||
import ru.dbotthepony.mc.otm.core.util.formatMatter
|
||||
import ru.dbotthepony.mc.otm.core.util.formatPower
|
||||
import ru.dbotthepony.mc.otm.runIfClient
|
||||
|
||||
class TooltipList {
|
||||
fun interface TooltipProvider {
|
||||
@ -67,6 +68,16 @@ class TooltipList {
|
||||
descriptionLines.add { _, _, result -> result.invoke(component.invoke()) }
|
||||
}
|
||||
|
||||
@JvmName("addDetailed")
|
||||
fun addDetailed(component: Component) {
|
||||
descriptionLines.add { _, _, result -> if (runIfClient(true) { minecraft.window.isShiftDown }) result.invoke(component.copy()) }
|
||||
}
|
||||
|
||||
@JvmName("addDetailedFunction2Component")
|
||||
fun addDetailed(component: () -> Component) {
|
||||
descriptionLines.add { _, _, result -> if (runIfClient(true) { minecraft.window.isShiftDown }) result.invoke(component.invoke()) }
|
||||
}
|
||||
|
||||
fun needsNoPower(formatting: ChatFormatting = ChatFormatting.GRAY) {
|
||||
add(TranslatableComponent("otm.needs_no_power").withStyle(formatting))
|
||||
}
|
||||
|
@ -1,4 +1,4 @@
|
||||
package ru.dbotthepony.mc.otm.item
|
||||
package ru.dbotthepony.mc.otm.item.consumables
|
||||
|
||||
import net.minecraft.ChatFormatting
|
||||
import net.minecraft.network.chat.Component
|
||||
@ -17,8 +17,8 @@ import ru.dbotthepony.mc.otm.capability.matteryPlayer
|
||||
import ru.dbotthepony.mc.otm.client.isShiftDown
|
||||
import ru.dbotthepony.mc.otm.client.minecraft
|
||||
import ru.dbotthepony.mc.otm.core.TranslatableComponent
|
||||
import ru.dbotthepony.mc.otm.core.nbt.set
|
||||
import ru.dbotthepony.mc.otm.core.util.getLevelFromXp
|
||||
import ru.dbotthepony.mc.otm.item.MatteryItem
|
||||
import ru.dbotthepony.mc.otm.registry.MDataComponentTypes
|
||||
import ru.dbotthepony.mc.otm.runIfClient
|
||||
|
@ -0,0 +1,48 @@
|
||||
package ru.dbotthepony.mc.otm.item.consumables
|
||||
|
||||
import net.minecraft.ChatFormatting
|
||||
import net.minecraft.world.InteractionHand
|
||||
import net.minecraft.world.InteractionResultHolder
|
||||
import net.minecraft.world.effect.MobEffectInstance
|
||||
import net.minecraft.world.effect.MobEffects
|
||||
import net.minecraft.world.entity.LivingEntity
|
||||
import net.minecraft.world.entity.player.Player
|
||||
import net.minecraft.world.item.ItemStack
|
||||
import net.minecraft.world.item.Rarity
|
||||
import net.minecraft.world.item.UseAnim
|
||||
import net.minecraft.world.level.Level
|
||||
import ru.dbotthepony.mc.otm.capability.matteryPlayer
|
||||
import ru.dbotthepony.mc.otm.core.TranslatableComponent
|
||||
import ru.dbotthepony.mc.otm.item.MatteryItem
|
||||
|
||||
class HealPillItem : MatteryItem(Properties().stacksTo(64).rarity(Rarity.UNCOMMON)) {
|
||||
override fun getUseDuration(itemStack: ItemStack, p_344979_: LivingEntity): Int {
|
||||
return 24
|
||||
}
|
||||
|
||||
init {
|
||||
tooltips.add(TranslatableComponent("otm.pill.heal").withStyle(ChatFormatting.GRAY))
|
||||
tooltips.add(TranslatableComponent("otm.pill.heal_android").withStyle(ChatFormatting.GRAY))
|
||||
}
|
||||
|
||||
override fun use(level: Level, ply: Player, hand: InteractionHand): InteractionResultHolder<ItemStack> {
|
||||
if (ply.matteryPlayer.isAndroid)
|
||||
return super.use(level, ply, hand)
|
||||
|
||||
ply.startUsingItem(hand)
|
||||
return InteractionResultHolder.consume(ply.getItemInHand(hand))
|
||||
}
|
||||
|
||||
override fun finishUsingItem(stack: ItemStack, level: Level, ent: LivingEntity): ItemStack {
|
||||
if (ent.matteryPlayer?.isAndroid == true)
|
||||
return super.finishUsingItem(stack, level, ent)
|
||||
|
||||
stack.shrink(1)
|
||||
ent.addEffect(MobEffectInstance(MobEffects.ABSORPTION, 20 * 60 * 2, 4))
|
||||
ent.addEffect(MobEffectInstance(MobEffects.REGENERATION, 20 * 8, 2))
|
||||
ent.heal(8f)
|
||||
return stack
|
||||
}
|
||||
|
||||
override fun getUseAnimation(p_41452_: ItemStack): UseAnim = UseAnim.EAT
|
||||
}
|
@ -0,0 +1,142 @@
|
||||
package ru.dbotthepony.mc.otm.item.consumables
|
||||
|
||||
import net.minecraft.ChatFormatting
|
||||
import net.minecraft.core.component.DataComponentMap
|
||||
import net.minecraft.network.chat.Component
|
||||
import net.minecraft.network.chat.Style
|
||||
import net.minecraft.tags.TagKey
|
||||
import net.minecraft.world.InteractionHand
|
||||
import net.minecraft.world.InteractionResult
|
||||
import net.minecraft.world.InteractionResultHolder
|
||||
import net.minecraft.world.entity.EntityType
|
||||
import net.minecraft.world.entity.LivingEntity
|
||||
import net.minecraft.world.entity.OwnableEntity
|
||||
import net.minecraft.world.entity.player.Player
|
||||
import net.minecraft.world.item.Item
|
||||
import net.minecraft.world.item.ItemStack
|
||||
import net.minecraft.world.item.UseAnim
|
||||
import net.minecraft.world.level.Level
|
||||
import net.minecraft.world.level.gameevent.GameEvent
|
||||
import net.neoforged.neoforge.event.entity.player.PlayerInteractEvent.EntityInteract
|
||||
import ru.dbotthepony.mc.otm.capability.matteryPlayer
|
||||
import ru.dbotthepony.mc.otm.client.isShiftDown
|
||||
import ru.dbotthepony.mc.otm.client.minecraft
|
||||
import ru.dbotthepony.mc.otm.core.TranslatableComponent
|
||||
import ru.dbotthepony.mc.otm.core.damageType
|
||||
import ru.dbotthepony.mc.otm.item.MatteryItem
|
||||
import ru.dbotthepony.mc.otm.registry.MDamageTypes
|
||||
import ru.dbotthepony.mc.otm.registry.MatteryDamageSource
|
||||
import ru.dbotthepony.mc.otm.runIfClient
|
||||
|
||||
class NotNormalFood(
|
||||
val mimicking: () -> Item,
|
||||
val usableOn: TagKey<EntityType<*>>? = null,
|
||||
val usableOnOwned: TagKey<EntityType<*>>? = null
|
||||
) : MatteryItem(Properties()) { // properties go unused because this item use properties aka components of mimicked item
|
||||
constructor(mimicking: () -> Item, tags: Pair<TagKey<EntityType<*>>, TagKey<EntityType<*>>>) : this(mimicking, tags.first, tags.second)
|
||||
|
||||
init {
|
||||
tooltips.addDetailed(TranslatableComponent("otm.pill.suspicious_food.desc").withStyle(ChatFormatting.GRAY))
|
||||
}
|
||||
|
||||
override fun components(): DataComponentMap {
|
||||
return mimicking().components()
|
||||
}
|
||||
|
||||
override fun getDefaultMaxStackSize(): Int {
|
||||
return mimicking().defaultMaxStackSize
|
||||
}
|
||||
|
||||
override fun getUseAnimation(stack: ItemStack): UseAnim {
|
||||
return mimicking().getUseAnimation(stack)
|
||||
}
|
||||
|
||||
override fun getUseDuration(stack: ItemStack, entity: LivingEntity): Int {
|
||||
return mimicking().getUseDuration(stack, entity)
|
||||
}
|
||||
|
||||
override fun use(level: Level, player: Player, hand: InteractionHand): InteractionResultHolder<ItemStack> {
|
||||
return mimicking().use(level, player, hand)
|
||||
}
|
||||
|
||||
override fun finishUsingItem(stack: ItemStack, level: Level, entity: LivingEntity): ItemStack {
|
||||
val copy = stack.copy()
|
||||
val result = mimicking().finishUsingItem(stack, level, entity)
|
||||
|
||||
if (entity.matteryPlayer?.isAndroid != true) {
|
||||
entity.health = 1f
|
||||
val source = MatteryDamageSource(level.registryAccess().damageType(MDamageTypes.NOT_NORMAL_PILL), inflictor = copy)
|
||||
|
||||
entity.invulnerableTime = 0
|
||||
entity.hurt(source, Float.MAX_VALUE)
|
||||
|
||||
if (entity.isAlive)
|
||||
entity.die(source)
|
||||
}
|
||||
|
||||
return result
|
||||
}
|
||||
|
||||
override fun getDescription(): Component {
|
||||
if (runIfClient(false) { minecraft.window.isShiftDown }) {
|
||||
return TranslatableComponent("otm.pill.suspicious_food", mimicking().description)
|
||||
}
|
||||
|
||||
return mimicking().getDescription()
|
||||
}
|
||||
|
||||
override fun getName(stack: ItemStack): Component {
|
||||
if (runIfClient(false) { minecraft.window.isShiftDown }) {
|
||||
return TranslatableComponent("otm.pill.suspicious_food", mimicking().getName(stack))
|
||||
}
|
||||
|
||||
return mimicking().getName(stack)
|
||||
}
|
||||
|
||||
override fun getDescriptionId(): String {
|
||||
if (!runIfClient(false) { minecraft.window.isShiftDown })
|
||||
return mimicking().getDescriptionId()
|
||||
|
||||
return super.getDescriptionId()
|
||||
}
|
||||
|
||||
override fun getDescriptionId(stack: ItemStack): String {
|
||||
if (!runIfClient(false) { minecraft.window.isShiftDown })
|
||||
return mimicking().getDescriptionId(stack)
|
||||
|
||||
return super.getDescriptionId(stack)
|
||||
}
|
||||
|
||||
companion object {
|
||||
fun onInteract(event: EntityInteract) {
|
||||
val item = event.itemStack.item as? NotNormalFood ?: return
|
||||
val target = event.target as? LivingEntity ?: return
|
||||
|
||||
if (
|
||||
item.usableOn != null && event.target.type.`is`(item.usableOn) ||
|
||||
item.usableOnOwned != null && event.target.type.`is`(item.usableOnOwned) && event.target is OwnableEntity && (event.target as OwnableEntity).ownerUUID == event.entity.uuid
|
||||
) {
|
||||
event.isCanceled = true
|
||||
val copy = event.itemStack.copy()
|
||||
|
||||
if (!event.entity.hasInfiniteMaterials()) {
|
||||
event.itemStack.shrink(1)
|
||||
}
|
||||
|
||||
event.cancellationResult = InteractionResult.sidedSuccess(target.level().isClientSide)
|
||||
target.gameEvent(GameEvent.EAT)
|
||||
|
||||
if (!target.level().isClientSide) {
|
||||
target.health = 1f
|
||||
val source = MatteryDamageSource(target.level().registryAccess().damageType(MDamageTypes.NOT_NORMAL_PILL), inflictor = copy)
|
||||
|
||||
target.invulnerableTime = 0
|
||||
target.hurt(source, Float.MAX_VALUE)
|
||||
|
||||
if (target.isAlive)
|
||||
target.die(source)
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
@ -0,0 +1,49 @@
|
||||
package ru.dbotthepony.mc.otm.item.consumables
|
||||
|
||||
import net.minecraft.ChatFormatting
|
||||
import net.minecraft.world.InteractionHand
|
||||
import net.minecraft.world.InteractionResultHolder
|
||||
import net.minecraft.world.entity.LivingEntity
|
||||
import net.minecraft.world.entity.player.Player
|
||||
import net.minecraft.world.item.*
|
||||
import net.minecraft.world.level.Level
|
||||
import ru.dbotthepony.mc.otm.core.TranslatableComponent
|
||||
import ru.dbotthepony.mc.otm.capability.matteryPlayer
|
||||
import ru.dbotthepony.mc.otm.core.damageType
|
||||
import ru.dbotthepony.mc.otm.item.MatteryItem
|
||||
import ru.dbotthepony.mc.otm.registry.MDamageTypes
|
||||
import ru.dbotthepony.mc.otm.registry.MatteryDamageSource
|
||||
|
||||
class NotNormalPill : MatteryItem(Properties().stacksTo(64).rarity(Rarity.UNCOMMON)) {
|
||||
override fun getUseDuration(itemStack: ItemStack, p_344979_: LivingEntity): Int {
|
||||
return 24
|
||||
}
|
||||
|
||||
init {
|
||||
tooltips.addDetailed(TranslatableComponent("otm.pill.not_normal").withStyle(ChatFormatting.GRAY))
|
||||
}
|
||||
|
||||
override fun use(level: Level, ply: Player, hand: InteractionHand): InteractionResultHolder<ItemStack> {
|
||||
ply.startUsingItem(hand)
|
||||
return InteractionResultHolder.consume(ply.getItemInHand(hand))
|
||||
}
|
||||
|
||||
override fun finishUsingItem(stack: ItemStack, level: Level, ent: LivingEntity): ItemStack {
|
||||
if (ent.matteryPlayer?.isAndroid == true)
|
||||
return super.finishUsingItem(stack, level, ent)
|
||||
|
||||
val copy = stack.copy()
|
||||
|
||||
if (!ent.hasInfiniteMaterials())
|
||||
stack.shrink(1)
|
||||
|
||||
if (!level.isClientSide) {
|
||||
ent.health = 0f
|
||||
ent.die(MatteryDamageSource(level.registryAccess().damageType(MDamageTypes.NOT_NORMAL_PILL), inflictor = copy))
|
||||
}
|
||||
|
||||
return stack
|
||||
}
|
||||
|
||||
override fun getUseAnimation(p_41452_: ItemStack): UseAnim = UseAnim.EAT
|
||||
}
|
@ -1,56 +1,23 @@
|
||||
package ru.dbotthepony.mc.otm.item
|
||||
package ru.dbotthepony.mc.otm.item.consumables
|
||||
|
||||
import net.minecraft.ChatFormatting
|
||||
import net.minecraft.network.chat.Component
|
||||
import net.minecraft.server.level.ServerPlayer
|
||||
import net.minecraft.world.InteractionHand
|
||||
import net.minecraft.world.InteractionResultHolder
|
||||
import net.minecraft.world.effect.MobEffectInstance
|
||||
import net.minecraft.world.effect.MobEffects
|
||||
import net.minecraft.world.entity.LivingEntity
|
||||
import net.minecraft.world.entity.player.Player
|
||||
import net.minecraft.world.item.*
|
||||
import net.minecraft.world.item.ItemStack
|
||||
import net.minecraft.world.item.Rarity
|
||||
import net.minecraft.world.item.UseAnim
|
||||
import net.minecraft.world.level.Level
|
||||
import ru.dbotthepony.mc.otm.core.TranslatableComponent
|
||||
import ru.dbotthepony.mc.otm.capability.MatteryCapability
|
||||
import ru.dbotthepony.mc.otm.capability.matteryPlayer
|
||||
import ru.dbotthepony.mc.otm.core.TranslatableComponent
|
||||
import ru.dbotthepony.mc.otm.item.MatteryItem
|
||||
|
||||
enum class PillType {
|
||||
BECOME_ANDROID, BECOME_HUMANE, OBLIVION
|
||||
}
|
||||
|
||||
class HealPillItem : MatteryItem(Properties().stacksTo(64).rarity(Rarity.UNCOMMON)) {
|
||||
override fun getUseDuration(itemStack: ItemStack, p_344979_: LivingEntity): Int {
|
||||
return 24
|
||||
}
|
||||
|
||||
init {
|
||||
tooltips.add(TranslatableComponent("otm.pill.heal").withStyle(ChatFormatting.GRAY))
|
||||
tooltips.add(TranslatableComponent("otm.pill.heal_android").withStyle(ChatFormatting.GRAY))
|
||||
}
|
||||
|
||||
override fun use(level: Level, ply: Player, hand: InteractionHand): InteractionResultHolder<ItemStack> {
|
||||
if (ply.matteryPlayer.isAndroid)
|
||||
return super.use(level, ply, hand)
|
||||
|
||||
ply.startUsingItem(hand)
|
||||
return InteractionResultHolder.consume(ply.getItemInHand(hand))
|
||||
}
|
||||
|
||||
override fun finishUsingItem(stack: ItemStack, level: Level, ent: LivingEntity): ItemStack {
|
||||
if (ent.matteryPlayer?.isAndroid == true)
|
||||
return super.finishUsingItem(stack, level, ent)
|
||||
|
||||
stack.shrink(1)
|
||||
ent.addEffect(MobEffectInstance(MobEffects.ABSORPTION, 20 * 60 * 2, 4))
|
||||
ent.addEffect(MobEffectInstance(MobEffects.REGENERATION, 20 * 8, 2))
|
||||
ent.heal(8f)
|
||||
return stack
|
||||
}
|
||||
|
||||
override fun getUseAnimation(p_41452_: ItemStack): UseAnim = UseAnim.EAT
|
||||
}
|
||||
|
||||
class PillItem(val pillType: PillType) : MatteryItem(Properties().stacksTo(64).rarity(Rarity.UNCOMMON)) {
|
||||
init {
|
||||
when (pillType) {
|
@ -6,12 +6,11 @@ import net.minecraft.world.entity.player.Inventory
|
||||
import net.minecraft.world.item.ItemStack
|
||||
import net.minecraft.world.item.enchantment.EnchantmentEffectComponents
|
||||
import net.minecraft.world.item.enchantment.EnchantmentHelper
|
||||
import net.minecraft.world.item.enchantment.Enchantments
|
||||
import ru.dbotthepony.kommons.util.getValue
|
||||
import ru.dbotthepony.mc.otm.block.entity.RedstoneSetting
|
||||
import ru.dbotthepony.mc.otm.block.entity.tech.EssenceStorageBlockEntity
|
||||
import ru.dbotthepony.mc.otm.core.util.getTotalXpRequiredForLevel
|
||||
import ru.dbotthepony.mc.otm.item.EssenceCapsuleItem
|
||||
import ru.dbotthepony.mc.otm.item.consumables.EssenceCapsuleItem
|
||||
import ru.dbotthepony.mc.otm.item.EssenceServoItem
|
||||
import ru.dbotthepony.mc.otm.menu.MatteryMenu
|
||||
import ru.dbotthepony.mc.otm.menu.MatterySlot
|
||||
|
@ -10,6 +10,7 @@ import ru.dbotthepony.mc.otm.core.ResourceLocation
|
||||
object MDamageTypes {
|
||||
private fun register(name: String): ResourceKey<DamageType> = ResourceKey.create(Registries.DAMAGE_TYPE, ResourceLocation(OverdriveThatMatters.MOD_ID, name))
|
||||
|
||||
val NOT_NORMAL_PILL = register("not_normal_pill")
|
||||
val BECOME_ANDROID = register("become_android")
|
||||
val BECOME_HUMANE = register("become_humane")
|
||||
val EVENT_HORIZON = register("event_horizon")
|
||||
|
@ -15,6 +15,7 @@ import net.minecraft.world.item.HoeItem
|
||||
import net.minecraft.world.item.Item
|
||||
import net.minecraft.world.item.Item.Properties
|
||||
import net.minecraft.world.item.ItemStack
|
||||
import net.minecraft.world.item.Items
|
||||
import net.minecraft.world.item.PickaxeItem
|
||||
import net.minecraft.world.item.Rarity
|
||||
import net.minecraft.world.item.ShearsItem
|
||||
@ -39,16 +40,16 @@ import ru.dbotthepony.mc.otm.core.math.Decimal
|
||||
import ru.dbotthepony.mc.otm.item.BatteryItem
|
||||
import ru.dbotthepony.mc.otm.item.ChestUpgraderItem
|
||||
import ru.dbotthepony.mc.otm.item.CrudeBatteryItem
|
||||
import ru.dbotthepony.mc.otm.item.EssenceCapsuleItem
|
||||
import ru.dbotthepony.mc.otm.item.consumables.EssenceCapsuleItem
|
||||
import ru.dbotthepony.mc.otm.item.EssenceServoItem
|
||||
import ru.dbotthepony.mc.otm.item.FluidCapsuleItem
|
||||
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.consumables.HealPillItem
|
||||
import ru.dbotthepony.mc.otm.item.MatteryItem
|
||||
import ru.dbotthepony.mc.otm.item.MinecartCargoCrateItem
|
||||
import ru.dbotthepony.mc.otm.item.PillItem
|
||||
import ru.dbotthepony.mc.otm.item.PillType
|
||||
import ru.dbotthepony.mc.otm.item.consumables.PillItem
|
||||
import ru.dbotthepony.mc.otm.item.consumables.PillType
|
||||
import ru.dbotthepony.mc.otm.item.PortableCondensationDriveItem
|
||||
import ru.dbotthepony.mc.otm.item.ProceduralBatteryItem
|
||||
import ru.dbotthepony.mc.otm.item.QuantumBatteryItem
|
||||
@ -58,6 +59,8 @@ 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.consumables.NotNormalFood
|
||||
import ru.dbotthepony.mc.otm.item.consumables.NotNormalPill
|
||||
import ru.dbotthepony.mc.otm.item.exopack.ExopackProbeItem
|
||||
import ru.dbotthepony.mc.otm.item.exopack.ExopackSlotUpgradeItem
|
||||
import ru.dbotthepony.mc.otm.item.exopack.ExopackUpgradeItem
|
||||
@ -424,14 +427,18 @@ object MItems {
|
||||
val PILL_HUMANE: Item by registry.register(MNames.PILL_HUMANE) { PillItem(PillType.BECOME_HUMANE) }
|
||||
val PILL_OBLIVION: Item by registry.register(MNames.PILL_OBLIVION) { PillItem(PillType.OBLIVION) }
|
||||
val PILL_HEAL: Item by registry.register(MNames.PILL_HEAL) { HealPillItem() }
|
||||
val PILL_NOT_NORMAL: Item by registry.register(MNames.PILL_NOT_NORMAL) { NotNormalPill() }
|
||||
|
||||
val PILLS = SupplierList(
|
||||
::PILL_ANDROID,
|
||||
::PILL_HUMANE,
|
||||
::PILL_OBLIVION,
|
||||
::PILL_HEAL,
|
||||
::PILL_NOT_NORMAL,
|
||||
)
|
||||
|
||||
val SUSPICIOUS_FOODS = SuspiciousFoods(registry)
|
||||
|
||||
val BATTERY_CRUDE: Item by registry.register(MNames.BATTERY_CRUDE) { CrudeBatteryItem() }
|
||||
val BATTERY_BASIC: Item by registry.register(MNames.BATTERY_BASIC) { BatteryItem(ItemsConfig.Batteries.BASIC) }
|
||||
val BATTERY_NORMAL: Item by registry.register(MNames.BATTERY_NORMAL) { BatteryItem(ItemsConfig.Batteries.NORMAL) }
|
||||
|
@ -108,6 +108,7 @@ object MNames {
|
||||
const val PILL_HUMANE = "pill_humane"
|
||||
const val PILL_OBLIVION = "pill_oblivion"
|
||||
const val PILL_HEAL = "pill_heal"
|
||||
const val PILL_NOT_NORMAL = "pill_not_normal"
|
||||
|
||||
const val BATTERY_CRUDE = "battery_crude"
|
||||
const val BATTERY_BASIC = "battery_basic"
|
||||
|
@ -24,10 +24,12 @@ class MatteryDamageSource(
|
||||
val itemStack = inflictor ?: (entity as? LivingEntity)?.mainHandItem ?: ItemStack.EMPTY
|
||||
|
||||
if (!itemStack.isEmpty && itemStack.has(DataComponents.CUSTOM_NAME)) {
|
||||
return TranslatableComponent("death.attack.$msgId.player.item", victim.displayName!!, entity!!.displayName!!, itemStack.displayName)
|
||||
}
|
||||
|
||||
if (entity != null) {
|
||||
if (entity?.displayName == null) {
|
||||
return TranslatableComponent("death.attack.$msgId.item", victim.displayName!!, itemStack.displayName)
|
||||
} else {
|
||||
return TranslatableComponent("death.attack.$msgId.player.item", victim.displayName!!, entity!!.displayName!!, itemStack.displayName)
|
||||
}
|
||||
} else if (entity != null) {
|
||||
return TranslatableComponent("death.attack.$msgId.player", victim.displayName!!, entity!!.displayName!!)
|
||||
}
|
||||
|
||||
|
@ -0,0 +1,79 @@
|
||||
package ru.dbotthepony.mc.otm.registry
|
||||
|
||||
import net.minecraft.core.registries.Registries
|
||||
import net.minecraft.tags.TagKey
|
||||
import net.minecraft.world.entity.EntityType
|
||||
import net.minecraft.world.item.Item
|
||||
import net.minecraft.world.item.Items
|
||||
import ru.dbotthepony.mc.otm.OverdriveThatMatters
|
||||
import ru.dbotthepony.mc.otm.core.ResourceLocation
|
||||
import ru.dbotthepony.mc.otm.core.collect.SupplierList
|
||||
import ru.dbotthepony.mc.otm.item.consumables.NotNormalFood
|
||||
|
||||
@Suppress("PropertyName")
|
||||
class SuspiciousFoods(registry: MDeferredRegister<Item>) {
|
||||
val OWNED_MEAT_CONSUMERS: TagKey<EntityType<*>> = TagKey.create(Registries.ENTITY_TYPE, ResourceLocation(OverdriveThatMatters.MOD_ID, "owned_consumes_suspicious_meat"))
|
||||
val OWNED_FISH_CONSUMERS: TagKey<EntityType<*>> = TagKey.create(Registries.ENTITY_TYPE, ResourceLocation(OverdriveThatMatters.MOD_ID, "owned_consumes_suspicious_fish"))
|
||||
val OWNED_EXOTIC_FISH_CONSUMERS: TagKey<EntityType<*>> = TagKey.create(Registries.ENTITY_TYPE, ResourceLocation(OverdriveThatMatters.MOD_ID, "owned_consumes_suspicious_fish"))
|
||||
val OWNED_COOKIE_CONSUMERS: TagKey<EntityType<*>> = TagKey.create(Registries.ENTITY_TYPE, ResourceLocation(OverdriveThatMatters.MOD_ID, "owned_consumes_suspicious_cookie"))
|
||||
val OWNED_CARROT_CONSUMERS: TagKey<EntityType<*>> = TagKey.create(Registries.ENTITY_TYPE, ResourceLocation(OverdriveThatMatters.MOD_ID, "owned_consumes_suspicious_carrot"))
|
||||
|
||||
val MEAT_CONSUMERS: TagKey<EntityType<*>> = TagKey.create(Registries.ENTITY_TYPE, ResourceLocation(OverdriveThatMatters.MOD_ID, "consumes_suspicious_meat"))
|
||||
val FISH_CONSUMERS: TagKey<EntityType<*>> = TagKey.create(Registries.ENTITY_TYPE, ResourceLocation(OverdriveThatMatters.MOD_ID, "consumes_suspicious_fish"))
|
||||
val EXOTIC_FISH_CONSUMERS: TagKey<EntityType<*>> = TagKey.create(Registries.ENTITY_TYPE, ResourceLocation(OverdriveThatMatters.MOD_ID, "consumes_suspicious_fish"))
|
||||
val COOKIE_CONSUMERS: TagKey<EntityType<*>> = TagKey.create(Registries.ENTITY_TYPE, ResourceLocation(OverdriveThatMatters.MOD_ID, "consumes_suspicious_cookie"))
|
||||
val CARROT_CONSUMERS: TagKey<EntityType<*>> = TagKey.create(Registries.ENTITY_TYPE, ResourceLocation(OverdriveThatMatters.MOD_ID, "consumes_suspicious_carrot"))
|
||||
|
||||
private val meat = MEAT_CONSUMERS to OWNED_MEAT_CONSUMERS
|
||||
private val fish = FISH_CONSUMERS to OWNED_FISH_CONSUMERS
|
||||
private val efish = EXOTIC_FISH_CONSUMERS to OWNED_EXOTIC_FISH_CONSUMERS
|
||||
|
||||
val APPLE by registry.register("suspicious_apple") { NotNormalFood({ Items.APPLE }) }
|
||||
val BAKED_POTATO by registry.register("suspicious_baked_potato") { NotNormalFood({ Items.BAKED_POTATO }) }
|
||||
val BEEF by registry.register("suspicious_beef") { NotNormalFood({ Items.BEEF }, meat) }
|
||||
val BEETROOT by registry.register("suspicious_beetroot") { NotNormalFood({ Items.BEETROOT }) }
|
||||
val BEETROOT_SOUP by registry.register("suspicious_beetroot_soup") { NotNormalFood({ Items.BEETROOT_SOUP }) }
|
||||
val BREAD by registry.register("suspicious_bread") { NotNormalFood({ Items.BREAD }) }
|
||||
val CARROT by registry.register("suspicious_carrot") { NotNormalFood({ Items.CARROT }, CARROT_CONSUMERS, OWNED_CARROT_CONSUMERS) }
|
||||
val CHICKEN by registry.register("suspicious_chicken") { NotNormalFood({ Items.CHICKEN }, meat) }
|
||||
val CHORUS_FRUIT by registry.register("suspicious_chorus_fruit") { NotNormalFood({ Items.CHORUS_FRUIT }) }
|
||||
val COD by registry.register("suspicious_cod") { NotNormalFood({ Items.COD }, fish) }
|
||||
val COOKED_BEEF by registry.register("suspicious_cooked_beef") { NotNormalFood({ Items.COOKED_BEEF }, meat) }
|
||||
val COOKED_CHICKEN by registry.register("suspicious_cooked_chicken") { NotNormalFood({ Items.COOKED_CHICKEN }, meat) }
|
||||
val COOKED_COD by registry.register("suspicious_cooked_cod") { NotNormalFood({ Items.COOKED_COD }, fish) }
|
||||
val COOKED_MUTTON by registry.register("suspicious_cooked_mutton") { NotNormalFood({ Items.COOKED_MUTTON }, meat) }
|
||||
val COOKED_PORKCHOP by registry.register("suspicious_cooked_porkchop") { NotNormalFood({ Items.COOKED_PORKCHOP }, meat) }
|
||||
val COOKED_RABBIT by registry.register("suspicious_cooked_rabbit") { NotNormalFood({ Items.COOKED_RABBIT }, meat) }
|
||||
val COOKED_SALMON by registry.register("suspicious_cooked_salmon") { NotNormalFood({ Items.COOKED_SALMON }, fish) }
|
||||
val COOKIE by registry.register("suspicious_cookie") { NotNormalFood({ Items.COOKIE }, COOKIE_CONSUMERS, OWNED_COOKIE_CONSUMERS) }
|
||||
val ENCHANTED_GOLDEN_APPLE by registry.register("suspicious_enchanted_golden_apple") { NotNormalFood({ Items.ENCHANTED_GOLDEN_APPLE }) }
|
||||
val GOLDEN_APPLE by registry.register("suspicious_golden_apple") { NotNormalFood({ Items.GOLDEN_APPLE }) }
|
||||
val GOLDEN_CARROT by registry.register("suspicious_golden_carrot") { NotNormalFood({ Items.GOLDEN_CARROT }, CARROT_CONSUMERS, OWNED_CARROT_CONSUMERS) }
|
||||
val MELON_SLICE by registry.register("suspicious_melon_slice") { NotNormalFood({ Items.MELON_SLICE }) }
|
||||
val MUSHROOM_STEW by registry.register("suspicious_mushroom_stew") { NotNormalFood({ Items.MUSHROOM_STEW }) }
|
||||
val MUTTON by registry.register("suspicious_mutton") { NotNormalFood({ Items.MUTTON }, meat) }
|
||||
val POISONOUS_POTATO by registry.register("suspicious_poisonous_potato") { NotNormalFood({ Items.POISONOUS_POTATO }) }
|
||||
val PORKCHOP by registry.register("suspicious_porkchop") { NotNormalFood({ Items.PORKCHOP }, meat) }
|
||||
val POTATO by registry.register("suspicious_potato") { NotNormalFood({ Items.POTATO }) }
|
||||
val PUFFERFISH by registry.register("suspicious_pufferfish") { NotNormalFood({ Items.PUFFERFISH }, efish) }
|
||||
val PUMPKIN_PIE by registry.register("suspicious_pumpkin_pie") { NotNormalFood({ Items.PUMPKIN_PIE }) }
|
||||
val RABBIT by registry.register("suspicious_rabbit") { NotNormalFood({ Items.RABBIT }, meat) }
|
||||
val RABBIT_STEW by registry.register("suspicious_rabbit_stew") { NotNormalFood({ Items.RABBIT_STEW }) }
|
||||
val ROTTEN_FLESH by registry.register("suspicious_rotten_flesh") { NotNormalFood({ Items.ROTTEN_FLESH }, meat) }
|
||||
val SALMON by registry.register("suspicious_salmon") { NotNormalFood({ Items.SALMON }, fish) }
|
||||
val SWEET_BERRIES by registry.register("suspicious_sweet_berries") { NotNormalFood({ Items.SWEET_BERRIES }) }
|
||||
val GLOW_BERRIES by registry.register("suspicious_glow_berries") { NotNormalFood({ Items.GLOW_BERRIES }) }
|
||||
val TROPICAL_FISH by registry.register("suspicious_tropical_fish") { NotNormalFood({ Items.TROPICAL_FISH }, efish) }
|
||||
|
||||
val ITEMS = SupplierList(
|
||||
::APPLE, ::BAKED_POTATO, ::BEEF,
|
||||
::BEETROOT, ::BEETROOT_SOUP, ::BREAD, ::CARROT, ::CHICKEN, ::CHORUS_FRUIT, ::COD,
|
||||
::COOKED_BEEF, ::COOKED_CHICKEN, ::COOKED_COD, ::COOKED_MUTTON, ::COOKED_PORKCHOP, ::COOKED_RABBIT, ::COOKED_SALMON, ::COOKIE, ::ENCHANTED_GOLDEN_APPLE,
|
||||
::GOLDEN_APPLE, ::GOLDEN_CARROT, ::MELON_SLICE, ::MUSHROOM_STEW, ::MUTTON, ::POISONOUS_POTATO, ::PORKCHOP, ::POTATO,
|
||||
::PUFFERFISH, ::PUMPKIN_PIE, ::RABBIT, ::RABBIT_STEW, ::ROTTEN_FLESH, ::SALMON, ::SWEET_BERRIES, ::GLOW_BERRIES, ::TROPICAL_FISH,
|
||||
)
|
||||
|
||||
// "dried_kelp" to { Items.DRIED_KELP },
|
||||
// "spider_eye" to { Items.SPIDER_EYE },
|
||||
// "honey_bottle" to { Items.HONEY_BOTTLE },
|
||||
}
|
Loading…
Reference in New Issue
Block a user