Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- package me.snics.ingame;
- import java.sql.Connection;
- import java.sql.DriverManager;
- import java.sql.ResultSet;
- import java.sql.SQLException;
- import java.util.ArrayList;
- import java.util.List;
- import org.bukkit.Bukkit;
- import org.bukkit.Material;
- import org.bukkit.SkullType;
- import org.bukkit.Sound;
- import org.bukkit.command.Command;
- import org.bukkit.command.CommandSender;
- import org.bukkit.entity.Creature;
- import org.bukkit.entity.Player;
- import org.bukkit.event.EventHandler;
- import org.bukkit.event.Listener;
- import org.bukkit.event.block.BlockBreakEvent;
- import org.bukkit.event.block.BlockPlaceEvent;
- import org.bukkit.event.entity.EntityDamageByEntityEvent;
- import org.bukkit.event.entity.PlayerDeathEvent;
- import org.bukkit.event.inventory.InventoryClickEvent;
- import org.bukkit.event.player.PlayerLoginEvent;
- import org.bukkit.inventory.Inventory;
- import org.bukkit.inventory.ItemStack;
- import org.bukkit.inventory.meta.ItemMeta;
- import org.bukkit.inventory.meta.SkullMeta;
- import org.bukkit.plugin.java.JavaPlugin;
- import com.mysql.jdbc.PreparedStatement;
- public class Main extends JavaPlugin implements Listener
- {
- private static Connection connection;
- private Inventory inv;
- String label = "§f§l[§c§lLABEL§f§l] §r";
- public void onEnable()
- {
- Bukkit.getServer().getPluginManager().registerEvents(this, this);
- }
- public void onDisable()
- {
- try
- {
- if(connection != null && !connection.isClosed())
- {
- connection.close();
- }
- }
- catch (Exception e)
- {
- e.printStackTrace();
- }
- }
- public static synchronized void openConnection()
- {
- try
- {
- // Verbinding maken met de database.
- connection = DriverManager.getConnection("jdbc:mysql://127.0.0.1:3306/ingame", "root", "Pidiboe002");
- }
- catch (SQLException e)
- {
- e.printStackTrace();
- }
- }
- public static synchronized void closeConnection()
- {
- try
- {
- // Verbinding verbreken na gebruik van de database.
- connection.close();
- }
- catch (Exception e)
- {
- e.printStackTrace();
- }
- }
- public static synchronized boolean playerDataContainsPlayer (Player player)
- {
- try
- {
- // Maak een query.
- PreparedStatement sql = (PreparedStatement) connection.prepareStatement("SELECT * FROM `player_data` WHERE player_name=?;");
- // Verplaats het "?" met de speler naam.
- sql.setString(1, player.getName());
- // Result
- ResultSet resultset = sql.executeQuery();
- boolean containsPlayer = resultset.next();
- // Sluit alles weer.
- sql.close();
- resultset.close();
- return containsPlayer;
- }
- catch (Exception e)
- {
- e.printStackTrace();
- return false;
- }
- }
- @EventHandler
- public void onBreak (BlockBreakEvent e)
- {
- Player braker = e.getPlayer();
- openConnection();
- try
- {
- int brokenBlocks = 0;
- if(playerDataContainsPlayer(braker))
- {
- PreparedStatement sql = (PreparedStatement) connection.prepareStatement("SELECT blocks_broken FROM `player_data` WHERE player_name=?;");
- sql.setString(1, braker.getName());
- ResultSet result = sql.executeQuery();
- result.next();
- brokenBlocks = result.getInt("blocks_broken");
- PreparedStatement sqlUpdate = (PreparedStatement) connection.prepareCall("UPDATE `player_data` SET blocks_broken=? WHERE player_name=?;");
- sqlUpdate.setInt(1, brokenBlocks +1);
- sqlUpdate.setString(2, braker.getName());
- sqlUpdate.executeUpdate();
- sqlUpdate.close();
- sql.close();
- }
- }
- catch (Exception ex3)
- {
- ex3.printStackTrace();
- }
- finally
- {
- closeConnection();
- }
- }
- @EventHandler
- public void onPlace (BlockPlaceEvent e)
- {
- Player placer = e.getPlayer();
- openConnection();
- try
- {
- int placedBlocks = 0;
- if(playerDataContainsPlayer(placer))
- {
- // Maak een query
- PreparedStatement sql = (PreparedStatement) connection.prepareStatement("SELECT blocks_placed FROM `player_data` WHERE player_name=?;");
- // Verplaats het "?" met de persoon die de blokken plaatst.
- sql.setString(1, placer.getName());
- //Result
- ResultSet result = sql.executeQuery();
- result.next();
- // Vraag de geplaatste blokken op in de "blocks_placed" kolom van de database.
- placedBlocks = result.getInt("blocks_placed");
- // Update de Blocks placed counter.
- PreparedStatement sqlUpdate = (PreparedStatement) connection.prepareStatement("UPDATE `player_data` SET blocks_placed=? WHERE player_name=?;");
- // Nadat hij een block geplaatst heeft +1.
- sqlUpdate.setInt(1, placedBlocks +1);
- // Verplaats het "?" met zijn naam.
- sqlUpdate.setString(2, placer.getName());
- //Voer de query uit.
- sqlUpdate.executeUpdate();
- sqlUpdate.close();
- sql.close();
- }
- }
- catch (Exception e2)
- {
- e2.printStackTrace();
- }
- finally
- {
- closeConnection();
- }
- }
- @EventHandler
- public void onPlayerDeath (PlayerDeathEvent e)
- {
- Player victim = e.getEntity();
- Player killer = e.getEntity().getKiller();
- if(!(killer instanceof Player))
- {
- openConnection();
- try
- {
- int previousDeaths = 0;
- PreparedStatement sql = (PreparedStatement) connection.prepareStatement("SELECT player_deaths FROM `player_data` WHERE player_name=?;");
- sql.setString(1, victim.getName());
- ResultSet result = sql.executeQuery();
- result.next();
- previousDeaths = result.getInt("player_deaths");
- PreparedStatement sqlUpdate = (PreparedStatement) connection.prepareCall("UPDATE `player_data` SET player_deaths=? WHERE player_name=?;");
- sqlUpdate.setInt(1, previousDeaths + 1);
- sqlUpdate.setString(2, victim.getName());
- sqlUpdate.executeUpdate();
- sqlUpdate.close();
- sql.close();
- result.close();
- }
- catch (Exception ex5)
- {
- ex5.printStackTrace();
- victim.sendMessage("Hello");
- }
- finally
- {
- closeConnection();
- }
- return;
- }
- openConnection();
- try
- {
- int previousDeaths = 0;
- int previousKills = 0;
- PreparedStatement sqlDeaths = (PreparedStatement) connection.prepareStatement("SELECT player_deaths FROM `player_data` WHERE player_name =?;");
- sqlDeaths.setString(1, victim.getName());
- PreparedStatement sqlKills = (PreparedStatement) connection.prepareStatement("SELECT player_kills FROM `player_data` WHERE player_name=?;");
- sqlKills.setString(1, killer.getName());
- ResultSet resultDeaths = sqlDeaths.executeQuery();
- ResultSet resultKills = sqlKills.executeQuery();
- resultDeaths.next();
- resultKills.next();
- previousDeaths = resultDeaths.getInt("player_deaths");
- previousKills = resultKills.getInt("player_kills");
- PreparedStatement sqlDeathsUpdate = (PreparedStatement) connection.prepareStatement("UPDATE `player_data` SET player_deaths=? WHERE player_name=?;");
- sqlDeathsUpdate.setInt(1, previousDeaths +1);
- sqlDeathsUpdate.setString(2, victim.getName());
- PreparedStatement sqlKillsUpdate = (PreparedStatement) connection.prepareStatement("UPDATE `player_data` SET player_kills=? WHERE player_name=?;");
- sqlKillsUpdate.setInt(1, previousKills +1);
- sqlKillsUpdate.setString(2, killer.getName());
- sqlDeathsUpdate.executeUpdate();
- sqlKillsUpdate.executeUpdate();
- sqlDeathsUpdate.close();
- sqlKillsUpdate.close();
- sqlDeaths.close();
- sqlKills.close();
- resultKills.close();
- resultDeaths.close();
- }
- catch(Exception ex4)
- {
- ex4.printStackTrace();
- }
- finally
- {
- closeConnection();
- }
- }
- @EventHandler
- public void onHit (EntityDamageByEntityEvent e)
- {
- Player killer = (Player) e.getDamager();
- if(e.getEntity() instanceof Player) return;
- if(e.getDamager() instanceof Player && e.getEntity() instanceof Creature)
- {
- // De speler doet nu 50 healt af per hit.
- e.setDamage(50);
- openConnection();
- try
- {
- int previousKills = 0;
- if(playerDataContainsPlayer(killer))
- {
- // Maak de query.
- PreparedStatement sql = (PreparedStatement) connection.prepareStatement("SELECT player_mob_kills FROM `player_data` WHERE player_name=?;");
- // Verplaats het "?" met de killer zijn naam.
- sql.setString(1, killer.getName());
- // Result
- ResultSet result = sql.executeQuery();
- result.next();
- // De kills opvragen in de player_mob_kills kolom van de database.
- previousKills = result.getInt("player_mob_kills");
- // Update de kill counter.
- PreparedStatement killUpdate = (PreparedStatement) connection.prepareStatement("UPDATE `player_data` SET player_mob_kills=? WHERE player_name=?;");
- // Na dat hij een kill gemaakt heeft gaat de counter +1.
- killUpdate.setInt(1, previousKills + 1);
- // Verplaats het "?" met de killer zijn naam.
- killUpdate.setString(2, killer.getName());
- // Voer de query uit.
- killUpdate.executeUpdate();
- killUpdate.close();
- sql.close();
- result.close();
- }
- }
- catch (SQLException e1)
- {
- }
- finally
- {
- closeConnection();
- }
- }
- }
- @EventHandler
- public void onLogin (PlayerLoginEvent e)
- {
- openConnection();
- // Check of de speler al in de database staat.
- if(!(playerDataContainsPlayer(e.getPlayer())))
- {
- try
- {
- // Als hij er niet in staat word hij in de database gezet, met als counter 0.
- PreparedStatement sql = (PreparedStatement) connection.prepareStatement("INSERT INTO `player_data` VALUES (?,0,0,0,0,0);");
- // Verplaats het "?" met de zijn naam.
- sql.setString(1, e.getPlayer().getName());
- // Voer de query uit.
- sql.execute();
- sql.close();
- }
- catch (SQLException e1)
- {
- e1.printStackTrace();
- }
- finally
- {
- closeConnection();
- }
- }
- }
- public boolean onCommand(CommandSender sender,Command cmd, String commandLabel, String[] args)
- {
- // De console kan het commande niet doen.
- if(!(sender instanceof Player))
- {
- sender.sendMessage(label + "Je kan deze command alleen maar ingame gebruiken!");
- return true;
- }
- Player player = (Player) sender;
- if(cmd.getName().equalsIgnoreCase("info"))
- {
- if(args.length == 0)
- {
- player.sendMessage(label + "Gebruik: /info [Player]");
- player.playSound(player.getLocation(), Sound.ITEM_BREAK, 1f, 1f);
- return true;
- }
- openConnection();
- try
- {
- // Vraag de kolom naam "player_name" op uit de tabel "player_data" dit zorgt ervoor dat ik alde namen kijg die erin zitten.
- PreparedStatement sql = (PreparedStatement) connection.prepareStatement("SELECT * FROM `player_data` WHERE player_name=?;");
- // Verplaays het "?" met het eerste argument dat ik in de chat heb ingegeven.
- sql.setString(1, args[0]);
- // Result.
- ResultSet result = sql.executeQuery();
- result.next();
- // Om het makkelijker te maken.
- // Ik vraag het eerste vakje op van de tabel.
- String name = result.getObject(1).toString();
- // Ik vraag het tweede vakje op van de tabel.
- String killsMobs = result.getObject(2).toString();
- // Ik vraag het derde vakje op van de tabel.
- String deaths = result.getObject(3).toString();
- String killsPlayers = result.getObject(4).toString();
- String blocksPlaced = result.getObject(5).toString();
- String blocksBroken = result.getObject(6).toString();
- // Inventory
- // kills
- // Mobs
- ItemStack Kills = new ItemStack(Material.BONE);
- ItemMeta metaKills = Kills.getItemMeta();
- metaKills.setDisplayName("§fKills");
- List<String> metaKillsLore = new ArrayList<String>();
- metaKillsLore.add("§cMob Kills: §f" + killsMobs);
- metaKillsLore.add("§cPlayer Kills: §f" + killsPlayers);
- metaKillsLore.add("§cDeaths: §f" + deaths);
- metaKills.setLore(metaKillsLore);
- Kills.setItemMeta(metaKills);
- //Head
- ItemStack Head = new ItemStack(Material.SKULL_ITEM,1 , (short) SkullType.PLAYER.ordinal());
- SkullMeta metaHead = (SkullMeta) Head.getItemMeta();
- metaHead.setOwner(name);
- metaHead.setDisplayName("§fDit is§c " + name + "§f zijn info.");
- Head.setItemMeta(metaHead);
- // Blocks
- // Broken || Placed
- ItemStack Blocks = new ItemStack(Material.BRICK);
- ItemMeta metaBlocks = Blocks.getItemMeta();
- metaBlocks.setDisplayName("§fBlocks");
- List<String> metaBlocksLore = new ArrayList<String>();
- metaBlocksLore.add("§cBlokken geplaatst: §f" + blocksPlaced);
- metaBlocksLore.add("§cBlokken gebroken: §f" + blocksBroken);
- metaBlocks.setLore(metaBlocksLore);
- Blocks.setItemMeta(metaBlocks);
- // Maak de inventory
- inv = Bukkit.createInventory(null, 9, "§c§lInfo Menu");
- // Het heal item.
- inv.setItem(4, Kills);
- inv.setItem(0, Head);
- inv.setItem(5, Blocks);
- // Open de inventory.
- player.openInventory(inv);
- player.playSound(player.getLocation(), Sound.ITEM_PICKUP, 1f, 1f);
- }
- catch (Exception e)
- {
- // Dit word getriggered als de speler waar ik info over wouw niet in de database staat.
- player.sendMessage(label + "Sorry, deze speler kan ik niet vinden.");
- player.playSound(player.getLocation(), Sound.ITEM_BREAK, 1f, 1f);
- }
- finally
- {
- closeConnection();
- }
- }
- return true;
- }
- // Inventory Security
- @EventHandler
- public void onInventoryClick (InventoryClickEvent e)
- {
- // Zorgt ervoor dat de lege vakje geen error geven.
- if(!e.getInventory().getName().equalsIgnoreCase("§c§lInfo Menu")) return;
- // Zorgt ervoor dat we geen error krijgen als we uit de inventory klikken.
- if(e.getCurrentItem() == null || e.getCurrentItem().getType() == Material.AIR || !e.getCurrentItem().hasItemMeta()) return;
- if(e.getCurrentItem().getItemMeta().getDisplayName().contains("§fKills"))
- {
- // Zorgt ervoor de je geen items uit de Info tool kan nemen.
- e.setCancelled(true);
- return;
- }
- if(e.getCurrentItem().getItemMeta().getDisplayName().contains("§fBlocks"))
- {
- // Zorgt ervoor de je geen items uit de Info tool kan nemen.
- e.setCancelled(true);
- return;
- }
- if(e.getCurrentItem().getItemMeta().getDisplayName().contains("§fDit is§c " + e.getWhoClicked().getName() + "§f zijn info."))
- {
- e.setCancelled(true);
- return;
- }
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement