so://phie

poppy

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

blob: 02466fd6b3688a6e31f361a0b3161c0377a8480d (8494 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.AutoBreakerModule;

19import poppy.modules.AutoPlacerModule;

20import poppy.modules.AutoWorkbenchModule;

21import poppy.modules.CauldronModule;

22import poppy.modules.ChairModule;

23import poppy.modules.DoubleDoorModule;

24import poppy.modules.HopperSorterModule;

25import poppy.modules.CommonModule;

26import poppy.modules.LeavesDecayModule;

27import poppy.modules.SpawnerModule;

28

29

30public class Main extends JavaPlugin

31{

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

47 @Override

48 public void onEnable()

49 {

50 plugin = this;

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

52

53 pluginManager = Bukkit.getPluginManager();

54

55 commonModule = new CommonModule();

56 pluginManager.registerEvents(commonModule, this);

57

58 doubleDoorModule = new DoubleDoorModule();

59 pluginManager.registerEvents(doubleDoorModule, this);

60

61 chairModule = new ChairModule();

62 pluginManager.registerEvents(chairModule, this);

63

64 autoWorkbenchModule = new AutoWorkbenchModule();

65 pluginManager.registerEvents(autoWorkbenchModule, this);

66

67 leavesDecayModule = new LeavesDecayModule(this);

68 pluginManager.registerEvents(leavesDecayModule, this);

69

70 cauldronModule = new CauldronModule(this);

71 pluginManager.registerEvents(cauldronModule, this);

72

73 spawnerModule = new SpawnerModule();

74 pluginManager.registerEvents(spawnerModule, this);

75

76 hopperSorterModule = new HopperSorterModule();

77 pluginManager.registerEvents(hopperSorterModule, this);

78

79 autoPlacerModule = new AutoPlacerModule(this);

80 pluginManager.registerEvents(autoPlacerModule, this);

81

82 autoBreakerModule = new AutoBreakerModule(this);

83 pluginManager.registerEvents(autoBreakerModule, this);

84 }

85

86 @Override

87 public void onDisable()

88 {

89 chairModule.onDisable();

90 }

91

92 @Override

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

94 {

95 if(sender instanceof Player)

96 {

97 Player player = (Player) sender;

98

99 switch(label)

100 {

101 case "head":

102 return setItemAsHead(player, args);

103 case "skull":

104 return getSkullForName(player, args);

105 case "invsee":

106 return openInventoryForPlayer(player, args);

107 case "info":

108 return openInfoBook(player, args);

109 case "spawn":

110 return teleportToSpawn(player, args);

111 case "home":

112 return teleportToHome(player, args);

113 case "warp":

114 return teleportToWarppoint(player, args);

115 case "sethome":

116 return setHome(player, args);

117 case "setwarp":

118 return setWarppoint(player, args);

119 case "slime":

120 return ifSlimeChunk(player, args);

121 case "r":

122 return reload(player, args);

123 default:

124 return false;

125 }

126 }

127

128 return true;

129 }

130

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

132 {

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

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

135

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

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

138

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

140 {

141 if(head != null)

142 {

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

144 }

145 }

146

147 return true;

148 }

149

150 @SuppressWarnings("deprecation")

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

152 {

153 if(!player.isOp())

154 {

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

156 return true;

157 }

158

159 if(args.length != 1)

160 {

161 return false;

162 }

163

164 final String name = args[0];

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

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

167 meta.setOwner(name);

168 skull.setItemMeta(meta);

169

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

171

172 return true;

173 }

174

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

176 {

177 if(args.length == 0)

178 {

179 return false;

180 }

181

182 if(!player.isOp())

183 {

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

185 return true;

186 }

187

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

189

190 if(target == null)

191 {

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

193 return true;

194 }

195

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

197

198 return true;

199 }

200

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

202 {

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

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

205 meta.setTitle("Info");

206 meta.setAuthor("Server");

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

208 book.setItemMeta(meta);

209

210 player.openBook(book);

211

212 return true;

213 }

214

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

216 {

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

218

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

220 {

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

222 }

223

224 return true;

225 }

226

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

228 {

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

230

231 if(location == null)

232 {

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

234 return true;

235 }

236

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

238 {

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

240 }

241

242 return true;

243 }

244

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

246 {

247 if(args.length != 1)

248 {

249 return false;

250 }

251

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

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

254

255 if(location == null)

256 {

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

258 return true;

259 }

260

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

262 {

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

264 }

265

266 return true;

267 }

268

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

270 {

271 try

272 {

273 config.setHome(player);

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

275 }

276 catch(Exception ex)

277 {

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

279 }

280

281 return true;

282 }

283

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

285 {

286 if(args.length != 1)

287 {

288 return false;

289 }

290

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

292

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

294 {

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

296 return true;

297 }

298

299 try

300 {

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

302 {

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

304 return true;

305 }

306

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

308 }

309 catch(Exception ex)

310 {

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

312 }

313

314 return true;

315 }

316

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

318 {

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

320

321 if(isSlimeChunk)

322 {

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

324 return true;

325 }

326 else

327 {

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

329 return true;

330 }

331 }

332

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

334 {

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

336 return true;

337 }

338}