feat: TU19 (Dec 2014) Features & Content (#155)
* try to resolve merge conflict
* feat: TU19 (Dec 2014) Features & Content (#32)
* December 2014 files
* Working release build
* Fix compilation issues
* Add sound to Windows64Media
* Add DLC content and force Tutorial DLC
* Revert "Add DLC content and force Tutorial DLC"
This reverts commit 97a4399472.
* Disable broken light packing
* Disable breakpoint during DLC texture map load
Allows DLC loading but the DLC textures are still broken
* Fix post build not working
* ...
* fix vs2022 build
* fix cmake build
---------
Co-authored-by: Loki <lokirautio@gmail.com>
This commit is contained in:
@@ -41,6 +41,11 @@ class LevelSettings;
|
||||
class Biome;
|
||||
class Villages;
|
||||
class VillageSiege;
|
||||
class Tickable;
|
||||
class Minecart;
|
||||
class EntitySelector;
|
||||
class Scoreboard;
|
||||
class GameRules;
|
||||
|
||||
class Level : public LevelSource
|
||||
{
|
||||
@@ -61,7 +66,7 @@ public:
|
||||
static const int MAX_LEVEL_SIZE = 30000000;
|
||||
static const int maxMovementHeight = 512; // 4J added
|
||||
|
||||
static const int minBuildHeight = 0; // 4J - brought forward from 1.2.3
|
||||
static const int minBuildHeight = 0; // 4J - brought forward from 1.2.3
|
||||
static const int maxBuildHeight = 256; // 4J - brought forward from 1.2.3
|
||||
static const int genDepthBits = 7;
|
||||
static const int genDepthBitsPlusFour = genDepthBits + 4;
|
||||
@@ -84,7 +89,7 @@ public:
|
||||
static bool getCacheTestEnabled();
|
||||
static bool getInstaTick();
|
||||
static void setInstaTick(bool enable);
|
||||
// bool instaTick; // 4J - removed
|
||||
// bool instaTick; // 4J - removed
|
||||
|
||||
static const int MAX_BRIGHTNESS = 15;
|
||||
static const int TICKS_PER_DAY = 20 * 60 * 20; // ORG:20*60*20
|
||||
@@ -124,16 +129,15 @@ public:
|
||||
protected:
|
||||
float oRainLevel, rainLevel;
|
||||
float oThunderLevel, thunderLevel;
|
||||
int lightningTime;
|
||||
|
||||
public:
|
||||
int lightningBoltTime;
|
||||
bool noNeighborUpdate;
|
||||
int skyFlashTime;
|
||||
|
||||
int difficulty;
|
||||
Random *random;
|
||||
bool isNew;
|
||||
Dimension *dimension;
|
||||
|
||||
|
||||
protected:
|
||||
vector<LevelListener *> listeners;
|
||||
|
||||
@@ -152,6 +156,13 @@ public:
|
||||
shared_ptr<Villages> villages;
|
||||
VillageSiege *villageSiege;
|
||||
|
||||
private:
|
||||
// 4J - Calendar is now static
|
||||
// Calendar *calendar;
|
||||
|
||||
protected:
|
||||
Scoreboard *scoreboard;
|
||||
|
||||
public:
|
||||
Biome *getBiome(int x, int z); // 4J - brought forward from 1.2.3
|
||||
virtual BiomeSource *getBiomeSource();
|
||||
@@ -164,7 +175,6 @@ private:
|
||||
|
||||
public:
|
||||
Level(shared_ptr<LevelStorage>levelStorage, const wstring& name, Dimension *dimension, LevelSettings *levelSettings, bool doCreateChunkSource = true);
|
||||
Level(Level *level, Dimension *dimension);
|
||||
Level(shared_ptr<LevelStorage>levelStorage, const wstring& levelName, LevelSettings *levelSettings);
|
||||
Level(shared_ptr<LevelStorage>levelStorage, const wstring& levelName, LevelSettings *levelSettings, Dimension *fixedDimension, bool doCreateChunkSource = true);
|
||||
|
||||
@@ -187,6 +197,7 @@ public:
|
||||
bool isEmptyTile(int x, int y, int z);
|
||||
virtual bool isEntityTile(int x, int y, int z);
|
||||
int getTileRenderShape(int x, int y, int z);
|
||||
int getTileRenderShape(int t); // 4J Added to slightly optimise and avoid getTile call if we already know the tile
|
||||
bool hasChunkAt(int x, int y, int z);
|
||||
bool hasChunksAt(int x, int y, int z, int r);
|
||||
bool hasChunksAt(int x0, int y0, int z0, int x1, int y1, int z1);
|
||||
@@ -201,36 +212,31 @@ public:
|
||||
public:
|
||||
LevelChunk *getChunkAt(int x, int z);
|
||||
LevelChunk *getChunk(int x, int z);
|
||||
virtual bool setTileAndDataNoUpdate(int x, int y, int z, int tile, int data);
|
||||
virtual bool setTileAndDataNoUpdate(int x, int y, int z, int tile, int data, bool informClients);
|
||||
virtual bool setTileNoUpdate(int x, int y, int z, int tile);
|
||||
bool setTileNoUpdateNoLightCheck(int x, int y, int z, int tile); // 4J added
|
||||
virtual bool setTileAndData(int x, int y, int z, int tile, int data, int updateFlags);
|
||||
Material *getMaterial(int x, int y, int z);
|
||||
virtual int getData(int x, int y, int z);
|
||||
void setData(int x, int y, int z, int data, bool forceUpdate=false); // 4J added forceUpdate
|
||||
virtual bool setDataNoUpdate(int x, int y, int z, int data);
|
||||
bool setTile(int x, int y, int z, int tile);
|
||||
bool setTileAndData(int x, int y, int z, int tile, int data);
|
||||
void sendTileUpdated(int x, int y, int z);
|
||||
virtual bool setData(int x, int y, int z, int data, int updateFlags, bool forceUpdate =false); // 4J added forceUpdate
|
||||
virtual bool removeTile(int x, int y, int z);
|
||||
virtual bool destroyTile(int x, int y, int z, bool dropResources);
|
||||
virtual bool setTileAndUpdate(int x, int y, int z, int tile);
|
||||
virtual void sendTileUpdated(int x, int y, int z);
|
||||
|
||||
public:
|
||||
virtual void tileUpdated(int x, int y, int z, int tile);
|
||||
void lightColumnChanged(int x, int z, int y0, int y1);
|
||||
void setTileDirty(int x, int y, int z);
|
||||
void setTilesDirty(int x0, int y0, int z0, int x1, int y1, int z1);
|
||||
void swap(int x1, int y1, int z1, int x2, int y2, int z2);
|
||||
void updateNeighborsAt(int x, int y, int z, int tile);
|
||||
|
||||
private:
|
||||
void updateNeighborsAtExceptFromFacing(int x, int y, int z, int tile, int skipFacing);
|
||||
void neighborChanged(int x, int y, int z, int type);
|
||||
|
||||
public:
|
||||
virtual bool isTileToBeTickedAt(int x, int y, int z, int tileId);
|
||||
bool canSeeSky(int x, int y, int z);
|
||||
int getDaytimeRawBrightness(int x, int y, int z);
|
||||
int getRawBrightness(int x, int y, int z);
|
||||
int getRawBrightness(int x, int y, int z, bool propagate);
|
||||
bool isSkyLit(int x, int y, int z);
|
||||
int getHeightmap(int x, int z);
|
||||
int getLowestHeightmap(int x, int z);
|
||||
void updateLightIfOtherThan(LightLayer::variety layer, int x, int y, int z, int expected);
|
||||
int getBrightnessPropagate(LightLayer::variety layer, int x, int y, int z, int tileId); // 4J added tileId
|
||||
void getNeighbourBrightnesses(int *brightnesses, LightLayer::variety layer, int x, int y, int z); // 4J added
|
||||
@@ -247,7 +253,8 @@ public:
|
||||
inline int getBrightnessCached(lightCache_t *cache, LightLayer::variety layer, int x, int y, int z);
|
||||
inline int getEmissionCached(lightCache_t *cache, int ct, int x, int y, int z);
|
||||
inline int getBlockingCached(lightCache_t *cache, LightLayer::variety layer, int *ct, int x, int y, int z);
|
||||
void initCache(lightCache_t *cache);
|
||||
void initCachePartial(lightCache_t *cache, int xc, int yc, int zc);
|
||||
void initCacheComplete(lightCache_t *cache, int xc, int yc, int zc);
|
||||
void flushCache(lightCache_t *cache, __uint64 cacheUse, LightLayer::variety layer);
|
||||
|
||||
bool cachewritten;
|
||||
@@ -278,10 +285,11 @@ public:
|
||||
HitResult *clip(Vec3 *a, Vec3 *b, bool liquid);
|
||||
HitResult *clip(Vec3 *a, Vec3 *b, bool liquid, bool solidOnly);
|
||||
|
||||
virtual void playSound(shared_ptr<Entity> entity, int iSound, float volume, float pitch);
|
||||
virtual void playEntitySound(shared_ptr<Entity> entity, int iSound, float volume, float pitch);
|
||||
virtual void playPlayerSound(shared_ptr<Player> entity, int iSound, float volume, float pitch);
|
||||
virtual void playSound(double x, double y, double z, int iSound, float volume, float pitch, float fClipSoundDist=16.0f);
|
||||
|
||||
virtual void playLocalSound(double x, double y, double z, int iSound, float volume, float pitch, float fClipSoundDist=16.0f);
|
||||
virtual void playLocalSound(double x, double y, double z, int iSound, float volume, float pitch, bool distanceDelay, float fClipSoundDist=16.0f);
|
||||
|
||||
void playStreamingMusic(const wstring& name, int x, int y, int z);
|
||||
void playMusic(double x, double y, double z, const wstring& string, float volume);
|
||||
@@ -305,13 +313,14 @@ private:
|
||||
AABBList boxes;
|
||||
|
||||
public:
|
||||
AABBList *getCubes(shared_ptr<Entity> source, AABB *box, bool noEntities=false, bool blockAtEdge=false); // 4J - added noEntities & blockAtEdge parameters
|
||||
AABBList *getTileCubes(AABB *box, bool blockAtEdge); // 4J Stu - Brought forward from 12w36 to fix #46282 - TU5: Gameplay: Exiting the minecart in a tight corridor damages the player
|
||||
AABBList *getCubes(shared_ptr<Entity> source, AABB *box, bool noEntities = false, bool blockAtEdge = false); // 4J: Added noEntities & blockAtEdge parameters
|
||||
AABBList *getTileCubes(AABB *box, bool blockAtEdge = false); // 4J: Added noEntities & blockAtEdge parameters
|
||||
int getOldSkyDarken(float a); // 4J - change brought forward from 1.8.2
|
||||
float getSkyDarken(float a); // 4J - change brought forward from 1.8.2
|
||||
Vec3 *getSkyColor(shared_ptr<Entity> source, float a);
|
||||
float getTimeOfDay(float a);
|
||||
int getMoonPhase(float a);
|
||||
int getMoonPhase();
|
||||
float getMoonBrightness();
|
||||
float getSunAngle(float a);
|
||||
Vec3 *getCloudColor(float a);
|
||||
Vec3 *getFogColor(float a);
|
||||
@@ -322,7 +331,8 @@ public:
|
||||
int getLightDepth(int x, int z);
|
||||
float getStarBrightness(float a);
|
||||
virtual void addToTickNextTick(int x, int y, int z, int tileId, int tickDelay);
|
||||
virtual void forceAddTileTick(int x, int y, int z, int tileId, int tickDelay);
|
||||
virtual void addToTickNextTick(int x, int y, int z, int tileId, int tickDelay, int priorityTilt);
|
||||
virtual void forceAddTileTick(int x, int y, int z, int tileId, int tickDelay, int prioTilt);
|
||||
virtual void tickEntities();
|
||||
void addAllPendingTileEntities(vector< shared_ptr<TileEntity> >& entities);
|
||||
void tick(shared_ptr<Entity> e);
|
||||
@@ -350,7 +360,9 @@ public:
|
||||
virtual bool isSolidRenderTile(int x, int y, int z);
|
||||
virtual bool isSolidBlockingTile(int x, int y, int z);
|
||||
bool isSolidBlockingTileInLoadedChunk(int x, int y, int z, bool valueIfNotLoaded);
|
||||
bool isFullAABBTile(int x, int y, int z);
|
||||
virtual bool isTopSolidBlocking(int x, int y, int z); // 4J - brought forward from 1.3.2
|
||||
bool isTopSolidBlocking(Tile *tile, int data);
|
||||
|
||||
protected:
|
||||
bool spawnEnemies;
|
||||
@@ -386,7 +398,7 @@ protected:
|
||||
private:
|
||||
int delayUntilNextMoodSound;
|
||||
static const int CHUNK_POLL_RANGE = 9;
|
||||
static const int CHUNK_TILE_TICK_COUNT = 80;
|
||||
static const int CHUNK_TILE_TICK_COUNT = 80;
|
||||
static const int CHUNK_SECTION_TILE_TICK_COUNT = (CHUNK_TILE_TICK_COUNT / 8) + 1;
|
||||
|
||||
protected:
|
||||
@@ -402,9 +414,8 @@ public:
|
||||
bool shouldSnow(int x, int y, int z);
|
||||
void checkLight(int x, int y, int z, bool force = false, bool rootOnlyEmissive = false); // 4J added force, rootOnlySource parameters
|
||||
private:
|
||||
int *toCheckLevel;
|
||||
int getExpectedSkyColor(lightCache_t *cache, int oc, int x, int y , int z, int ct, int block);
|
||||
int getExpectedBlockColor(lightCache_t *cache, int oc, int x, int y, int z, int ct, int block, bool propagatedOnly); // 4J added parameter
|
||||
int *toCheckLevel;
|
||||
int getExpectedLight(lightCache_t *cache, int x, int y, int z, LightLayer::variety layer, bool propagatedOnly);
|
||||
public:
|
||||
void checkLight(LightLayer::variety layer, int xc, int yc, int zc, bool force = false, bool rootOnlyEmissive = false); // 4J added force, rootOnlySource parameters
|
||||
|
||||
@@ -419,29 +430,34 @@ public:
|
||||
bool isClientSide;
|
||||
|
||||
vector<shared_ptr<Entity> > *getEntities(shared_ptr<Entity> except, AABB *bb);
|
||||
vector<shared_ptr<Entity> > *getEntities(shared_ptr<Entity> except, AABB *bb, const EntitySelector *selector);
|
||||
vector<shared_ptr<Entity> > *getEntitiesOfClass(const type_info& baseClass, AABB *bb);
|
||||
vector<shared_ptr<Entity> > *getEntitiesOfClass(const type_info& baseClass, AABB *bb, const EntitySelector *selector);
|
||||
shared_ptr<Entity> getClosestEntityOfClass(const type_info& baseClass, AABB *bb, shared_ptr<Entity> source);
|
||||
virtual shared_ptr<Entity> getEntity(int entityId) = 0;
|
||||
vector<shared_ptr<Entity> > getAllEntities();
|
||||
void tileEntityChanged(int x, int y, int z, shared_ptr<TileEntity> te);
|
||||
// unsigned int countInstanceOf(BaseObject::Class *clas);
|
||||
// unsigned int countInstanceOf(BaseObject::Class *clas);
|
||||
unsigned int countInstanceOf(eINSTANCEOF clas, bool singleType, unsigned int *protectedCount = NULL, unsigned int *couldWanderCount = NULL); // 4J added
|
||||
unsigned int countInstanceOfInRange(eINSTANCEOF clas, bool singleType, int range, int x, int y, int z); // 4J Added
|
||||
void addEntities(vector<shared_ptr<Entity> > *list);
|
||||
virtual void removeEntities(vector<shared_ptr<Entity> > *list);
|
||||
bool mayPlace(int tileId, int x, int y, int z, bool ignoreEntities, int face, shared_ptr<Entity> ignoreEntity);
|
||||
bool mayPlace(int tileId, int x, int y, int z, bool ignoreEntities, int face, shared_ptr<Entity> ignoreEntity, shared_ptr<ItemInstance> item);
|
||||
int getSeaLevel();
|
||||
Path *findPath(shared_ptr<Entity> from, shared_ptr<Entity> to, float maxDist, bool canPassDoors, bool canOpenDoors, bool avoidWater, bool canFloat);
|
||||
Path *findPath(shared_ptr<Entity> from, int xBest, int yBest, int zBest, float maxDist, bool canPassDoors, bool canOpenDoors, bool avoidWater, bool canFloat);
|
||||
bool getDirectSignal(int x, int y, int z, int dir);
|
||||
bool hasDirectSignal(int x, int y, int z);
|
||||
bool getSignal(int x, int y, int z, int dir);
|
||||
int getDirectSignal(int x, int y, int z, int dir);
|
||||
int getDirectSignalTo(int x, int y, int z);
|
||||
bool hasSignal(int x, int y, int z, int dir);
|
||||
int getSignal(int x, int y, int z, int dir);
|
||||
bool hasNeighborSignal(int x, int y, int z);
|
||||
int getBestNeighborSignal(int x, int y, int z);
|
||||
// 4J Added maxYDist param
|
||||
shared_ptr<Player> getNearestPlayer(shared_ptr<Entity> source, double maxDist, double maxYDist = -1);
|
||||
shared_ptr<Player> getNearestPlayer(double x, double y, double z, double maxDist, double maxYDist = -1);
|
||||
shared_ptr<Player> getNearestPlayer(double x, double z, double maxDist);
|
||||
shared_ptr<Player> getNearestAttackablePlayer(shared_ptr<Entity> source, double maxDist);
|
||||
shared_ptr<Player> getNearestAttackablePlayer(double x, double y, double z, double maxDist);
|
||||
shared_ptr<Player> getNearestAttackablePlayer(shared_ptr<Entity> source, double maxDist);
|
||||
shared_ptr<Player> getNearestAttackablePlayer(double x, double y, double z, double maxDist);
|
||||
|
||||
shared_ptr<Player> getPlayerByName(const wstring& name);
|
||||
shared_ptr<Player> getPlayerByUUID(const wstring& name); // 4J Added
|
||||
@@ -449,10 +465,11 @@ public:
|
||||
void setBlocksAndData(int x, int y, int z, int xs, int ys, int zs, byteArray data, bool includeLighting = true);
|
||||
virtual void disconnect(bool sendDisconnect = true);
|
||||
void checkSession();
|
||||
void setTime(__int64 time);
|
||||
void setOverrideTimeOfDay(__int64 time); // 4J Added so we can override timeOfDay without changing tick time
|
||||
void setGameTime(__int64 time);
|
||||
__int64 getSeed();
|
||||
__int64 getTime();
|
||||
__int64 getGameTime();
|
||||
__int64 getDayTime();
|
||||
void setDayTime(__int64 newTime);
|
||||
Pos *getSharedSpawnPos();
|
||||
void setSpawnPos(int x, int y, int z);
|
||||
void setSpawnPos(Pos *spawnPos);
|
||||
@@ -463,6 +480,7 @@ public:
|
||||
virtual void tileEvent(int x, int y, int z, int tile, int b0, int b1);
|
||||
LevelStorage *getLevelStorage();
|
||||
LevelData *getLevelData();
|
||||
GameRules *getGameRules();
|
||||
virtual void updateSleepingPlayerList();
|
||||
bool useNewSeaLevel(); // 4J added
|
||||
bool getHasBeenInCreative(); // 4J Added
|
||||
@@ -479,25 +497,27 @@ public:
|
||||
void setSavedData(const wstring& id, shared_ptr<SavedData> data);
|
||||
shared_ptr<SavedData> getSavedData(const type_info& clazz, const wstring& id);
|
||||
int getFreeAuxValueFor(const wstring& id);
|
||||
void globalLevelEvent(int type, int sourceX, int sourceY, int sourceZ, int data);
|
||||
void levelEvent(int type, int x, int y, int z, int data);
|
||||
void levelEvent(shared_ptr<Player> source, int type, int x, int y, int z, int data);
|
||||
int getMaxBuildHeight();
|
||||
int getHeight();
|
||||
virtual Tickable *makeSoundUpdater(shared_ptr<Minecart> minecart);
|
||||
Random *getRandomFor(int x, int z, int blend);
|
||||
bool updateLights();
|
||||
virtual bool isAllEmpty();
|
||||
double getHorizonHeight() ;
|
||||
void destroyTileProgress(int id, int x, int y, int z, int progress);
|
||||
TilePos *findNearestMapFeature(const wstring& featureName, int x, int y, int z);
|
||||
// Calendar *getCalendar(); // 4J - Calendar is now static
|
||||
virtual void createFireworks(double x, double y, double z, double xd, double yd, double zd, CompoundTag *infoTag);
|
||||
virtual Scoreboard *getScoreboard();
|
||||
virtual void updateNeighbourForOutputSignal(int x, int y, int z, int source);
|
||||
virtual float getDifficulty(double x, double y, double z);
|
||||
virtual float getDifficulty(int x, int y, int z);
|
||||
TilePos *findNearestMapFeature(const wstring& featureName, int x, int y, int z);
|
||||
|
||||
// 4J Added
|
||||
int getAuxValueForMap(PlayerUID xuid, int dimension, int centreXC, int centreZC, int scale);
|
||||
|
||||
// 4J added
|
||||
|
||||
|
||||
__int64 m_timeOfDayOverride;
|
||||
|
||||
// 4J - optimisation - keep direct reference of underlying cache here
|
||||
LevelChunk **chunkSourceCache;
|
||||
int chunkSourceXZSize;
|
||||
@@ -531,6 +551,7 @@ public:
|
||||
{
|
||||
eSpawnType_Egg,
|
||||
eSpawnType_Breed,
|
||||
eSpawnType_Portal,
|
||||
};
|
||||
|
||||
bool canCreateMore(eINSTANCEOF type, ESPAWN_TYPE spawnType);
|
||||
|
||||
Reference in New Issue
Block a user