network streaming upgrade
Some checks failed
studiorailgun/Renderer/pipeline/head There was a failure building this commit

This commit is contained in:
austin 2025-05-25 20:09:47 -04:00
parent e0b22d2949
commit 349986788b
13 changed files with 842 additions and 79 deletions

View File

@ -1,5 +1,7 @@
package electrosphere.net.parser.net.message; package electrosphere.net.parser.net.message;
import java.io.IOException;
import java.io.OutputStream;
import io.github.studiorailgun.CircularByteBuffer; import io.github.studiorailgun.CircularByteBuffer;
import electrosphere.net.parser.util.ByteStreamUtils; import electrosphere.net.parser.util.ByteStreamUtils;
import java.util.LinkedList; import java.util.LinkedList;
@ -127,7 +129,6 @@ public class AuthMessage extends NetworkMessage {
*/ */
public static AuthMessage constructAuthRequestMessage(){ public static AuthMessage constructAuthRequestMessage(){
AuthMessage rVal = new AuthMessage(AuthMessageType.AUTHREQUEST); AuthMessage rVal = new AuthMessage(AuthMessageType.AUTHREQUEST);
rVal.serialize();
return rVal; return rVal;
} }
@ -185,7 +186,6 @@ public class AuthMessage extends NetworkMessage {
AuthMessage rVal = new AuthMessage(AuthMessageType.AUTHDETAILS); AuthMessage rVal = new AuthMessage(AuthMessageType.AUTHDETAILS);
rVal.setuser(user); rVal.setuser(user);
rVal.setpass(pass); rVal.setpass(pass);
rVal.serialize();
return rVal; return rVal;
} }
@ -204,7 +204,6 @@ public class AuthMessage extends NetworkMessage {
*/ */
public static AuthMessage constructAuthSuccessMessage(){ public static AuthMessage constructAuthSuccessMessage(){
AuthMessage rVal = new AuthMessage(AuthMessageType.AUTHSUCCESS); AuthMessage rVal = new AuthMessage(AuthMessageType.AUTHSUCCESS);
rVal.serialize();
return rVal; return rVal;
} }
@ -223,10 +222,10 @@ public class AuthMessage extends NetworkMessage {
*/ */
public static AuthMessage constructAuthFailureMessage(){ public static AuthMessage constructAuthFailureMessage(){
AuthMessage rVal = new AuthMessage(AuthMessageType.AUTHFAILURE); AuthMessage rVal = new AuthMessage(AuthMessageType.AUTHFAILURE);
rVal.serialize();
return rVal; return rVal;
} }
@Deprecated
@Override @Override
void serialize(){ void serialize(){
byte[] intValues = new byte[8]; byte[] intValues = new byte[8];
@ -280,4 +279,32 @@ public class AuthMessage extends NetworkMessage {
serialized = true; serialized = true;
} }
@Override
public void write(OutputStream stream) throws IOException {
switch(this.messageType){
case AUTHREQUEST:
//message header
stream.write(TypeBytes.MESSAGE_TYPE_AUTH);
stream.write(TypeBytes.AUTH_MESSAGE_TYPE_AUTHREQUEST);
break;
case AUTHDETAILS:
//message header
stream.write(TypeBytes.MESSAGE_TYPE_AUTH);
stream.write(TypeBytes.AUTH_MESSAGE_TYPE_AUTHDETAILS);
ByteStreamUtils.writeString(stream, user);
ByteStreamUtils.writeString(stream, pass);
break;
case AUTHSUCCESS:
//message header
stream.write(TypeBytes.MESSAGE_TYPE_AUTH);
stream.write(TypeBytes.AUTH_MESSAGE_TYPE_AUTHSUCCESS);
break;
case AUTHFAILURE:
//message header
stream.write(TypeBytes.MESSAGE_TYPE_AUTH);
stream.write(TypeBytes.AUTH_MESSAGE_TYPE_AUTHFAILURE);
break;
}
}
} }

View File

@ -1,5 +1,7 @@
package electrosphere.net.parser.net.message; package electrosphere.net.parser.net.message;
import java.io.IOException;
import java.io.OutputStream;
import io.github.studiorailgun.CircularByteBuffer; import io.github.studiorailgun.CircularByteBuffer;
import electrosphere.net.parser.util.ByteStreamUtils; import electrosphere.net.parser.util.ByteStreamUtils;
import java.util.LinkedList; import java.util.LinkedList;
@ -128,7 +130,6 @@ public class CharacterMessage extends NetworkMessage {
*/ */
public static CharacterMessage constructRequestCharacterListMessage(){ public static CharacterMessage constructRequestCharacterListMessage(){
CharacterMessage rVal = new CharacterMessage(CharacterMessageType.REQUESTCHARACTERLIST); CharacterMessage rVal = new CharacterMessage(CharacterMessageType.REQUESTCHARACTERLIST);
rVal.serialize();
return rVal; return rVal;
} }
@ -171,7 +172,6 @@ public class CharacterMessage extends NetworkMessage {
public static CharacterMessage constructResponseCharacterListMessage(String data){ public static CharacterMessage constructResponseCharacterListMessage(String data){
CharacterMessage rVal = new CharacterMessage(CharacterMessageType.RESPONSECHARACTERLIST); CharacterMessage rVal = new CharacterMessage(CharacterMessageType.RESPONSECHARACTERLIST);
rVal.setdata(data); rVal.setdata(data);
rVal.serialize();
return rVal; return rVal;
} }
@ -214,7 +214,6 @@ public class CharacterMessage extends NetworkMessage {
public static CharacterMessage constructRequestCreateCharacterMessage(String data){ public static CharacterMessage constructRequestCreateCharacterMessage(String data){
CharacterMessage rVal = new CharacterMessage(CharacterMessageType.REQUESTCREATECHARACTER); CharacterMessage rVal = new CharacterMessage(CharacterMessageType.REQUESTCREATECHARACTER);
rVal.setdata(data); rVal.setdata(data);
rVal.serialize();
return rVal; return rVal;
} }
@ -233,7 +232,6 @@ public class CharacterMessage extends NetworkMessage {
*/ */
public static CharacterMessage constructResponseCreateCharacterSuccessMessage(){ public static CharacterMessage constructResponseCreateCharacterSuccessMessage(){
CharacterMessage rVal = new CharacterMessage(CharacterMessageType.RESPONSECREATECHARACTERSUCCESS); CharacterMessage rVal = new CharacterMessage(CharacterMessageType.RESPONSECREATECHARACTERSUCCESS);
rVal.serialize();
return rVal; return rVal;
} }
@ -252,7 +250,6 @@ public class CharacterMessage extends NetworkMessage {
*/ */
public static CharacterMessage constructResponseCreateCharacterFailureMessage(){ public static CharacterMessage constructResponseCreateCharacterFailureMessage(){
CharacterMessage rVal = new CharacterMessage(CharacterMessageType.RESPONSECREATECHARACTERFAILURE); CharacterMessage rVal = new CharacterMessage(CharacterMessageType.RESPONSECREATECHARACTERFAILURE);
rVal.serialize();
return rVal; return rVal;
} }
@ -295,7 +292,6 @@ public class CharacterMessage extends NetworkMessage {
public static CharacterMessage constructRequestSpawnCharacterMessage(String data){ public static CharacterMessage constructRequestSpawnCharacterMessage(String data){
CharacterMessage rVal = new CharacterMessage(CharacterMessageType.REQUESTSPAWNCHARACTER); CharacterMessage rVal = new CharacterMessage(CharacterMessageType.REQUESTSPAWNCHARACTER);
rVal.setdata(data); rVal.setdata(data);
rVal.serialize();
return rVal; return rVal;
} }
@ -338,7 +334,6 @@ public class CharacterMessage extends NetworkMessage {
public static CharacterMessage constructResponseSpawnCharacterMessage(String data){ public static CharacterMessage constructResponseSpawnCharacterMessage(String data){
CharacterMessage rVal = new CharacterMessage(CharacterMessageType.RESPONSESPAWNCHARACTER); CharacterMessage rVal = new CharacterMessage(CharacterMessageType.RESPONSESPAWNCHARACTER);
rVal.setdata(data); rVal.setdata(data);
rVal.serialize();
return rVal; return rVal;
} }
@ -357,10 +352,10 @@ public class CharacterMessage extends NetworkMessage {
*/ */
public static CharacterMessage constructEditorSwapMessage(){ public static CharacterMessage constructEditorSwapMessage(){
CharacterMessage rVal = new CharacterMessage(CharacterMessageType.EDITORSWAP); CharacterMessage rVal = new CharacterMessage(CharacterMessageType.EDITORSWAP);
rVal.serialize();
return rVal; return rVal;
} }
@Deprecated
@Override @Override
void serialize(){ void serialize(){
byte[] intValues = new byte[8]; byte[] intValues = new byte[8];
@ -458,4 +453,54 @@ public class CharacterMessage extends NetworkMessage {
serialized = true; serialized = true;
} }
@Override
public void write(OutputStream stream) throws IOException {
switch(this.messageType){
case REQUESTCHARACTERLIST:
//message header
stream.write(TypeBytes.MESSAGE_TYPE_CHARACTER);
stream.write(TypeBytes.CHARACTER_MESSAGE_TYPE_REQUESTCHARACTERLIST);
break;
case RESPONSECHARACTERLIST:
//message header
stream.write(TypeBytes.MESSAGE_TYPE_CHARACTER);
stream.write(TypeBytes.CHARACTER_MESSAGE_TYPE_RESPONSECHARACTERLIST);
ByteStreamUtils.writeString(stream, data);
break;
case REQUESTCREATECHARACTER:
//message header
stream.write(TypeBytes.MESSAGE_TYPE_CHARACTER);
stream.write(TypeBytes.CHARACTER_MESSAGE_TYPE_REQUESTCREATECHARACTER);
ByteStreamUtils.writeString(stream, data);
break;
case RESPONSECREATECHARACTERSUCCESS:
//message header
stream.write(TypeBytes.MESSAGE_TYPE_CHARACTER);
stream.write(TypeBytes.CHARACTER_MESSAGE_TYPE_RESPONSECREATECHARACTERSUCCESS);
break;
case RESPONSECREATECHARACTERFAILURE:
//message header
stream.write(TypeBytes.MESSAGE_TYPE_CHARACTER);
stream.write(TypeBytes.CHARACTER_MESSAGE_TYPE_RESPONSECREATECHARACTERFAILURE);
break;
case REQUESTSPAWNCHARACTER:
//message header
stream.write(TypeBytes.MESSAGE_TYPE_CHARACTER);
stream.write(TypeBytes.CHARACTER_MESSAGE_TYPE_REQUESTSPAWNCHARACTER);
ByteStreamUtils.writeString(stream, data);
break;
case RESPONSESPAWNCHARACTER:
//message header
stream.write(TypeBytes.MESSAGE_TYPE_CHARACTER);
stream.write(TypeBytes.CHARACTER_MESSAGE_TYPE_RESPONSESPAWNCHARACTER);
ByteStreamUtils.writeString(stream, data);
break;
case EDITORSWAP:
//message header
stream.write(TypeBytes.MESSAGE_TYPE_CHARACTER);
stream.write(TypeBytes.CHARACTER_MESSAGE_TYPE_EDITORSWAP);
break;
}
}
} }

View File

@ -1,5 +1,7 @@
package electrosphere.net.parser.net.message; package electrosphere.net.parser.net.message;
import java.io.IOException;
import java.io.OutputStream;
import io.github.studiorailgun.CircularByteBuffer; import io.github.studiorailgun.CircularByteBuffer;
import electrosphere.net.parser.util.ByteStreamUtils; import electrosphere.net.parser.util.ByteStreamUtils;
import java.util.LinkedList; import java.util.LinkedList;
@ -325,10 +327,10 @@ public class CombatMessage extends NetworkMessage {
rVal.setpositionX(positionX); rVal.setpositionX(positionX);
rVal.setpositionY(positionY); rVal.setpositionY(positionY);
rVal.setpositionZ(positionZ); rVal.setpositionZ(positionZ);
rVal.serialize();
return rVal; return rVal;
} }
@Deprecated
@Override @Override
void serialize(){ void serialize(){
byte[] intValues = new byte[8]; byte[] intValues = new byte[8];
@ -385,4 +387,23 @@ public class CombatMessage extends NetworkMessage {
serialized = true; serialized = true;
} }
@Override
public void write(OutputStream stream) throws IOException {
switch(this.messageType){
case SERVERREPORTHITBOXCOLLISION:
//message header
stream.write(TypeBytes.MESSAGE_TYPE_COMBAT);
stream.write(TypeBytes.COMBAT_MESSAGE_TYPE_SERVERREPORTHITBOXCOLLISION);
ByteStreamUtils.writeInt(stream, entityID);
ByteStreamUtils.writeInt(stream, receiverEntityID);
ByteStreamUtils.writeLong(stream, time);
ByteStreamUtils.writeString(stream, hitboxType);
ByteStreamUtils.writeString(stream, hurtboxType);
ByteStreamUtils.writeDouble(stream, positionX);
ByteStreamUtils.writeDouble(stream, positionY);
ByteStreamUtils.writeDouble(stream, positionZ);
break;
}
}
} }

View File

@ -1,5 +1,7 @@
package electrosphere.net.parser.net.message; package electrosphere.net.parser.net.message;
import java.io.IOException;
import java.io.OutputStream;
import io.github.studiorailgun.CircularByteBuffer; import io.github.studiorailgun.CircularByteBuffer;
import electrosphere.net.parser.util.ByteStreamUtils; import electrosphere.net.parser.util.ByteStreamUtils;
import java.util.LinkedList; import java.util.LinkedList;
@ -747,7 +749,6 @@ public class EntityMessage extends NetworkMessage {
rVal.setrotationY(rotationY); rVal.setrotationY(rotationY);
rVal.setrotationZ(rotationZ); rVal.setrotationZ(rotationZ);
rVal.setrotationW(rotationW); rVal.setrotationW(rotationW);
rVal.serialize();
return rVal; return rVal;
} }
@ -790,7 +791,6 @@ public class EntityMessage extends NetworkMessage {
rVal.setvelocity(velocity); rVal.setvelocity(velocity);
rVal.setpropertyValueInt(propertyValueInt); rVal.setpropertyValueInt(propertyValueInt);
rVal.settreeState(treeState); rVal.settreeState(treeState);
rVal.serialize();
return rVal; return rVal;
} }
@ -829,7 +829,6 @@ public class EntityMessage extends NetworkMessage {
rVal.setrotationZ(rotationZ); rVal.setrotationZ(rotationZ);
rVal.setvelocity(velocity); rVal.setvelocity(velocity);
rVal.settreeState(treeState); rVal.settreeState(treeState);
rVal.serialize();
return rVal; return rVal;
} }
@ -848,7 +847,6 @@ public class EntityMessage extends NetworkMessage {
*/ */
public static EntityMessage constructstartAttackMessage(){ public static EntityMessage constructstartAttackMessage(){
EntityMessage rVal = new EntityMessage(EntityMessageType.STARTATTACK); EntityMessage rVal = new EntityMessage(EntityMessageType.STARTATTACK);
rVal.serialize();
return rVal; return rVal;
} }
@ -871,7 +869,6 @@ public class EntityMessage extends NetworkMessage {
EntityMessage rVal = new EntityMessage(EntityMessageType.KILL); EntityMessage rVal = new EntityMessage(EntityMessageType.KILL);
rVal.settime(time); rVal.settime(time);
rVal.setentityID(entityID); rVal.setentityID(entityID);
rVal.serialize();
return rVal; return rVal;
} }
@ -892,7 +889,6 @@ public class EntityMessage extends NetworkMessage {
public static EntityMessage constructDestroyMessage(int entityID){ public static EntityMessage constructDestroyMessage(int entityID){
EntityMessage rVal = new EntityMessage(EntityMessageType.DESTROY); EntityMessage rVal = new EntityMessage(EntityMessageType.DESTROY);
rVal.setentityID(entityID); rVal.setentityID(entityID);
rVal.serialize();
return rVal; return rVal;
} }
@ -919,7 +915,6 @@ public class EntityMessage extends NetworkMessage {
rVal.settime(time); rVal.settime(time);
rVal.setpropertyType(propertyType); rVal.setpropertyType(propertyType);
rVal.setpropertyValue(propertyValue); rVal.setpropertyValue(propertyValue);
rVal.serialize();
return rVal; return rVal;
} }
@ -972,7 +967,6 @@ public class EntityMessage extends NetworkMessage {
rVal.setentityID(entityID); rVal.setentityID(entityID);
rVal.setbone(bone); rVal.setbone(bone);
rVal.settargetID(targetID); rVal.settargetID(targetID);
rVal.serialize();
return rVal; return rVal;
} }
@ -1001,7 +995,6 @@ public class EntityMessage extends NetworkMessage {
rVal.setpropertyType(propertyType); rVal.setpropertyType(propertyType);
rVal.setyaw(yaw); rVal.setyaw(yaw);
rVal.setpitch(pitch); rVal.setpitch(pitch);
rVal.serialize();
return rVal; return rVal;
} }
@ -1062,7 +1055,6 @@ public class EntityMessage extends NetworkMessage {
rVal.setangForceX(angForceX); rVal.setangForceX(angForceX);
rVal.setangForceY(angForceY); rVal.setangForceY(angForceY);
rVal.setangForceZ(angForceZ); rVal.setangForceZ(angForceZ);
rVal.serialize();
return rVal; return rVal;
} }
@ -1110,10 +1102,10 @@ public class EntityMessage extends NetworkMessage {
EntityMessage rVal = new EntityMessage(EntityMessageType.INTERACT); EntityMessage rVal = new EntityMessage(EntityMessageType.INTERACT);
rVal.setentityID(entityID); rVal.setentityID(entityID);
rVal.setinteractionSignal(interactionSignal); rVal.setinteractionSignal(interactionSignal);
rVal.serialize();
return rVal; return rVal;
} }
@Deprecated
@Override @Override
void serialize(){ void serialize(){
byte[] intValues = new byte[8]; byte[] intValues = new byte[8];
@ -1500,4 +1492,136 @@ public class EntityMessage extends NetworkMessage {
serialized = true; serialized = true;
} }
@Override
public void write(OutputStream stream) throws IOException {
switch(this.messageType){
case CREATE:
//message header
stream.write(TypeBytes.MESSAGE_TYPE_ENTITY);
stream.write(TypeBytes.ENTITY_MESSAGE_TYPE_CREATE);
ByteStreamUtils.writeInt(stream, entityID);
ByteStreamUtils.writeInt(stream, entityCategory);
ByteStreamUtils.writeString(stream, entitySubtype);
ByteStreamUtils.writeString(stream, creatureTemplate);
ByteStreamUtils.writeDouble(stream, positionX);
ByteStreamUtils.writeDouble(stream, positionY);
ByteStreamUtils.writeDouble(stream, positionZ);
ByteStreamUtils.writeDouble(stream, rotationX);
ByteStreamUtils.writeDouble(stream, rotationY);
ByteStreamUtils.writeDouble(stream, rotationZ);
ByteStreamUtils.writeDouble(stream, rotationW);
break;
case MOVEUPDATE:
//message header
stream.write(TypeBytes.MESSAGE_TYPE_ENTITY);
stream.write(TypeBytes.ENTITY_MESSAGE_TYPE_MOVEUPDATE);
ByteStreamUtils.writeInt(stream, entityID);
ByteStreamUtils.writeLong(stream, time);
ByteStreamUtils.writeDouble(stream, positionX);
ByteStreamUtils.writeDouble(stream, positionY);
ByteStreamUtils.writeDouble(stream, positionZ);
ByteStreamUtils.writeDouble(stream, rotationX);
ByteStreamUtils.writeDouble(stream, rotationY);
ByteStreamUtils.writeDouble(stream, rotationZ);
ByteStreamUtils.writeDouble(stream, rotationW);
ByteStreamUtils.writeDouble(stream, velocity);
ByteStreamUtils.writeInt(stream, propertyValueInt);
ByteStreamUtils.writeInt(stream, treeState);
break;
case ATTACKUPDATE:
//message header
stream.write(TypeBytes.MESSAGE_TYPE_ENTITY);
stream.write(TypeBytes.ENTITY_MESSAGE_TYPE_ATTACKUPDATE);
ByteStreamUtils.writeInt(stream, entityID);
ByteStreamUtils.writeLong(stream, time);
ByteStreamUtils.writeDouble(stream, positionX);
ByteStreamUtils.writeDouble(stream, positionY);
ByteStreamUtils.writeDouble(stream, positionZ);
ByteStreamUtils.writeDouble(stream, rotationX);
ByteStreamUtils.writeDouble(stream, rotationY);
ByteStreamUtils.writeDouble(stream, rotationZ);
ByteStreamUtils.writeDouble(stream, velocity);
ByteStreamUtils.writeInt(stream, treeState);
break;
case STARTATTACK:
//message header
stream.write(TypeBytes.MESSAGE_TYPE_ENTITY);
stream.write(TypeBytes.ENTITY_MESSAGE_TYPE_STARTATTACK);
break;
case KILL:
//message header
stream.write(TypeBytes.MESSAGE_TYPE_ENTITY);
stream.write(TypeBytes.ENTITY_MESSAGE_TYPE_KILL);
ByteStreamUtils.writeLong(stream, time);
ByteStreamUtils.writeInt(stream, entityID);
break;
case DESTROY:
//message header
stream.write(TypeBytes.MESSAGE_TYPE_ENTITY);
stream.write(TypeBytes.ENTITY_MESSAGE_TYPE_DESTROY);
ByteStreamUtils.writeInt(stream, entityID);
break;
case SETPROPERTY:
//message header
stream.write(TypeBytes.MESSAGE_TYPE_ENTITY);
stream.write(TypeBytes.ENTITY_MESSAGE_TYPE_SETPROPERTY);
ByteStreamUtils.writeInt(stream, entityID);
ByteStreamUtils.writeLong(stream, time);
ByteStreamUtils.writeInt(stream, propertyType);
ByteStreamUtils.writeInt(stream, propertyValue);
break;
case ATTACHENTITYTOENTITY:
//message header
stream.write(TypeBytes.MESSAGE_TYPE_ENTITY);
stream.write(TypeBytes.ENTITY_MESSAGE_TYPE_ATTACHENTITYTOENTITY);
ByteStreamUtils.writeInt(stream, entityID);
ByteStreamUtils.writeString(stream, bone);
ByteStreamUtils.writeInt(stream, targetID);
break;
case UPDATEENTITYVIEWDIR:
//message header
stream.write(TypeBytes.MESSAGE_TYPE_ENTITY);
stream.write(TypeBytes.ENTITY_MESSAGE_TYPE_UPDATEENTITYVIEWDIR);
ByteStreamUtils.writeInt(stream, entityID);
ByteStreamUtils.writeLong(stream, time);
ByteStreamUtils.writeInt(stream, propertyType);
ByteStreamUtils.writeDouble(stream, yaw);
ByteStreamUtils.writeDouble(stream, pitch);
break;
case SYNCPHYSICS:
//message header
stream.write(TypeBytes.MESSAGE_TYPE_ENTITY);
stream.write(TypeBytes.ENTITY_MESSAGE_TYPE_SYNCPHYSICS);
ByteStreamUtils.writeInt(stream, entityID);
ByteStreamUtils.writeLong(stream, time);
ByteStreamUtils.writeDouble(stream, positionX);
ByteStreamUtils.writeDouble(stream, positionY);
ByteStreamUtils.writeDouble(stream, positionZ);
ByteStreamUtils.writeDouble(stream, rotationX);
ByteStreamUtils.writeDouble(stream, rotationY);
ByteStreamUtils.writeDouble(stream, rotationZ);
ByteStreamUtils.writeDouble(stream, rotationW);
ByteStreamUtils.writeDouble(stream, linVelX);
ByteStreamUtils.writeDouble(stream, linVelY);
ByteStreamUtils.writeDouble(stream, linVelZ);
ByteStreamUtils.writeDouble(stream, angVelX);
ByteStreamUtils.writeDouble(stream, angVelY);
ByteStreamUtils.writeDouble(stream, angVelZ);
ByteStreamUtils.writeDouble(stream, linForceX);
ByteStreamUtils.writeDouble(stream, linForceY);
ByteStreamUtils.writeDouble(stream, linForceZ);
ByteStreamUtils.writeDouble(stream, angForceX);
ByteStreamUtils.writeDouble(stream, angForceY);
ByteStreamUtils.writeDouble(stream, angForceZ);
break;
case INTERACT:
//message header
stream.write(TypeBytes.MESSAGE_TYPE_ENTITY);
stream.write(TypeBytes.ENTITY_MESSAGE_TYPE_INTERACT);
ByteStreamUtils.writeInt(stream, entityID);
ByteStreamUtils.writeString(stream, interactionSignal);
break;
}
}
} }

View File

@ -1,5 +1,7 @@
package electrosphere.net.parser.net.message; package electrosphere.net.parser.net.message;
import java.io.IOException;
import java.io.OutputStream;
import io.github.studiorailgun.CircularByteBuffer; import io.github.studiorailgun.CircularByteBuffer;
import electrosphere.net.parser.util.ByteStreamUtils; import electrosphere.net.parser.util.ByteStreamUtils;
import java.util.LinkedList; import java.util.LinkedList;
@ -430,7 +432,6 @@ public class InventoryMessage extends NetworkMessage {
rVal.settargetEntId(targetEntId); rVal.settargetEntId(targetEntId);
rVal.setitemEntId(itemEntId); rVal.setitemEntId(itemEntId);
rVal.setitemTemplate(itemTemplate); rVal.setitemTemplate(itemTemplate);
rVal.serialize();
return rVal; return rVal;
} }
@ -451,7 +452,6 @@ public class InventoryMessage extends NetworkMessage {
public static InventoryMessage constructremoveItemFromInventoryMessage(int entityId){ public static InventoryMessage constructremoveItemFromInventoryMessage(int entityId){
InventoryMessage rVal = new InventoryMessage(InventoryMessageType.REMOVEITEMFROMINVENTORY); InventoryMessage rVal = new InventoryMessage(InventoryMessageType.REMOVEITEMFROMINVENTORY);
rVal.setentityId(entityId); rVal.setentityId(entityId);
rVal.serialize();
return rVal; return rVal;
} }
@ -499,7 +499,6 @@ public class InventoryMessage extends NetworkMessage {
InventoryMessage rVal = new InventoryMessage(InventoryMessageType.CLIENTREQUESTEQUIPITEM); InventoryMessage rVal = new InventoryMessage(InventoryMessageType.CLIENTREQUESTEQUIPITEM);
rVal.setequipPointId(equipPointId); rVal.setequipPointId(equipPointId);
rVal.setentityId(entityId); rVal.setentityId(entityId);
rVal.serialize();
return rVal; return rVal;
} }
@ -552,7 +551,6 @@ public class InventoryMessage extends NetworkMessage {
rVal.setentityId(entityId); rVal.setentityId(entityId);
rVal.setcontainerType(containerType); rVal.setcontainerType(containerType);
rVal.setequipPointId(equipPointId); rVal.setequipPointId(equipPointId);
rVal.serialize();
return rVal; return rVal;
} }
@ -625,7 +623,6 @@ public class InventoryMessage extends NetworkMessage {
rVal.setequipPointId(equipPointId); rVal.setequipPointId(equipPointId);
rVal.setentityId(entityId); rVal.setentityId(entityId);
rVal.setitemTemplate(itemTemplate); rVal.setitemTemplate(itemTemplate);
rVal.serialize();
return rVal; return rVal;
} }
@ -678,7 +675,6 @@ public class InventoryMessage extends NetworkMessage {
rVal.setequipperId(equipperId); rVal.setequipperId(equipperId);
rVal.setcontainerType(containerType); rVal.setcontainerType(containerType);
rVal.setequipPointId(equipPointId); rVal.setequipPointId(equipPointId);
rVal.serialize();
return rVal; return rVal;
} }
@ -721,7 +717,6 @@ public class InventoryMessage extends NetworkMessage {
public static InventoryMessage constructclientRequestUnequipItemMessage(String equipPointId){ public static InventoryMessage constructclientRequestUnequipItemMessage(String equipPointId){
InventoryMessage rVal = new InventoryMessage(InventoryMessageType.CLIENTREQUESTUNEQUIPITEM); InventoryMessage rVal = new InventoryMessage(InventoryMessageType.CLIENTREQUESTUNEQUIPITEM);
rVal.setequipPointId(equipPointId); rVal.setequipPointId(equipPointId);
rVal.serialize();
return rVal; return rVal;
} }
@ -779,7 +774,6 @@ public class InventoryMessage extends NetworkMessage {
rVal.setcontainerType(containerType); rVal.setcontainerType(containerType);
rVal.setequipPointId(equipPointId); rVal.setequipPointId(equipPointId);
rVal.setitemEntId(itemEntId); rVal.setitemEntId(itemEntId);
rVal.serialize();
return rVal; return rVal;
} }
@ -852,7 +846,6 @@ public class InventoryMessage extends NetworkMessage {
rVal.setitemTemplate(itemTemplate); rVal.setitemTemplate(itemTemplate);
rVal.setcontainerType(containerType); rVal.setcontainerType(containerType);
rVal.setequipPointId(equipPointId); rVal.setequipPointId(equipPointId);
rVal.serialize();
return rVal; return rVal;
} }
@ -873,7 +866,6 @@ public class InventoryMessage extends NetworkMessage {
public static InventoryMessage constructclientRequestWatchInventoryMessage(int targetEntId){ public static InventoryMessage constructclientRequestWatchInventoryMessage(int targetEntId){
InventoryMessage rVal = new InventoryMessage(InventoryMessageType.CLIENTREQUESTWATCHINVENTORY); InventoryMessage rVal = new InventoryMessage(InventoryMessageType.CLIENTREQUESTWATCHINVENTORY);
rVal.settargetEntId(targetEntId); rVal.settargetEntId(targetEntId);
rVal.serialize();
return rVal; return rVal;
} }
@ -894,7 +886,6 @@ public class InventoryMessage extends NetworkMessage {
public static InventoryMessage constructclientRequestUnwatchInventoryMessage(int targetEntId){ public static InventoryMessage constructclientRequestUnwatchInventoryMessage(int targetEntId){
InventoryMessage rVal = new InventoryMessage(InventoryMessageType.CLIENTREQUESTUNWATCHINVENTORY); InventoryMessage rVal = new InventoryMessage(InventoryMessageType.CLIENTREQUESTUNWATCHINVENTORY);
rVal.settargetEntId(targetEntId); rVal.settargetEntId(targetEntId);
rVal.serialize();
return rVal; return rVal;
} }
@ -917,7 +908,6 @@ public class InventoryMessage extends NetworkMessage {
InventoryMessage rVal = new InventoryMessage(InventoryMessageType.CLIENTREQUESTADDTOOLBAR); InventoryMessage rVal = new InventoryMessage(InventoryMessageType.CLIENTREQUESTADDTOOLBAR);
rVal.setentityId(entityId); rVal.setentityId(entityId);
rVal.settoolbarId(toolbarId); rVal.settoolbarId(toolbarId);
rVal.serialize();
return rVal; return rVal;
} }
@ -938,7 +928,6 @@ public class InventoryMessage extends NetworkMessage {
public static InventoryMessage constructclientRequestAddNaturalMessage(int entityId){ public static InventoryMessage constructclientRequestAddNaturalMessage(int entityId){
InventoryMessage rVal = new InventoryMessage(InventoryMessageType.CLIENTREQUESTADDNATURAL); InventoryMessage rVal = new InventoryMessage(InventoryMessageType.CLIENTREQUESTADDNATURAL);
rVal.setentityId(entityId); rVal.setentityId(entityId);
rVal.serialize();
return rVal; return rVal;
} }
@ -959,7 +948,6 @@ public class InventoryMessage extends NetworkMessage {
public static InventoryMessage constructclientUpdateToolbarMessage(int toolbarId){ public static InventoryMessage constructclientUpdateToolbarMessage(int toolbarId){
InventoryMessage rVal = new InventoryMessage(InventoryMessageType.CLIENTUPDATETOOLBAR); InventoryMessage rVal = new InventoryMessage(InventoryMessageType.CLIENTUPDATETOOLBAR);
rVal.settoolbarId(toolbarId); rVal.settoolbarId(toolbarId);
rVal.serialize();
return rVal; return rVal;
} }
@ -1027,7 +1015,6 @@ public class InventoryMessage extends NetworkMessage {
rVal.setviewTargetX(viewTargetX); rVal.setviewTargetX(viewTargetX);
rVal.setviewTargetY(viewTargetY); rVal.setviewTargetY(viewTargetY);
rVal.setviewTargetZ(viewTargetZ); rVal.setviewTargetZ(viewTargetZ);
rVal.serialize();
return rVal; return rVal;
} }
@ -1052,7 +1039,6 @@ public class InventoryMessage extends NetworkMessage {
rVal.setentityId(entityId); rVal.setentityId(entityId);
rVal.setstationId(stationId); rVal.setstationId(stationId);
rVal.setrecipeId(recipeId); rVal.setrecipeId(recipeId);
rVal.serialize();
return rVal; return rVal;
} }
@ -1075,10 +1061,10 @@ public class InventoryMessage extends NetworkMessage {
InventoryMessage rVal = new InventoryMessage(InventoryMessageType.SERVERUPDATEITEMCHARGES); InventoryMessage rVal = new InventoryMessage(InventoryMessageType.SERVERUPDATEITEMCHARGES);
rVal.setentityId(entityId); rVal.setentityId(entityId);
rVal.setcharges(charges); rVal.setcharges(charges);
rVal.serialize();
return rVal; return rVal;
} }
@Deprecated
@Override @Override
void serialize(){ void serialize(){
byte[] intValues = new byte[8]; byte[] intValues = new byte[8];
@ -1427,4 +1413,139 @@ public class InventoryMessage extends NetworkMessage {
serialized = true; serialized = true;
} }
@Override
public void write(OutputStream stream) throws IOException {
switch(this.messageType){
case ADDITEMTOINVENTORY:
//message header
stream.write(TypeBytes.MESSAGE_TYPE_INVENTORY);
stream.write(TypeBytes.INVENTORY_MESSAGE_TYPE_ADDITEMTOINVENTORY);
ByteStreamUtils.writeInt(stream, targetEntId);
ByteStreamUtils.writeInt(stream, itemEntId);
ByteStreamUtils.writeString(stream, itemTemplate);
break;
case REMOVEITEMFROMINVENTORY:
//message header
stream.write(TypeBytes.MESSAGE_TYPE_INVENTORY);
stream.write(TypeBytes.INVENTORY_MESSAGE_TYPE_REMOVEITEMFROMINVENTORY);
ByteStreamUtils.writeInt(stream, entityId);
break;
case CLIENTREQUESTEQUIPITEM:
//message header
stream.write(TypeBytes.MESSAGE_TYPE_INVENTORY);
stream.write(TypeBytes.INVENTORY_MESSAGE_TYPE_CLIENTREQUESTEQUIPITEM);
ByteStreamUtils.writeString(stream, equipPointId);
ByteStreamUtils.writeInt(stream, entityId);
break;
case SERVERCOMMANDMOVEITEMCONTAINER:
//message header
stream.write(TypeBytes.MESSAGE_TYPE_INVENTORY);
stream.write(TypeBytes.INVENTORY_MESSAGE_TYPE_SERVERCOMMANDMOVEITEMCONTAINER);
ByteStreamUtils.writeInt(stream, entityId);
ByteStreamUtils.writeInt(stream, containerType);
ByteStreamUtils.writeString(stream, equipPointId);
break;
case SERVERCOMMANDEQUIPITEM:
//message header
stream.write(TypeBytes.MESSAGE_TYPE_INVENTORY);
stream.write(TypeBytes.INVENTORY_MESSAGE_TYPE_SERVERCOMMANDEQUIPITEM);
ByteStreamUtils.writeInt(stream, equipperId);
ByteStreamUtils.writeInt(stream, containerType);
ByteStreamUtils.writeString(stream, equipPointId);
ByteStreamUtils.writeInt(stream, entityId);
ByteStreamUtils.writeString(stream, itemTemplate);
break;
case SERVERCOMMANDUNEQUIPITEM:
//message header
stream.write(TypeBytes.MESSAGE_TYPE_INVENTORY);
stream.write(TypeBytes.INVENTORY_MESSAGE_TYPE_SERVERCOMMANDUNEQUIPITEM);
ByteStreamUtils.writeInt(stream, equipperId);
ByteStreamUtils.writeInt(stream, containerType);
ByteStreamUtils.writeString(stream, equipPointId);
break;
case CLIENTREQUESTUNEQUIPITEM:
//message header
stream.write(TypeBytes.MESSAGE_TYPE_INVENTORY);
stream.write(TypeBytes.INVENTORY_MESSAGE_TYPE_CLIENTREQUESTUNEQUIPITEM);
ByteStreamUtils.writeString(stream, equipPointId);
break;
case CLIENTREQUESTSTOREITEM:
//message header
stream.write(TypeBytes.MESSAGE_TYPE_INVENTORY);
stream.write(TypeBytes.INVENTORY_MESSAGE_TYPE_CLIENTREQUESTSTOREITEM);
ByteStreamUtils.writeInt(stream, targetEntId);
ByteStreamUtils.writeInt(stream, containerType);
ByteStreamUtils.writeString(stream, equipPointId);
ByteStreamUtils.writeInt(stream, itemEntId);
break;
case SERVERCOMMANDSTOREITEM:
//message header
stream.write(TypeBytes.MESSAGE_TYPE_INVENTORY);
stream.write(TypeBytes.INVENTORY_MESSAGE_TYPE_SERVERCOMMANDSTOREITEM);
ByteStreamUtils.writeInt(stream, targetEntId);
ByteStreamUtils.writeInt(stream, itemEntId);
ByteStreamUtils.writeString(stream, itemTemplate);
ByteStreamUtils.writeInt(stream, containerType);
ByteStreamUtils.writeString(stream, equipPointId);
break;
case CLIENTREQUESTWATCHINVENTORY:
//message header
stream.write(TypeBytes.MESSAGE_TYPE_INVENTORY);
stream.write(TypeBytes.INVENTORY_MESSAGE_TYPE_CLIENTREQUESTWATCHINVENTORY);
ByteStreamUtils.writeInt(stream, targetEntId);
break;
case CLIENTREQUESTUNWATCHINVENTORY:
//message header
stream.write(TypeBytes.MESSAGE_TYPE_INVENTORY);
stream.write(TypeBytes.INVENTORY_MESSAGE_TYPE_CLIENTREQUESTUNWATCHINVENTORY);
ByteStreamUtils.writeInt(stream, targetEntId);
break;
case CLIENTREQUESTADDTOOLBAR:
//message header
stream.write(TypeBytes.MESSAGE_TYPE_INVENTORY);
stream.write(TypeBytes.INVENTORY_MESSAGE_TYPE_CLIENTREQUESTADDTOOLBAR);
ByteStreamUtils.writeInt(stream, entityId);
ByteStreamUtils.writeInt(stream, toolbarId);
break;
case CLIENTREQUESTADDNATURAL:
//message header
stream.write(TypeBytes.MESSAGE_TYPE_INVENTORY);
stream.write(TypeBytes.INVENTORY_MESSAGE_TYPE_CLIENTREQUESTADDNATURAL);
ByteStreamUtils.writeInt(stream, entityId);
break;
case CLIENTUPDATETOOLBAR:
//message header
stream.write(TypeBytes.MESSAGE_TYPE_INVENTORY);
stream.write(TypeBytes.INVENTORY_MESSAGE_TYPE_CLIENTUPDATETOOLBAR);
ByteStreamUtils.writeInt(stream, toolbarId);
break;
case CLIENTREQUESTPERFORMITEMACTION:
//message header
stream.write(TypeBytes.MESSAGE_TYPE_INVENTORY);
stream.write(TypeBytes.INVENTORY_MESSAGE_TYPE_CLIENTREQUESTPERFORMITEMACTION);
ByteStreamUtils.writeString(stream, equipPointId);
ByteStreamUtils.writeInt(stream, itemActionCode);
ByteStreamUtils.writeInt(stream, itemActionCodeState);
ByteStreamUtils.writeDouble(stream, viewTargetX);
ByteStreamUtils.writeDouble(stream, viewTargetY);
ByteStreamUtils.writeDouble(stream, viewTargetZ);
break;
case CLIENTREQUESTCRAFT:
//message header
stream.write(TypeBytes.MESSAGE_TYPE_INVENTORY);
stream.write(TypeBytes.INVENTORY_MESSAGE_TYPE_CLIENTREQUESTCRAFT);
ByteStreamUtils.writeInt(stream, entityId);
ByteStreamUtils.writeInt(stream, stationId);
ByteStreamUtils.writeInt(stream, recipeId);
break;
case SERVERUPDATEITEMCHARGES:
//message header
stream.write(TypeBytes.MESSAGE_TYPE_INVENTORY);
stream.write(TypeBytes.INVENTORY_MESSAGE_TYPE_SERVERUPDATEITEMCHARGES);
ByteStreamUtils.writeInt(stream, entityId);
ByteStreamUtils.writeInt(stream, charges);
break;
}
}
} }

