Fix horse speed, gravity for boats, added sprint-swimming for <1.13
This commit is contained in:
1 parent
3942d9e94d
commit
6d1214bd1a
3 files changed
+54
-12
No files matched your search
@@ -0,0 +1,27 @@
|
||||
package nl.skbotnl.rewindfixog
|
||||
|
||||
import org.bukkit.entity.Boat
|
||||
import org.bukkit.event.EventHandler
|
||||
import org.bukkit.event.Listener
|
||||
import org.bukkit.event.player.PlayerMoveEvent
|
||||
import org.bukkit.event.vehicle.VehicleDestroyEvent
|
||||
|
||||
class Events : Listener {
|
||||
@EventHandler
|
||||
fun onVehicleDestroy(event: VehicleDestroyEvent) {
|
||||
if (event.vehicle is Boat && event.attacker == null) {
|
||||
event.isCancelled = true
|
||||
}
|
||||
}
|
||||
|
||||
@EventHandler
|
||||
fun onMove(event: PlayerMoveEvent) {
|
||||
val player = event.player
|
||||
if (RewindFixOG.viaApi.getPlayerVersion(player.uniqueId) > 107) {
|
||||
return
|
||||
}
|
||||
if (player.isInWater && player.isSprinting) {
|
||||
player.velocity = player.location.direction.multiply(0.17)
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -8,6 +8,6 @@ import org.bukkit.util.Vector
|
||||
class MoveBoatRunnable(private val boat: EntityBoat, private val vec: Vector) : Runnable {
|
||||
override fun run() {
|
||||
// move(EnumMoveType arg0, Vec3D arg1)
|
||||
boat.a(EnumMoveType.a, Vec3D(vec.x, vec.y, vec.z))
|
||||
boat.a(EnumMoveType.b, Vec3D(vec.x, vec.y, vec.z))
|
||||
}
|
||||
}
|
||||
@@ -6,9 +6,11 @@ import com.comphenix.protocol.events.ListenerPriority
|
||||
import com.comphenix.protocol.events.PacketAdapter
|
||||
import com.comphenix.protocol.events.PacketEvent
|
||||
import com.viaversion.viaversion.api.Via
|
||||
import com.viaversion.viaversion.api.ViaAPI
|
||||
import net.minecraft.world.entity.animal.horse.EntityHorseAbstract
|
||||
import net.minecraft.world.entity.vehicle.EntityBoat
|
||||
import org.bukkit.Bukkit
|
||||
import org.bukkit.attribute.Attribute
|
||||
import org.bukkit.craftbukkit.v1_18_R2.entity.CraftAbstractHorse
|
||||
import org.bukkit.craftbukkit.v1_18_R2.entity.CraftBoat
|
||||
import org.bukkit.craftbukkit.v1_18_R2.entity.CraftLlama
|
||||
@@ -17,36 +19,47 @@ import org.bukkit.scheduler.BukkitRunnable
|
||||
import org.bukkit.util.Vector
|
||||
|
||||
class RewindFixOG : JavaPlugin() {
|
||||
private var plugin: RewindFixOG? = null
|
||||
companion object {
|
||||
lateinit var plugin: RewindFixOG
|
||||
lateinit var viaApi: ViaAPI<Any>
|
||||
}
|
||||
|
||||
override fun onEnable() {
|
||||
val protocolManager = ProtocolLibrary.getProtocolManager()
|
||||
plugin = this
|
||||
viaApi = Via.getAPI()
|
||||
object : BukkitRunnable() {
|
||||
override fun run() {
|
||||
for (player in Bukkit.getOnlinePlayers()) {
|
||||
if (player.vehicle == null) {
|
||||
return
|
||||
}
|
||||
val api = Via.getAPI()
|
||||
if (api.getPlayerVersion(player.uniqueId) > 107) {
|
||||
if (viaApi.getPlayerVersion(player.uniqueId) > 107) {
|
||||
return
|
||||
}
|
||||
if (player.vehicle is CraftLlama) {
|
||||
return
|
||||
}
|
||||
if (player.vehicle is CraftAbstractHorse) {
|
||||
if (player.vehicle is CraftAbstractHorse && player.vehicle !is CraftLlama) {
|
||||
val abstractHorse = player.vehicle as CraftAbstractHorse
|
||||
if (abstractHorse.inventory.saddle == null) {
|
||||
return
|
||||
}
|
||||
val downVec = Vector(0, -1, 0)
|
||||
val nmsHorse: EntityHorseAbstract = abstractHorse.handle
|
||||
Bukkit.getScheduler().runTask(plugin!!, MoveHorseRunnable(nmsHorse, downVec))
|
||||
val nmsHorse = abstractHorse.handle
|
||||
Bukkit.getScheduler().runTask(plugin, MoveHorseRunnable(nmsHorse, downVec))
|
||||
}
|
||||
if (player.vehicle is CraftBoat) {
|
||||
if ((player.vehicle as CraftBoat).isInWater) {
|
||||
return
|
||||
}
|
||||
val craftBoat = player.vehicle as CraftBoat
|
||||
val downVec = Vector(0.0, -0.5, 0.0)
|
||||
val nmsBoat = craftBoat.handle
|
||||
Bukkit.getScheduler().runTask(plugin, MoveBoatRunnable(nmsBoat, downVec))
|
||||
}
|
||||
}
|
||||
}
|
||||
}.runTaskTimer(this, 0L, 1L)
|
||||
protocolManager.addPacketListener(object : PacketAdapter(this, ListenerPriority.NORMAL, PacketType.Play.Client.STEER_VEHICLE) {
|
||||
protocolManager.addPacketListener(object :
|
||||
PacketAdapter(this, ListenerPriority.NORMAL, PacketType.Play.Client.STEER_VEHICLE) {
|
||||
override fun onPacketReceiving(event: PacketEvent) {
|
||||
val player = event.player
|
||||
val api = Via.getAPI()
|
||||
@@ -80,14 +93,16 @@ class RewindFixOG : JavaPlugin() {
|
||||
if (craftHorse.inventory.saddle == null) {
|
||||
return
|
||||
}
|
||||
val speed = craftHorse.getAttribute(Attribute.GENERIC_MOVEMENT_SPEED)?.value ?: return
|
||||
val nmsHorse: EntityHorseAbstract = craftHorse.handle
|
||||
val loc = player.location
|
||||
val vec = loc.direction
|
||||
vec.setY(0)
|
||||
vec.multiply(0.75)
|
||||
vec.multiply(3 * speed)
|
||||
Bukkit.getScheduler().runTask(plugin, MoveHorseRunnable(nmsHorse, vec))
|
||||
}
|
||||
}
|
||||
})
|
||||
this.server.pluginManager.registerEvents(Events(), this)
|
||||
}
|
||||
}
|
||||
Reference in new issue
Block a user