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

# Conflicts:
#	src/main/kotlin/ru/dbotthepony/mc/otm/block/entity/decorative/PainterBlockEntity.kt
This commit is contained in:
DBotThePony 2024-01-22 11:40:48 +07:00
commit c6059b0393
Signed by: DBot
GPG Key ID: DCC23B5715498507
26 changed files with 476 additions and 556 deletions

View File

@ -10,12 +10,20 @@ fun addBlockModels(provider: MatteryBlockModelProvider) {
resourceCubeAll(MBlocks.DEEPSLATE_TRITANIUM_ORE) resourceCubeAll(MBlocks.DEEPSLATE_TRITANIUM_ORE)
resourceCubeAll(MBlocks.TRITANIUM_INGOT_BLOCK) resourceCubeAll(MBlocks.TRITANIUM_INGOT_BLOCK)
cable("crude_energy_cable", "block/power_cable_0")
cable("regular_energy_cable", "block/power_cable_1")
cable("advanced_energy_cable", "block/power_cable_2")
cable("superconductor_energy_cable", "block/power_cable_3")
cable("storage_cable", "block/storage_cable")
colored(MBlocks.COBBLESTONE_GENERATOR, listOf("0", "particle")) colored(MBlocks.COBBLESTONE_GENERATOR, listOf("0", "particle"))
colored(MBlocks.ESSENCE_STORAGE, listOf("0", "particle"))
colored(MBlocks.ITEM_MONITOR, listOf("0", "particle")) colored(MBlocks.ITEM_MONITOR, listOf("0", "particle"))
colored(MBlocks.MATTER_RECONSTRUCTOR, listOf("0", "particle")) colored(MBlocks.MATTER_RECONSTRUCTOR, listOf("0", "particle"))
colored(MBlocks.ENERGY_SERVO, listOf("0", "particle")) colored(MBlocks.ENERGY_SERVO, listOf("0", "particle"))
colored("essence_storage", "_empty", listOf("0"))
colored("essence_storage", "_filled", listOf("0"))
colored("matter_capacitor_bank", listOf("1", "particle"), "mattercapacitorbank_frame") colored("matter_capacitor_bank", listOf("1", "particle"), "mattercapacitorbank_frame")
colored("battery_bank", listOf("0", "particle"), "batterybank_frame") colored("battery_bank", listOf("0", "particle"), "batterybank_frame")

View File

@ -8,6 +8,7 @@ import ru.dbotthepony.mc.otm.block.decorative.CargoCrateBlock
import ru.dbotthepony.mc.otm.block.entity.WorkerState import ru.dbotthepony.mc.otm.block.entity.WorkerState
import ru.dbotthepony.mc.otm.block.matter.MatterBottlerBlock import ru.dbotthepony.mc.otm.block.matter.MatterBottlerBlock
import ru.dbotthepony.mc.otm.block.tech.AndroidChargerBlock import ru.dbotthepony.mc.otm.block.tech.AndroidChargerBlock
import ru.dbotthepony.mc.otm.block.tech.EssenceStorageBlock
import ru.dbotthepony.mc.otm.core.math.BlockRotationFreedom import ru.dbotthepony.mc.otm.core.math.BlockRotationFreedom
import ru.dbotthepony.mc.otm.core.math.xRotationBlockstateNorth import ru.dbotthepony.mc.otm.core.math.xRotationBlockstateNorth
import ru.dbotthepony.mc.otm.core.math.xRotationBlockstateSouth import ru.dbotthepony.mc.otm.core.math.xRotationBlockstateSouth
@ -112,7 +113,22 @@ fun addBlockStates(provider: MatteryBlockStateProvider) {
provider.block(MBlocks.MATTER_RECONSTRUCTOR.values) provider.block(MBlocks.MATTER_RECONSTRUCTOR.values)
provider.block(MBlocks.ENERGY_SERVO.values) provider.block(MBlocks.ENERGY_SERVO.values)
provider.block(MBlocks.COBBLESTONE_GENERATOR.values) provider.block(MBlocks.COBBLESTONE_GENERATOR.values)
provider.block(MBlocks.ESSENCE_STORAGE.values)
provider.exec {
for (block in MBlocks.ESSENCE_STORAGE.values) {
provider.getVariantBuilder(block).forAllStates {
return@forAllStates arrayOf(
ConfiguredModel.builder()
.modelFile(provider.models().getExistingFile(
modLocation("${block.registryName!!.path}_${if (it.getValue(
EssenceStorageBlock.FILLED)) "filled" else "empty"}")
))
.rotationY(it.getValue(BlockRotationFreedom.HORIZONTAL.property).front.yRotationBlockstateNorth())
.buildLast()
)
}
}
}
provider.exec { provider.exec {
for (crate in MRegistry.CARGO_CRATES.allBlocks.values) { for (crate in MRegistry.CARGO_CRATES.allBlocks.values) {
@ -191,5 +207,49 @@ fun addBlockStates(provider: MatteryBlockStateProvider) {
part().modelFile(provider.models().getExistingFile(modLocation("storage_cable_core"))) part().modelFile(provider.models().getExistingFile(modLocation("storage_cable_core")))
.addModel().end() .addModel().end()
} }
with(provider.getMultipartBuilder(MBlocks.MATTER_CABLE)) {
for (dir in BlockRotationFreedom.DIRECTIONAL.possibleValues) {
part().modelFile(provider.models().getExistingFile(modLocation("matter_cable_connection")))
.rotationX(dir.front.xRotationBlockstateSouth())
.rotationY(dir.front.yRotationBlockstateSouth())
.addModel()
.condition(CableBlock.MAPPING_CONNECTION_PROP[dir.front]!!, true)
.end()
}
part().modelFile(provider.models().getExistingFile(modLocation("matter_cable_core")))
.addModel().end()
}
with(provider.getMultipartBuilder(MBlocks.STORAGE_CABLE)) {
for (dir in BlockRotationFreedom.DIRECTIONAL.possibleValues) {
part().modelFile(provider.models().getExistingFile(modLocation("storage_cable_connection")))
.rotationX(dir.front.xRotationBlockstateSouth())
.rotationY(dir.front.yRotationBlockstateSouth())
.addModel()
.condition(CableBlock.MAPPING_CONNECTION_PROP[dir.front]!!, true)
.end()
}
part().modelFile(provider.models().getExistingFile(modLocation("storage_cable_core")))
.addModel().end()
}
for (block in MBlocks.ENERGY_CABLES) {
with(provider.getMultipartBuilder(block.value)) {
for (dir in BlockRotationFreedom.DIRECTIONAL.possibleValues) {
part().modelFile(provider.models().getExistingFile(modLocation("${block.value.registryName!!.path}_connection")))
.rotationX(dir.front.xRotationBlockstateSouth())
.rotationY(dir.front.yRotationBlockstateSouth())
.addModel()
.condition(CableBlock.MAPPING_CONNECTION_PROP[dir.front]!!, true)
.end()
}
part().modelFile(provider.models().getExistingFile(modLocation("${block.value.registryName!!.path}_core")))
.addModel().end()
}
}
} }
} }

