Advertisement
Baito

PiXeloot Code

Mar 31st, 2019
51
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Java 4.22 KB | None | 0 0
  1. // PiXeloot.java Main Class
  2. package com.baito.pixeloot;
  3.  
  4. import com.baito.pixeloot.listener.BeatWildPixelmonListener;
  5. import com.google.inject.Inject;
  6. import org.spongepowered.api.Sponge;
  7. import org.spongepowered.api.event.game.state.GameStartedServerEvent;
  8. import org.spongepowered.api.event.Listener;
  9. import org.spongepowered.api.plugin.Dependency;
  10. import org.spongepowered.api.plugin.Plugin;
  11. import com.pixelmonmod.pixelmon.Pixelmon;
  12. import org.spongepowered.api.service.economy.EconomyService;
  13. import org.spongepowered.api.plugin.PluginContainer;
  14. import java.util.Optional;
  15.  
  16. @Plugin(
  17.         id = "pixeloot",
  18.         name = "PiXeloot",
  19.         version = "1.0-API7-SNAPSHOT",
  20.         authors = {"Baito"},
  21.         description = "Earn money from defeating Pokemon",
  22.         dependencies = {@Dependency(id="pixelmon")}
  23. )
  24. public class PiXeloot {
  25.  
  26.     public PiXeloot() {};
  27.  
  28.     @Inject
  29.     private PluginContainer pluginContainer;
  30.  
  31.     private Optional<EconomyService> serviceOpt = Sponge.getServiceManager().provide(EconomyService.class);
  32.  
  33.     private EconomyService economy = serviceOpt.get();
  34.  
  35.     public static PiXeloot instance;
  36.  
  37.     @Listener
  38.     public void onServerStart(GameStartedServerEvent event) {
  39.         instance = this;
  40.         this.registerListener();
  41.     }
  42.  
  43.     private void registerListener() { Pixelmon.EVENT_BUS.register(new BeatWildPixelmonListener()); }
  44.  
  45.     public EconomyService getEconomy() { return this.economy; }
  46.  
  47.     public PluginContainer getPluginContainer() { return this.pluginContainer; }
  48. }
  49.  
  50. // BeatWildPixelmonListener
  51. package com.baito.pixeloot.listener;
  52.  
  53. import com.baito.pixeloot.PiXeloot;
  54. import com.pixelmonmod.pixelmon.Pixelmon;
  55. import com.pixelmonmod.pixelmon.api.events.BeatWildPixelmonEvent;
  56. import com.pixelmonmod.pixelmon.battles.controller.participants.PixelmonWrapper;
  57. import com.pixelmonmod.pixelmon.entities.pixelmon.EntityPixelmon;
  58. import java.math.BigDecimal;
  59. import java.util.Optional;
  60. import com.pixelmonmod.pixelmon.storage.PlayerPartyStorage;
  61. import net.minecraftforge.fml.common.eventhandler.SubscribeEvent;
  62. import org.spongepowered.api.entity.living.player.Player;
  63. import org.spongepowered.api.event.cause.Cause;
  64. import org.spongepowered.api.event.cause.EventContext;
  65. import org.spongepowered.api.event.cause.EventContextKeys;
  66. import org.spongepowered.api.service.economy.account.UniqueAccount;
  67. import org.spongepowered.api.text.Text;
  68.  
  69. public class BeatWildPixelmonListener {
  70.     public BeatWildPixelmonListener() {}
  71.  
  72.     @SubscribeEvent
  73.     public void defeatWild(BeatWildPixelmonEvent e) {
  74.         Player p = (Player)e.player;
  75.         BigDecimal finalReward = BigDecimal.valueOf(0);
  76.         Optional<UniqueAccount> optBank = PiXeloot.instance.getEconomy().getOrCreateAccount(p.getUniqueId());
  77.         if (optBank.isPresent()) {
  78.             UniqueAccount bank = optBank.get();
  79.             PixelmonWrapper[] allPixelmon = e.wpp.allPokemon;
  80.             for (int i = 0; i < allPixelmon.length; i++) {
  81.                 PlayerPartyStorage party = Pixelmon.storageManager.getParty(p.getUniqueId());
  82.                 BigDecimal reward;
  83.                 EntityPixelmon opponent = allPixelmon[i].entity;
  84.                 double levelDiffMult = (100 - ((double)party.averageLevel*2 - (double) opponent.getPokemonData().getLevel()*2))/100;
  85.                 // Takes the players average party level and subtracts the opponents level from it.
  86.                 // Parties with high average levels compared to the opponent will get lower multipliers, while
  87.                 // parties with low average levels compared to the opponent will get higher multipliers.
  88.                 double toMultiply = Math.floor(Math.random() * 1000) - 500;
  89.                 reward = BigDecimal.valueOf(toMultiply * levelDiffMult);
  90.                 finalReward = finalReward.add(reward);
  91.             }
  92.  
  93.             bank.deposit(PiXeloot.instance.getEconomy().getDefaultCurrency(), finalReward, Cause.builder().append(PiXeloot.instance).build(EventContext.builder().add(EventContextKeys.PLUGIN, PiXeloot.instance.getPluginContainer()).build()));
  94.             Text message = Text.of("§f[§dpiXeloot§f] §aYou earned P§a" + finalReward.toString() + "!");
  95.             p.sendMessage(message);
  96.         }
  97.     }
  98. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement