从数据库已经把经验值读取出来了,但是在前台同步的时候绿条没有改变。我用的是player.setExperience()和player.setExp()两个方法试了一下都没效果。求大佬指点。
下面是我写的代码:
package com.github.donna;
import Util.ConnectionUtil;
import entity.PlayerInfo;
import org.bukkit.Bukkit;
import org.bukkit.entity.Player;
import org.bukkit.event.EventHandler;
import org.bukkit.event.Listener;
import org.bukkit.event.player.PlayerLoginEvent;
import org.bukkit.event.player.PlayerQuitEvent;
import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
public class PlayerInfoListener implements Listener {
private PlayerPlugin plugin;
public PlayerInfoListener(PlayerPlugin plugin) {
this.plugin = plugin;
Bukkit.getPluginManager().registerEvents(this,plugin);
}
Connection conn = ConnectionUtil.getConnection();
ResultSet rs=null;
PreparedStatement pstm=null;
PlayerInfo p = null;
@EventHandler
public void OnLogin(PlayerLoginEvent e){
Player player = e.getPlayer();
String uniqueId = player.getUniqueId().toString();
String name = player.getName();
try{
//判断是否是新玩家
String sql="select * from playerInfo where uniqueId=?";
pstm = conn.prepareStatement(sql);
pstm.setString(1,uniqueId);
rs = pstm.executeQuery();
while(rs.next()){
p= new PlayerInfo(rs.getString("name"),
rs.getString("uniqueId")
,rs.getInt("totalExperience"));
}
//如果是新玩家则插入数据
if(p==null){
sql="insert into playerInfo(name,uniqueId,totalExperience) values(?,?,?)";
pstm = conn.prepareStatement(sql);
pstm.setString(1,name);
pstm.setString(2,uniqueId);
pstm.setInt(3,0);
int i = pstm.executeUpdate();
if(i>0){
System.out.println("添加成功!");
}else{
System.out.println("添加失败!");
}
}
//如果是旧玩家,则把经验值显示出来
else{
int totalExperience = p.getTotalExperience();
player.giveExp(totalExperience);
System.out.println("gexp"+player.getExp());
}
}catch (Exception exc){
exc.printStackTrace();
}finally {
}
}
@EventHandler
public void OnExit(PlayerQuitEvent e){
//当玩家退出的时候,把玩家经验值更新到数据库
Player player = e.getPlayer();
String uniqueId = player.getUniqueId().toString();
int totalExperience = player.getTotalExperience();
String sql="update playerInfo set totalExperience=? where uniqueId=?";
try {
pstm = conn.prepareStatement(sql);
pstm.setInt(1,totalExperience);
pstm.setString(2,uniqueId);
int i = pstm.executeUpdate();
System.out.println("更新一条记录"+i);
player.giveExp(totalExperience);
} catch (SQLException e1) {
e1.printStackTrace();
}
}
}
下面是我写的代码:
package com.github.donna;
import Util.ConnectionUtil;
import entity.PlayerInfo;
import org.bukkit.Bukkit;
import org.bukkit.entity.Player;
import org.bukkit.event.EventHandler;
import org.bukkit.event.Listener;
import org.bukkit.event.player.PlayerLoginEvent;
import org.bukkit.event.player.PlayerQuitEvent;
import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
public class PlayerInfoListener implements Listener {
privatePlayerPlugin plugin;
public PlayerInfoListener(PlayerPlugin plugin) {
this.plugin = plugin;
Bukkit.getPluginManager().registerEvents(this,plugin);
}
Connection conn = ConnectionUtil.getConnection();
ResultSet rs=null;
PreparedStatement pstm=null;
PlayerInfo p = null;
@EventHandler
public void OnLogin(PlayerLoginEvent e){
Player player = e.getPlayer();
String uniqueId = player.getUniqueId().toString();
String name = player.getName();
try{
//判断是否是新玩家
String sql="select * from playerInfo where uniqueId=?";
pstm = conn.prepareStatement(sql);
pstm.setString(1,uniqueId);
rs = pstm.executeQuery();
while(rs.next()){
p=new PlayerInfo(rs.getString("name"),
rs.getString("uniqueId")
,rs.getInt("totalExperience"));
}
//如果是新玩家则插入数据
if(p==null){
sql="insert into playerInfo(name,uniqueId,totalExperience) values(?,?,?)";
pstm = conn.prepareStatement(sql);
pstm.setString(1,name);
pstm.setString(2,uniqueId);
pstm.setInt(3,0);
int i = pstm.executeUpdate();
if(i>0){
System.out.println("添加成功!");
}else{
System.out.println("添加失败!");
}
}
//如果是旧玩家,则把经验值显示出来
else{
int totalExperience = p.getTotalExperience();
player.giveExp(totalExperience);
System.out.println("gexp"+player.getExp());
}
}catch (Exception exc){
exc.printStackTrace();
}finally {
}
}
@EventHandler
public void OnExit(PlayerQuitEvent e){
//当玩家退出的时候,把玩家经验值更新到数据库
Player player = e.getPlayer();
String uniqueId = player.getUniqueId().toString();
int totalExperience = player.getTotalExperience();
String sql="update playerInfo set totalExperience=? where uniqueId=?";
try {
pstm = conn.prepareStatement(sql);
pstm.setInt(1,totalExperience);
pstm.setString(2,uniqueId);
int i = pstm.executeUpdate();
System.out.println("更新一条记录"+i);
player.giveExp(totalExperience);
} catch (SQLException e1) {
e1.printStackTrace();
}
}
}
下面是我写的代码:
package com.github.donna;
import Util.ConnectionUtil;
import entity.PlayerInfo;
import org.bukkit.Bukkit;
import org.bukkit.entity.Player;
import org.bukkit.event.EventHandler;
import org.bukkit.event.Listener;
import org.bukkit.event.player.PlayerLoginEvent;
import org.bukkit.event.player.PlayerQuitEvent;
import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
public class PlayerInfoListener implements Listener {
private PlayerPlugin plugin;
public PlayerInfoListener(PlayerPlugin plugin) {
this.plugin = plugin;
Bukkit.getPluginManager().registerEvents(this,plugin);
}
Connection conn = ConnectionUtil.getConnection();
ResultSet rs=null;
PreparedStatement pstm=null;
PlayerInfo p = null;
@EventHandler
public void OnLogin(PlayerLoginEvent e){
Player player = e.getPlayer();
String uniqueId = player.getUniqueId().toString();
String name = player.getName();
try{
//判断是否是新玩家
String sql="select * from playerInfo where uniqueId=?";
pstm = conn.prepareStatement(sql);
pstm.setString(1,uniqueId);
rs = pstm.executeQuery();
while(rs.next()){
p= new PlayerInfo(rs.getString("name"),
rs.getString("uniqueId")
,rs.getInt("totalExperience"));
}
//如果是新玩家则插入数据
if(p==null){
sql="insert into playerInfo(name,uniqueId,totalExperience) values(?,?,?)";
pstm = conn.prepareStatement(sql);
pstm.setString(1,name);
pstm.setString(2,uniqueId);
pstm.setInt(3,0);
int i = pstm.executeUpdate();
if(i>0){
System.out.println("添加成功!");
}else{
System.out.println("添加失败!");
}
}
//如果是旧玩家,则把经验值显示出来
else{
int totalExperience = p.getTotalExperience();
player.giveExp(totalExperience);
System.out.println("gexp"+player.getExp());
}
}catch (Exception exc){
exc.printStackTrace();
}finally {
}
}
@EventHandler
public void OnExit(PlayerQuitEvent e){
//当玩家退出的时候,把玩家经验值更新到数据库
Player player = e.getPlayer();
String uniqueId = player.getUniqueId().toString();
int totalExperience = player.getTotalExperience();
String sql="update playerInfo set totalExperience=? where uniqueId=?";
try {
pstm = conn.prepareStatement(sql);
pstm.setInt(1,totalExperience);
pstm.setString(2,uniqueId);
int i = pstm.executeUpdate();
System.out.println("更新一条记录"+i);
player.giveExp(totalExperience);
} catch (SQLException e1) {
e1.printStackTrace();
}
}
}
2021.12 数据,可能有更多内容
从数据库已经把经验值读取出来了,但是在前台同步的时候绿条没有改变。我用的是player.setExperience()和player.setExp()两个方法试了一下都没效果。求大佬指点。下面是我写的代码:
package com.github.donna;
import Util.ConnectionUtil;
import entity.PlayerInfo;
import org.bukkit.Bukkit;
import org.bukkit.entity.Player;
import org.bukkit.event.EventHandler;
import org.bukkit.event.Listener;
import org.bukkit.event.player.PlayerLoginEvent;
import org.bukkit.event.player.PlayerQuitEvent;
import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
public class PlayerInfoListener implements Listener {
privatePlayerPlugin plugin;
public PlayerInfoListener(PlayerPlugin plugin) {
this.plugin = plugin;
Bukkit.getPluginManager().registerEvents(this,plugin);
}
Connection conn = ConnectionUtil.getConnection();
ResultSet rs=null;
PreparedStatement pstm=null;
PlayerInfo p = null;
@EventHandler
public void OnLogin(PlayerLoginEvent e){
Player player = e.getPlayer();
String uniqueId = player.getUniqueId().toString();
String name = player.getName();
try{
//判断是否是新玩家
String sql="select * from playerInfo where uniqueId=?";
pstm = conn.prepareStatement(sql);
pstm.setString(1,uniqueId);
rs = pstm.executeQuery();
while(rs.next()){
p=new PlayerInfo(rs.getString("name"),
rs.getString("uniqueId")
,rs.getInt("totalExperience"));
}
//如果是新玩家则插入数据
if(p==null){
sql="insert into playerInfo(name,uniqueId,totalExperience) values(?,?,?)";
pstm = conn.prepareStatement(sql);
pstm.setString(1,name);
pstm.setString(2,uniqueId);
pstm.setInt(3,0);
int i = pstm.executeUpdate();
if(i>0){
System.out.println("添加成功!");
}else{
System.out.println("添加失败!");
}
}
//如果是旧玩家,则把经验值显示出来
else{
int totalExperience = p.getTotalExperience();
player.giveExp(totalExperience);
System.out.println("gexp"+player.getExp());
}
}catch (Exception exc){
exc.printStackTrace();
}finally {
}
}
@EventHandler
public void OnExit(PlayerQuitEvent e){
//当玩家退出的时候,把玩家经验值更新到数据库
Player player = e.getPlayer();
String uniqueId = player.getUniqueId().toString();
int totalExperience = player.getTotalExperience();
String sql="update playerInfo set totalExperience=? where uniqueId=?";
try {
pstm = conn.prepareStatement(sql);
pstm.setInt(1,totalExperience);
pstm.setString(2,uniqueId);
int i = pstm.executeUpdate();
System.out.println("更新一条记录"+i);
player.giveExp(totalExperience);
} catch (SQLException e1) {
e1.printStackTrace();
}
}
}