mirror of
https://gitea.sffempire.ru/Kolyah35/minecraft-pe-0.6.1.git
synced 2026-04-08 08:23:31 +00:00
Compare commits
19 Commits
main
...
59d4642413
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
59d4642413 | ||
|
|
3737143842 | ||
|
|
ce52bfd35c | ||
|
|
c70cd428fd | ||
|
|
1158644de7 | ||
|
|
03b62b60df | ||
|
|
dfa6dc4221 | ||
|
|
8ea20b1da9 | ||
|
|
2b4ff27043 | ||
|
|
ec76c0fc2c | ||
|
|
8708dc9c83 | ||
|
|
7d485fdcd7 | ||
|
|
976366d6bf | ||
|
|
663c1d4b3f | ||
|
|
0ef6822737 | ||
|
|
442eb2d9c3 | ||
|
|
c0c5cbaa51 | ||
|
|
afbd79d9de | ||
|
|
34858932f1 |
@@ -166,7 +166,6 @@ file(GLOB SERVER_SOURCES
|
||||
"src/util/Mth.cpp"
|
||||
"src/util/PerfTimer.cpp"
|
||||
"src/util/StringUtils.cpp"
|
||||
"src/util/Color.cpp"
|
||||
|
||||
"src/world/Direction.cpp"
|
||||
|
||||
@@ -200,9 +199,6 @@ file(GLOB SERVER_SOURCES
|
||||
|
||||
"src/world/level/dimension/Dimension.cpp"
|
||||
|
||||
"src/world/level/dimension/FoliageColor.cpp"
|
||||
"src/world/level/GrassColor.cpp"
|
||||
|
||||
"src/world/level/levelgen/*.cpp"
|
||||
"src/world/level/levelgen/feature/Feature.cpp"
|
||||
"src/world/level/levelgen/synth/*.cpp"
|
||||
@@ -262,8 +258,6 @@ file(GLOB CLIENT_SOURCES
|
||||
|
||||
"src/util/**.cpp"
|
||||
|
||||
"src/util/Color.cpp"
|
||||
|
||||
"src/world/*.cpp"
|
||||
"src/world/phys/*.cpp"
|
||||
"src/world/entity/*.cpp"
|
||||
|
||||
35
README.md
35
README.md
@@ -198,38 +198,3 @@ cmake --build .
|
||||
```
|
||||
emrun --port 8080 .
|
||||
```
|
||||
## iOS
|
||||
### Xcode
|
||||
> [Note!]
|
||||
> There's a precompiled IPA artifact in the GitHub mirror under Actions for those who either don't have Macs or don't want to build themself. But if you want to build youself, you'll need a Mac with Xcode. Download Xcode from the Mac App Store.
|
||||
|
||||
### 1. Clone
|
||||
Open your terminal and clone the repository
|
||||
```bash
|
||||
git clone https://gitea.sffempire.ru/Kolyah35/minecraft-pe-0.6.1.git
|
||||
cd minecraft-pe-0.6.1
|
||||
```
|
||||
You can also build from the ios-support branch by checking out to it
|
||||
```
|
||||
git checkout ios-support
|
||||
```
|
||||
|
||||
### 2. Open in Xcode
|
||||
|
||||
The project file is in `minecraft-pe-0.6.1/project/iosproj/minecraftpe.xcodeproj`. Open it.
|
||||
|
||||
### 3. Configure Code Signing
|
||||
|
||||
Before you can deploy to an iPhone, you must sign the app with your own Apple Developer account:
|
||||
|
||||
1. Select the **minecraftpe** project in the left sidebar.
|
||||
2. Go to **Signing & Capabilities**.
|
||||
3. Change the **Bundle Identifier** to something unique (e.g., `com.yourname.mcpe`).
|
||||
4. Select your **Team** from the dropdown menu.
|
||||
|
||||
### 4. Build and Run
|
||||
|
||||
1. Connect your iPhone via USB or LAN.
|
||||
2. Select your device from the run destination menu at the top of Xcode.
|
||||
3. Press **Cmd + R** (or the Play button).
|
||||
4. **Note:** If you encounter a "Developer Mode" or "Untrusted Developer" error on your phone, go to **Settings > General > VPN & Device Management** to trust your certificate.
|
||||
|
||||
Binary file not shown.
|
Before Width: | Height: | Size: 17 KiB |
Binary file not shown.
|
Before Width: | Height: | Size: 25 KiB |
Binary file not shown.
|
Before Width: | Height: | Size: 868 B |
Binary file not shown.
|
Before Width: | Height: | Size: 24 KiB |
@@ -153,7 +153,6 @@ options.group.tweaks=Tweaks
|
||||
options.allowSprint=Allow sprint
|
||||
options.barOnTop=HUD above inventory
|
||||
options.rpiCursor=Show Raspberry PI cursor
|
||||
options.foliageTint=Tint Grass and Leaves
|
||||
options.autoJump=Auto Jump
|
||||
options.thirdperson=Third Person
|
||||
options.servervisible=Server Visible
|
||||
|
||||
@@ -146,7 +146,6 @@ LOCAL_SRC_FILES := ../../../src/main.cpp \
|
||||
../../../src/util/StringUtils.cpp \
|
||||
../../../src/util/PerfTimer.cpp \
|
||||
../../../src/util/PerfRenderer.cpp \
|
||||
../../../src/util/Color.cpp \
|
||||
../../../src/world/Direction.cpp \
|
||||
../../../src/world/entity/AgableMob.cpp \
|
||||
../../../src/world/entity/Entity.cpp \
|
||||
@@ -210,8 +209,6 @@ LOCAL_SRC_FILES := ../../../src/main.cpp \
|
||||
../../../src/world/level/MobSpawner.cpp \
|
||||
../../../src/world/level/Region.cpp \
|
||||
../../../src/world/level/TickNextTickData.cpp \
|
||||
../../../src/world/level/FoliageColor.cpp \
|
||||
../../../src/world/level/GrassColor.cpp \
|
||||
../../../src/world/level/biome/Biome.cpp \
|
||||
../../../src/world/level/biome/BiomeSource.cpp \
|
||||
../../../src/world/level/chunk/LevelChunk.cpp \
|
||||
|
||||
@@ -122,7 +122,6 @@ LOCAL_SRC_FILES := ../../../src/main.cpp \
|
||||
../../../src/util/StringUtils.cpp \
|
||||
../../../src/util/PerfTimer.cpp \
|
||||
../../../src/util/PerfRenderer.cpp \
|
||||
../../../src/util/Color.cpp \
|
||||
../../../src/world/Direction.cpp \
|
||||
../../../src/world/entity/AgableMob.cpp \
|
||||
../../../src/world/entity/Entity.cpp \
|
||||
@@ -184,8 +183,6 @@ LOCAL_SRC_FILES := ../../../src/main.cpp \
|
||||
../../../src/world/level/MobSpawner.cpp \
|
||||
../../../src/world/level/Region.cpp \
|
||||
../../../src/world/level/TickNextTickData.cpp \
|
||||
../../../src/world/level/FoliageColor.cpp \
|
||||
../../../src/world/level/GrassColor.cpp \
|
||||
../../../src/world/level/biome/Biome.cpp \
|
||||
../../../src/world/level/biome/BiomeSource.cpp \
|
||||
../../../src/world/level/chunk/LevelChunk.cpp \
|
||||
|
||||
@@ -1173,12 +1173,6 @@
|
||||
F99D344C2F7370CF00DC153E /* Slider.cpp in Sources */ = {isa = PBXBuildFile; fileRef = F99D344A2F7370CF00DC153E /* Slider.cpp */; };
|
||||
F99D344E2F7372A100DC153E /* Launch Screen.storyboard in Resources */ = {isa = PBXBuildFile; fileRef = F99D344D2F7372A100DC153E /* Launch Screen.storyboard */; };
|
||||
F99D344F2F7372A100DC153E /* Launch Screen.storyboard in Resources */ = {isa = PBXBuildFile; fileRef = F99D344D2F7372A100DC153E /* Launch Screen.storyboard */; };
|
||||
F99F0FA92F84369F00F2B29A /* GrassColor.cpp in Sources */ = {isa = PBXBuildFile; fileRef = F99F0FA82F84369F00F2B29A /* GrassColor.cpp */; };
|
||||
F99F0FAA2F84369F00F2B29A /* GrassColor.cpp in Sources */ = {isa = PBXBuildFile; fileRef = F99F0FA82F84369F00F2B29A /* GrassColor.cpp */; };
|
||||
F99F0FAC2F8436CE00F2B29A /* FoliageColor.cpp in Sources */ = {isa = PBXBuildFile; fileRef = F99F0FAB2F8436CE00F2B29A /* FoliageColor.cpp */; };
|
||||
F99F0FAD2F8436CE00F2B29A /* FoliageColor.cpp in Sources */ = {isa = PBXBuildFile; fileRef = F99F0FAB2F8436CE00F2B29A /* FoliageColor.cpp */; };
|
||||
F99F0FAF2F8436EB00F2B29A /* Color.cpp in Sources */ = {isa = PBXBuildFile; fileRef = F99F0FAE2F8436EB00F2B29A /* Color.cpp */; };
|
||||
F99F0FB02F8436EB00F2B29A /* Color.cpp in Sources */ = {isa = PBXBuildFile; fileRef = F99F0FAE2F8436EB00F2B29A /* Color.cpp */; };
|
||||
/* End PBXBuildFile section */
|
||||
|
||||
/* Begin PBXFileReference section */
|
||||
@@ -2441,8 +2435,8 @@
|
||||
F99D341D2F736AA100DC153E /* HttpClient.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = HttpClient.h; path = ../../src/platform/HttpClient.h; sourceTree = "<group>"; };
|
||||
F99D341E2F736AA100DC153E /* HttpClient.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = HttpClient.cpp; path = ../../src/platform/HttpClient.cpp; sourceTree = "<group>"; };
|
||||
F99D34212F736AD400DC153E /* TextOption.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = TextOption.h; path = ../../src/client/gui/components/TextOption.h; sourceTree = "<group>"; };
|
||||
F99D34222F736AD400DC153E /* TextOption.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = TextOption.cpp; path = ../../src/client/gui/components/TextOption.cpp; sourceTree = "<unknown>"; };
|
||||
F99D34252F736AFB00DC153E /* OptionsFile.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = OptionsFile.h; path = ../../src/client/OptionsFile.h; sourceTree = "<group>"; };
|
||||
F99D34222F736AD400DC153E /* TextOption.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = TextOption.cpp; path = ../../src/client/gui/components/TextOption.cpp; };
|
||||
F99D34252F736AFB00DC153E /* OptionsFile.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = OptionsFile.h; path = ../../src/client/OptionsFile.h; sourceTree = "<group>"; sourceTree = "<group>"; };
|
||||
F99D34262F736AFB00DC153E /* OptionsFile.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = OptionsFile.cpp; path = ../../src/client/OptionsFile.cpp; sourceTree = "<group>"; };
|
||||
F99D34292F736B6F00DC153E /* OptionsItem.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = OptionsItem.h; path = ../../src/client/gui/components/OptionsItem.h; sourceTree = "<group>"; };
|
||||
F99D342A2F736B6F00DC153E /* OptionsItem.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = OptionsItem.cpp; path = ../../src/client/gui/components/OptionsItem.cpp; sourceTree = "<group>"; };
|
||||
@@ -2463,9 +2457,6 @@
|
||||
F99D34492F7370CF00DC153E /* Slider.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = Slider.h; path = ../../src/client/gui/components/Slider.h; sourceTree = "<group>"; };
|
||||
F99D344A2F7370CF00DC153E /* Slider.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = Slider.cpp; path = ../../src/client/gui/components/Slider.cpp; sourceTree = "<group>"; };
|
||||
F99D344D2F7372A100DC153E /* Launch Screen.storyboard */ = {isa = PBXFileReference; lastKnownFileType = file.storyboard; path = "Launch Screen.storyboard"; sourceTree = "<group>"; };
|
||||
F99F0FA82F84369F00F2B29A /* GrassColor.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = GrassColor.cpp; sourceTree = "<group>"; };
|
||||
F99F0FAB2F8436CE00F2B29A /* FoliageColor.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = FoliageColor.cpp; sourceTree = "<group>"; };
|
||||
F99F0FAE2F8436EB00F2B29A /* Color.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = Color.cpp; sourceTree = "<group>"; };
|
||||
/* End PBXFileReference section */
|
||||
|
||||
/* Begin PBXFrameworksBuildPhase section */
|
||||
@@ -3770,7 +3761,6 @@
|
||||
D5B50E6914CFF66F005F7284 /* StringUtils.cpp */,
|
||||
D5B50E6A14CFF66F005F7284 /* StringUtils.h */,
|
||||
D5B50E6B14CFF66F005F7284 /* WeighedRandom.h */,
|
||||
F99F0FAE2F8436EB00F2B29A /* Color.cpp */,
|
||||
);
|
||||
path = util;
|
||||
sourceTree = "<group>";
|
||||
@@ -4035,8 +4025,6 @@
|
||||
D5B50F3714CFF66F005F7284 /* TickNextTickData.h */,
|
||||
D5B50F3814CFF66F005F7284 /* tile */,
|
||||
D5B50F6814CFF66F005F7284 /* TilePos.h */,
|
||||
F99F0FA82F84369F00F2B29A /* GrassColor.cpp */,
|
||||
F99F0FAB2F8436CE00F2B29A /* FoliageColor.cpp */,
|
||||
);
|
||||
path = level;
|
||||
sourceTree = "<group>";
|
||||
@@ -5206,7 +5194,6 @@
|
||||
D5B5111014CFF670005F7284 /* Mth.cpp in Sources */,
|
||||
D5B5111214CFF670005F7284 /* PerfRenderer.cpp in Sources */,
|
||||
D5B5111414CFF670005F7284 /* PerfTimer.cpp in Sources */,
|
||||
F99F0FA92F84369F00F2B29A /* GrassColor.cpp in Sources */,
|
||||
D5B5111614CFF670005F7284 /* StringUtils.cpp in Sources */,
|
||||
D5B5111814CFF670005F7284 /* Direction.cpp in Sources */,
|
||||
D5B5111A14CFF670005F7284 /* Animal.cpp in Sources */,
|
||||
@@ -5227,14 +5214,12 @@
|
||||
D5B5113814CFF670005F7284 /* PathFinderMob.cpp in Sources */,
|
||||
D5B5113A14CFF670005F7284 /* Inventory.cpp in Sources */,
|
||||
D5B5113C14CFF670005F7284 /* Player.cpp in Sources */,
|
||||
F99F0FB02F8436EB00F2B29A /* Color.cpp in Sources */,
|
||||
D5B5113E14CFF670005F7284 /* Arrow.cpp in Sources */,
|
||||
D5B5114014CFF670005F7284 /* Recipes.cpp in Sources */,
|
||||
D5B5114214CFF670005F7284 /* ToolRecipes.cpp in Sources */,
|
||||
D5B5114414CFF670005F7284 /* WeaponRecipes.cpp in Sources */,
|
||||
D5B5114614CFF670005F7284 /* HatchetItem.cpp in Sources */,
|
||||
D5B5114814CFF670005F7284 /* Item.cpp in Sources */,
|
||||
F99F0FAC2F8436CE00F2B29A /* FoliageColor.cpp in Sources */,
|
||||
D5B5114A14CFF670005F7284 /* ItemInstance.cpp in Sources */,
|
||||
D5B5114C14CFF670005F7284 /* PickaxeItem.cpp in Sources */,
|
||||
F99D344B2F7370CF00DC153E /* Slider.cpp in Sources */,
|
||||
@@ -5543,7 +5528,6 @@
|
||||
D5B5102F14CFF670005F7284 /* main.cpp in Sources */,
|
||||
D5B5103514CFF670005F7284 /* Tag.cpp in Sources */,
|
||||
D5B5103714CFF670005F7284 /* ClientSideNetworkHandler.cpp in Sources */,
|
||||
F99F0FAF2F8436EB00F2B29A /* Color.cpp in Sources */,
|
||||
D5B5103914CFF670005F7284 /* NetEventCallback.cpp in Sources */,
|
||||
D5B5103B14CFF670005F7284 /* Packet.cpp in Sources */,
|
||||
D5B5103D14CFF670005F7284 /* RakNetInstance.cpp in Sources */,
|
||||
@@ -5564,7 +5548,6 @@
|
||||
D5B5111514CFF670005F7284 /* StringUtils.cpp in Sources */,
|
||||
D5B5111714CFF670005F7284 /* Direction.cpp in Sources */,
|
||||
D5B5111914CFF670005F7284 /* Animal.cpp in Sources */,
|
||||
F99F0FAD2F8436CE00F2B29A /* FoliageColor.cpp in Sources */,
|
||||
D5B5111B14CFF670005F7284 /* Chicken.cpp in Sources */,
|
||||
D5B5111D14CFF670005F7284 /* Cow.cpp in Sources */,
|
||||
D5B5111F14CFF670005F7284 /* Pig.cpp in Sources */,
|
||||
@@ -5615,7 +5598,6 @@
|
||||
D5B5117714CFF670005F7284 /* ExternalFileLevelStorageSource.cpp in Sources */,
|
||||
D5B5117914CFF670005F7284 /* RegionFile.cpp in Sources */,
|
||||
D5B5117B14CFF670005F7284 /* TickNextTickData.cpp in Sources */,
|
||||
F99F0FAA2F84369F00F2B29A /* GrassColor.cpp in Sources */,
|
||||
D5B5117D14CFF670005F7284 /* DoorTile.cpp in Sources */,
|
||||
D5B5118114CFF670005F7284 /* StoneSlabTile.cpp in Sources */,
|
||||
D5B5118314CFF670005F7284 /* Tile.cpp in Sources */,
|
||||
@@ -5871,7 +5853,7 @@
|
||||
GCC_WARN_NON_VIRTUAL_DESTRUCTOR = YES;
|
||||
GCC_WARN_UNUSED_VARIABLE = YES;
|
||||
HEADER_SEARCH_PATHS = "$(SRCROOT)/../../src";
|
||||
IPHONEOS_DEPLOYMENT_TARGET = 12;
|
||||
IPHONEOS_DEPLOYMENT_TARGET = 14;
|
||||
ONLY_ACTIVE_ARCH = YES;
|
||||
OTHER_CFLAGS = "-DNS_BLOCK_ASSERTIONS=1";
|
||||
"PROVISIONING_PROFILE[sdk=iphoneos*]" = "C93D3524-5C6F-466E-B12B-833663B7EAE0";
|
||||
@@ -5902,7 +5884,7 @@
|
||||
);
|
||||
INFOPLIST_FILE = "minecraftpe/minecraftpe-Info.plist";
|
||||
INFOPLIST_KEY_LSApplicationCategoryType = "public.app-category.games";
|
||||
IPHONEOS_DEPLOYMENT_TARGET = 12;
|
||||
IPHONEOS_DEPLOYMENT_TARGET = 14;
|
||||
ONLY_ACTIVE_ARCH = YES;
|
||||
PRODUCT_BUNDLE_IDENTIFIER = "com.mojang.mcpe-arm64";
|
||||
PRODUCT_NAME = "$(TARGET_NAME)";
|
||||
@@ -5996,7 +5978,7 @@
|
||||
GCC_WARN_NON_VIRTUAL_DESTRUCTOR = YES;
|
||||
GCC_WARN_UNUSED_VARIABLE = YES;
|
||||
HEADER_SEARCH_PATHS = "$(SRCROOT)/../../src";
|
||||
IPHONEOS_DEPLOYMENT_TARGET = 12;
|
||||
IPHONEOS_DEPLOYMENT_TARGET = 14;
|
||||
ONLY_ACTIVE_ARCH = YES;
|
||||
OTHER_CFLAGS = "-DNS_BLOCK_ASSERTIONS=1";
|
||||
"PROVISIONING_PROFILE[sdk=iphoneos*]" = "64BA8967-1A9A-4980-972C-42E75AD5E023";
|
||||
@@ -6028,7 +6010,7 @@
|
||||
);
|
||||
INFOPLIST_FILE = "minecraftpe/minecraftpe-Info.plist";
|
||||
INFOPLIST_KEY_LSApplicationCategoryType = "public.app-category.games";
|
||||
IPHONEOS_DEPLOYMENT_TARGET = 12;
|
||||
IPHONEOS_DEPLOYMENT_TARGET = 14;
|
||||
ONLY_ACTIVE_ARCH = YES;
|
||||
OTHER_CFLAGS = (
|
||||
"-DNS_BLOCK_ASSERTIONS=1",
|
||||
@@ -6094,7 +6076,7 @@
|
||||
GCC_WARN_NON_VIRTUAL_DESTRUCTOR = YES;
|
||||
GCC_WARN_UNUSED_VARIABLE = YES;
|
||||
HEADER_SEARCH_PATHS = "$(SRCROOT)/../../src";
|
||||
IPHONEOS_DEPLOYMENT_TARGET = 12;
|
||||
IPHONEOS_DEPLOYMENT_TARGET = 14;
|
||||
ONLY_ACTIVE_ARCH = YES;
|
||||
RUN_CLANG_STATIC_ANALYZER = NO;
|
||||
SDKROOT = iphoneos;
|
||||
@@ -6122,7 +6104,7 @@
|
||||
GCC_WARN_NON_VIRTUAL_DESTRUCTOR = YES;
|
||||
GCC_WARN_UNUSED_VARIABLE = YES;
|
||||
HEADER_SEARCH_PATHS = "$(SRCROOT)/../../src";
|
||||
IPHONEOS_DEPLOYMENT_TARGET = 12;
|
||||
IPHONEOS_DEPLOYMENT_TARGET = 14;
|
||||
ONLY_ACTIVE_ARCH = YES;
|
||||
OTHER_CFLAGS = "-DNS_BLOCK_ASSERTIONS=1";
|
||||
RUN_CLANG_STATIC_ANALYZER = NO;
|
||||
@@ -6155,7 +6137,7 @@
|
||||
);
|
||||
INFOPLIST_FILE = "minecraftpe/minecraftpe-Info.plist";
|
||||
INFOPLIST_KEY_LSApplicationCategoryType = "public.app-category.games";
|
||||
IPHONEOS_DEPLOYMENT_TARGET = 12;
|
||||
IPHONEOS_DEPLOYMENT_TARGET = 14;
|
||||
ONLY_ACTIVE_ARCH = YES;
|
||||
PRODUCT_BUNDLE_IDENTIFIER = "com.mojang.mcpe-arm64";
|
||||
PRODUCT_NAME = "$(TARGET_NAME)";
|
||||
@@ -6190,7 +6172,7 @@
|
||||
);
|
||||
INFOPLIST_FILE = "minecraftpe/minecraftpe-Info.plist";
|
||||
INFOPLIST_KEY_LSApplicationCategoryType = "public.app-category.games";
|
||||
IPHONEOS_DEPLOYMENT_TARGET = 12;
|
||||
IPHONEOS_DEPLOYMENT_TARGET = 14;
|
||||
ONLY_ACTIVE_ARCH = YES;
|
||||
PRODUCT_BUNDLE_IDENTIFIER = "com.mojang.mcpe-arm64";
|
||||
PRODUCT_NAME = "$(TARGET_NAME)";
|
||||
|
||||
@@ -90,7 +90,6 @@
|
||||
#include "../network/command/CommandServer.h"
|
||||
#include "gamemode/CreatorMode.h"
|
||||
|
||||
#include "../world/level/GrassColor.h"
|
||||
static void checkGlError(const char* tag) {
|
||||
#ifdef GLDEBUG
|
||||
while (1) {
|
||||
@@ -1106,9 +1105,9 @@ void Minecraft::releaseMouse()
|
||||
}
|
||||
|
||||
bool Minecraft::useTouchscreen() {
|
||||
#if defined(TARGET_OS_IPHONE)
|
||||
#if TARGET_OS_IPHONE
|
||||
return true;
|
||||
#elif defined(RPI)
|
||||
#elif RPI
|
||||
return false;
|
||||
#endif
|
||||
return options.getBooleanValue(OPTIONS_USE_TOUCHSCREEN) && !_supportsNonTouchscreen;
|
||||
@@ -1128,31 +1127,12 @@ void Minecraft::init()
|
||||
textures = new Textures(&options, platform());
|
||||
textures->addDynamicTexture(new WaterTexture());
|
||||
textures->addDynamicTexture(new WaterSideTexture());
|
||||
textures->addDynamicTexture(new FireTexture());
|
||||
gui.texturesLoaded(textures);
|
||||
|
||||
levelRenderer = new LevelRenderer(this);
|
||||
gameRenderer = new GameRenderer(this);
|
||||
particleEngine = new ParticleEngine(level, textures);
|
||||
|
||||
// 4j's code for reference
|
||||
// FoliageColor::init(textures->loadTexturePixels(L"misc/foliagecolor.png"));
|
||||
|
||||
|
||||
// my code
|
||||
TextureId foliageId = (textures->loadTexture("misc/foliagecolor.png")); // loading the uh png for foliage color
|
||||
int* foliagePixels = textures->loadTexturePixels(foliageId, "misc/foliagecolor.png");
|
||||
// now i can finally initialize foliage color, probably not the best way to handle this but i cant be arsed rn
|
||||
FoliageColor::init(foliagePixels);
|
||||
|
||||
TextureId grassId = (textures->loadTexture("misc/foliagecolor.png")); // loading the uh png for foliage color
|
||||
int* grassPixels = textures->loadTexturePixels(grassId, "misc/foliagecolor.png");
|
||||
GrassColor::init(grassPixels);
|
||||
|
||||
bool tint = options.getBooleanValue(OPTIONS_FOLIAGE_TINT); // finally, toggleable foliage color
|
||||
FoliageColor::setUseTint(tint);
|
||||
GrassColor::setUseTint(tint);
|
||||
|
||||
// Platform specific initialization here
|
||||
font = new Font(&options, "font/default8.png", textures);
|
||||
|
||||
@@ -1403,12 +1383,6 @@ void Minecraft::_levelGenerated()
|
||||
player->resetPos(false);
|
||||
}
|
||||
|
||||
if (level && level->dimension) {
|
||||
// For example, if you want FogType or any other option
|
||||
level->dimension->FogType = options.getBooleanValue(OPTIONS_FOG_TYPE);
|
||||
}
|
||||
|
||||
|
||||
this->cameraTargetPlayer = player;
|
||||
|
||||
std::string serverName = options.getStringValue(OPTIONS_USERNAME) + " - " + level->getLevelData()->levelName;
|
||||
|
||||
@@ -60,12 +60,6 @@ OptionBool useTouchscreen("useTouchscreen", true);
|
||||
|
||||
OptionBool serverVisible("servervisible", true);
|
||||
|
||||
OptionBool foliageTint("foliagetint", false);
|
||||
|
||||
OptionInt fogType("fogType", 0, 0, 2);
|
||||
|
||||
OptionBool javaHud("javaHud", false);
|
||||
|
||||
OptionInt keyForward("key.forward", Keyboard::KEY_W);
|
||||
OptionInt keyLeft("key.left", Keyboard::KEY_A);
|
||||
OptionInt keyBack("key.back", Keyboard::KEY_S);
|
||||
@@ -142,8 +136,6 @@ void Options::initTable() {
|
||||
|
||||
m_options[OPTIONS_USE_TOUCHSCREEN] = &useTouchscreen;
|
||||
|
||||
|
||||
|
||||
m_options[OPTIONS_SERVER_VISIBLE] = &serverVisible;
|
||||
|
||||
m_options[OPTIONS_KEY_FORWARD] = &keyForward;
|
||||
@@ -168,12 +160,6 @@ void Options::initTable() {
|
||||
m_options[OPTIONS_BAR_ON_TOP] = &barOnTop;
|
||||
m_options[OPTIONS_ALLOW_SPRINT] = &allowSprint;
|
||||
m_options[OPTIONS_RPI_CURSOR] = &rpiCursor;
|
||||
m_options[OPTIONS_FOLIAGE_TINT] = &foliageTint;
|
||||
|
||||
// more options yay
|
||||
m_options[OPTIONS_FOG_TYPE] = &fogType;
|
||||
|
||||
m_options[OPTIONS_JAVA_HUD] = &javaHud;
|
||||
|
||||
m_options[OPTIONS_AUTOJUMP] = &autoJump;
|
||||
m_options[OPTIONS_LAST_IP] = &lastIp;
|
||||
|
||||
@@ -84,9 +84,6 @@ enum OptionId {
|
||||
OPTIONS_LAST_IP,
|
||||
|
||||
OPTIONS_RPI_CURSOR,
|
||||
OPTIONS_FOLIAGE_TINT,
|
||||
OPTIONS_FOG_TYPE,
|
||||
OPTIONS_JAVA_HUD,
|
||||
// Should be last!
|
||||
OPTIONS_COUNT
|
||||
};
|
||||
|
||||
@@ -103,12 +103,6 @@ void Gui::render(float a, bool mouseFree, int xMouse, int yMouse) {
|
||||
}
|
||||
}
|
||||
|
||||
// @todo - Shredder: I added this here but currently viginette is broken so i cant do much about it.
|
||||
// if (minecraft->options.getBooleanValue(OPTIONS_FANCY_GRAPHICS)){
|
||||
// this->renderVignette(this->minecraft->player->getBrightness(a), screenWidth, screenHeight);
|
||||
// }
|
||||
// shredder end
|
||||
|
||||
if(minecraft->player->getSleepTimer() > 0) {
|
||||
glDisable(GL_DEPTH_TEST);
|
||||
glDisable(GL_ALPHA_TEST);
|
||||
@@ -350,8 +344,6 @@ void Gui::displayClientMessage(const std::string& messageId) {
|
||||
addMessage(messageId);
|
||||
}
|
||||
|
||||
|
||||
// @todo - shredder: Function seems to be completely fine and ported over from java beta, but renders opaque??? need to investigate
|
||||
void Gui::renderVignette(float br, int w, int h) {
|
||||
br = 1 - br;
|
||||
if (br < 0) br = 0;
|
||||
@@ -362,10 +354,7 @@ void Gui::renderVignette(float br, int w, int h) {
|
||||
glDepthMask(false);
|
||||
glBlendFunc2(GL_ZERO, GL_ONE_MINUS_SRC_COLOR);
|
||||
glColor4f2(tbr, tbr, tbr, 1);
|
||||
|
||||
minecraft->textures->loadAndBindTexture("misc/vignette.png");
|
||||
glTexParameteri2(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_LINEAR);
|
||||
glTexParameteri2(GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, GL_LINEAR);
|
||||
|
||||
Tesselator& t = Tesselator::instance;
|
||||
t.begin();
|
||||
@@ -1116,41 +1105,22 @@ void Gui::renderToolBar( float a, int ySlot, const int screenWidth ) {
|
||||
|
||||
// Draw count
|
||||
//Tesselator& t = Tesselator::instance;
|
||||
|
||||
const float k = 0.5f * GuiScale;
|
||||
if (minecraft->options.getBooleanValue(OPTIONS_JAVA_HUD)) // if true enables the java beta item count size and color and calls the java items decorations
|
||||
{
|
||||
t.beginOverride();
|
||||
if (minecraft->gameMode->isSurvivalType()) {
|
||||
x = baseItemX;
|
||||
for (int i = 0; i < slots; i++) {
|
||||
ItemInstance* item = minecraft->player->inventory->getItem(i);
|
||||
if (item && item->count >= 0)
|
||||
ItemRenderer::renderGuiItemDecorations(minecraft->font, minecraft->textures, minecraft->player->inventory->getItem(i), x, (float)ySlot);
|
||||
x += 20;
|
||||
}
|
||||
}
|
||||
minecraft->textures->loadAndBindTexture("font/default8.png");
|
||||
t.endOverrideAndDraw();
|
||||
}
|
||||
else { // otherwise uses the normal pocket edition one
|
||||
glPushMatrix2();
|
||||
glScalef2(InvGuiScale + InvGuiScale, InvGuiScale + InvGuiScale, 1);
|
||||
const float k = 0.5f * GuiScale;
|
||||
|
||||
t.beginOverride();
|
||||
if (minecraft->gameMode->isSurvivalType()) {
|
||||
x = baseItemX;
|
||||
for (int i = 0; i < slots; i++) {
|
||||
ItemInstance* item = minecraft->player->inventory->getItem(i);
|
||||
if (item && item->count >= 0)
|
||||
renderSlotText(item, k*x, k*ySlot, true, true);
|
||||
renderSlotText(item, k*x, k*ySlot + 1, true, true);
|
||||
x += 20;
|
||||
}
|
||||
}
|
||||
|
||||
minecraft->textures->loadAndBindTexture("font/default8.png");
|
||||
t.endOverrideAndDraw();
|
||||
|
||||
glPopMatrix2();
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
@@ -228,11 +228,7 @@ void OptionsScreen::generateOptionScreens() {
|
||||
|
||||
optionPanes[4]->addOptionItem(OPTIONS_ALLOW_SPRINT, minecraft)
|
||||
.addOptionItem(OPTIONS_BAR_ON_TOP, minecraft)
|
||||
.addOptionItem(OPTIONS_RPI_CURSOR, minecraft)
|
||||
.addOptionItem(OPTIONS_FOLIAGE_TINT, minecraft)
|
||||
.addOptionItem(OPTIONS_JAVA_HUD, minecraft)
|
||||
.addOptionItem(OPTIONS_FOG_TYPE, minecraft);
|
||||
|
||||
.addOptionItem(OPTIONS_RPI_CURSOR, minecraft);
|
||||
}
|
||||
|
||||
void OptionsScreen::mouseClicked(int x, int y, int buttonNum) {
|
||||
|
||||
@@ -7,10 +7,6 @@
|
||||
#include "../../world/level/Region.h"
|
||||
#include "../../world/level/chunk/LevelChunk.h"
|
||||
#include "../../util/Mth.h"
|
||||
|
||||
#include "../../world/level/biome/BiomeSource.h"
|
||||
|
||||
#include "../../world/level/Level.h"
|
||||
//#include "../../platform/time.h"
|
||||
|
||||
/*static*/ int Chunk::updates = 0;
|
||||
|
||||
@@ -25,8 +25,6 @@
|
||||
|
||||
#include "../../client/player/LocalPlayer.h"
|
||||
|
||||
#include "../../world/level/GrassColor.h"
|
||||
|
||||
#ifdef GFX_SMALLER_CHUNKS
|
||||
/* static */ const int LevelRenderer::CHUNK_SIZE = 8;
|
||||
#else
|
||||
@@ -49,7 +47,6 @@ LevelRenderer::LevelRenderer( Minecraft* mc)
|
||||
xMaxChunk(0), yMaxChunk(0), zMaxChunk(0),
|
||||
|
||||
lastViewDistance(-1),
|
||||
lastFogType(-1),
|
||||
|
||||
noEntityRenderFrames(2),
|
||||
totalEntities(0),
|
||||
@@ -146,10 +143,6 @@ void LevelRenderer::setLevel( Level* level )
|
||||
level->addListener(this);
|
||||
allChanged();
|
||||
}
|
||||
if (mc->options.getBooleanValue(OPTIONS_AMBIENT_OCCLUSION)) {
|
||||
mc->useAmbientOcclusion = !mc->useAmbientOcclusion;
|
||||
allChanged();
|
||||
}
|
||||
}
|
||||
|
||||
void LevelRenderer::allChanged()
|
||||
@@ -162,13 +155,6 @@ void LevelRenderer::allChanged()
|
||||
Tile::leaves_carried->setFancy(fancy);
|
||||
lastViewDistance = mc->options.getIntValue(OPTIONS_VIEW_DISTANCE);
|
||||
|
||||
lastFogType = mc->options.getIntValue(OPTIONS_FOG_TYPE);
|
||||
|
||||
bool tint = mc->options.getBooleanValue(OPTIONS_FOLIAGE_TINT);
|
||||
FoliageColor::setUseTint(tint);
|
||||
GrassColor::setUseTint(tint);
|
||||
|
||||
|
||||
int dist = (512 >> 3) << (3 - lastViewDistance);
|
||||
if (lastViewDistance <= 2 && mc->isPowerVR())
|
||||
dist = (int)((float)dist * 0.8f);
|
||||
@@ -315,17 +301,6 @@ int LevelRenderer::render( Mob* player, int layer, float alpha )
|
||||
allChanged();
|
||||
}
|
||||
|
||||
int currentFogType = mc->options.getIntValue(OPTIONS_FOG_TYPE);
|
||||
if (currentFogType != lastFogType) {
|
||||
lastFogType = currentFogType;
|
||||
|
||||
if (level && level->dimension) {
|
||||
level->dimension->FogType = currentFogType; // use new fog stuff
|
||||
}
|
||||
|
||||
allChanged();
|
||||
}
|
||||
|
||||
TIMER_PUSH("sortchunks");
|
||||
for (int i = 0; i < 10; i++) {
|
||||
chunkFixOffs = (chunkFixOffs + 1) % chunksLength;
|
||||
|
||||
@@ -113,9 +113,6 @@ private:
|
||||
bool occlusionCheck;
|
||||
int lastViewDistance;
|
||||
|
||||
// shredder added again...
|
||||
int lastFogType;
|
||||
|
||||
int ticks;
|
||||
int starList, skyList, darkList;
|
||||
|
||||
|
||||
@@ -249,37 +249,6 @@ int Textures::crispBlend( int c0, int c1 )
|
||||
return (a << 24) | (r << 16) | (g << 8) | b;
|
||||
}
|
||||
|
||||
// shredder here, moved the code from minecraft.cpp bcus that isnt the right place
|
||||
// had to implement this because i couldn't find a similar function in the code to do this
|
||||
int* Textures::loadTexturePixels(TextureId texId, const std::string& resourceName){
|
||||
|
||||
const TextureData* texture = getTemporaryTextureData(texId); // storing raw pixels
|
||||
|
||||
int size = texture->w * texture->h; // gets the size of our funny lil guy
|
||||
int* pixels = new int[size]; // memory leaks be galore
|
||||
unsigned char* raw = texture->data; // storing raw data into our beloved variable
|
||||
for (int i = 0; i < (texture->w * texture->h); i++){
|
||||
// my head hurts i hate working with this
|
||||
|
||||
|
||||
// uh since each pixel stores r g b a, aka the color channels which are each one byte, we multiply them by 4 to move from one pixel to another
|
||||
|
||||
int r = raw[i * 4 + 0]; // gets us the first channel aka red
|
||||
int g = raw[i * 4 + 1]; // gets us the second channel green
|
||||
int b = raw[i * 4 + 2]; // gets us the third channel blue
|
||||
int a = raw[i * 4 + 3]; // gets us the alpha channel
|
||||
|
||||
// woohoo pixels uh should have been seperated into their colors now hopefully
|
||||
|
||||
// r g b a
|
||||
// ugh we now got to turn it into the AA RR GGBB format aak 0xAARRGGBB
|
||||
// b gets 0 - 7 (8 bits), g gets 7 - 15 (8 bits), r gets 16 - 23 (8 bits), alpha gets the last ones 24 - 31 (8 bits),
|
||||
pixels[i] = (a << 24) | (r << 16) | (g << 8) | (b); // shuld combine them into one 32 bit int unless i did something dumb
|
||||
}
|
||||
return pixels; // your meal has been prepared john colors
|
||||
}
|
||||
|
||||
|
||||
///*public*/ int loadHttpTexture(std::string url, std::string backup) {
|
||||
// HttpTexture texture = httpTextures.get(url);
|
||||
// if (texture != NULL) {
|
||||
|
||||
@@ -44,8 +44,6 @@ public:
|
||||
TextureId assignTexture(const std::string& resourceName, const TextureData& img);
|
||||
const TextureData* getTemporaryTextureData(TextureId id);
|
||||
|
||||
int* loadTexturePixels(TextureId texId, const std::string& resourceName);
|
||||
|
||||
void tick(bool uploadToGraphicsCard);
|
||||
|
||||
void clear();
|
||||
|
||||
@@ -13,7 +13,6 @@
|
||||
#include "../../world/level/tile/BedTile.h"
|
||||
#include "../../world/level/tile/StemTile.h"
|
||||
#include "../../world/level/tile/StairTile.h"
|
||||
#include "../../world/level/tile/FireTile.h"
|
||||
#include "../../world/Direction.h"
|
||||
#include "../../world/Facing.h"
|
||||
#include "tileentity/TileEntityRenderer.h"
|
||||
@@ -158,8 +157,8 @@ bool TileRenderer::tesselateInWorld( Tile* tt, int x, int y, int z )
|
||||
return tesselateRowInWorld(tt, x, y, z);
|
||||
} else if (shape == Tile::SHAPE_TORCH) {
|
||||
return tesselateTorchInWorld(tt, x, y, z);
|
||||
} else if (shape == Tile::SHAPE_FIRE) {
|
||||
return tesselateFireInWorld(tt, x, y, z);
|
||||
//} else if (shape == Tile::SHAPE_FIRE) {
|
||||
// return tesselateFireInWorld(tt, x, y, z);
|
||||
//} else if (shape == Tile::SHAPE_RED_DUST) {
|
||||
// return tesselateDustInWorld(tt, x, y, z);
|
||||
} else if (shape == Tile::SHAPE_LADDER) {
|
||||
@@ -223,278 +222,6 @@ bool TileRenderer::tesselateTorchInWorld( Tile* tt, int x, int y, int z )
|
||||
return true;
|
||||
}
|
||||
|
||||
bool TileRenderer::tesselateFireInWorld( Tile* tt, int x, int y, int z )
|
||||
{
|
||||
// @todo: fire alpha transparency seems to be scuffed, also it seems i might have messed up the second layer while porting from lce/java , need to look into it - shredder
|
||||
|
||||
Tesselator& t = Tesselator::instance;
|
||||
|
||||
int tex = tt->getTexture(0);
|
||||
|
||||
if (fixedTexture >= 0) tex = fixedTexture;
|
||||
|
||||
float br = tt->getBrightness( level, x, y, z );
|
||||
t.color( br, br, br );
|
||||
|
||||
int xt = ((tex & 0xf) << 4);
|
||||
int yt = tex & 0xf0;
|
||||
|
||||
float u0 = (xt) / 256.0f;
|
||||
float u1 = (xt + 15.99f) / 256.0f;
|
||||
float v0 = (yt) / 256.0f;
|
||||
float v1 = (yt + 15.99f) / 256.0f;
|
||||
float h = 1.4f;
|
||||
|
||||
if ( level->isSolidBlockingTile( x, y - 1, z ) || Tile::fire->canBurn( level, x, y - 1, z ) )
|
||||
{
|
||||
float x0 = x + 0.5f + 0.2f;
|
||||
float x1 = x + 0.5f - 0.2f;
|
||||
float z0 = z + 0.5f + 0.2f;
|
||||
float z1 = z + 0.5f - 0.2f;
|
||||
|
||||
float x0_ = x + 0.5f - 0.3f;
|
||||
float x1_ = x + 0.5f + 0.3f;
|
||||
float z0_ = z + 0.5f - 0.3f;
|
||||
float z1_ = z + 0.5f + 0.3f;
|
||||
|
||||
t.vertexUV( ( float )( x0_ ), ( float )( y + h ), ( float )( z + 1 ), ( float )( u1 ), ( float )( v0 ) );
|
||||
t.vertexUV( ( float )( x0 ), ( float )( y + 0 ), ( float )( z + 1 ), ( float )( u1 ), ( float )( v1 ) );
|
||||
t.vertexUV( ( float )( x0 ), ( float )( y + 0 ), ( float )( z + 0 ), ( float )( u0 ), ( float )( v1 ) );
|
||||
t.vertexUV( ( float )( x0_ ), ( float )( y + h ), ( float )( z + 0 ), ( float )( u0 ), ( float )( v0 ) );
|
||||
|
||||
t.vertexUV( ( float )( x1_ ), ( float )( y + h ), ( float )( z + 0 ), ( float )( u1 ), ( float )( v0 ) );
|
||||
t.vertexUV( ( float )( x1 ), ( float )( y + 0 ), ( float )( z + 0 ), ( float )( u1 ), ( float )( v1 ) );
|
||||
t.vertexUV( ( float )( x1 ), ( float )( y + 0 ), ( float )( z + 1 ), ( float )( u0 ), ( float )( v1 ) );
|
||||
t.vertexUV( ( float )( x1_ ), ( float )( y + h ), ( float )( z + 1 ), ( float )( u0 ), ( float )( v0 ) );
|
||||
|
||||
|
||||
|
||||
u0 = (xt) / 256.0f;
|
||||
u1 = (xt + 15.99f) / 256.0f;
|
||||
v0 = (yt) / 256.0f;
|
||||
v1 = (yt + 15.99f) / 256.0f;
|
||||
|
||||
t.vertexUV( ( float )( x + 1 ), ( float )( y + h ), ( float )( z1_ ), ( float )( u1 ), ( float )( v0 ) );
|
||||
t.vertexUV( ( float )( x + 1 ), ( float )( y + 0 ), ( float )( z1 ), ( float )( u1 ), ( float )( v1 ) );
|
||||
t.vertexUV( ( float )( x + 0 ), ( float )( y + 0 ), ( float )( z1 ), ( float )( u0 ), ( float )( v1 ) );
|
||||
t.vertexUV( ( float )( x + 0 ), ( float )( y + h ), ( float )( z1_ ), ( float )( u0 ), ( float )( v0 ) );
|
||||
|
||||
t.vertexUV( ( float )( x + 0 ), ( float )( y + h ), ( float )( z0_ ), ( float )( u1 ), ( float )( v0 ) );
|
||||
t.vertexUV( ( float )( x + 0 ), ( float )( y + 0 ), ( float )( z0 ), ( float )( u1 ), ( float )( v1 ) );
|
||||
t.vertexUV( ( float )( x + 1 ), ( float )( y + 0 ), ( float )( z0 ), ( float )( u0 ), ( float )( v1 ) );
|
||||
t.vertexUV( ( float )( x + 1 ), ( float )( y + h ), ( float )( z0_ ), ( float )( u0 ), ( float )( v0 ) );
|
||||
|
||||
x0 = x + 0.5f - 0.5f;
|
||||
x1 = x + 0.5f + 0.5f;
|
||||
z0 = z + 0.5f - 0.5f;
|
||||
z1 = z + 0.5f + 0.5f;
|
||||
|
||||
x0_ = x + 0.5f - 0.4f;
|
||||
x1_ = x + 0.5f + 0.4f;
|
||||
z0_ = z + 0.5f - 0.4f;
|
||||
z1_ = z + 0.5f + 0.4f;
|
||||
|
||||
t.vertexUV( ( float )( x0_ ), ( float )( y + h ), ( float )( z + 0 ), ( float )( u0 ), ( float )( v0 ) );
|
||||
t.vertexUV( ( float )( x0 ), ( float )( y + 0 ), ( float )( z + 0 ), ( float )( u0 ), ( float )( v1 ) );
|
||||
t.vertexUV( ( float )( x0 ), ( float )( y + 0 ), ( float )( z + 1 ), ( float )( u1 ), ( float )( v1 ) );
|
||||
t.vertexUV( ( float )( x0_ ), ( float )( y + h ), ( float )( z + 1 ), ( float )( u1 ), ( float )( v0 ) );
|
||||
|
||||
t.vertexUV( ( float )( x1_ ), ( float )( y + h ), ( float )( z + 1 ), ( float )( u0 ), ( float )( v0 ) );
|
||||
t.vertexUV( ( float )( x1 ), ( float )( y + 0 ), ( float )( z + 1 ), ( float )( u0 ), ( float )( v1 ) );
|
||||
t.vertexUV( ( float )( x1 ), ( float )( y + 0 ), ( float )( z + 0 ), ( float )( u1 ), ( float )( v1 ) );
|
||||
t.vertexUV( ( float )( x1_ ), ( float )( y + h ), ( float )( z + 0 ), ( float )( u1 ), ( float )( v0 ) );
|
||||
|
||||
|
||||
u0 = (xt) / 256.0f;
|
||||
u1 = (xt + 15.99f) / 256.0f;
|
||||
v0 = (yt) / 256.0f;
|
||||
v1 = (yt + 15.99f) / 256.0f;
|
||||
|
||||
t.vertexUV( ( float )( x + 0 ), ( float )( y + h ), ( float )( z1_ ), ( float )( u0 ), ( float )( v0 ) );
|
||||
t.vertexUV( ( float )( x + 0 ), ( float )( y + 0 ), ( float )( z1 ), ( float )( u0 ), ( float )( v1 ) );
|
||||
t.vertexUV( ( float )( x + 1 ), ( float )( y + 0 ), ( float )( z1 ), ( float )( u1 ), ( float )( v1 ) );
|
||||
t.vertexUV( ( float )( x + 1 ), ( float )( y + h ), ( float )( z1_ ), ( float )( u1 ), ( float )( v0 ) );
|
||||
|
||||
t.vertexUV( ( float )( x + 1 ), ( float )( y + h ), ( float )( z0_ ), ( float )( u0 ), ( float )( v0 ) );
|
||||
t.vertexUV( ( float )( x + 1 ), ( float )( y + 0 ), ( float )( z0 ), ( float )( u0 ), ( float )( v1 ) );
|
||||
t.vertexUV( ( float )( x + 0 ), ( float )( y + 0 ), ( float )( z0 ), ( float )( u1 ), ( float )( v1 ) );
|
||||
t.vertexUV( ( float )( x + 0 ), ( float )( y + h ), ( float )( z0_ ), ( float )( u1 ), ( float )( v0 ) );
|
||||
}
|
||||
else
|
||||
{
|
||||
float r = 0.2f;
|
||||
float yo = 1 / 16.0f;
|
||||
if ( ( ( x + y + z ) & 1 ) == 1 )
|
||||
{
|
||||
u0 = (xt) / 256.0f;
|
||||
u1 = (xt + 15.99f) / 256.0f;
|
||||
v0 = (yt) / 256.0f;
|
||||
v1 = (yt + 15.99f) / 256.0f;
|
||||
}
|
||||
if ( ( ( x / 2 + y / 2 + z / 2 ) & 1 ) == 1 )
|
||||
{
|
||||
float tmp = u1;
|
||||
u1 = u0;
|
||||
u0 = tmp;
|
||||
}
|
||||
if ( Tile::fire->canBurn( level, x - 1, y, z ) )
|
||||
{
|
||||
t.vertexUV( ( float )( x + r ), ( float )( y + h + yo ), ( float )( z +
|
||||
1.0f ), ( float )( u1 ), ( float )( v0 ) );
|
||||
t.vertexUV( ( float )( x + 0.0f ), ( float )( y + 0.0f + yo ), ( float )( z +
|
||||
1.0f ), ( float )( u1 ), ( float )( v1 ) );
|
||||
t.vertexUV( ( float )( x + 0.0f ), ( float )( y + 0.0f + yo ), ( float )( z +
|
||||
0.0f ), ( float )( u0 ), ( float )( v1 ) );
|
||||
t.vertexUV( ( float )( x + r ), ( float )( y + h + yo ), ( float )( z +
|
||||
0.0f ), ( float )( u0 ), ( float )( v0 ) );
|
||||
|
||||
t.vertexUV( ( float )( x + r ), ( float )( y + h + yo ), ( float )( z +
|
||||
0.0f ), ( float )( u0 ), ( float )( v0 ) );
|
||||
t.vertexUV( ( float )( x + 0.0f ), ( float )( y + 0.0f + yo ), ( float )( z +
|
||||
0.0f ), ( float )( u0 ), ( float )( v1 ) );
|
||||
t.vertexUV( ( float )( x + 0.0f ), ( float )( y + 0.0f + yo ), ( float )( z +
|
||||
1.0f ), ( float )( u1 ), ( float )( v1 ) );
|
||||
t.vertexUV( ( float )( x + r ), ( float )( y + h + yo ), ( float )( z +
|
||||
1.0f ), ( float )( u1 ), ( float )( v0 ) );
|
||||
}
|
||||
if ( Tile::fire->canBurn( level, x + 1, y, z ) )
|
||||
{
|
||||
t.vertexUV( ( float )( x + 1 - r ), ( float )( y + h + yo ), ( float )( z +
|
||||
0.0f ), ( float )( u0 ), ( float )( v0 ) );
|
||||
t.vertexUV( ( float )( x + 1 - 0 ), ( float )( y + 0 + yo ), ( float )( z +
|
||||
0.0f ), ( float )( u0 ), ( float )( v1 ) );
|
||||
t.vertexUV( ( float )( x + 1 - 0 ), ( float )( y + 0 + yo ), ( float )( z +
|
||||
1.0f ), ( float )( u1 ), ( float )( v1 ) );
|
||||
t.vertexUV( ( float )( x + 1 - r ), ( float )( y + h + yo ), ( float )( z +
|
||||
1.0f ), ( float )( u1 ), ( float )( v0 ) );
|
||||
|
||||
t.vertexUV( ( float )( x + 1.0f - r ), ( float )( y + h + yo ), ( float )( z +
|
||||
1.0f ), ( float )( u1 ), ( float )( v0 ) );
|
||||
t.vertexUV( ( float )( x + 1.0f - 0.0f ), ( float )( y + 0.0f + yo ), ( float )( z +
|
||||
1.0f ), ( float )( u1 ), ( float )( v1 ) );
|
||||
t.vertexUV( ( float )( x + 1.0f - 0 ), ( float )( y + 0.0f + yo ), ( float )( z +
|
||||
0.0f ), ( float )( u0 ), ( float )( v1 ) );
|
||||
t.vertexUV( ( float )( x + 1.0f - r ), ( float )( y + h + yo ), ( float )( z +
|
||||
0.0f ), ( float )( u0 ), ( float )( v0 ) );
|
||||
}
|
||||
if ( Tile::fire->canBurn( level, x, y, z - 1 ) )
|
||||
{
|
||||
t.vertexUV( ( float )( x + 0.0f ), ( float )( y + h + yo ), ( float )( z +
|
||||
r ), ( float )( u1 ), ( float )( v0 ) );
|
||||
t.vertexUV( ( float )( x + 0.0f ), ( float )( y + 0.0f + yo ), ( float )( z +
|
||||
0.0f ), ( float )( u1 ), ( float )( v1 ) );
|
||||
t.vertexUV( ( float )( x + 1.0f ), ( float )( y + 0.0f + yo ), ( float )( z +
|
||||
0.0f ), ( float )( u0 ), ( float )( v1 ) );
|
||||
t.vertexUV( ( float )( x + 1.0f ), ( float )( y + h + yo ), ( float )( z +
|
||||
r ), ( float )( u0 ), ( float )( v0 ) );
|
||||
|
||||
t.vertexUV( ( float )( x + 1.0f ), ( float )( y + h + yo ), ( float )( z +
|
||||
r ), ( float )( u0 ), ( float )( v0 ) );
|
||||
t.vertexUV( ( float )( x + 1.0f ), ( float )( y + 0.0f + yo ), ( float )( z +
|
||||
0.0f ), ( float )( u0 ), ( float )( v1 ) );
|
||||
t.vertexUV( ( float )( x + 0.0f ), ( float )( y + 0.0f + yo ), ( float )( z +
|
||||
0.0f ), ( float )( u1 ), ( float )( v1 ) );
|
||||
t.vertexUV( ( float )( x + 0.0f ), ( float )( y + h + yo ), ( float )( z +
|
||||
r ), ( float )( u1 ), ( float )( v0 ) );
|
||||
}
|
||||
if ( Tile::fire->canBurn( level, x, y, z + 1 ) )
|
||||
{
|
||||
t.vertexUV( ( float )( x + 1.0f ), ( float )( y + h + yo ), ( float )( z + 1.0f -
|
||||
r ), ( float )( u0 ), ( float )( v0 ) );
|
||||
t.vertexUV( ( float )( x + 1.0f ), ( float )( y + 0.0f + yo ), ( float )( z + 1.0f -
|
||||
0.0f ), ( float )( u0 ), ( float )( v1 ) );
|
||||
t.vertexUV( ( float )( x + 0.0f ), ( float )( y + 0.0f + yo ), ( float )( z + 1.0f -
|
||||
0.0f ), ( float )( u1 ), ( float )( v1 ) );
|
||||
t.vertexUV( ( float )( x + 0.0f ), ( float )( y + h + yo ), ( float )( z + 1.0f -
|
||||
r ), ( float )( u1 ), ( float )( v0 ) );
|
||||
|
||||
t.vertexUV( ( float )( x + 0.0f ), ( float )( y + h + yo ), ( float )( z + 1.0f -
|
||||
r ), ( float )( u1 ), ( float )( v0 ) );
|
||||
t.vertexUV( ( float )( x + 0.0f ), ( float )( y + 0.0f + yo ), ( float )( z + 1.0f -
|
||||
0.0f ), ( float )( u1 ), ( float )( v1 ) );
|
||||
t.vertexUV( ( float )( x + 1.0f ), ( float )( y + 0.0f + yo ), ( float )( z + 1.0f -
|
||||
0.0f ), ( float )( u0 ), ( float )( v1 ) );
|
||||
t.vertexUV( ( float )( x + 1.0f ), ( float )( y + h + yo ), ( float )( z + 1.0f -
|
||||
r ), ( float )( u0 ), ( float )( v0 ) );
|
||||
}
|
||||
if ( Tile::fire->canBurn( level, x, y + 1.0f, z ) )
|
||||
{
|
||||
double x0 = x + 0.5f + 0.5f;
|
||||
double x1 = x + 0.5f - 0.5f;
|
||||
double z0 = z + 0.5f + 0.5f;
|
||||
double z1 = z + 0.5f - 0.5f;
|
||||
|
||||
double x0_ = x + 0.5f - 0.5f;
|
||||
double x1_ = x + 0.5f + 0.5f;
|
||||
double z0_ = z + 0.5f - 0.5f;
|
||||
double z1_ = z + 0.5f + 0.5f;
|
||||
|
||||
u0 = (xt) / 256.0f;
|
||||
u1 = (xt + 15.99f) / 256.0f;
|
||||
v0 = (yt) / 256.0f;
|
||||
v1 = (yt + 15.99f) / 256.0f;
|
||||
|
||||
y += 1;
|
||||
h = -0.2f;
|
||||
|
||||
if ( ( ( x + y + z ) & 1 ) == 0 )
|
||||
{
|
||||
t.vertexUV( ( float )( x0_ ), ( float )( y + h ), ( float )( z +
|
||||
0 ), ( float )( u1 ), ( float )( v0 ) );
|
||||
t.vertexUV( ( float )( x0 ), ( float )( y + 0 ), ( float )( z +
|
||||
0 ), ( float )( u1 ), ( float )( v1 ) );
|
||||
t.vertexUV( ( float )( x0 ), ( float )( y + 0 ), ( float )( z +
|
||||
1 ), ( float )( u0 ), ( float )( v1 ) );
|
||||
t.vertexUV( ( float )( x0_ ), ( float )( y + h ), ( float )( z +
|
||||
1 ), ( float )( u0 ), ( float )( v0 ) );
|
||||
|
||||
u0 = (xt) / 256.0f;
|
||||
u1 = (xt + 15.99f) / 256.0f;
|
||||
v0 = (yt) / 256.0f;
|
||||
v1 = (yt + 15.99f) / 256.0f;
|
||||
|
||||
t.vertexUV( ( float )( x1_ ), ( float )( y + h ), ( float )( z +
|
||||
1.0f ), ( float )( u1 ), ( float )( v0 ) );
|
||||
t.vertexUV( ( float )( x1 ), ( float )( y + 0.0f ), ( float )( z +
|
||||
1.0f ), ( float )( u1 ), ( float )( v1 ) );
|
||||
t.vertexUV( ( float )( x1 ), ( float )( y + 0.0f ), ( float )( z +
|
||||
0 ), ( float )( u0 ), ( float )( v1 ) );
|
||||
t.vertexUV( ( float )( x1_ ), ( float )( y + h ), ( float )( z +
|
||||
0 ), ( float )( u0 ), ( float )( v0 ) );
|
||||
}
|
||||
else
|
||||
{
|
||||
t.vertexUV( ( float )( x + 0.0f ), ( float )( y +
|
||||
h ), ( float )( z1_ ), ( float )( u1 ), ( float )( v0 ) );
|
||||
t.vertexUV( ( float )( x + 0.0f ), ( float )( y +
|
||||
0.0f ), ( float )( z1 ), ( float )( u1 ), ( float )( v1 ) );
|
||||
t.vertexUV( ( float )( x + 1.0f ), ( float )( y +
|
||||
0.0f ), ( float )( z1 ), ( float )( u0 ), ( float )( v1 ) );
|
||||
t.vertexUV( ( float )( x + 1.0f ), ( float )( y +
|
||||
h ), ( float )( z1_ ), ( float )( u0 ), ( float )( v0 ) );
|
||||
|
||||
u0 = (xt) / 256.0f;
|
||||
u1 = (xt + 15.99f) / 256.0f;
|
||||
v0 = (yt) / 256.0f;
|
||||
v1 = (yt + 15.99f) / 256.0f;
|
||||
|
||||
t.vertexUV( ( float )( x + 1.0f ), ( float )( y +
|
||||
h ), ( float )( z0_ ), ( float )( u1 ), ( float )( v0 ) );
|
||||
t.vertexUV( ( float )( x + 1.0f ), ( float )( y +
|
||||
0.0f ), ( float )( z0 ), ( float )( u1 ), ( float )( v1 ) );
|
||||
t.vertexUV( ( float )( x + 0.0f ), ( float )( y +
|
||||
0.0f ), ( float )( z0 ), ( float )( u0 ), ( float )( v1 ) );
|
||||
t.vertexUV( ( float )( x + 0.0f ), ( float )( y +
|
||||
h ), ( float )( z0_ ), ( float )( u0 ), ( float )( v0 ) );
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
return true;
|
||||
|
||||
}
|
||||
|
||||
|
||||
bool TileRenderer::tesselateLadderInWorld( Tile* tt, int x, int y, int z )
|
||||
{
|
||||
Tesselator& t = Tesselator::instance;
|
||||
|
||||
@@ -34,8 +34,6 @@ public:
|
||||
bool tesselateFenceGateInWorld(FenceGateTile* tt, int x, int y, int z);
|
||||
bool tesselateBedInWorld(Tile *tt, int x, int y, int z);
|
||||
bool tesselateRowInWorld(Tile* tt, int x, int y, int z);
|
||||
bool tesselateFireInWorld(Tile* tt, int x, int y, int z);
|
||||
|
||||
|
||||
void tesselateTorch(Tile* tt, float x, float y, float z, float xxa, float zza);
|
||||
void tesselateCrossTexture(Tile* tt, int data, float x, float y, float z);
|
||||
|
||||
@@ -40,18 +40,18 @@ EntityRenderDispatcher::EntityRenderDispatcher()
|
||||
{
|
||||
//@note: The Models (model/armor) will be deleted by resp. MobRenderer
|
||||
assign( ER_ITEM_RENDERER, new ItemRenderer());
|
||||
assign( ER_HUMANOID_RENDERER, new HumanoidMobRenderer(new HumanoidModel(), 0.5));
|
||||
assign( ER_PIG_RENDERER, new PigRenderer(new PigModel(0.5), NULL/*new PigModel(0.5f)*/, 0.7));
|
||||
assign( ER_COW_RENDERER, new MobRenderer(new CowModel(), 0.7));
|
||||
assign( ER_CHICKEN_RENDERER, new ChickenRenderer( new ChickenModel(), 0.3));
|
||||
assign( ER_SHEEP_RENDERER, new SheepRenderer(new SheepModel(), new SheepFurModel(), 0.7));
|
||||
assign( ER_HUMANOID_RENDERER, new HumanoidMobRenderer(new HumanoidModel(), 0));
|
||||
assign( ER_PIG_RENDERER, new PigRenderer(new PigModel(), NULL/*new PigModel(0.5f)*/, 0));
|
||||
assign( ER_COW_RENDERER, new MobRenderer(new CowModel(), 0));
|
||||
assign( ER_CHICKEN_RENDERER, new ChickenRenderer( new ChickenModel(), 0));
|
||||
assign( ER_SHEEP_RENDERER, new SheepRenderer(new SheepModel(), new SheepFurModel(), 0));
|
||||
assign( ER_SKELETON_RENDERER, new HumanoidMobRenderer(new SkeletonModel(), 0.5f));
|
||||
assign( ER_ZOMBIE_RENDERER, new HumanoidMobRenderer(new ZombieModel(), 0.5f));
|
||||
assign( ER_CREEPER_RENDERER, new CreeperRenderer());
|
||||
assign( ER_SPIDER_RENDERER, new SpiderRenderer());
|
||||
assign( ER_TNT_RENDERER, new TntRenderer());
|
||||
assign( ER_ARROW_RENDERER, new ArrowRenderer());
|
||||
assign( ER_PLAYER_RENDERER, new PlayerRenderer(new HumanoidModel(0, 0, 64, 64), 0.5));
|
||||
assign( ER_PLAYER_RENDERER, new PlayerRenderer(new HumanoidModel(0, 0, 64, 64), 0));
|
||||
assign( ER_THROWNEGG_RENDERER, new ItemSpriteRenderer(Item::egg->getIcon(0)));
|
||||
assign( ER_SNOWBALL_RENDERER, new ItemSpriteRenderer(Item::snowBall->getIcon(0)));
|
||||
assign( ER_PAINTING_RENDERER, new PaintingRenderer());
|
||||
@@ -133,7 +133,7 @@ void EntityRenderDispatcher::render( Entity* entity, float x, float y, float z,
|
||||
EntityRenderer* renderer = getRenderer(entity);
|
||||
if (renderer != NULL) {
|
||||
renderer->render(entity, x, y, z, rot, a);
|
||||
renderer->postRender(entity, x, y, z, rot, a);
|
||||
//renderer->postRender(entity, x, y, z, rot, a);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@@ -5,12 +5,6 @@
|
||||
#include "../gles.h"
|
||||
#include "../../../world/phys/AABB.h"
|
||||
#include "EntityRenderDispatcher.h"
|
||||
#include "../../../util/Mth.h"
|
||||
#include "../../../world/level/Level.h"
|
||||
#include "../../../world/level/tile/Tile.h"
|
||||
|
||||
#include "../../Minecraft.h"
|
||||
#include "../../Option.h"
|
||||
|
||||
EntityRenderDispatcher* EntityRenderer::entityRenderDispatcher = NULL;
|
||||
|
||||
@@ -42,37 +36,37 @@ void EntityRenderer::render(const AABB& bb, float xo, float yo, float zo) {
|
||||
glColor4f2(1, 1, 1, 1);
|
||||
t.begin();
|
||||
t.offset(xo, yo, zo);
|
||||
t.normal(0, 0, -1);
|
||||
//t.normal(0, 0, -1);
|
||||
t.vertex(bb.x0, bb.y1, bb.z0);
|
||||
t.vertex(bb.x1, bb.y1, bb.z0);
|
||||
t.vertex(bb.x1, bb.y0, bb.z0);
|
||||
t.vertex(bb.x0, bb.y0, bb.z0);
|
||||
|
||||
t.normal(0, 0, 1);
|
||||
//t.normal(0, 0, 1);
|
||||
t.vertex(bb.x0, bb.y0, bb.z1);
|
||||
t.vertex(bb.x1, bb.y0, bb.z1);
|
||||
t.vertex(bb.x1, bb.y1, bb.z1);
|
||||
t.vertex(bb.x0, bb.y1, bb.z1);
|
||||
|
||||
t.normal(0, -1, 0);
|
||||
//t.normal(0, -1, 0);
|
||||
t.vertex(bb.x0, bb.y0, bb.z0);
|
||||
t.vertex(bb.x1, bb.y0, bb.z0);
|
||||
t.vertex(bb.x1, bb.y0, bb.z1);
|
||||
t.vertex(bb.x0, bb.y0, bb.z1);
|
||||
|
||||
t.normal(0, 1, 0);
|
||||
//t.normal(0, 1, 0);
|
||||
t.vertex(bb.x0, bb.y1, bb.z1);
|
||||
t.vertex(bb.x1, bb.y1, bb.z1);
|
||||
t.vertex(bb.x1, bb.y1, bb.z0);
|
||||
t.vertex(bb.x0, bb.y1, bb.z0);
|
||||
|
||||
t.normal(-1, 0, 0);
|
||||
//t.normal(-1, 0, 0);
|
||||
t.vertex(bb.x0, bb.y0, bb.z1);
|
||||
t.vertex(bb.x0, bb.y1, bb.z1);
|
||||
t.vertex(bb.x0, bb.y1, bb.z0);
|
||||
t.vertex(bb.x0, bb.y0, bb.z0);
|
||||
|
||||
t.normal(1, 0, 0);
|
||||
//t.normal(1, 0, 0);
|
||||
t.vertex(bb.x1, bb.y0, bb.z0);
|
||||
t.vertex(bb.x1, bb.y1, bb.z0);
|
||||
t.vertex(bb.x1, bb.y1, bb.z1);
|
||||
@@ -122,139 +116,134 @@ Font* EntityRenderer::getFont() {
|
||||
return entityRenderDispatcher->getFont();
|
||||
}
|
||||
|
||||
void EntityRenderer::postRender(Entity* entity, float x, float y, float z, float rot, float a) {
|
||||
if (/*entityRenderDispatcher.options.fancyGraphics &&*/entityRenderDispatcher->minecraft->options.getBooleanValue(OPTIONS_FANCY_GRAPHICS) && shadowRadius > 0) {
|
||||
float dist = entityRenderDispatcher->distanceToSqr(entity->x, entity->y, entity->z);
|
||||
float pow = (float) ((1 - dist / (16.0f * 16.0f)) * shadowStrength);
|
||||
if (pow > 0) {
|
||||
renderShadow(entity, x, y, z, pow, a);
|
||||
}
|
||||
//void postRender(Entity entity, float x, float y, float z, float rot, float a) {
|
||||
// if (entityRenderDispatcher.options.fancyGraphics && shadowRadius > 0) {
|
||||
// float dist = entityRenderDispatcher.distanceToSqr(entity.x, entity.y, entity.z);
|
||||
// float pow = (float) ((1 - dist / (16.0f * 16.0f)) * shadowStrength);
|
||||
// if (pow > 0) {
|
||||
// renderShadow(entity, x, y, z, pow, a);
|
||||
// }
|
||||
// }
|
||||
// if (entity.isOnFire()) renderFlame(entity, x, y, z, a);
|
||||
//}
|
||||
if (entity->isOnFire()) renderFlame(entity, x, y, z, a);
|
||||
}
|
||||
}
|
||||
void EntityRenderer::renderFlame(Entity* e, float x, float y, float z, float a) {
|
||||
|
||||
int tex = ((Tile*)Tile::fire)->tex;
|
||||
//void renderFlame(Entity e, float x, float y, float z, float a) {
|
||||
// glDisable2(GL_LIGHTING);
|
||||
// int tex = Tile.fire.tex;
|
||||
|
||||
int xt = (tex & 0xf) << 4;
|
||||
int yt = tex & 0xf0;
|
||||
// int xt = (tex & 0xf) << 4;
|
||||
// int yt = tex & 0xf0;
|
||||
|
||||
float u0 = (xt) / 256.0f;
|
||||
float u1 = (xt + 15.99f) / 256.0f;
|
||||
float v0 = (yt) / 256.0f;
|
||||
float v1 = (yt + 15.99f) / 256.0f;
|
||||
// float u0 = (xt) / 256.0f;
|
||||
// float u1 = (xt + 15.99f) / 256.0f;
|
||||
// float v0 = (yt) / 256.0f;
|
||||
// float v1 = (yt + 15.99f) / 256.0f;
|
||||
|
||||
glPushMatrix2();
|
||||
glTranslatef2((float) x, (float) y, (float) z);
|
||||
// glPushMatrix2();
|
||||
// glTranslatef2((float) x, (float) y, (float) z);
|
||||
|
||||
float s = e->bbWidth * 1.4f;
|
||||
glScalef2(s, s, s);
|
||||
bindTexture("terrain.png");
|
||||
Tesselator& t = Tesselator::instance;
|
||||
// float s = e.bbWidth * 1.4f;
|
||||
// glScalef2(s, s, s);
|
||||
// bindTexture("terrain.png");
|
||||
// Tesselator t = Tesselator.instance;
|
||||
|
||||
float r = 1.0f;
|
||||
float xo = 0.5f;
|
||||
float yo = 0.0f;
|
||||
// float r = 1.0f;
|
||||
// float xo = 0.5f;
|
||||
// float yo = 0.0f;
|
||||
|
||||
float h = e->bbHeight / e->bbWidth;
|
||||
// float h = e.bbHeight / e.bbWidth;
|
||||
|
||||
glRotatef2(-entityRenderDispatcher->playerRotY, 0, 1, 0);
|
||||
glTranslatef2(0, 0, -0.4f + ((int) h) * 0.02f);
|
||||
glColor4f2(1, 1, 1, 1);
|
||||
// glRotatef2(-playerRotX, 1, 0, 0);
|
||||
t.begin();
|
||||
while (h > 0) {
|
||||
t.vertexUV(r - xo, 0 - yo, 0, u1, v1);
|
||||
t.vertexUV(0 - xo, 0 - yo, 0, u0, v1);
|
||||
t.vertexUV(0 - xo, 1.4f - yo, 0, u0, v0);
|
||||
t.vertexUV(r - xo, 1.4f - yo, 0, u1, v0);
|
||||
h -= 1;
|
||||
yo -= 1;
|
||||
r *= 0.9f;
|
||||
glTranslatef2(0, 0, -0.04f);
|
||||
}
|
||||
t.draw();
|
||||
glPopMatrix2();
|
||||
// glRotatef2(-entityRenderDispatcher.playerRotY, 0, 1, 0);
|
||||
// glTranslatef2(0, 0, -0.4f + ((int) h) * 0.02f);
|
||||
// glColor4f2(1, 1, 1, 1);
|
||||
// // glRotatef2(-playerRotX, 1, 0, 0);
|
||||
// t.begin();
|
||||
// while (h > 0) {
|
||||
// t.vertexUV(r - xo, 0 - yo, 0, u1, v1);
|
||||
// t.vertexUV(0 - xo, 0 - yo, 0, u0, v1);
|
||||
// t.vertexUV(0 - xo, 1.4f - yo, 0, u0, v0);
|
||||
// t.vertexUV(r - xo, 1.4f - yo, 0, u1, v0);
|
||||
// h -= 1;
|
||||
// yo -= 1;
|
||||
// r *= 0.9f;
|
||||
// glTranslatef2(0, 0, -0.04f);
|
||||
// }
|
||||
// t.end();
|
||||
// glPopMatrix2();
|
||||
// glEnable2(GL_LIGHTING);
|
||||
}
|
||||
//}
|
||||
|
||||
void EntityRenderer::renderShadow(Entity* e, float x, float y, float z, float pow, float a) { //
|
||||
glEnable2(GL_BLEND);
|
||||
glBlendFunc2(GL_SRC_ALPHA, GL_ONE_MINUS_SRC_ALPHA);
|
||||
//void renderShadow(Entity e, float x, float y, float z, float pow, float a) {
|
||||
// glEnable2(GL_BLEND);
|
||||
// glBlendFunc2(GL_SRC_ALPHA, GL_ONE_MINUS_SRC_ALPHA);
|
||||
|
||||
//Textures* textures = entityRenderDispatcher->textures;
|
||||
//textures->bind(textures->loadTexture("%clamp%/environment/shadow.png"));
|
||||
Textures* textures = entityRenderDispatcher->textures;
|
||||
textures->bind(textures->loadTexture("/misc/shadow.png"));
|
||||
// Textures textures = entityRenderDispatcher.textures;
|
||||
// textures.bind(textures.loadTexture("%clamp%/misc/shadow.png"));
|
||||
|
||||
glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_WRAP_S, GL_CLAMP_TO_EDGE);
|
||||
glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_WRAP_T, GL_CLAMP_TO_EDGE);
|
||||
// Level level = getLevel();
|
||||
|
||||
Level* level = getLevel();
|
||||
// glDepthMask(false);
|
||||
// float r = shadowRadius;
|
||||
|
||||
glDepthMask(false);
|
||||
float r = shadowRadius;
|
||||
// float ex = e.xOld + (e.x - e.xOld) * a;
|
||||
// float ey = e.yOld + (e.y - e.yOld) * a + e.getShadowHeightOffs();
|
||||
// float ez = e.zOld + (e.z - e.zOld) * a;
|
||||
|
||||
float ex = e->xOld + (e->x - e->xOld) * a;
|
||||
float ey = e->yOld + (e->y - e->yOld) * a + e->getShadowHeightOffs();
|
||||
float ez = e->zOld + (e->z - e->zOld) * a;
|
||||
// int x0 = Mth.floor(ex - r);
|
||||
// int x1 = Mth.floor(ex + r);
|
||||
// int y0 = Mth.floor(ey - r);
|
||||
// int y1 = Mth.floor(ey);
|
||||
// int z0 = Mth.floor(ez - r);
|
||||
// int z1 = Mth.floor(ez + r);
|
||||
|
||||
int x0 = Mth::floor(ex - r);
|
||||
int x1 = Mth::floor(ex + r);
|
||||
int y0 = Mth::floor(ey - r);
|
||||
int y1 = Mth::floor(ey);
|
||||
int z0 = Mth::floor(ez - r);
|
||||
int z1 = Mth::floor(ez + r);
|
||||
// float xo = x - ex;
|
||||
// float yo = y - ey;
|
||||
// float zo = z - ez;
|
||||
|
||||
float xo = x - ex;
|
||||
float yo = y - ey;
|
||||
float zo = z - ez;
|
||||
// Tesselator tt = Tesselator.instance;
|
||||
// tt.begin();
|
||||
// for (int xt = x0; xt <= x1; xt++)
|
||||
// for (int yt = y0; yt <= y1; yt++)
|
||||
// for (int zt = z0; zt <= z1; zt++) {
|
||||
// int t = level.getTile(xt, yt - 1, zt);
|
||||
// if (t > 0 && level.getRawBrightness(xt, yt, zt) > 3) {
|
||||
// renderTileShadow(Tile.tiles[t], x, y + e.getShadowHeightOffs(), z, xt, yt, zt, pow, r, xo, yo + e.getShadowHeightOffs(), zo);
|
||||
// }
|
||||
// }
|
||||
// tt.end();
|
||||
|
||||
Tesselator& tt = Tesselator::instance;
|
||||
tt.begin();
|
||||
for (int xt = x0; xt <= x1; xt++)
|
||||
for (int yt = y0; yt <= y1; yt++)
|
||||
for (int zt = z0; zt <= z1; zt++) {
|
||||
int t = level->getTile(xt, yt - 1, zt);
|
||||
if (t > 0 && level->getRawBrightness(xt, yt, zt) > 3) {
|
||||
renderTileShadow(Tile::tiles[t], x, y + e->getShadowHeightOffs(), z, xt, yt, zt, pow, r, xo, yo + e->getShadowHeightOffs(), zo);
|
||||
}
|
||||
}
|
||||
tt.draw();
|
||||
// glColor4f2(1, 1, 1, 1);
|
||||
// glDisable2(GL_BLEND);
|
||||
// glDepthMask(true);
|
||||
//}
|
||||
|
||||
glColor4f2(1, 1, 1, 1);
|
||||
glDisable2(GL_BLEND);
|
||||
glDepthMask(true);
|
||||
}
|
||||
//Level* getLevel() {
|
||||
// return entityRenderDispatcher.level;
|
||||
//}
|
||||
|
||||
Level* EntityRenderer::getLevel() {
|
||||
return entityRenderDispatcher->level;
|
||||
}
|
||||
//void renderTileShadow(Tile tt, float x, float y, float z, int xt, int yt, int zt, float pow, float r, float xo, float yo, float zo) {
|
||||
// Tesselator t = Tesselator.instance;
|
||||
// if (!tt.isCubeShaped()) return;
|
||||
|
||||
void EntityRenderer::renderTileShadow(Tile* tt, float x, float y, float z, int xt, int yt, int zt, float pow, float r, float xo, float yo, float zo) {
|
||||
Tesselator& t = Tesselator::instance;
|
||||
if (!tt->isCubeShaped()) return;
|
||||
|
||||
float a = ((pow - (y - (yt + yo)) / 2) * 0.5f) * getLevel()->getBrightness(xt, yt, zt);
|
||||
if (a < 0) return;
|
||||
if (a > 1) a = 1;
|
||||
// float a = ((pow - (y - (yt + yo)) / 2) * 0.5f) * getLevel().getBrightness(xt, yt, zt);
|
||||
// if (a < 0) return;
|
||||
// if (a > 1) a = 1;
|
||||
// t.color(1, 1, 1, (float) a);
|
||||
glColor4f2(1, 1, 1, (float) a);
|
||||
// // glColor4f2(1, 1, 1, (float) a);
|
||||
|
||||
float x0 = xt + tt->xx0 + xo;
|
||||
float x1 = xt + tt->xx1 + xo;
|
||||
float y0 = yt + tt->yy0 + yo + 1.0 / 64.0f;
|
||||
float z0 = zt + tt->zz0 + zo;
|
||||
float z1 = zt + tt->zz1 + zo;
|
||||
// float x0 = xt + tt.xx0 + xo;
|
||||
// float x1 = xt + tt.xx1 + xo;
|
||||
// float y0 = yt + tt.yy0 + yo + 1.0 / 64.0f;
|
||||
// float z0 = zt + tt.zz0 + zo;
|
||||
// float z1 = zt + tt.zz1 + zo;
|
||||
|
||||
float u0 = (float) ((x - (x0)) / 2 / r + 0.5f);
|
||||
float u1 = (float) ((x - (x1)) / 2 / r + 0.5f);
|
||||
float v0 = (float) ((z - (z0)) / 2 / r + 0.5f);
|
||||
float v1 = (float) ((z - (z1)) / 2 / r + 0.5f);
|
||||
// float u0 = (float) ((x - (x0)) / 2 / r + 0.5f);
|
||||
// float u1 = (float) ((x - (x1)) / 2 / r + 0.5f);
|
||||
// float v0 = (float) ((z - (z0)) / 2 / r + 0.5f);
|
||||
// float v1 = (float) ((z - (z1)) / 2 / r + 0.5f);
|
||||
|
||||
t.vertexUV(x0, y0, z0, u0, v0);
|
||||
t.vertexUV(x0, y0, z1, u0, v1);
|
||||
t.vertexUV(x1, y0, z1, u1, v1);
|
||||
t.vertexUV(x1, y0, z0, u1, v0);
|
||||
}
|
||||
// t.vertexUV(x0, y0, z0, u0, v0);
|
||||
// t.vertexUV(x0, y0, z1, u0, v1);
|
||||
// t.vertexUV(x1, y0, z1, u1, v1);
|
||||
// t.vertexUV(x1, y0, z0, u1, v0);
|
||||
//}
|
||||
|
||||
@@ -12,8 +12,6 @@ class EntityRenderDispatcher;
|
||||
class Entity;
|
||||
class AABB;
|
||||
class Font;
|
||||
class Tile;
|
||||
class Level;
|
||||
|
||||
class EntityRenderer
|
||||
{
|
||||
@@ -26,11 +24,6 @@ public:
|
||||
virtual void render(Entity* entity, float x, float y, float z, float rot, float a) = 0;
|
||||
static void render(const AABB& bb, float xo, float yo, float zo);
|
||||
static void renderFlat(const AABB& bb);
|
||||
void renderShadow(Entity* e, float x, float y, float z, float pow, float a);
|
||||
void renderTileShadow(Tile* tt, float x, float y, float z, int xt, int yt, int zt, float pow, float r, float xo, float yo, float zo);
|
||||
void renderFlame(Entity* e, float x, float y, float z, float a);
|
||||
void postRender(Entity* entity, float x, float y, float z, float rot, float a);
|
||||
Level* getLevel();
|
||||
|
||||
Font* getFont();
|
||||
|
||||
|
||||
@@ -226,42 +226,7 @@ void ItemRenderer::renderGuiItem(Font* font, Textures* textures, const ItemInsta
|
||||
t.draw();
|
||||
}
|
||||
|
||||
|
||||
void ItemRenderer::renderGuiItemDecorations(Font* font, Textures* textures, ItemInstance* item, int x, int y){ // this is normally unused in the header but i ported it from java beta - shredder
|
||||
if (item != NULL) {
|
||||
if (item->count > 1) {
|
||||
char buf[16];
|
||||
sprintf(buf, "%d", item->count);
|
||||
std::string countStr = buf;
|
||||
// glDisable(GL_LIGHTING);
|
||||
// glDisable(GL_DEPTH_TEST);
|
||||
font->drawShadow(countStr, x + 19 - 2 - font->width(countStr),
|
||||
y + 6 + 3, 0xFFFFFF);
|
||||
// glEnable(GL_LIGHTING);
|
||||
// glEnable(GL_DEPTH_TEST);
|
||||
}
|
||||
if (item->isDamaged()) {
|
||||
float p = std::floor(13.5f - (float) item->getDamageValue() * 13.0f / (float) item->getMaxDamage() + 0.5);
|
||||
int cc = (int) std::floor(255.5f - (float) item->getDamageValue() * 255.0f / (float) item->getMaxDamage() + 0.5);
|
||||
// glDisable(GL_LIGHTING);
|
||||
// glDisable(GL_DEPTH_TEST);
|
||||
// glDisable(GL_TEXTURE_2D);
|
||||
// auto var8 = ::net::minecraft::client::renderer::Tesselator::instance();
|
||||
Tesselator& t = Tesselator::instance;
|
||||
int ca = ((255 - cc)<< 16 | (cc << 8));
|
||||
int cb = (((255 - cc) / 4) << 16 | 16128);
|
||||
fillRect(t, x + 2, y + 13, 13, 2, 0);
|
||||
fillRect(t, x + 2, y + 13, 12, 1, cb);
|
||||
fillRect(t, x + 2, y + 13, p, 1, ca);
|
||||
// glEnable(GL_TEXTURE_2D);
|
||||
// glEnable(GL_LIGHTING);
|
||||
// glEnable(GL_DEPTH_TEST);
|
||||
glColor4f(1.0f, 1.0f, 1.0f, 1.0f);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
void ItemRenderer::renderGuiItemDecorations(const ItemInstance* item, float x, float y) { // nothing changed here this is the normal pocket edition one.
|
||||
void ItemRenderer::renderGuiItemDecorations(const ItemInstance* item, float x, float y) {
|
||||
if (!item) return;
|
||||
if (item->count > 0 && item->isDamaged()) {
|
||||
float p = std::floor(13.5f - (float) item->getDamageValue() * 13.0f / (float) item->getMaxDamage());
|
||||
|
||||
@@ -22,7 +22,7 @@ public:
|
||||
static void renderGuiItem(Font* font, Textures* textures, const ItemInstance* item, float x, float y, bool fancy);
|
||||
static void renderGuiItem(Font* font, Textures* textures, const ItemInstance* item, float x, float y, float w, float h, bool fancy);
|
||||
static void renderGuiItemCorrect(Font* font, Textures* textures, const ItemInstance* item, int x, int y);
|
||||
static void renderGuiItemDecorations(Font* font, Textures* textures, ItemInstance* item, int x, int y);
|
||||
//void renderGuiItemDecorations(Font* font, Textures* textures, ItemInstance* item, int x, int y);
|
||||
static void renderGuiItemDecorations(const ItemInstance* item, float x, float y);
|
||||
|
||||
static void blit(float x, float y, float sx, float sy, float w, float h);
|
||||
|
||||
@@ -135,7 +135,7 @@ void MobRenderer::render(Entity* e, float x, float y, float z, float rot, float
|
||||
//glEnable2(GL_DEPTH_TEST);
|
||||
|
||||
glPopMatrix2();
|
||||
postRender(mob, x, y, z, rot, a);
|
||||
|
||||
renderName(mob, x, y, z);
|
||||
}
|
||||
|
||||
|
||||
@@ -206,93 +206,3 @@ void WaterSideTexture::tick() {
|
||||
pixels[i * 4 + 3] = a;
|
||||
}
|
||||
}
|
||||
|
||||
FireTexture::FireTexture()
|
||||
: super(((Tile*)Tile::fire)->tex),
|
||||
_tick(0),
|
||||
_frame(0)
|
||||
{
|
||||
current = new float[16*20];
|
||||
next = new float[16*20];
|
||||
heat = new float[16*20];
|
||||
heata = new float[16*20];
|
||||
|
||||
for (int i = 0; i < 256; ++i) {
|
||||
current[i] = 0;
|
||||
next[i] = 0;
|
||||
heat[i] = 0;
|
||||
heata[i] = 0;
|
||||
}
|
||||
}
|
||||
|
||||
FireTexture::~FireTexture() {
|
||||
delete[] current;
|
||||
delete[] next;
|
||||
delete[] heat;
|
||||
delete[] heata;
|
||||
}
|
||||
|
||||
|
||||
// oh boy time to implement fire textures, i am so fucked - shredder
|
||||
|
||||
void FireTexture::tick() {
|
||||
// loop generates fire texture on the empty texture grid, hopefully shouldnt be too taxing on older hardware - shredder
|
||||
for (int x = 0; x < 16; x++) {
|
||||
for (int y = 0; y < 20; y++) {
|
||||
int count = 18;
|
||||
float pow = this->current[x + (y + 1) % 20 * 16] * (float)(count);
|
||||
for (int xx = x - 1; xx <= x + 1; xx++) {
|
||||
for (int yy = y; yy <= y + 1; yy++) {
|
||||
if (xx >= 0 && yy >= 0 && xx < 16 && yy < 20) {
|
||||
pow += this->current[xx + yy * 16];
|
||||
}
|
||||
count++;
|
||||
}
|
||||
}
|
||||
this->next[x + y * 16] = pow / (float(count) * 1.06f);
|
||||
if (y >= 19) {
|
||||
this->next[x + y * 16] = float(Mth::random() * Mth::random() * Mth::random() * 4.0 + Mth::random() * 0.1f + 0.2f);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
// hopefully this doesn't cause any mysterious issues - shredder
|
||||
float* tmp = next;
|
||||
next = current;
|
||||
current = tmp;
|
||||
|
||||
for (int i = 0; i < 256; i++) {
|
||||
float pow = this->current[i] * 1.8f;
|
||||
if (pow > 1.0f) {
|
||||
pow = 1.0f;
|
||||
}
|
||||
if (pow < 0.0f) {
|
||||
pow = 0.0f;
|
||||
}
|
||||
|
||||
|
||||
int r = (int) (pow * 155.0f + 100.0f);
|
||||
int g = (int)(pow * pow * 255.0f);
|
||||
int b = (int)(pow * pow * pow * pow * pow * pow * pow * pow * pow * pow * 255.0f);
|
||||
int a = 255;
|
||||
if (pow < 0.5f) {
|
||||
a = 0;
|
||||
}
|
||||
|
||||
// @TODO: cant be arsed rn to implement the anaglyph3d check would be nice to check if it does - shredder
|
||||
//if (this->anaglyph3d) {
|
||||
// float rr = (r * 30 + g * 59 + b * 11) / 100;
|
||||
// float gg = (r * 30 + g * 70) / 100;
|
||||
// float bb = (r * 30 + b * 70) / 100;
|
||||
// r = rr;
|
||||
// g = gg;
|
||||
// b = bb;
|
||||
//}
|
||||
|
||||
pixels[i * 4 + 0] = r;
|
||||
pixels[i * 4 + 1] = g;
|
||||
pixels[i * 4 + 2] = b;
|
||||
pixels[i * 4 + 3] = a;
|
||||
|
||||
}
|
||||
}
|
||||
@@ -56,21 +56,4 @@ public:
|
||||
void tick();
|
||||
};
|
||||
|
||||
class FireTexture: public DynamicTexture
|
||||
{
|
||||
typedef DynamicTexture super;
|
||||
int _tick;
|
||||
int _frame;
|
||||
|
||||
float* current;
|
||||
float* next;
|
||||
float* heat;
|
||||
float* heata;
|
||||
|
||||
public:
|
||||
FireTexture();
|
||||
~FireTexture();
|
||||
|
||||
void tick();
|
||||
};
|
||||
#endif /*NET_MINECRAFT_CLIENT_RENDERER_PTEXTURE__DynamicTexture_H__*/
|
||||
|
||||
@@ -1,98 +0,0 @@
|
||||
#include "Mth.h"
|
||||
|
||||
#include "Color.h"
|
||||
#include <cassert>
|
||||
|
||||
//Creates an opaque sRGB color with the specified red, green, and blue values in the range (0.0 - 1.0).
|
||||
//Alpha is defaulted to 1.0. The actual color used in rendering depends on finding the best match given the color space
|
||||
//available for a particular output device.
|
||||
//Parameters:
|
||||
//r - the red component
|
||||
//g - the green component
|
||||
//b - the blue component
|
||||
//Throws:
|
||||
//IllegalArgumentException - if r, g or b are outside of the range 0.0 to 1.0, inclusive
|
||||
Color::Color( float r, float g, float b)
|
||||
{
|
||||
assert( r >= 0.0f && r <= 1.0f );
|
||||
assert( g >= 0.0f && g <= 1.0f );
|
||||
assert( b >= 0.0f && b <= 1.0f );
|
||||
|
||||
//argb
|
||||
colour = ( (0xFF<<24) | ( (int)(r*255)<<16 ) | ( (int)(g*255)<<8 ) | ( (int)(b*255) ) );
|
||||
}
|
||||
|
||||
Color::Color( int r, int g, int b)
|
||||
{
|
||||
colour = ( (0xFF<<24) | ( (r&0xff)<<16 ) | ( (g&0xff)<<8 ) | ( (b&0xff) ) );
|
||||
}
|
||||
|
||||
|
||||
//Creates a Color object based on the specified values for the HSB color model.
|
||||
//The s and b components should be floating-point values between zero and one (numbers in the range 0.0-1.0).
|
||||
//The h component can be any floating-point number. The floor of this number is subtracted from it to create a fraction between 0 and 1.
|
||||
//This fractional number is then multiplied by 360 to produce the hue angle in the HSB color model.
|
||||
//
|
||||
//Parameters:
|
||||
//h - the hue component
|
||||
//s - the saturation of the color
|
||||
//b - the brightness of the color
|
||||
//Returns:
|
||||
//a Color object with the specified hue, saturation, and brightness.
|
||||
Color Color::getHSBColor(float hue, float saturation, float brightness)
|
||||
{
|
||||
int r = 0, g = 0, b = 0;
|
||||
if (saturation == 0)
|
||||
{
|
||||
r = g = b = (int) (brightness * 255.0f + 0.5f);
|
||||
}
|
||||
else
|
||||
{
|
||||
float h = (hue - (float)Mth::floor(hue)) * 6.0f;
|
||||
float f = h - (float)Mth::floor(h);
|
||||
float p = brightness * (1.0f - saturation);
|
||||
float q = brightness * (1.0f - saturation * f);
|
||||
float t = brightness * (1.0f - (saturation * (1.0f - f)));
|
||||
switch ((int) h)
|
||||
{
|
||||
case 0:
|
||||
r = (int) (brightness * 255.0f + 0.5f);
|
||||
g = (int) (t * 255.0f + 0.5f);
|
||||
b = (int) (p * 255.0f + 0.5f);
|
||||
break;
|
||||
case 1:
|
||||
r = (int) (q * 255.0f + 0.5f);
|
||||
g = (int) (brightness * 255.0f + 0.5f);
|
||||
b = (int) (p * 255.0f + 0.5f);
|
||||
break;
|
||||
case 2:
|
||||
r = (int) (p * 255.0f + 0.5f);
|
||||
g = (int) (brightness * 255.0f + 0.5f);
|
||||
b = (int) (t * 255.0f + 0.5f);
|
||||
break;
|
||||
case 3:
|
||||
r = (int) (p * 255.0f + 0.5f);
|
||||
g = (int) (q * 255.0f + 0.5f);
|
||||
b = (int) (brightness * 255.0f + 0.5f);
|
||||
break;
|
||||
case 4:
|
||||
r = (int) (t * 255.0f + 0.5f);
|
||||
g = (int) (p * 255.0f + 0.5f);
|
||||
b = (int) (brightness * 255.0f + 0.5f);
|
||||
break;
|
||||
case 5:
|
||||
r = (int) (brightness * 255.0f + 0.5f);
|
||||
g = (int) (p * 255.0f + 0.5f);
|
||||
b = (int) (q * 255.0f + 0.5f);
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
return Color( r, g, b );
|
||||
}
|
||||
|
||||
int Color::getRGB()
|
||||
{
|
||||
return colour;
|
||||
}
|
||||
@@ -1,15 +0,0 @@
|
||||
#pragma once
|
||||
|
||||
class Color
|
||||
{
|
||||
private:
|
||||
int colour;
|
||||
|
||||
public:
|
||||
//Creates an opaque sRGB color with the specified red, green, and blue values in the range (0.0 - 1.0).
|
||||
Color( float r, float g, float b);
|
||||
Color( int r, int g, int b);
|
||||
|
||||
static Color getHSBColor(float h, float s, float b);
|
||||
int getRGB();
|
||||
};
|
||||
@@ -245,7 +245,6 @@ void Inventory::setupDefault() {
|
||||
addItem(new ItemInstance(Item::seeds_melon));
|
||||
addItem(new ItemInstance(Item::dye_powder, 1, DyePowderItem::WHITE));
|
||||
addItem(new ItemInstance(Item::hoe_iron));
|
||||
addItem(new ItemInstance(Item::flintAndSteel));
|
||||
#ifdef RPI
|
||||
Sel[0] = addItem(new ItemInstance(Item::sword_iron));
|
||||
#else
|
||||
|
||||
@@ -19,7 +19,7 @@ public:
|
||||
setMaxDamage(64);
|
||||
}
|
||||
|
||||
|
||||
/*
|
||||
bool useOn(ItemInstance* instance, Player* player, Level* level, int x, int y, int z, int face, float clickX, float clickY, float clickZ) {
|
||||
if (face == 0) y--;
|
||||
if (face == 1) y++;
|
||||
@@ -30,14 +30,14 @@ public:
|
||||
|
||||
int targetType = level->getTile(x, y, z);
|
||||
if (targetType == 0) {
|
||||
level->playSound(x + 0.5, y + 0.5, z + 0.5, "fire.ignite", 1, random.nextFloat() * 0.4f + 0.8f);
|
||||
level->setTile(x, y, z, ((Tile*)Tile::fire)->id);
|
||||
level->playSound(x + 0.5, y + 0.5, z + 0.5, "fire.ignite", 1, sharedRandom.nextFloat() * 0.4f + 0.8f);
|
||||
level->setTile(x, y, z, Tile::fire->id);
|
||||
}
|
||||
|
||||
instance->hurt(1);
|
||||
return true;
|
||||
}
|
||||
|
||||
*/
|
||||
};
|
||||
|
||||
#endif /*NET_MINECRAFT_WORLD_ITEM__FlintAndSteelItem_H__*/
|
||||
|
||||
@@ -1,13 +0,0 @@
|
||||
#include "FoliageColor.h"
|
||||
|
||||
// TODO: Probably move all the stuff from the header into here so it's a bit cleaner
|
||||
bool FoliageColor::useTint = true;
|
||||
|
||||
int FoliageColor::get(float temp, float rain) {
|
||||
rain *= temp;
|
||||
int x = (int) ((1 - temp) * 255);
|
||||
int y = (int) ((1 - rain) * 255);
|
||||
return pixels[y << 8 | x];
|
||||
}
|
||||
|
||||
int* FoliageColor::pixels = nullptr;
|
||||
@@ -6,16 +6,6 @@
|
||||
class FoliageColor
|
||||
{
|
||||
public:
|
||||
static bool useTint;
|
||||
|
||||
static void setUseTint(bool value) {
|
||||
useTint = value;
|
||||
}
|
||||
/*
|
||||
Shredder here, Ive converted the unused commented out code into their correct syntax, though if i did something incorrectly feel free to take reference from the
|
||||
commented out code
|
||||
*/
|
||||
|
||||
// static void init(int[] pixels) {
|
||||
// FoliageColor::pixels = pixels;
|
||||
// }
|
||||
@@ -27,13 +17,6 @@ public:
|
||||
// return pixels[y << 8 | x];
|
||||
// }
|
||||
|
||||
|
||||
static void init(int* p) {
|
||||
pixels = p;
|
||||
}
|
||||
|
||||
static int get(float temp, float rain);
|
||||
|
||||
static int getEvergreenColor() {
|
||||
return 0x619961;
|
||||
}
|
||||
@@ -43,12 +26,11 @@ public:
|
||||
}
|
||||
|
||||
static int getDefaultColor() {
|
||||
return 0xFFFFFF;
|
||||
return 0x48b518;
|
||||
}
|
||||
|
||||
private:
|
||||
//static int pixels[256*256];
|
||||
static int* pixels;
|
||||
};
|
||||
|
||||
#endif /*NET_MINECRAFT_WORLD_LEVEL__FoliageColor_H__*/
|
||||
|
||||
@@ -1,13 +0,0 @@
|
||||
#include "GrassColor.h"
|
||||
|
||||
// TODO: Probably move all the stuff from the header into here so it's a bit cleaner
|
||||
bool GrassColor::useTint = true;
|
||||
|
||||
int GrassColor::get(float temp, float rain) {
|
||||
rain *= temp;
|
||||
int x = (int) ((1 - temp) * 255);
|
||||
int y = (int) ((1 - rain) * 255);
|
||||
return pixels[y << 8 | x];
|
||||
}
|
||||
|
||||
int* GrassColor::pixels = nullptr;
|
||||
@@ -1,42 +0,0 @@
|
||||
#ifndef NET_MINECRAFT_WORLD_LEVEL__GrassColor_H__
|
||||
#define NET_MINECRAFT_WORLD_LEVEL__GrassColor_H__
|
||||
|
||||
//package net.minecraft.world.level;
|
||||
|
||||
class GrassColor
|
||||
{
|
||||
public:
|
||||
static bool useTint;
|
||||
|
||||
static void setUseTint(bool value) {
|
||||
useTint = value;
|
||||
}
|
||||
/*
|
||||
Shredder here, Ive converted the unused commented out code into their correct syntax, though if i did something incorrectly feel free to take reference from the
|
||||
commented out code
|
||||
*/
|
||||
|
||||
// static void init(int[] pixels) {
|
||||
// GrassColor::pixels = pixels;
|
||||
// }
|
||||
//
|
||||
// static int get(float temp, float rain) {
|
||||
// rain *= temp;
|
||||
// int x = (int) ((1 - temp) * 255);
|
||||
// int y = (int) ((1 - rain) * 255);
|
||||
// return pixels[y << 8 | x];
|
||||
// }
|
||||
|
||||
|
||||
static void init(int* p) {
|
||||
pixels = p;
|
||||
}
|
||||
|
||||
static int get(float temp, float rain);
|
||||
|
||||
private:
|
||||
// static int pixels[256*256];
|
||||
static int* pixels;
|
||||
};
|
||||
|
||||
#endif /*NET_MINECRAFT_WORLD_LEVEL__GrassColor_H__*/
|
||||
@@ -1176,20 +1176,10 @@ Vec3 Level::getSkyColor(Entity* source, float a) {
|
||||
if (br < 0.0f) br = 0.0f;
|
||||
if (br > 0.75f) br = 0.75f; //@note; was 1.0f
|
||||
|
||||
int xx = Mth::floor(source->x);
|
||||
int zz = Mth::floor(source->z);
|
||||
// float temp = 0.5;//(float) getBiomeSource().getTemperature(xx, zz); // unused in normal pe too, just hardcoded temp values for some reason.
|
||||
float temp = (float) getBiomeSource()->getTemperature(xx, zz);
|
||||
int skyColor;
|
||||
if (dimension->FogType == 1){ // 1 is java styled fog which should use temperatures!
|
||||
skyColor = getBiomeSource()->getBiome(xx, zz)->getSkyColor(temp);
|
||||
}
|
||||
else { // otherwise default to the normal pocket edition skycolor
|
||||
|
||||
skyColor = 0x3070ff;
|
||||
}
|
||||
|
||||
// int skyColor = 0x3070ff;//getBiomeSource().getBiome(xx, zz).getSkyColor(temp); // This is the vanilla way, add it as OPTION_SKY - shredder
|
||||
// int xx = Mth::floor(source->x);
|
||||
// int zz = Mth::floor(source->z);
|
||||
// float temp = 0.5;//(float) getBiomeSource().getTemperature(xx, zz);
|
||||
int skyColor = 0x3070ff;//getBiomeSource().getBiome(xx, zz).getSkyColor(temp);
|
||||
|
||||
float r = ((skyColor >> 16) & 0xff) / 255.0f;
|
||||
float g = ((skyColor >> 8) & 0xff) / 255.0f;
|
||||
@@ -1609,8 +1599,8 @@ bool Level::containsFireTile(const AABB& box) {
|
||||
for (int z = z0; z < z1; z++) {
|
||||
int t = getTile(x, y, z);
|
||||
|
||||
if (t == ((Tile*)(Tile::fire))->id
|
||||
|| t == Tile::lava->id
|
||||
if (/*t == ((Tile*)(Tile::fire))->id
|
||||
||*/ t == Tile::lava->id
|
||||
|| t == Tile::calmLava->id) {
|
||||
return true;
|
||||
}
|
||||
|
||||
@@ -3,9 +3,8 @@
|
||||
|
||||
//package net.minecraft.world.level;
|
||||
|
||||
|
||||
class BiomeSource;
|
||||
/*
|
||||
class BiomeSource;
|
||||
class TileEntity;
|
||||
*/
|
||||
class Material;
|
||||
@@ -30,7 +29,7 @@ public:
|
||||
virtual bool isSolidRenderTile(int x, int i, int z) = 0;
|
||||
virtual bool isSolidBlockingTile(int x, int i, int z) = 0;
|
||||
|
||||
virtual BiomeSource* getBiomeSource() = 0;
|
||||
//virtual BiomeSource* getBiomeSource() = 0;
|
||||
virtual Biome* getBiome(int x, int z) = 0;
|
||||
};
|
||||
|
||||
|
||||
@@ -4,7 +4,6 @@
|
||||
#include "tile/Tile.h"
|
||||
#include "Level.h"
|
||||
|
||||
|
||||
Region::Region(Level* level, int x1, int y1, int z1, int x2, int y2, int z2) {
|
||||
this->level = level;
|
||||
|
||||
@@ -136,6 +135,6 @@ Biome* Region::getBiome( int x, int z ) {
|
||||
return level->getBiome(x, z);
|
||||
}
|
||||
|
||||
BiomeSource* Region::getBiomeSource() {
|
||||
return level->getBiomeSource();
|
||||
}
|
||||
//BiomeSource getBiomeSource() {
|
||||
// return level.getBiomeSource();
|
||||
//}
|
||||
|
||||
@@ -5,7 +5,6 @@
|
||||
|
||||
#include "LevelSource.h"
|
||||
|
||||
|
||||
class Level;
|
||||
class Material;
|
||||
class LevelChunk;
|
||||
@@ -28,7 +27,6 @@ public:
|
||||
int getData(int x, int y, int z);
|
||||
const Material* getMaterial(int x, int y, int z);
|
||||
Biome* getBiome(int x, int z);
|
||||
BiomeSource* getBiomeSource() override;
|
||||
private:
|
||||
int xc1, zc1;
|
||||
LevelChunk*** chunks;
|
||||
|
||||
@@ -2,14 +2,11 @@
|
||||
|
||||
#include "../levelgen/feature/TreeFeature.h"
|
||||
#include "../levelgen/feature/TallgrassFeature.h"
|
||||
#include "../levelgen/feature/BasicTree.h"
|
||||
|
||||
#include "../../entity/EntityTypes.h"
|
||||
#include "../../entity/MobCategory.h"
|
||||
#include "../../level/tile/TallGrass.h"
|
||||
|
||||
#include "../../../util/Color.h"
|
||||
|
||||
Biome* Biome::rainForest = NULL;
|
||||
Biome* Biome::swampland = NULL;
|
||||
Biome* Biome::seasonalForest = NULL;
|
||||
@@ -143,7 +140,7 @@ void Biome::teardownBiomes() {
|
||||
Feature* Biome::getTreeFeature( Random* random )
|
||||
{
|
||||
if (random->nextInt(10) == 0) {
|
||||
return new BasicTree(false);
|
||||
//return /*new*/ BasicTree();
|
||||
}
|
||||
return new TreeFeature(false);
|
||||
}
|
||||
@@ -151,9 +148,6 @@ Feature* Biome::getGrassFeature( Random* random ) {
|
||||
return new TallgrassFeature(Tile::tallgrass->id, TallGrass::TALL_GRASS);
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
||||
Biome* Biome::getBiome( float temperature, float downfall )
|
||||
{
|
||||
int a = (int) (temperature * 63);
|
||||
@@ -210,11 +204,11 @@ float Biome::adjustDepth( float depth )
|
||||
|
||||
int Biome::getSkyColor( float temp )
|
||||
{
|
||||
temp /= 3.f;
|
||||
if (temp < -1) temp = -1;
|
||||
if (temp > 1) temp = 1;
|
||||
// return 0x80808080;This is the vanilla way, add it as OPTION_SKY or leave it like this bcus this function literally never gets used anyways if level has vanilla sky color - shredder
|
||||
return Color::getHSBColor(224 / 360.0f - temp * 0.05f, 0.50f + temp * 0.1f, 1.0f).getRGB();
|
||||
// temp /= 3.f;
|
||||
// if (temp < -1) temp = -1;
|
||||
// if (temp > 1) temp = 1;
|
||||
return 0x80808080;
|
||||
//return Color.getHSBColor(224 / 360.0f - temp * 0.05f, 0.50f + temp * 0.1f, 1.0f).getRGB();
|
||||
}
|
||||
|
||||
Biome::MobList& Biome::getMobs(const MobCategory& category)
|
||||
|
||||
@@ -69,11 +69,11 @@ Biome* BiomeSource::getBiome( int x, int z )
|
||||
return getBiomeBlock(x, z, 1, 1)[0];
|
||||
}
|
||||
|
||||
float BiomeSource::getTemperature( int x, int z )
|
||||
{
|
||||
temperatures = temperatureMap->getRegion(temperatures, x, z, 1, 1, tempScale, tempScale, 0.5f);
|
||||
return temperatures[0];
|
||||
}
|
||||
//float BiomeSource::getTemperature( int x, int z )
|
||||
//{
|
||||
// temperatures = temperatureMap->getRegion(temperatures, x, z, 1, 1, tempScale, tempScale, 0.5f);
|
||||
// return temperatures[0];
|
||||
//}
|
||||
|
||||
Biome** BiomeSource::getBiomeBlock( int x, int z, int w, int h )
|
||||
{
|
||||
@@ -123,7 +123,7 @@ Biome** BiomeSource::getBiomeBlock( Biome** biomes__, int x, int z, int w, int h
|
||||
return biomes;
|
||||
}
|
||||
|
||||
float* BiomeSource::getTemperatureBlock( float* temperatures__, int x, int z, int w, int h )
|
||||
float* BiomeSource::getTemperatureBlock( /*float* temperatures__, */int x, int z, int w, int h )
|
||||
{
|
||||
//LOGI("gTempBlock: 1\n");
|
||||
//const int size = w * h;
|
||||
@@ -164,8 +164,8 @@ float* BiomeSource::getTemperatureBlock( float* temperatures__, int x, int z, in
|
||||
return temperatures;
|
||||
}
|
||||
|
||||
float* BiomeSource::getDownfallBlock( float* downfalls__, int x, int z, int w, int h )
|
||||
{
|
||||
//float* BiomeSource::getDownfallBlock( /*float* downfalls__,*/ int x, int z, int w, int h )
|
||||
//{
|
||||
// //const int size = w * h;
|
||||
// //if (lenDownfalls < size) {
|
||||
// // delete[] downfalls;
|
||||
@@ -173,6 +173,6 @@ float* BiomeSource::getDownfallBlock( float* downfalls__, int x, int z, int w, i
|
||||
// // lenDownfalls = size;
|
||||
// //}
|
||||
//
|
||||
downfalls = downfallMap->getRegion(downfalls, x, z, w, w, downfallScale, downfallScale, 0.5f);
|
||||
return downfalls;
|
||||
}
|
||||
// downfalls = downfallMap->getRegion(downfalls, x, z, w, w, downfallScale, downfallScale, 0.5f);
|
||||
// return downfalls;
|
||||
//}
|
||||
|
||||
@@ -31,13 +31,13 @@ public:
|
||||
virtual Biome* getBiome(const ChunkPos& chunk);
|
||||
virtual Biome* getBiome(int x, int z);
|
||||
|
||||
virtual float getTemperature(int x, int z);
|
||||
//virtual float getTemperature(int x, int z);
|
||||
|
||||
// Note: The arrays returned here are temporary in the meaning that their
|
||||
// contents might change in the future. If you need to SAVE the
|
||||
// values, do a shallow copy to an array of your own.
|
||||
virtual float* getTemperatureBlock(float* temperatures, int x, int z, int w, int h);
|
||||
virtual float* getDownfallBlock(float* downfalls, int x, int z, int w, int h);
|
||||
virtual float* getTemperatureBlock(/*float* temperatures, */ int x, int z, int w, int h);
|
||||
//virtual float* getDownfallBlock(/*float* downfalls, */int x, int z, int w, int h);
|
||||
virtual Biome** getBiomeBlock(int x, int z, int w, int h);
|
||||
|
||||
private:
|
||||
|
||||
@@ -6,7 +6,6 @@
|
||||
#include "Biome.h"
|
||||
#include "../levelgen/feature/TreeFeature.h"
|
||||
#include "../levelgen/feature/BirchFeature.h"
|
||||
#include "../levelgen/feature/BasicTree.h"
|
||||
|
||||
class ForestBiome: public Biome
|
||||
{
|
||||
@@ -16,7 +15,7 @@ public:
|
||||
return new BirchFeature();
|
||||
}
|
||||
if (random->nextInt(3) == 0) {
|
||||
return new BasicTree(false);
|
||||
//return new BasicTree();
|
||||
}
|
||||
return new TreeFeature(false);
|
||||
}
|
||||
|
||||
@@ -6,14 +6,13 @@
|
||||
#include "Biome.h"
|
||||
#include "../../../util/Random.h"
|
||||
#include "../levelgen/feature/TreeFeature.h"
|
||||
#include "../levelgen/feature/BasicTree.h"
|
||||
|
||||
class RainforestBiome: public Biome
|
||||
{
|
||||
public:
|
||||
Feature* getTreeFeature(Random* random) {
|
||||
if (random->nextInt(3) == 0) {
|
||||
return new BasicTree(false);
|
||||
//return new BasicTree();
|
||||
}
|
||||
return new TreeFeature(false);
|
||||
}
|
||||
|
||||
@@ -262,14 +262,14 @@ void LevelChunk::recalcHeight(int x, int yStart, int z) {
|
||||
|
||||
/*public*/
|
||||
void LevelChunk::skyBrightnessChanged() {
|
||||
int x0 = xt;
|
||||
int y0 = this->minHeight - 16;
|
||||
int z0 = zt;
|
||||
int x1 = xt + 16;
|
||||
int y1 = Level::DEPTH - 1;
|
||||
int z1 = zt + 16;
|
||||
// int x0 = xt;
|
||||
// int y0 = this->minHeight - 16;
|
||||
// int z0 = zt;
|
||||
// int x1 = xt + 16;
|
||||
// int y1 = Level::DEPTH - 1;
|
||||
// int z1 = zt + 16;
|
||||
|
||||
level->setTilesDirty(x0, y0, z0, x1, y1, z1);
|
||||
//level->setTilesDirty(x0, y0, z0, x1, y1, z1);
|
||||
}
|
||||
|
||||
/*public*/
|
||||
|
||||
@@ -15,8 +15,7 @@ Dimension::Dimension()
|
||||
ultraWarm(false),
|
||||
hasCeiling(false),
|
||||
biomeSource(NULL),
|
||||
id(0),
|
||||
fogColor(0x80daff)
|
||||
id(0)
|
||||
{
|
||||
}
|
||||
|
||||
@@ -94,18 +93,6 @@ float* Dimension::getSunriseColor( float td, float a )
|
||||
|
||||
Vec3 Dimension::getFogColor( float td, float a )
|
||||
{
|
||||
if (FogType == 1)
|
||||
{
|
||||
fogColor = 0xc0d8ff; // 1 returns java beta styled fog color.
|
||||
}
|
||||
else if (FogType == 2)
|
||||
{
|
||||
fogColor = 0x406fe5; // 2 returns some type of unused fog color IDK what this one was used for possibly early pe??
|
||||
}
|
||||
else // otherwise as default we return the mcpe fog color
|
||||
{
|
||||
fogColor = 0x80daff;
|
||||
}
|
||||
float br = Mth::cos(td * Mth::PI * 2) * 2 + 0.5f;
|
||||
if (br < 0.0f) br = 0.0f;
|
||||
if (br > 1.0f) br = 1.0f;
|
||||
@@ -117,8 +104,7 @@ Vec3 Dimension::getFogColor( float td, float a )
|
||||
g *= br * 0.94f + 0.06f;
|
||||
b *= br * 0.91f + 0.09f;
|
||||
return Vec3(r, g, b);
|
||||
|
||||
//
|
||||
//return Vec3(0.752941f, 0.847059f, 1);
|
||||
}
|
||||
|
||||
bool Dimension::mayRespawn()
|
||||
|
||||
@@ -49,11 +49,8 @@ public:
|
||||
bool hasCeiling;
|
||||
float brightnessRamp[16];//Level::MAX_BRIGHTNESS + 1];
|
||||
int id;
|
||||
|
||||
// shredder added
|
||||
int FogType; // lets us choose between what fog we want ig
|
||||
protected:
|
||||
long fogColor; //= 0x80daff;//0x406fe5;//0xc0d8ff;
|
||||
static const long fogColor = 0x80daff;//0x406fe5;//0xc0d8ff;
|
||||
float sunriseCol[4];
|
||||
};
|
||||
|
||||
|
||||
@@ -9,7 +9,6 @@
|
||||
|
||||
class NormalDayCycleDimension: public Dimension {
|
||||
public:
|
||||
|
||||
float getTimeOfDay(long time, float a) {
|
||||
int dayStep = (int) (time % Level::TICKS_PER_DAY);
|
||||
float td = (dayStep + a) / Level::TICKS_PER_DAY - 0.25f;
|
||||
@@ -21,18 +20,6 @@ public:
|
||||
}
|
||||
|
||||
Vec3 getFogColor( float td, float a ) {
|
||||
if (FogType == 1)
|
||||
{
|
||||
fogColor = 0xc0d8ff; // 1 returns java beta styled fog color.
|
||||
}
|
||||
else if (FogType == 2)
|
||||
{
|
||||
fogColor = 0x406fe5; // 2 returns some type of unused fog color IDK what this one was used for possibly early pe??
|
||||
}
|
||||
else // otherwise as default we return the mcpe fog color
|
||||
{
|
||||
fogColor = 0x80daff;
|
||||
}
|
||||
float br = cos(td * Mth::PI * 2) * 2 + 0.5f;
|
||||
if (br < 0) br = 0;
|
||||
if (br > 1.f) br = 1.f;
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
|
||||
#if 0
|
||||
|
||||
#include "CanyonFeature.h"
|
||||
|
||||
@@ -138,7 +138,7 @@ void CanyonFeature::addTunnel( int xOffs, int zOffs, unsigned char* blocks, floa
|
||||
}
|
||||
}
|
||||
|
||||
void CanyonFeature::addFeature(Level* level, int x, int z, int xOffs, int zOffs,unsigned char* blocks)
|
||||
void CanyonFeature::addFeature( Level level, int x, int z, int xOffs, int zOffs, char* blocks )
|
||||
{
|
||||
if (random.nextInt(15) != 0) return;
|
||||
|
||||
@@ -151,7 +151,6 @@ void CanyonFeature::addFeature(Level* level, int x, int z, int xOffs, int zOffs,
|
||||
float thickness = (random.nextFloat() * 2 + random.nextFloat()) + 1;
|
||||
|
||||
addTunnel(xOffs, zOffs, blocks, xCave, yCave, zCave, thickness, yRot, xRot, 0, 0, 5.0);
|
||||
|
||||
}
|
||||
|
||||
/* //private
|
||||
@@ -166,4 +165,4 @@ void CanyonFeature::addFeature(Level* level, int x, int z, int xOffs, int zOffs,
|
||||
for (int z = zOffs - r; z <= zOffs + r; z++) {
|
||||
random.setSeed((x * xScale + z * zScale) ^ level.seed);*/
|
||||
|
||||
|
||||
#endif
|
||||
|
||||
@@ -1,7 +1,7 @@
|
||||
#ifndef NET_MINECRAFT_WORLD_LEVEL_LEVELGEN__CanyonFeature_H__
|
||||
#define NET_MINECRAFT_WORLD_LEVEL_LEVELGEN__CanyonFeature_H__
|
||||
|
||||
|
||||
#if 0
|
||||
|
||||
//package net.minecraft.world.level.levelgen;
|
||||
|
||||
@@ -12,8 +12,8 @@ class CanyonFeature: public LargeFeature {
|
||||
/*protected*/
|
||||
void addTunnel(int xOffs, int zOffs, unsigned char* blocks, float xCave, float yCave, float zCave, float thickness, float yRot, float xRot, int step, int dist, float yScale);
|
||||
/*protected*/
|
||||
void addFeature(Level* level, int x, int z, int xOffs, int zOffs,unsigned char* blocks);
|
||||
void addFeature(Level level, int x, int z, int xOffs, int zOffs, char* blocks);
|
||||
};
|
||||
|
||||
|
||||
#endif
|
||||
#endif /*NET_MINECRAFT_WORLD_LEVEL_LEVELGEN__CanyonFeature_H__*/
|
||||
|
||||
@@ -370,18 +370,6 @@ void RandomLevelSource::postProcess(ChunkSource* parent, int xt, int zt) {
|
||||
}
|
||||
//printf("placing tree at %d, %d, %d\n", x, y, z);
|
||||
}
|
||||
// for (int i = 0; i < forests; i++) {
|
||||
// int x = xo + random.nextInt(16) + 8;
|
||||
// int z = zo + random.nextInt(16) + 8;
|
||||
//int y = level->getHeightmap(x, z);
|
||||
// Feature* tree = biome->getBasicTreeFeature(&random);
|
||||
//if (tree) {
|
||||
// tree->init(1, 1, 1);
|
||||
// tree->place(level, &random, x, y, z);
|
||||
// delete tree;
|
||||
//}
|
||||
////printf("placing tree at %d, %d, %d\n", x, y, z);
|
||||
// }
|
||||
|
||||
for (int i = 0; i < 2; i++) {
|
||||
int x = xo + random.nextInt(16) + 8;
|
||||
@@ -473,7 +461,7 @@ void RandomLevelSource::postProcess(ChunkSource* parent, int xt, int zt) {
|
||||
MobSpawner::postProcessSpawnMobs(level, biome, xo + 8, zo + 8, 16, 16, &random);
|
||||
|
||||
//LOGI("Reading temp: 1\n");
|
||||
float* temperatures = level->getBiomeSource()->getTemperatureBlock(NULL, xo + 8, zo + 8, 16, 16);
|
||||
float* temperatures = level->getBiomeSource()->getTemperatureBlock(/*NULL,*/ xo + 8, zo + 8, 16, 16);
|
||||
for (int x = xo + 8; x < xo + 8 + 16; x++)
|
||||
for (int z = zo + 8; z < zo + 8 + 16; z++) {
|
||||
int xp = x - (xo + 8);
|
||||
|
||||
@@ -1,446 +0,0 @@
|
||||
#ifndef NET_MINECRAFT_WORLD_LEVEL_LEVELGEN_FEATURE__BasicTree_H__
|
||||
#define NET_MINECRAFT_WORLD_LEVEL_LEVELGEN_FEATURE__BasicTree_H__
|
||||
|
||||
//package net.minecraft.world.level.levelgen.feature;
|
||||
|
||||
#include "Feature.h"
|
||||
|
||||
#include "../../../../util/Random.h"
|
||||
#include "../../Level.h"
|
||||
|
||||
#include "../../tile/TreeTile.h"
|
||||
|
||||
class Level;
|
||||
|
||||
class BasicTree : public Feature
|
||||
{
|
||||
typedef Feature super;
|
||||
private:
|
||||
|
||||
|
||||
|
||||
unsigned char axisConversionArray[6];
|
||||
Random *rnd;
|
||||
Level *thisLevel;
|
||||
int origin[3];
|
||||
int height;
|
||||
int trunkHeight;
|
||||
double trunkHeightScale;
|
||||
double branchDensity;
|
||||
double branchSlope;
|
||||
double widthScale;
|
||||
double foliageDensity;
|
||||
int trunkWidth;
|
||||
int heightVariance;
|
||||
int foliageHeight;
|
||||
int **foliageCoords;
|
||||
int foliageCoordsLength;
|
||||
void prepare(){
|
||||
trunkHeight = (int) (height * trunkHeightScale);
|
||||
if (trunkHeight >= height) trunkHeight = height - 1;
|
||||
int clustersPerY = (int) (1.382 + pow(foliageDensity * height / 13.0, 2));
|
||||
if (clustersPerY < 1) clustersPerY = 1;
|
||||
int **tempFoliageCoords = new int *[clustersPerY * height];
|
||||
for( int i = 0; i < clustersPerY * height; i++ )
|
||||
{
|
||||
tempFoliageCoords[i] = new int[4];
|
||||
}
|
||||
int y = origin[1] + height - foliageHeight;
|
||||
int clusterCount = 1;
|
||||
int trunkTop = origin[1] + trunkHeight;
|
||||
int relativeY = y - origin[1];
|
||||
|
||||
tempFoliageCoords[0][0] = origin[0];
|
||||
tempFoliageCoords[0][1] = y;
|
||||
tempFoliageCoords[0][2] = origin[2];
|
||||
tempFoliageCoords[0][3] = trunkTop;
|
||||
y--;
|
||||
|
||||
while (relativeY >= 0)
|
||||
{
|
||||
int num = 0;
|
||||
|
||||
float shapefac = treeShape(relativeY);
|
||||
if (shapefac < 0)
|
||||
{
|
||||
y--;
|
||||
relativeY--;
|
||||
continue;
|
||||
}
|
||||
|
||||
double originOffset = 0.5;
|
||||
while (num < clustersPerY)
|
||||
{
|
||||
double radius = widthScale * (shapefac * (rnd->nextFloat() + 0.328));
|
||||
double angle = rnd->nextFloat() * 2.0 * 3.14159;
|
||||
int x = Mth::floor(radius * sin(angle) + origin[0] + originOffset);
|
||||
int z = Mth::floor(radius * cos(angle) + origin[2] + originOffset);
|
||||
int checkStart[] = { x, y, z };
|
||||
int checkEnd[] = { x, y + foliageHeight, z };
|
||||
if (checkLine(checkStart, checkEnd) == -1) {
|
||||
int checkBranchBase[] = { origin[0], origin[1], origin[2] };
|
||||
double distance = sqrt(pow(abs(origin[0] - checkStart[0]), 2.0) + pow(abs(origin[2] - checkStart[2]), 2.0));
|
||||
double branchHeight = distance * branchSlope;
|
||||
if ((checkStart[1] - branchHeight) > trunkTop)
|
||||
{
|
||||
checkBranchBase[1] = trunkTop;
|
||||
}
|
||||
else
|
||||
{
|
||||
checkBranchBase[1] = (int) (checkStart[1] - branchHeight);
|
||||
}
|
||||
if (checkLine(checkBranchBase, checkStart) == -1)
|
||||
{
|
||||
tempFoliageCoords[clusterCount][0] = x;
|
||||
tempFoliageCoords[clusterCount][1] = y;
|
||||
tempFoliageCoords[clusterCount][2] = z;
|
||||
tempFoliageCoords[clusterCount][3] = checkBranchBase[1];
|
||||
clusterCount++;
|
||||
}
|
||||
}
|
||||
num++;
|
||||
}
|
||||
y--;
|
||||
relativeY--;
|
||||
}
|
||||
|
||||
foliageCoordsLength = clusterCount;
|
||||
foliageCoords = tempFoliageCoords;
|
||||
|
||||
for( int i = clusterCount; i < clustersPerY * height; i++ )
|
||||
{
|
||||
delete [] tempFoliageCoords[i];
|
||||
tempFoliageCoords[i] = NULL;
|
||||
}
|
||||
|
||||
|
||||
}
|
||||
|
||||
void crossection(int x, int y, int z, float radius, unsigned char direction, int material)
|
||||
{
|
||||
|
||||
int rad = (int) (radius + 0.618);
|
||||
unsigned char secidx1 = axisConversionArray[direction];
|
||||
unsigned char secidx2 = axisConversionArray[direction + 3];
|
||||
int center[] = { x, y, z };
|
||||
int position[] = { 0, 0, 0 };
|
||||
int offset1 = -rad;
|
||||
int offset2 = -rad;
|
||||
int thismat;
|
||||
position[direction] = center[direction];
|
||||
while (offset1 <= rad)
|
||||
{
|
||||
position[secidx1] = center[secidx1] + offset1;
|
||||
offset2 = -rad;
|
||||
while (offset2 <= rad)
|
||||
{
|
||||
double thisdistance = pow(abs(offset1) + 0.5, 2) + pow(abs(offset2) + 0.5, 2);
|
||||
if (thisdistance > radius * radius)
|
||||
{
|
||||
offset2++;
|
||||
continue;
|
||||
}
|
||||
position[secidx2] = center[secidx2] + offset2;
|
||||
|
||||
thismat = thisLevel->getTile(position[0], position[1], position[2]);
|
||||
|
||||
if (!((thismat == 0) || (thismat == Tile::leaves->id)))
|
||||
{
|
||||
offset2++;
|
||||
continue;
|
||||
}
|
||||
|
||||
placeBlock(thisLevel, position[0], position[1], position[2], material, 0);
|
||||
|
||||
offset2++;
|
||||
}
|
||||
offset1++;
|
||||
}
|
||||
|
||||
}
|
||||
float treeShape(int y){
|
||||
if (y < (((float) height) * 0.3)) return (float) -1.618;
|
||||
float radius = ((float) height) / ((float) 2.0);
|
||||
float adjacent = (((float) height) / ((float) 2.0)) - y;
|
||||
float distance;
|
||||
if (adjacent == 0) distance = radius;
|
||||
else if (abs(adjacent) >= radius) distance = (float) 0.0;
|
||||
else distance = (float) sqrt(pow(abs(radius), 2) - pow(abs(adjacent), 2));
|
||||
distance *= (float) 0.5;
|
||||
return distance;
|
||||
}
|
||||
float foliageShape(int y){
|
||||
if ((y < 0) || (y >= foliageHeight)) return (float) -1;
|
||||
else if ((y == 0) || (y == (foliageHeight - 1))) return (float) 2;
|
||||
else return (float) 3;
|
||||
}
|
||||
void foliageCluster(int x, int y, int z){
|
||||
|
||||
int topy = y + foliageHeight;
|
||||
int cury = topy - 1;
|
||||
float radius;
|
||||
while (cury >= y)
|
||||
{
|
||||
radius = foliageShape(cury - y);
|
||||
crossection(x, cury, z, radius, (unsigned char) 1, Tile::leaves->id);
|
||||
cury--;
|
||||
}
|
||||
|
||||
}
|
||||
void limb(int *start, int *end, int material)
|
||||
{
|
||||
int delta[] = { 0, 0, 0 };
|
||||
unsigned char idx = 0;
|
||||
unsigned char primidx = 0;
|
||||
while (idx < 3)
|
||||
{
|
||||
delta[idx] = end[idx] - start[idx];
|
||||
if (abs(delta[idx]) > abs(delta[primidx]))
|
||||
{
|
||||
primidx = idx;
|
||||
}
|
||||
idx++;
|
||||
}
|
||||
if (delta[primidx] == 0) return;
|
||||
unsigned char secidx1 = axisConversionArray[primidx];
|
||||
unsigned char secidx2 = axisConversionArray[primidx + 3];
|
||||
char primsign;
|
||||
if (delta[primidx] > 0) primsign = 1;
|
||||
else primsign = -1;
|
||||
double secfac1 = ((double) delta[secidx1]) / ((double) delta[primidx]);
|
||||
double secfac2 = ((double) delta[secidx2]) / ((double) delta[primidx]);
|
||||
int coordinate[] = { 0, 0, 0 };
|
||||
int primoffset = 0;
|
||||
int endoffset = delta[primidx] + primsign;
|
||||
while (primoffset != endoffset)
|
||||
{
|
||||
coordinate[primidx] = Mth::floor(start[primidx] + primoffset + 0.5);
|
||||
coordinate[secidx1] = Mth::floor(start[secidx1] + (primoffset * secfac1) + 0.5);
|
||||
coordinate[secidx2] = Mth::floor(start[secidx2] + (primoffset * secfac2) + 0.5);
|
||||
|
||||
int dir = 0;
|
||||
int xdiff = abs(coordinate[0] - start[0]);
|
||||
int zdiff = abs(coordinate[2] - start[2]);
|
||||
int maxdiff = (std::max)(xdiff, zdiff);
|
||||
|
||||
if (maxdiff > 0)
|
||||
{
|
||||
if (xdiff == maxdiff)
|
||||
{
|
||||
dir = 0;
|
||||
}
|
||||
else if (zdiff == maxdiff)
|
||||
{
|
||||
dir = 0;
|
||||
}
|
||||
}
|
||||
placeBlock(thisLevel, coordinate[0], coordinate[1], coordinate[2], material, dir);
|
||||
primoffset += primsign;
|
||||
}
|
||||
}
|
||||
void makeFoliage(){
|
||||
int idx = 0;
|
||||
int finish = foliageCoordsLength;
|
||||
while (idx < finish)
|
||||
{
|
||||
int x = foliageCoords[idx][0];
|
||||
int y = foliageCoords[idx][1];
|
||||
int z = foliageCoords[idx][2];
|
||||
foliageCluster(x, y, z);
|
||||
idx++;
|
||||
}
|
||||
}
|
||||
bool trimBranches(int localY){
|
||||
if (localY < (height * 0.2)) return false;
|
||||
else return true;
|
||||
}
|
||||
void makeTrunk(){
|
||||
int x = origin[0];
|
||||
int startY = origin[1];
|
||||
int topY = origin[1] + trunkHeight;
|
||||
int z = origin[2];
|
||||
int startCoord[] = { x, startY, z };
|
||||
int endCoord[] = { x, topY, z };
|
||||
limb(startCoord, endCoord, Tile::treeTrunk->id);
|
||||
if (trunkWidth == 2)
|
||||
{
|
||||
startCoord[0] += 1;
|
||||
endCoord[0] += 1;
|
||||
limb(startCoord, endCoord, Tile::treeTrunk->id);
|
||||
startCoord[2] += 1;
|
||||
endCoord[2] += 1;
|
||||
limb(startCoord, endCoord, Tile::treeTrunk->id);
|
||||
startCoord[0] += -1;
|
||||
endCoord[0] += -1;
|
||||
limb(startCoord, endCoord, Tile::treeTrunk->id);
|
||||
}
|
||||
}
|
||||
void makeBranches(){
|
||||
int idx = 0;
|
||||
int finish = foliageCoordsLength;
|
||||
int baseCoord[] = { origin[0], origin[1], origin[2] };
|
||||
while (idx < finish)
|
||||
{
|
||||
int *coordValues = foliageCoords[idx];
|
||||
int endCoord[] = { coordValues[0], coordValues[1], coordValues[2] };
|
||||
baseCoord[1] = coordValues[3];
|
||||
int localY = baseCoord[1] - origin[1];
|
||||
if (trimBranches(localY))
|
||||
{
|
||||
limb(baseCoord, endCoord, Tile::treeTrunk->id);
|
||||
}
|
||||
idx++;
|
||||
}
|
||||
}
|
||||
int checkLine(int *start, int *end){
|
||||
|
||||
int delta[] = { 0, 0, 0 };
|
||||
unsigned char idx = 0;
|
||||
unsigned char primidx = 0;
|
||||
while (idx < 3)
|
||||
{
|
||||
delta[idx] = end[idx] - start[idx];
|
||||
if (abs(delta[idx]) > abs(delta[primidx]))
|
||||
{
|
||||
primidx = idx;
|
||||
}
|
||||
idx++;
|
||||
}
|
||||
if (delta[primidx] == 0) return -1;
|
||||
unsigned char secidx1 = axisConversionArray[primidx];
|
||||
unsigned char secidx2 = axisConversionArray[primidx + 3];
|
||||
char primsign;
|
||||
if (delta[primidx] > 0) primsign = 1;
|
||||
else primsign = -1;
|
||||
double secfac1 = ((double) delta[secidx1]) / ((double) delta[primidx]);
|
||||
double secfac2 = ((double) delta[secidx2]) / ((double) delta[primidx]);
|
||||
int coordinate[] = { 0, 0, 0 };
|
||||
int primoffset = 0;
|
||||
int endoffset = delta[primidx] + primsign;
|
||||
int thismat;
|
||||
while (primoffset != endoffset)
|
||||
{
|
||||
coordinate[primidx] = start[primidx] + primoffset;
|
||||
coordinate[secidx1] = Mth::floor(start[secidx1] + (primoffset * secfac1));
|
||||
coordinate[secidx2] = Mth::floor(start[secidx2] + (primoffset * secfac2));
|
||||
thismat = thisLevel->getTile(coordinate[0], coordinate[1], coordinate[2]);
|
||||
if (!((thismat == 0) || (thismat == Tile::leaves->id)))
|
||||
{
|
||||
|
||||
break;
|
||||
}
|
||||
primoffset += primsign;
|
||||
}
|
||||
|
||||
if (primoffset == endoffset)
|
||||
{
|
||||
return -1;
|
||||
}
|
||||
|
||||
else
|
||||
{
|
||||
return abs(primoffset);
|
||||
}
|
||||
}
|
||||
bool checkLocation(){
|
||||
|
||||
int startPosition[] = { origin[0], origin[1], origin[2] };
|
||||
int endPosition[] = { origin[0], origin[1] + height - 1, origin[2] };
|
||||
|
||||
|
||||
int baseMaterial = thisLevel->getTile(origin[0], origin[1] - 1, origin[2]);
|
||||
if (!((baseMaterial == 2) || (baseMaterial == 3)))
|
||||
{
|
||||
return false;
|
||||
}
|
||||
int allowedHeight = checkLine(startPosition, endPosition);
|
||||
if (allowedHeight == -1)
|
||||
{
|
||||
return true;
|
||||
}
|
||||
|
||||
else if (allowedHeight < 6)
|
||||
{
|
||||
return false;
|
||||
}
|
||||
else
|
||||
{
|
||||
height = allowedHeight;
|
||||
return true;
|
||||
}
|
||||
}
|
||||
|
||||
public:
|
||||
BasicTree(bool doUpdate){
|
||||
axisConversionArray[0] = 2;
|
||||
axisConversionArray[1] = 0;
|
||||
axisConversionArray[2] = 0;
|
||||
axisConversionArray[3] = 1;
|
||||
axisConversionArray[4] = 2;
|
||||
axisConversionArray[5] = 1;
|
||||
rnd = new Random();
|
||||
origin[0] = 0;
|
||||
origin[1] = 0;
|
||||
origin[2] = 0;
|
||||
height = 0;
|
||||
trunkHeight = 0;
|
||||
trunkHeightScale = 0.618;
|
||||
branchDensity = 1.0;
|
||||
branchSlope = 0.381;
|
||||
widthScale = 1.0;
|
||||
foliageDensity = 1.0;
|
||||
trunkWidth = 1;
|
||||
heightVariance = 12;
|
||||
foliageHeight = 4;
|
||||
foliageCoords = NULL;
|
||||
foliageCoordsLength = 0;
|
||||
}
|
||||
virtual ~BasicTree(){
|
||||
delete rnd;
|
||||
|
||||
for( int i = 0; i < foliageCoordsLength; i++ )
|
||||
{
|
||||
delete [] foliageCoords[i];
|
||||
}
|
||||
delete [] foliageCoords;
|
||||
}
|
||||
|
||||
virtual void init(double heightInit, double widthInit, double foliageDensityInit){
|
||||
|
||||
heightVariance = (int) (heightInit * 12);
|
||||
if (heightInit > 0.5) foliageHeight = 5;
|
||||
widthScale = widthInit;
|
||||
foliageDensity = foliageDensityInit;
|
||||
}
|
||||
virtual bool place(Level *level, Random *random, int x, int y, int z){
|
||||
|
||||
thisLevel = level;
|
||||
int seed = random->nextLong();
|
||||
rnd->setSeed(seed);
|
||||
origin[0] = x;
|
||||
origin[1] = y;
|
||||
origin[2] = z;
|
||||
if (height == 0)
|
||||
{
|
||||
height = 5 + rnd->nextInt(heightVariance);
|
||||
}
|
||||
if (!(checkLocation()))
|
||||
{
|
||||
|
||||
return false;
|
||||
}
|
||||
|
||||
|
||||
|
||||
prepare();
|
||||
|
||||
makeFoliage();
|
||||
|
||||
makeTrunk();
|
||||
|
||||
makeBranches();
|
||||
|
||||
return true;
|
||||
}
|
||||
};
|
||||
#endif /*NET_MINECRAFT_WORLD_LEVEL_LEVELGEN_FEATURE__BasicTree_H__*/
|
||||
@@ -38,7 +38,7 @@ public:
|
||||
setFlammable(Tile::tnt->id, FLAME_MEDIUM, BURN_INSTANT);
|
||||
setFlammable(Tile::cloth->id, FLAME_EASY, BURN_EASY);
|
||||
|
||||
setTicking(true); //@fire
|
||||
//setTicking(true); //@fire
|
||||
}
|
||||
|
||||
AABB* getAABB(Level* level, int x, int y, int z) {
|
||||
@@ -70,9 +70,9 @@ public:
|
||||
}
|
||||
|
||||
void tick(Level* level, int x, int y, int z, Random* random) {
|
||||
return; //@fire
|
||||
|
||||
|
||||
bool infiniBurn = level->getTile(x, y - 1, z) == Tile::netherrack->id;
|
||||
bool infiniBurn = false;//level->getTile(x, y - 1, z) == Tile::hellRock->id;
|
||||
|
||||
int age = level->getData(x, y, z);
|
||||
if (age < 15) {
|
||||
@@ -148,6 +148,7 @@ public:
|
||||
}
|
||||
|
||||
void neighborChanged(Level* level, int x, int y, int z, int type) {
|
||||
return; //@fire
|
||||
if (!level->isSolidBlockingTile(x, y - 1, z) && !isValidFireLocation(level, x, y, z)) {
|
||||
level->setTile(x, y, z, 0);
|
||||
return;
|
||||
@@ -155,6 +156,7 @@ public:
|
||||
}
|
||||
|
||||
void onPlace(Level* level, int x, int y, int z) {
|
||||
return; //@fire
|
||||
if (!level->isSolidBlockingTile(x, y - 1, z) && !isValidFireLocation(level, x, y, z)) {
|
||||
level->setTile(x, y, z, 0);
|
||||
return;
|
||||
@@ -167,6 +169,7 @@ public:
|
||||
}
|
||||
|
||||
void ignite(Level* level, int x, int y, int z) {
|
||||
return; //@fire
|
||||
|
||||
bool lit = false;
|
||||
if (!lit) lit = tryIgnite(level, x, y + 1, z);
|
||||
@@ -181,10 +184,11 @@ public:
|
||||
}
|
||||
|
||||
void animateTick(Level* level, int x, int y, int z, Random* random) {
|
||||
return; //@fire
|
||||
|
||||
if (random->nextInt(24) == 0) {
|
||||
level->playSound(x + 0.5f, y + 0.5f, z + 0.5f, "fire.fire", 1 + random->nextFloat(), random->nextFloat() * 0.7f + 0.3f);
|
||||
}
|
||||
//if (random.nextInt(24) == 0) {
|
||||
// level->playSound(x + 0.5f, y + 0.5f, z + 0.5f, "fire.fire", 1 + random.nextFloat(), random.nextFloat() * 0.7f + 0.3f);
|
||||
//}
|
||||
|
||||
if (level->isSolidBlockingTile(x, y - 1, z) || Tile::fire->canBurn(level, x, y - 1, z)) {
|
||||
for (int i = 0; i < 3; i++) {
|
||||
@@ -244,6 +248,7 @@ private:
|
||||
}
|
||||
|
||||
void checkBurn(Level* level, int x, int y, int z, int chance, Random* random) {
|
||||
return; //@fire
|
||||
|
||||
int odds = burnOdds[level->getTile(x, y, z)];
|
||||
if (random->nextInt(chance) < odds) {
|
||||
@@ -260,6 +265,7 @@ private:
|
||||
}
|
||||
|
||||
bool isValidFireLocation(Level* level, int x, int y, int z) {
|
||||
return false; //@fire
|
||||
|
||||
if (canBurn(level, x + 1, y, z)) return true;
|
||||
if (canBurn(level, x - 1, y, z)) return true;
|
||||
@@ -272,6 +278,7 @@ private:
|
||||
}
|
||||
|
||||
int getFireOdds(Level* level, int x, int y, int z) {
|
||||
return 0; //@fire
|
||||
|
||||
int odds = 0;
|
||||
if (!level->isEmptyTile(x, y, z)) return 0;
|
||||
@@ -287,6 +294,7 @@ private:
|
||||
}
|
||||
|
||||
bool tryIgnite(Level* level, int x, int y, int z) {
|
||||
return false; //@fire
|
||||
|
||||
int t = level->getTile(x, y, z);
|
||||
if (t == Tile::fire->id) return true;
|
||||
|
||||
@@ -1,11 +1,6 @@
|
||||
#include "GrassTile.h"
|
||||
#include "../material/Material.h"
|
||||
#include "../../entity/item/ItemEntity.h"
|
||||
#include "../GrassColor.h"
|
||||
#include "../Level.h"
|
||||
#include "../LevelSource.h"
|
||||
#include "../biome/BiomeSource.h"
|
||||
#include "../../../client/Minecraft.h"
|
||||
|
||||
GrassTile::GrassTile(int id)
|
||||
: super(id, Material::dirt)
|
||||
@@ -29,18 +24,11 @@ int GrassTile::getTexture( int face, int data ) {
|
||||
}
|
||||
|
||||
int GrassTile::getColor( LevelSource* level, int x, int y, int z ) {
|
||||
//level.getBiomeSource().getBiomeBlock(x, z, 1, 1);
|
||||
//float temp = level.getBiomeSource().temperatures[0];
|
||||
//float rain = level.getBiomeSource().downfalls[0];
|
||||
|
||||
if(!GrassColor::useTint){
|
||||
return 0x339933;
|
||||
}
|
||||
|
||||
level->getBiomeSource()->getBiomeBlock(x, z, 1, 1);
|
||||
float temp = level->getBiomeSource()->temperatures[0];
|
||||
float rain = level->getBiomeSource()->downfalls[0];
|
||||
|
||||
// return 0x339933;//GrassColor.get(temp, rain); // we need to hook this up with OPTION_FOLIAGE_TINT
|
||||
|
||||
return GrassColor::get(temp, rain);
|
||||
return 0x339933;//GrassColor.get(temp, rain);
|
||||
}
|
||||
|
||||
void GrassTile::tick( Level* level, int x, int y, int z, Random* random ) {
|
||||
|
||||
@@ -14,7 +14,6 @@ class GrassTile: public Tile
|
||||
{
|
||||
typedef Tile super;
|
||||
public:
|
||||
|
||||
static const int MIN_BRIGHTNESS = 4;
|
||||
|
||||
GrassTile(int id);
|
||||
|
||||
@@ -9,8 +9,6 @@
|
||||
#include "../../item/Item.h"
|
||||
#include "../../item/ItemInstance.h"
|
||||
#include "../FoliageColor.h"
|
||||
#include "../LevelSource.h"
|
||||
#include "../biome/BiomeSource.h"
|
||||
|
||||
class Entity;
|
||||
|
||||
@@ -56,18 +54,10 @@ public:
|
||||
if (data == BIRCH_LEAF) {
|
||||
return FoliageColor::getBirchColor();
|
||||
}
|
||||
if (!FoliageColor::useTint){
|
||||
|
||||
return FoliageColor::getDefaultColor();
|
||||
}
|
||||
|
||||
// return FoliageColor::getDefaultColor(); we need to hook this up with OPTION_FOLIAGE_TINT
|
||||
level->getBiomeSource()->getBiomeBlock(x, z, 1, 1);
|
||||
float temperature = level->getBiomeSource()->temperatures[0];
|
||||
float rainfall = level->getBiomeSource()->downfalls[0];
|
||||
return FoliageColor::get(temperature, rainfall);
|
||||
|
||||
}
|
||||
|
||||
void onRemove(Level* level, int x, int y, int z) {
|
||||
int r = 1;
|
||||
int r2 = r + 1;
|
||||
|
||||
Reference in New Issue
Block a user