View File

@ -172,10 +172,8 @@ fun addItemModels(provider: MatteryItemModelProvider) {
provider.coloredWithBaseBlock(MItems.MATTER_SCANNER, "matter_scanner", "_idle") provider.coloredWithBaseBlock(MItems.MATTER_SCANNER, "matter_scanner", "_idle")
provider.coloredWithBaseBlock(MItems.MATTER_REPLICATOR, "matter_replicator", "_idle") provider.coloredWithBaseBlock(MItems.MATTER_REPLICATOR, "matter_replicator", "_idle")
provider.coloredWithBaseBlock(MItems.DRIVE_VIEWER, "drive_viewer", "_idle") provider.coloredWithBaseBlock(MItems.DRIVE_VIEWER, "drive_viewer", "_idle")
provider.block(MItems.MATTER_CABLE, "matter_cable_core")
provider.coloredWithBaseBlock(MItems.MATTER_DECOMPOSER, "matter_decomposer", "_idle") provider.coloredWithBaseBlock(MItems.MATTER_DECOMPOSER, "matter_decomposer", "_idle")
provider.coloredWithBaseBlock(MItems.ENERGY_SERVO, "energy_servo") provider.coloredWithBaseBlock(MItems.ENERGY_SERVO, "energy_servo")
provider.coloredWithBaseBlock(MItems.ESSENCE_STORAGE, "essence_storage")
provider.coloredWithBaseBlock(MItems.MATTER_RECONSTRUCTOR, "matter_reconstructor") provider.coloredWithBaseBlock(MItems.MATTER_RECONSTRUCTOR, "matter_reconstructor")
provider.coloredWithBaseBlock(MItems.POWERED_BLAST_FURNACE, "powered_blast_furnace", "_idle") provider.coloredWithBaseBlock(MItems.POWERED_BLAST_FURNACE, "powered_blast_furnace", "_idle")
@ -188,10 +186,23 @@ fun addItemModels(provider: MatteryItemModelProvider) {
provider.coloredWithBaseBlock(MItems.MATTER_RECYCLER, "matter_recycler", "_idle") provider.coloredWithBaseBlock(MItems.MATTER_RECYCLER, "matter_recycler", "_idle")
provider.coloredWithBaseBlock(MItems.COBBLESTONE_GENERATOR, "cobblestone_generator") provider.coloredWithBaseBlock(MItems.COBBLESTONE_GENERATOR, "cobblestone_generator")
provider.exec {
provider.withExistingParent("essence_storage", modLocation("block/essence_storage_empty"))
.override()
.predicate(modLocation("is_filled"), 1f)
.model(provider.withExistingParent("essence_storage_filled", modLocation("block/essence_storage_filled")))
.end()
}
for (dye in DyeColor.entries) { for (dye in DyeColor.entries) {
provider.exec { provider.exec {
provider.withExistingParent("android_charger_${dye.name.lowercase()}", modLocation("item/android_charger")).texture("0", modLocation("block/android_charger/${dye.name.lowercase()}")) provider.withExistingParent("android_charger_${dye.name.lowercase()}", modLocation("item/android_charger")).texture("0", modLocation("block/android_charger/${dye.name.lowercase()}"))
provider.withExistingParent("matter_panel_${dye.name.lowercase()}", modLocation("item/matter_panel")).texture("texture", modLocation("block/matter_panel/${dye.name.lowercase()}")) provider.withExistingParent("matter_panel_${dye.name.lowercase()}", modLocation("item/matter_panel")).texture("texture", modLocation("block/matter_panel/${dye.name.lowercase()}"))
provider.withExistingParent("essence_storage_${dye.name.lowercase()}", modLocation("block/essence_storage_${dye.name.lowercase()}_empty"))
.override()
.predicate(modLocation("is_filled"), 1f)
.model(provider.withExistingParent("essence_storage_${dye.name.lowercase()}_filled", modLocation("block/essence_storage_${dye.name.lowercase()}_filled")))
.end()
} }
} }

View File

@ -608,8 +608,8 @@ private fun items(provider: MatteryLanguageProvider) {
add(MItems.ESSENCE_CAPSULE, "Essence Capsule") add(MItems.ESSENCE_CAPSULE, "Essence Capsule")
add(MItems.ESSENCE_DRIVE, "Essence Memory Holotape") add(MItems.ESSENCE_DRIVE, "Essence Memory Holotape")
add(MItems.ESSENCE_SERVO, "Essence Servo") add(MItems.ESSENCE_SERVO, "Essence Servo")
add(MItems.ESSENCE_SERVO, "desc", "Allows to 'pump' essence involving fleshy humanoids") add(MItems.ESSENCE_SERVO, "desc", "Allows to absorb nearby experience orbs directly into essence storage")
add(MItems.ESSENCE_SERVO, "desc2", "Can be used standalone, or as tool inside Essence Servo") add(MItems.ESSENCE_SERVO, "desc2", "Can be used as a tool to pump essence manually")
add(MItems.NUTRIENT_PASTE, "Nutrient Paste") add(MItems.NUTRIENT_PASTE, "Nutrient Paste")

View File

@ -612,8 +612,8 @@ private fun items(provider: MatteryLanguageProvider) {
add(MItems.ESSENCE_CAPSULE, "Капсула эссенции") add(MItems.ESSENCE_CAPSULE, "Капсула эссенции")
add(MItems.ESSENCE_DRIVE, "Голодиск воспоминаний андроида") add(MItems.ESSENCE_DRIVE, "Голодиск воспоминаний андроида")
add(MItems.ESSENCE_SERVO, "Помпа эссенции") add(MItems.ESSENCE_SERVO, "Помпа эссенции")
add(MItems.ESSENCE_SERVO, "desc", "Позволяет 'перекачивать' эссенцию гуманоидов из плоти") add(MItems.ESSENCE_SERVO, "desc", "Позволяет всасывать близлежащие сферы опыта напрямую в хранилище эссенции")
add(MItems.ESSENCE_SERVO, "desc2", "Может быть использовано напрямую, или как инструмент внутри хранилища эссенции") add(MItems.ESSENCE_SERVO, "desc2", "Может использоваться как инструмент для ручной перекачки эссенции")
add(MItems.NUTRIENT_PASTE, "Питательная паста") add(MItems.NUTRIENT_PASTE, "Питательная паста")

View File

@ -142,4 +142,17 @@ class MatteryBlockModelProvider(event: GatherDataEvent) : BlockModelProvider(eve
colored(modelName, state, textureKeys.associateWith { modelName }) colored(modelName, state, textureKeys.associateWith { modelName })
} }
} }
fun cable(modelName: String, textureName: String) {
exec {
withExistingParent("block/${modelName}_core", modLocation("block/base_cable_core"))
.texture("0", textureName)
withExistingParent("block/${modelName}_connection", modLocation("block/base_cable_connection"))
.texture("0", textureName)
withExistingParent("item/${modelName}", modLocation("item/base_cable"))
.texture("0", textureName)
}
}
} }

