A feature-rich Minecraft plugin which enhances gaming experience
git clone git://soophie.de/poppy
4
author: typable5
api-version: 1.166
commands:7
shutdown:8
head:9
skull:10
usage: /skull <player>
1
package de.typable.minecrafthub;3
import java.io.File;4
import java.io.IOException;5
import java.net.ServerSocket;6
import java.net.Socket;8
import org.bukkit.Bukkit;9
import org.bukkit.ChatColor;10
import org.bukkit.GameMode;
14
import org.bukkit.entity.Player;15
import org.bukkit.inventory.ItemStack;16
import org.bukkit.inventory.meta.SkullMeta;17
import org.bukkit.plugin.Plugin;18
import org.bukkit.plugin.PluginManager;19
import org.bukkit.plugin.java.JavaPlugin;21
import de.typable.minecrafthub.constant.DefaultConstants;22
import de.typable.minecrafthub.event.AutoWorkbenchListener;23
import de.typable.minecrafthub.event.ChairListener;24
import de.typable.minecrafthub.event.ChestLockListener;25
import de.typable.minecrafthub.event.DoubleDoorListener;26
import de.typable.minecrafthub.event.EventListener;27
import de.typable.minecrafthub.event.StandbyListener;28
import de.typable.minecrafthub.util.Util;31
public class Main extends JavaPlugin
35
private DoubleDoorListener doubleDoorListener;36
private ChairListener chairListener;37
private AutoWorkbenchListener autoWorkbenchListener;38
private ChestLockListener chestLockListener;39
private EventListener eventListener;41
private Plugin plugin;43
@Override44
public void onEnable()45
{46
plugin = this;48
pluginManager = Bukkit.getPluginManager();50
standbyListener = new StandbyListener(this);
59
autoWorkbenchListener = new AutoWorkbenchListener();60
pluginManager.registerEvents(autoWorkbenchListener, this);62
chestLockListener = new ChestLockListener();63
pluginManager.registerEvents(chestLockListener, this);65
eventListener = new EventListener();66
pluginManager.registerEvents(eventListener, this);68
Bukkit.getScheduler().runTaskAsynchronously(this, new Runnable()69
{70
@Override71
public void run()72
{73
try(ServerSocket serverSocket = new ServerSocket(25560))74
{75
while(!serverSocket.isClosed())76
{77
Socket socket = serverSocket.accept();79
Util.sendCountdown(plugin, "Server restarts in", 5, new Runnable()80
{81
@Override82
public void run()83
{84
for(Player target : Bukkit.getOnlinePlayers())85
{86
target.kickPlayer("Server restarting...");87
}89
Bukkit.getServer().shutdown();90
}91
});93
socket.close();94
}95
}96
catch(IOException ex)97
{98
ex.printStackTrace();99
}100
}101
});102
}104
@SuppressWarnings("deprecation")
109
{110
Player player = (Player) sender;112
if(label.equals("shutdown")) {114
if(!player.isOp())115
{116
player.sendMessage(DefaultConstants.Messages.NOT_ENOUGH_PERMISSION);117
return true;118
}120
String path = new File(".").getAbsolutePath();122
File file = new File(path + "/.shutdown");124
try125
{126
file.createNewFile();128
Util.sendCountdown(this, "Server shuts down in", 5, new Runnable()129
{130
@Override131
public void run()132
{133
for(Player target : Bukkit.getOnlinePlayers())134
{135
target.kickPlayer("Server stopped");136
}138
Bukkit.getServer().shutdown();139
}140
});141
}142
catch(IOException ex)143
{144
ex.printStackTrace();145
}146
}148
if(label.equals("head"))149
{150
ItemStack handitem = player.getInventory().getItemInMainHand();
80
{81
Recipe recipe = iterator.next();83
if(item.isSimilar(recipe.getResult()))83
if(Util.compare(item, recipe.getResult()))84
{85
List<ItemStack> ingredients = null;
159
continue;160
}162
if(ingredient.isSimilar(item))162
if(Util.compare(item, ingredient))163
{164
if(item.getAmount() > amount)165
{
191
{192
for(ItemStack ingredient : ingredients)193
{194
if(ingredient.isSimilar(item))194
if(Util.compare(item, ingredient))195
{196
ingredient.setAmount(ingredient.getAmount() + item.getAmount());
209
{210
for(ItemStack ingredient : ingredients)211
{212
if(ingredient != null && !inventory.containsAtLeast(ingredient, ingredient.getAmount()))212
if(ingredient != null && !Util.containsAtLeast(inventory, ingredient, ingredient.getAmount()))213
{214
return false;215
}
67
arrow.setInvulnerable(true);68
arrow.setPickupStatus(PickupStatus.DISALLOWED);69
arrow.setPassenger((Entity) event.getPlayer());70
arrow.setTicksLived(0);72
event.setCancelled(true);
1
package de.typable.minecrafthub.util;3
import org.bukkit.Bukkit;4
import org.bukkit.Material;5
import org.bukkit.entity.Player;6
import org.bukkit.inventory.Inventory;7
import org.bukkit.inventory.ItemStack;8
import org.bukkit.plugin.Plugin;10
import de.typable.minecrafthub.constant.DefaultConstants;11
import net.md_5.bungee.api.ChatColor;12
import net.md_5.bungee.api.ChatMessageType;13
import net.md_5.bungee.api.chat.TextComponent;16
public class Util17
{
19
{20
return item == null || item.getType() == Material.AIR;21
}23
public static boolean isType(ItemStack item, Material type)24
{25
return !isEmpty(item) && item.getType() == type;26
}28
public static boolean compare(ItemStack item, ItemStack item2)29
{30
if(item == null || item2 == null)31
{32
return false;33
}35
if(item.getType() != item2.getType())36
{37
return false;38
}40
return true;41
}43
public static boolean isInventoryFull(Inventory inventory, ItemStack result)44
{45
for(ItemStack item : inventory.getContents())
48
{49
return false;50
}52
if(result.isSimilar(item))53
{54
if(result.getAmount() + item.getAmount() <= item.getMaxStackSize())
57
}58
}59
}61
return true;62
}64
public static boolean containsAtLeast(Inventory inventory, ItemStack item, int amount)65
{66
for(int i = 0; i < inventory.getSize(); i++)67
{68
ItemStack current = inventory.getItem(i);70
if(Util.compare(item, current))71
{72
amount -= current.getAmount();74
if(amount <= 0)75
{76
return true;77
}78
}79
}81
return false;82
}84
public static void sendActionMessage(Player player, String message)85
{86
player.spigot().sendMessage(ChatMessageType.ACTION_BAR, TextComponent.fromLegacyText(message));87
}89
public static void sendCountdown(Plugin plugin, final String message, final int time, Runnable runnable)90
{91
Bukkit.getScheduler().runTaskTimer(plugin, new Runnable()92
{93
int count = time;95
@Override96
public void run()97
{98
if(count == 0)99
{100
runnable.run();101
return;102
}104
Bukkit.getServer().broadcastMessage(ChatColor.YELLOW + message + " " + count + " sec");106
count--;107
}108
}, 0L, DefaultConstants.TICK);109
}110
}