so://phie

poppy

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

blob: d49aff4023ec6b836214a05cd1bca25e5e63be6c (9337 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.block.Block;

9import org.bukkit.command.Command;

10import org.bukkit.command.CommandSender;

11import org.bukkit.entity.Player;

12import org.bukkit.inventory.ItemStack;

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

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

15import org.bukkit.plugin.Plugin;

16import org.bukkit.plugin.PluginManager;

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

18

19import poppy.modules.AutoBreakerModule;

20import poppy.modules.AutoPlacerModule;

21import poppy.modules.AutoWorkbenchModule;

22import poppy.modules.CauldronModule;

23import poppy.modules.ChairModule;

24import poppy.modules.DoubleDoorModule;

25import poppy.modules.HopperSorterModule;

26import poppy.modules.CommonModule;

27import poppy.modules.LeavesDecayModule;

28import poppy.modules.SpawnerModule;

29import poppy.modules.PlayerMountModule;

30

31

32public class Main extends JavaPlugin

33{

34 private Plugin plugin;

35 private Config config;

36 private PluginManager pluginManager;

37

38 private CommonModule commonModule;

39 private DoubleDoorModule doubleDoorModule;

40 private ChairModule chairModule;

41 private AutoWorkbenchModule autoWorkbenchModule;

42 private LeavesDecayModule leavesDecayModule;

43 private CauldronModule cauldronModule;

44 private SpawnerModule spawnerModule;

45 private HopperSorterModule hopperSorterModule;

46 private AutoPlacerModule autoPlacerModule;

47 private AutoBreakerModule autoBreakerModule;

48 private PlayerMountModule playerMountModule;

49

50 @Override

51 public void onEnable()

52 {

53 plugin = this;

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

55

56 pluginManager = Bukkit.getPluginManager();

57

58 commonModule = new CommonModule();

59 pluginManager.registerEvents(commonModule, this);

60

61 doubleDoorModule = new DoubleDoorModule();

62 pluginManager.registerEvents(doubleDoorModule, this);

63

64 chairModule = new ChairModule();

65 pluginManager.registerEvents(chairModule, this);

66

67 autoWorkbenchModule = new AutoWorkbenchModule();

68 pluginManager.registerEvents(autoWorkbenchModule, this);

69

70 leavesDecayModule = new LeavesDecayModule(this);

71 pluginManager.registerEvents(leavesDecayModule, this);

72

73 cauldronModule = new CauldronModule(this);

74 pluginManager.registerEvents(cauldronModule, this);

75

76 spawnerModule = new SpawnerModule();

77 pluginManager.registerEvents(spawnerModule, this);

78

79 hopperSorterModule = new HopperSorterModule();

80 pluginManager.registerEvents(hopperSorterModule, this);

81

82 autoPlacerModule = new AutoPlacerModule(this);

83 pluginManager.registerEvents(autoPlacerModule, this);

84

85 autoBreakerModule = new AutoBreakerModule(this);

86 pluginManager.registerEvents(autoBreakerModule, this);

87

88 playerMountModule = new PlayerMountModule();

89 pluginManager.registerEvents(playerMountModule, this);

90 }

91

92 @Override

93 public void onDisable()

94 {

95 chairModule.onDisable();

96 }

97

98 @Override

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

100 {

101 if(sender instanceof Player)

102 {

103 Player player = (Player) sender;

104

105 switch(label)

106 {

107 case "head":

108 return setItemAsHead(player, args);

109 case "skull":

110 return getSkullForName(player, args);

111 case "invsee":

112 return openInventoryForPlayer(player, args);

113 case "info":

114 return openInfoBook(player, args);

115 case "spawn":

116 return teleportToSpawn(player, args);

117 case "home":

118 return teleportToHome(player, args);

119 case "warp":

120 return teleportToWarppoint(player, args);

121 case "sethome":

122 return setHome(player, args);

123 case "setwarp":

124 return setWarppoint(player, args);

125 case "slime":

126 return isSlimeChunk(player, args);

127 case "r":

128 return doReload(player, args);

129 case "up":

130 return placeBlockBelow(player, args);

131 default:

132 return false;

133 }

134 }

135

136 return true;

137 }

138

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

140 {

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

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

143

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

145 {

146 player.eject();

147 }

148

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

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

151

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

153 {

154 if(head != null)

155 {

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

157 }

158 }

159

160 return true;

161 }

162

163 @SuppressWarnings("deprecation")

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

165 {

166 if(!player.isOp())

167 {

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

169 return true;

170 }

171

172 if(args.length != 1)

173 {

174 return false;

175 }

176

177 final String name = args[0];

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

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

180 meta.setOwner(name);

181 skull.setItemMeta(meta);

182

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

184

185 return true;

186 }

187

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

189 {

190 if(args.length == 0)

191 {

192 return false;

193 }

194

195 if(!player.isOp())

196 {

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

198 return true;

199 }

200

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

202

203 if(target == null)

204 {

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

206 return true;

207 }

208

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

210

211 return true;

212 }

213

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

215 {

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

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

218 meta.setTitle("Info");

219 meta.setAuthor("Server");

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

221 book.setItemMeta(meta);

222

223 player.openBook(book);

224

225 return true;

226 }

227

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

229 {

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

231

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

233 {

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

235 }

236

237 return true;

238 }

239

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

241 {

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

243

244 if(location == null)

245 {

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

247 return true;

248 }

249

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

251 {

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

253 }

254

255 return true;

256 }

257

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

259 {

260 if(args.length != 1)

261 {

262 return false;

263 }

264

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

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

267

268 if(location == null)

269 {

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

271 return true;

272 }

273

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

275 {

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

277 }

278

279 return true;

280 }

281

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

283 {

284 try

285 {

286 config.setHome(player);

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

288 }

289 catch(Exception ex)

290 {

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

292 }

293

294 return true;

295 }

296

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

298 {

299 if(args.length != 1)

300 {

301 return false;

302 }

303

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

305

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

307 {

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

309 return true;

310 }

311

312 try

313 {

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

315 {

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

317 return true;

318 }

319

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

321 }

322 catch(Exception ex)

323 {

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

325 }

326

327 return true;

328 }

329

330 private boolean isSlimeChunk(final Player player, final String[] args)

331 {

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

333

334 if(isSlimeChunk)

335 {

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

337 return true;

338 }

339 else

340 {

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

342 return true;

343 }

344 }

345

346 private boolean doReload(final Player player, final String[] args)

347 {

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

349 return true;

350 }

351

352 private boolean placeBlockBelow(final Player player, final String[] args)

353 {

354 Location playerLocation = player.getLocation().clone();

355 Block blockBelow = playerLocation.add(0, -1, 0).getBlock();

356

357 if(!Utils.isAir(blockBelow.getType()))

358 {

359 return false;

360 }

361

362 if(!player.isOp())

363 {

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

365 return true;

366 }

367

368 blockBelow.setType(Material.GLASS);

369

370 return true;

371 }

372}