View File

@ -1,20 +1,31 @@
package ru.dbotthepony.mc.otm.block.entity.tech package ru.dbotthepony.mc.otm.block.entity.tech
import net.minecraft.core.BlockPos import net.minecraft.core.BlockPos
import net.minecraft.server.level.ServerLevel
import net.minecraft.sounds.SoundEvents
import net.minecraft.sounds.SoundSource
import net.minecraft.world.entity.ExperienceOrb
import net.minecraft.world.entity.player.Inventory import net.minecraft.world.entity.player.Inventory
import net.minecraft.world.entity.player.Player import net.minecraft.world.entity.player.Player
import net.minecraft.world.inventory.AbstractContainerMenu import net.minecraft.world.inventory.AbstractContainerMenu
import net.minecraft.world.item.ItemStack import net.minecraft.world.item.ItemStack
import net.minecraft.world.item.enchantment.Enchantments import net.minecraft.world.item.enchantment.Enchantments
import net.minecraft.world.level.block.Block
import net.minecraft.world.level.block.state.BlockState import net.minecraft.world.level.block.state.BlockState
import net.minecraftforge.fluids.FluidStack import net.minecraftforge.fluids.FluidStack
import net.minecraftforge.fluids.capability.IFluidHandler import net.minecraftforge.fluids.capability.IFluidHandler
import ru.dbotthepony.mc.otm.block.entity.ExperienceStorage.Companion.XP_TO_LIQUID_RATIO import ru.dbotthepony.mc.otm.block.entity.ExperienceStorage.Companion.XP_TO_LIQUID_RATIO
import ru.dbotthepony.mc.otm.block.entity.MatteryDeviceBlockEntity import ru.dbotthepony.mc.otm.block.entity.MatteryDeviceBlockEntity
import ru.dbotthepony.mc.otm.block.tech.EssenceStorageBlock
import ru.dbotthepony.mc.otm.capability.item.CombinedItemHandler import ru.dbotthepony.mc.otm.capability.item.CombinedItemHandler
import ru.dbotthepony.mc.otm.config.MachinesConfig
import ru.dbotthepony.mc.otm.container.HandlerFilter import ru.dbotthepony.mc.otm.container.HandlerFilter
import ru.dbotthepony.mc.otm.container.MatteryContainer import ru.dbotthepony.mc.otm.container.MatteryContainer
import ru.dbotthepony.mc.otm.core.getEntitiesInEllipsoid
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.EssenceCapsuleItem
import ru.dbotthepony.mc.otm.item.EssenceServoItem
import ru.dbotthepony.mc.otm.menu.tech.EssenceStorageMenu import ru.dbotthepony.mc.otm.menu.tech.EssenceStorageMenu
import ru.dbotthepony.mc.otm.registry.MBlockEntities import ru.dbotthepony.mc.otm.registry.MBlockEntities
import ru.dbotthepony.mc.otm.registry.MFluids import ru.dbotthepony.mc.otm.registry.MFluids
@ -119,6 +130,14 @@ class EssenceStorageBlockEntity(blockPos: BlockPos, blockState: BlockState) : Ma
return FluidStack(MFluids.LIQUID_XP, actualDrain) return FluidStack(MFluids.LIQUID_XP, actualDrain)
} }
private val hasFillState by countingLazy(blockStateChangesCounter) {
this.blockState.hasProperty(EssenceStorageBlock.FILLED)
}
private val isFilledState by countingLazy(blockStateChangesCounter) {
hasFillState && this.blockState.getValue(EssenceStorageBlock.FILLED)
}
override fun tick() { override fun tick() {
super.tick() super.tick()
@ -146,6 +165,45 @@ class EssenceStorageBlockEntity(blockPos: BlockPos, blockState: BlockState) : Ma
repairStack.damageValue -= repairPoints repairStack.damageValue -= repairPoints
} }
} }
val servo = servoContainer[0]
if (!servo.isEmpty && servo.item is EssenceServoItem && level is ServerLevel) {
val entities = level!!.getEntitiesInEllipsoid(
blockPos.center,
Vector(
MachinesConfig.EssenceStorage.RADIUS_HORIZONTAL,
MachinesConfig.EssenceStorage.RADIUS_VERTICAL,
MachinesConfig.EssenceStorage.RADIUS_HORIZONTAL
)
) { it is ExperienceOrb }
for ((ent, _) in entities) {
ent as ExperienceOrb
for (i in 1 .. ent.count) {
experienceStored += ent.value
ent.count--
level!!.playSound(null, ent.x, ent.y, ent.z,
SoundEvents.EXPERIENCE_ORB_PICKUP, SoundSource.BLOCKS,
0.1F, 0.5F + level!!.random.nextFloat() * 0.25F
)
}
if (ent.count <= 0) {
ent.discard()
}
}
}
}
if (hasFillState) {
val filled = experienceStored > 0
if (isFilledState != filled) {
level?.setBlock(blockPos, blockState.setValue(EssenceStorageBlock.FILLED, filled), Block.UPDATE_CLIENTS)
}
} }
} }
} }

