This commit is contained in:
DBotThePony 2024-01-08 21:41:59 +07:00
commit d88801d8bf
Signed by: DBot
GPG Key ID: DCC23B5715498507
5 changed files with 75 additions and 51 deletions

View File

@ -596,6 +596,6 @@ fun addAdvancements(serializer: Consumer<AdvancementHolder>, lang: MatteryLangua
.addCriterion("damage", NailedEntityTrigger.Instance().criterion())
.save(serializer, modLocation("regular/explosive_hammer"))
CraftEntry(MItems.ESSENCE_STORAGE.values, "Did not Forgot to Remember",
CraftEntry(MItems.ESSENCE_STORAGE.values, "Did not Forget to Remember",
russianName = "Не забыл запомнить").make(serializer, essenceCapsule, translation)
}

View File

@ -12,10 +12,15 @@ import net.minecraft.world.level.block.state.BlockState
import ru.dbotthepony.mc.otm.block.entity.IRedstoneControlled
import ru.dbotthepony.mc.otm.block.entity.MatteryBlockEntity
import ru.dbotthepony.mc.otm.block.entity.SynchronizedRedstoneControl
import ru.dbotthepony.mc.otm.client.minecraft
import ru.dbotthepony.mc.otm.menu.decorative.HoloSignMenu
import ru.dbotthepony.mc.otm.network.synchronizer.FloatFieldAccess
import ru.dbotthepony.mc.otm.once
import ru.dbotthepony.mc.otm.registry.MBlockEntities
import ru.dbotthepony.mc.otm.registry.MBlocks
import thedarkcolour.kotlinforforge.forge.vectorutil.v3d.component1
import thedarkcolour.kotlinforforge.forge.vectorutil.v3d.component2
import thedarkcolour.kotlinforforge.forge.vectorutil.v3d.component3
class HoloSignBlockEntity(blockPos: BlockPos, blockState: BlockState) : MatteryBlockEntity(MBlockEntities.HOLO_SIGN, blockPos, blockState), MenuProvider, IRedstoneControlled {
override val redstoneControl = SynchronizedRedstoneControl(synchronizer) { _, _ -> setChanged() }
@ -25,9 +30,26 @@ class HoloSignBlockEntity(blockPos: BlockPos, blockState: BlockState) : MatteryB
access.write(value)
})
var textRed by synchronizer.float(1f).property
var textGreen by synchronizer.float(1f).property
var textBlue by synchronizer.float(85f / 255f).property
private fun colorSetter(value: Float, access: FloatFieldAccess, setByRemote: Boolean) {
if (access.readFloat() != value) {
access.write(value)
if (setByRemote) {
markDirtyClientside()
} else {
markDirtyFast()
}
}
}
private fun markDirtyClientside() {
val (x, y, z) = blockPos
minecraft.levelRenderer.setBlocksDirty(x, y, z, x, y, z)
}
var textRed by synchronizer.float(1f, setter = ::colorSetter).property
var textGreen by synchronizer.float(1f, setter = ::colorSetter).property
var textBlue by synchronizer.float(85f / 255f, setter = ::colorSetter).property
var textAlpha by synchronizer.float(1f).property
var isLocked = false

View File

@ -1,5 +1,7 @@
package ru.dbotthepony.mc.otm.registry
import net.minecraft.client.color.block.BlockColor
import net.minecraft.client.color.item.ItemColor
import net.minecraft.client.renderer.BiomeColors
import net.minecraft.core.BlockPos
import net.minecraft.world.item.ItemStack
@ -7,29 +9,59 @@ import net.minecraft.world.level.BlockAndTintGetter
import net.minecraft.world.level.block.state.BlockState
import net.minecraftforge.client.event.RegisterColorHandlersEvent
import net.minecraftforge.eventbus.api.IEventBus
import ru.dbotthepony.mc.otm.block.entity.decorative.HoloSignBlockEntity
import ru.dbotthepony.mc.otm.core.math.RGBAColor
object MBlockColors {
private const val DEFAULT_WATER_TINT: Int = 0x3F76E4
private const val DEFAULT_HOLO_SIGN_TINT: Int = 0xffe049
private object CobblestoneGeneratorColor : BlockColor, ItemColor {
override fun getColor(state: BlockState, light: BlockAndTintGetter?, pos: BlockPos?, index: Int): Int {
return if (index == 0) {
if (light == null || pos == null)
DEFAULT_WATER_TINT
else
BiomeColors.getAverageWaterColor(light, pos)
} else -1
}
override fun getColor(itemStack: ItemStack, index: Int): Int {
return if (index == 0) DEFAULT_WATER_TINT else -1
}
}
private object HoloSightColor : BlockColor, ItemColor {
override fun getColor(state: BlockState, light: BlockAndTintGetter?, pos: BlockPos?, index: Int): Int {
if (index != 0)
return -1
if (light == null || pos == null)
return DEFAULT_HOLO_SIGN_TINT
val blockEntity = light.getBlockEntity(pos) as? HoloSignBlockEntity ?: return DEFAULT_HOLO_SIGN_TINT
return RGBAColor(blockEntity.textRed, blockEntity.textGreen, blockEntity.textBlue, blockEntity.textAlpha).toRGB()
}
override fun getColor(itemStack: ItemStack, index: Int): Int {
return if (index == 0) DEFAULT_HOLO_SIGN_TINT else -1
}
}
private fun registerBlockColors(event: RegisterColorHandlersEvent.Block) {
for (it in MBlocks.COBBLESTONE_GENERATOR.values) {
event.register({ state: BlockState, light: BlockAndTintGetter?, pos: BlockPos?, index: Int ->
if (index == 0) {
if (light == null || pos == null)
DEFAULT_WATER_TINT
else
BiomeColors.getAverageWaterColor(light, pos)
} else -1
}, it)
event.register(CobblestoneGeneratorColor, it)
}
event.register(HoloSightColor, MBlocks.HOLO_SIGN)
}
private fun registerItemColors(event: RegisterColorHandlersEvent.Item) {
for (it in MBlocks.COBBLESTONE_GENERATOR.values) {
event.register({ stack: ItemStack, index: Int ->
if (index == 0) DEFAULT_WATER_TINT else -1
}, it)
event.register(CobblestoneGeneratorColor, it)
}
event.register(HoloSightColor, MBlocks.HOLO_SIGN)
}
internal fun register(bus: IEventBus) {

View File

@ -77,12 +77,7 @@
"from": [14, 14, 9.99],
"to": [15, 15, 9.99],
"faces": {
"north": {"uv": [8.5, 8.5, 9, 9], "texture": "#0", "forge_data": {"block_light": 15}},
"east": {"uv": [0, 0, 0, 16], "texture": "#missing"},
"south": {"uv": [0, 0, 16, 16], "texture": "#missing"},
"west": {"uv": [0, 0, 0, 16], "texture": "#missing"},
"up": {"uv": [0, 0, 16, 0], "texture": "#missing"},
"down": {"uv": [0, 0, 16, 0], "texture": "#missing"}
"north": {"uv": [8.5, 8.5, 9, 9], "texture": "#0", "forge_data": {"block_light": 15}, "tintindex": 0}
}
},
{
@ -90,12 +85,7 @@
"from": [1, 14, 9.99],
"to": [2, 15, 9.99],
"faces": {
"north": {"uv": [15, 8.5, 15.5, 9], "texture": "#0", "forge_data": {"block_light": 15}},
"east": {"uv": [0, 0, 0, 16], "texture": "#missing"},
"south": {"uv": [0, 0, 16, 16], "texture": "#missing"},
"west": {"uv": [0, 0, 0, 16], "texture": "#missing"},
"up": {"uv": [0, 0, 16, 0], "texture": "#missing"},
"down": {"uv": [0, 0, 16, 0], "texture": "#missing"}
"north": {"uv": [15, 8.5, 15.5, 9], "texture": "#0", "forge_data": {"block_light": 15}, "tintindex": 0}
}
},
{
@ -103,12 +93,7 @@
"from": [1, 1, 9.99],
"to": [2, 2, 9.99],
"faces": {
"north": {"uv": [15, 15, 15.5, 15.5], "texture": "#0", "forge_data": {"block_light": 15}},
"east": {"uv": [0, 0, 0, 16], "texture": "#missing"},
"south": {"uv": [0, 0, 16, 16], "texture": "#missing"},
"west": {"uv": [0, 0, 0, 16], "texture": "#missing"},
"up": {"uv": [0, 0, 16, 0], "texture": "#missing"},
"down": {"uv": [0, 0, 16, 0], "texture": "#missing"}
"north": {"uv": [15, 15, 15.5, 15.5], "texture": "#0", "forge_data": {"block_light": 15}, "tintindex": 0}
}
},
{
@ -116,12 +101,7 @@
"from": [14, 1, 9.99],
"to": [15, 2, 9.99],
"faces": {
"north": {"uv": [8.5, 15, 9, 15.5], "texture": "#0", "forge_data": {"block_light": 15}},
"east": {"uv": [0, 0, 0, 16], "texture": "#missing"},
"south": {"uv": [0, 0, 16, 16], "texture": "#missing"},
"west": {"uv": [0, 0, 0, 16], "texture": "#missing"},
"up": {"uv": [0, 0, 16, 0], "texture": "#missing"},
"down": {"uv": [0, 0, 16, 0], "texture": "#missing"}
"north": {"uv": [8.5, 15, 9, 15.5], "texture": "#0", "forge_data": {"block_light": 15}, "tintindex": 0}
}
},
{
@ -129,12 +109,7 @@
"from": [2.01, 6, 9],
"to": [2.01, 10, 10],
"faces": {
"north": {"uv": [0, 0, 0, 4], "texture": "#missing"},
"east": {"uv": [1.5, 13, 2, 15], "texture": "#0", "forge_data": {"block_light": 15}},
"south": {"uv": [0, 0, 0, 4], "texture": "#missing"},
"west": {"uv": [0, 0, 1, 4], "texture": "#missing"},
"up": {"uv": [0, 0, 0, 1], "texture": "#missing"},
"down": {"uv": [0, 0, 0, 1], "texture": "#missing"}
"east": {"uv": [1.5, 13, 2, 15], "texture": "#0", "forge_data": {"block_light": 15}, "tintindex": 0}
}
},
{
@ -142,12 +117,7 @@
"from": [13.99, 6, 9],
"to": [13.99, 10, 10],
"faces": {
"north": {"uv": [0, 0, 0, 4], "texture": "#missing"},
"east": {"uv": [0, 0, 1, 4], "texture": "#missing"},
"south": {"uv": [0, 0, 0, 4], "texture": "#missing"},
"west": {"uv": [1.5, 13, 2, 15], "texture": "#0", "forge_data": {"block_light": 15}},
"up": {"uv": [0, 0, 0, 1], "texture": "#missing"},
"down": {"uv": [0, 0, 0, 1], "texture": "#missing"}
"west": {"uv": [1.5, 13, 2, 15], "texture": "#0", "forge_data": {"block_light": 15}, "tintindex": 0}
}
}
],

Binary file not shown.

Before

Width:  |  Height:  |  Size: 424 B

After

Width:  |  Height:  |  Size: 1.1 KiB