• Es freut uns dass du in unser Minecraft Forum gefunden hast. Hier kannst du mit über 130.000 Minecraft Fans über Minecraft diskutieren, Fragen stellen und anderen helfen. In diesem Minecraft Forum kannst du auch nach Teammitgliedern, Administratoren, Moderatoren , Supporter oder Sponsoren suchen. Gerne kannst du im Offtopic Bereich unseres Minecraft Forums auch über nicht Minecraft spezifische Themen reden. Wir hoffen dir gefällt es in unserem Minecraft Forum!

ShopPlugin werte in YML speichern geht nicht

MaxCode

Schafhirte
Registriert
29 Januar 2012
Beiträge
111
Diamanten
0
Minecraft
proskatermax
Hey leute,


ich bin gerade dabei ein kleines Plugin für meinen Server zu Coden. Es macht bis jetzt wenn man [Shop] auf ein Schild schreibt das dann ein Schild erstellt wird mit dem man sich dann einen Shop kaufen kann. Zum schluss möchte ich es so machen das wenn sich jemand einen Shop kauft das er in eine YML eingetragen wird. Das möchte ich so aussehen lassen:
Shops:
Spielername:
Anzahl: 1

Bis jetzt geht auch alles nur das Werte einspeichern in die YML leider nicht. :/
Kann mir da vieleicht jemand weiterhelfen?


Code:
package me.minemax.PeopleCraftSystem;

import java.io.File;
import java.io.IOException;

import net.milkbowl.vault.economy.Economy;

import org.bukkit.Bukkit;
import org.bukkit.ChatColor;
import org.bukkit.Location;
import org.bukkit.block.BlockState;
import org.bukkit.entity.Player;
import org.bukkit.event.EventHandler;
import org.bukkit.event.Listener;
import org.bukkit.event.block.Action;
import org.bukkit.event.block.SignChangeEvent;
import org.bukkit.event.player.PlayerInteractEvent;
import org.bukkit.block.Sign;
import org.bukkit.configuration.file.FileConfiguration;
import org.bukkit.configuration.file.YamlConfiguration;

public class ShopSystemSign implements Listener {

private Economy econ;
private FileConfiguration cfg;

public ShopSystemSign(PeopleCraftSystem peopleCraftSystem) {
this.econ = PeopleCraftSystem.economy;

}

public static void loadShopFile() {
File file = new File("plugins/PeopleCraft-System" + "Shops.yml");
FileConfiguration cfg = YamlConfiguration.loadConfiguration(file);


try {
cfg.save(file);
} catch (IOException e) {
e.printStackTrace();
}

}



@EventHandler
public void signplace(SignChangeEvent event) {
Player p = event.getPlayer();

if (p.hasPermission("pcsystem.sign.create")) {
Location loc = event.getPlayer().getLocation();
if (loc.getWorld().getName().equals("spawn")) {
if (event.getLine(0).contains("[Shop]")) {

event.setLine(0, ChatColor.DARK_GREEN + "" + ChatColor.BOLD + "[Shop]");
p.sendMessage(ChatColor.BOLD + "PeopleCraft-ShopSytemschild erfolgreich erstellt!");

}
}
}

if (event.getLine(0).contains("[Shop]")) {
if (!p.hasPermission("pcsystem.sign.create")) {

event.getBlock().breakNaturally();
p.sendMessage(ChatColor.DARK_GRAY + "[" + ChatColor.DARK_RED + "PeopleCraft-System" + ChatColor.DARK_GRAY+ "] " + ChatColor.GRAY + "Das Schild wurde wieder entfernt da du nicht die Rechte dazu hast");

}
}
}


@EventHandler
public void signclick(PlayerInteractEvent event2) {

Player p = event2.getPlayer();
Location loc2 = p.getLocation();
if (loc2.getWorld().getName().equals("spawn")) {
if (event2.getAction() == Action.RIGHT_CLICK_BLOCK) {
BlockState bs = event2.getClickedBlock().getState();
if (bs instanceof Sign) {
Sign sign = (Sign) bs;
String line0 = sign.getLine(0);
String line1 = sign.getLine(1);
if (line0.contains("[Shop]")) {

int price = 1000;

if (this.econ.has(p.getName(), price)) {
this.econ.withdrawPlayer(p.getName(), price);

Bukkit.getServer().dispatchCommand(Bukkit.getServer().getConsoleSender(), "rg addowner " + line1 + " " + p.getName() + " -w spawn");
Bukkit.getServer().broadcastMessage(ChatColor.DARK_GRAY + "[" + ChatColor.DARK_RED + "PeopleCraft-System" + ChatColor.DARK_GRAY+ "] " + ChatColor.GRAY + p.getName() + " hat sich gerade einen Shop gekauft!");
Bukkit.getServer().broadcastMessage(ChatColor.DARK_GRAY + "[" + ChatColor.DARK_RED + "PeopleCraft-System" + ChatColor.DARK_GRAY+ "] " + ChatColor.GRAY + "Mache "+ ChatColor.DARK_RED + "/warp shop" + ChatColor.GRAY + " um alle Spielershops zu sehen.");

p.sendMessage(ChatColor.DARK_GRAY + "[" + ChatColor.DARK_RED + "PeopleCraft-System" + ChatColor.DARK_GRAY+ "] " + ChatColor.GRAY + "Du hast erfolgreich einen Shop erworben. Viel spass damit!");
p.sendMessage(ChatColor.DARK_GRAY + "[" + ChatColor.DARK_RED + "PeopleCraft-System" + ChatColor.DARK_GRAY+ "] " + ChatColor.GRAY + "Du hast folgenden Shop erworben: " + line1);

sign.setLine(0, ChatColor.BLACK + " ");
sign.setLine(1, ChatColor.BLACK + "" + ChatColor.BOLD + "Shop von:");
sign.setLine(2, p.getName());
sign.setLine(3, ChatColor.BLACK + " ");
sign.update();

cfg.set("Shops." + p.getName() + ".Anzahl", 1);


} else {
p.sendMessage(ChatColor.DARK_GRAY + "[" + ChatColor.DARK_RED + "PeopleCraft-System" + ChatColor.DARK_GRAY+ "] " + ChatColor.GRAY + "Du hast nicht genug Geld!");
p.sendMessage(ChatColor.DARK_GRAY + "[" + ChatColor.DARK_RED + "PeopleCraft-System" + ChatColor.DARK_GRAY+ "] " + ChatColor.GRAY + "Du brauchst: " + ChatColor.DARK_RED + price + ChatColor.GRAY + " Bux");


}
}
}
}
}
}
}