View File

@ -9,11 +9,14 @@ import net.minecraft.world.entity.player.Player
import net.minecraft.world.item.DyeColor import net.minecraft.world.item.DyeColor
import net.minecraft.world.level.BlockGetter import net.minecraft.world.level.BlockGetter
import net.minecraft.world.level.Level import net.minecraft.world.level.Level
import net.minecraft.world.level.block.Block
import net.minecraft.world.level.block.EntityBlock import net.minecraft.world.level.block.EntityBlock
import net.minecraft.world.level.block.entity.BlockEntity import net.minecraft.world.level.block.entity.BlockEntity
import net.minecraft.world.level.block.entity.BlockEntityTicker import net.minecraft.world.level.block.entity.BlockEntityTicker
import net.minecraft.world.level.block.entity.BlockEntityType import net.minecraft.world.level.block.entity.BlockEntityType
import net.minecraft.world.level.block.state.BlockState import net.minecraft.world.level.block.state.BlockState
import net.minecraft.world.level.block.state.StateDefinition
import net.minecraft.world.level.block.state.properties.BooleanProperty
import net.minecraft.world.level.material.MapColor import net.minecraft.world.level.material.MapColor
import net.minecraft.world.level.material.PushReaction import net.minecraft.world.level.material.PushReaction
import net.minecraft.world.phys.BlockHitResult import net.minecraft.world.phys.BlockHitResult
@ -44,6 +47,8 @@ class EssenceStorageBlock(val color: DyeColor?) : RotatableMatteryBlock(Properti
acceptor(TranslatableComponent("otm.gui.experience_levels", getLevelFromXp(l.asLong)).withStyle(ChatFormatting.GRAY)) acceptor(TranslatableComponent("otm.gui.experience_levels", getLevelFromXp(l.asLong)).withStyle(ChatFormatting.GRAY))
} }
} }
registerDefaultState(getStateDefinition().any().setValue(FILLED, false))
} }
override fun newBlockEntity(pPos: BlockPos, pState: BlockState): BlockEntity { override fun newBlockEntity(pPos: BlockPos, pState: BlockState): BlockEntity {
@ -67,6 +72,11 @@ class EssenceStorageBlock(val color: DyeColor?) : RotatableMatteryBlock(Properti
return super.use(blockState, level, blockPos, ply, hand, blockHitResult) return super.use(blockState, level, blockPos, ply, hand, blockHitResult)
} }
override fun createBlockStateDefinition(builder: StateDefinition.Builder<Block, BlockState>) {
super.createBlockStateDefinition(builder)
builder.add(FILLED)
}
private val shapes = getShapeForEachState(rotationProperty) { BlockShapes.ESSENCE_STORAGE.rotateFromNorth(it[rotationProperty]).computeShape() } private val shapes = getShapeForEachState(rotationProperty) { BlockShapes.ESSENCE_STORAGE.rotateFromNorth(it[rotationProperty]).computeShape() }
@Suppress("override_deprecation") @Suppress("override_deprecation")
@ -78,4 +88,8 @@ class EssenceStorageBlock(val color: DyeColor?) : RotatableMatteryBlock(Properti
): VoxelShape { ): VoxelShape {
return shapes[state]!! return shapes[state]!!
} }
companion object {
val FILLED = BooleanProperty.create("filled")
}
} }

View File

@ -219,7 +219,21 @@ object MachinesConfig : AbstractConfig("machines") {
} }
} }
object EssenceStorage {
init {
builder.push(MNames.ESSENCE_STORAGE)
}
val RADIUS_HORIZONTAL: Double by builder.defineInRange("RADIUS_HORIZONTAL", 5.0, 0.0, Double.MAX_VALUE / 4.0)
val RADIUS_VERTICAL: Double by builder.defineInRange("RADIUS_VERTICAL", 2.0, 0.0, Double.MAX_VALUE / 4.0)
init {
builder.pop()
}
}
init { init {
Upgrades Upgrades
EssenceStorage
} }
} }

View File

