Inverted redstone signal laboratory lamp
This commit is contained in:
parent
b68ef58d0c
commit
8c7c3de01c
@ -75,6 +75,7 @@ fun addDecorativeData(blockStateProvider: MatteryBlockStateProvider, itemModelPr
|
|||||||
}
|
}
|
||||||
|
|
||||||
itemModelProvider.block(MItems.LABORATORY_LAMP)
|
itemModelProvider.block(MItems.LABORATORY_LAMP)
|
||||||
|
itemModelProvider.block(MItems.LABORATORY_LAMP_INVERTED, MItems.LABORATORY_LAMP.registryName!!.path + "_unlit")
|
||||||
itemModelProvider.block(MItems.DANGER_STRIPE_BLOCK)
|
itemModelProvider.block(MItems.DANGER_STRIPE_BLOCK)
|
||||||
itemModelProvider.block(MItems.METAL_BEAM)
|
itemModelProvider.block(MItems.METAL_BEAM)
|
||||||
|
|
||||||
@ -86,6 +87,14 @@ fun addDecorativeData(blockStateProvider: MatteryBlockStateProvider, itemModelPr
|
|||||||
.rotationY(it[RotatableMatteryBlock.FACING_FULL].toYRotBlockstate())
|
.rotationY(it[RotatableMatteryBlock.FACING_FULL].toYRotBlockstate())
|
||||||
.build()
|
.build()
|
||||||
}
|
}
|
||||||
|
|
||||||
|
blockStateProvider.getVariantBuilder(MBlocks.LABORATORY_LAMP_INVERTED).forAllStates {
|
||||||
|
return@forAllStates ConfiguredModel.builder()
|
||||||
|
.modelFile(if (it[BlockStateProperties.LIT]) labLampOn!! else labLampOff!!)
|
||||||
|
.rotationX(it[RotatableMatteryBlock.FACING_FULL].toXRotBlockstate())
|
||||||
|
.rotationY(it[RotatableMatteryBlock.FACING_FULL].toYRotBlockstate())
|
||||||
|
.build()
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
blockModelProvider.exec {
|
blockModelProvider.exec {
|
||||||
|
@ -315,6 +315,7 @@ private fun blocks(provider: MatteryLanguageProvider) {
|
|||||||
add(MBlocks.GRAVITATION_STABILIZER, "desc4", "Too weak gravitation field will cause singularity to melt and evaporate away very fast")
|
add(MBlocks.GRAVITATION_STABILIZER, "desc4", "Too weak gravitation field will cause singularity to melt and evaporate away very fast")
|
||||||
|
|
||||||
add(MBlocks.LABORATORY_LAMP, "Laboratory Lamp")
|
add(MBlocks.LABORATORY_LAMP, "Laboratory Lamp")
|
||||||
|
add(MBlocks.LABORATORY_LAMP_INVERTED, "Laboratory Lamp (Inverted Signal)")
|
||||||
add(MBlocks.DANGER_STRIPE_BLOCK, "Danger Stripes")
|
add(MBlocks.DANGER_STRIPE_BLOCK, "Danger Stripes")
|
||||||
add(MBlocks.METAL_BEAM, "Metal Beam")
|
add(MBlocks.METAL_BEAM, "Metal Beam")
|
||||||
}
|
}
|
||||||
|
@ -33,6 +33,7 @@ fun addLootTables(lootTables: LootTables) {
|
|||||||
lootTables.dropsOther(MBlocks.GRAVITATION_STABILIZER_LENS, MBlocks.GRAVITATION_STABILIZER)
|
lootTables.dropsOther(MBlocks.GRAVITATION_STABILIZER_LENS, MBlocks.GRAVITATION_STABILIZER)
|
||||||
|
|
||||||
lootTables.dropsSelf(MBlocks.LABORATORY_LAMP)
|
lootTables.dropsSelf(MBlocks.LABORATORY_LAMP)
|
||||||
|
lootTables.dropsSelf(MBlocks.LABORATORY_LAMP_INVERTED)
|
||||||
lootTables.dropsSelf(MBlocks.DANGER_STRIPE_BLOCK)
|
lootTables.dropsSelf(MBlocks.DANGER_STRIPE_BLOCK)
|
||||||
lootTables.dropsSelf(MBlocks.METAL_BEAM)
|
lootTables.dropsSelf(MBlocks.METAL_BEAM)
|
||||||
|
|
||||||
|
@ -13,6 +13,7 @@ import ru.dbotthepony.mc.otm.OverdriveThatMatters
|
|||||||
import ru.dbotthepony.mc.otm.core.registryName
|
import ru.dbotthepony.mc.otm.core.registryName
|
||||||
import ru.dbotthepony.mc.otm.datagen.DataGen
|
import ru.dbotthepony.mc.otm.datagen.DataGen
|
||||||
import ru.dbotthepony.mc.otm.registry.MItemTags
|
import ru.dbotthepony.mc.otm.registry.MItemTags
|
||||||
|
import ru.dbotthepony.mc.otm.registry.MItems
|
||||||
import ru.dbotthepony.mc.otm.registry.MRegistry
|
import ru.dbotthepony.mc.otm.registry.MRegistry
|
||||||
import java.util.function.Consumer
|
import java.util.function.Consumer
|
||||||
|
|
||||||
@ -163,4 +164,14 @@ fun addDecorativesRecipes(provider: MatteryRecipeProvider, consumer: Consumer<Fi
|
|||||||
.unlockedBy("has_colored_tritanium_glass", has(paneItem))
|
.unlockedBy("has_colored_tritanium_glass", has(paneItem))
|
||||||
.save(consumer, ResourceLocation(DataGen.MOD_ID, "${paneItem.registryName!!.path}_alt"))
|
.save(consumer, ResourceLocation(DataGen.MOD_ID, "${paneItem.registryName!!.path}_alt"))
|
||||||
}
|
}
|
||||||
|
|
||||||
|
ShapelessRecipeBuilder(MItems.LABORATORY_LAMP, 1)
|
||||||
|
.requires(MItems.LABORATORY_LAMP_INVERTED)
|
||||||
|
.unlockedBy(MItems.LABORATORY_LAMP_INVERTED)
|
||||||
|
.save(consumer, MItems.LABORATORY_LAMP.registryName!!.toString() + "_inv")
|
||||||
|
|
||||||
|
ShapelessRecipeBuilder(MItems.LABORATORY_LAMP_INVERTED, 1)
|
||||||
|
.requires(MItems.LABORATORY_LAMP)
|
||||||
|
.unlockedBy(MItems.LABORATORY_LAMP)
|
||||||
|
.save(consumer, MItems.LABORATORY_LAMP_INVERTED.registryName!!.toString() + "_inv")
|
||||||
}
|
}
|
||||||
|
@ -75,6 +75,7 @@ fun addTags(tagsProvider: TagsProvider) {
|
|||||||
tagsProvider.requiresPickaxe(MRegistry.DECORATIVE_CRATE.allBlocks.values, Tiers.STONE)
|
tagsProvider.requiresPickaxe(MRegistry.DECORATIVE_CRATE.allBlocks.values, Tiers.STONE)
|
||||||
|
|
||||||
tagsProvider.requiresPickaxe(MBlocks.LABORATORY_LAMP, Tiers.IRON)
|
tagsProvider.requiresPickaxe(MBlocks.LABORATORY_LAMP, Tiers.IRON)
|
||||||
|
tagsProvider.requiresPickaxe(MBlocks.LABORATORY_LAMP_INVERTED, Tiers.IRON)
|
||||||
tagsProvider.requiresPickaxe(MBlocks.METAL_BEAM, Tiers.IRON)
|
tagsProvider.requiresPickaxe(MBlocks.METAL_BEAM, Tiers.IRON)
|
||||||
tagsProvider.requiresPickaxe(MBlocks.DANGER_STRIPE_BLOCK)
|
tagsProvider.requiresPickaxe(MBlocks.DANGER_STRIPE_BLOCK)
|
||||||
|
|
||||||
|
@ -76,7 +76,7 @@ class LaboratoryLampLight : Block(Properties.of(Material.AIR).strength(-1.0F, 36
|
|||||||
val target = pos + facing * i
|
val target = pos + facing * i
|
||||||
val targetState = level.getBlockState(target)
|
val targetState = level.getBlockState(target)
|
||||||
|
|
||||||
if (targetState.block == MBlocks.LABORATORY_LAMP && targetState[BlockStateProperties.LIT]) {
|
if (targetState.block is LaboratoryLamp && targetState[BlockStateProperties.LIT]) {
|
||||||
hit = true
|
hit = true
|
||||||
(targetState.block as LaboratoryLamp).doTick(targetState, level, target)
|
(targetState.block as LaboratoryLamp).doTick(targetState, level, target)
|
||||||
break
|
break
|
||||||
@ -92,9 +92,9 @@ class LaboratoryLampLight : Block(Properties.of(Material.AIR).strength(-1.0F, 36
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
class LaboratoryLamp : Block(Properties.of(Material.METAL).explosionResistance(12f).destroyTime(2f).requiresCorrectToolForDrops()) {
|
class LaboratoryLamp(val invertRedstone: Boolean) : Block(Properties.of(Material.METAL).explosionResistance(12f).destroyTime(2f).requiresCorrectToolForDrops()) {
|
||||||
init {
|
init {
|
||||||
registerDefaultState(stateDefinition.any().setValue(BlockStateProperties.LIT, true))
|
registerDefaultState(stateDefinition.any().setValue(BlockStateProperties.LIT, !invertRedstone))
|
||||||
}
|
}
|
||||||
|
|
||||||
override fun createBlockStateDefinition(builder: StateDefinition.Builder<Block, BlockState>) {
|
override fun createBlockStateDefinition(builder: StateDefinition.Builder<Block, BlockState>) {
|
||||||
@ -104,7 +104,7 @@ class LaboratoryLamp : Block(Properties.of(Material.METAL).explosionResistance(1
|
|||||||
}
|
}
|
||||||
|
|
||||||
override fun getStateForPlacement(context: BlockPlaceContext): BlockState {
|
override fun getStateForPlacement(context: BlockPlaceContext): BlockState {
|
||||||
return super.getStateForPlacement(context)!!.setValue(BlockStateProperties.LIT, true).setValue(RotatableMatteryBlock.FACING_FULL, context.nearestLookingDirection)
|
return super.getStateForPlacement(context)!!.setValue(BlockStateProperties.LIT, !invertRedstone).setValue(RotatableMatteryBlock.FACING_FULL, context.nearestLookingDirection)
|
||||||
}
|
}
|
||||||
|
|
||||||
@Suppress("OVERRIDE_DEPRECATION")
|
@Suppress("OVERRIDE_DEPRECATION")
|
||||||
@ -130,7 +130,13 @@ class LaboratoryLamp : Block(Properties.of(Material.METAL).explosionResistance(1
|
|||||||
return@once
|
return@once
|
||||||
|
|
||||||
val lit = state[BlockStateProperties.LIT]
|
val lit = state[BlockStateProperties.LIT]
|
||||||
val shouldBeLit = !level.hasNeighborSignal(pos)
|
val shouldBeLit: Boolean
|
||||||
|
|
||||||
|
if (invertRedstone) {
|
||||||
|
shouldBeLit = level.hasNeighborSignal(pos)
|
||||||
|
} else {
|
||||||
|
shouldBeLit = !level.hasNeighborSignal(pos)
|
||||||
|
}
|
||||||
|
|
||||||
if (lit != shouldBeLit) {
|
if (lit != shouldBeLit) {
|
||||||
level.setBlockAndUpdate(pos, state.setValue(BlockStateProperties.LIT, shouldBeLit))
|
level.setBlockAndUpdate(pos, state.setValue(BlockStateProperties.LIT, shouldBeLit))
|
||||||
|
@ -76,7 +76,8 @@ object MBlocks {
|
|||||||
.requiresCorrectToolForDrops()
|
.requiresCorrectToolForDrops()
|
||||||
) }
|
) }
|
||||||
|
|
||||||
val LABORATORY_LAMP: Block by registry.register(MNames.LABORATORY_LAMP) { LaboratoryLamp() }
|
val LABORATORY_LAMP: Block by registry.register(MNames.LABORATORY_LAMP) { LaboratoryLamp(false) }
|
||||||
|
val LABORATORY_LAMP_INVERTED: Block by registry.register(MNames.LABORATORY_LAMP_INVERTED) { LaboratoryLamp(true) }
|
||||||
val LABORATORY_LAMP_LIGHT: Block by registry.register(MNames.LABORATORY_LAMP_LIGHT) { LaboratoryLampLight() }
|
val LABORATORY_LAMP_LIGHT: Block by registry.register(MNames.LABORATORY_LAMP_LIGHT) { LaboratoryLampLight() }
|
||||||
val DANGER_STRIPE_BLOCK: Block by registry.register(MNames.DANGER_STRIPE_BLOCK) { Block(BlockBehaviour.Properties.of(Material.METAL, DyeColor.GRAY).explosionResistance(6f).destroyTime(1.5f).requiresCorrectToolForDrops()) }
|
val DANGER_STRIPE_BLOCK: Block by registry.register(MNames.DANGER_STRIPE_BLOCK) { Block(BlockBehaviour.Properties.of(Material.METAL, DyeColor.GRAY).explosionResistance(6f).destroyTime(1.5f).requiresCorrectToolForDrops()) }
|
||||||
val METAL_BEAM: Block by registry.register(MNames.METAL_BEAM) { Block(BlockBehaviour.Properties.of(Material.METAL, DyeColor.GRAY).explosionResistance(14f).destroyTime(2.5f).requiresCorrectToolForDrops()) }
|
val METAL_BEAM: Block by registry.register(MNames.METAL_BEAM) { Block(BlockBehaviour.Properties.of(Material.METAL, DyeColor.GRAY).explosionResistance(14f).destroyTime(2.5f).requiresCorrectToolForDrops()) }
|
||||||
|
@ -261,6 +261,7 @@ object MItems {
|
|||||||
FoodProperties.Builder().meat().nutrition(8).saturationMod(0.9F).build()).tab(OverdriveThatMatters.INSTANCE.CREATIVE_TAB)) }
|
FoodProperties.Builder().meat().nutrition(8).saturationMod(0.9F).build()).tab(OverdriveThatMatters.INSTANCE.CREATIVE_TAB)) }
|
||||||
|
|
||||||
val LABORATORY_LAMP: Item by registry.register(MNames.LABORATORY_LAMP) { BlockItem(MBlocks.LABORATORY_LAMP, DEFAULT_PROPERTIES_DECORATIVE) }
|
val LABORATORY_LAMP: Item by registry.register(MNames.LABORATORY_LAMP) { BlockItem(MBlocks.LABORATORY_LAMP, DEFAULT_PROPERTIES_DECORATIVE) }
|
||||||
|
val LABORATORY_LAMP_INVERTED: Item by registry.register(MNames.LABORATORY_LAMP_INVERTED) { BlockItem(MBlocks.LABORATORY_LAMP_INVERTED, DEFAULT_PROPERTIES_DECORATIVE) }
|
||||||
val DANGER_STRIPE_BLOCK: Item by registry.register(MNames.DANGER_STRIPE_BLOCK) { BlockItem(MBlocks.DANGER_STRIPE_BLOCK, DEFAULT_PROPERTIES_DECORATIVE) }
|
val DANGER_STRIPE_BLOCK: Item by registry.register(MNames.DANGER_STRIPE_BLOCK) { BlockItem(MBlocks.DANGER_STRIPE_BLOCK, DEFAULT_PROPERTIES_DECORATIVE) }
|
||||||
val METAL_BEAM: Item by registry.register(MNames.METAL_BEAM) { BlockItem(MBlocks.METAL_BEAM, DEFAULT_PROPERTIES_DECORATIVE) }
|
val METAL_BEAM: Item by registry.register(MNames.METAL_BEAM) { BlockItem(MBlocks.METAL_BEAM, DEFAULT_PROPERTIES_DECORATIVE) }
|
||||||
|
|
||||||
|
@ -5,6 +5,7 @@ import ru.dbotthepony.mc.otm.OverdriveThatMatters
|
|||||||
|
|
||||||
object MNames {
|
object MNames {
|
||||||
const val LABORATORY_LAMP = "laboratory_lamp"
|
const val LABORATORY_LAMP = "laboratory_lamp"
|
||||||
|
const val LABORATORY_LAMP_INVERTED = "laboratory_lamp_inverted"
|
||||||
const val LABORATORY_LAMP_LIGHT = "laboratory_lamp_light"
|
const val LABORATORY_LAMP_LIGHT = "laboratory_lamp_light"
|
||||||
const val DANGER_STRIPE_BLOCK = "danger_stripe_block"
|
const val DANGER_STRIPE_BLOCK = "danger_stripe_block"
|
||||||
const val METAL_BEAM = "metal_beam"
|
const val METAL_BEAM = "metal_beam"
|
||||||
|
Loading…
Reference in New Issue
Block a user