OnEnable() teil:
loadConfigurations();

loadConfigurations(); teil:
private void loadConfigurations()
{
try
{
ShopSystemSign.loadShopFile();
}
catch (Exception e)
{
System.err.println("[PeopleCraftSystem] Error!");


}


Danke schonmal für alle Antworten! :)
MFG
Max
 

MaxCode

Schafhirte
Registriert
29 Januar 2012
Beiträge
111
Diamanten
0
Minecraft
proskatermax
Moin,

habs nur übersprungen, allerdings lässt du nach dem cfg.set-Teil, die cfg mittels cfg.save nicht speichern, oder habe ich das etwa übersehen?

Ganz wichtig ich habe die Fehlermeldung vergessen.:eek: Kannst du mir mit der Vieleicht sagen was ich falsch gemacht habe?
Wenn ich cfg.save(file); mache ist file rot unterstrichen. Weiß du warum?

Fehlermeldung:
[23:20:57] [Server thread/ERROR]: Could not pass event PlayerInteractEvent to PeopleCraft-System v1.0
org.bukkit.event.EventException
at org.bukkit.plugin.java.JavaPluginLoader$1.execute(JavaPluginLoader.java:294) ~[craftbukkit.jar:git-Bukkit-1.7.9-R0.1-b3084jnks]
at org.bukkit.plugin.RegisteredListener.callEvent(RegisteredListener.java:62) ~[craftbukkit.jar:git-Bukkit-1.7.9-R0.1-b3084jnks]
at org.bukkit.plugin.SimplePluginManager.fireEvent(SimplePluginManager.java:501) [craftbukkit.jar:git-Bukkit-1.7.9-R0.1-b3084jnks]
at org.bukkit.plugin.SimplePluginManager.callEvent(SimplePluginManager.java:486) [craftbukkit.jar:git-Bukkit-1.7.9-R0.1-b3084jnks]
at org.bukkit.craftbukkit.v1_7_R3.event.CraftEventFactory.callPlayerInteractEvent(CraftEventFactory.java:216) [craftbukkit.jar:git-Bukkit-1.7.9-R0.1-b3084jnks]
at net.minecraft.server.v1_7_R3.PlayerInteractManager.interact(PlayerInteractManager.java:374) [craftbukkit.jar:git-Bukkit-1.7.9-R0.1-b3084jnks]
at net.minecraft.server.v1_7_R3.PlayerConnection.a(PlayerConnection.java:629) [craftbukkit.jar:git-Bukkit-1.7.9-R0.1-b3084jnks]
at net.minecraft.server.v1_7_R3.PacketPlayInBlockPlace.a(SourceFile:60) [craftbukkit.jar:git-Bukkit-1.7.9-R0.1-b3084jnks]
at net.minecraft.server.v1_7_R3.PacketPlayInBlockPlace.handle(SourceFile:9) [craftbukkit.jar:git-Bukkit-1.7.9-R0.1-b3084jnks]
at net.minecraft.server.v1_7_R3.NetworkManager.a(NetworkManager.java:157) [craftbukkit.jar:git-Bukkit-1.7.9-R0.1-b3084jnks]
at net.minecraft.server.v1_7_R3.ServerConnection.c(SourceFile:134) [craftbukkit.jar:git-Bukkit-1.7.9-R0.1-b3084jnks]
at net.minecraft.server.v1_7_R3.MinecraftServer.v(MinecraftServer.java:667) [craftbukkit.jar:git-Bukkit-1.7.9-R0.1-b3084jnks]
at net.minecraft.server.v1_7_R3.DedicatedServer.v(DedicatedServer.java:260) [craftbukkit.jar:git-Bukkit-1.7.9-R0.1-b3084jnks]
at net.minecraft.server.v1_7_R3.MinecraftServer.u(MinecraftServer.java:558) [craftbukkit.jar:git-Bukkit-1.7.9-R0.1-b3084jnks]
at net.minecraft.server.v1_7_R3.MinecraftServer.run(MinecraftServer.java:469) [craftbukkit.jar:git-Bukkit-1.7.9-R0.1-b3084jnks]
at net.minecraft.server.v1_7_R3.ThreadServerApplication.run(SourceFile:628) [craftbukkit.jar:git-Bukkit-1.7.9-R0.1-b3084jnks]
Caused by: java.lang.NullPointerException
at me.minemax.PeopleCraftSystem.ShopSystemSign.signclick(ShopSystemSign.java:106) ~[?:?]
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) ~[?:1.7.0_09]
at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source) ~[?:1.7.0_09]
at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source) ~[?:1.7.0_09]
at java.lang.reflect.Method.invoke(Unknown Source) ~[?:1.7.0_09]
at org.bukkit.plugin.java.JavaPluginLoader$1.execute(JavaPluginLoader.java:292) ~[craftbukkit.jar:git-Bukkit-1.7.9-R0.1-b3084jnks]
... 15 more

