A feature-rich Minecraft plugin which enhances gaming experience
git clone git://soophie.de/poppy
17
import org.bukkit.command.Command;18
import org.bukkit.command.CommandSender;19
import org.bukkit.entity.Player;20
import org.bukkit.entity.Entity;20
import org.bukkit.inventory.ItemStack;21
import org.bukkit.inventory.meta.SkullMeta;22
import org.bukkit.inventory.meta.BookMeta;
77
chairListener.onDisable();78
}81
@SuppressWarnings("deprecation")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;89
if(label.equals("head"))90
{91
ItemStack handitem = player.getInventory().getItemInMainHand();92
ItemStack headitem = player.getInventory().getHelmet();94
player.getInventory().setHelmet(handitem);95
player.getInventory().setItemInMainHand((new ItemStack(Material.AIR)));97
if(player.getGameMode() == GameMode.SURVIVAL)98
{99
if(headitem != null)100
{101
player.getInventory().addItem(headitem);102
}103
}104
}106
if(label.equals("skull"))87
switch(label)88
{108
if(!player.isOp())109
{110
player.sendMessage(Constants.Messages.NOT_ENOUGH_PERMISSION);111
return true;112
}114
if(args.length != 1)115
{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;117
}119
ItemStack skull = new ItemStack(Material.PLAYER_HEAD);120
SkullMeta meta = (SkullMeta) skull.getItemMeta();121
meta.setOwner(args[0]);122
skull.setItemMeta(meta);124
player.getInventory().addItem(skull);109
}110
}127
if(label.equals("spawn"))128
{129
final Location location = Bukkit.getWorld("world").getSpawnLocation();112
return true;113
}131
if(travelTo(player, location))132
{133
player.sendMessage(ChatColor.GRAY + "You've been teleported to spawn.");134
}135
}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();137
if(label.equals("invsee"))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
{139
if(args.length == 0) {140
return false;141
}127
player.getInventory().addItem(head);128
}129
}143
if(Bukkit.getPlayer(args[0]) == null)144
{145
player.sendMessage(ChatColor.RED + "Player not found!");146
return true;147
}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
}149
if(!player.isOp())150
{151
player.sendMessage(Constants.Messages.NOT_ENOUGH_PERMISSION);152
return true;153
}143
if(args.length != 1)144
{145
return false;146
}155
Player target = Bukkit.getPlayer(args[0]);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);157
player.openInventory(target.getInventory());154
player.getInventory().addItem(skull);159
if(args.length == 1 && args[1].toLowerCase() == "enderchest")160
{161
player.openInventory(target.getEnderChest());162
}163
}156
return true;157
}165
if(label.equals("sethome"))166
{167
try168
{169
config.setHome(player);170
player.sendMessage(ChatColor.YELLOW + "Home point set.");171
}172
catch(Exception ex)173
{174
player.sendMessage(Constants.Messages.FAILED_TO_SAVE_CONFIG_FILE);175
}176
}159
private boolean openInventoryForPlayer(final Player player, final String[] args)160
{161
if(args.length == 0)162
{163
return false;164
}178
if(label.equals("home"))179
{180
final Location location = config.getHome(player);182
if(location == null)183
{184
player.sendMessage(ChatColor.RED + "You've don't have a home point.");185
return true;186
}188
if(travelTo(player, location))189
{190
player.sendMessage(ChatColor.GRAY + "You've been teleported to your home.");191
}192
}166
if(!player.isOp())167
{168
player.sendMessage(Constants.Messages.NOT_ENOUGH_PERMISSION);169
return true;170
}194
if(label.equals("setwarp"))195
{196
if(args.length != 1)197
{198
return false;199
}201
final String name = args[0];203
if(!payFee(player, Material.COMPASS, 1))204
{205
player.sendMessage(ChatColor.RED + "The fee for creating a warp point is 1 compass!");206
return true;207
}209
try210
{211
if(!config.setWarp(name, player.getLocation()))212
{213
player.sendMessage(ChatColor.RED + "Warp point " + name + " already exists!");214
return true;215
}217
player.sendMessage(ChatColor.YELLOW + "Warp point " + name + " set.");218
}219
catch(Exception ex)220
{221
player.sendMessage(Constants.Messages.FAILED_TO_SAVE_CONFIG_FILE);222
}223
}172
final Player target = Bukkit.getPlayer(args[0]);225
if(label.equals("warp"))226
{227
if(args.length != 1)228
{229
return false;230
}232
final String name = args[0];233
final Location location = config.getWarp(name);235
if(location == null)236
{237
player.sendMessage(ChatColor.RED + "Warp point " + name + " doesn't exist!");238
return true;239
}241
if(travelTo(player, location))242
{243
player.sendMessage(ChatColor.GRAY + "You've been teleported to warp point " + name + ".");244
}245
}174
if(target == null)175
{176
player.sendMessage(ChatColor.RED + "Player not found!");177
return true;178
}247
if(label.equals("info"))248
{249
final ItemStack book = new ItemStack(Material.WRITTEN_BOOK);250
final BookMeta meta = (BookMeta) book.getItemMeta();251
meta.setTitle("Info");252
meta.setAuthor("Server");253
meta.setPages(config.getInfoPages());254
book.setItemMeta(meta);180
player.openInventory(target.getInventory());256
player.openBook(book);257
}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(Util.travelTo(plugin, player, location))204
{205
player.sendMessage(ChatColor.GRAY + "You've been teleported to spawn.");206
}208
return true;209
}263
private boolean travelTo(final Player player, final Location location)211
private boolean teleportToHome(final Player player, final String[] args)212
{265
final int fee = Util.calcTravelFee(player.getLocation(), location);266
final String unit = fee == 1 ? "emerald" : "emeralds";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(Util.travelTo(plugin, player, location))222
{223
player.sendMessage(ChatColor.GRAY + "You've been teleported to your home.");224
}226
return true;227
}268
if(!payFee(player, Material.EMERALD, fee) && player.getGameMode() == GameMode.SURVIVAL)229
private boolean teleportToWarppoint(final Player player, final String[] args)230
{231
if(args.length != 1)232
{270
player.sendMessage(ChatColor.RED + "Not enough emeralds to teleport! Travel fee: " + fee + " " + unit);233
return false;234
}236
final String name = args[0];237
final Location location = config.getWarp(name);274
if(player.getVehicle() != null)239
if(location == null)240
{276
Entity vehicle = player.getVehicle();277
vehicle.eject();278
player.teleport(location);241
player.sendMessage(ChatColor.RED + "Warp point " + name + " doesn't exist!");242
return true;243
}245
if(Util.travelTo(plugin, player, location))246
{247
player.sendMessage(ChatColor.GRAY + "You've been teleported to warp point " + name + ".");248
}280
Bukkit.getScheduler().runTaskLater(plugin, () -> {281
vehicle.teleport(location);282
}, 3);250
return true;251
}284
Bukkit.getScheduler().runTaskLater(plugin, () -> {285
vehicle.addPassenger(player);286
}, 6);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
}288
else260
catch(Exception ex)261
{290
player.teleport(location);262
player.sendMessage(Constants.Messages.FAILED_TO_SAVE_CONFIG_FILE);263
}265
return true;266
}296
private boolean payFee(final Player player, final Material unit, final int amount)268
private boolean addWarppoint(final Player player, final String[] args)269
{298
final ItemStack item = player.getInventory().getItemInMainHand();300
if(item.getType() != unit || item.getAmount() < amount)270
if(args.length != 1)271
{272
return false;273
}305
item.setAmount(item.getAmount() - amount);275
final String name = args[0];277
if(!Util.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
}
64
public List<String> getInfoPages()65
{66
final String path = "info";67
List<String> pages = null;69
try70
{71
this.configuration.load(this.file);71
return (List<String>) this.configuration.getList(path);72
pages = (List<String>) this.configuration.getList(path);73
}74
catch(Exception ex)75
{75
return new ArrayList<>();76
// ignore77
}79
if(pages == null)80
{81
pages = new ArrayList<>();82
}84
return pages;85
}86
}
8
import org.bukkit.block.Block;9
import org.bukkit.block.BlockFace;10
import org.bukkit.entity.Player;11
import org.bukkit.entity.Entity;12
import org.bukkit.inventory.Inventory;13
import org.bukkit.inventory.ItemStack;14
import org.bukkit.plugin.Plugin;15
import org.bukkit.Location;16
import org.bukkit.GameMode;17
import org.bukkit.plugin.Plugin;19
import de.typable.minecrafthub.constant.Constants;20
import net.md_5.bungee.api.ChatColor;
190
return fee;191
}193
public static boolean travelTo(final Plugin plugin, final Player player, final Location location)194
{195
final int fee = Util.calcTravelFee(player.getLocation(), location);196
final String unit = fee == 1 ? "emerald" : "emeralds";198
if(!payFee(player, Material.EMERALD, fee) && player.getGameMode() == GameMode.SURVIVAL)199
{200
player.sendMessage(ChatColor.RED + "Not enough emeralds to teleport! Travel fee: " + fee + " " + unit);201
return false;202
}204
if(player.getVehicle() != null)205
{206
Entity vehicle = player.getVehicle();207
vehicle.eject();208
player.teleport(location);210
Bukkit.getScheduler().runTaskLater(plugin, () -> {211
vehicle.teleport(location);212
}, 3);214
Bukkit.getScheduler().runTaskLater(plugin, () -> {215
vehicle.addPassenger(player);216
}, 6);217
}218
else219
{220
player.teleport(location);221
}223
return true;224
}226
public static boolean payFee(final Player player, final Material unit, final int amount)227
{228
final ItemStack item = player.getInventory().getItemInMainHand();230
if(item.getType() != unit || item.getAmount() < amount)231
{232
return false;233
}235
item.setAmount(item.getAmount() - amount);237
return true;238
}239
}