You are not logged in.

  • Login

[Bukkit-Plugin] MySQL Problem

Bitte besucht unser neues Forum unter https://forum.nitrado.net | Please visit our new Forum at https://forum.nitrado.net

Dear visitor, welcome to Nitrado.net Prepaid Gameserver Community-Support - Archiv. If this is your first visit here, please read the Help. It explains in detail how this page works. To use all features of this page, you should consider registering. Please use the registration form, to register here or read more information about the registration process. If you are already registered, please login here.

EntChanelt

User / Kunde

  • "EntChanelt" started this thread

Posts: 28

  • Send private message

1

Monday, December 21st 2015, 8:06pm

MySQL Problem

Hi Leute,
ich habe ein Problem mit einem Plugin das ich mit MySQL verbinden will.

Source code

1
2
3
4
5
6
7
8
9
10
11
12
public static int getNumber(String what,Player p){
		int level = 0;
		ResultSet rs = MySQL.getResultSet("SELECT * FROM " + what + " WHERE name='" + p.getDisplayName() + "'");
		try {
			while(rs.next()){   ( <-- der Feher liegt hier)
				level = rs.getInt("level");
			}
		} catch (SQLException e) {
			e.printStackTrace();
		}
		return level;
	}


Und ind der MySQL Klasse:

Source code

1
2
3
4
5
6
7
8
9
10
public static ResultSet getResultSet(String query){
		if(!hasConnection()){
			try {
				return conn.createStatement().executeQuery(query);
			} catch (SQLException e) {
				e.printStackTrace();
			}
		}
		return null;
	}


Vielen Dank im voraus

EntChanelt

derspieler89

User / Kunde

Posts: 134

  • Send private message

2

Monday, December 21st 2015, 8:31pm

error?

EntChanelt

User / Kunde

  • "EntChanelt" started this thread

Posts: 28

  • Send private message

3

Monday, December 21st 2015, 9:32pm

Ich glaub NullPointExeption oder so ich schau morgen noch mal genau

EntChanelt

User / Kunde

  • "EntChanelt" started this thread

Posts: 28

  • Send private message

4

Wednesday, December 23rd 2015, 4:29pm

Ja es ist eine NullPointerExeption

Posts: 67

  • Send private message

5

Wednesday, December 23rd 2015, 4:32pm

Schick mal bitte den ganzen Error

EntChanelt

User / Kunde

  • "EntChanelt" started this thread

Posts: 28

  • Send private message

6

Wednesday, December 23rd 2015, 5:58pm

Source code

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
[17:58:09 ERROR]: Could not pass event PlayerMoveEvent to BuyPlugin v1.0
org.bukkit.event.EventException
        at org.bukkit.plugin.java.JavaPluginLoader$1.execute(JavaPluginLoader.java:310) ~[spigot.jar:git-Spigot-db6de12-18fbb24]
        at org.bukkit.plugin.RegisteredListener.callEvent(RegisteredListener.java:62) ~[spigot.jar:git-Spigot-db6de12-18fbb24]
        at org.bukkit.plugin.SimplePluginManager.fireEvent(SimplePluginManager.java:502) [spigot.jar:git-Spigot-db6de12-18fbb24]
        at org.bukkit.plugin.SimplePluginManager.callEvent(SimplePluginManager.java:487) [spigot.jar:git-Spigot-db6de12-18fbb24]
        at net.minecraft.server.v1_8_R3.PlayerConnection.a(PlayerConnection.java:270) [spigot.jar:git-Spigot-db6de12-18fbb24]
        at net.minecraft.server.v1_8_R3.PacketPlayInFlying.a(SourceFile:126) [spigot.jar:git-Spigot-db6de12-18fbb24]
        at net.minecraft.server.v1_8_R3.PacketPlayInFlying$PacketPlayInPosition.a(SourceFile:57) [spigot.jar:git-Spigot-db6de12-18fbb24]
        at net.minecraft.server.v1_8_R3.PlayerConnectionUtils$1.run(SourceFile:13) [spigot.jar:git-Spigot-db6de12-18fbb24]
        at java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:471) [?:1.7.0_79]
        at java.util.concurrent.FutureTask.run(FutureTask.java:262) [?:1.7.0_79]
        at net.minecraft.server.v1_8_R3.SystemUtils.a(SourceFile:44) [spigot.jar:git-Spigot-db6de12-18fbb24]
        at net.minecraft.server.v1_8_R3.MinecraftServer.B(MinecraftServer.java:715) [spigot.jar:git-Spigot-db6de12-18fbb24]
        at net.minecraft.server.v1_8_R3.DedicatedServer.B(DedicatedServer.java:374) [spigot.jar:git-Spigot-db6de12-18fbb24]
        at net.minecraft.server.v1_8_R3.MinecraftServer.A(MinecraftServer.java:654) [spigot.jar:git-Spigot-db6de12-18fbb24]
        at net.minecraft.server.v1_8_R3.MinecraftServer.run(MinecraftServer.java:557) [spigot.jar:git-Spigot-db6de12-18fbb24]
        at java.lang.Thread.run(Thread.java:745) [?:1.7.0_79]
