Exemple #1
0
  @Override
  public ItemStack onItemRightClick(
      ItemStack itemStack, World world, final EntityPlayer entityPlayer) {

    if (!world.isRemote) {
      return itemStack;
    }

    NBTTagCompound tag = itemStack.getTagCompound();
    boolean tagsSet = tag != null && tag.getBoolean(KEY_IO_SET);

    if (tag != null && tag.getBoolean(KEY_IO_SET)) {

      int x = tag.getInteger(KEY_IO_X);
      int y = tag.getInteger(KEY_IO_Y);
      int z = tag.getInteger(KEY_IO_Z);
      int dimension = tag.getInteger(KEY_DIMENSION);

      if (world.provider.dimensionId != dimension) {
        ChatMessageComponent c =
            ChatMessageComponent.func_111066_d("EnderIO block is in a different dimension.");
        entityPlayer.sendChatToPlayer(c);
        return itemStack;
      }

      Chunk c = world.getChunkFromBlockCoords(x, z);
      if (c == null || !c.isChunkLoaded) {
        ChatMessageComponent cm =
            ChatMessageComponent.func_111066_d("EnderIO block's chunk is not loaded.");
        entityPlayer.sendChatToPlayer(cm);
        return itemStack;
      }
      int blockId = world.getBlockId(x, y, z);
      if (blockId != EnderIO.blockEnderIo.blockID) {
        ChatMessageComponent cm =
            ChatMessageComponent.func_111066_d("EnderIO block has been destroyed.");
        entityPlayer.sendChatToPlayer(cm);
        return itemStack;
      }
      entityPlayer.openGui(EnderIO.instance, GuiHandler.GUI_ID_ENDERFACE, world, x, y, z);
      return itemStack;
    }
    ChatMessageComponent cm =
        ChatMessageComponent.func_111066_d(" Enderface not synchronized with EnderIO.");
    entityPlayer.sendChatToPlayer(cm);
    return itemStack;
  }
  @Override
  public void processCommandPlayer(EntityPlayer sender, String[] args) {
    if (args.length >= 1) {
      if (!PermissionsAPI.checkPermAllowed(
          new PermQueryPlayer(sender, getCommandPerm() + ".others"))) {
        OutputHandler.chatError(sender, Localization.get(Localization.ERROR_NOPERMISSION));
        return;
      }
      EntityPlayerMP player = FunctionHelper.getPlayerForName(args[0]);
      if (player != null) {
        PlayerInfo.getPlayerInfo(player.username).back = new WarpPoint(player);

        PropQueryPlayerZone query =
            new PropQueryPlayerZone(
                player, "ForgeEssentials.BasicCommands.spawnPoint", ZoneManager.getGLOBAL(), true);
        PermissionsAPI.getPermissionProp(query);

        String val = query.getStringValue();
        String[] split = val.split("[;_]");

        int dim = Integer.parseInt(split[0]);
        int x = Integer.parseInt(split[1]);
        int y = Integer.parseInt(split[2]);
        int z = Integer.parseInt(split[3]);

        WarpPoint point =
            new WarpPoint(dim, x + .5, y + 1, z + .5, player.cameraYaw, player.cameraPitch);

        // teleport
        FunctionHelper.setPlayer(player, point);
        player.sendChatToPlayer(Localization.get("command.spawn.done"));
        return;
      } else {
        OutputHandler.chatError(sender, Localization.format(Localization.ERROR_NOPLAYER, args[0]));
        return;
      }
    } else if (args.length == 0) {
      PropQueryPlayerZone query =
          new PropQueryPlayerZone(
              sender, "ForgeEssentials.BasicCommands.spawnPoint", ZoneManager.getGLOBAL(), true);
      PermissionsAPI.getPermissionProp(query);

      String val = query.getStringValue();
      String[] split = val.split("[;_]");

      int dim = Integer.parseInt(split[0]);
      int x = Integer.parseInt(split[1]);
      int y = Integer.parseInt(split[2]);
      int z = Integer.parseInt(split[3]);

      WarpPoint spawn =
          new WarpPoint(dim, x + .5, y + 1, z + .5, sender.cameraYaw, sender.cameraPitch);
      PlayerInfo.getPlayerInfo(sender.username).back = new WarpPoint(sender);
      TeleportCenter.addToTpQue(spawn, sender);
      sender.sendChatToPlayer(Localization.get("command.spawn.done"));
    }
  }
  @Override
  public boolean interactFirst(EntityPlayer var1) {
    if (this.worldObj.isRemote) {
      if (this.riddenByEntity == null) {
        var1.sendChatToPlayer(
            ChatMessageComponent.createFromText(
                Keyboard.getKeyName(GCCoreKeyHandlerClient.leftKey.keyCode)
                    + " / "
                    + Keyboard.getKeyName(GCCoreKeyHandlerClient.rightKey.keyCode)
                    + "  - "
                    + StatCollector.translateToLocal("gui.buggy.turn.name")));
        var1.sendChatToPlayer(
            ChatMessageComponent.createFromText(
                Keyboard.getKeyName(GCCoreKeyHandlerClient.accelerateKey.keyCode)
                    + "       - "
                    + StatCollector.translateToLocal("gui.buggy.accel.name")));
        var1.sendChatToPlayer(
            ChatMessageComponent.createFromText(
                Keyboard.getKeyName(GCCoreKeyHandlerClient.decelerateKey.keyCode)
                    + "       - "
                    + StatCollector.translateToLocal("gui.buggy.decel.name")));
        var1.sendChatToPlayer(
            ChatMessageComponent.createFromText(
                Keyboard.getKeyName(GCCoreKeyHandlerClient.openSpaceshipInv.keyCode)
                    + "       - "
                    + StatCollector.translateToLocal("gui.buggy.inv.name")));
      }

      return true;
    } else {
      if (this.riddenByEntity != null) {
        var1.mountEntity(null);
        return true;
      } else {
        var1.mountEntity(this);
        return true;
      }
    }
  }
  @Override
  public boolean interactFirst(EntityPlayer var1) {
    if (this.worldObj.isRemote) {
      if (this.riddenByEntity == null) {
        var1.sendChatToPlayer(
            ChatMessageComponent.createFromText(
                Keyboard.getKeyName(GCKeyHandler.leftKey.keyCode)
                    + " / "
                    + Keyboard.getKeyName(GCKeyHandler.rightKey.keyCode)
                    + "  - "
                    + LanguageRegistry.instance().getStringLocalization("gui.buggy.turn.name")));
        var1.sendChatToPlayer(
            ChatMessageComponent.createFromText(
                Keyboard.getKeyName(GCKeyHandler.accelerateKey.keyCode)
                    + "       - "
                    + LanguageRegistry.instance().getStringLocalization("gui.buggy.accel.name")));
        var1.sendChatToPlayer(
            ChatMessageComponent.createFromText(
                Keyboard.getKeyName(GCKeyHandler.decelerateKey.keyCode)
                    + "       - "
                    + LanguageRegistry.instance().getStringLocalization("gui.buggy.decel.name")));
        var1.sendChatToPlayer(
            ChatMessageComponent.createFromText(
                Keyboard.getKeyName(GCKeyHandler.openSpaceshipInv.keyCode)
                    + "       - "
                    + LanguageRegistry.instance().getStringLocalization("gui.buggy.inv.name")));
      }

      return true;
    } else {
      if (this.riddenByEntity != null) {
        var1.mountEntity(null);
        return true;
      } else {
        var1.mountEntity(this);
        return true;
      }
    }
  }
  @Override
  public boolean onItemUse(
      ItemStack itemstack,
      EntityPlayer player,
      World world,
      int x,
      int y,
      int z,
      int side,
      float xOffset,
      float yOffset,
      float zOffset) {
    if (world.isRemote) {
      return true;
    }

    TileEntity te = world.getBlockTileEntity(x, y, z);
    if (te instanceof TileRedstoneCable) {
      int value;
      boolean foundNonZero = false;
      for (int i = 0; i < 16; i++) {
        value = ((TileRedstoneCable) te).getNetwork().getPowerLevelOutput(i);

        if (value != 0) {
          player.sendChatToPlayer(_colorNames[i] + ": " + value);
          foundNonZero = true;
        }
      }

      if (!foundNonZero) {
        player.sendChatToPlayer("All RedNet subnets are 0");
      } else {
        player.sendChatToPlayer("All other RedNet subnets are 0");
      }

      return true;
    } else if (te instanceof TileEntityRedNetLogic) {
      int value;
      boolean foundNonZero = false;
      for (int i = 0; i < ((TileEntityRedNetLogic) te).getBufferLength(13); i++) {
        value = ((TileEntityRedNetLogic) te).getVariableValue(i);

        if (value != 0) {
          player.sendChatToPlayer("Variable " + i + ": " + value);
          foundNonZero = true;
        }
      }

      if (!foundNonZero) {
        player.sendChatToPlayer("All variables are 0");
      } else {
        player.sendChatToPlayer("All other variables are 0");
      }

      return true;
    }
    return false;
  }
  @Override
  public boolean onSneakRightClick(EntityPlayer player, int side) {
    recurringNodes.clear();
    cleaningNodes.clear();

    player.sendChatToPlayer(
        ChatMessageComponent.createFromText(
            EnumColor.DARK_BLUE
                + "[Mekanism] "
                + EnumColor.GREY
                + MekanismUtils.localize("tooltip.configurator.pumpReset")));

    return true;
  }
 @Override
 public void processCommandPlayer(EntityPlayer sender, String[] args) {
   if (args.length > 1) {
     if (args[1].equals("remove")) {
       try {
         rules.remove(new Integer(args[0]) - 1);
       } catch (NumberFormatException e) {
         OutputHandler.chatError(sender, Localization.format(Localization.ERROR_NAN, args[0]));
       } catch (IndexOutOfBoundsException e) {
         sender.sendChatToPlayer("That rule does not exist.");
       }
     } else {
       try {
         String newRule = "";
         for (int i = 1; i < args.length; i++) newRule = newRule + args[i] + " ";
         rules.add(new Integer(args[0]) - 1, newRule);
       } catch (NumberFormatException e) {
         sender.sendChatToPlayer("Not a number. Try " + getSyntaxConsole());
       }
     }
     saveRules();
   } else for (String rule : rules) sender.sendChatToPlayer(rule);
 }
 @Override
 public void processCommandPlayer(EntityPlayer sender, String[] args) {
   if (args.length == 0) {
     String msg = "";
     for (String warp : CommandDataManager.warps.keySet()) {
       msg = warp + ", " + msg;
     }
     sender.sendChatToPlayer(msg);
   } else if (args.length == 1) {
     if (CommandDataManager.warps.containsKey(args[0].toLowerCase())) {
       if (PermissionsAPI.checkPermAllowed(
           new PermQueryPlayer(sender, getCommandPerm() + "." + args[0].toLowerCase()))) {
         Warp warp = CommandDataManager.warps.get(args[0].toLowerCase());
         PlayerInfo playerInfo = PlayerInfo.getPlayerInfo(sender.username);
         playerInfo.back = new WarpPoint(sender);
         TeleportCenter.addToTpQue(warp.getPoint(), sender);
       } else {
         OutputHandler.chatError(sender, Localization.get(Localization.ERROR_PERMDENIED));
       }
     } else {
       OutputHandler.chatError(sender, Localization.get("command.warp.notfound"));
     }
   } else if (args.length == 2) {
     if (PermissionsAPI.checkPermAllowed(
         new PermQueryPlayer(sender, getCommandPerm() + ".admin"))) {
       if (args[0].equalsIgnoreCase("set")) {
         if (CommandDataManager.warps.containsKey(args[1].toLowerCase())) {
           OutputHandler.chatError(sender, Localization.get("command.warp.alreadyexists"));
         } else {
           CommandDataManager.addWarp(new Warp(args[1].toLowerCase(), new WarpPoint(sender)));
           OutputHandler.chatConfirmation(sender, Localization.get(Localization.DONE));
         }
       } else if (args[0].equalsIgnoreCase("del")) {
         if (CommandDataManager.warps.containsKey(args[1].toLowerCase())) {
           CommandDataManager.removeWarp(CommandDataManager.warps.get(args[1]));
           OutputHandler.chatConfirmation(sender, Localization.get(Localization.DONE));
         } else {
           OutputHandler.chatError(sender, Localization.get("command.warp.notfound"));
         }
       } else {
         OutputHandler.chatError(
             sender, Localization.get(Localization.ERROR_BADSYNTAX) + getSyntaxPlayer(sender));
       }
     } else {
       OutputHandler.chatError(sender, Localization.get(Localization.ERROR_PERMDENIED));
     }
   }
 }
