Guest User

Untitled

a guest
Mar 16th, 2019
44
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Java 7.45 KB | None | 0 0
  1. package basic.bukkit;
  2.  
  3. import java.sql.Connection;
  4. import java.sql.DriverManager;
  5.  
  6. import java.sql.ResultSet;
  7. import java.sql.SQLException;
  8. import java.sql.Statement;
  9.  
  10. import java.text.SimpleDateFormat;
  11. import java.util.Date;
  12.  
  13. import org.bukkit.Bukkit;
  14. import org.bukkit.ChatColor;
  15. import org.bukkit.command.Command;
  16. import org.bukkit.command.CommandSender;
  17. import org.bukkit.entity.Player;
  18. import org.bukkit.event.EventHandler;
  19. import org.bukkit.event.Listener;
  20. import org.bukkit.event.player.PlayerJoinEvent;
  21. import org.bukkit.plugin.java.JavaPlugin;
  22.  
  23.  
  24.  
  25. public class main extends JavaPlugin implements Listener
  26.  {
  27.    
  28.     public void onEnable() {
  29.         getServer().getPluginManager().registerEvents(this,this);        
  30.        
  31.     }
  32.     public void disEnable() {
  33.        
  34.        
  35.     }
  36.     @EventHandler
  37.     public void onPlayerJoin(PlayerJoinEvent e) {//玩家加入取得基本資料
  38.        Player p = e.getPlayer();       
  39.        
  40.        String name = p.getName();
  41.        String uuid=p.getPlayer().getUniqueId().toString();
  42.        String ip = e.getPlayer().getAddress().getHostString();
  43.        setplayer(name,ip,uuid);
  44.          
  45.        
  46.        
  47.     }
  48.    
  49.     public void setplayer(String name,String ip,String uuid){     //建立玩家基本資料
  50.  
  51.            
  52.       try{
  53.           Connection connection = DriverManager.getConnection("jdbc:mysql://localhost/minecraft?useSSL=false", "root", "pass");
  54.             if(!Find("player","uid",uuid)){
  55.                
  56.                 Statement stat = connection.createStatement();
  57.                 stat.executeUpdate( "INSERT INTO player(player_name,ipv4,uid) VALUES (" +" ' "+name+" ' "+", '"+ip+"' ,"+"'"+uuid+"'"+")");
  58.                 setplayermoney(name);
  59.                
  60.                
  61.         }  
  62.                
  63.          
  64.       }
  65.          catch(SQLException e1) {
  66.             e1.printStackTrace();
  67.          }
  68.     }
  69.     public void setplayermoney(String name) {//新增玩家初始金額
  70.         try{
  71.               Connection connection = DriverManager.getConnection("jdbc:mysql://localhost/money?useSSL=false", "root", "pass");
  72.              
  73.               String date=getDateTime();
  74.              
  75.               Statement stat = connection.createStatement();
  76.               stat.executeUpdate("CREATE TABLE " +name+ "(date datetime, pay integer,income integer,who char(20),Totalassets integer)");
  77.              
  78.              
  79.               stat.executeUpdate("INSERT INTO"+" "+name+"(date,pay,income,who,Totalassets) VALUES (" +" ' "+date+" ' "+",0,0,"+" ' "+name+" ' ,"+50+")");
  80.                    
  81.                    
  82.                
  83.                    
  84.              
  85.           }
  86.              catch(SQLException e1) {
  87.                 e1.printStackTrace();
  88.              }
  89.        
  90.     }
  91.  
  92.     public boolean Find(String x,String y,String z){//搜尋器
  93.         try{
  94.             Connection connection = DriverManager.getConnection("jdbc:mysql://localhost/minecraft?useSSL=false", "root", "pass");
  95.             Statement statement = connection.createStatement();
  96.             ResultSet resultSet = null;
  97.             String selectSql="SELECT * FROM "+ x + " WHERE "+  y+"= '"+z+" ' ";
  98.             resultSet = statement.executeQuery(selectSql);
  99.            
  100.            
  101.            
  102.             boolean canFind = resultSet.next();
  103.            
  104.             return canFind;
  105.         }catch(SQLException e){
  106.             e.printStackTrace();
  107.             return false;
  108.         }
  109.     }
  110.     public String getDateTime(){//取得現在時間
  111.         SimpleDateFormat sdFormat = new SimpleDateFormat("yyyy/MM/dd hh:mm:ss");
  112.         Date date = new Date();
  113.         String strDate = sdFormat.format(date);
  114.         //System.out.println(strDate);
  115.         return strDate;
  116.         }
  117.     public  boolean onCommand(CommandSender sender ,Command cmd,String cmdlable,String[] args)//指令庫
  118.     {
  119.         Player p = (Player) sender;
  120.         if(cmdlable.equals("bal"))
  121.         {
  122.             bal(p);
  123.             return true;       
  124.         }
  125.         else if(cmdlable.equals("pay"))
  126.         {
  127.             p.sendMessage(args[0]);
  128.             Player p2 = Bukkit.getPlayer(args[0]); //args[0]=玩家名字
  129.             String income=args[1];
  130.            
  131.                        
  132.             if(p2==null) {//該玩家不存在
  133.                 p.sendMessage(ChatColor.RED+"該玩家不存在或是不再線上");
  134.             }
  135.             else
  136.             {
  137.                 try{   
  138.                
  139.                   int changearg = Integer.parseInt(income);
  140.                  
  141.                  
  142.                  
  143.                   pay(p,p2,changearg);
  144.                  
  145.                 }catch(NumberFormatException e){
  146.                    
  147.                    p.sendMessage(ChatColor.RED+"輸入轉帳金額錯誤");
  148.                 }          
  149.                
  150.             }
  151.             return true;       
  152.         }
  153.        
  154.         return false;
  155.     }
  156.    
  157.     public void bal(Player p) {//查詢金額
  158.         try{
  159.            
  160.             Connection connection = DriverManager.getConnection("jdbc:mysql://localhost/money?useSSL=false", "root", "pass");
  161.             String query = "SELECT `Totalassets` FROM `"+p.getName()+"` ORDER BY date DESC LIMIT 0 , 1";
  162.             Statement stmt = connection.createStatement();
  163.             ResultSet rs = stmt.executeQuery(query);
  164.               while (rs.next()) {
  165.                         int Totalassets= rs.getInt("Totalassets");
  166.                         p.sendMessage(ChatColor.GREEN+"您的帳戶總額:"+ChatColor.YELLOW+Totalassets);
  167.                        
  168.                     }
  169.              
  170.             rs.close();
  171.             stmt.close();
  172.           }
  173.              catch(SQLException e1) {
  174.                 e1.printStackTrace();
  175.              }
  176.        
  177.        
  178.     }
  179.     public void pay(Player p, Player p2, int income)//付款
  180.     {
  181.         try{
  182.            
  183.             Connection connection = DriverManager.getConnection("jdbc:mysql://localhost/money?useSSL=false", "root", "pass");
  184.             String query = "SELECT `Totalassets` FROM `"+p.getName()+"` ORDER BY date DESC LIMIT 0 , 1";
  185.             Statement stmt = connection.createStatement();
  186.             ResultSet rs = stmt.executeQuery(query);
  187.               while (rs.next()) {
  188.                        int Totalassets= rs.getInt("Totalassets");
  189.                        if(Totalassets<income)
  190.                        {
  191.                            p.sendMessage(ChatColor.RED+"餘額不足");
  192.                        }
  193.                        else
  194.                        {
  195.                            
  196.                            String date=getDateTime();
  197.                            Totalassets-=income;
  198.                            stmt.executeUpdate("INSERT INTO"+" "+p.getName()+"(date,pay,income,who,Totalassets) VALUES (" +" ' "+date+" ' "+","+income+","+"0"+","+" ' "+p2.getName()+" ' ,"+Totalassets+")");
  199.                            pay2(p,p2,income);
  200.                          
  201.                            p.sendMessage(ChatColor.WHITE+"您像 "+p2.getName()+" 支付了 "+income+" 元");
  202.                            p.sendMessage(ChatColor.GREEN+"交易成功:已從 "+ChatColor.YELLOW+p.getName()+ChatColor.GREEN+" 的帳戶轉移 "+ChatColor.YELLOW+ income+ChatColor.GREEN+" 元 至 "+ChatColor.YELLOW+p2.getName()+ChatColor.GREEN+" 的帳戶");
  203.                            
  204.                        }
  205.                        
  206.                        
  207.                     }
  208.            
  209.            
  210.           }
  211.              catch(SQLException e1) {
  212.                 e1.printStackTrace();
  213.              }
  214.        
  215.     }
  216.     public void pay2(Player p, Player p2, int income)//付款
  217.     {
  218.         try{
  219.            
  220.             Connection connection = DriverManager.getConnection("jdbc:mysql://localhost/money?useSSL=false", "root", "pass");
  221.             String query = "SELECT `Totalassets` FROM `"+p2.getName()+"` ORDER BY date DESC LIMIT 0 , 1";
  222.             Statement stmt = connection.createStatement();
  223.             ResultSet rs = stmt.executeQuery(query);
  224.               while (rs.next()) {
  225.                   String date=getDateTime();
  226.                   int Totalassets= rs.getInt("Totalassets");
  227.                   Totalassets+=income;
  228.                   stmt.executeUpdate("INSERT INTO"+" "+p2.getName()+"(date,pay,income,who,Totalassets) VALUES (" +" ' "+date+" ' "+",0,"+income+","+" ' "+p.getName()+" ' ,"+Totalassets+")");
  229.                   p.sendMessage(ChatColor.GREEN+"交易成功:已從 "+ChatColor.YELLOW+p.getName()+ChatColor.GREEN+" 的帳戶轉移 "+ChatColor.YELLOW+ income+ChatColor.GREEN+" 元 至 "+ChatColor.YELLOW+p2.getName()+ChatColor.GREEN+" 的帳戶");
  230.                        
  231.                     }
  232.            
  233.            
  234.           }
  235.              catch(SQLException e1) {
  236.                 e1.printStackTrace();
  237.              }
  238.        
  239.     }
  240.    
  241.    
  242.  
  243. }
Add Comment
Please, Sign In to add comment