so://phie

poppy

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

blob: c3937b361f9ae0cefa40a712a287dce26bce7802 (7898 bytes)[doc][blame][raw]

1package poppy;

2

3import org.bukkit.Bukkit;

4import org.bukkit.ChatColor;

5import org.bukkit.GameMode;

6import org.bukkit.Location;

7import org.bukkit.Material;

8import org.bukkit.command.Command;

9import org.bukkit.command.CommandSender;

10import org.bukkit.entity.Player;

11import org.bukkit.inventory.ItemStack;

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

13import org.bukkit.inventory.meta.BookMeta;

14import org.bukkit.plugin.Plugin;

15import org.bukkit.plugin.PluginManager;

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

17

18import poppy.modules.AutoWorkbenchModule;

19import poppy.modules.CauldronModule;

20import poppy.modules.ChairModule;

21import poppy.modules.DoubleDoorModule;

22import poppy.modules.CommonModule;

23import poppy.modules.LeavesDecayModule;

24import poppy.modules.SpawnerModule;

25

26

27public class Main extends JavaPlugin

28{

29 private Plugin plugin;

30 private Config config;

31 private PluginManager pluginManager;

32

33 private CommonModule commonModule;

34 private DoubleDoorModule doubleDoorModule;

35 private ChairModule chairModule;

36 private AutoWorkbenchModule autoWorkbenchModule;

37 private LeavesDecayModule leavesDecayModule;

38 private CauldronModule cauldronModule;

39 private SpawnerModule spawnerModule;

40

41 @Override

42 public void onEnable()

43 {

44 plugin = this;

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

46

47 pluginManager = Bukkit.getPluginManager();

48

49 commonModule = new CommonModule();

50 pluginManager.registerEvents(commonModule, this);

51

52 doubleDoorModule = new DoubleDoorModule();

53 pluginManager.registerEvents(doubleDoorModule, this);

54

55 chairModule = new ChairModule();

56 pluginManager.registerEvents(chairModule, this);

57

58 autoWorkbenchModule = new AutoWorkbenchModule();

59 pluginManager.registerEvents(autoWorkbenchModule, this);

60

61 leavesDecayModule = new LeavesDecayModule(this);

62 pluginManager.registerEvents(leavesDecayModule, this);

63

64 cauldronModule = new CauldronModule(this);

65 pluginManager.registerEvents(cauldronModule, this);

66

67 spawnerModule = new SpawnerModule();

68 pluginManager.registerEvents(spawnerModule, this);

69 }

70

71 @Override

72 public void onDisable()

73 {

74 chairModule.onDisable();

75 }

76

77 @Override

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

79 {

80 if(sender instanceof Player)

81 {

82 Player player = (Player) sender;

83

84 switch(label)

85 {

86 case "head":

87 return setItemAsHead(player, args);

88 case "skull":

89 return getSkullForName(player, args);

90 case "invsee":

91 return openInventoryForPlayer(player, args);

92 case "info":

93 return openInfoBook(player, args);

94 case "spawn":

95 return teleportToSpawn(player, args);

96 case "home":

97 return teleportToHome(player, args);

98 case "warp":

99 return teleportToWarppoint(player, args);

100 case "sethome":

101 return setHome(player, args);

102 case "setwarp":

103 return setWarppoint(player, args);

104 case "slime":

105 return ifSlimeChunk(player, args);

106 case "r":

107 return reload(player, args);

108 default:

109 return false;

110 }

111 }

112

113 return true;

114 }

115

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

117 {

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

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

120

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

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

123

124 if(player.getGameMode() == GameMode.SURVIVAL)

125 {

126 if(head != null)

127 {

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

129 }

130 }

131

132 return true;

133 }

134

135 @SuppressWarnings("deprecation")

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

137 {

138 if(!player.isOp())

139 {

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

141 return true;

142 }

143

144 if(args.length != 1)

145 {

146 return false;

147 }

148

149 final String name = args[0];

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

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

152 meta.setOwner(name);

153 skull.setItemMeta(meta);

154

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

156

157 return true;

158 }

159

160 private boolean openInventoryForPlayer(final Player player, final String[] args)

161 {

162 if(args.length == 0)

163 {

164 return false;

165 }

166

167 if(!player.isOp())

168 {

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

170 return true;

171 }

172

173 final Player target = Bukkit.getPlayer(args[0]);

174

175 if(target == null)

176 {

177 player.sendMessage(ChatColor.RED + "Player not found!");

178 return true;

179 }

180

181 player.openInventory(target.getInventory());

182

183 return true;

184 }

185

186 private boolean openInfoBook(final Player player, final String[] args)

187 {

188 final ItemStack book = new ItemStack(Material.WRITTEN_BOOK);

189 final BookMeta meta = (BookMeta) book.getItemMeta();

190 meta.setTitle("Info");

191 meta.setAuthor("Server");

192 meta.setPages(config.getInfoPages());

193 book.setItemMeta(meta);

194

195 player.openBook(book);

196

197 return true;

198 }

199

200 private boolean teleportToSpawn(final Player player, final String[] args)

201 {

202 final Location location = Bukkit.getWorld("world").getSpawnLocation();

203

204 if(Utils.travelTo(plugin, player, location))

205 {

206 player.sendMessage(ChatColor.GRAY + "You've been teleported to spawn.");

207 }

208

209 return true;

210 }

211

212 private boolean teleportToHome(final Player player, final String[] args)

213 {

214 final Location location = config.getHome(player);

215

216 if(location == null)

217 {

218 player.sendMessage(ChatColor.RED + "You've don't have a home point.");

219 return true;

220 }

221

222 if(Utils.travelTo(plugin, player, location))

223 {

224 player.sendMessage(ChatColor.GRAY + "You've been teleported to your home.");

225 }

226

227 return true;

228 }

229

230 private boolean teleportToWarppoint(final Player player, final String[] args)

231 {

232 if(args.length != 1)

233 {

234 return false;

235 }

236

237 final String name = args[0].toLowerCase();

238 final Location location = config.getWarp(name);

239

240 if(location == null)

241 {

242 player.sendMessage(ChatColor.RED + "Warppoint " + name + " doesn't exist!");

243 return true;

244 }

245

246 if(Utils.travelTo(plugin, player, location))

247 {

248 player.sendMessage(ChatColor.GRAY + "You've been teleported to warppoint " + name + ".");

249 }

250

251 return true;

252 }

253

254 private boolean setHome(final Player player, final String[] args)

255 {

256 try

257 {

258 config.setHome(player);

259 player.sendMessage(ChatColor.YELLOW + "Home point set.");

260 }

261 catch(Exception ex)

262 {

263 player.sendMessage(Constants.Messages.FAILED_TO_SAVE_CONFIG_FILE);

264 }

265

266 return true;

267 }

268

269 private boolean setWarppoint(final Player player, final String[] args)

270 {

271 if(args.length != 1)

272 {

273 return false;

274 }

275

276 final String name = args[0].toLowerCase();

277

278 if(!Utils.payFee(player, Material.COMPASS, 1))

279 {

280 player.sendMessage(ChatColor.RED + "The fee for creating a warppoint is 1 compass!");

281 return true;

282 }

283

284 try

285 {

286 if(!config.setWarp(name, player.getLocation()))

287 {

288 player.sendMessage(ChatColor.RED + "Warppoint " + name + " already exists!");

289 return true;

290 }

291

292 player.sendMessage(ChatColor.YELLOW + "Warppoint " + name + " set.");

293 }

294 catch(Exception ex)

295 {

296 player.sendMessage(Constants.Messages.FAILED_TO_SAVE_CONFIG_FILE);

297 }

298

299 return true;

300 }

301

302 private boolean ifSlimeChunk(final Player player, final String[] args)

303 {

304 boolean isSlimeChunk = player.getLocation().getChunk().isSlimeChunk();

305

306 if(isSlimeChunk)

307 {

308 player.sendMessage(ChatColor.YELLOW + "This is a slime chunk!");

309 return true;

310 }

311 else

312 {

313 player.sendMessage(ChatColor.RED + "This is not a slime chunk!");

314 return true;

315 }

316 }

317

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

319 {

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

321 return true;

322 }

323}