Exemple #9
0
  public boolean onItemUseFirst(
      ItemStack stack,
      EntityPlayer player,
      World world,
      int x,
      int y,
      int z,
      int side,
      float hitX,
      float hitY,
      float hitZ) {
    ForgeDirection face = ForgeDirection.getOrientation(side);

    if (face == ForgeDirection.UP) {
      player.sendChatToPlayer("Help " + world.setBlock(x, y, z, Block.tilledField.blockID));
      world.setBlock(x, y, z, Block.tilledField.blockID);
    }

    return true;
  }
  public static void processCommandPlayer(EntityPlayer sender, String[] args) {
    sender.sendChatToPlayer("TEST! Promote parsing");

    if (args.length == 0)
      // Not possible
      // OutputHandler.chatError(sender,
      // Localization.get(Localization.ERROR_BADSYNTAX) + "");
      return;

    EntityPlayerMP player = FunctionHelper.getPlayerForName(args[0]);
    if (player == null) {
      // No such player!
    }
    if (args.length == 1)
      // default ladder
      return;
    if (!args[1].equalsIgnoreCase("from")) {
      // Ladder specified.
      // Ladder = arg 1
      if (args.length >= 3) {
        if (args.length == 4) {
          // Zone set.
          // arg 3 = zone
        }
      }
      return;
    }
    if (args[1].equalsIgnoreCase("from")) {
      // Ladder specified.
      // Ladder = arg 1
      if (args.length >= 3) {
        if (args.length == 4) {
          // Zone set.
          // arg 3 = zone
        }
      }
      return;
    }

    OutputHandler.chatError(sender, Localization.get(Localization.ERROR_BADSYNTAX) + "");
  }
  @Override
  public boolean onBlockActivated(
      EntityPlayer player, int side, float hitX, float hitY, float hitZ) {
    ItemStack held = player.getCurrentEquippedItem();
    if (held != null && held.itemID == Item.redstoneRepeater.itemID) {
      if (held.stackTagCompound != null) {
        if (held.stackTagCompound.hasKey("miscperipheralsLinkX")
            && held.stackTagCompound.hasKey("miscperipheralsLinkY")
            && held.stackTagCompound.hasKey("miscperipheralsLinkZ")
            && held.stackTagCompound.hasKey("miscperipheralsLinkDim")) {
          ChunkCoordinates link =
              new ChunkCoordinates(
                  held.stackTagCompound.getInteger("miscperipheralsLinkX"),
                  held.stackTagCompound.getInteger("miscperipheralsLinkY"),
                  held.stackTagCompound.getInteger("miscperipheralsLinkZ"));
          int linkDim = held.stackTagCompound.getInteger("miscperipheralsLinkDim");

          World srcWorld = MinecraftServer.getServer().worldServerForDimension(linkDim);
          if (srcWorld == null) {
            player.sendChatToPlayer("Link failed: World is missing");
          } else {
            TileEntity te = srcWorld.getBlockTileEntity(link.posX, link.posY, link.posZ);
            if (!(te instanceof TileTeleporter)) {
              player.sendChatToPlayer("Link failed: Teleporter no longer exists");
            } else {
              TileTeleporter src = (TileTeleporter) te;

              if (link.posX == xCoord && link.posY == yCoord && link.posZ == zCoord) {
                player.sendChatToPlayer("Link canceled");
              } else {
                boolean unlinked = false;
                for (int i = 0; i < src.links.size(); i++) {
                  LinkData rlink = src.links.get(i);
                  System.out.println(
                      "comparing: "
                          + rlink.link.posX
                          + " "
                          + xCoord
                          + " "
                          + rlink.link.posY
                          + " "
                          + yCoord
                          + " "
                          + rlink.link.posZ
                          + " "
                          + zCoord);
                  if (rlink.link.posX == xCoord
                      && rlink.link.posY == yCoord
                      && rlink.link.posZ == zCoord
                      && rlink.linkDim == worldObj.provider.dimensionId) {
                    player.sendChatToPlayer(
                        "Unlinked teleporter at "
                            + rlink.linkDim
                            + ":("
                            + rlink.link.posX
                            + ","
                            + rlink.link.posY
                            + ","
                            + rlink.link.posZ
                            + ") (link "
                            + (i + 1)
                            + ") from this teleporter");
                    src.links.remove(i);
                    unlinked = true;
                    break;
                  }
                }

                if (!unlinked) {
                  src.addLink(
                      worldObj.provider.dimensionId, new ChunkCoordinates(xCoord, yCoord, zCoord));
                  player.sendChatToPlayer(
                      "Linked teleporter at "
                          + linkDim
                          + ":("
                          + link.posX
                          + ","
                          + link.posY
                          + ","
                          + link.posZ
                          + ") (link "
                          + src.links.size()
                          + ") to this teleporter");
                }
              }
            }
          }

          held.stackTagCompound.removeTag("miscperipheralsLinkX");
          held.stackTagCompound.removeTag("miscperipheralsLinkY");
          held.stackTagCompound.removeTag("miscperipheralsLinkZ");
          held.stackTagCompound.removeTag("miscperipheralsLinkDim");
          if (held.stackTagCompound.hasKey("display")) {
            NBTTagCompound display = held.stackTagCompound.getCompoundTag("display");
            display.removeTag("Lore");
            if (display.getTags().isEmpty()) {
              held.stackTagCompound.removeTag("display");
            } else {
              held.stackTagCompound.setTag("display", display);
            }
          }

          return true;
        }
      }

      if (held.stackTagCompound == null) held.stackTagCompound = new NBTTagCompound();
      held.stackTagCompound.setInteger("miscperipheralsLinkX", xCoord);
      held.stackTagCompound.setInteger("miscperipheralsLinkY", yCoord);
      held.stackTagCompound.setInteger("miscperipheralsLinkZ", zCoord);
      held.stackTagCompound.setInteger("miscperipheralsLinkDim", worldObj.provider.dimensionId);
      NBTTagCompound display = new NBTTagCompound();
      NBTTagList lore = new NBTTagList();
      lore.appendTag(new NBTTagString("", "Turtle Teleporter Link"));
      lore.appendTag(
          new NBTTagString(
              "",
              worldObj.provider.dimensionId + ":(" + xCoord + "," + yCoord + "," + zCoord + ")"));
      display.setTag("Lore", lore);
      held.stackTagCompound.setTag("display", display);

      player.sendChatToPlayer("Link started");
      return true;
    }

    return false;
  }
