No end in sight
This commit is contained in:
parent
ca62d2cae1
commit
3d20bcd33d
Binary file not shown.
Binary file not shown.
Binary file not shown.
|
@ -234,6 +234,18 @@ multiplayer.stopSleeping=Leave Bed
|
||||||
multiplayer.player.joined=%s joined the game
|
multiplayer.player.joined=%s joined the game
|
||||||
multiplayer.player.left=%s left the game
|
multiplayer.player.left=%s left the game
|
||||||
|
|
||||||
|
options.vsyncWarning.title=Issues Detected
|
||||||
|
options.vsyncWarning.0=Some of your video settings may be causing
|
||||||
|
options.vsyncWarning.1=the game to lag excessively
|
||||||
|
options.vsyncWarning.2=VSync is disabled, some browsers require
|
||||||
|
options.vsyncWarning.3=VSync to be enabled to hint when the
|
||||||
|
options.vsyncWarning.4=framebuffer has updated. If the game feels
|
||||||
|
options.vsyncWarning.5=significantly slower than is indicated by
|
||||||
|
options.vsyncWarning.6=the FPS counter, you should enable VSync.
|
||||||
|
options.vsyncWarning.fixSettings=Fix Settings
|
||||||
|
options.vsyncWarning.continueAnyway=Continue Anyway
|
||||||
|
options.vsyncWarning.doNotShowAgain=Do Not Show Again
|
||||||
|
|
||||||
chat.cannotSend=Cannot send chat message
|
chat.cannotSend=Cannot send chat message
|
||||||
chat.type.text=<%s> %s
|
chat.type.text=<%s> %s
|
||||||
chat.type.emote=* %s %s
|
chat.type.emote=* %s %s
|
||||||
|
|
|
@ -1,66 +0,0 @@
|
||||||
[C]§f===============
|
|
||||||
[C]§eMinecraft Credits
|
|
||||||
[C]§f===============
|
|
||||||
|
|
||||||
§7Created by:
|
|
||||||
§f Markus Persson
|
|
||||||
|
|
||||||
§7Game design, programming and graphics:
|
|
||||||
§f Markus Persson
|
|
||||||
§f Jens Bergensten
|
|
||||||
§f Nathan Adams
|
|
||||||
|
|
||||||
§7Programming:
|
|
||||||
§f Erik Broes
|
|
||||||
|
|
||||||
§7Music and sound:
|
|
||||||
§f Daniel Rosenfeld
|
|
||||||
|
|
||||||
§7Ingame artwork and paintings:
|
|
||||||
§f Kristoffer Zetterstrand
|
|
||||||
|
|
||||||
§7End game narrative:
|
|
||||||
§f Julian Gough
|
|
||||||
|
|
||||||
§7Website development:
|
|
||||||
§f Tobias Möllstam
|
|
||||||
§f Daniel Frisk
|
|
||||||
§f Leonard Axelsson
|
|
||||||
§f Jens Bergensten
|
|
||||||
§f Markus Persson
|
|
||||||
|
|
||||||
§7Logo and promotional artwork:
|
|
||||||
§f Markus Toivonen
|
|
||||||
|
|
||||||
§7Business and administration:
|
|
||||||
§f Carl Manneh
|
|
||||||
§f Daniel Kaplan
|
|
||||||
|
|
||||||
§7Director of fun:
|
|
||||||
§f Lydia Winters
|
|
||||||
|
|
||||||
§7Number crunching and statistics:
|
|
||||||
§f Patrick Geuder
|
|
||||||
|
|
||||||
§7Additional programming:
|
|
||||||
§f Paul Spooner
|
|
||||||
§f Ryan 'Scaevolus' Hitchman
|
|
||||||
§f Elliot 'Hippoplatimus' Segal
|
|
||||||
|
|
||||||
§7Developers of Mo' Creatures (horses etc):
|
|
||||||
§f John Olarte (DrZhark)
|
|
||||||
§f Kent Christian Jensen
|
|
||||||
§f Dan Roque
|
|
||||||
|
|
||||||
§7Technologies used:
|
|
||||||
§f Java by Oracle
|
|
||||||
§f LWJGL by many talented people
|
|
||||||
§f "3d Sound System" by Paul Lamb
|
|
||||||
§f JOrbis by JCraft
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
§f"Twenty years from now you will be more disappointed by the things that you didn't do than by the ones you did do. So throw off the bowlines. Sail away from the safe harbor. Catch the trade winds in your sails. Explore. Dream. Discover." §7- Unknown
|
|
|
@ -1,151 +0,0 @@
|
||||||
§3I see the player you mean.
|
|
||||||
|
|
||||||
§2PLAYERNAME?
|
|
||||||
|
|
||||||
§3Yes. Take care. It has reached a higher level now. It can read our thoughts.
|
|
||||||
|
|
||||||
§2That doesn't matter. It thinks we are part of the game.
|
|
||||||
|
|
||||||
§3I like this player. It played well. It did not give up.
|
|
||||||
|
|
||||||
§2It is reading our thoughts as though they were words on a screen.
|
|
||||||
|
|
||||||
§3That is how it chooses to imagine many things, when it is deep in the dream of a game.
|
|
||||||
|
|
||||||
§2Words make a wonderful interface. Very flexible. And less terrifying than staring at the reality behind the screen.
|
|
||||||
|
|
||||||
§3They used to hear voices. Before players could read. Back in the days when those who did not play called the players witches, and warlocks. And players dreamed they flew through the air, on sticks powered by demons.
|
|
||||||
|
|
||||||
§2What did this player dream?
|
|
||||||
|
|
||||||
§3This player dreamed of sunlight and trees. Of fire and water. It dreamed it created. And it dreamed it destroyed. It dreamed it hunted, and was hunted. It dreamed of shelter.
|
|
||||||
|
|
||||||
§2Hah, the original interface. A million years old, and it still works. But what true structure did this player create, in the reality behind the screen?
|
|
||||||
|
|
||||||
§3It worked, with a million others, to sculpt a true world in a fold of the §f§k§a§b§3, and created a §f§k§a§b§3 for §f§k§a§b§3, in the §f§k§a§b§3.
|
|
||||||
|
|
||||||
§2It cannot read that thought.
|
|
||||||
|
|
||||||
§3No. It has not yet achieved the highest level. That, it must achieve in the long dream of life, not the short dream of a game.
|
|
||||||
|
|
||||||
§2Does it know that we love it? That the universe is kind?
|
|
||||||
|
|
||||||
§3Sometimes, through the noise of its thoughts, it hears the universe, yes.
|
|
||||||
|
|
||||||
§2But there are times it is sad, in the long dream. It creates worlds that have no summer, and it shivers under a black sun, and it takes its sad creation for reality.
|
|
||||||
|
|
||||||
§3To cure it of sorrow would destroy it. The sorrow is part of its own private task. We cannot interfere.
|
|
||||||
|
|
||||||
§2Sometimes when they are deep in dreams, I want to tell them, they are building true worlds in reality. Sometimes I want to tell them of their importance to the universe. Sometimes, when they have not made a true connection in a while, I want to help them to speak the word they fear.
|
|
||||||
|
|
||||||
§3It reads our thoughts.
|
|
||||||
|
|
||||||
§2Sometimes I do not care. Sometimes I wish to tell them, this world you take for truth is merely §f§k§a§b§2 and §f§k§a§b§2, I wish to tell them that they are §f§k§a§b§2 in the §f§k§a§b§2. They see so little of reality, in their long dream.
|
|
||||||
|
|
||||||
§3And yet they play the game.
|
|
||||||
|
|
||||||
§2But it would be so easy to tell them...
|
|
||||||
|
|
||||||
§3Too strong for this dream. To tell them how to live is to prevent them living.
|
|
||||||
|
|
||||||
§2I will not tell the player how to live.
|
|
||||||
|
|
||||||
§3The player is growing restless.
|
|
||||||
|
|
||||||
§2I will tell the player a story.
|
|
||||||
|
|
||||||
§3But not the truth.
|
|
||||||
|
|
||||||
§2No. A story that contains the truth safely, in a cage of words. Not the naked truth that can burn over any distance.
|
|
||||||
|
|
||||||
§3Give it a body, again.
|
|
||||||
|
|
||||||
§2Yes. Player...
|
|
||||||
|
|
||||||
§3Use its name.
|
|
||||||
|
|
||||||
§2PLAYERNAME. Player of games.
|
|
||||||
|
|
||||||
§3Good.
|
|
||||||
|
|
||||||
§2Take a breath, now. Take another. Feel air in your lungs. Let your limbs return. Yes, move your fingers. Have a body again, under gravity, in air. Respawn in the long dream. There you are. Your body touching the universe again at every point, as though you were separate things. As though we were separate things.
|
|
||||||
|
|
||||||
§3Who are we? Once we were called the spirit of the mountain. Father sun, mother moon. Ancestral spirits, animal spirits. Jinn. Ghosts. The green man. Then gods, demons. Angels. Poltergeists. Aliens, extraterrestrials. Leptons, quarks. The words change. We do not change.
|
|
||||||
|
|
||||||
§2We are the universe. We are everything you think isn't you. You are looking at us now, through your skin and your eyes. And why does the universe touch your skin, and throw light on you? To see you, player. To know you. And to be known. I shall tell you a story.
|
|
||||||
|
|
||||||
§2Once upon a time, there was a player.
|
|
||||||
|
|
||||||
§3The player was you, PLAYERNAME.
|
|
||||||
|
|
||||||
§2Sometimes it thought itself human, on the thin crust of a spinning globe of molten rock. The ball of molten rock circled a ball of blazing gas that was three hundred and thirty thousand times more massive than it. They were so far apart that light took eight minutes to cross the gap. The light was information from a star, and it could burn your skin from a hundred and fifty million kilometres away.
|
|
||||||
|
|
||||||
§2Sometimes the player dreamed it was a miner, on the surface of a world that was flat, and infinite. The sun was a square of white. The days were short; there was much to do; and death was a temporary inconvenience.
|
|
||||||
|
|
||||||
§3Sometimes the player dreamed it was lost in a story.
|
|
||||||
|
|
||||||
§2Sometimes the player dreamed it was other things, in other places. Sometimes these dreams were disturbing. Sometimes very beautiful indeed. Sometimes the player woke from one dream into another, then woke from that into a third.
|
|
||||||
|
|
||||||
§3Sometimes the player dreamed it watched words on a screen.
|
|
||||||
|
|
||||||
§2Let's go back.
|
|
||||||
|
|
||||||
§2The atoms of the player were scattered in the grass, in the rivers, in the air, in the ground. A woman gathered the atoms; she drank and ate and inhaled; and the woman assembled the player, in her body.
|
|
||||||
|
|
||||||
§2And the player awoke, from the warm, dark world of its mother's body, into the long dream.
|
|
||||||
|
|
||||||
§2And the player was a new story, never told before, written in letters of DNA. And the player was a new program, never run before, generated by a sourcecode a billion years old. And the player was a new human, never alive before, made from nothing but milk and love.
|
|
||||||
|
|
||||||
§3You are the player. The story. The program. The human. Made from nothing but milk and love.
|
|
||||||
|
|
||||||
§2Let's go further back.
|
|
||||||
|
|
||||||
§2The seven billion billion billion atoms of the player's body were created, long before this game, in the heart of a star. So the player, too, is information from a star. And the player moves through a story, which is a forest of information planted by a man called Julian, on a flat, infinite world created by a man called Markus, that exists inside a small, private world created by the player, who inhabits a universe created by...
|
|
||||||
|
|
||||||
§3Shush. Sometimes the player created a small, private world that was soft and warm and simple. Sometimes hard, and cold, and complicated. Sometimes it built a model of the universe in its head; flecks of energy, moving through vast empty spaces. Sometimes it called those flecks "electrons" and "protons".
|
|
||||||
|
|
||||||
§2Sometimes it called them "planets" and "stars".
|
|
||||||
|
|
||||||
§2Sometimes it believed it was in a universe that was made of energy that was made of offs and ons; zeros and ones; lines of code. Sometimes it believed it was playing a game. Sometimes it believed it was reading words on a screen.
|
|
||||||
|
|
||||||
§3You are the player, reading words...
|
|
||||||
|
|
||||||
§2Shush... Sometimes the player read lines of code on a screen. Decoded them into words; decoded words into meaning; decoded meaning into feelings, emotions, theories, ideas, and the player started to breathe faster and deeper and realised it was alive, it was alive, those thousand deaths had not been real, the player was alive
|
|
||||||
|
|
||||||
§3You. You. You are alive.
|
|
||||||
|
|
||||||
§2and sometimes the player believed the universe had spoken to it through the sunlight that came through the shuffling leaves of the summer trees
|
|
||||||
|
|
||||||
§3and sometimes the player believed the universe had spoken to it through the light that fell from the crisp night sky of winter, where a fleck of light in the corner of the player's eye might be a star a million times as massive as the sun, boiling its planets to plasma in order to be visible for a moment to the player, walking home at the far side of the universe, suddenly smelling food, almost at the familiar door, about to dream again
|
|
||||||
|
|
||||||
§2and sometimes the player believed the universe had spoken to it through the zeros and ones, through the electricity of the world, through the scrolling words on a screen at the end of a dream
|
|
||||||
|
|
||||||
§3and the universe said I love you
|
|
||||||
|
|
||||||
§2and the universe said you have played the game well
|
|
||||||
|
|
||||||
§3and the universe said everything you need is within you
|
|
||||||
|
|
||||||
§2and the universe said you are stronger than you know
|
|
||||||
|
|
||||||
§3and the universe said you are the daylight
|
|
||||||
|
|
||||||
§2and the universe said you are the night
|
|
||||||
|
|
||||||
§3and the universe said the darkness you fight is within you
|
|
||||||
|
|
||||||
§2and the universe said the light you seek is within you
|
|
||||||
|
|
||||||
§3and the universe said you are not alone
|
|
||||||
|
|
||||||
§2and the universe said you are not separate from every other thing
|
|
||||||
|
|
||||||
§3and the universe said you are the universe tasting itself, talking to itself, reading its own code
|
|
||||||
|
|
||||||
§2and the universe said I love you because you are love.
|
|
||||||
|
|
||||||
§3And the game was over and the player woke up from the dream. And the player began a new dream. And the player dreamed again, dreamed better. And the player was the universe. And the player was love.
|
|
||||||
|
|
||||||
§3You are the player.
|
|
||||||
|
|
||||||
§2Wake up.
|
|
|
@ -1,320 +0,0 @@
|
||||||
As seen on TV!
|
|
||||||
Awesome!
|
|
||||||
100% pure!
|
|
||||||
May contain nuts!
|
|
||||||
Better than Prey!
|
|
||||||
More polygons!
|
|
||||||
Sexy!
|
|
||||||
Limited edition!
|
|
||||||
Flashing letters!
|
|
||||||
Made by Notch!
|
|
||||||
It's here!
|
|
||||||
Best in class!
|
|
||||||
It's finished!
|
|
||||||
Kind of dragon free!
|
|
||||||
Excitement!
|
|
||||||
More than 500 sold!
|
|
||||||
One of a kind!
|
|
||||||
Heaps of hits on YouTube!
|
|
||||||
Indev!
|
|
||||||
Spiders everywhere!
|
|
||||||
Check it out!
|
|
||||||
Holy cow, man!
|
|
||||||
It's a game!
|
|
||||||
Made in Sweden!
|
|
||||||
Uses LWJGL!
|
|
||||||
Reticulating splines!
|
|
||||||
Minecraft!
|
|
||||||
Yaaay!
|
|
||||||
Singleplayer!
|
|
||||||
Keyboard compatible!
|
|
||||||
Undocumented!
|
|
||||||
Ingots!
|
|
||||||
Exploding creepers!
|
|
||||||
That's no moon!
|
|
||||||
l33t!
|
|
||||||
Create!
|
|
||||||
Survive!
|
|
||||||
Dungeon!
|
|
||||||
Exclusive!
|
|
||||||
The bee's knees!
|
|
||||||
Down with O.P.P.!
|
|
||||||
Closed source!
|
|
||||||
Classy!
|
|
||||||
Wow!
|
|
||||||
Not on steam!
|
|
||||||
Oh man!
|
|
||||||
Awesome community!
|
|
||||||
Pixels!
|
|
||||||
Teetsuuuuoooo!
|
|
||||||
Kaaneeeedaaaa!
|
|
||||||
Now with difficulty!
|
|
||||||
Enhanced!
|
|
||||||
90% bug free!
|
|
||||||
Pretty!
|
|
||||||
12 herbs and spices!
|
|
||||||
Fat free!
|
|
||||||
Absolutely no memes!
|
|
||||||
Free dental!
|
|
||||||
Ask your doctor!
|
|
||||||
Minors welcome!
|
|
||||||
Cloud computing!
|
|
||||||
Legal in Finland!
|
|
||||||
Hard to label!
|
|
||||||
Technically good!
|
|
||||||
Bringing home the bacon!
|
|
||||||
Indie!
|
|
||||||
GOTY!
|
|
||||||
Ceci n'est pas une title screen!
|
|
||||||
Euclidian!
|
|
||||||
Now in 3D!
|
|
||||||
Inspirational!
|
|
||||||
Herregud!
|
|
||||||
Complex cellular automata!
|
|
||||||
Yes, sir!
|
|
||||||
Played by cowboys!
|
|
||||||
OpenGL 1.2!
|
|
||||||
Thousands of colors!
|
|
||||||
Try it!
|
|
||||||
Age of Wonders is better!
|
|
||||||
Try the mushroom stew!
|
|
||||||
Sensational!
|
|
||||||
Hot tamale, hot hot tamale!
|
|
||||||
Play him off, keyboard cat!
|
|
||||||
Guaranteed!
|
|
||||||
Macroscopic!
|
|
||||||
Bring it on!
|
|
||||||
Random splash!
|
|
||||||
Call your mother!
|
|
||||||
Monster infighting!
|
|
||||||
Loved by millions!
|
|
||||||
Ultimate edition!
|
|
||||||
Freaky!
|
|
||||||
You've got a brand new key!
|
|
||||||
Water proof!
|
|
||||||
Uninflammable!
|
|
||||||
Whoa, dude!
|
|
||||||
All inclusive!
|
|
||||||
Tell your friends!
|
|
||||||
NP is not in P!
|
|
||||||
Notch <3 ez!
|
|
||||||
Music by C418!
|
|
||||||
Livestreamed!
|
|
||||||
Haunted!
|
|
||||||
Polynomial!
|
|
||||||
Terrestrial!
|
|
||||||
All is full of love!
|
|
||||||
Full of stars!
|
|
||||||
Scientific!
|
|
||||||
Cooler than Spock!
|
|
||||||
Collaborate and listen!
|
|
||||||
Never dig down!
|
|
||||||
Take frequent breaks!
|
|
||||||
Not linear!
|
|
||||||
Han shot first!
|
|
||||||
Nice to meet you!
|
|
||||||
Buckets of lava!
|
|
||||||
Ride the pig!
|
|
||||||
Larger than Earth!
|
|
||||||
sqrt(-1) love you!
|
|
||||||
Phobos anomaly!
|
|
||||||
Punching wood!
|
|
||||||
Falling off cliffs!
|
|
||||||
0% sugar!
|
|
||||||
150% hyperbole!
|
|
||||||
Synecdoche!
|
|
||||||
Let's danec!
|
|
||||||
Seecret Friday update!
|
|
||||||
Reference implementation!
|
|
||||||
Lewd with two dudes with food!
|
|
||||||
Kiss the sky!
|
|
||||||
20 GOTO 10!
|
|
||||||
Verlet intregration!
|
|
||||||
Peter Griffin!
|
|
||||||
Do not distribute!
|
|
||||||
Cogito ergo sum!
|
|
||||||
4815162342 lines of code!
|
|
||||||
A skeleton popped out!
|
|
||||||
The Work of Notch!
|
|
||||||
The sum of its parts!
|
|
||||||
BTAF used to be good!
|
|
||||||
I miss ADOM!
|
|
||||||
umop-apisdn!
|
|
||||||
OICU812!
|
|
||||||
Bring me Ray Cokes!
|
|
||||||
Finger-licking!
|
|
||||||
Thematic!
|
|
||||||
Pneumatic!
|
|
||||||
Sublime!
|
|
||||||
Octagonal!
|
|
||||||
Une baguette!
|
|
||||||
Gargamel plays it!
|
|
||||||
Rita is the new top dog!
|
|
||||||
SWM forever!
|
|
||||||
Representing Edsbyn!
|
|
||||||
Matt Damon!
|
|
||||||
Supercalifragilisticexpialidocious!
|
|
||||||
Consummate V's!
|
|
||||||
Cow Tools!
|
|
||||||
Double buffered!
|
|
||||||
Fan fiction!
|
|
||||||
Flaxkikare!
|
|
||||||
Jason! Jason! Jason!
|
|
||||||
Hotter than the sun!
|
|
||||||
Internet enabled!
|
|
||||||
Autonomous!
|
|
||||||
Engage!
|
|
||||||
Fantasy!
|
|
||||||
DRR! DRR! DRR!
|
|
||||||
Kick it root down!
|
|
||||||
Regional resources!
|
|
||||||
Woo, facepunch!
|
|
||||||
Woo, somethingawful!
|
|
||||||
Woo, /v/!
|
|
||||||
Woo, tigsource!
|
|
||||||
Woo, minecraftforum!
|
|
||||||
Woo, worldofminecraft!
|
|
||||||
Woo, reddit!
|
|
||||||
Woo, 2pp!
|
|
||||||
Google anlyticsed!
|
|
||||||
Now supports åäö!
|
|
||||||
Give us Gordon!
|
|
||||||
Tip your waiter!
|
|
||||||
Very fun!
|
|
||||||
12345 is a bad password!
|
|
||||||
Vote for net neutrality!
|
|
||||||
Lives in a pineapple under the sea!
|
|
||||||
MAP11 has two names!
|
|
||||||
Omnipotent!
|
|
||||||
Gasp!
|
|
||||||
...!
|
|
||||||
Bees, bees, bees, bees!
|
|
||||||
Jag känner en bot!
|
|
||||||
This text is hard to read if you play the game at the default resolution, but at 1080p it's fine!
|
|
||||||
Haha, LOL!
|
|
||||||
Hampsterdance!
|
|
||||||
Switches and ores!
|
|
||||||
Menger sponge!
|
|
||||||
idspispopd!
|
|
||||||
Eple (original edit)!
|
|
||||||
So fresh, so clean!
|
|
||||||
Slow acting portals!
|
|
||||||
Try the Nether!
|
|
||||||
Don't look directly at the bugs!
|
|
||||||
Oh, ok, Pigmen!
|
|
||||||
Finally with ladders!
|
|
||||||
Scary!
|
|
||||||
Play Minecraft, Watch Topgear, Get Pig!
|
|
||||||
Twittered about!
|
|
||||||
Jump up, jump up, and get down!
|
|
||||||
Joel is neat!
|
|
||||||
A riddle, wrapped in a mystery!
|
|
||||||
Huge tracts of land!
|
|
||||||
Welcome to your Doom!
|
|
||||||
Stay a while, stay forever!
|
|
||||||
Stay a while and listen!
|
|
||||||
Treatment for your rash!
|
|
||||||
"Autological" is!
|
|
||||||
Information wants to be free!
|
|
||||||
"Almost never" is an interesting concept!
|
|
||||||
Lots of truthiness!
|
|
||||||
The creeper is a spy!
|
|
||||||
Turing complete!
|
|
||||||
It's groundbreaking!
|
|
||||||
Let our battle's begin!
|
|
||||||
The sky is the limit!
|
|
||||||
Jeb has amazing hair!
|
|
||||||
Casual gaming!
|
|
||||||
Undefeated!
|
|
||||||
Kinda like Lemmings!
|
|
||||||
Follow the train, CJ!
|
|
||||||
Leveraging synergy!
|
|
||||||
This message will never appear on the splash screen, isn't that weird?
|
|
||||||
DungeonQuest is unfair!
|
|
||||||
110813!
|
|
||||||
90210!
|
|
||||||
Check out the far lands!
|
|
||||||
Tyrion would love it!
|
|
||||||
Also try VVVVVV!
|
|
||||||
Also try Super Meat Boy!
|
|
||||||
Also try Terraria!
|
|
||||||
Also try Mount And Blade!
|
|
||||||
Also try Project Zomboid!
|
|
||||||
Also try World of Goo!
|
|
||||||
Also try Limbo!
|
|
||||||
Also try Pixeljunk Shooter!
|
|
||||||
Also try Braid!
|
|
||||||
That's super!
|
|
||||||
Bread is pain!
|
|
||||||
Read more books!
|
|
||||||
Khaaaaaaaaan!
|
|
||||||
Less addictive than TV Tropes!
|
|
||||||
More addictive than lemonade!
|
|
||||||
Bigger than a bread box!
|
|
||||||
Millions of peaches!
|
|
||||||
Fnord!
|
|
||||||
This is my true form!
|
|
||||||
Totally forgot about Dre!
|
|
||||||
Don't bother with the clones!
|
|
||||||
Pumpkinhead!
|
|
||||||
Hobo humping slobo babe!
|
|
||||||
Made by Jeb!
|
|
||||||
Has an ending!
|
|
||||||
Finally complete!
|
|
||||||
Feature packed!
|
|
||||||
Boots with the fur!
|
|
||||||
Stop, hammertime!
|
|
||||||
Testificates!
|
|
||||||
Conventional!
|
|
||||||
Homeomorphic to a 3-sphere!
|
|
||||||
Doesn't avoid double negatives!
|
|
||||||
Place ALL the blocks!
|
|
||||||
Does barrel rolls!
|
|
||||||
Meeting expectations!
|
|
||||||
PC gaming since 1873!
|
|
||||||
Ghoughpteighbteau tchoghs!
|
|
||||||
Déjà vu!
|
|
||||||
Déjà vu!
|
|
||||||
Got your nose!
|
|
||||||
Haley loves Elan!
|
|
||||||
Afraid of the big, black bat!
|
|
||||||
Doesn't use the U-word!
|
|
||||||
Child's play!
|
|
||||||
See you next Friday or so!
|
|
||||||
From the streets of Södermalm!
|
|
||||||
150 bpm for 400000 minutes!
|
|
||||||
Technologic!
|
|
||||||
Funk soul brother!
|
|
||||||
Pumpa kungen!
|
|
||||||
日本ハロー!
|
|
||||||
한국 안녕하세요!
|
|
||||||
Helo Cymru!
|
|
||||||
Cześć Polsko!
|
|
||||||
你好中国!
|
|
||||||
Привет Россия!
|
|
||||||
Γεια σου Ελλάδα!
|
|
||||||
My life for Aiur!
|
|
||||||
Lennart lennart = new Lennart();
|
|
||||||
I see your vocabulary has improved!
|
|
||||||
Who put it there?
|
|
||||||
You can't explain that!
|
|
||||||
if not ok then return end
|
|
||||||
§1C§2o§3l§4o§5r§6m§7a§8t§9i§ac
|
|
||||||
§kFUNKY LOL
|
|
||||||
SOPA means LOSER in Swedish!
|
|
||||||
Big Pointy Teeth!
|
|
||||||
Bekarton guards the gate!
|
|
||||||
Mmmph, mmph!
|
|
||||||
Don't feed avocados to parrots!
|
|
||||||
Swords for everyone!
|
|
||||||
Plz reply to my tweet!
|
|
||||||
.party()!
|
|
||||||
Take her pillow!
|
|
||||||
Put that cookie down!
|
|
||||||
Pretty scary!
|
|
||||||
I have a suggestion.
|
|
||||||
Now with extra hugs!
|
|
||||||
Almost java 6!
|
|
||||||
Woah.
|
|
||||||
HURNERJSGER?
|
|
||||||
What's up, Doc?
|
|
|
@ -240,16 +240,13 @@ public class TextureTerrainMap implements IconRegister {
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public int getIconWidth() {
|
public int getIconWidth() {
|
||||||
// TODO Auto-generated method stub
|
return originX_center;
|
||||||
throw new UnsupportedOperationException("Unimplemented method 'getIconWidth'");
|
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public int getIconHeight() {
|
public int getIconHeight() {
|
||||||
// TODO Auto-generated method stub
|
return originY_center;
|
||||||
throw new UnsupportedOperationException("Unimplemented method 'getIconHeight'");
|
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
private final String basePath;
|
private final String basePath;
|
||||||
|
@ -463,6 +460,7 @@ public class TextureTerrainMap implements IconRegister {
|
||||||
}
|
}
|
||||||
|
|
||||||
public void refreshTextures() {
|
public void refreshTextures() {
|
||||||
|
System.out.println("refreshing textures");
|
||||||
for(TerrainIconV2 t : iconList) {
|
for(TerrainIconV2 t : iconList) {
|
||||||
t.free();
|
t.free();
|
||||||
}
|
}
|
||||||
|
|
|
@ -1,16 +0,0 @@
|
||||||
package net.minecraft.src;
|
|
||||||
|
|
||||||
public abstract class AbstractTexture implements TextureObject
|
|
||||||
{
|
|
||||||
protected int glTextureId = -1;
|
|
||||||
|
|
||||||
public int getGlTextureId()
|
|
||||||
{
|
|
||||||
if (this.glTextureId == -1)
|
|
||||||
{
|
|
||||||
this.glTextureId = TextureUtil.glGenTextures();
|
|
||||||
}
|
|
||||||
|
|
||||||
return this.glTextureId;
|
|
||||||
}
|
|
||||||
}
|
|
|
@ -1,100 +0,0 @@
|
||||||
package net.minecraft.src;
|
|
||||||
|
|
||||||
import net.lax1dude.eaglercraft.EaglerImage;
|
|
||||||
import net.lax1dude.eaglercraft.EaglerInputStream;
|
|
||||||
import net.lax1dude.eaglercraft.TextureLocation;
|
|
||||||
|
|
||||||
import java.io.File;
|
|
||||||
import java.io.FileInputStream;
|
|
||||||
import java.io.FileNotFoundException;
|
|
||||||
import java.io.IOException;
|
|
||||||
import java.io.InputStream;
|
|
||||||
import java.util.*;
|
|
||||||
import javax.imageio.ImageIO;
|
|
||||||
|
|
||||||
public class DefaultResourcePack implements ResourcePack
|
|
||||||
{
|
|
||||||
public static final Set defaultResourceDomains = new HashSet<>(Arrays.asList("minecraft"));
|
|
||||||
private final Map mapResourceFiles = new HashMap<>();
|
|
||||||
private final File fileAssets;
|
|
||||||
|
|
||||||
public DefaultResourcePack(File par1File)
|
|
||||||
{
|
|
||||||
this.fileAssets = par1File;
|
|
||||||
this.readAssetsDir(this.fileAssets);
|
|
||||||
}
|
|
||||||
|
|
||||||
public InputStream getInputStream(TextureLocation par1TextureLocation) throws IOException
|
|
||||||
{
|
|
||||||
InputStream var2 = this.getResourceStream(par1TextureLocation);
|
|
||||||
|
|
||||||
if (var2 != null)
|
|
||||||
{
|
|
||||||
return var2;
|
|
||||||
}
|
|
||||||
else
|
|
||||||
{
|
|
||||||
File var3 = (File)this.mapResourceFiles.get(par1TextureLocation.toString());
|
|
||||||
|
|
||||||
if (var3 != null)
|
|
||||||
{
|
|
||||||
return new FileInputStream(var3);
|
|
||||||
}
|
|
||||||
else
|
|
||||||
{
|
|
||||||
throw new FileNotFoundException("Something is fuck: " + par1TextureLocation.toString() + "I have no idea what the hell this is"); // FIX THIS SHIT
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
private InputStream getResourceStream(TextureLocation par1TextureLocation)
|
|
||||||
{
|
|
||||||
return DefaultResourcePack.class.getResourceAsStream("/assets/minecraft/" + par1TextureLocation);
|
|
||||||
}
|
|
||||||
|
|
||||||
public void addResourceFile(String par1Str, File par2File)
|
|
||||||
{
|
|
||||||
this.mapResourceFiles.put((new TextureLocation(par1Str)).toString(), par2File);
|
|
||||||
}
|
|
||||||
|
|
||||||
public boolean resourceExists(TextureLocation par1TextureLocation)
|
|
||||||
{
|
|
||||||
return this.getResourceStream(par1TextureLocation) != null || this.mapResourceFiles.containsKey(par1TextureLocation.toString());
|
|
||||||
}
|
|
||||||
|
|
||||||
public Set getResourceDomains()
|
|
||||||
{
|
|
||||||
return defaultResourceDomains;
|
|
||||||
}
|
|
||||||
|
|
||||||
public void readAssetsDir(File par1File)
|
|
||||||
{
|
|
||||||
if (par1File.isDirectory())
|
|
||||||
{
|
|
||||||
File[] var2 = par1File.listFiles();
|
|
||||||
int var3 = var2.length;
|
|
||||||
|
|
||||||
for (int var4 = 0; var4 < var3; ++var4)
|
|
||||||
{
|
|
||||||
File var5 = var2[var4];
|
|
||||||
this.readAssetsDir(var5);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
else
|
|
||||||
{
|
|
||||||
//this.addResourceFile(AbstractResourcePack.getRelativeName(this.fileAssets, par1File), par1File);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
public EaglerImage getPackImage() throws IOException
|
|
||||||
{
|
|
||||||
//return ImageIO.read(DefaultResourcePack.class.getResourceAsStream("/" + (new TextureLocation("pack.png"))));
|
|
||||||
return null; // FIX THIS SHIT
|
|
||||||
}
|
|
||||||
|
|
||||||
public String getPackName()
|
|
||||||
{
|
|
||||||
return "Default";
|
|
||||||
}
|
|
||||||
}
|
|
|
@ -1,42 +0,0 @@
|
||||||
package net.minecraft.src;
|
|
||||||
|
|
||||||
import java.awt.image.BufferedImage;
|
|
||||||
import java.io.IOException;
|
|
||||||
|
|
||||||
public class DynamicTexture extends AbstractTexture
|
|
||||||
{
|
|
||||||
private final int[] dynamicTextureData;
|
|
||||||
|
|
||||||
/** width of this icon in pixels */
|
|
||||||
private final int width;
|
|
||||||
|
|
||||||
/** height of this icon in pixels */
|
|
||||||
private final int height;
|
|
||||||
|
|
||||||
public DynamicTexture(BufferedImage par1BufferedImage)
|
|
||||||
{
|
|
||||||
this(par1BufferedImage.getWidth(), par1BufferedImage.getHeight());
|
|
||||||
par1BufferedImage.getRGB(0, 0, par1BufferedImage.getWidth(), par1BufferedImage.getHeight(), this.dynamicTextureData, 0, par1BufferedImage.getWidth());
|
|
||||||
this.updateDynamicTexture();
|
|
||||||
}
|
|
||||||
|
|
||||||
public DynamicTexture(int par1, int par2)
|
|
||||||
{
|
|
||||||
this.width = par1;
|
|
||||||
this.height = par2;
|
|
||||||
this.dynamicTextureData = new int[par1 * par2];
|
|
||||||
TextureUtil.allocateTexture(this.getGlTextureId(), par1, par2);
|
|
||||||
}
|
|
||||||
|
|
||||||
public void loadTexture(ResourceManager par1ResourceManager) throws IOException {}
|
|
||||||
|
|
||||||
public void updateDynamicTexture()
|
|
||||||
{
|
|
||||||
TextureUtil.uploadTexture(this.getGlTextureId(), this.dynamicTextureData, this.width, this.height);
|
|
||||||
}
|
|
||||||
|
|
||||||
public int[] getTextureData()
|
|
||||||
{
|
|
||||||
return this.dynamicTextureData;
|
|
||||||
}
|
|
||||||
}
|
|
|
@ -1,22 +0,0 @@
|
||||||
package net.minecraft.src;
|
|
||||||
|
|
||||||
import net.lax1dude.eaglercraft.TextureLocation;
|
|
||||||
|
|
||||||
import java.io.IOException;
|
|
||||||
|
|
||||||
public class FoliageColorReloadListener implements ResourceManagerReloadListener
|
|
||||||
{
|
|
||||||
private static final TextureLocation field_130079_a = new TextureLocation("textures/colormap/foliage.png");
|
|
||||||
|
|
||||||
public void onResourceManagerReload(ResourceManager par1ResourceManager)
|
|
||||||
{
|
|
||||||
try
|
|
||||||
{
|
|
||||||
ColorizerFoliage.setFoliageBiomeColorizer(TextureUtil.readImageData(par1ResourceManager, field_130079_a));
|
|
||||||
}
|
|
||||||
catch (IOException var3)
|
|
||||||
{
|
|
||||||
;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
|
@ -49,7 +49,7 @@ public class GameSettings {
|
||||||
public boolean snooperEnabled = false;
|
public boolean snooperEnabled = false;
|
||||||
public boolean fullScreen = false;
|
public boolean fullScreen = false;
|
||||||
public boolean enableVsync = true;
|
public boolean enableVsync = true;
|
||||||
public boolean hideVsyncWarning = false;
|
public boolean hideVsyncWarning = true;
|
||||||
public boolean hideServerAddress = false;
|
public boolean hideServerAddress = false;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
@ -296,11 +296,6 @@ public class GameSettings {
|
||||||
this.enableFog = !this.enableFog;
|
this.enableFog = !this.enableFog;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (par1EnumOptions == EnumOptions.ANAGLYPH) {
|
|
||||||
this.anaglyph = !this.anaglyph;
|
|
||||||
this.mc.renderEngine.refreshTextures();
|
|
||||||
}
|
|
||||||
|
|
||||||
if (par1EnumOptions == EnumOptions.FRAMERATE_LIMIT) {
|
if (par1EnumOptions == EnumOptions.FRAMERATE_LIMIT) {
|
||||||
this.limitFramerate = (this.limitFramerate + par2 + 3) % 3;
|
this.limitFramerate = (this.limitFramerate + par2 + 3) % 3;
|
||||||
}
|
}
|
||||||
|
|
|
@ -1,22 +0,0 @@
|
||||||
package net.minecraft.src;
|
|
||||||
|
|
||||||
import net.lax1dude.eaglercraft.TextureLocation;
|
|
||||||
|
|
||||||
import java.io.IOException;
|
|
||||||
|
|
||||||
public class GrassColorReloadListener implements ResourceManagerReloadListener
|
|
||||||
{
|
|
||||||
private static final TextureLocation field_130078_a = new TextureLocation("textures/colormap/grass.png");
|
|
||||||
|
|
||||||
public void onResourceManagerReload(ResourceManager par1ResourceManager)
|
|
||||||
{
|
|
||||||
try
|
|
||||||
{
|
|
||||||
ColorizerGrass.setGrassBiomeColorizer(TextureUtil.readImageData(par1ResourceManager, field_130078_a));
|
|
||||||
}
|
|
||||||
catch (IOException var3)
|
|
||||||
{
|
|
||||||
;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
|
@ -86,7 +86,7 @@ public class GuiIngame extends Gui
|
||||||
|
|
||||||
if (var10 > 0.0F)
|
if (var10 > 0.0F)
|
||||||
{
|
{
|
||||||
this.func_130015_b(var10, var6, var7);
|
this.renderPortalOverlay(var10, var6, var7);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -107,9 +107,7 @@ public class GuiIngame extends Gui
|
||||||
EaglerAdapter.glBlendFunc(EaglerAdapter.GL_ONE_MINUS_DST_COLOR, EaglerAdapter.GL_ONE_MINUS_SRC_COLOR);
|
EaglerAdapter.glBlendFunc(EaglerAdapter.GL_ONE_MINUS_DST_COLOR, EaglerAdapter.GL_ONE_MINUS_SRC_COLOR);
|
||||||
this.drawTexturedModalRect(var6 / 2 - 7, var7 / 2 - 7, 0, 0, 16, 16);
|
this.drawTexturedModalRect(var6 / 2 - 7, var7 / 2 - 7, 0, 0, 16, 16);
|
||||||
EaglerAdapter.glDisable(EaglerAdapter.GL_BLEND);
|
EaglerAdapter.glDisable(EaglerAdapter.GL_BLEND);
|
||||||
this.mc.mcProfiler.startSection("bossHealth");
|
|
||||||
this.renderBossHealth();
|
this.renderBossHealth();
|
||||||
this.mc.mcProfiler.endSection();
|
|
||||||
|
|
||||||
if (this.mc.playerController.shouldDrawHUD())
|
if (this.mc.playerController.shouldDrawHUD())
|
||||||
{
|
{
|
||||||
|
@ -117,9 +115,8 @@ public class GuiIngame extends Gui
|
||||||
}
|
}
|
||||||
|
|
||||||
EaglerAdapter.glDisable(EaglerAdapter.GL_BLEND);
|
EaglerAdapter.glDisable(EaglerAdapter.GL_BLEND);
|
||||||
this.mc.mcProfiler.startSection("actionBar");
|
|
||||||
EaglerAdapter.glEnable(EaglerAdapter.GL_RESCALE_NORMAL);
|
EaglerAdapter.glEnable(EaglerAdapter.GL_RESCALE_NORMAL);
|
||||||
RenderHelper.enableGUIStandardItemLighting();
|
RenderHelper.enableGUIStandardItemLighting2();
|
||||||
|
|
||||||
for (var11 = 0; var11 < 9; ++var11)
|
for (var11 = 0; var11 < 9; ++var11)
|
||||||
{
|
{
|
||||||
|
@ -895,7 +892,7 @@ public class GuiIngame extends Gui
|
||||||
EaglerAdapter.glBlendFunc(EaglerAdapter.GL_SRC_ALPHA, EaglerAdapter.GL_ONE_MINUS_SRC_ALPHA);
|
EaglerAdapter.glBlendFunc(EaglerAdapter.GL_SRC_ALPHA, EaglerAdapter.GL_ONE_MINUS_SRC_ALPHA);
|
||||||
}
|
}
|
||||||
|
|
||||||
private void func_130015_b(float par1, int par2, int par3)
|
private void renderPortalOverlay(float par1, int par2, int par3)
|
||||||
{
|
{
|
||||||
if (par1 < 1.0F)
|
if (par1 < 1.0F)
|
||||||
{
|
{
|
||||||
|
|
|
@ -93,7 +93,7 @@ public class GuiInventory extends InventoryEffectRenderer
|
||||||
float var9 = par5EntityLivingBase.prevRotationYawHead;
|
float var9 = par5EntityLivingBase.prevRotationYawHead;
|
||||||
float var10 = par5EntityLivingBase.rotationYawHead;
|
float var10 = par5EntityLivingBase.rotationYawHead;
|
||||||
EaglerAdapter.glRotatef(135.0F, 0.0F, 1.0F, 0.0F);
|
EaglerAdapter.glRotatef(135.0F, 0.0F, 1.0F, 0.0F);
|
||||||
RenderHelper.enableStandardItemLighting();
|
RenderHelper.enableStandardItemLighting2();
|
||||||
EaglerAdapter.glRotatef(-135.0F, 0.0F, 1.0F, 0.0F);
|
EaglerAdapter.glRotatef(-135.0F, 0.0F, 1.0F, 0.0F);
|
||||||
EaglerAdapter.glRotatef(-((float)Math.atan((double)(par4 / 40.0F))) * 20.0F, 1.0F, 0.0F, 0.0F);
|
EaglerAdapter.glRotatef(-((float)Math.atan((double)(par4 / 40.0F))) * 20.0F, 1.0F, 0.0F, 0.0F);
|
||||||
par5EntityLivingBase.renderYawOffset = (float)Math.atan((double)(par3 / 40.0F)) * 20.0F;
|
par5EntityLivingBase.renderYawOffset = (float)Math.atan((double)(par3 / 40.0F)) * 20.0F;
|
||||||
|
|
|
@ -4,11 +4,10 @@ import java.io.BufferedReader;
|
||||||
import java.io.InputStreamReader;
|
import java.io.InputStreamReader;
|
||||||
import java.util.ArrayList;
|
import java.util.ArrayList;
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
import net.lax1dude.eaglercraft.EaglercraftRandom;
|
|
||||||
|
|
||||||
import net.lax1dude.eaglercraft.TextureLocation;
|
import net.lax1dude.eaglercraft.*;
|
||||||
|
|
||||||
import net.lax1dude.eaglercraft.adapter.Tessellator;
|
import net.lax1dude.eaglercraft.adapter.Tessellator;
|
||||||
import net.lax1dude.eaglercraft.EaglerAdapter;
|
|
||||||
|
|
||||||
public class GuiWinGame extends GuiScreen
|
public class GuiWinGame extends GuiScreen
|
||||||
{
|
{
|
||||||
|
@ -68,28 +67,23 @@ public class GuiWinGame extends GuiScreen
|
||||||
/**
|
/**
|
||||||
* Adds the buttons (and other controls) to the screen in question.
|
* Adds the buttons (and other controls) to the screen in question.
|
||||||
*/
|
*/
|
||||||
public void initGui()
|
public void initGui() {
|
||||||
{
|
if (this.lines == null) {
|
||||||
if (this.lines == null)
|
|
||||||
{
|
|
||||||
this.lines = new ArrayList();
|
this.lines = new ArrayList();
|
||||||
|
|
||||||
try
|
try {
|
||||||
{
|
|
||||||
String var1 = "";
|
String var1 = "";
|
||||||
String var2 = "" + EnumChatFormatting.WHITE + EnumChatFormatting.OBFUSCATED + EnumChatFormatting.GREEN + EnumChatFormatting.AQUA;
|
String var2 = "" + EnumChatFormatting.WHITE + EnumChatFormatting.OBFUSCATED + EnumChatFormatting.GREEN + EnumChatFormatting.AQUA;
|
||||||
short var3 = 274;
|
short var3 = 274;
|
||||||
BufferedReader var4 = new BufferedReader(new InputStreamReader(this.mc.getResourceManager().getResource(new TextureLocation("texts/end.txt")).getInputStream()));
|
|
||||||
EaglercraftRandom var5 = new EaglercraftRandom(8124371L);
|
EaglercraftRandom var5 = new EaglercraftRandom(8124371L);
|
||||||
int var6;
|
int var6;
|
||||||
|
|
||||||
while ((var1 = var4.readLine()) != null)
|
String[] strs = EaglerMisc.bytesToLines(mc.texturePackList.getSelectedTexturePack().getResourceAsBytes("/title/win.txt"));
|
||||||
{
|
for(String str : strs) {
|
||||||
String var7;
|
String var7;
|
||||||
String var8;
|
String var8;
|
||||||
|
|
||||||
for (var1 = var1.replaceAll("PLAYERNAME", this.mc.getSession().getUsername()); var1.contains(var2); var1 = var7 + EnumChatFormatting.WHITE + EnumChatFormatting.OBFUSCATED + "XXXXXXXX".substring(0, var5.nextInt(4) + 3) + var8)
|
for (var1 = var1.replaceAll("PLAYERNAME", EaglerProfile.username); var1.contains(var2); var1 = var7 + EnumChatFormatting.WHITE + EnumChatFormatting.OBFUSCATED + "XXXXXXXX".substring(0, var5.nextInt(4) + 3) + var8) {
|
||||||
{
|
|
||||||
var6 = var1.indexOf(var2);
|
var6 = var1.indexOf(var2);
|
||||||
var7 = var1.substring(0, var6);
|
var7 = var1.substring(0, var6);
|
||||||
var8 = var1.substring(var6 + var2.length());
|
var8 = var1.substring(var6 + var2.length());
|
||||||
|
@ -99,30 +93,27 @@ public class GuiWinGame extends GuiScreen
|
||||||
this.lines.add("");
|
this.lines.add("");
|
||||||
}
|
}
|
||||||
|
|
||||||
for (var6 = 0; var6 < 8; ++var6)
|
for (var6 = 0; var6 < 8; ++var6) {
|
||||||
{
|
|
||||||
this.lines.add("");
|
this.lines.add("");
|
||||||
}
|
}
|
||||||
|
|
||||||
var4 = new BufferedReader(new InputStreamReader(this.mc.getResourceManager().getResource(new TextureLocation("texts/credits.txt")).getInputStream()));
|
strs = EaglerMisc.bytesToLines(mc.texturePackList.getSelectedTexturePack().getResourceAsBytes("/title/credits.txt"));
|
||||||
|
for(String str : strs) {
|
||||||
while ((var1 = var4.readLine()) != null)
|
var1 = var1.replaceAll("PLAYERNAME", EaglerProfile.username);
|
||||||
{
|
|
||||||
var1 = var1.replaceAll("PLAYERNAME", this.mc.getSession().getUsername());
|
|
||||||
var1 = var1.replaceAll("\t", " ");
|
var1 = var1.replaceAll("\t", " ");
|
||||||
this.lines.addAll(this.mc.fontRenderer.listFormattedStringToWidth(var1, var3));
|
this.lines.addAll(this.mc.fontRenderer.listFormattedStringToWidth(var1, var3));
|
||||||
this.lines.add("");
|
this.lines.add("");
|
||||||
}
|
}
|
||||||
|
|
||||||
this.field_73989_c = this.lines.size() * 12;
|
this.field_73989_c = this.lines.size() * 12;
|
||||||
}
|
} catch (Exception var9) {
|
||||||
catch (Exception var9)
|
|
||||||
{
|
|
||||||
var9.printStackTrace();
|
var9.printStackTrace();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
private static final TextureLocation bk = new TextureLocation("%blur%/gui/background.png");
|
||||||
|
|
||||||
private void func_73986_b(int par1, int par2, float par3)
|
private void func_73986_b(int par1, int par2, float par3)
|
||||||
{
|
{
|
||||||
Tessellator var4 = Tessellator.instance;
|
Tessellator var4 = Tessellator.instance;
|
||||||
|
|
|
@ -1,57 +0,0 @@
|
||||||
package net.minecraft.src;
|
|
||||||
|
|
||||||
import net.lax1dude.eaglercraft.TextureLocation;
|
|
||||||
|
|
||||||
import java.awt.image.BufferedImage;
|
|
||||||
import java.awt.image.ImageObserver;
|
|
||||||
import java.io.IOException;
|
|
||||||
import java.io.InputStream;
|
|
||||||
import java.util.ArrayList;
|
|
||||||
import java.util.Iterator;
|
|
||||||
import java.util.List;
|
|
||||||
import javax.imageio.ImageIO;
|
|
||||||
|
|
||||||
public class LayeredTexture extends AbstractTexture
|
|
||||||
{
|
|
||||||
public final List layeredTextureNames;
|
|
||||||
|
|
||||||
public LayeredTexture(String ... par1ArrayOfStr)
|
|
||||||
{
|
|
||||||
this.layeredTextureNames = new ArrayList<>(List.of(par1ArrayOfStr));
|
|
||||||
}
|
|
||||||
|
|
||||||
public void loadTexture(ResourceManager par1ResourceManager) throws IOException
|
|
||||||
{
|
|
||||||
BufferedImage var2 = null;
|
|
||||||
|
|
||||||
try
|
|
||||||
{
|
|
||||||
Iterator var3 = this.layeredTextureNames.iterator();
|
|
||||||
|
|
||||||
while (var3.hasNext())
|
|
||||||
{
|
|
||||||
String var4 = (String)var3.next();
|
|
||||||
|
|
||||||
if (var4 != null)
|
|
||||||
{
|
|
||||||
InputStream var5 = par1ResourceManager.getResource(new TextureLocation(var4)).getInputStream();
|
|
||||||
BufferedImage var6 = ImageIO.read(var5);
|
|
||||||
|
|
||||||
if (var2 == null)
|
|
||||||
{
|
|
||||||
var2 = new BufferedImage(var6.getWidth(), var6.getHeight(), 2);
|
|
||||||
}
|
|
||||||
|
|
||||||
var2.getGraphics().drawImage(var6, 0, 0, (ImageObserver)null);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
catch (IOException var7)
|
|
||||||
{
|
|
||||||
var7.printStackTrace();
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
|
|
||||||
TextureUtil.uploadTextureImage(this.getGlTextureId(), var2);
|
|
||||||
}
|
|
||||||
}
|
|
|
@ -133,9 +133,7 @@ public class Minecraft
|
||||||
/** The profiler instance */
|
/** The profiler instance */
|
||||||
public final Profiler mcProfiler = new Profiler();
|
public final Profiler mcProfiler = new Profiler();
|
||||||
private long field_83002_am = -1L;
|
private long field_83002_am = -1L;
|
||||||
private ReloadableResourceManager mcResourceManager;
|
|
||||||
private List defaultResourcePacks = new ArrayList<>();
|
private List defaultResourcePacks = new ArrayList<>();
|
||||||
private DefaultResourcePack mcDefaultResourcePack;
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Set to true to keep the game loop running. Set to false by shutdown() to allow the game loop to exit cleanly.
|
* Set to true to keep the game loop running. Set to false by shutdown() to allow the game loop to exit cleanly.
|
||||||
|
@ -464,11 +462,6 @@ public class Minecraft
|
||||||
EaglerAdapter.optimize();
|
EaglerAdapter.optimize();
|
||||||
}
|
}
|
||||||
|
|
||||||
private void addDefaultResourcePack()
|
|
||||||
{
|
|
||||||
this.defaultResourcePacks.add(this.mcDefaultResourcePack);
|
|
||||||
}
|
|
||||||
|
|
||||||
private ByteBuffer readImage(File par1File) throws IOException
|
private ByteBuffer readImage(File par1File) throws IOException
|
||||||
{
|
{
|
||||||
BufferedImage var2 = ImageIO.read(par1File);
|
BufferedImage var2 = ImageIO.read(par1File);
|
||||||
|
@ -2010,11 +2003,6 @@ public class Minecraft
|
||||||
return this.renderEngine;
|
return this.renderEngine;
|
||||||
}
|
}
|
||||||
|
|
||||||
public ResourceManager getResourceManager()
|
|
||||||
{
|
|
||||||
return this.mcResourceManager;
|
|
||||||
}
|
|
||||||
|
|
||||||
static String getLaunchedVersion(Minecraft par0Minecraft)
|
static String getLaunchedVersion(Minecraft par0Minecraft)
|
||||||
{
|
{
|
||||||
return "1.6.4";
|
return "1.6.4";
|
||||||
|
|
|
@ -1,10 +0,0 @@
|
||||||
package net.minecraft.src;
|
|
||||||
|
|
||||||
import java.util.List;
|
|
||||||
|
|
||||||
public interface ReloadableResourceManager extends ResourceManager
|
|
||||||
{
|
|
||||||
void reloadResources(List var1);
|
|
||||||
|
|
||||||
void registerReloadListener(ResourceManagerReloadListener var1);
|
|
||||||
}
|
|
|
@ -56,7 +56,7 @@ public class RenderHelper {
|
||||||
EaglerAdapter.glPushMatrix();
|
EaglerAdapter.glPushMatrix();
|
||||||
EaglerAdapter.glRotatef(-30.0F, 0.0F, 1.0F, 0.0F);
|
EaglerAdapter.glRotatef(-30.0F, 0.0F, 1.0F, 0.0F);
|
||||||
EaglerAdapter.glRotatef(165.0F, 1.0F, 0.0F, 0.0F);
|
EaglerAdapter.glRotatef(165.0F, 1.0F, 0.0F, 0.0F);
|
||||||
//EaglerAdapter.glScalef(1.0F, -1.0F, 1.0F);
|
EaglerAdapter.glScalef(1.0F, -1.0F, 1.0F);
|
||||||
enableStandardItemLighting();
|
enableStandardItemLighting();
|
||||||
EaglerAdapter.glPopMatrix();
|
EaglerAdapter.glPopMatrix();
|
||||||
}
|
}
|
||||||
|
|
|
@ -1,186 +0,0 @@
|
||||||
package net.minecraft.src;
|
|
||||||
|
|
||||||
import java.io.IOException;
|
|
||||||
import java.io.InputStream;
|
|
||||||
import java.net.HttpURLConnection;
|
|
||||||
import java.net.URL;
|
|
||||||
|
|
||||||
public abstract class Request
|
|
||||||
{
|
|
||||||
protected HttpURLConnection field_96367_a;
|
|
||||||
private boolean field_96366_c;
|
|
||||||
protected String field_96365_b;
|
|
||||||
|
|
||||||
public Request(String par1Str, int par2, int par3)
|
|
||||||
{
|
|
||||||
|
|
||||||
}
|
|
||||||
|
|
||||||
public void func_100006_a(String par1Str, String par2Str)
|
|
||||||
{
|
|
||||||
|
|
||||||
}
|
|
||||||
|
|
||||||
public int func_96362_a()
|
|
||||||
{
|
|
||||||
try
|
|
||||||
{
|
|
||||||
this.func_96354_d();
|
|
||||||
return this.field_96367_a.getResponseCode();
|
|
||||||
}
|
|
||||||
catch (Exception var2)
|
|
||||||
{
|
|
||||||
throw new ExceptionMcoHttp("Failed URL: " + this.field_96365_b, var2);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
public int func_111221_b()
|
|
||||||
{
|
|
||||||
String var1 = this.field_96367_a.getHeaderField("Retry-After");
|
|
||||||
|
|
||||||
try
|
|
||||||
{
|
|
||||||
return Integer.valueOf(var1).intValue();
|
|
||||||
}
|
|
||||||
catch (Exception var3)
|
|
||||||
{
|
|
||||||
return 5;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
public String func_96364_c()
|
|
||||||
{
|
|
||||||
try
|
|
||||||
{
|
|
||||||
this.func_96354_d();
|
|
||||||
String var1 = this.func_96362_a() >= 400 ? this.func_96352_a(this.field_96367_a.getErrorStream()) : this.func_96352_a(this.field_96367_a.getInputStream());
|
|
||||||
this.func_96360_f();
|
|
||||||
return var1;
|
|
||||||
}
|
|
||||||
catch (IOException var2)
|
|
||||||
{
|
|
||||||
throw new ExceptionMcoHttp("Failed URL: " + this.field_96365_b, var2);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
private String func_96352_a(InputStream par1InputStream) throws IOException
|
|
||||||
{
|
|
||||||
if (par1InputStream == null)
|
|
||||||
{
|
|
||||||
throw new IOException("No response (null)");
|
|
||||||
}
|
|
||||||
else
|
|
||||||
{
|
|
||||||
StringBuilder var2 = new StringBuilder();
|
|
||||||
|
|
||||||
for (int var3 = par1InputStream.read(); var3 != -1; var3 = par1InputStream.read())
|
|
||||||
{
|
|
||||||
var2.append((char)var3);
|
|
||||||
}
|
|
||||||
|
|
||||||
return var2.toString();
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
private void func_96360_f()
|
|
||||||
{
|
|
||||||
byte[] var1 = new byte[1024];
|
|
||||||
InputStream var3;
|
|
||||||
|
|
||||||
try
|
|
||||||
{
|
|
||||||
boolean var2 = false;
|
|
||||||
var3 = this.field_96367_a.getInputStream();
|
|
||||||
|
|
||||||
while (true)
|
|
||||||
{
|
|
||||||
if (var3.read(var1) <= 0)
|
|
||||||
{
|
|
||||||
var3.close();
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
catch (Exception var6)
|
|
||||||
{
|
|
||||||
try
|
|
||||||
{
|
|
||||||
var3 = this.field_96367_a.getErrorStream();
|
|
||||||
boolean var4 = false;
|
|
||||||
|
|
||||||
while (true)
|
|
||||||
{
|
|
||||||
if (var3.read(var1) <= 0)
|
|
||||||
{
|
|
||||||
var3.close();
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
catch (IOException var5)
|
|
||||||
{
|
|
||||||
;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
protected Request func_96354_d()
|
|
||||||
{
|
|
||||||
if (!this.field_96366_c)
|
|
||||||
{
|
|
||||||
Request var1 = this.func_96359_e();
|
|
||||||
this.field_96366_c = true;
|
|
||||||
return var1;
|
|
||||||
}
|
|
||||||
else
|
|
||||||
{
|
|
||||||
return this;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
protected abstract Request func_96359_e();
|
|
||||||
|
|
||||||
public static Request func_96358_a(String par0Str)
|
|
||||||
{
|
|
||||||
return new RequestGet(par0Str, 5000, 10000);
|
|
||||||
}
|
|
||||||
|
|
||||||
public static Request func_96361_b(String par0Str, String par1Str)
|
|
||||||
{
|
|
||||||
return new RequestPost(par0Str, par1Str.getBytes(), 5000, 10000);
|
|
||||||
}
|
|
||||||
|
|
||||||
public static Request func_104064_a(String par0Str, String par1Str, int par2, int par3)
|
|
||||||
{
|
|
||||||
return new RequestPost(par0Str, par1Str.getBytes(), par2, par3);
|
|
||||||
}
|
|
||||||
|
|
||||||
public static Request func_96355_b(String par0Str)
|
|
||||||
{
|
|
||||||
return new RequestDelete(par0Str, 5000, 10000);
|
|
||||||
}
|
|
||||||
|
|
||||||
public static Request func_96363_c(String par0Str, String par1Str)
|
|
||||||
{
|
|
||||||
return new RequestPut(par0Str, par1Str.getBytes(), 5000, 10000);
|
|
||||||
}
|
|
||||||
|
|
||||||
public static Request func_96353_a(String par0Str, String par1Str, int par2, int par3)
|
|
||||||
{
|
|
||||||
return new RequestPut(par0Str, par1Str.getBytes(), par2, par3);
|
|
||||||
}
|
|
||||||
|
|
||||||
public int func_130110_g()
|
|
||||||
{
|
|
||||||
String var1 = this.field_96367_a.getHeaderField("Error-Code");
|
|
||||||
|
|
||||||
try
|
|
||||||
{
|
|
||||||
return Integer.valueOf(var1).intValue();
|
|
||||||
}
|
|
||||||
catch (Exception var3)
|
|
||||||
{
|
|
||||||
return -1;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
|
@ -1,29 +0,0 @@
|
||||||
package net.minecraft.src;
|
|
||||||
|
|
||||||
public class RequestDelete extends Request
|
|
||||||
{
|
|
||||||
public RequestDelete(String par1Str, int par2, int par3)
|
|
||||||
{
|
|
||||||
super(par1Str, par2, par3);
|
|
||||||
}
|
|
||||||
|
|
||||||
public RequestDelete func_96370_f()
|
|
||||||
{
|
|
||||||
try
|
|
||||||
{
|
|
||||||
this.field_96367_a.setDoOutput(true);
|
|
||||||
this.field_96367_a.setRequestMethod("DELETE");
|
|
||||||
this.field_96367_a.connect();
|
|
||||||
return this;
|
|
||||||
}
|
|
||||||
catch (Exception var2)
|
|
||||||
{
|
|
||||||
throw new ExceptionMcoHttp("Failed URL: " + this.field_96365_b, var2);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
public Request func_96359_e()
|
|
||||||
{
|
|
||||||
return this.func_96370_f();
|
|
||||||
}
|
|
||||||
}
|
|
|
@ -1,30 +0,0 @@
|
||||||
package net.minecraft.src;
|
|
||||||
|
|
||||||
public class RequestGet extends Request
|
|
||||||
{
|
|
||||||
public RequestGet(String par1Str, int par2, int par3)
|
|
||||||
{
|
|
||||||
super(par1Str, par2, par3);
|
|
||||||
}
|
|
||||||
|
|
||||||
public RequestGet func_96371_f()
|
|
||||||
{
|
|
||||||
try
|
|
||||||
{
|
|
||||||
this.field_96367_a.setDoInput(true);
|
|
||||||
this.field_96367_a.setDoOutput(true);
|
|
||||||
this.field_96367_a.setUseCaches(false);
|
|
||||||
this.field_96367_a.setRequestMethod("GET");
|
|
||||||
return this;
|
|
||||||
}
|
|
||||||
catch (Exception var2)
|
|
||||||
{
|
|
||||||
throw new ExceptionMcoHttp("Failed URL: " + this.field_96365_b, var2);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
public Request func_96359_e()
|
|
||||||
{
|
|
||||||
return this.func_96371_f();
|
|
||||||
}
|
|
||||||
}
|
|
|
@ -1,38 +0,0 @@
|
||||||
package net.minecraft.src;
|
|
||||||
|
|
||||||
import java.io.OutputStream;
|
|
||||||
|
|
||||||
public class RequestPost extends Request
|
|
||||||
{
|
|
||||||
private byte[] field_96373_c;
|
|
||||||
|
|
||||||
public RequestPost(String par1Str, byte[] par2ArrayOfByte, int par3, int par4)
|
|
||||||
{
|
|
||||||
super(par1Str, par3, par4);
|
|
||||||
this.field_96373_c = par2ArrayOfByte;
|
|
||||||
}
|
|
||||||
|
|
||||||
public RequestPost func_96372_f()
|
|
||||||
{
|
|
||||||
try
|
|
||||||
{
|
|
||||||
this.field_96367_a.setDoInput(true);
|
|
||||||
this.field_96367_a.setDoOutput(true);
|
|
||||||
this.field_96367_a.setUseCaches(false);
|
|
||||||
this.field_96367_a.setRequestMethod("POST");
|
|
||||||
OutputStream var1 = this.field_96367_a.getOutputStream();
|
|
||||||
var1.write(this.field_96373_c);
|
|
||||||
var1.flush();
|
|
||||||
return this;
|
|
||||||
}
|
|
||||||
catch (Exception var2)
|
|
||||||
{
|
|
||||||
throw new ExceptionMcoHttp("Failed URL: " + this.field_96365_b, var2);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
public Request func_96359_e()
|
|
||||||
{
|
|
||||||
return this.func_96372_f();
|
|
||||||
}
|
|
||||||
}
|
|
|
@ -1,37 +0,0 @@
|
||||||
package net.minecraft.src;
|
|
||||||
|
|
||||||
import java.io.OutputStream;
|
|
||||||
|
|
||||||
public class RequestPut extends Request
|
|
||||||
{
|
|
||||||
private byte[] field_96369_c;
|
|
||||||
|
|
||||||
public RequestPut(String par1Str, byte[] par2ArrayOfByte, int par3, int par4)
|
|
||||||
{
|
|
||||||
super(par1Str, par3, par4);
|
|
||||||
this.field_96369_c = par2ArrayOfByte;
|
|
||||||
}
|
|
||||||
|
|
||||||
public RequestPut func_96368_f()
|
|
||||||
{
|
|
||||||
try
|
|
||||||
{
|
|
||||||
this.field_96367_a.setDoOutput(true);
|
|
||||||
this.field_96367_a.setDoInput(true);
|
|
||||||
this.field_96367_a.setRequestMethod("PUT");
|
|
||||||
OutputStream var1 = this.field_96367_a.getOutputStream();
|
|
||||||
var1.write(this.field_96369_c);
|
|
||||||
var1.flush();
|
|
||||||
return this;
|
|
||||||
}
|
|
||||||
catch (Exception var2)
|
|
||||||
{
|
|
||||||
throw new ExceptionMcoHttp("Failed URL: " + this.field_96365_b, var2);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
public Request func_96359_e()
|
|
||||||
{
|
|
||||||
return this.func_96368_f();
|
|
||||||
}
|
|
||||||
}
|
|
|
@ -1,11 +0,0 @@
|
||||||
package net.minecraft.src;
|
|
||||||
|
|
||||||
import java.io.InputStream;
|
|
||||||
|
|
||||||
public interface Resource
|
|
||||||
{
|
|
||||||
InputStream getInputStream();
|
|
||||||
|
|
||||||
boolean hasMetadata();
|
|
||||||
|
|
||||||
}
|
|
|
@ -1,16 +0,0 @@
|
||||||
package net.minecraft.src;
|
|
||||||
|
|
||||||
import net.lax1dude.eaglercraft.TextureLocation;
|
|
||||||
|
|
||||||
import java.io.IOException;
|
|
||||||
import java.util.List;
|
|
||||||
import java.util.Set;
|
|
||||||
|
|
||||||
public interface ResourceManager
|
|
||||||
{
|
|
||||||
Set getResourceDomains();
|
|
||||||
|
|
||||||
Resource getResource(TextureLocation var1) throws IOException;
|
|
||||||
|
|
||||||
List getAllResources(TextureLocation var1) throws IOException;
|
|
||||||
}
|
|
|
@ -1,6 +0,0 @@
|
||||||
package net.minecraft.src;
|
|
||||||
|
|
||||||
public interface ResourceManagerReloadListener
|
|
||||||
{
|
|
||||||
void onResourceManagerReload(ResourceManager var1);
|
|
||||||
}
|
|
|
@ -1,21 +0,0 @@
|
||||||
package net.minecraft.src;
|
|
||||||
|
|
||||||
import net.lax1dude.eaglercraft.EaglerImage;
|
|
||||||
import net.lax1dude.eaglercraft.TextureLocation;
|
|
||||||
|
|
||||||
import java.io.IOException;
|
|
||||||
import java.io.InputStream;
|
|
||||||
import java.util.Set;
|
|
||||||
|
|
||||||
public interface ResourcePack
|
|
||||||
{
|
|
||||||
InputStream getInputStream(TextureLocation var1) throws IOException;
|
|
||||||
|
|
||||||
boolean resourceExists(TextureLocation var1);
|
|
||||||
|
|
||||||
Set getResourceDomains();
|
|
||||||
|
|
||||||
EaglerImage getPackImage() throws IOException;
|
|
||||||
|
|
||||||
String getPackName();
|
|
||||||
}
|
|
|
@ -1,59 +0,0 @@
|
||||||
package net.minecraft.src;
|
|
||||||
|
|
||||||
import net.lax1dude.eaglercraft.TextureLocation;
|
|
||||||
|
|
||||||
import java.awt.image.BufferedImage;
|
|
||||||
import java.io.IOException;
|
|
||||||
import java.io.InputStream;
|
|
||||||
import javax.imageio.ImageIO;
|
|
||||||
|
|
||||||
public class SimpleTexture extends AbstractTexture
|
|
||||||
{
|
|
||||||
private final TextureLocation textureLocation;
|
|
||||||
|
|
||||||
public SimpleTexture(TextureLocation par1TextureLocation)
|
|
||||||
{
|
|
||||||
this.textureLocation = par1TextureLocation;
|
|
||||||
}
|
|
||||||
|
|
||||||
public void loadTexture(ResourceManager par1ResourceManager) throws IOException
|
|
||||||
{
|
|
||||||
InputStream var2 = null;
|
|
||||||
|
|
||||||
try
|
|
||||||
{
|
|
||||||
Resource var3 = par1ResourceManager.getResource(this.textureLocation);
|
|
||||||
var2 = var3.getInputStream();
|
|
||||||
BufferedImage var4 = ImageIO.read(var2);
|
|
||||||
boolean var5 = false;
|
|
||||||
boolean var6 = false;
|
|
||||||
|
|
||||||
if (var3.hasMetadata())
|
|
||||||
{
|
|
||||||
try
|
|
||||||
{
|
|
||||||
TextureMetadataSection var7 = null;
|
|
||||||
|
|
||||||
if (var7 != null)
|
|
||||||
{
|
|
||||||
var5 = var7.getTextureBlur();
|
|
||||||
var6 = var7.getTextureClamp();
|
|
||||||
}
|
|
||||||
}
|
|
||||||
catch (RuntimeException var11)
|
|
||||||
{
|
|
||||||
System.out.printf("Failed reading metadata of: " + this.textureLocation, var11);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
TextureUtil.uploadTextureImageAllocate(this.getGlTextureId(), var4, var5, var6);
|
|
||||||
}
|
|
||||||
finally
|
|
||||||
{
|
|
||||||
if (var2 != null)
|
|
||||||
{
|
|
||||||
var2.close();
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
|
@ -8,7 +8,6 @@ import java.util.Map;
|
||||||
|
|
||||||
import net.lax1dude.eaglercraft.EaglerAdapter;
|
import net.lax1dude.eaglercraft.EaglerAdapter;
|
||||||
import net.lax1dude.eaglercraft.EaglercraftRandom;
|
import net.lax1dude.eaglercraft.EaglercraftRandom;
|
||||||
import net.minecraft.src.Minecraft;
|
|
||||||
|
|
||||||
public class SoundManager {
|
public class SoundManager {
|
||||||
|
|
||||||
|
|
|
@ -1,106 +0,0 @@
|
||||||
package net.minecraft.src;
|
|
||||||
|
|
||||||
import net.lax1dude.eaglercraft.TextureLocation;
|
|
||||||
|
|
||||||
import java.net.MalformedURLException;
|
|
||||||
import java.net.URL;
|
|
||||||
import java.util.ArrayList;
|
|
||||||
import java.util.HashMap;
|
|
||||||
import java.util.List;
|
|
||||||
import java.util.Map;
|
|
||||||
import net.lax1dude.eaglercraft.EaglercraftRandom;
|
|
||||||
|
|
||||||
public class SoundPool
|
|
||||||
{
|
|
||||||
/** The RNG used by SoundPool. */
|
|
||||||
private final EaglercraftRandom rand = new EaglercraftRandom();
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Maps a name (can be sound/newsound/streaming/music/newmusic) to a list of SoundPoolEntry's.
|
|
||||||
*/
|
|
||||||
private final Map nameToSoundPoolEntriesMapping = new HashMap<>();
|
|
||||||
private final ResourceManager soundResourceManager;
|
|
||||||
private final String soundType;
|
|
||||||
private final boolean isGetRandomSound;
|
|
||||||
|
|
||||||
public SoundPool(ResourceManager par1ResourceManager, String par2Str, boolean par3)
|
|
||||||
{
|
|
||||||
this.soundResourceManager = par1ResourceManager;
|
|
||||||
this.soundType = par2Str;
|
|
||||||
this.isGetRandomSound = par3;
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Adds a sound to this sound pool.
|
|
||||||
*/
|
|
||||||
public void addSound(String par1Str)
|
|
||||||
{
|
|
||||||
try
|
|
||||||
{
|
|
||||||
String var2 = par1Str;
|
|
||||||
par1Str = par1Str.substring(0, par1Str.indexOf("."));
|
|
||||||
|
|
||||||
if (this.isGetRandomSound)
|
|
||||||
{
|
|
||||||
while (Character.isDigit(par1Str.charAt(par1Str.length() - 1)))
|
|
||||||
{
|
|
||||||
par1Str = par1Str.substring(0, par1Str.length() - 1);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
par1Str = par1Str.replaceAll("/", ".");
|
|
||||||
Object var3 = (List)this.nameToSoundPoolEntriesMapping.get(par1Str);
|
|
||||||
|
|
||||||
if (var3 == null)
|
|
||||||
{
|
|
||||||
var3 = new ArrayList<>();
|
|
||||||
this.nameToSoundPoolEntriesMapping.put(par1Str, var3);
|
|
||||||
}
|
|
||||||
|
|
||||||
((List)var3).add(new SoundPoolEntry(var2, this.func_110654_c(var2)));
|
|
||||||
}
|
|
||||||
catch (MalformedURLException var4)
|
|
||||||
{
|
|
||||||
var4.printStackTrace();
|
|
||||||
throw new RuntimeException(var4);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
private URL func_110654_c(String par1Str) throws MalformedURLException
|
|
||||||
{
|
|
||||||
TextureLocation var2 = new TextureLocation(par1Str);
|
|
||||||
String var3 = String.format("%s:%s:%s/%s", new Object[] {"mcsounddomain", var2, this.soundType, var2});
|
|
||||||
SoundPoolProtocolHandler var4 = new SoundPoolProtocolHandler(this);
|
|
||||||
return new URL((URL)null, var3, var4);
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* gets a random sound from the specified (by name, can be sound/newsound/streaming/music/newmusic) sound pool.
|
|
||||||
*/
|
|
||||||
public SoundPoolEntry getRandomSoundFromSoundPool(String par1Str)
|
|
||||||
{
|
|
||||||
List var2 = (List)this.nameToSoundPoolEntriesMapping.get(par1Str);
|
|
||||||
return var2 == null ? null : (SoundPoolEntry)var2.get(this.rand.nextInt(var2.size()));
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Gets a random SoundPoolEntry.
|
|
||||||
*/
|
|
||||||
public SoundPoolEntry getRandomSound()
|
|
||||||
{
|
|
||||||
if (this.nameToSoundPoolEntriesMapping.isEmpty())
|
|
||||||
{
|
|
||||||
return null;
|
|
||||||
}
|
|
||||||
else
|
|
||||||
{
|
|
||||||
ArrayList var1 = new ArrayList<>(this.nameToSoundPoolEntriesMapping.keySet());
|
|
||||||
return this.getRandomSoundFromSoundPool((String)var1.get(this.rand.nextInt(var1.size())));
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
static ResourceManager func_110655_a(SoundPool par0SoundPool)
|
|
||||||
{
|
|
||||||
return par0SoundPool.soundResourceManager;
|
|
||||||
}
|
|
||||||
}
|
|
|
@ -1,25 +0,0 @@
|
||||||
package net.minecraft.src;
|
|
||||||
|
|
||||||
import java.net.URL;
|
|
||||||
|
|
||||||
public class SoundPoolEntry
|
|
||||||
{
|
|
||||||
private final String soundName;
|
|
||||||
private final URL soundUrl;
|
|
||||||
|
|
||||||
public SoundPoolEntry(String par1Str, URL par2URL)
|
|
||||||
{
|
|
||||||
this.soundName = par1Str;
|
|
||||||
this.soundUrl = par2URL;
|
|
||||||
}
|
|
||||||
|
|
||||||
public String getSoundName()
|
|
||||||
{
|
|
||||||
return this.soundName;
|
|
||||||
}
|
|
||||||
|
|
||||||
public URL getSoundUrl()
|
|
||||||
{
|
|
||||||
return this.soundUrl;
|
|
||||||
}
|
|
||||||
}
|
|
|
@ -1,20 +0,0 @@
|
||||||
package net.minecraft.src;
|
|
||||||
|
|
||||||
import java.net.URL;
|
|
||||||
import java.net.URLConnection;
|
|
||||||
import java.net.URLStreamHandler;
|
|
||||||
|
|
||||||
class SoundPoolProtocolHandler extends URLStreamHandler
|
|
||||||
{
|
|
||||||
final SoundPool theSoundPool;
|
|
||||||
|
|
||||||
SoundPoolProtocolHandler(SoundPool par1SoundPool)
|
|
||||||
{
|
|
||||||
this.theSoundPool = par1SoundPool;
|
|
||||||
}
|
|
||||||
|
|
||||||
protected URLConnection openConnection(URL par1URL)
|
|
||||||
{
|
|
||||||
return new SoundPoolURLConnection(this.theSoundPool, par1URL, (SoundPoolProtocolHandler)null);
|
|
||||||
}
|
|
||||||
}
|
|
|
@ -1,40 +0,0 @@
|
||||||
package net.minecraft.src;
|
|
||||||
|
|
||||||
import net.lax1dude.eaglercraft.TextureLocation;
|
|
||||||
|
|
||||||
import java.io.InputStream;
|
|
||||||
import java.net.URL;
|
|
||||||
import java.net.URLConnection;
|
|
||||||
|
|
||||||
class SoundPoolURLConnection extends URLConnection
|
|
||||||
{
|
|
||||||
private final TextureLocation field_110659_b;
|
|
||||||
|
|
||||||
final SoundPool theSoundPool;
|
|
||||||
|
|
||||||
private SoundPoolURLConnection(SoundPool par1SoundPool, URL par2URL)
|
|
||||||
{
|
|
||||||
super(par2URL);
|
|
||||||
this.theSoundPool = par1SoundPool;
|
|
||||||
this.field_110659_b = new TextureLocation(par2URL.getPath());
|
|
||||||
}
|
|
||||||
|
|
||||||
public void connect() {}
|
|
||||||
|
|
||||||
public InputStream getInputStream()
|
|
||||||
{
|
|
||||||
try
|
|
||||||
{
|
|
||||||
return SoundPool.func_110655_a(this.theSoundPool).getResource(this.field_110659_b).getInputStream();
|
|
||||||
}
|
|
||||||
catch (Exception ex)
|
|
||||||
{
|
|
||||||
return null;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
SoundPoolURLConnection(SoundPool par1SoundPool, URL par2URL, SoundPoolProtocolHandler par3SoundPoolProtocolHandler)
|
|
||||||
{
|
|
||||||
this(par1SoundPool, par2URL);
|
|
||||||
}
|
|
||||||
}
|
|
|
@ -1,26 +0,0 @@
|
||||||
package net.minecraft.src;
|
|
||||||
|
|
||||||
import java.util.concurrent.Callable;
|
|
||||||
|
|
||||||
class TextureManagerINNER1 implements Callable
|
|
||||||
{
|
|
||||||
final TextureObject theTextureObject;
|
|
||||||
|
|
||||||
final TextureManager theTextureManager;
|
|
||||||
|
|
||||||
TextureManagerINNER1(TextureManager par1TextureManager, TextureObject par2TextureObject)
|
|
||||||
{
|
|
||||||
this.theTextureManager = par1TextureManager;
|
|
||||||
this.theTextureObject = par2TextureObject;
|
|
||||||
}
|
|
||||||
|
|
||||||
public String func_135060_a()
|
|
||||||
{
|
|
||||||
return this.theTextureObject.getClass().getName();
|
|
||||||
}
|
|
||||||
|
|
||||||
public Object call()
|
|
||||||
{
|
|
||||||
return this.func_135060_a();
|
|
||||||
}
|
|
||||||
}
|
|
|
@ -12,8 +12,8 @@ import net.lax1dude.eaglercraft.EaglerImage;
|
||||||
import net.lax1dude.eaglercraft.TextureLocation;
|
import net.lax1dude.eaglercraft.TextureLocation;
|
||||||
|
|
||||||
public class TextureMap implements IconRegister {
|
public class TextureMap implements IconRegister {
|
||||||
public static final TextureLocation locationBlocksTexture = new TextureLocation("textures/atlas/blocks.png");
|
public static final TextureLocation locationBlocksTexture = new TextureLocation("/terrain.png");
|
||||||
public static final TextureLocation locationItemsTexture = new TextureLocation("textures/atlas/items.png");
|
public static final TextureLocation locationItemsTexture = new TextureLocation("/gui/items.png");
|
||||||
|
|
||||||
/** 0 = terrain.png, 1 = items.png */
|
/** 0 = terrain.png, 1 = items.png */
|
||||||
private final int textureType;
|
private final int textureType;
|
||||||
|
|
|
@ -1,10 +0,0 @@
|
||||||
package net.minecraft.src;
|
|
||||||
|
|
||||||
import java.io.IOException;
|
|
||||||
|
|
||||||
public interface TextureObject
|
|
||||||
{
|
|
||||||
void loadTexture(ResourceManager var1) throws IOException;
|
|
||||||
|
|
||||||
int getGlTextureId();
|
|
||||||
}
|
|
|
@ -43,7 +43,7 @@ public class TexturePackList
|
||||||
private Map texturePackCache = new HashMap();
|
private Map texturePackCache = new HashMap();
|
||||||
|
|
||||||
/** The TexturePack that will be used. */
|
/** The TexturePack that will be used. */
|
||||||
private ITexturePack selectedTexturePack;
|
private ITexturePack selectedTexturePack = defaultTexturePack;
|
||||||
|
|
||||||
/** True if a texture pack is downloading in the background. */
|
/** True if a texture pack is downloading in the background. */
|
||||||
private boolean isDownloading;
|
private boolean isDownloading;
|
||||||
|
|
|
@ -4,7 +4,6 @@ import java.util.ArrayList;
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
|
|
||||||
import net.lax1dude.eaglercraft.EaglerMisc;
|
import net.lax1dude.eaglercraft.EaglerMisc;
|
||||||
import net.minecraft.src.Minecraft;
|
|
||||||
|
|
||||||
public class TextureStitched implements Icon {
|
public class TextureStitched implements Icon {
|
||||||
private final String textureName;
|
private final String textureName;
|
||||||
|
|
|
@ -1,186 +0,0 @@
|
||||||
package net.minecraft.src;
|
|
||||||
|
|
||||||
import java.awt.image.BufferedImage;
|
|
||||||
import java.io.IOException;
|
|
||||||
import java.nio.IntBuffer;
|
|
||||||
import javax.imageio.ImageIO;
|
|
||||||
|
|
||||||
import net.lax1dude.eaglercraft.TextureLocation;
|
|
||||||
import net.lax1dude.eaglercraft.EaglerAdapter;
|
|
||||||
|
|
||||||
public class TextureUtil
|
|
||||||
{
|
|
||||||
private static final IntBuffer dataBuffer = GLAllocation.createDirectIntBuffer(4194304);
|
|
||||||
public static final DynamicTexture missingTexture = new DynamicTexture(16, 16);
|
|
||||||
public static final int[] missingTextureData = missingTexture.getTextureData();
|
|
||||||
|
|
||||||
public static int glGenTextures()
|
|
||||||
{
|
|
||||||
return EaglerAdapter.glGenTextures();
|
|
||||||
}
|
|
||||||
|
|
||||||
public static int uploadTextureImage(int par0, BufferedImage par1BufferedImage)
|
|
||||||
{
|
|
||||||
return uploadTextureImageAllocate(par0, par1BufferedImage, false, false);
|
|
||||||
}
|
|
||||||
|
|
||||||
public static void uploadTexture(int par0, int[] par1ArrayOfInteger, int par2, int par3)
|
|
||||||
{
|
|
||||||
bindTexture(par0);
|
|
||||||
uploadTextureSub(par1ArrayOfInteger, par2, par3, 0, 0, false, false);
|
|
||||||
}
|
|
||||||
|
|
||||||
public static void uploadTextureSub(int[] par0ArrayOfInteger, int par1, int par2, int par3, int par4, boolean par5, boolean par6)
|
|
||||||
{
|
|
||||||
int var7 = 4194304 / par1;
|
|
||||||
setTextureBlurred(par5);
|
|
||||||
setTextureClamped(par6);
|
|
||||||
int var10;
|
|
||||||
|
|
||||||
for (int var8 = 0; var8 < par1 * par2; var8 += par1 * var10)
|
|
||||||
{
|
|
||||||
int var9 = var8 / par1;
|
|
||||||
var10 = Math.min(var7, par2 - var9);
|
|
||||||
int var11 = par1 * var10;
|
|
||||||
copyToBufferPos(par0ArrayOfInteger, var8, var11);
|
|
||||||
EaglerAdapter.glTexSubImage2D(EaglerAdapter.GL_TEXTURE_2D, 0, par3, par4 + var9, par1, var10, EaglerAdapter.GL_BGRA, EaglerAdapter.GL_UNSIGNED_INT_8_8_8_8_REV, dataBuffer);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
public static int uploadTextureImageAllocate(int par0, BufferedImage par1BufferedImage, boolean par2, boolean par3)
|
|
||||||
{
|
|
||||||
allocateTexture(par0, par1BufferedImage.getWidth(), par1BufferedImage.getHeight());
|
|
||||||
return uploadTextureImageSub(par0, par1BufferedImage, 0, 0, par2, par3);
|
|
||||||
}
|
|
||||||
|
|
||||||
public static void allocateTexture(int par0, int par1, int par2)
|
|
||||||
{
|
|
||||||
bindTexture(par0);
|
|
||||||
EaglerAdapter.glTexImage2D(EaglerAdapter.GL_TEXTURE_2D, 0, EaglerAdapter.GL_RGBA, par1, par2, 0, EaglerAdapter.GL_BGRA, EaglerAdapter.GL_UNSIGNED_INT_8_8_8_8_REV, (IntBuffer)null);
|
|
||||||
}
|
|
||||||
|
|
||||||
public static int uploadTextureImageSub(int par0, BufferedImage par1BufferedImage, int par2, int par3, boolean par4, boolean par5)
|
|
||||||
{
|
|
||||||
bindTexture(par0);
|
|
||||||
uploadTextureImageSubImpl(par1BufferedImage, par2, par3, par4, par5);
|
|
||||||
return par0;
|
|
||||||
}
|
|
||||||
|
|
||||||
private static void uploadTextureImageSubImpl(BufferedImage par0BufferedImage, int par1, int par2, boolean par3, boolean par4)
|
|
||||||
{
|
|
||||||
int var5 = par0BufferedImage.getWidth();
|
|
||||||
int var6 = par0BufferedImage.getHeight();
|
|
||||||
int var7 = 4194304 / var5;
|
|
||||||
int[] var8 = new int[var7 * var5];
|
|
||||||
setTextureBlurred(par3);
|
|
||||||
setTextureClamped(par4);
|
|
||||||
|
|
||||||
for (int var9 = 0; var9 < var5 * var6; var9 += var5 * var7)
|
|
||||||
{
|
|
||||||
int var10 = var9 / var5;
|
|
||||||
int var11 = Math.min(var7, var6 - var10);
|
|
||||||
int var12 = var5 * var11;
|
|
||||||
par0BufferedImage.getRGB(0, var10, var5, var11, var8, 0, var5);
|
|
||||||
copyToBuffer(var8, var12);
|
|
||||||
EaglerAdapter.glTexSubImage2D(EaglerAdapter.GL_TEXTURE_2D, 0, par1, par2 + var10, var5, var11, EaglerAdapter.GL_BGRA, EaglerAdapter.GL_UNSIGNED_INT_8_8_8_8_REV, dataBuffer);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
private static void setTextureClamped(boolean par0)
|
|
||||||
{
|
|
||||||
if (par0)
|
|
||||||
{
|
|
||||||
EaglerAdapter.glTexParameteri(EaglerAdapter.GL_TEXTURE_2D, EaglerAdapter.GL_TEXTURE_WRAP_S, EaglerAdapter.GL_CLAMP);
|
|
||||||
EaglerAdapter.glTexParameteri(EaglerAdapter.GL_TEXTURE_2D, EaglerAdapter.GL_TEXTURE_WRAP_T, EaglerAdapter.GL_CLAMP);
|
|
||||||
}
|
|
||||||
else
|
|
||||||
{
|
|
||||||
EaglerAdapter.glTexParameteri(EaglerAdapter.GL_TEXTURE_2D, EaglerAdapter.GL_TEXTURE_WRAP_S, EaglerAdapter.GL_REPEAT);
|
|
||||||
EaglerAdapter.glTexParameteri(EaglerAdapter.GL_TEXTURE_2D, EaglerAdapter.GL_TEXTURE_WRAP_T, EaglerAdapter.GL_REPEAT);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
private static void setTextureBlurred(boolean par0)
|
|
||||||
{
|
|
||||||
if (par0)
|
|
||||||
{
|
|
||||||
EaglerAdapter.glTexParameteri(EaglerAdapter.GL_TEXTURE_2D, EaglerAdapter.GL_TEXTURE_MIN_FILTER, EaglerAdapter.GL_LINEAR);
|
|
||||||
EaglerAdapter.glTexParameteri(EaglerAdapter.GL_TEXTURE_2D, EaglerAdapter.GL_TEXTURE_MAG_FILTER, EaglerAdapter.GL_LINEAR);
|
|
||||||
}
|
|
||||||
else
|
|
||||||
{
|
|
||||||
EaglerAdapter.glTexParameteri(EaglerAdapter.GL_TEXTURE_2D, EaglerAdapter.GL_TEXTURE_MIN_FILTER, EaglerAdapter.GL_NEAREST);
|
|
||||||
EaglerAdapter.glTexParameteri(EaglerAdapter.GL_TEXTURE_2D, EaglerAdapter.GL_TEXTURE_MAG_FILTER, EaglerAdapter.GL_NEAREST);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
private static void copyToBuffer(int[] par0ArrayOfInteger, int par1)
|
|
||||||
{
|
|
||||||
copyToBufferPos(par0ArrayOfInteger, 0, par1);
|
|
||||||
}
|
|
||||||
|
|
||||||
private static void copyToBufferPos(int[] par0ArrayOfInteger, int par1, int par2)
|
|
||||||
{
|
|
||||||
int[] var3 = par0ArrayOfInteger;
|
|
||||||
|
|
||||||
if (Minecraft.getMinecraft().gameSettings.anaglyph)
|
|
||||||
{
|
|
||||||
var3 = updateAnaglyph(par0ArrayOfInteger);
|
|
||||||
}
|
|
||||||
|
|
||||||
dataBuffer.clear();
|
|
||||||
dataBuffer.put(var3, par1, par2);
|
|
||||||
dataBuffer.position(0).limit(par2);
|
|
||||||
}
|
|
||||||
|
|
||||||
static void bindTexture(int par0)
|
|
||||||
{
|
|
||||||
EaglerAdapter.glBindTexture(EaglerAdapter.GL_TEXTURE_2D, par0);
|
|
||||||
}
|
|
||||||
|
|
||||||
public static int[] readImageData(ResourceManager par0ResourceManager, TextureLocation par1TextureLocation) throws IOException
|
|
||||||
{
|
|
||||||
BufferedImage var2 = ImageIO.read(par0ResourceManager.getResource(par1TextureLocation).getInputStream());
|
|
||||||
int var3 = var2.getWidth();
|
|
||||||
int var4 = var2.getHeight();
|
|
||||||
int[] var5 = new int[var3 * var4];
|
|
||||||
var2.getRGB(0, 0, var3, var4, var5, 0, var3);
|
|
||||||
return var5;
|
|
||||||
}
|
|
||||||
|
|
||||||
public static int[] updateAnaglyph(int[] par0ArrayOfInteger)
|
|
||||||
{
|
|
||||||
int[] var1 = new int[par0ArrayOfInteger.length];
|
|
||||||
|
|
||||||
for (int var2 = 0; var2 < par0ArrayOfInteger.length; ++var2)
|
|
||||||
{
|
|
||||||
int var3 = par0ArrayOfInteger[var2] >> 24 & 255;
|
|
||||||
int var4 = par0ArrayOfInteger[var2] >> 16 & 255;
|
|
||||||
int var5 = par0ArrayOfInteger[var2] >> 8 & 255;
|
|
||||||
int var6 = par0ArrayOfInteger[var2] & 255;
|
|
||||||
int var7 = (var4 * 30 + var5 * 59 + var6 * 11) / 100;
|
|
||||||
int var8 = (var4 * 30 + var5 * 70) / 100;
|
|
||||||
int var9 = (var4 * 30 + var6 * 70) / 100;
|
|
||||||
var1[var2] = var3 << 24 | var7 << 16 | var8 << 8 | var9;
|
|
||||||
}
|
|
||||||
|
|
||||||
return var1;
|
|
||||||
}
|
|
||||||
|
|
||||||
static
|
|
||||||
{
|
|
||||||
int var0 = -16777216;
|
|
||||||
int var1 = -524040;
|
|
||||||
int[] var2 = new int[] { -524040, -524040, -524040, -524040, -524040, -524040, -524040, -524040};
|
|
||||||
int[] var3 = new int[] { -16777216, -16777216, -16777216, -16777216, -16777216, -16777216, -16777216, -16777216};
|
|
||||||
int var4 = var2.length;
|
|
||||||
|
|
||||||
for (int var5 = 0; var5 < 16; ++var5)
|
|
||||||
{
|
|
||||||
System.arraycopy(var5 < var4 ? var2 : var3, 0, missingTextureData, 16 * var5, var4);
|
|
||||||
System.arraycopy(var5 < var4 ? var3 : var2, 0, missingTextureData, 16 * var5 + var4, var4);
|
|
||||||
}
|
|
||||||
|
|
||||||
missingTexture.updateDynamicTexture();
|
|
||||||
}
|
|
||||||
}
|
|
|
@ -1,5 +0,0 @@
|
||||||
package net.minecraft.src;
|
|
||||||
|
|
||||||
public interface TickableTextureObject extends TextureObject, Tickable
|
|
||||||
{
|
|
||||||
}
|
|
Loading…
Reference in New Issue