@Command(
      aliases = {"gamemode", "gm"},
      usage =
          "[player] <0|1|2|survival|creative|adventure> (0 = SURVIVAL, 1 = CREATIVE, 2 = ADVENTURE)",
      desc = "Change a player's game mode",
      min = 1,
      max = 2)
  @CommandPermissions("vanilla.command.gamemode")
  public void gamemode(CommandContext args, CommandSource source) throws CommandException {
    int index = 0;
    Player player;
    if (args.length() == 2) {
      if (Spout.getEngine() instanceof Client) {
        throw new CommandException("You cannot search for players unless you are in server mode.");
      }
      player = Spout.getEngine().getPlayer(args.getString(index++), true);
      if (player == null) {
        throw new CommandException(args.getString(0) + " is not online.");
      }
    } else {
      if (!(source instanceof Player)) {
        throw new CommandException("You must be a player to toggle your game mode.");
      }

      player = (Player) source;
    }

    if (!player.has(Human.class)) {
      throw new CommandException("Invalid player!");
    }

    GameMode mode;

    try {
      if (args.isInteger(index)) {
        mode = GameMode.get(args.getInteger(index));
      } else {
        mode = GameMode.get(args.getString(index));
      }
    } catch (Exception e) {
      throw new CommandException(
          "A game mode must be either a number between 0 and 2, 'CREATIVE', 'SURVIVAL' or 'ADVENTURE'");
    }

    player.get(Human.class).setGamemode(mode);

    if (!player.equals(source)) {
      source.sendMessage(
          plugin.getPrefix(),
          ChatStyle.WHITE,
          player.getName(),
          "'s ",
          ChatStyle.BRIGHT_GREEN,
          "gamemode has been changed to ",
          ChatStyle.WHITE,
          mode.name(),
          ChatStyle.BRIGHT_GREEN,
          ".");
    }
  }
Esempio n. 2
0
  private void readObject(java.io.ObjectInputStream in) throws IOException {
    float x = in.readFloat();
    float y = in.readFloat();
    float z = in.readFloat();
    String world = in.readUTF();
    World w = Spout.getEngine().getWorld(world);
    try {
      Field field;

      field = Vector3.class.getDeclaredField("x");
      field.setAccessible(true);
      field.set(this, x);

      field = Vector3.class.getDeclaredField("y");
      field.setAccessible(true);
      field.set(this, y);

      field = Vector3.class.getDeclaredField("z");
      field.setAccessible(true);
      field.set(this, z);

      field = Point.class.getDeclaredField("world");
      field.setAccessible(true);
      field.set(this, w);
    } catch (Exception e) {
      if (Spout.debugMode()) {
        e.printStackTrace();
      }
    }
  }
Esempio n. 3
0
 @Override
 public void ban(boolean kick, Object... reason) {
   if (Spout.getPlatform() != Platform.SERVER) {
     throw new IllegalStateException("Banning is only available in server mode.");
   }
   ((Server) Spout.getEngine()).getAccessManager().ban(BanType.PLAYER, name, kick, reason);
 }
Esempio n. 4
0
  @Override
  public byte[] compress() {
    Serializable value = data.get();
    if (value instanceof ByteArrayWrapper) {
      return ((ByteArrayWrapper) value).getArray();
    }

    ByteArrayOutputStream byteOut = new ByteArrayOutputStream();

    try {
      ObjectOutputStream objOut = new ObjectOutputStream(byteOut);

      objOut.writeObject(value);
      objOut.flush();
      objOut.close();
    } catch (IOException e) {
      if (Spout.debugMode()) {
        Spout.getLogger()
            .log(
                Level.SEVERE,
                "Unable to serialize "
                    + value
                    + " (type: "
                    + (value != null ? value.getClass().getSimpleName() : "null")
                    + ")",
                e);
      }
      return null;
    }

    return byteOut.toByteArray();
  }