Caused by: java.lang.NullPointerException
        at main.shop.getNumber(shop.java:207) ~[?:?]
        at main.shop.Beweglichkeit(shop.java:288) ~[?:?]  (<- Der Fehler entsteht durch die Methode getNumber() )
        at sun.reflect.GeneratedMethodAccessor8.invoke(Unknown Source) ~[?:?]
        at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) ~[?:1.7.0_79]
        at java.lang.reflect.Method.invoke(Method.java:606) ~[?:1.7.0_79]
        at org.bukkit.plugin.java.JavaPluginLoader$1.execute(JavaPluginLoader.java:306) ~[spigot.jar:git-Spigot-db6de12-18fbb24]
        ... 15 more

whereisthemonkey

User / Kunde

  • "whereisthemonkey" is male

Posts: 20

  • Send private message

7

Wednesday, December 23rd 2015, 6:01pm

Poste mal bitte die Klasse SHOP

xlson

User / Kunde

  • "xlson" is male

Posts: 513

  • Send private message

8

Wednesday, December 23rd 2015, 6:08pm

Source code

1
2
        at main.shop.getNumber(shop.java:207) ~[?:?]
        at main.shop.Beweglichkeit(shop.java:288) ~[?:?]


Bitte Poste die Klasse Shop

whereisthemonkey

User / Kunde

  • "whereisthemonkey" is male

Posts: 20

  • Send private message

9

Wednesday, December 23rd 2015, 6:22pm

Nein die ganze Klasse :D

xlson

User / Kunde

  • "xlson" is male

Posts: 513

  • Send private message

10

Wednesday, December 23rd 2015, 8:18pm

Nein die ganze Klasse

habe ich was von einer halben gesagt? :D

EntChanelt

User / Kunde

  • "EntChanelt" started this thread

Posts: 28

  • Send private message

11

Saturday, December 26th 2015, 2:09pm

Source code

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
public class shop extends JavaPlugin implements Listener{
	
	public File file = new File("plugins/BuyPlugin", "config.yml");
	public FileConfiguration cfg = YamlConfiguration.loadConfiguration(file);
	
	private static MySQL mysql;
	
	public void onEnable(){
		System.out.println("[Shop] Plugin gestartet");
		this.loadEvents();
		try {
			mysql = new MySQL();
		} catch (Exception e) {
			System.err.println("[Shop] MySQL konnte nicht gestartet werden!");
		}
		MySQL.queryUpdate("CREATE TABLE IF NOT EXISTS Stärke (name VARCHAR(16), level INT)");
		MySQL.queryUpdate("CREATE TABLE IF NOT EXISTS Beweglichkeit (name VARCHAR(16), level INT)");
		MySQL.queryUpdate("CREATE TABLE IF NOT EXISTS Resistenz (name VARCHAR(16), level INT)");
		MySQL.queryUpdate("CREATE TABLE IF NOT EXISTS Leben (name VARCHAR(16), level INT)");
	}
	
	private void loadEvents() {
		this.getServer().getPluginManager().registerEvents(this, this);
	}

	public void onDisable() {
	    System.out.println("[Shop] Plugin gestoppt");
	    MySQL.closeConnection();
	}
	
