A feature-rich Minecraft plugin which enhances gaming experience
git clone git://soophie.de/poppy
blob: c3937b361f9ae0cefa40a712a287dce26bce7802 (7898 bytes)[doc][blame][raw]
1
package poppy;3
import org.bukkit.Bukkit;4
import org.bukkit.ChatColor;5
import org.bukkit.GameMode;6
import org.bukkit.Location;7
import org.bukkit.Material;8
import org.bukkit.command.Command;9
import org.bukkit.command.CommandSender;10
import org.bukkit.entity.Player;11
import org.bukkit.inventory.ItemStack;12
import org.bukkit.inventory.meta.SkullMeta;13
import org.bukkit.inventory.meta.BookMeta;14
import org.bukkit.plugin.Plugin;15
import org.bukkit.plugin.PluginManager;16
import org.bukkit.plugin.java.JavaPlugin;18
import poppy.modules.AutoWorkbenchModule;19
import poppy.modules.CauldronModule;20
import poppy.modules.ChairModule;21
import poppy.modules.DoubleDoorModule;22
import poppy.modules.CommonModule;23
import poppy.modules.LeavesDecayModule;24
import poppy.modules.SpawnerModule;27
public class Main extends JavaPlugin28
{29
private Plugin plugin;30
private Config config;31
private PluginManager pluginManager;33
private CommonModule commonModule;34
private DoubleDoorModule doubleDoorModule;35
private ChairModule chairModule;36
private AutoWorkbenchModule autoWorkbenchModule;37
private LeavesDecayModule leavesDecayModule;38
private CauldronModule cauldronModule;39
private SpawnerModule spawnerModule;41
@Override42
public void onEnable()43
{44
plugin = this;45
config = new Config("config/poppy.yml");47
pluginManager = Bukkit.getPluginManager();49
commonModule = new CommonModule();50
pluginManager.registerEvents(commonModule, this);52
doubleDoorModule = new DoubleDoorModule();53
pluginManager.registerEvents(doubleDoorModule, this);55
chairModule = new ChairModule();56
pluginManager.registerEvents(chairModule, this);58
autoWorkbenchModule = new AutoWorkbenchModule();59
pluginManager.registerEvents(autoWorkbenchModule, this);61
leavesDecayModule = new LeavesDecayModule(this);62
pluginManager.registerEvents(leavesDecayModule, this);64
cauldronModule = new CauldronModule(this);65
pluginManager.registerEvents(cauldronModule, this);67
spawnerModule = new SpawnerModule();68
pluginManager.registerEvents(spawnerModule, this);69
}71
@Override72
public void onDisable()73
{74
chairModule.onDisable();75
}77
@Override78
public boolean onCommand(CommandSender sender, Command command, String label, String[] args)79
{80
if(sender instanceof Player)81
{82
Player player = (Player) sender;84
switch(label)85
{86
case "head":87
return setItemAsHead(player, args);88
case "skull":89
return getSkullForName(player, args);90
case "invsee":91
return openInventoryForPlayer(player, args);92
case "info":93
return openInfoBook(player, args);94
case "spawn":95
return teleportToSpawn(player, args);96
case "home":97
return teleportToHome(player, args);98
case "warp":99
return teleportToWarppoint(player, args);100
case "sethome":101
return setHome(player, args);102
case "setwarp":103
return setWarppoint(player, args);104
case "slime":105
return ifSlimeChunk(player, args);106
case "r":107
return reload(player, args);108
default:109
return false;110
}111
}113
return true;114
}116
private boolean setItemAsHead(final Player player, final String[] args)117
{118
final ItemStack item = player.getInventory().getItemInMainHand();119
final ItemStack head = player.getInventory().getHelmet();121
player.getInventory().setHelmet(item);122
player.getInventory().setItemInMainHand((new ItemStack(Material.AIR)));124
if(player.getGameMode() == GameMode.SURVIVAL)125
{126
if(head != null)127
{128
player.getInventory().addItem(head);129
}130
}132
return true;133
}135
@SuppressWarnings("deprecation")136
private boolean getSkullForName(final Player player, final String[] args)137
{138
if(!player.isOp())139
{140
player.sendMessage(Constants.Messages.NOT_ENOUGH_PERMISSION);141
return true;142
}144
if(args.length != 1)145
{146
return false;147
}149
final String name = args[0];150
final ItemStack skull = new ItemStack(Material.PLAYER_HEAD);151
final SkullMeta meta = (SkullMeta) skull.getItemMeta();152
meta.setOwner(name);153
skull.setItemMeta(meta);155
player.getInventory().addItem(skull);157
return true;158
}160
private boolean openInventoryForPlayer(final Player player, final String[] args)161
{162
if(args.length == 0)163
{164
return false;165
}167
if(!player.isOp())168
{169
player.sendMessage(Constants.Messages.NOT_ENOUGH_PERMISSION);170
return true;171
}173
final Player target = Bukkit.getPlayer(args[0]);175
if(target == null)176
{177
player.sendMessage(ChatColor.RED + "Player not found!");178
return true;179
}181
player.openInventory(target.getInventory());183
return true;184
}186
private boolean openInfoBook(final Player player, final String[] args)187
{188
final ItemStack book = new ItemStack(Material.WRITTEN_BOOK);189
final BookMeta meta = (BookMeta) book.getItemMeta();190
meta.setTitle("Info");191
meta.setAuthor("Server");192
meta.setPages(config.getInfoPages());193
book.setItemMeta(meta);195
player.openBook(book);197
return true;198
}200
private boolean teleportToSpawn(final Player player, final String[] args)201
{202
final Location location = Bukkit.getWorld("world").getSpawnLocation();204
if(Utils.travelTo(plugin, player, location))205
{206
player.sendMessage(ChatColor.GRAY + "You've been teleported to spawn.");207
}209
return true;210
}212
private boolean teleportToHome(final Player player, final String[] args)213
{214
final Location location = config.getHome(player);216
if(location == null)217
{218
player.sendMessage(ChatColor.RED + "You've don't have a home point.");219
return true;220
}222
if(Utils.travelTo(plugin, player, location))223
{224
player.sendMessage(ChatColor.GRAY + "You've been teleported to your home.");225
}227
return true;228
}230
private boolean teleportToWarppoint(final Player player, final String[] args)231
{232
if(args.length != 1)233
{234
return false;235
}237
final String name = args[0].toLowerCase();238
final Location location = config.getWarp(name);240
if(location == null)241
{242
player.sendMessage(ChatColor.RED + "Warppoint " + name + " doesn't exist!");243
return true;244
}246
if(Utils.travelTo(plugin, player, location))247
{248
player.sendMessage(ChatColor.GRAY + "You've been teleported to warppoint " + name + ".");249
}251
return true;252
}254
private boolean setHome(final Player player, final String[] args)255
{256
try257
{258
config.setHome(player);259
player.sendMessage(ChatColor.YELLOW + "Home point set.");260
}261
catch(Exception ex)262
{263
player.sendMessage(Constants.Messages.FAILED_TO_SAVE_CONFIG_FILE);264
}266
return true;267
}269
private boolean setWarppoint(final Player player, final String[] args)270
{271
if(args.length != 1)272
{273
return false;274
}276
final String name = args[0].toLowerCase();278
if(!Utils.payFee(player, Material.COMPASS, 1))279
{280
player.sendMessage(ChatColor.RED + "The fee for creating a warppoint is 1 compass!");281
return true;282
}284
try285
{286
if(!config.setWarp(name, player.getLocation()))287
{288
player.sendMessage(ChatColor.RED + "Warppoint " + name + " already exists!");289
return true;290
}292
player.sendMessage(ChatColor.YELLOW + "Warppoint " + name + " set.");293
}294
catch(Exception ex)295
{296
player.sendMessage(Constants.Messages.FAILED_TO_SAVE_CONFIG_FILE);297
}299
return true;300
}302
private boolean ifSlimeChunk(final Player player, final String[] args)303
{304
boolean isSlimeChunk = player.getLocation().getChunk().isSlimeChunk();306
if(isSlimeChunk)307
{308
player.sendMessage(ChatColor.YELLOW + "This is a slime chunk!");309
return true;310
}311
else312
{313
player.sendMessage(ChatColor.RED + "This is not a slime chunk!");314
return true;315
}316
}318
private boolean reload(final Player player, final String[] args)319
{320
player.chat("/reload confirm");321
return true;322
}323
}