Esempio n. 5
0
  private void onKeyPressed(Player player, Keyboard key, boolean pressed, char ch) {
    final PlayerKeyEvent event =
        Spout.getEventManager().callEvent(new PlayerKeyEvent(player, key, pressed, ch));
    if (event.isCancelled()) {
      return;
    }

    if (Spout.debugMode()) {
      Spout.log("Key " + key + " was " + (pressed ? "pressed" : "released"));
    }

    // SHIFT + TAB changes the focus index
    Screen in = getInputScreen();
    if (key == FOCUS_KEY && pressed) {
      if (in != null) {
        if (org.lwjgl.input.Keyboard.isKeyDown(Keyboard.KEY_LSHIFT.getId())
            || org.lwjgl.input.Keyboard.isKeyDown(Keyboard.KEY_RSHIFT.getId())) {
          in.previousFocus(FocusReason.KEYBOARD_TAB);
        } else {
          in.nextFocus(FocusReason.KEYBOARD_TAB);
        }
      }
    }

    // send event to the focused widget
    if (in != null) {
      Widget w = in.getFocusedWidget();
      if (w != null) {
        w.onKey(event);
      }
    }

    executeBindings(getKeyBindingsFor(key), player, pressed);
  }
Esempio n. 6
0
  private void onMouseClicked(Player player, Mouse button, boolean pressed, int x, int y) {
    PlayerClickEvent event =
        Spout.getEventManager()
            .callEvent(new PlayerClickEvent(player, button, pressed, new IntVector2(x, y)));
    if (event.isCancelled()) {
      return;
    }

    if (Spout.debugMode()) {
      Spout.log("Mouse clicked at {" + x + "," + y + "} was " + (pressed ? "pressed" : "released"));
    }

    Screen s = getInputScreen();
    if (s != null) {
      Widget w = s.getWidgetAt(x, y);
      if (w != null) {
        Widget fw = s.getFocusedWidget();
        if (fw != null && !fw.equals(w)) {
          s.setFocus(w, FocusReason.CLICKED);
        }
        w.onClicked(event);
      }
    }

    executeBindings(getMouseBindingsFor(button), player, pressed);
  }
  @Command(
      aliases = "xp",
      usage = "[player] <amount>",
      desc = "Give/take experience from a player",
      min = 1,
      max = 2)
  @CommandPermissions("vanilla.command.xp")
  public void xp(CommandContext args, CommandSource source) throws CommandException {
    // If source is player
    if (args.length() == 1) {
      if (source instanceof Player) {
        @SuppressWarnings("unused")
        Player sender = (Player) source;
        int amount = args.getInteger(0);
        source.sendMessage(
            plugin.getPrefix(),
            ChatStyle.BRIGHT_GREEN,
            "You have been given ",
            ChatStyle.WHITE,
            amount,
            ChatStyle.BRIGHT_GREEN,
            " xp.");
        // TODO: Give player 'amount' of xp.
      } else {
        throw new CommandException("You must be a player to give yourself xp.");
      }
    } else {
      if (Spout.getEngine() instanceof Client) {
        throw new CommandException("You cannot search for players unless you are in server mode.");
      }
      Player player = ((Server) Spout.getEngine()).getPlayer(args.getString(0), true);
      if (player != null) {
        short amount = (short) args.getInteger(1);
        LevelComponent level = player.get(LevelComponent.class);

        if (level == null) {
          return;
        }

        if (amount > 0) {
          level.addExperience(amount);
        } else {
          level.removeExperience(amount);
        }
        player.sendMessage(
            plugin.getPrefix(),
            ChatStyle.BRIGHT_GREEN,
            "Your experience has been set to ",
            ChatStyle.WHITE,
            amount,
            ChatStyle.BRIGHT_GREEN,
            ".");
      } else {
        throw new CommandException(args.getString(0) + " is not online.");
      }
    }
  }