@ -8,10 +8,12 @@ import net.minecraft.client.renderer.item.ItemProperties
import net.minecraft.core.BlockPos import net.minecraft.core.BlockPos
import net.minecraft.core.cauldron.CauldronInteraction import net.minecraft.core.cauldron.CauldronInteraction
import net.minecraft.core.registries.Registries import net.minecraft.core.registries.Registries
import net.minecraft.nbt.CompoundTag
import net.minecraft.resources.ResourceLocation import net.minecraft.resources.ResourceLocation
import net.minecraft.world.entity.EntityType import net.minecraft.world.entity.EntityType
import net.minecraft.world.entity.ai.village.poi.PoiType import net.minecraft.world.entity.ai.village.poi.PoiType
import net.minecraft.world.entity.ai.village.poi.PoiTypes import net.minecraft.world.entity.ai.village.poi.PoiTypes
import net.minecraft.world.item.BlockItem
import net.minecraft.world.item.DyeColor import net.minecraft.world.item.DyeColor
import net.minecraft.world.item.DyeableArmorItem import net.minecraft.world.item.DyeableArmorItem
import net.minecraft.world.item.Item import net.minecraft.world.item.Item
@ -389,6 +391,18 @@ object MRegistry : IBlockItemRegistryAcceptor {
} }
} }
} }
for (item in MItems.ESSENCE_STORAGE.values) {
ItemProperties.register(item, ResourceLocation(OverdriveThatMatters.MOD_ID, "is_filled")) { stack, _, _, _ ->
val tag = (stack.tag?.get(BlockItem.BLOCK_ENTITY_TAG) as? CompoundTag)?: return@register 0f
if (tag.contains("experienceStored") && tag.getLong("experienceStored") > 0.0) {
1f
} else {
0f
}
}
}
} }
} }

View File

@ -163,6 +163,8 @@ public net.minecraft.world.entity.boss.wither.WitherBoss f_31432_ # TARGETING_CO
public-f net.minecraft.world.entity.boss.wither.WitherBoss f_31431_ # LIVING_ENTITY_SELECTOR public-f net.minecraft.world.entity.boss.wither.WitherBoss f_31431_ # LIVING_ENTITY_SELECTOR
public net.minecraft.world.entity.ai.targeting.TargetingConditions f_26879_ # selector public net.minecraft.world.entity.ai.targeting.TargetingConditions f_26879_ # selector
public net.minecraft.world.entity.ExperienceOrb f_147072_ # count
public net.minecraft.advancements.critereon.InventoryChangeTrigger$TriggerInstance f_43179_ public net.minecraft.advancements.critereon.InventoryChangeTrigger$TriggerInstance f_43179_
public net.minecraft.advancements.critereon.InventoryChangeTrigger$TriggerInstance f_43178_ public net.minecraft.advancements.critereon.InventoryChangeTrigger$TriggerInstance f_43178_
public net.minecraft.advancements.critereon.InventoryChangeTrigger$TriggerInstance f_43177_ public net.minecraft.advancements.critereon.InventoryChangeTrigger$TriggerInstance f_43177_

View File

@ -1,74 +0,0 @@
{
"multipart": [
{
"apply": {
"model": "overdrive_that_matters:block/storage_cable_core"
}
},
{
"when": {
"connect_south": true
},
"apply": {
"model": "overdrive_that_matters:block/storage_cable_connection"
}
},
{
"when": {
"connect_west": true
},
"apply": {
"model": "overdrive_that_matters:block/storage_cable_connection",
"y": 90
}
},
{
"when": {
"connect_north": true
},
"apply": {
"model": "overdrive_that_matters:block/storage_cable_connection",
"y": 180
}
},
{
"when": {
"connect_east": true
},
"apply": {
"model": "overdrive_that_matters:block/storage_cable_connection",
"y": 270
}
},
{
"when": {
"connect_up": true
},
"apply": {
"model": "overdrive_that_matters:block/storage_cable_connection",
"x": 90
}
},
{
"when": {
"connect_down": true
},
"apply": {
"model": "overdrive_that_matters:block/storage_cable_connection",
"x": 270
}
}
]
}

View File

@ -1,74 +0,0 @@
{
"multipart": [
{
"apply": {
"model": "overdrive_that_matters:block/storage_cable_core"
}
},
{
"when": {
"connect_south": true
},
"apply": {
"model": "overdrive_that_matters:block/storage_cable_connection"
}
},
{
"when": {
"connect_west": true
},
"apply": {
"model": "overdrive_that_matters:block/storage_cable_connection",
"y": 90
}
},
{
"when": {
"connect_north": true
},
"apply": {
"model": "overdrive_that_matters:block/storage_cable_connection",
"y": 180
}
},
{
"when": {
"connect_east": true
},
"apply": {
"model": "overdrive_that_matters:block/storage_cable_connection",
"y": 270
}
},
{
"when": {
"connect_up": true
},
"apply": {
"model": "overdrive_that_matters:block/storage_cable_connection",
"x": 90
}
},
{
"when": {
"connect_down": true
},
"apply": {
"model": "overdrive_that_matters:block/storage_cable_connection",
"x": 270
}
}
]
}

View File

@ -1,74 +0,0 @@
{
"multipart": [
{
"apply": {
"model": "overdrive_that_matters:block/matter_cable_core"
}
},
{
"when": {
"connect_south": true
},
"apply": {
"model": "overdrive_that_matters:block/matter_cable_connection"
}
},
{
"when": {
"connect_west": true
},
"apply": {
"model": "overdrive_that_matters:block/matter_cable_connection",
"y": 90
}
},
{
"when": {
"connect_north": true
},
"apply": {
"model": "overdrive_that_matters:block/matter_cable_connection",
"y": 180
}
},
{
"when": {
"connect_east": true
},
"apply": {
"model": "overdrive_that_matters:block/matter_cable_connection",
"y": 270
}
},
{
"when": {
"connect_up": true
},
"apply": {
"model": "overdrive_that_matters:block/matter_cable_connection",
"x": 90
}
},
{
"when": {
"connect_down": true
},
"apply": {
"model": "overdrive_that_matters:block/matter_cable_connection",
"x": 270
}
}
]
}

View File

