Compare commits

..

11 Commits

Author SHA1 Message Date
Auxilor
9a703f6190 One more held item slot fix 2022-09-26 14:02:20 +01:00
Auxilor
f8fec7eec4 Updated to 6.41.3 2022-09-26 13:57:50 +01:00
Auxilor
f6aadda4ed Fixed PacketHeldItemSlot 2022-09-26 13:57:39 +01:00
Auxilor
d8fca0f348 Switched KingdomsX to local jar 2022-09-26 12:52:46 +01:00
Auxilor
65ff4c4a31 PR Codestyle 2022-09-26 12:36:34 +01:00
Auxilor
90702bc7aa Merge remote-tracking branch 'origin/develop' into develop 2022-09-26 12:34:53 +01:00
Will FP
e81b788a1b Merge pull request #199 from mani1232/master
Update KingdomsX dependence
2022-09-26 12:34:46 +01:00
Auxilor
ebc0ee7940 Updated to 6.41.2 2022-09-26 12:33:25 +01:00
Auxilor
82d269daf1 Improved PacketWindowItems and DisplayFrame 2022-09-26 12:32:07 +01:00
Auxilor
9d5300d6ae Began display system fixes 2022-09-26 12:10:22 +01:00
mani1232
8870e4d6fb Update KingdomsX dependence 2022-09-25 21:26:21 +02:00
10 changed files with 63 additions and 57 deletions

View File

@@ -25,7 +25,6 @@ dependencies {
compileOnly 'com.comphenix.protocol:ProtocolLib:5.0.0-SNAPSHOT' compileOnly 'com.comphenix.protocol:ProtocolLib:5.0.0-SNAPSHOT'
compileOnly 'com.sk89q.worldguard:worldguard-bukkit:7.0.7-SNAPSHOT' compileOnly 'com.sk89q.worldguard:worldguard-bukkit:7.0.7-SNAPSHOT'
compileOnly 'com.github.TechFortress:GriefPrevention:16.17.1' compileOnly 'com.github.TechFortress:GriefPrevention:16.17.1'
compileOnly 'com.github.cryptomorin:kingdoms:1.12.3'
compileOnly('com.github.TownyAdvanced:Towny:0.97.2.6') { compileOnly('com.github.TownyAdvanced:Towny:0.97.2.6') {
exclude group: 'com.zaxxer', module: 'HikariCP' exclude group: 'com.zaxxer', module: 'HikariCP'
} }

View File

@@ -56,7 +56,7 @@ import com.willfp.eco.internal.spigot.data.PlayerBlockListener
import com.willfp.eco.internal.spigot.data.storage.ProfileSaver import com.willfp.eco.internal.spigot.data.storage.ProfileSaver
import com.willfp.eco.internal.spigot.display.PacketAutoRecipe import com.willfp.eco.internal.spigot.display.PacketAutoRecipe
import com.willfp.eco.internal.spigot.display.PacketChat import com.willfp.eco.internal.spigot.display.PacketChat
import com.willfp.eco.internal.spigot.display.PacketHeldWindowItems import com.willfp.eco.internal.spigot.display.PacketHeldItemSlot
import com.willfp.eco.internal.spigot.display.PacketOpenWindowMerchant import com.willfp.eco.internal.spigot.display.PacketOpenWindowMerchant
import com.willfp.eco.internal.spigot.display.PacketSetCreativeSlot import com.willfp.eco.internal.spigot.display.PacketSetCreativeSlot
import com.willfp.eco.internal.spigot.display.PacketSetSlot import com.willfp.eco.internal.spigot.display.PacketSetSlot
@@ -357,7 +357,7 @@ abstract class EcoSpigotPlugin : EcoPlugin() {
PacketSetCreativeSlot(this), PacketSetCreativeSlot(this),
PacketSetSlot(this), PacketSetSlot(this),
PacketWindowItems(this), PacketWindowItems(this),
PacketHeldWindowItems(this), PacketHeldItemSlot(this),
PacketOpenWindowMerchant(this) PacketOpenWindowMerchant(this)
) )
} }