Esempio n. 8
0
 public FullScreen() {
   if (Spout.getPlatform() == Platform.CLIENT) {
     try {
       ((Client) Spout.getEngine())
           .getScreenStack()
           .subscribe(ScreenStack.SIGNAL_RESIZED, this, "onScreenResized");
     } catch (SecurityException e) {
     } catch (NoSuchMethodException e) {
     }
   }
 }
 @Override
 public void onAttached() {
   if (!(getOwner() instanceof Player)) {
     throw new IllegalStateException("PlayerListComponent may only be attached to a player.");
   }
   if (!(Spout.getEngine() instanceof Server)) {
     throw new IllegalStateException("Player list components may only be attached server side");
   }
   server = (Server) Spout.getEngine();
   player = (Player) getOwner();
 }
Esempio n. 10
0
 static {
   if (Spout.getPlatform() == Platform.CLIENT) {
     DEFAULT_FONT =
         (Font) Spout.getFileSystem().getResource("font://Spout/fonts/ubuntu/Ubuntu-M.ttf");
     GUI_COLOR =
         (RenderMaterial)
             FILE_SYSTEM.getResource("material://Spout/materials/GUIColorMaterial.smt");
   } else {
     DEFAULT_FONT = null;
     GUI_COLOR = null;
   }
 }
Esempio n. 11
0
 /**
  * Sets a property of the window
  *
  * @param id of the property
  * @param value value of property
  */
 public void setProperty(int id, int value) {
   properties.put(id, value);
   switch (Spout.getPlatform()) {
     case PROXY:
     case SERVER:
       callProtocolEvent(new WindowPropertyEvent(this, id, value));
       break;
     case CLIENT:
       // TODO: Window properties
       break;
     default:
       throw new IllegalStateException("Unknown platform: " + Spout.getPlatform());
   }
 }
Esempio n. 12
0
 @Override
 public void finalizeRun() {
   if (Spout.getEngine().getPlatform() != Platform.CLIENT && !this.isOnlineLive()) {
     remove();
   }
   super.finalizeRun();
   if (this.isOnline()) {
     this.getNetworkSynchronizer().finalizeTick();
   }
   if (isRemoved()) {
     getNetworkSynchronizer().onRemoved();
     ((SpoutEngine) Spout.getEngine()).removePlayer(this);
     sessionLive.set(null);
   }
 }
  @Override
  public void run() {
    HttpURLConnection connection = null;
    String response = "";
    try {
      URL url = new URL(URL);
      connection = (HttpURLConnection) url.openConnection();
      connection.setRequestMethod("POST");
      connection.setRequestProperty("Content-Type", "application/x-www-form-urlencoded");
      connection.setRequestProperty(
          "Content-Length", Integer.toString(urlParameters.getBytes().length));
      connection.setRequestProperty("Content-Language", "en-US");
      connection.setUseCaches(false);
      connection.setDoInput(true);
      connection.setDoOutput(true);

      DataOutputStream e = new DataOutputStream(connection.getOutputStream());
      e.writeBytes(urlParameters);
      e.flush();
      e.close();
      InputStream is = connection.getInputStream();
      BufferedReader rd = new BufferedReader(new InputStreamReader(is));
      StringBuffer responseBuffer = new StringBuffer();
      String line;
      while ((line = rd.readLine()) != null) {
        responseBuffer.append(line);
        responseBuffer.append('\r');
      }
      rd.close();
      response = responseBuffer.toString();
    } catch (Exception e) {
      e.printStackTrace();
    } finally {
      if (connection != null) {
        connection.disconnect();
      }
    }

    if (VanillaPlugin.getInstance().getEngine().debugMode()) {
      Spout.getLogger().info("Authentification: " + response);
    }
    if (response.contains(":")) {
      String[] infos = response.split(":");
      VanillaPlugin.getInstance().setClientAuthInfos(infos[2], infos[3]);
    } else {
      Spout.getLogger().info("Authentification failed: " + response);
    }
  }