	@SuppressWarnings("deprecation")
	public boolean onCommand(CommandSender sender, Command cmd, String Label, String[] args) {
		Player p = (Player) sender;
		if(cmd.getName().equalsIgnoreCase("shop")){
			
			Inventory menu = p.getServer().createInventory(null, 54, "§7§m-[§4 Shop §7§m]-");
			
			ItemStack platz = new ItemStack(Material.STAINED_GLASS_PANE, 1,DyeColor.BLACK.getData());
			ItemMeta platzmeta = platz.getItemMeta();
		    platzmeta.setDisplayName("§8-/-");
		    platz.setItemMeta(platzmeta);
			
		    for(int i = 0;i<=10;i++){
		    	menu.setItem(i, platz);
		    }
		    menu.setItem(11, platz);
		    menu.setItem(12, platz);
		    menu.setItem(13, platz);
		    menu.setItem(14, platz);
		    menu.setItem(16, platz);
		    menu.setItem(17, platz);
		    menu.setItem(18, platz);
		    menu.setItem(20, platz);
		    menu.setItem(21, platz);
		    menu.setItem(22, platz);
		    menu.setItem(26, platz);
		    menu.setItem(27, platz);
		    menu.setItem(29, platz);
		    menu.setItem(30, platz);
		    menu.setItem(31, platz);
		    menu.setItem(32, platz);
		    menu.setItem(35, platz);
		    menu.setItem(36, platz);
		    menu.setItem(38, platz);
		    menu.setItem(39, platz);
		    menu.setItem(40, platz);
		    menu.setItem(41, platz);
		    menu.setItem(43, platz);
		    menu.setItem(44, platz);
		    menu.setItem(45, platz);
		    menu.setItem(46, platz);
		    menu.setItem(47, platz);
		    menu.setItem(48, platz);
		    menu.setItem(49, platz);
		    menu.setItem(50, platz);
		    menu.setItem(51, platz);
		    menu.setItem(52, platz);
		    menu.setItem(53, platz);
		    
		    ItemStack leer = new ItemStack(Material.BARRIER, 1);
		    ItemMeta leerm = leer.getItemMeta();
			leerm.setDisplayName("§4Du hast schon alle Upgrades");
			leer.setItemMeta(leerm);
		    
		    if(getNumber("Stärke", p) != 5){
		    	menu.setItem(19, createItem(Material.POTION, 1, 8201, "§3Stärke", "§9Erhöht den Schaden an Gegnern"));
		    }else{
		    	menu.setItem(19, leer);
		    }
		    if(getNumber("Beweglichkeit", p) != 2){
		    	menu.setItem(10, createItem(Material.POTION, 1, 8194, "§3Beweglichkeit", "§9Erhöht deine Geschwindigkeit"));
		    }else{
		    	menu.setItem(19, leer);
		    }
		    if(getNumber("Resistenz", p) != 5){
		    	menu.setItem(28, createItem(Material.POTION, 1, 8195, "§3Resistenz", "§9Vermindert den Schaden den du erleidest"));
		    }else{
		    	menu.setItem(19, leer);
		    }
		    if(getNumber("Leben", p) != 10){
		    	menu.setItem(37, createItem(Material.POTION, 1, 8197, "§3Leben", "§9Erhöht dein maximales Leben"));
		    }else{
		    	menu.setItem(19, leer);
		    }
			
		    p.openInventory(menu);
		}else if(cmd.getName().equalsIgnoreCase("admin")){
			if(p.isOp()){
				if(args.length == 1){
					Player ps = (Player) Bukkit.getPlayer(args[0]);
					MySQL.queryUpdate("INSERT INTO Stärke (name, level) VALUES ('" + ps + "', '" + 0 + "')");
					MySQL.queryUpdate("INSERT INTO Beweglichkeit (name, level) VALUES ('" + ps + "', '" + 0 + "')");
					MySQL.queryUpdate("INSERT INTO Resistenz (name, level) VALUES ('" + ps + "', '" + 0 + "')");
					MySQL.queryUpdate("INSERT INTO Leben (name, level) VALUES ('" + ps + "', '" + 0 + "')");
					ps.getInventory().clear();
					ItemStack item = new ItemStack(Material.GOLD_NUGGET, 1);
					ItemMeta meta = item.getItemMeta();
					meta.setDisplayName("0");
					item.setItemMeta(meta);
					ps.getInventory().addItem(item);
					ps.getInventory().setItem(17, item);
					ps.getInventory().setItem(0, machItem(Material.WOOD_SWORD));
					ps.getInventory().setHelmet(machItem(Material.LEATHER_HELMET));
					ps.getInventory().setChestplate(machItem(Material.LEATHER_CHESTPLATE));
					ps.getInventory().setLeggings(machItem(Material.LEATHER_LEGGINGS));
					ps.getInventory().setBoots(machItem(Material.LEATHER_BOOTS));
				}else{
					p.sendMessage("§4admin <name>");
				}
			}
		}
		
		return false;
	}
	
