PokeTeams - Teams plugin with Pixelmon Reforged Support


Hi ! I have a bug with the last version, permissions in group no longer works.


I will look into this for updates in the future.


Not sure what you mean here. It seems this issue isn’t applying to anyone else


The latest version will report errors

[05:28:29] [Server thread/ERROR] [FML]: Exception caught during firing event com.pixelmonmod.pixelmon.api.events.battles.BattleEndEvent@58cdffe6:
java.lang.NullPointerException: null
at io.github.TSEcho.PokeTeams.APIs.PokeTeamsAPI.(PokeTeamsAPI.java:24) ~[PokeTeamsAPI.class:?]
at io.github.TSEcho.PokeTeams.Pixelmon.BattleManager.onEndBattle(BattleManager.java:45) ~[BattleManager.class:?]
at net.minecraftforge.fml.common.eventhandler.ASMEventHandler_219_BattleManager_onEndBattle_BattleEndEvent.invoke(.dynamic) ~[?:?]
at net.minecraftforge.fml.common.eventhandler.ASMEventHandler.invoke(ASMEventHandler.java:90) ~[ASMEventHandler.class:?]
at net.minecraftforge.fml.common.eventhandler.EventBus.post(EventBus.java:747) [EventBus.class:?]
at net.minecraftforge.fml.common.eventhandler.EventBus.post(EventBus.java:697) [EventBus.class:?]
at com.pixelmonmod.pixelmon.battles.controller.BattleControllerBase.endBattle(BattleControllerBase.java:752) [BattleControllerBase.class:?]
at com.pixelmonmod.pixelmon.battles.controller.BattleControllerBase.endBattle(BattleControllerBase.java:631) [BattleControllerBase.class:?]
at com.pixelmonmod.pixelmon.entities.pokeballs.EntityEmptyPokeball.storeCapture(EntityEmptyPokeball.java:337) [EntityEmptyPokeball.class:?]
at com.pixelmonmod.pixelmon.entities.pokeballs.EntityEmptyPokeball.func_70071_h_(EntityEmptyPokeball.java:304) [EntityEmptyPokeball.class:?]
at org.spongepowered.common.event.tracking.TrackingUtil.tickEntity(TrackingUtil.java:157) [TrackingUtil.class:1.12.2-2768-7.1.5]
at net.minecraft.world.WorldServer.redirect$onCallEntityUpdate$zmc000(WorldServer.java:2978) [oo.class:?]
at net.minecraft.world.World.func_72866_a(World.java:4157) [amu.class:?]
at net.minecraft.world.WorldServer.func_72866_a(WorldServer.java:832) [oo.class:?]
at net.minecraft.world.World.func_72870_g(World.java:1955) [amu.class:?]
at net.minecraft.world.World.func_72939_s(World.java:6599) [amu.class:?]
at net.minecraft.world.WorldServer.func_72939_s(WorldServer.java:2290) [oo.class:?]
at net.minecraft.server.MinecraftServer.func_71190_q(MinecraftServer.java:767) [MinecraftServer.class:?]
at net.minecraft.server.dedicated.DedicatedServer.func_71190_q(DedicatedServer.java:397) [nz.class:?]
at net.minecraft.server.MinecraftServer.func_71217_p(MinecraftServer.java:668) [MinecraftServer.class:?]
at net.minecraft.server.MinecraftServer.run(MinecraftServer.java:526) [MinecraftServer.class:?]
at java.lang.Thread.run(Unknown Source) [?:1.8.0_201]
[05:28:29] [Server thread/ERROR] [FML]: Index: 4 Listeners:
[05:28:29] [Server thread/ERROR] [FML]: 0: NORMAL
[05:28:29] [Server thread/ERROR] [FML]: 1: ASM: rs.expand.pixelmonbroadcasts.listeners.BattleEndListener@5cea8edb onBattleEndEvent(Lcom/pixelmonmod/pixelmon/api/events/battles/BattleEndEvent;)V
[05:28:29] [Server thread/ERROR] [FML]: 2: ASM: com.pixelmonmod.pixelmon.PixelmonEventHandler@46eb5df6 onBattleEnd(Lcom/pixelmonmod/pixelmon/api/events/battles/BattleEndEvent;)V
[05:28:29] [Server thread/ERROR] [FML]: 3: ASM: com.hiroku.tournaments.listeners.BattleListener@643e9d67 onBattleEnd(Lcom/pixelmonmod/pixelmon/api/events/battles/BattleEndEvent;)V
[05:28:29] [Server thread/ERROR] [FML]: 4: ASM: io.github.TSEcho.PokeTeams.Pixelmon.BattleManager@6fb80123 onEndBattle(Lcom/pixelmonmod/pixelmon/api/events/battles/BattleEndEvent;)V
[05:28:29] [Server thread/ERROR] [FML]: 5: ASM: com.pixelmonmod.pixelmon.listener.PokerusSpreader@7e367270 onBattleEnd(Lcom/pixelmonmod/pixelmon/api/events/battles/BattleEndEvent;)V
[05:28:29] [Server thread/ERROR] [Sponge]: //
[05:28:29] [Server thread/ERROR] [Sponge]: /* Exception occurred during a PhaseState /
[05:28:29] [Server thread/ERROR] [Sponge]: //
[05:28:29] [Server thread/ERROR] [Sponge]: /
Sponge’s tracking system makes a best effort to not throw exceptions randomly /
[05:28:29] [Server thread/ERROR] [Sponge]: / but sometimes it is inevitable. In most cases, something else triggered this /
[05:28:29] [Server thread/ERROR] [Sponge]: / exception and Sponge prevented a crash by catching it. The following stacktrace /
[05:28:29] [Server thread/ERROR] [Sponge]: / can be used to help pinpoint the cause. /
[05:28:29] [Server thread/ERROR] [Sponge]: //
[05:28:29] [Server thread/ERROR] [Sponge]: / The PhaseState having an exception: EntityTickPhase /
[05:28:29] [Server thread/ERROR] [Sponge]: / The PhaseContext: /
[05:28:29] [Server thread/ERROR] [Sponge]: / - Owner: EntityPlayerMP[‘Mr_Rabbit’/104, l=‘world’, x=-3599.84, y=72.00, z=2805.97] /
[05:28:29] [Server thread/ERROR] [Sponge]: / - Source: EntityEmptyPokeball[‘超级球’/601, l=‘world’, x=-3602.00, y=72.05, z=2807.00] /
[05:28:29] [Server thread/ERROR] [Sponge]: / - CapturedBlockPosition: CaptureBlockPos{pos=null, world=Optional.empty} /
[05:28:29] [Server thread/ERROR] [Sponge]: / org.spongepowered.asm.util.PrettyPrinter@59b37def /
[05:28:29] [Server thread/ERROR] [Sponge]: /
[05:28:29] [Server thread/ERROR] [Sponge]: / StackTrace: /
[05:28:29] [Server thread/ERROR] [Sponge]: / java.lang.NullPointerException: null /
[05:28:29] [Server thread/ERROR] [Sponge]: / io.github.TSEcho.PokeTeams.APIs.PokeTeamsAPI.(PokeTeamsAPI.java:24) /
[05:28:29] [Server thread/ERROR] [Sponge]: / io.github.TSEcho.PokeTeams.Pixelmon.BattleManager.onEndBattle(BattleManager.java:45) /
[05:28:29] [Server thread/ERROR] [Sponge]: / net.minecraftforge.fml.common.eventhandler.ASMEventHandler_219_BattleManager_onEndBattle_BattleEndEvent.invoke(.dynamic) /
[05:28:29] [Server thread/ERROR] [Sponge]: / net.minecraftforge.fml.common.eventhandler.ASMEventHandler.invoke(ASMEventHandler.java:90) /
[05:28:29] [Server thread/ERROR] [Sponge]: / net.minecraftforge.fml.common.eventhandler.EventBus.post(EventBus.java:747) /
[05:28:29] [Server thread/ERROR] [Sponge]: / net.minecraftforge.fml.common.eventhandler.EventBus.post(EventBus.java:697) /
[05:28:29] [Server thread/ERROR] [Sponge]: / com.pixelmonmod.pixelmon.battles.controller.BattleControllerBase.endBattle(BattleControllerBase.java:752) /
[05:28:29] [Server thread/ERROR] [Sponge]: / com.pixelmonmod.pixelmon.battles.controller.BattleControllerBase.endBattle(BattleControllerBase.java:631) /
[05:28:29] [Server thread/ERROR] [Sponge]: / com.pixelmonmod.pixelmon.entities.pokeballs.EntityEmptyPokeball.storeCapture(EntityEmptyPokeball.java:337) /
[05:28:29] [Server thread/ERROR] [Sponge]: / com.pixelmonmod.pixelmon.entities.pokeballs.EntityEmptyPokeball.func_70071_h_(EntityEmptyPokeball.java:304) /
[05:28:29] [Server thread/ERROR] [Sponge]: / org.spongepowered.common.event.tracking.TrackingUtil.tickEntity(TrackingUtil.java:157) /
[05:28:29] [Server thread/ERROR] [Sponge]: / net.minecraft.world.WorldServer.redirect$onCallEntityUpdate$zmc000(WorldServer.java:2978) /
[05:28:29] [Server thread/ERROR] [Sponge]: / net.minecraft.world.World.func_72866_a(World.java:4157) /
[05:28:29] [Server thread/ERROR] [Sponge]: / net.minecraft.world.WorldServer.func_72866_a(WorldServer.java:832) /
[05:28:29] [Server thread/ERROR] [Sponge]: / net.minecraft.world.World.func_72870_g(World.java:1955) /
[05:28:29] [Server thread/ERROR] [Sponge]: / net.minecraft.world.World.func_72939_s(World.java:6599) /
[05:28:29] [Server thread/ERROR] [Sponge]: / net.minecraft.world.WorldServer.func_72939_s(WorldServer.java:2290) /
[05:28:29] [Server thread/ERROR] [Sponge]: / net.minecraft.server.MinecraftServer.func_71190_q(MinecraftServer.java:767) /
[05:28:29] [Server thread/ERROR] [Sponge]: / net.minecraft.server.dedicated.DedicatedServer.func_71190_q(DedicatedServer.java:397) /
[05:28:29] [Server thread/ERROR] [Sponge]: / net.minecraft.server.MinecraftServer.func_71217_p(MinecraftServer.java:668) /
[05:28:29] [Server thread/ERROR] [Sponge]: / net.minecraft.server.MinecraftServer.run(MinecraftServer.java:526) /
[05:28:29] [Server thread/ERROR] [Sponge]: / java.lang.Thread.run(Unknown Source) /
[05:28:29] [Server thread/ERROR] [Sponge]: / Phases Remaining: /
[05:28:29] [Server thread/ERROR] [Sponge]: / /
[05:28:29] [Server thread/ERROR] [Sponge]: / Minecraft : 1.12.2 /
[05:28:29] [Server thread/ERROR] [Sponge]: / SpongeAPI : 7.1.0-366290f8 /
[05:28:29] [Server thread/ERROR] [Sponge]: / Sponge : 1.12.2-7.1.5 /
[05:28:29] [Server thread/ERROR] [Sponge]: / SpongeForge : 1.12.2-2768-7.1.5 /
[05:28:29] [Server thread/ERROR] [Sponge]: / Minecraft Forge : */
[05:28:29] [Server thread/ERROR] [Sponge]: /********************************************************************************************************************************/