Esempio n. 14
0
 @Override
 public void onTick(float dt) {
   final Random random = GenericMath.getRandom();
   float secondsUntilWeatherChange = sky.getData().get(VanillaData.WEATHER_CHANGE_TIME);
   secondsUntilWeatherChange -= dt;
   if (forceWeatherUpdate.compareAndSet(true, false) || secondsUntilWeatherChange <= 0) {
     this.sky.updateWeather(getCurrent(), getForecast());
     sky.getData().put(VanillaData.WORLD_WEATHER, getForecast());
     final Weather current = getCurrent();
     Weather forecast = current;
     while (forecast == current) {
       // When Rain/Snow or Thunderstorms occur, always go to Clear after.
       if (current == Weather.RAIN || current == Weather.THUNDERSTORM) {
         forecast = Weather.CLEAR;
       } else {
         forecast = Weather.get(random.nextInt(3));
       }
       setForecast(forecast);
     }
     setForecast(forecast);
     secondsUntilWeatherChange =
         current.getBaseWeatherTime() + random.nextInt(current.getRandomWeatherTime());
     if (Spout.debugMode()) {
       Spout.getLogger()
           .info(
               "Weather changed to: "
                   + current
                   + ", next change in "
                   + secondsUntilWeatherChange / 1000F
                   + "s");
     }
   }
   float currentRainStrength = sky.getData().get(VanillaData.CURRENT_RAIN_STRENGTH);
   sky.getData().put(VanillaData.PREVIOUS_RAIN_STRENGTH, currentRainStrength);
   if (this.isRaining()) {
     currentRainStrength = Math.min(1.0f, currentRainStrength + 0.01f);
   } else {
     currentRainStrength = Math.max(0.0f, currentRainStrength - 0.01f);
   }
   sky.getData().put(VanillaData.CURRENT_RAIN_STRENGTH, currentRainStrength);
   if (hasLightning()) {
     lightning.onTick(dt);
   }
   if (getCurrent().isRaining()) {
     snowfall.onTick(dt);
   }
   sky.getData().put(VanillaData.WEATHER_CHANGE_TIME, secondsUntilWeatherChange);
 }
Esempio n. 15
0
  public static Renderer constructNewBatch(int renderMode) {
    List<Renderer> list = POOL.get(renderMode);
    if (list == null) {
      // If we're using a POOL, it should already be intialized
      throw new IllegalStateException("Pool uninitialized!");
    }
    if (!list.isEmpty()) {
      Renderer batch = list.remove(0);
      ((BatchVertexRenderer) batch).used++;
      return batch;
    }

    Client client = (Client) Spout.getEngine();

    switch (client.getRenderMode()) {
      case GL20:
        return new GL20BatchVertexRenderer(renderMode);
      case GL30:
        return new GL30BatchVertexRenderer(renderMode);
      case GL40:
        return new GL30BatchVertexRenderer(renderMode);
      case GLES20:
        return new GLES20BatchVertexRenderer(renderMode);
      default:
        throw new IllegalArgumentException("GL Mode:" + client.getRenderMode() + " Not recognized");
    }
  }
Esempio n. 16
0
 public void execute(float dt) {
   for (InputExecutor executor : inputExecutors) {
     SpoutSceneComponent sc =
         (SpoutSceneComponent) ((Client) Spout.getEngine()).getActivePlayer().getScene();
     executor.execute(dt, sc.getLiveTransform());
   }
 }
Esempio n. 17
0
 private Screen getInputScreen() {
   Engine engine = Spout.getEngine();
   if (!(engine instanceof Client)) {
     throw new IllegalStateException("Cannot access ScreenStack in server mode.");
   }
   return ((Client) engine).getScreenStack().getInputScreen();
 }
  public SSAOPostProcessEffect() {
    kernel = new Vector3[kernelSize];
    Random rng = new Random();
    for (int i = 0; i < kernelSize; i++) {
      // Create a set of random vectors along the surface of a hemisphere.
      kernel[i] =
          new Vector3((rng.nextFloat() * 2) - 1, (rng.nextFloat() * 2) - 1, rng.nextFloat());
      // Normalize the vector
      kernel[i] = kernel[i].normalize();

      // Scale it into the hemisphere so the vectors aren't all along the surface.
      // We want the distance from the origin to fall off as we generate more points.
      float scale = (float) i / (float) kernelSize;
      scale = GenericMath.lerp(0.1f, 1.0f, scale * scale);

      kernel[i] = kernel[i].multiply(scale);
    }

    // Generate the noise texture.
    int[] texture = new int[noiseSize * noiseSize];
    for (int i = 0; i < noiseSize * noiseSize; i++) {
      Color c = new Color(rng.nextFloat(), rng.nextFloat(), 0);
      texture[i] = c.getRGB();
    }
    Vector2 resolution = ((Client) Spout.getEngine()).getResolution();
    noiseScale = new Vector2(resolution.getX() / noiseSize, resolution.getY() / noiseSize);
    noise = new ClientTexture(texture, noiseSize, noiseSize);
  }
