mirror of
https://gitea.sffempire.ru/Kolyah35/minecraft-pe-0.6.1.git
synced 2026-04-05 23:13:33 +00:00
Compare commits
28 Commits
fix-ios-co
...
470c28d83a
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
470c28d83a | ||
|
|
4363157cd9 | ||
|
|
ba3ed3b4dd | ||
|
|
5783fb93f3 | ||
|
|
73fb2a2b3d | ||
|
|
bcf48eb5e3 | ||
|
|
f5fecbc928 | ||
|
|
77d02fcca2 | ||
|
|
6d696af235 | ||
|
|
370363f792 | ||
|
|
61a2349b8b | ||
|
|
eed3a6df61 | ||
|
|
97b0fb4d46 | ||
|
|
8be842a8ac | ||
|
|
6957f144e1 | ||
|
|
f9d9a0f0f9 | ||
|
|
28febb4e63 | ||
|
|
aeef442f76 | ||
|
|
8098ab8906 | ||
|
|
f0cb6d0b7c | ||
|
|
d1672c0ee2 | ||
|
|
c234abe3aa | ||
|
|
e4ff7728af | ||
|
|
41c5bdf243 | ||
|
|
96e8826f01 | ||
|
|
db8993683f | ||
|
|
2c1b5e256e | ||
|
|
4beb5cb0f9 |
27
.github/workflows/build.yml
vendored
27
.github/workflows/build.yml
vendored
@@ -72,30 +72,6 @@ jobs:
|
|||||||
${{github.workspace}}/build/OpenAL32.dll
|
${{github.workspace}}/build/OpenAL32.dll
|
||||||
${{github.workspace}}/build/libz.dll
|
${{github.workspace}}/build/libz.dll
|
||||||
|
|
||||||
build-ios:
|
|
||||||
# credit to pengubow from deepfriedwaffles repo
|
|
||||||
name: Build iOS
|
|
||||||
runs-on: macos-latest
|
|
||||||
|
|
||||||
steps:
|
|
||||||
- name: Checkout
|
|
||||||
uses: actions/checkout@main
|
|
||||||
|
|
||||||
- name: Build
|
|
||||||
run: |
|
|
||||||
cd project/iosproj
|
|
||||||
xcodebuild -scheme minecraftpe -derivedDataPath build -destination 'generic/platform=iOS' CODE_SIGN_IDENTITY="" CODE_SIGNING_REQUIRED=NO
|
|
||||||
mkdir -p Payload
|
|
||||||
cp -R build/Build/Products/Debug-iphoneos/minecraftpe.app Payload/
|
|
||||||
zip -r minecraftpe.ipa Payload
|
|
||||||
rm -rf Payload
|
|
||||||
|
|
||||||
- name: Upload artifact
|
|
||||||
uses: actions/upload-artifact@main
|
|
||||||
with:
|
|
||||||
name: minecraftpe-ios
|
|
||||||
path: project/iosproj/minecraftpe.ipa
|
|
||||||
|
|
||||||
build-linux:
|
build-linux:
|
||||||
name: Build Linux
|
name: Build Linux
|
||||||
runs-on: ubuntu-latest
|
runs-on: ubuntu-latest
|
||||||
@@ -290,7 +266,8 @@ jobs:
|
|||||||
publish:
|
publish:
|
||||||
name: Publish
|
name: Publish
|
||||||
runs-on: ubuntu-latest
|
runs-on: ubuntu-latest
|
||||||
needs: [ build-windows, build-ios, build-linux, build-android, build-web ]
|
needs: [ build-windows, build-linux, build-android, build-web ]
|
||||||
|
if: github.ref == 'refs/heads/main'
|
||||||
steps:
|
steps:
|
||||||
- name: Checkout
|
- name: Checkout
|
||||||
uses: actions/checkout@v4
|
uses: actions/checkout@v4
|
||||||
|
|||||||
@@ -111,7 +111,6 @@ CPMAddPackage(
|
|||||||
"ALSOFT_STATIC_LIBGCC ON"
|
"ALSOFT_STATIC_LIBGCC ON"
|
||||||
)
|
)
|
||||||
|
|
||||||
# TODO: Clear this paths with *
|
|
||||||
file(GLOB SERVER_SOURCES
|
file(GLOB SERVER_SOURCES
|
||||||
"project/lib_projects/raknet/jni/RaknetSources/*.cpp"
|
"project/lib_projects/raknet/jni/RaknetSources/*.cpp"
|
||||||
"src/NinecraftApp.cpp"
|
"src/NinecraftApp.cpp"
|
||||||
|
|||||||
35
README.md
35
README.md
@@ -198,38 +198,3 @@ cmake --build .
|
|||||||
```
|
```
|
||||||
emrun --port 8080 .
|
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 |
@@ -153,7 +153,6 @@ options.group.tweaks=Tweaks
|
|||||||
options.allowSprint=Allow sprint
|
options.allowSprint=Allow sprint
|
||||||
options.barOnTop=HUD above inventory
|
options.barOnTop=HUD above inventory
|
||||||
options.rpiCursor=Show Raspberry PI cursor
|
options.rpiCursor=Show Raspberry PI cursor
|
||||||
options.foliageTint=Tint Grass and Leaves
|
|
||||||
options.autoJump=Auto Jump
|
options.autoJump=Auto Jump
|
||||||
options.thirdperson=Third Person
|
options.thirdperson=Third Person
|
||||||
options.servervisible=Server Visible
|
options.servervisible=Server Visible
|
||||||
|
|||||||
@@ -209,8 +209,6 @@ LOCAL_SRC_FILES := ../../../src/main.cpp \
|
|||||||
../../../src/world/level/MobSpawner.cpp \
|
../../../src/world/level/MobSpawner.cpp \
|
||||||
../../../src/world/level/Region.cpp \
|
../../../src/world/level/Region.cpp \
|
||||||
../../../src/world/level/TickNextTickData.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/Biome.cpp \
|
||||||
../../../src/world/level/biome/BiomeSource.cpp \
|
../../../src/world/level/biome/BiomeSource.cpp \
|
||||||
../../../src/world/level/chunk/LevelChunk.cpp \
|
../../../src/world/level/chunk/LevelChunk.cpp \
|
||||||
|
|||||||
@@ -183,8 +183,6 @@ LOCAL_SRC_FILES := ../../../src/main.cpp \
|
|||||||
../../../src/world/level/MobSpawner.cpp \
|
../../../src/world/level/MobSpawner.cpp \
|
||||||
../../../src/world/level/Region.cpp \
|
../../../src/world/level/Region.cpp \
|
||||||
../../../src/world/level/TickNextTickData.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/Biome.cpp \
|
||||||
../../../src/world/level/biome/BiomeSource.cpp \
|
../../../src/world/level/biome/BiomeSource.cpp \
|
||||||
../../../src/world/level/chunk/LevelChunk.cpp \
|
../../../src/world/level/chunk/LevelChunk.cpp \
|
||||||
|
|||||||
@@ -1,48 +0,0 @@
|
|||||||
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
|
|
||||||
<document type="com.apple.InterfaceBuilder3.CocoaTouch.Storyboard.XIB" version="3.0" toolsVersion="13142" targetRuntime="iOS.CocoaTouch" propertyAccessControl="none" useAutolayout="YES" launchScreen="YES" useTraitCollections="YES" useSafeAreas="YES" colorMatched="YES" initialViewController="01J-lp-oVM">
|
|
||||||
<dependencies>
|
|
||||||
<plugIn identifier="com.apple.InterfaceBuilder.IBCocoaTouchPlugin" version="12042"/>
|
|
||||||
<capability name="Constraints with non-1.0 multipliers" minToolsVersion="5.1"/>
|
|
||||||
<capability name="Safe area layout guides" minToolsVersion="9.0"/>
|
|
||||||
<capability name="documents saved in the Xcode 8 format" minToolsVersion="8.0"/>
|
|
||||||
</dependencies>
|
|
||||||
<scenes>
|
|
||||||
<!--View Controller-->
|
|
||||||
<scene sceneID="EHf-IW-A2E">
|
|
||||||
<objects>
|
|
||||||
<viewController id="01J-lp-oVM" sceneMemberID="viewController">
|
|
||||||
<view key="view" contentMode="scaleToFill" id="Ze5-6b-2t3">
|
|
||||||
<rect key="frame" x="0.0" y="0.0" width="375" height="667"/>
|
|
||||||
<autoresizingMask key="autoresizingMask" widthSizable="YES" heightSizable="YES"/>
|
|
||||||
<subviews>
|
|
||||||
<label opaque="NO" clipsSubviews="YES" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" text="" textAlignment="center" lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" minimumFontSize="9" translatesAutoresizingMaskIntoConstraints="NO" id="obG-Y5-kRd">
|
|
||||||
<rect key="frame" x="0.0" y="626.5" width="375" height="20.5"/>
|
|
||||||
<fontDescription key="fontDescription" type="system" pointSize="17"/>
|
|
||||||
<color key="textColor" red="0.0" green="0.0" blue="0.0" alpha="1" colorSpace="custom" customColorSpace="sRGB"/>
|
|
||||||
<nil key="highlightedColor"/>
|
|
||||||
</label>
|
|
||||||
<label opaque="NO" clipsSubviews="YES" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" text="minecraftpe" textAlignment="center" lineBreakMode="middleTruncation" baselineAdjustment="alignBaselines" minimumFontSize="18" translatesAutoresizingMaskIntoConstraints="NO" id="GJd-Yh-RWb">
|
|
||||||
<rect key="frame" x="0.0" y="202" width="375" height="43"/>
|
|
||||||
<fontDescription key="fontDescription" type="boldSystem" pointSize="36"/>
|
|
||||||
<color key="textColor" red="0.0" green="0.0" blue="0.0" alpha="1" colorSpace="custom" customColorSpace="sRGB"/>
|
|
||||||
<nil key="highlightedColor"/>
|
|
||||||
</label>
|
|
||||||
</subviews>
|
|
||||||
<color key="backgroundColor" red="1" green="1" blue="1" alpha="1" colorSpace="custom" customColorSpace="sRGB"/>
|
|
||||||
<constraints>
|
|
||||||
<constraint firstItem="Bcu-3y-fUS" firstAttribute="centerX" secondItem="obG-Y5-kRd" secondAttribute="centerX" id="5cz-MP-9tL"/>
|
|
||||||
<constraint firstItem="Bcu-3y-fUS" firstAttribute="centerX" secondItem="GJd-Yh-RWb" secondAttribute="centerX" id="Q3B-4B-g5h"/>
|
|
||||||
<constraint firstItem="obG-Y5-kRd" firstAttribute="leading" secondItem="Bcu-3y-fUS" secondAttribute="leading" constant="20" symbolic="YES" id="SfN-ll-jLj"/>
|
|
||||||
<constraint firstAttribute="bottom" secondItem="obG-Y5-kRd" secondAttribute="bottom" constant="20" id="Y44-ml-fuU"/>
|
|
||||||
<constraint firstItem="GJd-Yh-RWb" firstAttribute="centerY" secondItem="Ze5-6b-2t3" secondAttribute="bottom" multiplier="1/3" constant="1" id="moa-c2-u7t"/>
|
|
||||||
<constraint firstItem="GJd-Yh-RWb" firstAttribute="leading" secondItem="Bcu-3y-fUS" secondAttribute="leading" constant="20" symbolic="YES" id="x7j-FC-K8j"/>
|
|
||||||
</constraints>
|
|
||||||
<viewLayoutGuide key="safeArea" id="Bcu-3y-fUS"/>
|
|
||||||
</view>
|
|
||||||
</viewController>
|
|
||||||
<placeholder placeholderIdentifier="IBFirstResponder" id="iYj-Kq-Ea1" userLabel="First Responder" sceneMemberID="firstResponder"/>
|
|
||||||
</objects>
|
|
||||||
<point key="canvasLocation" x="53" y="375"/>
|
|
||||||
</scene>
|
|
||||||
</scenes>
|
|
||||||
</document>
|
|
||||||
@@ -41,6 +41,7 @@
|
|||||||
042A91AE16B17517007ABBC6 /* GuiElement.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 042A91A316B17517007ABBC6 /* GuiElement.cpp */; };
|
042A91AE16B17517007ABBC6 /* GuiElement.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 042A91A316B17517007ABBC6 /* GuiElement.cpp */; };
|
||||||
042A91AF16B17517007ABBC6 /* NinePatch.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 042A91A516B17517007ABBC6 /* NinePatch.cpp */; };
|
042A91AF16B17517007ABBC6 /* NinePatch.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 042A91A516B17517007ABBC6 /* NinePatch.cpp */; };
|
||||||
042A91B016B17517007ABBC6 /* OptionsGroup.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 042A91A716B17517007ABBC6 /* OptionsGroup.cpp */; };
|
042A91B016B17517007ABBC6 /* OptionsGroup.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 042A91A716B17517007ABBC6 /* OptionsGroup.cpp */; };
|
||||||
|
042A91B116B17517007ABBC6 /* OptionsPane.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 042A91A916B17517007ABBC6 /* OptionsPane.cpp */; };
|
||||||
042A91B216B17517007ABBC6 /* TextBox.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 042A91AB16B17517007ABBC6 /* TextBox.cpp */; };
|
042A91B216B17517007ABBC6 /* TextBox.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 042A91AB16B17517007ABBC6 /* TextBox.cpp */; };
|
||||||
044129071682FF9600B70EE6 /* MouseHandler.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 044129061682FF9600B70EE6 /* MouseHandler.cpp */; };
|
044129071682FF9600B70EE6 /* MouseHandler.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 044129061682FF9600B70EE6 /* MouseHandler.cpp */; };
|
||||||
9D293CE716071C08000305C8 /* CreateNewWorld_iphone.xib in Resources */ = {isa = PBXBuildFile; fileRef = 9D293CE616071C08000305C8 /* CreateNewWorld_iphone.xib */; };
|
9D293CE716071C08000305C8 /* CreateNewWorld_iphone.xib in Resources */ = {isa = PBXBuildFile; fileRef = 9D293CE616071C08000305C8 /* CreateNewWorld_iphone.xib */; };
|
||||||
@@ -1146,33 +1147,6 @@
|
|||||||
D5F3B7DD14548E7900D25470 /* IASKPSToggleSwitchSpecifierViewCell.xib in Resources */ = {isa = PBXBuildFile; fileRef = D5F3B7C814548E7900D25470 /* IASKPSToggleSwitchSpecifierViewCell.xib */; };
|
D5F3B7DD14548E7900D25470 /* IASKPSToggleSwitchSpecifierViewCell.xib in Resources */ = {isa = PBXBuildFile; fileRef = D5F3B7C814548E7900D25470 /* IASKPSToggleSwitchSpecifierViewCell.xib */; };
|
||||||
D5F3B7DE14548E7900D25470 /* IASKSpecifierValuesView.xib in Resources */ = {isa = PBXBuildFile; fileRef = D5F3B7C914548E7900D25470 /* IASKSpecifierValuesView.xib */; };
|
D5F3B7DE14548E7900D25470 /* IASKSpecifierValuesView.xib in Resources */ = {isa = PBXBuildFile; fileRef = D5F3B7C914548E7900D25470 /* IASKSpecifierValuesView.xib */; };
|
||||||
D5F3B7E51454930400D25470 /* InAppSettings.bundle in Resources */ = {isa = PBXBuildFile; fileRef = D5F3B7E41454930400D25470 /* InAppSettings.bundle */; };
|
D5F3B7E51454930400D25470 /* InAppSettings.bundle in Resources */ = {isa = PBXBuildFile; fileRef = D5F3B7E41454930400D25470 /* InAppSettings.bundle */; };
|
||||||
F912B8CF2F6C3D5200BC60DF /* TextBox.h in Sources */ = {isa = PBXBuildFile; fileRef = 042A91AC16B17517007ABBC6 /* TextBox.h */; };
|
|
||||||
F99D341F2F736AA100DC153E /* HttpClient.cpp in Sources */ = {isa = PBXBuildFile; fileRef = F99D341E2F736AA100DC153E /* HttpClient.cpp */; };
|
|
||||||
F99D34202F736AA100DC153E /* HttpClient.cpp in Sources */ = {isa = PBXBuildFile; fileRef = F99D341E2F736AA100DC153E /* HttpClient.cpp */; };
|
|
||||||
F99D34232F736AD400DC153E /* TextOption.cpp in Sources */ = {isa = PBXBuildFile; fileRef = F99D34222F736AD400DC153E /* TextOption.cpp */; };
|
|
||||||
F99D34242F736AD400DC153E /* TextOption.cpp in Sources */ = {isa = PBXBuildFile; fileRef = F99D34222F736AD400DC153E /* TextOption.cpp */; };
|
|
||||||
F99D34272F736AFB00DC153E /* OptionsFile.cpp in Sources */ = {isa = PBXBuildFile; fileRef = F99D34262F736AFB00DC153E /* OptionsFile.cpp */; };
|
|
||||||
F99D34282F736AFB00DC153E /* OptionsFile.cpp in Sources */ = {isa = PBXBuildFile; fileRef = F99D34262F736AFB00DC153E /* OptionsFile.cpp */; };
|
|
||||||
F99D342B2F736B6F00DC153E /* OptionsItem.cpp in Sources */ = {isa = PBXBuildFile; fileRef = F99D342A2F736B6F00DC153E /* OptionsItem.cpp */; };
|
|
||||||
F99D342C2F736B6F00DC153E /* OptionsItem.cpp in Sources */ = {isa = PBXBuildFile; fileRef = F99D342A2F736B6F00DC153E /* OptionsItem.cpp */; };
|
|
||||||
F99D342F2F736BAD00DC153E /* ConsoleScreen.cpp in Sources */ = {isa = PBXBuildFile; fileRef = F99D342E2F736BAD00DC153E /* ConsoleScreen.cpp */; };
|
|
||||||
F99D34302F736BAD00DC153E /* ConsoleScreen.cpp in Sources */ = {isa = PBXBuildFile; fileRef = F99D342E2F736BAD00DC153E /* ConsoleScreen.cpp */; };
|
|
||||||
F99D34332F736BDA00DC153E /* CreditsScreen.cpp in Sources */ = {isa = PBXBuildFile; fileRef = F99D34322F736BDA00DC153E /* CreditsScreen.cpp */; };
|
|
||||||
F99D34342F736BDA00DC153E /* CreditsScreen.cpp in Sources */ = {isa = PBXBuildFile; fileRef = F99D34322F736BDA00DC153E /* CreditsScreen.cpp */; };
|
|
||||||
F99D34372F736C1000DC153E /* JoinByIPScreen.cpp in Sources */ = {isa = PBXBuildFile; fileRef = F99D34362F736C1000DC153E /* JoinByIPScreen.cpp */; };
|
|
||||||
F99D34382F736C1000DC153E /* JoinByIPScreen.cpp in Sources */ = {isa = PBXBuildFile; fileRef = F99D34362F736C1000DC153E /* JoinByIPScreen.cpp */; };
|
|
||||||
F99D343B2F736C3B00DC153E /* UsernameScreen.cpp in Sources */ = {isa = PBXBuildFile; fileRef = F99D343A2F736C3B00DC153E /* UsernameScreen.cpp */; };
|
|
||||||
F99D343C2F736C3B00DC153E /* UsernameScreen.cpp in Sources */ = {isa = PBXBuildFile; fileRef = F99D343A2F736C3B00DC153E /* UsernameScreen.cpp */; };
|
|
||||||
F99D343F2F736C8400DC153E /* GuiElementContainer.cpp in Sources */ = {isa = PBXBuildFile; fileRef = F99D343E2F736C8400DC153E /* GuiElementContainer.cpp */; };
|
|
||||||
F99D34402F736C8400DC153E /* GuiElementContainer.cpp in Sources */ = {isa = PBXBuildFile; fileRef = F99D343E2F736C8400DC153E /* GuiElementContainer.cpp */; };
|
|
||||||
F99D34432F736F9400DC153E /* Option.cpp in Sources */ = {isa = PBXBuildFile; fileRef = F99D34422F736F9400DC153E /* Option.cpp */; };
|
|
||||||
F99D34442F736F9400DC153E /* Option.cpp in Sources */ = {isa = PBXBuildFile; fileRef = F99D34422F736F9400DC153E /* Option.cpp */; };
|
|
||||||
F99D34472F736FE800DC153E /* KeyOption.cpp in Sources */ = {isa = PBXBuildFile; fileRef = F99D34462F736FE800DC153E /* KeyOption.cpp */; };
|
|
||||||
F99D34482F736FE800DC153E /* KeyOption.cpp in Sources */ = {isa = PBXBuildFile; fileRef = F99D34462F736FE800DC153E /* KeyOption.cpp */; };
|
|
||||||
F99D344B2F7370CF00DC153E /* Slider.cpp in Sources */ = {isa = PBXBuildFile; fileRef = F99D344A2F7370CF00DC153E /* Slider.cpp */; };
|
|
||||||
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 */; };
|
|
||||||
/* End PBXBuildFile section */
|
/* End PBXBuildFile section */
|
||||||
|
|
||||||
/* Begin PBXFileReference section */
|
/* Begin PBXFileReference section */
|
||||||
@@ -1234,8 +1208,10 @@
|
|||||||
042A91A616B17517007ABBC6 /* NinePatch.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = NinePatch.h; sourceTree = "<group>"; };
|
042A91A616B17517007ABBC6 /* NinePatch.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = NinePatch.h; sourceTree = "<group>"; };
|
||||||
042A91A716B17517007ABBC6 /* OptionsGroup.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = OptionsGroup.cpp; sourceTree = "<group>"; };
|
042A91A716B17517007ABBC6 /* OptionsGroup.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = OptionsGroup.cpp; sourceTree = "<group>"; };
|
||||||
042A91A816B17517007ABBC6 /* OptionsGroup.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = OptionsGroup.h; sourceTree = "<group>"; };
|
042A91A816B17517007ABBC6 /* OptionsGroup.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = OptionsGroup.h; sourceTree = "<group>"; };
|
||||||
|
042A91A916B17517007ABBC6 /* OptionsPane.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = OptionsPane.cpp; sourceTree = "<group>"; };
|
||||||
|
042A91AA16B17517007ABBC6 /* OptionsPane.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = OptionsPane.h; sourceTree = "<group>"; };
|
||||||
042A91AB16B17517007ABBC6 /* TextBox.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = TextBox.cpp; sourceTree = "<group>"; };
|
042A91AB16B17517007ABBC6 /* TextBox.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = TextBox.cpp; sourceTree = "<group>"; };
|
||||||
042A91AC16B17517007ABBC6 /* TextBox.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = TextBox.h; path = ../../src/client/gui/components/TextBox.h; sourceTree = SOURCE_ROOT; };
|
042A91AC16B17517007ABBC6 /* TextBox.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = TextBox.h; sourceTree = "<group>"; };
|
||||||
044129061682FF9600B70EE6 /* MouseHandler.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = MouseHandler.cpp; sourceTree = "<group>"; };
|
044129061682FF9600B70EE6 /* MouseHandler.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = MouseHandler.cpp; sourceTree = "<group>"; };
|
||||||
9D293CE616071C08000305C8 /* CreateNewWorld_iphone.xib */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = file.xib; name = CreateNewWorld_iphone.xib; path = minecraftpe/dialogs/CreateNewWorld_iphone.xib; sourceTree = "<group>"; };
|
9D293CE616071C08000305C8 /* CreateNewWorld_iphone.xib */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = file.xib; name = CreateNewWorld_iphone.xib; path = minecraftpe/dialogs/CreateNewWorld_iphone.xib; sourceTree = "<group>"; };
|
||||||
9D293CEA160720D6000305C8 /* worldname_iphone5_3.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = worldname_iphone5_3.png; sourceTree = "<group>"; };
|
9D293CEA160720D6000305C8 /* worldname_iphone5_3.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = worldname_iphone5_3.png; sourceTree = "<group>"; };
|
||||||
@@ -2041,7 +2017,7 @@
|
|||||||
D5B50D6914CFF66F005F7284 /* Multitouch.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = Multitouch.h; sourceTree = "<group>"; };
|
D5B50D6914CFF66F005F7284 /* Multitouch.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = Multitouch.h; sourceTree = "<group>"; };
|
||||||
D5B50D6A14CFF66F005F7284 /* log.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = log.h; sourceTree = "<group>"; };
|
D5B50D6A14CFF66F005F7284 /* log.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = log.h; sourceTree = "<group>"; };
|
||||||
D5B50D6B14CFF66F005F7284 /* time.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = time.cpp; sourceTree = "<group>"; };
|
D5B50D6B14CFF66F005F7284 /* time.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = time.cpp; sourceTree = "<group>"; };
|
||||||
D5B50D6C14CFF66F005F7284 /* time.h */ = {isa = PBXFileReference; explicitFileType = sourcecode.cpp.h; fileEncoding = 4; path = time.h; sourceTree = "<group>"; };
|
D5B50D6C14CFF66F005F7284 /* time.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = time.h; sourceTree = "<group>"; };
|
||||||
D5B50E5614CFF66F005F7284 /* SharedConstants.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = SharedConstants.h; sourceTree = "<group>"; };
|
D5B50E5614CFF66F005F7284 /* SharedConstants.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = SharedConstants.h; sourceTree = "<group>"; };
|
||||||
D5B50E5714CFF66F005F7284 /* terrain_4444.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = terrain_4444.h; sourceTree = "<group>"; };
|
D5B50E5714CFF66F005F7284 /* terrain_4444.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = terrain_4444.h; sourceTree = "<group>"; };
|
||||||
D5B50E5814CFF66F005F7284 /* terrain_5551.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = terrain_5551.h; sourceTree = "<group>"; };
|
D5B50E5814CFF66F005F7284 /* terrain_5551.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = terrain_5551.h; sourceTree = "<group>"; };
|
||||||
@@ -2432,31 +2408,6 @@
|
|||||||
D5F3B7C814548E7900D25470 /* IASKPSToggleSwitchSpecifierViewCell.xib */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = file.xib; path = IASKPSToggleSwitchSpecifierViewCell.xib; sourceTree = "<group>"; };
|
D5F3B7C814548E7900D25470 /* IASKPSToggleSwitchSpecifierViewCell.xib */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = file.xib; path = IASKPSToggleSwitchSpecifierViewCell.xib; sourceTree = "<group>"; };
|
||||||
D5F3B7C914548E7900D25470 /* IASKSpecifierValuesView.xib */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = file.xib; path = IASKSpecifierValuesView.xib; sourceTree = "<group>"; };
|
D5F3B7C914548E7900D25470 /* IASKSpecifierValuesView.xib */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = file.xib; path = IASKSpecifierValuesView.xib; sourceTree = "<group>"; };
|
||||||
D5F3B7E41454930400D25470 /* InAppSettings.bundle */ = {isa = PBXFileReference; explicitFileType = "wrapper.installer-pkg"; path = InAppSettings.bundle; sourceTree = "<group>"; };
|
D5F3B7E41454930400D25470 /* InAppSettings.bundle */ = {isa = PBXFileReference; explicitFileType = "wrapper.installer-pkg"; path = InAppSettings.bundle; sourceTree = "<group>"; };
|
||||||
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; };
|
|
||||||
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>"; };
|
|
||||||
F99D342D2F736BAD00DC153E /* ConsoleScreen.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = ConsoleScreen.h; path = ../../src/client/gui/screens/ConsoleScreen.h; sourceTree = "<group>"; };
|
|
||||||
F99D342E2F736BAD00DC153E /* ConsoleScreen.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = ConsoleScreen.cpp; path = ../../src/client/gui/screens/ConsoleScreen.cpp; sourceTree = "<group>"; };
|
|
||||||
F99D34312F736BDA00DC153E /* CreditsScreen.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = CreditsScreen.h; path = ../../src/client/gui/screens/CreditsScreen.h; sourceTree = "<group>"; };
|
|
||||||
F99D34322F736BDA00DC153E /* CreditsScreen.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = CreditsScreen.cpp; path = ../../src/client/gui/screens/CreditsScreen.cpp; sourceTree = "<group>"; };
|
|
||||||
F99D34352F736C1000DC153E /* JoinByIPScreen.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = JoinByIPScreen.h; path = ../../src/client/gui/screens/JoinByIPScreen.h; sourceTree = "<group>"; };
|
|
||||||
F99D34362F736C1000DC153E /* JoinByIPScreen.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = JoinByIPScreen.cpp; path = ../../src/client/gui/screens/JoinByIPScreen.cpp; sourceTree = "<group>"; };
|
|
||||||
F99D34392F736C3B00DC153E /* UsernameScreen.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = UsernameScreen.h; path = ../../src/client/gui/screens/UsernameScreen.h; sourceTree = "<group>"; };
|
|
||||||
F99D343A2F736C3B00DC153E /* UsernameScreen.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = UsernameScreen.cpp; path = ../../src/client/gui/screens/UsernameScreen.cpp; sourceTree = "<group>"; };
|
|
||||||
F99D343D2F736C8400DC153E /* GuiElementContainer.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = GuiElementContainer.h; path = ../../src/client/gui/components/GuiElementContainer.h; sourceTree = "<group>"; };
|
|
||||||
F99D343E2F736C8400DC153E /* GuiElementContainer.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = GuiElementContainer.cpp; path = ../../src/client/gui/components/GuiElementContainer.cpp; sourceTree = "<group>"; };
|
|
||||||
F99D34412F736F9400DC153E /* Option.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = Option.h; path = ../../src/client/Option.h; sourceTree = "<group>"; };
|
|
||||||
F99D34422F736F9400DC153E /* Option.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = Option.cpp; path = ../../src/client/Option.cpp; sourceTree = "<group>"; };
|
|
||||||
F99D34452F736FE800DC153E /* KeyOption.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = KeyOption.h; path = ../../src/client/gui/components/KeyOption.h; sourceTree = "<group>"; };
|
|
||||||
F99D34462F736FE800DC153E /* KeyOption.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = KeyOption.cpp; path = ../../src/client/gui/components/KeyOption.cpp; sourceTree = "<group>"; };
|
|
||||||
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>"; };
|
|
||||||
/* End PBXFileReference section */
|
/* End PBXFileReference section */
|
||||||
|
|
||||||
/* Begin PBXFrameworksBuildPhase section */
|
/* Begin PBXFrameworksBuildPhase section */
|
||||||
@@ -3275,6 +3226,8 @@
|
|||||||
042A91A616B17517007ABBC6 /* NinePatch.h */,
|
042A91A616B17517007ABBC6 /* NinePatch.h */,
|
||||||
042A91A716B17517007ABBC6 /* OptionsGroup.cpp */,
|
042A91A716B17517007ABBC6 /* OptionsGroup.cpp */,
|
||||||
042A91A816B17517007ABBC6 /* OptionsGroup.h */,
|
042A91A816B17517007ABBC6 /* OptionsGroup.h */,
|
||||||
|
042A91A916B17517007ABBC6 /* OptionsPane.cpp */,
|
||||||
|
042A91AA16B17517007ABBC6 /* OptionsPane.h */,
|
||||||
042A91AB16B17517007ABBC6 /* TextBox.cpp */,
|
042A91AB16B17517007ABBC6 /* TextBox.cpp */,
|
||||||
042A91AC16B17517007ABBC6 /* TextBox.h */,
|
042A91AC16B17517007ABBC6 /* TextBox.h */,
|
||||||
D5B50C2814CFF66F005F7284 /* Button.cpp */,
|
D5B50C2814CFF66F005F7284 /* Button.cpp */,
|
||||||
@@ -4303,7 +4256,6 @@
|
|||||||
D5CF9C37144C225000E4244F = {
|
D5CF9C37144C225000E4244F = {
|
||||||
isa = PBXGroup;
|
isa = PBXGroup;
|
||||||
children = (
|
children = (
|
||||||
F99D344D2F7372A100DC153E /* Launch Screen.storyboard */,
|
|
||||||
D5E1BA9A1451C8A0007DCC4F /* Default@2x.png */,
|
D5E1BA9A1451C8A0007DCC4F /* Default@2x.png */,
|
||||||
9D959AFF16036BEE00E23A6F /* Default-568h@2x.png */,
|
9D959AFF16036BEE00E23A6F /* Default-568h@2x.png */,
|
||||||
D5F07744145EF79B00EC30FB /* Default-Landscape~ipad.png */,
|
D5F07744145EF79B00EC30FB /* Default-Landscape~ipad.png */,
|
||||||
@@ -4315,30 +4267,6 @@
|
|||||||
D5CF9C45144C225000E4244F /* Frameworks */,
|
D5CF9C45144C225000E4244F /* Frameworks */,
|
||||||
D5CF9C43144C225000E4244F /* Products */,
|
D5CF9C43144C225000E4244F /* Products */,
|
||||||
D5B50C1614CFF66F005F7284 /* src */,
|
D5B50C1614CFF66F005F7284 /* src */,
|
||||||
F99D341D2F736AA100DC153E /* HttpClient.h */,
|
|
||||||
F99D341E2F736AA100DC153E /* HttpClient.cpp */,
|
|
||||||
F99D34212F736AD400DC153E /* TextOption.h */,
|
|
||||||
F99D34222F736AD400DC153E /* TextOption.cpp */,
|
|
||||||
F99D34252F736AFB00DC153E /* OptionsFile.h */,
|
|
||||||
F99D34262F736AFB00DC153E /* OptionsFile.cpp */,
|
|
||||||
F99D34292F736B6F00DC153E /* OptionsItem.h */,
|
|
||||||
F99D342A2F736B6F00DC153E /* OptionsItem.cpp */,
|
|
||||||
F99D342D2F736BAD00DC153E /* ConsoleScreen.h */,
|
|
||||||
F99D342E2F736BAD00DC153E /* ConsoleScreen.cpp */,
|
|
||||||
F99D34312F736BDA00DC153E /* CreditsScreen.h */,
|
|
||||||
F99D34322F736BDA00DC153E /* CreditsScreen.cpp */,
|
|
||||||
F99D34352F736C1000DC153E /* JoinByIPScreen.h */,
|
|
||||||
F99D34362F736C1000DC153E /* JoinByIPScreen.cpp */,
|
|
||||||
F99D34392F736C3B00DC153E /* UsernameScreen.h */,
|
|
||||||
F99D343A2F736C3B00DC153E /* UsernameScreen.cpp */,
|
|
||||||
F99D343D2F736C8400DC153E /* GuiElementContainer.h */,
|
|
||||||
F99D343E2F736C8400DC153E /* GuiElementContainer.cpp */,
|
|
||||||
F99D34412F736F9400DC153E /* Option.h */,
|
|
||||||
F99D34422F736F9400DC153E /* Option.cpp */,
|
|
||||||
F99D34452F736FE800DC153E /* KeyOption.h */,
|
|
||||||
F99D34462F736FE800DC153E /* KeyOption.cpp */,
|
|
||||||
F99D34492F7370CF00DC153E /* Slider.h */,
|
|
||||||
F99D344A2F7370CF00DC153E /* Slider.cpp */,
|
|
||||||
);
|
);
|
||||||
sourceTree = "<group>";
|
sourceTree = "<group>";
|
||||||
};
|
};
|
||||||
@@ -4599,16 +4527,10 @@
|
|||||||
isa = PBXProject;
|
isa = PBXProject;
|
||||||
attributes = {
|
attributes = {
|
||||||
LastUpgradeCheck = 0420;
|
LastUpgradeCheck = 0420;
|
||||||
TargetAttributes = {
|
|
||||||
D5CF9C41144C225000E4244F = {
|
|
||||||
DevelopmentTeam = PZUVNW8F2U;
|
|
||||||
ProvisioningStyle = Automatic;
|
|
||||||
};
|
|
||||||
};
|
|
||||||
};
|
};
|
||||||
buildConfigurationList = D5CF9C3C144C225000E4244F /* Build configuration list for PBXProject "minecraftpe" */;
|
buildConfigurationList = D5CF9C3C144C225000E4244F /* Build configuration list for PBXProject "minecraftpe" */;
|
||||||
compatibilityVersion = "Xcode 3.2";
|
compatibilityVersion = "Xcode 3.2";
|
||||||
developmentRegion = en;
|
developmentRegion = English;
|
||||||
hasScannedForEncodings = 0;
|
hasScannedForEncodings = 0;
|
||||||
knownRegions = (
|
knownRegions = (
|
||||||
en,
|
en,
|
||||||
@@ -4677,7 +4599,6 @@
|
|||||||
D5B50A5614CFF492005F7284 /* pig.png in Resources */,
|
D5B50A5614CFF492005F7284 /* pig.png in Resources */,
|
||||||
D5B50A5814CFF492005F7284 /* sheep_fur.png in Resources */,
|
D5B50A5814CFF492005F7284 /* sheep_fur.png in Resources */,
|
||||||
D5B50A5A14CFF492005F7284 /* sheep.png in Resources */,
|
D5B50A5A14CFF492005F7284 /* sheep.png in Resources */,
|
||||||
F99D344F2F7372A100DC153E /* Launch Screen.storyboard in Resources */,
|
|
||||||
D5B50A5C14CFF492005F7284 /* skeleton.png in Resources */,
|
D5B50A5C14CFF492005F7284 /* skeleton.png in Resources */,
|
||||||
D5B50A5E14CFF492005F7284 /* spider.png in Resources */,
|
D5B50A5E14CFF492005F7284 /* spider.png in Resources */,
|
||||||
D5B50A6014CFF492005F7284 /* zombie.png in Resources */,
|
D5B50A6014CFF492005F7284 /* zombie.png in Resources */,
|
||||||
@@ -5014,7 +4935,6 @@
|
|||||||
D5ACF26F15C03DBF00E21C22 /* sand2.m4a in Resources */,
|
D5ACF26F15C03DBF00E21C22 /* sand2.m4a in Resources */,
|
||||||
D5ACF27115C03DBF00E21C22 /* sand3.m4a in Resources */,
|
D5ACF27115C03DBF00E21C22 /* sand3.m4a in Resources */,
|
||||||
D5ACF27315C03DBF00E21C22 /* sand4.m4a in Resources */,
|
D5ACF27315C03DBF00E21C22 /* sand4.m4a in Resources */,
|
||||||
F99D344E2F7372A100DC153E /* Launch Screen.storyboard in Resources */,
|
|
||||||
D5ACF27515C03DBF00E21C22 /* snow1.m4a in Resources */,
|
D5ACF27515C03DBF00E21C22 /* snow1.m4a in Resources */,
|
||||||
D5ACF27715C03DBF00E21C22 /* snow2.m4a in Resources */,
|
D5ACF27715C03DBF00E21C22 /* snow2.m4a in Resources */,
|
||||||
D5ACF27915C03DBF00E21C22 /* snow3.m4a in Resources */,
|
D5ACF27915C03DBF00E21C22 /* snow3.m4a in Resources */,
|
||||||
@@ -5091,22 +5011,18 @@
|
|||||||
D58BB544146A0B910002C9F5 /* IASKSettingsStore.m in Sources */,
|
D58BB544146A0B910002C9F5 /* IASKSettingsStore.m in Sources */,
|
||||||
D58BB545146A0B910002C9F5 /* IASKSettingsStoreFile.m in Sources */,
|
D58BB545146A0B910002C9F5 /* IASKSettingsStoreFile.m in Sources */,
|
||||||
D58BB546146A0B910002C9F5 /* IASKSettingsStoreUserDefaults.m in Sources */,
|
D58BB546146A0B910002C9F5 /* IASKSettingsStoreUserDefaults.m in Sources */,
|
||||||
F99D34232F736AD400DC153E /* TextOption.cpp in Sources */,
|
|
||||||
D58BB547146A0B910002C9F5 /* IASKSpecifier.m in Sources */,
|
D58BB547146A0B910002C9F5 /* IASKSpecifier.m in Sources */,
|
||||||
D58BB548146A0B910002C9F5 /* IASKPSSliderSpecifierViewCell.m in Sources */,
|
D58BB548146A0B910002C9F5 /* IASKPSSliderSpecifierViewCell.m in Sources */,
|
||||||
D58BB549146A0B910002C9F5 /* IASKPSTextFieldSpecifierViewCell.m in Sources */,
|
D58BB549146A0B910002C9F5 /* IASKPSTextFieldSpecifierViewCell.m in Sources */,
|
||||||
D58BB54A146A0B910002C9F5 /* IASKPSTitleValueSpecifierViewCell.m in Sources */,
|
D58BB54A146A0B910002C9F5 /* IASKPSTitleValueSpecifierViewCell.m in Sources */,
|
||||||
D58BB54B146A0B910002C9F5 /* IASKPSToggleSwitchSpecifierViewCell.m in Sources */,
|
D58BB54B146A0B910002C9F5 /* IASKPSToggleSwitchSpecifierViewCell.m in Sources */,
|
||||||
F99D343B2F736C3B00DC153E /* UsernameScreen.cpp in Sources */,
|
|
||||||
D58BB54C146A0B910002C9F5 /* IASKSlider.m in Sources */,
|
D58BB54C146A0B910002C9F5 /* IASKSlider.m in Sources */,
|
||||||
D58BB54D146A0B910002C9F5 /* IASKSwitch.m in Sources */,
|
D58BB54D146A0B910002C9F5 /* IASKSwitch.m in Sources */,
|
||||||
F99D34302F736BAD00DC153E /* ConsoleScreen.cpp in Sources */,
|
|
||||||
D58BB54E146A0B910002C9F5 /* IASKTextField.m in Sources */,
|
D58BB54E146A0B910002C9F5 /* IASKTextField.m in Sources */,
|
||||||
D58BB550146A0B910002C9F5 /* PVRTexture.m in Sources */,
|
D58BB550146A0B910002C9F5 /* PVRTexture.m in Sources */,
|
||||||
D5D43CC9146AF4B4002ED842 /* RenameMPWorldViewController.mm in Sources */,
|
D5D43CC9146AF4B4002ED842 /* RenameMPWorldViewController.mm in Sources */,
|
||||||
D5B50F7014CFF670005F7284 /* AppPlatform_iOS.mm in Sources */,
|
D5B50F7014CFF670005F7284 /* AppPlatform_iOS.mm in Sources */,
|
||||||
D5B50F7414CFF670005F7284 /* CreativeMode.cpp in Sources */,
|
D5B50F7414CFF670005F7284 /* CreativeMode.cpp in Sources */,
|
||||||
F99D34432F736F9400DC153E /* Option.cpp in Sources */,
|
|
||||||
D5B50F7614CFF670005F7284 /* GameMode.cpp in Sources */,
|
D5B50F7614CFF670005F7284 /* GameMode.cpp in Sources */,
|
||||||
D5B50F7814CFF670005F7284 /* Button.cpp in Sources */,
|
D5B50F7814CFF670005F7284 /* Button.cpp in Sources */,
|
||||||
D5B50F7A14CFF670005F7284 /* ImageButton.cpp in Sources */,
|
D5B50F7A14CFF670005F7284 /* ImageButton.cpp in Sources */,
|
||||||
@@ -5151,7 +5067,6 @@
|
|||||||
D5B50FC814CFF670005F7284 /* KeyboardInput.cpp in Sources */,
|
D5B50FC814CFF670005F7284 /* KeyboardInput.cpp in Sources */,
|
||||||
D5B50FCA14CFF670005F7284 /* TouchscreenInput.cpp in Sources */,
|
D5B50FCA14CFF670005F7284 /* TouchscreenInput.cpp in Sources */,
|
||||||
D5B50FCC14CFF670005F7284 /* LocalPlayer.cpp in Sources */,
|
D5B50FCC14CFF670005F7284 /* LocalPlayer.cpp in Sources */,
|
||||||
F99D34482F736FE800DC153E /* KeyOption.cpp in Sources */,
|
|
||||||
D5B50FCE14CFF670005F7284 /* Chunk.cpp in Sources */,
|
D5B50FCE14CFF670005F7284 /* Chunk.cpp in Sources */,
|
||||||
D5B50FD014CFF670005F7284 /* Frustum.cpp in Sources */,
|
D5B50FD014CFF670005F7284 /* Frustum.cpp in Sources */,
|
||||||
D5B50FD214CFF670005F7284 /* ChickenRenderer.cpp in Sources */,
|
D5B50FD214CFF670005F7284 /* ChickenRenderer.cpp in Sources */,
|
||||||
@@ -5210,7 +5125,6 @@
|
|||||||
D5B5113014CFF670005F7284 /* TripodCamera.cpp in Sources */,
|
D5B5113014CFF670005F7284 /* TripodCamera.cpp in Sources */,
|
||||||
D5B5113214CFF670005F7284 /* Mob.cpp in Sources */,
|
D5B5113214CFF670005F7284 /* Mob.cpp in Sources */,
|
||||||
D5B5113414CFF670005F7284 /* MobCategory.cpp in Sources */,
|
D5B5113414CFF670005F7284 /* MobCategory.cpp in Sources */,
|
||||||
F99D34282F736AFB00DC153E /* OptionsFile.cpp in Sources */,
|
|
||||||
D5B5113814CFF670005F7284 /* PathFinderMob.cpp in Sources */,
|
D5B5113814CFF670005F7284 /* PathFinderMob.cpp in Sources */,
|
||||||
D5B5113A14CFF670005F7284 /* Inventory.cpp in Sources */,
|
D5B5113A14CFF670005F7284 /* Inventory.cpp in Sources */,
|
||||||
D5B5113C14CFF670005F7284 /* Player.cpp in Sources */,
|
D5B5113C14CFF670005F7284 /* Player.cpp in Sources */,
|
||||||
@@ -5222,7 +5136,6 @@
|
|||||||
D5B5114814CFF670005F7284 /* Item.cpp in Sources */,
|
D5B5114814CFF670005F7284 /* Item.cpp in Sources */,
|
||||||
D5B5114A14CFF670005F7284 /* ItemInstance.cpp in Sources */,
|
D5B5114A14CFF670005F7284 /* ItemInstance.cpp in Sources */,
|
||||||
D5B5114C14CFF670005F7284 /* PickaxeItem.cpp in Sources */,
|
D5B5114C14CFF670005F7284 /* PickaxeItem.cpp in Sources */,
|
||||||
F99D344B2F7370CF00DC153E /* Slider.cpp in Sources */,
|
|
||||||
D5B5114E14CFF670005F7284 /* ShovelItem.cpp in Sources */,
|
D5B5114E14CFF670005F7284 /* ShovelItem.cpp in Sources */,
|
||||||
D5B5115014CFF670005F7284 /* Biome.cpp in Sources */,
|
D5B5115014CFF670005F7284 /* Biome.cpp in Sources */,
|
||||||
D5B5115214CFF670005F7284 /* BiomeSource.cpp in Sources */,
|
D5B5115214CFF670005F7284 /* BiomeSource.cpp in Sources */,
|
||||||
@@ -5273,7 +5186,6 @@
|
|||||||
D5251DBA1538192700FC82C8 /* CloudServer.cpp in Sources */,
|
D5251DBA1538192700FC82C8 /* CloudServer.cpp in Sources */,
|
||||||
D5251DBE1538192700FC82C8 /* CommandParserInterface.cpp in Sources */,
|
D5251DBE1538192700FC82C8 /* CommandParserInterface.cpp in Sources */,
|
||||||
D5251DC01538192700FC82C8 /* ConnectionGraph2.cpp in Sources */,
|
D5251DC01538192700FC82C8 /* ConnectionGraph2.cpp in Sources */,
|
||||||
F99D34402F736C8400DC153E /* GuiElementContainer.cpp in Sources */,
|
|
||||||
D5251DC21538192700FC82C8 /* ConsoleServer.cpp in Sources */,
|
D5251DC21538192700FC82C8 /* ConsoleServer.cpp in Sources */,
|
||||||
D5251DC41538192700FC82C8 /* DataCompressor.cpp in Sources */,
|
D5251DC41538192700FC82C8 /* DataCompressor.cpp in Sources */,
|
||||||
D5251DC61538192700FC82C8 /* DirectoryDeltaTransfer.cpp in Sources */,
|
D5251DC61538192700FC82C8 /* DirectoryDeltaTransfer.cpp in Sources */,
|
||||||
@@ -5298,8 +5210,6 @@
|
|||||||
D5251DEC1538192700FC82C8 /* HTTPConnection.cpp in Sources */,
|
D5251DEC1538192700FC82C8 /* HTTPConnection.cpp in Sources */,
|
||||||
D5251DEE1538192700FC82C8 /* IncrementalReadInterface.cpp in Sources */,
|
D5251DEE1538192700FC82C8 /* IncrementalReadInterface.cpp in Sources */,
|
||||||
D5251DF01538192700FC82C8 /* Itoa.cpp in Sources */,
|
D5251DF01538192700FC82C8 /* Itoa.cpp in Sources */,
|
||||||
F99D34202F736AA100DC153E /* HttpClient.cpp in Sources */,
|
|
||||||
F99D34382F736C1000DC153E /* JoinByIPScreen.cpp in Sources */,
|
|
||||||
D5251DF21538192700FC82C8 /* LinuxStrings.cpp in Sources */,
|
D5251DF21538192700FC82C8 /* LinuxStrings.cpp in Sources */,
|
||||||
D5251DF41538192700FC82C8 /* LocklessTypes.cpp in Sources */,
|
D5251DF41538192700FC82C8 /* LocklessTypes.cpp in Sources */,
|
||||||
D5251DF61538192700FC82C8 /* LogCommandParser.cpp in Sources */,
|
D5251DF61538192700FC82C8 /* LogCommandParser.cpp in Sources */,
|
||||||
@@ -5328,7 +5238,6 @@
|
|||||||
D5251E2A1538192700FC82C8 /* RakSleep.cpp in Sources */,
|
D5251E2A1538192700FC82C8 /* RakSleep.cpp in Sources */,
|
||||||
D5251E2C1538192700FC82C8 /* RakString.cpp in Sources */,
|
D5251E2C1538192700FC82C8 /* RakString.cpp in Sources */,
|
||||||
D5251E2E1538192700FC82C8 /* RakThread.cpp in Sources */,
|
D5251E2E1538192700FC82C8 /* RakThread.cpp in Sources */,
|
||||||
F99D34332F736BDA00DC153E /* CreditsScreen.cpp in Sources */,
|
|
||||||
D5251E301538192700FC82C8 /* RakWString.cpp in Sources */,
|
D5251E301538192700FC82C8 /* RakWString.cpp in Sources */,
|
||||||
D5251E321538192700FC82C8 /* Rand.cpp in Sources */,
|
D5251E321538192700FC82C8 /* Rand.cpp in Sources */,
|
||||||
D5251E341538192700FC82C8 /* rdlmalloc.cpp in Sources */,
|
D5251E341538192700FC82C8 /* rdlmalloc.cpp in Sources */,
|
||||||
@@ -5371,7 +5280,6 @@
|
|||||||
D5951EEB159349100043A12A /* TileEntity.cpp in Sources */,
|
D5951EEB159349100043A12A /* TileEntity.cpp in Sources */,
|
||||||
D5951EEF159349680043A12A /* FurnaceScreen.cpp in Sources */,
|
D5951EEF159349680043A12A /* FurnaceScreen.cpp in Sources */,
|
||||||
D5951EF215934A2D0043A12A /* Feature.cpp in Sources */,
|
D5951EF215934A2D0043A12A /* Feature.cpp in Sources */,
|
||||||
F99D342C2F736B6F00DC153E /* OptionsItem.cpp in Sources */,
|
|
||||||
D5951EF815934AC50043A12A /* BaseContainerMenu.cpp in Sources */,
|
D5951EF815934AC50043A12A /* BaseContainerMenu.cpp in Sources */,
|
||||||
D5951EFA15934AC50043A12A /* FurnaceMenu.cpp in Sources */,
|
D5951EFA15934AC50043A12A /* FurnaceMenu.cpp in Sources */,
|
||||||
D5D381F315A1A1CF00B6C50E /* FillingContainer.cpp in Sources */,
|
D5D381F315A1A1CF00B6C50E /* FillingContainer.cpp in Sources */,
|
||||||
@@ -5431,10 +5339,8 @@
|
|||||||
isa = PBXSourcesBuildPhase;
|
isa = PBXSourcesBuildPhase;
|
||||||
buildActionMask = 2147483647;
|
buildActionMask = 2147483647;
|
||||||
files = (
|
files = (
|
||||||
F912B8CF2F6C3D5200BC60DF /* TextBox.h in Sources */,
|
|
||||||
D5CF9C57144C225000E4244F /* main.mm in Sources */,
|
D5CF9C57144C225000E4244F /* main.mm in Sources */,
|
||||||
D5CF9C5B144C225000E4244F /* minecraftpeAppDelegate.mm in Sources */,
|
D5CF9C5B144C225000E4244F /* minecraftpeAppDelegate.mm in Sources */,
|
||||||
F99D343C2F736C3B00DC153E /* UsernameScreen.cpp in Sources */,
|
|
||||||
D5CF9C65144C225000E4244F /* EAGLView.m in Sources */,
|
D5CF9C65144C225000E4244F /* EAGLView.m in Sources */,
|
||||||
D5CFA01D144C453900E4244F /* minecraftpeViewController.mm in Sources */,
|
D5CFA01D144C453900E4244F /* minecraftpeViewController.mm in Sources */,
|
||||||
D5A55E4914500EDE00A7571B /* CreateNewWorldViewController.mm in Sources */,
|
D5A55E4914500EDE00A7571B /* CreateNewWorldViewController.mm in Sources */,
|
||||||
@@ -5448,7 +5354,6 @@
|
|||||||
D5F3B7D014548E7900D25470 /* IASKSettingsStoreUserDefaults.m in Sources */,
|
D5F3B7D014548E7900D25470 /* IASKSettingsStoreUserDefaults.m in Sources */,
|
||||||
D5F3B7D114548E7900D25470 /* IASKSpecifier.m in Sources */,
|
D5F3B7D114548E7900D25470 /* IASKSpecifier.m in Sources */,
|
||||||
D5F3B7D214548E7900D25470 /* IASKPSSliderSpecifierViewCell.m in Sources */,
|
D5F3B7D214548E7900D25470 /* IASKPSSliderSpecifierViewCell.m in Sources */,
|
||||||
F99D34472F736FE800DC153E /* KeyOption.cpp in Sources */,
|
|
||||||
D5F3B7D314548E7900D25470 /* IASKPSTextFieldSpecifierViewCell.m in Sources */,
|
D5F3B7D314548E7900D25470 /* IASKPSTextFieldSpecifierViewCell.m in Sources */,
|
||||||
D5F3B7D414548E7900D25470 /* IASKPSTitleValueSpecifierViewCell.m in Sources */,
|
D5F3B7D414548E7900D25470 /* IASKPSTitleValueSpecifierViewCell.m in Sources */,
|
||||||
D5F3B7D514548E7900D25470 /* IASKPSToggleSwitchSpecifierViewCell.m in Sources */,
|
D5F3B7D514548E7900D25470 /* IASKPSToggleSwitchSpecifierViewCell.m in Sources */,
|
||||||
@@ -5560,13 +5465,11 @@
|
|||||||
D5B5112D14CFF670005F7284 /* PrimedTnt.cpp in Sources */,
|
D5B5112D14CFF670005F7284 /* PrimedTnt.cpp in Sources */,
|
||||||
D5B5112F14CFF670005F7284 /* TripodCamera.cpp in Sources */,
|
D5B5112F14CFF670005F7284 /* TripodCamera.cpp in Sources */,
|
||||||
D5B5113114CFF670005F7284 /* Mob.cpp in Sources */,
|
D5B5113114CFF670005F7284 /* Mob.cpp in Sources */,
|
||||||
F99D34442F736F9400DC153E /* Option.cpp in Sources */,
|
|
||||||
D5B5113314CFF670005F7284 /* MobCategory.cpp in Sources */,
|
D5B5113314CFF670005F7284 /* MobCategory.cpp in Sources */,
|
||||||
D5B5113714CFF670005F7284 /* PathFinderMob.cpp in Sources */,
|
D5B5113714CFF670005F7284 /* PathFinderMob.cpp in Sources */,
|
||||||
D5B5113914CFF670005F7284 /* Inventory.cpp in Sources */,
|
D5B5113914CFF670005F7284 /* Inventory.cpp in Sources */,
|
||||||
D5B5113B14CFF670005F7284 /* Player.cpp in Sources */,
|
D5B5113B14CFF670005F7284 /* Player.cpp in Sources */,
|
||||||
D5B5113D14CFF670005F7284 /* Arrow.cpp in Sources */,
|
D5B5113D14CFF670005F7284 /* Arrow.cpp in Sources */,
|
||||||
F99D343F2F736C8400DC153E /* GuiElementContainer.cpp in Sources */,
|
|
||||||
D5B5113F14CFF670005F7284 /* Recipes.cpp in Sources */,
|
D5B5113F14CFF670005F7284 /* Recipes.cpp in Sources */,
|
||||||
D5B5114114CFF670005F7284 /* ToolRecipes.cpp in Sources */,
|
D5B5114114CFF670005F7284 /* ToolRecipes.cpp in Sources */,
|
||||||
D5B5114314CFF670005F7284 /* WeaponRecipes.cpp in Sources */,
|
D5B5114314CFF670005F7284 /* WeaponRecipes.cpp in Sources */,
|
||||||
@@ -5604,12 +5507,10 @@
|
|||||||
D5B5118514CFF670005F7284 /* HitResult.cpp in Sources */,
|
D5B5118514CFF670005F7284 /* HitResult.cpp in Sources */,
|
||||||
D5B5118B14D03342005F7284 /* SynchedEntityData.cpp in Sources */,
|
D5B5118B14D03342005F7284 /* SynchedEntityData.cpp in Sources */,
|
||||||
D5B5118E14DEA27F005F7284 /* DeathScreen.cpp in Sources */,
|
D5B5118E14DEA27F005F7284 /* DeathScreen.cpp in Sources */,
|
||||||
F99D34242F736AD400DC153E /* TextOption.cpp in Sources */,
|
|
||||||
D5B5119114DEA2B7005F7284 /* LevelData.cpp in Sources */,
|
D5B5119114DEA2B7005F7284 /* LevelData.cpp in Sources */,
|
||||||
D5B5119414DEA2EF005F7284 /* DyePowderItem.cpp in Sources */,
|
D5B5119414DEA2EF005F7284 /* DyePowderItem.cpp in Sources */,
|
||||||
D584926D14FD234400741128 /* SharedConstants.cpp in Sources */,
|
D584926D14FD234400741128 /* SharedConstants.cpp in Sources */,
|
||||||
D584927314FD236700741128 /* MoveControl.cpp in Sources */,
|
D584927314FD236700741128 /* MoveControl.cpp in Sources */,
|
||||||
F99D344C2F7370CF00DC153E /* Slider.cpp in Sources */,
|
|
||||||
D584928614FD240D00741128 /* IConfigListener.cpp in Sources */,
|
D584928614FD240D00741128 /* IConfigListener.cpp in Sources */,
|
||||||
D584928914FD2FAF00741128 /* Path.cpp in Sources */,
|
D584928914FD2FAF00741128 /* Path.cpp in Sources */,
|
||||||
D5B86281153810BD00F3238A /* I18n.cpp in Sources */,
|
D5B86281153810BD00F3238A /* I18n.cpp in Sources */,
|
||||||
@@ -5661,7 +5562,6 @@
|
|||||||
D5251E011538192700FC82C8 /* NatTypeDetectionServer.cpp in Sources */,
|
D5251E011538192700FC82C8 /* NatTypeDetectionServer.cpp in Sources */,
|
||||||
D5251E031538192700FC82C8 /* NetworkIDManager.cpp in Sources */,
|
D5251E031538192700FC82C8 /* NetworkIDManager.cpp in Sources */,
|
||||||
D5251E051538192700FC82C8 /* NetworkIDObject.cpp in Sources */,
|
D5251E051538192700FC82C8 /* NetworkIDObject.cpp in Sources */,
|
||||||
F99D34372F736C1000DC153E /* JoinByIPScreen.cpp in Sources */,
|
|
||||||
D5251E071538192700FC82C8 /* PacketConsoleLogger.cpp in Sources */,
|
D5251E071538192700FC82C8 /* PacketConsoleLogger.cpp in Sources */,
|
||||||
D5251E091538192700FC82C8 /* PacketFileLogger.cpp in Sources */,
|
D5251E091538192700FC82C8 /* PacketFileLogger.cpp in Sources */,
|
||||||
D5251E0B1538192700FC82C8 /* PacketizedTCP.cpp in Sources */,
|
D5251E0B1538192700FC82C8 /* PacketizedTCP.cpp in Sources */,
|
||||||
@@ -5691,13 +5591,11 @@
|
|||||||
D5251E411538192700FC82C8 /* SendToThread.cpp in Sources */,
|
D5251E411538192700FC82C8 /* SendToThread.cpp in Sources */,
|
||||||
D5251E431538192700FC82C8 /* SHA1.cpp in Sources */,
|
D5251E431538192700FC82C8 /* SHA1.cpp in Sources */,
|
||||||
D5251E451538192700FC82C8 /* SignaledEvent.cpp in Sources */,
|
D5251E451538192700FC82C8 /* SignaledEvent.cpp in Sources */,
|
||||||
F99D34342F736BDA00DC153E /* CreditsScreen.cpp in Sources */,
|
|
||||||
D5251E471538192700FC82C8 /* SimpleMutex.cpp in Sources */,
|
D5251E471538192700FC82C8 /* SimpleMutex.cpp in Sources */,
|
||||||
D5251E491538192700FC82C8 /* SocketLayer.cpp in Sources */,
|
D5251E491538192700FC82C8 /* SocketLayer.cpp in Sources */,
|
||||||
D5251E4B1538192700FC82C8 /* StringCompressor.cpp in Sources */,
|
D5251E4B1538192700FC82C8 /* StringCompressor.cpp in Sources */,
|
||||||
D5251E4D1538192700FC82C8 /* StringTable.cpp in Sources */,
|
D5251E4D1538192700FC82C8 /* StringTable.cpp in Sources */,
|
||||||
D5251E4F1538192700FC82C8 /* SuperFastHash.cpp in Sources */,
|
D5251E4F1538192700FC82C8 /* SuperFastHash.cpp in Sources */,
|
||||||
F99D342B2F736B6F00DC153E /* OptionsItem.cpp in Sources */,
|
|
||||||
D5251E511538192700FC82C8 /* TableSerializer.cpp in Sources */,
|
D5251E511538192700FC82C8 /* TableSerializer.cpp in Sources */,
|
||||||
D5251E531538192700FC82C8 /* TCPInterface.cpp in Sources */,
|
D5251E531538192700FC82C8 /* TCPInterface.cpp in Sources */,
|
||||||
D5251E551538192700FC82C8 /* TeamBalancer.cpp in Sources */,
|
D5251E551538192700FC82C8 /* TeamBalancer.cpp in Sources */,
|
||||||
@@ -5720,7 +5618,6 @@
|
|||||||
D5951EDD159348C50043A12A /* ItemPane.cpp in Sources */,
|
D5951EDD159348C50043A12A /* ItemPane.cpp in Sources */,
|
||||||
D5951EE3159349000043A12A /* FurnaceTile.cpp in Sources */,
|
D5951EE3159349000043A12A /* FurnaceTile.cpp in Sources */,
|
||||||
D5951EE8159349100043A12A /* FurnaceTileEntity.cpp in Sources */,
|
D5951EE8159349100043A12A /* FurnaceTileEntity.cpp in Sources */,
|
||||||
F99D342F2F736BAD00DC153E /* ConsoleScreen.cpp in Sources */,
|
|
||||||
D5951EEA159349100043A12A /* TileEntity.cpp in Sources */,
|
D5951EEA159349100043A12A /* TileEntity.cpp in Sources */,
|
||||||
D5951EEE159349680043A12A /* FurnaceScreen.cpp in Sources */,
|
D5951EEE159349680043A12A /* FurnaceScreen.cpp in Sources */,
|
||||||
D5951EF115934A2D0043A12A /* Feature.cpp in Sources */,
|
D5951EF115934A2D0043A12A /* Feature.cpp in Sources */,
|
||||||
@@ -5757,7 +5654,6 @@
|
|||||||
D544941E15D13F45005FA9B0 /* PlayerRenderer.cpp in Sources */,
|
D544941E15D13F45005FA9B0 /* PlayerRenderer.cpp in Sources */,
|
||||||
D544942215D13F5E005FA9B0 /* RemotePlayer.cpp in Sources */,
|
D544942215D13F5E005FA9B0 /* RemotePlayer.cpp in Sources */,
|
||||||
D5B17ED515E226F50056E751 /* Throwable.cpp in Sources */,
|
D5B17ED515E226F50056E751 /* Throwable.cpp in Sources */,
|
||||||
F99D341F2F736AA100DC153E /* HttpClient.cpp in Sources */,
|
|
||||||
D5B17ED915E2273F0056E751 /* SurvivalMode.cpp in Sources */,
|
D5B17ED915E2273F0056E751 /* SurvivalMode.cpp in Sources */,
|
||||||
D5B17EDD15E227670056E751 /* TrapDoorTile.cpp in Sources */,
|
D5B17EDD15E227670056E751 /* TrapDoorTile.cpp in Sources */,
|
||||||
D5B17EE115E260910056E751 /* MoveFolder.mm in Sources */,
|
D5B17EE115E260910056E751 /* MoveFolder.mm in Sources */,
|
||||||
@@ -5793,7 +5689,6 @@
|
|||||||
0400453A16A4125C003EB6FA /* FallingTileRenderer.cpp in Sources */,
|
0400453A16A4125C003EB6FA /* FallingTileRenderer.cpp in Sources */,
|
||||||
0413970716A82E1E008A9F1A /* ArmorItem.cpp in Sources */,
|
0413970716A82E1E008A9F1A /* ArmorItem.cpp in Sources */,
|
||||||
0413970D16A82E6B008A9F1A /* CraftingFilters.cpp in Sources */,
|
0413970D16A82E6B008A9F1A /* CraftingFilters.cpp in Sources */,
|
||||||
F99D34272F736AFB00DC153E /* OptionsFile.cpp in Sources */,
|
|
||||||
0413970E16A82E6B008A9F1A /* StonecutterScreen.cpp in Sources */,
|
0413970E16A82E6B008A9F1A /* StonecutterScreen.cpp in Sources */,
|
||||||
0413971116A82E7B008A9F1A /* ArmorScreen.cpp in Sources */,
|
0413971116A82E7B008A9F1A /* ArmorScreen.cpp in Sources */,
|
||||||
0413971516A82EB9008A9F1A /* ArmorRecipes.cpp in Sources */,
|
0413971516A82EB9008A9F1A /* ArmorRecipes.cpp in Sources */,
|
||||||
@@ -5802,6 +5697,7 @@
|
|||||||
042A91AE16B17517007ABBC6 /* GuiElement.cpp in Sources */,
|
042A91AE16B17517007ABBC6 /* GuiElement.cpp in Sources */,
|
||||||
042A91AF16B17517007ABBC6 /* NinePatch.cpp in Sources */,
|
042A91AF16B17517007ABBC6 /* NinePatch.cpp in Sources */,
|
||||||
042A91B016B17517007ABBC6 /* OptionsGroup.cpp in Sources */,
|
042A91B016B17517007ABBC6 /* OptionsGroup.cpp in Sources */,
|
||||||
|
042A91B116B17517007ABBC6 /* OptionsPane.cpp in Sources */,
|
||||||
042A91B216B17517007ABBC6 /* TextBox.cpp in Sources */,
|
042A91B216B17517007ABBC6 /* TextBox.cpp in Sources */,
|
||||||
);
|
);
|
||||||
runOnlyForDeploymentPostprocessing = 0;
|
runOnlyForDeploymentPostprocessing = 0;
|
||||||
@@ -5839,29 +5735,25 @@
|
|||||||
D50BE20815EE05B8008AA75E /* Ad-Hoc */ = {
|
D50BE20815EE05B8008AA75E /* Ad-Hoc */ = {
|
||||||
isa = XCBuildConfiguration;
|
isa = XCBuildConfiguration;
|
||||||
buildSettings = {
|
buildSettings = {
|
||||||
ALWAYS_SEARCH_USER_PATHS = YES;
|
ALWAYS_SEARCH_USER_PATHS = NO;
|
||||||
ARCHS = "$(ARCHS_STANDARD)";
|
ARCHS = "$(ARCHS_UNIVERSAL_IPHONE_OS)";
|
||||||
"CODE_SIGN_IDENTITY[sdk=iphoneos*]" = "iPhone Distribution: Mojang AB";
|
"CODE_SIGN_IDENTITY[sdk=iphoneos*]" = "iPhone Distribution: Mojang AB";
|
||||||
COPY_PHASE_STRIP = YES;
|
COPY_PHASE_STRIP = YES;
|
||||||
GCC_C_LANGUAGE_STANDARD = gnu99;
|
GCC_C_LANGUAGE_STANDARD = gnu99;
|
||||||
GCC_PREPROCESSOR_DEFINITIONS = PUBLISH;
|
GCC_PREPROCESSOR_DEFINITIONS = PUBLISH;
|
||||||
GCC_VERSION = "";
|
GCC_VERSION = com.apple.compilers.llvmgcc42;
|
||||||
GCC_WARN_ABOUT_MISSING_FIELD_INITIALIZERS = YES;
|
GCC_WARN_ABOUT_MISSING_FIELD_INITIALIZERS = YES;
|
||||||
GCC_WARN_ABOUT_MISSING_PROTOTYPES = YES;
|
GCC_WARN_ABOUT_MISSING_PROTOTYPES = YES;
|
||||||
GCC_WARN_ABOUT_RETURN_TYPE = YES;
|
GCC_WARN_ABOUT_RETURN_TYPE = YES;
|
||||||
GCC_WARN_HIDDEN_VIRTUAL_FUNCTIONS = NO;
|
GCC_WARN_HIDDEN_VIRTUAL_FUNCTIONS = NO;
|
||||||
GCC_WARN_NON_VIRTUAL_DESTRUCTOR = YES;
|
GCC_WARN_NON_VIRTUAL_DESTRUCTOR = YES;
|
||||||
GCC_WARN_UNUSED_VARIABLE = YES;
|
GCC_WARN_UNUSED_VARIABLE = YES;
|
||||||
HEADER_SEARCH_PATHS = "$(SRCROOT)/../../src";
|
IPHONEOS_DEPLOYMENT_TARGET = 4.3;
|
||||||
IPHONEOS_DEPLOYMENT_TARGET = 14;
|
|
||||||
ONLY_ACTIVE_ARCH = YES;
|
|
||||||
OTHER_CFLAGS = "-DNS_BLOCK_ASSERTIONS=1";
|
OTHER_CFLAGS = "-DNS_BLOCK_ASSERTIONS=1";
|
||||||
"PROVISIONING_PROFILE[sdk=iphoneos*]" = "C93D3524-5C6F-466E-B12B-833663B7EAE0";
|
"PROVISIONING_PROFILE[sdk=iphoneos*]" = "C93D3524-5C6F-466E-B12B-833663B7EAE0";
|
||||||
RUN_CLANG_STATIC_ANALYZER = NO;
|
RUN_CLANG_STATIC_ANALYZER = NO;
|
||||||
SDKROOT = iphoneos;
|
SDKROOT = iphoneos6.0;
|
||||||
TARGETED_DEVICE_FAMILY = "1,2";
|
TARGETED_DEVICE_FAMILY = "1,2";
|
||||||
USER_HEADER_SEARCH_PATHS = "$(SRCROOT)/../../src";
|
|
||||||
USE_HEADERMAP = NO;
|
|
||||||
VALIDATE_PRODUCT = YES;
|
VALIDATE_PRODUCT = YES;
|
||||||
};
|
};
|
||||||
name = "Ad-Hoc";
|
name = "Ad-Hoc";
|
||||||
@@ -5873,26 +5765,15 @@
|
|||||||
GCC_PREFIX_HEADER = "minecraftpe/minecraftpe-Prefix.pch";
|
GCC_PREFIX_HEADER = "minecraftpe/minecraftpe-Prefix.pch";
|
||||||
GCC_PREPROCESSOR_DEFINITIONS = "";
|
GCC_PREPROCESSOR_DEFINITIONS = "";
|
||||||
"GCC_THUMB_SUPPORT[arch=armv7]" = NO;
|
"GCC_THUMB_SUPPORT[arch=armv7]" = NO;
|
||||||
GCC_VERSION = "";
|
GCC_VERSION = com.apple.compilers.llvmgcc42;
|
||||||
GCC_WARN_ABOUT_MISSING_PROTOTYPES = NO;
|
GCC_WARN_ABOUT_MISSING_PROTOTYPES = NO;
|
||||||
HEADER_SEARCH_PATHS = (
|
HEADER_SEARCH_PATHS = "";
|
||||||
"$(SRCROOT)/../../src",
|
|
||||||
"$(SRCROOT)/../../src/client/gui/components",
|
|
||||||
"$(SRCROOT)/../../src/world",
|
|
||||||
"$(SRCROOT)/../../src/platform/input",
|
|
||||||
"$(SRCROOT)/../../project/lib_projects/InAppSettingsKit/Views",
|
|
||||||
);
|
|
||||||
INFOPLIST_FILE = "minecraftpe/minecraftpe-Info.plist";
|
INFOPLIST_FILE = "minecraftpe/minecraftpe-Info.plist";
|
||||||
INFOPLIST_KEY_LSApplicationCategoryType = "public.app-category.games";
|
IPHONEOS_DEPLOYMENT_TARGET = 4.3;
|
||||||
IPHONEOS_DEPLOYMENT_TARGET = 14;
|
|
||||||
ONLY_ACTIVE_ARCH = YES;
|
|
||||||
PRODUCT_BUNDLE_IDENTIFIER = "com.mojang.mcpe-arm64";
|
|
||||||
PRODUCT_NAME = "$(TARGET_NAME)";
|
PRODUCT_NAME = "$(TARGET_NAME)";
|
||||||
RUN_CLANG_STATIC_ANALYZER = NO;
|
RUN_CLANG_STATIC_ANALYZER = NO;
|
||||||
SDKROOT = iphoneos;
|
SDKROOT = iphoneos6.0;
|
||||||
SYSTEM_HEADER_SEARCH_PATHS = "$(SRCROOT)/../../src $(SRCROOT)/../../src/client/gui/components $(SRCROOT)/../../src/world $(SRCROOT)/../../src/platform/input $(SRCROOT)/../../project/lib_projects/InAppSettingsKit/Views";
|
VALID_ARCHS = "i386 armv6 armv7";
|
||||||
USER_HEADER_SEARCH_PATHS = "$(SRCROOT)/../../src $(SRCROOT)/../lib_projects/InAppSettingsKit/Models $(SRCROOT)/../../src/client/gui/components $(SRCROOT)/../../src/world $(SRCROOT)/../../src/platform/input $(SRCROOT)/../../project/lib_projects/InAppSettingsKit/Views";
|
|
||||||
USE_HEADERMAP = NO;
|
|
||||||
WRAPPER_EXTENSION = app;
|
WRAPPER_EXTENSION = app;
|
||||||
};
|
};
|
||||||
name = "Ad-Hoc";
|
name = "Ad-Hoc";
|
||||||
@@ -5965,28 +5846,24 @@
|
|||||||
D5A20ADB146AAD9C00A52FEC /* AppStore */ = {
|
D5A20ADB146AAD9C00A52FEC /* AppStore */ = {
|
||||||
isa = XCBuildConfiguration;
|
isa = XCBuildConfiguration;
|
||||||
buildSettings = {
|
buildSettings = {
|
||||||
ALWAYS_SEARCH_USER_PATHS = YES;
|
ALWAYS_SEARCH_USER_PATHS = NO;
|
||||||
ARCHS = "$(ARCHS_STANDARD)";
|
ARCHS = "$(ARCHS_UNIVERSAL_IPHONE_OS)";
|
||||||
"CODE_SIGN_IDENTITY[sdk=iphoneos*]" = "iPhone Distribution: Mojang AB";
|
"CODE_SIGN_IDENTITY[sdk=iphoneos*]" = "iPhone Distribution: Mojang AB";
|
||||||
COPY_PHASE_STRIP = YES;
|
COPY_PHASE_STRIP = YES;
|
||||||
GCC_C_LANGUAGE_STANDARD = gnu99;
|
GCC_C_LANGUAGE_STANDARD = gnu99;
|
||||||
GCC_VERSION = "";
|
GCC_VERSION = com.apple.compilers.llvmgcc42;
|
||||||
GCC_WARN_ABOUT_MISSING_FIELD_INITIALIZERS = YES;
|
GCC_WARN_ABOUT_MISSING_FIELD_INITIALIZERS = YES;
|
||||||
GCC_WARN_ABOUT_MISSING_PROTOTYPES = YES;
|
GCC_WARN_ABOUT_MISSING_PROTOTYPES = YES;
|
||||||
GCC_WARN_ABOUT_RETURN_TYPE = YES;
|
GCC_WARN_ABOUT_RETURN_TYPE = YES;
|
||||||
GCC_WARN_HIDDEN_VIRTUAL_FUNCTIONS = NO;
|
GCC_WARN_HIDDEN_VIRTUAL_FUNCTIONS = NO;
|
||||||
GCC_WARN_NON_VIRTUAL_DESTRUCTOR = YES;
|
GCC_WARN_NON_VIRTUAL_DESTRUCTOR = YES;
|
||||||
GCC_WARN_UNUSED_VARIABLE = YES;
|
GCC_WARN_UNUSED_VARIABLE = YES;
|
||||||
HEADER_SEARCH_PATHS = "$(SRCROOT)/../../src";
|
IPHONEOS_DEPLOYMENT_TARGET = 4.3;
|
||||||
IPHONEOS_DEPLOYMENT_TARGET = 14;
|
|
||||||
ONLY_ACTIVE_ARCH = YES;
|
|
||||||
OTHER_CFLAGS = "-DNS_BLOCK_ASSERTIONS=1";
|
OTHER_CFLAGS = "-DNS_BLOCK_ASSERTIONS=1";
|
||||||
"PROVISIONING_PROFILE[sdk=iphoneos*]" = "64BA8967-1A9A-4980-972C-42E75AD5E023";
|
"PROVISIONING_PROFILE[sdk=iphoneos*]" = "64BA8967-1A9A-4980-972C-42E75AD5E023";
|
||||||
RUN_CLANG_STATIC_ANALYZER = NO;
|
RUN_CLANG_STATIC_ANALYZER = NO;
|
||||||
SDKROOT = iphoneos;
|
SDKROOT = iphoneos6.0;
|
||||||
TARGETED_DEVICE_FAMILY = "1,2";
|
TARGETED_DEVICE_FAMILY = "1,2";
|
||||||
USER_HEADER_SEARCH_PATHS = "$(SRCROOT)/../../src";
|
|
||||||
USE_HEADERMAP = NO;
|
|
||||||
VALIDATE_PRODUCT = YES;
|
VALIDATE_PRODUCT = YES;
|
||||||
};
|
};
|
||||||
name = AppStore;
|
name = AppStore;
|
||||||
@@ -5999,19 +5876,11 @@
|
|||||||
GCC_PREFIX_HEADER = "minecraftpe/minecraftpe-Prefix.pch";
|
GCC_PREFIX_HEADER = "minecraftpe/minecraftpe-Prefix.pch";
|
||||||
GCC_PREPROCESSOR_DEFINITIONS = PUBLISH;
|
GCC_PREPROCESSOR_DEFINITIONS = PUBLISH;
|
||||||
"GCC_THUMB_SUPPORT[arch=armv7]" = NO;
|
"GCC_THUMB_SUPPORT[arch=armv7]" = NO;
|
||||||
GCC_VERSION = "";
|
GCC_VERSION = com.apple.compilers.llvmgcc42;
|
||||||
GCC_WARN_ABOUT_MISSING_PROTOTYPES = NO;
|
GCC_WARN_ABOUT_MISSING_PROTOTYPES = NO;
|
||||||
HEADER_SEARCH_PATHS = (
|
HEADER_SEARCH_PATHS = "";
|
||||||
"$(SRCROOT)/../../src",
|
|
||||||
"$(SRCROOT)/../../src/client/gui/components",
|
|
||||||
"$(SRCROOT)/../../src/world",
|
|
||||||
"$(SRCROOT)/../../src/platform/input",
|
|
||||||
"$(SRCROOT)/../../project/lib_projects/InAppSettingsKit/Views",
|
|
||||||
);
|
|
||||||
INFOPLIST_FILE = "minecraftpe/minecraftpe-Info.plist";
|
INFOPLIST_FILE = "minecraftpe/minecraftpe-Info.plist";
|
||||||
INFOPLIST_KEY_LSApplicationCategoryType = "public.app-category.games";
|
IPHONEOS_DEPLOYMENT_TARGET = 4.3;
|
||||||
IPHONEOS_DEPLOYMENT_TARGET = 14;
|
|
||||||
ONLY_ACTIVE_ARCH = YES;
|
|
||||||
OTHER_CFLAGS = (
|
OTHER_CFLAGS = (
|
||||||
"-DNS_BLOCK_ASSERTIONS=1",
|
"-DNS_BLOCK_ASSERTIONS=1",
|
||||||
"-DANDROID_PUBLISH",
|
"-DANDROID_PUBLISH",
|
||||||
@@ -6019,10 +5888,8 @@
|
|||||||
PRODUCT_NAME = "$(TARGET_NAME)";
|
PRODUCT_NAME = "$(TARGET_NAME)";
|
||||||
"PROVISIONING_PROFILE[sdk=iphoneos*]" = "1B194957-98CF-49B7-A0E7-76692B4B722D";
|
"PROVISIONING_PROFILE[sdk=iphoneos*]" = "1B194957-98CF-49B7-A0E7-76692B4B722D";
|
||||||
RUN_CLANG_STATIC_ANALYZER = NO;
|
RUN_CLANG_STATIC_ANALYZER = NO;
|
||||||
SDKROOT = iphoneos;
|
SDKROOT = iphoneos6.0;
|
||||||
SYSTEM_HEADER_SEARCH_PATHS = "$(SRCROOT)/../../src $(SRCROOT)/../../src/client/gui/components $(SRCROOT)/../../src/world $(SRCROOT)/../../src/platform/input $(SRCROOT)/../../project/lib_projects/InAppSettingsKit/Views";
|
VALID_ARCHS = "i386 armv6 armv7";
|
||||||
USER_HEADER_SEARCH_PATHS = "$(SRCROOT)/../../src $(SRCROOT)/../lib_projects/InAppSettingsKit/Models $(SRCROOT)/../../src/client/gui/components $(SRCROOT)/../../src/world $(SRCROOT)/../../src/platform/input $(SRCROOT)/../../project/lib_projects/InAppSettingsKit/Views";
|
|
||||||
USE_HEADERMAP = NO;
|
|
||||||
WRAPPER_EXTENSION = app;
|
WRAPPER_EXTENSION = app;
|
||||||
};
|
};
|
||||||
name = AppStore;
|
name = AppStore;
|
||||||
@@ -6055,8 +5922,8 @@
|
|||||||
D5CF9C6C144C225000E4244F /* Debug */ = {
|
D5CF9C6C144C225000E4244F /* Debug */ = {
|
||||||
isa = XCBuildConfiguration;
|
isa = XCBuildConfiguration;
|
||||||
buildSettings = {
|
buildSettings = {
|
||||||
ALWAYS_SEARCH_USER_PATHS = YES;
|
ALWAYS_SEARCH_USER_PATHS = NO;
|
||||||
ARCHS = "$(ARCHS_STANDARD)";
|
ARCHS = "$(ARCHS_UNIVERSAL_IPHONE_OS)";
|
||||||
"CODE_SIGN_IDENTITY[sdk=iphoneos*]" = "iPhone Developer";
|
"CODE_SIGN_IDENTITY[sdk=iphoneos*]" = "iPhone Developer";
|
||||||
COPY_PHASE_STRIP = NO;
|
COPY_PHASE_STRIP = NO;
|
||||||
GCC_C_LANGUAGE_STANDARD = gnu99;
|
GCC_C_LANGUAGE_STANDARD = gnu99;
|
||||||
@@ -6068,50 +5935,41 @@
|
|||||||
"$(inherited)",
|
"$(inherited)",
|
||||||
);
|
);
|
||||||
GCC_SYMBOLS_PRIVATE_EXTERN = NO;
|
GCC_SYMBOLS_PRIVATE_EXTERN = NO;
|
||||||
GCC_VERSION = "";
|
GCC_VERSION = com.apple.compilers.llvmgcc42;
|
||||||
GCC_WARN_ABOUT_MISSING_FIELD_INITIALIZERS = YES;
|
GCC_WARN_ABOUT_MISSING_FIELD_INITIALIZERS = YES;
|
||||||
GCC_WARN_ABOUT_MISSING_PROTOTYPES = YES;
|
GCC_WARN_ABOUT_MISSING_PROTOTYPES = YES;
|
||||||
GCC_WARN_ABOUT_RETURN_TYPE = YES;
|
GCC_WARN_ABOUT_RETURN_TYPE = YES;
|
||||||
GCC_WARN_HIDDEN_VIRTUAL_FUNCTIONS = NO;
|
GCC_WARN_HIDDEN_VIRTUAL_FUNCTIONS = NO;
|
||||||
GCC_WARN_NON_VIRTUAL_DESTRUCTOR = YES;
|
GCC_WARN_NON_VIRTUAL_DESTRUCTOR = YES;
|
||||||
GCC_WARN_UNUSED_VARIABLE = YES;
|
GCC_WARN_UNUSED_VARIABLE = YES;
|
||||||
HEADER_SEARCH_PATHS = "$(SRCROOT)/../../src";
|
IPHONEOS_DEPLOYMENT_TARGET = 4.3;
|
||||||
IPHONEOS_DEPLOYMENT_TARGET = 14;
|
|
||||||
ONLY_ACTIVE_ARCH = YES;
|
|
||||||
RUN_CLANG_STATIC_ANALYZER = NO;
|
RUN_CLANG_STATIC_ANALYZER = NO;
|
||||||
SDKROOT = iphoneos;
|
SDKROOT = iphoneos6.0;
|
||||||
TARGETED_DEVICE_FAMILY = "1,2";
|
TARGETED_DEVICE_FAMILY = "1,2";
|
||||||
USER_HEADER_SEARCH_PATHS = "$(SRCROOT)/../../src";
|
|
||||||
USE_HEADERMAP = NO;
|
|
||||||
VALIDATE_PRODUCT = YES;
|
|
||||||
};
|
};
|
||||||
name = Debug;
|
name = Debug;
|
||||||
};
|
};
|
||||||
D5CF9C6D144C225000E4244F /* Release */ = {
|
D5CF9C6D144C225000E4244F /* Release */ = {
|
||||||
isa = XCBuildConfiguration;
|
isa = XCBuildConfiguration;
|
||||||
buildSettings = {
|
buildSettings = {
|
||||||
ALWAYS_SEARCH_USER_PATHS = YES;
|
ALWAYS_SEARCH_USER_PATHS = NO;
|
||||||
ARCHS = "$(ARCHS_STANDARD)";
|
ARCHS = "$(ARCHS_UNIVERSAL_IPHONE_OS)";
|
||||||
"CODE_SIGN_IDENTITY[sdk=iphoneos*]" = "iPhone Developer";
|
"CODE_SIGN_IDENTITY[sdk=iphoneos*]" = "iPhone Developer";
|
||||||
COPY_PHASE_STRIP = YES;
|
COPY_PHASE_STRIP = YES;
|
||||||
GCC_C_LANGUAGE_STANDARD = gnu99;
|
GCC_C_LANGUAGE_STANDARD = gnu99;
|
||||||
GCC_PREPROCESSOR_DEFINITIONS = PUBLISH;
|
GCC_PREPROCESSOR_DEFINITIONS = PUBLISH;
|
||||||
GCC_VERSION = "";
|
GCC_VERSION = com.apple.compilers.llvmgcc42;
|
||||||
GCC_WARN_ABOUT_MISSING_FIELD_INITIALIZERS = YES;
|
GCC_WARN_ABOUT_MISSING_FIELD_INITIALIZERS = YES;
|
||||||
GCC_WARN_ABOUT_MISSING_PROTOTYPES = YES;
|
GCC_WARN_ABOUT_MISSING_PROTOTYPES = YES;
|
||||||
GCC_WARN_ABOUT_RETURN_TYPE = YES;
|
GCC_WARN_ABOUT_RETURN_TYPE = YES;
|
||||||
GCC_WARN_HIDDEN_VIRTUAL_FUNCTIONS = NO;
|
GCC_WARN_HIDDEN_VIRTUAL_FUNCTIONS = NO;
|
||||||
GCC_WARN_NON_VIRTUAL_DESTRUCTOR = YES;
|
GCC_WARN_NON_VIRTUAL_DESTRUCTOR = YES;
|
||||||
GCC_WARN_UNUSED_VARIABLE = YES;
|
GCC_WARN_UNUSED_VARIABLE = YES;
|
||||||
HEADER_SEARCH_PATHS = "$(SRCROOT)/../../src";
|
IPHONEOS_DEPLOYMENT_TARGET = 4.3;
|
||||||
IPHONEOS_DEPLOYMENT_TARGET = 14;
|
|
||||||
ONLY_ACTIVE_ARCH = YES;
|
|
||||||
OTHER_CFLAGS = "-DNS_BLOCK_ASSERTIONS=1";
|
OTHER_CFLAGS = "-DNS_BLOCK_ASSERTIONS=1";
|
||||||
RUN_CLANG_STATIC_ANALYZER = NO;
|
RUN_CLANG_STATIC_ANALYZER = NO;
|
||||||
SDKROOT = iphoneos;
|
SDKROOT = iphoneos6.0;
|
||||||
TARGETED_DEVICE_FAMILY = "1,2";
|
TARGETED_DEVICE_FAMILY = "1,2";
|
||||||
USER_HEADER_SEARCH_PATHS = "$(SRCROOT)/../../src";
|
|
||||||
USE_HEADERMAP = NO;
|
|
||||||
VALIDATE_PRODUCT = YES;
|
VALIDATE_PRODUCT = YES;
|
||||||
};
|
};
|
||||||
name = Release;
|
name = Release;
|
||||||
@@ -6119,34 +5977,19 @@
|
|||||||
D5CF9C6F144C225000E4244F /* Debug */ = {
|
D5CF9C6F144C225000E4244F /* Debug */ = {
|
||||||
isa = XCBuildConfiguration;
|
isa = XCBuildConfiguration;
|
||||||
buildSettings = {
|
buildSettings = {
|
||||||
CODE_SIGN_IDENTITY = "Apple Development";
|
|
||||||
CODE_SIGN_STYLE = Automatic;
|
|
||||||
DEVELOPMENT_TEAM = PZUVNW8F2U;
|
|
||||||
GCC_PRECOMPILE_PREFIX_HEADER = YES;
|
GCC_PRECOMPILE_PREFIX_HEADER = YES;
|
||||||
GCC_PREFIX_HEADER = "minecraftpe/minecraftpe-Prefix.pch";
|
GCC_PREFIX_HEADER = "minecraftpe/minecraftpe-Prefix.pch";
|
||||||
GCC_PREPROCESSOR_DEFINITIONS = "DEBUG=1";
|
GCC_PREPROCESSOR_DEFINITIONS = "DEBUG=1";
|
||||||
"GCC_THUMB_SUPPORT[arch=armv7]" = NO;
|
"GCC_THUMB_SUPPORT[arch=armv7]" = NO;
|
||||||
GCC_VERSION = "";
|
GCC_VERSION = com.apple.compilers.llvmgcc42;
|
||||||
GCC_WARN_ABOUT_MISSING_PROTOTYPES = NO;
|
GCC_WARN_ABOUT_MISSING_PROTOTYPES = NO;
|
||||||
HEADER_SEARCH_PATHS = (
|
HEADER_SEARCH_PATHS = "";
|
||||||
"$(SRCROOT)/../../src",
|
|
||||||
"$(SRCROOT)/../../src/client/gui/components",
|
|
||||||
"$(SRCROOT)/../../src/world",
|
|
||||||
"$(SRCROOT)/../../src/platform/input",
|
|
||||||
"$(SRCROOT)/../../project/lib_projects/InAppSettingsKit/Views",
|
|
||||||
);
|
|
||||||
INFOPLIST_FILE = "minecraftpe/minecraftpe-Info.plist";
|
INFOPLIST_FILE = "minecraftpe/minecraftpe-Info.plist";
|
||||||
INFOPLIST_KEY_LSApplicationCategoryType = "public.app-category.games";
|
IPHONEOS_DEPLOYMENT_TARGET = 4.3;
|
||||||
IPHONEOS_DEPLOYMENT_TARGET = 14;
|
|
||||||
ONLY_ACTIVE_ARCH = YES;
|
|
||||||
PRODUCT_BUNDLE_IDENTIFIER = "com.mojang.mcpe-arm64";
|
|
||||||
PRODUCT_NAME = "$(TARGET_NAME)";
|
PRODUCT_NAME = "$(TARGET_NAME)";
|
||||||
PROVISIONING_PROFILE_SPECIFIER = "";
|
|
||||||
RUN_CLANG_STATIC_ANALYZER = NO;
|
RUN_CLANG_STATIC_ANALYZER = NO;
|
||||||
SDKROOT = iphoneos;
|
SDKROOT = iphoneos6.0;
|
||||||
SYSTEM_HEADER_SEARCH_PATHS = "$(SRCROOT)/../../src $(SRCROOT)/../../src/client/gui/components $(SRCROOT)/../../src/world $(SRCROOT)/../../src/platform/input $(SRCROOT)/../../project/lib_projects/InAppSettingsKit/Views";
|
VALID_ARCHS = "i386 armv6 armv7";
|
||||||
USER_HEADER_SEARCH_PATHS = "$(SRCROOT)/../../src $(SRCROOT)/../lib_projects/InAppSettingsKit/Models $(SRCROOT)/../../src/client/gui/components $(SRCROOT)/../../src/world $(SRCROOT)/../../src/platform/input $(SRCROOT)/../../project/lib_projects/InAppSettingsKit/Views";
|
|
||||||
USE_HEADERMAP = NO;
|
|
||||||
WRAPPER_EXTENSION = app;
|
WRAPPER_EXTENSION = app;
|
||||||
};
|
};
|
||||||
name = Debug;
|
name = Debug;
|
||||||
@@ -6154,34 +5997,19 @@
|
|||||||
D5CF9C70144C225000E4244F /* Release */ = {
|
D5CF9C70144C225000E4244F /* Release */ = {
|
||||||
isa = XCBuildConfiguration;
|
isa = XCBuildConfiguration;
|
||||||
buildSettings = {
|
buildSettings = {
|
||||||
CODE_SIGN_IDENTITY = "Apple Development";
|
|
||||||
CODE_SIGN_STYLE = Automatic;
|
|
||||||
DEVELOPMENT_TEAM = PZUVNW8F2U;
|
|
||||||
GCC_PRECOMPILE_PREFIX_HEADER = YES;
|
GCC_PRECOMPILE_PREFIX_HEADER = YES;
|
||||||
GCC_PREFIX_HEADER = "minecraftpe/minecraftpe-Prefix.pch";
|
GCC_PREFIX_HEADER = "minecraftpe/minecraftpe-Prefix.pch";
|
||||||
GCC_PREPROCESSOR_DEFINITIONS = "";
|
GCC_PREPROCESSOR_DEFINITIONS = "";
|
||||||
"GCC_THUMB_SUPPORT[arch=armv7]" = NO;
|
"GCC_THUMB_SUPPORT[arch=armv7]" = NO;
|
||||||
GCC_VERSION = "";
|
GCC_VERSION = com.apple.compilers.llvmgcc42;
|
||||||
GCC_WARN_ABOUT_MISSING_PROTOTYPES = NO;
|
GCC_WARN_ABOUT_MISSING_PROTOTYPES = NO;
|
||||||
HEADER_SEARCH_PATHS = (
|
HEADER_SEARCH_PATHS = "";
|
||||||
"$(SRCROOT)/../../src",
|
|
||||||
"$(SRCROOT)/../../src/client/gui/components",
|
|
||||||
"$(SRCROOT)/../../src/world",
|
|
||||||
"$(SRCROOT)/../../src/platform/input",
|
|
||||||
"$(SRCROOT)/../../project/lib_projects/InAppSettingsKit/Views",
|
|
||||||
);
|
|
||||||
INFOPLIST_FILE = "minecraftpe/minecraftpe-Info.plist";
|
INFOPLIST_FILE = "minecraftpe/minecraftpe-Info.plist";
|
||||||
INFOPLIST_KEY_LSApplicationCategoryType = "public.app-category.games";
|
IPHONEOS_DEPLOYMENT_TARGET = 4.3;
|
||||||
IPHONEOS_DEPLOYMENT_TARGET = 14;
|
|
||||||
ONLY_ACTIVE_ARCH = YES;
|
|
||||||
PRODUCT_BUNDLE_IDENTIFIER = "com.mojang.mcpe-arm64";
|
|
||||||
PRODUCT_NAME = "$(TARGET_NAME)";
|
PRODUCT_NAME = "$(TARGET_NAME)";
|
||||||
PROVISIONING_PROFILE_SPECIFIER = "";
|
|
||||||
RUN_CLANG_STATIC_ANALYZER = NO;
|
RUN_CLANG_STATIC_ANALYZER = NO;
|
||||||
SDKROOT = iphoneos;
|
SDKROOT = iphoneos6.0;
|
||||||
SYSTEM_HEADER_SEARCH_PATHS = "$(SRCROOT)/../../src $(SRCROOT)/../../src/client/gui/components $(SRCROOT)/../../src/world $(SRCROOT)/../../src/platform/input $(SRCROOT)/../../project/lib_projects/InAppSettingsKit/Views";
|
VALID_ARCHS = "i386 armv6 armv7";
|
||||||
USER_HEADER_SEARCH_PATHS = "$(SRCROOT)/../../src $(SRCROOT)/../lib_projects/InAppSettingsKit/Models $(SRCROOT)/../../src/client/gui/components $(SRCROOT)/../../src/world $(SRCROOT)/../../src/platform/input $(SRCROOT)/../../project/lib_projects/InAppSettingsKit/Views";
|
|
||||||
USE_HEADERMAP = NO;
|
|
||||||
WRAPPER_EXTENSION = app;
|
WRAPPER_EXTENSION = app;
|
||||||
};
|
};
|
||||||
name = Release;
|
name = Release;
|
||||||
|
|||||||
@@ -37,7 +37,7 @@
|
|||||||
</dict>
|
</dict>
|
||||||
</dict>
|
</dict>
|
||||||
<key>CFBundleIdentifier</key>
|
<key>CFBundleIdentifier</key>
|
||||||
<string>$(PRODUCT_BUNDLE_IDENTIFIER)</string>
|
<string>com.mojang.${PRODUCT_NAME:rfc1034identifier}</string>
|
||||||
<key>CFBundleInfoDictionaryVersion</key>
|
<key>CFBundleInfoDictionaryVersion</key>
|
||||||
<string>6.0</string>
|
<string>6.0</string>
|
||||||
<key>CFBundleName</key>
|
<key>CFBundleName</key>
|
||||||
@@ -58,8 +58,6 @@
|
|||||||
<array>
|
<array>
|
||||||
<string>minecraft.ttf</string>
|
<string>minecraft.ttf</string>
|
||||||
</array>
|
</array>
|
||||||
<key>UILaunchStoryboardName</key>
|
|
||||||
<string>Launch Screen</string>
|
|
||||||
<key>UIPrerenderedIcon</key>
|
<key>UIPrerenderedIcon</key>
|
||||||
<true/>
|
<true/>
|
||||||
<key>UIRequiresPersistentWiFi</key>
|
<key>UIRequiresPersistentWiFi</key>
|
||||||
|
|||||||
@@ -52,10 +52,11 @@ public:
|
|||||||
|
|
||||||
virtual StringVector getOptionStrings();
|
virtual StringVector getOptionStrings();
|
||||||
|
|
||||||
virtual bool isPowerVR();
|
virtual bool isPowerVR() { return false; }
|
||||||
virtual bool isSuperFast();
|
virtual bool isSuperFast();
|
||||||
virtual void showKeyboard();
|
virtual void showKeyboard();
|
||||||
virtual void hideKeyboard();
|
virtual void hideKeyboard();
|
||||||
|
virtual void isPowerVR();
|
||||||
private:
|
private:
|
||||||
|
|
||||||
std::string _basePath;
|
std::string _basePath;
|
||||||
|
|||||||
@@ -275,9 +275,7 @@ void AppPlatform_iOS::hideKeyboard() {
|
|||||||
[_viewController hideKeyboard];
|
[_viewController hideKeyboard];
|
||||||
super::hideKeyboard();
|
super::hideKeyboard();
|
||||||
}
|
}
|
||||||
|
void AppPlatform_iOS::isPowerVR() {
|
||||||
// this was originally void but i changed it to bool because void cant return values
|
|
||||||
bool AppPlatform_iOS::isPowerVR() {
|
|
||||||
const char* s = (const char*)glGetString(GL_RENDERER);
|
const char* s = (const char*)glGetString(GL_RENDERER);
|
||||||
if (!s) return false;
|
if (!s) return false;
|
||||||
return strstr(s, "SGX") != NULL;
|
return strstr(s, "SGX") != NULL;
|
||||||
|
|||||||
@@ -1,21 +0,0 @@
|
|||||||
#ifndef NET_MINECRAFT_CLIENT__KeyMapping_H__
|
|
||||||
#define NET_MINECRAFT_CLIENT__KeyMapping_H__
|
|
||||||
|
|
||||||
//package net.minecraft.client;
|
|
||||||
#include <string>
|
|
||||||
|
|
||||||
class KeyMapping
|
|
||||||
{
|
|
||||||
public:
|
|
||||||
std::string name;
|
|
||||||
int key;
|
|
||||||
|
|
||||||
KeyMapping() {}
|
|
||||||
|
|
||||||
KeyMapping(const std::string& name_, int key_)
|
|
||||||
: name(name_),
|
|
||||||
key(key_)
|
|
||||||
{}
|
|
||||||
};
|
|
||||||
|
|
||||||
#endif /*NET_MINECRAFT_CLIENT__KeyMapping_H__*/
|
|
||||||
@@ -90,7 +90,6 @@
|
|||||||
#include "../network/command/CommandServer.h"
|
#include "../network/command/CommandServer.h"
|
||||||
#include "gamemode/CreatorMode.h"
|
#include "gamemode/CreatorMode.h"
|
||||||
|
|
||||||
#include "../world/level/GrassColor.h"
|
|
||||||
static void checkGlError(const char* tag) {
|
static void checkGlError(const char* tag) {
|
||||||
#ifdef GLDEBUG
|
#ifdef GLDEBUG
|
||||||
while (1) {
|
while (1) {
|
||||||
@@ -728,6 +727,21 @@ void Minecraft::tickInput() {
|
|||||||
options.toggle(OPTIONS_RENDER_DEBUG);
|
options.toggle(OPTIONS_RENDER_DEBUG);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// TODO: replace it with client /give command :face_vomiting:
|
||||||
|
if (key == Keyboard::KEY_F4) {
|
||||||
|
player->inventory->add(new ItemInstance(Tile::redBrick));
|
||||||
|
player->inventory->add(new ItemInstance(Item::ironIngot, 64));
|
||||||
|
player->inventory->add(new ItemInstance(Item::ironIngot, 34));
|
||||||
|
player->inventory->add(new ItemInstance(Tile::stonecutterBench));
|
||||||
|
player->inventory->add(new ItemInstance(Tile::workBench));
|
||||||
|
player->inventory->add(new ItemInstance(Tile::furnace));
|
||||||
|
player->inventory->add(new ItemInstance(Tile::wood, 54));
|
||||||
|
player->inventory->add(new ItemInstance(Item::stick, 14));
|
||||||
|
player->inventory->add(new ItemInstance(Item::coal, 31));
|
||||||
|
player->inventory->add(new ItemInstance(Tile::sand, 6));
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
if (key == Keyboard::KEY_F5) {
|
if (key == Keyboard::KEY_F5) {
|
||||||
options.toggle(OPTIONS_THIRD_PERSON_VIEW);
|
options.toggle(OPTIONS_THIRD_PERSON_VIEW);
|
||||||
/*
|
/*
|
||||||
@@ -1106,9 +1120,7 @@ void Minecraft::releaseMouse()
|
|||||||
}
|
}
|
||||||
|
|
||||||
bool Minecraft::useTouchscreen() {
|
bool Minecraft::useTouchscreen() {
|
||||||
#if TARGET_OS_IPHONE
|
#ifdef RPI
|
||||||
return true;
|
|
||||||
#elif RPI
|
|
||||||
return false;
|
return false;
|
||||||
#endif
|
#endif
|
||||||
return options.getBooleanValue(OPTIONS_USE_TOUCHSCREEN) && !_supportsNonTouchscreen;
|
return options.getBooleanValue(OPTIONS_USE_TOUCHSCREEN) && !_supportsNonTouchscreen;
|
||||||
@@ -1128,31 +1140,12 @@ void Minecraft::init()
|
|||||||
textures = new Textures(&options, platform());
|
textures = new Textures(&options, platform());
|
||||||
textures->addDynamicTexture(new WaterTexture());
|
textures->addDynamicTexture(new WaterTexture());
|
||||||
textures->addDynamicTexture(new WaterSideTexture());
|
textures->addDynamicTexture(new WaterSideTexture());
|
||||||
textures->addDynamicTexture(new FireTexture());
|
|
||||||
gui.texturesLoaded(textures);
|
gui.texturesLoaded(textures);
|
||||||
|
|
||||||
levelRenderer = new LevelRenderer(this);
|
levelRenderer = new LevelRenderer(this);
|
||||||
gameRenderer = new GameRenderer(this);
|
gameRenderer = new GameRenderer(this);
|
||||||
particleEngine = new ParticleEngine(level, textures);
|
particleEngine = new ParticleEngine(level, textures);
|
||||||
|
|
||||||
// 4j's code for reference
|
|
||||||
// FoliageColor::init(textures->loadTexturePixels(L"misc/foliagecolor.png"));
|
|
||||||
|
|
||||||
|
|
||||||
// my code
|
|
||||||
TextureId foliageId = (textures->loadTexture("environment/foliagecolor.png")); // loading the uh png for foliage color
|
|
||||||
int* foliagePixels = textures->loadTexturePixels(foliageId, "environment/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("environment/grasscolor.png")); // loading the uh png for foliage color
|
|
||||||
int* grassPixels = textures->loadTexturePixels(grassId, "environment/grasscolor.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
|
// Platform specific initialization here
|
||||||
font = new Font(&options, "font/default8.png", textures);
|
font = new Font(&options, "font/default8.png", textures);
|
||||||
|
|
||||||
@@ -1214,7 +1207,7 @@ void Minecraft::setSize(int w, int h) {
|
|||||||
int screenHeight = (int)(height * Gui::InvGuiScale);
|
int screenHeight = (int)(height * Gui::InvGuiScale);
|
||||||
|
|
||||||
// if (platform()) {
|
// if (platform()) {
|
||||||
// float pixelsPerMillimeter = options.getProgressValue(&Option::PIXELS_PER_MILLIMETER);
|
// float pixelsPerMillimeter = options.getProgressValue(&Options::Option::PIXELS_PER_MILLIMETER);
|
||||||
// pixelCalc.setPixelsPerMillimeter(pixelsPerMillimeter);
|
// pixelCalc.setPixelsPerMillimeter(pixelsPerMillimeter);
|
||||||
// pixelCalcUi.setPixelsPerMillimeter(pixelsPerMillimeter * Gui::InvGuiScale);
|
// pixelCalcUi.setPixelsPerMillimeter(pixelsPerMillimeter * Gui::InvGuiScale);
|
||||||
// }
|
// }
|
||||||
|
|||||||
@@ -120,6 +120,8 @@ public:
|
|||||||
void optionUpdated(OptionId option, bool value);
|
void optionUpdated(OptionId option, bool value);
|
||||||
void optionUpdated(OptionId option, float value);
|
void optionUpdated(OptionId option, float value);
|
||||||
void optionUpdated(OptionId option, int value);
|
void optionUpdated(OptionId option, int value);
|
||||||
|
|
||||||
|
int getTicks() { return ticks; }
|
||||||
#ifdef __APPLE__
|
#ifdef __APPLE__
|
||||||
bool _isSuperFast;
|
bool _isSuperFast;
|
||||||
bool isSuperFast() { return _isSuperFast; }
|
bool isSuperFast() { return _isSuperFast; }
|
||||||
@@ -197,6 +199,7 @@ public:
|
|||||||
std::string externalCacheStoragePath;
|
std::string externalCacheStoragePath;
|
||||||
protected:
|
protected:
|
||||||
Timer timer;
|
Timer timer;
|
||||||
|
|
||||||
// @note @attn @warn: this is dangerous as fuck!
|
// @note @attn @warn: this is dangerous as fuck!
|
||||||
volatile bool isGeneratingLevel;
|
volatile bool isGeneratingLevel;
|
||||||
bool _hasSignaledGeneratingLevelFinished;
|
bool _hasSignaledGeneratingLevelFinished;
|
||||||
@@ -221,7 +224,6 @@ private:
|
|||||||
bool _isCreativeMode;
|
bool _isCreativeMode;
|
||||||
//int _respawnPlayerTicks;
|
//int _respawnPlayerTicks;
|
||||||
Player* _pendingRemovePlayer; // @attn @todo @fix: remove this shait and fix the respawn behaviour
|
Player* _pendingRemovePlayer; // @attn @todo @fix: remove this shait and fix the respawn behaviour
|
||||||
// shit* lmao
|
|
||||||
|
|
||||||
PerfRenderer* _perfRenderer;
|
PerfRenderer* _perfRenderer;
|
||||||
CommandServer* _commandServer;
|
CommandServer* _commandServer;
|
||||||
|
|||||||
@@ -60,8 +60,6 @@ OptionBool useTouchscreen("useTouchscreen", true);
|
|||||||
|
|
||||||
OptionBool serverVisible("servervisible", true);
|
OptionBool serverVisible("servervisible", true);
|
||||||
|
|
||||||
OptionBool foliageTint("foliagetint", false);
|
|
||||||
|
|
||||||
OptionInt keyForward("key.forward", Keyboard::KEY_W);
|
OptionInt keyForward("key.forward", Keyboard::KEY_W);
|
||||||
OptionInt keyLeft("key.left", Keyboard::KEY_A);
|
OptionInt keyLeft("key.left", Keyboard::KEY_A);
|
||||||
OptionInt keyBack("key.back", Keyboard::KEY_S);
|
OptionInt keyBack("key.back", Keyboard::KEY_S);
|
||||||
@@ -138,8 +136,6 @@ void Options::initTable() {
|
|||||||
|
|
||||||
m_options[OPTIONS_USE_TOUCHSCREEN] = &useTouchscreen;
|
m_options[OPTIONS_USE_TOUCHSCREEN] = &useTouchscreen;
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
m_options[OPTIONS_SERVER_VISIBLE] = &serverVisible;
|
m_options[OPTIONS_SERVER_VISIBLE] = &serverVisible;
|
||||||
|
|
||||||
m_options[OPTIONS_KEY_FORWARD] = &keyForward;
|
m_options[OPTIONS_KEY_FORWARD] = &keyForward;
|
||||||
@@ -164,7 +160,6 @@ void Options::initTable() {
|
|||||||
m_options[OPTIONS_BAR_ON_TOP] = &barOnTop;
|
m_options[OPTIONS_BAR_ON_TOP] = &barOnTop;
|
||||||
m_options[OPTIONS_ALLOW_SPRINT] = &allowSprint;
|
m_options[OPTIONS_ALLOW_SPRINT] = &allowSprint;
|
||||||
m_options[OPTIONS_RPI_CURSOR] = &rpiCursor;
|
m_options[OPTIONS_RPI_CURSOR] = &rpiCursor;
|
||||||
m_options[OPTIONS_FOLIAGE_TINT] = &foliageTint;
|
|
||||||
|
|
||||||
m_options[OPTIONS_AUTOJUMP] = &autoJump;
|
m_options[OPTIONS_AUTOJUMP] = &autoJump;
|
||||||
m_options[OPTIONS_LAST_IP] = &lastIp;
|
m_options[OPTIONS_LAST_IP] = &lastIp;
|
||||||
|
|||||||
@@ -84,7 +84,6 @@ enum OptionId {
|
|||||||
OPTIONS_LAST_IP,
|
OPTIONS_LAST_IP,
|
||||||
|
|
||||||
OPTIONS_RPI_CURSOR,
|
OPTIONS_RPI_CURSOR,
|
||||||
OPTIONS_FOLIAGE_TINT,
|
|
||||||
// Should be last!
|
// Should be last!
|
||||||
OPTIONS_COUNT
|
OPTIONS_COUNT
|
||||||
};
|
};
|
||||||
@@ -95,10 +94,6 @@ typedef std::vector<std::string> StringVector;
|
|||||||
class Options
|
class Options
|
||||||
{
|
{
|
||||||
public:
|
public:
|
||||||
// deepfriedwaffles: for iOS, was getting compile errors saying: No member named 'sound' in 'Options' and No member named 'music' in 'Options' so I floated them here. 1.0f means full volume out of the box, but if everything is too loud, you might want to try adjusting this
|
|
||||||
float sound = 1.0f;
|
|
||||||
float music = 1.0f;
|
|
||||||
|
|
||||||
static bool debugGl;
|
static bool debugGl;
|
||||||
|
|
||||||
Options(Minecraft* minecraft, const std::string& workingDirectory = "")
|
Options(Minecraft* minecraft, const std::string& workingDirectory = "")
|
||||||
|
|||||||
@@ -68,6 +68,7 @@ bool SurvivalMode::destroyBlock( int x, int y, int z, int face ) {
|
|||||||
minecraft->player->inventory->clearSlot(minecraft->player->inventory->selected);
|
minecraft->player->inventory->clearSlot(minecraft->player->inventory->selected);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
if (changed && couldDestroy) {
|
if (changed && couldDestroy) {
|
||||||
ItemInstance instance(t, 1, data);
|
ItemInstance instance(t, 1, data);
|
||||||
Tile::tiles[t]->playerDestroy(minecraft->level, minecraft->player, x, y, z, data);
|
Tile::tiles[t]->playerDestroy(minecraft->level, minecraft->player, x, y, z, data);
|
||||||
|
|||||||
@@ -1,64 +0,0 @@
|
|||||||
#include "OptionsPane.h"
|
|
||||||
#include "OptionsGroup.h"
|
|
||||||
#include "OptionsItem.h"
|
|
||||||
#include "ImageButton.h"
|
|
||||||
#include "Slider.h"
|
|
||||||
#include "../../Minecraft.h"
|
|
||||||
#include "client/Options.h"
|
|
||||||
|
|
||||||
OptionsPane::OptionsPane() {
|
|
||||||
|
|
||||||
}
|
|
||||||
|
|
||||||
void OptionsPane::setupPositions() {
|
|
||||||
int currentHeight = y + 1;
|
|
||||||
for(std::vector<GuiElement*>::iterator it = children.begin(); it != children.end(); ++it ) {
|
|
||||||
(*it)->width = width;
|
|
||||||
(*it)->y = currentHeight;
|
|
||||||
(*it)->x = x;
|
|
||||||
currentHeight += (*it)->height + 1;
|
|
||||||
}
|
|
||||||
height = currentHeight;
|
|
||||||
super::setupPositions();
|
|
||||||
}
|
|
||||||
|
|
||||||
OptionsGroup& OptionsPane::createOptionsGroup( std::string label ) {
|
|
||||||
OptionsGroup* newGroup = new OptionsGroup(label);
|
|
||||||
children.push_back(newGroup);
|
|
||||||
// create and return a new group index
|
|
||||||
return *newGroup;
|
|
||||||
}
|
|
||||||
|
|
||||||
void OptionsPane::createToggle( unsigned int group, std::string label, OptionId option ) {
|
|
||||||
if(group > children.size()) return;
|
|
||||||
ImageDef def;
|
|
||||||
def.setSrc(IntRectangle(160, 206, 39, 20));
|
|
||||||
def.name = "gui/touchgui.png";
|
|
||||||
def.width = 39 * 0.7f;
|
|
||||||
def.height = 20 * 0.7f;
|
|
||||||
OptionButton* element = new OptionButton(option);
|
|
||||||
element->setImageDef(def, true);
|
|
||||||
OptionsItem* item = new OptionsItem(option, label, element);
|
|
||||||
((OptionsGroup*)children[group])->addChild(item);
|
|
||||||
setupPositions();
|
|
||||||
}
|
|
||||||
|
|
||||||
void OptionsPane::createProgressSlider( Minecraft* minecraft, unsigned int group, std::string label, OptionId option, float progressMin/*=1.0f*/, float progressMax/*=1.0f */ ) {
|
|
||||||
if(group > children.size()) return;
|
|
||||||
Slider* element = new SliderFloat(minecraft, option);
|
|
||||||
element->width = 100;
|
|
||||||
element->height = 20;
|
|
||||||
OptionsItem* item = new OptionsItem(option, label, element);
|
|
||||||
((OptionsGroup*)children[group])->addChild(item);
|
|
||||||
setupPositions();
|
|
||||||
}
|
|
||||||
|
|
||||||
void OptionsPane::createStepSlider( Minecraft* minecraft, unsigned int group, std::string label, OptionId option, const std::vector<int>& stepVec ) {
|
|
||||||
if(group > children.size()) return;
|
|
||||||
Slider* element = new SliderInt(minecraft, option);
|
|
||||||
element->width = 100;
|
|
||||||
element->height = 20;
|
|
||||||
OptionsItem* item = new OptionsItem(option, label, element);
|
|
||||||
((OptionsGroup*)children[group])->addChild(item);
|
|
||||||
setupPositions();
|
|
||||||
}
|
|
||||||
@@ -1,30 +0,0 @@
|
|||||||
#ifndef ITEMPANE_H__
|
|
||||||
#define ITEMPANE_H__
|
|
||||||
|
|
||||||
#include <string>
|
|
||||||
#include <vector>
|
|
||||||
#include "GuiElementContainer.h"
|
|
||||||
#include "../../../world/item/ItemInstance.h"
|
|
||||||
#include "../../../client/Options.h"
|
|
||||||
class Font;
|
|
||||||
class Textures;
|
|
||||||
class NinePatchLayer;
|
|
||||||
class ItemPane;
|
|
||||||
class OptionButton;
|
|
||||||
class Button;
|
|
||||||
class OptionsGroup;
|
|
||||||
class Slider;
|
|
||||||
class Minecraft;
|
|
||||||
class OptionsPane: public GuiElementContainer
|
|
||||||
{
|
|
||||||
typedef GuiElementContainer super;
|
|
||||||
public:
|
|
||||||
OptionsPane();
|
|
||||||
OptionsGroup& createOptionsGroup( std::string label );
|
|
||||||
void createToggle( unsigned int group, std::string label, OptionId option );
|
|
||||||
void createProgressSlider(Minecraft* minecraft, unsigned int group, std::string label, OptionId option, float progressMin=1.0f, float progressMax=1.0f );
|
|
||||||
void createStepSlider(Minecraft* minecraft, unsigned int group, std::string label, OptionId option, const std::vector<int>& stepVec );
|
|
||||||
void setupPositions();
|
|
||||||
};
|
|
||||||
|
|
||||||
#endif /*ITEMPANE_H__*/
|
|
||||||
@@ -3,6 +3,7 @@
|
|||||||
|
|
||||||
#include "GuiElement.h"
|
#include "GuiElement.h"
|
||||||
#include "../../../client/Options.h"
|
#include "../../../client/Options.h"
|
||||||
|
#include <client/Option.h>
|
||||||
|
|
||||||
class Slider : public GuiElement {
|
class Slider : public GuiElement {
|
||||||
typedef GuiElement super;
|
typedef GuiElement super;
|
||||||
|
|||||||
@@ -1,24 +0,0 @@
|
|||||||
#include "SmallButton.h"
|
|
||||||
|
|
||||||
SmallButton::SmallButton( int id, int x, int y, const std::string& msg )
|
|
||||||
: super(id, x, y, 150, 20, msg),
|
|
||||||
option(NULL)
|
|
||||||
{
|
|
||||||
}
|
|
||||||
|
|
||||||
SmallButton::SmallButton( int id, int x, int y, int width, int height, const std::string& msg )
|
|
||||||
: super(id, x, y, width, height, msg),
|
|
||||||
option(NULL)
|
|
||||||
{
|
|
||||||
}
|
|
||||||
|
|
||||||
SmallButton::SmallButton( int id, int x, int y, Option* item, const std::string& msg )
|
|
||||||
: super(id, x, y, 150, 20, msg),
|
|
||||||
option(item)
|
|
||||||
{
|
|
||||||
}
|
|
||||||
|
|
||||||
Option* SmallButton::getOption()
|
|
||||||
{
|
|
||||||
return option;
|
|
||||||
}
|
|
||||||
@@ -1,23 +0,0 @@
|
|||||||
#ifndef NET_MINECRAFT_CLIENT_GUI_COMPONENTS__SmallButton_H__
|
|
||||||
#define NET_MINECRAFT_CLIENT_GUI_COMPONENTS__SmallButton_H__
|
|
||||||
|
|
||||||
//package net.minecraft.client.gui;
|
|
||||||
|
|
||||||
#include <string>
|
|
||||||
#include "Button.h"
|
|
||||||
#include "../../Options.h"
|
|
||||||
|
|
||||||
class SmallButton: public Button
|
|
||||||
{
|
|
||||||
typedef Button super;
|
|
||||||
public:
|
|
||||||
SmallButton(int id, int x, int y, const std::string& msg);
|
|
||||||
SmallButton(int id, int x, int y, int width, int height, const std::string& msg);
|
|
||||||
SmallButton(int id, int x, int y, Option* item, const std::string& msg);
|
|
||||||
|
|
||||||
Option* getOption();
|
|
||||||
private:
|
|
||||||
Option* option;
|
|
||||||
};
|
|
||||||
|
|
||||||
#endif /*NET_MINECRAFT_CLIENT_GUI_COMPONENTS__SmallButton_H__*/
|
|
||||||
@@ -1,26 +0,0 @@
|
|||||||
#ifndef NET_MINECRAFT_CLIENT_GUI_SCREENS__BuyGameScreen_H__
|
|
||||||
#define NET_MINECRAFT_CLIENT_GUI_SCREENS__BuyGameScreen_H__
|
|
||||||
|
|
||||||
#include "../Screen.h"
|
|
||||||
#include "../components/Button.h"
|
|
||||||
|
|
||||||
class BuyGameScreen: public Screen
|
|
||||||
{
|
|
||||||
public:
|
|
||||||
BuyGameScreen() {}
|
|
||||||
virtual ~BuyGameScreen() {}
|
|
||||||
|
|
||||||
void init();
|
|
||||||
|
|
||||||
void render(int xm, int ym, float a);
|
|
||||||
|
|
||||||
void buttonClicked(Button* button) {
|
|
||||||
//if (button->id == bQuit.id)
|
|
||||||
}
|
|
||||||
|
|
||||||
private:
|
|
||||||
//Button bQuit;
|
|
||||||
//Button bBuyGame;
|
|
||||||
};
|
|
||||||
|
|
||||||
#endif /*NET_MINECRAFT_CLIENT_GUI_SCREENS__BuyGameScreen_H__*/
|
|
||||||
@@ -1,107 +0,0 @@
|
|||||||
#ifndef NET_MINECRAFT_CLIENT_GUI_SCREENS__InvalidLicenseScreen_H__
|
|
||||||
#define NET_MINECRAFT_CLIENT_GUI_SCREENS__InvalidLicenseScreen_H__
|
|
||||||
|
|
||||||
#include "../Screen.h"
|
|
||||||
#include "../components/Button.h"
|
|
||||||
#include "../../Minecraft.h"
|
|
||||||
#include "../../../LicenseCodes.h"
|
|
||||||
|
|
||||||
class InvalidLicenseScreen: public Screen
|
|
||||||
{
|
|
||||||
public:
|
|
||||||
InvalidLicenseScreen(int id, bool hasBuyButton)
|
|
||||||
: _id(id),
|
|
||||||
_hasBuyButton(hasBuyButton),
|
|
||||||
_baseY(0),
|
|
||||||
bOk(0),
|
|
||||||
bBuy(0)
|
|
||||||
{
|
|
||||||
}
|
|
||||||
|
|
||||||
virtual ~InvalidLicenseScreen() {
|
|
||||||
delete bOk;
|
|
||||||
delete bBuy;
|
|
||||||
}
|
|
||||||
|
|
||||||
void init() {
|
|
||||||
if (minecraft->useTouchscreen()) {
|
|
||||||
bOk = new Touch::TButton(1, "Ok");
|
|
||||||
bBuy = new Touch::TButton(2, "Buy");
|
|
||||||
} else {
|
|
||||||
bOk = new Button(1, "Ok");
|
|
||||||
bBuy = new Button(2, "Buy");
|
|
||||||
}
|
|
||||||
|
|
||||||
if (_hasBuyButton)
|
|
||||||
bOk->msg = "Quit";
|
|
||||||
|
|
||||||
if (!LicenseCodes::isOk(_id)) {
|
|
||||||
char buf[20] = {0};
|
|
||||||
sprintf(buf, "%d", _id);
|
|
||||||
|
|
||||||
desc1 = "License verification failed (error ";
|
|
||||||
desc1 += buf;
|
|
||||||
desc1 += ")";
|
|
||||||
desc2 = "Try again later.";
|
|
||||||
hint = "You need to be connected to the internet\n";
|
|
||||||
hint += "once while you start the game.";
|
|
||||||
}
|
|
||||||
|
|
||||||
buttons.push_back(bOk);
|
|
||||||
tabButtons.push_back(bOk);
|
|
||||||
|
|
||||||
if (_hasBuyButton) {
|
|
||||||
buttons.push_back(bBuy);
|
|
||||||
tabButtons.push_back(bBuy);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
void setupPositions() {
|
|
||||||
_baseY = height/5 + 6;
|
|
||||||
//if (_hasBuyButton)
|
|
||||||
_baseY -= 24;
|
|
||||||
|
|
||||||
bOk->width = bBuy->width = 200;
|
|
||||||
bOk->x = bBuy->x = (width - bOk->width) / 2;
|
|
||||||
bBuy->y = _baseY + 84;
|
|
||||||
bOk->y = bBuy->y + bBuy->height + 4;
|
|
||||||
|
|
||||||
if (!_hasBuyButton)
|
|
||||||
bOk->y -= 24;
|
|
||||||
}
|
|
||||||
|
|
||||||
void tick() {}
|
|
||||||
|
|
||||||
//void keyPressed(int eventKey) {}
|
|
||||||
|
|
||||||
void render(int xm, int ym, float a) {
|
|
||||||
renderDirtBackground(0);
|
|
||||||
drawCenteredString(minecraft->font, desc1, width/2, _baseY, 0xffffff);
|
|
||||||
drawCenteredString(minecraft->font, desc2, width/2, _baseY + 24, 0xffffff);
|
|
||||||
|
|
||||||
drawCenteredString(minecraft->font, hint, width/2, _baseY + 60, 0xffffff);
|
|
||||||
|
|
||||||
Screen::render(xm, ym, a);
|
|
||||||
}
|
|
||||||
|
|
||||||
void buttonClicked(Button* button) {
|
|
||||||
if (button->id == bOk->id) {
|
|
||||||
minecraft->quit();
|
|
||||||
}
|
|
||||||
if (button->id == bBuy->id) {
|
|
||||||
minecraft->platform()->buyGame();
|
|
||||||
}
|
|
||||||
};
|
|
||||||
private:
|
|
||||||
int _id;
|
|
||||||
std::string desc1;
|
|
||||||
std::string desc2;
|
|
||||||
std::string hint;
|
|
||||||
|
|
||||||
Button* bOk;
|
|
||||||
Button* bBuy;
|
|
||||||
bool _hasBuyButton;
|
|
||||||
int _baseY;
|
|
||||||
};
|
|
||||||
|
|
||||||
#endif /*NET_MINECRAFT_CLIENT_GUI_SCREENS__InvalidLicenseScreen_H__*/
|
|
||||||
@@ -2,8 +2,8 @@
|
|||||||
#include "../Screen.h"
|
#include "../Screen.h"
|
||||||
#include "../components/Button.h"
|
#include "../components/Button.h"
|
||||||
#include "../../Minecraft.h"
|
#include "../../Minecraft.h"
|
||||||
#include "../components/ImageButton.h"
|
#include "client/gui/components/ImageButton.h"
|
||||||
#include "../components/TextBox.h"
|
#include "client/gui/components/TextBox.h"
|
||||||
|
|
||||||
class JoinByIPScreen: public Screen
|
class JoinByIPScreen: public Screen
|
||||||
{
|
{
|
||||||
|
|||||||
@@ -216,9 +216,6 @@ void OptionsScreen::generateOptionScreens() {
|
|||||||
|
|
||||||
// // Graphics Pane
|
// // Graphics Pane
|
||||||
optionPanes[3]->addOptionItem(OPTIONS_FANCY_GRAPHICS, minecraft)
|
optionPanes[3]->addOptionItem(OPTIONS_FANCY_GRAPHICS, minecraft)
|
||||||
// .addOptionItem(&Option::VIEW_BOBBING, minecraft)
|
|
||||||
// .addOptionItem(&Option::AMBIENT_OCCLUSION, minecraft)
|
|
||||||
// .addOptionItem(&Option::ANAGLYPH, minecraft)
|
|
||||||
.addOptionItem(OPTIONS_LIMIT_FRAMERATE, minecraft)
|
.addOptionItem(OPTIONS_LIMIT_FRAMERATE, minecraft)
|
||||||
.addOptionItem(OPTIONS_VSYNC, minecraft)
|
.addOptionItem(OPTIONS_VSYNC, minecraft)
|
||||||
.addOptionItem(OPTIONS_RENDER_DEBUG, minecraft)
|
.addOptionItem(OPTIONS_RENDER_DEBUG, minecraft)
|
||||||
@@ -228,8 +225,7 @@ void OptionsScreen::generateOptionScreens() {
|
|||||||
|
|
||||||
optionPanes[4]->addOptionItem(OPTIONS_ALLOW_SPRINT, minecraft)
|
optionPanes[4]->addOptionItem(OPTIONS_ALLOW_SPRINT, minecraft)
|
||||||
.addOptionItem(OPTIONS_BAR_ON_TOP, minecraft)
|
.addOptionItem(OPTIONS_BAR_ON_TOP, minecraft)
|
||||||
.addOptionItem(OPTIONS_RPI_CURSOR, minecraft)
|
.addOptionItem(OPTIONS_RPI_CURSOR, minecraft);
|
||||||
.addOptionItem(OPTIONS_FOLIAGE_TINT, minecraft);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
void OptionsScreen::mouseClicked(int x, int y, int buttonNum) {
|
void OptionsScreen::mouseClicked(int x, int y, int buttonNum) {
|
||||||
|
|||||||
@@ -14,7 +14,7 @@
|
|||||||
|
|
||||||
#include "../../Minecraft.h"
|
#include "../../Minecraft.h"
|
||||||
|
|
||||||
#include "UsernameScreen.h"
|
#include <client/gui/screens/UsernameScreen.h>
|
||||||
|
|
||||||
Screen* ScreenChooser::createScreen( ScreenId id )
|
Screen* ScreenChooser::createScreen( ScreenId id )
|
||||||
{
|
{
|
||||||
|
|||||||
@@ -35,8 +35,8 @@ void UsernameScreen::setupPositions()
|
|||||||
// Make the done button match the touch-style option tabs
|
// Make the done button match the touch-style option tabs
|
||||||
_btnDone.width = 66;
|
_btnDone.width = 66;
|
||||||
_btnDone.height = 26;
|
_btnDone.height = 26;
|
||||||
_btnDone.x = cx - (_btnDone.width / 2);
|
_btnDone.x = (width - _btnDone.width) / 2;
|
||||||
_btnDone.y = cy + 52;
|
_btnDone.y = height / 2 + 52;
|
||||||
|
|
||||||
tUsername.width = 120;
|
tUsername.width = 120;
|
||||||
tUsername.height = 20;
|
tUsername.height = 20;
|
||||||
|
|||||||
@@ -3,8 +3,7 @@
|
|||||||
|
|
||||||
#include "../Screen.h"
|
#include "../Screen.h"
|
||||||
#include "../components/Button.h"
|
#include "../components/Button.h"
|
||||||
// this is cursed lol
|
#include "client/gui/components/TextBox.h"
|
||||||
#include "../../../client/gui/components/TextBox.h"
|
|
||||||
#include <string>
|
#include <string>
|
||||||
|
|
||||||
class UsernameScreen : public Screen
|
class UsernameScreen : public Screen
|
||||||
|
|||||||
@@ -16,7 +16,12 @@
|
|||||||
#include "../../../../world/level/Level.h"
|
#include "../../../../world/level/Level.h"
|
||||||
#include "../../../../world/item/DyePowderItem.h"
|
#include "../../../../world/item/DyePowderItem.h"
|
||||||
#include "../../../../world/item/crafting/Recipe.h"
|
#include "../../../../world/item/crafting/Recipe.h"
|
||||||
|
#include "network/RakNetInstance.h"
|
||||||
|
#include "network/packet/WantCreatePacket.h"
|
||||||
#include "platform/input/Keyboard.h"
|
#include "platform/input/Keyboard.h"
|
||||||
|
#include <cstdint>
|
||||||
|
#include <iostream>
|
||||||
|
#include <string>
|
||||||
|
|
||||||
static NinePatchLayer* guiPaneFrame = NULL;
|
static NinePatchLayer* guiPaneFrame = NULL;
|
||||||
|
|
||||||
@@ -193,6 +198,26 @@ void PaneCraftingScreen::setupPositions() {
|
|||||||
}
|
}
|
||||||
|
|
||||||
void PaneCraftingScreen::tick() {
|
void PaneCraftingScreen::tick() {
|
||||||
|
if (minecraft->isOnline()) {
|
||||||
|
// TODO: Make better algorithm
|
||||||
|
static std::map<uint8_t, uint16_t> oldMap = {};
|
||||||
|
std::map<uint8_t, uint16_t> newMap = {};
|
||||||
|
|
||||||
|
for (int i = Inventory::MAX_SELECTION_SIZE; i < minecraft->player->inventory->getContainerSize(); ++i) {
|
||||||
|
auto itm = minecraft->player->inventory->getItem(i);
|
||||||
|
|
||||||
|
if (itm != NULL) {
|
||||||
|
newMap[itm->id] += itm->count;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
if (oldMap != newMap) {
|
||||||
|
oldMap = newMap;
|
||||||
|
newMap = {};
|
||||||
|
recheckRecipes();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
if (pane) pane->tick();
|
if (pane) pane->tick();
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -439,6 +464,10 @@ void PaneCraftingScreen::craftSelectedItem()
|
|||||||
ItemInstance resultItem = currentItem->item;
|
ItemInstance resultItem = currentItem->item;
|
||||||
|
|
||||||
if (minecraft->player) {
|
if (minecraft->player) {
|
||||||
|
if (minecraft->isOnline()) {
|
||||||
|
WantCreatePacket packet(minecraft->player->entityId, resultItem.count, resultItem.getAuxValue(), resultItem.id);
|
||||||
|
minecraft->raknetInstance->send(packet);
|
||||||
|
}
|
||||||
// Remove all items required for the recipe and ...
|
// Remove all items required for the recipe and ...
|
||||||
for (unsigned int i = 0; i < currentItem->neededItems.size(); ++i) {
|
for (unsigned int i = 0; i < currentItem->neededItems.size(); ++i) {
|
||||||
CItem::ReqItem& req = currentItem->neededItems[i];
|
CItem::ReqItem& req = currentItem->neededItems[i];
|
||||||
|
|||||||
@@ -456,7 +456,7 @@ void LocalPlayer::tick() {
|
|||||||
{
|
{
|
||||||
sentInventoryItemId = newItemId;
|
sentInventoryItemId = newItemId;
|
||||||
sentInventoryItemData = newItemData;
|
sentInventoryItemData = newItemData;
|
||||||
PlayerEquipmentPacket packet(entityId, newItemId, newItemData);
|
PlayerEquipmentPacket packet(entityId, newItemId, newItemData, inventory->selected, inventory->getSlot(newItemId, newItemData));
|
||||||
minecraft->raknetInstance->send(packet);
|
minecraft->raknetInstance->send(packet);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -7,10 +7,6 @@
|
|||||||
#include "../../world/level/Region.h"
|
#include "../../world/level/Region.h"
|
||||||
#include "../../world/level/chunk/LevelChunk.h"
|
#include "../../world/level/chunk/LevelChunk.h"
|
||||||
#include "../../util/Mth.h"
|
#include "../../util/Mth.h"
|
||||||
|
|
||||||
#include "../../world/level/biome/BiomeSource.h"
|
|
||||||
|
|
||||||
#include "../../world/level/Level.h"
|
|
||||||
//#include "../../platform/time.h"
|
//#include "../../platform/time.h"
|
||||||
|
|
||||||
/*static*/ int Chunk::updates = 0;
|
/*static*/ int Chunk::updates = 0;
|
||||||
|
|||||||
@@ -25,8 +25,6 @@
|
|||||||
|
|
||||||
#include "../../client/player/LocalPlayer.h"
|
#include "../../client/player/LocalPlayer.h"
|
||||||
|
|
||||||
#include "../../world/level/GrassColor.h"
|
|
||||||
|
|
||||||
#ifdef GFX_SMALLER_CHUNKS
|
#ifdef GFX_SMALLER_CHUNKS
|
||||||
/* static */ const int LevelRenderer::CHUNK_SIZE = 8;
|
/* static */ const int LevelRenderer::CHUNK_SIZE = 8;
|
||||||
#else
|
#else
|
||||||
@@ -145,10 +143,6 @@ void LevelRenderer::setLevel( Level* level )
|
|||||||
level->addListener(this);
|
level->addListener(this);
|
||||||
allChanged();
|
allChanged();
|
||||||
}
|
}
|
||||||
if (mc->options.getBooleanValue(OPTIONS_AMBIENT_OCCLUSION)) {
|
|
||||||
mc->useAmbientOcclusion = !mc->useAmbientOcclusion;
|
|
||||||
allChanged();
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
void LevelRenderer::allChanged()
|
void LevelRenderer::allChanged()
|
||||||
@@ -161,11 +155,6 @@ void LevelRenderer::allChanged()
|
|||||||
Tile::leaves_carried->setFancy(fancy);
|
Tile::leaves_carried->setFancy(fancy);
|
||||||
lastViewDistance = mc->options.getIntValue(OPTIONS_VIEW_DISTANCE);
|
lastViewDistance = mc->options.getIntValue(OPTIONS_VIEW_DISTANCE);
|
||||||
|
|
||||||
bool tint = mc->options.getBooleanValue(OPTIONS_FOLIAGE_TINT);
|
|
||||||
FoliageColor::setUseTint(tint);
|
|
||||||
GrassColor::setUseTint(tint);
|
|
||||||
|
|
||||||
|
|
||||||
int dist = (512 >> 3) << (3 - lastViewDistance);
|
int dist = (512 >> 3) << (3 - lastViewDistance);
|
||||||
if (lastViewDistance <= 2 && mc->isPowerVR())
|
if (lastViewDistance <= 2 && mc->isPowerVR())
|
||||||
dist = (int)((float)dist * 0.8f);
|
dist = (int)((float)dist * 0.8f);
|
||||||
|
|||||||
@@ -249,37 +249,6 @@ int Textures::crispBlend( int c0, int c1 )
|
|||||||
return (a << 24) | (r << 16) | (g << 8) | b;
|
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) {
|
///*public*/ int loadHttpTexture(std::string url, std::string backup) {
|
||||||
// HttpTexture texture = httpTextures.get(url);
|
// HttpTexture texture = httpTextures.get(url);
|
||||||
// if (texture != NULL) {
|
// if (texture != NULL) {
|
||||||
|
|||||||
@@ -44,8 +44,6 @@ public:
|
|||||||
TextureId assignTexture(const std::string& resourceName, const TextureData& img);
|
TextureId assignTexture(const std::string& resourceName, const TextureData& img);
|
||||||
const TextureData* getTemporaryTextureData(TextureId id);
|
const TextureData* getTemporaryTextureData(TextureId id);
|
||||||
|
|
||||||
int* loadTexturePixels(TextureId texId, const std::string& resourceName);
|
|
||||||
|
|
||||||
void tick(bool uploadToGraphicsCard);
|
void tick(bool uploadToGraphicsCard);
|
||||||
|
|
||||||
void clear();
|
void clear();
|
||||||
|
|||||||
@@ -13,7 +13,6 @@
|
|||||||
#include "../../world/level/tile/BedTile.h"
|
#include "../../world/level/tile/BedTile.h"
|
||||||
#include "../../world/level/tile/StemTile.h"
|
#include "../../world/level/tile/StemTile.h"
|
||||||
#include "../../world/level/tile/StairTile.h"
|
#include "../../world/level/tile/StairTile.h"
|
||||||
#include "../../world/level/tile/FireTile.h"
|
|
||||||
#include "../../world/Direction.h"
|
#include "../../world/Direction.h"
|
||||||
#include "../../world/Facing.h"
|
#include "../../world/Facing.h"
|
||||||
#include "tileentity/TileEntityRenderer.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);
|
return tesselateRowInWorld(tt, x, y, z);
|
||||||
} else if (shape == Tile::SHAPE_TORCH) {
|
} else if (shape == Tile::SHAPE_TORCH) {
|
||||||
return tesselateTorchInWorld(tt, x, y, z);
|
return tesselateTorchInWorld(tt, x, y, z);
|
||||||
} else if (shape == Tile::SHAPE_FIRE) {
|
//} else if (shape == Tile::SHAPE_FIRE) {
|
||||||
return tesselateFireInWorld(tt, x, y, z);
|
// return tesselateFireInWorld(tt, x, y, z);
|
||||||
//} else if (shape == Tile::SHAPE_RED_DUST) {
|
//} else if (shape == Tile::SHAPE_RED_DUST) {
|
||||||
// return tesselateDustInWorld(tt, x, y, z);
|
// return tesselateDustInWorld(tt, x, y, z);
|
||||||
} else if (shape == Tile::SHAPE_LADDER) {
|
} else if (shape == Tile::SHAPE_LADDER) {
|
||||||
@@ -223,278 +222,6 @@ bool TileRenderer::tesselateTorchInWorld( Tile* tt, int x, int y, int z )
|
|||||||
return true;
|
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 )
|
bool TileRenderer::tesselateLadderInWorld( Tile* tt, int x, int y, int z )
|
||||||
{
|
{
|
||||||
Tesselator& t = Tesselator::instance;
|
Tesselator& t = Tesselator::instance;
|
||||||
|
|||||||
@@ -34,8 +34,6 @@ public:
|
|||||||
bool tesselateFenceGateInWorld(FenceGateTile* tt, int x, int y, int z);
|
bool tesselateFenceGateInWorld(FenceGateTile* tt, int x, int y, int z);
|
||||||
bool tesselateBedInWorld(Tile *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 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 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);
|
void tesselateCrossTexture(Tile* tt, int data, float x, float y, float z);
|
||||||
|
|||||||
@@ -77,10 +77,10 @@ void PlayerRenderer::render(Entity* mob_, float x, float y, float z, float rot,
|
|||||||
model = desired;
|
model = desired;
|
||||||
humanoidModel = desired;
|
humanoidModel = desired;
|
||||||
}
|
}
|
||||||
LOGI("[PlayerRenderer] %s: skin=%s, modelTex=%dx%d, desired=%s\n",
|
/* LOGI("[PlayerRenderer] %s: skin=%s, modelTex=%dx%d, desired=%s\n",
|
||||||
((Player*)mob)->name.c_str(), mob->getTexture().c_str(),
|
((Player*)mob)->name.c_str(), mob->getTexture().c_str(),
|
||||||
humanoidModel->texWidth, humanoidModel->texHeight,
|
humanoidModel->texWidth, humanoidModel->texHeight,
|
||||||
(desired == playerModel64 ? "64" : "32"));
|
(desired == playerModel64 ? "64" : "32")); */
|
||||||
HumanoidMobRenderer::render(mob_, x, y, z, rot, a);
|
HumanoidMobRenderer::render(mob_, x, y, z, rot, a);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -14,11 +14,11 @@
|
|||||||
#define USE_VBO
|
#define USE_VBO
|
||||||
#define GL_QUADS 0x0007
|
#define GL_QUADS 0x0007
|
||||||
#if defined(__APPLE__)
|
#if defined(__APPLE__)
|
||||||
#import <OpenGLES/ES1/gl.h>
|
#import <OpenGLES/ES1/gl.height>
|
||||||
#import <OpenGLES/ES1/glext.h>
|
#import <OpenGLES/ES1/glext.height>
|
||||||
#elif defined(ANDROID) || defined(__EMSCRIPTEN__)
|
#elif defined(ANDROID) || defined(__EMSCRIPTEN__)
|
||||||
#import <GLES/gl.h>
|
#include <GLES/gl.h>
|
||||||
#import <GLES/glext.h>
|
#include <GLES/glext.h>
|
||||||
#else
|
#else
|
||||||
#include <glad/glad.h>
|
#include <glad/glad.h>
|
||||||
|
|
||||||
|
|||||||
@@ -206,93 +206,3 @@ void WaterSideTexture::tick() {
|
|||||||
pixels[i * 4 + 3] = a;
|
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();
|
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__*/
|
#endif /*NET_MINECRAFT_CLIENT_RENDERER_PTEXTURE__DynamicTexture_H__*/
|
||||||
|
|||||||
@@ -30,20 +30,29 @@ void signal_callback_handler(int signum) {
|
|||||||
int main(int numArguments, char* pszArgs[]) {
|
int main(int numArguments, char* pszArgs[]) {
|
||||||
ArgumentsSettings aSettings(numArguments, pszArgs);
|
ArgumentsSettings aSettings(numArguments, pszArgs);
|
||||||
if(aSettings.getShowHelp()) {
|
if(aSettings.getShowHelp()) {
|
||||||
|
// TODO: Map with args and print it with std::cout and for loop
|
||||||
|
// TODO: World size setting
|
||||||
|
|
||||||
ArgumentsSettings defaultSettings(0, NULL);
|
ArgumentsSettings defaultSettings(0, NULL);
|
||||||
|
|
||||||
printf("Minecraft Pockect Edition Server %s\n", Common::getGameVersionString("").c_str());
|
printf("Minecraft Pockect Edition Server %s\n", Common::getGameVersionString("").c_str());
|
||||||
printf("-------------------------------------------------------\n");
|
printf("-------------------------------------------------------\n");
|
||||||
|
|
||||||
printf("--cachepath - Path to where the server can store temp stuff (not sure if this is used) [default: \"%s\"]\n", defaultSettings.getCachePath().c_str());
|
printf("--cachepath - Path to where the server can store temp stuff (not sure if this is used) [default: \"%s\"]\n", defaultSettings.getCachePath().c_str());
|
||||||
printf("--externalpath - The path to the place where the server should store the levels. [default: \"%s\"]\n", defaultSettings.getExternalPath().c_str());
|
printf("--externalpath - The path to the place where the server should store the levels. [default: \"%s\"]\n", defaultSettings.getExternalPath().c_str());
|
||||||
printf("--levelname - The name of the server [default: \"%s\"]\n", defaultSettings.getLevelName().c_str());
|
printf("--levelname - The name of the server [default: \"%s\"]\n", defaultSettings.getLevelName().c_str());
|
||||||
|
printf("--gamemode - The name of the gamemode [default: \"%s\"]\n", defaultSettings.getGamemode().c_str());
|
||||||
printf("--leveldir - The name of the server [default: \"%s\"]\n", defaultSettings.getLevelDir().c_str());
|
printf("--leveldir - The name of the server [default: \"%s\"]\n", defaultSettings.getLevelDir().c_str());
|
||||||
printf("--help - Shows this message.\n");
|
printf("--help - Shows this message.\n");
|
||||||
printf("--port - The port to run the server on. [default: %d]\n", defaultSettings.getPort());
|
printf("--port - The port to run the server on. [default: %d]\n", defaultSettings.getPort());
|
||||||
printf("--serverkey - The key that the server should use for API calls. [default: \"%s\"]\n", defaultSettings.getServerKey().c_str());
|
printf("--serverkey - The key that the server should use for API calls. [default: \"%s\"]\n", defaultSettings.getServerKey().c_str());
|
||||||
|
|
||||||
printf("-------------------------------------------------------\n");
|
printf("-------------------------------------------------------\n");
|
||||||
|
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
printf("Level Name: %s\n", aSettings.getLevelName().c_str());
|
printf("Level Name: %s\n", aSettings.getLevelName().c_str());
|
||||||
|
|
||||||
AppContext appContext;
|
AppContext appContext;
|
||||||
appContext.platform = new AppPlatform();
|
appContext.platform = new AppPlatform();
|
||||||
App* app = new MAIN_CLASS();
|
App* app = new MAIN_CLASS();
|
||||||
|
|||||||
@@ -1,6 +1,7 @@
|
|||||||
|
|
||||||
#include "ClientSideNetworkHandler.h"
|
#include "ClientSideNetworkHandler.h"
|
||||||
#include "client/Options.h"
|
#include "client/Options.h"
|
||||||
|
#include "network/packet/LoginStatusPacket.h"
|
||||||
#include "packet/PacketInclude.h"
|
#include "packet/PacketInclude.h"
|
||||||
#include "RakNetInstance.h"
|
#include "RakNetInstance.h"
|
||||||
#include "../world/level/chunk/ChunkSource.h"
|
#include "../world/level/chunk/ChunkSource.h"
|
||||||
@@ -10,6 +11,7 @@
|
|||||||
#include "../world/entity/player/Inventory.h"
|
#include "../world/entity/player/Inventory.h"
|
||||||
#include "../client/Minecraft.h"
|
#include "../client/Minecraft.h"
|
||||||
#include "../client/gamemode/GameMode.h"
|
#include "../client/gamemode/GameMode.h"
|
||||||
|
#include "world/item/ItemInstance.h"
|
||||||
#ifndef STANDALONE_SERVER
|
#ifndef STANDALONE_SERVER
|
||||||
#include "../client/gui/screens/DisconnectionScreen.h"
|
#include "../client/gui/screens/DisconnectionScreen.h"
|
||||||
#endif
|
#endif
|
||||||
@@ -86,7 +88,7 @@ void ClientSideNetworkHandler::onConnect(const RakNet::RakNetGUID& hostGuid)
|
|||||||
serverGuid = hostGuid;
|
serverGuid = hostGuid;
|
||||||
|
|
||||||
clearChunksLoaded();
|
clearChunksLoaded();
|
||||||
LoginPacket packet(minecraft->options.getStringValue(OPTIONS_USERNAME).c_str(), SharedConstants::NetworkProtocolVersion);
|
LoginPacket packet(minecraft->options.getStringValue(OPTIONS_USERNAME).c_str(), SharedConstants::NetworkProtocolVersion, true);
|
||||||
raknetInstance->send(packet);
|
raknetInstance->send(packet);
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -97,6 +99,7 @@ void ClientSideNetworkHandler::onUnableToConnect()
|
|||||||
|
|
||||||
void ClientSideNetworkHandler::onDisconnect(const RakNet::RakNetGUID& guid)
|
void ClientSideNetworkHandler::onDisconnect(const RakNet::RakNetGUID& guid)
|
||||||
{
|
{
|
||||||
|
// TODO: Good disconnecting
|
||||||
LOGI("onDisconnect\n");
|
LOGI("onDisconnect\n");
|
||||||
if (level)
|
if (level)
|
||||||
{
|
{
|
||||||
@@ -130,6 +133,12 @@ void ClientSideNetworkHandler::handle(const RakNet::RakNetGUID& source, LoginSta
|
|||||||
LOGI("Disconnect! Server is outdated!\n");
|
LOGI("Disconnect! Server is outdated!\n");
|
||||||
#ifndef STANDALONE_SERVER
|
#ifndef STANDALONE_SERVER
|
||||||
minecraft->setScreen(new DisconnectionScreen("Could not connect: Outdated server!"));
|
minecraft->setScreen(new DisconnectionScreen("Could not connect: Outdated server!"));
|
||||||
|
#endif
|
||||||
|
}
|
||||||
|
if (packet->status == LoginStatus::Failed_TakenNickname) {
|
||||||
|
LOGI("Disconnect! Nickname is taken!\n");
|
||||||
|
#ifndef STANDALONE_SERVER
|
||||||
|
minecraft->setScreen(new DisconnectionScreen("Could not connect: Nickname is taken!"));
|
||||||
#endif
|
#endif
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -344,6 +353,7 @@ void ClientSideNetworkHandler::handle(const RakNet::RakNetGUID& source, AddItemE
|
|||||||
}
|
}
|
||||||
|
|
||||||
void ClientSideNetworkHandler::handle(const RakNet::RakNetGUID& source, TakeItemEntityPacket* packet) {
|
void ClientSideNetworkHandler::handle(const RakNet::RakNetGUID& source, TakeItemEntityPacket* packet) {
|
||||||
|
printf("TakeItemEntityPacket \n");
|
||||||
if (!level) return;
|
if (!level) return;
|
||||||
|
|
||||||
Entity* e = level->getEntity(packet->itemId);
|
Entity* e = level->getEntity(packet->itemId);
|
||||||
@@ -386,6 +396,54 @@ void ClientSideNetworkHandler::handle(const RakNet::RakNetGUID& source, MovePlay
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void ClientSideNetworkHandler::handle(const RakNet::RakNetGUID& source, SendInventoryPacket* packet) {
|
||||||
|
if (!level) return;
|
||||||
|
|
||||||
|
if (packet->entityId == minecraft->player->entityId) {
|
||||||
|
auto items = packet->items;
|
||||||
|
|
||||||
|
minecraft->player->inventory->replace(items);
|
||||||
|
|
||||||
|
for (int i = 0; i < packet->linkedSlot.size(); i++) {
|
||||||
|
minecraft->player->inventory->linkSlot(i, packet->linkedSlot[i].inventorySlot, true);
|
||||||
|
LOGI("%i -> %i\n", packet->linkedSlot[i].inventorySlot, i);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
void ClientSideNetworkHandler::handle(const RakNet::RakNetGUID& source, TakeItemPacket* packet) {
|
||||||
|
if (!level) return;
|
||||||
|
|
||||||
|
LOGI("TakeItemPacket\n");
|
||||||
|
|
||||||
|
ItemInstance* item;
|
||||||
|
|
||||||
|
item->count = packet->count;
|
||||||
|
item->id = packet->itemId;
|
||||||
|
item->setAuxValue(packet->auxValue);
|
||||||
|
|
||||||
|
// if (minecraft->player->entityId == packet->playerId) {
|
||||||
|
if (!minecraft->player->inventory->add(item)) {
|
||||||
|
minecraft->player->drop(new ItemInstance(*item), false);
|
||||||
|
}
|
||||||
|
// }
|
||||||
|
}
|
||||||
|
|
||||||
|
void ClientSideNetworkHandler::handle(const RakNet::RakNetGUID& source, RemoveItemPacket* packet) {
|
||||||
|
// Idk how it works...
|
||||||
|
if (!level) return;
|
||||||
|
|
||||||
|
ItemInstance item;
|
||||||
|
|
||||||
|
item.count = packet->count;
|
||||||
|
item.id = packet->itemId;
|
||||||
|
item.setAuxValue(packet->auxValue);
|
||||||
|
|
||||||
|
// if (minecraft->player->entityId == packet->playerId) {
|
||||||
|
minecraft->player->inventory->removeResource(item);
|
||||||
|
// }
|
||||||
|
}
|
||||||
|
|
||||||
void ClientSideNetworkHandler::handle(const RakNet::RakNetGUID& source, MoveEntityPacket* packet)
|
void ClientSideNetworkHandler::handle(const RakNet::RakNetGUID& source, MoveEntityPacket* packet)
|
||||||
{
|
{
|
||||||
if (!level)
|
if (!level)
|
||||||
@@ -782,6 +840,10 @@ void ClientSideNetworkHandler::handle(const RakNet::RakNetGUID& source, AnimateP
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void ClientSideNetworkHandler::handle(const RakNet::RakNetGUID& source, WantCreatePacket* packet)
|
||||||
|
{
|
||||||
|
}
|
||||||
|
|
||||||
void ClientSideNetworkHandler::handle(const RakNet::RakNetGUID& source, UseItemPacket* packet)
|
void ClientSideNetworkHandler::handle(const RakNet::RakNetGUID& source, UseItemPacket* packet)
|
||||||
{
|
{
|
||||||
}
|
}
|
||||||
@@ -791,6 +853,7 @@ void ClientSideNetworkHandler::handle(const RakNet::RakNetGUID& source, SetHealt
|
|||||||
if (!level || !minecraft->player)
|
if (!level || !minecraft->player)
|
||||||
return;
|
return;
|
||||||
|
|
||||||
|
printf("SetHealthPacket \n");
|
||||||
minecraft->player->hurtTo(packet->health);
|
minecraft->player->hurtTo(packet->health);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -77,6 +77,11 @@ public:
|
|||||||
virtual void handle(const RakNet::RakNetGUID& source, ChatPacket* packet);
|
virtual void handle(const RakNet::RakNetGUID& source, ChatPacket* packet);
|
||||||
virtual void handle(const RakNet::RakNetGUID& source, AdventureSettingsPacket* packet);
|
virtual void handle(const RakNet::RakNetGUID& source, AdventureSettingsPacket* packet);
|
||||||
virtual void handle(const RakNet::RakNetGUID& source, SignUpdatePacket* packet);
|
virtual void handle(const RakNet::RakNetGUID& source, SignUpdatePacket* packet);
|
||||||
|
virtual void handle(const RakNet::RakNetGUID& source, RemoveItemPacket* packet);
|
||||||
|
virtual void handle(const RakNet::RakNetGUID& source, TakeItemPacket* packet);
|
||||||
|
virtual void handle(const RakNet::RakNetGUID& source, WantCreatePacket* packet);
|
||||||
|
virtual void handle(const RakNet::RakNetGUID& source, SendInventoryPacket* packet);
|
||||||
|
|
||||||
private:
|
private:
|
||||||
|
|
||||||
void requestNextChunk();
|
void requestNextChunk();
|
||||||
|
|||||||
@@ -1,33 +0,0 @@
|
|||||||
#include "NATPunchHandler.h"
|
|
||||||
#include "../raknet/TCPInterface.h"
|
|
||||||
#include "../raknet/HTTPConnection.h"
|
|
||||||
#include "PHPDirectoryServer2.h"
|
|
||||||
|
|
||||||
using namespace RakNet;
|
|
||||||
NATPuchHandler::NATPuchHandler() {
|
|
||||||
tcpInterface = new TCPInterface;
|
|
||||||
}
|
|
||||||
NATPuchHandler::~NATPuchHandler() {
|
|
||||||
delete tcpInterface;
|
|
||||||
}
|
|
||||||
|
|
||||||
void NATPuchHandler::initialize() {
|
|
||||||
tcpInterface->Start(0, 64);
|
|
||||||
}
|
|
||||||
|
|
||||||
void NATPuchHandler::registerToGameList(const RakNet::RakString& serverName, int port) {
|
|
||||||
HTTPConnection httpConnection;
|
|
||||||
httpConnection.Init(tcpInterface, "johanbernhardsson.se");
|
|
||||||
PHPDirectoryServer2 directoryServer;
|
|
||||||
directoryServer.Init(&httpConnection, "/DirectoryServer.php");
|
|
||||||
directoryServer.UploadTable("", serverName, port, true);
|
|
||||||
}
|
|
||||||
|
|
||||||
void NATPuchHandler::removeFromGameList() {
|
|
||||||
|
|
||||||
}
|
|
||||||
|
|
||||||
void NATPuchHandler::close() {
|
|
||||||
|
|
||||||
}
|
|
||||||
|
|
||||||
@@ -1,24 +0,0 @@
|
|||||||
#ifndef _MINECRAFT_NETWORK_NATPUNCHHANDLER_H_
|
|
||||||
#define _MINECRAFT_NETWORK_NATPUNCHHANDLER_H_
|
|
||||||
#include "../raknet/TCPInterface.h"
|
|
||||||
#include "../raknet/RakString.h"
|
|
||||||
class NATPuchHandler {
|
|
||||||
public:
|
|
||||||
enum NATPuchHandlerStatus {
|
|
||||||
NATPuchInitilized = 0,
|
|
||||||
NATPuchFetchingServerList = 1,
|
|
||||||
NATPuchConnecting = 2,
|
|
||||||
NATPuchConnected = 3,
|
|
||||||
NATPuchDissconnected = 4
|
|
||||||
};
|
|
||||||
NATPuchHandler();
|
|
||||||
~NATPuchHandler();
|
|
||||||
void initialize();
|
|
||||||
void registerToGameList(const RakNet::RakString& serverName, int port);
|
|
||||||
void removeFromGameList();
|
|
||||||
void close();
|
|
||||||
private:
|
|
||||||
RakNet::TCPInterface *tcpInterface;
|
|
||||||
};
|
|
||||||
|
|
||||||
#endif /* _MINECRAFT_NETWORK_NATPUNCHHANDLER_H_ */
|
|
||||||
@@ -18,6 +18,8 @@ class RemovePlayerPacket;
|
|||||||
class RemoveEntityPacket;
|
class RemoveEntityPacket;
|
||||||
class MoveEntityPacket;
|
class MoveEntityPacket;
|
||||||
//class TeleportEntityPacket;
|
//class TeleportEntityPacket;
|
||||||
|
class RemoveItemPacket;
|
||||||
|
class TakeItemPacket;
|
||||||
class MovePlayerPacket;
|
class MovePlayerPacket;
|
||||||
class PlaceBlockPacket;
|
class PlaceBlockPacket;
|
||||||
class RemoveBlockPacket;
|
class RemoveBlockPacket;
|
||||||
@@ -48,6 +50,7 @@ class ContainerClosePacket;
|
|||||||
class ContainerSetSlotPacket;
|
class ContainerSetSlotPacket;
|
||||||
class ContainerSetDataPacket;
|
class ContainerSetDataPacket;
|
||||||
class ContainerSetContentPacket;
|
class ContainerSetContentPacket;
|
||||||
|
class WantCreatePacket;
|
||||||
class ChatPacket;
|
class ChatPacket;
|
||||||
class SignUpdatePacket;
|
class SignUpdatePacket;
|
||||||
class Minecraft;
|
class Minecraft;
|
||||||
@@ -119,6 +122,9 @@ public:
|
|||||||
virtual void handle(const RakNet::RakNetGUID& source, SignUpdatePacket* packet) {}
|
virtual void handle(const RakNet::RakNetGUID& source, SignUpdatePacket* packet) {}
|
||||||
virtual void handle(const RakNet::RakNetGUID& source, AdventureSettingsPacket* packet) {}
|
virtual void handle(const RakNet::RakNetGUID& source, AdventureSettingsPacket* packet) {}
|
||||||
virtual void handle(const RakNet::RakNetGUID& source, AnimatePacket* packet) {}
|
virtual void handle(const RakNet::RakNetGUID& source, AnimatePacket* packet) {}
|
||||||
|
virtual void handle(const RakNet::RakNetGUID& source, RemoveItemPacket* packet) {}
|
||||||
|
virtual void handle(const RakNet::RakNetGUID& source, TakeItemPacket* packet) {}
|
||||||
|
virtual void handle(const RakNet::RakNetGUID& source, WantCreatePacket* packet) {}
|
||||||
|
|
||||||
//
|
//
|
||||||
// Common implementation for Client and Server
|
// Common implementation for Client and Server
|
||||||
|
|||||||
@@ -2,6 +2,7 @@
|
|||||||
#include "Packet.h"
|
#include "Packet.h"
|
||||||
#include "../world/level/chunk/LevelChunk.h"
|
#include "../world/level/chunk/LevelChunk.h"
|
||||||
|
|
||||||
|
#include "network/packet/TakeItemPacket.h"
|
||||||
#include "packet/PacketInclude.h"
|
#include "packet/PacketInclude.h"
|
||||||
|
|
||||||
Packet::Packet()
|
Packet::Packet()
|
||||||
@@ -41,6 +42,12 @@ Packet* MinecraftPackets::createPacket(int id)
|
|||||||
case PACKET_ADDITEMENTITY:
|
case PACKET_ADDITEMENTITY:
|
||||||
packet = new AddItemEntityPacket();
|
packet = new AddItemEntityPacket();
|
||||||
break;
|
break;
|
||||||
|
case PACKET_REMOVEITEM:
|
||||||
|
packet = new RemoveItemPacket();
|
||||||
|
break;
|
||||||
|
case PACKET_TAKEITEM:
|
||||||
|
packet = new TakeItemPacket();
|
||||||
|
break;
|
||||||
case PACKET_TAKEITEMENTITY:
|
case PACKET_TAKEITEMENTITY:
|
||||||
packet = new TakeItemEntityPacket();
|
packet = new TakeItemEntityPacket();
|
||||||
break;
|
break;
|
||||||
@@ -68,6 +75,9 @@ Packet* MinecraftPackets::createPacket(int id)
|
|||||||
case PACKET_RESPAWN:
|
case PACKET_RESPAWN:
|
||||||
packet = new RespawnPacket();
|
packet = new RespawnPacket();
|
||||||
break;
|
break;
|
||||||
|
case PACKET_WANTCREATEITEM:
|
||||||
|
packet = new WantCreatePacket();
|
||||||
|
break;
|
||||||
case PACKET_REMOVEENTITY:
|
case PACKET_REMOVEENTITY:
|
||||||
packet = new RemoveEntityPacket();
|
packet = new RemoveEntityPacket();
|
||||||
break;
|
break;
|
||||||
|
|||||||
@@ -33,6 +33,9 @@ enum MinecraftPacketIds
|
|||||||
PACKET_REMOVEENTITY,
|
PACKET_REMOVEENTITY,
|
||||||
PACKET_ADDITEMENTITY,
|
PACKET_ADDITEMENTITY,
|
||||||
PACKET_TAKEITEMENTITY,
|
PACKET_TAKEITEMENTITY,
|
||||||
|
PACKET_TAKEITEM,
|
||||||
|
PACKET_REMOVEITEM,
|
||||||
|
PACKET_WANTCREATEITEM,
|
||||||
|
|
||||||
PACKET_MOVEENTITY,
|
PACKET_MOVEENTITY,
|
||||||
PACKET_MOVEENTITY_POS,
|
PACKET_MOVEENTITY_POS,
|
||||||
|
|||||||
@@ -5,6 +5,15 @@
|
|||||||
#include "../world/entity/player/Inventory.h"
|
#include "../world/entity/player/Inventory.h"
|
||||||
#include "../world/Container.h"
|
#include "../world/Container.h"
|
||||||
#include "../world/inventory/BaseContainerMenu.h"
|
#include "../world/inventory/BaseContainerMenu.h"
|
||||||
|
#include "network/packet/ContainerSetSlotPacket.h"
|
||||||
|
#include "network/packet/LoginStatusPacket.h"
|
||||||
|
#include "network/packet/MovePlayerPacket.h"
|
||||||
|
#include "network/packet/RemoveBlockPacket.h"
|
||||||
|
#include "network/packet/SendInventoryPacket.h"
|
||||||
|
#include "network/packet/UpdateBlockPacket.h"
|
||||||
|
#include "network/packet/RemoveItemPacket.h"
|
||||||
|
#include "network/packet/TakeItemPacket.h"
|
||||||
|
#include "network/packet/WantCreatePacket.h"
|
||||||
#include "packet/PacketInclude.h"
|
#include "packet/PacketInclude.h"
|
||||||
|
|
||||||
#include "RakNetInstance.h"
|
#include "RakNetInstance.h"
|
||||||
@@ -13,6 +22,15 @@
|
|||||||
#include "../client/gamemode/GameMode.h"
|
#include "../client/gamemode/GameMode.h"
|
||||||
#include "../raknet/RakPeerInterface.h"
|
#include "../raknet/RakPeerInterface.h"
|
||||||
#include "../raknet/PacketPriority.h"
|
#include "../raknet/PacketPriority.h"
|
||||||
|
#include "platform/log.h"
|
||||||
|
#include "util/Mth.h"
|
||||||
|
#include "world/item/ItemInstance.h"
|
||||||
|
#include "world/level/storage/LevelStorage.h"
|
||||||
|
#include "world/phys/Vec3.h"
|
||||||
|
#include "world/item/crafting/Recipe.h"
|
||||||
|
#include "world/item/crafting/Recipes.h"
|
||||||
|
#include <cstddef>
|
||||||
|
#include <cstdio>
|
||||||
#ifndef STANDALONE_SERVER
|
#ifndef STANDALONE_SERVER
|
||||||
#include "../client/sound/SoundEngine.h"
|
#include "../client/sound/SoundEngine.h"
|
||||||
#endif
|
#endif
|
||||||
@@ -156,6 +174,8 @@ void ServerSideNetworkHandler::onDisconnect(const RakNet::RakNetGUID& guid)
|
|||||||
|
|
||||||
if (player->owner == guid)
|
if (player->owner == guid)
|
||||||
{
|
{
|
||||||
|
minecraft->level->getLevelStorage()->savePlayer(*player);
|
||||||
|
|
||||||
std::string message = player->name;
|
std::string message = player->name;
|
||||||
message += " disconnected from the game";
|
message += " disconnected from the game";
|
||||||
displayGameMessage(message);
|
displayGameMessage(message);
|
||||||
@@ -189,6 +209,14 @@ void ServerSideNetworkHandler::handle(const RakNet::RakNetGUID& source, LoginPac
|
|||||||
if (oldClient || oldServer)
|
if (oldClient || oldServer)
|
||||||
loginStatus = oldClient? LoginStatus::Failed_ClientOld : LoginStatus::Failed_ServerOld;
|
loginStatus = oldClient? LoginStatus::Failed_ClientOld : LoginStatus::Failed_ServerOld;
|
||||||
|
|
||||||
|
for (int i = 0; i < level->players.size(); i++) {
|
||||||
|
ServerPlayer* player = (ServerPlayer*) level->players.at(i);
|
||||||
|
|
||||||
|
if (player->name == packet->clientName.C_String()) {
|
||||||
|
loginStatus = packet->newProto ? LoginStatus::Failed_TakenNickname : LoginStatus::Failed_ClientOld;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
RakNet::BitStream bitStream;
|
RakNet::BitStream bitStream;
|
||||||
LoginStatusPacket(loginStatus).write(&bitStream);
|
LoginStatusPacket(loginStatus).write(&bitStream);
|
||||||
rakPeer->Send(&bitStream, HIGH_PRIORITY, RELIABLE_ORDERED, 0, source, false);
|
rakPeer->Send(&bitStream, HIGH_PRIORITY, RELIABLE_ORDERED, 0, source, false);
|
||||||
@@ -199,13 +227,16 @@ void ServerSideNetworkHandler::handle(const RakNet::RakNetGUID& source, LoginPac
|
|||||||
//
|
//
|
||||||
// Valid client version
|
// Valid client version
|
||||||
//
|
//
|
||||||
Player* newPlayer = new ServerPlayer(minecraft, level);
|
|
||||||
|
Player* newPlayer = new ServerPlayer(minecraft, level, packet->newProto);
|
||||||
|
|
||||||
minecraft->gameMode->initAbilities(newPlayer->abilities);
|
minecraft->gameMode->initAbilities(newPlayer->abilities);
|
||||||
newPlayer->owner = source;
|
newPlayer->owner = source;
|
||||||
newPlayer->name = packet->clientName.C_String();
|
newPlayer->name = packet->clientName.C_String();
|
||||||
_pendingPlayers.push_back(newPlayer);
|
_pendingPlayers.push_back(newPlayer);
|
||||||
|
|
||||||
|
LOGI("Adding new player... isCreative: %i\n", minecraft->isCreativeMode());
|
||||||
|
|
||||||
// Reset the player so he doesn't spawn inside blocks
|
// Reset the player so he doesn't spawn inside blocks
|
||||||
while (newPlayer->y > 0) {
|
while (newPlayer->y > 0) {
|
||||||
newPlayer->setPos(newPlayer->x, newPlayer->y, newPlayer->z);
|
newPlayer->setPos(newPlayer->x, newPlayer->y, newPlayer->z);
|
||||||
@@ -232,6 +263,11 @@ void ServerSideNetworkHandler::handle(const RakNet::RakNetGUID& source, LoginPac
|
|||||||
).write(&bitStream);
|
).write(&bitStream);
|
||||||
|
|
||||||
rakPeer->Send(&bitStream, HIGH_PRIORITY, RELIABLE_ORDERED, 0, source, false);
|
rakPeer->Send(&bitStream, HIGH_PRIORITY, RELIABLE_ORDERED, 0, source, false);
|
||||||
|
|
||||||
|
if (!packet->newProto) {
|
||||||
|
MessagePacket packet("You're using outdated client. Some features disabled.");
|
||||||
|
raknetInstance->send(packet);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -244,6 +280,8 @@ void ServerSideNetworkHandler::handle(const RakNet::RakNetGUID& source, ReadyPac
|
|||||||
|
|
||||||
if (packet->type == ReadyPacket::READY_REQUESTEDCHUNKS)
|
if (packet->type == ReadyPacket::READY_REQUESTEDCHUNKS)
|
||||||
onReady_RequestedChunks(source);
|
onReady_RequestedChunks(source);
|
||||||
|
|
||||||
|
LOGI("Ready player two ready ready player two!!\n ");
|
||||||
}
|
}
|
||||||
|
|
||||||
void ServerSideNetworkHandler::onReady_ClientGeneration(const RakNet::RakNetGUID& source)
|
void ServerSideNetworkHandler::onReady_ClientGeneration(const RakNet::RakNetGUID& source)
|
||||||
@@ -301,6 +339,36 @@ void ServerSideNetworkHandler::onReady_ClientGeneration(const RakNet::RakNetGUID
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if (!minecraft->level->getLevelStorage()->loadPlayer(*newPlayer)) {
|
||||||
|
LOGW("Failed to load %s data\n", newPlayer->name.c_str());
|
||||||
|
}
|
||||||
|
|
||||||
|
// Credits to EpikIzCool
|
||||||
|
bitStream.Reset();
|
||||||
|
MovePlayerPacket mv(newPlayer->entityId, newPlayer->x, newPlayer->y - newPlayer->heightOffset,
|
||||||
|
newPlayer->z, newPlayer->xRot, newPlayer->yRot);
|
||||||
|
mv.write(&bitStream);
|
||||||
|
|
||||||
|
rakPeer->Send(&bitStream, HIGH_PRIORITY, RELIABLE_ORDERED, 0, source, false);
|
||||||
|
|
||||||
|
bitStream.Reset();
|
||||||
|
SetHealthPacket hp(newPlayer->health);
|
||||||
|
hp.write(&bitStream);
|
||||||
|
|
||||||
|
rakPeer->Send(&bitStream, HIGH_PRIORITY, RELIABLE_ORDERED, 0, source, false);
|
||||||
|
|
||||||
|
if (newPlayer->hasRespawnPosition()) {
|
||||||
|
bitStream.Reset();
|
||||||
|
SetSpawnPositionPacket sp(newPlayer->getRespawnPosition());
|
||||||
|
sp.write(&bitStream);
|
||||||
|
rakPeer->Send(&bitStream, HIGH_PRIORITY, RELIABLE_ORDERED, 0, source, false);
|
||||||
|
}
|
||||||
|
|
||||||
|
bitStream.Reset();
|
||||||
|
SendInventoryPacket(newPlayer, false).write(&bitStream);
|
||||||
|
rakPeer->Send(&bitStream, HIGH_PRIORITY, RELIABLE_ORDERED, 0, source, false);
|
||||||
|
|
||||||
|
|
||||||
// Additional packets
|
// Additional packets
|
||||||
// * set spawn
|
// * set spawn
|
||||||
/*
|
/*
|
||||||
@@ -342,11 +410,34 @@ void ServerSideNetworkHandler::handle(const RakNet::RakNetGUID& source, MovePlay
|
|||||||
//LOGI("MovePlayerPacket\n");
|
//LOGI("MovePlayerPacket\n");
|
||||||
if (Entity* entity = level->getEntity(packet->entityId))
|
if (Entity* entity = level->getEntity(packet->entityId))
|
||||||
{
|
{
|
||||||
entity->xd = entity->yd = entity->zd = 0;
|
ServerPlayer* player = (ServerPlayer*) getPlayer(source);
|
||||||
entity->lerpTo(packet->x, packet->y, packet->z, packet->yRot, packet->xRot, 3);
|
|
||||||
|
|
||||||
|
float vectorDist = sqrt( (packet->x - entity->x) * (packet->x - entity->x) +
|
||||||
|
(packet->z - entity->z) * (packet->z - entity->z));
|
||||||
|
float speed = vectorDist / (minecraft->getTicks() - player->getLastMoveTicks());
|
||||||
|
|
||||||
|
player->xRot = packet->xRot;
|
||||||
|
player->yRot = packet->yRot;
|
||||||
|
|
||||||
|
packet->y += 1.62f;
|
||||||
|
|
||||||
|
if (speed < 2.5f) {
|
||||||
|
LOGI("Packet before: %f, %f, %f \n", packet->x, packet->y, packet->z);
|
||||||
|
LOGI("Entity before: %f, %f, %f \n", entity->x, entity->y, entity->z);
|
||||||
|
LOGI("Delta: %f %f %f \n", packet->x - entity->x, packet->y - entity->y, packet->z - entity->z);
|
||||||
|
player->xd = player->yd = player->zd = 0;
|
||||||
|
player->move(packet->x - entity->x, packet->y - entity->y, packet->z - entity->z);
|
||||||
|
// player->travel(packet->x - entity->x, packet->z - entity->z);
|
||||||
|
LOGI("Entity after: %f, %f, %f \n", entity->x, entity->y, entity->z);
|
||||||
|
// entity->lerpTo(packet->x, packet->y, packet->z, packet->yRot, packet->xRot, 3);
|
||||||
// broadcast this packet to other clients
|
// broadcast this packet to other clients
|
||||||
redistributePacket(packet, source);
|
redistributePacket(packet, source);
|
||||||
|
} else {
|
||||||
|
MovePlayerPacket refuse(player->entityId, player->x, player->y, player->z, player->xRot, player->yRot);
|
||||||
|
raknetInstance->send(refuse);
|
||||||
|
}
|
||||||
|
|
||||||
|
player->setLastMoveTicks(minecraft->getTicks());
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -368,12 +459,29 @@ void ServerSideNetworkHandler::handle(const RakNet::RakNetGUID& source, RemoveBl
|
|||||||
if (oldTile != NULL && changed) {
|
if (oldTile != NULL && changed) {
|
||||||
level->playSound(x + 0.5f, y + 0.5f, z + 0.5f, oldTile->soundType->getBreakSound(), (oldTile->soundType->getVolume() + 1) / 2, oldTile->soundType->getPitch() * 0.8f);
|
level->playSound(x + 0.5f, y + 0.5f, z + 0.5f, oldTile->soundType->getBreakSound(), (oldTile->soundType->getVolume() + 1) / 2, oldTile->soundType->getPitch() * 0.8f);
|
||||||
|
|
||||||
if (minecraft->gameMode->isSurvivalType() && player->canDestroy(oldTile))
|
if (minecraft->gameMode->isSurvivalType() && player->canDestroy(oldTile)) {
|
||||||
|
// From SurvivalMode.cpp
|
||||||
|
// Why tf i have to copy this shit from SurvivalMode class
|
||||||
|
// Why SurvivalMode class locked to LOCAL MINECRAFT PLAYER :sob: :sob: :sob: :sob: :sob: :sob: :sob: :sob:
|
||||||
|
// @fix @warn @ahtung @alert
|
||||||
|
ItemInstance* item = player->inventory->getSelected();
|
||||||
|
if (item != NULL) {
|
||||||
|
item->mineBlock(oldTile->id, x, y, z);
|
||||||
|
if (item->count == 0) {
|
||||||
|
//item->snap(minecraft->player);
|
||||||
|
player->inventory->clearSlot(player->inventory->selected);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
// oldTile->spawnResources(level, x, y, z, data, 1); //@todo
|
// oldTile->spawnResources(level, x, y, z, data, 1); //@todo
|
||||||
oldTile->playerDestroy(level, player, x, y, z, data);
|
oldTile->playerDestroy(level, player, x, y, z, data);
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
oldTile->destroy(level, x, y, z, data);
|
oldTile->destroy(level, x, y, z, data);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
LOGI("Remove block [%i, %i, %i]\n", packet->x, packet->y, packet->z);
|
||||||
}
|
}
|
||||||
|
|
||||||
void ServerSideNetworkHandler::handle(const RakNet::RakNetGUID& source, RequestChunkPacket* packet)
|
void ServerSideNetworkHandler::handle(const RakNet::RakNetGUID& source, RequestChunkPacket* packet)
|
||||||
@@ -403,6 +511,8 @@ void ServerSideNetworkHandler::handle(const RakNet::RakNetGUID& source, RequestC
|
|||||||
raknetInstance->send(source, p);
|
raknetInstance->send(source, p);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// LOGI("Requested chunk [%i, %i]\n", packet->x, packet->z);
|
||||||
}
|
}
|
||||||
|
|
||||||
void ServerSideNetworkHandler::levelGenerated( Level* level )
|
void ServerSideNetworkHandler::levelGenerated( Level* level )
|
||||||
@@ -429,23 +539,31 @@ void ServerSideNetworkHandler::handle(const RakNet::RakNetGUID& source, PlayerEq
|
|||||||
if (!player) return;
|
if (!player) return;
|
||||||
if (rakPeer->GetMyGUID() == player->owner) return;
|
if (rakPeer->GetMyGUID() == player->owner) return;
|
||||||
|
|
||||||
|
LOGI("Equip item: id %i aux %i\n", packet->itemId, packet->itemAuxValue);
|
||||||
|
|
||||||
// override the player's inventory
|
// override the player's inventory
|
||||||
//int slot = player->inventory->getSlot(packet->itemId, packet->itemAuxValue);
|
int slot = player->inventory->getSlot(packet->itemId, packet->itemAuxValue);
|
||||||
int slot = Inventory::MAX_SELECTION_SIZE;
|
|
||||||
if (slot >= 0) {
|
if (slot >= 0 && slot != packet->inventorySlot && packet->itemId != 0) {
|
||||||
if (packet->itemId == 0) {
|
LOGW("PlayerEquipmentPacket: Item in player inventory but slots doesn't match!");
|
||||||
player->inventory->clearSlot(slot);
|
packet->inventorySlot = slot;
|
||||||
} else {
|
|
||||||
// @note: 128 is an ugly hack for depletable items.
|
|
||||||
// @todo: fix
|
|
||||||
ItemInstance newItem(packet->itemId, 128, packet->itemAuxValue);
|
|
||||||
player->inventory->replaceSlot(slot, &newItem);
|
|
||||||
}
|
}
|
||||||
player->inventory->moveToSelectedSlot(slot, true);
|
|
||||||
|
if (slot < 0 && packet->itemId != 0) {
|
||||||
|
LOGW("PlayerEquipmentPacket: Remote player doesn't have his thing (or crafted it)!\n");
|
||||||
|
|
||||||
|
SendInventoryPacket newInventory (player, false);
|
||||||
|
raknetInstance->send(newInventory);
|
||||||
|
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
player->inventory->selectSlot(packet->selectedSlot);
|
||||||
|
player->inventory->linkSlot(packet->selectedSlot, packet->inventorySlot, true);
|
||||||
|
|
||||||
|
player->inventory->print();
|
||||||
|
|
||||||
redistributePacket(packet, source);
|
redistributePacket(packet, source);
|
||||||
} else {
|
|
||||||
LOGW("Warning: Remote player doesn't have his thing, Odd!\n");
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
void ServerSideNetworkHandler::handle(const RakNet::RakNetGUID& source, PlayerArmorEquipmentPacket* packet) {
|
void ServerSideNetworkHandler::handle(const RakNet::RakNetGUID& source, PlayerArmorEquipmentPacket* packet) {
|
||||||
@@ -455,6 +573,8 @@ void ServerSideNetworkHandler::handle(const RakNet::RakNetGUID& source, PlayerAr
|
|||||||
if (!player) return;
|
if (!player) return;
|
||||||
if (rakPeer->GetMyGUID() == player->owner) return;
|
if (rakPeer->GetMyGUID() == player->owner) return;
|
||||||
|
|
||||||
|
// LOGI("Equip armor: %i %i %i %i\n", packet->head, packet->torso, packet->legs, packet->feet);
|
||||||
|
|
||||||
packet->fillIn(player);
|
packet->fillIn(player);
|
||||||
redistributePacket(packet, source);
|
redistributePacket(packet, source);
|
||||||
}
|
}
|
||||||
@@ -466,6 +586,8 @@ void ServerSideNetworkHandler::handle(const RakNet::RakNetGUID& source, Interact
|
|||||||
Entity* entity = level->getEntity(packet->targetId);
|
Entity* entity = level->getEntity(packet->targetId);
|
||||||
if (src && entity && src->isPlayer())
|
if (src && entity && src->isPlayer())
|
||||||
{
|
{
|
||||||
|
LOGI("Interact: source %i target %i\n", packet->sourceId, packet->targetId);
|
||||||
|
|
||||||
Player* player = (Player*) src;
|
Player* player = (Player*) src;
|
||||||
if (InteractPacket::Attack == packet->action) {
|
if (InteractPacket::Attack == packet->action) {
|
||||||
player->swing();
|
player->swing();
|
||||||
@@ -506,12 +628,73 @@ void ServerSideNetworkHandler::handle(const RakNet::RakNetGUID& source, AnimateP
|
|||||||
}
|
}
|
||||||
redistributePacket(packet, source);
|
redistributePacket(packet, source);
|
||||||
}
|
}
|
||||||
|
void ServerSideNetworkHandler::handle(const RakNet::RakNetGUID& source, WantCreatePacket* packet) {
|
||||||
|
LOGI("WantCreatePacket\n");
|
||||||
|
Entity* entity = level->getEntity(packet->playerId);
|
||||||
|
|
||||||
|
if (entity && entity->isPlayer()) {
|
||||||
|
Player* p = (Player*)entity;
|
||||||
|
|
||||||
|
auto playerInv = p->inventory;
|
||||||
|
|
||||||
|
ItemInstance wantCreate;
|
||||||
|
|
||||||
|
wantCreate.id = packet->itemId;
|
||||||
|
wantCreate.count = packet->count;
|
||||||
|
wantCreate.setAuxValue(packet->auxValue);
|
||||||
|
|
||||||
|
Recipe* recipe = Recipes::getInstance()->getRecipeFor(wantCreate);
|
||||||
|
|
||||||
|
std::vector<ItemInstance> items = recipe->getItemPack().getItemInstances();
|
||||||
|
|
||||||
|
std::vector<int> checkForExists = {};
|
||||||
|
|
||||||
|
for (int i = Inventory::MAX_SELECTION_SIZE; i < p->inventory->getContainerSize(); ++i) {
|
||||||
|
auto itm = p->inventory->getItem(i);
|
||||||
|
|
||||||
|
if (itm != NULL) {
|
||||||
|
for (int y = 0; y < items.size(); y++) {
|
||||||
|
auto itmRecipe = items.at(y);
|
||||||
|
|
||||||
|
if (itmRecipe.id == itm->id && itm->count >= itmRecipe.count) {
|
||||||
|
checkForExists.push_back(itm->id);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
if (checkForExists.empty()) {
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
for (int i = 0; i < items.size(); i++) {
|
||||||
|
auto item = items.at(i);
|
||||||
|
|
||||||
|
auto it = std::find(checkForExists.begin(), checkForExists.end(), item.id);
|
||||||
|
|
||||||
|
if (it == checkForExists.end() && checkForExists.size() > 1) {
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
// for (int i = 0; i < items.size(); i++) {
|
||||||
|
// RemoveItemPacket removePacket(packet->playerId, items.at(i).count, items.at(i).getAuxValue(), items.at(i).id);
|
||||||
|
// raknetInstance->send(source, removePacket);
|
||||||
|
|
||||||
|
// p->inventory->removeResource(ItemInstance(items.at(i).id, items.at(i).count, items.at(i).getAuxValue()));
|
||||||
|
// }
|
||||||
|
// TakeItemPacket itemAdd(p->entityId, wantCreate.count, wantCreate.getAuxValue(), wantCreate.id);
|
||||||
|
// raknetInstance->send(source, itemAdd);
|
||||||
|
|
||||||
|
p->inventory->add(new ItemInstance(wantCreate.id, wantCreate.count, wantCreate.getAuxValue()));
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
void ServerSideNetworkHandler::handle(const RakNet::RakNetGUID& source, UseItemPacket* packet)
|
void ServerSideNetworkHandler::handle(const RakNet::RakNetGUID& source, UseItemPacket* packet)
|
||||||
{
|
{
|
||||||
if (!level) return;
|
if (!level) return;
|
||||||
|
|
||||||
LOGI("UseItemPacket\n");
|
LOGI("UseItemPacket: id %i data %i\n", packet->itemId, packet->itemData);
|
||||||
Entity* entity = level->getEntity(packet->entityId);
|
Entity* entity = level->getEntity(packet->entityId);
|
||||||
if (entity && entity->isPlayer()) {
|
if (entity && entity->isPlayer()) {
|
||||||
Player* player = (Player*) entity;
|
Player* player = (Player*) entity;
|
||||||
@@ -522,7 +705,30 @@ void ServerSideNetworkHandler::handle(const RakNet::RakNetGUID& source, UseItemP
|
|||||||
if (t && t->use(level, x, y, z, player)) return;
|
if (t && t->use(level, x, y, z, player)) return;
|
||||||
if (packet->item.isNull()) return;
|
if (packet->item.isNull()) return;
|
||||||
|
|
||||||
ItemInstance* item = &packet->item;
|
ItemInstance* packetItem = &packet->item;
|
||||||
|
|
||||||
|
int slot = player->inventory->getSlot(packet->itemId, packet->itemData);
|
||||||
|
|
||||||
|
if (slot < 0) {
|
||||||
|
LOGW("UseItemPacket: Player doesn't have this item!\n");
|
||||||
|
|
||||||
|
auto pos = Vec3(packet->x, packet->y, packet->z);
|
||||||
|
|
||||||
|
if (ItemInstance::isBlock(packetItem)) {
|
||||||
|
LOGI("UseItemPacket: This is even block!!!\n");
|
||||||
|
|
||||||
|
pos.x += packet->clickX;
|
||||||
|
pos.y += packet->clickY;
|
||||||
|
pos.z += packet->clickZ;
|
||||||
|
}
|
||||||
|
|
||||||
|
UpdateBlockPacket refuse(pos.x, pos.y, pos.z, level->getTile(pos.x, pos.y, pos.z), level->getData(pos.x, pos.y, pos.z));
|
||||||
|
raknetInstance->send(refuse);
|
||||||
|
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
ItemInstance* item = player->inventory->getItem(slot);
|
||||||
|
|
||||||
if(packet->face == 255) {
|
if(packet->face == 255) {
|
||||||
// Special case: x,y,z means direction-of-action
|
// Special case: x,y,z means direction-of-action
|
||||||
@@ -534,6 +740,10 @@ void ServerSideNetworkHandler::handle(const RakNet::RakNetGUID& source, UseItemP
|
|||||||
Vec3(packet->clickX + packet->x, packet->clickY + packet->y, packet->clickZ + packet->z));
|
Vec3(packet->clickX + packet->x, packet->clickY + packet->y, packet->clickZ + packet->z));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if (item && item->count <= 0) {
|
||||||
|
player->inventory->clearSlot(slot);
|
||||||
|
}
|
||||||
|
|
||||||
//LOGW("Use Item not working! Out of synch?\n");
|
//LOGW("Use Item not working! Out of synch?\n");
|
||||||
|
|
||||||
// Don't have to redistribute (ugg.. this will mess up), cause tileUpdated is sent
|
// Don't have to redistribute (ugg.. this will mess up), cause tileUpdated is sent
|
||||||
@@ -544,6 +754,8 @@ void ServerSideNetworkHandler::handle(const RakNet::RakNetGUID& source, UseItemP
|
|||||||
void ServerSideNetworkHandler::handle(const RakNet::RakNetGUID& source, EntityEventPacket* packet) {
|
void ServerSideNetworkHandler::handle(const RakNet::RakNetGUID& source, EntityEventPacket* packet) {
|
||||||
if (!level) return;
|
if (!level) return;
|
||||||
|
|
||||||
|
LOGI("EntityEventPacket: id %i\n", packet->eventId);
|
||||||
|
|
||||||
if (Entity* e = level->getEntity(packet->entityId))
|
if (Entity* e = level->getEntity(packet->entityId))
|
||||||
e->handleEntityEvent(packet->eventId);
|
e->handleEntityEvent(packet->eventId);
|
||||||
}
|
}
|
||||||
@@ -577,6 +789,11 @@ void ServerSideNetworkHandler::handle( const RakNet::RakNetGUID& source, SendInv
|
|||||||
{
|
{
|
||||||
if (!level) return;
|
if (!level) return;
|
||||||
|
|
||||||
|
LOGI("SendInventoryPacket:\n");
|
||||||
|
for (int i = 0; i < packet->numItems; i++) {
|
||||||
|
LOGI("\t %i: %s (%i)\n", i, packet->items.at(i).getName().c_str(), packet->items.at(i).count);
|
||||||
|
}
|
||||||
|
|
||||||
Entity* entity = level->getEntity(packet->entityId);
|
Entity* entity = level->getEntity(packet->entityId);
|
||||||
if (entity && entity->isPlayer()) {
|
if (entity && entity->isPlayer()) {
|
||||||
Player* p = (Player*)entity;
|
Player* p = (Player*)entity;
|
||||||
@@ -592,15 +809,27 @@ void ServerSideNetworkHandler::handle( const RakNet::RakNetGUID& source, DropIte
|
|||||||
{
|
{
|
||||||
if (!level) return;
|
if (!level) return;
|
||||||
|
|
||||||
|
LOGI("DropItemPacket\n");
|
||||||
|
|
||||||
Entity* entity = level->getEntity(packet->entityId);
|
Entity* entity = level->getEntity(packet->entityId);
|
||||||
if (entity && entity->isPlayer()) {
|
if (entity && entity->isPlayer()) {
|
||||||
Player* p = (Player*)entity;
|
Player* p = (Player*)entity;
|
||||||
p->drop(new ItemInstance(packet->item), packet->dropType != 0);
|
// p->drop(new ItemInstance(packet->item), packet->dropType != 0);
|
||||||
|
|
||||||
|
int slot = p->inventory->getSlot(packet->item.id, packet->item.getAuxValue());
|
||||||
|
|
||||||
|
if (slot < 0) {
|
||||||
|
LOGW("DropItemPacket: player doesn't have these items!\n");
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
p->inventory->dropSlot(slot, false, packet->dropType != 0);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
void ServerSideNetworkHandler::handle(const RakNet::RakNetGUID& source, ContainerClosePacket* packet) {
|
void ServerSideNetworkHandler::handle(const RakNet::RakNetGUID& source, ContainerClosePacket* packet) {
|
||||||
if (!level) return;
|
if (!level) return;
|
||||||
|
LOGI("ContainerClosePacket\n");
|
||||||
|
|
||||||
Player* p = findPlayer(level, &source);
|
Player* p = findPlayer(level, &source);
|
||||||
if (!p) return;
|
if (!p) return;
|
||||||
@@ -612,6 +841,16 @@ void ServerSideNetworkHandler::handle(const RakNet::RakNetGUID& source, Containe
|
|||||||
void ServerSideNetworkHandler::handle(const RakNet::RakNetGUID& source, ContainerSetSlotPacket* packet) {
|
void ServerSideNetworkHandler::handle(const RakNet::RakNetGUID& source, ContainerSetSlotPacket* packet) {
|
||||||
if (!level) return;
|
if (!level) return;
|
||||||
|
|
||||||
|
const char* type = "unknown";
|
||||||
|
|
||||||
|
switch (packet->setType) {
|
||||||
|
case ContainerSetSlotPacket::SETTYPE_ADD: type = "add"; break;
|
||||||
|
case ContainerSetSlotPacket::SETTYPE_SET: type = "set"; break;
|
||||||
|
case ContainerSetSlotPacket::SETTYPE_TAKE: type = "take"; break;
|
||||||
|
};
|
||||||
|
|
||||||
|
LOGI("ContainerSetSlot: slot %i item %s type %s\n", packet->slot, packet->item.getName().c_str(), type);
|
||||||
|
|
||||||
Player* p = findPlayer(level, &source);
|
Player* p = findPlayer(level, &source);
|
||||||
if (!p) return;
|
if (!p) return;
|
||||||
|
|
||||||
@@ -619,12 +858,80 @@ void ServerSideNetworkHandler::handle(const RakNet::RakNetGUID& source, Containe
|
|||||||
LOGW("User has no container!\n");
|
LOGW("User has no container!\n");
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
if (p->containerMenu->containerId != packet->containerId)
|
|
||||||
{
|
if (p->containerMenu->containerId != packet->containerId) {
|
||||||
LOGW("Wrong container id: %d vs %d\n", p->containerMenu->containerId, packet->containerId);
|
LOGW("Wrong container id: %d vs %d\n", p->containerMenu->containerId, packet->containerId);
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if (packet->item.count > 64) {
|
||||||
|
LOGW("ContainerSetSlotPacket: player tried to put more than 64");
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
auto contItems = p->containerMenu->getItems();
|
||||||
|
|
||||||
|
// find same item in player inventory (used not in all cases)
|
||||||
|
int invSlot = p->inventory->getSlot(packet->item.id, packet->item.getAuxValue());
|
||||||
|
auto invItem = p->inventory->getItem(invSlot);
|
||||||
|
|
||||||
|
if (contItems.at(packet->slot).id == 0 && packet->item.id != 0) {
|
||||||
|
LOGI("ContainerSetSlotPacket: player tried to put items to slot %i\n", packet->slot);
|
||||||
|
|
||||||
|
if (invSlot < 0) {
|
||||||
|
LOGW("ContainerSetSlotPacket: player doesn't have this item\n");
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (invItem->count < packet->item.count) {
|
||||||
|
LOGW("ContainerSetSlotPacket: player tried to put more than he have\n");
|
||||||
|
packet->item.count = invItem->count;
|
||||||
|
}
|
||||||
|
|
||||||
|
invItem->count -= packet->item.count;
|
||||||
|
|
||||||
|
if (invItem->count <= 0) {
|
||||||
|
p->inventory->removeItem(invItem);
|
||||||
|
}
|
||||||
|
} else if(contItems.at(packet->slot).id == packet->item.id) {
|
||||||
|
int deltaItem = packet->item.count - contItems.at(packet->slot).count;
|
||||||
|
|
||||||
|
if (deltaItem > 0) {
|
||||||
|
LOGI("ContainerSetSlotPacket: player tried to add %i items to slot %i\n", deltaItem, packet->slot);
|
||||||
|
|
||||||
|
auto invItem = p->inventory->getItem(invSlot);
|
||||||
|
|
||||||
|
if (invSlot < 0) {
|
||||||
|
LOGW("ContainerSetSlotPacket: player doesn't have this item\n");
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (invItem->count < deltaItem) {
|
||||||
|
LOGW("ContainerSetSlotPacket: player tried to put more than he have");
|
||||||
|
packet->item.count -= (deltaItem - invItem->count);
|
||||||
|
deltaItem = invItem->count;
|
||||||
|
}
|
||||||
|
|
||||||
|
invItem->count -= deltaItem;
|
||||||
|
|
||||||
|
if (invItem->count <= 0) {
|
||||||
|
p->inventory->removeItem(invItem);
|
||||||
|
}
|
||||||
|
} else if (deltaItem < 0) {
|
||||||
|
LOGW("ContainerSetSlotPacket: player tried to take %i items from slot %i\n", -deltaItem, packet->slot);
|
||||||
|
p->inventory->add(new ItemInstance(packet->item.getItem(), -deltaItem, contItems.at(packet->slot).getAuxValue()));
|
||||||
|
}
|
||||||
|
} else if(contItems.at(packet->slot).id && !packet->item.id) {
|
||||||
|
LOGI("ContainerSetSlotPacket: player tried to take all items from slot %i\n", packet->slot);
|
||||||
|
packet->item.count = 0;
|
||||||
|
packet->item.setAuxValue(0);
|
||||||
|
|
||||||
|
p->inventory->add(new ItemInstance(contItems.at(packet->slot).getItem(), contItems.at(packet->slot).count, contItems.at(packet->slot).getAuxValue()));
|
||||||
|
} else {
|
||||||
|
LOGW("ContainerSetSlotPacket: illegal container operation in slot %i\n", packet->slot);
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
if (ContainerType::FURNACE == p->containerMenu->containerType) {
|
if (ContainerType::FURNACE == p->containerMenu->containerType) {
|
||||||
//LOGI("Server:Setting slot %d: %s\n", packet->slot, packet->item.toString().c_str());
|
//LOGI("Server:Setting slot %d: %s\n", packet->slot, packet->item.toString().c_str());
|
||||||
p->containerMenu->setSlot(packet->slot, &packet->item);
|
p->containerMenu->setSlot(packet->slot, &packet->item);
|
||||||
@@ -635,21 +942,25 @@ void ServerSideNetworkHandler::handle(const RakNet::RakNetGUID& source, Containe
|
|||||||
p->containerMenu->setSlot(packet->slot, &packet->item);
|
p->containerMenu->setSlot(packet->slot, &packet->item);
|
||||||
//p->containerMenu->setSlot(packet->slot, packet->item.isNull()? NULL : &packet->item);
|
//p->containerMenu->setSlot(packet->slot, packet->item.isNull()? NULL : &packet->item);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
p->inventory->print();
|
||||||
}
|
}
|
||||||
|
|
||||||
void ServerSideNetworkHandler::handle( const RakNet::RakNetGUID& source, SetHealthPacket* packet )
|
void ServerSideNetworkHandler::handle( const RakNet::RakNetGUID& source, SetHealthPacket* packet )
|
||||||
{
|
{
|
||||||
for (unsigned int i = 0; i < level->players.size(); ++i) {
|
LOGI("net idi nahui\n");
|
||||||
Player* p = level->players[i];
|
|
||||||
if (p->owner == source) {
|
// for (unsigned int i = 0; i < level->players.size(); ++i) {
|
||||||
if (packet->health <= -32) {
|
// Player* p = level->players[i];
|
||||||
int diff = packet->health - SetHealthPacket::HEALTH_MODIFY_OFFSET;
|
// if (p->owner == source) {
|
||||||
if (diff > 0) p->hurt(NULL, diff);
|
// if (packet->health <= -32) {
|
||||||
else if (diff < 0) p->heal(-diff);
|
// int diff = packet->health - SetHealthPacket::HEALTH_MODIFY_OFFSET;
|
||||||
}
|
// if (diff > 0) p->hurt(NULL, diff);
|
||||||
break;
|
// else if (diff < 0) p->heal(-diff);
|
||||||
}
|
// }
|
||||||
}
|
// break;
|
||||||
|
// }
|
||||||
|
// }
|
||||||
}
|
}
|
||||||
|
|
||||||
void ServerSideNetworkHandler::handle( const RakNet::RakNetGUID& source, SignUpdatePacket* packet ) {
|
void ServerSideNetworkHandler::handle( const RakNet::RakNetGUID& source, SignUpdatePacket* packet ) {
|
||||||
@@ -657,6 +968,8 @@ void ServerSideNetworkHandler::handle( const RakNet::RakNetGUID& source, SignUpd
|
|||||||
if (!level)
|
if (!level)
|
||||||
return;
|
return;
|
||||||
|
|
||||||
|
LOGI("SignUpdate: [%i, %i, %i]\n", packet->x, packet->y, packet->z);
|
||||||
|
|
||||||
TileEntity* te = level->getTileEntity(packet->x, packet->y, packet->z);
|
TileEntity* te = level->getTileEntity(packet->x, packet->y, packet->z);
|
||||||
if (TileEntity::isType(te, TileEntityType::Sign)) {
|
if (TileEntity::isType(te, TileEntityType::Sign)) {
|
||||||
SignTileEntity* ste = (SignTileEntity*) te;
|
SignTileEntity* ste = (SignTileEntity*) te;
|
||||||
|
|||||||
@@ -58,6 +58,7 @@ public:
|
|||||||
virtual void handle(const RakNet::RakNetGUID& source, ContainerClosePacket* packet);
|
virtual void handle(const RakNet::RakNetGUID& source, ContainerClosePacket* packet);
|
||||||
virtual void handle(const RakNet::RakNetGUID& source, SignUpdatePacket* packet);
|
virtual void handle(const RakNet::RakNetGUID& source, SignUpdatePacket* packet);
|
||||||
virtual void handle(const RakNet::RakNetGUID& source, ChatPacket* packet);
|
virtual void handle(const RakNet::RakNetGUID& source, ChatPacket* packet);
|
||||||
|
virtual void handle(const RakNet::RakNetGUID& source, WantCreatePacket* packet);
|
||||||
|
|
||||||
bool allowsIncomingConnections() { return _allowIncoming; }
|
bool allowsIncomingConnections() { return _allowIncoming; }
|
||||||
void allowIncomingConnections(bool doAllow);
|
void allowIncomingConnections(bool doAllow);
|
||||||
|
|||||||
@@ -9,17 +9,20 @@ public:
|
|||||||
RakNet::RakString clientName;
|
RakNet::RakString clientName;
|
||||||
int clientNetworkVersion;
|
int clientNetworkVersion;
|
||||||
int clientNetworkLowestSupportedVersion;
|
int clientNetworkLowestSupportedVersion;
|
||||||
|
bool newProto;
|
||||||
|
|
||||||
LoginPacket()
|
LoginPacket()
|
||||||
: clientNetworkVersion(-1),
|
: clientNetworkVersion(-1),
|
||||||
clientNetworkLowestSupportedVersion(-1)
|
clientNetworkLowestSupportedVersion(-1),
|
||||||
|
newProto(false)
|
||||||
{
|
{
|
||||||
}
|
}
|
||||||
|
|
||||||
LoginPacket(const RakNet::RakString& clientName, int clientVersion)
|
LoginPacket(const RakNet::RakString& clientName, int clientVersion, bool newProto)
|
||||||
: clientName(clientName),
|
: clientName(clientName),
|
||||||
clientNetworkVersion(clientVersion),
|
clientNetworkVersion(clientVersion),
|
||||||
clientNetworkLowestSupportedVersion(clientVersion)
|
clientNetworkLowestSupportedVersion(clientVersion),
|
||||||
|
newProto(newProto)
|
||||||
{
|
{
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -29,6 +32,7 @@ public:
|
|||||||
bitStream->Write(clientName);
|
bitStream->Write(clientName);
|
||||||
bitStream->Write(clientNetworkVersion);
|
bitStream->Write(clientNetworkVersion);
|
||||||
bitStream->Write(clientNetworkLowestSupportedVersion);
|
bitStream->Write(clientNetworkLowestSupportedVersion);
|
||||||
|
bitStream->Write(newProto);
|
||||||
}
|
}
|
||||||
|
|
||||||
void read(RakNet::BitStream* bitStream)
|
void read(RakNet::BitStream* bitStream)
|
||||||
@@ -39,6 +43,11 @@ public:
|
|||||||
if (bitStream->GetNumberOfUnreadBits() > 0) {
|
if (bitStream->GetNumberOfUnreadBits() > 0) {
|
||||||
bitStream->Read(clientNetworkVersion);
|
bitStream->Read(clientNetworkVersion);
|
||||||
bitStream->Read(clientNetworkLowestSupportedVersion);
|
bitStream->Read(clientNetworkLowestSupportedVersion);
|
||||||
|
|
||||||
|
// Checking for new proto
|
||||||
|
if (bitStream->GetNumberOfUnreadBits() > 0) {
|
||||||
|
bitStream->Read(newProto);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -3,10 +3,12 @@
|
|||||||
|
|
||||||
#include "../Packet.h"
|
#include "../Packet.h"
|
||||||
|
|
||||||
|
// wtf why not enum
|
||||||
namespace LoginStatus {
|
namespace LoginStatus {
|
||||||
const int Success = 0;
|
const int Success = 0;
|
||||||
const int Failed_ClientOld = 1;
|
const int Failed_ClientOld = 1;
|
||||||
const int Failed_ServerOld = 2;
|
const int Failed_ServerOld = 2;
|
||||||
|
const int Failed_TakenNickname = 3;
|
||||||
}
|
}
|
||||||
|
|
||||||
class LoginStatusPacket : public Packet {
|
class LoginStatusPacket : public Packet {
|
||||||
|
|||||||
@@ -50,5 +50,7 @@
|
|||||||
#include "TileEventPacket.h"
|
#include "TileEventPacket.h"
|
||||||
#include "UpdateBlockPacket.h"
|
#include "UpdateBlockPacket.h"
|
||||||
#include "UseItemPacket.h"
|
#include "UseItemPacket.h"
|
||||||
|
#include "RemoveItemPacket.h"
|
||||||
|
#include "WantCreatePacket.h"
|
||||||
|
#include "TakeItemPacket.h"
|
||||||
#endif /*NET_MINECRAFT_NETWORK_PACKET__PacketInclude_H__*/
|
#endif /*NET_MINECRAFT_NETWORK_PACKET__PacketInclude_H__*/
|
||||||
|
|||||||
@@ -9,15 +9,19 @@ public:
|
|||||||
int entityId;
|
int entityId;
|
||||||
unsigned short itemId;
|
unsigned short itemId;
|
||||||
unsigned short itemAuxValue;
|
unsigned short itemAuxValue;
|
||||||
|
unsigned char selectedSlot;
|
||||||
|
unsigned char inventorySlot;
|
||||||
|
|
||||||
PlayerEquipmentPacket()
|
PlayerEquipmentPacket()
|
||||||
{
|
{
|
||||||
}
|
}
|
||||||
|
|
||||||
PlayerEquipmentPacket(int entityId, int itemId, int data)
|
PlayerEquipmentPacket(int entityId, int itemId, int data, int selSlot, int invSlot)
|
||||||
: entityId(entityId),
|
: entityId(entityId),
|
||||||
itemId(itemId),
|
itemId(itemId),
|
||||||
itemAuxValue(data)
|
itemAuxValue(data),
|
||||||
|
selectedSlot(selSlot),
|
||||||
|
inventorySlot(invSlot)
|
||||||
{
|
{
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -28,6 +32,8 @@ public:
|
|||||||
bitStream->Write(entityId);
|
bitStream->Write(entityId);
|
||||||
bitStream->Write(itemId);
|
bitStream->Write(itemId);
|
||||||
bitStream->Write(itemAuxValue);
|
bitStream->Write(itemAuxValue);
|
||||||
|
bitStream->Write(selectedSlot);
|
||||||
|
bitStream->Write(inventorySlot);
|
||||||
}
|
}
|
||||||
|
|
||||||
void read(RakNet::BitStream* bitStream)
|
void read(RakNet::BitStream* bitStream)
|
||||||
@@ -35,6 +41,8 @@ public:
|
|||||||
bitStream->Read(entityId);
|
bitStream->Read(entityId);
|
||||||
bitStream->Read(itemId);
|
bitStream->Read(itemId);
|
||||||
bitStream->Read(itemAuxValue);
|
bitStream->Read(itemAuxValue);
|
||||||
|
bitStream->Read(selectedSlot);
|
||||||
|
bitStream->Read(inventorySlot);
|
||||||
}
|
}
|
||||||
|
|
||||||
void handle(const RakNet::RakNetGUID& source, NetEventCallback* callback)
|
void handle(const RakNet::RakNetGUID& source, NetEventCallback* callback)
|
||||||
|
|||||||
54
src/network/packet/RemoveItemPacket.h
Normal file
54
src/network/packet/RemoveItemPacket.h
Normal file
@@ -0,0 +1,54 @@
|
|||||||
|
#ifndef NET_MINECRAFT_NETWORK_PACKET__RemoveItemPacket_H__
|
||||||
|
#define NET_MINECRAFT_NETWORK_PACKET__RemoveItemPacket_H__
|
||||||
|
|
||||||
|
//package net.minecraft.network.packet;
|
||||||
|
|
||||||
|
#include "../Packet.h"
|
||||||
|
|
||||||
|
class RemoveItemPacket: public Packet
|
||||||
|
{
|
||||||
|
public:
|
||||||
|
RemoveItemPacket() {
|
||||||
|
}
|
||||||
|
|
||||||
|
RemoveItemPacket(int playerId, int count, int auxValue, int itemId)
|
||||||
|
:
|
||||||
|
playerId(playerId),
|
||||||
|
count(count),
|
||||||
|
auxValue(auxValue),
|
||||||
|
itemId(itemId)
|
||||||
|
{
|
||||||
|
}
|
||||||
|
|
||||||
|
void write(RakNet::BitStream* bitStream)
|
||||||
|
{
|
||||||
|
bitStream->Write((RakNet::MessageID)(ID_USER_PACKET_ENUM + PACKET_REMOVEITEM));
|
||||||
|
bitStream->Write(itemId);
|
||||||
|
bitStream->Write(count);
|
||||||
|
bitStream->Write(auxValue);
|
||||||
|
|
||||||
|
bitStream->Write(playerId);
|
||||||
|
}
|
||||||
|
|
||||||
|
void read(RakNet::BitStream* bitStream)
|
||||||
|
{
|
||||||
|
bitStream->Read(itemId);
|
||||||
|
bitStream->Read(count);
|
||||||
|
bitStream->Read(auxValue);
|
||||||
|
|
||||||
|
bitStream->Read(playerId);
|
||||||
|
}
|
||||||
|
|
||||||
|
void handle(const RakNet::RakNetGUID& source, NetEventCallback* callback)
|
||||||
|
{
|
||||||
|
callback->handle(source, (RemoveItemPacket*)this);
|
||||||
|
}
|
||||||
|
|
||||||
|
int playerId;
|
||||||
|
|
||||||
|
int itemId;
|
||||||
|
int count;
|
||||||
|
int auxValue;
|
||||||
|
};
|
||||||
|
|
||||||
|
#endif /*NET_MINECRAFT_NETWORK_PACKET__RemoveItemPacket_H__*/
|
||||||
@@ -2,13 +2,14 @@
|
|||||||
#define NET_MINECRAFT_NETWORK_PACKET__SendInventoryPacket_H__
|
#define NET_MINECRAFT_NETWORK_PACKET__SendInventoryPacket_H__
|
||||||
|
|
||||||
#include "../Packet.h"
|
#include "../Packet.h"
|
||||||
|
#include "world/entity/player/Inventory.h"
|
||||||
|
#include "world/inventory/FillingContainer.h"
|
||||||
|
#include <array>
|
||||||
|
|
||||||
class SendInventoryPacket: public Packet
|
class SendInventoryPacket: public Packet
|
||||||
{
|
{
|
||||||
public:
|
public:
|
||||||
SendInventoryPacket()
|
SendInventoryPacket() {}
|
||||||
{
|
|
||||||
}
|
|
||||||
|
|
||||||
SendInventoryPacket(Player* player, bool dropItems)
|
SendInventoryPacket(Player* player, bool dropItems)
|
||||||
: entityId(player->entityId),
|
: entityId(player->entityId),
|
||||||
@@ -21,10 +22,15 @@ public:
|
|||||||
ItemInstance* item = inv->getItem(i);
|
ItemInstance* item = inv->getItem(i);
|
||||||
items.push_back(item? *item : ItemInstance());
|
items.push_back(item? *item : ItemInstance());
|
||||||
}
|
}
|
||||||
|
|
||||||
for (int i = 0; i < NumArmorItems; ++i) {
|
for (int i = 0; i < NumArmorItems; ++i) {
|
||||||
ItemInstance* item = player->getArmor(i);
|
ItemInstance* item = player->getArmor(i);
|
||||||
items.push_back(item? *item : ItemInstance());
|
items.push_back(item? *item : ItemInstance());
|
||||||
}
|
}
|
||||||
|
|
||||||
|
for (int i = 0; i < inv->numLinkedSlots; ++i) {
|
||||||
|
linkedSlot[i] = inv->linkedSlots[i];
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
void write(RakNet::BitStream* bitStream)
|
void write(RakNet::BitStream* bitStream)
|
||||||
@@ -39,6 +45,13 @@ public:
|
|||||||
// Armor
|
// Armor
|
||||||
for (int i = 0; i < NumArmorItems; ++i)
|
for (int i = 0; i < NumArmorItems; ++i)
|
||||||
PacketUtil::writeItemInstance(items[i + numItems], bitStream);
|
PacketUtil::writeItemInstance(items[i + numItems], bitStream);
|
||||||
|
|
||||||
|
int lSlots = Inventory::MAX_SELECTION_SIZE;
|
||||||
|
|
||||||
|
// Linked slots
|
||||||
|
bitStream->Write(lSlots);
|
||||||
|
for (int i = 0; i < lSlots; ++i)
|
||||||
|
bitStream->Write(linkedSlot[i]);
|
||||||
}
|
}
|
||||||
|
|
||||||
void read(RakNet::BitStream* bitStream)
|
void read(RakNet::BitStream* bitStream)
|
||||||
@@ -50,6 +63,12 @@ public:
|
|||||||
// Inventory, Armor
|
// Inventory, Armor
|
||||||
for (int i = 0; i < numItems + NumArmorItems; ++i)
|
for (int i = 0; i < numItems + NumArmorItems; ++i)
|
||||||
items.push_back(PacketUtil::readItemInstance(bitStream));
|
items.push_back(PacketUtil::readItemInstance(bitStream));
|
||||||
|
|
||||||
|
// Linked slots
|
||||||
|
int lSlots = 0;
|
||||||
|
bitStream->Read(lSlots);
|
||||||
|
for (int i = 0; i < lSlots; ++i)
|
||||||
|
bitStream->Read(linkedSlot[i]);
|
||||||
}
|
}
|
||||||
|
|
||||||
void handle(const RakNet::RakNetGUID& source, NetEventCallback* callback)
|
void handle(const RakNet::RakNetGUID& source, NetEventCallback* callback)
|
||||||
@@ -62,6 +81,8 @@ public:
|
|||||||
short numItems;
|
short numItems;
|
||||||
unsigned char extra;
|
unsigned char extra;
|
||||||
|
|
||||||
|
std::array<FillingContainer::LinkedSlot, Inventory::MAX_SELECTION_SIZE> linkedSlot;
|
||||||
|
|
||||||
static const int ExtraDrop = 1;
|
static const int ExtraDrop = 1;
|
||||||
static const int NumArmorItems = 4;
|
static const int NumArmorItems = 4;
|
||||||
};
|
};
|
||||||
|
|||||||
54
src/network/packet/TakeItemPacket.h
Normal file
54
src/network/packet/TakeItemPacket.h
Normal file
@@ -0,0 +1,54 @@
|
|||||||
|
#ifndef NET_MINECRAFT_NETWORK_PACKET__TakeItemPacket_H__
|
||||||
|
#define NET_MINECRAFT_NETWORK_PACKET__TakeItemPacket_H__
|
||||||
|
|
||||||
|
//package net.minecraft.network.packet;
|
||||||
|
|
||||||
|
#include "../Packet.h"
|
||||||
|
|
||||||
|
class TakeItemPacket: public Packet
|
||||||
|
{
|
||||||
|
public:
|
||||||
|
TakeItemPacket() {
|
||||||
|
}
|
||||||
|
|
||||||
|
TakeItemPacket(int playerId, int count, int auxValue, int itemId)
|
||||||
|
:
|
||||||
|
playerId(playerId),
|
||||||
|
count(count),
|
||||||
|
auxValue(auxValue),
|
||||||
|
itemId(itemId)
|
||||||
|
{
|
||||||
|
}
|
||||||
|
|
||||||
|
void write(RakNet::BitStream* bitStream)
|
||||||
|
{
|
||||||
|
bitStream->Write((RakNet::MessageID)(ID_USER_PACKET_ENUM + PACKET_TAKEITEM));
|
||||||
|
bitStream->Write(itemId);
|
||||||
|
bitStream->Write(count);
|
||||||
|
bitStream->Write(auxValue);
|
||||||
|
|
||||||
|
bitStream->Write(playerId);
|
||||||
|
}
|
||||||
|
|
||||||
|
void read(RakNet::BitStream* bitStream)
|
||||||
|
{
|
||||||
|
bitStream->Read(itemId);
|
||||||
|
bitStream->Read(count);
|
||||||
|
bitStream->Read(auxValue);
|
||||||
|
|
||||||
|
bitStream->Read(playerId);
|
||||||
|
}
|
||||||
|
|
||||||
|
void handle(const RakNet::RakNetGUID& source, NetEventCallback* callback)
|
||||||
|
{
|
||||||
|
callback->handle(source, (TakeItemPacket*)this);
|
||||||
|
}
|
||||||
|
|
||||||
|
int playerId;
|
||||||
|
|
||||||
|
int itemId;
|
||||||
|
int count;
|
||||||
|
int auxValue;
|
||||||
|
};
|
||||||
|
|
||||||
|
#endif /*NET_MINECRAFT_NETWORK_PACKET__TakeItemPacket_H__*/
|
||||||
54
src/network/packet/WantCreatePacket.h
Normal file
54
src/network/packet/WantCreatePacket.h
Normal file
@@ -0,0 +1,54 @@
|
|||||||
|
#ifndef NET_MINECRAFT_NETWORK_PACKET__WantCreatePacket_H__
|
||||||
|
#define NET_MINECRAFT_NETWORK_PACKET__WantCreatePacket_H__
|
||||||
|
|
||||||
|
//package net.minecraft.network.packet;
|
||||||
|
|
||||||
|
#include "../Packet.h"
|
||||||
|
|
||||||
|
class WantCreatePacket: public Packet
|
||||||
|
{
|
||||||
|
public:
|
||||||
|
WantCreatePacket() {
|
||||||
|
}
|
||||||
|
|
||||||
|
WantCreatePacket(int playerId, int count, int auxValue, int itemId)
|
||||||
|
:
|
||||||
|
playerId(playerId),
|
||||||
|
count(count),
|
||||||
|
auxValue(auxValue),
|
||||||
|
itemId(itemId)
|
||||||
|
{
|
||||||
|
}
|
||||||
|
|
||||||
|
void write(RakNet::BitStream* bitStream)
|
||||||
|
{
|
||||||
|
bitStream->Write((RakNet::MessageID)(ID_USER_PACKET_ENUM + PACKET_WANTCREATEITEM));
|
||||||
|
bitStream->Write(itemId);
|
||||||
|
bitStream->Write(count);
|
||||||
|
bitStream->Write(auxValue);
|
||||||
|
|
||||||
|
bitStream->Write(playerId);
|
||||||
|
}
|
||||||
|
|
||||||
|
void read(RakNet::BitStream* bitStream)
|
||||||
|
{
|
||||||
|
bitStream->Read(itemId);
|
||||||
|
bitStream->Read(count);
|
||||||
|
bitStream->Read(auxValue);
|
||||||
|
|
||||||
|
bitStream->Read(playerId);
|
||||||
|
}
|
||||||
|
|
||||||
|
void handle(const RakNet::RakNetGUID& source, NetEventCallback* callback)
|
||||||
|
{
|
||||||
|
callback->handle(source, (WantCreatePacket*)this);
|
||||||
|
}
|
||||||
|
|
||||||
|
int playerId;
|
||||||
|
|
||||||
|
int itemId;
|
||||||
|
int count;
|
||||||
|
int auxValue;
|
||||||
|
};
|
||||||
|
|
||||||
|
#endif /*NET_MINECRAFT_NETWORK_PACKET__WantCreatePacket_H__*/
|
||||||
@@ -3,14 +3,8 @@
|
|||||||
|
|
||||||
#include "SoundSystem.h"
|
#include "SoundSystem.h"
|
||||||
|
|
||||||
// If audio breaks for other platforms, this is probably why. Here, I'm just calling where Apple's OpenAL headers live (they arent in just "AL"
|
|
||||||
#if defined(__APPLE__)
|
|
||||||
#include <OpenAL/al.h>
|
|
||||||
#include <OpenAL/alc.h>
|
|
||||||
#else
|
|
||||||
#include <AL/al.h>
|
#include <AL/al.h>
|
||||||
#include <AL/alc.h>
|
#include <AL/alc.h>
|
||||||
#endif
|
|
||||||
|
|
||||||
#include <vector>
|
#include <vector>
|
||||||
#include <list>
|
#include <list>
|
||||||
|
|||||||
@@ -17,6 +17,11 @@ ArgumentsSettings::ArgumentsSettings(int numArguments, char** arguments)
|
|||||||
levelName = std::string(arguments[a+1]);
|
levelName = std::string(arguments[a+1]);
|
||||||
a++; // Skip the next argument since it's part of this one.
|
a++; // Skip the next argument since it's part of this one.
|
||||||
}
|
}
|
||||||
|
} else if(strcmp(arguments[a], "--gamemode") == 0) {
|
||||||
|
if(a + 1 < numArguments) {
|
||||||
|
gamemode = std::string(arguments[a+1]);
|
||||||
|
a++; // Skip the next argument since it's part of this one.
|
||||||
|
}
|
||||||
} else if(strcmp(arguments[a], "--leveldir") == 0) {
|
} else if(strcmp(arguments[a], "--leveldir") == 0) {
|
||||||
if(a + 1 < numArguments) {
|
if(a + 1 < numArguments) {
|
||||||
levelDir = std::string(arguments[a+1]);
|
levelDir = std::string(arguments[a+1]);
|
||||||
@@ -51,6 +56,9 @@ std::string ArgumentsSettings::getServerKey() {
|
|||||||
std::string ArgumentsSettings::getCachePath() {
|
std::string ArgumentsSettings::getCachePath() {
|
||||||
return cachePath;
|
return cachePath;
|
||||||
}
|
}
|
||||||
|
std::string ArgumentsSettings::getGamemode() {
|
||||||
|
return gamemode;
|
||||||
|
}
|
||||||
std::string ArgumentsSettings::getLevelDir() {
|
std::string ArgumentsSettings::getLevelDir() {
|
||||||
return levelDir;
|
return levelDir;
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -4,20 +4,27 @@
|
|||||||
class ArgumentsSettings {
|
class ArgumentsSettings {
|
||||||
public:
|
public:
|
||||||
ArgumentsSettings(int numArguments, char** arguments);
|
ArgumentsSettings(int numArguments, char** arguments);
|
||||||
|
|
||||||
std::string getExternalPath();
|
std::string getExternalPath();
|
||||||
std::string getLevelName();
|
std::string getLevelName();
|
||||||
std::string getServerKey();
|
std::string getServerKey();
|
||||||
std::string getCachePath();
|
std::string getCachePath();
|
||||||
std::string getLevelDir();
|
std::string getLevelDir();
|
||||||
|
std::string getGamemode();
|
||||||
|
|
||||||
bool getShowHelp();
|
bool getShowHelp();
|
||||||
|
|
||||||
int getPort();
|
int getPort();
|
||||||
private:
|
private:
|
||||||
std::string cachePath;
|
std::string cachePath;
|
||||||
std::string externalPath;
|
std::string externalPath;
|
||||||
std::string levelName;
|
std::string levelName;
|
||||||
|
std::string gamemode;
|
||||||
std::string levelDir;
|
std::string levelDir;
|
||||||
std::string serverKey;
|
std::string serverKey;
|
||||||
|
|
||||||
bool showHelp;
|
bool showHelp;
|
||||||
|
|
||||||
int port;
|
int port;
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|||||||
@@ -12,8 +12,10 @@ ServerLevel::ServerLevel(LevelStorage* levelStorage, const std::string& levelNam
|
|||||||
void ServerLevel::updateSleepingPlayerList() {
|
void ServerLevel::updateSleepingPlayerList() {
|
||||||
bool allPlayersWasSleeping = allPlayersAreSleeping;
|
bool allPlayersWasSleeping = allPlayersAreSleeping;
|
||||||
allPlayersAreSleeping = !players.empty();
|
allPlayersAreSleeping = !players.empty();
|
||||||
|
|
||||||
for (PlayerList::iterator it = players.begin(); it != players.end(); ++it) {
|
for (PlayerList::iterator it = players.begin(); it != players.end(); ++it) {
|
||||||
Player* player = *it;
|
Player* player = *it;
|
||||||
|
|
||||||
if (!player->isSleeping()) {
|
if (!player->isSleeping()) {
|
||||||
allPlayersAreSleeping = false;
|
allPlayersAreSleeping = false;
|
||||||
break;
|
break;
|
||||||
@@ -21,6 +23,7 @@ void ServerLevel::updateSleepingPlayerList() {
|
|||||||
}
|
}
|
||||||
if (!allPlayersWasSleeping && allPlayersAreSleeping) {
|
if (!allPlayersWasSleeping && allPlayersAreSleeping) {
|
||||||
levelEvent(NULL, LevelEvent::ALL_PLAYERS_SLEEPING, 0, 0, 0, 0);
|
levelEvent(NULL, LevelEvent::ALL_PLAYERS_SLEEPING, 0, 0, 0, 0);
|
||||||
|
|
||||||
for (PlayerList::iterator it = players.begin(); it != players.end(); ++it) {
|
for (PlayerList::iterator it = players.begin(); it != players.end(); ++it) {
|
||||||
(*it)->setAllPlayersSleeping();
|
(*it)->setAllPlayersSleeping();
|
||||||
}
|
}
|
||||||
@@ -29,14 +32,17 @@ void ServerLevel::updateSleepingPlayerList() {
|
|||||||
|
|
||||||
void ServerLevel::awakenAllPlayers() {
|
void ServerLevel::awakenAllPlayers() {
|
||||||
allPlayersAreSleeping = false;
|
allPlayersAreSleeping = false;
|
||||||
|
|
||||||
for (PlayerList::iterator it = players.begin(); it != players.end(); ++it) {
|
for (PlayerList::iterator it = players.begin(); it != players.end(); ++it) {
|
||||||
Player* player = *it;
|
Player* player = *it;
|
||||||
|
|
||||||
if (player->isSleeping()) {
|
if (player->isSleeping()) {
|
||||||
player->stopSleepInBed(false, false, true);
|
player->stopSleepInBed(false, false, true);
|
||||||
player->health = Player::MAX_HEALTH;
|
player->health = Player::MAX_HEALTH;
|
||||||
player->lastHealth = Player::MAX_HEALTH;
|
player->lastHealth = Player::MAX_HEALTH;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
SetHealthPacket packet(Player::MAX_HEALTH);
|
SetHealthPacket packet(Player::MAX_HEALTH);
|
||||||
raknetInstance->send(packet);
|
raknetInstance->send(packet);
|
||||||
}
|
}
|
||||||
@@ -57,11 +63,15 @@ bool ServerLevel::allPlayersSleeping() {
|
|||||||
|
|
||||||
void ServerLevel::tick() {
|
void ServerLevel::tick() {
|
||||||
super::tick();
|
super::tick();
|
||||||
|
|
||||||
if (allPlayersSleeping()) {
|
if (allPlayersSleeping()) {
|
||||||
long newTime = levelData.getTime() + TICKS_PER_DAY;
|
long newTime = levelData.getTime() + TICKS_PER_DAY;
|
||||||
|
|
||||||
levelData.setTime(newTime - (newTime % TICKS_PER_DAY));
|
levelData.setTime(newTime - (newTime % TICKS_PER_DAY));
|
||||||
|
|
||||||
SetTimePacket packet(levelData.getTime());
|
SetTimePacket packet(levelData.getTime());
|
||||||
raknetInstance->send(packet);
|
raknetInstance->send(packet);
|
||||||
|
|
||||||
awakenAllPlayers();
|
awakenAllPlayers();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -19,14 +19,17 @@
|
|||||||
#include "../network/packet/AnimatePacket.h"
|
#include "../network/packet/AnimatePacket.h"
|
||||||
#include "../world/level/tile/entity/ChestTileEntity.h"
|
#include "../world/level/tile/entity/ChestTileEntity.h"
|
||||||
#include "../network/packet/HurtArmorPacket.h"
|
#include "../network/packet/HurtArmorPacket.h"
|
||||||
|
#include "network/packet/SendInventoryPacket.h"
|
||||||
|
#include "world/entity/player/Inventory.h"
|
||||||
|
|
||||||
ServerPlayer::ServerPlayer( Minecraft* minecraft, Level* level )
|
ServerPlayer::ServerPlayer( Minecraft* minecraft, Level* level, bool proto)
|
||||||
: super(level, minecraft->isCreativeMode()),
|
: super(level, minecraft->isCreativeMode()),
|
||||||
_mc(minecraft),
|
_mc(minecraft),
|
||||||
_prevHealth(-999),
|
_prevHealth(-999),
|
||||||
_containerCounter(0)
|
_containerCounter(0),
|
||||||
|
isNewProto(proto)
|
||||||
{
|
{
|
||||||
hasFakeInventory = true;
|
// hasFakeInventory = true;
|
||||||
footSize = 0;
|
footSize = 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -67,7 +70,16 @@ void ServerPlayer::tick() {
|
|||||||
|
|
||||||
void ServerPlayer::take( Entity* e, int orgCount ) {
|
void ServerPlayer::take( Entity* e, int orgCount ) {
|
||||||
TakeItemEntityPacket packet(e->entityId, entityId);
|
TakeItemEntityPacket packet(e->entityId, entityId);
|
||||||
|
// SendInventoryPacket packet(this, false);
|
||||||
_mc->raknetInstance->send(packet);
|
_mc->raknetInstance->send(packet);
|
||||||
|
printf("TakeItemEntityPacket \n");
|
||||||
|
|
||||||
|
LOGI("Inventory:\n");
|
||||||
|
for (int i = 0; i < inventory->numLinkedSlots; i++) {
|
||||||
|
auto item = inventory->getItem(i);
|
||||||
|
if (item)
|
||||||
|
LOGI("\t %i: %s (%i)\n", i, item->getName().c_str(), item->count);
|
||||||
|
}
|
||||||
|
|
||||||
super::take(e, orgCount);
|
super::take(e, orgCount);
|
||||||
}
|
}
|
||||||
@@ -118,20 +130,20 @@ bool ServerPlayer::hasResource( int id ) {
|
|||||||
void ServerPlayer::setContainerData( BaseContainerMenu* menu, int id, int value ) {
|
void ServerPlayer::setContainerData( BaseContainerMenu* menu, int id, int value ) {
|
||||||
ContainerSetDataPacket p(menu->containerId, id, value);
|
ContainerSetDataPacket p(menu->containerId, id, value);
|
||||||
_mc->raknetInstance->send(owner, p);
|
_mc->raknetInstance->send(owner, p);
|
||||||
//LOGI("Setting container data for id %d: %d\n", id, value);
|
LOGI("Setting container data for id %d: %d\n", id, value);
|
||||||
}
|
}
|
||||||
|
|
||||||
void ServerPlayer::slotChanged( BaseContainerMenu* menu, int slot, const ItemInstance& item, bool isResultSlot ) {
|
void ServerPlayer::slotChanged( BaseContainerMenu* menu, int slot, const ItemInstance& item, bool isResultSlot ) {
|
||||||
if (isResultSlot) return;
|
if (isResultSlot) return;
|
||||||
ContainerSetSlotPacket p(menu->containerId, slot, item);
|
ContainerSetSlotPacket p(menu->containerId, slot, item);
|
||||||
_mc->raknetInstance->send(owner, p);
|
_mc->raknetInstance->send(owner, p);
|
||||||
//LOGI("Slot %d changed\n", slot);
|
LOGI("Slot %d changed\n", slot);
|
||||||
}
|
}
|
||||||
|
|
||||||
void ServerPlayer::refreshContainer( BaseContainerMenu* menu, const std::vector<ItemInstance>& items ) {
|
void ServerPlayer::refreshContainer( BaseContainerMenu* menu, const std::vector<ItemInstance>& items ) {
|
||||||
ContainerSetContentPacket p(menu->containerId, menu->getItems());
|
ContainerSetContentPacket p(menu->containerId, menu->getItems());
|
||||||
_mc->raknetInstance->send(owner, p);
|
_mc->raknetInstance->send(owner, p);
|
||||||
//LOGI("Refreshing container with %d items\n", items.size());
|
LOGI("Refreshing container with %zu items\n", items.size());
|
||||||
}
|
}
|
||||||
|
|
||||||
void ServerPlayer::nextContainerCounter() {
|
void ServerPlayer::nextContainerCounter() {
|
||||||
@@ -163,3 +175,12 @@ void ServerPlayer::displayClientMessage( const std::string& messageId ) {
|
|||||||
ChatPacket package(messageId);
|
ChatPacket package(messageId);
|
||||||
_mc->raknetInstance->send(owner, package);
|
_mc->raknetInstance->send(owner, package);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void ServerPlayer::causeFallDamage(float distance) {
|
||||||
|
int dmg = (int) ceil((distance - 3));
|
||||||
|
if (dmg > 0) {
|
||||||
|
SetHealthPacket packet(SetHealthPacket::HEALTH_MODIFY_OFFSET + dmg);
|
||||||
|
_mc->raknetInstance->send(owner, packet);
|
||||||
|
}
|
||||||
|
super::causeFallDamage(distance);
|
||||||
|
}
|
||||||
@@ -15,7 +15,7 @@ class ServerPlayer: public Player,
|
|||||||
{
|
{
|
||||||
typedef Player super;
|
typedef Player super;
|
||||||
public:
|
public:
|
||||||
ServerPlayer(Minecraft* minecraft, Level* level);
|
ServerPlayer(Minecraft* minecraft, Level* level, bool proto);
|
||||||
|
|
||||||
~ServerPlayer();
|
~ServerPlayer();
|
||||||
|
|
||||||
@@ -43,6 +43,17 @@ public:
|
|||||||
virtual void stopSleepInBed(bool forcefulWakeUp, bool updateLevelList, bool saveRespawnPoint);
|
virtual void stopSleepInBed(bool forcefulWakeUp, bool updateLevelList, bool saveRespawnPoint);
|
||||||
|
|
||||||
void completeUsingItem();
|
void completeUsingItem();
|
||||||
|
|
||||||
|
void setLastMoveTicks(int lastMoveTicks) { this->lastMoveTicks = lastMoveTicks; }
|
||||||
|
int getLastMoveTicks() { return lastMoveTicks; }
|
||||||
|
|
||||||
|
void setTicksInAir(int ticksInAir) { this->ticksInAir = ticksInAir; }
|
||||||
|
int getTicksInAir() { return ticksInAir; }
|
||||||
|
|
||||||
|
void setNewProto(bool proto) { isNewProto = proto; }
|
||||||
|
bool getProto() { return isNewProto; }
|
||||||
|
|
||||||
|
virtual void causeFallDamage(float distance);
|
||||||
private:
|
private:
|
||||||
void nextContainerCounter();
|
void nextContainerCounter();
|
||||||
void setContainerMenu( BaseContainerMenu* menu );
|
void setContainerMenu( BaseContainerMenu* menu );
|
||||||
@@ -50,6 +61,11 @@ private:
|
|||||||
Minecraft* _mc;
|
Minecraft* _mc;
|
||||||
int _prevHealth;
|
int _prevHealth;
|
||||||
int _containerCounter;
|
int _containerCounter;
|
||||||
|
|
||||||
|
int lastMoveTicks = 0;
|
||||||
|
int ticksInAir = 0;
|
||||||
|
|
||||||
|
bool isNewProto = false;
|
||||||
};
|
};
|
||||||
|
|
||||||
#endif /*ServerPlayer_H__*/
|
#endif /*ServerPlayer_H__*/
|
||||||
|
|||||||
@@ -357,3 +357,12 @@ bool Inventory::removeItem( const ItemInstance* samePtr ) {
|
|||||||
}
|
}
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void Inventory::print() {
|
||||||
|
LOGI("%s's Inventory:\n", player->name.c_str());
|
||||||
|
|
||||||
|
for (int i = 0; i < numTotalSlots; i++) {
|
||||||
|
auto item = getItem(i);
|
||||||
|
if (item) LOGI("\t %i: %s (%i) %s\n", i, item->getName().c_str(), item->count, (player->inventory->getLinked(i))? "(Linked)" : "");
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -45,6 +45,8 @@ public:
|
|||||||
int getAttackDamage(Entity* entity);
|
int getAttackDamage(Entity* entity);
|
||||||
float getDestroySpeed(Tile* tile);
|
float getDestroySpeed(Tile* tile);
|
||||||
bool canDestroy(Tile* tile);
|
bool canDestroy(Tile* tile);
|
||||||
|
|
||||||
|
void print();
|
||||||
private:
|
private:
|
||||||
void setupDefault();
|
void setupDefault();
|
||||||
public:
|
public:
|
||||||
|
|||||||
@@ -141,6 +141,11 @@ bool FillingContainer::add( ItemInstance* item )
|
|||||||
// // silently destroy the item when having a full inventory
|
// // silently destroy the item when having a full inventory
|
||||||
// item->count = 0;
|
// item->count = 0;
|
||||||
// return true;
|
// return true;
|
||||||
|
|
||||||
|
LOGI("Inventory:\n");
|
||||||
|
for (int i = 0; i < numTotalSlots; i++) {
|
||||||
|
LOGI("\t %i: %s (%i)\n", i, items.at(i)->getName().c_str(), items.at(i)->count);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
return false;
|
return false;
|
||||||
|
|||||||
@@ -19,7 +19,7 @@ public:
|
|||||||
setMaxDamage(64);
|
setMaxDamage(64);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/*
|
||||||
bool useOn(ItemInstance* instance, Player* player, Level* level, int x, int y, int z, int face, float clickX, float clickY, float clickZ) {
|
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 == 0) y--;
|
||||||
if (face == 1) y++;
|
if (face == 1) y++;
|
||||||
@@ -30,14 +30,14 @@ public:
|
|||||||
|
|
||||||
int targetType = level->getTile(x, y, z);
|
int targetType = level->getTile(x, y, z);
|
||||||
if (targetType == 0) {
|
if (targetType == 0) {
|
||||||
level->playSound(x + 0.5, y + 0.5, z + 0.5, "fire.ignite", 1, random.nextFloat() * 0.4f + 0.8f);
|
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*)Tile::fire)->id);
|
level->setTile(x, y, z, Tile::fire->id);
|
||||||
}
|
}
|
||||||
|
|
||||||
instance->hurt(1);
|
instance->hurt(1);
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
*/
|
||||||
};
|
};
|
||||||
|
|
||||||
#endif /*NET_MINECRAFT_WORLD_ITEM__FlintAndSteelItem_H__*/
|
#endif /*NET_MINECRAFT_WORLD_ITEM__FlintAndSteelItem_H__*/
|
||||||
|
|||||||
@@ -290,3 +290,7 @@ bool ItemInstance::isArmorItem( const ItemInstance* instance ) {
|
|||||||
|
|
||||||
return item->isArmor();
|
return item->isArmor();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
bool ItemInstance::isBlock(const ItemInstance* instance) {
|
||||||
|
return instance->id < 256;
|
||||||
|
}
|
||||||
@@ -81,6 +81,8 @@ public:
|
|||||||
|
|
||||||
static bool isArmorItem(const ItemInstance* instance);
|
static bool isArmorItem(const ItemInstance* instance);
|
||||||
|
|
||||||
|
static bool isBlock(const ItemInstance* instance);
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Checks if this item is the same item as the other one, disregarding the
|
* Checks if this item is the same item as the other one, disregarding the
|
||||||
* 'count' value.
|
* 'count' value.
|
||||||
|
|||||||
@@ -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
|
class FoliageColor
|
||||||
{
|
{
|
||||||
public:
|
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) {
|
// static void init(int[] pixels) {
|
||||||
// FoliageColor::pixels = pixels;
|
// FoliageColor::pixels = pixels;
|
||||||
// }
|
// }
|
||||||
@@ -27,13 +17,6 @@ public:
|
|||||||
// return pixels[y << 8 | x];
|
// return pixels[y << 8 | x];
|
||||||
// }
|
// }
|
||||||
|
|
||||||
|
|
||||||
static void init(int* p) {
|
|
||||||
pixels = p;
|
|
||||||
}
|
|
||||||
|
|
||||||
static int get(float temp, float rain);
|
|
||||||
|
|
||||||
static int getEvergreenColor() {
|
static int getEvergreenColor() {
|
||||||
return 0x619961;
|
return 0x619961;
|
||||||
}
|
}
|
||||||
@@ -43,12 +26,11 @@ public:
|
|||||||
}
|
}
|
||||||
|
|
||||||
static int getDefaultColor() {
|
static int getDefaultColor() {
|
||||||
return 0xFFFFFF;
|
return 0x48b518;
|
||||||
}
|
}
|
||||||
|
|
||||||
private:
|
private:
|
||||||
//static int pixels[256*256];
|
//static int pixels[256*256];
|
||||||
static int* pixels;
|
|
||||||
};
|
};
|
||||||
|
|
||||||
#endif /*NET_MINECRAFT_WORLD_LEVEL__FoliageColor_H__*/
|
#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__*/
|
|
||||||
@@ -1599,8 +1599,8 @@ bool Level::containsFireTile(const AABB& box) {
|
|||||||
for (int z = z0; z < z1; z++) {
|
for (int z = z0; z < z1; z++) {
|
||||||
int t = getTile(x, y, z);
|
int t = getTile(x, y, z);
|
||||||
|
|
||||||
if (t == ((Tile*)(Tile::fire))->id
|
if (/*t == ((Tile*)(Tile::fire))->id
|
||||||
|| t == Tile::lava->id
|
||*/ t == Tile::lava->id
|
||||||
|| t == Tile::calmLava->id) {
|
|| t == Tile::calmLava->id) {
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -3,9 +3,8 @@
|
|||||||
|
|
||||||
//package net.minecraft.world.level;
|
//package net.minecraft.world.level;
|
||||||
|
|
||||||
|
|
||||||
class BiomeSource;
|
|
||||||
/*
|
/*
|
||||||
|
class BiomeSource;
|
||||||
class TileEntity;
|
class TileEntity;
|
||||||
*/
|
*/
|
||||||
class Material;
|
class Material;
|
||||||
@@ -30,7 +29,7 @@ public:
|
|||||||
virtual bool isSolidRenderTile(int x, int i, int z) = 0;
|
virtual bool isSolidRenderTile(int x, int i, int z) = 0;
|
||||||
virtual bool isSolidBlockingTile(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;
|
virtual Biome* getBiome(int x, int z) = 0;
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|||||||
@@ -4,7 +4,6 @@
|
|||||||
#include "tile/Tile.h"
|
#include "tile/Tile.h"
|
||||||
#include "Level.h"
|
#include "Level.h"
|
||||||
|
|
||||||
|
|
||||||
Region::Region(Level* level, int x1, int y1, int z1, int x2, int y2, int z2) {
|
Region::Region(Level* level, int x1, int y1, int z1, int x2, int y2, int z2) {
|
||||||
this->level = level;
|
this->level = level;
|
||||||
|
|
||||||
@@ -136,6 +135,6 @@ Biome* Region::getBiome( int x, int z ) {
|
|||||||
return level->getBiome(x, z);
|
return level->getBiome(x, z);
|
||||||
}
|
}
|
||||||
|
|
||||||
BiomeSource* Region::getBiomeSource() {
|
//BiomeSource getBiomeSource() {
|
||||||
return level->getBiomeSource();
|
// return level.getBiomeSource();
|
||||||
}
|
//}
|
||||||
|
|||||||
@@ -5,7 +5,6 @@
|
|||||||
|
|
||||||
#include "LevelSource.h"
|
#include "LevelSource.h"
|
||||||
|
|
||||||
|
|
||||||
class Level;
|
class Level;
|
||||||
class Material;
|
class Material;
|
||||||
class LevelChunk;
|
class LevelChunk;
|
||||||
@@ -28,7 +27,6 @@ public:
|
|||||||
int getData(int x, int y, int z);
|
int getData(int x, int y, int z);
|
||||||
const Material* getMaterial(int x, int y, int z);
|
const Material* getMaterial(int x, int y, int z);
|
||||||
Biome* getBiome(int x, int z);
|
Biome* getBiome(int x, int z);
|
||||||
BiomeSource* getBiomeSource() override;
|
|
||||||
private:
|
private:
|
||||||
int xc1, zc1;
|
int xc1, zc1;
|
||||||
LevelChunk*** chunks;
|
LevelChunk*** chunks;
|
||||||
|
|||||||
@@ -2,7 +2,6 @@
|
|||||||
|
|
||||||
#include "../levelgen/feature/TreeFeature.h"
|
#include "../levelgen/feature/TreeFeature.h"
|
||||||
#include "../levelgen/feature/TallgrassFeature.h"
|
#include "../levelgen/feature/TallgrassFeature.h"
|
||||||
#include "../levelgen/feature/BasicTree.h"
|
|
||||||
|
|
||||||
#include "../../entity/EntityTypes.h"
|
#include "../../entity/EntityTypes.h"
|
||||||
#include "../../entity/MobCategory.h"
|
#include "../../entity/MobCategory.h"
|
||||||
@@ -141,7 +140,7 @@ void Biome::teardownBiomes() {
|
|||||||
Feature* Biome::getTreeFeature( Random* random )
|
Feature* Biome::getTreeFeature( Random* random )
|
||||||
{
|
{
|
||||||
if (random->nextInt(10) == 0) {
|
if (random->nextInt(10) == 0) {
|
||||||
return new BasicTree(false);
|
//return /*new*/ BasicTree();
|
||||||
}
|
}
|
||||||
return new TreeFeature(false);
|
return new TreeFeature(false);
|
||||||
}
|
}
|
||||||
@@ -149,9 +148,6 @@ Feature* Biome::getGrassFeature( Random* random ) {
|
|||||||
return new TallgrassFeature(Tile::tallgrass->id, TallGrass::TALL_GRASS);
|
return new TallgrassFeature(Tile::tallgrass->id, TallGrass::TALL_GRASS);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
Biome* Biome::getBiome( float temperature, float downfall )
|
Biome* Biome::getBiome( float temperature, float downfall )
|
||||||
{
|
{
|
||||||
int a = (int) (temperature * 63);
|
int a = (int) (temperature * 63);
|
||||||
|
|||||||
@@ -69,11 +69,11 @@ Biome* BiomeSource::getBiome( int x, int z )
|
|||||||
return getBiomeBlock(x, z, 1, 1)[0];
|
return getBiomeBlock(x, z, 1, 1)[0];
|
||||||
}
|
}
|
||||||
|
|
||||||
float BiomeSource::getTemperature( int x, int z )
|
//float BiomeSource::getTemperature( int x, int z )
|
||||||
{
|
//{
|
||||||
temperatures = temperatureMap->getRegion(temperatures, x, z, 1, 1, tempScale, tempScale, 0.5f);
|
// temperatures = temperatureMap->getRegion(temperatures, x, z, 1, 1, tempScale, tempScale, 0.5f);
|
||||||
return temperatures[0];
|
// return temperatures[0];
|
||||||
}
|
//}
|
||||||
|
|
||||||
Biome** BiomeSource::getBiomeBlock( int x, int z, int w, int h )
|
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;
|
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");
|
//LOGI("gTempBlock: 1\n");
|
||||||
//const int size = w * h;
|
//const int size = w * h;
|
||||||
@@ -164,8 +164,8 @@ float* BiomeSource::getTemperatureBlock( float* temperatures__, int x, int z, in
|
|||||||
return temperatures;
|
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;
|
// //const int size = w * h;
|
||||||
// //if (lenDownfalls < size) {
|
// //if (lenDownfalls < size) {
|
||||||
// // delete[] downfalls;
|
// // delete[] downfalls;
|
||||||
@@ -173,6 +173,6 @@ float* BiomeSource::getDownfallBlock( float* downfalls__, int x, int z, int w, i
|
|||||||
// // lenDownfalls = size;
|
// // lenDownfalls = size;
|
||||||
// //}
|
// //}
|
||||||
//
|
//
|
||||||
downfalls = downfallMap->getRegion(downfalls, x, z, w, w, downfallScale, downfallScale, 0.5f);
|
// downfalls = downfallMap->getRegion(downfalls, x, z, w, w, downfallScale, downfallScale, 0.5f);
|
||||||
return downfalls;
|
// return downfalls;
|
||||||
}
|
//}
|
||||||
|
|||||||
@@ -31,13 +31,13 @@ public:
|
|||||||
virtual Biome* getBiome(const ChunkPos& chunk);
|
virtual Biome* getBiome(const ChunkPos& chunk);
|
||||||
virtual Biome* getBiome(int x, int z);
|
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
|
// Note: The arrays returned here are temporary in the meaning that their
|
||||||
// contents might change in the future. If you need to SAVE the
|
// contents might change in the future. If you need to SAVE the
|
||||||
// values, do a shallow copy to an array of your own.
|
// 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* 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* getDownfallBlock(/*float* downfalls, */int x, int z, int w, int h);
|
||||||
virtual Biome** getBiomeBlock(int x, int z, int w, int h);
|
virtual Biome** getBiomeBlock(int x, int z, int w, int h);
|
||||||
|
|
||||||
private:
|
private:
|
||||||
|
|||||||
@@ -6,7 +6,6 @@
|
|||||||
#include "Biome.h"
|
#include "Biome.h"
|
||||||
#include "../levelgen/feature/TreeFeature.h"
|
#include "../levelgen/feature/TreeFeature.h"
|
||||||
#include "../levelgen/feature/BirchFeature.h"
|
#include "../levelgen/feature/BirchFeature.h"
|
||||||
#include "../levelgen/feature/BasicTree.h"
|
|
||||||
|
|
||||||
class ForestBiome: public Biome
|
class ForestBiome: public Biome
|
||||||
{
|
{
|
||||||
@@ -16,7 +15,7 @@ public:
|
|||||||
return new BirchFeature();
|
return new BirchFeature();
|
||||||
}
|
}
|
||||||
if (random->nextInt(3) == 0) {
|
if (random->nextInt(3) == 0) {
|
||||||
return new BasicTree(false);
|
//return new BasicTree();
|
||||||
}
|
}
|
||||||
return new TreeFeature(false);
|
return new TreeFeature(false);
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -6,14 +6,13 @@
|
|||||||
#include "Biome.h"
|
#include "Biome.h"
|
||||||
#include "../../../util/Random.h"
|
#include "../../../util/Random.h"
|
||||||
#include "../levelgen/feature/TreeFeature.h"
|
#include "../levelgen/feature/TreeFeature.h"
|
||||||
#include "../levelgen/feature/BasicTree.h"
|
|
||||||
|
|
||||||
class RainforestBiome: public Biome
|
class RainforestBiome: public Biome
|
||||||
{
|
{
|
||||||
public:
|
public:
|
||||||
Feature* getTreeFeature(Random* random) {
|
Feature* getTreeFeature(Random* random) {
|
||||||
if (random->nextInt(3) == 0) {
|
if (random->nextInt(3) == 0) {
|
||||||
return new BasicTree(false);
|
//return new BasicTree();
|
||||||
}
|
}
|
||||||
return new TreeFeature(false);
|
return new TreeFeature(false);
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -1,4 +1,4 @@
|
|||||||
|
#if 0
|
||||||
|
|
||||||
#include "CanyonFeature.h"
|
#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;
|
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;
|
float thickness = (random.nextFloat() * 2 + random.nextFloat()) + 1;
|
||||||
|
|
||||||
addTunnel(xOffs, zOffs, blocks, xCave, yCave, zCave, thickness, yRot, xRot, 0, 0, 5.0);
|
addTunnel(xOffs, zOffs, blocks, xCave, yCave, zCave, thickness, yRot, xRot, 0, 0, 5.0);
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
/* //private
|
/* //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++) {
|
for (int z = zOffs - r; z <= zOffs + r; z++) {
|
||||||
random.setSeed((x * xScale + z * zScale) ^ level.seed);*/
|
random.setSeed((x * xScale + z * zScale) ^ level.seed);*/
|
||||||
|
|
||||||
|
#endif
|
||||||
|
|||||||
@@ -1,7 +1,7 @@
|
|||||||
#ifndef NET_MINECRAFT_WORLD_LEVEL_LEVELGEN__CanyonFeature_H__
|
#ifndef NET_MINECRAFT_WORLD_LEVEL_LEVELGEN__CanyonFeature_H__
|
||||||
#define NET_MINECRAFT_WORLD_LEVEL_LEVELGEN__CanyonFeature_H__
|
#define NET_MINECRAFT_WORLD_LEVEL_LEVELGEN__CanyonFeature_H__
|
||||||
|
|
||||||
|
#if 0
|
||||||
|
|
||||||
//package net.minecraft.world.level.levelgen;
|
//package net.minecraft.world.level.levelgen;
|
||||||
|
|
||||||
@@ -12,8 +12,8 @@ class CanyonFeature: public LargeFeature {
|
|||||||
/*protected*/
|
/*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);
|
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*/
|
/*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__*/
|
#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);
|
//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++) {
|
for (int i = 0; i < 2; i++) {
|
||||||
int x = xo + random.nextInt(16) + 8;
|
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);
|
MobSpawner::postProcessSpawnMobs(level, biome, xo + 8, zo + 8, 16, 16, &random);
|
||||||
|
|
||||||
//LOGI("Reading temp: 1\n");
|
//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 x = xo + 8; x < xo + 8 + 16; x++)
|
||||||
for (int z = zo + 8; z < zo + 8 + 16; z++) {
|
for (int z = zo + 8; z < zo + 8 + 16; z++) {
|
||||||
int xp = x - (xo + 8);
|
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__*/
|
|
||||||
@@ -1,3 +1,6 @@
|
|||||||
|
#include <cstddef>
|
||||||
|
#include <fstream>
|
||||||
|
#include <ios>
|
||||||
#if !defined(DEMO_MODE) && !defined(APPLE_DEMO_PROMOTION)
|
#if !defined(DEMO_MODE) && !defined(APPLE_DEMO_PROMOTION)
|
||||||
|
|
||||||
#include "LevelData.h"
|
#include "LevelData.h"
|
||||||
@@ -88,6 +91,9 @@ ExternalFileLevelStorage::ExternalFileLevelStorage(const std::string& levelId, c
|
|||||||
{
|
{
|
||||||
createFolderIfNotExists(levelPath.c_str());
|
createFolderIfNotExists(levelPath.c_str());
|
||||||
|
|
||||||
|
std::string playerFolder = levelPath + "/players";
|
||||||
|
createFolderIfNotExists(playerFolder.c_str());
|
||||||
|
|
||||||
std::string datFileName = levelPath + "/" + fnLevelDat;
|
std::string datFileName = levelPath + "/" + fnLevelDat;
|
||||||
std::string levelFileName = levelPath + "/" + fnPlayerDat;
|
std::string levelFileName = levelPath + "/" + fnPlayerDat;
|
||||||
loadedLevelData = new LevelData();
|
loadedLevelData = new LevelData();
|
||||||
@@ -113,6 +119,7 @@ void ExternalFileLevelStorage::saveLevelData(LevelData& levelData, std::vector<P
|
|||||||
|
|
||||||
void ExternalFileLevelStorage::saveLevelData( const std::string& levelPath, LevelData& levelData, std::vector<Player*>* players )
|
void ExternalFileLevelStorage::saveLevelData( const std::string& levelPath, LevelData& levelData, std::vector<Player*>* players )
|
||||||
{
|
{
|
||||||
|
// @todo: completely rewrite
|
||||||
std::string directory = levelPath + "/";
|
std::string directory = levelPath + "/";
|
||||||
std::string tmpFile = directory + fnLevelDatNew;
|
std::string tmpFile = directory + fnLevelDatNew;
|
||||||
std::string datFile = directory + fnLevelDat;
|
std::string datFile = directory + fnLevelDat;
|
||||||
@@ -141,6 +148,67 @@ void ExternalFileLevelStorage::saveLevelData( const std::string& levelPath, Leve
|
|||||||
|
|
||||||
// Remove the temporary save, if the rename didn't do it
|
// Remove the temporary save, if the rename didn't do it
|
||||||
remove(tmpFile.c_str());
|
remove(tmpFile.c_str());
|
||||||
|
|
||||||
|
// Save players
|
||||||
|
// fuck mojang for that
|
||||||
|
if (!players || players->empty()) {
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
for (auto& player : *players) {
|
||||||
|
if (player != NULL) {
|
||||||
|
savePlayer(*player, directory);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
void ExternalFileLevelStorage::savePlayer(Player& player, const std::string& worldDir) {
|
||||||
|
std::string playerPath = worldDir + "/players/" + player.name + ".dat";
|
||||||
|
|
||||||
|
LOGI("Saving player %s to %s...\n", player.name.c_str(), playerPath.c_str());
|
||||||
|
|
||||||
|
RakNet::BitStream data;
|
||||||
|
RakDataOutput buf(data);
|
||||||
|
CompoundTag playerTag;
|
||||||
|
player.saveWithoutId(&playerTag);
|
||||||
|
|
||||||
|
NbtIo::write(&playerTag, &buf);
|
||||||
|
|
||||||
|
std::ofstream file(playerPath, std::ios::out | std::ios::binary);
|
||||||
|
file.write((const char*)data.GetData(), (size_t)data.GetNumberOfBytesUsed());
|
||||||
|
}
|
||||||
|
|
||||||
|
bool ExternalFileLevelStorage::loadPlayer(Player& player, const std::string& worldDir) {
|
||||||
|
std::string playerPath = worldDir + "/players/" + player.name + ".dat";
|
||||||
|
|
||||||
|
LOGI("Loading player %s from %s...\n", player.name.c_str(), playerPath.c_str());
|
||||||
|
|
||||||
|
std::ifstream file(playerPath, std::ios::in | std::ios::binary);
|
||||||
|
if (!file.is_open()) {
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
|
std::vector<uint8_t> data((std::istreambuf_iterator<char>(file)), std::istreambuf_iterator<char>());
|
||||||
|
|
||||||
|
RakNet::BitStream bitStream(data.data(), data.size(), false);
|
||||||
|
RakDataInput stream(bitStream);
|
||||||
|
|
||||||
|
CompoundTag* tag = NbtIo::read(&stream);
|
||||||
|
if (tag) {
|
||||||
|
player.load(tag);
|
||||||
|
tag->deleteChildren();
|
||||||
|
delete tag;
|
||||||
|
}
|
||||||
|
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
|
||||||
|
void ExternalFileLevelStorage::savePlayer(Player& player) {
|
||||||
|
ExternalFileLevelStorage::savePlayer(player, levelPath);
|
||||||
|
}
|
||||||
|
|
||||||
|
bool ExternalFileLevelStorage::loadPlayer(Player& player) {
|
||||||
|
return ExternalFileLevelStorage::loadPlayer(player, levelPath);
|
||||||
}
|
}
|
||||||
|
|
||||||
LevelData* ExternalFileLevelStorage::prepareLevel(Level* _level)
|
LevelData* ExternalFileLevelStorage::prepareLevel(Level* _level)
|
||||||
|
|||||||
@@ -67,6 +67,19 @@ public:
|
|||||||
void saveGame(Level* level);
|
void saveGame(Level* level);
|
||||||
void saveAll(Level* level, std::vector<LevelChunk*>& levelChunks);
|
void saveAll(Level* level, std::vector<LevelChunk*>& levelChunks);
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @brief Save player to <world name>/player/<player name>.dat file
|
||||||
|
*/
|
||||||
|
static void savePlayer(Player& player, const std::string& worldDir);
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @brief Load player from <world name>/player/<player name>.dat file
|
||||||
|
*/
|
||||||
|
static bool loadPlayer(Player& player, const std::string& worldDir);
|
||||||
|
|
||||||
|
virtual void savePlayer(Player& player);
|
||||||
|
virtual bool loadPlayer(Player& player);
|
||||||
|
|
||||||
virtual void tick();
|
virtual void tick();
|
||||||
virtual void flush() {}
|
virtual void flush() {}
|
||||||
private:
|
private:
|
||||||
|
|||||||
@@ -32,6 +32,9 @@ public:
|
|||||||
virtual void saveGame(Level* level) {}
|
virtual void saveGame(Level* level) {}
|
||||||
virtual void loadEntities(Level* level, LevelChunk* levelChunk) {}
|
virtual void loadEntities(Level* level, LevelChunk* levelChunk) {}
|
||||||
|
|
||||||
|
virtual void savePlayer(Player& player) = 0;
|
||||||
|
virtual bool loadPlayer(Player& player) = 0;
|
||||||
|
|
||||||
//void checkSession() throws LevelConflictException;
|
//void checkSession() throws LevelConflictException;
|
||||||
//PlayerIO getPlayerIO();
|
//PlayerIO getPlayerIO();
|
||||||
};
|
};
|
||||||
|
|||||||
@@ -38,7 +38,7 @@ public:
|
|||||||
setFlammable(Tile::tnt->id, FLAME_MEDIUM, BURN_INSTANT);
|
setFlammable(Tile::tnt->id, FLAME_MEDIUM, BURN_INSTANT);
|
||||||
setFlammable(Tile::cloth->id, FLAME_EASY, BURN_EASY);
|
setFlammable(Tile::cloth->id, FLAME_EASY, BURN_EASY);
|
||||||
|
|
||||||
setTicking(true); //@fire
|
//setTicking(true); //@fire
|
||||||
}
|
}
|
||||||
|
|
||||||
AABB* getAABB(Level* level, int x, int y, int z) {
|
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) {
|
void tick(Level* level, int x, int y, int z, Random* random) {
|
||||||
|
return; //@fire
|
||||||
|
|
||||||
|
bool infiniBurn = false;//level->getTile(x, y - 1, z) == Tile::hellRock->id;
|
||||||
bool infiniBurn = level->getTile(x, y - 1, z) == Tile::netherrack->id;
|
|
||||||
|
|
||||||
int age = level->getData(x, y, z);
|
int age = level->getData(x, y, z);
|
||||||
if (age < 15) {
|
if (age < 15) {
|
||||||
@@ -148,6 +148,7 @@ public:
|
|||||||
}
|
}
|
||||||
|
|
||||||
void neighborChanged(Level* level, int x, int y, int z, int type) {
|
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)) {
|
if (!level->isSolidBlockingTile(x, y - 1, z) && !isValidFireLocation(level, x, y, z)) {
|
||||||
level->setTile(x, y, z, 0);
|
level->setTile(x, y, z, 0);
|
||||||
return;
|
return;
|
||||||
@@ -155,6 +156,7 @@ public:
|
|||||||
}
|
}
|
||||||
|
|
||||||
void onPlace(Level* level, int x, int y, int z) {
|
void onPlace(Level* level, int x, int y, int z) {
|
||||||
|
return; //@fire
|
||||||
if (!level->isSolidBlockingTile(x, y - 1, z) && !isValidFireLocation(level, x, y, z)) {
|
if (!level->isSolidBlockingTile(x, y - 1, z) && !isValidFireLocation(level, x, y, z)) {
|
||||||
level->setTile(x, y, z, 0);
|
level->setTile(x, y, z, 0);
|
||||||
return;
|
return;
|
||||||
@@ -167,6 +169,7 @@ public:
|
|||||||
}
|
}
|
||||||
|
|
||||||
void ignite(Level* level, int x, int y, int z) {
|
void ignite(Level* level, int x, int y, int z) {
|
||||||
|
return; //@fire
|
||||||
|
|
||||||
bool lit = false;
|
bool lit = false;
|
||||||
if (!lit) lit = tryIgnite(level, x, y + 1, z);
|
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) {
|
void animateTick(Level* level, int x, int y, int z, Random* random) {
|
||||||
|
return; //@fire
|
||||||
|
|
||||||
if (random->nextInt(24) == 0) {
|
//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);
|
// 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)) {
|
if (level->isSolidBlockingTile(x, y - 1, z) || Tile::fire->canBurn(level, x, y - 1, z)) {
|
||||||
for (int i = 0; i < 3; i++) {
|
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) {
|
void checkBurn(Level* level, int x, int y, int z, int chance, Random* random) {
|
||||||
|
return; //@fire
|
||||||
|
|
||||||
int odds = burnOdds[level->getTile(x, y, z)];
|
int odds = burnOdds[level->getTile(x, y, z)];
|
||||||
if (random->nextInt(chance) < odds) {
|
if (random->nextInt(chance) < odds) {
|
||||||
@@ -260,6 +265,7 @@ private:
|
|||||||
}
|
}
|
||||||
|
|
||||||
bool isValidFireLocation(Level* level, int x, int y, int z) {
|
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;
|
||||||
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) {
|
int getFireOdds(Level* level, int x, int y, int z) {
|
||||||
|
return 0; //@fire
|
||||||
|
|
||||||
int odds = 0;
|
int odds = 0;
|
||||||
if (!level->isEmptyTile(x, y, z)) return 0;
|
if (!level->isEmptyTile(x, y, z)) return 0;
|
||||||
@@ -287,6 +294,7 @@ private:
|
|||||||
}
|
}
|
||||||
|
|
||||||
bool tryIgnite(Level* level, int x, int y, int z) {
|
bool tryIgnite(Level* level, int x, int y, int z) {
|
||||||
|
return false; //@fire
|
||||||
|
|
||||||
int t = level->getTile(x, y, z);
|
int t = level->getTile(x, y, z);
|
||||||
if (t == Tile::fire->id) return true;
|
if (t == Tile::fire->id) return true;
|
||||||
|
|||||||
@@ -1,11 +1,6 @@
|
|||||||
#include "GrassTile.h"
|
#include "GrassTile.h"
|
||||||
#include "../material/Material.h"
|
#include "../material/Material.h"
|
||||||
#include "../../entity/item/ItemEntity.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)
|
GrassTile::GrassTile(int id)
|
||||||
: super(id, Material::dirt)
|
: 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 ) {
|
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;//GrassColor.get(temp, rain);
|
||||||
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);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
void GrassTile::tick( Level* level, int x, int y, int z, Random* random ) {
|
void GrassTile::tick( Level* level, int x, int y, int z, Random* random ) {
|
||||||
|
|||||||
@@ -14,7 +14,6 @@ class GrassTile: public Tile
|
|||||||
{
|
{
|
||||||
typedef Tile super;
|
typedef Tile super;
|
||||||
public:
|
public:
|
||||||
|
|
||||||
static const int MIN_BRIGHTNESS = 4;
|
static const int MIN_BRIGHTNESS = 4;
|
||||||
|
|
||||||
GrassTile(int id);
|
GrassTile(int id);
|
||||||
|
|||||||
@@ -9,8 +9,6 @@
|
|||||||
#include "../../item/Item.h"
|
#include "../../item/Item.h"
|
||||||
#include "../../item/ItemInstance.h"
|
#include "../../item/ItemInstance.h"
|
||||||
#include "../FoliageColor.h"
|
#include "../FoliageColor.h"
|
||||||
#include "../LevelSource.h"
|
|
||||||
#include "../biome/BiomeSource.h"
|
|
||||||
|
|
||||||
class Entity;
|
class Entity;
|
||||||
|
|
||||||
@@ -56,18 +54,10 @@ public:
|
|||||||
if (data == BIRCH_LEAF) {
|
if (data == BIRCH_LEAF) {
|
||||||
return FoliageColor::getBirchColor();
|
return FoliageColor::getBirchColor();
|
||||||
}
|
}
|
||||||
if (!FoliageColor::useTint){
|
|
||||||
return FoliageColor::getDefaultColor();
|
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) {
|
void onRemove(Level* level, int x, int y, int z) {
|
||||||
int r = 1;
|
int r = 1;
|
||||||
int r2 = r + 1;
|
int r2 = r + 1;
|
||||||
|
|||||||
@@ -6,24 +6,23 @@ NetherReactorPattern::NetherReactorPattern( ) {
|
|||||||
const int netherCoreId = Tile::netherReactor->id;
|
const int netherCoreId = Tile::netherReactor->id;
|
||||||
const unsigned int types[3][3][3] =
|
const unsigned int types[3][3][3] =
|
||||||
{
|
{
|
||||||
// Changing all of these values to be unsigned is needed to get the nether reactor pattern to compile. In the past having them be normal ints was fine but the c++ convention has changed
|
|
||||||
// Level 0
|
// Level 0
|
||||||
{
|
{
|
||||||
{static_cast<unsigned int>(goldId), static_cast<unsigned int>(stoneId), static_cast<unsigned int>(goldId)},
|
{goldId, stoneId, goldId},
|
||||||
{static_cast<unsigned int>(stoneId), static_cast<unsigned int>(stoneId), static_cast<unsigned int>(stoneId)},
|
{stoneId, stoneId, stoneId},
|
||||||
{static_cast<unsigned int>(goldId), static_cast<unsigned int>(stoneId), static_cast<unsigned int>(goldId)}
|
{goldId, stoneId, goldId}
|
||||||
},
|
},
|
||||||
// Level 1
|
// Level 1
|
||||||
{
|
{
|
||||||
{static_cast<unsigned int>(stoneId), 0, static_cast<unsigned int>(stoneId)},
|
{stoneId, 0, stoneId},
|
||||||
{0, static_cast<unsigned int>(netherCoreId), 0},
|
{0, netherCoreId, 0},
|
||||||
{static_cast<unsigned int>(stoneId), 0, static_cast<unsigned int>(stoneId)}
|
{stoneId, 0, stoneId}
|
||||||
},
|
},
|
||||||
// Level 2
|
// Level 2
|
||||||
{
|
{
|
||||||
{0, static_cast<unsigned int>(stoneId), 0},
|
{0, stoneId, 0},
|
||||||
{static_cast<unsigned int>(stoneId), static_cast<unsigned int>(stoneId), static_cast<unsigned int>(stoneId)},
|
{stoneId, stoneId, stoneId},
|
||||||
{0, static_cast<unsigned int>(stoneId), 0}
|
{0, stoneId, 0}
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
for(int setLevel = 0; setLevel <= 2; ++setLevel) {
|
for(int setLevel = 0; setLevel <= 2; ++setLevel) {
|
||||||
|
|||||||
Reference in New Issue
Block a user