35 Commits
Author SHA1 Message Date
brausjonas de9d2c8cb3 Update README.md 2022-10-17 23:09:56 +02:00
brausjonas d950af6735 Update README.md 2022-10-17 23:09:24 +02:00
brausjonas 3c765a23dd Update README.md 2022-10-17 23:07:45 +02:00
brausjonas c60d589d19 Update README.md 2022-10-17 23:05:11 +02:00
brausjonas c35c655b5e Update README.md 2022-10-17 23:04:43 +02:00
brausjonas 2636b0a224 Update README.md 2022-10-17 23:04:06 +02:00
brausjonas 04484f1252 Update README.md 2022-10-17 23:03:21 +02:00
brausjonas b3cd361501 Update README.md 2022-10-17 22:59:51 +02:00
brausjonas 8ee82521a0 Create README.md 2022-10-17 22:59:11 +02:00
brausjonas c926777024 Add files via upload 2022-05-18 10:38:20 +02:00
brausjonas 05eb503927 Chunk View Distance fix 2022-05-18 00:43:38 +02:00
brausjonas b7f8a517ac fdsafsdaf 2022-05-18 00:35:16 +02:00
brausjonas db5d6eb781 Revert "show other names"
This reverts commit ee55664811.
2022-05-18 00:34:52 +02:00
brausjonas 6255fcbd9b Merge branch 'main' of https://github.com/jonasbraus/Minecraft 2022-05-18 00:29:14 +02:00
brausjonas ee55664811 show other names 2022-05-18 00:29:12 +02:00
Noah 9b905de6db coal fix 2022-05-18 00:12:23 +02:00
Noah 7e8e0a93f9 Merge branch 'main' of https://github.com/jonasbraus/Minecraft 2022-05-18 00:04:58 +02:00
Noah df176f6898 mipmap 2022-05-18 00:04:47 +02:00
brausjonas 07dc6e72a0 Update BlockAtlas.png.meta 2022-05-18 00:04:34 +02:00
Noah 856fe1e1c7 update 2022-05-17 23:58:00 +02:00
brausjonas 2eda55ad16 BlockAtlas Fix 2022-05-17 23:35:17 +02:00
brausjonas 57f1e8b958 Merge branch 'main' of https://github.com/jonasbraus/Minecraft 2022-05-17 23:33:42 +02:00
brausjonas 5c45f8b253 Update Game.unity 2022-05-17 23:33:34 +02:00
Noah 2df724a4a8 Merge branch 'main' of https://github.com/jonasbraus/Minecraft 2022-05-17 23:30:16 +02:00
Noah 2cf099a4d9 Erzadern, Player Pos 2022-05-17 23:30:12 +02:00
brausjonas ed4f60bfdb Index out... Fix 2022-05-17 23:13:22 +02:00
brausjonas f23fc16f0d save bug fix
ascii 10 ist ein line feed. Einen line feed aus einer datei dann zurück umzuwandeln ist nicht möglich. Daher jeder ascii wert +32 am nur zeichen zu speichern.
2022-05-17 16:51:35 +02:00
brausjonas 45aae55fe2 View distance settings 2022-05-17 10:39:01 +02:00
brausjonas 6d9e1180fd Chunk Loading
Caves
2022-05-16 23:00:47 +02:00
brausjonas 04bb44a5c8 Update Server 2022-05-16 20:54:01 +02:00
brausjonas e065cdd988 Fixed Position Looping and double spawn 2022-05-16 20:52:41 +02:00
brausjonas 5e816c08f0 Some stuff 2022-05-16 20:10:40 +02:00
brausjonas dd3cb12698 Fix Glas Blocks 2022-05-16 09:58:00 +02:00
brausjonas 967a194f16 some stuff 2022-05-16 05:47:44 +02:00
brausjonas afecf1f518 Splash 2022-05-16 05:34:32 +02:00
30 changed files with 2202 additions and 129 deletions
+1
View File
@@ -58,3 +58,4 @@ sysinfo.txt
# Crashlytics generated file # Crashlytics generated file
crashlytics-build.properties crashlytics-build.properties
Minecraft Server/Assets/save.world
Binary file not shown.

Before

Width:  |  Height:  |  Size: 26 KiB

After

Width:  |  Height:  |  Size: 18 KiB

@@ -87,6 +87,78 @@ TextureImporter:
overridden: 0 overridden: 0
androidETC2FallbackOverride: 0 androidETC2FallbackOverride: 0
forceMaximumCompressionQuality_BC6H_BC7: 0 forceMaximumCompressionQuality_BC6H_BC7: 0
- serializedVersion: 3
buildTarget: iPhone
maxTextureSize: 2048
resizeAlgorithm: 0
textureFormat: -1
textureCompression: 1
compressionQuality: 50
crunchedCompression: 0
allowsAlphaSplitting: 0
overridden: 0
androidETC2FallbackOverride: 0
forceMaximumCompressionQuality_BC6H_BC7: 0
- serializedVersion: 3
buildTarget: Lumin
maxTextureSize: 2048
resizeAlgorithm: 0
textureFormat: -1
textureCompression: 1
compressionQuality: 50
crunchedCompression: 0
allowsAlphaSplitting: 0
overridden: 0
androidETC2FallbackOverride: 0
forceMaximumCompressionQuality_BC6H_BC7: 0
- serializedVersion: 3
buildTarget: WebGL
maxTextureSize: 2048
resizeAlgorithm: 0
textureFormat: -1
textureCompression: 1
compressionQuality: 50
crunchedCompression: 0
allowsAlphaSplitting: 0
overridden: 0
androidETC2FallbackOverride: 0
forceMaximumCompressionQuality_BC6H_BC7: 0
- serializedVersion: 3
buildTarget: tvOS
maxTextureSize: 2048
resizeAlgorithm: 0
textureFormat: -1
textureCompression: 1
compressionQuality: 50
crunchedCompression: 0
allowsAlphaSplitting: 0
overridden: 0
androidETC2FallbackOverride: 0
forceMaximumCompressionQuality_BC6H_BC7: 0
- serializedVersion: 3
buildTarget: Windows Store Apps
maxTextureSize: 2048
resizeAlgorithm: 0
textureFormat: -1
textureCompression: 1
compressionQuality: 50
crunchedCompression: 0
allowsAlphaSplitting: 0
overridden: 0
androidETC2FallbackOverride: 0
forceMaximumCompressionQuality_BC6H_BC7: 0
- serializedVersion: 3
buildTarget: Android
maxTextureSize: 2048
resizeAlgorithm: 0
textureFormat: -1
textureCompression: 1
compressionQuality: 50
crunchedCompression: 0
allowsAlphaSplitting: 0
overridden: 0
androidETC2FallbackOverride: 0
forceMaximumCompressionQuality_BC6H_BC7: 0
spriteSheet: spriteSheet:
serializedVersion: 2 serializedVersion: 2
sprites: [] sprites: []
Binary file not shown.

After

Width:  |  Height:  |  Size: 8.1 KiB