    public ItemStack machItem(Material material) {
		
		ItemStack item = new ItemStack(material);
		ItemMeta meta = item.getItemMeta();
		meta.spigot().setUnbreakable(true);
		item.setItemMeta(meta);
		
		return item;
		
	}
	
	
public ItemStack createItem(Material material, int amount, int type, String displayname, String ... lore) {
		
		ItemStack item = new ItemStack(material, amount, (short) type);
		ItemMeta meta = item.getItemMeta();
		meta.setDisplayName(displayname);
		meta.setLore(Arrays.asList(lore));
		item.setItemMeta(meta);
		
		return item;
		
	}
	
	public static MySQL getMySQL(){
		return mysql;
	}
	
	@EventHandler
	public void fistJoin(PlayerJoinEvent e){
		if(!(e.getPlayer().hasPlayedBefore())){
			MySQL.queryUpdate("INSERT INTO Stärke (name, level) VALUES ('" + e.getPlayer().getDisplayName() + "', '" + 0 + "')");
			MySQL.queryUpdate("INSERT INTO Beweglichkeit (name, level) VALUES ('" + e.getPlayer().getDisplayName() + "', '" + 0 + "')");
			MySQL.queryUpdate("INSERT INTO Resistenz (name, level) VALUES ('" + e.getPlayer().getDisplayName() + "', '" + 0 + "')");
			MySQL.queryUpdate("INSERT INTO Leben (name, level) VALUES ('" + e.getPlayer().getDisplayName() + "', '" + 0 + "')");
		}
	}
	
	public static int getNumber(String what,Player p){
		int level = 0;
		ResultSet rs = MySQL.getResultSet("SELECT * FROM " + what + " WHERE name='" + p.getDisplayName() + "'");
		try {
			while(rs.next()){
				level = rs.getInt("level");
			}
		} catch (SQLException e) {
			e.printStackTrace();
		}
		return level;
	}
	
	public void buy(String what,Player p){
		int level = getNumber(what, p);
		int leveln = level + 1;
		if(p.getInventory().getItem(17).hasItemMeta()){
			if(Integer.parseInt(p.getInventory().getItem(17).getItemMeta().getDisplayName()) >= ((level*10)*3)){
				String jetztgeld = p.getInventory().getItem(17).getItemMeta().getDisplayName();
				int neugeld = Integer.parseInt(jetztgeld) - ((level*10)*3);
				String geld = "" + neugeld;
				p.getInventory().getItem(17).getItemMeta().setDisplayName(geld);
				p.updateInventory();
				MySQL.queryUpdate("UPDATE " + what + " SET level='" + leveln +"' WHERE name='" + p.getDisplayName() + "'");
				p.sendMessage("§2[SHOP]§a Du hast §3" + what + "§a erfolgreich verbessert!");
			}else{
				p.sendMessage("§4[SHOP] Du hast nicht genug Geld");
			}
		}else{
			p.sendMessage("§4[SHOP] Es ist ein Fehler aufgetreten. Melde dich bitte bei einem Admin.");
		}
	}
	
	
	@EventHandler
	public void onBuy(InventoryClickEvent e){
		Inventory inv = e.getInventory();
		Player p = (Player) e.getWhoClicked();
		if(inv.getName().equalsIgnoreCase("§7§m-[§4 Shop §7§m]-")){
			if(e.getCurrentItem().hasItemMeta()){
			    if(e.getCurrentItem().getItemMeta().getDisplayName().equalsIgnoreCase("§8-/-")){
			    	e.setCancelled(true);
			    }else{
			    	e.setCancelled(true);
			    	if(e.getCurrentItem().getItemMeta().getDisplayName().equals("§3Beweglichkeit")){
			    		buy("Beweglichkeit", p);
			    	}else if(e.getCurrentItem().getItemMeta().getDisplayName().equals("§3Leben")){
			    		buy("Leben", p);
			    	}else if(e.getCurrentItem().getItemMeta().getDisplayName().equals("§3Stärke")){
			    		buy("Stärke", p);
			    	}else if(e.getCurrentItem().getItemMeta().getDisplayName().equals("§3Resistenz")){
			    		buy("Resistenz", p);
			    	}
			    	e.getView().close();
			    }
			}
		}
	}
	
	@EventHandler
	public void leben(PlayerJoinEvent e){
		int level = getNumber("Leben", e.getPlayer());
		e.getPlayer().setMaxHealth(20 + (level*2));
		e.getPlayer().setHealth(20 + (level*2));
	}
	
	@EventHandler
	public void Stärke(EntityDamageByEntityEvent e){
		if(e.getDamager() instanceof Player){
			Player p = (Player) e.getDamager();
			e.setDamage(e.getDamage() + getNumber("Stärke", p));
		}	
	}
	
