9
0
mirror of https://github.com/WiIIiam278/HuskSync.git synced 2025-12-28 11:09:11 +00:00

v2.2.6: Crafting inventory safety, Maria v11 support (#153)

* Clear player inventory crafting slots on sync

* Bundle Maria driver for v11 support
This commit is contained in:
William
2023-07-28 16:50:52 +01:00
committed by GitHub
parent 4ed8b94d55
commit 12e882fe22
10 changed files with 92 additions and 95 deletions

View File

@@ -130,8 +130,8 @@ public class BukkitHuskSync extends JavaPlugin implements HuskSync {
// Prepare database connection
this.database = new MySqlDatabase(this);
log(Level.INFO, "Attempting to establish connection to the " + settings.getSqlType().getDisplayName() + " database...");
initialized.set(this.database.initialize());
log(Level.INFO, "Attempting to establish connection to the " + settings.getDatabaseType().getDisplayName() + " database...");
this.database.initialize();
if (initialized.get()) {
log(Level.INFO, "Successfully established a connection to the database");
} else {
@@ -195,7 +195,7 @@ public class BukkitHuskSync extends JavaPlugin implements HuskSync {
"An update is available for HuskSync, v" + newVersion
+ " (Currently running v" + getPluginVersion() + ")")));
}
} catch (HuskSyncInitializationException exception) {
} catch (IllegalStateException exception) {
log(Level.SEVERE, """
***************************************************

View File

@@ -40,6 +40,7 @@ import org.bukkit.event.entity.PlayerDeathEvent;
import org.bukkit.event.entity.ProjectileLaunchEvent;
import org.bukkit.event.inventory.InventoryClickEvent;
import org.bukkit.event.inventory.InventoryOpenEvent;
import org.bukkit.event.inventory.PrepareItemCraftEvent;
import org.bukkit.event.player.PlayerCommandPreprocessEvent;
import org.bukkit.event.player.PlayerDropItemEvent;
import org.bukkit.event.player.PlayerInteractEntityEvent;
@@ -172,6 +173,10 @@ public class BukkitEventListener extends EventListener implements BukkitJoinEven
event.setCancelled(cancelPlayerEvent(event.getWhoClicked().getUniqueId()));
}
@EventHandler(priority = EventPriority.HIGHEST, ignoreCancelled = true)
public void onCraftItem(@NotNull PrepareItemCraftEvent event) {
}
@EventHandler(priority = EventPriority.HIGHEST, ignoreCancelled = true)
public void onPlayerTakeDamage(@NotNull EntityDamageEvent event) {
if (event.getEntity() instanceof Player player) {

View File

@@ -36,6 +36,7 @@ import org.bukkit.advancement.AdvancementProgress;
import org.bukkit.attribute.Attribute;
import org.bukkit.entity.EntityType;
import org.bukkit.entity.Player;
import org.bukkit.event.inventory.InventoryType;
import org.bukkit.event.player.PlayerTeleportEvent;
import org.bukkit.inventory.Inventory;
import org.bukkit.inventory.ItemStack;
@@ -55,7 +56,7 @@ import java.util.logging.Level;
* Bukkit implementation of an {@link OnlineUser}
*/
public class BukkitPlayer extends OnlineUser {
private final BukkitHuskSync plugin;
private final Player player;
@@ -178,6 +179,7 @@ public class BukkitPlayer extends OnlineUser {
return BukkitSerializer.deserializeInventory(itemData.serializedItems).thenApplyAsync(contents -> {
final CompletableFuture<Void> inventorySetFuture = new CompletableFuture<>();
Bukkit.getScheduler().runTask(plugin, () -> {
this.clearInventoryCraftingSlots();
player.setItemOnCursor(null);
player.getInventory().setContents(contents.getContents());
player.updateInventory();
@@ -187,6 +189,16 @@ public class BukkitPlayer extends OnlineUser {
});
}
// Clears any items the player may have in the crafting slots of their inventory
private void clearInventoryCraftingSlots() {
final Inventory inventory = player.getOpenInventory().getTopInventory();
if (inventory.getType() == InventoryType.CRAFTING) {
for (int slot = 0; slot < 5; slot++) {
inventory.setItem(slot, null);
}
}
}
@Override
public CompletableFuture<ItemData> getEnderChest() {
final Inventory enderChest = player.getEnderChest();
@@ -500,7 +512,7 @@ public class BukkitPlayer extends OnlineUser {
.ifPresentOrElse(mapping -> mapping.setContainerValue(container, player, key),
() -> plugin.log(Level.WARNING,
"Could not set " + player.getName() + "'s persistent data key " + keyString +
" as it has an invalid type. Skipping!"));
" as it has an invalid type. Skipping!"));
}
});
}).exceptionally(throwable -> {
@@ -517,7 +529,7 @@ public class BukkitPlayer extends OnlineUser {
public Audience getAudience() {
return plugin.getAudiences().player(player);
}
@Override
public boolean isOffline() {
try {