so://phie

poppy

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

blob: 852625fa8eddd4e1d83e7337833b9e4db5a20d47 (5502 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.StandbyListener;

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

30

31

32public class Main extends JavaPlugin

33{

34 private PluginManager pluginManager;

35 private StandbyListener standbyListener;

36 private DoubleDoorListener doubleDoorListener;

37 private ChairListener chairListener;

38 private AutoWorkbenchListener autoWorkbenchListener;

39 private EventListener eventListener;

40

41 private Plugin plugin;

42 private BukkitTask task;

43

44 @Override

45 public void onEnable()

46 {

47 plugin = this;

48

49 pluginManager = Bukkit.getPluginManager();

50

51 standbyListener = new StandbyListener(this);

52 pluginManager.registerEvents(standbyListener, this);

53

54 doubleDoorListener = new DoubleDoorListener();

55 pluginManager.registerEvents(doubleDoorListener, this);

56

57 chairListener = new ChairListener();

58 pluginManager.registerEvents(chairListener, this);

59

60 autoWorkbenchListener = new AutoWorkbenchListener();

61 pluginManager.registerEvents(autoWorkbenchListener, this);

62

63 eventListener = new EventListener();

64 pluginManager.registerEvents(eventListener, this);

65

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

67 {

68 @Override

69 public void run()

70 {

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

72 {

73 while(!serverSocket.isClosed())

74 {

75 Socket socket = serverSocket.accept();

76

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

78 {

79 @Override

80 public void run()

81 {

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

83 {

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

85 }

86

87 Bukkit.getServer().shutdown();

88 }

89 });

90

91 socket.close();

92 }

93 }

94 catch(BindException ex)

95 {

96 // ignore

97 }

98 catch(IOException ex)

99 {

100 ex.printStackTrace();

101 }

102 }

103 });

104 }

105

106 @Override

107 public void onDisable()

108 {

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

110 {

111 task.cancel();

112 }

113

114 chairListener.onDisable();

115 }

116

117 @SuppressWarnings("deprecation")

118 @Override

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

120 {

121 if(sender instanceof Player)

122 {

123 Player player = (Player) sender;

124

125 if(label.equals("shutdown")) {

126

127 if(!player.isOp())

128 {

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

130 return true;

131 }

132

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

134

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

136

137 try

138 {

139 file.createNewFile();

140

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

142 {

143 @Override

144 public void run()

145 {

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

147 {

148 target.kickPlayer("Server stopped");

149 }

150

151 Bukkit.getServer().shutdown();

152 }

153 });

154 }

155 catch(IOException ex)

156 {

157 ex.printStackTrace();

158 }

159 }

160

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

162 {

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

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

165

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

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

168

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

170 {

171 if(headitem != null)

172 {

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

174 }

175 }

176 }

177

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

179 {

180 if(!player.isOp())

181 {

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

183 return true;

184 }

185

186 if(args.length != 1)

187 {

188 return false;

189 }

190

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

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

193 meta.setOwner(args[0]);

194 skull.setItemMeta(meta);

195

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

197 }

198

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

200 {

201 if(!player.isOp())

202 {

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

204 return true;

205 }

206

207 if(args.length != 1)

208 {

209 return false;

210 }

211

212 String argument = args[0];

213

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

215 {

216 return false;

217 }

218

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

220 standbyListener.setEnabled(enabled);

221

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

223 }

224 }

225

226 return true;

227 }

228}