@@ -0,0 +1,108 @@
fileFormatVersion: 2
guid: f57283d516574a1409455a2b33859cf0
TextureImporter:
internalIDToNameTable: []
externalObjects: {}
serializedVersion: 11
mipmaps:
mipMapMode: 0
enableMipMap: 0
sRGBTexture: 1
linearTexture: 0
fadeOut: 0
borderMipMap: 0
mipMapsPreserveCoverage: 0
alphaTestReferenceValue: 0.5
mipMapFadeDistanceStart: 1
mipMapFadeDistanceEnd: 3
bumpmap:
convertToNormalMap: 0
externalNormalMap: 0
heightScale: 0.25
normalMapFilter: 0
isReadable: 0
streamingMipmaps: 0
streamingMipmapsPriority: 0
vTOnly: 0
grayScaleToAlpha: 0
generateCubemap: 6
cubemapConvolution: 0
seamlessCubemap: 0
textureFormat: 1
maxTextureSize: 2048
textureSettings:
serializedVersion: 2
filterMode: 0
aniso: 1
mipBias: 0
wrapU: 1
wrapV: 1
wrapW: 0
nPOTScale: 0
lightmap: 0
compressionQuality: 50
spriteMode: 1
spriteExtrude: 1
spriteMeshType: 1
alignment: 0
spritePivot: {x: 0.5, y: 0.5}
spritePixelsToUnits: 100
spriteBorder: {x: 0, y: 0, z: 0, w: 0}
spriteGenerateFallbackPhysicsShape: 1
alphaUsage: 1
alphaIsTransparency: 1
spriteTessellationDetail: -1
textureType: 8
textureShape: 1
singleChannelComponent: 0
flipbookRows: 1
flipbookColumns: 1
maxTextureSizeSet: 0
compressionQualitySet: 0
textureFormatSet: 0
ignorePngGamma: 0
applyGammaDecoding: 0
platformSettings:
- serializedVersion: 3
buildTarget: DefaultTexturePlatform
maxTextureSize: 2048
resizeAlgorithm: 0
textureFormat: -1
textureCompression: 1
compressionQuality: 50
crunchedCompression: 0
allowsAlphaSplitting: 0
overridden: 0
androidETC2FallbackOverride: 0
forceMaximumCompressionQuality_BC6H_BC7: 0
- serializedVersion: 3
buildTarget: Standalone
maxTextureSize: 2048
resizeAlgorithm: 0
textureFormat: -1
textureCompression: 1
compressionQuality: 50
crunchedCompression: 0
allowsAlphaSplitting: 0
overridden: 0
androidETC2FallbackOverride: 0
forceMaximumCompressionQuality_BC6H_BC7: 0
spriteSheet:
serializedVersion: 2
sprites: []
outline: []
physicsShape: []
bones: []
spriteID: 5e97eb03825dee720800000000000000
internalID: 0
vertices: []
indices:
edges: []
weights: []
secondaryTextures: []
spritePackingTag:
pSDRemoveMatte: 0
pSDShowRemoveMatteOption: 0
userData:
assetBundleName:
assetBundleVariant:
Binary file not shown.

After

Width:  |  Height:  |  Size: 8.0 KiB