Esempio n. 19
0
  @EventHandler(order = Order.LATEST)
  public void entityDeath(EntityDeathEvent event) {
    Entity entity = event.getEntity();
    Engine engine = Spout.getEngine();

    // kill count criteria
    Object lastDamager = event.getLastDamager();
    if (lastDamager instanceof Player) {
      Player killer = (Player) lastDamager;
      String killerName = killer.getName();
      String[] criteria = {
        Objective.CRITERIA_TOTAL_KILL_COUNT, Objective.CRITERIA_PLAYER_KILL_COUNT
      };
      if (entity instanceof Player) {
        // killed a player? update total and player kill count
        evaluateCriteria(killerName, 1, true, criteria);
      } else {
        // just an entity? only update total kill count
        evaluateCriteria(killerName, 1, true, criteria[0]);
      }
    }

    if (!(entity instanceof Player) || !(engine instanceof Server)) {
      return;
    }

    // player death criteria
    Player player = (Player) entity;
    evaluateCriteria(player.getName(), 1, true, Objective.CRITERIA_DEATH_COUNT);
  }
 @Override
 public void onAttached() {
   if (Spout.getPlatform() != Platform.CLIENT) {
     throw new UnsupportedOperationException(
         "SpoutFallbackMovementComponent can only be attached client side!");
   }
 }
  /**
   * Called when a player interacts
   *
   * @param event Relevant event details
   */
  @EventHandler(event = PlayerInteractEvent.class)
  public void onPlayerInteract(PlayerInteractEvent event) {

    final LocalPlayer player = plugin.wrapPlayer(event.getPlayer());
    final LocalWorld world = player.getWorld();
    final WorldEdit we = plugin.getWorldEdit();

    PlayerInteractEvent.Action action = event.getAction();
    if (action == Action.LEFT_CLICK) {
      if (event.isAir() && ignoreLeftClickAir) {
        return;
      }

      if (!event.isAir()) {
        final Point clickedBlock = event.getInteractedPoint();
        final WorldVector pos =
            new WorldVector(world, clickedBlock.getX(), clickedBlock.getY(), clickedBlock.getZ());

        if (we.handleBlockLeftClick(player, pos)) {
          event.setCancelled(true);
        }
      }

      if (we.handleArmSwing(player)) {
        event.setCancelled(true);
      }

      if (!event.isAir() && !ignoreLeftClickAir) {
        final int taskId =
            Spout.getGame()
                .getScheduler()
                .scheduleSyncDelayedTask(
                    plugin,
                    new Runnable() {
                      public void run() {
                        ignoreLeftClickAir = false;
                      }
                    },
                    2);

        if (taskId != -1) {
          ignoreLeftClickAir = true;
        }
      }
    } else if (action == Action.RIGHT_CLICK) {
      if (!event.isAir()) {
        final Point clickedBlock = event.getInteractedPoint();
        final WorldVector pos =
            new WorldVector(world, clickedBlock.getX(), clickedBlock.getY(), clickedBlock.getZ());

        if (we.handleBlockRightClick(player, pos)) {
          event.setCancelled(true);
        }
      }

      if (we.handleRightClick(player)) {
        event.setCancelled(true);
      }
    }
  }
 private boolean shouldForce(int entityId) {
   int hash = HASH_SEED;
   hash += (hash << 5) + entityId;
   hash += (hash << 5) + tickCounter;
   return (hash & FORCE_MASK) == 0
       || (Spout.debugMode() && getPlayer().has(ForceMessagesComponent.class));
 }