@ -1,74 +0,0 @@
{
"multipart": [
{
"apply": {
"model": "overdrive_that_matters:block/storage_cable_core"
}
},
{
"when": {
"connect_south": true
},
"apply": {
"model": "overdrive_that_matters:block/storage_cable_connection"
}
},
{
"when": {
"connect_west": true
},
"apply": {
"model": "overdrive_that_matters:block/storage_cable_connection",
"y": 90
}
},
{
"when": {
"connect_north": true
},
"apply": {
"model": "overdrive_that_matters:block/storage_cable_connection",
"y": 180
}
},
{
"when": {
"connect_east": true
},
"apply": {
"model": "overdrive_that_matters:block/storage_cable_connection",
"y": 270
}
},
{
"when": {
"connect_up": true
},
"apply": {
"model": "overdrive_that_matters:block/storage_cable_connection",
"x": 90
}
},
{
"when": {
"connect_down": true
},
"apply": {
"model": "overdrive_that_matters:block/storage_cable_connection",
"x": 270
}
}
]
}

View File

@ -1,74 +0,0 @@
{
"multipart": [
{
"apply": {
"model": "overdrive_that_matters:block/storage_cable_core"
}
},
{
"when": {
"connect_south": true
},
"apply": {
"model": "overdrive_that_matters:block/storage_cable_connection"
}
},
{
"when": {
"connect_west": true
},
"apply": {
"model": "overdrive_that_matters:block/storage_cable_connection",
"y": 90
}
},
{
"when": {
"connect_north": true
},
"apply": {
"model": "overdrive_that_matters:block/storage_cable_connection",
"y": 180
}
},
{
"when": {
"connect_east": true
},
"apply": {
"model": "overdrive_that_matters:block/storage_cable_connection",
"y": 270
}
},
{
"when": {
"connect_up": true
},
"apply": {
"model": "overdrive_that_matters:block/storage_cable_connection",
"x": 90
}
},
{
"when": {
"connect_down": true
},
"apply": {
"model": "overdrive_that_matters:block/storage_cable_connection",
"x": 270
}
}
]
}

View File

@ -1,74 +0,0 @@
{
"multipart": [
{
"apply": {
"model": "overdrive_that_matters:block/storage_cable_core"
}
},
{
"when": {
"connect_south": true
},
"apply": {
"model": "overdrive_that_matters:block/storage_cable_connection"
}
},
{
"when": {
"connect_west": true
},
"apply": {
"model": "overdrive_that_matters:block/storage_cable_connection",
"y": 90
}
},
{
"when": {
"connect_north": true
},
"apply": {
"model": "overdrive_that_matters:block/storage_cable_connection",
"y": 180
}
},
{
"when": {
"connect_east": true
},
"apply": {
"model": "overdrive_that_matters:block/storage_cable_connection",
"y": 270
}
},
{
"when": {
"connect_up": true
},
"apply": {
"model": "overdrive_that_matters:block/storage_cable_connection",
"x": 90
}
},
{
"when": {
"connect_down": true
},
"apply": {
"model": "overdrive_that_matters:block/storage_cable_connection",
"x": 270
}
}
]
}

View File

@ -0,0 +1,19 @@
{
"parent": "block/block",
"texture_size": [16, 16],
"textures": {
"particle": "#0"
},
"elements": [
{
"from": [ 5, 5, 11 ],
"to": [ 11, 11, 16 ],
"faces": {
"down": {"uv": [6, 0, 11, 6],"rotation": 90, "texture": "#0" },
"up": {"uv": [6, 0, 11, 6],"rotation": 90, "texture": "#0" },
"west": {"uv": [6, 0, 11, 6], "texture": "#0" },
"east": {"uv": [6, 0, 11, 6], "texture": "#0" }
}
}
]
}

View File

@ -0,0 +1,21 @@
{
"parent": "block/block",
"texture_size": [16, 16],
"textures": {
"particle": "#0"
},
"elements": [
{
"from": [ 5, 5, 5 ],
"to": [ 11, 11, 11 ],
"faces": {
"down": {"uv": [0, 0, 6, 6], "texture": "#0" },
"up": {"uv": [0, 0, 6, 6], "texture": "#0" },
"north": {"uv": [0, 0, 6, 6], "texture": "#0" },
"south": {"uv": [0, 0, 6, 6], "texture": "#0" },
"west": {"uv": [0, 0, 6, 6], "texture": "#0" },
"east": {"uv": [0, 0, 6, 6], "texture": "#0" }
}
}
]
}

View File