	@EventHandler
	public void Resistenz(EntityDamageEvent e){
		if(e.getEntity() instanceof Player){
			Player p = (Player) e.getEntity();
			e.setDamage(e.getDamage() - getNumber("Resistenz", p));
		}
	}
	
	@EventHandler
	public void Beweglichkeit(PlayerMoveEvent e){
		Player p = e.getPlayer();
		p.addPotionEffect(new PotionEffect(PotionEffectType.SPEED, 40, getNumber("Beweglichkeit", p) - 1));
	}
	
}

EntChanelt

User / Kunde

  • "EntChanelt" started this thread

Posts: 28

  • Send private message

12

Thursday, January 21st 2016, 7:23pm

Ich bin mir nicht so sicher aber ist #push erlaubt?

Handtuchstaender

User / Kunde

  • "Handtuchstaender" is male

Posts: 686

Location: Localhost

Occupation: Schule :c

  • Send private message

13

Thursday, January 21st 2016, 8:48pm

Quoted

Ich bin mir nicht so sicher aber ist #push erlaubt?

Ja alle 24h

EntChanelt

User / Kunde

  • "EntChanelt" started this thread

Posts: 28

  • Send private message

14

Friday, January 22nd 2016, 9:43pm

#push

Posts: 67

  • Send private message

15

Sunday, January 24th 2016, 7:22pm

Ich verstehe nicht ganz, was du machen willst.
Da oben steht, dass du ein Problem hast beim verbinden eines Plugins mit MySQL könnte man denken, dass du die MySQL-"Verbindungs"-Klasse brauchst.
Brauchst du die oder was möchtest du?

EntChanelt

User / Kunde

  • "EntChanelt" started this thread

Posts: 28

  • Send private message

16

Sunday, January 24th 2016, 8:51pm

Ach gott bin ich doof, da hab ich ernsthaft ergessen zu schreiben was das problem ist ... (facepalm)
Danke @AlexKeksmonster553 das du mich daran erinnerst.

Also wenn ich der datenbank "sage" dass es einen integer updaten soll, passiert einfach gar nichts. Die nachricht (ingame) das ich das upgrade habe kommt dennoch. Das Plugin verbindet aber dennoch mit mysql (laut der Konsole).

P.S.: Zum Glück tut Dummheit nicht weh

Also tschuldigung, ich hoffe dennoch auf weitere antworten
EntChanelt

Posts: 67

  • Send private message

17

Sunday, January 24th 2016, 10:53pm

Wo soll er denn was genau updaten?

EntChanelt

User / Kunde

  • "EntChanelt" started this thread

Posts: 28

  • Send private message

18

Monday, January 25th 2016, 6:14pm

Oben im Code ab Zeile 187 die methode buy.
Wenn man auf ein Item (im inventar) klickt, wird der name des items ohne farbcodes an die methode gesendet und der player auch.
An der Abfrage ob er genug geld hat liegt es nicht, es kommt ja die Nachricht das ich es erfolgreich gekauft haben.
Die Tabellen gibt es auch und mein spieler ist auch schon in jeder tabelle nach der methode ab zeile 165.

EntChanelt

riderstorm

User / Kunde

  • "riderstorm" is male

Posts: 319

Occupation: Fachinformatiker für Anwendungsentwicklung

Thanks: 3

  • Send private message

19

Monday, January 25th 2016, 6:45pm

Du musst noch Abfragen ob das Item auf Slot 17 != null ist.
Das sollte aber meines Beachtens nicht die Lösung des Problems sein.. Vielleicht hast du auch falsch gezählt?
Es fängt ja bei 0 an.

Lg
Riderstorm Plug-ins: http://riderstorm-plugins.de/

EntChanelt

User / Kunde

  • "EntChanelt" started this thread

Posts: 28

  • Send private message

20

Monday, January 25th 2016, 8:03pm

Gute Idee noch eine abfrage reinzupacken, aber wie du schon gedacht hast ist das nicht das problem. Richtig gezählt habe ich auch daran kann es auch nicht liegen aber danke für deine Vorschläge.

Ich bin nochmal die Fehlermeldung durchgegangen und die Quelle allen Übels liegt an der methode in zeile 174.
Anscheinend passt was mit dem "rs.next()" nicht. Evtl weiß jemand wo das Problem daran liegt, bei anderen hat das auch so geklappt.

LG
EntChanelt

This post has been edited 1 times, last edit by "EntChanelt" (Jan 25th 2016, 8:12pm)


Bitte besucht unser neues Forum unter https://forum.nitrado.net| Please visit our new Forum at https://forum.nitrado.net