split client and server 3
This commit is contained in:
parent
b17efb5b07
commit
d37bb7f6cc
7 changed files with 118 additions and 41 deletions
|
@ -65,6 +65,7 @@ import client.renderer.chunk.RenderChunk;
|
|||
import client.renderer.entity.RenderItem;
|
||||
import client.renderer.entity.RenderManager;
|
||||
import client.renderer.particle.EffectRenderer;
|
||||
import client.renderer.particle.EntityFirework;
|
||||
import client.renderer.texture.EntityTexManager;
|
||||
import client.renderer.texture.TextureManager;
|
||||
import client.renderer.texture.TextureMap;
|
||||
|
@ -76,6 +77,7 @@ import client.window.Keysym;
|
|||
import client.window.Wheel;
|
||||
import client.window.Window;
|
||||
import client.window.WindowEvent;
|
||||
import game.IClient;
|
||||
import game.biome.Biome;
|
||||
import game.block.Block;
|
||||
import game.collect.Lists;
|
||||
|
@ -87,6 +89,7 @@ import game.entity.animal.EntityHorse;
|
|||
import game.entity.npc.Energy;
|
||||
import game.entity.npc.EntityNPC;
|
||||
import game.entity.types.EntityLiving;
|
||||
import game.entity.types.IEntityFX;
|
||||
import game.future.Futures;
|
||||
import game.future.ListenableFuture;
|
||||
import game.future.ListenableFutureTask;
|
||||
|
@ -106,6 +109,7 @@ import game.log.Log;
|
|||
import game.log.LogLevel;
|
||||
import game.log.Message;
|
||||
import game.material.Material;
|
||||
import game.nbt.NBTTagCompound;
|
||||
import game.network.IThreadListener;
|
||||
import game.network.NetConnection;
|
||||
import game.network.NetHandler.ThreadQuickExitException;
|
||||
|
@ -122,6 +126,7 @@ import game.properties.IProperty;
|
|||
import game.rng.Random;
|
||||
import game.sound.EventType;
|
||||
import game.sound.PositionedSound;
|
||||
import game.sound.Sound;
|
||||
import game.util.CharValidator;
|
||||
import game.util.ExtMath;
|
||||
import game.util.FileUtils;
|
||||
|
@ -175,7 +180,7 @@ import game.world.WorldClient;
|
|||
[[oder einfach einen Toaster mit nem LCD und Maus]]
|
||||
*/
|
||||
|
||||
public class Game implements IThreadListener {
|
||||
public class Game implements IThreadListener, IClient {
|
||||
public static class SyncFunction implements IntFunction {
|
||||
public void apply(IntVar cv, int value) {
|
||||
Game.getGame().sync(value);
|
||||
|
@ -3275,4 +3280,50 @@ public class Game implements IThreadListener {
|
|||
}
|
||||
}, "Zenity listener").start();
|
||||
}
|
||||
|
||||
public void makeFireworks(double x, double y, double z, double motionX, double motionY, double motionZ, NBTTagCompound compund)
|
||||
{
|
||||
this.effectRenderer.addEffect(new EntityFirework.StarterFX(this.theWorld, x, y, z, motionX, motionY, motionZ, this.effectRenderer, compund));
|
||||
}
|
||||
|
||||
public int getRenderDistance() {
|
||||
return this.renderDistance;
|
||||
}
|
||||
|
||||
public float getGravity() {
|
||||
return this.gravity;
|
||||
}
|
||||
|
||||
public int getTimeFactor() {
|
||||
return this.timeFactor;
|
||||
}
|
||||
|
||||
public boolean hasDayCycle() {
|
||||
return this.dayCycle;
|
||||
}
|
||||
|
||||
public void playSound(Sound sound) {
|
||||
this.soundManager.playSound(sound);
|
||||
}
|
||||
|
||||
public EntityNPC getPlayer() {
|
||||
return this.thePlayer;
|
||||
}
|
||||
|
||||
public IEntityFX spawnEffectParticle(int particleId, double xCoord, double yCoord, double zCoord, double xSpeed, double ySpeed, double zSpeed,
|
||||
int[] parameters) {
|
||||
return this.effectRenderer.spawnEffectParticle(particleId, xCoord, yCoord, zCoord, xSpeed, ySpeed, zSpeed, parameters);
|
||||
}
|
||||
|
||||
public void addBlockDestroyEffects(BlockPos pos, State state) {
|
||||
this.effectRenderer.addBlockDestroyEffects(pos, state);
|
||||
}
|
||||
|
||||
public void sendBlockBreakProgress(int breakerId, BlockPos pos, int progress) {
|
||||
this.renderGlobal.sendBlockBreakProgress(breakerId, pos, progress);
|
||||
}
|
||||
|
||||
public void markBlocksForUpdate(int x1, int y1, int z1, int x2, int y2, int z2) {
|
||||
this.renderGlobal.markBlocksForUpdate(x1, y1, z1, x2, y2, z2);
|
||||
}
|
||||
}
|
||||
|
|
|
@ -184,7 +184,7 @@ public class ClientPlayer extends NetHandler implements IClientPlayer
|
|||
NetHandler.checkThread(packetIn, this, this.gameController);
|
||||
this.gameController.charEditor = packetIn.isInEditor();
|
||||
this.gameController.controller = new PlayerController(this.gameController, this);
|
||||
this.clientWorldController = new WorldClient(this.gameController.debugWorld, packetIn.getDimension());
|
||||
this.clientWorldController = new WorldClient(this.gameController, this.gameController.debugWorld, packetIn.getDimension());
|
||||
// this.gameController.gameSettings.difficulty = packetIn.getDifficulty();
|
||||
this.gameController.loadWorld(this.clientWorldController, packetIn.getEntityType());
|
||||
// this.gameController.thePlayer.dimension = this.clientWorldController.dimension.getDimensionId();
|
||||
|
@ -1046,7 +1046,7 @@ public class ClientPlayer extends NetHandler implements IClientPlayer
|
|||
// this.travelSound = "portal.travel";
|
||||
// }
|
||||
// Scoreboard scoreboard = this.clientWorldController.getScoreboard();
|
||||
this.clientWorldController = new WorldClient(this.gameController.debugWorld, dim);
|
||||
this.clientWorldController = new WorldClient(this.gameController, this.gameController.debugWorld, dim);
|
||||
// this.clientWorldController.setWorldScoreboard(scoreboard);
|
||||
this.gameController.loadWorld(this.clientWorldController, packetIn.getEntityType());
|
||||
// this.gameController.thePlayer.dimension = dim.getDimensionId();
|
||||
|
|
|
@ -5,11 +5,12 @@ import client.renderer.RenderBuffer;
|
|||
import client.renderer.texture.TextureAtlasSprite;
|
||||
import game.entity.Entity;
|
||||
import game.entity.EntityType;
|
||||
import game.entity.types.IEntityFX;
|
||||
import game.nbt.NBTTagCompound;
|
||||
import game.util.ExtMath;
|
||||
import game.world.World;
|
||||
|
||||
public class EntityFX extends Entity
|
||||
public class EntityFX extends Entity implements IEntityFX
|
||||
{
|
||||
protected int particleTextureIndexX;
|
||||
protected int particleTextureIndexY;
|
||||
|
|
24
java/src/game/IClient.java
Normal file
24
java/src/game/IClient.java
Normal file
|
@ -0,0 +1,24 @@
|
|||
package game;
|
||||
|
||||
import game.entity.Entity;
|
||||
import game.entity.npc.EntityNPC;
|
||||
import game.entity.types.IEntityFX;
|
||||
import game.nbt.NBTTagCompound;
|
||||
import game.sound.Sound;
|
||||
import game.world.BlockPos;
|
||||
import game.world.State;
|
||||
|
||||
public interface IClient {
|
||||
int getRenderDistance();
|
||||
float getGravity();
|
||||
int getTimeFactor();
|
||||
boolean hasDayCycle();
|
||||
void playSound(Sound sound);
|
||||
EntityNPC getPlayer();
|
||||
Entity getRenderViewEntity();
|
||||
void makeFireworks(double x, double y, double z, double motionX, double motionY, double motionZ, NBTTagCompound compund);
|
||||
IEntityFX spawnEffectParticle(int particleId, double xCoord, double yCoord, double zCoord, double xSpeed, double ySpeed, double zSpeed, int[] parameters);
|
||||
void addBlockDestroyEffects(BlockPos pos, State state);
|
||||
void sendBlockBreakProgress(int breakerId, BlockPos pos, int progress);
|
||||
void markBlocksForUpdate(int x1, int y1, int z1, int x2, int y2, int z2);
|
||||
}
|
|
@ -14,20 +14,12 @@ import game.world.WorldServer;
|
|||
|
||||
public interface IServer {
|
||||
List<IPlayer> getIPlayers();
|
||||
|
||||
void sendPacket(Packet packet);
|
||||
|
||||
void sendPacket(Packet packet, int dimension);
|
||||
|
||||
void sendNear(double x, double y, double z, double radius, int dimension, Packet packet);
|
||||
|
||||
void sendNearExcept(EntityNPC except, double x, double y, double z, double radius, int dimension, Packet packet);
|
||||
|
||||
Map<String, Position> getWarps();
|
||||
|
||||
List<WorldServer> getWorlds();
|
||||
|
||||
WorldServer getWorld(int dimension);
|
||||
|
||||
void placeInDimension(Entity entity, WorldServer oldWorld, WorldServer world, BlockPos pos, PortalType portal);
|
||||
}
|
11
java/src/game/entity/types/IEntityFX.java
Normal file
11
java/src/game/entity/types/IEntityFX.java
Normal file
|
@ -0,0 +1,11 @@
|
|||
package game.entity.types;
|
||||
|
||||
import client.renderer.particle.EntityFX;
|
||||
|
||||
public interface IEntityFX {
|
||||
|
||||
EntityFX multiplyVelocity(float multiplier);
|
||||
|
||||
void setRBGColorF(float particleRedIn, float particleGreenIn, float particleBlueIn);
|
||||
|
||||
}
|
|
@ -3,9 +3,7 @@ package game.world;
|
|||
import java.util.List;
|
||||
import java.util.Set;
|
||||
|
||||
import client.Game;
|
||||
import client.renderer.particle.EntityFX;
|
||||
import client.renderer.particle.EntityFirework;
|
||||
import game.IClient;
|
||||
import game.biome.Biome;
|
||||
import game.block.Block;
|
||||
import game.collect.Lists;
|
||||
|
@ -14,6 +12,7 @@ import game.dimension.Dimension;
|
|||
import game.entity.Entity;
|
||||
import game.entity.item.EntityCart;
|
||||
import game.entity.npc.EntityNPC;
|
||||
import game.entity.types.IEntityFX;
|
||||
import game.init.BlockRegistry;
|
||||
import game.init.ItemRegistry;
|
||||
import game.init.Items;
|
||||
|
@ -34,7 +33,7 @@ public class WorldClient extends World
|
|||
{
|
||||
private static final int DISPLAY_RANGE = 16;
|
||||
|
||||
private final Game gm = Game.getGame();
|
||||
private final IClient gm;
|
||||
private final Set<Entity> entityList = Sets.<Entity>newHashSet();
|
||||
private final Set<Entity> spawnQueue = Sets.<Entity>newHashSet();
|
||||
private final Set<ChunkPos> previousActive = Sets.<ChunkPos>newHashSet();
|
||||
|
@ -45,14 +44,14 @@ public class WorldClient extends World
|
|||
protected int lastLightning;
|
||||
protected Vec3 lightColor = new Vec3(0xffffff);
|
||||
|
||||
public WorldClient(boolean debug, Dimension dim)
|
||||
public WorldClient(IClient gm, boolean debug, Dimension dim)
|
||||
{
|
||||
super(dim, true, debug);
|
||||
// this.gm = profiler;
|
||||
this.gm = gm;
|
||||
this.calculateInitialSkylight();
|
||||
this.calculateInitialWeather();
|
||||
this.setGravity(this.gm.gravity);
|
||||
this.setTimeFactor(this.gm.timeFactor);
|
||||
this.setGravity(this.gm.getGravity());
|
||||
this.setTimeFactor(this.gm.getTimeFactor());
|
||||
// this.setDifficulty(this.gm.difficulty);
|
||||
}
|
||||
|
||||
|
@ -60,7 +59,7 @@ public class WorldClient extends World
|
|||
{
|
||||
// this.info.tick();
|
||||
|
||||
if (this.gm.dayCycle)
|
||||
if (this.gm.hasDayCycle())
|
||||
{
|
||||
this.daytime += this.timeFactor;
|
||||
}
|
||||
|
@ -89,7 +88,7 @@ public class WorldClient extends World
|
|||
|
||||
protected void updateBlocks()
|
||||
{
|
||||
this.setActivePlayerChunksAndCheckLight(this.gm.renderDistance);
|
||||
this.setActivePlayerChunksAndCheckLight(this.gm.getRenderDistance());
|
||||
this.previousActive.retainAll(this.active);
|
||||
|
||||
if (this.previousActive.size() == this.active.size())
|
||||
|
@ -157,7 +156,7 @@ public class WorldClient extends World
|
|||
}
|
||||
else if (entityIn instanceof EntityCart)
|
||||
{
|
||||
this.gm.getSoundManager().playSound(new MovingSoundMinecart((EntityCart)entityIn));
|
||||
this.gm.playSound(new MovingSoundMinecart((EntityCart)entityIn));
|
||||
}
|
||||
|
||||
return flag;
|
||||
|
@ -217,7 +216,7 @@ public class WorldClient extends World
|
|||
|
||||
public Entity getEntityByID(int id)
|
||||
{
|
||||
return (Entity)(id == this.gm.thePlayer.getId() ? this.gm.thePlayer : super.getEntityByID(id));
|
||||
return (Entity)(id == this.gm.getPlayer().getId() ? this.gm.getPlayer() : super.getEntityByID(id));
|
||||
}
|
||||
|
||||
public Entity removeEntityFromWorld(int entityID)
|
||||
|
@ -335,13 +334,13 @@ public class WorldClient extends World
|
|||
// }
|
||||
// else
|
||||
// {
|
||||
this.gm.getSoundManager().playSound(positionedsoundrecord);
|
||||
this.gm.playSound(positionedsoundrecord);
|
||||
// }
|
||||
}
|
||||
|
||||
public void makeFireworks(double x, double y, double z, double motionX, double motionY, double motionZ, NBTTagCompound compund)
|
||||
{
|
||||
this.gm.effectRenderer.addEffect(new EntityFirework.StarterFX(this, x, y, z, motionX, motionY, motionZ, this.gm.effectRenderer, compund));
|
||||
this.gm.makeFireworks(x, y, z, motionX, motionY, motionZ, compund);
|
||||
}
|
||||
|
||||
public Chunk getChunk(int x, int z)
|
||||
|
@ -370,9 +369,9 @@ public class WorldClient extends World
|
|||
this.spawnEntityFX(particleType, particleType.getShouldIgnoreRange(), xCoord, yCoord, zCoord, xOffset, yOffset, zOffset, data);
|
||||
}
|
||||
|
||||
public EntityFX spawnEntityFX(ParticleType particle, boolean ignoreRange, double xCoord, double yCoord, double zCoord, double xOffset, double yOffset, double zOffset, int[] parameters)
|
||||
public IEntityFX spawnEntityFX(ParticleType particle, boolean ignoreRange, double xCoord, double yCoord, double zCoord, double xOffset, double yOffset, double zOffset, int[] parameters)
|
||||
{
|
||||
if (this.gm != null && this.gm.getRenderViewEntity() != null && this.gm.effectRenderer != null)
|
||||
if (this.gm.getRenderViewEntity() != null)
|
||||
{
|
||||
int particleID = particle.getParticleID();
|
||||
// int i = this.gm.particleSetting;
|
||||
|
@ -388,19 +387,18 @@ public class WorldClient extends World
|
|||
|
||||
if (ignoreRange)
|
||||
{
|
||||
return this.gm.effectRenderer.spawnEffectParticle(particleID, xCoord, yCoord, zCoord, xOffset, yOffset, zOffset, parameters);
|
||||
return this.gm.spawnEffectParticle(particleID, xCoord, yCoord, zCoord, xOffset, yOffset, zOffset, parameters);
|
||||
}
|
||||
else
|
||||
{
|
||||
double d3 = 16.0D;
|
||||
return d0 * d0 + d1 * d1 + d2 * d2 > 256.0D ? null : (/* i > 1 ? null : */ this.gm.effectRenderer.spawnEffectParticle(particleID, xCoord, yCoord, zCoord, xOffset, yOffset, zOffset, parameters));
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
if(d0 * d0 + d1 * d1 + d2 * d2 > 256.0D)
|
||||
return null;
|
||||
return this.gm.spawnEffectParticle(particleID, xCoord, yCoord, zCoord, xOffset, yOffset, zOffset, parameters);
|
||||
}
|
||||
}
|
||||
return null;
|
||||
}
|
||||
|
||||
// public void broadcastSound(int soundID, BlockPos pos, int data)
|
||||
// {
|
||||
|
@ -583,10 +581,10 @@ public class WorldClient extends World
|
|||
|
||||
if (block.getMaterial() != Material.air)
|
||||
{
|
||||
this.gm.getSoundManager().playSound(new PositionedSound(block.sound.getBreakSound(), 1.0F, /* block.sound.getFrequency() * 0.8F, */ (float)blockPosIn.getX() + 0.5F, (float)blockPosIn.getY() + 0.5F, (float)blockPosIn.getZ() + 0.5F));
|
||||
this.gm.playSound(new PositionedSound(block.sound.getBreakSound(), 1.0F, /* block.sound.getFrequency() * 0.8F, */ (float)blockPosIn.getX() + 0.5F, (float)blockPosIn.getY() + 0.5F, (float)blockPosIn.getZ() + 0.5F));
|
||||
}
|
||||
|
||||
this.gm.effectRenderer.addBlockDestroyEffects(blockPosIn, block.getStateFromMeta(data >> 12 & 255));
|
||||
this.gm.addBlockDestroyEffects(blockPosIn, block.getStateFromMeta(data >> 12 & 255));
|
||||
break;
|
||||
|
||||
case 2002:
|
||||
|
@ -623,7 +621,7 @@ public class WorldClient extends World
|
|||
double d24 = Math.cos(d23) * d22;
|
||||
double d9 = 0.01D + this.rand.doublev() * 0.5D;
|
||||
double d11 = Math.sin(d23) * d22;
|
||||
EntityFX entityfx = this.spawnEntityFX(enumparticletypes, enumparticletypes.getShouldIgnoreRange(), d13 + d24 * 0.1D, d14 + 0.3D, d16 + d11 * 0.1D, d24, d9, d11, new int[0]);
|
||||
IEntityFX entityfx = this.spawnEntityFX(enumparticletypes, enumparticletypes.getShouldIgnoreRange(), d13 + d24 * 0.1D, d14 + 0.3D, d16 + d11 * 0.1D, d24, d9, d11, new int[0]);
|
||||
|
||||
if (entityfx != null)
|
||||
{
|
||||
|
@ -660,7 +658,7 @@ public class WorldClient extends World
|
|||
int i = pos.getX();
|
||||
int j = pos.getY();
|
||||
int k = pos.getZ();
|
||||
this.gm.renderGlobal.markBlocksForUpdate(i - 1, j - 1, k - 1, i + 1, j + 1, k + 1);
|
||||
this.gm.markBlocksForUpdate(i - 1, j - 1, k - 1, i + 1, j + 1, k + 1);
|
||||
}
|
||||
|
||||
public void notifyLightSet(BlockPos pos)
|
||||
|
@ -668,17 +666,17 @@ public class WorldClient extends World
|
|||
int i = pos.getX();
|
||||
int j = pos.getY();
|
||||
int k = pos.getZ();
|
||||
this.gm.renderGlobal.markBlocksForUpdate(i - 1, j - 1, k - 1, i + 1, j + 1, k + 1);
|
||||
this.gm.markBlocksForUpdate(i - 1, j - 1, k - 1, i + 1, j + 1, k + 1);
|
||||
}
|
||||
|
||||
public void markBlockRangeForRenderUpdate(int x1, int y1, int z1, int x2, int y2, int z2)
|
||||
{
|
||||
this.gm.renderGlobal.markBlocksForUpdate(x1 - 1, y1 - 1, z1 - 1, x2 + 1, y2 + 1, z2 + 1);
|
||||
this.gm.markBlocksForUpdate(x1 - 1, y1 - 1, z1 - 1, x2 + 1, y2 + 1, z2 + 1);
|
||||
}
|
||||
|
||||
public void sendBlockBreakProgress(int breakerId, BlockPos pos, int progress)
|
||||
{
|
||||
this.gm.renderGlobal.sendBlockBreakProgress(breakerId, pos, progress);
|
||||
this.gm.sendBlockBreakProgress(breakerId, pos, progress);
|
||||
}
|
||||
|
||||
public float getSunBrightness(float p_72971_1_) {
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue