Exopack coloring and toggle exopack glowing
This commit is contained in:
parent
25875b162e
commit
a707e49b8c
@ -136,11 +136,16 @@ private fun misc(provider: MatteryLanguageProvider) {
|
|||||||
gui("recipe.ticks", "%s Ticks")
|
gui("recipe.ticks", "%s Ticks")
|
||||||
|
|
||||||
gui("exopack", "Exopack Inventory")
|
gui("exopack", "Exopack Inventory")
|
||||||
|
|
||||||
|
gui("exopack.customize", "Customize Exopack appearance")
|
||||||
|
gui("exopack.customization", "Exopack appearance settings")
|
||||||
|
|
||||||
gui("exopack.go_back", "Open vanilla inventory")
|
gui("exopack.go_back", "Open vanilla inventory")
|
||||||
gui("exopack.go_in", "Open Exopack inventory")
|
gui("exopack.go_in", "Open Exopack inventory")
|
||||||
gui("exopack.toggle_visibility", "Toggle Exopack visibility")
|
gui("exopack.toggle_visibility", "Visibile on player")
|
||||||
gui("exopack.change_color", "Customize Exopack color")
|
gui("exopack.toggle_glow", "Glows in dark")
|
||||||
gui("exopack.change_color2", "Press Middle Mouse Button to remove color")
|
gui("exopack.change_color", "Customize color")
|
||||||
|
gui("exopack.change_color2", "Remove color")
|
||||||
|
|
||||||
gui("exopack.probe1", "This little device feels unnatural to touch, it is almost certainly resilient to any possible attempt to break it open.")
|
gui("exopack.probe1", "This little device feels unnatural to touch, it is almost certainly resilient to any possible attempt to break it open.")
|
||||||
gui("exopack.probe2", "There is fingerprint reader built into one of sides which gently glow when touched.")
|
gui("exopack.probe2", "There is fingerprint reader built into one of sides which gently glow when touched.")
|
||||||
|
@ -144,11 +144,16 @@ private fun misc(provider: MatteryLanguageProvider) {
|
|||||||
gui("recipe.ticks", "%s Тиков")
|
gui("recipe.ticks", "%s Тиков")
|
||||||
|
|
||||||
gui("exopack", "Инвентарь Экзопака")
|
gui("exopack", "Инвентарь Экзопака")
|
||||||
|
|
||||||
|
gui("exopack.customize", "Изменить внешний вид Экзопака")
|
||||||
|
gui("exopack.customization", "Внешний вид Экзопака")
|
||||||
|
|
||||||
gui("exopack.go_back", "Открыть обычный инвентарь")
|
gui("exopack.go_back", "Открыть обычный инвентарь")
|
||||||
gui("exopack.go_in", "Открыть инвентарь экзопака")
|
gui("exopack.go_in", "Открыть инвентарь Экзопака")
|
||||||
gui("exopack.toggle_visibility", "Переключить отображение Экзопака")
|
gui("exopack.toggle_visibility", "Отображать на игроке")
|
||||||
gui("exopack.change_color", "Изменить окраску Экзопака")
|
gui("exopack.toggle_glow", "Свечение в темноте")
|
||||||
gui("exopack.change_color2", "Нажмите среднюю кнопку мыши для сброса окраски")
|
gui("exopack.change_color", "Изменить окраску")
|
||||||
|
gui("exopack.change_color2", "Убрать окраску")
|
||||||
|
|
||||||
gui("exopack.probe1", "Данное маленькое устройство необычно на ощупь, а так же неприступно для любых попыток вскрыть.")
|
gui("exopack.probe1", "Данное маленькое устройство необычно на ощупь, а так же неприступно для любых попыток вскрыть.")
|
||||||
gui("exopack.probe2", "На одной из сторон данного устройства находится сканер отпечатка, который тускло загорается при касании.")
|
gui("exopack.probe2", "На одной из сторон данного устройства находится сканер отпечатка, который тускло загорается при касании.")
|
||||||
|
@ -32,6 +32,7 @@ public final class ExosuitModel {
|
|||||||
public static final HumanoidModel<AbstractClientPlayer> modelGlow;
|
public static final HumanoidModel<AbstractClientPlayer> modelGlow;
|
||||||
|
|
||||||
public static final ResourceLocation texture = new ResourceLocation(OverdriveThatMatters.MOD_ID, "textures/models/armor/exosuit.png");
|
public static final ResourceLocation texture = new ResourceLocation(OverdriveThatMatters.MOD_ID, "textures/models/armor/exosuit.png");
|
||||||
|
public static final ResourceLocation textureColor = new ResourceLocation(OverdriveThatMatters.MOD_ID, "textures/models/armor/exosuit_color.png");
|
||||||
|
|
||||||
static {
|
static {
|
||||||
MeshDefinition meshdefinition = new MeshDefinition();
|
MeshDefinition meshdefinition = new MeshDefinition();
|
||||||
@ -138,14 +139,38 @@ public final class ExosuitModel {
|
|||||||
1f, 1f, 1f, 1f
|
1f, 1f, 1f, 1f
|
||||||
);
|
);
|
||||||
|
|
||||||
modelGlow.renderToBuffer(
|
var color = cap.resolve().get().getExopackColor();
|
||||||
poseStack,
|
|
||||||
bufferSource.getBuffer(RenderType.entityTranslucentEmissive(texture)),
|
if (color != null) {
|
||||||
packedLight,
|
modelNormal.renderToBuffer(
|
||||||
overlayCoords,
|
poseStack,
|
||||||
// rgba
|
bufferSource.getBuffer(RenderType.entityCutoutNoCull(textureColor)),
|
||||||
1f, 1f, 1f, 1f
|
packedLight,
|
||||||
);
|
overlayCoords,
|
||||||
|
// rgba
|
||||||
|
color.getRed(), color.getGreen(), color.getBlue(), 1f
|
||||||
|
);
|
||||||
|
}
|
||||||
|
|
||||||
|
if (cap.resolve().get().getExopackGlows()) {
|
||||||
|
modelGlow.renderToBuffer(
|
||||||
|
poseStack,
|
||||||
|
bufferSource.getBuffer(RenderType.entityTranslucentEmissive(texture)),
|
||||||
|
packedLight,
|
||||||
|
overlayCoords,
|
||||||
|
// rgba
|
||||||
|
1f, 1f, 1f, 1f
|
||||||
|
);
|
||||||
|
} else {
|
||||||
|
modelGlow.renderToBuffer(
|
||||||
|
poseStack,
|
||||||
|
bufferSource.getBuffer(RenderType.entityCutoutNoCull(texture)),
|
||||||
|
packedLight,
|
||||||
|
overlayCoords,
|
||||||
|
// rgba
|
||||||
|
1f, 1f, 1f, 1f
|
||||||
|
);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -32,7 +32,6 @@ import net.minecraft.world.item.Items
|
|||||||
import net.minecraft.world.item.ProjectileWeaponItem
|
import net.minecraft.world.item.ProjectileWeaponItem
|
||||||
import net.minecraft.world.item.crafting.RecipeManager
|
import net.minecraft.world.item.crafting.RecipeManager
|
||||||
import net.minecraft.world.item.crafting.RecipeType
|
import net.minecraft.world.item.crafting.RecipeType
|
||||||
import net.minecraft.world.item.enchantment.EnchantmentHelper.hasVanishingCurse
|
|
||||||
import net.minecraft.world.level.GameRules
|
import net.minecraft.world.level.GameRules
|
||||||
import net.minecraft.world.level.Level
|
import net.minecraft.world.level.Level
|
||||||
import net.minecraft.world.phys.Vec3
|
import net.minecraft.world.phys.Vec3
|
||||||
@ -83,15 +82,16 @@ import ru.dbotthepony.mc.otm.core.*
|
|||||||
import ru.dbotthepony.mc.otm.core.collect.UUIDIntModifiersMap
|
import ru.dbotthepony.mc.otm.core.collect.UUIDIntModifiersMap
|
||||||
import ru.dbotthepony.mc.otm.core.collect.filter
|
import ru.dbotthepony.mc.otm.core.collect.filter
|
||||||
import ru.dbotthepony.mc.otm.core.math.Decimal
|
import ru.dbotthepony.mc.otm.core.math.Decimal
|
||||||
|
import ru.dbotthepony.mc.otm.core.math.RGBAColor
|
||||||
import ru.dbotthepony.mc.otm.core.math.minus
|
import ru.dbotthepony.mc.otm.core.math.minus
|
||||||
import ru.dbotthepony.mc.otm.core.nbt.getByteList
|
import ru.dbotthepony.mc.otm.core.nbt.getByteList
|
||||||
import ru.dbotthepony.mc.otm.core.nbt.getCompoundList
|
import ru.dbotthepony.mc.otm.core.nbt.getCompoundList
|
||||||
import ru.dbotthepony.mc.otm.core.nbt.getIntList
|
import ru.dbotthepony.mc.otm.core.nbt.getIntList
|
||||||
import ru.dbotthepony.mc.otm.core.nbt.getStringList
|
import ru.dbotthepony.mc.otm.core.nbt.getStringList
|
||||||
import ru.dbotthepony.mc.otm.core.nbt.set
|
import ru.dbotthepony.mc.otm.core.nbt.set
|
||||||
import ru.dbotthepony.mc.otm.core.util.BooleanValueCodec
|
|
||||||
import ru.dbotthepony.mc.otm.core.util.IntValueCodec
|
import ru.dbotthepony.mc.otm.core.util.IntValueCodec
|
||||||
import ru.dbotthepony.mc.otm.core.util.ItemValueCodec
|
import ru.dbotthepony.mc.otm.core.util.ItemValueCodec
|
||||||
|
import ru.dbotthepony.mc.otm.core.util.RGBCodec
|
||||||
import ru.dbotthepony.mc.otm.core.util.Savetables
|
import ru.dbotthepony.mc.otm.core.util.Savetables
|
||||||
import ru.dbotthepony.mc.otm.core.util.TickList
|
import ru.dbotthepony.mc.otm.core.util.TickList
|
||||||
import ru.dbotthepony.mc.otm.core.util.UUIDValueCodec
|
import ru.dbotthepony.mc.otm.core.util.UUIDValueCodec
|
||||||
@ -211,6 +211,13 @@ class MatteryPlayerCapability(val ply: Player) : ICapabilityProvider, INBTSerial
|
|||||||
*/
|
*/
|
||||||
var displayExoPack by publicSynchronizer.bool(true).property
|
var displayExoPack by publicSynchronizer.bool(true).property
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Whenever to render Exopack glow in dark
|
||||||
|
*/
|
||||||
|
var exopackGlows by publicSynchronizer.bool(true).property
|
||||||
|
|
||||||
|
var exopackColor by publicSynchronizer.Field(null, RGBCodec.nullable)
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Tick event schedulers
|
* Tick event schedulers
|
||||||
*/
|
*/
|
||||||
@ -499,6 +506,9 @@ class MatteryPlayerCapability(val ply: Player) : ICapabilityProvider, INBTSerial
|
|||||||
savetables.stateful(::exoPackChargeSlots)
|
savetables.stateful(::exoPackChargeSlots)
|
||||||
savetables.float(::exoPackSmelterExperience)
|
savetables.float(::exoPackSmelterExperience)
|
||||||
savetables.bool(::isExoPackSmeltingInstalled)
|
savetables.bool(::isExoPackSmeltingInstalled)
|
||||||
|
|
||||||
|
savetables.codecNullable(::exopackColor, RGBAColor.CODECRGB)
|
||||||
|
savetables.bool(::exopackGlows)
|
||||||
}
|
}
|
||||||
|
|
||||||
fun invalidateNetworkState() {
|
fun invalidateNetworkState() {
|
||||||
|
@ -21,6 +21,7 @@ object Widgets8 {
|
|||||||
val ARROW_PAINTED_UP = GRID[1, 2]
|
val ARROW_PAINTED_UP = GRID[1, 2]
|
||||||
val MINUS = GRID[1, 3]
|
val MINUS = GRID[1, 3]
|
||||||
|
|
||||||
val EXOSUIT_SHOWN = GRID[2, 1]
|
val EXOPACK_SHOWN = GRID[2, 1]
|
||||||
val EXOSUIT_HIDDEN = GRID[3, 1]
|
val EXOPACK_HIDDEN = GRID[3, 1]
|
||||||
|
val EXOPACK_COLOR = GRID[4, 1]
|
||||||
}
|
}
|
||||||
|
@ -1,24 +1,39 @@
|
|||||||
package ru.dbotthepony.mc.otm.client.screen.panels
|
package ru.dbotthepony.mc.otm.client.screen.panels
|
||||||
|
|
||||||
import com.mojang.blaze3d.vertex.PoseStack
|
import com.mojang.blaze3d.platform.InputConstants
|
||||||
|
import it.unimi.dsi.fastutil.booleans.BooleanConsumer
|
||||||
|
import net.minecraft.ChatFormatting
|
||||||
import net.minecraft.client.gui.GuiGraphics
|
import net.minecraft.client.gui.GuiGraphics
|
||||||
import net.minecraft.client.gui.screens.Screen
|
import net.minecraft.client.gui.screens.Screen
|
||||||
import net.minecraft.client.gui.screens.inventory.AbstractContainerScreen
|
import net.minecraft.client.gui.screens.inventory.AbstractContainerScreen
|
||||||
import net.minecraft.client.gui.screens.inventory.InventoryScreen
|
import net.minecraft.client.gui.screens.inventory.InventoryScreen
|
||||||
import net.minecraft.world.entity.LivingEntity
|
import net.minecraft.world.entity.LivingEntity
|
||||||
import net.minecraft.world.entity.player.Player
|
import net.minecraft.world.entity.player.Player
|
||||||
|
import ru.dbotthepony.mc.otm.capability.MatteryPlayerCapability
|
||||||
import ru.dbotthepony.mc.otm.capability.matteryPlayer
|
import ru.dbotthepony.mc.otm.capability.matteryPlayer
|
||||||
import ru.dbotthepony.mc.otm.client.render.Widgets8
|
import ru.dbotthepony.mc.otm.client.render.Widgets8
|
||||||
import ru.dbotthepony.mc.otm.client.render.sprite
|
import ru.dbotthepony.mc.otm.client.render.sprite
|
||||||
import ru.dbotthepony.mc.otm.client.screen.ExoPackInventoryScreen
|
import ru.dbotthepony.mc.otm.client.screen.ExoPackInventoryScreen
|
||||||
|
import ru.dbotthepony.mc.otm.client.screen.MatteryScreen
|
||||||
|
import ru.dbotthepony.mc.otm.client.screen.panels.button.ButtonPanel
|
||||||
|
import ru.dbotthepony.mc.otm.client.screen.panels.button.CheckBoxLabelPanel
|
||||||
import ru.dbotthepony.mc.otm.client.screen.panels.button.SmallBooleanRectangleButtonPanel
|
import ru.dbotthepony.mc.otm.client.screen.panels.button.SmallBooleanRectangleButtonPanel
|
||||||
|
import ru.dbotthepony.mc.otm.client.screen.panels.button.SmallRectangleButtonPanel
|
||||||
import ru.dbotthepony.mc.otm.compat.cos.CosmeticToggleRenderButton
|
import ru.dbotthepony.mc.otm.compat.cos.CosmeticToggleRenderButton
|
||||||
import ru.dbotthepony.mc.otm.compat.cos.isCosmeticArmorLoaded
|
import ru.dbotthepony.mc.otm.compat.cos.isCosmeticArmorLoaded
|
||||||
|
import ru.dbotthepony.mc.otm.core.GetterSetter
|
||||||
|
import ru.dbotthepony.mc.otm.core.TextComponent
|
||||||
import ru.dbotthepony.mc.otm.core.TranslatableComponent
|
import ru.dbotthepony.mc.otm.core.TranslatableComponent
|
||||||
import ru.dbotthepony.mc.otm.core.asGetterOnly
|
import ru.dbotthepony.mc.otm.core.asGetterOnly
|
||||||
import ru.dbotthepony.mc.otm.network.DisplayExosuitPacket
|
import ru.dbotthepony.mc.otm.core.math.RGBAColor
|
||||||
import ru.dbotthepony.mc.otm.network.HideExosuitPacket
|
import ru.dbotthepony.mc.otm.network.DisableExopackGlowPacket
|
||||||
|
import ru.dbotthepony.mc.otm.network.DisplayExopackPacket
|
||||||
|
import ru.dbotthepony.mc.otm.network.EnableExopackGlowPacket
|
||||||
|
import ru.dbotthepony.mc.otm.network.HideExopackPacket
|
||||||
import ru.dbotthepony.mc.otm.network.MatteryPlayerNetworkChannel
|
import ru.dbotthepony.mc.otm.network.MatteryPlayerNetworkChannel
|
||||||
|
import ru.dbotthepony.mc.otm.network.ResetExopackColorPacket
|
||||||
|
import ru.dbotthepony.mc.otm.network.SetExopackColorPacket
|
||||||
|
import java.util.function.IntConsumer
|
||||||
|
|
||||||
private fun calculateScale(width: Float, height: Float): Int {
|
private fun calculateScale(width: Float, height: Float): Int {
|
||||||
val aspectRatio = width / height
|
val aspectRatio = width / height
|
||||||
@ -34,6 +49,76 @@ private fun calculateScale(width: Float, height: Float): Int {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
private fun createExopackAppearanceWindow(screen: MatteryScreen<*>, matteryPlayer: MatteryPlayerCapability): FramePanel<*> {
|
||||||
|
val frame = FramePanel.padded(screen, width = 200f, height = 90f, title = TranslatableComponent("otm.gui.exopack.customization"))
|
||||||
|
|
||||||
|
screen.addPanel(frame)
|
||||||
|
|
||||||
|
frame.toScreenCenter()
|
||||||
|
frame.behaveAsWindow()
|
||||||
|
frame.requestFocus()
|
||||||
|
|
||||||
|
CheckBoxLabelPanel(
|
||||||
|
screen,
|
||||||
|
frame,
|
||||||
|
text = TranslatableComponent("otm.gui.exopack.toggle_visibility"),
|
||||||
|
isChecked = GetterSetter.of(
|
||||||
|
{
|
||||||
|
matteryPlayer.displayExoPack
|
||||||
|
},
|
||||||
|
{
|
||||||
|
if (it) {
|
||||||
|
MatteryPlayerNetworkChannel.sendToServer(DisplayExopackPacket)
|
||||||
|
} else {
|
||||||
|
MatteryPlayerNetworkChannel.sendToServer(HideExopackPacket)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
)
|
||||||
|
).also {
|
||||||
|
it.dock = Dock.TOP
|
||||||
|
it.dockTop = 2f
|
||||||
|
}
|
||||||
|
|
||||||
|
CheckBoxLabelPanel(
|
||||||
|
screen,
|
||||||
|
frame,
|
||||||
|
text = TranslatableComponent("otm.gui.exopack.toggle_glow"),
|
||||||
|
isChecked = GetterSetter.of(
|
||||||
|
{
|
||||||
|
matteryPlayer.exopackGlows
|
||||||
|
},
|
||||||
|
{
|
||||||
|
if (it) {
|
||||||
|
MatteryPlayerNetworkChannel.sendToServer(EnableExopackGlowPacket)
|
||||||
|
} else {
|
||||||
|
MatteryPlayerNetworkChannel.sendToServer(DisableExopackGlowPacket)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
)
|
||||||
|
).also {
|
||||||
|
it.dock = Dock.TOP
|
||||||
|
it.dockTop = 2f
|
||||||
|
}
|
||||||
|
|
||||||
|
ButtonPanel(screen, frame, label = TranslatableComponent("otm.gui.exopack.change_color"), onPress = IntConsumer {
|
||||||
|
frame.blockingWindow = ColorPickerPanel.frame(
|
||||||
|
screen,
|
||||||
|
callback = { MatteryPlayerNetworkChannel.sendToServer(SetExopackColorPacket(it)) },
|
||||||
|
color = matteryPlayer.exopackColor ?: RGBAColor.WHITE,
|
||||||
|
title = TranslatableComponent("otm.gui.exopack.change_color"))
|
||||||
|
}).also {
|
||||||
|
it.dock = Dock.TOP
|
||||||
|
it.dockTop = 2f
|
||||||
|
}
|
||||||
|
|
||||||
|
ButtonPanel(screen, frame, label = TranslatableComponent("otm.gui.exopack.change_color2"), onPress = IntConsumer { MatteryPlayerNetworkChannel.sendToServer(ResetExopackColorPacket) }).also {
|
||||||
|
it.dock = Dock.TOP
|
||||||
|
it.dockTop = 2f
|
||||||
|
}
|
||||||
|
|
||||||
|
return frame
|
||||||
|
}
|
||||||
|
|
||||||
class EntityRendererPanel<out S : Screen> @JvmOverloads constructor(
|
class EntityRendererPanel<out S : Screen> @JvmOverloads constructor(
|
||||||
screen: S,
|
screen: S,
|
||||||
parent: EditablePanel<*>?,
|
parent: EditablePanel<*>?,
|
||||||
@ -67,21 +152,15 @@ class EntityRendererPanel<out S : Screen> @JvmOverloads constructor(
|
|||||||
if (entity is Player) {
|
if (entity is Player) {
|
||||||
val matteryPlayer = entity.matteryPlayer
|
val matteryPlayer = entity.matteryPlayer
|
||||||
|
|
||||||
if (matteryPlayer != null && matteryPlayer.hasExoPack) {
|
if (matteryPlayer != null && matteryPlayer.hasExoPack && screen is MatteryScreen<*>) {
|
||||||
exosuitButton = SmallBooleanRectangleButtonPanel(screen, this, this.width - 2f - SmallBooleanRectangleButtonPanel.SIZE, 2f,
|
exosuitButton = SmallRectangleButtonPanel(screen, this, this.width - 2f - SmallBooleanRectangleButtonPanel.SIZE, 2f,
|
||||||
prop = matteryPlayer::displayExoPack.asGetterOnly(),
|
skinElement = Widgets8.EXOPACK_SHOWN,
|
||||||
skinElementActive = Widgets8.EXOSUIT_SHOWN,
|
onPress = {
|
||||||
skinElementInactive = Widgets8.EXOSUIT_HIDDEN,
|
blockingWindow = createExopackAppearanceWindow(screen, matteryPlayer)
|
||||||
onChange = {
|
|
||||||
if (it) {
|
|
||||||
MatteryPlayerNetworkChannel.sendToServer(DisplayExosuitPacket)
|
|
||||||
} else {
|
|
||||||
MatteryPlayerNetworkChannel.sendToServer(HideExosuitPacket)
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
)
|
)
|
||||||
|
|
||||||
exosuitButton.tooltips.add(TranslatableComponent("otm.gui.exopack.toggle_visibility"))
|
exosuitButton.tooltips.add(TranslatableComponent("otm.gui.exopack.customize"))
|
||||||
} else {
|
} else {
|
||||||
exosuitButton = null
|
exosuitButton = null
|
||||||
}
|
}
|
||||||
|
@ -28,6 +28,7 @@ import ru.dbotthepony.mc.otm.client.render.GlitchRenderer
|
|||||||
import ru.dbotthepony.mc.otm.client.render.ShockwaveRenderer
|
import ru.dbotthepony.mc.otm.client.render.ShockwaveRenderer
|
||||||
import ru.dbotthepony.mc.otm.container.get
|
import ru.dbotthepony.mc.otm.container.get
|
||||||
import ru.dbotthepony.mc.otm.container.set
|
import ru.dbotthepony.mc.otm.container.set
|
||||||
|
import ru.dbotthepony.mc.otm.core.math.RGBAColor
|
||||||
import ru.dbotthepony.mc.otm.core.math.Vector
|
import ru.dbotthepony.mc.otm.core.math.Vector
|
||||||
import ru.dbotthepony.mc.otm.core.readItemType
|
import ru.dbotthepony.mc.otm.core.readItemType
|
||||||
import ru.dbotthepony.mc.otm.core.writeItemType
|
import ru.dbotthepony.mc.otm.core.writeItemType
|
||||||
@ -496,7 +497,7 @@ class ShockwaveEffectPacket(val pos: Vector) : MatteryPacket {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
object DisplayExosuitPacket : MatteryPacket {
|
object DisplayExopackPacket : MatteryPacket {
|
||||||
override fun write(buff: FriendlyByteBuf) {}
|
override fun write(buff: FriendlyByteBuf) {}
|
||||||
|
|
||||||
override fun play(context: Supplier<NetworkEvent.Context>) {
|
override fun play(context: Supplier<NetworkEvent.Context>) {
|
||||||
@ -505,7 +506,7 @@ object DisplayExosuitPacket : MatteryPacket {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
object HideExosuitPacket : MatteryPacket {
|
object HideExopackPacket : MatteryPacket {
|
||||||
override fun write(buff: FriendlyByteBuf) {}
|
override fun write(buff: FriendlyByteBuf) {}
|
||||||
|
|
||||||
override fun play(context: Supplier<NetworkEvent.Context>) {
|
override fun play(context: Supplier<NetworkEvent.Context>) {
|
||||||
@ -514,6 +515,52 @@ object HideExosuitPacket : MatteryPacket {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
object EnableExopackGlowPacket : MatteryPacket {
|
||||||
|
override fun write(buff: FriendlyByteBuf) {}
|
||||||
|
|
||||||
|
override fun play(context: Supplier<NetworkEvent.Context>) {
|
||||||
|
context.packetHandled = true
|
||||||
|
context.sender?.matteryPlayer?.exopackGlows = true
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
object DisableExopackGlowPacket : MatteryPacket {
|
||||||
|
override fun write(buff: FriendlyByteBuf) {}
|
||||||
|
|
||||||
|
override fun play(context: Supplier<NetworkEvent.Context>) {
|
||||||
|
context.packetHandled = true
|
||||||
|
context.sender?.matteryPlayer?.exopackGlows = false
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
object ResetExopackColorPacket : MatteryPacket {
|
||||||
|
override fun write(buff: FriendlyByteBuf) {}
|
||||||
|
|
||||||
|
override fun play(context: Supplier<NetworkEvent.Context>) {
|
||||||
|
context.packetHandled = true
|
||||||
|
context.sender?.matteryPlayer?.exopackColor = null
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
data class SetExopackColorPacket(val color: RGBAColor) : MatteryPacket {
|
||||||
|
override fun write(buff: FriendlyByteBuf) {
|
||||||
|
buff.writeFloat(color.red)
|
||||||
|
buff.writeFloat(color.green)
|
||||||
|
buff.writeFloat(color.blue)
|
||||||
|
}
|
||||||
|
|
||||||
|
override fun play(context: Supplier<NetworkEvent.Context>) {
|
||||||
|
context.packetHandled = true
|
||||||
|
context.sender?.matteryPlayer?.exopackColor = color
|
||||||
|
}
|
||||||
|
|
||||||
|
companion object {
|
||||||
|
fun read(buff: FriendlyByteBuf): SetExopackColorPacket {
|
||||||
|
return SetExopackColorPacket(RGBAColor(buff.readFloat(), buff.readFloat(), buff.readFloat()))
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
class SetInventoryFilterPacket(val type: Type, val slot: Int, val item: Item?) : MatteryPacket {
|
class SetInventoryFilterPacket(val type: Type, val slot: Int, val item: Item?) : MatteryPacket {
|
||||||
enum class Type {
|
enum class Type {
|
||||||
INVENTORY,
|
INVENTORY,
|
||||||
@ -559,7 +606,7 @@ class SetInventoryFilterPacket(val type: Type, val slot: Int, val item: Item?) :
|
|||||||
}
|
}
|
||||||
|
|
||||||
object MatteryPlayerNetworkChannel : MatteryNetworkChannel(
|
object MatteryPlayerNetworkChannel : MatteryNetworkChannel(
|
||||||
version = "3",
|
version = "4",
|
||||||
name = "player"
|
name = "player"
|
||||||
) {
|
) {
|
||||||
fun register() {
|
fun register() {
|
||||||
@ -590,8 +637,12 @@ object MatteryPlayerNetworkChannel : MatteryNetworkChannel(
|
|||||||
add(GlitchPacket::class, GlitchPacket.Companion::read, PLAY_TO_CLIENT)
|
add(GlitchPacket::class, GlitchPacket.Companion::read, PLAY_TO_CLIENT)
|
||||||
add(ShockwaveEffectPacket::class, ShockwaveEffectPacket.Companion::read, PLAY_TO_CLIENT)
|
add(ShockwaveEffectPacket::class, ShockwaveEffectPacket.Companion::read, PLAY_TO_CLIENT)
|
||||||
|
|
||||||
add(DisplayExosuitPacket::class, { DisplayExosuitPacket }, PLAY_TO_SERVER)
|
add(DisplayExopackPacket::class, { DisplayExopackPacket }, PLAY_TO_SERVER)
|
||||||
add(HideExosuitPacket::class, { HideExosuitPacket }, PLAY_TO_SERVER)
|
add(HideExopackPacket::class, { HideExopackPacket }, PLAY_TO_SERVER)
|
||||||
|
add(EnableExopackGlowPacket::class, { EnableExopackGlowPacket }, PLAY_TO_SERVER)
|
||||||
|
add(DisableExopackGlowPacket::class, { DisableExopackGlowPacket }, PLAY_TO_SERVER)
|
||||||
|
add(ResetExopackColorPacket::class, { ResetExopackColorPacket }, PLAY_TO_SERVER)
|
||||||
|
add(SetExopackColorPacket::class, SetExopackColorPacket.Companion::read, PLAY_TO_SERVER)
|
||||||
|
|
||||||
add(SetInventoryFilterPacket::class, SetInventoryFilterPacket.Companion::read, PLAY_TO_SERVER)
|
add(SetInventoryFilterPacket::class, SetInventoryFilterPacket.Companion::read, PLAY_TO_SERVER)
|
||||||
}
|
}
|
||||||
|
Binary file not shown.
Before Width: | Height: | Size: 915 B After Width: | Height: | Size: 964 B |
Binary file not shown.
Loading…
Reference in New Issue
Block a user