View File

@ -1,5 +1,7 @@
package electrosphere.net.parser.net.message; package electrosphere.net.parser.net.message;
import java.io.IOException;
import java.io.OutputStream;
import io.github.studiorailgun.CircularByteBuffer; import io.github.studiorailgun.CircularByteBuffer;
import electrosphere.net.parser.util.ByteStreamUtils; import electrosphere.net.parser.util.ByteStreamUtils;
import java.util.LinkedList; import java.util.LinkedList;
@ -98,7 +100,6 @@ public class LoreMessage extends NetworkMessage {
*/ */
public static LoreMessage constructRequestRacesMessage(){ public static LoreMessage constructRequestRacesMessage(){
LoreMessage rVal = new LoreMessage(LoreMessageType.REQUESTRACES); LoreMessage rVal = new LoreMessage(LoreMessageType.REQUESTRACES);
rVal.serialize();
return rVal; return rVal;
} }
@ -141,10 +142,10 @@ public class LoreMessage extends NetworkMessage {
public static LoreMessage constructResponseRacesMessage(String data){ public static LoreMessage constructResponseRacesMessage(String data){
LoreMessage rVal = new LoreMessage(LoreMessageType.RESPONSERACES); LoreMessage rVal = new LoreMessage(LoreMessageType.RESPONSERACES);
rVal.setdata(data); rVal.setdata(data);
rVal.serialize();
return rVal; return rVal;
} }
@Deprecated
@Override @Override
void serialize(){ void serialize(){
byte[] intValues = new byte[8]; byte[] intValues = new byte[8];
@ -176,4 +177,21 @@ public class LoreMessage extends NetworkMessage {
serialized = true; serialized = true;
} }
@Override
public void write(OutputStream stream) throws IOException {
switch(this.messageType){
case REQUESTRACES:
//message header
stream.write(TypeBytes.MESSAGE_TYPE_LORE);
stream.write(TypeBytes.LORE_MESSAGE_TYPE_REQUESTRACES);
break;
case RESPONSERACES:
//message header
stream.write(TypeBytes.MESSAGE_TYPE_LORE);
stream.write(TypeBytes.LORE_MESSAGE_TYPE_RESPONSERACES);
ByteStreamUtils.writeString(stream, data);
break;
}
}
} }

View File

@ -2,6 +2,9 @@ package electrosphere.net.parser.net.message;
import io.github.studiorailgun.CircularByteBuffer; import io.github.studiorailgun.CircularByteBuffer;
import java.io.IOException;
import java.io.OutputStream;
/** /**
* A network message * A network message
*/ */
@ -511,6 +514,12 @@ public abstract class NetworkMessage {
} }
return rVal; return rVal;
} }
/**
* Writes this message to the output stream
* @param stream The stream
*/
public abstract void write(OutputStream stream) throws IOException;
/** /**
* Checks if this message is serialized or not * Checks if this message is serialized or not

View File

@ -1,5 +1,7 @@
package electrosphere.net.parser.net.message; package electrosphere.net.parser.net.message;
import java.io.IOException;
import java.io.OutputStream;
import io.github.studiorailgun.CircularByteBuffer; import io.github.studiorailgun.CircularByteBuffer;
import electrosphere.net.parser.util.ByteStreamUtils; import electrosphere.net.parser.util.ByteStreamUtils;
public class PlayerMessage extends NetworkMessage { public class PlayerMessage extends NetworkMessage {
@ -146,7 +148,6 @@ public class PlayerMessage extends NetworkMessage {
public static PlayerMessage constructSet_IDMessage(int playerID){ public static PlayerMessage constructSet_IDMessage(int playerID){
PlayerMessage rVal = new PlayerMessage(PlayerMessageType.SET_ID); PlayerMessage rVal = new PlayerMessage(PlayerMessageType.SET_ID);
rVal.setplayerID(playerID); rVal.setplayerID(playerID);
rVal.serialize();
return rVal; return rVal;
} }
@ -171,10 +172,10 @@ public class PlayerMessage extends NetworkMessage {
rVal.setinitialDiscretePositionX(initialDiscretePositionX); rVal.setinitialDiscretePositionX(initialDiscretePositionX);
rVal.setinitialDiscretePositionY(initialDiscretePositionY); rVal.setinitialDiscretePositionY(initialDiscretePositionY);
rVal.setinitialDiscretePositionZ(initialDiscretePositionZ); rVal.setinitialDiscretePositionZ(initialDiscretePositionZ);
rVal.serialize();
return rVal; return rVal;
} }
@Deprecated
@Override @Override
void serialize(){ void serialize(){
byte[] intValues = new byte[8]; byte[] intValues = new byte[8];
@ -213,4 +214,24 @@ public class PlayerMessage extends NetworkMessage {
serialized = true; serialized = true;
} }
@Override
public void write(OutputStream stream) throws IOException {
switch(this.messageType){
case SET_ID:
//message header
stream.write(TypeBytes.MESSAGE_TYPE_PLAYER);
stream.write(TypeBytes.PLAYER_MESSAGE_TYPE_SET_ID);
ByteStreamUtils.writeInt(stream, playerID);
break;
case SETINITIALDISCRETEPOSITION:
//message header
stream.write(TypeBytes.MESSAGE_TYPE_PLAYER);
stream.write(TypeBytes.PLAYER_MESSAGE_TYPE_SETINITIALDISCRETEPOSITION);
ByteStreamUtils.writeInt(stream, initialDiscretePositionX);
ByteStreamUtils.writeInt(stream, initialDiscretePositionY);
ByteStreamUtils.writeInt(stream, initialDiscretePositionZ);
break;
}
}
} }

View File

@ -1,5 +1,7 @@
package electrosphere.net.parser.net.message; package electrosphere.net.parser.net.message;
import java.io.IOException;
import java.io.OutputStream;
import io.github.studiorailgun.CircularByteBuffer; import io.github.studiorailgun.CircularByteBuffer;
public class ServerMessage extends NetworkMessage { public class ServerMessage extends NetworkMessage {
@ -90,7 +92,6 @@ public class ServerMessage extends NetworkMessage {
*/ */
public static ServerMessage constructPingMessage(){ public static ServerMessage constructPingMessage(){
ServerMessage rVal = new ServerMessage(ServerMessageType.PING); ServerMessage rVal = new ServerMessage(ServerMessageType.PING);
rVal.serialize();
return rVal; return rVal;
} }
@ -109,7 +110,6 @@ public class ServerMessage extends NetworkMessage {
*/ */
public static ServerMessage constructPongMessage(){ public static ServerMessage constructPongMessage(){
ServerMessage rVal = new ServerMessage(ServerMessageType.PONG); ServerMessage rVal = new ServerMessage(ServerMessageType.PONG);
rVal.serialize();
return rVal; return rVal;
} }
@ -128,10 +128,10 @@ public class ServerMessage extends NetworkMessage {
*/ */
public static ServerMessage constructDisconnectMessage(){ public static ServerMessage constructDisconnectMessage(){
ServerMessage rVal = new ServerMessage(ServerMessageType.DISCONNECT); ServerMessage rVal = new ServerMessage(ServerMessageType.DISCONNECT);
rVal.serialize();
return rVal; return rVal;
} }
@Deprecated
@Override @Override
void serialize(){ void serialize(){
switch(this.messageType){ switch(this.messageType){
@ -160,4 +160,25 @@ public class ServerMessage extends NetworkMessage {
serialized = true; serialized = true;
} }
@Override
public void write(OutputStream stream) throws IOException {
switch(this.messageType){
case PING:
//message header
stream.write(TypeBytes.MESSAGE_TYPE_SERVER);
stream.write(TypeBytes.SERVER_MESSAGE_TYPE_PING);
break;
case PONG:
//message header
stream.write(TypeBytes.MESSAGE_TYPE_SERVER);
stream.write(TypeBytes.SERVER_MESSAGE_TYPE_PONG);
break;
case DISCONNECT:
//message header
stream.write(TypeBytes.MESSAGE_TYPE_SERVER);
stream.write(TypeBytes.SERVER_MESSAGE_TYPE_DISCONNECT);
break;
}
}
} }

View File

@ -1,5 +1,7 @@
package electrosphere.net.parser.net.message; package electrosphere.net.parser.net.message;
import java.io.IOException;
import java.io.OutputStream;
import io.github.studiorailgun.CircularByteBuffer; import io.github.studiorailgun.CircularByteBuffer;
import electrosphere.net.parser.util.ByteStreamUtils; import electrosphere.net.parser.util.ByteStreamUtils;
import java.util.LinkedList; import java.util.LinkedList;
@ -285,7 +287,6 @@ public class SynchronizationMessage extends NetworkMessage {
rVal.setbTreeId(bTreeId); rVal.setbTreeId(bTreeId);
rVal.setfieldId(fieldId); rVal.setfieldId(fieldId);
rVal.setbTreeValue(bTreeValue); rVal.setbTreeValue(bTreeValue);
rVal.serialize();
return rVal; return rVal;
} }
@ -343,7 +344,6 @@ public class SynchronizationMessage extends NetworkMessage {
rVal.setbTreeId(bTreeId); rVal.setbTreeId(bTreeId);
rVal.setfieldId(fieldId); rVal.setfieldId(fieldId);
rVal.setstringValue(stringValue); rVal.setstringValue(stringValue);
rVal.serialize();
return rVal; return rVal;
} }
@ -370,7 +370,6 @@ public class SynchronizationMessage extends NetworkMessage {
rVal.setbTreeId(bTreeId); rVal.setbTreeId(bTreeId);
rVal.setfieldId(fieldId); rVal.setfieldId(fieldId);
rVal.setintValue(intValue); rVal.setintValue(intValue);
rVal.serialize();
return rVal; return rVal;
} }
@ -397,7 +396,6 @@ public class SynchronizationMessage extends NetworkMessage {
rVal.setbTreeId(bTreeId); rVal.setbTreeId(bTreeId);
rVal.setfieldId(fieldId); rVal.setfieldId(fieldId);
rVal.setlongValue(longValue); rVal.setlongValue(longValue);
rVal.serialize();
return rVal; return rVal;
} }
@ -424,7 +422,6 @@ public class SynchronizationMessage extends NetworkMessage {
rVal.setbTreeId(bTreeId); rVal.setbTreeId(bTreeId);
rVal.setfieldId(fieldId); rVal.setfieldId(fieldId);
rVal.setfloatValue(floatValue); rVal.setfloatValue(floatValue);
rVal.serialize();
return rVal; return rVal;
} }
@ -451,7 +448,6 @@ public class SynchronizationMessage extends NetworkMessage {
rVal.setbTreeId(bTreeId); rVal.setbTreeId(bTreeId);
rVal.setfieldId(fieldId); rVal.setfieldId(fieldId);
rVal.setdoubleValue(doubleValue); rVal.setdoubleValue(doubleValue);
rVal.serialize();
return rVal; return rVal;
} }
@ -476,7 +472,6 @@ public class SynchronizationMessage extends NetworkMessage {
rVal.setentityId(entityId); rVal.setentityId(entityId);
rVal.setbTreeId(bTreeId); rVal.setbTreeId(bTreeId);
rVal.setbTreeValue(bTreeValue); rVal.setbTreeValue(bTreeValue);
rVal.serialize();
return rVal; return rVal;
} }
@ -503,7 +498,6 @@ public class SynchronizationMessage extends NetworkMessage {
rVal.setbTreeId(bTreeId); rVal.setbTreeId(bTreeId);
rVal.setfieldId(fieldId); rVal.setfieldId(fieldId);
rVal.setbTreeValue(bTreeValue); rVal.setbTreeValue(bTreeValue);
rVal.serialize();
return rVal; return rVal;
} }
@ -526,7 +520,6 @@ public class SynchronizationMessage extends NetworkMessage {
SynchronizationMessage rVal = new SynchronizationMessage(SynchronizationMessageType.ATTACHTREE); SynchronizationMessage rVal = new SynchronizationMessage(SynchronizationMessageType.ATTACHTREE);
rVal.setentityId(entityId); rVal.setentityId(entityId);
rVal.setbTreeId(bTreeId); rVal.setbTreeId(bTreeId);
rVal.serialize();
return rVal; return rVal;
} }
@ -549,7 +542,6 @@ public class SynchronizationMessage extends NetworkMessage {
SynchronizationMessage rVal = new SynchronizationMessage(SynchronizationMessageType.DETATCHTREE); SynchronizationMessage rVal = new SynchronizationMessage(SynchronizationMessageType.DETATCHTREE);
rVal.setentityId(entityId); rVal.setentityId(entityId);
rVal.setbTreeId(bTreeId); rVal.setbTreeId(bTreeId);
rVal.serialize();
return rVal; return rVal;
} }
@ -592,10 +584,10 @@ public class SynchronizationMessage extends NetworkMessage {
public static SynchronizationMessage constructLoadSceneMessage(String stringValue){ public static SynchronizationMessage constructLoadSceneMessage(String stringValue){
SynchronizationMessage rVal = new SynchronizationMessage(SynchronizationMessageType.LOADSCENE); SynchronizationMessage rVal = new SynchronizationMessage(SynchronizationMessageType.LOADSCENE);
rVal.setstringValue(stringValue); rVal.setstringValue(stringValue);
rVal.serialize();
return rVal; return rVal;
} }
@Deprecated
@Override @Override
void serialize(){ void serialize(){
byte[] intValues = new byte[8]; byte[] intValues = new byte[8];
@ -833,4 +825,101 @@ public class SynchronizationMessage extends NetworkMessage {
serialized = true; serialized = true;
} }
@Override
public void write(OutputStream stream) throws IOException {
switch(this.messageType){
case UPDATECLIENTSTATE:
//message header
stream.write(TypeBytes.MESSAGE_TYPE_SYNCHRONIZATION);
stream.write(TypeBytes.SYNCHRONIZATION_MESSAGE_TYPE_UPDATECLIENTSTATE);
ByteStreamUtils.writeInt(stream, entityId);
ByteStreamUtils.writeInt(stream, bTreeId);
ByteStreamUtils.writeInt(stream, fieldId);
ByteStreamUtils.writeInt(stream, bTreeValue);
break;
case UPDATECLIENTSTRINGSTATE:
//message header
stream.write(TypeBytes.MESSAGE_TYPE_SYNCHRONIZATION);
stream.write(TypeBytes.SYNCHRONIZATION_MESSAGE_TYPE_UPDATECLIENTSTRINGSTATE);
ByteStreamUtils.writeInt(stream, entityId);
ByteStreamUtils.writeInt(stream, bTreeId);
ByteStreamUtils.writeInt(stream, fieldId);
ByteStreamUtils.writeString(stream, stringValue);
break;
case UPDATECLIENTINTSTATE:
//message header
stream.write(TypeBytes.MESSAGE_TYPE_SYNCHRONIZATION);
stream.write(TypeBytes.SYNCHRONIZATION_MESSAGE_TYPE_UPDATECLIENTINTSTATE);
ByteStreamUtils.writeInt(stream, entityId);
ByteStreamUtils.writeInt(stream, bTreeId);
ByteStreamUtils.writeInt(stream, fieldId);
ByteStreamUtils.writeInt(stream, intValue);
break;
case UPDATECLIENTLONGSTATE:
//message header
stream.write(TypeBytes.MESSAGE_TYPE_SYNCHRONIZATION);
stream.write(TypeBytes.SYNCHRONIZATION_MESSAGE_TYPE_UPDATECLIENTLONGSTATE);
ByteStreamUtils.writeInt(stream, entityId);
ByteStreamUtils.writeInt(stream, bTreeId);
ByteStreamUtils.writeInt(stream, fieldId);
ByteStreamUtils.writeLong(stream, longValue);
break;
case UPDATECLIENTFLOATSTATE:
//message header
stream.write(TypeBytes.MESSAGE_TYPE_SYNCHRONIZATION);
stream.write(TypeBytes.SYNCHRONIZATION_MESSAGE_TYPE_UPDATECLIENTFLOATSTATE);
ByteStreamUtils.writeInt(stream, entityId);
ByteStreamUtils.writeInt(stream, bTreeId);
ByteStreamUtils.writeInt(stream, fieldId);
ByteStreamUtils.writeFloat(stream, floatValue);
break;
case UPDATECLIENTDOUBLESTATE:
//message header
stream.write(TypeBytes.MESSAGE_TYPE_SYNCHRONIZATION);
stream.write(TypeBytes.SYNCHRONIZATION_MESSAGE_TYPE_UPDATECLIENTDOUBLESTATE);
ByteStreamUtils.writeInt(stream, entityId);
ByteStreamUtils.writeInt(stream, bTreeId);
ByteStreamUtils.writeInt(stream, fieldId);
ByteStreamUtils.writeDouble(stream, doubleValue);
break;
case CLIENTREQUESTBTREEACTION:
//message header
stream.write(TypeBytes.MESSAGE_TYPE_SYNCHRONIZATION);
stream.write(TypeBytes.SYNCHRONIZATION_MESSAGE_TYPE_CLIENTREQUESTBTREEACTION);
ByteStreamUtils.writeInt(stream, entityId);
ByteStreamUtils.writeInt(stream, bTreeId);
ByteStreamUtils.writeInt(stream, bTreeValue);
break;
case SERVERNOTIFYBTREETRANSITION:
//message header
stream.write(TypeBytes.MESSAGE_TYPE_SYNCHRONIZATION);
stream.write(TypeBytes.SYNCHRONIZATION_MESSAGE_TYPE_SERVERNOTIFYBTREETRANSITION);
ByteStreamUtils.writeInt(stream, entityId);
ByteStreamUtils.writeInt(stream, bTreeId);
ByteStreamUtils.writeInt(stream, fieldId);
ByteStreamUtils.writeInt(stream, bTreeValue);
break;
case ATTACHTREE:
//message header
stream.write(TypeBytes.MESSAGE_TYPE_SYNCHRONIZATION);
stream.write(TypeBytes.SYNCHRONIZATION_MESSAGE_TYPE_ATTACHTREE);
ByteStreamUtils.writeInt(stream, entityId);
ByteStreamUtils.writeInt(stream, bTreeId);
break;
case DETATCHTREE:
//message header
stream.write(TypeBytes.MESSAGE_TYPE_SYNCHRONIZATION);
stream.write(TypeBytes.SYNCHRONIZATION_MESSAGE_TYPE_DETATCHTREE);
ByteStreamUtils.writeInt(stream, entityId);
ByteStreamUtils.writeInt(stream, bTreeId);
break;
case LOADSCENE:
//message header
stream.write(TypeBytes.MESSAGE_TYPE_SYNCHRONIZATION);
stream.write(TypeBytes.SYNCHRONIZATION_MESSAGE_TYPE_LOADSCENE);
ByteStreamUtils.writeString(stream, stringValue);
break;
}
}
} }