MFG
Max
 

FelixKlauke

Erzengel
Ehem. Teammitglied
Registriert
5 Januar 2014
Beiträge
1.038
Diamanten
299
Minecraft
FelixKlauke
Code:
public static void loadShopFile() {       
        File file = new File("plugins/PeopleCraft-System" + "Shops.yml");
        FileConfiguration cfg = YamlConfiguration.loadConfiguration(file);


        try {
            cfg.save(file);
        } catch (IOException e) {
            e.printStackTrace();
        }


    }


Da fehlt oben im Pfad ein zweiter Slash.
Du catcht am Anfang nur die IO also tut ers trotzdem. Beim cfg laden kriegst du dann ne Nullpointer.


Ich vermute mal du meinst das so:

Code:
public static void loadShopFile() {       
        File file = new File("plugins/PeopleCraft-System/ + "Shops.yml");
        FileConfiguration cfg = YamlConfiguration.loadConfiguration(file);


        try {
            cfg.save(file);
        } catch (IOException e) {
            e.printStackTrace();
        }


    }

Und der Typ ganz oben hat Recht:

Code:
[COLOR=#444444][FONT=Verdana]sign.setLine(0, ChatColor.BLACK + " ");[/FONT][/COLOR]
[COLOR=#444444][FONT=Verdana]sign.setLine(1, ChatColor.BLACK + "" + ChatColor.BOLD + "Shop von:");[/FONT][/COLOR]
[COLOR=#444444][FONT=Verdana]sign.setLine(2, p.getName());[/FONT][/COLOR]
[COLOR=#444444][FONT=Verdana]sign.setLine(3, ChatColor.BLACK + " ");[/FONT][/COLOR]
[COLOR=#444444][FONT=Verdana]sign.update();[/FONT][/COLOR]

[COLOR=#444444][FONT=Verdana]cfg.set("Shops." + p.getName() + ".Anzahl", 1);[/FONT][/COLOR]



Code:
[COLOR=#444444][FONT=Verdana]sign.setLine(0, ChatColor.BLACK + " ");[/FONT][/COLOR]
[COLOR=#444444][FONT=Verdana]sign.setLine(1, ChatColor.BLACK + "" + ChatColor.BOLD + "Shop von:");[/FONT][/COLOR]
[COLOR=#444444][FONT=Verdana]sign.setLine(2, p.getName());[/FONT][/COLOR]
[COLOR=#444444][FONT=Verdana]sign.setLine(3, ChatColor.BLACK + " ");[/FONT][/COLOR]
[COLOR=#444444][FONT=Verdana]sign.update();
[/FONT][/COLOR]
[COLOR=#ff0000]//Leg hier einfach ne neue FileConfiguration an und gib diesmal den richtigen Pfad an.[/COLOR]


[COLOR=#444444][FONT=Verdana]cfg.set("Shops." + p.getName() + ".Anzahl", 1);

[/FONT][/COLOR][COLOR=#ff0000]//try{ cfg.save(file); } catch...[/COLOR]
 
Zuletzt bearbeitet:
Oben