This error has been reported and is in the progress of being fixed and tested before a push will be made here so no fear.

Thanks for pointing it out. In the future, please paste that message to pastebin.com or at least put a spoiler on it so we do not have to scroll down. Thank you


Thank you for your reply,

/team info The position is shown as null


Yup that issue was reported and fixed (awaiting testing) as we speak.

You may want to check out my discord at https://discord.gg/2uuqeJV for update on these things as they get there much quicker and it offers beta access =)


A new version has been released for PokeTeams, it is available for download here.


- Added more descriptive member list so you can see more about a team

- Fixed up null values in info command

- Fixed up console message errors 

- Tag Settings
   - Can now set a max length in config
   - Can now disable/enable censoring tags
   - Can now disable/enable ampersand formatting for tags

- Bank Changes
   - You can now withdraw money from your bank account
   - By default Owners will be the only ones with access

- Added competitive battle components
   - Battle Rules 
      - Turn Time, Level Cap, Raise to cap, Full heal
   - Battle Clauses
      - Sleep Clause, Battle Clause, Forfeit Clause, Inverse Battles, Sky Battles
   - All are customizable in config and can be disabled/setup how you want

- Every text in PokeTeams can now be fully customized 
  - New addition was with the Info Command

- Commands now support offline players
  - Admin kick, regular kick, admin set, promote, and demote

