so://phie

poppy

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

blob: 7da4cf63f967c78699ee36068ec85fd215cdc530 (6632 bytes)[doc][blame][raw]

1package de.typable.minecrafthub;

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.Material;

13import org.bukkit.World;

14import org.bukkit.WorldCreator;

15import org.bukkit.WorldType;

16import org.bukkit.command.Command;

17import org.bukkit.command.CommandSender;

18import org.bukkit.entity.Player;

19import org.bukkit.inventory.ItemStack;

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

21import org.bukkit.plugin.Plugin;

22import org.bukkit.plugin.PluginManager;

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

24import org.bukkit.scheduler.BukkitTask;

25

26import de.typable.minecrafthub.constant.DefaultConstants;

27import de.typable.minecrafthub.event.AutoWorkbenchListener;

28import de.typable.minecrafthub.event.ChairListener;

29import de.typable.minecrafthub.event.DoubleDoorListener;

30import de.typable.minecrafthub.event.EventListener;

31import de.typable.minecrafthub.event.LeavesDecayListener;

32import de.typable.minecrafthub.event.StandbyListener;

33import de.typable.minecrafthub.game.kit.KitGame;

34import de.typable.minecrafthub.util.Util;

35

36

37public class Main extends JavaPlugin

38{

39 private PluginManager pluginManager;

40 private StandbyListener standbyListener;

41 private DoubleDoorListener doubleDoorListener;

42 private ChairListener chairListener;

43 private AutoWorkbenchListener autoWorkbenchListener;

44 private LeavesDecayListener leavesDecayListener;

45 private EventListener eventListener;

46

47 private KitGame kitGame;

48

49 private Plugin plugin;

50 private BukkitTask task;

51

52 @Override

53 public void onEnable()

54 {

55 plugin = this;

56

57 pluginManager = Bukkit.getPluginManager();

58

59 standbyListener = new StandbyListener(this);

60 pluginManager.registerEvents(standbyListener, this);

61

62 doubleDoorListener = new DoubleDoorListener();

63 pluginManager.registerEvents(doubleDoorListener, this);

64

65 chairListener = new ChairListener();

66 pluginManager.registerEvents(chairListener, this);

67

68 autoWorkbenchListener = new AutoWorkbenchListener();

69 pluginManager.registerEvents(autoWorkbenchListener, this);

70

71 leavesDecayListener = new LeavesDecayListener(this);

72 pluginManager.registerEvents(leavesDecayListener, this);

73

74 eventListener = new EventListener();

75 pluginManager.registerEvents(eventListener, this);

76

77 kitGame = new KitGame();

78 this.getCommand("kit").setExecutor(kitGame);

79 pluginManager.registerEvents(kitGame, this);

80

81 task = Bukkit.getScheduler().runTaskAsynchronously(this, new Runnable()

82 {

83 @Override

84 public void run()

85 {

86 try(ServerSocket serverSocket = new ServerSocket(25560))

87 {

88 while(!serverSocket.isClosed())

89 {

90 Socket socket = serverSocket.accept();

91

92 Util.sendCountdown(plugin, "Server restarts in", 5, new Runnable()

93 {

94 @Override

95 public void run()

96 {

97 for(Player target : Bukkit.getOnlinePlayers())

98 {

99 target.kickPlayer("Server restarting...");

100 }

101

102 Bukkit.getServer().shutdown();

103 }

104 });

105

106 socket.close();

107 }

108 }

109 catch(BindException ex)

110 {

111 // ignore

112 }

113 catch(IOException ex)

114 {

115 ex.printStackTrace();

116 }

117 }

118 });

119

120 new WorldCreator("creative")

121 .type(WorldType.FLAT)

122 .generateStructures(false)

123 .createWorld();

124 }

125

126 @Override

127 public void onDisable()

128 {

129 if(task != null && task.isCancelled())

130 {

131 task.cancel();

132 }

133

134 chairListener.onDisable();

135 }

136

137 @SuppressWarnings("deprecation")

138 @Override

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

140 {

141 if(sender instanceof Player)

142 {

143 Player player = (Player) sender;

144

145 if(label.equals("shutdown"))

146 {

147 if(!player.isOp())

148 {

149 player.sendMessage(DefaultConstants.Messages.NOT_ENOUGH_PERMISSION);

150 return true;

151 }

152

153 String path = new File(".").getAbsolutePath();

154

155 File file = new File(path + "/.shutdown");

156

157 try

158 {

159 file.createNewFile();

160

161 Util.sendCountdown(this, "Server shuts down in", 5, new Runnable()

162 {

163 @Override

164 public void run()

165 {

166 for(Player target : Bukkit.getOnlinePlayers())

167 {

168 target.kickPlayer("Server stopped");

169 }

170

171 Bukkit.getServer().shutdown();

172 }

173 });

174 }

175 catch(IOException ex)

176 {

177 ex.printStackTrace();

178 }

179 }

180

181 if(label.equals("head"))

182 {

183 ItemStack handitem = player.getInventory().getItemInMainHand();

184 ItemStack headitem = player.getInventory().getHelmet();

185

186 player.getInventory().setHelmet(handitem);

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

188

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

190 {

191 if(headitem != null)

192 {

193 player.getInventory().addItem(headitem);

194 }

195 }

196 }

197

198 if(label.equals("skull"))

199 {

200 if(!player.isOp())

201 {

202 player.sendMessage(DefaultConstants.Messages.NOT_ENOUGH_PERMISSION);

203 return true;

204 }

205

206 if(args.length != 1)

207 {

208 return false;

209 }

210

211 ItemStack skull = new ItemStack(Material.PLAYER_HEAD);

212 SkullMeta meta = (SkullMeta) skull.getItemMeta();

213 meta.setOwner(args[0]);

214 skull.setItemMeta(meta);

215

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

217 }

218

219 if(label.equals("standby"))

220 {

221 if(!player.isOp())

222 {

223 player.sendMessage(DefaultConstants.Messages.NOT_ENOUGH_PERMISSION);

224 return true;

225 }

226

227 if(args.length != 1)

228 {

229 return false;

230 }

231

232 String argument = args[0];

233

234 if(!argument.equals("true") && !argument.equals("false"))

235 {

236 return false;

237 }

238

239 boolean enabled = argument.equals("true");

240 standbyListener.setEnabled(enabled);

241

242 player.sendMessage(ChatColor.GRAY + "Standby mode is now " + (enabled ? "enabled" : "disabled"));

243 }

244

245 if(label.equals("world"))

246 {

247 if(!player.isOp())

248 {

249 player.sendMessage(DefaultConstants.Messages.NOT_ENOUGH_PERMISSION);

250 return true;

251 }

252

253 if(args.length != 1)

254 {

255 return false;

256 }

257

258 World world = Bukkit.getWorld(args[0]);

259

260 if(world == null)

261 {

262 player.sendMessage(DefaultConstants.Messages.WORLD_NOT_EXIST);

263 return true;

264 }

265

266 player.teleport(world.getSpawnLocation());

267 }

268 }

269

270 return true;

271 }

272}