so://phie

poppy

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

blob: 1f6de71453d12006f9e216fd2657235dbdf8a390 (7436 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.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.entity.Entity;

21import org.bukkit.inventory.ItemStack;

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

23import org.bukkit.material.Tree;

24import org.bukkit.plugin.Plugin;

25import org.bukkit.plugin.PluginManager;

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

27

28import de.typable.minecrafthub.constant.Constants;

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

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

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

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

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

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

35import de.typable.minecrafthub.config.Config;

36

37

38public class Main extends JavaPlugin

39{

40 private PluginManager pluginManager;

41 private DoubleDoorListener doubleDoorListener;

42 private ChairListener chairListener;

43 private AutoWorkbenchListener autoWorkbenchListener;

44 private LeavesDecayListener leavesDecayListener;

45 private EventListener eventListener;

46

47 private Plugin plugin;

48 private Config config;

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 doubleDoorListener = new DoubleDoorListener();

59 pluginManager.registerEvents(doubleDoorListener, this);

60

61 chairListener = new ChairListener();

62 pluginManager.registerEvents(chairListener, this);

63

64 autoWorkbenchListener = new AutoWorkbenchListener();

65 pluginManager.registerEvents(autoWorkbenchListener, this);

66

67 leavesDecayListener = new LeavesDecayListener(this);

68 pluginManager.registerEvents(leavesDecayListener, this);

69

70 eventListener = new EventListener();

71 pluginManager.registerEvents(eventListener, this);

72 }

73

74 @Override

75 public void onDisable()

76 {

77 chairListener.onDisable();

78 }

79

80 @SuppressWarnings("deprecation")

81 @Override

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

83 {

84 if(sender instanceof Player)

85 {

86 Player player = (Player) sender;

87

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

89 {

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

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

92

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

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

95

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

97 {

98 if(headitem != null)

99 {

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

101 }

102 }

103 }

104

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

106 {

107 if(!player.isOp())

108 {

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

110 return true;

111 }

112

113 if(args.length != 1)

114 {

115 return false;

116 }

117

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

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

120 meta.setOwner(args[0]);

121 skull.setItemMeta(meta);

122

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

124 }

125

126 if(label.equals("spawn"))

127 {

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

129

130 if(travelTo(player, location))

131 {

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

133 }

134 }

135

136 if(label.equals("invsee"))

137 {

138 if(args.length == 0) {

139 return false;

140 }

141

142 if(Bukkit.getPlayer(args[0]) == null)

143 {

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

145 return true;

146 }

147

148 if(!player.isOp())

149 {

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

151 return true;

152 }

153

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

155

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

157

158 if(args.length == 1 && args[1].toLowerCase() == "enderchest")

159 {

160 player.openInventory(target.getEnderChest());

161 }

162 }

163

164 if(label.equals("sethome"))

165 {

166 try

167 {

168 config.setHome(player);

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

170 }

171 catch(Exception ex)

172 {

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

174 }

175 }

176

177 if(label.equals("home"))

178 {

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

180

181 if(location == null)

182 {

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

184 return true;

185 }

186

187 if(travelTo(player, location))

188 {

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

190 }

191 }

192

193 if(label.equals("setwarp"))

194 {

195 if(args.length != 1)

196 {

197 return false;

198 }

199

200 final String name = args[0];

201

202 if(!payFee(player, Material.COMPASS, 1))

203 {

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

205 return true;

206 }

207

208 try

209 {

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

211 {

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

213 return true;

214 }

215

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

217 }

218 catch(Exception ex)

219 {

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

221 }

222 }

223

224 if(label.equals("warp"))

225 {

226 if(args.length != 1)

227 {

228 return false;

229 }

230

231 final String name = args[0];

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

233

234 if(location == null)

235 {

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

237 return true;

238 }

239

240 if(travelTo(player, location))

241 {

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

243 }

244 }

245 }

246

247 return true;

248 }

249

250 private boolean travelTo(final Player player, final Location location)

251 {

252 final int fee = Util.calcTravelFee(player.getLocation(), location);

253 final String unit = fee == 1 ? "emerald" : "emeralds";

254

255 if(!payFee(player, Material.EMERALD, fee) && player.getGameMode() == GameMode.SURVIVAL)

256 {

257 player.sendMessage(ChatColor.RED + "Not enough emeralds to teleport! Travel fee: " + fee + " " + unit);

258 return false;

259 }

260

261 if(player.getVehicle() != null)

262 {

263 Entity vehicle = player.getVehicle();

264 vehicle.eject();

265 player.teleport(location);

266

267 Bukkit.getScheduler().runTaskLater(plugin, () -> {

268 vehicle.teleport(location);

269 }, 3);

270

271 Bukkit.getScheduler().runTaskLater(plugin, () -> {

272 vehicle.addPassenger(player);

273 }, 6);

274 }

275 else

276 {

277 player.teleport(location);

278 }

279

280 return true;

281 }

282

283 private boolean payFee(final Player player, final Material unit, final int amount)

284 {

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

286

287 if(item.getType() != unit || item.getAmount() < amount)

288 {

289 return false;

290 }

291

292 item.setAmount(item.getAmount() - amount);

293

294 return true;

295 }

296}