package net.minecraft.src; import java.io.File; import java.io.FileNotFoundException; import java.io.IOException; import java.net.URL; import java.util.*; import java.util.logging.Level; import net.minecraft.client.Minecraft; public class mod_startingInventory extends BaseMod { @MLProp(info="Set to true to allow checking for mod updates, false to disable") public static boolean allowUpdateCheck = true; @MLProp(info="The length of time in game time ticks (1/20th of a second) that items are allowed to spawn in a fresh world. If you are on a slower machine and are having trouble with items not spawning, try setting this a little higher\n\n**ONLY EDIT WHAT IS BELOW THIS**") public static int tickWindow = 100; private boolean checkUpdate; boolean canGiveItems; String fileName; File mcdir; File file; private Scanner scan; private List list; public mod_startingInventory() { fileName = "startingInventory"; mcdir = Minecraft.getMinecraftDir(); file = new File(mcdir, (new StringBuilder()).append("/mods/daftpvf/").append(fileName).append(".txt").toString()); list = new ArrayList(); list.clear(); if(!file.exists() || scan == null) { createFile(); } readItems(); checkUpdate = allowUpdateCheck; } @Override public String getVersion() { return "1.3.2.b modified by bspkrs"; } @Override public void load() { if(!isCurrentVersion(ModLoader.getMinecraftInstance())) ModLoader.getLogger().log(Level.INFO, "Your version of StartingInventory is out of date! Visit http://www.minecraftforum.net/topic/1009577- for the latest version."); } @Override public boolean onTickInGame(float f, Minecraft mc) { if(canGiveItems && mc.isSingleplayer() && isFreshWorld(mc) && isPlayerInventoryEmpty(mc.thePlayer)) addItems(); canGiveItems = false; if(checkUpdate) { if(!isCurrentVersion(mc)) { mc.thePlayer.addChatMessage("\247cYour version of StartingInventory is out of date!"); mc.thePlayer.addChatMessage("\247cVisit http://www.minecraftforum.net/topic/1009577- for the latest version."); } checkUpdate = false; } return false; } @Override public void clientConnect(NetClientHandler nch) { ModLoader.setInGameHook(this, true, true); canGiveItems = true; } private boolean isCurrentVersion(Minecraft minecraft) { try { String[] version = loadTextFromURL(new URL("https://dl.dropbox.com/u/20748481/Minecraft/1.3.1/startingInventory.version")); return version[0].equalsIgnoreCase(getVersion()); } catch(Throwable e) { ModLoader.getLogger().log(Level.WARNING, "Error getting current version info: " + e.getStackTrace()); return true; } } private String[] loadTextFromURL(URL url) { ArrayList arraylist = new ArrayList(); Scanner scanner = null; try { scanner = new Scanner(url.openStream(), "UTF-8"); } catch(Throwable e) { ModLoader.getLogger().log(Level.WARNING, "Error getting current version info: " + e.getStackTrace()); return new String[] {""}; } while(scanner.hasNextLine()) { arraylist.add(scanner.nextLine()); } scanner.close(); return (String[])arraylist.toArray(new String[arraylist.size()]); } public boolean isFreshWorld(Minecraft mc) { try { return (int)mc.theWorld.worldInfo.getWorldTime() < tickWindow; } catch(Exception e) { return false; } } public boolean isPlayerInventoryEmpty(EntityClientPlayerMP player) { try { for(int i = 0; i < player.inventory.mainInventory.length; i++) if(player.inventory.mainInventory[i] != null) return false; return true; } catch(Exception e) { return false; } } public void addItems() { for(int i = 0; i < list.size(); i++) { addItem((String)list.get(i)); } } private void addItem(String s) { int j = 1; int k = 0; int l = s.indexOf(','); int i1 = s.indexOf(',', l + 1); int i; if(l != -1) { i = parseInt(s.substring(0, l)); if(i1 != -1) { j = parseInt(s.substring(l + 1, i1)); k = parseInt(s.substring(i1 + 1)); } else { j = parseInt(s.substring(l + 1)); } } else { i = parseInt(s); } if(Item.itemsList[i] == null) { return; } else { Minecraft mc = ModLoader.getMinecraftInstance(); //ModLoader.getMinecraftInstance().thePlayer.inventory.addItemStackToInventory(new ItemStack(i, j, k)); mc.getIntegratedServer().executeCommand("give " + mc.thePlayer.username + " " + i + " " + j + " " + k); return; } } public void readItems() { if(scan != null) { for(; scan.hasNextLine(); list.add(scan.nextLine())) { } } scan.close(); } public int parseInt(String s) { try { return Integer.parseInt(s.trim()); } catch(NumberFormatException numberformatexception) { return 0; } } public void createFile() { File file1 = new File(mcdir, "/mods/daftpvf/"); if(!file1.exists() && file1.mkdir()) { file = new File(file1, (new StringBuilder()).append(fileName).append(".txt").toString()); } else { file = new File(file1, (new StringBuilder()).append(fileName).append(".txt").toString()); } try { file.createNewFile(); scan = new Scanner(file); } catch(Exception exception) { } } }