Note: none of these will require resetting your config. Just load up and enjoy =)


I found some questions and submitted them.


A new version has been released for PokeTeams, it is available for download here.


- Fixed issue with team kills not adding up
- Fixed any errors involving team bases (supports multi-world if needed)
- Fixed economy issues with queue 


A new version has been released for PokeTeams, it is available for download here.

  • Fixes issue “Team does not exist” error with /teams admin set


A new version has been released for PokeTeams, it is available for download here.

Added more commands to better suit admin-oriented team arrangements

- /teams admin set <player> <team> <rank>
  - Added rank argument to allow for more customization
- /teams admin promote <player>
  - Promotes a player on a team regardless of who enters the command 
- /teams admin demote <player
  - Demotes a player on a team regardless of who enters the command


A new version has been released for PokeTeams, it is available for download here.


- Added the ability to limit tags based on style
   - Can be turned on/off in config
   - Allows you to specifically limit bold, italics, strikethrough, underline, and magic
- Tag checking for length does not factor in the length of color formatting in tags anymore
- Added %formattedteamtag% placeholder
- Format can change to your liking in config under Placeholder-Settings

Bug Fixes

- Fixed tag censor issue with colors
- Fix config so it generates with Y instead of y
   - Make sure to set your config up correctly if this changes anything for you
