Skip to content

Commit

Permalink
Merge pull request #41 from m7rlin/dev/marcin
Browse files Browse the repository at this point in the history
(chore) release 1.3.0
  • Loading branch information
m7rlin committed Jun 9, 2023
2 parents 1681032 + 312f026 commit 812fdba
Show file tree
Hide file tree
Showing 11 changed files with 248 additions and 8 deletions.
2 changes: 1 addition & 1 deletion plugin/pom.xml
Original file line number Diff line number Diff line change
Expand Up @@ -6,7 +6,7 @@

<groupId>pl.mgtm</groupId>
<artifactId>MagicznaKraina</artifactId>
<version>1.2.0</version>
<version>1.3.0</version>
<packaging>jar</packaging>

<name>MagicznaKraina</name>
Expand Down
15 changes: 13 additions & 2 deletions plugin/src/main/java/pl/mgtm/magicznakraina/MagicznaKraina.java
Original file line number Diff line number Diff line change
Expand Up @@ -5,16 +5,18 @@
import pl.mgtm.magicznakraina.api.config.ConfigAPI;
import pl.mgtm.magicznakraina.api.config.style.CommentStyle;
import pl.mgtm.magicznakraina.api.config.style.NameStyle;
import pl.mgtm.magicznakraina.api.economy.DecimalFormats;
import pl.mgtm.magicznakraina.api.economy.EconomyAPI;
import pl.mgtm.magicznakraina.api.economy.TaxType;
import pl.mgtm.magicznakraina.commands.*;
import pl.mgtm.magicznakraina.config.KitsConfig;
import pl.mgtm.magicznakraina.config.MainConfig;
import pl.mgtm.magicznakraina.config.UsersConfig;
import pl.mgtm.magicznakraina.module.PluginModuleManager;
import pl.mgtm.magicznakraina.modules.better_mobs.BetterMobsModule;
import pl.mgtm.magicznakraina.modules.clever_sleep.CleverSleepModule;
import pl.mgtm.magicznakraina.modules.economy.EconomyModule;
import pl.mgtm.magicznakraina.modules.home.HomeModule;
import pl.mgtm.magicznakraina.modules.home.commands.HomeCommand;
import pl.mgtm.magicznakraina.modules.home.commands.SetHomeCommand;
import pl.mgtm.magicznakraina.modules.kits.KitsModule;
import pl.mgtm.magicznakraina.modules.protect_chests.ProtectedChestsModule;
import pl.mgtm.magicznakraina.modules.reset_worlds.ResetWorldsModule;
Expand All @@ -38,6 +40,8 @@ public final class MagicznaKraina extends JavaPlugin {

public static final boolean ConfigAPIDebug = false;

private static EconomyAPI eco;


@Override
public void onEnable() {
Expand All @@ -59,6 +63,9 @@ public void onEnable() {
userConfig = ConfigAPI.init(UsersConfig.class, NameStyle.UNDERSCORE, CommentStyle.ABOVE_CONTENT, false, this);
kitsConfig = ConfigAPI.init(KitsConfig.class, NameStyle.UNDERSCORE, CommentStyle.ABOVE_CONTENT, false, this);

// Set EconomyAPI
eco = new EconomyAPI(0, TaxType.PERCENTAGE, "$", DecimalFormats.EUROPEAN);

PluginManager pm = getServer().getPluginManager();


Expand Down Expand Up @@ -91,6 +98,7 @@ public void onEnable() {
new SpawnModule();
new HomeModule();
new BetterMobsModule();
new EconomyModule();

getLogger().info("MagicznaKraina has been successfully loaded!");
}
Expand Down Expand Up @@ -125,6 +133,9 @@ public static UsersConfig getUserConfig() {
public static KitsConfig getKitsConfig() {
return kitsConfig;
}
public static EconomyAPI getEco() {
return eco;
}



Expand Down
Original file line number Diff line number Diff line change
@@ -0,0 +1,27 @@
package pl.mgtm.magicznakraina.api.economy;

import java.text.DecimalFormat;

public enum DecimalFormats {
FORMAT_1("#,##0.00"),
FORMAT_2("#,##0.000"),
FORMAT_3("#,##0.0000"),
FORMAT_4("#,###0.00"),
FORMAT_5("0.00"),
FORMAT_6("0.000"),
FORMAT_7("#,###,###.00"),
FORMAT_8("###0.00"),
FORMAT_9("0.00%"),
FORMAT_10("0.##E0"),
EUROPEAN("#,##0.00");

private final String pattern;

DecimalFormats(String pattern) {
this.pattern = pattern;
}

public DecimalFormat getDecimalFormat() {
return new DecimalFormat(pattern);
}
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,117 @@
package pl.mgtm.magicznakraina.api.economy;

import org.bukkit.OfflinePlayer;

import java.text.DecimalFormat;
import java.util.HashMap;
import java.util.Map;

public class EconomyAPI {

private Map<String, Double> balances;
private double tax;
private TaxType taxType;
private String currencySymbol;
private DecimalFormat decimalFormat;

public EconomyAPI(double tax, TaxType taxType, String currencySymbol, DecimalFormats decimalFormat) {
this.balances = new HashMap<>();
this.tax = tax;
this.taxType = taxType;
this.currencySymbol = currencySymbol;
this.decimalFormat = decimalFormat.getDecimalFormat();
}

public double getBalance(OfflinePlayer player) {
String playerName = player.getUniqueId().toString();
if (balances.containsKey(playerName)) {
return balances.get(playerName);
}
return 0.0; // Default balance if player does not exist
}

public void deposit(OfflinePlayer player, double amount) {
double balance = getBalance(player);
balance += amount;
balances.put(player.getName(), balance);
}

public void withdraw(OfflinePlayer player, double amount) {
double balance = getBalance(player);
balance -= amount;
if (balance < 0) {
balance = 0;
}
balances.put(player.getName(), balance);
}

public boolean has(OfflinePlayer player, double amount) {
return getBalance(player) >= amount;
}

public boolean has(OfflinePlayer player, String worldName, double amount) {
// Implementation-specific logic for checking balance in a specific world
// If the economy plugin does not support per-world balances, the global balance will be returned
return has(player, amount);
}

public void sendMoney(OfflinePlayer sender, OfflinePlayer recipient, double amount) {
double senderBalance = getBalance(sender);
double recipientBalance = getBalance(recipient);

double senderTax = calculateTax(amount);
double taxedAmount = amount - senderTax;

if (senderBalance >= amount) {
withdraw(sender, amount);
deposit(recipient, taxedAmount);
}
}

private double calculateTax(double amount) {
if (taxType == TaxType.FIXED_AMOUNT) {
return tax;
} else if (taxType == TaxType.PERCENTAGE) {
return amount * (tax / 100);
} else if (taxType == TaxType.COMBINED) {
return tax + (amount * (tax / 100));
}
return 0.0;
}

public String formatBalance(double amount) {
return currencySymbol + decimalFormat.format(amount);
}

public void createAccount(OfflinePlayer player, double initialBalance) {
String playerName = player.getUniqueId().toString();
if (!balances.containsKey(playerName)) {
balances.put(playerName, initialBalance);
}
}

public void createAccount(String playerName, double initialBalance) {
if (!balances.containsKey(playerName)) {
balances.put(playerName, initialBalance);
}
}

public void removeAccount(OfflinePlayer player) {
String playerName = player.getUniqueId().toString();
if (balances.containsKey(playerName)) {
balances.remove(playerName);
}
}

public void removeAccount(String playerName) {
if (balances.containsKey(playerName)) {
balances.remove(playerName);
}
}

public boolean hasAccount(OfflinePlayer player) {
String playerName = player.getUniqueId().toString();
return balances.containsKey(playerName);
}

}
Original file line number Diff line number Diff line change
@@ -0,0 +1,7 @@
package pl.mgtm.magicznakraina.api.economy;

public enum TaxType {
FIXED_AMOUNT,
PERCENTAGE,
COMBINED
}
33 changes: 29 additions & 4 deletions plugin/src/main/java/pl/mgtm/magicznakraina/config/User.java
Original file line number Diff line number Diff line change
Expand Up @@ -27,6 +27,8 @@ public class User implements Serializable {
@ConfigOptional
private HashMap<String, UserKitConfig> kits;

private int money = 0;

public User() {
}

Expand All @@ -41,6 +43,7 @@ public void setHearts(double hearts) {
public void addHearts(double hearts) {
this.hearts += hearts;
}

public void removeHearts(double hearts) {
this.hearts -= hearts;
}
Expand Down Expand Up @@ -87,11 +90,17 @@ public boolean getBannedOnZeroHearts() {
return this.bannedOnZeroHearts;
}

public HashMap<String, UserKitConfig> getUserKits() { return kits; }
public void setUserKits(HashMap<String, UserKitConfig> kits) { this.kits = kits; }
public void setUserKit(String kitname, UserKitConfig kit) {
public HashMap<String, UserKitConfig> getUserKits() {
return kits;
}

public void setUserKits(HashMap<String, UserKitConfig> kits) {
this.kits = kits;
}

public void setUserKit(String kitname, UserKitConfig kit) {
if (kits == null) kits = new HashMap<>();
kits.put(kitname,kit);
kits.put(kitname, kit);
}

public boolean hasKit(String kitname) {
Expand All @@ -104,6 +113,22 @@ public UserKitConfig getUserKit(String kitname) {
return kits.get(kitname);
}

public int getMoney() {
return money;
}

public void setMoney(int money) {
this.money = money;
}

public void addMoney(int money) {
this.money += money;
}

public void removeMoney(int money) {
this.money -= money;
}

}


Original file line number Diff line number Diff line change
Expand Up @@ -53,6 +53,18 @@ public void onEntityDamageByEntity(EntityDamageByEntityEvent event) {

// Give it the attacker monster
ItemStack weapon = player.getInventory().getItemInMainHand();

// Get only weapons
if (!weapon.getType().equals(Material.SHIELD)
&& !weapon.getType().toString().endsWith("_SWORD")
&& !weapon.getType().toString().endsWith("_AXE")
&& !weapon.getType().toString().endsWith("_PICKAXE")
&& !weapon.getType().toString().endsWith("_SHOVEL")
&& !weapon.getType().toString().endsWith("_HOE")
) {
return;
}

if (weapon != null && !weapon.getType().equals(Material.AIR)) {
player.getInventory().setItemInMainHand(null);

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -33,7 +33,7 @@ public void onBlockBreak(BlockBreakEvent event) {

// Check if Silverfish should be spawned
if (spawnChance > 0 && BetterMobsModule.shouldSpawnSilverfish(spawnChance)) {
block.getWorld().spawnEntity(block.getLocation(), EntityType.SILVERFISH);
block.getWorld().spawnEntity(block.getLocation().add(.5, 0, .5), EntityType.SILVERFISH);
}
}
}
Expand Down
Original file line number Diff line number Diff line change
@@ -0,0 +1,19 @@
package pl.mgtm.magicznakraina.modules.economy;

import pl.mgtm.magicznakraina.MagicznaKraina;
import pl.mgtm.magicznakraina.module.ModuleInfo;
import pl.mgtm.magicznakraina.module.PluginModule;
import pl.mgtm.magicznakraina.modules.economy.commands.MoneyCommand;

@ModuleInfo(name = "economy")
public class EconomyModule extends PluginModule {

private final MagicznaKraina pl = MagicznaKraina.getInstance();


public EconomyModule() {
super();

super.registerCommand(new MoneyCommand());
}
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,20 @@
package pl.mgtm.magicznakraina.modules.economy.commands;

import org.bukkit.ChatColor;
import org.bukkit.entity.Player;
import pl.mgtm.magicznakraina.MagicznaKraina;
import pl.mgtm.magicznakraina.command.CommandInfo;
import pl.mgtm.magicznakraina.command.PluginCommand;

@CommandInfo(name = "money", permission = "", requiresPlayer = true)
public class MoneyCommand extends PluginCommand {
private MagicznaKraina pl = MagicznaKraina.getInstance();

@Override
public void execute(Player player, String[] args) {
super.execute(player, args);

player.sendMessage(ChatColor.GRAY + "Twoje saldo: " + ChatColor.GREEN + pl.getEco().formatBalance(pl.getEco().getBalance(player)));
}

}
2 changes: 2 additions & 0 deletions plugin/src/main/resources/plugin.yml
Original file line number Diff line number Diff line change
Expand Up @@ -63,3 +63,5 @@ commands:
- v
resetworlds:
description: Resetuje nether i end.
money:
description: Pokazuje ile masz pieniędzy.

0 comments on commit 812fdba

Please sign in to comment.