Esempio n. 23
0
  public static void initPool(int renderMode, int number) {
    List<Renderer> list = POOL.get(renderMode);

    if (list == null) {
      list = new LinkedList<>();
      POOL.put(renderMode, list);
    }

    Client client = (Client) Spout.getEngine();

    switch (client.getRenderMode()) {
      case GL20:
        for (int i = 0; i < number; i++) {
          list.add(new GL20BatchVertexRenderer(renderMode));
        }
        return;
      case GL30:
        for (int i = 0; i < number; i++) {
          list.add(new GL30BatchVertexRenderer(renderMode));
        }
        return;
      case GL40:
        for (int i = 0; i < number; i++) {
          list.add(new GL30BatchVertexRenderer(renderMode));
        }
        return;
      case GLES20:
        for (int i = 0; i < number; i++) {
          list.add(new GLES20BatchVertexRenderer(renderMode));
        }
        return;
      default:
        throw new IllegalArgumentException("GL Mode:" + client.getRenderMode() + " Not recognized");
    }
  }
Esempio n. 24
0
  @Override
  public void save(Writer writer) {
    Yaml yaml = new Yaml();
    LinkedHashMap<String, Object> dump = new LinkedHashMap<>();
    dump.put("nextId", nextId);
    LinkedHashMap<Integer, LinkedHashMap<String, String>> ids = new LinkedHashMap<>();
    for (Entry<String, HashMap<String, Integer>> e1 : classes.entrySet()) {
      for (Entry<String, Integer> e2 : e1.getValue().entrySet()) {
        String clazz = e1.getKey();
        String source = e2.getKey();
        int key = e2.getValue();
        LinkedHashMap<String, String> v = new LinkedHashMap<>(2);
        v.put("class", clazz);
        v.put("string", source);
        ids.put(key, v);
      }
    }
    dump.put("ids", ids);

    String toWrite = yaml.dumpAs(dump, Tag.MAP, FlowStyle.BLOCK);
    try {
      writer.write(toWrite);
    } catch (IOException e) {
      Spout.getLogger().log(Level.SEVERE, "unable to save dictionary", e);
    } finally {
      IOUtils.closeQuietly(writer);
    }
  }
Esempio n. 25
0
  public <T extends Event> T callEvent(T event) {
    HandlerList handlers = event.getHandlers();
    ListenerRegistration[] listeners = handlers.getRegisteredListeners();

    if (listeners != null) {
      for (ListenerRegistration listener : listeners) {
        try {
          if (!event.isCancelled() || listener.getOrder().ignoresCancelled()) {
            listener.getExecutor().execute(event);
          }
        } catch (Throwable ex) {
          Spout.getEngine()
              .getLogger()
              .log(
                  Level.SEVERE,
                  "Could not pass event "
                      + event.getEventName()
                      + " to "
                      + listener.getOwner().getClass().getName(),
                  ex);
        }
      }
      event.setHasBeenCalled(true);
    }
    return event;
  }
Esempio n. 26
0
 private SecureRandom getSecureRandom(String RNGAlgorithm, String RNGProvider) {
   try {
     SecureRandom r;
     if (RNGProvider != null) {
       r = SecureRandom.getInstance(RNGAlgorithm, RNGProvider);
     } else {
       r = SecureRandom.getInstance(RNGAlgorithm);
     }
     r.nextBytes(new byte[1]);
     return r;
   } catch (NoSuchProviderException e) {
     // Fallback to any provider for the algorithm
     return getSecureRandom(RNGAlgorithm, null);
   } catch (NoSuchAlgorithmException e) {
     if (RNGProvider != null) {
       return getSecureRandom(RNGAlgorithm, null);
     }
     Spout.getLogger()
         .severe(
             "Unable to find algorithm to generate random number generator for key pair creation ("
                 + RNGAlgorithm
                 + ", "
                 + RNGProvider
                 + ")");
     return null;
   }
 }
