A feature-rich Minecraft plugin which enhances gaming experience
git clone git://soophie.de/poppy
blob: 958b44fe27f40dd50bba42170aa34008cc69f19d (7244 bytes)[doc][blame][raw]
1
package poppy;3
import java.io.File;4
import java.io.IOException;5
import java.net.BindException;6
import java.net.ServerSocket;7
import java.net.Socket;9
import org.bukkit.Bukkit;10
import org.bukkit.ChatColor;11
import org.bukkit.GameMode;12
import org.bukkit.Location;13
import org.bukkit.Material;14
import org.bukkit.World;15
import org.bukkit.WorldCreator;16
import org.bukkit.WorldType;17
import org.bukkit.command.Command;18
import org.bukkit.command.CommandSender;19
import org.bukkit.entity.Player;20
import org.bukkit.inventory.ItemStack;21
import org.bukkit.inventory.meta.SkullMeta;22
import org.bukkit.inventory.meta.BookMeta;23
import org.bukkit.material.Tree;24
import org.bukkit.plugin.Plugin;25
import org.bukkit.plugin.PluginManager;26
import org.bukkit.plugin.java.JavaPlugin;28
import poppy.Constants;29
import poppy.Config;30
import poppy.Utils;31
import poppy.modules.AutoWorkbenchModule;32
import poppy.modules.ChairModule;33
import poppy.modules.DoubleDoorModule;34
import poppy.modules.CommonModule;35
import poppy.modules.LeavesDecayModule;38
public class Main extends JavaPlugin39
{40
private Plugin plugin;41
private Config config;42
private PluginManager pluginManager;44
private DoubleDoorModule doubleDoorModule;45
private ChairModule chairModule;46
private AutoWorkbenchModule autoWorkbenchModule;47
private LeavesDecayModule leavesDecayModule;48
private CommonModule commonModule;50
@Override51
public void onEnable()52
{53
plugin = this;54
config = new Config("config/minecraft-hub.yml");56
pluginManager = Bukkit.getPluginManager();58
doubleDoorModule = new DoubleDoorModule();59
pluginManager.registerEvents(doubleDoorModule, this);61
chairModule = new ChairModule();62
pluginManager.registerEvents(chairModule, this);64
autoWorkbenchModule = new AutoWorkbenchModule();65
pluginManager.registerEvents(autoWorkbenchModule, this);67
leavesDecayModule = new LeavesDecayModule(this);68
pluginManager.registerEvents(leavesDecayModule, this);70
commonModule = new CommonModule();71
pluginManager.registerEvents(commonModule, this);72
}74
@Override75
public void onDisable()76
{77
chairModule.onDisable();78
}80
@Override81
public boolean onCommand(CommandSender sender, Command command, String label, String[] args)82
{83
if(sender instanceof Player)84
{85
Player player = (Player) sender;87
switch(label)88
{89
case "head":90
return setItemAsHead(player, args);91
case "skull":92
return getSkullForName(player, args);93
case "invsee":94
return openInventoryForPlayer(player, args);95
case "info":96
return openInfoBook(player, args);97
case "spawn":98
return teleportToSpawn(player, args);99
case "home":100
return teleportToHome(player, args);101
case "warp":102
return teleportToWarppoint(player, args);103
case "sethome":104
return setHome(player, args);105
case "setwarp":106
return addWarppoint(player, args);107
default:108
return false;109
}110
}112
return true;113
}115
private boolean setItemAsHead(final Player player, final String[] args)116
{117
final ItemStack item = player.getInventory().getItemInMainHand();118
final ItemStack head = player.getInventory().getHelmet();120
player.getInventory().setHelmet(item);121
player.getInventory().setItemInMainHand((new ItemStack(Material.AIR)));123
if(player.getGameMode() == GameMode.SURVIVAL)124
{125
if(head != null)126
{127
player.getInventory().addItem(head);128
}129
}131
return true;132
}134
@SuppressWarnings("deprecation")135
private boolean getSkullForName(final Player player, final String[] args)136
{137
if(!player.isOp())138
{139
player.sendMessage(Constants.Messages.NOT_ENOUGH_PERMISSION);140
return true;141
}143
if(args.length != 1)144
{145
return false;146
}148
final String name = args[0];149
final ItemStack skull = new ItemStack(Material.PLAYER_HEAD);150
final SkullMeta meta = (SkullMeta) skull.getItemMeta();151
meta.setOwner(name);152
skull.setItemMeta(meta);154
player.getInventory().addItem(skull);156
return true;157
}159
private boolean openInventoryForPlayer(final Player player, final String[] args)160
{161
if(args.length == 0)162
{163
return false;164
}166
if(!player.isOp())167
{168
player.sendMessage(Constants.Messages.NOT_ENOUGH_PERMISSION);169
return true;170
}172
final Player target = Bukkit.getPlayer(args[0]);174
if(target == null)175
{176
player.sendMessage(ChatColor.RED + "Player not found!");177
return true;178
}180
player.openInventory(target.getInventory());182
return true;183
}185
private boolean openInfoBook(final Player player, final String[] args)186
{187
final ItemStack book = new ItemStack(Material.WRITTEN_BOOK);188
final BookMeta meta = (BookMeta) book.getItemMeta();189
meta.setTitle("Info");190
meta.setAuthor("Server");191
meta.setPages(config.getInfoPages());192
book.setItemMeta(meta);194
player.openBook(book);196
return true;197
}199
private boolean teleportToSpawn(final Player player, final String[] args)200
{201
final Location location = Bukkit.getWorld("world").getSpawnLocation();203
if(Utils.travelTo(plugin, player, location))204
{205
player.sendMessage(ChatColor.GRAY + "You've been teleported to spawn.");206
}208
return true;209
}211
private boolean teleportToHome(final Player player, final String[] args)212
{213
final Location location = config.getHome(player);215
if(location == null)216
{217
player.sendMessage(ChatColor.RED + "You've don't have a home point.");218
return true;219
}221
if(Utils.travelTo(plugin, player, location))222
{223
player.sendMessage(ChatColor.GRAY + "You've been teleported to your home.");224
}226
return true;227
}229
private boolean teleportToWarppoint(final Player player, final String[] args)230
{231
if(args.length != 1)232
{233
return false;234
}236
final String name = args[0];237
final Location location = config.getWarp(name);239
if(location == null)240
{241
player.sendMessage(ChatColor.RED + "Warp point " + name + " doesn't exist!");242
return true;243
}245
if(Utils.travelTo(plugin, player, location))246
{247
player.sendMessage(ChatColor.GRAY + "You've been teleported to warp point " + name + ".");248
}250
return true;251
}253
private boolean setHome(final Player player, final String[] args)254
{255
try256
{257
config.setHome(player);258
player.sendMessage(ChatColor.YELLOW + "Home point set.");259
}260
catch(Exception ex)261
{262
player.sendMessage(Constants.Messages.FAILED_TO_SAVE_CONFIG_FILE);263
}265
return true;266
}268
private boolean addWarppoint(final Player player, final String[] args)269
{270
if(args.length != 1)271
{272
return false;273
}275
final String name = args[0];277
if(!Utils.payFee(player, Material.COMPASS, 1))278
{279
player.sendMessage(ChatColor.RED + "The fee for creating a warp point is 1 compass!");280
return true;281
}283
try284
{285
if(!config.setWarp(name, player.getLocation()))286
{287
player.sendMessage(ChatColor.RED + "Warp point " + name + " already exists!");288
return true;289
}291
player.sendMessage(ChatColor.YELLOW + "Warp point " + name + " set.");292
}293
catch(Exception ex)294
{295
player.sendMessage(Constants.Messages.FAILED_TO_SAVE_CONFIG_FILE);296
}298
return true;299
}301
}