@ -0,0 +1,124 @@
{
"parent": "block/block",
"credit": "Made with Blockbench",
"render_type": "cutout",
"texture_size": [32, 64],
"textures": {
"0": "overdrive_that_matters:block/essence_storage",
"particle": "#0"
},
"elements": [
{
"name": "body",
"from": [0, 0, 0],
"to": [16, 2, 16],
"faces": {
"north": {"uv": [0, 4, 8, 4.5], "texture": "#0"},
"east": {"uv": [0, 4, 8, 4.5], "texture": "#0"},
"south": {"uv": [0, 4, 8, 4.5], "texture": "#0"},
"west": {"uv": [0, 4, 8, 4.5], "texture": "#0"},
"up": {"uv": [0, 0, 8, 4], "texture": "#0"},
"down": {"uv": [0, 0, 8, 4], "texture": "#0"}
}
},
{
"name": "body",
"from": [0, 3, 0],
"to": [16, 5, 16],
"faces": {
"north": {"uv": [8, 7.25, 16, 7.75], "texture": "#0"},
"east": {"uv": [8, 7.25, 16, 7.75], "texture": "#0"},
"south": {"uv": [8, 7.25, 16, 7.75], "texture": "#0"},
"west": {"uv": [8, 7.25, 16, 7.75], "texture": "#0"},
"up": {"uv": [0, 7.25, 8, 11.25], "rotation": 180, "texture": "#0"},
"down": {"uv": [0, 0, 8, 4], "texture": "#0"}
}
},
{
"name": "body",
"from": [9, 5, 0],
"to": [16, 16, 14],
"faces": {
"north": {"uv": [12, 0, 15.5, 2.75], "texture": "#0"},
"east": {"uv": [9, 7.75, 16, 10.5], "texture": "#0"},
"south": {"uv": [11, 4.5, 14.5, 7.25], "texture": "#0"},
"west": {"uv": [0, 4.5, 7, 7.25], "texture": "#0"},
"up": {"uv": [0, 7.75, 3.5, 11.25], "rotation": 180, "texture": "#0"}
}
},
{
"name": "body",
"from": [0, 10, 14],
"to": [16, 16, 16],
"faces": {
"east": {"uv": [8, 7.75, 9, 9.25], "texture": "#0"},
"south": {"uv": [0, 11.25, 8, 12.75], "texture": "#0"},
"west": {"uv": [14.5, 4.5, 15.5, 6], "texture": "#0"},
"up": {"uv": [0, 7.25, 8, 7.75], "rotation": 180, "texture": "#0"},
"down": {"uv": [0, 7.25, 8, 7.75], "texture": "#0"}
}
},
{
"name": "body",
"from": [0, 5, 9],
"to": [9, 16, 14],
"faces": {
"north": {"uv": [7, 4.5, 11.5, 7.25], "texture": "#0"},
"south": {"uv": [5, 4.5, 9.5, 7.25], "texture": "#0"},
"west": {"uv": [12, 4.5, 14.5, 7.25], "texture": "#0"},
"up": {"uv": [3.5, 7.75, 8, 9], "rotation": 180, "texture": "#0"}
}
},
{
"name": "body",
"from": [1, 2, 1],
"to": [15, 3, 15],
"faces": {
"north": {"uv": [0.5, 4.25, 7.5, 4.5], "texture": "#0"},
"east": {"uv": [0.5, 4.25, 7.5, 4.5], "texture": "#0"},
"south": {"uv": [0.5, 4.25, 7.5, 4.5], "texture": "#0"},
"west": {"uv": [0.5, 4.25, 7.5, 4.5], "texture": "#0"}
}
},
{
"name": "body",
"from": [1, 5, 14],
"to": [15, 10, 15],
"faces": {
"east": {"uv": [15.5, 10.5, 16, 11.75], "texture": "#0"},
"south": {"uv": [8.5, 10.5, 15.5, 11.75], "texture": "#0"},
"west": {"uv": [8, 10.5, 8.5, 11.75], "texture": "#0"}
}
},
{
"name": "bottle",
"from": [1, 13, 1],
"to": [9, 15, 9],
"faces": {
"north": {"uv": [8, 2, 12, 2.5], "texture": "#0"},
"west": {"uv": [8, 2, 12, 2.5], "texture": "#0"},
"up": {"uv": [8, 0, 12, 2], "texture": "#0"},
"down": {"uv": [8, 0, 12, 2], "texture": "#0"}
}
},
{
"name": "bottle",
"from": [1, 5, 1],
"to": [9, 6, 9],
"faces": {
"north": {"uv": [8, 4.25, 12, 4.5], "texture": "#0"},
"west": {"uv": [8, 4.25, 12, 4.5], "texture": "#0"},
"up": {"uv": [8, 0, 12, 2], "texture": "#0"}
}
},
{
"name": "bottle",
"from": [1, 6, 1],
"to": [9, 13, 9],
"faces": {
"north": {"uv": [8, 2.5, 12, 4.25], "texture": "#0"},
"west": {"uv": [8, 2.5, 12, 4.25], "texture": "#0"}
}
}
]
}

View File

@ -1,10 +1,12 @@
{ {
"parent": "block/block",
"credit": "Made with Blockbench", "credit": "Made with Blockbench",
"render_type": "cutout", "render_type": "cutout",
"texture_size": [32, 64], "texture_size": [32, 64],
"textures": { "textures": {
"0": "overdrive_that_matters:block/essence_storage", "0": "overdrive_that_matters:block/essence_storage",
"particle": "overdrive_that_matters:block/essence_storage" "1": "overdrive_that_matters:block/liquid_xp_still",
"particle": "#0"
}, },
"elements": [ "elements": [
{ {
@ -92,15 +94,15 @@
{ {
"name": "experience", "name": "experience",
"from": [1.5, 5, 1.5], "from": [1.5, 5, 1.5],
"to": [8.5, 11, 8.5], "to": [8.5, 13, 8.5],
"faces": { "faces": {
"north": {"uv": [8, 14.5, 11.5, 16], "texture": "#0"}, "north": {"uv": [7.5, 3, 14.5, 11], "texture": "#1"},
"east": {"uv": [12.5, 12, 16, 13.5], "texture": "#0"}, "west": {"uv": [1.5, 3, 8.5, 11], "texture": "#1"}
"south": {"uv": [9, 12, 12.5, 13.5], "texture": "#0"},
"west": {"uv": [11.5, 14.5, 15, 16], "texture": "#0"},
"up": {"uv": [9.5, 12.5, 13, 14.25], "texture": "#0"}
}, },
"forge_data": { "block_light": 15, "sky_light": 15 } "forge_data": {
"block_light": 15,
"sky_light": 15
}
}, },
{ {
"name": "bottle", "name": "bottle",
@ -132,36 +134,5 @@
"west": {"uv": [8, 2.5, 12, 4.25], "texture": "#0"} "west": {"uv": [8, 2.5, 12, 4.25], "texture": "#0"}
} }
} }
], ]
"display": {
"thirdperson_righthand": {
"rotation": [75, 45, 0],
"translation": [0, 2.5, 0],
"scale": [0.375, 0.375, 0.375]
},
"thirdperson_lefthand": {
"rotation": [75, 45, 0],
"translation": [0, 2.5, 0],
"scale": [0.375, 0.375, 0.375]
},
"firstperson_righthand": {
"rotation": [0, 45, 0],
"scale": [0.4, 0.4, 0.4]
},
"firstperson_lefthand": {
"rotation": [0, 225, 0],
"scale": [0.4, 0.4, 0.4]
},
"ground": {
"translation": [0, 3, 0],
"scale": [0.25, 0.25, 0.25]
},
"gui": {
"rotation": [30, 225, 0],
"scale": [0.625, 0.625, 0.625]
},
"fixed": {
"scale": [0.5, 0.5, 0.5]
}
}
} }

View File

