Performance patch, add some features
Changes: - Fix some of Notch's shit code - Add Optifine's smooth updates (limits entity updates) - Limit chunk updates - Fix jittery movement - Add singleplayer commands - Use EaglercraftX Random implementation - Added Optifine zoom -Fixed some chunks not rendering
This commit is contained in:
parent
acbb1a3c2c
commit
d5c8ad3a77
3
.gitignore
vendored
Normal file
3
.gitignore
vendored
Normal file
|
@ -0,0 +1,3 @@
|
||||||
|
/.gradle/
|
||||||
|
/output/
|
||||||
|
build/*
|
BIN
jars/jzlib-1.1.3.jar
Normal file
BIN
jars/jzlib-1.1.3.jar
Normal file
Binary file not shown.
BIN
jars/teavm-interop-0.6.1.jar
Normal file
BIN
jars/teavm-interop-0.6.1.jar
Normal file
Binary file not shown.
BIN
jars/teavm-jso-0.6.1.jar
Normal file
BIN
jars/teavm-jso-0.6.1.jar
Normal file
Binary file not shown.
BIN
jars/teavm-jso-apis-0.6.1.jar
Normal file
BIN
jars/teavm-jso-apis-0.6.1.jar
Normal file
Binary file not shown.
|
@ -1,13 +1,14 @@
|
||||||
package net.PeytonPlayz585.awt.image;
|
package net.PeytonPlayz585.awt.image;
|
||||||
|
|
||||||
import java.io.ByteArrayInputStream;
|
import java.io.ByteArrayInputStream;
|
||||||
|
import java.io.IOException;
|
||||||
import java.io.InputStream;
|
import java.io.InputStream;
|
||||||
|
|
||||||
import org.lwjgl.opengl.GL11;
|
import org.lwjgl.opengl.GL11;
|
||||||
|
|
||||||
public class ImageIO {
|
public class ImageIO {
|
||||||
|
|
||||||
public static BufferedImage read(InputStream var1) {
|
public static BufferedImage read(InputStream var1) throws IOException {
|
||||||
ByteArrayInputStream bais = (ByteArrayInputStream)var1;
|
ByteArrayInputStream bais = (ByteArrayInputStream)var1;
|
||||||
byte[] data = bais.readAllBytes();
|
byte[] data = bais.readAllBytes();
|
||||||
|
|
||||||
|
|
22
src/net/PeytonPlayz585/logger/ILogRedirector.java
Normal file
22
src/net/PeytonPlayz585/logger/ILogRedirector.java
Normal file
|
@ -0,0 +1,22 @@
|
||||||
|
package net.PeytonPlayz585.logger;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Copyright (c) 2024 lax1dude. All Rights Reserved.
|
||||||
|
*
|
||||||
|
* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND
|
||||||
|
* ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
|
||||||
|
* WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.
|
||||||
|
* IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT,
|
||||||
|
* INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT
|
||||||
|
* NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
|
||||||
|
* PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,
|
||||||
|
* WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
|
||||||
|
* ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
|
||||||
|
* POSSIBILITY OF SUCH DAMAGE.
|
||||||
|
*
|
||||||
|
*/
|
||||||
|
public interface ILogRedirector {
|
||||||
|
|
||||||
|
void log(String txt, boolean err);
|
||||||
|
|
||||||
|
}
|
43
src/net/PeytonPlayz585/logger/Level.java
Normal file
43
src/net/PeytonPlayz585/logger/Level.java
Normal file
|
@ -0,0 +1,43 @@
|
||||||
|
package net.PeytonPlayz585.logger;
|
||||||
|
|
||||||
|
import java.io.PrintStream;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Copyright (c) 2022 lax1dude. All Rights Reserved.
|
||||||
|
*
|
||||||
|
* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND
|
||||||
|
* ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
|
||||||
|
* WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.
|
||||||
|
* IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT,
|
||||||
|
* INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT
|
||||||
|
* NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
|
||||||
|
* PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,
|
||||||
|
* WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
|
||||||
|
* ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
|
||||||
|
* POSSIBILITY OF SUCH DAMAGE.
|
||||||
|
*
|
||||||
|
*/
|
||||||
|
public enum Level {
|
||||||
|
|
||||||
|
TRACE(0, "TRACE", false), DEBUG(1, "DEBUG", false), INFO(2, "INFO", false),
|
||||||
|
WARN(3, "WARN", false), ERROR(4, "ERROR", true), FATAL(5, "FATAL", true),
|
||||||
|
FINER(6, "FINER", false), SEVERE(7, "SEVERE", true), FINE(8, "FINE", false),
|
||||||
|
OFF(Integer.MAX_VALUE, "DISABLED", false);
|
||||||
|
|
||||||
|
public final int levelInt;
|
||||||
|
public final String levelName;
|
||||||
|
public final PrintStream stdout;
|
||||||
|
public final boolean isErr;
|
||||||
|
|
||||||
|
private Level(int levelInt, String levelName, boolean stderr) {
|
||||||
|
this.levelInt = levelInt;
|
||||||
|
this.levelName = levelName;
|
||||||
|
this.stdout = stderr ? System.err : System.out;
|
||||||
|
this.isErr = stderr;
|
||||||
|
}
|
||||||
|
|
||||||
|
PrintStream getPrintStream() {
|
||||||
|
return stdout;
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
48
src/net/PeytonPlayz585/logger/LogManager.java
Normal file
48
src/net/PeytonPlayz585/logger/LogManager.java
Normal file
|
@ -0,0 +1,48 @@
|
||||||
|
package net.PeytonPlayz585.logger;
|
||||||
|
|
||||||
|
import java.util.HashMap;
|
||||||
|
import java.util.Map;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Copyright (c) 2022-2024 lax1dude. All Rights Reserved.
|
||||||
|
*
|
||||||
|
* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND
|
||||||
|
* ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
|
||||||
|
* WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.
|
||||||
|
* IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT,
|
||||||
|
* INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT
|
||||||
|
* NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
|
||||||
|
* PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,
|
||||||
|
* WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
|
||||||
|
* ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
|
||||||
|
* POSSIBILITY OF SUCH DAMAGE.
|
||||||
|
*
|
||||||
|
*/
|
||||||
|
public class LogManager {
|
||||||
|
|
||||||
|
private static final Map<String,Logger> loggerInstances = new HashMap();
|
||||||
|
|
||||||
|
public static final Object logLock = new Object();
|
||||||
|
public static Level logLevel = Level.DEBUG;
|
||||||
|
public static ILogRedirector logRedirector = null;
|
||||||
|
|
||||||
|
public static Logger getLogger() {
|
||||||
|
return getLogger("Minecraft");
|
||||||
|
}
|
||||||
|
|
||||||
|
public static Logger getLogger(String name) {
|
||||||
|
Logger ret;
|
||||||
|
synchronized(loggerInstances) {
|
||||||
|
ret = loggerInstances.get(name);
|
||||||
|
if(ret == null) {
|
||||||
|
ret = new Logger(name);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return ret;
|
||||||
|
}
|
||||||
|
|
||||||
|
public static void setLevel(Level lv) {
|
||||||
|
logLevel = lv;
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
193
src/net/PeytonPlayz585/logger/Logger.java
Normal file
193
src/net/PeytonPlayz585/logger/Logger.java
Normal file
|
@ -0,0 +1,193 @@
|
||||||
|
package net.PeytonPlayz585.logger;
|
||||||
|
|
||||||
|
import java.text.DateFormat;
|
||||||
|
import java.text.SimpleDateFormat;
|
||||||
|
import java.util.Calendar;
|
||||||
|
import java.util.Date;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Copyright (c) 2022-2024 lax1dude. All Rights Reserved.
|
||||||
|
*
|
||||||
|
* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND
|
||||||
|
* ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
|
||||||
|
* WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.
|
||||||
|
* IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT,
|
||||||
|
* INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT
|
||||||
|
* NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
|
||||||
|
* PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,
|
||||||
|
* WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
|
||||||
|
* ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
|
||||||
|
* POSSIBILITY OF SUCH DAMAGE.
|
||||||
|
*
|
||||||
|
*/
|
||||||
|
public class Logger {
|
||||||
|
|
||||||
|
public final String loggerName;
|
||||||
|
|
||||||
|
Logger(String name) {
|
||||||
|
this.loggerName = name;
|
||||||
|
}
|
||||||
|
|
||||||
|
public void trace(String msg) {
|
||||||
|
log(Level.TRACE, msg);
|
||||||
|
}
|
||||||
|
|
||||||
|
public void trace(String msg, Object... args) {
|
||||||
|
log(Level.TRACE, msg, args);
|
||||||
|
}
|
||||||
|
|
||||||
|
public void trace(Throwable msg) {
|
||||||
|
log(Level.WARN, msg);
|
||||||
|
}
|
||||||
|
|
||||||
|
public void debug(String msg) {
|
||||||
|
log(Level.DEBUG, msg);
|
||||||
|
}
|
||||||
|
|
||||||
|
public void debug(String msg, Object... args) {
|
||||||
|
log(Level.DEBUG, msg, args);
|
||||||
|
}
|
||||||
|
|
||||||
|
public void debug(Throwable msg) {
|
||||||
|
log(Level.DEBUG, msg);
|
||||||
|
}
|
||||||
|
|
||||||
|
public void info(String msg) {
|
||||||
|
log(Level.INFO, msg);
|
||||||
|
}
|
||||||
|
|
||||||
|
public void info(String msg, Object... args) {
|
||||||
|
log(Level.INFO, msg, args);
|
||||||
|
}
|
||||||
|
|
||||||
|
public void info(Throwable msg) {
|
||||||
|
log(Level.INFO, msg);
|
||||||
|
}
|
||||||
|
|
||||||
|
public void warn(String msg) {
|
||||||
|
log(Level.WARN, msg);
|
||||||
|
}
|
||||||
|
|
||||||
|
public void warn(String msg, Object... args) {
|
||||||
|
log(Level.WARN, msg, args);
|
||||||
|
}
|
||||||
|
|
||||||
|
public void warn(Throwable msg) {
|
||||||
|
log(Level.WARN, msg);
|
||||||
|
}
|
||||||
|
|
||||||
|
public void error(String msg) {
|
||||||
|
log(Level.ERROR, msg);
|
||||||
|
}
|
||||||
|
|
||||||
|
public void error(String msg, Object... args) {
|
||||||
|
log(Level.ERROR, msg, args);
|
||||||
|
}
|
||||||
|
|
||||||
|
public void error(Throwable msg) {
|
||||||
|
log(Level.ERROR, msg);
|
||||||
|
}
|
||||||
|
|
||||||
|
public void fatal(String msg) {
|
||||||
|
log(Level.FATAL, msg);
|
||||||
|
}
|
||||||
|
|
||||||
|
public void fatal(String msg, Object... args) {
|
||||||
|
log(Level.FATAL, msg, args);
|
||||||
|
}
|
||||||
|
|
||||||
|
public void fatal(Throwable msg) {
|
||||||
|
log(Level.FATAL, msg);
|
||||||
|
}
|
||||||
|
|
||||||
|
private static final SimpleDateFormat fmt = fixDateFormat(new SimpleDateFormat("hh:mm:ss+SSS"));
|
||||||
|
private static final Date dateInstance = new Date();
|
||||||
|
|
||||||
|
public void log(Level level, String msg) {
|
||||||
|
if(level.levelInt >= LogManager.logLevel.levelInt) {
|
||||||
|
synchronized(LogManager.logLock) {
|
||||||
|
dateInstance.setTime(System.currentTimeMillis());
|
||||||
|
String line = "[" + fmt.format(dateInstance) + "]" +
|
||||||
|
"[" + "main" + "/" + level.levelName + "]" +
|
||||||
|
"[" + loggerName + "]: " + msg;
|
||||||
|
level.getPrintStream().println(line);
|
||||||
|
if(LogManager.logRedirector != null) {
|
||||||
|
LogManager.logRedirector.log(line, level.isErr);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
public void log(Level level, String msg, Object... args) {
|
||||||
|
if(level.levelInt >= LogManager.logLevel.levelInt) {
|
||||||
|
synchronized(LogManager.logLock) {
|
||||||
|
dateInstance.setTime(System.currentTimeMillis());
|
||||||
|
String line = "[" + fmt.format(dateInstance) + "]" +
|
||||||
|
"[" + "main" + "/" + level.levelName + "]" +
|
||||||
|
"[" + loggerName + "]: " + formatParams(msg, args);
|
||||||
|
level.getPrintStream().println(line);
|
||||||
|
if(LogManager.logRedirector != null) {
|
||||||
|
LogManager.logRedirector.log(line, level.isErr);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
public static String formatParams(String msg, Object... args) {
|
||||||
|
if(args.length > 0) {
|
||||||
|
StringBuilder builtString = new StringBuilder();
|
||||||
|
for(int i = 0; i < args.length; ++i) {
|
||||||
|
int idx = msg.indexOf("{}");
|
||||||
|
if(idx != -1) {
|
||||||
|
builtString.append(msg.substring(0, idx));
|
||||||
|
builtString.append(args[i]);
|
||||||
|
msg = msg.substring(idx + 2);
|
||||||
|
}else {
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
builtString.append(msg);
|
||||||
|
return builtString.toString();
|
||||||
|
}else {
|
||||||
|
return msg;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
public void log(Level level, Throwable msg) {
|
||||||
|
logExcp(level, "Exception Thrown", msg);
|
||||||
|
}
|
||||||
|
|
||||||
|
private void logExcp(final Level level, String h, Throwable msg) {
|
||||||
|
log(level, "{}: {}", h, msg.toString());
|
||||||
|
Throwable cause = msg.getCause();
|
||||||
|
if(cause != null) {
|
||||||
|
logExcp(level, "Caused By", cause);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
public void finer(String format, Object... params) {
|
||||||
|
log(Level.FINER, format, params);
|
||||||
|
}
|
||||||
|
|
||||||
|
public boolean isDebugEnabled() {
|
||||||
|
return LogManager.logLevel.levelInt <= Level.DEBUG.levelInt;
|
||||||
|
}
|
||||||
|
|
||||||
|
private static Calendar getLocaleCalendar() {
|
||||||
|
return Calendar.getInstance();
|
||||||
|
}
|
||||||
|
|
||||||
|
private static <T extends DateFormat> T fixDateFormat(T input) {
|
||||||
|
input.setCalendar(getLocaleCalendar());
|
||||||
|
return input;
|
||||||
|
}
|
||||||
|
|
||||||
|
public void severe(String format, Object... params) {
|
||||||
|
log(Level.SEVERE, format, params);
|
||||||
|
}
|
||||||
|
|
||||||
|
public void fine(String format, Object... params) {
|
||||||
|
log(Level.FINE, format, params);
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
183
src/net/lax1dude/eaglercraft/beta/SingleplayerCommands.java
Normal file
183
src/net/lax1dude/eaglercraft/beta/SingleplayerCommands.java
Normal file
|
@ -0,0 +1,183 @@
|
||||||
|
package net.lax1dude.eaglercraft.beta;
|
||||||
|
|
||||||
|
import java.util.HashMap;
|
||||||
|
import java.util.Map.Entry;
|
||||||
|
|
||||||
|
import net.minecraft.client.Minecraft;
|
||||||
|
import net.minecraft.src.Block;
|
||||||
|
import net.minecraft.src.Entity;
|
||||||
|
import net.minecraft.src.EntityList;
|
||||||
|
import net.minecraft.src.FontRenderer;
|
||||||
|
import net.minecraft.src.Item;
|
||||||
|
import net.minecraft.src.ItemStack;
|
||||||
|
import net.minecraft.src.MathHelper;
|
||||||
|
import net.minecraft.src.WorldInfo;
|
||||||
|
|
||||||
|
public class SingleplayerCommands {
|
||||||
|
|
||||||
|
public static final HashMap<String, Command> singleplayerCommands;
|
||||||
|
|
||||||
|
static {
|
||||||
|
singleplayerCommands = new HashMap();
|
||||||
|
singleplayerCommands.put("help", new CommandHelp());
|
||||||
|
singleplayerCommands.put("give", new CommandGiveItem());
|
||||||
|
singleplayerCommands.put("summon", new CommandSummon());
|
||||||
|
singleplayerCommands.put("time", new CommandTime());
|
||||||
|
}
|
||||||
|
|
||||||
|
public static interface Command {
|
||||||
|
void processCommand(Minecraft mc, String[] args) throws Throwable;
|
||||||
|
String getDescription();
|
||||||
|
}
|
||||||
|
|
||||||
|
public static class CommandException extends RuntimeException {
|
||||||
|
public CommandException() { super(); }
|
||||||
|
public CommandException(String message, Throwable cause) { super(message, cause); }
|
||||||
|
public CommandException(String message) { super(message); }
|
||||||
|
}
|
||||||
|
|
||||||
|
public static void processCommand(Minecraft mc, String cmd) {
|
||||||
|
String[] args = cmd.split("\\s+");
|
||||||
|
if(args.length > 0) {
|
||||||
|
Command command = singleplayerCommands.get(args[0]);
|
||||||
|
if(command != null) {
|
||||||
|
String[] passArgs = new String[args.length - 1];
|
||||||
|
System.arraycopy(args, 1, passArgs, 0, passArgs.length);
|
||||||
|
try {
|
||||||
|
command.processCommand(mc, passArgs);
|
||||||
|
}catch(CommandException t) {
|
||||||
|
mc.displayErrorChat("Command Error: " + FontRenderer.formatChar + "r" + t.getMessage() + (t.getCause() != null ? " (caused by: " + t.getCause().toString() + ")" : ""));
|
||||||
|
//t.printStackTrace();
|
||||||
|
}catch(Throwable t) {
|
||||||
|
mc.displayErrorChat("Command Error: " + FontRenderer.formatChar + "r" + t.toString());
|
||||||
|
//t.printStackTrace();
|
||||||
|
}
|
||||||
|
}else {
|
||||||
|
mc.displayErrorChat("Command '" + args[0] + "' does not exist");
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
public static class CommandHelp implements Command {
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void processCommand(Minecraft mc, String[] args) {
|
||||||
|
mc.displayChat(FontRenderer.formatChar + "aAvailable Singleplayer Commands:");
|
||||||
|
for(Entry<String, Command> cmd : singleplayerCommands.entrySet()) {
|
||||||
|
mc.displayChat(" " + FontRenderer.formatChar + "e/" + cmd.getKey() + FontRenderer.formatChar + "r - " + cmd.getValue().getDescription());
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public String getDescription() {
|
||||||
|
return "list all available commands";
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
public static class CommandGiveItem implements Command {
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void processCommand(Minecraft mc, String[] args) throws Throwable {
|
||||||
|
if(args.length != 1 && args.length != 2 && args.length != 3) {
|
||||||
|
throw new CommandException("arguments must be: <id> [count] [damage]");
|
||||||
|
}
|
||||||
|
int id = Integer.parseInt(args[0]);
|
||||||
|
boolean exists = id < 256 ? Block.blocksList[id] != null : Item.itemsList[id] != null;
|
||||||
|
if(exists) {
|
||||||
|
ItemStack stack = new ItemStack(id, args.length == 2 ? Integer.parseInt(args[1]) : 1, args.length == 3 ? Integer.parseInt(args[2]) : 0);
|
||||||
|
mc.thePlayer.inventory.addItemStackToInventory(stack);
|
||||||
|
if(id < 256) {
|
||||||
|
mc.displayChat("Gave player block '" + id + "'");
|
||||||
|
}else {
|
||||||
|
mc.displayChat("Gave player item '" + id + "'");
|
||||||
|
}
|
||||||
|
}else {
|
||||||
|
mc.displayErrorChat("Item/Block id #" + id + " does not exist!");
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public String getDescription() {
|
||||||
|
return "give item <id> [count]";
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
public static class CommandSummon implements Command {
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void processCommand(Minecraft mc, String[] args) throws Throwable {
|
||||||
|
if(args.length != 1 && args.length != 4) {
|
||||||
|
throw new CommandException("arguments must be: <name> [x] [y] [z]");
|
||||||
|
}
|
||||||
|
Entity e;
|
||||||
|
try {
|
||||||
|
int id = Integer.parseInt(args[0]);
|
||||||
|
if(id == 1 || id == 49 || id == 9) {
|
||||||
|
throw new CommandException("Entity id '" + args[0] + "' is not registered");
|
||||||
|
}
|
||||||
|
e = EntityList.createEntity(id, mc.theWorld);
|
||||||
|
}catch(NumberFormatException ex) {
|
||||||
|
String s = args[0].toLowerCase();
|
||||||
|
if(s.equals("item") || s.equals("monster") || s.equals("painting")) {
|
||||||
|
throw new CommandException("Entity id '" + args[0] + "' is not registered");
|
||||||
|
}
|
||||||
|
e = EntityList.createEntityInWorld(s, mc.theWorld);
|
||||||
|
}
|
||||||
|
if(e == null) {
|
||||||
|
throw new CommandException("Entity id '" + args[0] + "' is not registered");
|
||||||
|
}
|
||||||
|
int x, y, z;
|
||||||
|
if(args.length == 4) {
|
||||||
|
x = Integer.parseInt(args[1]);
|
||||||
|
y = Integer.parseInt(args[2]);
|
||||||
|
z = Integer.parseInt(args[3]);
|
||||||
|
while(y > 0 && !mc.theWorld.isBlockOpaqueCube(x, y - 1, z)) {
|
||||||
|
--y;
|
||||||
|
}
|
||||||
|
}else {
|
||||||
|
x = MathHelper.floor_double(mc.thePlayer.posX);
|
||||||
|
y = MathHelper.floor_double(mc.thePlayer.posY);
|
||||||
|
z = MathHelper.floor_double(mc.thePlayer.posZ);
|
||||||
|
}
|
||||||
|
e.setLocationAndAngles(x, y, z, 0.0f, 0.0f);
|
||||||
|
mc.theWorld.entityJoinedWorld(e);
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public String getDescription() {
|
||||||
|
return "spawn an entity <id> [x] [y] [z]";
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
public static class CommandTime implements Command {
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void processCommand(Minecraft mc, String[] args) throws Throwable {
|
||||||
|
int i;
|
||||||
|
if(args.length != 1) {
|
||||||
|
throw new CommandException("arguments must be: <ticks>");
|
||||||
|
}
|
||||||
|
try {
|
||||||
|
i = Integer.parseInt(args[0]);
|
||||||
|
}catch(NumberFormatException ex) {
|
||||||
|
throw new CommandException("time argument must be an integer");
|
||||||
|
}
|
||||||
|
WorldInfo inf = mc.theWorld.getWorldInfo();
|
||||||
|
long t = inf.getWorldTime();
|
||||||
|
t = t / 24000l * 24000l;
|
||||||
|
t += i;
|
||||||
|
inf.setWorldTime(t);
|
||||||
|
mc.displayChat("Set world time to " + i + " ticks");
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public String getDescription() {
|
||||||
|
return "set world time in <ticks>";
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
|
@ -817,7 +817,7 @@ public class Minecraft implements Runnable {
|
||||||
this.thePlayer.dropCurrentItem();
|
this.thePlayer.dropCurrentItem();
|
||||||
}
|
}
|
||||||
|
|
||||||
if(this.isMultiplayerWorld() && Keyboard.getEventKey() == this.gameSettings.keyBindChat.keyCode) {
|
if(Keyboard.getEventKey() == this.gameSettings.keyBindChat.keyCode) {
|
||||||
this.displayGuiScreen(new GuiChat());
|
this.displayGuiScreen(new GuiChat());
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -1233,4 +1233,12 @@ public class Minecraft implements Runnable {
|
||||||
public static Minecraft getMinecraft() {
|
public static Minecraft getMinecraft() {
|
||||||
return theMinecraft;
|
return theMinecraft;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public void displayChat(String s) {
|
||||||
|
this.ingameGUI.addChatMessage(s);
|
||||||
|
}
|
||||||
|
|
||||||
|
public void displayErrorChat(String s) {
|
||||||
|
this.ingameGUI.addChatMessage(FontRenderer.formatChar + "c" + s);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -78,7 +78,12 @@ public class EaglerSaveFormat implements ISaveFormat {
|
||||||
|
|
||||||
//Returns world info for the world
|
//Returns world info for the world
|
||||||
public WorldInfo func_22173_b(String var1) {
|
public WorldInfo func_22173_b(String var1) {
|
||||||
byte[] lvl = File.readFile(saveDir + "/" + var1 + "/level.dat");
|
String s = saveDir + "/" + var1 + "/level.dat";
|
||||||
|
if(s.startsWith("saves/")) {
|
||||||
|
s.replace("saves/minecraft/", "minecraft/");
|
||||||
|
}
|
||||||
|
System.out.println(s);
|
||||||
|
byte[] lvl = File.readFile(s);
|
||||||
if(lvl != null) {
|
if(lvl != null) {
|
||||||
try {
|
try {
|
||||||
NBTBase nbt = NBTBase.readTag(new DataInputStream(new ByteArrayInputStream(lvl)));
|
NBTBase nbt = NBTBase.readTag(new DataInputStream(new ByteArrayInputStream(lvl)));
|
||||||
|
|
|
@ -4,7 +4,7 @@ import java.util.HashMap;
|
||||||
import java.util.Map;
|
import java.util.Map;
|
||||||
|
|
||||||
public class EntityList {
|
public class EntityList {
|
||||||
private static Map stringToClassMapping = new HashMap();
|
private static Map<String, Class> stringToClassMapping = new HashMap();
|
||||||
private static Map classToStringMapping = new HashMap();
|
private static Map classToStringMapping = new HashMap();
|
||||||
private static Map IDtoClassMapping = new HashMap();
|
private static Map IDtoClassMapping = new HashMap();
|
||||||
private static Map classToIDMapping = new HashMap();
|
private static Map classToIDMapping = new HashMap();
|
||||||
|
@ -20,7 +20,12 @@ public class EntityList {
|
||||||
Entity var2 = null;
|
Entity var2 = null;
|
||||||
|
|
||||||
try {
|
try {
|
||||||
Class var3 = (Class)stringToClassMapping.get(var0);
|
Class var3 = null;
|
||||||
|
for (Map.Entry<String, Class> entry : stringToClassMapping.entrySet()) {
|
||||||
|
if(entry.getKey().equalsIgnoreCase(var0)) {
|
||||||
|
var3 = (Class)entry.getValue();
|
||||||
|
}
|
||||||
|
}
|
||||||
if(var3 != null) {
|
if(var3 != null) {
|
||||||
var2 = SpawnerAnimals.newInstance(var3);
|
var2 = SpawnerAnimals.newInstance(var3);
|
||||||
}
|
}
|
||||||
|
|
|
@ -200,8 +200,50 @@ public abstract class EntityLiving extends Entity {
|
||||||
this.newPosRotationIncrements = var9;
|
this.newPosRotationIncrements = var9;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
private boolean canSkipUpdate() {
|
||||||
|
if (this.hurtTime > 0) {
|
||||||
|
return false;
|
||||||
|
} else if (this.ticksExisted < 20) {
|
||||||
|
return false;
|
||||||
|
} else {
|
||||||
|
World world = this.worldObj;
|
||||||
|
|
||||||
|
if (world == null) {
|
||||||
|
return false;
|
||||||
|
} else if (world.playerEntities.size() != 1) {
|
||||||
|
return false;
|
||||||
|
} else {
|
||||||
|
Entity entity = (Entity)world.playerEntities.get(0);
|
||||||
|
double d0 = Math.max(Math.abs(this.posX - entity.posX) - 16.0D, 0.0D);
|
||||||
|
double d1 = Math.max(Math.abs(this.posZ - entity.posZ) - 16.0D, 0.0D);
|
||||||
|
double d2 = d0 * d0 + d1 * d1;
|
||||||
|
return !this.isInRangeToRenderDist(d2);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
private void onUpdateMinimal() {
|
||||||
|
++this.entityAge;
|
||||||
|
|
||||||
|
if (this instanceof EntityMob) {
|
||||||
|
float f = this.getEntityBrightness(1.0F);
|
||||||
|
|
||||||
|
if (f > 0.5F) {
|
||||||
|
this.entityAge += 2;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
this.func_27021_X();
|
||||||
|
}
|
||||||
|
|
||||||
public void onUpdate() {
|
public void onUpdate() {
|
||||||
|
|
||||||
|
if(this.canSkipUpdate()) {
|
||||||
|
this.onUpdateMinimal();
|
||||||
|
} else {
|
||||||
super.onUpdate();
|
super.onUpdate();
|
||||||
|
}
|
||||||
|
|
||||||
this.onLivingUpdate();
|
this.onLivingUpdate();
|
||||||
double var1 = this.posX - this.prevPosX;
|
double var1 = this.posX - this.prevPosX;
|
||||||
double var3 = this.posZ - this.prevPosZ;
|
double var3 = this.posZ - this.prevPosZ;
|
||||||
|
|
|
@ -139,6 +139,7 @@ public class EntityPlayerSP extends EntityPlayer {
|
||||||
}
|
}
|
||||||
|
|
||||||
public void sendChatMessage(String var1) {
|
public void sendChatMessage(String var1) {
|
||||||
|
this.mc.ingameGUI.addChatMessageTranslate("[Player] " + var1);
|
||||||
}
|
}
|
||||||
|
|
||||||
public boolean isSneaking() {
|
public boolean isSneaking() {
|
||||||
|
|
|
@ -5,6 +5,8 @@ import java.util.List;
|
||||||
|
|
||||||
import net.PeytonPlayz585.glemu.GameOverlayFramebuffer;
|
import net.PeytonPlayz585.glemu.GameOverlayFramebuffer;
|
||||||
import net.minecraft.client.Minecraft;
|
import net.minecraft.client.Minecraft;
|
||||||
|
|
||||||
|
import org.lwjgl.input.Keyboard;
|
||||||
import org.lwjgl.input.Mouse;
|
import org.lwjgl.input.Mouse;
|
||||||
import org.lwjgl.opengl.Display;
|
import org.lwjgl.opengl.Display;
|
||||||
import org.lwjgl.opengl.GL11;
|
import org.lwjgl.opengl.GL11;
|
||||||
|
@ -50,6 +52,7 @@ public class EntityRenderer {
|
||||||
float fogColorBlue;
|
float fogColorBlue;
|
||||||
private float fogColor2;
|
private float fogColor2;
|
||||||
private float fogColor1;
|
private float fogColor1;
|
||||||
|
private static boolean zoomMode = false;
|
||||||
|
|
||||||
private GameOverlayFramebuffer overlayFramebuffer;
|
private GameOverlayFramebuffer overlayFramebuffer;
|
||||||
|
|
||||||
|
@ -143,6 +146,27 @@ public class EntityRenderer {
|
||||||
var3 = 60.0F;
|
var3 = 60.0F;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
boolean flag = false;
|
||||||
|
if(this.mc.currentScreen == null) {
|
||||||
|
flag = Keyboard.isKeyDown(this.mc.gameSettings.keyBindZoom.keyCode);
|
||||||
|
}
|
||||||
|
|
||||||
|
if(flag) {
|
||||||
|
if(!zoomMode) {
|
||||||
|
zoomMode = true;
|
||||||
|
this.mc.gameSettings.smoothCamera = true;
|
||||||
|
}
|
||||||
|
|
||||||
|
if(zoomMode) {
|
||||||
|
var3 /= 4.0F;
|
||||||
|
}
|
||||||
|
} else if(zoomMode) {
|
||||||
|
zoomMode = false;
|
||||||
|
this.mc.gameSettings.smoothCamera = false;
|
||||||
|
this.mouseFilterXAxis = new MouseFilter();
|
||||||
|
this.mouseFilterYAxis = new MouseFilter();
|
||||||
|
}
|
||||||
|
|
||||||
if(var2.health <= 0) {
|
if(var2.health <= 0) {
|
||||||
float var4 = (float)var2.deathTime + var1;
|
float var4 = (float)var2.deathTime + var1;
|
||||||
var3 /= (1.0F - 500.0F / (var4 + 500.0F)) * 2.0F + 1.0F;
|
var3 /= (1.0F - 500.0F / (var4 + 500.0F)) * 2.0F + 1.0F;
|
||||||
|
|
|
@ -11,7 +11,7 @@ public class EntitySheep extends EntityAnimal {
|
||||||
|
|
||||||
protected void entityInit() {
|
protected void entityInit() {
|
||||||
super.entityInit();
|
super.entityInit();
|
||||||
this.dataWatcher.addObject(16, new Byte((byte)0));
|
this.dataWatcher.addObject(16,(byte)0);
|
||||||
}
|
}
|
||||||
|
|
||||||
public boolean attackEntityFrom(Entity var1, int var2) {
|
public boolean attackEntityFrom(Entity var1, int var2) {
|
||||||
|
|
|
@ -16,11 +16,11 @@ public class EntitySlime extends EntityLiving implements IMob {
|
||||||
|
|
||||||
protected void entityInit() {
|
protected void entityInit() {
|
||||||
super.entityInit();
|
super.entityInit();
|
||||||
this.dataWatcher.addObject(16, new Byte((byte)1));
|
this.dataWatcher.addObject(16, (byte)1);
|
||||||
}
|
}
|
||||||
|
|
||||||
public void setSlimeSize(int var1) {
|
public void setSlimeSize(int var1) {
|
||||||
this.dataWatcher.updateObject(16, new Byte((byte)var1));
|
this.dataWatcher.updateObject(16, (byte)var1);
|
||||||
this.setSize(0.6F * (float)var1, 0.6F * (float)var1);
|
this.setSize(0.6F * (float)var1, 0.6F * (float)var1);
|
||||||
this.health = var1 * var1;
|
this.health = var1 * var1;
|
||||||
this.setPosition(this.posX, this.posY, this.posZ);
|
this.setPosition(this.posX, this.posY, this.posZ);
|
||||||
|
|
|
@ -3,24 +3,16 @@ package net.minecraft.src;
|
||||||
import java.util.Comparator;
|
import java.util.Comparator;
|
||||||
|
|
||||||
public class EntitySorter implements Comparator {
|
public class EntitySorter implements Comparator {
|
||||||
private double field_30008_a;
|
private Entity field_1594_a;
|
||||||
private double field_30007_b;
|
|
||||||
private double field_30009_c;
|
|
||||||
|
|
||||||
public EntitySorter(Entity var1) {
|
public EntitySorter(Entity var1) {
|
||||||
this.field_30008_a = -var1.posX;
|
field_1594_a = var1;
|
||||||
this.field_30007_b = -var1.posY;
|
|
||||||
this.field_30009_c = -var1.posZ;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
public int sortByDistanceToEntity(WorldRenderer var1, WorldRenderer var2) {
|
public int sortByDistanceToEntity(WorldRenderer var1, WorldRenderer var2) {
|
||||||
double var3 = (double)var1.posXPlus + this.field_30008_a;
|
float f = var1.distanceToEntitySquared(field_1594_a);
|
||||||
double var5 = (double)var1.posYPlus + this.field_30007_b;
|
float f1 = var2.distanceToEntitySquared(field_1594_a) ;
|
||||||
double var7 = (double)var1.posZPlus + this.field_30009_c;
|
return f == f1 ? 0 : f >= f1 ? 1 : -1;
|
||||||
double var9 = (double)var2.posXPlus + this.field_30008_a;
|
|
||||||
double var11 = (double)var2.posYPlus + this.field_30007_b;
|
|
||||||
double var13 = (double)var2.posZPlus + this.field_30009_c;
|
|
||||||
return (int)((var3 * var3 + var5 * var5 + var7 * var7 - (var9 * var9 + var11 * var11 + var13 * var13)) * 1024.0D);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
public int compare(Object var1, Object var2) {
|
public int compare(Object var1, Object var2) {
|
||||||
|
|
|
@ -24,7 +24,7 @@ public class EntityWolf extends EntityAnimal {
|
||||||
super.entityInit();
|
super.entityInit();
|
||||||
this.dataWatcher.addObject(16, Byte.valueOf((byte)0));
|
this.dataWatcher.addObject(16, Byte.valueOf((byte)0));
|
||||||
this.dataWatcher.addObject(17, "");
|
this.dataWatcher.addObject(17, "");
|
||||||
this.dataWatcher.addObject(18, new Integer(this.health));
|
this.dataWatcher.addObject(18, this.health);
|
||||||
}
|
}
|
||||||
|
|
||||||
protected boolean canTriggerWalking() {
|
protected boolean canTriggerWalking() {
|
||||||
|
|
|
@ -12,6 +12,7 @@ import net.PeytonPlayz585.awt.image.BufferedImage;
|
||||||
import net.PeytonPlayz585.awt.image.ImageIO;
|
import net.PeytonPlayz585.awt.image.ImageIO;
|
||||||
|
|
||||||
public class FontRenderer {
|
public class FontRenderer {
|
||||||
|
public static final char formatChar = '\247';
|
||||||
private int[] charWidth = new int[256];
|
private int[] charWidth = new int[256];
|
||||||
public int fontTextureName = 0;
|
public int fontTextureName = 0;
|
||||||
private int fontDisplayLists;
|
private int fontDisplayLists;
|
||||||
|
|
|
@ -38,7 +38,8 @@ public class GameSettings {
|
||||||
public KeyBinding keyBindChat = new KeyBinding("key.chat", 20);
|
public KeyBinding keyBindChat = new KeyBinding("key.chat", 20);
|
||||||
public KeyBinding keyBindToggleFog = new KeyBinding("Function", 33);
|
public KeyBinding keyBindToggleFog = new KeyBinding("Function", 33);
|
||||||
public KeyBinding keyBindSneak = new KeyBinding("key.sneak", 42);
|
public KeyBinding keyBindSneak = new KeyBinding("key.sneak", 42);
|
||||||
public KeyBinding[] keyBindings = new KeyBinding[]{this.keyBindForward, this.keyBindLeft, this.keyBindBack, this.keyBindRight, this.keyBindJump, this.keyBindSneak, this.keyBindDrop, this.keyBindInventory, this.keyBindChat, this.keyBindToggleFog};
|
public KeyBinding keyBindZoom = new KeyBinding("Zoom", 46);
|
||||||
|
public KeyBinding[] keyBindings = new KeyBinding[]{this.keyBindForward, this.keyBindLeft, this.keyBindBack, this.keyBindRight, this.keyBindJump, this.keyBindSneak, this.keyBindDrop, this.keyBindInventory, this.keyBindChat, this.keyBindToggleFog, this.keyBindZoom};
|
||||||
protected Minecraft mc;
|
protected Minecraft mc;
|
||||||
private String optionsFile;
|
private String optionsFile;
|
||||||
public int difficulty = 2;
|
public int difficulty = 2;
|
||||||
|
|
|
@ -2,6 +2,8 @@ package net.minecraft.src;
|
||||||
|
|
||||||
import org.lwjgl.input.Keyboard;
|
import org.lwjgl.input.Keyboard;
|
||||||
|
|
||||||
|
import net.lax1dude.eaglercraft.beta.SingleplayerCommands;
|
||||||
|
|
||||||
public class GuiChat extends GuiScreen {
|
public class GuiChat extends GuiScreen {
|
||||||
protected String message = "";
|
protected String message = "";
|
||||||
private int updateCounter = 0;
|
private int updateCounter = 0;
|
||||||
|
@ -26,7 +28,9 @@ public class GuiChat extends GuiScreen {
|
||||||
String var3 = this.message.trim();
|
String var3 = this.message.trim();
|
||||||
if(var3.length() > 0) {
|
if(var3.length() > 0) {
|
||||||
String var4 = this.message.trim();
|
String var4 = this.message.trim();
|
||||||
if(!this.mc.lineIsCommand(var4)) {
|
if(!this.mc.isMultiplayerWorld() && var4.startsWith("/")) {
|
||||||
|
SingleplayerCommands.processCommand(this.mc, var4.substring(1));
|
||||||
|
} else {
|
||||||
this.mc.thePlayer.sendChatMessage(var4);
|
this.mc.thePlayer.sendChatMessage(var4);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -77,4 +81,8 @@ public class GuiChat extends GuiScreen {
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public boolean doesGuiPauseGame() {
|
||||||
|
return false;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -44,7 +44,7 @@ public class GuiGameOver extends GuiScreen {
|
||||||
GL11.glScalef(2.0F, 2.0F, 2.0F);
|
GL11.glScalef(2.0F, 2.0F, 2.0F);
|
||||||
this.drawCenteredString(this.fontRenderer, "Game over!", this.width / 2 / 2, 30, 16777215);
|
this.drawCenteredString(this.fontRenderer, "Game over!", this.width / 2 / 2, 30, 16777215);
|
||||||
GL11.glPopMatrix();
|
GL11.glPopMatrix();
|
||||||
this.drawCenteredString(this.fontRenderer, "Score: &e" + this.mc.thePlayer.getScore(), this.width / 2, 100, 16777215);
|
this.drawCenteredString(this.fontRenderer, "Score: " + this.mc.thePlayer.getScore(), this.width / 2, 100, 16777215);
|
||||||
super.drawScreen(var1, var2, var3);
|
super.drawScreen(var1, var2, var3);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -2,6 +2,8 @@ package net.minecraft.src;
|
||||||
|
|
||||||
import org.lwjgl.input.Keyboard;
|
import org.lwjgl.input.Keyboard;
|
||||||
|
|
||||||
|
import net.minecraft.client.Minecraft;
|
||||||
|
|
||||||
public class GuiRenameWorld extends GuiScreen {
|
public class GuiRenameWorld extends GuiScreen {
|
||||||
private GuiScreen field_22112_a;
|
private GuiScreen field_22112_a;
|
||||||
private GuiTextField field_22114_h;
|
private GuiTextField field_22114_h;
|
||||||
|
@ -40,7 +42,7 @@ public class GuiRenameWorld extends GuiScreen {
|
||||||
this.mc.displayGuiScreen(this.field_22112_a);
|
this.mc.displayGuiScreen(this.field_22112_a);
|
||||||
} else if(var1.id == 0) {
|
} else if(var1.id == 0) {
|
||||||
ISaveFormat var2 = this.mc.getSaveLoader();
|
ISaveFormat var2 = this.mc.getSaveLoader();
|
||||||
var2.func_22170_a(this.field_22113_i, this.field_22114_h.getText().trim());
|
var2.func_22170_a(Minecraft.getMinecraft().getSaveDir() + "/" + this.field_22113_i, this.field_22114_h.getText().trim());
|
||||||
this.mc.displayGuiScreen(this.field_22112_a);
|
this.mc.displayGuiScreen(this.field_22112_a);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -1,33 +1,19 @@
|
||||||
package net.minecraft.src;
|
package net.minecraft.src;
|
||||||
|
|
||||||
import java.util.concurrent.atomic.AtomicLong;
|
|
||||||
|
|
||||||
public class Random {
|
public class Random {
|
||||||
|
|
||||||
private final AtomicLong seed;
|
private long seed = 69;
|
||||||
|
|
||||||
private static final long multiplier = 0x5DEECE66DL;
|
private static final long multiplier = 0x5DEECE66DL;
|
||||||
private static final long addend = 0xBL;
|
private static final long addend = 0xBL;
|
||||||
private static final long mask = (1L << 48) - 1;
|
private static final long mask = (1L << 48) - 1;
|
||||||
|
|
||||||
public Random() {
|
public Random() {
|
||||||
this(seedUniquifier() ^ System.nanoTime());
|
this((long)(Math.random() * 9007199254740991.0));
|
||||||
}
|
}
|
||||||
|
|
||||||
private static long seedUniquifier() {
|
|
||||||
for (;;) {
|
|
||||||
long current = seedUniquifier.get();
|
|
||||||
long next = current * 181783497276652981L;
|
|
||||||
if (seedUniquifier.compareAndSet(current, next))
|
|
||||||
return next;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
private static final AtomicLong seedUniquifier
|
|
||||||
= new AtomicLong(8682522807148012L);
|
|
||||||
|
|
||||||
public Random(long seed) {
|
public Random(long seed) {
|
||||||
this.seed = new AtomicLong(initialScramble(seed));
|
setSeed(seed);
|
||||||
}
|
}
|
||||||
|
|
||||||
private static long initialScramble(long seed) {
|
private static long initialScramble(long seed) {
|
||||||
|
@ -35,26 +21,19 @@ public class Random {
|
||||||
}
|
}
|
||||||
|
|
||||||
public void setSeed(long seed) {
|
public void setSeed(long seed) {
|
||||||
this.seed.set(initialScramble(seed));
|
this.seed = initialScramble(seed);
|
||||||
haveNextNextGaussian = false;
|
haveNextNextGaussian = true;
|
||||||
}
|
}
|
||||||
|
|
||||||
protected int next(int bits) {
|
protected int next(int bits) {
|
||||||
long oldseed, nextseed;
|
seed = (seed * multiplier + addend) & mask;
|
||||||
AtomicLong seed = this.seed;
|
return (int) (seed >>> (48 - bits));
|
||||||
do {
|
|
||||||
oldseed = seed.get();
|
|
||||||
nextseed = (oldseed * multiplier + addend) & mask;
|
|
||||||
} while (!seed.compareAndSet(oldseed, nextseed));
|
|
||||||
return (int)(nextseed >>> (48 - bits));
|
|
||||||
}
|
}
|
||||||
|
|
||||||
public void nextBytes(byte[] bytes) {
|
public void nextBytes(byte[] bytes) {
|
||||||
for (int i = 0, len = bytes.length; i < len; )
|
for (int i = 0, len = bytes.length; i < len;)
|
||||||
for (int rnd = nextInt(),
|
for (int rnd = nextInt(), n = Math.min(len - i, Integer.SIZE / Byte.SIZE); n-- > 0; rnd >>= Byte.SIZE)
|
||||||
n = Math.min(len - i, Integer.SIZE/Byte.SIZE);
|
bytes[i++] = (byte) rnd;
|
||||||
n-- > 0; rnd >>= Byte.SIZE)
|
|
||||||
bytes[i++] = (byte)rnd;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
public int nextInt() {
|
public int nextInt() {
|
||||||
|
|
|
@ -1,11 +1,13 @@
|
||||||
package net.minecraft.src;
|
package net.minecraft.src;
|
||||||
|
|
||||||
|
import java.nio.IntBuffer;
|
||||||
import java.util.ArrayList;
|
import java.util.ArrayList;
|
||||||
import java.util.Arrays;
|
import java.util.Arrays;
|
||||||
import java.util.Collections;
|
import java.util.Collections;
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
|
|
||||||
import net.minecraft.client.Minecraft;
|
import net.minecraft.client.Minecraft;
|
||||||
|
|
||||||
import org.lwjgl.opengl.GL11;
|
import org.lwjgl.opengl.GL11;
|
||||||
|
|
||||||
public class RenderGlobal implements IWorldAccess {
|
public class RenderGlobal implements IWorldAccess {
|
||||||
|
@ -208,14 +210,15 @@ public class RenderGlobal implements IWorldAccess {
|
||||||
for(var4 = 0; var4 < this.renderChunksWide; ++var4) {
|
for(var4 = 0; var4 < this.renderChunksWide; ++var4) {
|
||||||
for(int var5 = 0; var5 < this.renderChunksTall; ++var5) {
|
for(int var5 = 0; var5 < this.renderChunksTall; ++var5) {
|
||||||
for(int var6 = 0; var6 < this.renderChunksDeep; ++var6) {
|
for(int var6 = 0; var6 < this.renderChunksDeep; ++var6) {
|
||||||
this.worldRenderers[(var6 * this.renderChunksTall + var5) * this.renderChunksWide + var4] = new WorldRenderer(this.worldObj, this.tileEntities, var4 * 16, var5 * 16, var6 * 16, 16, this.glRenderListBase + var2);
|
int index = (var6 * this.renderChunksTall + var5) * this.renderChunksWide + var4;
|
||||||
this.worldRenderers[(var6 * this.renderChunksTall + var5) * this.renderChunksWide + var4].isWaitingOnOcclusionQuery = false;
|
WorldRenderer wr = (this.worldRenderers[index] = new WorldRenderer(this.worldObj, this.tileEntities, var4 * 16, var5 * 16, var6 * 16, 16, this.glRenderListBase + var2));
|
||||||
this.worldRenderers[(var6 * this.renderChunksTall + var5) * this.renderChunksWide + var4].isVisible = true;
|
wr.isWaitingOnOcclusionQuery = false;
|
||||||
this.worldRenderers[(var6 * this.renderChunksTall + var5) * this.renderChunksWide + var4].isInFrustum = true;
|
wr.isVisible = true;
|
||||||
this.worldRenderers[(var6 * this.renderChunksTall + var5) * this.renderChunksWide + var4].chunkIndex = var3++;
|
wr.isInFrustum = true;
|
||||||
this.worldRenderers[(var6 * this.renderChunksTall + var5) * this.renderChunksWide + var4].markDirty();
|
wr.chunkIndex = var3++;
|
||||||
this.sortedWorldRenderers[(var6 * this.renderChunksTall + var5) * this.renderChunksWide + var4] = this.worldRenderers[(var6 * this.renderChunksTall + var5) * this.renderChunksWide + var4];
|
wr.markDirty();
|
||||||
this.worldRenderersToUpdate.add(this.worldRenderers[(var6 * this.renderChunksTall + var5) * this.renderChunksWide + var4]);
|
this.sortedWorldRenderers[(var6 * this.renderChunksTall + var5) * this.renderChunksWide + var4] = wr;
|
||||||
|
this.worldRenderersToUpdate.add(wr);
|
||||||
var2 += 3;
|
var2 += 3;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -415,12 +418,14 @@ public class RenderGlobal implements IWorldAccess {
|
||||||
++this.renderersSkippingRenderPass;
|
++this.renderersSkippingRenderPass;
|
||||||
} else if(!this.sortedWorldRenderers[var7].isInFrustum) {
|
} else if(!this.sortedWorldRenderers[var7].isInFrustum) {
|
||||||
++this.renderersBeingClipped;
|
++this.renderersBeingClipped;
|
||||||
|
} else if(!this.sortedWorldRenderers[var7].isVisible) {
|
||||||
|
++this.renderersBeingOccluded;
|
||||||
} else {
|
} else {
|
||||||
++this.renderersBeingRendered;
|
++this.renderersBeingRendered;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
if(!this.sortedWorldRenderers[var7].skipRenderPass[var3] && this.sortedWorldRenderers[var7].isInFrustum) {
|
if(!this.sortedWorldRenderers[var7].skipRenderPass[var3] && this.sortedWorldRenderers[var7].isInFrustum && this.sortedWorldRenderers[var7].isVisible) {
|
||||||
int var8 = this.sortedWorldRenderers[var7].getGLCallListForPass(var3);
|
int var8 = this.sortedWorldRenderers[var7].getGLCallListForPass(var3);
|
||||||
if(var8 >= 0) {
|
if(var8 >= 0) {
|
||||||
this.glRenderLists.add(this.sortedWorldRenderers[var7]);
|
this.glRenderLists.add(this.sortedWorldRenderers[var7]);
|
||||||
|
@ -796,148 +801,60 @@ public class RenderGlobal implements IWorldAccess {
|
||||||
}
|
}
|
||||||
|
|
||||||
public boolean updateRenderers(EntityLiving var1, boolean var2) {
|
public boolean updateRenderers(EntityLiving var1, boolean var2) {
|
||||||
boolean var3 = false;
|
byte var3 = 2;
|
||||||
if(var3) {
|
RenderSorter var4 = new RenderSorter(var1);
|
||||||
Collections.sort(this.worldRenderersToUpdate, new RenderSorter(var1));
|
WorldRenderer[] var5 = new WorldRenderer[var3];
|
||||||
int var17 = this.worldRenderersToUpdate.size() - 1;
|
ArrayList var6 = null;
|
||||||
int var18 = this.worldRenderersToUpdate.size();
|
int var7 = this.worldRenderersToUpdate.size();
|
||||||
|
int var8 = 0;
|
||||||
for(int var19 = 0; var19 < var18; ++var19) {
|
int var9;
|
||||||
WorldRenderer var20 = (WorldRenderer)this.worldRenderersToUpdate.get(var17 - var19);
|
WorldRenderer var10;
|
||||||
if(!var2) {
|
int var11;
|
||||||
if(var20.distanceToEntitySquared(var1) > 256.0F) {
|
|
||||||
if(var20.isInFrustum) {
|
|
||||||
if(var19 >= 3) {
|
|
||||||
return false;
|
|
||||||
}
|
|
||||||
} else if(var19 >= 1) {
|
|
||||||
return false;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
} else if(!var20.isInFrustum) {
|
|
||||||
continue;
|
|
||||||
}
|
|
||||||
|
|
||||||
var20.updateRenderer();
|
|
||||||
this.worldRenderersToUpdate.remove(var20);
|
|
||||||
var20.needsUpdate = false;
|
|
||||||
}
|
|
||||||
|
|
||||||
return this.worldRenderersToUpdate.size() == 0;
|
|
||||||
} else {
|
|
||||||
byte var4 = 2;
|
|
||||||
RenderSorter var5 = new RenderSorter(var1);
|
|
||||||
WorldRenderer[] var6 = new WorldRenderer[var4];
|
|
||||||
ArrayList var7 = null;
|
|
||||||
int var8 = this.worldRenderersToUpdate.size();
|
|
||||||
int var9 = 0;
|
|
||||||
|
|
||||||
int var10;
|
|
||||||
WorldRenderer var11;
|
|
||||||
int var12;
|
int var12;
|
||||||
int var13;
|
List laterUpdateList = new ArrayList(var7);
|
||||||
label169:
|
for (var9 = 0; var9 < var7; ++var9) {
|
||||||
for(var10 = 0; var10 < var8; ++var10) {
|
var10 = (WorldRenderer) this.worldRenderersToUpdate.get(var9);
|
||||||
var11 = (WorldRenderer)this.worldRenderersToUpdate.get(var10);
|
|
||||||
if(!var2) {
|
if (var10 != null) {
|
||||||
if(var11.distanceToEntitySquared(var1) > 256.0F) {
|
if (!var10.isInFrustum || !var10.isVisible) {
|
||||||
for(var12 = 0; var12 < var4 && (var6[var12] == null || var5.doCompare(var6[var12], var11) <= 0); ++var12) {
|
laterUpdateList.add(var10);
|
||||||
|
}else {
|
||||||
|
if (var6 == null) {
|
||||||
|
var6 = new ArrayList();
|
||||||
}
|
}
|
||||||
|
|
||||||
--var12;
|
++var8;
|
||||||
if(var12 <= 0) {
|
var6.add(var10);
|
||||||
continue;
|
|
||||||
}
|
|
||||||
|
|
||||||
var13 = var12;
|
|
||||||
|
|
||||||
while(true) {
|
|
||||||
--var13;
|
|
||||||
if(var13 == 0) {
|
|
||||||
var6[var12] = var11;
|
|
||||||
continue label169;
|
|
||||||
}
|
|
||||||
|
|
||||||
var6[var13 - 1] = var6[var13];
|
|
||||||
}
|
|
||||||
}
|
|
||||||
} else if(!var11.isInFrustum) {
|
|
||||||
continue;
|
|
||||||
}
|
|
||||||
|
|
||||||
if(var7 == null) {
|
|
||||||
var7 = new ArrayList();
|
|
||||||
}
|
|
||||||
|
|
||||||
++var9;
|
|
||||||
var7.add(var11);
|
|
||||||
this.worldRenderersToUpdate.set(var10, (Object)null);
|
|
||||||
}
|
|
||||||
|
|
||||||
if(var7 != null) {
|
|
||||||
if(var7.size() > 1) {
|
|
||||||
Collections.sort(var7, var5);
|
|
||||||
}
|
|
||||||
|
|
||||||
for(var10 = var7.size() - 1; var10 >= 0; --var10) {
|
|
||||||
var11 = (WorldRenderer)var7.get(var10);
|
|
||||||
var11.updateRenderer();
|
|
||||||
var11.needsUpdate = false;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
var10 = 0;
|
|
||||||
|
|
||||||
int var21;
|
|
||||||
for(var21 = var4 - 1; var21 >= 0; --var21) {
|
|
||||||
WorldRenderer var22 = var6[var21];
|
|
||||||
if(var22 != null) {
|
|
||||||
if(!var22.isInFrustum && var21 != var4 - 1) {
|
|
||||||
var6[var21] = null;
|
|
||||||
var6[0] = null;
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
|
|
||||||
var6[var21].updateRenderer();
|
|
||||||
var6[var21].needsUpdate = false;
|
|
||||||
++var10;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
var21 = 0;
|
|
||||||
var12 = 0;
|
|
||||||
|
|
||||||
for(var13 = this.worldRenderersToUpdate.size(); var21 != var13; ++var21) {
|
|
||||||
WorldRenderer var14 = (WorldRenderer)this.worldRenderersToUpdate.get(var21);
|
|
||||||
if(var14 != null) {
|
|
||||||
boolean var15 = false;
|
|
||||||
|
|
||||||
for(int var16 = 0; var16 < var4 && !var15; ++var16) {
|
|
||||||
if(var14 == var6[var16]) {
|
|
||||||
var15 = true;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
if(!var15) {
|
|
||||||
if(var12 != var21) {
|
|
||||||
this.worldRenderersToUpdate.set(var12, var14);
|
|
||||||
}
|
|
||||||
|
|
||||||
++var12;
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
while(true) {
|
this.worldRenderersToUpdate = laterUpdateList;
|
||||||
--var21;
|
|
||||||
if(var21 < var12) {
|
int updates = 0;
|
||||||
return var8 == var9 + var10;
|
int dropped = 0;
|
||||||
|
if (var6 != null) {
|
||||||
|
if (var6.size() > 1) {
|
||||||
|
Collections.sort(var6, var4);
|
||||||
}
|
}
|
||||||
|
|
||||||
this.worldRenderersToUpdate.remove(var21);
|
for (var9 = var6.size() - 1; var9 >= 0; --var9) {
|
||||||
|
var10 = (WorldRenderer) var6.get(var9);
|
||||||
|
if(updates > 1) {
|
||||||
|
this.worldRenderersToUpdate.add(var10);
|
||||||
|
++dropped;
|
||||||
|
}else {
|
||||||
|
var10.updateRenderer();
|
||||||
|
var10.needsUpdate = false;
|
||||||
|
if(!var10.skipAllRenderPasses()) {
|
||||||
|
++updates;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
|
||||||
public void drawBlockBreaking(EntityPlayer var1, MovingObjectPosition var2, int var3, ItemStack var4, float var5) {
|
public void drawBlockBreaking(EntityPlayer var1, MovingObjectPosition var2, int var3, ItemStack var4, float var5) {
|
||||||
Tessellator var6 = Tessellator.instance;
|
Tessellator var6 = Tessellator.instance;
|
||||||
|
@ -956,7 +873,7 @@ public class RenderGlobal implements IWorldAccess {
|
||||||
var8 = this.worldObj.getBlockId(var2.blockX, var2.blockY, var2.blockZ);
|
var8 = this.worldObj.getBlockId(var2.blockX, var2.blockY, var2.blockZ);
|
||||||
Block var9 = var8 > 0 ? Block.blocksList[var8] : null;
|
Block var9 = var8 > 0 ? Block.blocksList[var8] : null;
|
||||||
GL11.glDisable(GL11.GL_ALPHA_TEST);
|
GL11.glDisable(GL11.GL_ALPHA_TEST);
|
||||||
GL11.glPolygonOffset(-3.0F, -3.0F);
|
GL11.glPolygonOffset(3.0F, 3.0F);
|
||||||
GL11.glEnable(GL11.GL_POLYGON_OFFSET_FILL);
|
GL11.glEnable(GL11.GL_POLYGON_OFFSET_FILL);
|
||||||
double var10 = var1.lastTickPosX + (var1.posX - var1.lastTickPosX) * (double)var5;
|
double var10 = var1.lastTickPosX + (var1.posX - var1.lastTickPosX) * (double)var5;
|
||||||
double var12 = var1.lastTickPosY + (var1.posY - var1.lastTickPosY) * (double)var5;
|
double var12 = var1.lastTickPosY + (var1.posY - var1.lastTickPosY) * (double)var5;
|
||||||
|
@ -1148,9 +1065,6 @@ public class RenderGlobal implements IWorldAccess {
|
||||||
|
|
||||||
public void spawnParticle(String var1, double var2, double var4, double var6, double var8, double var10, double var12) {
|
public void spawnParticle(String var1, double var2, double var4, double var6, double var8, double var10, double var12) {
|
||||||
if(this.mc != null && this.mc.renderViewEntity != null && this.mc.effectRenderer != null) {
|
if(this.mc != null && this.mc.renderViewEntity != null && this.mc.effectRenderer != null) {
|
||||||
if(isBehindPlayer(var2, var4, var6)) {
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
double var14 = this.mc.renderViewEntity.posX - var2;
|
double var14 = this.mc.renderViewEntity.posX - var2;
|
||||||
double var16 = this.mc.renderViewEntity.posY - var4;
|
double var16 = this.mc.renderViewEntity.posY - var4;
|
||||||
double var18 = this.mc.renderViewEntity.posZ - var6;
|
double var18 = this.mc.renderViewEntity.posZ - var6;
|
||||||
|
@ -1192,12 +1106,6 @@ public class RenderGlobal implements IWorldAccess {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
private boolean isBehindPlayer(double x, double y, double z) {
|
|
||||||
final Vec3D playerToBlock = new Vec3D(x - this.mc.thePlayer.posX, y - this.mc.thePlayer.posY, z - this.mc.thePlayer.posZ).normalize();
|
|
||||||
final Vec3D direction = (this.mc.thePlayer.getLookVec()).normalize();
|
|
||||||
return playerToBlock.dotProduct(direction) > 0.5;
|
|
||||||
}
|
|
||||||
|
|
||||||
public void obtainEntitySkin(Entity var1) {
|
public void obtainEntitySkin(Entity var1) {
|
||||||
var1.updateCloak();
|
var1.updateCloak();
|
||||||
}
|
}
|
||||||
|
|
|
@ -46,7 +46,12 @@ public class RenderList {
|
||||||
|
|
||||||
if(this.field_1236_g.remaining() > 0) {
|
if(this.field_1236_g.remaining() > 0) {
|
||||||
GL11.glPushMatrix();
|
GL11.glPushMatrix();
|
||||||
GL11.glTranslatef((float)this.field_1242_a - this.field_1239_d, (float)this.field_1241_b - this.field_1238_e, (float)this.field_1240_c - this.field_1237_f);
|
/*
|
||||||
|
* What the fuck Notch lol
|
||||||
|
*
|
||||||
|
* GL11.glTranslatef((float)this.field_1242_a - this.field_1239_d, (float)this.field_1241_b - this.field_1238_e, (float)this.field_1240_c - this.field_1237_f);
|
||||||
|
*/
|
||||||
|
GL11.glTranslatef(this.field_1242_a - this.field_1239_d, this.field_1241_b - this.field_1238_e, this.field_1240_c - this.field_1237_f);
|
||||||
GL11.glCallLists(this.field_1236_g);
|
GL11.glCallLists(this.field_1236_g);
|
||||||
GL11.glPopMatrix();
|
GL11.glPopMatrix();
|
||||||
}
|
}
|
||||||
|
|
|
@ -17,7 +17,7 @@ public abstract class WorldProvider {
|
||||||
}
|
}
|
||||||
|
|
||||||
protected void generateLightBrightnessTable() {
|
protected void generateLightBrightnessTable() {
|
||||||
float var1 = 0.05F;
|
float var1 = 0.2F;
|
||||||
|
|
||||||
for(int var2 = 0; var2 <= 15; ++var2) {
|
for(int var2 = 0; var2 <= 15; ++var2) {
|
||||||
float var3 = 1.0F - (float)var2 / 15.0F;
|
float var3 = 1.0F - (float)var2 / 15.0F;
|
||||||
|
|
|
@ -206,7 +206,8 @@ public class WorldRenderer {
|
||||||
}
|
}
|
||||||
|
|
||||||
public boolean skipAllRenderPasses() {
|
public boolean skipAllRenderPasses() {
|
||||||
return !this.isInitialized ? false : this.skipRenderPass[0] && this.skipRenderPass[1];
|
return !this.isInitialized ? false : (this.skipRenderPass[0] && this.skipRenderPass[1]
|
||||||
|
&& !this.needsUpdate); // What the fuck!?
|
||||||
}
|
}
|
||||||
|
|
||||||
public void markDirty() {
|
public void markDirty() {
|
||||||
|
|
|
@ -1231,8 +1231,6 @@ public class GL11 implements JSObject {
|
||||||
}
|
}
|
||||||
|
|
||||||
public static final void glPolygonOffset(float p1, float p2) {
|
public static final void glPolygonOffset(float p1, float p2) {
|
||||||
p1 = -p1;
|
|
||||||
p2 = -p2;
|
|
||||||
if(p1 != polygonOffset1 || p2 != polygonOffset2) {
|
if(p1 != polygonOffset1 || p2 != polygonOffset2) {
|
||||||
_wglPolygonOffset(p1, p2);
|
_wglPolygonOffset(p1, p2);
|
||||||
polygonOffset1 = p1;
|
polygonOffset1 = p1;
|
||||||
|
@ -1589,6 +1587,11 @@ public class GL11 implements JSObject {
|
||||||
out.put(_wglGetQueryObjecti(q, _wGL_QUERY_RESULT_AVAILABLE));
|
out.put(_wglGetQueryObjecti(q, _wGL_QUERY_RESULT_AVAILABLE));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public static final void glGetQueryResult1(int in, IntBuffer out) {
|
||||||
|
QueryGL q = queryObjs.get(in);
|
||||||
|
out.put(_wglGetQueryObjecti(q, _wGL_QUERY_RESULT));
|
||||||
|
}
|
||||||
|
|
||||||
public static final int glGenTextures() {
|
public static final int glGenTextures() {
|
||||||
return texObjects.register(_wglGenTextures());
|
return texObjects.register(_wglGenTextures());
|
||||||
}
|
}
|
||||||
|
@ -5447,7 +5450,7 @@ public class GL11 implements JSObject {
|
||||||
webgl.bindFramebuffer(FRAMEBUFFER, backBuffer.obj);
|
webgl.bindFramebuffer(FRAMEBUFFER, backBuffer.obj);
|
||||||
resizeBackBuffer(w2, h2);
|
resizeBackBuffer(w2, h2);
|
||||||
try {
|
try {
|
||||||
Thread.sleep(1l);
|
Thread.sleep(0l);
|
||||||
} catch (InterruptedException e) {
|
} catch (InterruptedException e) {
|
||||||
;
|
;
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in New Issue
Block a user