View File

@@ -0,0 +1,29 @@
package com.willfp.eco.internal.spigot.display
import com.comphenix.protocol.PacketType
import com.comphenix.protocol.events.PacketContainer
import com.comphenix.protocol.events.PacketEvent
import com.willfp.eco.core.AbstractPacketAdapter
import com.willfp.eco.core.EcoPlugin
import com.willfp.eco.internal.spigot.display.frame.DisplayFrame
import com.willfp.eco.internal.spigot.display.frame.lastDisplayFrame
import org.bukkit.entity.Player
class PacketHeldItemSlot(plugin: EcoPlugin) :
AbstractPacketAdapter(plugin, PacketType.Play.Server.HELD_ITEM_SLOT, false) {
override fun onSend(
packet: PacketContainer,
player: Player,
event: PacketEvent
) {
player.lastDisplayFrame = DisplayFrame.EMPTY
}
override fun onReceive(
packet: PacketContainer,
player: Player,
event: PacketEvent
) {
player.lastDisplayFrame = DisplayFrame.EMPTY
}
}

View File

@@ -1,25 +0,0 @@
package com.willfp.eco.internal.spigot.display
import com.comphenix.protocol.PacketType
import com.comphenix.protocol.events.PacketContainer
import com.comphenix.protocol.events.PacketEvent
import com.willfp.eco.core.AbstractPacketAdapter
import com.willfp.eco.core.EcoPlugin
import com.willfp.eco.core.display.Display
import org.bukkit.entity.Player
import org.bukkit.inventory.ItemStack
class PacketHeldWindowItems(plugin: EcoPlugin) :
AbstractPacketAdapter(plugin, PacketType.Play.Server.WINDOW_ITEMS, false) {
override fun onSend(
packet: PacketContainer,
player: Player,
event: PacketEvent
) {
packet.itemModifier.modify(0) { item: ItemStack? ->
Display.display(
item!!, player
)
}
}
}

View File