@@ -0,0 +1,108 @@
fileFormatVersion: 2
guid: 9cc0e072410155649995525a7fde86f3
TextureImporter:
internalIDToNameTable: []
externalObjects: {}
serializedVersion: 11
mipmaps:
mipMapMode: 0
enableMipMap: 0
sRGBTexture: 1
linearTexture: 0
fadeOut: 0
borderMipMap: 0
mipMapsPreserveCoverage: 0
alphaTestReferenceValue: 0.5
mipMapFadeDistanceStart: 1
mipMapFadeDistanceEnd: 3
bumpmap:
convertToNormalMap: 0
externalNormalMap: 0
heightScale: 0.25
normalMapFilter: 0
isReadable: 0
streamingMipmaps: 0
streamingMipmapsPriority: 0
vTOnly: 0
grayScaleToAlpha: 0
generateCubemap: 6
cubemapConvolution: 0
seamlessCubemap: 0
textureFormat: 1
maxTextureSize: 2048
textureSettings:
serializedVersion: 2
filterMode: 0
aniso: 1
mipBias: 0
wrapU: 1
wrapV: 1
wrapW: 0
nPOTScale: 0
lightmap: 0
compressionQuality: 50
spriteMode: 1
spriteExtrude: 1
spriteMeshType: 1
alignment: 0
spritePivot: {x: 0.5, y: 0.5}
spritePixelsToUnits: 100
spriteBorder: {x: 0, y: 0, z: 0, w: 0}
spriteGenerateFallbackPhysicsShape: 1
alphaUsage: 1
alphaIsTransparency: 1
spriteTessellationDetail: -1
textureType: 8
textureShape: 1
singleChannelComponent: 0
flipbookRows: 1
flipbookColumns: 1
maxTextureSizeSet: 0
compressionQualitySet: 0
textureFormatSet: 0
ignorePngGamma: 0
applyGammaDecoding: 0
platformSettings:
- serializedVersion: 3
buildTarget: DefaultTexturePlatform
maxTextureSize: 2048
resizeAlgorithm: 0
textureFormat: -1
textureCompression: 1
compressionQuality: 50
crunchedCompression: 0
allowsAlphaSplitting: 0
overridden: 0
androidETC2FallbackOverride: 0
forceMaximumCompressionQuality_BC6H_BC7: 0
- serializedVersion: 3
buildTarget: Standalone
maxTextureSize: 2048
resizeAlgorithm: 0
textureFormat: -1
textureCompression: 1
compressionQuality: 50
crunchedCompression: 0
allowsAlphaSplitting: 0
overridden: 0
androidETC2FallbackOverride: 0
forceMaximumCompressionQuality_BC6H_BC7: 0
spriteSheet:
serializedVersion: 2
sprites: []
outline: []
physicsShape: []
bones: []
spriteID: 5e97eb03825dee720800000000000000
internalID: 0
vertices: []
indices:
edges: []
weights: []
secondaryTextures: []
spritePackingTag:
pSDRemoveMatte: 0
pSDShowRemoveMatteOption: 0
userData:
assetBundleName:
assetBundleVariant:
@@ -57,7 +57,7 @@ Transform:
m_PrefabAsset: {fileID: 0} m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 6443714940181712877} m_GameObject: {fileID: 6443714940181712877}
m_LocalRotation: {x: -0.7071068, y: 0, z: 0, w: 0.7071068} m_LocalRotation: {x: -0.7071068, y: 0, z: 0, w: 0.7071068}
m_LocalPosition: {x: 0, y: -0.132, z: 0.024} m_LocalPosition: {x: 0, y: -0.092, z: 0.024}
m_LocalScale: {x: 0.24999988, y: 0.24999988, z: 0.25} m_LocalScale: {x: 0.24999988, y: 0.24999988, z: 0.25}
m_Children: [] m_Children: []
m_Father: {fileID: 4093383343133656141} m_Father: {fileID: 4093383343133656141}
File diff suppressed because it is too large Load Diff
+103 -27
View File
@@ -236,11 +236,11 @@ RectTransform:
m_LocalScale: {x: 1, y: 1, z: 1} m_LocalScale: {x: 1, y: 1, z: 1}
m_Children: [] m_Children: []
m_Father: {fileID: 2033099004} m_Father: {fileID: 2033099004}
m_RootOrder: 3 m_RootOrder: 4
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
m_AnchorMin: {x: 0.5, y: 0.5} m_AnchorMin: {x: 0, y: 0.5}
m_AnchorMax: {x: 0.5, y: 0.5} m_AnchorMax: {x: 0, y: 0.5}
m_AnchoredPosition: {x: -149.2, y: -78.60002} m_AnchoredPosition: {x: 115.600006, y: -79.4}
m_SizeDelta: {x: 160, y: 30} m_SizeDelta: {x: 160, y: 30}
m_Pivot: {x: 0.5, y: 0.5} m_Pivot: {x: 0.5, y: 0.5}
--- !u!114 &71764842 --- !u!114 &71764842
@@ -315,7 +315,7 @@ RectTransform:
m_LocalScale: {x: 1, y: 1, z: 1} m_LocalScale: {x: 1, y: 1, z: 1}
m_Children: [] m_Children: []
m_Father: {fileID: 2033099004} m_Father: {fileID: 2033099004}
m_RootOrder: 1 m_RootOrder: 2
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
m_AnchorMin: {x: 0.5, y: 1} m_AnchorMin: {x: 0.5, y: 1}
m_AnchorMax: {x: 0.5, y: 1} m_AnchorMax: {x: 0.5, y: 1}
@@ -476,11 +476,11 @@ RectTransform:
m_LocalScale: {x: 1, y: 1, z: 1} m_LocalScale: {x: 1, y: 1, z: 1}
m_Children: [] m_Children: []
m_Father: {fileID: 2033099004} m_Father: {fileID: 2033099004}
m_RootOrder: 4 m_RootOrder: 5
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
m_AnchorMin: {x: 0.5, y: 0.5} m_AnchorMin: {x: 0, y: 0.5}
m_AnchorMax: {x: 0.5, y: 0.5} m_AnchorMax: {x: 0, y: 0.5}
m_AnchoredPosition: {x: -149.19998, y: -124.000015} m_AnchoredPosition: {x: 115.600006, y: -124.79999}
m_SizeDelta: {x: 160, y: 30} m_SizeDelta: {x: 160, y: 30}
m_Pivot: {x: 0.5, y: 0.5} m_Pivot: {x: 0.5, y: 0.5}
--- !u!114 &854417905 --- !u!114 &854417905
@@ -557,11 +557,11 @@ RectTransform:
m_Children: m_Children:
- {fileID: 1486495034} - {fileID: 1486495034}
m_Father: {fileID: 2033099004} m_Father: {fileID: 2033099004}
m_RootOrder: 6 m_RootOrder: 7
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
m_AnchorMin: {x: 0.5, y: 0.5} m_AnchorMin: {x: 0, y: 0.5}
m_AnchorMax: {x: 0.5, y: 0.5} m_AnchorMax: {x: 0, y: 0.5}
m_AnchoredPosition: {x: 105.799995, y: -78.60001} m_AnchoredPosition: {x: 370.59998, y: -79.39999}
m_SizeDelta: {x: 297.6238, y: 30} m_SizeDelta: {x: 297.6238, y: 30}
m_Pivot: {x: 0.5, y: 0.5} m_Pivot: {x: 0.5, y: 0.5}
--- !u!114 &1047272871 --- !u!114 &1047272871
@@ -790,11 +790,11 @@ RectTransform:
m_Children: m_Children:
- {fileID: 1578575450} - {fileID: 1578575450}
m_Father: {fileID: 2033099004} m_Father: {fileID: 2033099004}
m_RootOrder: 5 m_RootOrder: 6
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
m_AnchorMin: {x: 0.5, y: 0.5} m_AnchorMin: {x: 0, y: 0.5}
m_AnchorMax: {x: 0.5, y: 0.5} m_AnchorMax: {x: 0, y: 0.5}
m_AnchoredPosition: {x: 105.80006, y: -33.200016} m_AnchoredPosition: {x: 370.60004, y: -33.999992}
m_SizeDelta: {x: 297.6238, y: 30} m_SizeDelta: {x: 297.6238, y: 30}
m_Pivot: {x: 0.5, y: 0.5} m_Pivot: {x: 0.5, y: 0.5}
--- !u!114 &1174182476 --- !u!114 &1174182476
@@ -912,6 +912,81 @@ CanvasRenderer:
m_PrefabAsset: {fileID: 0} m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 1174182474} m_GameObject: {fileID: 1174182474}
m_CullTransparentMesh: 1 m_CullTransparentMesh: 1
--- !u!1 &1245606520
GameObject:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
serializedVersion: 6
m_Component:
- component: {fileID: 1245606521}
- component: {fileID: 1245606523}
- component: {fileID: 1245606522}
m_Layer: 5
m_Name: Background (1)
m_TagString: Untagged
m_Icon: {fileID: 0}
m_NavMeshLayer: 0
m_StaticEditorFlags: 0
m_IsActive: 1
--- !u!224 &1245606521
RectTransform:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 1245606520}
m_LocalRotation: {x: 0, y: 0, z: 0, w: 1}
m_LocalPosition: {x: 0, y: 0, z: 0}
m_LocalScale: {x: 1, y: 1, z: 1}
m_Children: []
m_Father: {fileID: 2033099004}
m_RootOrder: 1
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
m_AnchorMin: {x: 0, y: 0}
m_AnchorMax: {x: 1, y: 1}
m_AnchoredPosition: {x: 1.8013916, y: 0}
m_SizeDelta: {x: 3.6027832, y: -0.54000854}
m_Pivot: {x: 0.5, y: 0.5}
--- !u!114 &1245606522
MonoBehaviour:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 1245606520}
m_Enabled: 1
m_EditorHideFlags: 0
m_Script: {fileID: 11500000, guid: fe87c0e1cc204ed48ad3b37840f39efc, type: 3}
m_Name:
m_EditorClassIdentifier:
m_Material: {fileID: 0}
m_Color: {r: 1, g: 1, b: 1, a: 0.15686275}
m_RaycastTarget: 1
m_RaycastPadding: {x: 0, y: 0, z: 0, w: 0}
m_Maskable: 1
m_OnCullStateChanged:
m_PersistentCalls:
m_Calls: []
m_Sprite: {fileID: 0}
m_Type: 0
m_PreserveAspect: 0
m_FillCenter: 1
m_FillMethod: 4
m_FillAmount: 1
m_FillClockwise: 1
m_FillOrigin: 0
m_UseSpriteMesh: 0
m_PixelsPerUnitMultiplier: 1
--- !u!222 &1245606523
CanvasRenderer:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 1245606520}
m_CullTransparentMesh: 1
--- !u!1 &1279274158 --- !u!1 &1279274158
GameObject: GameObject:
m_ObjectHideFlags: 0 m_ObjectHideFlags: 0
@@ -944,11 +1019,11 @@ RectTransform:
m_Children: m_Children:
- {fileID: 1747497270} - {fileID: 1747497270}
m_Father: {fileID: 2033099004} m_Father: {fileID: 2033099004}
m_RootOrder: 8 m_RootOrder: 9
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
m_AnchorMin: {x: 1, y: 0} m_AnchorMin: {x: 1, y: 0}
m_AnchorMax: {x: 1, y: 0} m_AnchorMax: {x: 1, y: 0}
m_AnchoredPosition: {x: -105.899994, y: 43} m_AnchoredPosition: {x: -87.9, y: 31.533}
m_SizeDelta: {x: 160, y: 45.3632} m_SizeDelta: {x: 160, y: 45.3632}
m_Pivot: {x: 0.5, y: 0.5} m_Pivot: {x: 0.5, y: 0.5}
--- !u!114 &1279274160 --- !u!114 &1279274160
@@ -1235,11 +1310,11 @@ RectTransform:
m_Children: m_Children:
- {fileID: 1055915759} - {fileID: 1055915759}
m_Father: {fileID: 2033099004} m_Father: {fileID: 2033099004}
m_RootOrder: 7 m_RootOrder: 8
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
m_AnchorMin: {x: 0.5, y: 0.5} m_AnchorMin: {x: 0, y: 0.5}
m_AnchorMax: {x: 0.5, y: 0.5} m_AnchorMax: {x: 0, y: 0.5}
m_AnchoredPosition: {x: 105.80001, y: -124} m_AnchoredPosition: {x: 370.6, y: -124.79997}
m_SizeDelta: {x: 297.6238, y: 30} m_SizeDelta: {x: 297.6238, y: 30}
m_Pivot: {x: 0.5, y: 0.5} m_Pivot: {x: 0.5, y: 0.5}
--- !u!114 &1603203176 --- !u!114 &1603203176
@@ -1529,11 +1604,11 @@ RectTransform:
m_LocalScale: {x: 1, y: 1, z: 1} m_LocalScale: {x: 1, y: 1, z: 1}
m_Children: [] m_Children: []
m_Father: {fileID: 2033099004} m_Father: {fileID: 2033099004}
m_RootOrder: 2 m_RootOrder: 3
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
m_AnchorMin: {x: 0.5, y: 0.5} m_AnchorMin: {x: 0, y: 0.5}
m_AnchorMax: {x: 0.5, y: 0.5} m_AnchorMax: {x: 0, y: 0.5}
m_AnchoredPosition: {x: -149.19998, y: -33.200016} m_AnchoredPosition: {x: 115.600006, y: -33.999992}
m_SizeDelta: {x: 160, y: 30} m_SizeDelta: {x: 160, y: 30}
m_Pivot: {x: 0.5, y: 0.5} m_Pivot: {x: 0.5, y: 0.5}
--- !u!114 &1783690559 --- !u!114 &1783690559
@@ -1670,6 +1745,7 @@ RectTransform:
m_LocalScale: {x: 0, y: 0, z: 0} m_LocalScale: {x: 0, y: 0, z: 0}
m_Children: m_Children:
- {fileID: 1661573148} - {fileID: 1661573148}
- {fileID: 1245606521}
- {fileID: 557944438} - {fileID: 557944438}
- {fileID: 1783690558} - {fileID: 1783690558}
- {fileID: 71764841} - {fileID: 71764841}
@@ -9,6 +9,7 @@ public class Chunk
private Material material; private Material material;
private ChunkCoord chunkPosition; private ChunkCoord chunkPosition;
private World world; private World world;
public bool active = false;
//rendering //rendering
public GameObject gameObject; public GameObject gameObject;
@@ -86,6 +87,10 @@ public class Chunk
else if(world.IsBlockTransparent(world.GetBlockID(new Vector3(x + Data.faceChecks[f].x + chunkPosition.x * Data.chunkWidth, else if(world.IsBlockTransparent(world.GetBlockID(new Vector3(x + Data.faceChecks[f].x + chunkPosition.x * Data.chunkWidth,
y + Data.faceChecks[f].y, y + Data.faceChecks[f].y,
z + Data.faceChecks[f].z + chunkPosition.z * Data.chunkWidth)))) z + Data.faceChecks[f].z + chunkPosition.z * Data.chunkWidth))))
{
if(world.GetBlockID(new Vector3(x + chunkPosition.x * Data.chunkWidth,
y,
z + chunkPosition.z * Data.chunkWidth)) != 9)
{ {
for (int v = 0; v < 6; v++) for (int v = 0; v < 6; v++)
{ {
@@ -99,6 +104,7 @@ public class Chunk
} }
} }
} }
}
//add uv to a face //add uv to a face
@@ -131,6 +137,17 @@ public class Chunk
meshFilter.mesh = mesh; meshFilter.mesh = mesh;
meshRenderer.material = material; meshRenderer.material = material;
collider.sharedMesh = mesh; collider.sharedMesh = mesh;
active = true;
}
public void DestroyMesh()
{
meshFilter.mesh = null;
vertices.Clear();
triangles.Clear();
uv.Clear();
collider.sharedMesh = null;
active = false;
} }
public void Edit(byte x, byte y, byte z, byte blockID) public void Edit(byte x, byte y, byte z, byte blockID)
@@ -101,7 +101,7 @@ public class Client
{ {
for (int z = 0; z < Data.chunkWidth; z++) for (int z = 0; z < Data.chunkWidth; z++)
{ {
blocks[x, y, z] = data[i]; blocks[x, y, z] = (byte)(data[i] - 32);
i++; i++;
} }
} }
@@ -6,6 +6,7 @@ public class Data
{ {
public static int chunkWidth = 15, chunkHeight = 250; public static int chunkWidth = 15, chunkHeight = 250;
public static int textureAtlasSize = 16; public static int textureAtlasSize = 16;
public static int viewDistance = 4;
public static readonly Vector3[] vertices = public static readonly Vector3[] vertices =
{ {
+11 -3
View File
@@ -14,11 +14,19 @@ public class Hotbar : MonoBehaviour
private void Start() private void Start()
{ {
//change later: hotBarItems[0] = 10;
hotBarItems[1] = 11;
hotBarItems[2] = 3;
hotBarItems[3] = 4;
hotBarItems[4] = 5;
hotBarItems[5] = 2;
hotBarItems[6] = 7;
hotBarItems[7] = 8;
hotBarItems[8] = 9;
for (int i = 0; i < 9; i++) for (int i = 0; i < 9; i++)
{ {
itemSlots[i].sprite = itemIcons[i]; itemSlots[i].sprite = itemIcons[hotBarItems[i] - 1];
hotBarItems[i] = (byte)(i + 1);
} }
} }
@@ -0,0 +1,27 @@
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using UnityEngine.UI;
public class Options : MonoBehaviour
{
[SerializeField] private Text viewDistanceText;
[SerializeField] private Slider viewDistanceSlider;
private void Start()
{
if (PlayerPrefs.HasKey("viewDistance"))
{
int value = PlayerPrefs.GetInt("viewDistance");
viewDistanceText.text = value.ToString();
viewDistanceSlider.value = value;
}
}
public void SliderViewDistanceChanged(float value)
{
viewDistanceText.text = ((int)value).ToString();
PlayerPrefs.SetInt("viewDistance", (int)value);
PlayerPrefs.Save();
}
}
@@ -0,0 +1,11 @@
fileFormatVersion: 2
guid: ab80d1e654833ae4f88450121509e895
MonoImporter:
externalObjects: {}
serializedVersion: 2
defaultReferences: []
executionOrder: 0
icon: {instanceID: 0}
userData:
assetBundleName:
assetBundleVariant:
+12 -6
View File
@@ -2,6 +2,7 @@ using System;
using System.Collections; using System.Collections;
using System.Collections.Generic; using System.Collections.Generic;
using UnityEngine; using UnityEngine;
using UnityEngine.UI;
public class Player : MonoBehaviour public class Player : MonoBehaviour
{ {
@@ -14,6 +15,7 @@ public class Player : MonoBehaviour
[SerializeField] private float jumpForce; [SerializeField] private float jumpForce;
[SerializeField] private World world; [SerializeField] private World world;
[SerializeField] private Hotbar hotbar; [SerializeField] private Hotbar hotbar;
[SerializeField] private Text positionText;
private float playerWidth = 0.15f; private float playerWidth = 0.15f;
private float playerOffsetWidth = 0.1f; private float playerOffsetWidth = 0.1f;
private float horizontal; private float horizontal;
@@ -81,6 +83,7 @@ public class Player : MonoBehaviour
if (lastPosition.x != position.x || lastPosition.y != position.y || lastPosition.z != position.z) if (lastPosition.x != position.x || lastPosition.y != position.y || lastPosition.z != position.z)
{ {
client.SendPositionUpdate(transform.position); client.SendPositionUpdate(transform.position);
positionText.text = "X: " + (int) position.x + " Y: " + (int) position.y + " Z: " + (int) position.z;
} }
if (rotation.w != lastRotation.w || rotation.x != lastRotation.x || rotation.y != lastRotation.y || if (rotation.w != lastRotation.w || rotation.x != lastRotation.x || rotation.y != lastRotation.y ||
@@ -101,6 +104,8 @@ public class Player : MonoBehaviour
mouseX = Input.GetAxis("Mouse X"); mouseX = Input.GetAxis("Mouse X");
mouseY = Input.GetAxis("Mouse Y"); mouseY = Input.GetAxis("Mouse Y");
//Sprinting //Sprinting
if (Input.GetKeyDown(KeyCode.LeftShift) || Input.GetButtonDown("Left Stick Button")) if (Input.GetKeyDown(KeyCode.LeftShift) || Input.GetButtonDown("Left Stick Button"))
{ {
@@ -180,6 +185,7 @@ public class Player : MonoBehaviour
int currentSlot = (int)hotbar.GetSelectedSlot(); int currentSlot = (int)hotbar.GetSelectedSlot();
currentSlot += (int)(-Input.GetAxisRaw("Mouse ScrollWheel") * 10); currentSlot += (int)(-Input.GetAxisRaw("Mouse ScrollWheel") * 10);
if (currentSlot > 8) currentSlot = 0; if (currentSlot > 8) currentSlot = 0;
if (currentSlot < 0) currentSlot = 8; if (currentSlot < 0) currentSlot = 8;
hotbar.SelectSlot((byte)currentSlot); hotbar.SelectSlot((byte)currentSlot);
@@ -276,10 +282,10 @@ public class Player : MonoBehaviour
private float CheckUpSpeed(float upSpeed) private float CheckUpSpeed(float upSpeed)
{ {
if ( if (
world.CheckBlock(new Vector3(transform.position.x - playerWidth, transform.position.y + upSpeed + 2f, transform.position.z - playerWidth)) || world.CheckBlock(new Vector3(transform.position.x - playerWidth, transform.position.y + upSpeed + 1.9f, transform.position.z - playerWidth)) ||
world.CheckBlock(new Vector3(transform.position.x + playerWidth, transform.position.y + upSpeed + 2f, transform.position.z - playerWidth)) || world.CheckBlock(new Vector3(transform.position.x + playerWidth, transform.position.y + upSpeed + 1.9f, transform.position.z - playerWidth)) ||
world.CheckBlock(new Vector3(transform.position.x + playerWidth, transform.position.y + upSpeed + 2f, transform.position.z + playerWidth)) || world.CheckBlock(new Vector3(transform.position.x + playerWidth, transform.position.y + upSpeed + 1.9f, transform.position.z + playerWidth)) ||
world.CheckBlock(new Vector3(transform.position.x - playerWidth, transform.position.y + upSpeed + 2f, transform.position.z + playerWidth)) world.CheckBlock(new Vector3(transform.position.x - playerWidth, transform.position.y + upSpeed + 1.9f, transform.position.z + playerWidth))
) )
{ {
return 0; return 0;
@@ -386,8 +392,8 @@ public class Player : MonoBehaviour
public Vector3 GetDefaultPlayerPosition() public Vector3 GetDefaultPlayerPosition()
{ {
return new Vector3((byte)transform.position.x, return new Vector3(world.worldSize * Data.chunkWidth / 2,
world.GetHeight((byte)transform.position.x, (byte)transform.position.z) + 2, (byte)transform.position.z); world.GetHeight((byte)transform.position.x, (byte)transform.position.z) + 2, world.worldSize * Data.chunkWidth / 2);
} }
} }
+106 -7
View File
@@ -24,10 +24,14 @@ public class World : MonoBehaviour
[SerializeField] private Player player; [SerializeField] private Player player;
[SerializeField] private GameObject deadScreen; [SerializeField] private GameObject deadScreen;
[SerializeField] private GameObject pauseScreen; [SerializeField] private GameObject pauseScreen;
[SerializeField] private GameObject optionsScreen;
private ChunkCoord lastPlayerChunkCoord = new ChunkCoord(0, 0);
//chunks //chunks
private Chunk[,] chunks; private Chunk[,] chunks;
private Queue<ChunkCoord> chunksToUpdate = new Queue<ChunkCoord>(); private Queue<ChunkCoord> chunksToUpdate = new Queue<ChunkCoord>();
private Queue<ChunkCoord> chunksToUpdate1 = new Queue<ChunkCoord>();
private List<Chunk> lastActiveChunks = new List<Chunk>();
//blocks //blocks
[SerializeField] public BlockData[] blockData; [SerializeField] public BlockData[] blockData;
@@ -40,6 +44,12 @@ public class World : MonoBehaviour
private void Start() private void Start()
{ {
//get default information //get default information
if (PlayerPrefs.HasKey("viewDistance"))
{
Data.viewDistance = PlayerPrefs.GetInt("viewDistance");
}
name = PlayerPrefs.GetString("userName"); name = PlayerPrefs.GetString("userName");
ip = PlayerPrefs.GetString("serverIP"); ip = PlayerPrefs.GetString("serverIP");
port = int.Parse(PlayerPrefs.GetString("port")); port = int.Parse(PlayerPrefs.GetString("port"));
@@ -54,6 +64,17 @@ public class World : MonoBehaviour
private void Update() private void Update()
{ {
ChunkCoord playerChunkCoord = new ChunkCoord((int)(player.transform.position.x / Data.chunkWidth),
(int)(player.transform.position.z / Data.chunkWidth));
if (lastPlayerChunkCoord.x != playerChunkCoord.x || lastPlayerChunkCoord.z != playerChunkCoord.z)
{
LoadChunks(playerChunkCoord);
}
lastPlayerChunkCoord = new ChunkCoord((int)(player.transform.position.x / Data.chunkWidth),
(int)(player.transform.position.z / Data.chunkWidth));
//update 1 chunk in list //update 1 chunk in list
if (chunksToUpdate.Count > 0) if (chunksToUpdate.Count > 0)
{ {
@@ -61,6 +82,13 @@ public class World : MonoBehaviour
chunks[chunk.x, chunk.z].Update(); chunks[chunk.x, chunk.z].Update();
} }
//update 1 chunk in list
if (chunksToUpdate1.Count > 0)
{
ChunkCoord chunk = chunksToUpdate1.Dequeue();
chunks[chunk.x, chunk.z].Update();
}
//create 1 player in list //create 1 player in list
if (playersToCreate.Count > 0) if (playersToCreate.Count > 0)
{ {
@@ -107,23 +135,74 @@ public class World : MonoBehaviour
} }
} }
private void LoadChunks(ChunkCoord playerChunk)
{
List<Chunk> checkList = new List<Chunk>();
chunksToUpdate1.Clear();
for (int x = playerChunk.x - Data.viewDistance; x <= playerChunk.x + Data.viewDistance; x++)
{
for (int z = playerChunk.z - Data.viewDistance; z <= playerChunk.z + Data.viewDistance; z++)
{
if(z >= 0 && x >= 0 && z < worldSize && x < worldSize)
{
if (chunks[x, z].gameObject == null)
{
chunks[x, z].Initialize();
chunks[x, z].gameObject.transform.SetParent(gameObject.transform);
}
if (!chunks[x, z].active)
{
chunksToUpdate1.Enqueue(new ChunkCoord(x, z));
}
checkList.Add(chunks[x, z]);
}
}
}
foreach (Chunk c in lastActiveChunks)
{
if (!checkList.Contains(c))
{
c.DestroyMesh();
}
}
lastActiveChunks.Clear();
lastActiveChunks = new List<Chunk>(checkList);
}
//enqueue player position update to list //enqueue player position update to list
public void UpdatePlayerPosition(Vector3 position, byte id) public void UpdatePlayerPosition(Vector3 position, byte id)
{
if(playersPositionsToUpdate.Count < 50)
{ {
playersPositionsToUpdate.Enqueue(new Player.PlayerPositionUpdateData(id, position, false)); playersPositionsToUpdate.Enqueue(new Player.PlayerPositionUpdateData(id, position, false));
} }
}
//enqueue player rotation update to list //enqueue player rotation update to list
public void UpdatePlayerRotation(Quaternion rotation, byte id) public void UpdatePlayerRotation(Quaternion rotation, byte id)
{
if(playersRotationsToUpdate.Count < 50)
{ {
playersRotationsToUpdate.Enqueue(new Player.PlayerRotationsUpdateData(id, rotation)); playersRotationsToUpdate.Enqueue(new Player.PlayerRotationsUpdateData(id, rotation));
} }
}
//enqueue player create data to list //enqueue player create data to list
public void AddPlayer(byte id) public void AddPlayer(byte id)
{
if(!otherPlayers.ContainsKey(id))
{ {
playersToCreate.Enqueue(id); playersToCreate.Enqueue(id);
} }
}
//creates the array for chunk objects //creates the array for chunk objects
public void CreateChunkArray() public void CreateChunkArray()
@@ -140,14 +219,14 @@ public class World : MonoBehaviour
//initialized the chunk objects //initialized the chunk objects
public void CreateChunks() public void CreateChunks()
{ {
for (int x = 0; x < worldSize; x++) for (int x = worldSize / 2 - Data.viewDistance; x < worldSize / 2 + Data.viewDistance; x++)
{ {
for (int z = 0; z < worldSize; z++) for (int z = worldSize / 2 - Data.viewDistance; z < worldSize / 2 + Data.viewDistance; z++)
{ {
chunks[x, z].Initialize(); chunks[x, z].Initialize();
chunks[x, z].gameObject.transform.SetParent(gameObject.transform); chunks[x, z].gameObject.transform.SetParent(gameObject.transform);
chunks[x, z].AddBlocks(); chunksToUpdate.Enqueue(new ChunkCoord(x, z));
chunks[x, z].CreateMesh(); lastActiveChunks.Add(chunks[x, z]);
} }
} }
} }
@@ -204,11 +283,11 @@ public class World : MonoBehaviour
int zInChunk = z - (zChunk * Data.chunkWidth); int zInChunk = z - (zChunk * Data.chunkWidth);
Chunk c = chunks[xChunk, zChunk]; Chunk c = chunks[xChunk, zChunk];
for (int y = 0; y < Data.chunkHeight; y++) for (int y = Data.chunkHeight - 1; y > 0; y--)
{ {
if (c.blocks[xInChunk, y, zInChunk] == 0) if (c.blocks[xInChunk, y, zInChunk] != 0)
{ {
return (byte)(y - 1); return (byte)(y + 1);
} }
} }
@@ -289,8 +368,20 @@ public class World : MonoBehaviour
{ {
Cursor.visible = true; Cursor.visible = true;
Cursor.lockState = CursorLockMode.None; Cursor.lockState = CursorLockMode.None;
optionsScreen.SetActive(false);
pauseScreen.SetActive(true); pauseScreen.SetActive(true);
Time.timeScale = 0; Time.timeScale = 0;
if (PlayerPrefs.HasKey("viewDistance"))
{
int value = PlayerPrefs.GetInt("viewDistance");
if (value != Data.viewDistance)
{
Data.viewDistance = value;
LoadChunks(new ChunkCoord((int)(player.transform.position.x / Data.chunkWidth),
(int)(player.transform.position.z / Data.chunkWidth)));
}
}
} }
public void RespawnButton() public void RespawnButton()
@@ -300,6 +391,8 @@ public class World : MonoBehaviour
Time.timeScale = 1; Time.timeScale = 1;
player.transform.position = player.GetDefaultPlayerPosition(); player.transform.position = player.GetDefaultPlayerPosition();
deadScreen.SetActive(false); deadScreen.SetActive(false);
LoadChunks(new ChunkCoord((int)(player.transform.position.x / Data.chunkWidth),
(int)(player.transform.position.z / Data.chunkWidth)));
} }
public void ResumeButton() public void ResumeButton()
@@ -318,6 +411,12 @@ public class World : MonoBehaviour
deadScreen.SetActive(false); deadScreen.SetActive(false);
} }
public void ShowOptionsScreen()
{
pauseScreen.SetActive(false);
optionsScreen.SetActive(true);
}
public void SaveButton() public void SaveButton()
{ {
client.SaveWorld(); client.SaveWorld();
@@ -373,3 +373,19 @@ InputManager:
type: 0 type: 0
axis: 8 axis: 8
joyNum: 0 joyNum: 0
- serializedVersion: 3
m_Name: LB
descriptiveName:
descriptiveNegativeName:
negativeButton:
positiveButton: joystick button 4
altNegativeButton:
altPositiveButton:
gravity: 1000
dead: 0.001
sensitivity: 1000
snap: 0
invert: 0
type: 0
axis: 8
joyNum: 0
@@ -16,13 +16,13 @@ PlayerSettings:
productName: Minecraft Client productName: Minecraft Client
defaultCursor: {fileID: 0} defaultCursor: {fileID: 0}
cursorHotspot: {x: 0, y: 0} cursorHotspot: {x: 0, y: 0}
m_SplashScreenBackgroundColor: {r: 0.13725491, g: 0.12156863, b: 0.1254902, a: 1} m_SplashScreenBackgroundColor: {r: 0, g: 0.17825913, b: 1, a: 1}
m_ShowUnitySplashScreen: 1 m_ShowUnitySplashScreen: 1
m_ShowUnitySplashLogo: 1 m_ShowUnitySplashLogo: 1
m_SplashScreenOverlayOpacity: 1 m_SplashScreenOverlayOpacity: 1
m_SplashScreenAnimation: 1 m_SplashScreenAnimation: 1
m_SplashScreenLogoStyle: 1 m_SplashScreenLogoStyle: 0
m_SplashScreenDrawMode: 0 m_SplashScreenDrawMode: 1
m_SplashScreenBackgroundAnimationZoom: 1 m_SplashScreenBackgroundAnimationZoom: 1
m_SplashScreenLogoAnimationZoom: 1 m_SplashScreenLogoAnimationZoom: 1
m_SplashScreenBackgroundLandscapeAspect: 1 m_SplashScreenBackgroundLandscapeAspect: 1
@@ -39,7 +39,9 @@ PlayerSettings:
y: 0 y: 0
width: 1 width: 1
height: 1 height: 1
m_SplashScreenLogos: [] m_SplashScreenLogos:
- logo: {fileID: 10404, guid: 0000000000000000e000000000000000, type: 0}
duration: 3.01
m_VirtualRealitySplashScreen: {fileID: 0} m_VirtualRealitySplashScreen: {fileID: 0}
m_HolographicTrackingLossScreen: {fileID: 0} m_HolographicTrackingLossScreen: {fileID: 0}
defaultScreenWidth: 512 defaultScreenWidth: 512
@@ -580,9 +582,9 @@ PlayerSettings:
ps4IncludedModules: [] ps4IncludedModules: []
ps4attribVROutputEnabled: 0 ps4attribVROutputEnabled: 0
monoEnv: monoEnv:
splashScreenBackgroundSourceLandscape: {fileID: 0} splashScreenBackgroundSourceLandscape: {fileID: 21300000, guid: b9659c3db2ca9c0469b9d747f546103a, type: 3}
splashScreenBackgroundSourcePortrait: {fileID: 0} splashScreenBackgroundSourcePortrait: {fileID: 0}
blurSplashScreenBackground: 1 blurSplashScreenBackground: 0
spritePackerPolicy: spritePackerPolicy:
webGLMemorySize: 16 webGLMemorySize: 16
webGLExceptionSupport: 1 webGLExceptionSupport: 1
@@ -0,0 +1,167 @@
{
"templatePinStates": [],
"dependencyTypeInfos": [
{
"userAdded": false,
"type": "UnityEngine.AnimationClip",
"ignore": false,
"defaultInstantiationMode": 0,
"supportsModification": true
},
{
"userAdded": false,
"type": "UnityEditor.Animations.AnimatorController",
"ignore": false,
"defaultInstantiationMode": 0,
"supportsModification": true
},
{
"userAdded": false,
"type": "UnityEngine.AnimatorOverrideController",
"ignore": false,
"defaultInstantiationMode": 0,
"supportsModification": true
},
{
"userAdded": false,
"type": "UnityEditor.Audio.AudioMixerController",
"ignore": false,
"defaultInstantiationMode": 0,
"supportsModification": true
},
{
"userAdded": false,
"type": "UnityEngine.ComputeShader",
"ignore": true,
"defaultInstantiationMode": 1,
"supportsModification": true
},
{
"userAdded": false,
"type": "UnityEngine.Cubemap",
"ignore": false,
"defaultInstantiationMode": 0,
"supportsModification": true
},
{
"userAdded": false,
"type": "UnityEngine.GameObject",
"ignore": false,
"defaultInstantiationMode": 0,
"supportsModification": true
},
{
"userAdded": false,
"type": "UnityEditor.LightingDataAsset",
"ignore": false,
"defaultInstantiationMode": 0,
"supportsModification": false
},
{
"userAdded": false,
"type": "UnityEngine.LightingSettings",
"ignore": false,
"defaultInstantiationMode": 0,
"supportsModification": true
},
{
"userAdded": false,
"type": "UnityEngine.Material",
"ignore": false,
"defaultInstantiationMode": 0,
"supportsModification": true
},
{
"userAdded": false,
"type": "UnityEditor.MonoScript",
"ignore": true,
"defaultInstantiationMode": 1,
"supportsModification": true
},
{
"userAdded": false,
"type": "UnityEngine.PhysicMaterial",
"ignore": false,
"defaultInstantiationMode": 0,
"supportsModification": true
},
{
"userAdded": false,
"type": "UnityEngine.PhysicsMaterial2D",
"ignore": false,
"defaultInstantiationMode": 0,
"supportsModification": true
},
{
"userAdded": false,
"type": "UnityEngine.Rendering.PostProcessing.PostProcessProfile",
"ignore": false,
"defaultInstantiationMode": 0,
"supportsModification": true
},
{
"userAdded": false,
"type": "UnityEngine.Rendering.PostProcessing.PostProcessResources",
"ignore": false,
"defaultInstantiationMode": 0,
"supportsModification": true
},
{
"userAdded": false,
"type": "UnityEngine.Rendering.VolumeProfile",
"ignore": false,
"defaultInstantiationMode": 0,
"supportsModification": true
},
{
"userAdded": false,
"type": "UnityEditor.SceneAsset",
"ignore": false,
"defaultInstantiationMode": 0,
"supportsModification": false
},
{
"userAdded": false,
"type": "UnityEngine.Shader",
"ignore": true,
"defaultInstantiationMode": 1,
"supportsModification": true
},
{
"userAdded": false,
"type": "UnityEngine.ShaderVariantCollection",
"ignore": true,
"defaultInstantiationMode": 1,
"supportsModification": true
},
{
"userAdded": false,
"type": "UnityEngine.Texture",
"ignore": false,
"defaultInstantiationMode": 0,
"supportsModification": true
},
{
"userAdded": false,
"type": "UnityEngine.Texture2D",
"ignore": false,
"defaultInstantiationMode": 0,
"supportsModification": true
},
{
"userAdded": false,
"type": "UnityEngine.Timeline.TimelineAsset",
"ignore": false,
"defaultInstantiationMode": 0,
"supportsModification": true
}
],
"defaultDependencyTypeInfo": {
"userAdded": false,
"type": "<default_scene_template_dependencies>",
"ignore": false,
"defaultInstantiationMode": 1,
"supportsModification": true
},
"newSceneOverride": 0
}
+51
View File
@@ -0,0 +1,51 @@
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
public class Noise
{
public byte GetHeight(int x, int z, int randomOffsetX, int randomOffsetZ)
{
float scale = 0.025f;
byte perlinHeight = 10;
byte groundHeight = 50;
byte height = (byte)(Mathf.PerlinNoise((x + randomOffsetX) * scale + 0.1f, (z + randomOffsetZ) * scale + 0.1f) * perlinHeight + groundHeight);
return height;
}
public bool CheckTree(int x, int z)
{
float scale = .99f;
float threshold = .96f;
if (Mathf.PerlinNoise((x) * scale + 0.1f, (z) * scale + 0.1f) >= threshold)
{
return true;
}
return false;
}
public bool Get3DPerlin(Vector3 position, float offset, float scale, float threshold)
{
float x = (position.x + offset + .1f) * scale;
float y = (position.y + offset + .1f) * scale;
float z = (position.z + offset + .1f) * scale;
float AB = Mathf.PerlinNoise(x, y);
float BC = Mathf.PerlinNoise(y, z);
float AC = Mathf.PerlinNoise(x, z);
float BA = Mathf.PerlinNoise(y, x);
float CB = Mathf.PerlinNoise(z, y);
float CA = Mathf.PerlinNoise(z, x);
if ((AB + BC + AC + BA + CB + CA) / 6f > threshold)
{
return true;
}
return false;
}
}
@@ -0,0 +1,11 @@
fileFormatVersion: 2
guid: dedaa2ec7a8b12443a08f16cad880f84
MonoImporter:
externalObjects: {}
serializedVersion: 2
defaultReferences: []
executionOrder: 0
icon: {instanceID: 0}
userData:
assetBundleName:
assetBundleVariant:
+1 -1
View File
@@ -313,7 +313,7 @@ public class Server
{ {
for (int z = 0; z < Data.chunkWidth; z++) for (int z = 0; z < Data.chunkWidth; z++)
{ {
send[i] = world.chunks[xChunk, zChunk].blocks[x, y, z]; send[i] = (byte)(world.chunks[xChunk, zChunk].blocks[x, y, z] + 32);
i++; i++;
} }
} }
+43 -36
View File
@@ -13,6 +13,7 @@ public class World : MonoBehaviour
private int randomOffsetX, randomOffsetZ; private int randomOffsetX, randomOffsetZ;
private int seed = 0; private int seed = 0;
private string dataPath; private string dataPath;
private Noise noise = new Noise();
//chunks //chunks
public Chunk[,] chunks; public Chunk[,] chunks;
@@ -29,6 +30,8 @@ public class World : MonoBehaviour
if (File.Exists(Application.dataPath + "\\save.world")) if (File.Exists(Application.dataPath + "\\save.world"))
{ {
Console.WriteLine("loading world... \n");
chunks = new Chunk[worldSize, worldSize]; chunks = new Chunk[worldSize, worldSize];
for (int x = 0; x < worldSize; x++) for (int x = 0; x < worldSize; x++)
{ {
@@ -54,7 +57,7 @@ public class World : MonoBehaviour
{ {
for (int z = 0; z < Data.chunkWidth; z++) for (int z = 0; z < Data.chunkWidth; z++)
{ {
chunks[xChunk, zChunk].blocks[x, y, z] = save[i]; chunks[xChunk, zChunk].blocks[x, y, z] = (byte)(save[i] - 32);
i++; i++;
} }
} }
@@ -65,6 +68,8 @@ public class World : MonoBehaviour
} }
else else
{ {
Console.WriteLine("generate world... \n");
CreateChunks(); CreateChunks();
CreateTrees(); CreateTrees();
} }
@@ -102,12 +107,12 @@ public class World : MonoBehaviour
{ {
for (int z = 4; z < worldSize * Data.chunkWidth - 4; z++) for (int z = 4; z < worldSize * Data.chunkWidth - 4; z++)
{ {
if (CheckTree(x, z)) if (noise.CheckTree(x, z))
{ {
ChunkCoord chunk = new ChunkCoord((int)(x / Data.chunkWidth), ChunkCoord chunk = new ChunkCoord((int)(x / Data.chunkWidth),
(int)(z / Data.chunkWidth)); (int)(z / Data.chunkWidth));
int xInChunk = (int)(x - chunk.x * Data.chunkWidth); int xInChunk = (int)(x - chunk.x * Data.chunkWidth);
int yInChunk = (int)(GetHeight(x, z)); int yInChunk = (int)(noise.GetHeight(x, z, randomOffsetX, randomOffsetZ));
int zInChunk = (int)(z - chunk.z * Data.chunkWidth); int zInChunk = (int)(z - chunk.z * Data.chunkWidth);
int height = Random.Range(5, 9); int height = Random.Range(5, 9);
@@ -157,11 +162,6 @@ public class World : MonoBehaviour
} }
} }
} }
} }
} }
} }
@@ -170,7 +170,7 @@ public class World : MonoBehaviour
//return the ID of a block //return the ID of a block
public byte GetBlockID(Vector3 positionInWorld) public byte GetBlockID(Vector3 positionInWorld)
{ {
byte height = GetHeight((int)positionInWorld.x, (int)positionInWorld.z); byte height = noise.GetHeight((int)positionInWorld.x, (int)positionInWorld.z, randomOffsetX, randomOffsetZ);
//world pass //world pass
if (positionInWorld.x < 0 || positionInWorld.y < 0 || positionInWorld.z < 0 || if (positionInWorld.x < 0 || positionInWorld.y < 0 || positionInWorld.z < 0 ||
@@ -180,24 +180,55 @@ public class World : MonoBehaviour
return 0; return 0;
} }
//chunk pass //surface pass
if ((int)positionInWorld.y == height) if ((int)positionInWorld.y == height)
{ {
return 3; return 3;
} }
//bedrock pass
if ((int)positionInWorld.y == 0) if ((int)positionInWorld.y == 0)
{ {
return 1; return 1;
} }
//dirt pass
if ((int)positionInWorld.y > height - 3) if ((int)positionInWorld.y > height - 3)
{ {
return 2; return 2;
} }
//underground pass
if ((int)positionInWorld.y < height) if ((int)positionInWorld.y < height)
{ {
//dirt
if((int)positionInWorld.y > 6 && (int)positionInWorld.y < height - 3)
{
if (noise.Get3DPerlin(positionInWorld, 3, 0.28f, 0.65f))
{
return 2;
}
}
//coal
if((int)positionInWorld.y > 6 && (int)positionInWorld.y < height - 8)
{
if (noise.Get3DPerlin(positionInWorld, 5, 0.28f, 0.65f))
{
return 12;
}
}
// //caves
// if((int)positionInWorld.y > 6 && (int)positionInWorld.y < height - 8)
// {
// if (noise.Get3DPerlin(positionInWorld, 0, 0.18f, 0.5f))
// {
// return 0;
// }
// }
return 4; return 4;
} }
@@ -240,30 +271,6 @@ public class World : MonoBehaviour
return true; return true;
} }
private byte GetHeight(int x, int z)
{
float scale = 0.025f;
byte perlinHeight = 10;
byte groundHeight = 10;
byte height = (byte)(Mathf.PerlinNoise((x + randomOffsetX) * scale + 0.1f, (z + randomOffsetZ) * scale + 0.1f) * perlinHeight + groundHeight);
return height;
}
private bool CheckTree(int x, int z)
{
float scale = .99f;
float threshold = .96f;
if (Mathf.PerlinNoise((x) * scale + 0.1f, (z) * scale + 0.1f) >= threshold)
{
return true;
}
return false;
}
public void EditBlock(ChunkCoord chunk, Vector3 positionInChunk, byte blockID) public void EditBlock(ChunkCoord chunk, Vector3 positionInChunk, byte blockID)
{ {
byte xInChunk = (byte)(positionInChunk.x); byte xInChunk = (byte)(positionInChunk.x);
@@ -300,7 +307,7 @@ public class World : MonoBehaviour
{ {
for (int z = 0; z < Data.chunkWidth; z++) for (int z = 0; z < Data.chunkWidth; z++)
{ {
save[i] = chunks[xChunk, zChunk].blocks[x, y, z]; save[i] = (byte)(chunks[xChunk, zChunk].blocks[x, y, z] + 32);
i++; i++;
} }
} }
@@ -311,6 +318,6 @@ public class World : MonoBehaviour
} }
} }
writer.Close(); writer.Close();
Console.WriteLine("world saved! \n"); Console.WriteLine("world saved! (save.world) \n");
} }
} }
+1 -1
View File
@@ -166,5 +166,5 @@ MonoBehaviour:
m_Script: {fileID: 11500000, guid: 5457f26f725053d46bffb9885acfd7d8, type: 3} m_Script: {fileID: 11500000, guid: 5457f26f725053d46bffb9885acfd7d8, type: 3}
m_Name: m_Name:
m_EditorClassIdentifier: m_EditorClassIdentifier:
worldSize: 20 worldSize: 60
transferDelay: 5 transferDelay: 5
Binary file not shown.
-7
View File
@@ -1,7 +0,0 @@
fileFormatVersion: 2
guid: 940041af630d8d944ac3b74467aa4ae7
DefaultImporter:
externalObjects: {}
userData:
assetBundleName:
assetBundleVariant:
Binary file not shown.
+40
View File
@@ -0,0 +1,40 @@
This is an simple Minecraft Multiplayer Clone
Source code for the client:
https://github.com/jonasbraus/Minecraft/tree/main/Minecraft%20Client/Assets/Scripts
Source code for the server:
https://github.com/jonasbraus/Minecraft/tree/main/Minecraft%20Server/Assets/Game
1. You can download the installer under: https://github.com/jonasbraus/Minecraft/releases/download/Caves-and-Chunk-Loading/Minecraft.Clone.Online.Installer.exe
2. Just keep default settings in the installer
3. You should get this two icons on your desktop:
![image](https://user-images.githubusercontent.com/47791011/196282281-8f06e0f8-e270-409d-a42e-836d70208191.png)
4. Start the server application
5. If the server has been started you should get a window looking like this:
![image](https://user-images.githubusercontent.com/47791011/196282414-16bf8441-bc08-4d2f-ab57-da2bb955d567.png)
6. Now start the Minecraft Clone application
![image](https://user-images.githubusercontent.com/47791011/196282539-55600bdc-e270-40db-9ad3-21618e8f6bb0.png)
7. For "User Name" you can enter any name you want
8. If you play on your pc you can set "Server IP" to "localhost". To let others join, give them your computers IP
9. For "Port" you can enter "8051" by default
![image](https://user-images.githubusercontent.com/47791011/196283127-acd485b6-e08c-45a5-ace6-b933bf9c9cd6.png)
10. Click "Play" and wait until the world has been loaded
11. Ready to Play
![image](https://user-images.githubusercontent.com/47791011/196283573-a882f1a6-cf7a-42d8-a3ed-caede89216d8.png)