View File

@ -1,5 +1,7 @@
package electrosphere.net.parser.net.message; package electrosphere.net.parser.net.message;
import java.io.IOException;
import java.io.OutputStream;
import io.github.studiorailgun.CircularByteBuffer; import io.github.studiorailgun.CircularByteBuffer;
import electrosphere.net.parser.util.ByteStreamUtils; import electrosphere.net.parser.util.ByteStreamUtils;
import java.util.LinkedList; import java.util.LinkedList;
@ -617,7 +619,6 @@ public class TerrainMessage extends NetworkMessage {
*/ */
public static TerrainMessage constructRequestMetadataMessage(){ public static TerrainMessage constructRequestMetadataMessage(){
TerrainMessage rVal = new TerrainMessage(TerrainMessageType.REQUESTMETADATA); TerrainMessage rVal = new TerrainMessage(TerrainMessageType.REQUESTMETADATA);
rVal.serialize();
return rVal; return rVal;
} }
@ -650,7 +651,6 @@ public class TerrainMessage extends NetworkMessage {
rVal.setworldMaxX(worldMaxX); rVal.setworldMaxX(worldMaxX);
rVal.setworldMaxY(worldMaxY); rVal.setworldMaxY(worldMaxY);
rVal.setworldMaxZ(worldMaxZ); rVal.setworldMaxZ(worldMaxZ);
rVal.serialize();
return rVal; return rVal;
} }
@ -685,7 +685,6 @@ public class TerrainMessage extends NetworkMessage {
rVal.setvoxelZ(voxelZ); rVal.setvoxelZ(voxelZ);
rVal.setterrainWeight(terrainWeight); rVal.setterrainWeight(terrainWeight);
rVal.setterrainValue(terrainValue); rVal.setterrainValue(terrainValue);
rVal.serialize();
return rVal; return rVal;
} }
@ -720,7 +719,6 @@ public class TerrainMessage extends NetworkMessage {
rVal.setvoxelZ(voxelZ); rVal.setvoxelZ(voxelZ);
rVal.setterrainWeight(terrainWeight); rVal.setterrainWeight(terrainWeight);
rVal.setterrainValue(terrainValue); rVal.setterrainValue(terrainValue);
rVal.serialize();
return rVal; return rVal;
} }
@ -751,7 +749,6 @@ public class TerrainMessage extends NetworkMessage {
rVal.setvalue(value); rVal.setvalue(value);
rVal.setterrainWeight(terrainWeight); rVal.setterrainWeight(terrainWeight);
rVal.setterrainValue(terrainValue); rVal.setterrainValue(terrainValue);
rVal.serialize();
return rVal; return rVal;
} }
@ -780,7 +777,6 @@ public class TerrainMessage extends NetworkMessage {
rVal.setrealLocationZ(realLocationZ); rVal.setrealLocationZ(realLocationZ);
rVal.setvalue(value); rVal.setvalue(value);
rVal.setterrainWeight(terrainWeight); rVal.setterrainWeight(terrainWeight);
rVal.serialize();
return rVal; return rVal;
} }
@ -805,7 +801,6 @@ public class TerrainMessage extends NetworkMessage {
rVal.setrealLocationX(realLocationX); rVal.setrealLocationX(realLocationX);
rVal.setrealLocationY(realLocationY); rVal.setrealLocationY(realLocationY);
rVal.setrealLocationZ(realLocationZ); rVal.setrealLocationZ(realLocationZ);
rVal.serialize();
return rVal; return rVal;
} }
@ -830,7 +825,6 @@ public class TerrainMessage extends NetworkMessage {
rVal.setworldX(worldX); rVal.setworldX(worldX);
rVal.setworldY(worldY); rVal.setworldY(worldY);
rVal.setworldZ(worldZ); rVal.setworldZ(worldZ);
rVal.serialize();
return rVal; return rVal;
} }
@ -888,7 +882,6 @@ public class TerrainMessage extends NetworkMessage {
rVal.setworldY(worldY); rVal.setworldY(worldY);
rVal.setworldZ(worldZ); rVal.setworldZ(worldZ);
rVal.setchunkData(chunkData); rVal.setchunkData(chunkData);
rVal.serialize();
return rVal; return rVal;
} }
@ -915,7 +908,6 @@ public class TerrainMessage extends NetworkMessage {
rVal.setworldY(worldY); rVal.setworldY(worldY);
rVal.setworldZ(worldZ); rVal.setworldZ(worldZ);
rVal.setchunkResolution(chunkResolution); rVal.setchunkResolution(chunkResolution);
rVal.serialize();
return rVal; return rVal;
} }
@ -983,7 +975,6 @@ public class TerrainMessage extends NetworkMessage {
rVal.setchunkResolution(chunkResolution); rVal.setchunkResolution(chunkResolution);
rVal.sethomogenousValue(homogenousValue); rVal.sethomogenousValue(homogenousValue);
rVal.setchunkData(chunkData); rVal.setchunkData(chunkData);
rVal.serialize();
return rVal; return rVal;
} }
@ -1010,7 +1001,6 @@ public class TerrainMessage extends NetworkMessage {
rVal.setworldY(worldY); rVal.setworldY(worldY);
rVal.setworldZ(worldZ); rVal.setworldZ(worldZ);
rVal.setchunkResolution(chunkResolution); rVal.setchunkResolution(chunkResolution);
rVal.serialize();
return rVal; return rVal;
} }
@ -1078,7 +1068,6 @@ public class TerrainMessage extends NetworkMessage {
rVal.setchunkResolution(chunkResolution); rVal.setchunkResolution(chunkResolution);
rVal.sethomogenousValue(homogenousValue); rVal.sethomogenousValue(homogenousValue);
rVal.setchunkData(chunkData); rVal.setchunkData(chunkData);
rVal.serialize();
return rVal; return rVal;
} }
@ -1113,7 +1102,6 @@ public class TerrainMessage extends NetworkMessage {
rVal.setvoxelZ(voxelZ); rVal.setvoxelZ(voxelZ);
rVal.setblockType(blockType); rVal.setblockType(blockType);
rVal.setblockMetadata(blockMetadata); rVal.setblockMetadata(blockMetadata);
rVal.serialize();
return rVal; return rVal;
} }
@ -1138,7 +1126,6 @@ public class TerrainMessage extends NetworkMessage {
rVal.setworldX(worldX); rVal.setworldX(worldX);
rVal.setworldY(worldY); rVal.setworldY(worldY);
rVal.setworldZ(worldZ); rVal.setworldZ(worldZ);
rVal.serialize();
return rVal; return rVal;
} }
@ -1196,7 +1183,6 @@ public class TerrainMessage extends NetworkMessage {
rVal.setworldY(worldY); rVal.setworldY(worldY);
rVal.setworldZ(worldZ); rVal.setworldZ(worldZ);
rVal.setchunkData(chunkData); rVal.setchunkData(chunkData);
rVal.serialize();
return rVal; return rVal;
} }
@ -1254,7 +1240,6 @@ public class TerrainMessage extends NetworkMessage {
rVal.setworldY(worldY); rVal.setworldY(worldY);
rVal.setworldZ(worldZ); rVal.setworldZ(worldZ);
rVal.setchunkData(chunkData); rVal.setchunkData(chunkData);
rVal.serialize();
return rVal; return rVal;
} }
@ -1291,7 +1276,6 @@ public class TerrainMessage extends NetworkMessage {
rVal.setblockType(blockType); rVal.setblockType(blockType);
rVal.setblockMetadata(blockMetadata); rVal.setblockMetadata(blockMetadata);
rVal.setblockEditSize(blockEditSize); rVal.setblockEditSize(blockEditSize);
rVal.serialize();
return rVal; return rVal;
} }
@ -1369,10 +1353,10 @@ public class TerrainMessage extends NetworkMessage {
rVal.setvoxelZ(voxelZ); rVal.setvoxelZ(voxelZ);
rVal.setblockRotation(blockRotation); rVal.setblockRotation(blockRotation);
rVal.setfabPath(fabPath); rVal.setfabPath(fabPath);
rVal.serialize();
return rVal; return rVal;
} }
@Deprecated
@Override @Override
void serialize(){ void serialize(){
byte[] intValues = new byte[8]; byte[] intValues = new byte[8];
@ -1928,4 +1912,210 @@ public class TerrainMessage extends NetworkMessage {
serialized = true; serialized = true;
} }
@Override
public void write(OutputStream stream) throws IOException {
switch(this.messageType){
case REQUESTMETADATA:
//message header
stream.write(TypeBytes.MESSAGE_TYPE_TERRAIN);
stream.write(TypeBytes.TERRAIN_MESSAGE_TYPE_REQUESTMETADATA);
break;
case RESPONSEMETADATA:
//message header
stream.write(TypeBytes.MESSAGE_TYPE_TERRAIN);
stream.write(TypeBytes.TERRAIN_MESSAGE_TYPE_RESPONSEMETADATA);
ByteStreamUtils.writeInt(stream, worldSizeDiscrete);
ByteStreamUtils.writeInt(stream, worldMinX);
ByteStreamUtils.writeInt(stream, worldMinY);
ByteStreamUtils.writeInt(stream, worldMinZ);
ByteStreamUtils.writeInt(stream, worldMaxX);
ByteStreamUtils.writeInt(stream, worldMaxY);
ByteStreamUtils.writeInt(stream, worldMaxZ);
break;
case REQUESTEDITVOXEL:
//message header
stream.write(TypeBytes.MESSAGE_TYPE_TERRAIN);
stream.write(TypeBytes.TERRAIN_MESSAGE_TYPE_REQUESTEDITVOXEL);
ByteStreamUtils.writeInt(stream, worldX);
ByteStreamUtils.writeInt(stream, worldY);
ByteStreamUtils.writeInt(stream, worldZ);
ByteStreamUtils.writeInt(stream, voxelX);
ByteStreamUtils.writeInt(stream, voxelY);
ByteStreamUtils.writeInt(stream, voxelZ);
ByteStreamUtils.writeFloat(stream, terrainWeight);
ByteStreamUtils.writeInt(stream, terrainValue);
break;
case UPDATEVOXEL:
//message header
stream.write(TypeBytes.MESSAGE_TYPE_TERRAIN);
stream.write(TypeBytes.TERRAIN_MESSAGE_TYPE_UPDATEVOXEL);
ByteStreamUtils.writeInt(stream, worldX);
ByteStreamUtils.writeInt(stream, worldY);
ByteStreamUtils.writeInt(stream, worldZ);
ByteStreamUtils.writeInt(stream, voxelX);
ByteStreamUtils.writeInt(stream, voxelY);
ByteStreamUtils.writeInt(stream, voxelZ);
ByteStreamUtils.writeFloat(stream, terrainWeight);
ByteStreamUtils.writeInt(stream, terrainValue);
break;
case REQUESTUSETERRAINPALETTE:
//message header
stream.write(TypeBytes.MESSAGE_TYPE_TERRAIN);
stream.write(TypeBytes.TERRAIN_MESSAGE_TYPE_REQUESTUSETERRAINPALETTE);
ByteStreamUtils.writeDouble(stream, realLocationX);
ByteStreamUtils.writeDouble(stream, realLocationY);
ByteStreamUtils.writeDouble(stream, realLocationZ);
ByteStreamUtils.writeFloat(stream, value);
ByteStreamUtils.writeFloat(stream, terrainWeight);
ByteStreamUtils.writeInt(stream, terrainValue);
break;
case REQUESTDESTROYTERRAIN:
//message header
stream.write(TypeBytes.MESSAGE_TYPE_TERRAIN);
stream.write(TypeBytes.TERRAIN_MESSAGE_TYPE_REQUESTDESTROYTERRAIN);
ByteStreamUtils.writeDouble(stream, realLocationX);
ByteStreamUtils.writeDouble(stream, realLocationY);
ByteStreamUtils.writeDouble(stream, realLocationZ);
ByteStreamUtils.writeFloat(stream, value);
ByteStreamUtils.writeFloat(stream, terrainWeight);
break;
case SPAWNPOSITION:
//message header
stream.write(TypeBytes.MESSAGE_TYPE_TERRAIN);
stream.write(TypeBytes.TERRAIN_MESSAGE_TYPE_SPAWNPOSITION);
ByteStreamUtils.writeDouble(stream, realLocationX);
ByteStreamUtils.writeDouble(stream, realLocationY);
ByteStreamUtils.writeDouble(stream, realLocationZ);
break;
case REQUESTCHUNKDATA:
//message header
stream.write(TypeBytes.MESSAGE_TYPE_TERRAIN);
stream.write(TypeBytes.TERRAIN_MESSAGE_TYPE_REQUESTCHUNKDATA);
ByteStreamUtils.writeInt(stream, worldX);
ByteStreamUtils.writeInt(stream, worldY);
ByteStreamUtils.writeInt(stream, worldZ);
break;
case SENDCHUNKDATA:
//message header
stream.write(TypeBytes.MESSAGE_TYPE_TERRAIN);
stream.write(TypeBytes.TERRAIN_MESSAGE_TYPE_SENDCHUNKDATA);
ByteStreamUtils.writeInt(stream, worldX);
ByteStreamUtils.writeInt(stream, worldY);
ByteStreamUtils.writeInt(stream, worldZ);
ByteStreamUtils.writeInt(stream, chunkData.length);
stream.write(chunkData);
break;
case REQUESTREDUCEDCHUNKDATA:
//message header
stream.write(TypeBytes.MESSAGE_TYPE_TERRAIN);
stream.write(TypeBytes.TERRAIN_MESSAGE_TYPE_REQUESTREDUCEDCHUNKDATA);
ByteStreamUtils.writeInt(stream, worldX);
ByteStreamUtils.writeInt(stream, worldY);
ByteStreamUtils.writeInt(stream, worldZ);
ByteStreamUtils.writeInt(stream, chunkResolution);
break;
case SENDREDUCEDCHUNKDATA:
//message header
stream.write(TypeBytes.MESSAGE_TYPE_TERRAIN);
stream.write(TypeBytes.TERRAIN_MESSAGE_TYPE_SENDREDUCEDCHUNKDATA);
ByteStreamUtils.writeInt(stream, worldX);
ByteStreamUtils.writeInt(stream, worldY);
ByteStreamUtils.writeInt(stream, worldZ);
ByteStreamUtils.writeInt(stream, chunkResolution);
ByteStreamUtils.writeInt(stream, homogenousValue);
ByteStreamUtils.writeInt(stream, chunkData.length);
stream.write(chunkData);
break;
case REQUESTREDUCEDBLOCKDATA:
//message header
stream.write(TypeBytes.MESSAGE_TYPE_TERRAIN);
stream.write(TypeBytes.TERRAIN_MESSAGE_TYPE_REQUESTREDUCEDBLOCKDATA);
ByteStreamUtils.writeInt(stream, worldX);
ByteStreamUtils.writeInt(stream, worldY);
ByteStreamUtils.writeInt(stream, worldZ);
ByteStreamUtils.writeInt(stream, chunkResolution);
break;
case SENDREDUCEDBLOCKDATA:
//message header
stream.write(TypeBytes.MESSAGE_TYPE_TERRAIN);
stream.write(TypeBytes.TERRAIN_MESSAGE_TYPE_SENDREDUCEDBLOCKDATA);
ByteStreamUtils.writeInt(stream, worldX);
ByteStreamUtils.writeInt(stream, worldY);
ByteStreamUtils.writeInt(stream, worldZ);
ByteStreamUtils.writeInt(stream, chunkResolution);
ByteStreamUtils.writeInt(stream, homogenousValue);
ByteStreamUtils.writeInt(stream, chunkData.length);
stream.write(chunkData);
break;
case UPDATEBLOCK:
//message header
stream.write(TypeBytes.MESSAGE_TYPE_TERRAIN);
stream.write(TypeBytes.TERRAIN_MESSAGE_TYPE_UPDATEBLOCK);
ByteStreamUtils.writeInt(stream, worldX);
ByteStreamUtils.writeInt(stream, worldY);
ByteStreamUtils.writeInt(stream, worldZ);
ByteStreamUtils.writeInt(stream, voxelX);
ByteStreamUtils.writeInt(stream, voxelY);
ByteStreamUtils.writeInt(stream, voxelZ);
ByteStreamUtils.writeInt(stream, blockType);
ByteStreamUtils.writeInt(stream, blockMetadata);
break;
case REQUESTFLUIDDATA:
//message header
stream.write(TypeBytes.MESSAGE_TYPE_TERRAIN);
stream.write(TypeBytes.TERRAIN_MESSAGE_TYPE_REQUESTFLUIDDATA);
ByteStreamUtils.writeInt(stream, worldX);
ByteStreamUtils.writeInt(stream, worldY);
ByteStreamUtils.writeInt(stream, worldZ);
break;
case SENDFLUIDDATA:
//message header
stream.write(TypeBytes.MESSAGE_TYPE_TERRAIN);
stream.write(TypeBytes.TERRAIN_MESSAGE_TYPE_SENDFLUIDDATA);
ByteStreamUtils.writeInt(stream, worldX);
ByteStreamUtils.writeInt(stream, worldY);
ByteStreamUtils.writeInt(stream, worldZ);
ByteStreamUtils.writeInt(stream, chunkData.length);
stream.write(chunkData);
break;
case UPDATEFLUIDDATA:
//message header
stream.write(TypeBytes.MESSAGE_TYPE_TERRAIN);
stream.write(TypeBytes.TERRAIN_MESSAGE_TYPE_UPDATEFLUIDDATA);
ByteStreamUtils.writeInt(stream, worldX);
ByteStreamUtils.writeInt(stream, worldY);
ByteStreamUtils.writeInt(stream, worldZ);
ByteStreamUtils.writeInt(stream, chunkData.length);
stream.write(chunkData);
break;
case REQUESTEDITBLOCK:
//message header
stream.write(TypeBytes.MESSAGE_TYPE_TERRAIN);
stream.write(TypeBytes.TERRAIN_MESSAGE_TYPE_REQUESTEDITBLOCK);
ByteStreamUtils.writeInt(stream, worldX);
ByteStreamUtils.writeInt(stream, worldY);
ByteStreamUtils.writeInt(stream, worldZ);
ByteStreamUtils.writeInt(stream, voxelX);
ByteStreamUtils.writeInt(stream, voxelY);
ByteStreamUtils.writeInt(stream, voxelZ);
ByteStreamUtils.writeInt(stream, blockType);
ByteStreamUtils.writeInt(stream, blockMetadata);
ByteStreamUtils.writeInt(stream, blockEditSize);
break;
case REQUESTPLACEFAB:
//message header
stream.write(TypeBytes.MESSAGE_TYPE_TERRAIN);
stream.write(TypeBytes.TERRAIN_MESSAGE_TYPE_REQUESTPLACEFAB);
ByteStreamUtils.writeInt(stream, worldX);
ByteStreamUtils.writeInt(stream, worldY);
ByteStreamUtils.writeInt(stream, worldZ);
ByteStreamUtils.writeInt(stream, voxelX);
ByteStreamUtils.writeInt(stream, voxelY);
ByteStreamUtils.writeInt(stream, voxelZ);
ByteStreamUtils.writeInt(stream, blockRotation);
ByteStreamUtils.writeString(stream, fabPath);
break;
}
}
} }