Esempio n. 27
0
  public byte[] processAll(AsymmetricBlockCipher cipher, byte[] input) {
    int outputSize = 0;
    int blockSize = cipher.getInputBlockSize();
    List<byte[]> outputBlocks = new LinkedList<>();

    int pos = 0;

    while (pos < input.length) {
      int length = Math.min(input.length - pos, blockSize);
      byte[] result;
      try {
        result = cipher.processBlock(input, pos, length);
      } catch (InvalidCipherTextException e) {
        Spout.getLogger().info("Error processing encrypted data");
        return null;
      }
      outputSize += result.length;
      outputBlocks.add(result);
      pos += length;
    }

    byte[] output = new byte[outputSize];

    pos = 0;
    for (byte[] block : outputBlocks) {
      System.arraycopy(block, 0, output, pos, block.length);
      pos += block.length;
    }

    return output;
  }
  @Override
  protected void worldChanged(World world) {
    GameMode gamemode = world.getComponentHolder().getData().get(VanillaData.GAMEMODE);
    // The world the player is entering has a different gamemode...
    if (gamemode != null) {
      if (gamemode != getPlayer().getData().get(VanillaData.GAMEMODE)) {
        PlayerGameModeChangedEvent event =
            Spout.getEngine()
                .getEventManager()
                .callEvent(new PlayerGameModeChangedEvent(player, gamemode));
        if (!event.isCancelled()) {
          gamemode = event.getMode();
        }
      }
    } else {
      // The world has no gamemode setting in its map so default to the Player's GameMode.
      gamemode = getPlayer().getData().get(VanillaData.GAMEMODE);
    }
    Difficulty difficulty = world.getComponentHolder().getData().get(VanillaData.DIFFICULTY);
    Dimension dimension = world.getComponentHolder().getData().get(VanillaData.DIMENSION);
    WorldType worldType = world.getComponentHolder().getData().get(VanillaData.WORLD_TYPE);

    // TODO Handle infinite height
    if (first) {
      first = false;
      int entityId = player.getId();
      Server server = (Server) session.getEngine();
      PlayerLoginRequestMessage idMsg =
          new PlayerLoginRequestMessage(
              entityId,
              worldType.toString(),
              gamemode.getId(),
              (byte) dimension.getId(),
              difficulty.getId(),
              (byte) server.getMaxPlayers());
      player.getSession().send(false, true, idMsg);
      player.getSession().setState(State.GAME);
      for (int slot = 0; slot < 4; slot++) {
        ItemStack slotItem = owner.get(Human.class).getInventory().getArmor().get(slot);
        player.getSession().send(false, new EntityEquipmentMessage(entityId, slot, slotItem));
      }
    } else {
      player
          .getSession()
          .send(
              false,
              new PlayerRespawnMessage(
                  dimension.getId(),
                  difficulty.getId(),
                  gamemode.getId(),
                  256,
                  worldType.toString()));
    }

    Point pos = world.getSpawnPoint().getPosition();
    PlayerSpawnPositionMessage SPMsg =
        new PlayerSpawnPositionMessage((int) pos.getX(), (int) pos.getY(), (int) pos.getZ());
    player.getSession().send(false, SPMsg);
  }
Esempio n. 29
0
  public AsymmetricCipherKeyPairGenerator getGenerator(String algorithm) {
    if (algorithm.equals("RSA")) {
      return new RSAKeyPairGenerator();
    }

    Spout.getLogger().info("Unable to find key generator " + algorithm);
    return null;
  }
Esempio n. 30
0
 public WeatherSimulator(Sky sky) {
   if (Spout.getPlatform() != Platform.SERVER) {
     throw new UnsupportedOperationException("Weather simulation can only happen on the server");
   }
   this.sky = sky;
   this.lightning = new LightningSimulator(this);
   this.snowfall = new SnowSimulator(this);
 }