so://phie

poppy

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

blob: 2dc8675d3b6b35c6dd9b32889b6c7a0639d68ce2 (5399 bytes)[doc][blame][raw]

1package de.typable.minecrafthub;

2

3import java.io.File;

4import java.io.IOException;

5import java.net.ServerSocket;

6import java.net.Socket;

7

8import org.bukkit.Bukkit;

9import org.bukkit.ChatColor;

10import org.bukkit.GameMode;

11import org.bukkit.Material;

12import org.bukkit.command.Command;

13import org.bukkit.command.CommandSender;

14import org.bukkit.entity.Player;

15import org.bukkit.inventory.ItemStack;

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

17import org.bukkit.plugin.Plugin;

18import org.bukkit.plugin.PluginManager;

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

20

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

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

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

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

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

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

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

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

29

30

31public class Main extends JavaPlugin

32{

33 private PluginManager pluginManager;

34 private StandbyListener standbyListener;

35 private DoubleDoorListener doubleDoorListener;

36 private ChairListener chairListener;

37 private AutoWorkbenchListener autoWorkbenchListener;

38 private ChestLockListener chestLockListener;

39 private EventListener eventListener;

40

41 private Plugin plugin;

42

43 @Override

44 public void onEnable()

45 {

46 plugin = this;

47

48 pluginManager = Bukkit.getPluginManager();

49

50 standbyListener = new StandbyListener(this);

51 pluginManager.registerEvents(standbyListener, this);

52

53 doubleDoorListener = new DoubleDoorListener();

54 pluginManager.registerEvents(doubleDoorListener, this);

55

56 chairListener = new ChairListener();

57 pluginManager.registerEvents(chairListener, this);

58

59 autoWorkbenchListener = new AutoWorkbenchListener();

60 pluginManager.registerEvents(autoWorkbenchListener, this);

61

62 chestLockListener = new ChestLockListener();

63 pluginManager.registerEvents(chestLockListener, this);

64

65 eventListener = new EventListener();

66 pluginManager.registerEvents(eventListener, this);

67

68 Bukkit.getScheduler().runTaskAsynchronously(this, new Runnable()

69 {

70 @Override

71 public void run()

72 {

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

74 {

75 while(!serverSocket.isClosed())

76 {

77 Socket socket = serverSocket.accept();

78

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

80 {

81 @Override

82 public void run()

83 {

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

85 {

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

87 }

88

89 Bukkit.getServer().shutdown();

90 }

91 });

92

93 socket.close();

94 }

95 }

96 catch(IOException ex)

97 {

98 ex.printStackTrace();

99 }

100 }

101 });

102 }

103

104 @SuppressWarnings("deprecation")

105 @Override

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

107 {

108 if(sender instanceof Player)

109 {

110 Player player = (Player) sender;

111

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

113

114 if(!player.isOp())

115 {

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

117 return true;

118 }

119

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

121

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

123

124 try

125 {

126 file.createNewFile();

127

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

129 {

130 @Override

131 public void run()

132 {

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

134 {

135 target.kickPlayer("Server stopped");

136 }

137

138 Bukkit.getServer().shutdown();

139 }

140 });

141 }

142 catch(IOException ex)

143 {

144 ex.printStackTrace();

145 }

146 }

147

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

149 {

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

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

152

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

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

155

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

157 {

158 if(headitem != null)

159 {

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

161 }

162 }

163 }

164

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

166 {

167 if(!player.isOp())

168 {

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

170 return true;

171 }

172

173 if(args.length != 1)

174 {

175 return false;

176 }

177

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

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

180 meta.setOwner(args[0]);

181 skull.setItemMeta(meta);

182

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

184 }

185

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

187 {

188 if(!player.isOp())

189 {

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

191 return true;

192 }

193

194 if(args.length != 1)

195 {

196 return false;

197 }

198

199 String argument = args[0];

200

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

202 {

203 return false;

204 }

205

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

207 standbyListener.setEnabled(enabled);

208

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

210 }

211 }

212

213 return true;

214 }

215}