View File

@ -115,7 +115,7 @@ public class NetworkParser {
public void pushMessagesOut() throws IOException { public void pushMessagesOut() throws IOException {
for(NetworkMessage message : outgoingMessageQueue){ for(NetworkMessage message : outgoingMessageQueue){
outgoingMessageQueue.remove(message); outgoingMessageQueue.remove(message);
outgoingStream.write(message.getRawBytes()); message.write(outgoingStream);
if(this.releaseOnSend){ if(this.releaseOnSend){
this.pool.release(message); this.pool.release(message);
} }

View File

@ -2,6 +2,8 @@ package electrosphere.net.parser.util;
import io.github.studiorailgun.CircularByteBuffer; import io.github.studiorailgun.CircularByteBuffer;
import java.io.IOException;
import java.io.OutputStream;
import java.nio.ByteBuffer; import java.nio.ByteBuffer;
import java.util.List; import java.util.List;
import java.util.concurrent.Semaphore; import java.util.concurrent.Semaphore;
@ -290,5 +292,80 @@ public class ByteStreamUtils {
bufferLock.release(); bufferLock.release();
return rVal; return rVal;
} }
public static void writeInt(OutputStream stream, int i) throws IOException {
bufferLock.acquireUninterruptibly();
integerCompactor.clear();
integerCompactor.position(0);
integerCompactor.limit(4);
integerCompactor.putInt(i);
integerCompactor.position(0);
integerCompactor.limit(4);
stream.write(integerCompactor.get(0));
stream.write(integerCompactor.get(1));
stream.write(integerCompactor.get(2));
stream.write(integerCompactor.get(3));
bufferLock.release();
}
public static void writeFloat(OutputStream stream, float i) throws IOException {
bufferLock.acquireUninterruptibly();
integerCompactor.clear();
integerCompactor.position(0);
integerCompactor.limit(4);
integerCompactor.putFloat(i);
integerCompactor.position(0);
integerCompactor.limit(4);
stream.write(integerCompactor.get(0));
stream.write(integerCompactor.get(1));
stream.write(integerCompactor.get(2));
stream.write(integerCompactor.get(3));
bufferLock.release();
}
public static void writeLong(OutputStream stream, long i) throws IOException {
bufferLock.acquireUninterruptibly();
integerCompactor.clear();
integerCompactor.position(0);
integerCompactor.limit(8);
integerCompactor.putLong(i);
integerCompactor.position(0);
integerCompactor.limit(8);
stream.write(integerCompactor.get(0));
stream.write(integerCompactor.get(1));
stream.write(integerCompactor.get(2));
stream.write(integerCompactor.get(3));
stream.write(integerCompactor.get(4));
stream.write(integerCompactor.get(5));
stream.write(integerCompactor.get(6));
stream.write(integerCompactor.get(7));
bufferLock.release();
}
public static void writeString(OutputStream stream, String s) throws IOException {
int length = s.length();
writeInt(stream, length);
byte[] stringBytes = s.getBytes();
stream.write(stringBytes);
}
public static void writeDouble(OutputStream stream, double i) throws IOException {
bufferLock.acquireUninterruptibly();
integerCompactor.clear();
integerCompactor.position(0);
integerCompactor.limit(8);
integerCompactor.putDouble(i);
integerCompactor.position(0);
integerCompactor.limit(8);
stream.write(integerCompactor.get(0));
stream.write(integerCompactor.get(1));
stream.write(integerCompactor.get(2));
stream.write(integerCompactor.get(3));
stream.write(integerCompactor.get(4));
stream.write(integerCompactor.get(5));
stream.write(integerCompactor.get(6));
stream.write(integerCompactor.get(7));
bufferLock.release();
}
} }