Exemple #12
0
	public BukkitServer(MinecraftServer server) {
		instance = this;
		cbBuild = BukkitContainer.CRAFT_VERSION;
		configMan = server.getConfigurationManager();
		theServer = server;
		List<Integer> ids = Arrays.asList(DimensionManager.getIDs());
		Iterator<Integer> _ = ids.iterator();

		System.out.println("IS THE INSTANCE NULL? " + (instance == null ? "YES" : "NO"));
		this.pluginManager = new SimplePluginManager(this, commandMap);
		
		//pluginManager = new SimplePluginManager(this, commandMap);
		bukkitConfig = new YamlConfiguration();
		YamlConfiguration yml = new YamlConfiguration();
		try {
			yml.load(getClass().getClassLoader().getResourceAsStream("configurations/bukkit.yml"));
			if (!new File("bukkit.yml").exists()) {
				new File("bukkit.yml").createNewFile();
				yml.save("bukkit.yml");
			}
			bukkitConfig.load("bukkit.yml");
			bukkitConfig.addDefaults(yml);
			bukkitConfig.save("bukkit.yml");

		}
		catch (Exception e) {
			e.printStackTrace();
		}

		String vanillaName = theServer.worldServerForDimension(0).getWorldInfo().getWorldName();
		
		while(_.hasNext()) {
			int i = _.next();
			WorldServer x = theServer.worldServerForDimension(i);
			BukkitWorld world = new BukkitWorld(x, this.getGenerator(x.getWorldInfo().getDimension()), this.wtToEnv(x));
			worlds.put(i, world);
			//if (!x.getWorldInfo().getWorldName().equals(vanillaName))
				pluginWorldMapping.put(x.getWorldInfo().getWorldName(), world);
		}
		this.theLogger = BukkitContainer.bukkitLogger;
		theLogger.info("Bukkit API for Vanilla, version " + apiVer + " starting up...");
		thePluginLoader = new BukkitClassLoader(getClass().getClassLoader());
		
		// I MAINTAIN THAT THIS WILL WORK EVENTUALLY
		/*try {
			System.out.println("This is a test of the SPM Loader!");
			// this *should* load simplepluginamanger via BukkitClassLoader
			Class<?> pluginMan = thePluginLoader.loadClass("org.bukkit.plugin.SimplePluginManager");
			System.out.println("Loaded class: " + pluginMan.getCanonicalName() + " via " + pluginMan.getClassLoader().getClass().getCanonicalName());
			Method insn = pluginMan.getMethod("newInstance", new Class[] { BukkitServer.class, SimpleCommandMap.class });
			insn.setAccessible(true);
			this.pluginManager = (PluginManager) insn.invoke(null, this, this.commandMap);


		} catch (Exception e1) {
			throw new RuntimeException("BukkitForge encountered an error (most likely it  was installed incorrectly!)", e1);
		}*/
		Bukkit.setServer(this);
		this.theHelpMap = new SimpleHelpMap(this);
		this.theMessenger = new StandardMessenger();
		//theLogger.info("Testing the bukkit Logger!");
		this.entityMetadata = new EntityMetadataStore();
		this.playerMetadata = new PlayerMetadataStore();
		this.worldMetadata = new WorldMetadataStore();
		this.warningState = Warning.WarningState.DEFAULT;
		this.console = (BukkitConsoleCommandSender) BukkitConsoleCommandSender.getInstance();
		// wait until server start

		/*try {
			Thread.currentThread().wait();
		} catch (InterruptedException e) {
			theLogger.log(Level.FINE, "The server was interrupted, it might explode!", e);
		}*/
		theLogger.info("Completing load...");
		// fix for the 'mod recipes disappear' bug
		BukkitModRecipeHelper.saveCraftingManagerRecipes();
		//configMan = theServer.getConfigurationManager();
		//theServer = (DedicatedServer) server;
		HelpTopic myHelp = new CommandHelpTopic("bexec", "Run a command forcibly bukkit aliases", "", "");
		Bukkit.getServer().getHelpMap().addTopic(myHelp);
		
		loadPlugins();
		enablePlugins(PluginLoadOrder.STARTUP);

		theLogger.info("Loading PostWorld plugins...");
		enablePlugins(PluginLoadOrder.POSTWORLD);
		theLogger.info("Loaded plugins: ");
		for (Plugin i : pluginManager.getPlugins()) {
			theLogger.info(i.getName() + "- Enabled: " +  i.isEnabled());
		}
		ForgeEventHandler.ready = true;
		commandMap.doneLoadingPlugins((ServerCommandManager) theServer.getCommandManager());
		if (!theServer.isDedicatedServer()) {
			EntityPlayer par0 = theServer.getConfigurationManager().getPlayerForUsername(theServer.getServerOwner());
			if (par0 != null) {
				par0.sendChatToPlayer(ChatColor.GREEN + "BukkitForge has finished loading! You may now enjoy a (relatively) lag-free game!");
				theServer.getCommandManager().executeCommand(par0, "/plugins");
				(new PlayerTracker()).onPlayerLogin(par0);
			}

		}

	}
  public void onNeighborBlockChange(World world, int x, int y, int z, int neighborID) {
    if (world.isRemote) return;
    if (world.getBlockId(x, y, z) == 0) return;

    int meta = world.getBlockMetadata(x, y, z);

    if (MCExtremeUtils.isBlockPowered(world, x, y, z)) {
      EntityPlayer mainPlayer =
          (EntityPlayer)
              MinecraftServer.getServer().getConfigurationManager().playerEntityList.get(0);
      mainPlayer.sendChatToPlayer(
          ChatMessageComponent.createFromText("There has been a Block update"));

      if (meta < 6) {
        world.setBlockMetadataWithNotify(x, y, z, meta + 6, 3);

        if (type == "BREAKER") breakBlock(x, y, z, world);
        else placeBlock(x, y, z, world);
      }
    } else {
      if (meta > 5) world.setBlockMetadataWithNotify(x, y, z, meta - 6, 3);
    }

    // DEPRECATED CODE BELOW
    /*if (world.isRemote) return;

    int meta = world.getBlockMetadata(x, y, z);
    int xPos = x + (meta == 3 ? 1 : (meta == 2 ? -1 : 0));
    int yPos = y + (meta == 0 ? 1 : (meta == 1 ? -1 : 0));
    int zPos = z + (meta == 5 ? 1 : (meta == 4 ? -1 : 0));

    if (world.isBlockIndirectlyGettingPowered(x, y, z) || world.isBlockIndirectlyGettingPowered(x, y + 1, z) || (world.getBlockId(x, y, z) != 0 && Block.blocksList[neighborID].canProvidePower()) && world.getBlockId(xPos, yPos, zPos) != 0)
    {
        ArrayList<ItemStack> returns = Block.blocksList[world.getBlockId(xPos, yPos, zPos)].getBlockDropped(world, x, y, z, world.getBlockMetadata(x, y, z), 0);

        if (meta >= 0 && meta <= 5)
        {
            TileEntity tileEntity = world.getBlockTileEntity(x + (meta == 2 ? 1 : (meta == 3 ? -1 : 0)), y + (meta == 1 ? 1 : (meta == 0 ? -1 : 0)), z + (meta == 4 ? 1 : (meta == 5 ? -1 : 0)));
            IInventory inventory = null;

            if (tileEntity != null && tileEntity instanceof IInventory) inventory = (IInventory) tileEntity;

            ListIterator<ItemStack> returnsIterator = returns.listIterator();

            while (returnsIterator.hasNext())
            {
                ItemStack toPush = returnsIterator.next();
                System.out.println(toPush);

                if (inventory != null)
                {
                    for (int i = 0; i < inventory.getSizeInventory(); i++)
                    {
                        ItemStack stackInSlot = inventory.getStackInSlot(i);

                        if (stackInSlot == null)
                        {
                            inventory.setInventorySlotContents(i, toPush);
                            toPush = null;
                        }
                        else if (stackInSlot.itemID == toPush.itemID)
                        {
                            if ((stackInSlot.stackSize + toPush.stackSize) <= stackInSlot.getMaxStackSize())
                            {
                                ItemStack copy = stackInSlot.copy();
                                copy.stackSize += toPush.stackSize;
                                inventory.setInventorySlotContents(i, copy);
                                toPush = null;
                            }
                            else if (stackInSlot.stackSize < stackInSlot.getMaxStackSize())
                            {
                                int toDraw = stackInSlot.getMaxStackSize() - stackInSlot.stackSize;
                                ItemStack copy = stackInSlot.copy();
                                copy.stackSize = copy.getMaxStackSize();
                                inventory.setInventorySlotContents(i, copy);
                                toPush.stackSize -= toDraw;
                            }
                        }
                    }
                }

                if (toPush != null)
                {
                    EntityItem item = new EntityItem(world, 0.5F + x + (meta == 2 ? 1 : (meta == 3 ? -1 : 0)), 0.5F + y + (meta == 1 ? 1 : (meta == 0 ? -1 : 0)), 0.5F +  z + (meta == 4 ? 1 : (meta == 5 ? -1 : 0)), toPush);
                    item.delayBeforeCanPickup = 10;
                    world.spawnEntityInWorld(item);
                }
            }

            Block.blocksList[world.getBlockId(xPos, yPos, zPos)].breakBlock(world, xPos, yPos, zPos, world.getBlockId(xPos, yPos, zPos), world.getBlockMetadata(xPos, yPos, zPos));
            world.setBlockToAir(xPos, yPos, zPos);
        }
        else if (meta >= 6 && meta <= 11)
        {

        }
    }*/
  }
 @Override
 public void processCommandPlayer(EntityPlayer sender, String[] args) {
   if (args.length == 0 || args.length == 1) {
     OutputHandler.chatError(
         sender, Localization.get(Localization.ERROR_BADSYNTAX) + getSyntaxPlayer(sender));
     return;
   }
   if (args.length > 1) {
     if (args[0].equalsIgnoreCase("server") || args[0].equalsIgnoreCase("console")) {
       clearReply(sender.getCommandSenderName());
       clearReply("server");
       addReply(sender.getCommandSenderName(), "server");
       addReply("server", sender.getCommandSenderName());
       String senderMessage =
           FEChatFormatCodes.GOLD
               + "[ me -> "
               + FEChatFormatCodes.PURPLE
               + "Server"
               + FEChatFormatCodes.GOLD
               + "] "
               + FEChatFormatCodes.GREY;
       String receiverMessage =
           FEChatFormatCodes.GOLD
               + "["
               + FEChatFormatCodes.PURPLE
               + "Server"
               + FEChatFormatCodes.GOLD
               + " -> me ] ";
       for (int i = 0; i < args.length; i++) {
         receiverMessage += args[i];
         senderMessage += args[i];
         if (i != args.length - 1) {
           receiverMessage += " ";
           senderMessage += " ";
         }
       }
       MinecraftServer.getServer().sendChatToPlayer(receiverMessage);
       sender.sendChatToPlayer(senderMessage);
     } else {
       EntityPlayerMP receiver = FunctionHelper.getPlayerForName(sender, args[0]);
       if (receiver == null) {
         OutputHandler.chatError(
             sender, Localization.format(Localization.ERROR_NOPLAYER, args[0]));
         return;
       }
       clearReply(sender.getCommandSenderName());
       clearReply(receiver.getCommandSenderName());
       addReply(sender.getCommandSenderName(), receiver.getCommandSenderName());
       addReply(receiver.getCommandSenderName(), sender.getCommandSenderName());
       String senderMessage =
           FEChatFormatCodes.GOLD
               + "[ me -> "
               + FEChatFormatCodes.GREY
               + receiver.getCommandSenderName()
               + FEChatFormatCodes.GOLD
               + "] "
               + FEChatFormatCodes.WHITE;
       String receiverMessage =
           FEChatFormatCodes.GOLD
               + "["
               + FEChatFormatCodes.GREY
               + sender.getCommandSenderName()
               + FEChatFormatCodes.GOLD
               + " -> me ] "
               + FEChatFormatCodes.WHITE;
       for (int i = 1; i < args.length; i++) {
         receiverMessage += args[i];
         senderMessage += args[i];
         if (i != args.length - 1) {
           receiverMessage += " ";
           senderMessage += " ";
         }
       }
       sender.sendChatToPlayer(senderMessage);
       receiver.sendChatToPlayer(receiverMessage);
     }
   }
 }
