so://phie

poppy

A feature-rich Minecraft plugin which enhances gaming experience
git clone git://soophie.de/poppy

blob: 941ce77555d49203b318ae3484551fa34704d8eb (5130 bytes)[doc][blame][raw]

1package poppy;

2

3import org.bukkit.Bukkit;

4import org.bukkit.GameMode;

5import org.bukkit.Material;

6import org.bukkit.command.Command;

7import org.bukkit.command.CommandSender;

8import org.bukkit.entity.Player;

9import org.bukkit.event.EventHandler;

10import org.bukkit.inventory.ItemStack;

11import org.bukkit.inventory.meta.SkullMeta;

12import org.bukkit.plugin.Plugin;

13import org.bukkit.plugin.PluginManager;

14import org.bukkit.plugin.java.JavaPlugin;

15

16import poppy.modules.AutoBreakerModule;

17import poppy.modules.AutoPlacerModule;

18import poppy.modules.AutoWorkbenchModule;

19import poppy.modules.BlockDetectorModule;

20import poppy.modules.CauldronModule;

21import poppy.modules.ChairModule;

22import poppy.modules.DoubleDoorModule;

23import poppy.modules.HopperSorterModule;

24import poppy.modules.CommonModule;

25import poppy.modules.LeavesDecayModule;

26import poppy.modules.SpawnerModule;

27import poppy.modules.PlayerMountModule;

28import poppy.modules.FastTravelModule;

29

30

31public class Main extends JavaPlugin {

32 private Plugin plugin;

33 private Config config;

34 private PluginManager pluginManager;

35

36 private CommonModule commonModule;

37 private DoubleDoorModule doubleDoorModule;

38 private ChairModule chairModule;

39 private AutoWorkbenchModule autoWorkbenchModule;

40 private LeavesDecayModule leavesDecayModule;

41 private CauldronModule cauldronModule;

42 private SpawnerModule spawnerModule;

43 private HopperSorterModule hopperSorterModule;

44 private AutoPlacerModule autoPlacerModule;

45 private AutoBreakerModule autoBreakerModule;

46 private PlayerMountModule playerMountModule;

47 private BlockDetectorModule blockDetectorModule;

48 private FastTravelModule fastTravelModule;

49

50 @Override

51 public void onEnable() {

52 plugin = this;

53 config = new Config("config/poppy.yml");

54 pluginManager = Bukkit.getPluginManager();

55

56 commonModule = new CommonModule();

57 pluginManager.registerEvents(commonModule, this);

58

59 doubleDoorModule = new DoubleDoorModule();

60 pluginManager.registerEvents(doubleDoorModule, this);

61

62 chairModule = new ChairModule();

63 pluginManager.registerEvents(chairModule, this);

64

65 autoWorkbenchModule = new AutoWorkbenchModule();

66 pluginManager.registerEvents(autoWorkbenchModule, this);

67

68 leavesDecayModule = new LeavesDecayModule(this);

69 pluginManager.registerEvents(leavesDecayModule, this);

70

71 cauldronModule = new CauldronModule(this);

72 pluginManager.registerEvents(cauldronModule, this);

73

74 spawnerModule = new SpawnerModule();

75 pluginManager.registerEvents(spawnerModule, this);

76

77 hopperSorterModule = new HopperSorterModule();

78 pluginManager.registerEvents(hopperSorterModule, this);

79

80 autoPlacerModule = new AutoPlacerModule(this);

81 pluginManager.registerEvents(autoPlacerModule, this);

82

83 autoBreakerModule = new AutoBreakerModule(this);

84 pluginManager.registerEvents(autoBreakerModule, this);

85

86 playerMountModule = new PlayerMountModule();

87 pluginManager.registerEvents(playerMountModule, this);

88

89 blockDetectorModule = new BlockDetectorModule();

90 pluginManager.registerEvents(blockDetectorModule, this);

91

92 fastTravelModule = new FastTravelModule(this);

93 pluginManager.registerEvents(fastTravelModule, this);

94 }

95

96 @Override

97 public void onDisable() {

98 chairModule.onDisable();

99 fastTravelModule.onDisable();

100 }

101

102 @Override

103 public boolean onCommand(CommandSender sender, Command command, String label, String[] args) {

104 if (sender instanceof Player) {

105 final Player player = (Player) sender;

106 switch (label) {

107 case "head":

108 return setItemAsHead(player, args);

109 case "skull":

110 return getSkullForName(player, args);

111 case "r":

112 return reload(player, args);

113 default:

114 return false;

115 }

116 }

117 return true;

118 }

119

120 private boolean setItemAsHead(final Player player, final String[] args) {

121 final ItemStack item = player.getInventory().getItemInMainHand();

122 final ItemStack head = player.getInventory().getHelmet();

123 if (head != null && head.getType().equals(Material.SADDLE)) {

124 player.eject();

125 }

126 player.getInventory().setHelmet(item);

127 player.getInventory().setItemInMainHand((new ItemStack(Material.AIR)));

128 if (player.getGameMode() == GameMode.SURVIVAL) {

129 if (head != null) {

130 player.getInventory().addItem(head);

131 }

132 }

133 return true;

134 }

135

136 private boolean reload(final Player player, final String[] args) {

137 if (!player.isOp()) {

138 player.sendMessage(Constants.Messages.NOT_ENOUGH_PERMISSION);

139 return true;

140 }

141 player.chat("/reload confirm");

142 return true;

143 }

144

145 @SuppressWarnings("deprecation")

146 private boolean getSkullForName(final Player player, final String[] args) {

147 if (!player.isOp()) {

148 player.sendMessage(Constants.Messages.NOT_ENOUGH_PERMISSION);

149 return true;

150 }

151 if (args.length != 1) {

152 return false;

153 }

154 final String name = args[0];

155 final ItemStack skull = new ItemStack(Material.PLAYER_HEAD);

156 final SkullMeta meta = (SkullMeta) skull.getItemMeta();

157 meta.setOwner(name);

158 skull.setItemMeta(meta);

159 player.getInventory().addItem(skull);

160 return true;

161 }

162}