From 6791ed30b4d404637c8c21751597d9beb0d78b9f Mon Sep 17 00:00:00 2001 From: chylex <contact@chylex.com> Date: Fri, 18 Jan 2019 05:00:35 +0100 Subject: [PATCH] Create reusable FX data and handler classes w/ common parameters --- src/main/java/chylex/hee/game/fx/FxBlockData.kt | 11 +++++++++++ .../java/chylex/hee/game/fx/FxBlockHandler.kt | 15 +++++++++++++++ src/main/java/chylex/hee/game/fx/FxEntityData.kt | 10 ++++++++++ .../java/chylex/hee/game/fx/FxEntityHandler.kt | 14 ++++++++++++++ src/main/java/chylex/hee/game/fx/IFxData.kt | 6 ++++++ src/main/java/chylex/hee/game/fx/IFxHandler.kt | 9 +++++++++ 6 files changed, 65 insertions(+) create mode 100644 src/main/java/chylex/hee/game/fx/FxBlockData.kt create mode 100644 src/main/java/chylex/hee/game/fx/FxBlockHandler.kt create mode 100644 src/main/java/chylex/hee/game/fx/FxEntityData.kt create mode 100644 src/main/java/chylex/hee/game/fx/FxEntityHandler.kt create mode 100644 src/main/java/chylex/hee/game/fx/IFxData.kt create mode 100644 src/main/java/chylex/hee/game/fx/IFxHandler.kt diff --git a/src/main/java/chylex/hee/game/fx/FxBlockData.kt b/src/main/java/chylex/hee/game/fx/FxBlockData.kt new file mode 100644 index 00000000..95ee98ba --- /dev/null +++ b/src/main/java/chylex/hee/game/fx/FxBlockData.kt @@ -0,0 +1,11 @@ +package chylex.hee.game.fx +import chylex.hee.system.util.use +import chylex.hee.system.util.writePos +import io.netty.buffer.ByteBuf +import net.minecraft.util.math.BlockPos + +class FxBlockData(private val pos: BlockPos) : IFxData{ + override fun write(buffer: ByteBuf) = buffer.use { + writePos(pos) + } +} diff --git a/src/main/java/chylex/hee/game/fx/FxBlockHandler.kt b/src/main/java/chylex/hee/game/fx/FxBlockHandler.kt new file mode 100644 index 00000000..ede0896c --- /dev/null +++ b/src/main/java/chylex/hee/game/fx/FxBlockHandler.kt @@ -0,0 +1,15 @@ +package chylex.hee.game.fx +import chylex.hee.system.util.readPos +import chylex.hee.system.util.use +import io.netty.buffer.ByteBuf +import net.minecraft.util.math.BlockPos +import net.minecraft.world.World +import java.util.Random + +abstract class FxBlockHandler : IFxHandler<FxBlockData>{ + final override fun handle(buffer: ByteBuf, world: World, rand: Random) = buffer.use { + handle(readPos(), world, rand) + } + + abstract fun handle(pos: BlockPos, world: World, rand: Random) +} diff --git a/src/main/java/chylex/hee/game/fx/FxEntityData.kt b/src/main/java/chylex/hee/game/fx/FxEntityData.kt new file mode 100644 index 00000000..1c0fba6f --- /dev/null +++ b/src/main/java/chylex/hee/game/fx/FxEntityData.kt @@ -0,0 +1,10 @@ +package chylex.hee.game.fx +import chylex.hee.system.util.use +import io.netty.buffer.ByteBuf +import net.minecraft.entity.Entity + +class FxEntityData(private val entity: Entity) : IFxData{ + override fun write(buffer: ByteBuf) = buffer.use { + writeInt(entity.entityId) + } +} diff --git a/src/main/java/chylex/hee/game/fx/FxEntityHandler.kt b/src/main/java/chylex/hee/game/fx/FxEntityHandler.kt new file mode 100644 index 00000000..40b1cc3d --- /dev/null +++ b/src/main/java/chylex/hee/game/fx/FxEntityHandler.kt @@ -0,0 +1,14 @@ +package chylex.hee.game.fx +import chylex.hee.system.util.use +import io.netty.buffer.ByteBuf +import net.minecraft.entity.Entity +import net.minecraft.world.World +import java.util.Random + +abstract class FxEntityHandler : IFxHandler<FxEntityData>{ + final override fun handle(buffer: ByteBuf, world: World, rand: Random) = buffer.use { + world.getEntityByID(readInt())?.let { handle(it, rand) } + } + + abstract fun handle(entity: Entity, rand: Random) +} diff --git a/src/main/java/chylex/hee/game/fx/IFxData.kt b/src/main/java/chylex/hee/game/fx/IFxData.kt new file mode 100644 index 00000000..5d34fe71 --- /dev/null +++ b/src/main/java/chylex/hee/game/fx/IFxData.kt @@ -0,0 +1,6 @@ +package chylex.hee.game.fx +import io.netty.buffer.ByteBuf + +interface IFxData{ + fun write(buffer: ByteBuf) +} diff --git a/src/main/java/chylex/hee/game/fx/IFxHandler.kt b/src/main/java/chylex/hee/game/fx/IFxHandler.kt new file mode 100644 index 00000000..c60672d5 --- /dev/null +++ b/src/main/java/chylex/hee/game/fx/IFxHandler.kt @@ -0,0 +1,9 @@ +package chylex.hee.game.fx +import io.netty.buffer.ByteBuf +import net.minecraft.world.World +import java.util.Random + +@Suppress("unused") +interface IFxHandler<T : IFxData>{ + fun handle(buffer: ByteBuf, world: World, rand: Random) +}