├── .gitignore
├── README.md
├── pom.xml
└── src
├── main
├── java
│ ├── META-INF
│ │ └── MANIFEST.MF
│ ├── com
│ │ ├── mojang
│ │ │ ├── minecraft
│ │ │ │ ├── ChatLine.java
│ │ │ │ ├── Entity.java
│ │ │ │ ├── GameSettings.java
│ │ │ │ ├── KeyBinding.java
│ │ │ │ ├── Minecraft$OS.java
│ │ │ │ ├── Minecraft.java
│ │ │ │ ├── MinecraftApplet$1.java
│ │ │ │ ├── MinecraftApplet.java
│ │ │ │ ├── MovingObjectPosition.java
│ │ │ │ ├── OperatingSystemLookup.java
│ │ │ │ ├── ProgressBarDisplay.java
│ │ │ │ ├── ResourceDownloadThread.java
│ │ │ │ ├── SessionData.java
│ │ │ │ ├── SkinDownloadThread.java
│ │ │ │ ├── SleepForeverThread.java
│ │ │ │ ├── StopGameException.java
│ │ │ │ ├── Timer.java
│ │ │ │ ├── gamemode
│ │ │ │ │ ├── CreativeGameMode.java
│ │ │ │ │ ├── GameMode.java
│ │ │ │ │ └── SurvivalGameMode.java
│ │ │ │ ├── gui
│ │ │ │ │ ├── BlockSelectScreen.java
│ │ │ │ │ ├── Button.java
│ │ │ │ │ ├── ChatInputScreen.java
│ │ │ │ │ ├── ControlsScreen.java
│ │ │ │ │ ├── ErrorScreen.java
│ │ │ │ │ ├── FontRenderer.java
│ │ │ │ │ ├── GameOverScreen.java
│ │ │ │ │ ├── GenerateLevelScreen.java
│ │ │ │ │ ├── GuiScreen.java
│ │ │ │ │ ├── HUDScreen.java
│ │ │ │ │ ├── LevelDialog.java
│ │ │ │ │ ├── LevelNameScreen.java
│ │ │ │ │ ├── LoadLevelScreen.java
│ │ │ │ │ ├── OptionButton.java
│ │ │ │ │ ├── OptionsScreen.java
│ │ │ │ │ ├── PauseScreen.java
│ │ │ │ │ ├── SaveLevelScreen.java
│ │ │ │ │ └── Screen.java
│ │ │ │ ├── item
│ │ │ │ │ ├── Arrow.java
│ │ │ │ │ ├── Item.java
│ │ │ │ │ ├── ItemModel.java
│ │ │ │ │ ├── PrimedTnt.java
│ │ │ │ │ └── TakeEntityAnim.java
│ │ │ │ ├── level
│ │ │ │ │ ├── BlockMap$Slot.java
│ │ │ │ │ ├── BlockMap.java
│ │ │ │ │ ├── Level.java
│ │ │ │ │ ├── LevelIO.java
│ │ │ │ │ ├── LevelObjectInputStream.java
│ │ │ │ │ ├── MobSpawner.java
│ │ │ │ │ ├── NextTickListEntry.java
│ │ │ │ │ ├── SyntheticClass.java
│ │ │ │ │ ├── generator
│ │ │ │ │ │ ├── LevelGenerator.java
│ │ │ │ │ │ └── noise
│ │ │ │ │ │ │ ├── CombinedNoise.java
│ │ │ │ │ │ │ ├── Noise.java
│ │ │ │ │ │ │ ├── OctaveNoise.java
│ │ │ │ │ │ │ └── PerlinNoise.java
│ │ │ │ │ ├── liquid
│ │ │ │ │ │ └── LiquidType.java
│ │ │ │ │ └── tile
│ │ │ │ │ │ ├── Block.java
│ │ │ │ │ │ ├── BookshelfBlock.java
│ │ │ │ │ │ ├── DirtBlock.java
│ │ │ │ │ │ ├── FlowerBlock.java
│ │ │ │ │ │ ├── GlassBlock.java
│ │ │ │ │ │ ├── GrassBlock.java
│ │ │ │ │ │ ├── LeavesBaseBlock.java
│ │ │ │ │ │ ├── LeavesBlock.java
│ │ │ │ │ │ ├── LiquidBlock.java
│ │ │ │ │ │ ├── MetalBlock.java
│ │ │ │ │ │ ├── MushroomBlock.java
│ │ │ │ │ │ ├── OreBlock.java
│ │ │ │ │ │ ├── SandBlock.java
│ │ │ │ │ │ ├── SaplingBlock.java
│ │ │ │ │ │ ├── SlabBlock.java
│ │ │ │ │ │ ├── SpongeBlock.java
│ │ │ │ │ │ ├── StillLiquidBlock.java
│ │ │ │ │ │ ├── StoneBlock.java
│ │ │ │ │ │ ├── TNTBlock.java
│ │ │ │ │ │ ├── Tile$SoundType.java
│ │ │ │ │ │ └── WoodBlock.java
│ │ │ │ ├── mob
│ │ │ │ │ ├── Creeper$1.java
│ │ │ │ │ ├── Creeper.java
│ │ │ │ │ ├── HumanoidMob.java
│ │ │ │ │ ├── Mob.java
│ │ │ │ │ ├── Pig.java
│ │ │ │ │ ├── QuadrupedMob.java
│ │ │ │ │ ├── Sheep$1.java
│ │ │ │ │ ├── Sheep.java
│ │ │ │ │ ├── Skeleton$1.java
│ │ │ │ │ ├── Skeleton.java
│ │ │ │ │ ├── Spider.java
│ │ │ │ │ ├── Zombie.java
│ │ │ │ │ └── ai
│ │ │ │ │ │ ├── AI.java
│ │ │ │ │ │ ├── BasicAI.java
│ │ │ │ │ │ ├── BasicAttackAI.java
│ │ │ │ │ │ └── JumpAttackAI.java
│ │ │ │ ├── model
│ │ │ │ │ ├── AnimalModel.java
│ │ │ │ │ ├── CreeperModel.java
│ │ │ │ │ ├── HumanoidModel.java
│ │ │ │ │ ├── Model.java
│ │ │ │ │ ├── ModelManager.java
│ │ │ │ │ ├── ModelPart.java
│ │ │ │ │ ├── PigModel.java
│ │ │ │ │ ├── SheepFurModel.java
│ │ │ │ │ ├── SheepModel.java
│ │ │ │ │ ├── SkeletonModel.java
│ │ │ │ │ ├── SpiderModel.java
│ │ │ │ │ ├── TexturedQuad.java
│ │ │ │ │ ├── Vec3D.java
│ │ │ │ │ ├── Vertex.java
│ │ │ │ │ └── ZombieModel.java
│ │ │ │ ├── net
│ │ │ │ │ ├── NetworkManager.java
│ │ │ │ │ ├── NetworkPlayer.java
│ │ │ │ │ ├── PacketType.java
│ │ │ │ │ ├── PositionUpdate.java
│ │ │ │ │ ├── ServerConnectThread.java
│ │ │ │ │ └── SkinDownloadThread.java
│ │ │ │ ├── particle
│ │ │ │ │ ├── Particle.java
│ │ │ │ │ ├── ParticleManager.java
│ │ │ │ │ ├── SmokeParticle.java
│ │ │ │ │ ├── TerrainParticle.java
│ │ │ │ │ └── WaterDropParticle.java
│ │ │ │ ├── phys
│ │ │ │ │ └── AABB.java
│ │ │ │ ├── player
│ │ │ │ │ ├── InputHandler.java
│ │ │ │ │ ├── InputHandlerImpl.java
│ │ │ │ │ ├── Inventory.java
│ │ │ │ │ ├── Player$1.java
│ │ │ │ │ └── Player.java
│ │ │ │ ├── render
│ │ │ │ │ ├── Chunk.java
│ │ │ │ │ ├── ChunkDirtyDistanceComparator.java
│ │ │ │ │ ├── ChunkDistanceComparator.java
│ │ │ │ │ ├── Frustrum.java
│ │ │ │ │ ├── FrustrumImpl.java
│ │ │ │ │ ├── HeldBlock.java
│ │ │ │ │ ├── LevelRenderer.java
│ │ │ │ │ ├── Renderer.java
│ │ │ │ │ ├── ShapeRenderer.java
│ │ │ │ │ ├── TextureManager.java
│ │ │ │ │ └── texture
│ │ │ │ │ │ ├── TextureFX.java
│ │ │ │ │ │ ├── TextureLavaFX.java
│ │ │ │ │ │ └── TextureWaterFX.java
│ │ │ │ └── sound
│ │ │ │ │ ├── Audio.java
│ │ │ │ │ ├── AudioInfo.java
│ │ │ │ │ ├── BaseSoundPos.java
│ │ │ │ │ ├── EntitySoundPos.java
│ │ │ │ │ ├── LevelSoundPos.java
│ │ │ │ │ ├── Music.java
│ │ │ │ │ ├── MusicPlayThread.java
│ │ │ │ │ ├── Sound.java
│ │ │ │ │ ├── SoundData.java
│ │ │ │ │ ├── SoundInfo.java
│ │ │ │ │ ├── SoundManager.java
│ │ │ │ │ ├── SoundPlayer.java
│ │ │ │ │ ├── SoundPos.java
│ │ │ │ │ └── SoundReader.java
│ │ │ ├── net
│ │ │ │ └── NetworkHandler.java
│ │ │ └── util
│ │ │ │ └── MathHelper.java
│ │ └── oyasunadev
│ │ │ └── mcraft
│ │ │ └── client
│ │ │ ├── core
│ │ │ ├── MinecraftStandalone.java
│ │ │ └── MinecraftStandalone2.java
│ │ │ └── util
│ │ │ └── Constants.java
│ └── de
│ │ └── jarnbjo
│ │ ├── ogg
│ │ ├── BasicStream.java
│ │ ├── CachedUrlStream.java
│ │ ├── EndOfOggStreamException.java
│ │ ├── FileStream.java
│ │ ├── LogicalOggStream.java
│ │ ├── LogicalOggStreamImpl.java
│ │ ├── OggFormatException.java
│ │ ├── OggPage.java
│ │ ├── OnDemandUrlStream.java
│ │ ├── PhysicalOggStream.java
│ │ └── UncachedUrlStream.java
│ │ ├── util
│ │ ├── audio
│ │ │ └── FadeableAudioInputStream.java
│ │ └── io
│ │ │ ├── BitInputStream.java
│ │ │ ├── ByteArrayBitInputStream.java
│ │ │ └── HuffmanNode.java
│ │ └── vorbis
│ │ ├── AudioPacket.java
│ │ ├── CodeBook.java
│ │ ├── CommentHeader.java
│ │ ├── Floor.java
│ │ ├── Floor0.java
│ │ ├── Floor1.java
│ │ ├── IdentificationHeader.java
│ │ ├── Mapping.java
│ │ ├── Mapping0.java
│ │ ├── MdctFloat.java
│ │ ├── Mode.java
│ │ ├── Residue.java
│ │ ├── Residue0.java
│ │ ├── Residue1.java
│ │ ├── Residue2.java
│ │ ├── SetupHeader.java
│ │ ├── Util.java
│ │ ├── VorbisAudioFileReader.java
│ │ ├── VorbisFormatException.java
│ │ └── VorbisStream.java
└── resources
│ ├── 2char.png
│ ├── armor
│ ├── chain.png
│ └── plate.png
│ ├── char.png
│ ├── clouds.png
│ ├── default.gif
│ ├── default.png
│ ├── dirt.png
│ ├── grass.png
│ ├── gui
│ ├── gui.png
│ └── icons.png
│ ├── item
│ ├── arrows.png
│ └── sign.png
│ ├── mob
│ ├── creeper.png
│ ├── pig.png
│ ├── sheep.png
│ ├── sheep_fur.png
│ ├── skeleton.png
│ ├── spider.png
│ └── zombie.png
│ ├── null
│ ├── particles.png
│ ├── rain.png
│ ├── rock.png
│ ├── terrain.png
│ └── water.png
└── test
└── java
└── TestClient.java
/.gitignore:
--------------------------------------------------------------------------------
1 | .idea/*
--------------------------------------------------------------------------------
/README.md:
--------------------------------------------------------------------------------
1 | > UPDATE 25.03.14
2 | >
3 | > Hi all, Oliver here, creator of this project!
4 | > I never imagined that the work of 15 year-old me would bring this much attention.
5 | > I am definitely no longer maintaining it.
6 | > Please feel free to use it however you'd like, as long as you credit me.
7 |
8 | 
9 | ## MCraft-Client
10 | A stable Minecraft Classic client designed to make your Minecraft Classic experience more enjoyable without playing in your browser.
11 |
12 | ## Information
13 | The name and software, MCraft Client, is owned by Mania Development, therefore the rightsholder of Mania Developer has full ownership over this software.
14 |
15 | ## Compilation
16 | We use maven to handle our dependencies.
17 |
18 | - Install [Maven 3](http://maven.apache.org/download.html)
19 | - Check out this repo and: `mvn clean install`
20 |
21 | ## For developers
22 | - Found a bug? [Report it](https://github.com/ManiaDevelopment/MCraft-Client/issues).
23 | - [Make a pull request](https://github.com/ManiaDevelopment/MCraft-Client/pulls).
24 |
25 | ## Discussion
26 | Join the official IRC channels for talk about MCraft.
27 | - [#mcraft on irc.esper.net](http://webchat.esper.net/?nick=&channels=mcraft).
28 | - [#minecraftclassicdev on irc.esper.net](http://webchat.esper.net/?nick=&channels=minecraftclassicdev).
29 |
30 | ## License
31 | The original Minecraft Classic source code is Copyright (c) 2009-2012 Mojang AB.
32 |
33 | 
LegacyBuilder by Oliver Yasuna is licensed under a Creative Commons Attribution-NonCommercial-NoDerivs 3.0 Unported License.
Based on a work at https://github.com/ManiaDevelopment/MCraft-Client.
34 |
--------------------------------------------------------------------------------
/pom.xml:
--------------------------------------------------------------------------------
1 |
2 |
5 | 4.0.0
6 |
7 | LegacyBuilder
8 | LegacyBuilder
9 | 1.0-SNAPSHOT
10 | jar
11 |
12 |
13 | oyasunadev
14 | Oliver Yasuna
15 |
16 |
17 |
18 |
19 | Creative Commons Attribution-NonCommercial-NoDerivs 3.0 Unported
20 | http://creativecommons.org/licenses/by-nc-nd/3.0/legalcode
21 | repo
22 |
23 |
24 |
25 |
26 | UTF-8
27 |
28 |
29 |
30 |
31 | org.lwjgl.lwjgl
32 | lwjgl
33 | 2.8.4
34 |
35 |
36 | org.lwjgl.lwjgl
37 | lwjgl_util
38 | 2.8.4
39 |
40 |
41 | net.java.jinput
42 | jinput
43 | 2.0.4
44 |
45 |
46 | org.lwjgl.lwjgl
47 | lwjgl_util_applet
48 | 2.8.4
49 |
50 |
51 | org.lwjgl.lwjgl
52 | lwjgl-platform
53 | 2.8.4
54 | pom
55 |
56 |
57 |
--------------------------------------------------------------------------------
/src/main/java/META-INF/MANIFEST.MF:
--------------------------------------------------------------------------------
1 | Manifest-Version: 1.0
2 | Main-Class: com.oyasunadev.mcraft.client.core.MinecraftStandalone
3 |
4 |
--------------------------------------------------------------------------------
/src/main/java/com/mojang/minecraft/ChatLine.java:
--------------------------------------------------------------------------------
1 | package com.mojang.minecraft;
2 |
3 | public class ChatLine
4 | {
5 | public ChatLine(String message)
6 | {
7 | this.message = message;
8 | this.time = 0;
9 | }
10 |
11 | public String message;
12 | public int time;
13 | }
14 |
--------------------------------------------------------------------------------
/src/main/java/com/mojang/minecraft/KeyBinding.java:
--------------------------------------------------------------------------------
1 | package com.mojang.minecraft;
2 |
3 | public class KeyBinding
4 | {
5 | public KeyBinding(String name, int key)
6 | {
7 | this.name = name;
8 | this.key = key;
9 | }
10 |
11 | public String name;
12 | public int key;
13 | }
14 |
--------------------------------------------------------------------------------
/src/main/java/com/mojang/minecraft/Minecraft$OS.java:
--------------------------------------------------------------------------------
1 | package com.mojang.minecraft;
2 |
3 | public enum Minecraft$OS
4 | {
5 | linux("linux", 0),
6 | solaris("solaris", 1),
7 | windows("windows", 2),
8 | macos("macos", 3),
9 | unknown("unknown", 4);
10 |
11 | private static final Minecraft$OS[] values = new Minecraft$OS[] {linux, solaris, windows, macos, unknown};
12 |
13 | private Minecraft$OS(String name, int id)
14 | {
15 | }
16 | }
17 |
--------------------------------------------------------------------------------
/src/main/java/com/mojang/minecraft/MinecraftApplet$1.java:
--------------------------------------------------------------------------------
1 | package com.mojang.minecraft;
2 |
3 | import java.awt.Canvas;
4 |
5 | // MinecraftCanvas
6 | public class MinecraftApplet$1 extends Canvas
7 | {
8 | public MinecraftApplet$1(MinecraftApplet minecraftApplet)
9 | {
10 | this.applet = minecraftApplet;
11 | }
12 |
13 | @Override
14 | public synchronized void addNotify()
15 | {
16 | super.addNotify();
17 |
18 | applet.startGameThread();
19 | }
20 |
21 | @Override
22 | public synchronized void removeNotify()
23 | {
24 | applet.stopGameThread();
25 |
26 | super.removeNotify();
27 | }
28 |
29 | private static final long serialVersionUID = 1L;
30 |
31 | private MinecraftApplet applet;
32 | }
33 |
--------------------------------------------------------------------------------
/src/main/java/com/mojang/minecraft/MinecraftApplet.java:
--------------------------------------------------------------------------------
1 | package com.mojang.minecraft;
2 |
3 | import java.applet.Applet;
4 | import java.awt.BorderLayout;
5 | import java.awt.Canvas;
6 |
7 | public class MinecraftApplet extends Applet
8 | {
9 | private static final long serialVersionUID = 1L;
10 |
11 | private Canvas canvas;
12 | private Minecraft minecraft;
13 |
14 | private Thread thread = null;
15 |
16 | public void init()
17 | {
18 | canvas = new MinecraftApplet$1(this);
19 |
20 | boolean fullscreen = false;
21 |
22 | if(getParameter("fullscreen") != null)
23 | {
24 | fullscreen = getParameter("fullscreen").equalsIgnoreCase("true");
25 | }
26 |
27 | minecraft = new Minecraft(canvas, this, getWidth(), getHeight(), fullscreen);
28 |
29 | minecraft.host = getDocumentBase().getHost();
30 |
31 | if(getDocumentBase().getPort() > 0)
32 | {
33 | minecraft.host = minecraft.host + ":" + getDocumentBase().getPort();
34 | }
35 |
36 | if(getParameter("username") != null && getParameter("sessionid") != null)
37 | {
38 | minecraft.session = new SessionData(getParameter("username"), getParameter("sessionid"));
39 |
40 | if(getParameter("mppass") != null)
41 | {
42 | minecraft.session.mppass = getParameter("mppass");
43 | }
44 |
45 | // TODO: Not tested.
46 | minecraft.session.haspaid = getParameter("haspaid").equalsIgnoreCase("true");
47 | }
48 |
49 | if(getParameter("loadmap_user") != null && getParameter("loadmap_id") != null)
50 | {
51 | minecraft.levelName = getParameter("loadmap_user");
52 | minecraft.levelId = Integer.parseInt(getParameter("loadmap_id"));
53 | } else if(getParameter("server") != null && getParameter("port") != null) {
54 | String server = getParameter("server");
55 | int port = Integer.parseInt(getParameter("port"));
56 |
57 | minecraft.server = server;
58 | minecraft.port = port;
59 | }
60 |
61 | minecraft.levelLoaded = true;
62 |
63 | setLayout(new BorderLayout());
64 |
65 | add(canvas, "Center");
66 |
67 | canvas.setFocusable(true);
68 |
69 | validate();
70 | }
71 |
72 | public void startGameThread()
73 | {
74 | if(thread == null)
75 | {
76 | thread = new Thread(minecraft);
77 |
78 | thread.start();
79 | }
80 | }
81 |
82 | @Override
83 | public void start()
84 | {
85 | minecraft.waiting = false;
86 | }
87 |
88 | @Override
89 | public void stop()
90 | {
91 | minecraft.waiting = true;
92 | }
93 |
94 | @Override
95 | public void destroy()
96 | {
97 | stopGameThread();
98 | }
99 |
100 | public void stopGameThread()
101 | {
102 | if(thread != null)
103 | {
104 | minecraft.running = false;
105 |
106 | try {
107 | thread.join(1000L);
108 | } catch (InterruptedException var3) {
109 | minecraft.shutdown();
110 | }
111 |
112 | thread = null;
113 | }
114 | }
115 | }
116 |
--------------------------------------------------------------------------------
/src/main/java/com/mojang/minecraft/MovingObjectPosition.java:
--------------------------------------------------------------------------------
1 | package com.mojang.minecraft;
2 |
3 | import com.mojang.minecraft.model.Vec3D;
4 |
5 | public class MovingObjectPosition
6 | {
7 | public MovingObjectPosition(int x, int y, int z, int side, Vec3D blockPos)
8 | {
9 | entityPos = 0;
10 |
11 | this.x = x;
12 | this.y = y;
13 | this.z = z;
14 |
15 | this.face = side;
16 |
17 | vec = new Vec3D(blockPos.x, blockPos.y, blockPos.z);
18 | }
19 |
20 | public MovingObjectPosition(Entity entity)
21 | {
22 | entityPos = 1;
23 | this.entity = entity;
24 | }
25 |
26 | public int entityPos;
27 |
28 | public int x;
29 | public int y;
30 | public int z;
31 |
32 | public int face;
33 |
34 | public Vec3D vec;
35 |
36 | public Entity entity;
37 | }
38 |
--------------------------------------------------------------------------------
/src/main/java/com/mojang/minecraft/OperatingSystemLookup.java:
--------------------------------------------------------------------------------
1 | package com.mojang.minecraft;
2 |
3 | // $FF: synthetic class
4 | final class OperatingSystemLookup {
5 |
6 | // $FF: synthetic field
7 | static final int[] lookup = new int[Minecraft$OS.values().length];
8 |
9 |
10 | static {
11 | try {
12 | lookup[Minecraft$OS.linux.ordinal()] = 1;
13 | } catch (NoSuchFieldError var3) {
14 | ;
15 | }
16 |
17 | try {
18 | lookup[Minecraft$OS.solaris.ordinal()] = 2;
19 | } catch (NoSuchFieldError var2) {
20 | ;
21 | }
22 |
23 | try {
24 | lookup[Minecraft$OS.windows.ordinal()] = 3;
25 | } catch (NoSuchFieldError var1) {
26 | ;
27 | }
28 |
29 | try {
30 | lookup[Minecraft$OS.macos.ordinal()] = 4;
31 | } catch (NoSuchFieldError var0) {
32 | ;
33 | }
34 | }
35 | }
36 |
--------------------------------------------------------------------------------
/src/main/java/com/mojang/minecraft/SessionData.java:
--------------------------------------------------------------------------------
1 | package com.mojang.minecraft;
2 |
3 | import com.mojang.minecraft.level.tile.Block;
4 | import java.util.ArrayList;
5 | import java.util.List;
6 |
7 | public final class SessionData {
8 |
9 | public static List allowedBlocks;
10 | public String username;
11 | public String sessionId;
12 | public String mppass;
13 | public boolean haspaid;
14 |
15 |
16 | public SessionData(String var1, String var2) {
17 | this.username = var1;
18 | this.sessionId = var2;
19 | }
20 |
21 | static {
22 | (allowedBlocks = new ArrayList()).add(Block.STONE);
23 | allowedBlocks.add(Block.COBBLESTONE);
24 | allowedBlocks.add(Block.BRICK);
25 | allowedBlocks.add(Block.DIRT);
26 | allowedBlocks.add(Block.WOOD);
27 | allowedBlocks.add(Block.LOG);
28 | allowedBlocks.add(Block.LEAVES);
29 | allowedBlocks.add(Block.GLASS);
30 | allowedBlocks.add(Block.SLAB);
31 | allowedBlocks.add(Block.MOSSY_COBBLESTONE);
32 | allowedBlocks.add(Block.SAPLING);
33 | allowedBlocks.add(Block.DANDELION);
34 | allowedBlocks.add(Block.ROSE);
35 | allowedBlocks.add(Block.BROWN_MUSHROOM);
36 | allowedBlocks.add(Block.RED_MUSHROOM);
37 | allowedBlocks.add(Block.SAND);
38 | allowedBlocks.add(Block.GRAVEL);
39 | allowedBlocks.add(Block.SPONGE);
40 | allowedBlocks.add(Block.RED_WOOL);
41 | allowedBlocks.add(Block.ORANGE_WOOL);
42 | allowedBlocks.add(Block.YELLOW_WOOL);
43 | allowedBlocks.add(Block.LIME_WOOL);
44 | allowedBlocks.add(Block.GREEN_WOOL);
45 | allowedBlocks.add(Block.AQUA_GREEN_WOOL);
46 | allowedBlocks.add(Block.CYAN_WOOL);
47 | allowedBlocks.add(Block.BLUE_WOOL);
48 | allowedBlocks.add(Block.PURPLE_WOOL);
49 | allowedBlocks.add(Block.INDIGO_WOOL);
50 | allowedBlocks.add(Block.VIOLET_WOOL);
51 | allowedBlocks.add(Block.MAGENTA_WOOL);
52 | allowedBlocks.add(Block.PINK_WOOL);
53 | allowedBlocks.add(Block.BLACK_WOOL);
54 | allowedBlocks.add(Block.GRAY_WOOL);
55 | allowedBlocks.add(Block.WHITE_WOOL);
56 | allowedBlocks.add(Block.COAL_ORE);
57 | allowedBlocks.add(Block.IRON_ORE);
58 | allowedBlocks.add(Block.GOLD_ORE);
59 | allowedBlocks.add(Block.IRON_BLOCK);
60 | allowedBlocks.add(Block.GOLD_BLOCK);
61 | allowedBlocks.add(Block.BOOKSHELF);
62 | allowedBlocks.add(Block.TNT);
63 | allowedBlocks.add(Block.OBSIDIAN);
64 |
65 | allowedBlocks.add(Block.BEDROCK);
66 | allowedBlocks.add(Block.WATER);
67 | allowedBlocks.add(Block.LAVA);
68 | }
69 | }
70 |
--------------------------------------------------------------------------------
/src/main/java/com/mojang/minecraft/SkinDownloadThread.java:
--------------------------------------------------------------------------------
1 | package com.mojang.minecraft;
2 |
3 | import com.mojang.minecraft.player.Player;
4 | import java.net.HttpURLConnection;
5 | import java.net.URL;
6 | import javax.imageio.ImageIO;
7 |
8 | public class SkinDownloadThread extends Thread
9 | {
10 | public SkinDownloadThread(Minecraft minecraft)
11 | {
12 | super();
13 |
14 | this.minecraft = minecraft;
15 | }
16 |
17 | @Override
18 | public void run()
19 | {
20 | if(minecraft.session != null)
21 | {
22 | HttpURLConnection connection = null;
23 |
24 | try {
25 | connection = (HttpURLConnection)new URL("http://www.minecraft.net/skin/" + minecraft.session.username + ".png").openConnection();
26 |
27 | connection.setDoInput(true);
28 | connection.setDoOutput(false);
29 |
30 | connection.connect();
31 |
32 | if(connection.getResponseCode() != 404)
33 | {
34 | Player.newTexture = ImageIO.read(connection.getInputStream());
35 |
36 | return;
37 | }
38 | } catch (Exception var4) {
39 | var4.printStackTrace();
40 | } finally {
41 | if(connection != null)
42 | {
43 | connection.disconnect();
44 | }
45 | }
46 |
47 | }
48 | }
49 |
50 | private Minecraft minecraft;
51 | }
52 |
--------------------------------------------------------------------------------
/src/main/java/com/mojang/minecraft/SleepForeverThread.java:
--------------------------------------------------------------------------------
1 | package com.mojang.minecraft;
2 |
3 | public class SleepForeverThread extends Thread
4 | {
5 | public SleepForeverThread(Minecraft minecraft)
6 | {
7 | setDaemon(true);
8 |
9 | start();
10 | }
11 |
12 | @Override
13 | public void run()
14 | {
15 | while(true)
16 | {
17 | try {
18 | while(true)
19 | {
20 | Thread.sleep(2147483647L);
21 | }
22 | } catch (InterruptedException e) {
23 | e.printStackTrace();
24 | }
25 | }
26 | }
27 | }
28 |
--------------------------------------------------------------------------------
/src/main/java/com/mojang/minecraft/StopGameException.java:
--------------------------------------------------------------------------------
1 | package com.mojang.minecraft;
2 |
3 | public class StopGameException extends Error
4 | {
5 | private static final long serialVersionUID = 1L;
6 | }
7 |
--------------------------------------------------------------------------------
/src/main/java/com/mojang/minecraft/Timer.java:
--------------------------------------------------------------------------------
1 | package com.mojang.minecraft;
2 |
3 | public class Timer
4 | {
5 | public Timer(float tps)
6 | {
7 | this.tps = tps;
8 | lastSysClock = System.currentTimeMillis();
9 | lastHRClock = System.nanoTime() / 1000000L;
10 | }
11 |
12 | float tps;
13 | double lastHR;
14 | public int elapsedTicks;
15 | public float delta;
16 | public float speed = 1.0F;
17 | public float elapsedDelta = 0.0F;
18 | long lastSysClock;
19 | long lastHRClock;
20 | double adjustment = 1.0D;
21 | }
22 |
--------------------------------------------------------------------------------
/src/main/java/com/mojang/minecraft/gamemode/CreativeGameMode.java:
--------------------------------------------------------------------------------
1 | package com.mojang.minecraft.gamemode;
2 |
3 | import com.mojang.minecraft.Minecraft;
4 | import com.mojang.minecraft.SessionData;
5 | import com.mojang.minecraft.gui.BlockSelectScreen;
6 | import com.mojang.minecraft.level.Level;
7 | import com.mojang.minecraft.level.tile.Block;
8 | import com.mojang.minecraft.player.Player;
9 |
10 | public class CreativeGameMode extends GameMode
11 | {
12 | public CreativeGameMode(Minecraft minecraft)
13 | {
14 | super(minecraft);
15 |
16 | instantBreak = true;
17 | }
18 |
19 | @Override
20 | public void apply(Level level)
21 | {
22 | super.apply(level);
23 |
24 | level.removeAllNonCreativeModeEntities();
25 |
26 | level.creativeMode = true;
27 | level.growTrees = false;
28 | }
29 |
30 | @Override
31 | public void openInventory()
32 | {
33 | BlockSelectScreen blockSelectScreen = new BlockSelectScreen();
34 |
35 | minecraft.setCurrentScreen(blockSelectScreen);
36 | }
37 |
38 | @Override
39 | public boolean isSurvival()
40 | {
41 | return false;
42 | }
43 |
44 | @Override
45 | public void apply(Player player)
46 | {
47 | for(int slot = 0; slot < 9; slot++)
48 | {
49 | player.inventory.count[slot] = 1;
50 |
51 | if(player.inventory.slots[slot] <= 0)
52 | {
53 | player.inventory.slots[slot] = ((Block) SessionData.allowedBlocks.get(slot)).id;
54 | }
55 | }
56 |
57 | }
58 | }
59 |
--------------------------------------------------------------------------------
/src/main/java/com/mojang/minecraft/gamemode/GameMode.java:
--------------------------------------------------------------------------------
1 | package com.mojang.minecraft.gamemode;
2 |
3 | import com.mojang.minecraft.Minecraft;
4 | import com.mojang.minecraft.level.Level;
5 | import com.mojang.minecraft.level.tile.Block;
6 | import com.mojang.minecraft.level.tile.Tile$SoundType;
7 | import com.mojang.minecraft.player.Player;
8 |
9 | public class GameMode
10 | {
11 | public GameMode(Minecraft minecraft)
12 | {
13 | this.minecraft = minecraft;
14 |
15 | instantBreak = false;
16 | }
17 |
18 | public Minecraft minecraft;
19 |
20 | public boolean instantBreak;
21 |
22 | public void apply(Level level)
23 | {
24 | level.creativeMode = false;
25 | level.growTrees = true;
26 | }
27 |
28 | public void openInventory()
29 | {
30 | }
31 |
32 | public void hitBlock(int x, int y, int z)
33 | {
34 | this.breakBlock(x, y, z);
35 | }
36 |
37 | public boolean canPlace(int block)
38 | {
39 | return true;
40 | }
41 |
42 | public void breakBlock(int x, int y, int z)
43 | {
44 | Level level = minecraft.level;
45 | Block block = Block.blocks[level.getTile(x, y, z)];
46 |
47 | boolean success = level.netSetTile(x, y, z, 0);
48 |
49 | if(block != null && success)
50 | {
51 | if(minecraft.isOnline())
52 | {
53 | minecraft.networkManager.sendBlockChange(x, y, z, 0, minecraft.player.inventory.getSelected());
54 | }
55 |
56 | if(block.stepsound != Tile$SoundType.none)
57 | {
58 | level.playSound("step." + block.stepsound.name, (float)x, (float)y, (float)z, (block.stepsound.getVolume() + 1.0F) / 2.0F, block.stepsound.getPitch() * 0.8F);
59 | }
60 |
61 | block.spawnBreakParticles(level, x, y, z, minecraft.particleManager);
62 | }
63 |
64 | }
65 |
66 | public void hitBlock(int x, int y, int z, int side)
67 | {
68 | }
69 |
70 | public void resetHits()
71 | {
72 | }
73 |
74 | public void applyCracks(float time)
75 | {
76 | }
77 |
78 | public float getReachDistance()
79 | {
80 | return 5.0F;
81 | }
82 |
83 | public boolean useItem(Player player, int type)
84 | {
85 | return false;
86 | }
87 |
88 | public void preparePlayer(Player player)
89 | {
90 | }
91 |
92 | public void spawnMob()
93 | {
94 | }
95 |
96 | public void prepareLevel(Level level)
97 | {
98 | }
99 |
100 | public boolean isSurvival()
101 | {
102 | return true;
103 | }
104 |
105 | public void apply(Player player)
106 | {
107 | }
108 | }
109 |
--------------------------------------------------------------------------------
/src/main/java/com/mojang/minecraft/gui/BlockSelectScreen.java:
--------------------------------------------------------------------------------
1 | package com.mojang.minecraft.gui;
2 |
3 | import com.mojang.minecraft.SessionData;
4 | import com.mojang.minecraft.level.tile.Block;
5 | import com.mojang.minecraft.render.ShapeRenderer;
6 | import com.mojang.minecraft.render.TextureManager;
7 | import org.lwjgl.opengl.GL11;
8 |
9 | public final class BlockSelectScreen extends GuiScreen {
10 |
11 | public BlockSelectScreen() {
12 | this.grabsMouse = true;
13 | }
14 |
15 | private int getBlockOnScreen(int var1, int var2) {
16 | for(int var3 = 0; var3 < SessionData.allowedBlocks.size(); ++var3) {
17 | int var4 = this.width / 2 + var3 % 9 * 24 + -108 - 3;
18 | int var5 = this.height / 2 + var3 / 9 * 24 + -60 + 3;
19 | if(var1 >= var4 && var1 <= var4 + 24 && var2 >= var5 - 12 && var2 <= var5 + 12) {
20 | return var3;
21 | }
22 | }
23 |
24 | return -1;
25 | }
26 |
27 | public final void render(int var1, int var2) {
28 | var1 = this.getBlockOnScreen(var1, var2);
29 | drawFadingBox(this.width / 2 - 120, 30, this.width / 2 + 120, 180, -1878719232, -1070583712);
30 | if(var1 >= 0) {
31 | var2 = this.width / 2 + var1 % 9 * 24 + -108;
32 | int var3 = this.height / 2 + var1 / 9 * 24 + -60;
33 | drawFadingBox(var2 - 3, var3 - 8, var2 + 23, var3 + 24 - 6, -1862270977, -1056964609);
34 | }
35 |
36 | drawCenteredString(this.fontRenderer, "Select block", this.width / 2, 40, 16777215);
37 | TextureManager var7 = this.minecraft.textureManager;
38 | ShapeRenderer var8 = ShapeRenderer.instance;
39 | var2 = var7.load("/terrain.png");
40 | GL11.glBindTexture(3553, var2);
41 |
42 | for(var2 = 0; var2 < SessionData.allowedBlocks.size(); ++var2) {
43 | Block var4 = (Block)SessionData.allowedBlocks.get(var2);
44 | GL11.glPushMatrix();
45 | int var5 = this.width / 2 + var2 % 9 * 24 + -108;
46 | int var6 = this.height / 2 + var2 / 9 * 24 + -60;
47 | GL11.glTranslatef((float)var5, (float)var6, 0.0F);
48 | GL11.glScalef(10.0F, 10.0F, 10.0F);
49 | GL11.glTranslatef(1.0F, 0.5F, 8.0F);
50 | GL11.glRotatef(-30.0F, 1.0F, 0.0F, 0.0F);
51 | GL11.glRotatef(45.0F, 0.0F, 1.0F, 0.0F);
52 | if(var1 == var2) {
53 | GL11.glScalef(1.6F, 1.6F, 1.6F);
54 | }
55 |
56 | GL11.glTranslatef(-1.5F, 0.5F, 0.5F);
57 | GL11.glScalef(-1.0F, -1.0F, -1.0F);
58 | var8.begin();
59 | var4.renderFullbright(var8);
60 | var8.end();
61 | GL11.glPopMatrix();
62 | }
63 |
64 | }
65 |
66 | protected final void onMouseClick(int var1, int var2, int var3) {
67 | if(var3 == 0) {
68 | this.minecraft.player.inventory.replaceSlot(this.getBlockOnScreen(var1, var2));
69 | this.minecraft.setCurrentScreen((GuiScreen)null);
70 | }
71 |
72 | }
73 | }
74 |
--------------------------------------------------------------------------------
/src/main/java/com/mojang/minecraft/gui/Button.java:
--------------------------------------------------------------------------------
1 | package com.mojang.minecraft.gui;
2 |
3 | public class Button extends Screen {
4 |
5 | int width;
6 | int height;
7 | public int x;
8 | public int y;
9 | public String text;
10 | public int id;
11 | public boolean active;
12 | public boolean visible;
13 |
14 |
15 | public Button(int var1, int var2, int var3, String var4) {
16 | this(var1, var2, var3, 200, 20, var4);
17 | }
18 |
19 | protected Button(int var1, int var2, int var3, int var4, int var5, String var6) {
20 | this.width = 200;
21 | this.height = 20;
22 | this.active = true;
23 | this.visible = true;
24 | this.id = var1;
25 | this.x = var2;
26 | this.y = var3;
27 | this.width = var4;
28 | this.height = 20;
29 | this.text = var6;
30 | }
31 | }
32 |
--------------------------------------------------------------------------------
/src/main/java/com/mojang/minecraft/gui/ChatInputScreen.java:
--------------------------------------------------------------------------------
1 | package com.mojang.minecraft.gui;
2 |
3 | import com.mojang.minecraft.net.NetworkManager;
4 | import com.mojang.minecraft.net.PacketType;
5 | import org.lwjgl.input.Keyboard;
6 |
7 | public final class ChatInputScreen extends GuiScreen {
8 |
9 | private String message = "";
10 | private int counter = 0;
11 |
12 |
13 | public final void onOpen() {
14 | Keyboard.enableRepeatEvents(true);
15 | }
16 |
17 | public final void onClose() {
18 | Keyboard.enableRepeatEvents(false);
19 | }
20 |
21 | public final void tick() {
22 | ++this.counter;
23 | }
24 |
25 | protected final void onKeyPress(char var1, int var2) {
26 | if(var2 == 1) {
27 | this.minecraft.setCurrentScreen((GuiScreen)null);
28 | } else if(var2 == 28) {
29 | NetworkManager var10000 = this.minecraft.networkManager;
30 | String var4 = this.message.trim();
31 | NetworkManager var3 = var10000;
32 | if((var4 = var4.trim()).length() > 0) {
33 | var3.netHandler.send(PacketType.CHAT_MESSAGE, new Object[]{Integer.valueOf(-1), var4});
34 | }
35 |
36 | this.minecraft.setCurrentScreen((GuiScreen)null);
37 | } else {
38 | if(var2 == 14 && this.message.length() > 0) {
39 | this.message = this.message.substring(0, this.message.length() - 1);
40 | }
41 |
42 | if("abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789 ,.:-_\'*!\\\"#%/()=+?[]{}<>@|$;".indexOf(var1) >= 0 && this.message.length() < 64 - (this.minecraft.session.username.length() + 2)) {
43 | this.message = this.message + var1;
44 | }
45 |
46 | }
47 | }
48 |
49 | public final void render(int var1, int var2) {
50 | drawBox(2, this.height - 14, this.width - 2, this.height - 2, Integer.MIN_VALUE);
51 | drawString(this.fontRenderer, "> " + this.message + (this.counter / 6 % 2 == 0?"_":""), 4, this.height - 12, 14737632);
52 | }
53 |
54 | protected final void onMouseClick(int var1, int var2, int var3) {
55 | if(var3 == 0 && this.minecraft.hud.hoveredPlayer != null) {
56 | if(this.message.length() > 0 && !this.message.endsWith(" ")) {
57 | this.message = this.message + " ";
58 | }
59 |
60 | this.message = this.message + this.minecraft.hud.hoveredPlayer;
61 | var1 = 64 - (this.minecraft.session.username.length() + 2);
62 | if(this.message.length() > var1) {
63 | this.message = this.message.substring(0, var1);
64 | }
65 | }
66 |
67 | }
68 | }
69 |
--------------------------------------------------------------------------------
/src/main/java/com/mojang/minecraft/gui/ControlsScreen.java:
--------------------------------------------------------------------------------
1 | package com.mojang.minecraft.gui;
2 |
3 | import com.mojang.minecraft.GameSettings;
4 |
5 | public final class ControlsScreen extends GuiScreen {
6 |
7 | private GuiScreen parent;
8 | private String title = "Controls";
9 | private GameSettings settings;
10 | private int selected = -1;
11 |
12 |
13 | public ControlsScreen(GuiScreen var1, GameSettings var2) {
14 | this.parent = var1;
15 | this.settings = var2;
16 | }
17 |
18 | public final void onOpen() {
19 | for(int var1 = 0; var1 < this.settings.bindings.length; ++var1) {
20 | this.buttons.add(new OptionButton(var1, this.width / 2 - 155 + var1 % 2 * 160, this.height / 6 + 24 * (var1 >> 1), this.settings.getBinding(var1)));
21 | }
22 |
23 | this.buttons.add(new Button(200, this.width / 2 - 100, this.height / 6 + 168, "Done"));
24 | }
25 |
26 | protected final void onButtonClick(Button var1) {
27 | for(int var2 = 0; var2 < this.settings.bindings.length; ++var2) {
28 | ((Button)this.buttons.get(var2)).text = this.settings.getBinding(var2);
29 | }
30 |
31 | if(var1.id == 200) {
32 | this.minecraft.setCurrentScreen(this.parent);
33 | } else {
34 | this.selected = var1.id;
35 | var1.text = "> " + this.settings.getBinding(var1.id) + " <";
36 | }
37 | }
38 |
39 | protected final void onKeyPress(char var1, int var2) {
40 | if(this.selected >= 0) {
41 | this.settings.setBinding(this.selected, var2);
42 | ((Button)this.buttons.get(this.selected)).text = this.settings.getBinding(this.selected);
43 | this.selected = -1;
44 | } else {
45 | super.onKeyPress(var1, var2);
46 | }
47 | }
48 |
49 | public final void render(int var1, int var2) {
50 | drawFadingBox(0, 0, this.width, this.height, 1610941696, -1607454624);
51 | drawCenteredString(this.fontRenderer, this.title, this.width / 2, 20, 16777215);
52 | super.render(var1, var2);
53 | }
54 | }
55 |
--------------------------------------------------------------------------------
/src/main/java/com/mojang/minecraft/gui/ErrorScreen.java:
--------------------------------------------------------------------------------
1 | package com.mojang.minecraft.gui;
2 |
3 | public final class ErrorScreen extends GuiScreen {
4 |
5 | private String title;
6 | private String text;
7 |
8 |
9 | public ErrorScreen(String var1, String var2) {
10 | this.title = var1;
11 | this.text = var2;
12 | }
13 |
14 | public final void onOpen() {}
15 |
16 | public final void render(int var1, int var2) {
17 | drawFadingBox(0, 0, this.width, this.height, -12574688, -11530224);
18 | drawCenteredString(this.fontRenderer, this.title, this.width / 2, 90, 16777215);
19 | drawCenteredString(this.fontRenderer, this.text, this.width / 2, 110, 16777215);
20 | super.render(var1, var2);
21 | }
22 |
23 | protected final void onKeyPress(char var1, int var2) {}
24 | }
25 |
--------------------------------------------------------------------------------
/src/main/java/com/mojang/minecraft/gui/GameOverScreen.java:
--------------------------------------------------------------------------------
1 | package com.mojang.minecraft.gui;
2 |
3 | import org.lwjgl.opengl.GL11;
4 |
5 | public final class GameOverScreen extends GuiScreen {
6 |
7 | public final void onOpen() {
8 | this.buttons.clear();
9 | this.buttons.add(new Button(1, this.width / 2 - 100, this.height / 4 + 72, "Generate new level..."));
10 | this.buttons.add(new Button(2, this.width / 2 - 100, this.height / 4 + 96, "Load level.."));
11 | if(this.minecraft.session == null) {
12 | ((Button)this.buttons.get(2)).active = false;
13 | }
14 |
15 | }
16 |
17 | protected final void onButtonClick(Button var1) {
18 | if(var1.id == 0) {
19 | this.minecraft.setCurrentScreen(new OptionsScreen(this, this.minecraft.settings));
20 | }
21 |
22 | if(var1.id == 1) {
23 | this.minecraft.setCurrentScreen(new GenerateLevelScreen(this));
24 | }
25 |
26 | if(this.minecraft.session != null && var1.id == 2) {
27 | this.minecraft.setCurrentScreen(new LoadLevelScreen(this));
28 | }
29 |
30 | }
31 |
32 | public final void render(int var1, int var2) {
33 | drawFadingBox(0, 0, this.width, this.height, 1615855616, -1602211792);
34 | GL11.glPushMatrix();
35 | GL11.glScalef(2.0F, 2.0F, 2.0F);
36 | drawCenteredString(this.fontRenderer, "Game over!", this.width / 2 / 2, 30, 16777215);
37 | GL11.glPopMatrix();
38 | drawCenteredString(this.fontRenderer, "Score: &e" + this.minecraft.player.getScore(), this.width / 2, 100, 16777215);
39 | super.render(var1, var2);
40 | }
41 | }
42 |
--------------------------------------------------------------------------------
/src/main/java/com/mojang/minecraft/gui/GenerateLevelScreen.java:
--------------------------------------------------------------------------------
1 | package com.mojang.minecraft.gui;
2 |
3 | public final class GenerateLevelScreen extends GuiScreen {
4 |
5 | private GuiScreen parent;
6 |
7 |
8 | public GenerateLevelScreen(GuiScreen var1) {
9 | this.parent = var1;
10 | }
11 |
12 | public final void onOpen() {
13 | this.buttons.clear();
14 | this.buttons.add(new Button(0, this.width / 2 - 100, this.height / 4, "Small"));
15 | this.buttons.add(new Button(1, this.width / 2 - 100, this.height / 4 + 24, "Normal"));
16 | this.buttons.add(new Button(2, this.width / 2 - 100, this.height / 4 + 48, "Huge"));
17 | this.buttons.add(new Button(3, this.width / 2 - 100, this.height / 4 + 120, "Cancel"));
18 | }
19 |
20 | protected final void onButtonClick(Button var1) {
21 | if(var1.id == 3) {
22 | this.minecraft.setCurrentScreen(this.parent);
23 | } else {
24 | this.minecraft.generateLevel(var1.id);
25 | this.minecraft.setCurrentScreen((GuiScreen)null);
26 | this.minecraft.grabMouse();
27 | }
28 | }
29 |
30 | public final void render(int var1, int var2) {
31 | drawFadingBox(0, 0, this.width, this.height, 1610941696, -1607454624);
32 | drawCenteredString(this.fontRenderer, "Generate new level", this.width / 2, 40, 16777215);
33 | super.render(var1, var2);
34 | }
35 | }
36 |
--------------------------------------------------------------------------------
/src/main/java/com/mojang/minecraft/gui/LevelDialog.java:
--------------------------------------------------------------------------------
1 | package com.mojang.minecraft.gui;
2 |
3 | import javax.swing.JFileChooser;
4 | import javax.swing.filechooser.FileNameExtensionFilter;
5 |
6 | final class LevelDialog extends Thread {
7 |
8 | // $FF: synthetic field
9 | private LoadLevelScreen screen;
10 |
11 |
12 | LevelDialog(LoadLevelScreen var1) {
13 | super();
14 | this.screen = var1;
15 | }
16 |
17 | public final void run() {
18 | JFileChooser var1;
19 | LoadLevelScreen var2;
20 | try {
21 | LoadLevelScreen var10000 = this.screen;
22 | var1 = new JFileChooser();
23 | var10000.chooser = var1;
24 | FileNameExtensionFilter var3 = new FileNameExtensionFilter("Minecraft levels", new String[]{"mine"});
25 | var2 = this.screen;
26 | this.screen.chooser.setFileFilter(var3);
27 | var2 = this.screen;
28 | this.screen.chooser.setMultiSelectionEnabled(false);
29 | int var7;
30 | if(this.screen.saving) {
31 | var2 = this.screen;
32 | var7 = this.screen.chooser.showSaveDialog(this.screen.minecraft.canvas);
33 | } else {
34 | var2 = this.screen;
35 | var7 = this.screen.chooser.showOpenDialog(this.screen.minecraft.canvas);
36 | }
37 |
38 | if(var7 == 0) {
39 | (var2 = this.screen).selectedFile = this.screen.chooser.getSelectedFile();
40 | }
41 | } finally {
42 | boolean var6 = false;
43 | var2 = this.screen;
44 | this.screen.frozen = false;
45 | var1 = null;
46 | var2 = this.screen;
47 | this.screen.chooser = var1;
48 | }
49 |
50 | }
51 | }
52 |
--------------------------------------------------------------------------------
/src/main/java/com/mojang/minecraft/gui/LevelNameScreen.java:
--------------------------------------------------------------------------------
1 | package com.mojang.minecraft.gui;
2 |
3 | import com.mojang.minecraft.Minecraft;
4 | import org.lwjgl.input.Keyboard;
5 |
6 | public final class LevelNameScreen extends GuiScreen {
7 |
8 | private GuiScreen parent;
9 | private String title = "Enter level name:";
10 | private int id;
11 | private String name;
12 | private int counter = 0;
13 |
14 |
15 | public LevelNameScreen(GuiScreen var1, String var2, int var3) {
16 | this.parent = var1;
17 | this.id = var3;
18 | this.name = var2;
19 | if(this.name.equals("-")) {
20 | this.name = "";
21 | }
22 |
23 | }
24 |
25 | public final void onOpen() {
26 | this.buttons.clear();
27 | Keyboard.enableRepeatEvents(true);
28 | this.buttons.add(new Button(0, this.width / 2 - 100, this.height / 4 + 120, "Save"));
29 | this.buttons.add(new Button(1, this.width / 2 - 100, this.height / 4 + 144, "Cancel"));
30 | ((Button)this.buttons.get(0)).active = this.name.trim().length() > 1;
31 | }
32 |
33 | public final void onClose() {
34 | Keyboard.enableRepeatEvents(false);
35 | }
36 |
37 | public final void tick() {
38 | ++this.counter;
39 | }
40 |
41 | protected final void onButtonClick(Button var1) {
42 | if(var1.active) {
43 | if(var1.id == 0 && this.name.trim().length() > 1) {
44 | Minecraft var10000 = this.minecraft;
45 | int var10001 = this.id;
46 | String var2 = this.name.trim();
47 | int var3 = var10001;
48 | Minecraft var4 = var10000;
49 | var10000.levelIo.saveOnline(var4.level, var4.host, var4.session.username, var4.session.sessionId, var2, var3);
50 | this.minecraft.setCurrentScreen((GuiScreen)null);
51 | this.minecraft.grabMouse();
52 | }
53 |
54 | if(var1.id == 1) {
55 | this.minecraft.setCurrentScreen(this.parent);
56 | }
57 |
58 | }
59 | }
60 |
61 | protected final void onKeyPress(char var1, int var2) {
62 | if(var2 == 14 && this.name.length() > 0) {
63 | this.name = this.name.substring(0, this.name.length() - 1);
64 | }
65 |
66 | if("abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789 ,.:-_\'*!\"#%/()=+?[]{}<>".indexOf(var1) >= 0 && this.name.length() < 64) {
67 | this.name = this.name + var1;
68 | }
69 |
70 | ((Button)this.buttons.get(0)).active = this.name.trim().length() > 1;
71 | }
72 |
73 | public final void render(int var1, int var2) {
74 | drawFadingBox(0, 0, this.width, this.height, 1610941696, -1607454624);
75 | drawCenteredString(this.fontRenderer, this.title, this.width / 2, 40, 16777215);
76 | int var3 = this.width / 2 - 100;
77 | int var4 = this.height / 2 - 10;
78 | drawBox(var3 - 1, var4 - 1, var3 + 200 + 1, var4 + 20 + 1, -6250336);
79 | drawBox(var3, var4, var3 + 200, var4 + 20, -16777216);
80 | drawString(this.fontRenderer, this.name + (this.counter / 6 % 2 == 0?"_":""), var3 + 4, var4 + 6, 14737632);
81 | super.render(var1, var2);
82 | }
83 | }
84 |
--------------------------------------------------------------------------------
/src/main/java/com/mojang/minecraft/gui/OptionButton.java:
--------------------------------------------------------------------------------
1 | package com.mojang.minecraft.gui;
2 |
3 | public final class OptionButton extends Button {
4 |
5 | public OptionButton(int var1, int var2, int var3, String var4) {
6 | super(var1, var2, var3, 150, 20, var4);
7 | }
8 | }
9 |
--------------------------------------------------------------------------------
/src/main/java/com/mojang/minecraft/gui/OptionsScreen.java:
--------------------------------------------------------------------------------
1 | package com.mojang.minecraft.gui;
2 |
3 | import com.mojang.minecraft.GameSettings;
4 |
5 | public final class OptionsScreen extends GuiScreen {
6 |
7 | private GuiScreen parent;
8 | private String title = "Options";
9 | private GameSettings settings;
10 |
11 |
12 | public OptionsScreen(GuiScreen var1, GameSettings var2) {
13 | this.parent = var1;
14 | this.settings = var2;
15 | }
16 |
17 | public final void onOpen() {
18 | for(int var1 = 0; var1 < this.settings.settingCount; ++var1) {
19 | this.buttons.add(new OptionButton(var1, this.width / 2 - 155 + var1 % 2 * 160, this.height / 6 + 24 * (var1 >> 1), this.settings.getSetting(var1)));
20 | }
21 |
22 | this.buttons.add(new Button(100, this.width / 2 - 100, this.height / 6 + 120 + 12, "Controls..."));
23 | this.buttons.add(new Button(200, this.width / 2 - 100, this.height / 6 + 168, "Done"));
24 | }
25 |
26 | protected final void onButtonClick(Button var1) {
27 | if(var1.active) {
28 | if(var1.id < 100) {
29 | this.settings.toggleSetting(var1.id, 1);
30 | var1.text = this.settings.getSetting(var1.id);
31 | }
32 |
33 | if(var1.id == 100) {
34 | this.minecraft.setCurrentScreen(new ControlsScreen(this, this.settings));
35 | }
36 |
37 | if(var1.id == 200) {
38 | this.minecraft.setCurrentScreen(this.parent);
39 | }
40 |
41 | }
42 | }
43 |
44 | public final void render(int var1, int var2) {
45 | drawFadingBox(0, 0, this.width, this.height, 1610941696, -1607454624);
46 | drawCenteredString(this.fontRenderer, this.title, this.width / 2, 20, 16777215);
47 | super.render(var1, var2);
48 | }
49 | }
50 |
--------------------------------------------------------------------------------
/src/main/java/com/mojang/minecraft/gui/PauseScreen.java:
--------------------------------------------------------------------------------
1 | package com.mojang.minecraft.gui;
2 |
3 | public final class PauseScreen extends GuiScreen {
4 |
5 | public final void onOpen() {
6 | this.buttons.clear();
7 | this.buttons.add(new Button(0, this.width / 2 - 100, this.height / 4, "Options..."));
8 | this.buttons.add(new Button(1, this.width / 2 - 100, this.height / 4 + 24, "Generate new level..."));
9 | this.buttons.add(new Button(2, this.width / 2 - 100, this.height / 4 + 48, "Save level.."));
10 | this.buttons.add(new Button(3, this.width / 2 - 100, this.height / 4 + 72, "Load level.."));
11 | this.buttons.add(new Button(4, this.width / 2 - 100, this.height / 4 + 120, "Back to game"));
12 | if(this.minecraft.session == null) {
13 | ((Button)this.buttons.get(2)).active = false;
14 | ((Button)this.buttons.get(3)).active = false;
15 | }
16 |
17 | if(this.minecraft.networkManager != null) {
18 | ((Button)this.buttons.get(1)).active = false;
19 | ((Button)this.buttons.get(2)).active = false;
20 | ((Button)this.buttons.get(3)).active = false;
21 | }
22 |
23 | }
24 |
25 | protected final void onButtonClick(Button var1) {
26 | if(var1.id == 0) {
27 | this.minecraft.setCurrentScreen(new OptionsScreen(this, this.minecraft.settings));
28 | }
29 |
30 | if(var1.id == 1) {
31 | this.minecraft.setCurrentScreen(new GenerateLevelScreen(this));
32 | }
33 |
34 | if(this.minecraft.session != null) {
35 | if(var1.id == 2) {
36 | this.minecraft.setCurrentScreen(new SaveLevelScreen(this));
37 | }
38 |
39 | if(var1.id == 3) {
40 | this.minecraft.setCurrentScreen(new LoadLevelScreen(this));
41 | }
42 | }
43 |
44 | if(var1.id == 4) {
45 | this.minecraft.setCurrentScreen((GuiScreen)null);
46 | this.minecraft.grabMouse();
47 | }
48 |
49 | }
50 |
51 | public final void render(int var1, int var2) {
52 | drawFadingBox(0, 0, this.width, this.height, 1610941696, -1607454624);
53 | drawCenteredString(this.fontRenderer, "Game menu", this.width / 2, 40, 16777215);
54 | super.render(var1, var2);
55 | }
56 | }
57 |
--------------------------------------------------------------------------------
/src/main/java/com/mojang/minecraft/gui/SaveLevelScreen.java:
--------------------------------------------------------------------------------
1 | package com.mojang.minecraft.gui;
2 |
3 | import com.mojang.minecraft.Minecraft;
4 |
5 | import java.io.File;
6 |
7 | public final class SaveLevelScreen extends LoadLevelScreen {
8 |
9 | public SaveLevelScreen(GuiScreen var1) {
10 | super(var1);
11 | this.title = "Save level";
12 | this.saving = true;
13 | }
14 |
15 | public final void onOpen() {
16 | super.onOpen();
17 | ((Button)this.buttons.get(5)).text = "Save file...";
18 | }
19 |
20 | protected final void setLevels(String[] var1) {
21 | for(int var2 = 0; var2 < 5; ++var2) {
22 | ((Button)this.buttons.get(var2)).text = var1[var2];
23 | ((Button)this.buttons.get(var2)).visible = true;
24 | ((Button)this.buttons.get(var2)).active = this.minecraft.session.haspaid;
25 | }
26 |
27 | }
28 |
29 | public final void render(int var1, int var2) {
30 | super.render(var1, var2);
31 | if(!this.minecraft.session.haspaid) {
32 | drawFadingBox(this.width / 2 - 80, 72, this.width / 2 + 80, 120, -536870912, -536870912);
33 | drawCenteredString(this.fontRenderer, "Premium only!", this.width / 2, 80, 16748688);
34 | drawCenteredString(this.fontRenderer, "Purchase the game to be able", this.width / 2, 96, 14712960);
35 | drawCenteredString(this.fontRenderer, "to save your levels online.", this.width / 2, 104, 14712960);
36 | }
37 | }
38 |
39 | protected final void openLevel(File var1) {
40 | if(!var1.getName().endsWith(".mine")) {
41 | var1 = new File(var1.getParentFile(), var1.getName() + ".mine");
42 | }
43 |
44 | File var2 = var1;
45 | Minecraft var3 = this.minecraft;
46 | this.minecraft.levelIo.save(var3.level, var2);
47 | this.minecraft.setCurrentScreen(this.parent);
48 | }
49 |
50 | protected final void openLevel(int var1) {
51 | this.minecraft.setCurrentScreen(new LevelNameScreen(this, ((Button)this.buttons.get(var1)).text, var1));
52 | }
53 | }
54 |
--------------------------------------------------------------------------------
/src/main/java/com/mojang/minecraft/gui/Screen.java:
--------------------------------------------------------------------------------
1 | package com.mojang.minecraft.gui;
2 |
3 | import com.mojang.minecraft.render.ShapeRenderer;
4 | import org.lwjgl.opengl.GL11;
5 |
6 | public class Screen {
7 |
8 | protected float imgZ = 0.0F;
9 |
10 |
11 | protected static void drawBox(int var0, int var1, int var2, int var3, int var4) {
12 | float var5 = (float)(var4 >>> 24) / 255.0F;
13 | float var6 = (float)(var4 >> 16 & 255) / 255.0F;
14 | float var7 = (float)(var4 >> 8 & 255) / 255.0F;
15 | float var9 = (float)(var4 & 255) / 255.0F;
16 | ShapeRenderer var8 = ShapeRenderer.instance;
17 | GL11.glEnable(3042);
18 | GL11.glDisable(3553);
19 | GL11.glBlendFunc(770, 771);
20 | GL11.glColor4f(var6, var7, var9, var5);
21 | var8.begin();
22 | var8.vertex((float)var0, (float)var3, 0.0F);
23 | var8.vertex((float)var2, (float)var3, 0.0F);
24 | var8.vertex((float)var2, (float)var1, 0.0F);
25 | var8.vertex((float)var0, (float)var1, 0.0F);
26 | var8.end();
27 | GL11.glEnable(3553);
28 | GL11.glDisable(3042);
29 | }
30 |
31 | protected static void drawFadingBox(int var0, int var1, int var2, int var3, int var4, int var5) {
32 | float var6 = (float)(var4 >>> 24) / 255.0F;
33 | float var7 = (float)(var4 >> 16 & 255) / 255.0F;
34 | float var8 = (float)(var4 >> 8 & 255) / 255.0F;
35 | float var12 = (float)(var4 & 255) / 255.0F;
36 | float var9 = (float)(var5 >>> 24) / 255.0F;
37 | float var10 = (float)(var5 >> 16 & 255) / 255.0F;
38 | float var11 = (float)(var5 >> 8 & 255) / 255.0F;
39 | float var13 = (float)(var5 & 255) / 255.0F;
40 | GL11.glDisable(3553);
41 | GL11.glEnable(3042);
42 | GL11.glBlendFunc(770, 771);
43 | GL11.glBegin(7);
44 | GL11.glColor4f(var7, var8, var12, var6);
45 | GL11.glVertex2f((float)var2, (float)var1);
46 | GL11.glVertex2f((float)var0, (float)var1);
47 | GL11.glColor4f(var10, var11, var13, var9);
48 | GL11.glVertex2f((float)var0, (float)var3);
49 | GL11.glVertex2f((float)var2, (float)var3);
50 | GL11.glEnd();
51 | GL11.glDisable(3042);
52 | GL11.glEnable(3553);
53 | }
54 |
55 | public static void drawCenteredString(FontRenderer var0, String var1, int var2, int var3, int var4) {
56 | var0.render(var1, var2 - var0.getWidth(var1) / 2, var3, var4);
57 | }
58 |
59 | public static void drawString(FontRenderer var0, String var1, int var2, int var3, int var4) {
60 | var0.render(var1, var2, var3, var4);
61 | }
62 |
63 | public final void drawImage(int var1, int var2, int var3, int var4, int var5, int var6) {
64 | float var7 = 0.00390625F;
65 | float var8 = 0.00390625F;
66 | ShapeRenderer var9 = ShapeRenderer.instance;
67 | ShapeRenderer.instance.begin();
68 | var9.vertexUV((float)var1, (float)(var2 + var6), this.imgZ, (float)var3 * var7, (float)(var4 + var6) * var8);
69 | var9.vertexUV((float)(var1 + var5), (float)(var2 + var6), this.imgZ, (float)(var3 + var5) * var7, (float)(var4 + var6) * var8);
70 | var9.vertexUV((float)(var1 + var5), (float)var2, this.imgZ, (float)(var3 + var5) * var7, (float)var4 * var8);
71 | var9.vertexUV((float)var1, (float)var2, this.imgZ, (float)var3 * var7, (float)var4 * var8);
72 | var9.end();
73 | }
74 | }
75 |
--------------------------------------------------------------------------------
/src/main/java/com/mojang/minecraft/item/ItemModel.java:
--------------------------------------------------------------------------------
1 | package com.mojang.minecraft.item;
2 |
3 | import com.mojang.minecraft.model.ModelPart;
4 | import com.mojang.minecraft.model.TexturedQuad;
5 | import com.mojang.minecraft.model.Vertex;
6 |
7 | public class ItemModel
8 | {
9 | public ItemModel(int tex)
10 | {
11 | float var3 = -2.0F;
12 | float var4 = -2.0F;
13 | float var15 = -2.0F;
14 |
15 | model.vertices = new Vertex[8];
16 | model.quads = new TexturedQuad[6];
17 |
18 | Vertex vertex1 = new Vertex(var15, var4, var3, 0.0F, 0.0F);
19 | Vertex vertex2 = new Vertex(2.0F, var4, var3, 0.0F, 8.0F);
20 | Vertex vertex3 = new Vertex(2.0F, 2.0F, var3, 8.0F, 8.0F);
21 | Vertex vertex4 = new Vertex(var15, 2.0F, var3, 8.0F, 0.0F);
22 | Vertex vertex5 = new Vertex(var15, var4, 2.0F, 0.0F, 0.0F);
23 | Vertex vertex6 = new Vertex(2.0F, var4, 2.0F, 0.0F, 8.0F);
24 | Vertex vertex7 = new Vertex(2.0F, 2.0F, 2.0F, 8.0F, 8.0F);
25 | Vertex vertex8 = new Vertex(var15, 2.0F, 2.0F, 8.0F, 0.0F);
26 |
27 | model.vertices[0] = vertex1;
28 | model.vertices[1] = vertex2;
29 | model.vertices[2] = vertex3;
30 | model.vertices[3] = vertex4;
31 | model.vertices[4] = vertex5;
32 | model.vertices[5] = vertex6;
33 | model.vertices[6] = vertex7;
34 | model.vertices[7] = vertex8;
35 |
36 | float u1 = ((float)(tex % 16) + (1.0F - 0.25F)) / 16.0F;
37 | float v1 = ((float)(tex / 16) + (1.0F - 0.25F)) / 16.0F;
38 | float u2 = ((float)(tex % 16) + 0.25F) / 16.0F;
39 | float v2 = ((float)(tex / 16) + 0.25F) / 16.0F;
40 |
41 | Vertex[] vertexes1 = new Vertex[] {vertex6, vertex2, vertex3, vertex7};
42 | Vertex[] vertexes2 = new Vertex[] {vertex1, vertex5, vertex8, vertex4};
43 | Vertex[] vertexes3 = new Vertex[] {vertex6, vertex5, vertex1, vertex2};
44 | Vertex[] vertexes4 = new Vertex[] {vertex3, vertex4, vertex8, vertex7};
45 | Vertex[] vertexes5 = new Vertex[] {vertex2, vertex1, vertex4, vertex3};
46 | Vertex[] vertexes6 = new Vertex[] {vertex5, vertex6, vertex7, vertex8};
47 |
48 | model.quads[0] = new TexturedQuad(vertexes1, u1, v1, u2, v2);
49 | model.quads[1] = new TexturedQuad(vertexes2, u1, v1, u2, v2);
50 | model.quads[2] = new TexturedQuad(vertexes3, u1, v1, u2, v2);
51 | model.quads[3] = new TexturedQuad(vertexes4, u1, v1, u2, v2);
52 | model.quads[4] = new TexturedQuad(vertexes5, u1, v1, u2, v2);
53 | model.quads[5] = new TexturedQuad(vertexes6, u1, v1, u2, v2);
54 | }
55 |
56 | private ModelPart model = new ModelPart(0, 0);
57 |
58 | public void generateList()
59 | {
60 | model.render(0.0625F);
61 | }
62 | }
63 |
--------------------------------------------------------------------------------
/src/main/java/com/mojang/minecraft/item/TakeEntityAnim.java:
--------------------------------------------------------------------------------
1 | package com.mojang.minecraft.item;
2 |
3 | import com.mojang.minecraft.Entity;
4 | import com.mojang.minecraft.level.Level;
5 | import com.mojang.minecraft.render.TextureManager;
6 |
7 | public class TakeEntityAnim extends Entity
8 | {
9 | public TakeEntityAnim(Level level1, Entity item, Entity player)
10 | {
11 | super(level1);
12 |
13 | this.item = item;
14 | this.player = player;
15 |
16 | setSize(1.0F, 1.0F);
17 |
18 | xorg = item.x;
19 | yorg = item.y;
20 | zorg = item.z;
21 | }
22 |
23 | @Override
24 | public void tick()
25 | {
26 | time++;
27 |
28 | if(time >= 3)
29 | {
30 | remove();
31 | }
32 |
33 | // TODO: Is this right?
34 | float distance = (distance = (float)time / 3.0F) * distance;
35 |
36 | xo = item.xo = item.x;
37 | yo = item.yo = item.y;
38 | zo = item.zo = item.z;
39 |
40 | x = item.x = xorg + (player.x - xorg) * distance;
41 | y = item.y = yorg + (player.y - 1.0F - yorg) * distance;
42 | z = item.z = zorg + (player.z - zorg) * distance;
43 |
44 | setPos(x, y, z);
45 | }
46 |
47 | @Override
48 | public void render(TextureManager textureManager, float unknown0)
49 | {
50 | item.render(textureManager, unknown0);
51 | }
52 |
53 | private static final long serialVersionUID = 1L;
54 |
55 | private int time = 0;
56 |
57 | private Entity item;
58 | private Entity player;
59 |
60 | private float xorg;
61 | private float yorg;
62 | private float zorg;
63 | }
64 |
--------------------------------------------------------------------------------
/src/main/java/com/mojang/minecraft/level/BlockMap$Slot.java:
--------------------------------------------------------------------------------
1 | package com.mojang.minecraft.level;
2 |
3 | import com.mojang.minecraft.Entity;
4 |
5 | import java.io.Serializable;
6 |
7 | class BlockMap$Slot implements Serializable {
8 |
9 | public static final long serialVersionUID = 0L;
10 | private int xSlot;
11 | private int ySlot;
12 | private int zSlot;
13 | // $FF: synthetic field
14 | final BlockMap blockMap;
15 |
16 |
17 | private BlockMap$Slot(BlockMap var1) {
18 | this.blockMap = var1;
19 | }
20 |
21 | public BlockMap$Slot init(float var1, float var2, float var3) {
22 | this.xSlot = (int)(var1 / 16.0F);
23 | this.ySlot = (int)(var2 / 16.0F);
24 | this.zSlot = (int)(var3 / 16.0F);
25 | if(this.xSlot < 0) {
26 | this.xSlot = 0;
27 | }
28 |
29 | if(this.ySlot < 0) {
30 | this.ySlot = 0;
31 | }
32 |
33 | if(this.zSlot < 0) {
34 | this.zSlot = 0;
35 | }
36 |
37 | if(this.xSlot >= BlockMap.getWidth(this.blockMap)) {
38 | this.xSlot = BlockMap.getWidth(this.blockMap) - 1;
39 | }
40 |
41 | if(this.ySlot >= BlockMap.getDepth(this.blockMap)) {
42 | this.ySlot = BlockMap.getDepth(this.blockMap) - 1;
43 | }
44 |
45 | if(this.zSlot >= BlockMap.getHeight(this.blockMap)) {
46 | this.zSlot = BlockMap.getHeight(this.blockMap) - 1;
47 | }
48 |
49 | return this;
50 | }
51 |
52 | public void add(Entity var1) {
53 | if(this.xSlot >= 0 && this.ySlot >= 0 && this.zSlot >= 0) {
54 | this.blockMap.entityGrid[(this.zSlot * BlockMap.getDepth(this.blockMap) + this.ySlot) * BlockMap.getWidth(this.blockMap) + this.xSlot].add(var1);
55 | }
56 |
57 | }
58 |
59 | public void remove(Entity var1) {
60 | if(this.xSlot >= 0 && this.ySlot >= 0 && this.zSlot >= 0) {
61 | this.blockMap.entityGrid[(this.zSlot * BlockMap.getDepth(this.blockMap) + this.ySlot) * BlockMap.getWidth(this.blockMap) + this.xSlot].remove(var1);
62 | }
63 |
64 | }
65 |
66 | // $FF: synthetic method
67 | BlockMap$Slot(BlockMap var1, SyntheticClass var2) {
68 | this(var1);
69 | }
70 |
71 | // $FF: synthetic method
72 | static int getXSlot(BlockMap$Slot var0) {
73 | return var0.xSlot;
74 | }
75 |
76 | // $FF: synthetic method
77 | static int getYSlot(BlockMap$Slot var0) {
78 | return var0.ySlot;
79 | }
80 |
81 | // $FF: synthetic method
82 | static int getZSlot(BlockMap$Slot var0) {
83 | return var0.zSlot;
84 | }
85 | }
86 |
--------------------------------------------------------------------------------
/src/main/java/com/mojang/minecraft/level/LevelObjectInputStream.java:
--------------------------------------------------------------------------------
1 | package com.mojang.minecraft.level;
2 |
3 | import java.io.IOException;
4 | import java.io.InputStream;
5 | import java.io.ObjectInputStream;
6 | import java.io.ObjectStreamClass;
7 | import java.util.HashSet;
8 | import java.util.Set;
9 |
10 | public final class LevelObjectInputStream extends ObjectInputStream {
11 |
12 | private Set classes = new HashSet();
13 |
14 |
15 | public LevelObjectInputStream(InputStream var1) throws IOException {
16 | super(var1);
17 | this.classes.add("Player$1");
18 | this.classes.add("Creeper$1");
19 | this.classes.add("Skeleton$1");
20 | }
21 |
22 | protected final ObjectStreamClass readClassDescriptor() {
23 | try
24 | {
25 | ObjectStreamClass var1 = super.readClassDescriptor();
26 | return this.classes.contains(var1.getName())?ObjectStreamClass.lookup(Class.forName(var1.getName())):var1;
27 | } catch (ClassNotFoundException e) {
28 | e.printStackTrace();
29 | } catch (IOException e) {
30 | e.printStackTrace();
31 | }
32 |
33 | return null;
34 | }
35 | }
36 |
--------------------------------------------------------------------------------
/src/main/java/com/mojang/minecraft/level/NextTickListEntry.java:
--------------------------------------------------------------------------------
1 | package com.mojang.minecraft.level;
2 |
3 |
4 | public final class NextTickListEntry {
5 |
6 | public int x;
7 | public int y;
8 | public int z;
9 | public int block;
10 | public int ticks;
11 |
12 |
13 | public NextTickListEntry(int var1, int var2, int var3, int var4) {
14 | this.x = var1;
15 | this.y = var2;
16 | this.z = var3;
17 | this.block = var4;
18 | }
19 | }
20 |
--------------------------------------------------------------------------------
/src/main/java/com/mojang/minecraft/level/SyntheticClass.java:
--------------------------------------------------------------------------------
1 | package com.mojang.minecraft.level;
2 |
3 |
4 | // $FF: synthetic class
5 | final class SyntheticClass {
6 | }
7 |
--------------------------------------------------------------------------------
/src/main/java/com/mojang/minecraft/level/generator/noise/CombinedNoise.java:
--------------------------------------------------------------------------------
1 | package com.mojang.minecraft.level.generator.noise;
2 |
3 | public final class CombinedNoise extends Noise
4 | {
5 | public CombinedNoise(Noise noise1, Noise noise2)
6 | {
7 | this.noise1 = noise1;
8 | this.noise2 = noise2;
9 | }
10 |
11 | @Override
12 | public double compute(double x, double z)
13 | {
14 | return noise1.compute(x + noise2.compute(x, z), z);
15 | }
16 |
17 | private Noise noise1;
18 | private Noise noise2;
19 | }
20 |
--------------------------------------------------------------------------------
/src/main/java/com/mojang/minecraft/level/generator/noise/Noise.java:
--------------------------------------------------------------------------------
1 | package com.mojang.minecraft.level.generator.noise;
2 |
3 |
4 | public abstract class Noise
5 | {
6 | public abstract double compute(double x, double z);
7 | }
8 |
--------------------------------------------------------------------------------
/src/main/java/com/mojang/minecraft/level/generator/noise/OctaveNoise.java:
--------------------------------------------------------------------------------
1 | package com.mojang.minecraft.level.generator.noise;
2 |
3 | import java.util.Random;
4 |
5 | public class OctaveNoise extends Noise
6 | {
7 | public OctaveNoise(Random random, int octaves)
8 | {
9 | this.octaves = octaves;
10 | perlin = new PerlinNoise[octaves];
11 |
12 | for(int count = 0; count < octaves; count++)
13 | {
14 | perlin[count] = new PerlinNoise(random);
15 | }
16 |
17 | }
18 |
19 | @Override
20 | public double compute(double x, double z)
21 | {
22 | double result = 0.0D;
23 | double noiseLevel = 1.0D; //unknown0
24 |
25 | for(int count = 0; count < octaves; count++)
26 | {
27 | result += perlin[count].compute(x / noiseLevel, z / noiseLevel) * noiseLevel;
28 |
29 | noiseLevel *= 2.0D;
30 | }
31 |
32 | return result;
33 | }
34 |
35 | private PerlinNoise[] perlin;
36 | private int octaves;
37 | }
38 |
--------------------------------------------------------------------------------
/src/main/java/com/mojang/minecraft/level/liquid/LiquidType.java:
--------------------------------------------------------------------------------
1 | package com.mojang.minecraft.level.liquid;
2 |
3 | public class LiquidType
4 | {
5 | private LiquidType(int type)
6 | {
7 | values = new LiquidType[4];
8 |
9 | values[type] = this;
10 | }
11 |
12 | private LiquidType[] values;
13 |
14 | public static final LiquidType NOT_LIQUID = new LiquidType(0);
15 | public static final LiquidType WATER = new LiquidType(1);
16 | public static final LiquidType LAVA = new LiquidType(2);
17 | }
18 |
--------------------------------------------------------------------------------
/src/main/java/com/mojang/minecraft/level/tile/BookshelfBlock.java:
--------------------------------------------------------------------------------
1 | package com.mojang.minecraft.level.tile;
2 |
3 | public final class BookshelfBlock extends Block {
4 |
5 | public BookshelfBlock(int var1, int var2) {
6 | super(47, 35);
7 | }
8 |
9 | protected final int getTextureId(int texture) {
10 | return texture <= 1?4:this.textureId;
11 | }
12 |
13 | public final int getDropCount() {
14 | return 0;
15 | }
16 | }
17 |
--------------------------------------------------------------------------------
/src/main/java/com/mojang/minecraft/level/tile/DirtBlock.java:
--------------------------------------------------------------------------------
1 | package com.mojang.minecraft.level.tile;
2 |
3 | public final class DirtBlock extends Block {
4 |
5 | protected DirtBlock(int var1, int var2) {
6 | super(3, 2);
7 | }
8 | }
9 |
--------------------------------------------------------------------------------
/src/main/java/com/mojang/minecraft/level/tile/FlowerBlock.java:
--------------------------------------------------------------------------------
1 | package com.mojang.minecraft.level.tile;
2 |
3 | import com.mojang.minecraft.level.Level;
4 | import com.mojang.minecraft.phys.AABB;
5 | import com.mojang.minecraft.render.ShapeRenderer;
6 | import com.mojang.util.MathHelper;
7 |
8 | import java.util.Random;
9 |
10 | public class FlowerBlock extends Block {
11 |
12 | protected FlowerBlock(int var1, int var2) {
13 | super(var1);
14 | this.textureId = var2;
15 | this.setPhysics(true);
16 | float var3 = 0.2F;
17 | this.setBounds(0.5F - var3, 0.0F, 0.5F - var3, var3 + 0.5F, var3 * 3.0F, var3 + 0.5F);
18 | }
19 |
20 | public void update(Level level, int x, int y, int z, Random rand) {
21 | if(!level.growTrees) {
22 | int var6 = level.getTile(x, y - 1, z);
23 | if(!level.isLit(x, y, z) || var6 != DIRT.id && var6 != GRASS.id) {
24 | level.setTile(x, y, z, 0);
25 | }
26 |
27 | }
28 | }
29 |
30 | private void render(ShapeRenderer var1, float var2, float var3, float var4) {
31 | int var15;
32 | int var5 = (var15 = this.getTextureId(15)) % 16 << 4;
33 | int var6 = var15 / 16 << 4;
34 | float var16 = (float)var5 / 256.0F;
35 | float var17 = ((float)var5 + 15.99F) / 256.0F;
36 | float var7 = (float)var6 / 256.0F;
37 | float var18 = ((float)var6 + 15.99F) / 256.0F;
38 |
39 | for(int var8 = 0; var8 < 2; ++var8) {
40 | float var9 = (float)((double) MathHelper.sin((float) var8 * 3.1415927F / 2.0F + 0.7853982F) * 0.5D);
41 | float var10 = (float)((double)MathHelper.cos((float)var8 * 3.1415927F / 2.0F + 0.7853982F) * 0.5D);
42 | float var11 = var2 + 0.5F - var9;
43 | var9 += var2 + 0.5F;
44 | float var13 = var3 + 1.0F;
45 | float var14 = var4 + 0.5F - var10;
46 | var10 += var4 + 0.5F;
47 | var1.vertexUV(var11, var13, var14, var17, var7);
48 | var1.vertexUV(var9, var13, var10, var16, var7);
49 | var1.vertexUV(var9, var3, var10, var16, var18);
50 | var1.vertexUV(var11, var3, var14, var17, var18);
51 | var1.vertexUV(var9, var13, var10, var17, var7);
52 | var1.vertexUV(var11, var13, var14, var16, var7);
53 | var1.vertexUV(var11, var3, var14, var16, var18);
54 | var1.vertexUV(var9, var3, var10, var17, var18);
55 | }
56 |
57 | }
58 |
59 | public final boolean isOpaque() {
60 | return false;
61 | }
62 |
63 | public final boolean isSolid() {
64 | return false;
65 | }
66 |
67 | public final void renderPreview(ShapeRenderer var1) {
68 | var1.normal(0.0F, 1.0F, 0.0F);
69 | var1.begin();
70 | this.render(var1, 0.0F, 0.4F, -0.3F);
71 | var1.end();
72 | }
73 |
74 | public final boolean isCube() {
75 | return false;
76 | }
77 |
78 | public final boolean render(Level var1, int var2, int var3, int var4, ShapeRenderer var5) {
79 | float var6 = var1.getBrightness(var2, var3, var4);
80 | var5.color(var6, var6, var6);
81 | this.render(var5, (float)var2, (float)var3, (float)var4);
82 | return true;
83 | }
84 |
85 | public final void renderFullbright(ShapeRenderer shapeRenderer) {
86 | shapeRenderer.color(1.0F, 1.0F, 1.0F);
87 | this.render(shapeRenderer, (float)-2, 0.0F, 0.0F);
88 | }
89 |
90 | @Override
91 | public AABB getCollisionBox(int x, int y, int z)
92 | {
93 | return null;
94 | }
95 | }
96 |
--------------------------------------------------------------------------------
/src/main/java/com/mojang/minecraft/level/tile/GlassBlock.java:
--------------------------------------------------------------------------------
1 | package com.mojang.minecraft.level.tile;
2 |
3 | import com.mojang.minecraft.level.Level;
4 |
5 | public final class GlassBlock extends Block {
6 |
7 | private boolean showNeighborSides = false;
8 |
9 |
10 | protected GlassBlock(int var1, int var2, boolean var3) {
11 | super(20, 49);
12 | }
13 |
14 | public final boolean isSolid() {
15 | return false;
16 | }
17 |
18 | public final boolean canRenderSide(Level level, int x, int y, int z, int side) {
19 | int var6 = level.getTile(x, y, z);
20 | return !this.showNeighborSides && var6 == this.id?false:super.canRenderSide(level, x, y, z, side);
21 | }
22 |
23 | public final boolean isOpaque() {
24 | return false;
25 | }
26 | }
27 |
--------------------------------------------------------------------------------
/src/main/java/com/mojang/minecraft/level/tile/GrassBlock.java:
--------------------------------------------------------------------------------
1 | package com.mojang.minecraft.level.tile;
2 |
3 | import com.mojang.minecraft.level.Level;
4 |
5 | import java.util.Random;
6 |
7 | public final class GrassBlock extends Block {
8 |
9 | protected GrassBlock(int var1) {
10 | super(2);
11 | this.textureId = 3;
12 | this.setPhysics(true);
13 | }
14 |
15 | protected final int getTextureId(int texture) {
16 | return texture == 1?0:(texture == 0?2:3);
17 | }
18 |
19 | public final void update(Level level, int x, int y, int z, Random rand) {
20 | if(rand.nextInt(4) == 0) {
21 | if(!level.isLit(x, y, z)) {
22 | level.setTile(x, y, z, DIRT.id);
23 | } else {
24 | for(int var9 = 0; var9 < 4; ++var9) {
25 | int var6 = x + rand.nextInt(3) - 1;
26 | int var7 = y + rand.nextInt(5) - 3;
27 | int var8 = z + rand.nextInt(3) - 1;
28 | if(level.getTile(var6, var7, var8) == DIRT.id && level.isLit(var6, var7, var8)) {
29 | level.setTile(var6, var7, var8, GRASS.id);
30 | }
31 | }
32 |
33 | }
34 | }
35 | }
36 |
37 | public final int getDrop() {
38 | return DIRT.getDrop();
39 | }
40 | }
41 |
--------------------------------------------------------------------------------
/src/main/java/com/mojang/minecraft/level/tile/LeavesBaseBlock.java:
--------------------------------------------------------------------------------
1 | package com.mojang.minecraft.level.tile;
2 |
3 | import com.mojang.minecraft.level.Level;
4 |
5 | public class LeavesBaseBlock extends Block {
6 |
7 | private boolean showNeighborSides = true;
8 |
9 |
10 | protected LeavesBaseBlock(int var1, int var2, boolean var3) {
11 | super(var1, var2);
12 | }
13 |
14 | public final boolean isSolid() {
15 | return false;
16 | }
17 |
18 | public final boolean canRenderSide(Level level, int x, int y, int z, int side) {
19 | int var6 = level.getTile(x, y, z);
20 | return !this.showNeighborSides && var6 == this.id?false:super.canRenderSide(level, x, y, z, side);
21 | }
22 |
23 | public final boolean isOpaque() {
24 | return false;
25 | }
26 | }
27 |
--------------------------------------------------------------------------------
/src/main/java/com/mojang/minecraft/level/tile/LeavesBlock.java:
--------------------------------------------------------------------------------
1 | package com.mojang.minecraft.level.tile;
2 |
3 | public final class LeavesBlock extends LeavesBaseBlock {
4 |
5 | protected LeavesBlock(int var1, int var2) {
6 | super(18, 22, true);
7 | }
8 |
9 | public final int getDropCount() {
10 | return random.nextInt(10) == 0?1:0;
11 | }
12 |
13 | public final int getDrop() {
14 | return Block.SAPLING.id;
15 | }
16 | }
17 |
--------------------------------------------------------------------------------
/src/main/java/com/mojang/minecraft/level/tile/MetalBlock.java:
--------------------------------------------------------------------------------
1 | package com.mojang.minecraft.level.tile;
2 |
3 | public final class MetalBlock extends Block {
4 |
5 | public MetalBlock(int var1, int var2) {
6 | super(var1);
7 | this.textureId = var2;
8 | }
9 |
10 | protected final int getTextureId(int texture) {
11 | return texture == 1?this.textureId - 16:(texture == 0?this.textureId + 16:this.textureId);
12 | }
13 | }
14 |
--------------------------------------------------------------------------------
/src/main/java/com/mojang/minecraft/level/tile/MushroomBlock.java:
--------------------------------------------------------------------------------
1 | package com.mojang.minecraft.level.tile;
2 |
3 | import com.mojang.minecraft.level.Level;
4 |
5 | import java.util.Random;
6 |
7 | public final class MushroomBlock extends FlowerBlock {
8 |
9 | protected MushroomBlock(int var1, int var2) {
10 | super(var1, var2);
11 | float var3 = 0.2F;
12 | this.setBounds(0.5F - var3, 0.0F, 0.5F - var3, var3 + 0.5F, var3 * 2.0F, var3 + 0.5F);
13 | }
14 |
15 | public final void update(Level level, int x, int y, int z, Random rand) {
16 | int var6 = level.getTile(x, y - 1, z);
17 | if(level.isLit(x, y, z) || var6 != STONE.id && var6 != GRAVEL.id && var6 != COBBLESTONE.id) {
18 | level.setTile(x, y, z, 0);
19 | }
20 |
21 | }
22 | }
23 |
--------------------------------------------------------------------------------
/src/main/java/com/mojang/minecraft/level/tile/OreBlock.java:
--------------------------------------------------------------------------------
1 | package com.mojang.minecraft.level.tile;
2 |
3 | public final class OreBlock extends Block {
4 |
5 | public OreBlock(int var1, int var2) {
6 | super(var1, var2);
7 | }
8 |
9 | public final int getDrop() {
10 | return this == COAL_ORE ? SLAB.id:(this == GOLD_ORE ? GOLD_BLOCK.id:(this == IRON_ORE ? IRON_BLOCK.id:this.id));
11 | }
12 |
13 | public final int getDropCount() {
14 | return random.nextInt(3) + 1;
15 | }
16 | }
17 |
--------------------------------------------------------------------------------
/src/main/java/com/mojang/minecraft/level/tile/SandBlock.java:
--------------------------------------------------------------------------------
1 | package com.mojang.minecraft.level.tile;
2 |
3 | import com.mojang.minecraft.level.Level;
4 | import com.mojang.minecraft.level.liquid.LiquidType;
5 |
6 | public final class SandBlock extends Block {
7 |
8 | public SandBlock(int var1, int var2) {
9 | super(var1, var2);
10 | }
11 |
12 | public final void onPlace(Level level, int x, int y, int z) {
13 | this.fall(level, x, y, z);
14 | }
15 |
16 | public final void onNeighborChange(Level var1, int var2, int var3, int var4, int var5) {
17 | this.fall(var1, var2, var3, var4);
18 | }
19 |
20 | private void fall(Level var1, int var2, int var3, int var4) {
21 | int var11 = var2;
22 | int var5 = var3;
23 | int var6 = var4;
24 |
25 | while(true) {
26 | int var8 = var5 - 1;
27 | int var10;
28 | LiquidType var12;
29 | if(!((var10 = var1.getTile(var11, var8, var6)) == 0?true:((var12 = blocks[var10].getLiquidType()) == LiquidType.WATER?true:var12 == LiquidType.LAVA)) || var5 <= 0) {
30 | if(var5 != var3) {
31 | if((var10 = var1.getTile(var11, var5, var6)) > 0 && blocks[var10].getLiquidType() != LiquidType.NOT_LIQUID) {
32 | var1.setTileNoUpdate(var11, var5, var6, 0);
33 | }
34 |
35 | var1.swap(var2, var3, var4, var11, var5, var6);
36 | }
37 |
38 | return;
39 | }
40 |
41 | --var5;
42 | }
43 | }
44 | }
45 |
--------------------------------------------------------------------------------
/src/main/java/com/mojang/minecraft/level/tile/SaplingBlock.java:
--------------------------------------------------------------------------------
1 | package com.mojang.minecraft.level.tile;
2 |
3 | import com.mojang.minecraft.level.Level;
4 |
5 | import java.util.Random;
6 |
7 | public final class SaplingBlock extends FlowerBlock {
8 |
9 | protected SaplingBlock(int var1, int var2) {
10 | super(6, 15);
11 | float var3 = 0.4F;
12 | this.setBounds(0.5F - var3, 0.0F, 0.5F - var3, var3 + 0.5F, var3 * 2.0F, var3 + 0.5F);
13 | }
14 |
15 | public final void update(Level level, int x, int y, int z, Random rand) {
16 | int var6 = level.getTile(x, y - 1, z);
17 | if(level.isLit(x, y, z) && (var6 == DIRT.id || var6 == GRASS.id)) {
18 | if(rand.nextInt(5) == 0) {
19 | level.setTileNoUpdate(x, y, z, 0);
20 | if(!level.maybeGrowTree(x, y, z)) {
21 | level.setTileNoUpdate(x, y, z, this.id);
22 | }
23 | }
24 |
25 | } else {
26 | level.setTile(x, y, z, 0);
27 | }
28 | }
29 | }
30 |
--------------------------------------------------------------------------------
/src/main/java/com/mojang/minecraft/level/tile/SlabBlock.java:
--------------------------------------------------------------------------------
1 | package com.mojang.minecraft.level.tile;
2 |
3 | import com.mojang.minecraft.level.Level;
4 |
5 | public final class SlabBlock extends Block {
6 |
7 | private boolean doubleSlab;
8 |
9 |
10 | public SlabBlock(int var1, boolean var2) {
11 | super(var1, 6);
12 | this.doubleSlab = var2;
13 | if(!var2) {
14 | this.setBounds(0.0F, 0.0F, 0.0F, 1.0F, 0.5F, 1.0F);
15 | }
16 |
17 | }
18 |
19 | protected final int getTextureId(int texture) {
20 | return texture <= 1?6:5;
21 | }
22 |
23 | public final boolean isSolid() {
24 | return this.doubleSlab;
25 | }
26 |
27 | public final void onNeighborChange(Level var1, int var2, int var3, int var4, int var5) {
28 | if(this == SLAB) {
29 | ;
30 | }
31 | }
32 |
33 | public final void onAdded(Level level, int x, int y, int z) {
34 | if(this != SLAB) {
35 | super.onAdded(level, x, y, z);
36 | }
37 |
38 | if(level.getTile(x, y - 1, z) == SLAB.id) {
39 | level.setTile(x, y, z, 0);
40 | level.setTile(x, y - 1, z, DOUBLE_SLAB.id);
41 | }
42 |
43 | }
44 |
45 | public final int getDrop() {
46 | return SLAB.id;
47 | }
48 |
49 | public final boolean isCube() {
50 | return this.doubleSlab;
51 | }
52 |
53 | public final boolean canRenderSide(Level level, int x, int y, int z, int side) {
54 | if(this != SLAB) {
55 | super.canRenderSide(level, x, y, z, side);
56 | }
57 |
58 | return side == 1?true:(!super.canRenderSide(level, x, y, z, side)?false:(side == 0?true: level.getTile(x, y, z) != this.id));
59 | }
60 | }
61 |
--------------------------------------------------------------------------------
/src/main/java/com/mojang/minecraft/level/tile/SpongeBlock.java:
--------------------------------------------------------------------------------
1 | package com.mojang.minecraft.level.tile;
2 |
3 | import com.mojang.minecraft.level.Level;
4 |
5 | public final class SpongeBlock extends Block {
6 |
7 | protected SpongeBlock(int var1) {
8 | super(19);
9 | this.textureId = 48;
10 | }
11 |
12 | public final void onAdded(Level level, int x, int y, int z) {
13 | for(int var7 = x - 2; var7 <= x + 2; ++var7) {
14 | for(int var5 = y - 2; var5 <= y + 2; ++var5) {
15 | for(int var6 = z - 2; var6 <= z + 2; ++var6) {
16 | if(level.isWater(var7, var5, var6)) {
17 | level.setTileNoNeighborChange(var7, var5, var6, 0);
18 | }
19 | }
20 | }
21 | }
22 |
23 | }
24 |
25 | public final void onRemoved(Level var1, int var2, int var3, int var4) {
26 | for(int var7 = var2 - 2; var7 <= var2 + 2; ++var7) {
27 | for(int var5 = var3 - 2; var5 <= var3 + 2; ++var5) {
28 | for(int var6 = var4 - 2; var6 <= var4 + 2; ++var6) {
29 | var1.updateNeighborsAt(var7, var5, var6, var1.getTile(var7, var5, var6));
30 | }
31 | }
32 | }
33 |
34 | }
35 | }
36 |
--------------------------------------------------------------------------------
/src/main/java/com/mojang/minecraft/level/tile/StillLiquidBlock.java:
--------------------------------------------------------------------------------
1 | package com.mojang.minecraft.level.tile;
2 |
3 | import com.mojang.minecraft.level.Level;
4 | import com.mojang.minecraft.level.liquid.LiquidType;
5 |
6 | import java.util.Random;
7 |
8 | public final class StillLiquidBlock extends LiquidBlock {
9 |
10 | protected StillLiquidBlock(int var1, LiquidType var2) {
11 | super(var1, var2);
12 | this.movingId = var1 - 1;
13 | this.stillId = var1;
14 | this.setPhysics(false);
15 | }
16 |
17 | public final void update(Level level, int x, int y, int z, Random rand) {}
18 |
19 | public final void onNeighborChange(Level var1, int var2, int var3, int var4, int var5) {
20 | boolean var6 = false;
21 | if(var1.getTile(var2 - 1, var3, var4) == 0) {
22 | var6 = true;
23 | }
24 |
25 | if(var1.getTile(var2 + 1, var3, var4) == 0) {
26 | var6 = true;
27 | }
28 |
29 | if(var1.getTile(var2, var3, var4 - 1) == 0) {
30 | var6 = true;
31 | }
32 |
33 | if(var1.getTile(var2, var3, var4 + 1) == 0) {
34 | var6 = true;
35 | }
36 |
37 | if(var1.getTile(var2, var3 - 1, var4) == 0) {
38 | var6 = true;
39 | }
40 |
41 | if(var5 != 0) {
42 | LiquidType var7 = Block.blocks[var5].getLiquidType();
43 | if(this.type == LiquidType.WATER && var7 == LiquidType.LAVA || var7 == LiquidType.WATER && this.type == LiquidType.LAVA) {
44 | var1.setTile(var2, var3, var4, Block.STONE.id);
45 | return;
46 | }
47 | }
48 |
49 | if(var6) {
50 | var1.setTileNoUpdate(var2, var3, var4, this.movingId);
51 | var1.addToTickNextTick(var2, var3, var4, this.movingId);
52 | }
53 |
54 | }
55 | }
56 |
--------------------------------------------------------------------------------
/src/main/java/com/mojang/minecraft/level/tile/StoneBlock.java:
--------------------------------------------------------------------------------
1 | package com.mojang.minecraft.level.tile;
2 |
3 | public final class StoneBlock extends Block {
4 |
5 | public StoneBlock(int var1, int var2) {
6 | super(var1, var2);
7 | }
8 |
9 | public final int getDrop() {
10 | return COBBLESTONE.id;
11 | }
12 | }
13 |
--------------------------------------------------------------------------------
/src/main/java/com/mojang/minecraft/level/tile/TNTBlock.java:
--------------------------------------------------------------------------------
1 | package com.mojang.minecraft.level.tile;
2 |
3 | import com.mojang.minecraft.item.PrimedTnt;
4 | import com.mojang.minecraft.level.Level;
5 | import com.mojang.minecraft.particle.ParticleManager;
6 |
7 | public final class TNTBlock extends Block {
8 |
9 | public TNTBlock(int var1, int var2) {
10 | super(46, 8);
11 | }
12 |
13 | protected final int getTextureId(int texture) {
14 | return texture == 0?this.textureId + 2:(texture == 1?this.textureId + 1:this.textureId);
15 | }
16 |
17 | public final int getDropCount() {
18 | return 0;
19 | }
20 |
21 | public final void explode(Level var1, int var2, int var3, int var4) {
22 | if(!var1.creativeMode) {
23 | PrimedTnt var5;
24 | (var5 = new PrimedTnt(var1, (float)var2 + 0.5F, (float)var3 + 0.5F, (float)var4 + 0.5F)).life = random.nextInt(var5.life / 4) + var5.life / 8;
25 | var1.addEntity(var5);
26 | }
27 |
28 | }
29 |
30 | public final void spawnBreakParticles(Level level, int x, int y, int z, ParticleManager particleManager) {
31 | if(!level.creativeMode) {
32 | level.addEntity(new PrimedTnt(level, (float) x + 0.5F, (float) y + 0.5F, (float) z + 0.5F));
33 | } else {
34 | super.spawnBreakParticles(level, x, y, z, particleManager);
35 | }
36 | }
37 | }
38 |
--------------------------------------------------------------------------------
/src/main/java/com/mojang/minecraft/level/tile/Tile$SoundType.java:
--------------------------------------------------------------------------------
1 | package com.mojang.minecraft.level.tile;
2 |
3 | public enum Tile$SoundType {
4 |
5 | none("none", 0, "-", 0.0F, 0.0F),
6 | grass("grass", 1, "grass", 0.6F, 1.0F),
7 | cloth("cloth", 2, "grass", 0.7F, 1.2F),
8 | gravel("gravel", 3, "gravel", 1.0F, 1.0F),
9 | stone("stone", 4, "stone", 1.0F, 1.0F),
10 | metal("metal", 5, "stone", 1.0F, 2.0F),
11 | wood("wood", 6, "wood", 1.0F, 1.0F);
12 | public final String name;
13 | private final float volume;
14 | private final float pitch;
15 | // $FF: synthetic field
16 | private static final Tile$SoundType[] values = new Tile$SoundType[]{none, grass, cloth, gravel, stone, metal, wood};
17 |
18 |
19 | private Tile$SoundType(String var1, int var2, String var3, float var4, float var5) {
20 | this.name = var3;
21 | this.volume = var4;
22 | this.pitch = var5;
23 | }
24 |
25 | public final float getVolume() {
26 | return this.volume / (Block.random.nextFloat() * 0.4F + 1.0F) * 0.5F;
27 | }
28 |
29 | public final float getPitch() {
30 | return this.pitch / (Block.random.nextFloat() * 0.2F + 0.9F);
31 | }
32 |
33 | }
34 |
--------------------------------------------------------------------------------
/src/main/java/com/mojang/minecraft/level/tile/WoodBlock.java:
--------------------------------------------------------------------------------
1 | package com.mojang.minecraft.level.tile;
2 |
3 | public final class WoodBlock extends Block {
4 |
5 | protected WoodBlock(int var1) {
6 | super(17);
7 | this.textureId = 20;
8 | }
9 |
10 | public final int getDropCount() {
11 | return random.nextInt(3) + 3;
12 | }
13 |
14 | public final int getDrop() {
15 | return WOOD.id;
16 | }
17 |
18 | protected final int getTextureId(int texture) {
19 | return texture == 1?21:(texture == 0?21:20);
20 | }
21 | }
22 |
--------------------------------------------------------------------------------
/src/main/java/com/mojang/minecraft/mob/Creeper$1.java:
--------------------------------------------------------------------------------
1 | package com.mojang.minecraft.mob;
2 |
3 | import com.mojang.minecraft.Entity;
4 | import com.mojang.minecraft.level.tile.Block;
5 | import com.mojang.minecraft.mob.ai.BasicAttackAI;
6 | import com.mojang.minecraft.particle.TerrainParticle;
7 | import com.mojang.util.MathHelper;
8 |
9 | final class Creeper$1 extends BasicAttackAI {
10 |
11 | public static final long serialVersionUID = 0L;
12 | // $FF: synthetic field
13 | final Creeper creeper;
14 |
15 |
16 | Creeper$1(Creeper var1) {
17 | this.creeper = var1;
18 | }
19 |
20 | public final boolean attack(Entity var1) {
21 | if(!super.attack(var1)) {
22 | return false;
23 | } else {
24 | this.mob.hurt(var1, 6);
25 | return true;
26 | }
27 | }
28 |
29 | public final void beforeRemove() {
30 | float var1 = 4.0F;
31 | this.level.explode(this.mob, this.mob.x, this.mob.y, this.mob.z, var1);
32 |
33 | for(int var2 = 0; var2 < 500; ++var2) {
34 | float var3 = (float)this.random.nextGaussian() * var1 / 4.0F;
35 | float var4 = (float)this.random.nextGaussian() * var1 / 4.0F;
36 | float var5 = (float)this.random.nextGaussian() * var1 / 4.0F;
37 | float var6 = MathHelper.sqrt(var3 * var3 + var4 * var4 + var5 * var5);
38 | float var7 = var3 / var6 / var6;
39 | float var8 = var4 / var6 / var6;
40 | var6 = var5 / var6 / var6;
41 | this.level.particleEngine.spawnParticle(new TerrainParticle(this.level, this.mob.x + var3, this.mob.y + var4, this.mob.z + var5, var7, var8, var6, Block.LEAVES));
42 | }
43 |
44 | }
45 | }
46 |
--------------------------------------------------------------------------------
/src/main/java/com/mojang/minecraft/mob/Creeper.java:
--------------------------------------------------------------------------------
1 | package com.mojang.minecraft.mob;
2 |
3 | import com.mojang.minecraft.level.Level;
4 | import com.mojang.util.MathHelper;
5 |
6 | public class Creeper extends Mob {
7 |
8 | public static final long serialVersionUID = 0L;
9 |
10 |
11 | public Creeper(Level var1, float var2, float var3, float var4) {
12 | super(var1);
13 | this.heightOffset = 1.62F;
14 | this.modelName = "creeper";
15 | this.textureName = "/mob/creeper.png";
16 | this.ai = new Creeper$1(this);
17 | this.ai.defaultLookAngle = 45;
18 | this.deathScore = 200;
19 | this.setPos(var2, var3, var4);
20 | }
21 |
22 | public float getBrightness(float var1) {
23 | float var2 = (float)(20 - this.health) / 20.0F;
24 | return ((MathHelper.sin((float)this.tickCount + var1) * 0.5F + 0.5F) * var2 * 0.5F + 0.25F + var2 * 0.25F) * super.getBrightness(var1);
25 | }
26 | }
27 |
--------------------------------------------------------------------------------
/src/main/java/com/mojang/minecraft/mob/HumanoidMob.java:
--------------------------------------------------------------------------------
1 | package com.mojang.minecraft.mob;
2 |
3 | import com.mojang.minecraft.level.Level;
4 | import com.mojang.minecraft.model.HumanoidModel;
5 | import com.mojang.minecraft.model.Model;
6 | import com.mojang.minecraft.render.TextureManager;
7 | import org.lwjgl.opengl.GL11;
8 |
9 | public class HumanoidMob extends Mob {
10 |
11 | public static final long serialVersionUID = 0L;
12 | public boolean helmet = Math.random() < 0.20000000298023224D;
13 | public boolean armor = Math.random() < 0.20000000298023224D;
14 |
15 |
16 | public HumanoidMob(Level var1, float var2, float var3, float var4) {
17 | super(var1);
18 | this.modelName = "humanoid";
19 | this.setPos(var2, var3, var4);
20 | }
21 |
22 | public void renderModel(TextureManager var1, float var2, float var3, float var4, float var5, float var6, float var7) {
23 | super.renderModel(var1, var2, var3, var4, var5, var6, var7);
24 | Model var9 = modelCache.getModel(this.modelName);
25 | GL11.glEnable(3008);
26 | if(this.allowAlpha) {
27 | GL11.glEnable(2884);
28 | }
29 |
30 | if(this.hasHair) {
31 | GL11.glDisable(2884);
32 | HumanoidModel var10 = null;
33 | (var10 = (HumanoidModel)var9).headwear.yaw = var10.head.yaw;
34 | var10.headwear.pitch = var10.head.pitch;
35 | var10.headwear.render(var7);
36 | GL11.glEnable(2884);
37 | }
38 |
39 | if(this.armor || this.helmet) {
40 | GL11.glBindTexture(3553, var1.load("/armor/plate.png"));
41 | GL11.glDisable(2884);
42 | HumanoidModel var8;
43 | (var8 = (HumanoidModel)modelCache.getModel("humanoid.armor")).head.render = this.helmet;
44 | var8.body.render = this.armor;
45 | var8.rightArm.render = this.armor;
46 | var8.leftArm.render = this.armor;
47 | var8.rightLeg.render = false;
48 | var8.leftLeg.render = false;
49 | HumanoidModel var11 = (HumanoidModel)var9;
50 | var8.head.yaw = var11.head.yaw;
51 | var8.head.pitch = var11.head.pitch;
52 | var8.rightArm.pitch = var11.rightArm.pitch;
53 | var8.rightArm.roll = var11.rightArm.roll;
54 | var8.leftArm.pitch = var11.leftArm.pitch;
55 | var8.leftArm.roll = var11.leftArm.roll;
56 | var8.rightLeg.pitch = var11.rightLeg.pitch;
57 | var8.leftLeg.pitch = var11.leftLeg.pitch;
58 | var8.head.render(var7);
59 | var8.body.render(var7);
60 | var8.rightArm.render(var7);
61 | var8.leftArm.render(var7);
62 | var8.rightLeg.render(var7);
63 | var8.leftLeg.render(var7);
64 | GL11.glEnable(2884);
65 | }
66 |
67 | GL11.glDisable(3008);
68 | }
69 | }
70 |
--------------------------------------------------------------------------------
/src/main/java/com/mojang/minecraft/mob/Pig.java:
--------------------------------------------------------------------------------
1 | package com.mojang.minecraft.mob;
2 |
3 | import com.mojang.minecraft.Entity;
4 | import com.mojang.minecraft.item.Item;
5 | import com.mojang.minecraft.level.Level;
6 | import com.mojang.minecraft.level.tile.Block;
7 |
8 | public class Pig extends QuadrupedMob {
9 |
10 | public static final long serialVersionUID = 0L;
11 |
12 |
13 | public Pig(Level var1, float var2, float var3, float var4) {
14 | super(var1, var2, var3, var4);
15 | this.heightOffset = 1.72F;
16 | this.modelName = "pig";
17 | this.textureName = "/mob/pig.png";
18 | }
19 |
20 | public void die(Entity var1) {
21 | if(var1 != null) {
22 | var1.awardKillScore(this, 10);
23 | }
24 |
25 | int var2 = (int)(Math.random() + Math.random() + 1.0D);
26 |
27 | for(int var3 = 0; var3 < var2; ++var3) {
28 | this.level.addEntity(new Item(this.level, this.x, this.y, this.z, Block.BROWN_MUSHROOM.id));
29 | }
30 |
31 | super.die(var1);
32 | }
33 | }
34 |
--------------------------------------------------------------------------------
/src/main/java/com/mojang/minecraft/mob/QuadrupedMob.java:
--------------------------------------------------------------------------------
1 | package com.mojang.minecraft.mob;
2 |
3 | import com.mojang.minecraft.level.Level;
4 |
5 | public class QuadrupedMob extends Mob {
6 |
7 | public static final long serialVersionUID = 0L;
8 |
9 |
10 | public QuadrupedMob(Level var1, float var2, float var3, float var4) {
11 | super(var1);
12 | this.setSize(1.4F, 1.2F);
13 | this.setPos(var2, var3, var4);
14 | this.modelName = "pig";
15 | }
16 | }
17 |
--------------------------------------------------------------------------------
/src/main/java/com/mojang/minecraft/mob/Sheep$1.java:
--------------------------------------------------------------------------------
1 | package com.mojang.minecraft.mob;
2 |
3 | import com.mojang.minecraft.level.tile.Block;
4 | import com.mojang.minecraft.mob.ai.BasicAI;
5 | import com.mojang.util.MathHelper;
6 |
7 | final class Sheep$1 extends BasicAI {
8 |
9 | private static final long serialVersionUID = 1L;
10 | // $FF: synthetic field
11 | final Sheep sheep;
12 |
13 |
14 | Sheep$1(Sheep var1) {
15 | this.sheep = var1;
16 | }
17 |
18 | protected final void update() {
19 | float var1 = MathHelper.sin(this.sheep.yRot * 3.1415927F / 180.0F);
20 | float var2 = MathHelper.cos(this.sheep.yRot * 3.1415927F / 180.0F);
21 | var1 = -0.7F * var1;
22 | var2 = 0.7F * var2;
23 | int var4 = (int)(this.mob.x + var1);
24 | int var3 = (int)(this.mob.y - 2.0F);
25 | int var5 = (int)(this.mob.z + var2);
26 | if(this.sheep.grazing) {
27 | if(this.level.getTile(var4, var3, var5) != Block.GRASS.id) {
28 | this.sheep.grazing = false;
29 | } else {
30 | if(++this.sheep.grazingTime == 60) {
31 | this.level.setTile(var4, var3, var5, Block.DIRT.id);
32 | if(this.random.nextInt(5) == 0) {
33 | this.sheep.hasFur = true;
34 | }
35 | }
36 |
37 | this.xxa = 0.0F;
38 | this.yya = 0.0F;
39 | this.mob.xRot = (float)(40 + this.sheep.grazingTime / 2 % 2 * 10);
40 | }
41 | } else {
42 | if(this.level.getTile(var4, var3, var5) == Block.GRASS.id) {
43 | this.sheep.grazing = true;
44 | this.sheep.grazingTime = 0;
45 | }
46 |
47 | super.update();
48 | }
49 | }
50 | }
51 |
--------------------------------------------------------------------------------
/src/main/java/com/mojang/minecraft/mob/Skeleton$1.java:
--------------------------------------------------------------------------------
1 | package com.mojang.minecraft.mob;
2 |
3 | import com.mojang.minecraft.level.Level;
4 | import com.mojang.minecraft.mob.ai.BasicAttackAI;
5 |
6 | final class Skeleton$1 extends BasicAttackAI {
7 |
8 | public static final long serialVersionUID = 0L;
9 | // $FF: synthetic field
10 | final Skeleton parent;
11 |
12 |
13 | Skeleton$1(Skeleton var1) {
14 | this.parent = var1;
15 | }
16 |
17 | public final void tick(Level var1, Mob var2) {
18 | super.tick(var1, var2);
19 | if(var2.health > 0 && this.random.nextInt(30) == 0 && this.attackTarget != null) {
20 | this.parent.shootArrow(var1);
21 | }
22 |
23 | }
24 |
25 | public final void beforeRemove() {
26 | Skeleton.shootRandomArrow(this.parent);
27 | }
28 | }
29 |
--------------------------------------------------------------------------------
/src/main/java/com/mojang/minecraft/mob/Skeleton.java:
--------------------------------------------------------------------------------
1 | package com.mojang.minecraft.mob;
2 |
3 | import com.mojang.minecraft.item.Arrow;
4 | import com.mojang.minecraft.level.Level;
5 |
6 | public class Skeleton extends Zombie {
7 |
8 | public static final long serialVersionUID = 0L;
9 |
10 |
11 | public Skeleton(Level var1, float var2, float var3, float var4) {
12 | super(var1, var2, var3, var4);
13 | this.modelName = "skeleton";
14 | this.textureName = "/mob/skeleton.png";
15 | Skeleton$1 var5 = new Skeleton$1(this);
16 | this.deathScore = 120;
17 | var5.runSpeed = 0.3F;
18 | var5.damage = 8;
19 | this.ai = var5;
20 | }
21 |
22 | public void shootArrow(Level var1) {
23 | var1.addEntity(new Arrow(var1, this, this.x, this.y, this.z, this.yRot + 180.0F + (float)(Math.random() * 45.0D - 22.5D), this.xRot - (float)(Math.random() * 45.0D - 10.0D), 1.0F));
24 | }
25 |
26 | // $FF: synthetic method
27 | static void shootRandomArrow(Skeleton var0) {
28 | var0 = var0;
29 | int var1 = (int)((Math.random() + Math.random()) * 3.0D + 4.0D);
30 |
31 | for(int var2 = 0; var2 < var1; ++var2) {
32 | var0.level.addEntity(new Arrow(var0.level, var0.level.getPlayer(), var0.x, var0.y - 0.2F, var0.z, (float)Math.random() * 360.0F, -((float)Math.random()) * 60.0F, 0.4F));
33 | }
34 |
35 | }
36 | }
37 |
--------------------------------------------------------------------------------
/src/main/java/com/mojang/minecraft/mob/Spider.java:
--------------------------------------------------------------------------------
1 | package com.mojang.minecraft.mob;
2 |
3 | import com.mojang.minecraft.level.Level;
4 | import com.mojang.minecraft.mob.ai.JumpAttackAI;
5 |
6 | public class Spider extends QuadrupedMob {
7 |
8 | public static final long serialVersionUID = 0L;
9 |
10 |
11 | public Spider(Level var1, float var2, float var3, float var4) {
12 | super(var1, var2, var3, var4);
13 | this.heightOffset = 0.72F;
14 | this.modelName = "spider";
15 | this.textureName = "/mob/spider.png";
16 | this.setSize(1.4F, 0.9F);
17 | this.setPos(var2, var3, var4);
18 | this.deathScore = 105;
19 | this.bobStrength = 0.0F;
20 | this.ai = new JumpAttackAI();
21 | }
22 | }
23 |
--------------------------------------------------------------------------------
/src/main/java/com/mojang/minecraft/mob/Zombie.java:
--------------------------------------------------------------------------------
1 | package com.mojang.minecraft.mob;
2 |
3 | import com.mojang.minecraft.level.Level;
4 | import com.mojang.minecraft.mob.ai.BasicAttackAI;
5 |
6 | public class Zombie extends HumanoidMob {
7 |
8 | public static final long serialVersionUID = 0L;
9 |
10 |
11 | public Zombie(Level var1, float var2, float var3, float var4) {
12 | super(var1, var2, var3, var4);
13 | this.modelName = "zombie";
14 | this.textureName = "/mob/zombie.png";
15 | this.heightOffset = 1.62F;
16 | BasicAttackAI var5 = new BasicAttackAI();
17 | this.deathScore = 80;
18 | var5.defaultLookAngle = 30;
19 | var5.runSpeed = 1.0F;
20 | this.ai = var5;
21 | }
22 | }
23 |
--------------------------------------------------------------------------------
/src/main/java/com/mojang/minecraft/mob/ai/AI.java:
--------------------------------------------------------------------------------
1 | package com.mojang.minecraft.mob.ai;
2 |
3 | import com.mojang.minecraft.Entity;
4 | import com.mojang.minecraft.level.Level;
5 | import com.mojang.minecraft.mob.Mob;
6 |
7 | import java.io.Serializable;
8 |
9 | public abstract class AI implements Serializable {
10 |
11 | public static final long serialVersionUID = 0L;
12 | public int defaultLookAngle = 0;
13 |
14 |
15 | public void tick(Level var1, Mob var2) {}
16 |
17 | public void beforeRemove() {}
18 |
19 | public void hurt(Entity var1, int var2) {}
20 | }
21 |
--------------------------------------------------------------------------------
/src/main/java/com/mojang/minecraft/mob/ai/BasicAI.java:
--------------------------------------------------------------------------------
1 | package com.mojang.minecraft.mob.ai;
2 |
3 | import com.mojang.minecraft.Entity;
4 | import com.mojang.minecraft.level.Level;
5 | import com.mojang.minecraft.mob.Mob;
6 |
7 | import java.util.List;
8 | import java.util.Random;
9 |
10 | public class BasicAI extends AI {
11 |
12 | public static final long serialVersionUID = 0L;
13 | public Random random = new Random();
14 | public float xxa;
15 | public float yya;
16 | protected float yRotA;
17 | public Level level;
18 | public Mob mob;
19 | public boolean jumping = false;
20 | protected int attackDelay = 0;
21 | public float runSpeed = 0.7F;
22 | protected int noActionTime = 0;
23 | public Entity attackTarget = null;
24 |
25 | public boolean running = false;
26 |
27 | public void tick(Level var1, Mob var2) {
28 | ++this.noActionTime;
29 | Entity var3;
30 | if(this.noActionTime > 600 && this.random.nextInt(800) == 0 && (var3 = var1.getPlayer()) != null) {
31 | float var4 = var3.x - var2.x;
32 | float var5 = var3.y - var2.y;
33 | float var6 = var3.z - var2.z;
34 | if(var4 * var4 + var5 * var5 + var6 * var6 < 1024.0F) {
35 | this.noActionTime = 0;
36 | } else {
37 | var2.remove();
38 | }
39 | }
40 |
41 | this.level = var1;
42 | this.mob = var2;
43 | if(this.attackDelay > 0) {
44 | --this.attackDelay;
45 | }
46 |
47 | if(var2.health <= 0) {
48 | this.jumping = false;
49 | this.xxa = 0.0F;
50 | this.yya = 0.0F;
51 | this.yRotA = 0.0F;
52 | } else {
53 | this.update();
54 | }
55 |
56 | boolean var7 = var2.isInWater();
57 | boolean var9 = var2.isInLava();
58 | if(this.jumping) {
59 | if(var7) {
60 | var2.yd += 0.04F;
61 | } else if(var9) {
62 | var2.yd += 0.04F;
63 | } else if(var2.onGround) {
64 | this.jumpFromGround();
65 | }
66 | }
67 |
68 | this.xxa *= 0.98F;
69 | this.yya *= 0.98F;
70 | this.yRotA *= 0.9F;
71 | var2.travel(this.xxa, this.yya);
72 | List var11;
73 | if((var11 = var1.findEntities(var2, var2.bb.grow(0.2F, 0.0F, 0.2F))) != null && var11.size() > 0) {
74 | for(int var8 = 0; var8 < var11.size(); ++var8) {
75 | Entity var10;
76 | if((var10 = (Entity)var11.get(var8)).isPushable()) {
77 | var10.push(var2);
78 | }
79 | }
80 | }
81 |
82 | }
83 |
84 | protected void jumpFromGround() {
85 | this.mob.yd = 0.42F;
86 | }
87 |
88 | protected void update() {
89 | if(this.random.nextFloat() < 0.07F) {
90 | this.xxa = (this.random.nextFloat() - 0.5F) * this.runSpeed;
91 | this.yya = this.random.nextFloat() * this.runSpeed;
92 | }
93 |
94 | this.jumping = this.random.nextFloat() < 0.01F;
95 | if(this.random.nextFloat() < 0.04F) {
96 | this.yRotA = (this.random.nextFloat() - 0.5F) * 60.0F;
97 | }
98 |
99 | this.mob.yRot += this.yRotA;
100 | this.mob.xRot = (float)this.defaultLookAngle;
101 | if(this.attackTarget != null) {
102 | this.yya = this.runSpeed;
103 | this.jumping = this.random.nextFloat() < 0.04F;
104 | }
105 |
106 | boolean var1 = this.mob.isInWater();
107 | boolean var2 = this.mob.isInLava();
108 | if(var1 || var2) {
109 | this.jumping = this.random.nextFloat() < 0.8F;
110 | }
111 |
112 | }
113 |
114 | public void beforeRemove() {}
115 |
116 | public void hurt(Entity var1, int var2) {
117 | super.hurt(var1, var2);
118 | this.noActionTime = 0;
119 | }
120 | }
121 |
--------------------------------------------------------------------------------
/src/main/java/com/mojang/minecraft/mob/ai/BasicAttackAI.java:
--------------------------------------------------------------------------------
1 | package com.mojang.minecraft.mob.ai;
2 |
3 | import com.mojang.minecraft.Entity;
4 | import com.mojang.minecraft.item.Arrow;
5 | import com.mojang.minecraft.model.Vec3D;
6 | import com.mojang.util.MathHelper;
7 |
8 | public class BasicAttackAI extends BasicAI {
9 |
10 | public static final long serialVersionUID = 0L;
11 | public int damage = 6;
12 |
13 |
14 | protected void update() {
15 | super.update();
16 | if(this.mob.health > 0) {
17 | this.doAttack();
18 | }
19 |
20 | }
21 |
22 | protected void doAttack() {
23 | Entity var1 = this.level.getPlayer();
24 | float var2 = 16.0F;
25 | if(this.attackTarget != null && this.attackTarget.removed) {
26 | this.attackTarget = null;
27 | }
28 |
29 | float var3;
30 | float var4;
31 | float var5;
32 | if(var1 != null && this.attackTarget == null) {
33 | var3 = var1.x - this.mob.x;
34 | var4 = var1.y - this.mob.y;
35 | var5 = var1.z - this.mob.z;
36 | if(var3 * var3 + var4 * var4 + var5 * var5 < var2 * var2) {
37 | this.attackTarget = var1;
38 | }
39 | }
40 |
41 | if(this.attackTarget != null) {
42 | var3 = this.attackTarget.x - this.mob.x;
43 | var4 = this.attackTarget.y - this.mob.y;
44 | var5 = this.attackTarget.z - this.mob.z;
45 | float var6;
46 | if((var6 = var3 * var3 + var4 * var4 + var5 * var5) > var2 * var2 * 2.0F * 2.0F && this.random.nextInt(100) == 0) {
47 | this.attackTarget = null;
48 | }
49 |
50 | if(this.attackTarget != null) {
51 | var6 = MathHelper.sqrt(var6);
52 | this.mob.yRot = (float)(Math.atan2((double)var5, (double)var3) * 180.0D / 3.1415927410125732D) - 90.0F;
53 | this.mob.xRot = -((float)(Math.atan2((double)var4, (double)var6) * 180.0D / 3.1415927410125732D));
54 | if(MathHelper.sqrt(var3 * var3 + var4 * var4 + var5 * var5) < 2.0F && this.attackDelay == 0) {
55 | this.attack(this.attackTarget);
56 | }
57 | }
58 |
59 | }
60 | }
61 |
62 | public boolean attack(Entity var1) {
63 | if(this.level.clip(new Vec3D(this.mob.x, this.mob.y, this.mob.z), new Vec3D(var1.x, var1.y, var1.z)) != null) {
64 | return false;
65 | } else {
66 | this.mob.attackTime = 5;
67 | this.attackDelay = this.random.nextInt(20) + 10;
68 | int var2 = (int)((this.random.nextFloat() + this.random.nextFloat()) / 2.0F * (float)this.damage + 1.0F);
69 | var1.hurt(this.mob, var2);
70 | this.noActionTime = 0;
71 | return true;
72 | }
73 | }
74 |
75 | public void hurt(Entity var1, int var2) {
76 | super.hurt(var1, var2);
77 | if(var1 instanceof Arrow) {
78 | var1 = ((Arrow)var1).getOwner();
79 | }
80 |
81 | if(var1 != null && !var1.getClass().equals(this.mob.getClass())) {
82 | this.attackTarget = var1;
83 | }
84 |
85 | }
86 | }
87 |
--------------------------------------------------------------------------------
/src/main/java/com/mojang/minecraft/mob/ai/JumpAttackAI.java:
--------------------------------------------------------------------------------
1 | package com.mojang.minecraft.mob.ai;
2 |
3 | public class JumpAttackAI extends BasicAttackAI {
4 |
5 | public static final long serialVersionUID = 0L;
6 |
7 |
8 | public JumpAttackAI() {
9 | this.runSpeed *= 0.8F;
10 | }
11 |
12 | protected void jumpFromGround() {
13 | if(this.attackTarget == null) {
14 | super.jumpFromGround();
15 | } else {
16 | this.mob.xd = 0.0F;
17 | this.mob.zd = 0.0F;
18 | this.mob.moveRelative(0.0F, 1.0F, 0.6F);
19 | this.mob.yd = 0.5F;
20 | }
21 | }
22 | }
23 |
--------------------------------------------------------------------------------
/src/main/java/com/mojang/minecraft/model/AnimalModel.java:
--------------------------------------------------------------------------------
1 | package com.mojang.minecraft.model;
2 |
3 | import com.mojang.util.MathHelper;
4 |
5 | public class AnimalModel extends Model {
6 |
7 | public ModelPart head = new ModelPart(0, 0);
8 | public ModelPart body;
9 | public ModelPart leg1;
10 | public ModelPart leg2;
11 | public ModelPart leg3;
12 | public ModelPart leg4;
13 |
14 |
15 | public AnimalModel(int var1, float var2) {
16 | this.head.setBounds(-4.0F, -4.0F, -8.0F, 8, 8, 8, 0.0F);
17 | this.head.setPosition(0.0F, (float)(18 - var1), -6.0F);
18 | this.body = new ModelPart(28, 8);
19 | this.body.setBounds(-5.0F, -10.0F, -7.0F, 10, 16, 8, 0.0F);
20 | this.body.setPosition(0.0F, (float)(17 - var1), 2.0F);
21 | this.leg1 = new ModelPart(0, 16);
22 | this.leg1.setBounds(-2.0F, 0.0F, -2.0F, 4, var1, 4, 0.0F);
23 | this.leg1.setPosition(-3.0F, (float)(24 - var1), 7.0F);
24 | this.leg2 = new ModelPart(0, 16);
25 | this.leg2.setBounds(-2.0F, 0.0F, -2.0F, 4, var1, 4, 0.0F);
26 | this.leg2.setPosition(3.0F, (float)(24 - var1), 7.0F);
27 | this.leg3 = new ModelPart(0, 16);
28 | this.leg3.setBounds(-2.0F, 0.0F, -2.0F, 4, var1, 4, 0.0F);
29 | this.leg3.setPosition(-3.0F, (float)(24 - var1), -5.0F);
30 | this.leg4 = new ModelPart(0, 16);
31 | this.leg4.setBounds(-2.0F, 0.0F, -2.0F, 4, var1, 4, 0.0F);
32 | this.leg4.setPosition(3.0F, (float)(24 - var1), -5.0F);
33 | }
34 |
35 | public final void render(float var1, float var2, float var3, float var4, float var5, float var6) {
36 | this.head.yaw = var4 / 57.295776F;
37 | this.head.pitch = var5 / 57.295776F;
38 | this.body.pitch = 1.5707964F;
39 | this.leg1.pitch = MathHelper.cos(var1 * 0.6662F) * 1.4F * var2;
40 | this.leg2.pitch = MathHelper.cos(var1 * 0.6662F + 3.1415927F) * 1.4F * var2;
41 | this.leg3.pitch = MathHelper.cos(var1 * 0.6662F + 3.1415927F) * 1.4F * var2;
42 | this.leg4.pitch = MathHelper.cos(var1 * 0.6662F) * 1.4F * var2;
43 | this.head.render(var6);
44 | this.body.render(var6);
45 | this.leg1.render(var6);
46 | this.leg2.render(var6);
47 | this.leg3.render(var6);
48 | this.leg4.render(var6);
49 | }
50 | }
51 |
--------------------------------------------------------------------------------
/src/main/java/com/mojang/minecraft/model/CreeperModel.java:
--------------------------------------------------------------------------------
1 | package com.mojang.minecraft.model;
2 |
3 | import com.mojang.util.MathHelper;
4 |
5 | public final class CreeperModel extends Model {
6 |
7 | private ModelPart head = new ModelPart(0, 0);
8 | private ModelPart unused;
9 | private ModelPart body;
10 | private ModelPart leg1;
11 | private ModelPart leg2;
12 | private ModelPart leg3;
13 | private ModelPart leg4;
14 |
15 |
16 | public CreeperModel() {
17 | this.head.setBounds(-4.0F, -8.0F, -4.0F, 8, 8, 8, 0.0F);
18 | this.unused = new ModelPart(32, 0);
19 | this.unused.setBounds(-4.0F, -8.0F, -4.0F, 8, 8, 8, 0.0F + 0.5F);
20 | this.body = new ModelPart(16, 16);
21 | this.body.setBounds(-4.0F, 0.0F, -2.0F, 8, 12, 4, 0.0F);
22 | this.leg1 = new ModelPart(0, 16);
23 | this.leg1.setBounds(-2.0F, 0.0F, -2.0F, 4, 6, 4, 0.0F);
24 | this.leg1.setPosition(-2.0F, 12.0F, 4.0F);
25 | this.leg2 = new ModelPart(0, 16);
26 | this.leg2.setBounds(-2.0F, 0.0F, -2.0F, 4, 6, 4, 0.0F);
27 | this.leg2.setPosition(2.0F, 12.0F, 4.0F);
28 | this.leg3 = new ModelPart(0, 16);
29 | this.leg3.setBounds(-2.0F, 0.0F, -2.0F, 4, 6, 4, 0.0F);
30 | this.leg3.setPosition(-2.0F, 12.0F, -4.0F);
31 | this.leg4 = new ModelPart(0, 16);
32 | this.leg4.setBounds(-2.0F, 0.0F, -2.0F, 4, 6, 4, 0.0F);
33 | this.leg4.setPosition(2.0F, 12.0F, -4.0F);
34 | }
35 |
36 | public final void render(float var1, float var2, float var3, float var4, float var5, float var6) {
37 | this.head.yaw = var4 / 57.295776F;
38 | this.head.pitch = var5 / 57.295776F;
39 | this.leg1.pitch = MathHelper.cos(var1 * 0.6662F) * 1.4F * var2;
40 | this.leg2.pitch = MathHelper.cos(var1 * 0.6662F + 3.1415927F) * 1.4F * var2;
41 | this.leg3.pitch = MathHelper.cos(var1 * 0.6662F + 3.1415927F) * 1.4F * var2;
42 | this.leg4.pitch = MathHelper.cos(var1 * 0.6662F) * 1.4F * var2;
43 | this.head.render(var6);
44 | this.body.render(var6);
45 | this.leg1.render(var6);
46 | this.leg2.render(var6);
47 | this.leg3.render(var6);
48 | this.leg4.render(var6);
49 | }
50 | }
51 |
--------------------------------------------------------------------------------
/src/main/java/com/mojang/minecraft/model/HumanoidModel.java:
--------------------------------------------------------------------------------
1 | package com.mojang.minecraft.model;
2 |
3 | import com.mojang.util.MathHelper;
4 |
5 | public class HumanoidModel extends Model {
6 |
7 | public ModelPart head;
8 | public ModelPart headwear;
9 | public ModelPart body;
10 | public ModelPart rightArm;
11 | public ModelPart leftArm;
12 | public ModelPart rightLeg;
13 | public ModelPart leftLeg;
14 |
15 |
16 | public HumanoidModel() {
17 | this(0.0F);
18 | }
19 |
20 | public HumanoidModel(float var1) {
21 | this.head = new ModelPart(0, 0);
22 | this.head.setBounds(-4.0F, -8.0F, -4.0F, 8, 8, 8, var1);
23 | this.headwear = new ModelPart(32, 0);
24 | this.headwear.setBounds(-4.0F, -8.0F, -4.0F, 8, 8, 8, var1 + 0.5F);
25 | this.body = new ModelPart(16, 16);
26 | this.body.setBounds(-4.0F, 0.0F, -2.0F, 8, 12, 4, var1);
27 | this.rightArm = new ModelPart(40, 16);
28 | this.rightArm.setBounds(-3.0F, -2.0F, -2.0F, 4, 12, 4, var1);
29 | this.rightArm.setPosition(-5.0F, 2.0F, 0.0F);
30 | this.leftArm = new ModelPart(40, 16);
31 | this.leftArm.mirror = true;
32 | this.leftArm.setBounds(-1.0F, -2.0F, -2.0F, 4, 12, 4, var1);
33 | this.leftArm.setPosition(5.0F, 2.0F, 0.0F);
34 | this.rightLeg = new ModelPart(0, 16);
35 | this.rightLeg.setBounds(-2.0F, 0.0F, -2.0F, 4, 12, 4, var1);
36 | this.rightLeg.setPosition(-2.0F, 12.0F, 0.0F);
37 | this.leftLeg = new ModelPart(0, 16);
38 | this.leftLeg.mirror = true;
39 | this.leftLeg.setBounds(-2.0F, 0.0F, -2.0F, 4, 12, 4, var1);
40 | this.leftLeg.setPosition(2.0F, 12.0F, 0.0F);
41 | }
42 |
43 | public final void render(float var1, float var2, float var3, float var4, float var5, float var6) {
44 | this.setRotationAngles(var1, var2, var3, var4, var5, var6);
45 | this.head.render(var6);
46 | this.body.render(var6);
47 | this.rightArm.render(var6);
48 | this.leftArm.render(var6);
49 | this.rightLeg.render(var6);
50 | this.leftLeg.render(var6);
51 | }
52 |
53 | public void setRotationAngles(float var1, float var2, float var3, float var4, float var5, float var6) {
54 | this.head.yaw = var4 / 57.295776F;
55 | this.head.pitch = var5 / 57.295776F;
56 | this.rightArm.pitch = MathHelper.cos(var1 * 0.6662F + 3.1415927F) * 2.0F * var2;
57 | this.rightArm.roll = (MathHelper.cos(var1 * 0.2312F) + 1.0F) * var2;
58 | this.leftArm.pitch = MathHelper.cos(var1 * 0.6662F) * 2.0F * var2;
59 | this.leftArm.roll = (MathHelper.cos(var1 * 0.2812F) - 1.0F) * var2;
60 | this.rightLeg.pitch = MathHelper.cos(var1 * 0.6662F) * 1.4F * var2;
61 | this.leftLeg.pitch = MathHelper.cos(var1 * 0.6662F + 3.1415927F) * 1.4F * var2;
62 | this.rightArm.roll += MathHelper.cos(var3 * 0.09F) * 0.05F + 0.05F;
63 | this.leftArm.roll -= MathHelper.cos(var3 * 0.09F) * 0.05F + 0.05F;
64 | this.rightArm.pitch += MathHelper.sin(var3 * 0.067F) * 0.05F;
65 | this.leftArm.pitch -= MathHelper.sin(var3 * 0.067F) * 0.05F;
66 | }
67 | }
68 |
--------------------------------------------------------------------------------
/src/main/java/com/mojang/minecraft/model/Model.java:
--------------------------------------------------------------------------------
1 | package com.mojang.minecraft.model;
2 |
3 |
4 | public abstract class Model {
5 |
6 | public float attackOffset;
7 |
8 |
9 | public void render(float var1, float var2, float var3, float var4, float var5, float var6) {}
10 | }
11 |
--------------------------------------------------------------------------------
/src/main/java/com/mojang/minecraft/model/ModelManager.java:
--------------------------------------------------------------------------------
1 | package com.mojang.minecraft.model;
2 |
3 | public final class ModelManager {
4 |
5 | private HumanoidModel human = new HumanoidModel(0.0F);
6 | private HumanoidModel armoredHuman = new HumanoidModel(1.0F);
7 | private CreeperModel creeper = new CreeperModel();
8 | private SkeletonModel skeleton = new SkeletonModel();
9 | private ZombieModel zombie = new ZombieModel();
10 | private AnimalModel pig = new PigModel();
11 | private AnimalModel sheep = new SheepModel();
12 | private SpiderModel spider = new SpiderModel();
13 | private SheepFurModel sheepFur = new SheepFurModel();
14 |
15 |
16 | public final Model getModel(String var1) {
17 | return (Model)(var1.equals("humanoid")?this.human:(var1.equals("humanoid.armor")?this.armoredHuman:(var1.equals("creeper")?this.creeper:(var1.equals("skeleton")?this.skeleton:(var1.equals("zombie")?this.zombie:(var1.equals("pig")?this.pig:(var1.equals("sheep")?this.sheep:(var1.equals("spider")?this.spider:(var1.equals("sheep.fur")?this.sheepFur:null)))))))));
18 | }
19 | }
20 |
--------------------------------------------------------------------------------
/src/main/java/com/mojang/minecraft/model/PigModel.java:
--------------------------------------------------------------------------------
1 | package com.mojang.minecraft.model;
2 |
3 | public final class PigModel extends AnimalModel {
4 |
5 | public PigModel() {
6 | super(6, 0.0F);
7 | }
8 | }
9 |
--------------------------------------------------------------------------------
/src/main/java/com/mojang/minecraft/model/SheepFurModel.java:
--------------------------------------------------------------------------------
1 | package com.mojang.minecraft.model;
2 |
3 | public final class SheepFurModel extends AnimalModel {
4 |
5 | public SheepFurModel() {
6 | super(12, 0.0F);
7 | this.head = new ModelPart(0, 0);
8 | this.head.setBounds(-3.0F, -4.0F, -4.0F, 6, 6, 6, 0.6F);
9 | this.head.setPosition(0.0F, 6.0F, -8.0F);
10 | this.body = new ModelPart(28, 8);
11 | this.body.setBounds(-4.0F, -10.0F, -7.0F, 8, 16, 6, 1.75F);
12 | this.body.setPosition(0.0F, 5.0F, 2.0F);
13 | float var1 = 0.5F;
14 | this.leg1 = new ModelPart(0, 16);
15 | this.leg1.setBounds(-2.0F, 0.0F, -2.0F, 4, 6, 4, var1);
16 | this.leg1.setPosition(-3.0F, 12.0F, 7.0F);
17 | this.leg2 = new ModelPart(0, 16);
18 | this.leg2.setBounds(-2.0F, 0.0F, -2.0F, 4, 6, 4, var1);
19 | this.leg2.setPosition(3.0F, 12.0F, 7.0F);
20 | this.leg3 = new ModelPart(0, 16);
21 | this.leg3.setBounds(-2.0F, 0.0F, -2.0F, 4, 6, 4, var1);
22 | this.leg3.setPosition(-3.0F, 12.0F, -5.0F);
23 | this.leg4 = new ModelPart(0, 16);
24 | this.leg4.setBounds(-2.0F, 0.0F, -2.0F, 4, 6, 4, var1);
25 | this.leg4.setPosition(3.0F, 12.0F, -5.0F);
26 | }
27 | }
28 |
--------------------------------------------------------------------------------
/src/main/java/com/mojang/minecraft/model/SheepModel.java:
--------------------------------------------------------------------------------
1 | package com.mojang.minecraft.model;
2 |
3 | public final class SheepModel extends AnimalModel {
4 |
5 | public SheepModel() {
6 | super(12, 0.0F);
7 | this.head = new ModelPart(0, 0);
8 | this.head.setBounds(-3.0F, -4.0F, -6.0F, 6, 6, 8, 0.0F);
9 | this.head.setPosition(0.0F, 6.0F, -8.0F);
10 | this.body = new ModelPart(28, 8);
11 | this.body.setBounds(-4.0F, -10.0F, -7.0F, 8, 16, 6, 0.0F);
12 | this.body.setPosition(0.0F, 5.0F, 2.0F);
13 | }
14 | }
15 |
--------------------------------------------------------------------------------
/src/main/java/com/mojang/minecraft/model/SkeletonModel.java:
--------------------------------------------------------------------------------
1 | package com.mojang.minecraft.model;
2 |
3 | public final class SkeletonModel extends ZombieModel {
4 |
5 | public SkeletonModel() {
6 | this.rightArm = new ModelPart(40, 16);
7 | this.rightArm.setBounds(-1.0F, -2.0F, -1.0F, 2, 12, 2, 0.0F);
8 | this.rightArm.setPosition(-5.0F, 2.0F, 0.0F);
9 | this.leftArm = new ModelPart(40, 16);
10 | this.leftArm.mirror = true;
11 | this.leftArm.setBounds(-1.0F, -2.0F, -1.0F, 2, 12, 2, 0.0F);
12 | this.leftArm.setPosition(5.0F, 2.0F, 0.0F);
13 | this.rightLeg = new ModelPart(0, 16);
14 | this.rightLeg.setBounds(-1.0F, 0.0F, -1.0F, 2, 12, 2, 0.0F);
15 | this.rightLeg.setPosition(-2.0F, 12.0F, 0.0F);
16 | this.leftLeg = new ModelPart(0, 16);
17 | this.leftLeg.mirror = true;
18 | this.leftLeg.setBounds(-1.0F, 0.0F, -1.0F, 2, 12, 2, 0.0F);
19 | this.leftLeg.setPosition(2.0F, 12.0F, 0.0F);
20 | }
21 | }
22 |
--------------------------------------------------------------------------------
/src/main/java/com/mojang/minecraft/model/TexturedQuad.java:
--------------------------------------------------------------------------------
1 | package com.mojang.minecraft.model;
2 |
3 | public final class TexturedQuad {
4 |
5 | public Vertex[] vertices;
6 |
7 |
8 | private TexturedQuad(Vertex[] var1) {
9 | this.vertices = var1;
10 | }
11 |
12 | public TexturedQuad(Vertex[] var1, int var2, int var3, int var4, int var5) {
13 | this(var1);
14 | float var7 = 0.0015625F;
15 | float var6 = 0.003125F;
16 | var1[0] = var1[0].create((float)var4 / 64.0F - var7, (float)var3 / 32.0F + var6);
17 | var1[1] = var1[1].create((float)var2 / 64.0F + var7, (float)var3 / 32.0F + var6);
18 | var1[2] = var1[2].create((float)var2 / 64.0F + var7, (float)var5 / 32.0F - var6);
19 | var1[3] = var1[3].create((float)var4 / 64.0F - var7, (float)var5 / 32.0F - var6);
20 | }
21 |
22 | public TexturedQuad(Vertex[] var1, float var2, float var3, float var4, float var5) {
23 | this(var1);
24 | var1[0] = var1[0].create(var4, var3);
25 | var1[1] = var1[1].create(var2, var3);
26 | var1[2] = var1[2].create(var2, var5);
27 | var1[3] = var1[3].create(var4, var5);
28 | }
29 | }
30 |
--------------------------------------------------------------------------------
/src/main/java/com/mojang/minecraft/model/Vec3D.java:
--------------------------------------------------------------------------------
1 | package com.mojang.minecraft.model;
2 |
3 | import com.mojang.util.MathHelper;
4 |
5 | public final class Vec3D {
6 |
7 | public float x;
8 | public float y;
9 | public float z;
10 |
11 |
12 | public Vec3D(float var1, float var2, float var3) {
13 | this.x = var1;
14 | this.y = var2;
15 | this.z = var3;
16 | }
17 |
18 | public final Vec3D subtract(Vec3D var1) {
19 | return new Vec3D(this.x - var1.x, this.y - var1.y, this.z - var1.z);
20 | }
21 |
22 | public final Vec3D normalize() {
23 | float var1 = MathHelper.sqrt(this.x * this.x + this.y * this.y + this.z * this.z);
24 | return new Vec3D(this.x / var1, this.y / var1, this.z / var1);
25 | }
26 |
27 | public final Vec3D add(float var1, float var2, float var3) {
28 | return new Vec3D(this.x + var1, this.y + var2, this.z + var3);
29 | }
30 |
31 | public final float distance(Vec3D var1) {
32 | float var2 = var1.x - this.x;
33 | float var3 = var1.y - this.y;
34 | float var4 = var1.z - this.z;
35 | return MathHelper.sqrt(var2 * var2 + var3 * var3 + var4 * var4);
36 | }
37 |
38 | public final float distanceSquared(Vec3D var1) {
39 | float var2 = var1.x - this.x;
40 | float var3 = var1.y - this.y;
41 | float var4 = var1.z - this.z;
42 | return var2 * var2 + var3 * var3 + var4 * var4;
43 | }
44 |
45 | public final Vec3D getXIntersection(Vec3D var1, float var2) {
46 | float var3 = var1.x - this.x;
47 | float var4 = var1.y - this.y;
48 | float var5 = var1.z - this.z;
49 | return var3 * var3 < 1.0E-7F?null:((var2 = (var2 - this.x) / var3) >= 0.0F && var2 <= 1.0F?new Vec3D(this.x + var3 * var2, this.y + var4 * var2, this.z + var5 * var2):null);
50 | }
51 |
52 | public final Vec3D getYIntersection(Vec3D var1, float var2) {
53 | float var3 = var1.x - this.x;
54 | float var4 = var1.y - this.y;
55 | float var5 = var1.z - this.z;
56 | return var4 * var4 < 1.0E-7F?null:((var2 = (var2 - this.y) / var4) >= 0.0F && var2 <= 1.0F?new Vec3D(this.x + var3 * var2, this.y + var4 * var2, this.z + var5 * var2):null);
57 | }
58 |
59 | public final Vec3D getZIntersection(Vec3D var1, float var2) {
60 | float var3 = var1.x - this.x;
61 | float var4 = var1.y - this.y;
62 | float var5;
63 | return (var5 = var1.z - this.z) * var5 < 1.0E-7F?null:((var2 = (var2 - this.z) / var5) >= 0.0F && var2 <= 1.0F?new Vec3D(this.x + var3 * var2, this.y + var4 * var2, this.z + var5 * var2):null);
64 | }
65 |
66 | public final String toString() {
67 | return "(" + this.x + ", " + this.y + ", " + this.z + ")";
68 | }
69 | }
70 |
--------------------------------------------------------------------------------
/src/main/java/com/mojang/minecraft/model/Vertex.java:
--------------------------------------------------------------------------------
1 | package com.mojang.minecraft.model;
2 |
3 | public final class Vertex {
4 |
5 | public Vec3D vector;
6 | public float u;
7 | public float v;
8 |
9 |
10 | public Vertex(float var1, float var2, float var3, float var4, float var5) {
11 | this(new Vec3D(var1, var2, var3), var4, var5);
12 | }
13 |
14 | public final Vertex create(float var1, float var2) {
15 | return new Vertex(this, var1, var2);
16 | }
17 |
18 | private Vertex(Vertex var1, float var2, float var3) {
19 | this.vector = var1.vector;
20 | this.u = var2;
21 | this.v = var3;
22 | }
23 |
24 | private Vertex(Vec3D var1, float var2, float var3) {
25 | this.vector = var1;
26 | this.u = var2;
27 | this.v = var3;
28 | }
29 | }
30 |
--------------------------------------------------------------------------------
/src/main/java/com/mojang/minecraft/model/ZombieModel.java:
--------------------------------------------------------------------------------
1 | package com.mojang.minecraft.model;
2 |
3 | import com.mojang.util.MathHelper;
4 |
5 | public class ZombieModel extends HumanoidModel {
6 |
7 | public final void setRotationAngles(float var1, float var2, float var3, float var4, float var5, float var6) {
8 | super.setRotationAngles(var1, var2, var3, var4, var5, var6);
9 | var1 = MathHelper.sin(this.attackOffset * 3.1415927F);
10 | var2 = MathHelper.sin((1.0F - (1.0F - this.attackOffset) * (1.0F - this.attackOffset)) * 3.1415927F);
11 | this.rightArm.roll = 0.0F;
12 | this.leftArm.roll = 0.0F;
13 | this.rightArm.yaw = -(0.1F - var1 * 0.6F);
14 | this.leftArm.yaw = 0.1F - var1 * 0.6F;
15 | this.rightArm.pitch = -1.5707964F;
16 | this.leftArm.pitch = -1.5707964F;
17 | this.rightArm.pitch -= var1 * 1.2F - var2 * 0.4F;
18 | this.leftArm.pitch -= var1 * 1.2F - var2 * 0.4F;
19 | this.rightArm.roll += MathHelper.cos(var3 * 0.09F) * 0.05F + 0.05F;
20 | this.leftArm.roll -= MathHelper.cos(var3 * 0.09F) * 0.05F + 0.05F;
21 | this.rightArm.pitch += MathHelper.sin(var3 * 0.067F) * 0.05F;
22 | this.leftArm.pitch -= MathHelper.sin(var3 * 0.067F) * 0.05F;
23 | }
24 | }
25 |
--------------------------------------------------------------------------------
/src/main/java/com/mojang/minecraft/net/NetworkManager.java:
--------------------------------------------------------------------------------
1 | package com.mojang.minecraft.net;
2 |
3 | import com.mojang.minecraft.Minecraft;
4 | import com.mojang.minecraft.gui.ErrorScreen;
5 | import com.mojang.net.NetworkHandler;
6 | import java.io.ByteArrayOutputStream;
7 | import java.util.ArrayList;
8 | import java.util.HashMap;
9 | import java.util.Iterator;
10 | import java.util.List;
11 |
12 | public class NetworkManager
13 | {
14 | public NetworkManager(Minecraft minecraft, String server, int port, String username, String key)
15 | {
16 | minecraft.online = true;
17 |
18 | this.minecraft = minecraft;
19 |
20 | players = new HashMap();
21 |
22 | new ServerConnectThread(this, server, port, username, key, minecraft).start();
23 | }
24 |
25 | public ByteArrayOutputStream levelData;
26 |
27 | public NetworkHandler netHandler;
28 |
29 | public Minecraft minecraft;
30 |
31 | public boolean successful = false;
32 | public boolean levelLoaded = false;
33 |
34 | public HashMap players;
35 |
36 | public void sendBlockChange(int x, int y, int z, int mode, int block)
37 | {
38 | netHandler.send(PacketType.PLAYER_SET_BLOCK, new Object[] {x, y, z, mode, block});
39 | }
40 |
41 | public void error(Exception e)
42 | {
43 | netHandler.close();
44 |
45 | ErrorScreen errorScreen = new ErrorScreen("Disconnected!", e.getMessage());
46 |
47 | minecraft.setCurrentScreen(errorScreen);
48 |
49 | e.printStackTrace();
50 | }
51 |
52 | public boolean isConnected()
53 | {
54 | return netHandler != null && netHandler.connected;
55 | }
56 |
57 | public List getPlayers()
58 | {
59 | ArrayList list = new ArrayList();
60 |
61 | list.add(minecraft.session.username);
62 |
63 | Iterator playerIterator = this.players.values().iterator();
64 |
65 | while(playerIterator.hasNext())
66 | {
67 | NetworkPlayer networkPlayer = (NetworkPlayer)playerIterator.next();
68 |
69 | list.add(networkPlayer.name);
70 | }
71 |
72 | return list;
73 | }
74 | }
75 |
--------------------------------------------------------------------------------
/src/main/java/com/mojang/minecraft/net/PacketType.java:
--------------------------------------------------------------------------------
1 | package com.mojang.minecraft.net;
2 |
3 | public class PacketType
4 | {
5 | private PacketType(Class ... classes)
6 | {
7 | opcode = (byte)(nextOpcode++);
8 | packets[opcode] = this;
9 | params = new Class[classes.length];
10 |
11 | int length = 0;
12 |
13 | for(int classNumber = 0; classNumber < classes.length; classNumber++)
14 | {
15 | Class class_ = classes[classNumber];
16 |
17 | params[classNumber] = class_;
18 |
19 | if(class_ == Long.TYPE)
20 | {
21 | length += 8;
22 | } else if(class_ == Integer.TYPE) {
23 | length += 4;
24 | } else if(class_ == Short.TYPE) {
25 | length += 2;
26 | } else if(class_ == Byte.TYPE) {
27 | ++length;
28 | } else if(class_ == Float.TYPE) {
29 | length += 4;
30 | } else if(class_ == Double.TYPE) {
31 | length += 8;
32 | } else if(class_ == byte[].class) {
33 | length += 1024;
34 | } else if(class_ == String.class) {
35 | length += 64;
36 | }
37 | }
38 |
39 | this.length = length;
40 | }
41 |
42 | public static final PacketType[] packets = new PacketType[256];
43 |
44 | public static final PacketType IDENTIFICATION = new PacketType(new Class[] {Byte.TYPE, String.class, String.class, Byte.TYPE});
45 | public static final PacketType LEVEL_INIT;
46 | public static final PacketType LEVEL_DATA;
47 | public static final PacketType LEVEL_FINALIZE;
48 | public static final PacketType PLAYER_SET_BLOCK;
49 | public static final PacketType BLOCK_CHANGE;
50 | public static final PacketType SPAWN_PLAYER;
51 | public static final PacketType POSITION_ROTATION;
52 | public static final PacketType POSITION_ROTATION_UPDATE;
53 | public static final PacketType POSITION_UPDATE;
54 | public static final PacketType ROTATION_UPDATE;
55 | public static final PacketType DESPAWN_PLAYER;
56 | public static final PacketType CHAT_MESSAGE;
57 | public static final PacketType DISCONNECT;
58 | public static final PacketType UPDATE_PLAYER_TYPE;
59 |
60 | public int length;
61 | private static int nextOpcode;
62 | public byte opcode;
63 | public Class[] params;
64 |
65 | static
66 | {
67 | new PacketType(new Class[0]);
68 |
69 | LEVEL_INIT = new PacketType(new Class[0]);
70 | LEVEL_DATA = new PacketType(new Class[] {Short.TYPE, byte[].class, Byte.TYPE});
71 | LEVEL_FINALIZE = new PacketType(new Class[] {Short.TYPE, Short.TYPE, Short.TYPE});
72 | PLAYER_SET_BLOCK = new PacketType(new Class[] {Short.TYPE, Short.TYPE, Short.TYPE, Byte.TYPE, Byte.TYPE});
73 | BLOCK_CHANGE = new PacketType(new Class[] {Short.TYPE, Short.TYPE, Short.TYPE, Byte.TYPE});
74 | SPAWN_PLAYER = new PacketType(new Class[] {Byte.TYPE, String.class, Short.TYPE, Short.TYPE, Short.TYPE, Byte.TYPE, Byte.TYPE});
75 | POSITION_ROTATION = new PacketType(new Class[] {Byte.TYPE, Short.TYPE, Short.TYPE, Short.TYPE, Byte.TYPE, Byte.TYPE});
76 | POSITION_ROTATION_UPDATE = new PacketType(new Class[] {Byte.TYPE, Byte.TYPE, Byte.TYPE, Byte.TYPE, Byte.TYPE, Byte.TYPE});
77 | POSITION_UPDATE = new PacketType(new Class[] {Byte.TYPE, Byte.TYPE, Byte.TYPE, Byte.TYPE});
78 | ROTATION_UPDATE = new PacketType(new Class[] {Byte.TYPE, Byte.TYPE, Byte.TYPE});
79 | DESPAWN_PLAYER = new PacketType(new Class[] {Byte.TYPE});
80 | CHAT_MESSAGE = new PacketType(new Class[] {Byte.TYPE, String.class});
81 | DISCONNECT = new PacketType(new Class[] {String.class});
82 | UPDATE_PLAYER_TYPE = new PacketType(new Class[] {Byte.TYPE});
83 |
84 | nextOpcode = 0;
85 | }
86 | }
87 |
--------------------------------------------------------------------------------
/src/main/java/com/mojang/minecraft/net/PositionUpdate.java:
--------------------------------------------------------------------------------
1 | package com.mojang.minecraft.net;
2 |
3 | public class PositionUpdate
4 | {
5 | public PositionUpdate(float x, float y, float z, float yaw, float pitch)
6 | {
7 | this.x = x;
8 | this.y = y;
9 | this.z = z;
10 | this.yaw = yaw;
11 | this.pitch = pitch;
12 |
13 | rotation = true;
14 | position = true;
15 | }
16 |
17 | public PositionUpdate(float x, float y, float z)
18 | {
19 | this.x = x;
20 | this.y = y;
21 | this.z = z;
22 |
23 | position = true;
24 | rotation = false;
25 | }
26 |
27 | public PositionUpdate(float yaw, float pitch)
28 | {
29 | this.yaw = yaw;
30 | this.pitch = pitch;
31 |
32 | rotation = true;
33 | position = false;
34 | }
35 |
36 | public float x;
37 | public float y;
38 | public float z;
39 |
40 | public float yaw;
41 | public float pitch;
42 |
43 | public boolean rotation = false;
44 | public boolean position = false;
45 | }
46 |
--------------------------------------------------------------------------------
/src/main/java/com/mojang/minecraft/net/ServerConnectThread.java:
--------------------------------------------------------------------------------
1 | package com.mojang.minecraft.net;
2 |
3 | import com.oyasunadev.mcraft.client.util.Constants;
4 | import com.mojang.minecraft.Minecraft;
5 | import com.mojang.minecraft.gui.ErrorScreen;
6 | import com.mojang.net.NetworkHandler;
7 |
8 | public class ServerConnectThread extends Thread
9 | {
10 | public ServerConnectThread(NetworkManager networkManager, String server, int port, String username, String key, Minecraft minecraft) {
11 | super();
12 |
13 | netManager = networkManager;
14 |
15 | this.server = server;
16 | this.port = port;
17 |
18 | this.username = username;
19 | this.key = key;
20 |
21 | this.minecraft = minecraft;
22 | }
23 |
24 | @Override
25 | public void run()
26 | {
27 | try {
28 | netManager.netHandler = new NetworkHandler(server, port);
29 | netManager.netHandler.netManager = netManager;
30 |
31 | netManager.netHandler.send(PacketType.IDENTIFICATION, new Object[]{Byte.valueOf(Constants.PROTOCOL_VERSION), this.username, this.key, Integer.valueOf(Constants.CLIENT_TYPE)});
32 |
33 | netManager.successful = true;
34 | } catch (Exception var3) {
35 | minecraft.online = false;
36 |
37 | minecraft.networkManager = null;
38 |
39 | minecraft.setCurrentScreen(new ErrorScreen("Failed to connect", "You failed to connect to the server. It\'s probably down!"));
40 |
41 | netManager.successful = false;
42 | }
43 | }
44 |
45 | private String server;
46 | private int port;
47 |
48 | private String username;
49 | private String key;
50 |
51 | private Minecraft minecraft;
52 |
53 | private NetworkManager netManager;
54 | }
55 |
--------------------------------------------------------------------------------
/src/main/java/com/mojang/minecraft/net/SkinDownloadThread.java:
--------------------------------------------------------------------------------
1 | package com.mojang.minecraft.net;
2 |
3 | import java.net.HttpURLConnection;
4 | import java.net.URL;
5 | import javax.imageio.ImageIO;
6 |
7 | public class SkinDownloadThread extends Thread
8 | {
9 | public SkinDownloadThread(NetworkPlayer networkPlayer)
10 | {
11 | super();
12 |
13 | this.player = networkPlayer;
14 | }
15 |
16 | @Override
17 | public void run()
18 | {
19 | HttpURLConnection connection = null;
20 |
21 | try {
22 | connection = (HttpURLConnection)new URL("http://www.minecraft.net/skin/" + player.name + ".png").openConnection();
23 |
24 | connection.setDoInput(true);
25 | connection.setDoOutput(false);
26 |
27 | connection.connect();
28 |
29 | if(connection.getResponseCode() == 404)
30 | {
31 | return;
32 | }
33 |
34 | player.newTexture = ImageIO.read(connection.getInputStream());
35 | } catch(Exception e) {
36 | e.printStackTrace();
37 | } finally {
38 | if(connection != null)
39 | {
40 | connection.disconnect();
41 | }
42 | }
43 | }
44 |
45 | private NetworkPlayer player;
46 | }
47 |
--------------------------------------------------------------------------------
/src/main/java/com/mojang/minecraft/particle/ParticleManager.java:
--------------------------------------------------------------------------------
1 | package com.mojang.minecraft.particle;
2 |
3 | import com.mojang.minecraft.Entity;
4 | import com.mojang.minecraft.level.Level;
5 | import com.mojang.minecraft.render.TextureManager;
6 | import java.util.ArrayList;
7 | import java.util.List;
8 |
9 | public final class ParticleManager {
10 |
11 | public List[] particles = new List[2];
12 | public TextureManager textureManager;
13 |
14 |
15 | public ParticleManager(Level var1, TextureManager var2) {
16 | if(var1 != null) {
17 | var1.particleEngine = this;
18 | }
19 |
20 | this.textureManager = var2;
21 |
22 | for(int var3 = 0; var3 < 2; ++var3) {
23 | this.particles[var3] = new ArrayList();
24 | }
25 |
26 | }
27 |
28 | public final void spawnParticle(Entity var1) {
29 | Particle var3;
30 | int var2 = (var3 = (Particle)var1).getParticleTexture();
31 | this.particles[var2].add(var3);
32 | }
33 |
34 | public final void tick() {
35 | for(int var1 = 0; var1 < 2; ++var1) {
36 | for(int var2 = 0; var2 < this.particles[var1].size(); ++var2) {
37 | Particle var3;
38 | (var3 = (Particle)this.particles[var1].get(var2)).tick();
39 | if(var3.removed) {
40 | this.particles[var1].remove(var2--);
41 | }
42 | }
43 | }
44 |
45 | }
46 | }
47 |
--------------------------------------------------------------------------------
/src/main/java/com/mojang/minecraft/particle/SmokeParticle.java:
--------------------------------------------------------------------------------
1 | package com.mojang.minecraft.particle;
2 |
3 | import com.mojang.minecraft.level.Level;
4 | import com.mojang.minecraft.render.ShapeRenderer;
5 |
6 | public class SmokeParticle extends Particle {
7 |
8 | private static final long serialVersionUID = 1L;
9 |
10 |
11 | public SmokeParticle(Level var1, float var2, float var3, float var4) {
12 | super(var1, var2, var3, var4, 0.0F, 0.0F, 0.0F);
13 | this.xd *= 0.1F;
14 | this.yd *= 0.1F;
15 | this.zd *= 0.1F;
16 | this.rCol = this.gCol = this.bCol = (float)(Math.random() * 0.30000001192092896D);
17 | this.lifetime = (int)(8.0D / (Math.random() * 0.8D + 0.2D));
18 | this.noPhysics = true;
19 | }
20 |
21 | public void render(ShapeRenderer var1, float var2, float var3, float var4, float var5, float var6, float var7) {
22 | super.render(var1, var2, var3, var4, var5, var6, var7);
23 | }
24 |
25 | public void tick() {
26 | this.xo = this.x;
27 | this.yo = this.y;
28 | this.zo = this.z;
29 | if(this.age++ >= this.lifetime) {
30 | this.remove();
31 | }
32 |
33 | this.tex = 7 - (this.age << 3) / this.lifetime;
34 | this.yd = (float)((double)this.yd + 0.004D);
35 | this.move(this.xd, this.yd, this.zd);
36 | this.xd *= 0.96F;
37 | this.yd *= 0.96F;
38 | this.zd *= 0.96F;
39 | if(this.onGround) {
40 | this.xd *= 0.7F;
41 | this.zd *= 0.7F;
42 | }
43 |
44 | }
45 | }
46 |
--------------------------------------------------------------------------------
/src/main/java/com/mojang/minecraft/particle/TerrainParticle.java:
--------------------------------------------------------------------------------
1 | package com.mojang.minecraft.particle;
2 |
3 | import com.mojang.minecraft.level.Level;
4 | import com.mojang.minecraft.level.tile.Block;
5 | import com.mojang.minecraft.render.ShapeRenderer;
6 |
7 | public class TerrainParticle extends Particle {
8 |
9 | private static final long serialVersionUID = 1L;
10 |
11 |
12 | public TerrainParticle(Level var1, float var2, float var3, float var4, float var5, float var6, float var7, Block var8) {
13 | super(var1, var2, var3, var4, var5, var6, var7);
14 | this.tex = var8.textureId;
15 | this.gravity = var8.particleGravity;
16 | this.rCol = this.gCol = this.bCol = 0.6F;
17 | }
18 |
19 | public int getParticleTexture() {
20 | return 1;
21 | }
22 |
23 | public void render(ShapeRenderer var1, float var2, float var3, float var4, float var5, float var6, float var7) {
24 | float var8;
25 | float var9 = (var8 = ((float)(this.tex % 16) + this.uo / 4.0F) / 16.0F) + 0.015609375F;
26 | float var10;
27 | float var11 = (var10 = ((float)(this.tex / 16) + this.vo / 4.0F) / 16.0F) + 0.015609375F;
28 | float var12 = 0.1F * this.size;
29 | float var13 = this.xo + (this.x - this.xo) * var2;
30 | float var14 = this.yo + (this.y - this.yo) * var2;
31 | float var15 = this.zo + (this.z - this.zo) * var2;
32 | var2 = this.getBrightness(var2);
33 | var1.color(var2 * this.rCol, var2 * this.gCol, var2 * this.bCol);
34 | var1.vertexUV(var13 - var3 * var12 - var6 * var12, var14 - var4 * var12, var15 - var5 * var12 - var7 * var12, var8, var11);
35 | var1.vertexUV(var13 - var3 * var12 + var6 * var12, var14 + var4 * var12, var15 - var5 * var12 + var7 * var12, var8, var10);
36 | var1.vertexUV(var13 + var3 * var12 + var6 * var12, var14 + var4 * var12, var15 + var5 * var12 + var7 * var12, var9, var10);
37 | var1.vertexUV(var13 + var3 * var12 - var6 * var12, var14 - var4 * var12, var15 + var5 * var12 - var7 * var12, var9, var11);
38 | }
39 | }
40 |
--------------------------------------------------------------------------------
/src/main/java/com/mojang/minecraft/particle/WaterDropParticle.java:
--------------------------------------------------------------------------------
1 | package com.mojang.minecraft.particle;
2 |
3 | import com.mojang.minecraft.level.Level;
4 | import com.mojang.minecraft.render.ShapeRenderer;
5 |
6 | public class WaterDropParticle extends Particle {
7 |
8 | private static final long serialVersionUID = 1L;
9 |
10 |
11 | public WaterDropParticle(Level var1, float var2, float var3, float var4) {
12 | super(var1, var2, var3, var4, 0.0F, 0.0F, 0.0F);
13 | this.xd *= 0.3F;
14 | this.yd = (float)Math.random() * 0.2F + 0.1F;
15 | this.zd *= 0.3F;
16 | this.rCol = 1.0F;
17 | this.gCol = 1.0F;
18 | this.bCol = 1.0F;
19 | this.tex = 16;
20 | this.setSize(0.01F, 0.01F);
21 | this.lifetime = (int)(8.0D / (Math.random() * 0.8D + 0.2D));
22 | }
23 |
24 | public void render(ShapeRenderer var1, float var2, float var3, float var4, float var5, float var6, float var7) {
25 | super.render(var1, var2, var3, var4, var5, var6, var7);
26 | }
27 |
28 | public void tick() {
29 | this.xo = this.x;
30 | this.yo = this.y;
31 | this.zo = this.z;
32 | this.yd = (float)((double)this.yd - 0.06D);
33 | this.move(this.xd, this.yd, this.zd);
34 | this.xd *= 0.98F;
35 | this.yd *= 0.98F;
36 | this.zd *= 0.98F;
37 | if(this.lifetime-- <= 0) {
38 | this.remove();
39 | }
40 |
41 | if(this.onGround) {
42 | if(Math.random() < 0.5D) {
43 | this.remove();
44 | }
45 |
46 | this.xd *= 0.7F;
47 | this.zd *= 0.7F;
48 | }
49 |
50 | }
51 | }
52 |
--------------------------------------------------------------------------------
/src/main/java/com/mojang/minecraft/player/InputHandler.java:
--------------------------------------------------------------------------------
1 | package com.mojang.minecraft.player;
2 |
3 | public class InputHandler
4 | {
5 | public float xxa = 0.0F;
6 | public float yya = 0.0F;
7 | public boolean jumping = false;
8 |
9 | public boolean running = false;
10 |
11 | public void updateMovement()
12 | {
13 | }
14 |
15 | public void resetKeys()
16 | {
17 | }
18 |
19 | public void setKeyState(int key, boolean state)
20 | {
21 | }
22 | }
23 |
--------------------------------------------------------------------------------
/src/main/java/com/mojang/minecraft/player/InputHandlerImpl.java:
--------------------------------------------------------------------------------
1 | package com.mojang.minecraft.player;
2 |
3 | import com.mojang.minecraft.GameSettings;
4 |
5 | public class InputHandlerImpl extends InputHandler
6 | {
7 | public InputHandlerImpl(GameSettings gameSettings)
8 | {
9 | settings = gameSettings;
10 | }
11 |
12 | @Override
13 | public void updateMovement()
14 | {
15 | xxa = 0.0F;
16 | yya = 0.0F;
17 |
18 | if(keyStates[0])
19 | {
20 | yya--;
21 | }
22 |
23 | if(keyStates[1])
24 | {
25 | yya++;
26 | }
27 |
28 | if(keyStates[2])
29 | {
30 | xxa--;
31 | }
32 |
33 | if(keyStates[3])
34 | {
35 | xxa++;
36 | }
37 |
38 | jumping = keyStates[4];
39 |
40 | running = keyStates[5];
41 | }
42 |
43 | @Override
44 | public void resetKeys()
45 | {
46 | for(int i = 0; i < keyStates.length; ++i)
47 | {
48 | keyStates[i] = false;
49 | }
50 |
51 | }
52 |
53 | @Override
54 | public void setKeyState(int key, boolean state)
55 | {
56 | byte index = -1;
57 |
58 | if(key == settings.forwardKey.key)
59 | {
60 | index = 0;
61 | }
62 |
63 | if(key == settings.backKey.key)
64 | {
65 | index = 1;
66 | }
67 |
68 | if(key == settings.leftKey.key)
69 | {
70 | index = 2;
71 | }
72 |
73 | if(key == settings.rightKey.key)
74 | {
75 | index = 3;
76 | }
77 |
78 | if(key == settings.jumpKey.key)
79 | {
80 | index = 4;
81 | }
82 |
83 | if(key == settings.runKey.key)
84 | {
85 | index = 5;
86 | }
87 |
88 | if(index >= 0)
89 | {
90 | keyStates[index] = state;
91 | }
92 |
93 | }
94 |
95 | private boolean[] keyStates = new boolean[100];
96 | private GameSettings settings;
97 | }
98 |
--------------------------------------------------------------------------------
/src/main/java/com/mojang/minecraft/player/Inventory.java:
--------------------------------------------------------------------------------
1 | package com.mojang.minecraft.player;
2 |
3 | import com.mojang.minecraft.SessionData;
4 | import com.mojang.minecraft.level.tile.Block;
5 |
6 | import java.io.Serializable;
7 |
8 | public class Inventory implements Serializable {
9 |
10 | public static final long serialVersionUID = 0L;
11 | public static final int POP_TIME_DURATION = 5;
12 | public int[] slots = new int[9];
13 | public int[] count = new int[9];
14 | public int[] popTime = new int[9];
15 | public int selected = 0;
16 |
17 |
18 | public Inventory() {
19 | for(int var1 = 0; var1 < 9; ++var1) {
20 | this.slots[var1] = -1;
21 | this.count[var1] = 0;
22 | }
23 |
24 | }
25 |
26 | public int getSelected() {
27 | return this.slots[this.selected];
28 | }
29 |
30 | private int getSlot(int var1) {
31 | for(int var2 = 0; var2 < this.slots.length; ++var2) {
32 | if(var1 == this.slots[var2]) {
33 | return var2;
34 | }
35 | }
36 |
37 | return -1;
38 | }
39 |
40 | public void grabTexture(int var1, boolean var2) {
41 | int var3;
42 | if((var3 = this.getSlot(var1)) >= 0) {
43 | this.selected = var3;
44 | } else {
45 | if(var2 && var1 > 0 && SessionData.allowedBlocks.contains(Block.blocks[var1])) {
46 | this.replaceSlot(Block.blocks[var1]);
47 | }
48 |
49 | }
50 | }
51 |
52 | public void swapPaint(int var1) {
53 | if(var1 > 0) {
54 | var1 = 1;
55 | }
56 |
57 | if(var1 < 0) {
58 | var1 = -1;
59 | }
60 |
61 | for(this.selected -= var1; this.selected < 0; this.selected += this.slots.length) {
62 | ;
63 | }
64 |
65 | while(this.selected >= this.slots.length) {
66 | this.selected -= this.slots.length;
67 | }
68 |
69 | }
70 |
71 | public void replaceSlot(int var1) {
72 | if(var1 >= 0) {
73 | this.replaceSlot((Block)SessionData.allowedBlocks.get(var1));
74 | }
75 |
76 | }
77 |
78 | public void replaceSlot(Block var1) {
79 | if(var1 != null) {
80 | int var2;
81 | if((var2 = this.getSlot(var1.id)) >= 0) {
82 | this.slots[var2] = this.slots[this.selected];
83 | }
84 |
85 | this.slots[this.selected] = var1.id;
86 | }
87 |
88 | }
89 |
90 | public boolean addResource(int var1) {
91 | int var2;
92 | if((var2 = this.getSlot(var1)) < 0) {
93 | var2 = this.getSlot(-1);
94 | }
95 |
96 | if(var2 < 0) {
97 | return false;
98 | } else if(this.count[var2] >= 99) {
99 | return false;
100 | } else {
101 | this.slots[var2] = var1;
102 | ++this.count[var2];
103 | this.popTime[var2] = 5;
104 | return true;
105 | }
106 | }
107 |
108 | public void tick() {
109 | for(int var1 = 0; var1 < this.popTime.length; ++var1) {
110 | if(this.popTime[var1] > 0) {
111 | --this.popTime[var1];
112 | }
113 | }
114 |
115 | }
116 |
117 | public boolean removeResource(int var1) {
118 | if((var1 = this.getSlot(var1)) < 0) {
119 | return false;
120 | } else {
121 | if(--this.count[var1] <= 0) {
122 | this.slots[var1] = -1;
123 | }
124 |
125 | return true;
126 | }
127 | }
128 | }
129 |
--------------------------------------------------------------------------------
/src/main/java/com/mojang/minecraft/player/Player$1.java:
--------------------------------------------------------------------------------
1 | package com.mojang.minecraft.player;
2 |
3 | import com.mojang.minecraft.mob.ai.BasicAI;
4 |
5 | // PlayerAI
6 | public class Player$1 extends BasicAI
7 | {
8 | public Player$1(Player player)
9 | {
10 | this.player = player;
11 | }
12 |
13 | @Override
14 | protected void update()
15 | {
16 | this.jumping = player.input.jumping;
17 |
18 | this.xxa = player.input.xxa;
19 | this.yya = player.input.yya;
20 |
21 | running = player.input.running;
22 | }
23 |
24 | public static final long serialVersionUID = 0L;
25 |
26 | private Player player;
27 | }
28 |
--------------------------------------------------------------------------------
/src/main/java/com/mojang/minecraft/render/ChunkDirtyDistanceComparator.java:
--------------------------------------------------------------------------------
1 | package com.mojang.minecraft.render;
2 |
3 | import com.mojang.minecraft.player.Player;
4 | import java.util.Comparator;
5 |
6 | public class ChunkDirtyDistanceComparator implements Comparator
7 | {
8 | public ChunkDirtyDistanceComparator(Player player)
9 | {
10 | this.player = player;
11 | }
12 |
13 | @Override
14 | public int compare(Object o1, Object o2)
15 | {
16 | Chunk chunk = (Chunk)o1;
17 | Chunk other = (Chunk)o2;
18 |
19 | if(chunk.visible || !other.visible)
20 | {
21 | if(other.visible)
22 | {
23 | float sqDist = chunk.distanceSquared(player);
24 | float otherSqDist = other.distanceSquared(player);
25 |
26 | if(sqDist == otherSqDist)
27 | {
28 | return 0;
29 | } else if(sqDist > otherSqDist) {
30 | return -1;
31 | } else {
32 | return 1;
33 | }
34 | } else {
35 | return 1;
36 | }
37 | } else {
38 | return -1;
39 | }
40 | }
41 |
42 | private Player player;
43 | }
44 |
--------------------------------------------------------------------------------
/src/main/java/com/mojang/minecraft/render/ChunkDistanceComparator.java:
--------------------------------------------------------------------------------
1 | package com.mojang.minecraft.render;
2 |
3 | import com.mojang.minecraft.player.Player;
4 | import java.util.Comparator;
5 |
6 | public class ChunkDistanceComparator implements Comparator
7 | {
8 | public ChunkDistanceComparator(Player player)
9 | {
10 | this.player = player;
11 | }
12 |
13 | @Override
14 | public int compare(Object o1, Object o2)
15 | {
16 | Chunk chunk = (Chunk)o1;
17 | Chunk other = (Chunk)o2;
18 |
19 | float sqDist = chunk.distanceSquared(player);
20 | float otherSqDist = other.distanceSquared(player);
21 |
22 | if(sqDist == otherSqDist)
23 | {
24 | return 0;
25 | } else if(sqDist > otherSqDist) {
26 | return -1;
27 | } else {
28 | return 1;
29 | }
30 | }
31 |
32 | private Player player;
33 | }
34 |
--------------------------------------------------------------------------------
/src/main/java/com/mojang/minecraft/render/Frustrum.java:
--------------------------------------------------------------------------------
1 | package com.mojang.minecraft.render;
2 |
3 |
4 | public class Frustrum {
5 |
6 | public float[][] frustrum = new float[16][16];
7 | public float[] projection = new float[16];
8 | public float[] modelview = new float[16];
9 | public float[] clipping = new float[16];
10 |
11 |
12 | public final boolean isBoxInFrustrum(float var1, float var2, float var3, float var4, float var5, float var6) {
13 | for(int var7 = 0; var7 < 6; ++var7) {
14 | if(this.frustrum[var7][0] * var1 + this.frustrum[var7][1] * var2 + this.frustrum[var7][2] * var3 + this.frustrum[var7][3] <= 0.0F && this.frustrum[var7][0] * var4 + this.frustrum[var7][1] * var2 + this.frustrum[var7][2] * var3 + this.frustrum[var7][3] <= 0.0F && this.frustrum[var7][0] * var1 + this.frustrum[var7][1] * var5 + this.frustrum[var7][2] * var3 + this.frustrum[var7][3] <= 0.0F && this.frustrum[var7][0] * var4 + this.frustrum[var7][1] * var5 + this.frustrum[var7][2] * var3 + this.frustrum[var7][3] <= 0.0F && this.frustrum[var7][0] * var1 + this.frustrum[var7][1] * var2 + this.frustrum[var7][2] * var6 + this.frustrum[var7][3] <= 0.0F && this.frustrum[var7][0] * var4 + this.frustrum[var7][1] * var2 + this.frustrum[var7][2] * var6 + this.frustrum[var7][3] <= 0.0F && this.frustrum[var7][0] * var1 + this.frustrum[var7][1] * var5 + this.frustrum[var7][2] * var6 + this.frustrum[var7][3] <= 0.0F && this.frustrum[var7][0] * var4 + this.frustrum[var7][1] * var5 + this.frustrum[var7][2] * var6 + this.frustrum[var7][3] <= 0.0F) {
15 | return false;
16 | }
17 | }
18 |
19 | return true;
20 | }
21 | }
22 |
--------------------------------------------------------------------------------
/src/main/java/com/mojang/minecraft/render/HeldBlock.java:
--------------------------------------------------------------------------------
1 | package com.mojang.minecraft.render;
2 |
3 | import com.mojang.minecraft.Minecraft;
4 | import com.mojang.minecraft.level.tile.Block;
5 |
6 | public class HeldBlock
7 | {
8 | public HeldBlock(Minecraft minecraft)
9 | {
10 | this.minecraft = minecraft;
11 | }
12 |
13 | public Minecraft minecraft;
14 |
15 | public Block block = null;
16 |
17 | public float pos = 0.0F;
18 | public float lastPos = 0.0F;
19 |
20 | public int offset = 0;
21 |
22 | public boolean moving = false;
23 | }
24 |
--------------------------------------------------------------------------------
/src/main/java/com/mojang/minecraft/render/texture/TextureFX.java:
--------------------------------------------------------------------------------
1 | package com.mojang.minecraft.render.texture;
2 |
3 | public class TextureFX
4 | {
5 | public TextureFX(int textureID)
6 | {
7 | this.textureId = textureID;
8 | }
9 |
10 | public byte[] textureData = new byte[1024];
11 | public int textureId;
12 | public boolean anaglyph = false;
13 |
14 | public void animate()
15 | {
16 | }
17 | }
18 |
--------------------------------------------------------------------------------
/src/main/java/com/mojang/minecraft/render/texture/TextureLavaFX.java:
--------------------------------------------------------------------------------
1 | package com.mojang.minecraft.render.texture;
2 |
3 | import com.mojang.minecraft.level.tile.Block;
4 | import com.mojang.util.MathHelper;
5 |
6 | public final class TextureLavaFX extends TextureFX {
7 |
8 | private float[] red = new float[256];
9 | private float[] green = new float[256];
10 | private float[] blue = new float[256];
11 | private float[] alpha = new float[256];
12 |
13 |
14 | public TextureLavaFX() {
15 | super(Block.LAVA.textureId);
16 | }
17 |
18 | public final void animate() {
19 | int var1;
20 | int var2;
21 | float var3;
22 | int var5;
23 | int var6;
24 | int var7;
25 | int var8;
26 | int var9;
27 | for(var1 = 0; var1 < 16; ++var1) {
28 | for(var2 = 0; var2 < 16; ++var2) {
29 | var3 = 0.0F;
30 | int var4 = (int)(MathHelper.sin((float) var2 * 3.1415927F * 2.0F / 16.0F) * 1.2F);
31 | var5 = (int)(MathHelper.sin((float)var1 * 3.1415927F * 2.0F / 16.0F) * 1.2F);
32 |
33 | for(var6 = var1 - 1; var6 <= var1 + 1; ++var6) {
34 | for(var7 = var2 - 1; var7 <= var2 + 1; ++var7) {
35 | var8 = var6 + var4 & 15;
36 | var9 = var7 + var5 & 15;
37 | var3 += this.red[var8 + (var9 << 4)];
38 | }
39 | }
40 |
41 | this.green[var1 + (var2 << 4)] = var3 / 10.0F + (this.blue[(var1 & 15) + ((var2 & 15) << 4)] + this.blue[(var1 + 1 & 15) + ((var2 & 15) << 4)] + this.blue[(var1 + 1 & 15) + ((var2 + 1 & 15) << 4)] + this.blue[(var1 & 15) + ((var2 + 1 & 15) << 4)]) / 4.0F * 0.8F;
42 | this.blue[var1 + (var2 << 4)] += this.alpha[var1 + (var2 << 4)] * 0.01F;
43 | if(this.blue[var1 + (var2 << 4)] < 0.0F) {
44 | this.blue[var1 + (var2 << 4)] = 0.0F;
45 | }
46 |
47 | this.alpha[var1 + (var2 << 4)] -= 0.06F;
48 | if(Math.random() < 0.005D) {
49 | this.alpha[var1 + (var2 << 4)] = 1.5F;
50 | }
51 | }
52 | }
53 |
54 | float[] var10 = this.green;
55 | this.green = this.red;
56 | this.red = var10;
57 |
58 | for(var2 = 0; var2 < 256; ++var2) {
59 | if((var3 = this.red[var2] * 2.0F) > 1.0F) {
60 | var3 = 1.0F;
61 | }
62 |
63 | if(var3 < 0.0F) {
64 | var3 = 0.0F;
65 | }
66 |
67 | var5 = (int)(var3 * 100.0F + 155.0F);
68 | var6 = (int)(var3 * var3 * 255.0F);
69 | var7 = (int)(var3 * var3 * var3 * var3 * 128.0F);
70 | if(this.anaglyph) {
71 | var8 = (var5 * 30 + var6 * 59 + var7 * 11) / 100;
72 | var9 = (var5 * 30 + var6 * 70) / 100;
73 | var1 = (var5 * 30 + var7 * 70) / 100;
74 | var5 = var8;
75 | var6 = var9;
76 | var7 = var1;
77 | }
78 |
79 | this.textureData[var2 << 2] = (byte)var5;
80 | this.textureData[(var2 << 2) + 1] = (byte)var6;
81 | this.textureData[(var2 << 2) + 2] = (byte)var7;
82 | this.textureData[(var2 << 2) + 3] = -1;
83 | }
84 |
85 | }
86 | }
87 |
--------------------------------------------------------------------------------
/src/main/java/com/mojang/minecraft/render/texture/TextureWaterFX.java:
--------------------------------------------------------------------------------
1 | package com.mojang.minecraft.render.texture;
2 |
3 | import com.mojang.minecraft.level.tile.Block;
4 |
5 | public final class TextureWaterFX extends TextureFX {
6 |
7 | private float[] red = new float[256];
8 | private float[] blue = new float[256];
9 | private float[] green = new float[256];
10 | private float[] alpha = new float[256];
11 | private int updates = 0;
12 |
13 |
14 | public TextureWaterFX() {
15 | super(Block.WATER.textureId);
16 | }
17 |
18 | public final void animate() {
19 | ++this.updates;
20 |
21 | int var1;
22 | int var2;
23 | float var3;
24 | int var4;
25 | int var5;
26 | int var6;
27 | for(var1 = 0; var1 < 16; ++var1) {
28 | for(var2 = 0; var2 < 16; ++var2) {
29 | var3 = 0.0F;
30 |
31 | for(var4 = var1 - 1; var4 <= var1 + 1; ++var4) {
32 | var5 = var4 & 15;
33 | var6 = var2 & 15;
34 | var3 += this.red[var5 + (var6 << 4)];
35 | }
36 |
37 | this.blue[var1 + (var2 << 4)] = var3 / 3.3F + this.green[var1 + (var2 << 4)] * 0.8F;
38 | }
39 | }
40 |
41 | for(var1 = 0; var1 < 16; ++var1) {
42 | for(var2 = 0; var2 < 16; ++var2) {
43 | this.green[var1 + (var2 << 4)] += this.alpha[var1 + (var2 << 4)] * 0.05F;
44 | if(this.green[var1 + (var2 << 4)] < 0.0F) {
45 | this.green[var1 + (var2 << 4)] = 0.0F;
46 | }
47 |
48 | this.alpha[var1 + (var2 << 4)] -= 0.1F;
49 | if(Math.random() < 0.05D) {
50 | this.alpha[var1 + (var2 << 4)] = 0.5F;
51 | }
52 | }
53 | }
54 |
55 | float[] var8 = this.blue;
56 | this.blue = this.red;
57 | this.red = var8;
58 |
59 | for(var2 = 0; var2 < 256; ++var2) {
60 | if((var3 = this.red[var2]) > 1.0F) {
61 | var3 = 1.0F;
62 | }
63 |
64 | if(var3 < 0.0F) {
65 | var3 = 0.0F;
66 | }
67 |
68 | float var9 = var3 * var3;
69 | var5 = (int)(32.0F + var9 * 32.0F);
70 | var6 = (int)(50.0F + var9 * 64.0F);
71 | var1 = 255;
72 | int var10 = (int)(146.0F + var9 * 50.0F);
73 | if(this.anaglyph) {
74 | var1 = (var5 * 30 + var6 * 59 + 2805) / 100;
75 | var4 = (var5 * 30 + var6 * 70) / 100;
76 | int var7 = (var5 * 30 + 17850) / 100;
77 | var5 = var1;
78 | var6 = var4;
79 | var1 = var7;
80 | }
81 |
82 | this.textureData[var2 << 2] = (byte)var5;
83 | this.textureData[(var2 << 2) + 1] = (byte)var6;
84 | this.textureData[(var2 << 2) + 2] = (byte)var1;
85 | this.textureData[(var2 << 2) + 3] = (byte)var10;
86 | }
87 |
88 | }
89 | }
90 |
--------------------------------------------------------------------------------
/src/main/java/com/mojang/minecraft/sound/Audio.java:
--------------------------------------------------------------------------------
1 | package com.mojang.minecraft.sound;
2 |
3 | public interface Audio
4 | {
5 | boolean play(int[] var1, int[] var2, int var3);
6 | }
7 |
--------------------------------------------------------------------------------
/src/main/java/com/mojang/minecraft/sound/AudioInfo.java:
--------------------------------------------------------------------------------
1 | package com.mojang.minecraft.sound;
2 |
3 | public class AudioInfo
4 | {
5 | public float volume = 1.0F;
6 |
7 | public int update(short[] var1, int var2)
8 | {
9 | return 0;
10 | }
11 | }
12 |
--------------------------------------------------------------------------------
/src/main/java/com/mojang/minecraft/sound/BaseSoundPos.java:
--------------------------------------------------------------------------------
1 | package com.mojang.minecraft.sound;
2 |
3 | import com.mojang.minecraft.Entity;
4 | import com.mojang.util.MathHelper;
5 |
6 | public abstract class BaseSoundPos implements SoundPos
7 | {
8 | public BaseSoundPos(Entity listener)
9 | {
10 | this.listener = listener;
11 | }
12 |
13 | private Entity listener;
14 |
15 | public float getRotationDiff(float x, float y)
16 | {
17 | x -= listener.x;
18 | y -= listener.z;
19 |
20 | float var3 = MathHelper.sqrt(x * x + y * y);
21 |
22 | x /= var3;
23 | y /= var3;
24 |
25 | if((var3 /= 2.0F) > 1.0F)
26 | {
27 | var3 = 1.0F;
28 | }
29 |
30 | float var4 = MathHelper.cos(-listener.yRot * 0.017453292F + 3.1415927F);
31 |
32 | return (MathHelper.sin(-listener.yRot * 0.017453292F + 3.1415927F) * y - var4 * x) * var3;
33 | }
34 |
35 | public float getDistanceSq(float x, float y, float z)
36 | {
37 | x -= listener.x;
38 | y -= listener.y;
39 | float var4 = z - listener.z;
40 |
41 | var4 = MathHelper.sqrt(x * x + y * y + var4 * var4);
42 |
43 | if((var4 = 1.0F - var4 / 32.0F) < 0.0F)
44 | {
45 | var4 = 0.0F;
46 | }
47 |
48 | return var4;
49 | }
50 | }
51 |
--------------------------------------------------------------------------------
/src/main/java/com/mojang/minecraft/sound/EntitySoundPos.java:
--------------------------------------------------------------------------------
1 | package com.mojang.minecraft.sound;
2 |
3 | import com.mojang.minecraft.Entity;
4 |
5 | public class EntitySoundPos extends BaseSoundPos
6 | {
7 | public EntitySoundPos(Entity source, Entity listener)
8 | {
9 | super(listener);
10 |
11 | this.source = source;
12 | }
13 |
14 | @Override
15 | public float getRotationDiff()
16 | {
17 | return super.getRotationDiff(source.x, source.z);
18 | }
19 |
20 | @Override
21 | public float getDistanceSq()
22 | {
23 | return super.getDistanceSq(source.x, source.y, source.z);
24 | }
25 |
26 | private Entity source;
27 | }
28 |
--------------------------------------------------------------------------------
/src/main/java/com/mojang/minecraft/sound/LevelSoundPos.java:
--------------------------------------------------------------------------------
1 | package com.mojang.minecraft.sound;
2 |
3 | import com.mojang.minecraft.Entity;
4 |
5 | public final class LevelSoundPos extends BaseSoundPos
6 | {
7 | public LevelSoundPos(float x, float y, float z, Entity listener)
8 | {
9 | super(listener);
10 |
11 | this.x = x;
12 | this.y = y;
13 | this.z = z;
14 | }
15 |
16 | @Override
17 | public float getRotationDiff()
18 | {
19 | return super.getRotationDiff(x, z);
20 | }
21 |
22 | @Override
23 | public float getDistanceSq()
24 | {
25 | return super.getDistanceSq(x, y, z);
26 | }
27 |
28 | private float x;
29 | private float y;
30 | private float z;
31 | }
32 |
--------------------------------------------------------------------------------
/src/main/java/com/mojang/minecraft/sound/Music.java:
--------------------------------------------------------------------------------
1 | package com.mojang.minecraft.sound;
2 |
3 | import de.jarnbjo.ogg.LogicalOggStreamImpl;
4 | import de.jarnbjo.ogg.OggFormatException;
5 | import de.jarnbjo.ogg.OnDemandUrlStream;
6 | import de.jarnbjo.vorbis.VorbisFormatException;
7 | import de.jarnbjo.vorbis.VorbisStream;
8 |
9 | import java.io.IOException;
10 | import java.net.URL;
11 | import java.nio.ByteBuffer;
12 |
13 | // TODO.
14 | public final class Music implements Audio {
15 |
16 | ByteBuffer playing = ByteBuffer.allocate(176400);
17 | ByteBuffer current = ByteBuffer.allocate(176400);
18 | private ByteBuffer processing = null;
19 | ByteBuffer previous = null;
20 | VorbisStream stream;
21 | SoundPlayer player;
22 | boolean finished = false;
23 | boolean stopped = false;
24 |
25 |
26 | public Music(SoundPlayer var1, URL var2) {
27 | this.player = var1;
28 | try
29 | {
30 | LogicalOggStreamImpl var3 = (LogicalOggStreamImpl)(new OnDemandUrlStream(var2)).getLogicalStreams().iterator().next();
31 | this.stream = new VorbisStream(var3);
32 | } catch (VorbisFormatException e) {
33 | e.printStackTrace();
34 | } catch (OggFormatException e) {
35 | e.printStackTrace();
36 | } catch (IOException e) {
37 | e.printStackTrace();
38 | }
39 | (new MusicPlayThread(this)).start();
40 | }
41 |
42 | public final boolean play(int[] var1, int[] var2, int var3) {
43 | if(!this.player.settings.music) {
44 | this.stopped = true;
45 | return false;
46 | } else {
47 | var3 = var3;
48 | int var4 = 0;
49 |
50 | while(var3 > 0 && (this.processing != null || this.previous != null)) {
51 | if(this.processing == null && this.previous != null) {
52 | this.processing = this.previous;
53 | this.previous = null;
54 | }
55 |
56 | if(this.processing != null && this.processing.remaining() > 0) {
57 | int var5;
58 | if((var5 = this.processing.remaining() / 4) > var3) {
59 | var5 = var3;
60 | }
61 |
62 | for(int var6 = 0; var6 < var5; ++var6) {
63 | var1[var4 + var6] += this.processing.getShort();
64 | var2[var4 + var6] += this.processing.getShort();
65 | }
66 |
67 | var4 += var5;
68 | var3 -= var5;
69 | }
70 |
71 | if(this.current == null && this.processing != null && this.processing.remaining() == 0) {
72 | this.current = this.processing;
73 | this.processing = null;
74 | }
75 | }
76 |
77 | return this.processing != null || this.previous != null || !this.finished;
78 | }
79 | }
80 | }
81 |
--------------------------------------------------------------------------------
/src/main/java/com/mojang/minecraft/sound/MusicPlayThread.java:
--------------------------------------------------------------------------------
1 | package com.mojang.minecraft.sound;
2 |
3 | import de.jarnbjo.vorbis.VorbisStream;
4 |
5 | import java.nio.ByteBuffer;
6 |
7 | // TODO.
8 | final class MusicPlayThread extends Thread {
9 |
10 | // $FF: synthetic field
11 | private Music music;
12 |
13 |
14 | public MusicPlayThread(Music var1) {
15 | super();
16 | this.music = var1;
17 | this.setPriority(10);
18 | this.setDaemon(true);
19 | }
20 |
21 | public final void run() {
22 | try {
23 | do {
24 | if(this.music.stopped) {
25 | return;
26 | }
27 |
28 | Music var1 = this.music;
29 | ByteBuffer var2;
30 | Music var10001;
31 | if(this.music.playing == null) {
32 | var1 = this.music;
33 | if(this.music.current != null) {
34 | var1 = this.music;
35 | var2 = this.music.current;
36 | var10001 = this.music;
37 | this.music.playing = var2;
38 | var2 = null;
39 | var1 = this.music;
40 | this.music.current = null;
41 | var1 = this.music;
42 | this.music.playing.clear();
43 | }
44 | }
45 |
46 | var1 = this.music;
47 | if(this.music.playing != null) {
48 | var1 = this.music;
49 | if(this.music.playing.remaining() != 0) {
50 | while(true) {
51 | var1 = this.music;
52 | if(this.music.playing.remaining() == 0) {
53 | break;
54 | }
55 |
56 | var1 = this.music;
57 | var1 = this.music;
58 | var2 = this.music.playing;
59 | VorbisStream var9 = this.music.stream;
60 | int var10 = this.music.stream.readPcm(var2.array(), var2.position(), var2.remaining());
61 | var2.position(var2.position() + var10);
62 | boolean var11;
63 | if(var11 = var10 <= 0) {
64 | this.music.finished = true;
65 | this.music.stopped = true;
66 | break;
67 | }
68 | }
69 | }
70 | }
71 |
72 | var1 = this.music;
73 | if(this.music.playing != null) {
74 | var1 = this.music;
75 | if(this.music.previous == null) {
76 | var1 = this.music;
77 | this.music.playing.flip();
78 | var1 = this.music;
79 | var2 = this.music.playing;
80 | var10001 = this.music;
81 | this.music.previous = var2;
82 | var2 = null;
83 | var1 = this.music;
84 | this.music.playing = var2;
85 | }
86 | }
87 |
88 | Thread.sleep(10L);
89 | var1 = this.music;
90 | } while(this.music.player.running);
91 |
92 | return;
93 | } catch (Exception var7) {
94 | var7.printStackTrace();
95 | return;
96 | } finally {
97 | this.music.finished = true;
98 | }
99 |
100 | }
101 | }
102 |
--------------------------------------------------------------------------------
/src/main/java/com/mojang/minecraft/sound/Sound.java:
--------------------------------------------------------------------------------
1 | package com.mojang.minecraft.sound;
2 |
3 | // TODO.
4 | public final class Sound implements Audio {
5 |
6 | private AudioInfo info;
7 | private SoundPos pos;
8 | private float pitch = 0.0F;
9 | private float volume = 1.0F;
10 | private static short[] data = new short[1];
11 |
12 |
13 | public Sound(AudioInfo var1, SoundPos var2) {
14 | this.info = var1;
15 | this.pos = var2;
16 | this.pitch = var2.getRotationDiff();
17 | this.volume = var2.getDistanceSq() * var1.volume;
18 | }
19 |
20 | public final boolean play(int[] var1, int[] var2, int var3) {
21 | if(data.length < var3) {
22 | data = new short[var3];
23 | }
24 |
25 | int var4;
26 | boolean var5 = (var4 = this.info.update(data, var3)) > 0;
27 | float var6 = this.pos.getRotationDiff();
28 | float var7 = this.pos.getDistanceSq() * this.info.volume;
29 | int var8 = (int)((this.pitch > 0.0F?1.0F - this.pitch:1.0F) * this.volume * 65536.0F);
30 | int var9 = (int)((this.pitch < 0.0F?1.0F + this.pitch:1.0F) * this.volume * 65536.0F);
31 | int var10 = (int)((var6 > 0.0F?1.0F - var6:1.0F) * var7 * 65536.0F);
32 | int var11 = (int)((var6 < 0.0F?var6 + 1.0F:1.0F) * var7 * 65536.0F);
33 | var10 -= var8;
34 | var11 -= var9;
35 | int var12;
36 | int var13;
37 | int var14;
38 | if(var10 == 0 && var11 == 0) {
39 | if(var8 >= 0 || var9 != 0) {
40 | var12 = var8;
41 | var13 = var9;
42 |
43 | for(var14 = 0; var14 < var4; ++var14) {
44 | var1[var14] += data[var14] * var12 >> 16;
45 | var2[var14] += data[var14] * var13 >> 16;
46 | }
47 | }
48 | } else {
49 | for(var12 = 0; var12 < var4; ++var12) {
50 | var13 = var8 + var10 * var12 / var3;
51 | var14 = var9 + var11 * var12 / var3;
52 | var1[var12] += data[var12] * var13 >> 16;
53 | var2[var12] += data[var12] * var14 >> 16;
54 | }
55 | }
56 |
57 | this.pitch = var6;
58 | this.volume = var7;
59 | return var5;
60 | }
61 |
62 | }
63 |
--------------------------------------------------------------------------------
/src/main/java/com/mojang/minecraft/sound/SoundData.java:
--------------------------------------------------------------------------------
1 | package com.mojang.minecraft.sound;
2 |
3 | public class SoundData
4 | {
5 | public SoundData(short[] data, float length)
6 | {
7 | this.data = data;
8 | this.length = length;
9 | }
10 |
11 | public short[] data;
12 | public float length;
13 | }
14 |
--------------------------------------------------------------------------------
/src/main/java/com/mojang/minecraft/sound/SoundInfo.java:
--------------------------------------------------------------------------------
1 | package com.mojang.minecraft.sound;
2 |
3 | // TODO.
4 | public final class SoundInfo extends AudioInfo {
5 |
6 | private SoundData data;
7 | private float seek = 0.0F;
8 | private float pitch;
9 |
10 |
11 | public SoundInfo(SoundData var1, float var2, float var3) {
12 | this.data = var1;
13 | this.pitch = var2 * 44100.0F / var1.length;
14 | this.volume = var3;
15 | }
16 |
17 | public final int update(short[] var1, int var2) {
18 | if(this.seek >= (float)this.data.data.length) {
19 | return 0;
20 | } else {
21 | for(int var3 = 0; var3 < var2; ++var3) {
22 | int var4 = (int)this.seek;
23 | short var5 = this.data.data[var4];
24 | short var6 = var4 < this.data.data.length - 1?this.data.data[var4 + 1]:0;
25 | var1[var3] = (short)((int)((float)var5 + (float)(var6 - var5) * (this.seek - (float)var4)));
26 | this.seek += this.pitch;
27 | if(this.seek >= (float)this.data.data.length) {
28 | return var3;
29 | }
30 | }
31 |
32 | return var2;
33 | }
34 | }
35 | }
36 |
--------------------------------------------------------------------------------
/src/main/java/com/mojang/minecraft/sound/SoundManager.java:
--------------------------------------------------------------------------------
1 | package com.mojang.minecraft.sound;
2 |
3 | import java.io.File;
4 | import java.io.IOException;
5 | import java.net.MalformedURLException;
6 | import java.util.*;
7 |
8 | // TODO.
9 | public final class SoundManager {
10 |
11 | private SoundReader reader = new SoundReader();
12 | public Map sounds = new HashMap();
13 | private Map music = new HashMap();
14 | public Random random = new Random();
15 | public long lastMusic = System.currentTimeMillis() + 60000L;
16 |
17 |
18 | public final AudioInfo getAudioInfo(String var1, float var2, float var3) {
19 | List var4 = null;
20 | Map var5 = this.sounds;
21 | synchronized(this.sounds) {
22 | var4 = (List)this.sounds.get(var1);
23 | }
24 |
25 | if(var4 == null) {
26 | return null;
27 | } else {
28 | SoundData var7 = (SoundData)var4.get(this.random.nextInt(var4.size()));
29 | return new SoundInfo(var7, var3, var2);
30 | }
31 | }
32 |
33 | public void registerSound(File var1, String var2) {
34 | try {
35 | for(var2 = var2.substring(0, var2.length() - 4).replaceAll("/", "."); Character.isDigit(var2.charAt(var2.length() - 1)); var2 = var2.substring(0, var2.length() - 1)) {
36 | ;
37 | }
38 |
39 | SoundData var7 = SoundReader.read(var1.toURI().toURL());
40 | Map var3 = this.sounds;
41 | synchronized(this.sounds) {
42 | Object var4;
43 | if((var4 = (List)this.sounds.get(var2)) == null) {
44 | var4 = new ArrayList();
45 | this.sounds.put(var2, var4);
46 | }
47 |
48 | ((List)var4).add(var7);
49 | }
50 | } catch (Exception var6) {
51 | var6.printStackTrace();
52 | }
53 |
54 | }
55 |
56 | public final void registerMusic(String var1, File var2) {
57 | Map var3 = this.music;
58 | synchronized(this.music) {
59 | for(var1 = var1.substring(0, var1.length() - 4).replaceAll("/", "."); Character.isDigit(var1.charAt(var1.length() - 1)); var1 = var1.substring(0, var1.length() - 1)) {
60 | ;
61 | }
62 |
63 | Object var4;
64 | if((var4 = (List)this.music.get(var1)) == null) {
65 | var4 = new ArrayList();
66 | this.music.put(var1, var4);
67 | }
68 |
69 | ((List)var4).add(var2);
70 | }
71 | }
72 |
73 | public boolean playMusic(SoundPlayer var1, String var2) {
74 | List var3 = null;
75 | Map var4 = this.music;
76 | synchronized(this.music) {
77 | var3 = (List)this.music.get(var2);
78 | }
79 |
80 | if(var3 == null) {
81 | return false;
82 | } else {
83 | File var8 = (File)var3.get(this.random.nextInt(var3.size()));
84 |
85 | try {
86 | var1.play(new Music(var1, var8.toURI().toURL()));
87 | } catch (MalformedURLException var5) {
88 | var5.printStackTrace();
89 | } catch (IOException var6) {
90 | var6.printStackTrace();
91 | }
92 |
93 | return true;
94 | }
95 | }
96 | }
97 |
--------------------------------------------------------------------------------
/src/main/java/com/mojang/minecraft/sound/SoundPlayer.java:
--------------------------------------------------------------------------------
1 | package com.mojang.minecraft.sound;
2 |
3 | import com.mojang.minecraft.GameSettings;
4 |
5 | import javax.sound.sampled.SourceDataLine;
6 | import java.util.ArrayList;
7 | import java.util.Arrays;
8 | import java.util.List;
9 |
10 | // TODO.
11 | public final class SoundPlayer implements Runnable {
12 |
13 | public boolean running = false;
14 | public SourceDataLine dataLine;
15 | private List audioQueue = new ArrayList();
16 | public GameSettings settings;
17 |
18 |
19 | public SoundPlayer(GameSettings var1) {
20 | this.settings = var1;
21 | }
22 |
23 | public final void play(Audio var1) {
24 | if(this.running) {
25 | List var2 = this.audioQueue;
26 | synchronized(this.audioQueue) {
27 | this.audioQueue.add(var1);
28 | }
29 | }
30 | }
31 |
32 | public final void play(AudioInfo var1, SoundPos var2) {
33 | this.play(new Sound(var1, var2));
34 | }
35 |
36 | public final void run() {
37 | int[] var1 = new int[4410];
38 | int[] var2 = new int[4410];
39 |
40 | for(byte[] var3 = new byte[17640]; this.running; this.dataLine.write(var3, 0, 17640)) {
41 | try {
42 | Thread.sleep(1L);
43 | } catch (InterruptedException var10) {
44 | var10.printStackTrace();
45 | }
46 |
47 | Arrays.fill(var1, 0, 4410, 0);
48 | Arrays.fill(var2, 0, 4410, 0);
49 | boolean var4 = true;
50 | int[] var5 = var2;
51 | int[] var6 = var1;
52 | List var12 = this.audioQueue;
53 | List var7 = this.audioQueue;
54 | synchronized(this.audioQueue) {
55 | int var8 = 0;
56 |
57 | while(true) {
58 | if(var8 >= var12.size()) {
59 | break;
60 | }
61 |
62 | if(!((Audio)var12.get(var8)).play(var6, var5, 4410)) {
63 | var12.remove(var8--);
64 | }
65 |
66 | ++var8;
67 | }
68 | }
69 |
70 | int var13;
71 | if(!this.settings.music && !this.settings.sound) {
72 | for(var13 = 0; var13 < 4410; ++var13) {
73 | var3[var13 << 2] = 0;
74 | var3[(var13 << 2) + 1] = 0;
75 | var3[(var13 << 2) + 2] = 0;
76 | var3[(var13 << 2) + 3] = 0;
77 | }
78 | } else {
79 | for(var13 = 0; var13 < 4410; ++var13) {
80 | int var15 = var1[var13];
81 | int var14 = var2[var13];
82 | if(var15 < -32000) {
83 | var15 = -32000;
84 | }
85 |
86 | if(var14 < -32000) {
87 | var14 = -32000;
88 | }
89 |
90 | if(var15 >= 32000) {
91 | var15 = 32000;
92 | }
93 |
94 | if(var14 >= 32000) {
95 | var14 = 32000;
96 | }
97 |
98 | var3[var13 << 2] = (byte)(var15 >> 8);
99 | var3[(var13 << 2) + 1] = (byte)var15;
100 | var3[(var13 << 2) + 2] = (byte)(var14 >> 8);
101 | var3[(var13 << 2) + 3] = (byte)var14;
102 | }
103 | }
104 | }
105 |
106 | }
107 | }
108 |
--------------------------------------------------------------------------------
/src/main/java/com/mojang/minecraft/sound/SoundPos.java:
--------------------------------------------------------------------------------
1 | package com.mojang.minecraft.sound;
2 |
3 | public interface SoundPos
4 | {
5 | float getRotationDiff();
6 |
7 | float getDistanceSq();
8 | }
9 |
--------------------------------------------------------------------------------
/src/main/java/com/mojang/minecraft/sound/SoundReader.java:
--------------------------------------------------------------------------------
1 | package com.mojang.minecraft.sound;
2 |
3 | import de.jarnbjo.ogg.LogicalOggStreamImpl;
4 | import de.jarnbjo.ogg.OggFormatException;
5 | import de.jarnbjo.ogg.OnDemandUrlStream;
6 | import de.jarnbjo.vorbis.IdentificationHeader;
7 | import de.jarnbjo.vorbis.VorbisFormatException;
8 | import de.jarnbjo.vorbis.VorbisStream;
9 |
10 | import java.io.IOException;
11 | import java.net.URL;
12 |
13 | // TODO.
14 | public final class SoundReader {
15 |
16 | public static SoundData read(URL var0) {
17 | VorbisStream var12 = null;
18 | try
19 | {
20 | LogicalOggStreamImpl var11 = (LogicalOggStreamImpl)(new OnDemandUrlStream(var0)).getLogicalStreams().iterator().next();
21 | var12 = new VorbisStream(var11);
22 | } catch (VorbisFormatException e) {
23 | e.printStackTrace();
24 | } catch (OggFormatException e) {
25 | e.printStackTrace();
26 | } catch (IOException e) {
27 | e.printStackTrace();
28 | }
29 | byte[] var2 = new byte[4096];
30 | int var3 = 0;
31 | boolean var1 = false;
32 | IdentificationHeader var14 = var12.getIdentificationHeader();
33 | int var4 = var12.getIdentificationHeader().getChannels();
34 | short[] var5 = new short[4096];
35 | int var6 = 0;
36 |
37 | label51:
38 | while(var3 >= 0) {
39 | int var15 = 0;
40 |
41 | while(true) {
42 | try {
43 | if(var15 < var2.length && (var3 = var12.readPcm(var2, var15, var2.length - var15)) > 0) {
44 | var15 += var3;
45 | continue;
46 | }
47 | } catch (Exception var10) {
48 | var3 = -1;
49 | }
50 |
51 | if(var15 <= 0) {
52 | break;
53 | }
54 |
55 | boolean var7 = false;
56 | int var16 = 0;
57 |
58 | while(true) {
59 | if(var16 >= var15) {
60 | continue label51;
61 | }
62 |
63 | int var8 = 0;
64 |
65 | for(int var9 = 0; var9 < var4; ++var9) {
66 | var8 += var2[var16++] << 8 | var2[var16++] & 255;
67 | }
68 |
69 | if(var6 == var5.length) {
70 | short[] var18 = var5;
71 | var5 = new short[var5.length << 1];
72 | System.arraycopy(var18, 0, var5, 0, var6);
73 | }
74 |
75 | var5[var6++] = (short)(var8 / var4);
76 | }
77 | }
78 | }
79 |
80 | if(var6 != var5.length) {
81 | short[] var17 = var5;
82 | var5 = new short[var6];
83 | System.arraycopy(var17, 0, var5, 0, var6);
84 | }
85 |
86 | IdentificationHeader var13;
87 | return new SoundData(var5, (float)(var13 = var12.getIdentificationHeader()).getSampleRate());
88 | }
89 | }
90 |
--------------------------------------------------------------------------------
/src/main/java/com/mojang/util/MathHelper.java:
--------------------------------------------------------------------------------
1 | package com.mojang.util;
2 |
3 |
4 | public final class MathHelper {
5 |
6 | private static float[] SIN_TABLE = new float[65536];
7 |
8 |
9 | public static final float sin(float var0) {
10 | return SIN_TABLE[(int)(var0 * 10430.378F) & '\uffff'];
11 | }
12 |
13 | public static final float cos(float var0) {
14 | return SIN_TABLE[(int)(var0 * 10430.378F + 16384.0F) & '\uffff'];
15 | }
16 |
17 | public static final float sqrt(float var0) {
18 | return (float)Math.sqrt((double)var0);
19 | }
20 |
21 | static {
22 | for(int var0 = 0; var0 < 65536; ++var0) {
23 | SIN_TABLE[var0] = (float)Math.sin((double)var0 * 3.141592653589793D * 2.0D / 65536.0D);
24 | }
25 |
26 | }
27 | }
28 |
--------------------------------------------------------------------------------
/src/main/java/com/oyasunadev/mcraft/client/core/MinecraftStandalone2.java:
--------------------------------------------------------------------------------
1 | //package com.oyasunadev.mcraft.client.core;
2 | //
3 | ///**
4 | //* Created with IntelliJ IDEA.
5 | //* User: Oliver
6 | //* Date: 4/19/13
7 | //* Time: 2:34 PM
8 | //*/
9 | //
10 | //import com.mojang.minecraft.Minecraft;
11 | //import com.mojang.minecraft.MinecraftApplet;
12 | //
13 | //import javax.swing.*;
14 | //import java.awt.*;
15 | //
16 | ///**
17 | //* Run Minecraft Classic standalone version.
18 | //*/
19 | //public class MinecraftStandalone2 extends JFrame
20 | //{
21 | // /**
22 | // * Default constructor.
23 | // */
24 | // public MinecraftStandalone2()
25 | // {
26 | // }
27 | //
28 | // /**
29 | // * Reference to the MCraftApplet2 object.
30 | // */
31 | // private MCraftApplet2 mcApplet;
32 | //
33 | // /**
34 | // * Custom applet in order to bypass URL check as well as add functionality.
35 | // */
36 | // private class MCraftApplet2 extends MinecraftApplet
37 | // {
38 | // /**
39 | // * Default constructor.
40 | // */
41 | // public MCraftApplet2()
42 | // {
43 | // }
44 | //
45 | // /**
46 | // * Reference to the applet canvas.
47 | // */
48 | // private Canvas mcCanvas;
49 | //
50 | // /**
51 | // * Reference to the Minecraft object.
52 | // */
53 | // private Minecraft mc;
54 | //
55 | // /**
56 | // * Reference to the Minecraft main thread.
57 | // */
58 | // private Thread mcThread = null;
59 | //
60 | // /**
61 | // * Setup the applet.
62 | // */
63 | // @Override
64 | // public void init()
65 | // {
66 | // mcCanvas = new MCraftCanvas2(this);
67 | //
68 | // boolean fullscreen = getParameter("fullscreen").equalsIgnoreCase("true");
69 | //
70 | // mc = new Minecraft(mcCanvas, this, 854, 480, fullscreen);
71 | // }
72 | // }
73 | //
74 | // /**
75 | // * Custom canvas.
76 | // */
77 | // private class MCraftCanvas2 extends Canvas
78 | // {
79 | // /**
80 | // * Set the applet object.
81 | // *
82 | // * @param mcApplet
83 | // */
84 | // public MCraftCanvas2(MCraftApplet2 mcApplet)
85 | // {
86 | // this.mcApplet = mcApplet;
87 | // }
88 | //
89 | // /**
90 | // * Start the thread.
91 | // */
92 | // @Override
93 | // public synchronized void addNotify()
94 | // {
95 | // super.addNotify();
96 | //
97 | // mcApplet.startMainThread();
98 | // }
99 | //
100 | // /**
101 | // * Stop the thread.
102 | // */
103 | // @Override
104 | // public synchronized void removeNotify()
105 | // {
106 | // mcApplet.shutdown();
107 | //
108 | // super.removeNotify();
109 | // }
110 | //
111 | // /**
112 | // * Reference to the MCraftApplet2 object.
113 | // */
114 | // private MCraftApplet2 mcApplet;
115 | // }
116 | //}
117 |
--------------------------------------------------------------------------------
/src/main/java/com/oyasunadev/mcraft/client/util/Constants.java:
--------------------------------------------------------------------------------
1 | package com.oyasunadev.mcraft.client.util;
2 |
3 | /**
4 | * Created with IntelliJ IDEA.
5 | * User: Oliver Yasuna
6 | * Date: 9/30/12
7 | * Time: 7:57 PM
8 | */
9 |
10 | public class Constants
11 | {
12 | /**
13 | * Just a reference to the MCraft version if needed.
14 | */
15 | public static final String MCRAFT_VERSION = "1.0";
16 | /**
17 | * Just a reference to the Minecraft version if needed.
18 | */
19 | public static final String MINECRAFT_VERSION = "0.30";
20 |
21 | /**
22 | * The Minecraft Classic protocol version. Default is 0x07.
23 | */
24 | public static final byte PROTOCOL_VERSION = 0x07;
25 | /**
26 | * The client type sent to the server to identify what client is being used. Default is 0x00.
27 | */
28 | public static final byte CLIENT_TYPE = 0x01;
29 | }
30 |
--------------------------------------------------------------------------------
/src/main/java/de/jarnbjo/ogg/BasicStream.java:
--------------------------------------------------------------------------------
1 | /*
2 | * $ProjectName$
3 | * $ProjectRevision$
4 | * -----------------------------------------------------------
5 | * $Id: BasicStream.java,v 1.1 2003/08/08 19:48:22 jarnbjo Exp $
6 | * -----------------------------------------------------------
7 | *
8 | * $Author: jarnbjo $
9 | *
10 | * Description:
11 | *
12 | * Copyright 2002-2003 Tor-Einar Jarnbjo
13 | * -----------------------------------------------------------
14 | *
15 | * Change History
16 | * -----------------------------------------------------------
17 | * $Log: BasicStream.java,v $
18 | *
19 | */
20 |
21 | package de.jarnbjo.ogg;
22 |
23 | import java.io.*;
24 | import java.net.*;
25 | import java.util.*;
26 |
27 | /**
28 | * Implementation of the PhysicalOggStream
interface for reading
29 | * an Ogg stream from a URL. This class performs
30 | * no internal caching, and will not read data from the network before
31 | * requested to do so. It is intended to be used in non-realtime applications
32 | * like file download managers or similar.
33 | */
34 |
35 | public class BasicStream implements PhysicalOggStream {
36 |
37 | private boolean closed=false;
38 | private InputStream sourceStream;
39 | private Object drainLock=new Object();
40 | private LinkedList pageCache=new LinkedList();
41 | private long numberOfSamples=-1;
42 | private int position=0;
43 |
44 | private HashMap logicalStreams=new HashMap();
45 | private OggPage firstPage;
46 |
47 | public BasicStream(InputStream sourceStream) throws OggFormatException, IOException {
48 | firstPage=OggPage.create(sourceStream);
49 | position+=firstPage.getTotalLength();
50 | LogicalOggStreamImpl los=new LogicalOggStreamImpl(this, firstPage.getStreamSerialNumber());
51 | logicalStreams.put(new Integer(firstPage.getStreamSerialNumber()), los);
52 | los.checkFormat(firstPage);
53 | }
54 |
55 | public Collection getLogicalStreams() {
56 | return logicalStreams.values();
57 | }
58 |
59 | public boolean isOpen() {
60 | return !closed;
61 | }
62 |
63 | public void close() throws IOException {
64 | closed=true;
65 | sourceStream.close();
66 | }
67 |
68 | public int getContentLength() {
69 | return -1;
70 | }
71 |
72 | public int getPosition() {
73 | return position;
74 | }
75 |
76 | int pageNumber=2;
77 |
78 | public OggPage getOggPage(int index) throws IOException {
79 | if(firstPage!=null) {
80 | OggPage tmp=firstPage;
81 | firstPage=null;
82 | return tmp;
83 | }
84 | else {
85 | OggPage page=OggPage.create(sourceStream);
86 | position+=page.getTotalLength();
87 | return page;
88 | }
89 | }
90 |
91 | private LogicalOggStream getLogicalStream(int serialNumber) {
92 | return (LogicalOggStream)logicalStreams.get(new Integer(serialNumber));
93 | }
94 |
95 | public void setTime(long granulePosition) throws IOException {
96 | throw new UnsupportedOperationException("Method not supported by this class");
97 | }
98 |
99 | /**
100 | * @return always false
101 | */
102 |
103 | public boolean isSeekable() {
104 | return false;
105 | }
106 |
107 | }
--------------------------------------------------------------------------------
/src/main/java/de/jarnbjo/ogg/EndOfOggStreamException.java:
--------------------------------------------------------------------------------
1 | /*
2 | * $ProjectName$
3 | * $ProjectRevision$
4 | * -----------------------------------------------------------
5 | * $Id: EndOfOggStreamException.java,v 1.1 2003/03/03 21:02:20 jarnbjo Exp $
6 | * -----------------------------------------------------------
7 | *
8 | * $Author: jarnbjo $
9 | *
10 | * Description:
11 | *
12 | * Copyright 2002-2003 Tor-Einar Jarnbjo
13 | * -----------------------------------------------------------
14 | *
15 | * Change History
16 | * -----------------------------------------------------------
17 | * $Log: EndOfOggStreamException.java,v $
18 | * Revision 1.1 2003/03/03 21:02:20 jarnbjo
19 | * no message
20 | *
21 | */
22 |
23 | package de.jarnbjo.ogg;
24 |
25 | import java.io.IOException;
26 |
27 | /**
28 | * Exception thrown when reaching the end of an Ogg stream
29 | */
30 |
31 | public class EndOfOggStreamException extends IOException {
32 |
33 | public EndOfOggStreamException() {
34 | }
35 | }
--------------------------------------------------------------------------------
/src/main/java/de/jarnbjo/ogg/OggFormatException.java:
--------------------------------------------------------------------------------
1 | /*
2 | * $ProjectName$
3 | * $ProjectRevision$
4 | * -----------------------------------------------------------
5 | * $Id: OggFormatException.java,v 1.1 2003/03/03 21:02:20 jarnbjo Exp $
6 | * -----------------------------------------------------------
7 | *
8 | * $Author: jarnbjo $
9 | *
10 | * Description:
11 | *
12 | * Copyright 2002-2003 Tor-Einar Jarnbjo
13 | * -----------------------------------------------------------
14 | *
15 | * Change History
16 | * -----------------------------------------------------------
17 | * $Log: OggFormatException.java,v $
18 | * Revision 1.1 2003/03/03 21:02:20 jarnbjo
19 | * no message
20 | *
21 | */
22 |
23 | package de.jarnbjo.ogg;
24 |
25 | import java.io.IOException;
26 |
27 | /**
28 | * Exception thrown when trying to read a corrupted Ogg stream.
29 | */
30 |
31 | public class OggFormatException extends IOException {
32 |
33 | public OggFormatException() {
34 | super();
35 | }
36 |
37 | public OggFormatException(String message) {
38 | super(message);
39 | }
40 | }
--------------------------------------------------------------------------------
/src/main/java/de/jarnbjo/util/audio/FadeableAudioInputStream.java:
--------------------------------------------------------------------------------
1 | package de.jarnbjo.util.audio;
2 |
3 | import java.io.*;
4 | import javax.sound.sampled.*;
5 |
6 | public class FadeableAudioInputStream extends AudioInputStream {
7 |
8 | private AudioInputStream stream;
9 | private boolean fading=false;
10 | private double phi=0.0;
11 |
12 | public FadeableAudioInputStream(AudioInputStream stream) throws IOException {
13 | super(stream, stream.getFormat(), -1L);
14 | }
15 |
16 | public void fadeOut() {
17 | fading=true;
18 | phi=0.0;
19 | }
20 |
21 | public int read(byte[] b) throws IOException {
22 | return read(b, 0, b.length);
23 | }
24 |
25 | public int read(byte[] b, int offset, int length) throws IOException {
26 | int read=super.read(b, offset, length);
27 |
28 | //System.out.println("read "+read);
29 |
30 | if(fading) {
31 | int j=0, l=0, r=0;
32 | double gain=0.0;
33 |
34 | for(int i=offset; i>8)&0xff);
54 | b[j++]=(byte)(r&0xff);
55 | b[j++]=(byte)((r>>8)&0xff);
56 | }
57 | }
58 |
59 | return read;
60 | }
61 |
62 | }
--------------------------------------------------------------------------------
/src/main/java/de/jarnbjo/vorbis/Floor0.java:
--------------------------------------------------------------------------------
1 | /*
2 | * $ProjectName$
3 | * $ProjectRevision$
4 | * -----------------------------------------------------------
5 | * $Id: Floor0.java,v 1.2 2003/03/16 01:11:12 jarnbjo Exp $
6 | * -----------------------------------------------------------
7 | *
8 | * $Author: jarnbjo $
9 | *
10 | * Description:
11 | *
12 | * Copyright 2002-2003 Tor-Einar Jarnbjo
13 | * -----------------------------------------------------------
14 | *
15 | * Change History
16 | * -----------------------------------------------------------
17 | * $Log: Floor0.java,v $
18 | * Revision 1.2 2003/03/16 01:11:12 jarnbjo
19 | * no message
20 | *
21 | *
22 | */
23 |
24 | package de.jarnbjo.vorbis;
25 |
26 | import java.io.IOException;
27 |
28 | import de.jarnbjo.util.io.BitInputStream;
29 |
30 | class Floor0 extends Floor {
31 |
32 | private int order, rate, barkMapSize, amplitudeBits, amplitudeOffset;
33 | private int bookList[];
34 |
35 | protected Floor0(BitInputStream source, SetupHeader header) throws VorbisFormatException, IOException {
36 |
37 | order=source.getInt(8);
38 | rate=source.getInt(16);
39 | barkMapSize=source.getInt(16);
40 | amplitudeBits=source.getInt(6);
41 | amplitudeOffset=source.getInt(8);
42 |
43 | int bookCount=source.getInt(4)+1;
44 | bookList=new int[bookCount];
45 |
46 | for(int i=0; iheader.getCodeBooks().length) {
49 | throw new VorbisFormatException("A floor0_book_list entry is higher than the code book count.");
50 | }
51 | }
52 | }
53 |
54 | protected int getType() {
55 | return 0;
56 | }
57 |
58 | protected Floor decodeFloor(VorbisStream vorbis, BitInputStream source) throws VorbisFormatException, IOException {
59 | /** @todo implement */
60 | throw new UnsupportedOperationException();
61 | }
62 |
63 | protected void computeFloor(float[] vector) {
64 | /** @todo implement */
65 | throw new UnsupportedOperationException();
66 | }
67 |
68 | }
--------------------------------------------------------------------------------
/src/main/java/de/jarnbjo/vorbis/IdentificationHeader.java:
--------------------------------------------------------------------------------
1 | /*
2 | * $ProjectName$
3 | * $ProjectRevision$
4 | * -----------------------------------------------------------
5 | * $Id: IdentificationHeader.java,v 1.3 2003/03/31 00:20:16 jarnbjo Exp $
6 | * -----------------------------------------------------------
7 | *
8 | * $Author: jarnbjo $
9 | *
10 | * Description:
11 | *
12 | * Copyright 2002-2003 Tor-Einar Jarnbjo
13 | * -----------------------------------------------------------
14 | *
15 | * Change History
16 | * -----------------------------------------------------------
17 | * $Log: IdentificationHeader.java,v $
18 | * Revision 1.3 2003/03/31 00:20:16 jarnbjo
19 | * no message
20 | *
21 | * Revision 1.2 2003/03/16 01:11:12 jarnbjo
22 | * no message
23 | *
24 | *
25 | */
26 |
27 | package de.jarnbjo.vorbis;
28 |
29 | import java.io.*;
30 |
31 | import de.jarnbjo.util.io.BitInputStream;
32 |
33 | import java.awt.*;
34 | import java.awt.event.*;
35 | import javax.swing.*;
36 | import javax.swing.event.*;
37 |
38 | /**
39 | */
40 |
41 | public class IdentificationHeader {
42 |
43 | private int version, channels, sampleRate, bitrateMaximum, bitrateNominal, bitrateMinimum, blockSize0, blockSize1;
44 | private boolean framingFlag;
45 | private MdctFloat[] mdct=new MdctFloat[2];
46 | //private MdctLong[] mdctInt=new MdctLong[2];
47 |
48 | private static final long HEADER = 0x736962726f76L; // 'vorbis'
49 |
50 | public IdentificationHeader(BitInputStream source) throws VorbisFormatException, IOException {
51 | //equalizer=new Equalizer();
52 | //equalizer.pack();
53 | //equalizer.show();
54 |
55 | long leading=source.getLong(48);
56 | if(leading!=HEADER) {
57 | throw new VorbisFormatException("The identification header has an illegal leading.");
58 | }
59 | version=source.getInt(32);
60 | channels=source.getInt(8);
61 | sampleRate=source.getInt(32);
62 | bitrateMaximum=source.getInt(32);
63 | bitrateNominal=source.getInt(32);
64 | bitrateMinimum=source.getInt(32);
65 | int bs=source.getInt(8);
66 | blockSize0=1<<(bs&0xf);
67 | blockSize1=1<<(bs>>4);
68 |
69 | mdct[0]=new MdctFloat(blockSize0);
70 | mdct[1]=new MdctFloat(blockSize1);
71 | //mdctInt[0]=new MdctLong(blockSize0);
72 | //mdctInt[1]=new MdctLong(blockSize1);
73 |
74 | framingFlag=source.getInt(8)!=0;
75 | }
76 |
77 | public int getSampleRate() {
78 | return sampleRate;
79 | }
80 |
81 | public int getMaximumBitrate() {
82 | return bitrateMaximum;
83 | }
84 |
85 | public int getNominalBitrate() {
86 | return bitrateNominal;
87 | }
88 |
89 | public int getMinimumBitrate() {
90 | return bitrateMinimum;
91 | }
92 |
93 | public int getChannels() {
94 | return channels;
95 | }
96 |
97 | public int getBlockSize0() {
98 | return blockSize0;
99 | }
100 |
101 | public int getBlockSize1() {
102 | return blockSize1;
103 | }
104 |
105 | protected MdctFloat getMdct0() {
106 | return mdct[0];
107 | }
108 |
109 | protected MdctFloat getMdct1() {
110 | return mdct[1];
111 | }
112 |
113 | public int getVersion() {
114 | return version;
115 | }
116 | }
--------------------------------------------------------------------------------
/src/main/java/de/jarnbjo/vorbis/Mapping.java:
--------------------------------------------------------------------------------
1 | /*
2 | * $ProjectName$
3 | * $ProjectRevision$
4 | * -----------------------------------------------------------
5 | * $Id: Mapping.java,v 1.2 2003/03/16 01:11:12 jarnbjo Exp $
6 | * -----------------------------------------------------------
7 | *
8 | * $Author: jarnbjo $
9 | *
10 | * Description:
11 | *
12 | * Copyright 2002-2003 Tor-Einar Jarnbjo
13 | * -----------------------------------------------------------
14 | *
15 | * Change History
16 | * -----------------------------------------------------------
17 | * $Log: Mapping.java,v $
18 | * Revision 1.2 2003/03/16 01:11:12 jarnbjo
19 | * no message
20 | *
21 | *
22 | */
23 |
24 | package de.jarnbjo.vorbis;
25 |
26 | import java.io.IOException;
27 |
28 | import de.jarnbjo.util.io.BitInputStream;
29 |
30 | abstract class Mapping {
31 |
32 | protected static Mapping createInstance(VorbisStream vorbis, BitInputStream source, SetupHeader header) throws VorbisFormatException, IOException {
33 |
34 | int type=source.getInt(16);
35 | switch(type) {
36 | case 0:
37 | //System.out.println("mapping type 0");
38 | return new Mapping0(vorbis, source, header);
39 | default:
40 | throw new VorbisFormatException("Mapping type "+type+" is not supported.");
41 | }
42 | }
43 |
44 | protected abstract int getType();
45 | protected abstract int[] getAngles();
46 | protected abstract int[] getMagnitudes() ;
47 | protected abstract int[] getMux();
48 | protected abstract int[] getSubmapFloors();
49 | protected abstract int[] getSubmapResidues();
50 | protected abstract int getCouplingSteps();
51 | protected abstract int getSubmaps();
52 |
53 | }
--------------------------------------------------------------------------------
/src/main/java/de/jarnbjo/vorbis/Mode.java:
--------------------------------------------------------------------------------
1 | /*
2 | * $ProjectName$
3 | * $ProjectRevision$
4 | * -----------------------------------------------------------
5 | * $Id: Mode.java,v 1.2 2003/03/16 01:11:12 jarnbjo Exp $
6 | * -----------------------------------------------------------
7 | *
8 | * $Author: jarnbjo $
9 | *
10 | * Description:
11 | *
12 | * Copyright 2002-2003 Tor-Einar Jarnbjo
13 | * -----------------------------------------------------------
14 | *
15 | * Change History
16 | * -----------------------------------------------------------
17 | * $Log: Mode.java,v $
18 | * Revision 1.2 2003/03/16 01:11:12 jarnbjo
19 | * no message
20 | *
21 | *
22 | */
23 |
24 | package de.jarnbjo.vorbis;
25 |
26 | import java.io.*;
27 |
28 | import de.jarnbjo.util.io.*;
29 |
30 | class Mode {
31 |
32 | private boolean blockFlag;
33 | private int windowType, transformType, mapping;
34 |
35 | protected Mode(BitInputStream source, SetupHeader header) throws VorbisFormatException, IOException {
36 | blockFlag=source.getBit();
37 | windowType=source.getInt(16);
38 | transformType=source.getInt(16);
39 | mapping=source.getInt(8);
40 |
41 | if(windowType!=0) {
42 | throw new VorbisFormatException("Window type = "+windowType+", != 0");
43 | }
44 |
45 | if(transformType!=0) {
46 | throw new VorbisFormatException("Transform type = "+transformType+", != 0");
47 | }
48 |
49 | if(mapping>header.getMappings().length) {
50 | throw new VorbisFormatException("Mode mapping number is higher than total number of mappings.");
51 | }
52 | }
53 |
54 | protected boolean getBlockFlag() {
55 | return blockFlag;
56 | }
57 |
58 | protected int getWindowType() {
59 | return windowType;
60 | }
61 |
62 | protected int getTransformType() {
63 | return transformType;
64 | }
65 |
66 | protected int getMapping() {
67 | return mapping;
68 | }
69 | }
--------------------------------------------------------------------------------
/src/main/java/de/jarnbjo/vorbis/Residue0.java:
--------------------------------------------------------------------------------
1 | /*
2 | * $ProjectName$
3 | * $ProjectRevision$
4 | * -----------------------------------------------------------
5 | * $Id: Residue0.java,v 1.2 2003/03/16 01:11:12 jarnbjo Exp $
6 | * -----------------------------------------------------------
7 | *
8 | * $Author: jarnbjo $
9 | *
10 | * Description:
11 | *
12 | * Copyright 2002-2003 Tor-Einar Jarnbjo
13 | * -----------------------------------------------------------
14 | *
15 | * Change History
16 | * -----------------------------------------------------------
17 | * $Log: Residue0.java,v $
18 | * Revision 1.2 2003/03/16 01:11:12 jarnbjo
19 | * no message
20 | *
21 | *
22 | */
23 |
24 | package de.jarnbjo.vorbis;
25 |
26 | import java.io.IOException;
27 |
28 | import de.jarnbjo.util.io.BitInputStream;
29 |
30 | class Residue0 extends Residue {
31 |
32 | protected Residue0(BitInputStream source, SetupHeader header) throws VorbisFormatException, IOException {
33 | super(source, header);
34 | }
35 |
36 | protected int getType() {
37 | return 0;
38 | }
39 |
40 | protected void decodeResidue(VorbisStream vorbis, BitInputStream source, Mode mode, int ch, boolean[] doNotDecodeFlags, float[][] vectors) throws VorbisFormatException, IOException {
41 | /** @todo implement */
42 | throw new UnsupportedOperationException();
43 | }
44 | }
--------------------------------------------------------------------------------
/src/main/java/de/jarnbjo/vorbis/Residue1.java:
--------------------------------------------------------------------------------
1 | /*
2 | * $ProjectName$
3 | * $ProjectRevision$
4 | * -----------------------------------------------------------
5 | * $Id: Residue1.java,v 1.2 2003/03/16 01:11:12 jarnbjo Exp $
6 | * -----------------------------------------------------------
7 | *
8 | * $Author: jarnbjo $
9 | *
10 | * Description:
11 | *
12 | * Copyright 2002-2003 Tor-Einar Jarnbjo
13 | * -----------------------------------------------------------
14 | *
15 | * Change History
16 | * -----------------------------------------------------------
17 | * $Log: Residue1.java,v $
18 | * Revision 1.2 2003/03/16 01:11:12 jarnbjo
19 | * no message
20 | *
21 | *
22 | */
23 |
24 | package de.jarnbjo.vorbis;
25 |
26 | import java.io.IOException;
27 | import java.util.*;
28 |
29 | import de.jarnbjo.util.io.BitInputStream;
30 |
31 | class Residue1 extends Residue {
32 |
33 | protected Residue1(BitInputStream source, SetupHeader header) throws VorbisFormatException, IOException {
34 | super(source, header);
35 | }
36 |
37 | protected int getType() {
38 | return 1;
39 | }
40 |
41 | protected void decodeResidue(VorbisStream vorbis, BitInputStream source, Mode mode, int ch, boolean[] doNotDecodeFlags, float[][] vectors) throws VorbisFormatException, IOException {
42 | /** @todo implement */
43 | throw new UnsupportedOperationException();
44 | }
45 |
46 |
47 | }
--------------------------------------------------------------------------------
/src/main/java/de/jarnbjo/vorbis/SetupHeader.java:
--------------------------------------------------------------------------------
1 | /*
2 | * $ProjectName$
3 | * $ProjectRevision$
4 | * -----------------------------------------------------------
5 | * $Id: SetupHeader.java,v 1.2 2003/03/16 01:11:12 jarnbjo Exp $
6 | * -----------------------------------------------------------
7 | *
8 | * $Author: jarnbjo $
9 | *
10 | * Description:
11 | *
12 | * Copyright 2002-2003 Tor-Einar Jarnbjo
13 | * -----------------------------------------------------------
14 | *
15 | * Change History
16 | * -----------------------------------------------------------
17 | * $Log: SetupHeader.java,v $
18 | * Revision 1.2 2003/03/16 01:11:12 jarnbjo
19 | * no message
20 | *
21 | *
22 | */
23 |
24 | package de.jarnbjo.vorbis;
25 |
26 | import java.io.*;
27 |
28 | import de.jarnbjo.util.io.*;
29 |
30 | class SetupHeader {
31 |
32 | private static final long HEADER = 0x736962726f76L; // 'vorbis'
33 |
34 | private CodeBook[] codeBooks;
35 | private Floor[] floors;
36 | private Residue[] residues;
37 | private Mapping[] mappings;
38 | private Mode[] modes;
39 |
40 | public SetupHeader(VorbisStream vorbis, BitInputStream source) throws VorbisFormatException, IOException {
41 |
42 | if(source.getLong(48)!=HEADER) {
43 | throw new VorbisFormatException("The setup header has an illegal leading.");
44 | }
45 |
46 | // read code books
47 |
48 | int codeBookCount=source.getInt(8)+1;
49 | codeBooks=new CodeBook[codeBookCount];
50 |
51 | for(int i=0; i0; x>>=1, res++);
34 | return res;
35 | }
36 |
37 | public static final float float32unpack(int x) {
38 | float mantissa=x&0x1fffff;
39 | float e=(x&0x7fe00000)>>21;
40 | if((x&0x80000000)!=0) {
41 | mantissa=-mantissa;
42 | }
43 | return mantissa*(float)Math.pow(2.0, e-788.0);
44 | }
45 |
46 | public static final int lookup1Values(int a, int b) {
47 | int res=(int)Math.pow(Math.E, Math.log(a)/b);
48 | return intPow(res+1, b)<=a?res+1:res;
49 | }
50 |
51 | public static final int intPow(int base, int e) {
52 | int res=1;
53 | for(; e>0; e--, res*=base);
54 | return res;
55 | }
56 |
57 | public static final boolean isBitSet(int value, int bit) {
58 | return (value&(1<0) {
64 | res+=value&1;
65 | value>>=1;
66 | }
67 | return res;
68 | }
69 |
70 | public static final int lowNeighbour(int[] v, int x) {
71 | int max=-1, n=0;
72 | for(int i=0; imax && v[i]v[x]) {
85 | min=v[i];
86 | n=i;
87 | }
88 | }
89 | return n;
90 | }
91 |
92 | public static final int renderPoint(int x0, int x1, int y0, int y1, int x) {
93 | int dy=y1-y0;
94 | int ady=dy<0?-dy:dy;
95 | int off=(ady*(x-x0))/(x1-x0);
96 | return dy<0?y0-off:y0+off;
97 | }
98 |
99 | public static final void renderLine(final int x0, final int y0, final int x1, final int y1, final float[] v) {
100 | final int dy=y1-y0;
101 | final int adx=x1-x0;
102 | final int base=dy/adx;
103 | final int sy=dy<0?base-1:base+1;
104 | int x=x0;
105 | int y=y0;
106 | int err=0;
107 | final int ady=(dy<0?-dy:dy)-(base>0?base*adx:-base*adx);
108 |
109 | v[x]*=Floor.DB_STATIC_TABLE[y];
110 | for(x=x0+1; x=adx) {
113 | err-=adx;
114 | v[x]*=Floor.DB_STATIC_TABLE[y+=sy];
115 | }
116 | else {
117 | v[x]*=Floor.DB_STATIC_TABLE[y+=base];
118 | }
119 | }
120 | }
121 | }
--------------------------------------------------------------------------------
/src/main/java/de/jarnbjo/vorbis/VorbisFormatException.java:
--------------------------------------------------------------------------------
1 | /*
2 | * $ProjectName$
3 | * $ProjectRevision$
4 | * -----------------------------------------------------------
5 | * $Id: VorbisFormatException.java,v 1.2 2003/03/16 01:11:12 jarnbjo Exp $
6 | * -----------------------------------------------------------
7 | *
8 | * $Author: jarnbjo $
9 | *
10 | * Description:
11 | *
12 | * Copyright 2002-2003 Tor-Einar Jarnbjo
13 | * -----------------------------------------------------------
14 | *
15 | * Change History
16 | * -----------------------------------------------------------
17 | * $Log: VorbisFormatException.java,v $
18 | * Revision 1.2 2003/03/16 01:11:12 jarnbjo
19 | * no message
20 | *
21 | *
22 | */
23 |
24 | package de.jarnbjo.vorbis;
25 |
26 | import java.io.IOException;
27 |
28 | /**
29 | * Exception thrown when trying to read a corrupted Vorbis stream.
30 | */
31 |
32 | public class VorbisFormatException extends IOException {
33 |
34 | public VorbisFormatException() {
35 | super();
36 | }
37 |
38 | public VorbisFormatException(String message) {
39 | super(message);
40 | }
41 | }
--------------------------------------------------------------------------------
/src/main/resources/2char.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ManiaDevelopment/MCraft-Client/d886dfbcda56cd95b10c60cf23cebb48bbb907af/src/main/resources/2char.png
--------------------------------------------------------------------------------
/src/main/resources/armor/chain.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ManiaDevelopment/MCraft-Client/d886dfbcda56cd95b10c60cf23cebb48bbb907af/src/main/resources/armor/chain.png
--------------------------------------------------------------------------------
/src/main/resources/armor/plate.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ManiaDevelopment/MCraft-Client/d886dfbcda56cd95b10c60cf23cebb48bbb907af/src/main/resources/armor/plate.png
--------------------------------------------------------------------------------
/src/main/resources/char.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ManiaDevelopment/MCraft-Client/d886dfbcda56cd95b10c60cf23cebb48bbb907af/src/main/resources/char.png
--------------------------------------------------------------------------------
/src/main/resources/clouds.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ManiaDevelopment/MCraft-Client/d886dfbcda56cd95b10c60cf23cebb48bbb907af/src/main/resources/clouds.png
--------------------------------------------------------------------------------
/src/main/resources/default.gif:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ManiaDevelopment/MCraft-Client/d886dfbcda56cd95b10c60cf23cebb48bbb907af/src/main/resources/default.gif
--------------------------------------------------------------------------------
/src/main/resources/default.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ManiaDevelopment/MCraft-Client/d886dfbcda56cd95b10c60cf23cebb48bbb907af/src/main/resources/default.png
--------------------------------------------------------------------------------
/src/main/resources/dirt.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ManiaDevelopment/MCraft-Client/d886dfbcda56cd95b10c60cf23cebb48bbb907af/src/main/resources/dirt.png
--------------------------------------------------------------------------------
/src/main/resources/grass.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ManiaDevelopment/MCraft-Client/d886dfbcda56cd95b10c60cf23cebb48bbb907af/src/main/resources/grass.png
--------------------------------------------------------------------------------
/src/main/resources/gui/gui.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ManiaDevelopment/MCraft-Client/d886dfbcda56cd95b10c60cf23cebb48bbb907af/src/main/resources/gui/gui.png
--------------------------------------------------------------------------------
/src/main/resources/gui/icons.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ManiaDevelopment/MCraft-Client/d886dfbcda56cd95b10c60cf23cebb48bbb907af/src/main/resources/gui/icons.png
--------------------------------------------------------------------------------
/src/main/resources/item/arrows.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ManiaDevelopment/MCraft-Client/d886dfbcda56cd95b10c60cf23cebb48bbb907af/src/main/resources/item/arrows.png
--------------------------------------------------------------------------------
/src/main/resources/item/sign.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ManiaDevelopment/MCraft-Client/d886dfbcda56cd95b10c60cf23cebb48bbb907af/src/main/resources/item/sign.png
--------------------------------------------------------------------------------
/src/main/resources/mob/creeper.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ManiaDevelopment/MCraft-Client/d886dfbcda56cd95b10c60cf23cebb48bbb907af/src/main/resources/mob/creeper.png
--------------------------------------------------------------------------------
/src/main/resources/mob/pig.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ManiaDevelopment/MCraft-Client/d886dfbcda56cd95b10c60cf23cebb48bbb907af/src/main/resources/mob/pig.png
--------------------------------------------------------------------------------
/src/main/resources/mob/sheep.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ManiaDevelopment/MCraft-Client/d886dfbcda56cd95b10c60cf23cebb48bbb907af/src/main/resources/mob/sheep.png
--------------------------------------------------------------------------------
/src/main/resources/mob/sheep_fur.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ManiaDevelopment/MCraft-Client/d886dfbcda56cd95b10c60cf23cebb48bbb907af/src/main/resources/mob/sheep_fur.png
--------------------------------------------------------------------------------
/src/main/resources/mob/skeleton.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ManiaDevelopment/MCraft-Client/d886dfbcda56cd95b10c60cf23cebb48bbb907af/src/main/resources/mob/skeleton.png
--------------------------------------------------------------------------------
/src/main/resources/mob/spider.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ManiaDevelopment/MCraft-Client/d886dfbcda56cd95b10c60cf23cebb48bbb907af/src/main/resources/mob/spider.png
--------------------------------------------------------------------------------
/src/main/resources/mob/zombie.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ManiaDevelopment/MCraft-Client/d886dfbcda56cd95b10c60cf23cebb48bbb907af/src/main/resources/mob/zombie.png
--------------------------------------------------------------------------------
/src/main/resources/null:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ManiaDevelopment/MCraft-Client/d886dfbcda56cd95b10c60cf23cebb48bbb907af/src/main/resources/null
--------------------------------------------------------------------------------
/src/main/resources/particles.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ManiaDevelopment/MCraft-Client/d886dfbcda56cd95b10c60cf23cebb48bbb907af/src/main/resources/particles.png
--------------------------------------------------------------------------------
/src/main/resources/rain.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ManiaDevelopment/MCraft-Client/d886dfbcda56cd95b10c60cf23cebb48bbb907af/src/main/resources/rain.png
--------------------------------------------------------------------------------
/src/main/resources/rock.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ManiaDevelopment/MCraft-Client/d886dfbcda56cd95b10c60cf23cebb48bbb907af/src/main/resources/rock.png
--------------------------------------------------------------------------------
/src/main/resources/terrain.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ManiaDevelopment/MCraft-Client/d886dfbcda56cd95b10c60cf23cebb48bbb907af/src/main/resources/terrain.png
--------------------------------------------------------------------------------
/src/main/resources/water.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ManiaDevelopment/MCraft-Client/d886dfbcda56cd95b10c60cf23cebb48bbb907af/src/main/resources/water.png
--------------------------------------------------------------------------------
/src/test/java/TestClient.java:
--------------------------------------------------------------------------------
1 | import com.oyasunadev.mcraft.client.core.MinecraftStandalone;
2 |
3 |
4 | /**
5 | * Created with IntelliJ IDEA.
6 | * User: Oliver Yasuna
7 | * Date: 9/30/12
8 | * Time: 5:26 PM
9 | */
10 | public class TestClient
11 | {
12 | public static void main(String[] args)
13 | {
14 | new TestClient();
15 | }
16 |
17 | public TestClient()
18 | {
19 | new MinecraftStandalone().startMinecraft();
20 | }
21 | }
22 |
--------------------------------------------------------------------------------