so://phie

poppy

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

blob: 0b728245fa29115aaad2333ad833f7688e74cef6 (9033 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;

29

30

31public class Main extends JavaPlugin

32{

33 private Plugin plugin;

34 private Config config;

35 private PluginManager pluginManager;

36

37 private CommonModule commonModule;

38 private DoubleDoorModule doubleDoorModule;

39 private ChairModule chairModule;

40 private AutoWorkbenchModule autoWorkbenchModule;

41 private LeavesDecayModule leavesDecayModule;

42 private CauldronModule cauldronModule;

43 private SpawnerModule spawnerModule;

44 private HopperSorterModule hopperSorterModule;

45 private AutoPlacerModule autoPlacerModule;

46 private AutoBreakerModule autoBreakerModule;

47

48 @Override

49 public void onEnable()

50 {

51 plugin = this;

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

53

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

87 @Override

88 public void onDisable()

89 {

90 chairModule.onDisable();

91 }

92

93 @Override

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

95 {

96 if(sender instanceof Player)

97 {

98 Player player = (Player) sender;

99

100 switch(label)

101 {

102 case "head":

103 return setItemAsHead(player, args);

104 case "skull":

105 return getSkullForName(player, args);

106 case "invsee":

107 return openInventoryForPlayer(player, args);

108 case "info":

109 return openInfoBook(player, args);

110 case "spawn":

111 return teleportToSpawn(player, args);

112 case "home":

113 return teleportToHome(player, args);

114 case "warp":

115 return teleportToWarppoint(player, args);

116 case "sethome":

117 return setHome(player, args);

118 case "setwarp":

119 return setWarppoint(player, args);

120 case "slime":

121 return ifSlimeChunk(player, args);

122 case "r":

123 return reload(player, args);

124 case "up":

125 return blockBelow(player, args);

126 default:

127 return false;

128 }

129 }

130

131 return true;

132 }

133

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

135 {

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

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

138

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

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

141

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

143 {

144 if(head != null)

145 {

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

147 }

148 }

149

150 return true;

151 }

152

153 @SuppressWarnings("deprecation")

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

155 {

156 if(!player.isOp())

157 {

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

159 return true;

160 }

161

162 if(args.length != 1)

163 {

164 return false;

165 }

166

167 final String name = args[0];

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

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

170 meta.setOwner(name);

171 skull.setItemMeta(meta);

172

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

174

175 return true;

176 }

177

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

179 {

180 if(args.length == 0)

181 {

182 return false;

183 }

184

185 if(!player.isOp())

186 {

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

188 return true;

189 }

190

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

192

193 if(target == null)

194 {

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

196 return true;

197 }

198

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

200

201 return true;

202 }

203

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

205 {

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

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

208 meta.setTitle("Info");

209 meta.setAuthor("Server");

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

211 book.setItemMeta(meta);

212

213 player.openBook(book);

214

215 return true;

216 }

217

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

219 {

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

221

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

223 {

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

225 }

226

227 return true;

228 }

229

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

231 {

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

233

234 if(location == null)

235 {

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

237 return true;

238 }

239

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

241 {

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

243 }

244

245 return true;

246 }

247

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

249 {

250 if(args.length != 1)

251 {

252 return false;

253 }

254

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

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

257

258 if(location == null)

259 {

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

261 return true;

262 }

263

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

265 {

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

267 }

268

269 return true;

270 }

271

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

273 {

274 try

275 {

276 config.setHome(player);

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

278 }

279 catch(Exception ex)

280 {

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

282 }

283

284 return true;

285 }

286

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

288 {

289 if(args.length != 1)

290 {

291 return false;

292 }

293

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

295

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

297 {

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

299 return true;

300 }

301

302 try

303 {

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

305 {

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

307 return true;

308 }

309

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

311 }

312 catch(Exception ex)

313 {

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

315 }

316

317 return true;

318 }

319

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

321 {

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

323

324 if(isSlimeChunk)

325 {

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

327 return true;

328 }

329 else

330 {

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

332 return true;

333 }

334 }

335

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

337 {

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

339 return true;

340 }

341

342 private boolean blockBelow(final Player player, final String[] args)

343 {

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

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

346

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

348 {

349 return false;

350 }

351

352 if(!player.isOp())

353 {

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

355 return true;

356 }

357

358 blockBelow.setType(Material.GLASS);

359

360 return true;

361 }

362}