@@ -9,7 +9,6 @@ import com.willfp.eco.core.display.Display
import com.willfp.eco.internal.spigot.display.frame.DisplayFrame import com.willfp.eco.internal.spigot.display.frame.DisplayFrame
import com.willfp.eco.internal.spigot.display.frame.lastDisplayFrame import com.willfp.eco.internal.spigot.display.frame.lastDisplayFrame
import org.bukkit.entity.Player import org.bukkit.entity.Player
import org.bukkit.inventory.ItemStack
class PacketSetSlot(plugin: EcoPlugin) : AbstractPacketAdapter(plugin, PacketType.Play.Server.SET_SLOT, false) { class PacketSetSlot(plugin: EcoPlugin) : AbstractPacketAdapter(plugin, PacketType.Play.Server.SET_SLOT, false) {
override fun onSend( override fun onSend(
@@ -17,14 +16,13 @@ class PacketSetSlot(plugin: EcoPlugin) : AbstractPacketAdapter(plugin, PacketTyp
player: Player, player: Player,
event: PacketEvent event: PacketEvent
) { ) {
packet.itemModifier.modify(0, object : VersionCompatiblePLibFunction<ItemStack> { packet.itemModifier.modify(0) {
override fun apply(item: ItemStack) = Display.display(
Display.display( it,
item, player
player )
) }
})
player.lastDisplayFrame = DisplayFrame.EMPTY player.lastDisplayFrame = DisplayFrame.EMPTY
} }
} }

View File

@@ -14,21 +14,32 @@ import org.bukkit.inventory.ItemStack
import java.util.concurrent.ConcurrentHashMap import java.util.concurrent.ConcurrentHashMap
class PacketWindowItems(plugin: EcoPlugin) : AbstractPacketAdapter(plugin, PacketType.Play.Server.WINDOW_ITEMS, false) { class PacketWindowItems(plugin: EcoPlugin) : AbstractPacketAdapter(plugin, PacketType.Play.Server.WINDOW_ITEMS, false) {
private val ignorePacketList = ConcurrentHashMap.newKeySet<String>() private val lastKnownWindowIDs = ConcurrentHashMap<String, Int>()
override fun onSend( override fun onSend(
packet: PacketContainer, packet: PacketContainer,
player: Player, player: Player,
event: PacketEvent event: PacketEvent
) { ) {
if (ignorePacketList.contains(player.name)) { packet.itemModifier.modify(0) {
ignorePacketList.remove(player.name) Display.display(
return it, player
)
} }
val windowId = packet.integers.read(0) val windowId = packet.integers.read(0)
if (windowId != 0) { // Using name because UUID is unreliable with ProtocolLib players.
val name = player.name
val lastKnownID = lastKnownWindowIDs[name]
lastKnownWindowIDs[name] = windowId
// If there is any change in window ID at any point,
// Remove the last display frame to prevent any potential conflicts.
// If the window ID is not zero (not a player inventory), then remove too,
// as GUIs are not player inventories.
if (lastKnownID != windowId || windowId != 0) {
player.lastDisplayFrame = DisplayFrame.EMPTY player.lastDisplayFrame = DisplayFrame.EMPTY
} }

View File

@@ -1,8 +0,0 @@
package com.willfp.eco.internal.spigot.display
import com.google.common.base.Function
import java.util.function.UnaryOperator
interface VersionCompatiblePLibFunction<T> : Function<T, T>, UnaryOperator<T> {
}

View File

@@ -6,10 +6,10 @@ import org.bukkit.block.Block
import org.bukkit.entity.LivingEntity import org.bukkit.entity.LivingEntity
import org.bukkit.entity.Player import org.bukkit.entity.Player
import org.kingdoms.constants.group.Kingdom import org.kingdoms.constants.group.Kingdom
import org.kingdoms.constants.group.model.KingdomRelation import org.kingdoms.constants.group.model.relationships.StandardRelationAttribute
import org.kingdoms.constants.land.Land import org.kingdoms.constants.land.Land
import org.kingdoms.constants.player.DefaultKingdomPermission
import org.kingdoms.constants.player.KingdomPlayer import org.kingdoms.constants.player.KingdomPlayer
import org.kingdoms.constants.player.StandardKingdomPermission
import org.kingdoms.managers.PvPManager import org.kingdoms.managers.PvPManager
class AntigriefKingdoms : AntigriefIntegration { class AntigriefKingdoms : AntigriefIntegration {
@@ -23,11 +23,13 @@ class AntigriefKingdoms : AntigriefIntegration {
} }
val kingdom: Kingdom = kp.kingdom ?: return false val kingdom: Kingdom = kp.kingdom ?: return false
val land = Land.getLand(block) ?: return true val land = Land.getLand(block) ?: return true
val permission: DefaultKingdomPermission = val permission = if (land.isNexusLand) {
if (land.isNexusLand) DefaultKingdomPermission.NEXUS_BUILD else DefaultKingdomPermission.BUILD StandardKingdomPermission.NEXUS_BUILD
} else StandardKingdomPermission.BUILD
return if (!kp.hasPermission(permission)) { return if (!kp.hasPermission(permission)) {
false false
} else kingdom.hasAttribute(land.kingdom, KingdomRelation.Attribute.BUILD) } else kingdom.hasAttribute(land.kingdom, StandardRelationAttribute.BUILD)
} }
override fun canCreateExplosion( override fun canCreateExplosion(
@@ -84,4 +86,4 @@ class AntigriefKingdoms : AntigriefIntegration {
override fun hashCode(): Int { override fun hashCode(): Int {
return this.pluginName.hashCode() return this.pluginName.hashCode()
} }
} }

View File

@@ -1,3 +1,3 @@
version = 6.41.1 version = 6.41.3
plugin-name = eco plugin-name = eco
kotlin.code.style = official kotlin.code.style = official

Binary file not shown.