PDC Upgrade

pull/6/head
= 10 months ago
parent 50191c1964
commit d1b691cbf0
  1. 2
      src/main/java/xyz/soukup/ecoCraftCore/EcoCraftCore.java
  2. 137
      src/main/java/xyz/soukup/ecoCraftCore/commands/MoneyCommand.java
  3. 23
      src/main/java/xyz/soukup/ecoCraftCore/objects/Transaction.java

@ -9,6 +9,7 @@ import org.bukkit.plugin.Plugin;
import org.bukkit.plugin.PluginManager; import org.bukkit.plugin.PluginManager;
import org.bukkit.plugin.java.JavaPlugin; import org.bukkit.plugin.java.JavaPlugin;
import org.jetbrains.annotations.NotNull; import org.jetbrains.annotations.NotNull;
import xyz.soukup.ecoCraftCore.commands.MoneyCommand;
import xyz.soukup.ecoCraftCore.commands.RulerCommand; import xyz.soukup.ecoCraftCore.commands.RulerCommand;
import xyz.soukup.ecoCraftCore.commands.ShopCommand; import xyz.soukup.ecoCraftCore.commands.ShopCommand;
import xyz.soukup.ecoCraftCore.commands.TransactionCommand; import xyz.soukup.ecoCraftCore.commands.TransactionCommand;
@ -80,6 +81,7 @@ public final class EcoCraftCore extends JavaPlugin {
lm.registerEventHandler(LifecycleEvents.COMMANDS, event -> event.registrar().register(TransactionCommand.createCommand().build())); lm.registerEventHandler(LifecycleEvents.COMMANDS, event -> event.registrar().register(TransactionCommand.createCommand().build()));
lm.registerEventHandler(LifecycleEvents.COMMANDS, event -> event.registrar().register(ShopCommand.createCommand().build())); lm.registerEventHandler(LifecycleEvents.COMMANDS, event -> event.registrar().register(ShopCommand.createCommand().build()));
lm.registerEventHandler(LifecycleEvents.COMMANDS, event -> event.registrar().register(RulerCommand.createCommand().build())); lm.registerEventHandler(LifecycleEvents.COMMANDS, event -> event.registrar().register(RulerCommand.createCommand().build()));
lm.registerEventHandler(LifecycleEvents.COMMANDS, event -> event.registrar().register(MoneyCommand.createCommand().build()));
} }
private void registerEvents(){ private void registerEvents(){

@ -0,0 +1,137 @@
package xyz.soukup.ecoCraftCore.commands;
import com.mojang.brigadier.arguments.FloatArgumentType;
import com.mojang.brigadier.arguments.StringArgumentType;
import com.mojang.brigadier.builder.LiteralArgumentBuilder;
import com.mojang.brigadier.context.CommandContext;
import io.papermc.paper.command.brigadier.CommandSourceStack;
import io.papermc.paper.command.brigadier.Commands;
import io.papermc.paper.command.brigadier.argument.ArgumentTypes;
import org.bukkit.command.CommandSender;
import org.bukkit.entity.Player;
import xyz.soukup.ecoCraftCore.objects.Account;
import xyz.soukup.ecoCraftCore.objects.Transaction;
public class MoneyCommand {
public static LiteralArgumentBuilder<CommandSourceStack> createCommand() {
return Commands.literal("money")
.then(Commands.literal("send")
.requires(source -> source.getSender() instanceof Player)
.then(Commands.argument("player", ArgumentTypes.player())
.then(Commands.argument("amount", FloatArgumentType.floatArg(0.1F))
.executes(MoneyCommand::sendMoney))))
.then(Commands.literal("give")
.requires(source -> source.getExecutor().hasPermission("ecc.money.give"))
.then(Commands.argument("amount", FloatArgumentType.floatArg(0.1F))
.requires(source -> source.getSender() instanceof Player)
.executes(MoneyCommand::giveMoneySelf))
.then(Commands.argument("player", ArgumentTypes.player())
.then(Commands.argument("amount", FloatArgumentType.floatArg(0.1F))
.executes(MoneyCommand::giveMoneyPlayer)))
.then(Commands.argument("type", StringArgumentType.word())
.then(Commands.argument("owner", StringArgumentType.word())
.then(Commands.argument("amount", FloatArgumentType.floatArg(0.1F))
.executes(MoneyCommand::giveMoneyOther)))))
.then(Commands.literal("remove")
.requires(source -> source.getExecutor().hasPermission("ecc.money.remove"))
.then(Commands.argument("amount", FloatArgumentType.floatArg(0.1F))
.requires(source -> source.getSender() instanceof Player)
.executes(MoneyCommand::removeMoneySelf))
.then(Commands.argument("player", ArgumentTypes.player())
.then(Commands.argument("amount", FloatArgumentType.floatArg(0.1F))
.executes(MoneyCommand::removeMoneyPlayer)))
.then(Commands.argument("type", StringArgumentType.word())
.then(Commands.argument("owner", StringArgumentType.word())
.then(Commands.argument("amount", FloatArgumentType.floatArg(0.1F))
.executes(MoneyCommand::removeMoneyOther)))))
.executes(MoneyCommand::getBalance);
}
private static int getBalance(CommandContext<CommandSourceStack> context){
if (!(context.getSource().getSender() instanceof Player player)){
return 0;
}
Account account = Account.getOrCreate(player);
player.sendPlainMessage(String.format("Tvuj balanc: %.2f", account.getBalance()));
return 1;
}
private static int sendMoney(CommandContext<CommandSourceStack> context){
Player sender = (Player) context.getSource().getSender();
Player receiver = context.getArgument("player", Player.class);
Float amount = context.getArgument("amount", Float.class);
Account senderAccount = Account.getOrCreate(sender);
if (amount > senderAccount.getBalance()){
sender.sendPlainMessage("nemáš mony!");
return 0;
}
Transaction transaction = new Transaction(amount,"player", sender.getName(), "player", receiver.getName(), "player");
transaction.process();
return 1;
}
private static int giveMoneyPlayer(CommandContext<CommandSourceStack> context){
CommandSender commandSender = context.getSource().getSender();
Player receiver = context.getArgument("player", Player.class);
Float amount = context.getArgument("amount", Float.class);
Transaction transaction = new Transaction(amount,"admin", commandSender.getName(), "player", receiver.getName(), "admin");
transaction.process();
return 1;
}
private static int giveMoneySelf(CommandContext<CommandSourceStack> context){
Player player = (Player) context.getSource().getSender();
Float amount = context.getArgument("amount", Float.class);
Transaction transaction = new Transaction(amount,"admin", player.getName(), "player", player.getName(), "admin");
transaction.process();
return 1;
}
private static int giveMoneyOther(CommandContext<CommandSourceStack> context){
CommandSender commandSender = context.getSource().getSender();
Float amount = context.getArgument("amount", Float.class);
String owner = context.getArgument("owner", String.class);
String type = context.getArgument("type", String.class);
Transaction transaction = new Transaction(amount,"admin", commandSender.getName(), type, owner, "admin");
transaction.process();
return 1;
}
private static int removeMoneyPlayer(CommandContext<CommandSourceStack> context){
CommandSender commandSender = context.getSource().getSender();
Player sender = context.getArgument("player", Player.class);
Float amount = context.getArgument("amount", Float.class);
Transaction transaction = new Transaction(amount, "player", sender.getName(),"admin", commandSender.getName(), "admin");
transaction.process();
return 1;
}
private static int removeMoneySelf(CommandContext<CommandSourceStack> context){
Player player = (Player) context.getSource().getSender();
Float amount = context.getArgument("amount", Float.class);
Transaction transaction = new Transaction(amount,"player", player.getName(),"admin", player.getName(), "admin");
transaction.process();
return 1;
}
private static int removeMoneyOther(CommandContext<CommandSourceStack> context){
CommandSender commandSender = context.getSource().getSender();
Float amount = context.getArgument("amount", Float.class);
String owner = context.getArgument("owner", String.class);
String type = context.getArgument("type", String.class);
Transaction transaction = new Transaction(amount, type, owner,"admin", commandSender.getName(), "admin");
transaction.process();
return 1;
}
}

@ -7,6 +7,7 @@ import xyz.soukup.ecoCraftCore.utilities.DaoRegistry;
import java.sql.SQLException; import java.sql.SQLException;
import java.sql.Timestamp; import java.sql.Timestamp;
import java.util.Objects;
@DatabaseTable(tableName = "transactions") @DatabaseTable(tableName = "transactions")
public class Transaction { public class Transaction {
@ -39,7 +40,9 @@ public class Transaction {
private String secondaryInfo; private String secondaryInfo;
@DatabaseField(canBeNull = false) @DatabaseField(canBeNull = false)
private Timestamp timestamp = new Timestamp(System.currentTimeMillis()); private final Timestamp timestamp = new Timestamp(System.currentTimeMillis());
private Boolean processed = false;
public Transaction() { public Transaction() {
@ -55,14 +58,24 @@ public class Transaction {
} }
public void process(){ public void process(){
Account senderAccount = Account.getOrCreate(this.senderType, this.sender);
Account receiverAccount = Account.getOrCreate(this.receiverType, this.receiver);
senderAccount.withdraw(this.amount); if (processed){
receiverAccount.deposit(this.amount); return;
}
this.processed = true;
if(!Objects.equals(this.senderType, "admin")){
Account senderAccount = Account.getOrCreate(this.senderType, this.sender);
senderAccount.withdraw(this.amount);
senderAccount.save(); senderAccount.save();
}
if (!Objects.equals(this.receiverType, "admin")){
Account receiverAccount = Account.getOrCreate(this.receiverType, this.receiver);
receiverAccount.deposit(this.amount);
receiverAccount.save(); receiverAccount.save();
}
save(); save();
} }

Loading…
Cancel
Save