- Fixed socialspy bug in non-toggle chat command
- Fixed admin kick command not kicking
- Fixed admin reset command not seeing teams correctly


teams bank ,What zuoy is there


Teams bank, what’s the function? How do players use the money in the bank?

Hello, the content is from the translation software, I hope to make it clear what I want to express.

This plug-in is very powerful. Thank you very much for continuing to update the plug-in.

I’d like to make some suggestions.

  1. Have time limits, create team time, start time, end time. Creating a team allows more players to participate, just like the task of the entire server. Then count the top three and award them.

  2. Configuration of reward information, preferably a visual configuration operation, such as the “kit edit” function

  3. Players can compete in ways that can defeat the number of wild Baoke Dreams or capture the number of Baoke Dreams.

  4. The money in the bank can be used to distribute the bonuses of the top three. The money in the bank can be converted from beating Baoke Dream or capturing the number of Baoke Dream.

Actually, I still have many interesting ideas based on poketeam, but it’s better to let you agree.

teams bank ,有什么功能?玩家怎么使用银行里的钱呢?

2.配置奖励信息,最好是可视化的配置操作,比如“kit edit” 的功能



Have thought about a few of these but have chosen not to for a reason.

  1. This is a very specific feature that only some may use and will overall clutter the commands up. Maybe in the future this can be an admin command but I’d like to keep this plugin pretty much in its own shell.

  2. I chose not to have this because its a lot of work and it can easily be modified in config anyway. This feature however may be added in the future to make admin accessibility better.

  3. Not sure what a “Baoke Dream” is. Might be a translation issue or just something I don’t know about but will likely not be adding that since it is so specific. Want things to be general and applicable anywhere.

  4. Again this is a highly specific feature and can be setup on your end if you wanted to.

