So, I was wondering would you happen to know a way to create a "Economy plugin" without a config and it doesn't save it just turns to 0 when they join i tried with Hashmaps but it didn't quite turn out well and it seems easy and it probably is but i was just wonder if you hand any suggestions. Thank you guys.
You can't create a permanent saving stats for a plugin without utilizing some sort of flat file or database. If you keep it in memory only, once you restart its wiped.
its pretty easy to create a simple plugin for an economy that saves the player money in a config. here is a nice tut
Exact the point I think i have this figured out but i need help with sign clicked and stuff sorry this is oftopic Code:java package me.bodhiIsEpic.bukkit; import java.util.ArrayList;import java.util.Arrays;import java.util.HashMap; import net.minecraft.server.v1_6_R3.Block; import org.bukkit.ChatColor;import org.bukkit.Material;import org.bukkit.block.Sign;import org.bukkit.command.Command;import org.bukkit.command.CommandExecutor;import org.bukkit.command.CommandSender;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.player.PlayerInteractEvent;import org.bukkit.event.player.PlayerJoinEvent;import org.bukkit.inventory.ItemStack;import org.bukkit.inventory.meta.ItemMeta; public class Econ implements CommandExecutor, Listener{ private ItemStack coalt; private ItemStack mpl; private ItemStack AK74U; private ItemStack PM63; private ItemStack MP40; private ItemStack STAKEOUT; private ItemStack MP5K; private ItemStack M16; private ItemStack AUG; Main m; public static HashMap<String, Double> bal = new HashMap(); public void Wepons() { this.coalt = createItem(new ItemStack(Material.BOW, 1), ChatColor.RED + "coalt", "Begining Weapon", 0); this.mpl = createItem(new ItemStack(Material.BOW, 1), ChatColor.RED + "mpl", "Note", 1000); this.AK74U = createItem(new ItemStack(Material.BOW, 1), ChatColor.RED + "AK-74U", "note", 1200); this.PM63 = createItem(new ItemStack(Material.BOW), ChatColor.RED + "PM63", "note", 1000); this.MP40 = createItem(new ItemStack(Material.BOW), ChatColor.RED + "MP40", "note", 1000); this.STAKEOUT = createItem(new ItemStack(Material.BOW), ChatColor.RED + "STAKEOUT", "note", 1500); this.MP5K = createItem(new ItemStack(Material.BOW), ChatColor.RED + "MP5K", "note", 1000); this.M16 = createItem(new ItemStack(Material.BOW), ChatColor.RED + "M16", "note", 1200); this.AUG = createItem(new ItemStack(Material.BOW), ChatColor.RED + "AUG", "note", 1200); } private ItemStack createItem(ItemStack is, String name, String note, int amount) { ItemStack i = new ItemStack(is); ItemMeta im = i.getItemMeta(); im.setDisplayName(name); im.setLore(Arrays.asList(new String[] { ChatColor.LIGHT_PURPLE + note })); i.setItemMeta(im); return i; } public Econ(Main main) { Wepons(); this.m = main; } @EventHandler public void onJoin(PlayerJoinEvent e) { e.getPlayer().getInventory().addItem(new ItemStack[] { this.coalt }); setBalance(e.getPlayer().getDisplayName(), 10000.0D); } public static Double getBalance(String player) { return (Double)bal.get(player); } public static void addMoney(String player, Double amount) { setBalance(player, getBalance(player).doubleValue() + amount.doubleValue()); } public static void removeMoney(String player, Double amount, Player p) { if(getBalance(player) < amount){ p.sendMessage("Can not buy that not enough money"); return; } setBalance(player, getBalance(player).doubleValue() - amount.doubleValue()); } public static void setBalance(String player, double amount) { bal.put(player, Double.valueOf(amount)); } public boolean onCommand(CommandSender sender, Command cmd, String commandLabel, String[] args) { if (cmd.getName().equalsIgnoreCase("bal")) { Player player = (Player)sender; player.sendMessage(ChatColor.GOLD + "You balance is: " + getBalance(player.getDisplayName())); } return false; } @EventHandler public void onInteract(PlayerInteractEvent Event) {//not working if (!(Event.getClickedBlock().getState() instanceof Sign)) return; Player player = Event.getPlayer(); Sign s = (Sign) Event.getClickedBlock(); if(s.getLine(0).equalsIgnoreCase("buy")){ if(getBalance(player.getDisplayName()) < 1000.0){ return; }else{ removeMoney(player.getDisplayName(), 1000.0, player); player.getInventory().addItem(mpl); player.sendMessage("Bought mpl"); } } }} EDIT by Moderator: merged posts, please use the edit button instead of double posting.
Erm: public void onInteract(PlayerInteractEvent Event) {//not working Event needs to be event, not capital.
calebbfmv Nope i fixed that new code + errors Code:java @EventHandler public void onInteract(PlayerInteractEvent e) { if (!(e.getClickedBlock().getState() instanceof Sign)) return; Player player = e.getPlayer(); Sign s = (Sign) e.getClickedBlock(); if(s.getLine(0).equalsIgnoreCase("buy")){ if(getBalance(player.getDisplayName()) <= 1000.0){ return; }else{ removeMoney(player.getDisplayName(), 1000.0, player); player.getInventory().addItem(mpl); player.sendMessage("Bought mpl"); } } } Errors Code: Caused by: java.lang.ClassCastException: org.bukkit.craftbukkit.v1_6_R3.block.CraftBlock cannot be cast to org.bukkit.block.Sign at me.bodhiIsEpic.bukkit.Econ.onInteract(Econ.java:98) at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57) at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) at java.lang.reflect.Method.invoke(Method.java:606) at org.bukkit.plugin.java.JavaPluginLoader$1.execute(JavaPluginLoader.java:425) ... 16 more 19:27:58 [SEVERE] Could not pass event PlayerInteractEvent to ZEA v1.0 org.bukkit.event.EventException at org.bukkit.plugin.java.JavaPluginLoader$1.execute(JavaPluginLoader.java:427) at org.bukkit.plugin.RegisteredListener.callEvent(RegisteredListener.java:62) at org.bukkit.plugin.SimplePluginManager.fireEvent(SimplePluginManager.java:477) at org.bukkit.plugin.SimplePluginManager.callEvent(SimplePluginManager.java:462) at org.bukkit.craftbukkit.v1_6_R3.event.CraftEventFactory.callPlayerInteractEvent(CraftEventFactory.java:190) at net.minecraft.server.v1_6_R3.PlayerInteractManager.interact(PlayerInteractManager.java:373) at net.minecraft.server.v1_6_R3.PlayerConnection.a(PlayerConnection.java:630) at net.minecraft.server.v1_6_R3.Packet15Place.handle(SourceFile:58) at net.minecraft.server.v1_6_R3.NetworkManager.b(NetworkManager.java:296) at net.minecraft.server.v1_6_R3.PlayerConnection.e(PlayerConnection.java:116) at net.minecraft.server.v1_6_R3.ServerConnection.b(SourceFile:37) at net.minecraft.server.v1_6_R3.DedicatedServerConnection.b(SourceFile:30) at net.minecraft.server.v1_6_R3.MinecraftServer.t(MinecraftServer.java:592) at net.minecraft.server.v1_6_R3.DedicatedServer.t(DedicatedServer.java:227) at net.minecraft.server.v1_6_R3.MinecraftServer.s(MinecraftServer.java:488) at net.minecraft.server.v1_6_R3.MinecraftServer.run(MinecraftServer.java:421) at net.minecraft.server.v1_6_R3.ThreadServerApplication.run(SourceFile:583) Caused by: java.lang.ClassCastException: org.bukkit.craftbukkit.v1_6_R3.block.CraftBlock cannot be cast to org.bukkit.block.Sign at me.bodhiIsEpic.bukkit.Econ.onInteract(Econ.java:98) at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57) at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) at java.lang.reflect.Method.invoke(Method.java:606) at org.bukkit.plugin.java.JavaPluginLoader$1.execute(JavaPluginLoader.java:425) ... 16 more