so://phie

poppy

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

blob: 958b44fe27f40dd50bba42170aa34008cc69f19d (7244 bytes)[doc][blame][raw]

1package poppy;

2

3import java.io.File;

4import java.io.IOException;

5import java.net.BindException;

6import java.net.ServerSocket;

7import java.net.Socket;

8

9import org.bukkit.Bukkit;

10import org.bukkit.ChatColor;

11import org.bukkit.GameMode;

12import org.bukkit.Location;

13import org.bukkit.Material;

14import org.bukkit.World;

15import org.bukkit.WorldCreator;

16import org.bukkit.WorldType;

17import org.bukkit.command.Command;

18import org.bukkit.command.CommandSender;

19import org.bukkit.entity.Player;

20import org.bukkit.inventory.ItemStack;

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

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

23import org.bukkit.material.Tree;

24import org.bukkit.plugin.Plugin;

25import org.bukkit.plugin.PluginManager;

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

27

28import poppy.Constants;

29import poppy.Config;

30import poppy.Utils;

31import poppy.modules.AutoWorkbenchModule;

32import poppy.modules.ChairModule;

33import poppy.modules.DoubleDoorModule;

34import poppy.modules.CommonModule;

35import poppy.modules.LeavesDecayModule;

36

37

38public class Main extends JavaPlugin

39{

40 private Plugin plugin;

41 private Config config;

42 private PluginManager pluginManager;

43

44 private DoubleDoorModule doubleDoorModule;

45 private ChairModule chairModule;

46 private AutoWorkbenchModule autoWorkbenchModule;

47 private LeavesDecayModule leavesDecayModule;

48 private CommonModule commonModule;

49

50 @Override

51 public void onEnable()

52 {

53 plugin = this;

54 config = new Config("config/minecraft-hub.yml");

55

56 pluginManager = Bukkit.getPluginManager();

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 commonModule = new CommonModule();

71 pluginManager.registerEvents(commonModule, this);

72 }

73

74 @Override

75 public void onDisable()

76 {

77 chairModule.onDisable();

78 }

79

80 @Override

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

82 {

83 if(sender instanceof Player)

84 {

85 Player player = (Player) sender;

86

87 switch(label)

88 {

89 case "head":

90 return setItemAsHead(player, args);

91 case "skull":

92 return getSkullForName(player, args);

93 case "invsee":

94 return openInventoryForPlayer(player, args);

95 case "info":

96 return openInfoBook(player, args);

97 case "spawn":

98 return teleportToSpawn(player, args);

99 case "home":

100 return teleportToHome(player, args);

101 case "warp":

102 return teleportToWarppoint(player, args);

103 case "sethome":

104 return setHome(player, args);

105 case "setwarp":

106 return addWarppoint(player, args);

107 default:

108 return false;

109 }

110 }

111

112 return true;

113 }

114

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

116 {

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

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

119

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

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

122

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

124 {

125 if(head != null)

126 {

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

128 }

129 }

130

131 return true;

132 }

133

134 @SuppressWarnings("deprecation")

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

136 {

137 if(!player.isOp())

138 {

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

140 return true;

141 }

142

143 if(args.length != 1)

144 {

145 return false;

146 }

147

148 final String name = args[0];

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

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

151 meta.setOwner(name);

152 skull.setItemMeta(meta);

153

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

155

156 return true;

157 }

158

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

160 {

161 if(args.length == 0)

162 {

163 return false;

164 }

165

166 if(!player.isOp())

167 {

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

169 return true;

170 }

171

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

173

174 if(target == null)

175 {

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

177 return true;

178 }

179

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

181

182 return true;

183 }

184

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

186 {

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

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

189 meta.setTitle("Info");

190 meta.setAuthor("Server");

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

192 book.setItemMeta(meta);

193

194 player.openBook(book);

195

196 return true;

197 }

198

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

200 {

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

202

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

204 {

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

206 }

207

208 return true;

209 }

210

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

212 {

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

214

215 if(location == null)

216 {

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

218 return true;

219 }

220

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

222 {

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

224 }

225

226 return true;

227 }

228

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

230 {

231 if(args.length != 1)

232 {

233 return false;

234 }

235

236 final String name = args[0];

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

238

239 if(location == null)

240 {

241 player.sendMessage(ChatColor.RED + "Warp point " + name + " doesn't exist!");

242 return true;

243 }

244

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

246 {

247 player.sendMessage(ChatColor.GRAY + "You've been teleported to warp point " + name + ".");

248 }

249

250 return true;

251 }

252

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

254 {

255 try

256 {

257 config.setHome(player);

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

259 }

260 catch(Exception ex)

261 {

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

263 }

264

265 return true;

266 }

267

268 private boolean addWarppoint(final Player player, final String[] args)

269 {

270 if(args.length != 1)

271 {

272 return false;

273 }

274

275 final String name = args[0];

276

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

278 {

279 player.sendMessage(ChatColor.RED + "The fee for creating a warp point is 1 compass!");

280 return true;

281 }

282

283 try

284 {

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

286 {

287 player.sendMessage(ChatColor.RED + "Warp point " + name + " already exists!");

288 return true;

289 }

290

291 player.sendMessage(ChatColor.YELLOW + "Warp point " + name + " set.");

292 }

293 catch(Exception ex)

294 {

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

296 }

297

298 return true;

299 }

300

301}