Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
18 changes: 13 additions & 5 deletions src/net/skidcode/gh/server/Server.java
Original file line number Diff line number Diff line change
Expand Up @@ -41,7 +41,10 @@ public final class Server {

public static final int PLUGIN_API_VERSION = 2;

public static boolean superSecretSettings = false;
public static boolean enableEntitySpawning = false;


public static boolean enableEntityTicking = false;
public static boolean enableTNTEntity = false;
public static volatile boolean running = true;
public static RakNetHandler handler;
Expand All @@ -68,7 +71,12 @@ public static void stop() {
running = false;
handler.notifyShutdown();
}


private static int freeEID = 1;
public static int incrementAndGetNextFreeEID() {
return ++freeEID;
}

public static void main(String[] args) throws IOException {
Logger.info("Starting Server...");
Runtime.getRuntime().addShutdownHook(new Thread() {
Expand Down Expand Up @@ -105,7 +113,7 @@ public void run() {
{"allow-from-different-port", String.valueOf(Server.allowFromDifferentPort)},
{"enable-terminal-colors", String.valueOf(Server.enableColors)},
{"send-full-chunks", String.valueOf(Server.sendFullChunks)},
{"enable-entity-ticking", String.valueOf(Server.superSecretSettings)},
{"enable-entity-ticking", String.valueOf(Server.enableEntityTicking)},
{"enable-tnt-entity", String.valueOf(Server.enableTNTEntity)},
});
Server.enableColors = properties.getBoolean("enable-terminal-colors", Server.enableColors);
Expand All @@ -117,10 +125,10 @@ public void run() {
Server.allowFromDifferentPort = properties.getBoolean("allow-from-different-port", Server.allowFromDifferentPort);
Server.sendFullChunks = properties.getBoolean("send-full-chunks", (Server.sendFullChunks));
Server.enableTNTEntity = properties.getBoolean("enable-tnt-entity", Server.enableTNTEntity);
Server.superSecretSettings = properties.getBoolean("enable-entity-ticking", Server.superSecretSettings);
Server.enableEntityTicking = properties.getBoolean("enable-entity-ticking", Server.enableEntityTicking);

Logger.info("Running server on port "+Server.port);
if(Server.enableTNTEntity && !Server.superSecretSettings) {
if(Server.enableTNTEntity && !Server.enableEntityTicking) {
Logger.warn("TNT Entity is enabled but entity ticking is not enabled!");
}

Expand Down
20 changes: 18 additions & 2 deletions src/net/skidcode/gh/server/entity/Entity.java
Original file line number Diff line number Diff line change
Expand Up @@ -3,14 +3,16 @@
import java.util.ArrayList;

import net.skidcode.gh.server.Server;
import net.skidcode.gh.server.network.protocol.RemoveEntityPacket;
import net.skidcode.gh.server.player.Player;
import net.skidcode.gh.server.utils.AABB;
import net.skidcode.gh.server.world.World;

public abstract class Entity {

public float posX = 0, posY = 0, posZ = 0;
public float yaw, pitch;
public int eid;
public final int eid;
public World world;
public AABB boundingBox = new AABB(-0.5f, 0, -0.5f, 0.5f, 1, 0.5f);
public float width = 1, height = 1, radius = 0.5f;
Expand All @@ -21,7 +23,7 @@ public abstract class Entity {

public Entity() {
this.setPosition(Server.world.spawnX, Server.world.spawnY, Server.world.spawnZ, 0, 0);
this.eid = World.incrementAndGetNextFreeEID(); //TODO move to entity?
this.eid = Server.incrementAndGetNextFreeEID();
}

public void setSize(float width, float height) {
Expand Down Expand Up @@ -70,6 +72,13 @@ public void move(float mx, float my, float mz) {

public void remove() {
this.removed = true;
if(Server.enableEntitySpawning) {
for(Player p : this.world.players.values()) {
RemoveEntityPacket pk = new RemoveEntityPacket();
pk.eid = this.eid;
p.dataPacket(pk);
}
}
}

public void tick() {
Expand All @@ -82,4 +91,11 @@ public void setPosition(float x, float y, float z) {
this.posZ = z;
this.boundingBox.set(x - this.radius, y, z - this.radius, x + this.radius, y + this.height, z + this.radius);
}

public float distanceTo(float x, float y, float z) {
float dx = this.posX - x;
float dy = this.posY - y;
float dz = this.posZ - z;
return (float)Math.sqrt(dx*dx + dy*dy + dz*dz);
}
}
18 changes: 17 additions & 1 deletion src/net/skidcode/gh/server/entity/PrimedTnt.java
Original file line number Diff line number Diff line change
@@ -1,5 +1,8 @@
package net.skidcode.gh.server.entity;

import net.skidcode.gh.server.Server;
import net.skidcode.gh.server.network.protocol.MovePlayerPacket;
import net.skidcode.gh.server.player.Player;
import net.skidcode.gh.server.utils.Logger;
import net.skidcode.gh.server.utils.MathUtils;
import net.skidcode.gh.server.world.World;
Expand Down Expand Up @@ -39,7 +42,20 @@ public void tick() {
this.motionZ *= 0.7;
this.motionY *= -0.5;
}
System.out.println(this.posX+" "+this.posY+" "+this.posZ+" "+this.onGround);

if(Server.enableEntitySpawning) {
for(Player p : this.world.players.values()) {
MovePlayerPacket pk = new MovePlayerPacket();
pk.eid = this.eid;
pk.posX = this.posX;
pk.posY = this.posY;
pk.posZ = this.posZ;
pk.yaw = this.yaw;
pk.pitch = this.pitch;
p.dataPacket(pk);
}
}

--this.ticksUntilExplosion;
if(this.ticksUntilExplosion > 0) {

Expand Down
6 changes: 6 additions & 0 deletions src/net/skidcode/gh/server/network/PacketWithEID.java
Original file line number Diff line number Diff line change
@@ -0,0 +1,6 @@
package net.skidcode.gh.server.network;

public interface PacketWithEID {
public int getEID();
public void setEID(int eid);
}
14 changes: 12 additions & 2 deletions src/net/skidcode/gh/server/network/protocol/AddPlayerPacket.java
Original file line number Diff line number Diff line change
@@ -1,9 +1,10 @@
package net.skidcode.gh.server.network.protocol;

import net.skidcode.gh.server.network.MinecraftDataPacket;
import net.skidcode.gh.server.network.PacketWithEID;
import net.skidcode.gh.server.network.ProtocolInfo;

public class AddPlayerPacket extends MinecraftDataPacket{
public class AddPlayerPacket extends MinecraftDataPacket implements PacketWithEID{

public long clientID;
public String nickname;
Expand All @@ -21,6 +22,16 @@ public void decode() {

}

@Override
public int getEID() {
return this.eid;
}

@Override
public void setEID(int eid) {
this.eid = eid;
}

@Override
public void encode() {
this.putByte(pid());
Expand All @@ -36,5 +47,4 @@ public void encode() {
public int getSize() {
return 1 + 8 + 2+this.nickname.length() + 4 + 4 + 4 + 4;
}

}
Original file line number Diff line number Diff line change
@@ -1,9 +1,10 @@
package net.skidcode.gh.server.network.protocol;

import net.skidcode.gh.server.network.MinecraftDataPacket;
import net.skidcode.gh.server.network.PacketWithEID;
import net.skidcode.gh.server.network.ProtocolInfo;

public class MovePlayerPacket extends MinecraftDataPacket{
public class MovePlayerPacket extends MinecraftDataPacket implements PacketWithEID{

public int eid;
public float posX, posY, posZ, pitch, yaw;
Expand All @@ -12,7 +13,17 @@ public class MovePlayerPacket extends MinecraftDataPacket{
public byte pid() {
return ProtocolInfo.MOVE_PLAYER_PACKET;
}

@Override
public int getEID() {
return this.eid;
}

@Override
public void setEID(int eid) {
this.eid = eid;
}

@Override
public void decode() {
this.eid = this.getInt();
Expand Down
Original file line number Diff line number Diff line change
@@ -1,9 +1,10 @@
package net.skidcode.gh.server.network.protocol;

import net.skidcode.gh.server.network.MinecraftDataPacket;
import net.skidcode.gh.server.network.PacketWithEID;
import net.skidcode.gh.server.network.ProtocolInfo;

public class PlaceBlockPacket extends MinecraftDataPacket{
public class PlaceBlockPacket extends MinecraftDataPacket implements PacketWithEID{

public byte posY, face, id;
public int eid, posX, posZ;
Expand All @@ -12,6 +13,16 @@ public byte pid() {
return ProtocolInfo.PLACE_BLOCK_PACKET;
}

@Override
public int getEID() {
return this.eid;
}

@Override
public void setEID(int eid) {
this.eid = eid;
}

@Override
public void decode() {
this.eid = this.getInt();
Expand Down
Original file line number Diff line number Diff line change
@@ -1,9 +1,10 @@
package net.skidcode.gh.server.network.protocol;

import net.skidcode.gh.server.network.MinecraftDataPacket;
import net.skidcode.gh.server.network.PacketWithEID;
import net.skidcode.gh.server.network.ProtocolInfo;

public class PlayerEquipmentPacket extends MinecraftDataPacket{
public class PlayerEquipmentPacket extends MinecraftDataPacket implements PacketWithEID{

public int eid;
public byte itemID;
Expand All @@ -19,6 +20,16 @@ public void decode() {
this.itemID = this.getByte();
}

@Override
public int getEID() {
return this.eid;
}

@Override
public void setEID(int eid) {
this.eid = eid;
}

@Override
public void encode() {
this.putByte(pid());
Expand Down
Original file line number Diff line number Diff line change
@@ -1,9 +1,10 @@
package net.skidcode.gh.server.network.protocol;

import net.skidcode.gh.server.network.MinecraftDataPacket;
import net.skidcode.gh.server.network.PacketWithEID;
import net.skidcode.gh.server.network.ProtocolInfo;

public class RemoveBlockPacket extends MinecraftDataPacket{
public class RemoveBlockPacket extends MinecraftDataPacket implements PacketWithEID{

public int eid, posX, posZ;
public byte posY;
Expand All @@ -30,6 +31,17 @@ public void encode() {
this.putByte(this.posY);
}

@Override
public int getEID() {
return this.eid;
}

@Override
public void setEID(int eid) {
this.eid = eid;
}


@Override
public int getSize() {
return 1 + 4 + 4 + 4 + 1;
Expand Down
Original file line number Diff line number Diff line change
@@ -1,9 +1,10 @@
package net.skidcode.gh.server.network.protocol;

import net.skidcode.gh.server.network.MinecraftDataPacket;
import net.skidcode.gh.server.network.PacketWithEID;
import net.skidcode.gh.server.network.ProtocolInfo;

public class RemoveEntityPacket extends MinecraftDataPacket{
public class RemoveEntityPacket extends MinecraftDataPacket implements PacketWithEID{

public int eid;

Expand All @@ -17,6 +18,16 @@ public void decode() {

}

@Override
public int getEID() {
return this.eid;
}

@Override
public void setEID(int eid) {
this.eid = eid;
}

@Override
public void encode() {
this.putByte(this.pid());
Expand Down
13 changes: 12 additions & 1 deletion src/net/skidcode/gh/server/network/protocol/StartGamePacket.java
Original file line number Diff line number Diff line change
@@ -1,9 +1,10 @@
package net.skidcode.gh.server.network.protocol;

import net.skidcode.gh.server.network.MinecraftDataPacket;
import net.skidcode.gh.server.network.PacketWithEID;
import net.skidcode.gh.server.network.ProtocolInfo;

public class StartGamePacket extends MinecraftDataPacket{
public class StartGamePacket extends MinecraftDataPacket implements PacketWithEID{

public float posX, posY, posZ;
public int eid;
Expand All @@ -17,7 +18,17 @@ public byte pid() {
public void decode() {

}

@Override
public int getEID() {
return this.eid;
}

@Override
public void setEID(int eid) {
this.eid = eid;
}

@Override
public void encode() {
this.putByte(pid());
Expand Down
Loading