@ -1,20 +0,0 @@
{
"parent": "block/block",
"texture_size": [16, 16],
"textures": {
"connection": "overdrive_that_matters:block/storage_cable",
"particle": "overdrive_that_matters:block/storage_cable"
},
"elements": [
{
"from": [ 5, 5, 11 ],
"to": [ 11, 11, 16 ],
"faces": {
"down": {"uv": [6, 0, 11, 6],"rotation": 90, "texture": "#connection" },
"up": {"uv": [6, 0, 11, 6],"rotation": 90, "texture": "#connection" },
"west": {"uv": [6, 0, 11, 6], "texture": "#connection" },
"east": {"uv": [6, 0, 11, 6], "texture": "#connection" }
}
}
]
}

View File

@ -1,22 +0,0 @@
{
"parent": "block/block",
"texture_size": [16, 16],
"textures": {
"core": "overdrive_that_matters:block/storage_cable",
"particle": "overdrive_that_matters:block/storage_cable"
},
"elements": [
{
"from": [ 5, 5, 5 ],
"to": [ 11, 11, 11 ],
"faces": {
"down": {"uv": [0, 0, 6, 6], "texture": "#core" },
"up": {"uv": [0, 0, 6, 6], "texture": "#core" },
"north": {"uv": [0, 0, 6, 6], "texture": "#core" },
"south": {"uv": [0, 0, 6, 6], "texture": "#core" },
"west": {"uv": [0, 0, 6, 6], "texture": "#core" },
"east": {"uv": [0, 0, 6, 6], "texture": "#core" }
}
}
]
}

View File

@ -0,0 +1,49 @@
{
"parent": "block/block",
"texture_size": [16, 16],
"textures": {
"particle": "#0"
},
"elements": [
{
"from": [5, 5, 5],
"to": [11, 11, 11],
"faces": {
"north": {"uv": [0, 0, 6, 6], "texture": "#0"},
"south": {"uv": [0, 0, 6, 6], "texture": "#0"},
"up": {"uv": [0, 0, 6, 6], "rotation": 180, "texture": "#0"},
"down": {"uv": [0, 0, 6, 6], "rotation": 180, "texture": "#0"}
}
},
{
"from": [0, 5, 5],
"to": [5, 11, 11],
"faces": {
"north": {"uv": [6, 0, 11, 6], "texture": "#0"},
"south": {"uv": [6, 6, 11, 0], "rotation": 180, "texture": "#0"},
"west": {"uv": [0, 0, 6, 6], "texture": "#0"},
"up": {"uv": [6, 0, 11, 6], "rotation": 180, "texture": "#0"},
"down": {"uv": [6, 0, 11, 6], "rotation": 180, "texture": "#0"}
}
},
{
"from": [11, 5, 5],
"to": [16, 11, 11],
"faces": {
"north": {"uv": [11, 0, 16, 6], "texture": "#0"},
"east": {"uv": [0, 0, 6, 6], "texture": "#0"},
"south": {"uv": [11, 6, 16, 0], "rotation": 180, "texture": "#0"},
"up": {"uv": [11, 0, 16, 6], "rotation": 180, "texture": "#0"},
"down": {"uv": [11, 0, 16, 6], "rotation": 180, "texture": "#0"}
}
}
],
"gui_light": "front",
"display": {
"gui": {
"rotation": [0, 0, 0],
"translation": [0, 0, 0],
"scale": [1, 1, 1]
}
}
}

View File

@ -0,0 +1,50 @@
{
"parent": "block/block",
"texture_size": [16, 16],
"textures": {
"0": "overdrive_that_matters:block/matter_cable",
"particle": "#0"
},
"elements": [
{
"from": [6, 6, 6],
"to": [10, 10, 10],
"faces": {
"north": {"uv": [0, 0, 4, 4], "texture": "#0"},
"south": {"uv": [0, 0, 4, 4], "texture": "#0"},
"up": {"uv": [0, 0, 4, 4], "texture": "#0"},
"down": {"uv": [0, 0, 4, 4], "texture": "#0"}
}
},
{
"from": [0, 6, 6],
"to": [6, 10, 10],
"faces": {
"north": {"uv": [4, 0, 10, 4], "texture": "#0"},
"south": {"uv": [10, 0, 4, 4], "texture": "#0"},
"west": {"uv": [0, 0, 4, 4], "texture": "#0"},
"up": {"uv": [10, 0, 4, 4], "texture": "#0"},
"down": {"uv": [10, 0, 4, 4], "texture": "#0"}
}
},
{
"from": [10, 6, 6],
"to": [16, 10, 10],
"faces": {
"north": {"uv": [10, 0, 16, 4], "texture": "#0"},
"east": {"uv": [0, 0, 4, 4], "texture": "#0"},
"south": {"uv": [16, 0, 10, 4], "texture": "#0"},
"up": {"uv": [16, 0, 10, 4], "texture": "#0"},
"down": {"uv": [16, 0, 10, 4], "texture": "#0"}
}
}
],
"gui_light": "front",
"display": {
"gui": {
"rotation": [0, 0, 0],
"translation": [0, 0, 0],
"scale": [1, 1, 1]
}
}
}

View File

@ -1,22 +0,0 @@
{
"parent": "block/block",
"texture_size": [16, 16],
"textures": {
"core": "overdrive_that_matters:block/storage_cable",
"particle": "overdrive_that_matters:block/storage_cable"
},
"elements": [
{
"from": [ 6, 6, 6 ],
"to": [ 10, 10, 10 ],
"faces": {
"down": {"uv": [0, 0, 4, 4], "texture": "#core" },
"up": {"uv": [0, 0, 4, 4], "texture": "#core" },
"north": {"uv": [0, 0, 4, 4], "texture": "#core" },
"south": {"uv": [0, 0, 4, 4], "texture": "#core" },
"west": {"uv": [0, 0, 4, 4], "texture": "#core" },
"east": {"uv": [0, 0, 4, 4], "texture": "#core" }
}
}
]
}