so://phie

poppy

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

blob: 952977adae6766611c255677b06e96dc17443c85 (5933 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.command.Command;

14import org.bukkit.command.CommandSender;

15import org.bukkit.entity.Player;

16import org.bukkit.inventory.ItemStack;

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

18import org.bukkit.plugin.Plugin;

19import org.bukkit.plugin.PluginManager;

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

21import org.bukkit.scheduler.BukkitTask;

22

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

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

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

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

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

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

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

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

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

32

33

34public class Main extends JavaPlugin

35{

36 private PluginManager pluginManager;

37 private StandbyListener standbyListener;

38 private DoubleDoorListener doubleDoorListener;

39 private ChairListener chairListener;

40 private AutoWorkbenchListener autoWorkbenchListener;

41 private LeavesDecayListener leavesDecayListener;

42 private EventListener eventListener;

43

44 private KitGame kitGame;

45

46 private Plugin plugin;

47 private BukkitTask task;

48

49 @Override

50 public void onEnable()

51 {

52 plugin = this;

53

54 pluginManager = Bukkit.getPluginManager();

55

56 standbyListener = new StandbyListener(this);

57 pluginManager.registerEvents(standbyListener, this);

58

59 doubleDoorListener = new DoubleDoorListener();

60 pluginManager.registerEvents(doubleDoorListener, this);

61

62 chairListener = new ChairListener();

63 pluginManager.registerEvents(chairListener, this);

64

65 autoWorkbenchListener = new AutoWorkbenchListener();

66 pluginManager.registerEvents(autoWorkbenchListener, this);

67

68 leavesDecayListener = new LeavesDecayListener(this);

69 pluginManager.registerEvents(leavesDecayListener, this);

70

71 eventListener = new EventListener();

72 pluginManager.registerEvents(eventListener, this);

73

74 kitGame = new KitGame();

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

76 pluginManager.registerEvents(kitGame, this);

77

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

79 {

80 @Override

81 public void run()

82 {

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

84 {

85 while(!serverSocket.isClosed())

86 {

87 Socket socket = serverSocket.accept();

88

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

90 {

91 @Override

92 public void run()

93 {

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

95 {

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

97 }

98

99 Bukkit.getServer().shutdown();

100 }

101 });

102

103 socket.close();

104 }

105 }

106 catch(BindException ex)

107 {

108 // ignore

109 }

110 catch(IOException ex)

111 {

112 ex.printStackTrace();

113 }

114 }

115 });

116 }

117

118 @Override

119 public void onDisable()

120 {

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

122 {

123 task.cancel();

124 }

125

126 chairListener.onDisable();

127 }

128

129 @SuppressWarnings("deprecation")

130 @Override

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

132 {

133 if(sender instanceof Player)

134 {

135 Player player = (Player) sender;

136

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

138 {

139 if(!player.isOp())

140 {

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

142 return true;

143 }

144

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

146

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

148

149 try

150 {

151 file.createNewFile();

152

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

154 {

155 @Override

156 public void run()

157 {

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

159 {

160 target.kickPlayer("Server stopped");

161 }

162

163 Bukkit.getServer().shutdown();

164 }

165 });

166 }

167 catch(IOException ex)

168 {

169 ex.printStackTrace();

170 }

171 }

172

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

174 {

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

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

177

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

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

180

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

182 {

183 if(headitem != null)

184 {

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

186 }

187 }

188 }

189

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

191 {

192 if(!player.isOp())

193 {

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

195 return true;

196 }

197

198 if(args.length != 1)

199 {

200 return false;

201 }

202

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

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

205 meta.setOwner(args[0]);

206 skull.setItemMeta(meta);

207

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

209 }

210

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

212 {

213 if(!player.isOp())

214 {

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

216 return true;

217 }

218

219 if(args.length != 1)

220 {

221 return false;

222 }

223

224 String argument = args[0];

225

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

227 {

228 return false;

229 }

230

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

232 standbyListener.setEnabled(enabled);

233

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

235 }

236 }

237

238 return true;

239 }

240}