package com.sijobe.spc.command; import com.sijobe.spc.wrapper.CommandException; import com.sijobe.spc.wrapper.CommandSender; import com.sijobe.spc.wrapper.Minecraft; import com.sijobe.spc.wrapper.Player; import com.sijobe.spc.wrapper.World; import java.util.List; /** * Light command from SinglePlayerCommands 3.2.2, * ported to SinglePlayerConsole then back to SPC 4.1 * * @author q3hardcore * @version 1.4 */ @Command ( name = "light", description = "Lights up world", version = "1.4" ) public class Light extends StandardCommand { public static boolean isLit = false; // is current world lit? public static int litWorld = 0; // hashCode for currently lit world /** * @see com.sijobe.spc.wrapper.CommandBase#execute(com.sijobe.spc.wrapper.CommandSender, java.util.List) */ @Override public void execute(CommandSender sender, List<?> params) throws CommandException { Player player = super.getSenderAsPlayer(sender); // Why super.? Meh, Cannon has it like that Player clientPlayer = Minecraft.getPlayer(); if(clientPlayer == null) { throw new CommandException("No client player!"); } World clientWorld = clientPlayer.getWorld(); if(player.getWorld().getMinecraftWorld().hashCode() != litWorld) { isLit = false; } // Note: provider is worldProvider if(!isLit) { sender.sendMessageToPlayer("Lighting world"); float[] lightBrightnessTable = clientWorld.getMinecraftWorld().provider.lightBrightnessTable; for(int i = 0; i < lightBrightnessTable.length; i++) { lightBrightnessTable[i] = 1.0F; } litWorld = player.getWorld().getMinecraftWorld().hashCode(); // we go by the serverside hashcode } else { sender.sendMessageToPlayer("Restoring light levels"); clientWorld.getMinecraftWorld().provider.registerWorld(clientWorld.getMinecraftWorld()); } isLit = !isLit; // toggle isLit } /** * Only enabled in single player since this is a client-side mod * * @see com.sijobe.spc.wrapper.CommandBase#isEnabled() */ @Override public boolean isEnabled() { return Minecraft.isSinglePlayer(); } }