2017-12-25 23 views
3

나는 ProtocolLib를 사용하여 패킷에 색깔을 가진 레드 스톤 입자를 플레이어에게 보내려고합니다. 그 (것)들을 착색하기 위하여 나는 googled, 나는 RGB 체계로 offset 매개 변수를 사용할 필요가있다. 그러나 의도 한대로 작동하지 않았습니다. 입자는 여전히 빨간색이거나 임의의 색상을 가지고 있습니다 (아래 참조). offset은 여전히 ​​주어진 위치에서 각 입자의 임의 화기로 사용됩니다. 내 코드 :레드 스톤 입자가 색깔을 바꾸지 않습니다

PacketContainer packet = new PacketContainer(PacketType.Play.Server.WORLD_PARTICLES); 
packet.getModifier().writeDefaults(); 
packet.getParticles().write(0, Particle.REDSTONE); 
float x = (float) loc.getX(); 
float y = (float) loc.getY() + 3; 
float z = (float) loc.getZ(); 
float red = 0; 
float green = 0; 
float blue = 1; 
packet.getFloat().write(0, x).write(1, y).write(2, z); // Location 
packet.getFloat().write(3, red).write(4, green).write(5, blue); // Offset 
packet.getFloat().write(6, 0F); // Particle data ? 
packet.getIntegers().write(0, 1); // Amount 

ProtocolManager manager = ProtocolLibrary.getProtocolManager(); 
try { 
    for (Player player : getters) manager.sendServerPacket(player, packet); 
} catch (Exception ex) {ex.printStackTrace();} 

나는 amount 입자 data을 변경했습니다. 입자 data0 인 경우 입자는 빨간색이고, 다른 경우에는 1 입자가 무작위 색입니다.
내가 ProtocolLib 4.3.0 및 스피을 사용하고 1.12.2 내 문제를 해결

답변

3

, 색 산란 진정한 레드 스톤 입자는 3 가지가 있어야합니다 :

  1. Amount이어야합니다 0
  2. Data1
  3. 빨간색 구성 요소 (x 오프셋)는 x - 1이어야합니다 (이 구성 요소는 패킷을 보내기 전에 자동으로 1 씩 증가하기 때문에)
+0

답을 올바른대로 받아 들여야합니다! – Kerooker