Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- import java.io.File;
- import java.text.DateFormat;
- import java.text.SimpleDateFormat;
- import java.util.Date;
- import java.util.logging.Logger;
- public class MoveCraft extends Plugin
- {
- PropertiesFile properties;
- static final String pluginName = "MoveCraft";
- static final String version = "0.7";
- static final DateFormat dateFormat = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
- public static Logger log = Logger.getLogger("Minecraft");
- final MoveCraft.MoveCraftListener listener;
- public MoveCraft()
- {
- this.listener = new MoveCraft.MoveCraftListener();
- }
- public static void consoleSay(String msg) {
- System.out.println(getDateTime() + " [INFO] " + "MoveCraft" + " " + msg);
- }
- public void loadProperties()
- {
- File dir = new File("movecraft");
- if (!dir.exists()) dir.mkdir();
- CraftType.loadTypes(dir);
- CraftType.saveTypes(dir);
- }
- public void enable()
- {
- loadProperties();
- log.info("Movecraft 0.7 plugin enabled");
- }
- public void disable()
- {
- log.info("MoveCraft 0.7 plugin disabled");
- }
- public void initialize()
- {
- etc.getLoader().addListener(PluginLoader.Hook.BLOCK_CREATED, this.listener, this, PluginListener.Priority.CRITICAL);
- etc.getLoader().addListener(PluginLoader.Hook.DISCONNECT, this.listener, this, PluginListener.Priority.MEDIUM);
- etc.getLoader().addListener(PluginLoader.Hook.PLAYER_MOVE, this.listener, this, PluginListener.Priority.MEDIUM);
- etc.getLoader().addListener(PluginLoader.Hook.COMMAND, this.listener, this, PluginListener.Priority.MEDIUM);
- etc.getLoader().addListener(PluginLoader.Hook.ARM_SWING, this.listener, this, PluginListener.Priority.MEDIUM);
- etc.getLoader().addListener(PluginLoader.Hook.BLOCK_RIGHTCLICKED, this.listener, this, PluginListener.Priority.MEDIUM);
- etc.getLoader().addListener(PluginLoader.Hook.SIGN_CHANGE, this.listener, this, PluginListener.Priority.MEDIUM);
- BlocksInfo.loadBlocksInfo();
- }
- public static String getDateTime()
- {
- return dateFormat.format(new Date());
- }
- class MoveCraftListener extends PluginListener
- {
- MoveCraftListener()
- {
- }
- public void onPlayerMove(Player player, Location from, Location to)
- {
- Craft craft = Craft.getCraft(player);
- if (craft != null) {
- craft.setSpeed(1);
- if ((craft.isOnBoard) && (!craft.isOnCraft(player, false))) {
- player.sendMessage("§eYou get off the " + craft.name);
- player.sendMessage("§7type /" + craft.name + " remote for remote control");
- craft.isOnBoard = false;
- craft.haveControl = false;
- }
- else if ((!craft.isOnBoard) && (craft.isOnCraft(player, false))) {
- player.sendMessage("§eWelcome on board");
- craft.isOnBoard = true;
- craft.haveControl = true;
- }
- }
- }
- public boolean onSignChange(Player player, Sign sign)
- {
- String craftTypeName = sign.getText(0).trim().toLowerCase();
- if (craftTypeName.startsWith("[")) {
- craftTypeName = craftTypeName.substring(1, craftTypeName.length() - 1);
- }
- CraftType craftType = CraftType.getCraftType(craftTypeName);
- if (craftType != null)
- {
- sign.setText(0, "[§1" + craftType.name + "§0]");
- String name = sign.getText(1);
- if (name.length() > 0) {
- sign.setText(1, "§e" + name);
- }
- return false;
- }
- return false;
- }
- public boolean onBlockCreate(Player player,Block blockPlaced,Block blockClicked,int itemInHand){
- Craft playerCraft = Craft.getCraft(player);
- if (blockPlaced != null){
- Craft craft = Craft.getCraft(blockPlaced.getX(), blockPlaced.getY(), blockPlaced.getZ());
- if (craft != null)
- {
- if ((blockPlaced.getType() == 321) || (blockPlaced.getType() == 323) || (blockPlaced.getType() == 324) || (blockPlaced.getType() == 330))
- {
- player.sendMessage("§eplease release the " + craft.type.name + " to add this item");
- return true;
- }
- craft.addBlock(blockPlaced);
- }
- if (playerCraft != null) {
- playerCraft.blockPlaced = true;
- }
- }
- return false;
- }
- //TODO
- public boolean onBlockRightClick(Player player,Block blockClicked,Item itemInHand){
- Craft playerCraft = Craft.getCraft(player);
- if ((blockClicked.getType() == 63) || (blockClicked.getType() == 68))
- {
- if (playerCraft == null)
- {
- Sign sign = (Sign)blockClicked.getWorld().getComplexBlock(blockClicked.getX(), blockClicked.getY(), blockClicked.getZ());
- if (sign.getText(0).trim().equals("")) return false;
- String craftTypeName = sign.getText(0).trim();
- craftTypeName = craftTypeName.replaceAll("§.", "");
- if (craftTypeName.startsWith("[")) {
- craftTypeName = craftTypeName.substring(1, craftTypeName.length() - 1);
- }
- CraftType craftType = CraftType.getCraftType(craftTypeName);
- if (craftType != null)
- {
- String name = sign.getText(1).replaceAll("§.", "");
- if (name.trim().equals("")) {
- name = null;
- }
- if (!player.canUseCommand("/movecraft"))
- {
- player.sendMessage("§cyou are not allowed to take control of that " + craftType.name + " !");
- return true;
- }
- int x = blockClicked.getX();
- int y = blockClicked.getY();
- int z = blockClicked.getZ();
- int direction = blockClicked.getWorld().getBlockData(x, y, z);
- x += (direction == 5 ? -1 : direction == 4 ? 1 : 0);
- z += (direction == 3 ? -1 : direction == 2 ? 1 : 0);
- createCraft(player, craftType, x, y, z, name);
- return true;
- }
- return false;
- }
- releaseCraft(player, playerCraft);
- }
- return false;
- }
- public void onDisconnect(Player player)
- {
- Craft craft = Craft.getCraft(player);
- if (craft != null)
- Craft.removeCraft(craft);
- }
- //TODO
- public void onArmSwing(Player player)
- {
- Craft craft = Craft.getCraft(player);
- if (craft != null)
- {
- if (craft.blockPlaced) {
- craft.blockPlaced = false;
- return;
- }
- if (craft.blockCount <= 0)
- {
- releaseCraft(player, craft);
- return;
- }
- int item = player.getItemInHand();
- if ((!craft.haveControl) || (item == 256) || (item == 257) || (item == 258) || (item == 269) || (item == 270) || (item == 271) || (item == 273) || (item == 274) || (item == 275) || (item == 277) || (item == 278) || (item == 279) || (item == 284) || (item == 285) || (item == 286) || ((item >= 290) && (item <= 294)) || (item == 336))
- {
- return;
- }
- if (System.currentTimeMillis() - craft.lastMove < 200.0D) return;
- craft.setSpeed(craft.speed - (int)((System.currentTimeMillis() - craft.lastMove) / 500L));
- if (craft.speed <= 0) craft.speed = 1;
- float rotation = 3.141593F * player.getRotation() / 180.0F;
- float nx = -(float)Math.sin(rotation);
- float nz = (float)Math.cos(rotation);
- int dx = (Math.abs(nx) >= 0.5D ? 1 : 0) * (int)Math.signum(nx);
- int dz = (Math.abs(nz) > 0.5D ? 1 : 0) * (int)Math.signum(nz);
- int dy = 0;
- if ((craft.type.canFly) || (craft.type.canDive))
- {
- float p = player.getPitch();
- dy = -(Math.abs(player.getPitch()) >= 25.0F ? 1 : 0) * (int)Math.signum(p);
- if (Math.abs(player.getPitch()) >= 75.0F) {
- dx = 0;
- dz = 0;
- }
- }
- if ((craft.type.canDive) && (!craft.type.canFly) && (craft.waterLevel <= 0) && (dy > 0))
- {
- dy = 0;
- }
- while (!craft.canMove(dx, dy, dz))
- {
- if (craft.speed == 1)
- {
- if ((craft.type.canFly) && (dy >= 0)) {
- dx = 0; dz = 0; dy = 1;
- if (craft.canMove(dx, dy, dz))
- break;
- }
- player.sendMessage("§cthe " + craft.name + " won't go any further");
- return;
- }
- craft.setSpeed(craft.speed - 1);
- }
- craft.move(dx, dy, dz);
- craft.setSpeed(craft.speed + 1);
- }
- }
- //TODO
- private void createCraft(Player player, CraftType craftType, int x, int y, int z, String name)
- {
- Craft craft = Craft.getCraft(player);
- if (craft != null) {
- releaseCraft(player, craft);
- }
- craft = new Craft(craftType, player, name);
- if (!CraftBuilder.detect(craft, x, y, z)) {
- return;
- }
- Craft.addCraft(craft);
- player.sendMessage("§7Swing your arm where you want to go (no tools)");
- onPlayerMove(player, player.getLocation(), player.getLocation());
- }
- //TODO
- private void releaseCraft(Player player, Craft craft)
- {
- if (craft != null)
- {
- player.sendMessage("§e" + craft.type.sayOnRelease);
- Craft.removeCraft(craft);
- }
- else
- {
- player.sendMessage("§eYou don't have anything to release");
- }
- }
- //TODO
- private boolean processCommand(CraftType craftType, Player player, String[] split) {
- Craft craft = Craft.getCraft(player);
- if (split.length >= 2)
- {
- if (split[1].equalsIgnoreCase(craftType.driveCommand))
- {
- createCraft(player, craftType, (int)Math.floor(player.getX()), (int)Math.floor(player.getY() - 1.0D), (int)Math.floor(player.getZ()), null);
- return true;
- }
- if (split[1].equalsIgnoreCase("setspeed"))
- {
- if (craft == null) {
- player.sendMessage("§eYou don't have any " + craftType.name);
- return true;
- }
- int speed = Math.abs(Integer.parseInt(split[2]));
- if ((speed < 1) || (speed > craftType.maxSpeed)) {
- player.sendMessage("§cAllowed speed between 1 and " + craftType.maxSpeed);
- return true;
- }
- craft.setSpeed(speed);
- player.sendMessage("§e" + craft.name + "'s speed set to " + craft.speed);
- return true;
- }
- if (split[1].equalsIgnoreCase("setname"))
- {
- if (craft == null) {
- player.sendMessage("§eYou don't have any " + craftType.name);
- return true;
- }
- craft.name = split[2];
- player.sendMessage("§e" + craft.name + "'s name set to " + craft.name);
- return true;
- }
- if (split[1].equalsIgnoreCase("size"))
- {
- if (craft == null) {
- player.sendMessage("§eYou don't have any " + craftType.name);
- return true;
- }
- player.sendMessage("§eThe " + craft.name + " is built with " + craft.blockCount + " blocks");
- return true;
- }
- if (split[1].equalsIgnoreCase("remote"))
- {
- if (craft == null) {
- player.sendMessage("§eYou don't have any " + craftType.name);
- return true;
- }
- if (craft.isOnCraft(player, true)) {
- player.sendMessage("§eYou are on the " + craftType.name + ", remote control not possible");
- } else {
- if (craft.haveControl)
- player.sendMessage("§eYou switch off the remote controller");
- else {
- player.sendMessage("§eYou switch on the remote controller");
- }
- craft.haveControl = (!craft.haveControl);
- }
- return true;
- }
- if (split[1].equalsIgnoreCase("release"))
- {
- releaseCraft(player, craft);
- return true;
- }
- if (split[1].equalsIgnoreCase("info"))
- {
- player.sendMessage("§a" + craftType.name);
- player.sendMessage("§emin size : " + craftType.minBlocks);
- player.sendMessage("§emax size : " + craftType.maxBlocks);
- player.sendMessage("§espeed : " + craftType.maxSpeed);
- if (craftType.canFly) {
- player.sendMessage("§ethe " + craftType.name + " can fly");
- }
- if (craftType.canNavigate) {
- player.sendMessage("§ethe " + craftType.name + " can navigate on both water and lava");
- }
- if (craftType.canDive) {
- player.sendMessage("§ethe " + craftType.name + " can dive");
- }
- if (craftType.flyBlockType != 0) {
- player.sendMessage("§crequirement : " + craftType.flyBlockPercent + "%" + " of " + craftType.flyBlockName);
- }
- return true;
- }
- }
- player.sendMessage("§aMoveCraft v0.6 commands :");
- player.sendMessage("§e/" + craftType.name + " " + craftType.driveCommand + " : §f" + " " + craftType.driveCommand + " the " + craftType.name);
- player.sendMessage("§e/" + craftType.name + " " + "release : §frelease the " + craftType.name);
- player.sendMessage("§e/" + craftType.name + " " + "remote : §fremote control of the " + craftType.name);
- player.sendMessage("§e/" + craftType.name + " " + "size : §fthe size of the " + craftType.name + " in block");
- player.sendMessage("§e/" + craftType.name + " " + "setname : §fset the " + craftType.name + "'s name");
- player.sendMessage("§e/" + craftType.name + " " + "info : §fdisplays informations about the " + craftType.name);
- return true;
- }
- //TODO
- public boolean onCommand(Player player, String[] split)
- {
- if ((split[0].equalsIgnoreCase("/reload")) && (player.canUseCommand("/reload"))) {
- MoveCraft.this.loadProperties();
- return false;
- }
- if ((split[0].equalsIgnoreCase("/movecraft")) && (player.canUseCommand("/movecraft"))) {
- if (split.length >= 2) {
- if (split[1].equalsIgnoreCase("types"))
- {
- for (CraftType craftType : CraftType.craftTypes)
- {
- if (craftType.canUse(player).booleanValue()) {
- player.sendMessage("§e " + craftType.name + " :§f " + craftType.minBlocks + "-" + craftType.maxBlocks + " blocks" + " speed : " + craftType.maxSpeed);
- }
- }
- return true;
- }
- if (split[1].equalsIgnoreCase("list"))
- {
- if (Craft.craftList.isEmpty()) {
- player.sendMessage("§7no player controlled craft");
- return true;
- }
- for (Craft craft : Craft.craftList)
- {
- player.sendMessage("§e" + craft.name + " controlled by " + Craft.player.getName() + " : " + craft.blockCount + " blocks");
- }
- return true;
- }
- if (split[1].equalsIgnoreCase("reload"))
- {
- MoveCraft.this.loadProperties();
- player.sendMessage("§econfiguration reloaded");
- return true;
- }
- }
- player.sendMessage("§aMoveCraft v0.6 commands :");
- player.sendMessage("§e/movecraft types : §flist the types of craft available");
- player.sendMessage("§e/movecraft list : §flist the current player controled craft");
- player.sendMessage("§e/movecraft reload : §freload config files");
- player.sendMessage("§e/[craft type] : §fcommands specific to the craft type");
- return true;
- }
- String craftName = split[0].substring(1);
- CraftType craftType = CraftType.getCraftType(craftName);
- if (craftType != null)
- {
- if (craftType.canUse(player).booleanValue()) {
- return processCommand(craftType, player, split);
- }
- player.sendMessage("§cyou are not allowed to use this type of craft");
- return true;
- }
- return false;
- }
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment