AprilCommand.java 8.5 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199
  1. package com.gmail.nossr50.commands.skills;
  2. import com.gmail.nossr50.locale.LocaleLoader;
  3. import com.gmail.nossr50.util.HolidayManager.FakeSkillType;
  4. import com.gmail.nossr50.util.Misc;
  5. import com.gmail.nossr50.util.commands.CommandUtils;
  6. import com.gmail.nossr50.util.text.StringUtils;
  7. import com.google.common.collect.ImmutableList;
  8. import org.bukkit.command.Command;
  9. import org.bukkit.command.CommandSender;
  10. import org.bukkit.command.TabExecutor;
  11. import org.bukkit.entity.Player;
  12. import org.jetbrains.annotations.NotNull;
  13. import java.text.DecimalFormat;
  14. import java.util.ArrayList;
  15. import java.util.List;
  16. public class AprilCommand implements TabExecutor {
  17. private String skillName;
  18. protected DecimalFormat percent = new DecimalFormat("##0.00%");
  19. protected DecimalFormat decimal = new DecimalFormat("##0.00");
  20. @Override
  21. public boolean onCommand(@NotNull CommandSender sender, @NotNull Command command, @NotNull String label, String[] args) {
  22. if (CommandUtils.noConsoleUsage(sender)) {
  23. return true;
  24. }
  25. skillName = StringUtils.getCapitalized(label);
  26. if (args.length == 0) {
  27. Player player = (Player) sender;
  28. FakeSkillType fakeSkillType = FakeSkillType.getByName(skillName);
  29. float skillValue = Misc.getRandom().nextInt(99);
  30. player.sendMessage(LocaleLoader.getString("Skills.Header", skillName));
  31. player.sendMessage(LocaleLoader.getString("Commands.XPGain", getXPGainString(fakeSkillType)));
  32. player.sendMessage(LocaleLoader.getString("Effects.Level", (int) skillValue, Misc.getRandom().nextInt(1000), 1000 + Misc.getRandom().nextInt(1000)));
  33. List<String> effectMessages = effectsDisplay(fakeSkillType);
  34. if (!effectMessages.isEmpty()) {
  35. player.sendMessage(LocaleLoader.getString("Skills.Header", LocaleLoader.getString("Effects.Effects")));
  36. for (String message : effectMessages) {
  37. player.sendMessage(message);
  38. }
  39. }
  40. List<String> statsMessages = statsDisplay(fakeSkillType);
  41. if (!statsMessages.isEmpty()) {
  42. player.sendMessage(LocaleLoader.getString("Skills.Header", LocaleLoader.getString("Commands.Stats.Self")));
  43. for (String message : statsMessages) {
  44. player.sendMessage(message);
  45. }
  46. }
  47. player.sendMessage(LocaleLoader.formatString("[[DARK_AQUA]]Guide for {0} available - type /APRIL FOOLS ! :D", skillName));
  48. return true;
  49. }
  50. return true;
  51. }
  52. private String getXPGainString(FakeSkillType fakeSkillType) {
  53. switch (fakeSkillType) {
  54. case MACHO:
  55. return "Get beaten up";
  56. case JUMPING:
  57. return "Kris Kross will make ya Jump Jump";
  58. case THROWING:
  59. return "Chuck your items on the floor";
  60. case WRECKING:
  61. return "I'M GONNA WRECK IT!";
  62. case CRAFTING:
  63. return "Craft apple pies";
  64. case WALKING:
  65. return "Walk around the park";
  66. case SWIMMING:
  67. return "Like a fish on a bicycle";
  68. case FALLING:
  69. return "Faceplant the floor, headbutt the ground";
  70. case CLIMBING:
  71. return "Climb the highest mountain";
  72. case FLYING:
  73. return "I believe I can fly";
  74. case DIVING:
  75. return "Scuba club 4000";
  76. case PIGGY:
  77. return "OINK! OINK!";
  78. default:
  79. return "Sit and wait?";
  80. }
  81. }
  82. @Override
  83. public List<String> onTabComplete(@NotNull CommandSender sender, @NotNull Command command, @NotNull String alias, String[] args) {
  84. if (args.length == 1) {
  85. return ImmutableList.of("?");
  86. }
  87. return ImmutableList.of();
  88. }
  89. private List<String> effectsDisplay(FakeSkillType fakeSkillType) {
  90. List<String> messages = new ArrayList<>();
  91. switch (fakeSkillType) {
  92. case MACHO:
  93. messages.add(LocaleLoader.getString("Effects.Template", "Punching bag", "Absorb damage, like a bag of sand"));
  94. break;
  95. case JUMPING:
  96. messages.add(LocaleLoader.getString("Effects.Template", "Jump", "PRESS SPACE TO JUMP"));
  97. messages.add(LocaleLoader.getString("Effects.Template", "Jump Twice", "PRESS SPACE TWICE TO JUMP TWICE"));
  98. break;
  99. case THROWING:
  100. messages.add(LocaleLoader.getString("Effects.Template", "Drop Item", "Randomly drop items, at random"));
  101. break;
  102. case WRECKING:
  103. messages.add(LocaleLoader.getString("Effects.Template", "Ralphinator", "Smash windows with your fists"));
  104. break;
  105. case CRAFTING:
  106. messages.add(LocaleLoader.getString("Effects.Template", "Crafting", "Chance of successful craft"));
  107. break;
  108. case WALKING:
  109. messages.add(LocaleLoader.getString("Effects.Template", "Walk", "Traveling gracefully by foot"));
  110. break;
  111. case SWIMMING:
  112. messages.add(LocaleLoader.getString("Effects.Template", "Swim", "Just keep swimming, swimming, swimming"));
  113. break;
  114. case FALLING:
  115. messages.add(LocaleLoader.getString("Effects.Template", "Skydiving", "Go jump of a cliff. No, seriously."));
  116. break;
  117. case CLIMBING:
  118. messages.add(LocaleLoader.getString("Effects.Template", "Rock Climber", "Use string to climb mountains faster"));
  119. break;
  120. case FLYING:
  121. messages.add(LocaleLoader.getString("Effects.Template", "Fly", "Throw yourself at the ground and miss"));
  122. break;
  123. case DIVING:
  124. messages.add(LocaleLoader.getString("Effects.Template", "Hold Breath", "Press shift to hold your breath longer"));
  125. break;
  126. case PIGGY:
  127. messages.add(LocaleLoader.getString("Effects.Template", "Carrot Turbo", "Supercharge your pigs with carrots"));
  128. break;
  129. }
  130. return messages;
  131. }
  132. private List<String> statsDisplay(FakeSkillType fakeSkillType) {
  133. List<String> messages = new ArrayList<>();
  134. switch (fakeSkillType) {
  135. case MACHO:
  136. messages.add(LocaleLoader.formatString("&cDamage Taken: &e{0}%", decimal.format(Misc.getRandom().nextInt(77))));
  137. break;
  138. case JUMPING:
  139. messages.add(LocaleLoader.formatString("&cDouble Jump Chance: &e{0}%", decimal.format(Misc.getRandom().nextInt(27))));
  140. break;
  141. case THROWING:
  142. messages.add(LocaleLoader.formatString("&cDrop Item Chance: &e{0}%", decimal.format(Misc.getRandom().nextInt(87))));
  143. break;
  144. case WRECKING:
  145. messages.add(LocaleLoader.formatString("&cWrecking Chance: &e{0}%", decimal.format(Misc.getRandom().nextInt(14))));
  146. break;
  147. case CRAFTING:
  148. messages.add(LocaleLoader.formatString("&cCrafting Success: &e{0}%", decimal.format(Misc.getRandom().nextInt(27))));
  149. break;
  150. case WALKING:
  151. messages.add(LocaleLoader.formatString("&cWalk Chance: &e{0}%", decimal.format(Misc.getRandom().nextInt(27))));
  152. break;
  153. case SWIMMING:
  154. messages.add(LocaleLoader.formatString("&cSwim Chance: &e{0}%", decimal.format(Misc.getRandom().nextInt(27))));
  155. break;
  156. case FALLING:
  157. messages.add(LocaleLoader.formatString("&cSkydiving Success: &e{0}%", decimal.format(Misc.getRandom().nextInt(37))));
  158. break;
  159. case CLIMBING:
  160. messages.add(LocaleLoader.formatString("&cRock Climber Chance: &e{0}%", decimal.format(Misc.getRandom().nextInt(27))));
  161. break;
  162. case FLYING:
  163. messages.add(LocaleLoader.formatString("&cFly Chance: &e{0}%", decimal.format(Misc.getRandom().nextInt(27))));
  164. break;
  165. case DIVING:
  166. messages.add(LocaleLoader.formatString("&cHold Breath Chance: &e{0}%", decimal.format(Misc.getRandom().nextInt(27))));
  167. break;
  168. case PIGGY:
  169. messages.add(LocaleLoader.formatString("&cCarrot Turbo Boost: &e{0}%", decimal.format(Misc.getRandom().nextInt(80)) + 10));
  170. break;
  171. }
  172. return messages;
  173. }
  174. }