Exemple #15
0
  public CraftServer(MinecraftServer server) {
    instance = this;
    configMan = server.getConfigurationManager();
    theServer = server;
    List<Integer> ids = Arrays.asList(DimensionManager.getIDs());
    Iterator<Integer> worldIter = ids.iterator();

    System.out.println("IS THE INSTANCE NULL? " + (instance == null ? "YES" : "NO"));
    this.pluginManager = new SimplePluginManager(this, commandMap);

    // pluginManager = new SimplePluginManager(this, commandMap);
    configuration = new YamlConfiguration();
    YamlConfiguration yml = new YamlConfiguration();
    try {
      yml.load(getClass().getClassLoader().getResourceAsStream("configurations/bukkit.yml"));
      if (!new File("bukkit.yml").exists()) {
        new File("bukkit.yml").createNewFile();
        yml.save("bukkit.yml");
      }
      configuration.load("bukkit.yml");
      configuration.addDefaults(yml);
      configuration.save("bukkit.yml");

    } catch (Exception e) {
      e.printStackTrace();
    }

    for (int id : ids) {
      worlds.get(id);
    }

    this.theLogger = BukkitContainer.bukkitLogger;
    // theLogger.info("Bukkit API for Vanilla, version " + apiVer + " starting up...");
    theLogger.info(
        "Starting BukkitForge "
            + BukkitContainer.BF_FULL_VERSION
            + "(CB-Version: "
            + BukkitContainer.CRAFT_VERSION
            + ").");

    Bukkit.setServer(this);
    this.theHelpMap = new SimpleHelpMap(this);
    this.theMessenger = new StandardMessenger();
    this.entityMetadata = new EntityMetadataStore();
    this.playerMetadata = new PlayerMetadataStore();
    this.worldMetadata = new WorldMetadataStore();
    this.warningState = Warning.WarningState.DEFAULT;
    this.console = (CraftConsoleCommandSender) CraftConsoleCommandSender.getInstance();

    CraftModRecipeHelper.saveCraftingManagerRecipes();

    HelpTopic myHelp =
        new CommandHelpTopic("bexec", "Run a command forcibly bukkit aliases", "", "");
    Bukkit.getServer().getHelpMap().addTopic(myHelp);

    loadPlugins();
    enablePlugins(PluginLoadOrder.STARTUP);

    // load plugin worlds - TODO

    theLogger.info("Loading PostWorld plugins...");
    enablePlugins(PluginLoadOrder.POSTWORLD);
    theLogger.info("Loaded plugins: ");
    for (Plugin i : pluginManager.getPlugins()) {
      theLogger.info(i.getName() + "- Enabled: " + i.isEnabled());
    }
    ForgeEventHandler.ready = true;
    commandMap.doneLoadingPlugins((ServerCommandManager) theServer.getCommandManager());
    if (!theServer.isDedicatedServer()) {
      EntityPlayer player =
          theServer.getConfigurationManager().getPlayerForUsername(theServer.getServerOwner());
      if (player != null) {
        player.sendChatToPlayer(
            ChatColor.GREEN
                + "CraftForge has finished loading! You may now enjoy a (relatively) lag-free game!");
        theServer.getCommandManager().executeCommand(player, "/plugins");
        (new PlayerTracker()).onPlayerLogin(player);
      }
    }
  }
  @Override
  public boolean interact(EntityPlayer par1EntityPlayer) {
    ItemStack itemstack = par1EntityPlayer.inventory.getCurrentItem();

    if (this.isTamed()) {
      if (itemstack != null) {
        if (itemstack.itemID == this.getFavoriteFood()) {
          if (par1EntityPlayer.username.equals(this.getOwnerName())) {
            --itemstack.stackSize;

            if (itemstack.stackSize <= 0) {
              par1EntityPlayer.inventory.setInventorySlotContents(
                  par1EntityPlayer.inventory.currentItem, (ItemStack) null);
            }

            if (FMLCommonHandler.instance().getEffectiveSide() == Side.CLIENT) {
              GalacticraftMars.proxy.opengSlimelingGui(this, 1);
            }

            if (this.rand.nextInt(2) == 0) {
              this.setRandomFavFood();
            }
          } else {
            if (par1EntityPlayer instanceof GCCorePlayerMP) {
              if (((GCCorePlayerMP) par1EntityPlayer).getChatCooldown() == 0) {
                par1EntityPlayer.sendChatToPlayer(
                    ChatMessageComponent.createFromText("This isn't my Slimeling!"));
                ((GCCorePlayerMP) par1EntityPlayer).setChatCooldown(100);
              }
            }
          }
        } else {
          if (FMLCommonHandler.instance().getEffectiveSide() == Side.CLIENT) {
            GalacticraftMars.proxy.opengSlimelingGui(this, 0);
          }
        }
      } else {
        if (FMLCommonHandler.instance().getEffectiveSide() == Side.CLIENT) {
          GalacticraftMars.proxy.opengSlimelingGui(this, 0);
        }
      }
    } else if (itemstack != null && itemstack.itemID == Item.slimeBall.itemID) {
      if (!par1EntityPlayer.capabilities.isCreativeMode) {
        --itemstack.stackSize;
      }

      if (itemstack.stackSize <= 0) {
        par1EntityPlayer.inventory.setInventorySlotContents(
            par1EntityPlayer.inventory.currentItem, (ItemStack) null);
      }

      if (!this.worldObj.isRemote) {
        if (this.rand.nextInt(3) == 0) {
          this.setTamed(true);
          this.setPathToEntity((PathEntity) null);
          this.setAttackTarget((EntityLivingBase) null);
          this.aiSit.setSitting(true);
          this.setHealth(20.0F);
          this.setOwner(par1EntityPlayer.getCommandSenderName());
          this.playTameEffect(true);
          this.worldObj.setEntityState(this, (byte) 7);
        } else {
          this.playTameEffect(false);
          this.worldObj.setEntityState(this, (byte) 6);
        }
      }

      return true;
    }

    return super.interact(par1EntityPlayer);
  }
  @Override
  public void processCommandPlayer(EntityPlayer sender, String[] args) {
    if (FMLCommonHandler.instance().getEffectiveSide().isClient()) return;

    boolean set = ModuleWorldBorder.set;
    // Info
    if (args.length == 0) {
      sender.sendChatToPlayer(Localization.get(Localization.WB_STATUS_HEADER));
      if (set) {
        sender.sendChatToPlayer(
            FEChatFormatCodes.GREEN + Localization.get(Localization.WB_STATUS_BORDERSET));
        sender.sendChatToPlayer("Coordinates :");
        if (ModuleWorldBorder.shape.equals(BorderShape.square)) {
          sender.sendChatToPlayer(
              "centerX:" + ModuleWorldBorder.X + "  centerZ:" + ModuleWorldBorder.Z);
          sender.sendChatToPlayer("rad:" + ModuleWorldBorder.rad + " Shape: Square");
          sender.sendChatToPlayer(
              "minX:" + ModuleWorldBorder.minX + "  maxX:" + ModuleWorldBorder.maxX);
          sender.sendChatToPlayer(
              "minZ:" + ModuleWorldBorder.minZ + "  maxZ:" + ModuleWorldBorder.maxZ);
        }
        if (ModuleWorldBorder.shape.equals(BorderShape.round)) {
          sender.sendChatToPlayer(
              "centerX:" + ModuleWorldBorder.X + "  centerZ:" + ModuleWorldBorder.Z);
          sender.sendChatToPlayer("rad:" + ModuleWorldBorder.rad + " Shape: Round");
        }
      } else {
        sender.sendChatToPlayer(
            FEChatFormatCodes.RED + Localization.get(Localization.WB_STATUS_BORDERNOTSET));
      }
      return;
    }
    // Fill
    if (args[0].equalsIgnoreCase("fill")) {
      if (args.length == 1) {
        sender.sendChatToPlayer(
            FEChatFormatCodes.RED + Localization.get(Localization.WB_LAGWARING));
        sender.sendChatToPlayer(
            FEChatFormatCodes.RED + Localization.get(Localization.WB_FILL_INFO));
        sender.sendChatToPlayer(Localization.get(Localization.WB_FILL_CONFIRM));
        return;
      }
      if (args[1].equalsIgnoreCase("start")) {
        MinecraftServer server = FMLCommonHandler.instance().getMinecraftServerInstance();
        WorldServer world = server.worldServers[sender.dimension];

        if (taskGooing != null) {
          sender.sendChatToPlayer(Localization.get(Localization.WB_FILL_ONLYONCE));
        } else {
          taskGooing = new TickTaskFill(world);
        }
        return;
      }
      if (args[1].equalsIgnoreCase("continue")) {
        MinecraftServer server = FMLCommonHandler.instance().getMinecraftServerInstance();
        WorldServer world = server.worldServerForDimension(sender.dimension);

        if (taskGooing != null) {
          sender.sendChatToPlayer(Localization.get(Localization.WB_FILL_ONLYONCE));
        } else {
          taskGooing = new TickTaskFill(world);
        }
        return;
      }
      if (args[1].equalsIgnoreCase("cancel")) {
        taskGooing.stop();
        return;
      }
      if (args[1].equalsIgnoreCase("message")) {
        if (args[2].equalsIgnoreCase("off") || args[2].equalsIgnoreCase("false")) {
          TickTaskFill.enablemsg = false;
        } else {
          TickTaskFill.enablemsg = true;
        }
        return;
      }
    }
    // Set
    if (args[0].equalsIgnoreCase("set") && args.length >= 3) {
      BorderShape shape = BorderShape.valueOf(args[1].toLowerCase());
      int rad = parseIntWithMin(sender, args[2], 0);

      if (args.length == 3) {
        ModuleWorldBorder.setCenter(rad, (int) sender.posX, (int) sender.posZ, shape, true);
        sender.sendChatToPlayer(
            Localization.get(Localization.WB_SET)
                .replaceAll("%r", "" + rad)
                .replaceAll("%x", "" + (int) sender.posX)
                .replaceAll("%z", "" + (int) sender.posZ));
        return;
      }
      if (args.length == 5) {
        int X = parseInt(sender, args[3]);
        int Z = parseInt(sender, args[4]);

        ModuleWorldBorder.setCenter(rad, X, Z, shape, true);
        sender.sendChatToPlayer(
            Localization.get(Localization.WB_SET)
                .replaceAll("%r", "" + rad)
                .replaceAll("%x", "" + X)
                .replaceAll("%z", "" + Z));
        return;
      }
    }
    // Command unknown
    OutputHandler.chatError(
        sender, Localization.get(Localization.ERROR_BADSYNTAX) + getSyntaxPlayer(sender));
  }
  @Override
  public void onLivingUpdate() {
    if (this.ticks >= Long.MAX_VALUE) {
      this.ticks = 1;
    }

    this.ticks++;

    if (this.getHealth() <= 0) {
      this.headsRemaining = 0;
    } else if (this.getHealth() <= this.getMaxHealth() / 3.0) {
      this.headsRemaining = 1;
    } else if (this.getHealth() <= 2 * (this.getMaxHealth() / 3.0)) {
      this.headsRemaining = 2;
    }

    final EntityPlayer player =
        this.worldObj.getClosestPlayer(this.posX, this.posY, this.posZ, 20.0);

    if (player != null && !player.equals(this.targetEntity)) {
      if (this.getDistanceSqToEntity(player) < 400.0D) {
        this.getNavigator().getPathToEntityLiving(player);
        this.targetEntity = player;
      }
    } else {
      this.targetEntity = null;
    }

    new Vector3(this);

    if (this.roomCoords != null && this.roomSize != null) {
      @SuppressWarnings("unchecked")
      List<Entity> entitiesWithin =
          this.worldObj.getEntitiesWithinAABB(
              EntityPlayer.class,
              AxisAlignedBB.getAABBPool()
                  .getAABB(
                      this.roomCoords.intX() - 1,
                      this.roomCoords.intY() - 1,
                      this.roomCoords.intZ() - 1,
                      this.roomCoords.intX() + this.roomSize.intX(),
                      this.roomCoords.intY() + this.roomSize.intY(),
                      this.roomCoords.intZ() + this.roomSize.intZ()));

      this.entitiesWithin = entitiesWithin.size();

      if (this.entitiesWithin == 0 && this.entitiesWithinLast != 0) {
        @SuppressWarnings("unchecked")
        List<EntityPlayer> entitiesWithin2 =
            this.worldObj.getEntitiesWithinAABB(
                EntityPlayer.class,
                AxisAlignedBB.getAABBPool()
                    .getAABB(
                        this.roomCoords.intX() - 11,
                        this.roomCoords.intY() - 11,
                        this.roomCoords.intZ() - 11,
                        this.roomCoords.intX() + this.roomSize.intX() + 10,
                        this.roomCoords.intY() + this.roomSize.intY() + 10,
                        this.roomCoords.intZ() + this.roomSize.intZ() + 10));

        for (EntityPlayer p : entitiesWithin2) {
          p.sendChatToPlayer(
              ChatMessageComponent.createFromText(
                  "Boss despawned, don't leave the boss room while fighting! Re-enter room to respawn boss."));
        }

        this.setDead();

        if (this.spawner != null) {
          this.spawner.playerCheated = true;
        }

        return;
      }

      this.entitiesWithinLast = this.entitiesWithin;
    }

    super.onLivingUpdate();
  }