Overall, a lot of these features are highly specific and wouldn’t apply to the general user base that uses this plugin. If you’d like these features, I recommend checking out my API Page for poke teams. You or any other dev can easily add functionality that best fits your server. I added this so everyone can have specialized versions of poke teams


A new version has been released for PokeTeams, it is available for download here.

* Bug Fixes
  * Added new line in between invite lines 
  * Fixed issue with wrong error message appearing when you tried to join the queue with insufficient funds
  * Fixed info menu a bit so money sign appears and base is not in the wrong area
  * Fixed issue with queue not taking from the last in the queue
  * Changed info command to allow for spaces in team names

* Additions
   * Brand new leaderboard system
      * Can now view each type of leaderboard specifically
      * Can view a total leaderboard with the new rating system
  * Rating System
      * Each team has a total team rating that applies to them (0*100)
      * This is calculated by taking config values and using them to average a score based on how the server owner feels that teams relates automatically.
      * Check config for setting up top scores to relate teams to. This can be setup to your economy
       * Added %teamrating% placeholder so you can show this off to others
  * Teams create confirmation clickable added (Configurable)
  * Added option for only allowing default world in set base command 
  * Add tranferowner command (gives owner and moves user to officer)
  * Add social spy toggle command 
  * Changed social spy system to work on toggle system (default on for people with permission for toggle command)
  * Add queue join permission based on config so teams don’t have to worry about people ruining W/L

If you encounter any bugs please report them to me. Since some commands were added and social spy was reworked you may also need to edit your permissions. Information with update permissions can be found at https://github.com/TSEcho/PokeTeams/wiki/Permissions


A new version has been released for PokeTeams, it is available for download here.

  • Moved entire plugin to storing via UUID (Automatically will change)
  • Admin kick command no longer checks if you’re kicking the owner
  • Added in brand new Captain rank for you to configure
  • Removes players from queue when they leave the game


configurable queue join/leave messages with option to disable if others don’t want it but essentially would be nice to give people a message announcement saying someone joined the queue to battle.

might also be something to add a configurable warning message like a double confirmation about queue if there are fees enabled so people know if they confirm it will take x amount of money from them.


A new version has been released for PokeTeams, it is available for download here.

- Enhanced help commands
    - Help commands now only show commands you have permissions to use
    - Help commands now have hover message to tell players to execute command
    - Help commands now have click actions to suggest/execute the command 
    - Each base command and /<base-command> help will not trigger the help command

- Alliances System added
    - Create an alliance with /teams alliance create <name>
    - Delete a team with /teams alliance delete 
    - Invite a team to an alliance with /teams alliance invite <player>
    - Leave an alliance with /teams alliance leave
    - Chat with an alliance (toggle included) with /teams alliance chat [<message>]
    - Show alliance info with /teams alliance info
    - Change alliance leadership with /teams alliance transfer <team>

- Battle clause system reworked
    - Now includes every clause in the game and can be changed dynamically for the future

- Configuration changes
    - Default-TeamTag and Default-TeamName and Default-TeamTag now support PAPI
    - Alliance permission section added (owner and member)
    - Alliance chat section added
    - Alliance storage file added

- Placeholders added
    - %teamalliance%

- Development/Technical additions
    - Switched package structure to better fit standards
    - Added getAllMembers() for PokeTeamsAPI 
    - Added AllianceAPI to coincide with PokeTeamsAPI
    - Switched many loops to streams for better efficiency
    - Forge mappings moved to most recent forge
    - Removed unneeded repo
    - Moved all event listeners to their own respective classes
    - Added "$" to filter for names as it messes with regex replacement