• 1

    posted a message on Mods FAQ and security considerations
    Quote from bilde2910»

    asiekierka wrote up a good reasoning about why many mods still hang on in 1.7.10 and why modpack makers like that version a lot. Here's a link. I have seen a tons of mods for 1.8+ as well, but the modpack movement on that version and newer ones has died off a little bit. Hope this helps.

    Sir, 1) Could you review the initial post and revise it? I've worked it a bit, but this is one of the best writeups out there. The use of profiles and game directories to keep mods from interfering with other versions and cursemod as a source. This is one of the most visible sources of information to mod users and you own the original pinned post. The community would thank you.
    2) The modding community is alive and well, and it's very competitive for modders to introduce mods that are wanted. That said, vanilla is much better in features, so more gamers choose not to use mods.

    Thanks
    Posted in: Minecraft Mods
  • 0

    posted a message on 1.11 News and Updates - [Information from Mojang AB]

    Will commands like setblock rotate states inside command_blocks in rotated structure_blocks?


    e.g. assume I have a setblock ~4 ~3 ~2 minecraft:torch facing=north command in a command_block. assume I have the command_block in a house, and I place the house rotated 180 degrees. Will the command be changed? facing=south and ~-4 ~3 ~-2


    In the release, as tested no.


    Also one can use both a data value and a tag.

    /setblock ~ ~ ~ wool 12 color=blue places a red wool.

    Posted in: Recent Updates and Snapshots
  • 0

    posted a message on Basic java for pics to commands.

    400X200 Parthenon

    Posted in: Mapping and Modding Tutorials
  • 0

    posted a message on Basic java for pics to commands.

    This is a raw java utility for generating command files for the command runner mod (commandrunnermod.com).


    I use it to convert pixel art to glass and shapes. It's unfinished, but might be useful to you. It's raw code, but it's a bit hard to find stuff like this.


    Might be useful to you if you are a java coder.



    // imagetomcglass unfinished 
    import java.awt.Color;
    import java.awt.image.BufferedImage;
    import java.io.File;
    import java.io.IOException;
    import java.io.PrintWriter;
    
    import javax.imageio.ImageIO;
    
    public class ImageToMCGlass {
    
    	static ProcessOrientationType orient = ProcessOrientationType.flat;
    	private static boolean whiteair = false;
    	private static OutputType outtype = OutputType.stained_glass;
    
    	public static void main(String[] args) throws IOException {
    		// TODO Auto-generated method stub
    		if (args.length < 4) {
    			System.out
    					.println("Need filename of image, outputname, flat|vertical|depthf|depthv, glass|clay|opaque");
    			return;
    		}
    		File fl = new File(args[0]);
    		BufferedImage bi = ImageIO.read(fl);
    		File outfile = new File(args[1]);
    		PrintWriter pw = new PrintWriter(outfile);
    		int height = bi.getHeight();
    		int width = bi.getWidth();
    		boolean skip = false;
    		
    		boolean div2=false;
    		String colorstr = "";
    		String coordstr = "";
    		ColorUtils cu = new ColorUtils();
    		String execcoords = "~ ~ ~";
    		if (args[2].toLowerCase().trim().matches("flat")) {
    			orient = ProcessOrientationType.flat;
    			System.out.println("y,z up flat");
    		} else if (args[2].toLowerCase().trim().matches("vertical"))
    
    		{
    			orient = ProcessOrientationType.vertical;
    			System.out.println("x,y vertical");
    		} else if (args[2].toLowerCase().trim().matches("depthv")) {
    			orient = ProcessOrientationType.depthvert;
    			System.out.println("x,y vertical");
    		} else if (args[2].toLowerCase().trim().matches("depthh")) {
    			orient = ProcessOrientationType.depthflat;
    			System.out.println("y,z flat");
    		} else if (args[2].toLowerCase().trim().matches("wall")) {
    			orient = ProcessOrientationType.wall;
    			div2=true; 
    			execcoords = "~"+(-Math.abs(height/2))+" ~ "+"~"+(-Math.abs(width/2));
    			System.out.println("y,z wall");
    		}
    
    		if (args[3].toLowerCase().trim().matches("whiteair")) {
    			whiteair = true;
    			System.out.println("white/transparent is unmapped (air)");
    		}
    
    		if (args[3] == "graydepth") {
    			System.out.println("Grayscale image is mapped as depth");
    			// bi.
    		}
    		// cu.
    		
    		for (int x = 0; x < width; x++) {
    			for (int y = 0; y < height; y++) {
    				int color = bi.getRGB(x, y);
    				Color clr = new Color(bi.getRGB(x, y));
    
    				int red = (color & 0xFF0000) >> 16;
    				int green = (color & 0x00FF00) >> 8;
    				int blue = (color & 0x0000FF);
    				if (outtype == OutputType.stained_glass)
    					colorstr = cu.getMCColorNameFromRgb(
    							"minecraft:stained_glass ", red, green, blue);
    				else if (outtype == OutputType.stained_clay) {
    					colorstr = cu.getMCColorNameFromRgb(
    							"minecraft:stained_clay ", red, green, blue);
    				}
    				if (!colorstr.startsWith("No")) {
    
    				} else
    					colorstr = "minecraft:wool 15";
    				// if ()
    				if (orient == ProcessOrientationType.flat) {
    					coordstr = "setblock ~" + (height - y) + " ~ " + "~"
    							+ (width - x);
    				} else if (orient == ProcessOrientationType.vertical) {
    					coordstr = "setblock ~" + (width - x) + " ~" + (height - y)
    							+ " ~";
    				} else if (orient == ProcessOrientationType.depthvert) {
    					int depth = 4 - (1 + ((red + blue + green) / 3) / 64);
    					coordstr = "fill ~" + (width - x) + " ~" + (height - y)
    							+ " ~" + " ~" + (width - x) + " ~" + (height - y)
    							+ " ~" + depth;
    					colorstr = "minecraft:stone 0";
    				} else if (orient == ProcessOrientationType.depthflat) {
    					int depth = 4 - (1 + ((red + blue + green) / 3) / 64);
    					coordstr = "fill ~" + (height - y) + " ~" + " ~"
    							+ (width - x) + " ~" + (height - y) + " ~" + depth
    							+ " ~" + (width - x);
    					colorstr = "minecraft:quartz_block 3";
    				} else if (orient == ProcessOrientationType.wall) {
    					int doit = 4 - (1 + ((red + blue + green) / 3) / 64);
    					if ((red + blue + green) / 3 < 64) {
    						coordstr = "fill ~" + (height - y) + " ~" + " ~"
    								+ (width - x) + " ~" + (height - y) + " ~" + 90
    								+ " ~" + (width - x);
    						colorstr = args[4].trim() +" 0";
    						skip = false;
    					} else if (green > 224 & (red < 64 & blue < 64)) {
    						coordstr = "fill ~" + (height - y) + " ~" + " ~"
    								+ (width - x) + " ~" + (height - y) + " ~"
    								+ " ~" + (width - x);
    						colorstr = "minecraft:dirt 0";
    						skip = false;
    					} else if (green < 64 & (red > 224 & blue < 64)) {
    						coordstr = "fill ~" + (height - y) + " ~" + " ~"
    								+ (width - x) + " ~" + (height - y) + " ~"
    								+ " ~" + (width - x);
    						colorstr = "minecraft:stone 3";
    						skip = false;
    						
    					
    						
    				} else if (green < 64 & (red < 64 & blue > 224)) {
    					coordstr = "fill ~" + (height - y) + " ~" + " ~"
    							+ (width - x) + " ~" + (height - y) + " ~1"
    							+ " ~" + (width - x);
    					colorstr = "minecraft:planks 3";
    					skip = false;
    					
    				} else
    						skip = true;
    				}
    				if (skip) {
    
    				} else {
    					pw.println("/execute @p "+ execcoords + " " + coordstr + " " + colorstr);
    					System.out.println("/" + coordstr + " " + colorstr
    							+ " color r" + red + " g" + green + " b" + blue);
    				}
    
    			}
    
    		}
    		pw.println();
    		pw.close();
    		// return 0;
    	}
    }




    Colorutil


    //ColorUtils.java unfinished. 
    
    
    import java.awt.Color;
    import java.util.ArrayList;
    
    /**
     * Java Code to get a color name from rgb/hex value/awt color
     * 
     * The part of looking up a color name from the rgb values is edited from
     * https://gist.github.com/nightlark/6482130#file-gistfile1-java (that has some errors) by Ryan Mast (nightlark)
     * 
     * @author Xiaoxiao Li
     * 
     */
    
    public class ColorUtils {
     static final String White = "0";
     static final String Orange = "1";
     static final String Magenta = "2";
     static final String LightBlue = "3";
     static final String Yellow = "4";
     static final String Lime = "5";
     static final String Pink = "6";
     static final String Gray = "7";
     static final String LightGray = "8";
     static final String Cyan = "9";
     static final String Purple = "10";
     static final String Blue = "11";
     static final String Brown = "12";
     static final String Green = "13";
     static final String Red = "14";
     static final String Black = "15";
     /**
     * Initialize the color list that we have.
     */
     private ArrayList<ColorName> initColorList() {
     ArrayList<ColorName> colorList = new ArrayList<ColorName>();
     colorList.add(new ColorName("AliceBlue",LightBlue, "packed_ice 0", 0xF0, 0xF8, 0xFF));
     colorList.add(new ColorName("AntiqueWhite",White, "bone_block 0", 0xFA, 0xEB, 0xD7));
     colorList.add(new ColorName("Aqua", Cyan, "stained_clay " + Cyan , 0x00, 0xFF, 0xFF));
     colorList.add(new ColorName("Aquamarine", Lime, "prismarine 1", 0x7F, 0xFF, 0xD4));
     colorList.add(new ColorName("Azure", LightBlue, "diamond", 0xF0, 0xFF, 0xFF));
     colorList.add(new ColorName("Beige", White, "sandstone", 0xF5, 0xF5, 0xDC));
     colorList.add(new ColorName("Bisque",Pink, "stained_clay " + Pink, 0xFF, 0xE4, 0xC4));
     colorList.add(new ColorName("Black", Black, "coal", 0x00, 0x00, 0x00));
     colorList.add(new ColorName("BlanchedAlmond", White, "quartz_block 1", 0xFF, 0xEB, 0xCD));
     colorList.add(new ColorName("Blue", Blue, "lapis_block", 0x00, 0x00, 0xFF));
     colorList.add(new ColorName("BlueViolet", Purple, "purpur_block 1", 0x8A, 0x2B, 0xE2));
     colorList.add(new ColorName("Brown", Brown, "planks 1", 0xA5, 0x2A, 0x2A));
     colorList.add(new ColorName("BurlyWood", Brown, "log2 0", 0xDE, 0xB8, 0x87));
     colorList.add(new ColorName("CadetBlue", LightBlue, "stained_clay "+Blue, 0x5F, 0x9E, 0xA0));
     colorList.add(new ColorName("Chartreuse", Lime, "stained_clay " + Lime, 0x7F, 0xFF, 0x00));
     colorList.add(new ColorName("Chocolate", Brown, "log2 0", 0xD2, 0x69, 0x1E));
     colorList.add(new ColorName("Coral", Pink, "stained_clay "+Pink, 0xFF, 0x7F, 0x50));
     colorList.add(new ColorName("CornflowerBlue", Blue, "diamond", 0x64, 0x95, 0xED));
     colorList.add(new ColorName("Cornsilk", LightBlue, "packed_ice", 0xFF, 0xF8, 0xDC));
     colorList.add(new ColorName("Crimson", Red, "redstone_block", 0xDC, 0x14, 0x3C));
     colorList.add(new ColorName("Cyan", Cyan, "stained_clay "+Cyan, 0x00, 0xFF, 0xFF));
     colorList.add(new ColorName("DarkBlue", Blue, "lapis_block", 0x00, 0x00, 0x8B));
     colorList.add(new ColorName("DarkCyan", Blue, "lapis_block", 0x00, 0x8B, 0x8B));
     colorList.add(new ColorName("DarkGoldenRod", Orange, "gold", 0xB8, 0x86, 0x0B));
     colorList.add(new ColorName("DarkGray", Gray, "cobblestone",0xA9, 0xA9, 0xA9));
     colorList.add(new ColorName("DarkGreen", Green, "leaves 7", 0x00, 0x64, 0x00));
     colorList.add(new ColorName("DarkKhaki", Green, "leaves 7", 0xBD, 0xB7, 0x6B));
     colorList.add(new ColorName("DarkMagenta", Purple, "purpur_block 1", 0x8B, 0x00, 0x8B));
     colorList.add(new ColorName("DarkOliveGreen", Green, "leaves 7", 0x55, 0x6B, 0x2F));
     colorList.add(new ColorName("DarkOrange", Orange, "magma_block ", 0xFF, 0x8C, 0x00));
     colorList.add(new ColorName("DarkOrchid" , Purple, "purpur_block 1", 0x99, 0x32, 0xCC));
     colorList.add(new ColorName("DarkRed", Red, "redstone_block", 0x8B, 0x00, 0x00));
     colorList.add(new ColorName("DarkSalmon", Magenta, "purpur_block 2", 0xE9, 0x96, 0x7A));
     colorList.add(new ColorName("DarkSeaGreen", Green, "prismrine 2", 0x8F, 0xBC, 0x8F));
     colorList.add(new ColorName("DarkSlateBlue", Blue, "stained_clay "+ Blue, 0x48, 0x3D, 0x8B));
     colorList.add(new ColorName("DarkSlateGray", Black, "stained_clay" + Gray, 0x2F, 0x4F, 0x4F));
     colorList.add(new ColorName("DarkTurquoise", Blue, "prismarine 2", 0x00, 0xCE, 0xD1));
     colorList.add(new ColorName("DarkViolet", Purple, "purpur_pillar 1", 0x94, 0x00, 0xD3));
     colorList.add(new ColorName("DeepPink", Pink, "", 0xFF, 0x14, 0x93));
     colorList.add(new ColorName("DeepSkyBlue", LightBlue, "diamond", 0x00, 0xBF, 0xFF));
     colorList.add(new ColorName("DimGray", Gray, "coal_ore", 0x69, 0x69, 0x69));
     colorList.add(new ColorName("DodgerBlue", Blue, "diamond", 0x1E, 0x90, 0xFF));
     colorList.add(new ColorName("FireBrick", Red, "nether_brick", 0xB2, 0x22, 0x22));
     colorList.add(new ColorName("FloralWhite", White, "quartz_block 0", 0xFF, 0xFA, 0xF0));
     colorList.add(new ColorName("ForestGreen", Green, "leaves 7", 0x22, 0x8B, 0x22));
     colorList.add(new ColorName("Fuchsia", Magenta, "purpur_block", 0xFF, 0x00, 0xFF));
     colorList.add(new ColorName("Gainsboro", White, "bone_block", 0xDC, 0xDC, 0xDC));
     colorList.add(new ColorName("GhostWhite", White, "wool 0", 0xF8, 0xF8, 0xFF));
     colorList.add(new ColorName("Gold", Yellow, "gold", 0xFF, 0xD7, 0x00));
     colorList.add(new ColorName("GoldenRod", Yellow, "gold", 0xDA, 0xA5, 0x20));
     colorList.add(new ColorName("Gray", Gray, "stone 0", 0x80, 0x80, 0x80));
     colorList.add(new ColorName("Green", Green, "emerald", 0x00, 0x80, 0x00));
     colorList.add(new ColorName("GreenYellow", Lime, "wool "+Lime, 0xAD, 0xFF, 0x2F));
     colorList.add(new ColorName("HoneyDew", Orange, "", 0xF0, 0xFF, 0xF0));
     colorList.add(new ColorName("HotPink", Pink, "", 0xFF, 0x69, 0xB4));
     colorList.add(new ColorName("IndianRed", Red, "nether_brick", 0xCD, 0x5C, 0x5C));
     colorList.add(new ColorName("Indigo", Blue, "", 0x4B, 0x00, 0x82));
     colorList.add(new ColorName("Ivory", White,"bone_block", 0xFF, 0xFF, 0xF0));
     colorList.add(new ColorName("Khaki", Green, "", 0xF0, 0xE6, 0x8C));
     colorList.add(new ColorName("Lavender", Magenta, "", 0xE6, 0xE6, 0xFA));
     colorList.add(new ColorName("LavenderBlush", Magenta, "", 0xFF, 0xF0, 0xF5));
     colorList.add(new ColorName("LawnGreen", Green, "", 0x7C, 0xFC, 0x00));
     colorList.add(new ColorName("LemonChiffon", Yellow, "", 0xFF, 0xFA, 0xCD));
     colorList.add(new ColorName("LightBlue", LightBlue, "", 0xAD, 0xD8, 0xE6));
     colorList.add(new ColorName("LightCoral", Pink, "", 0xF0, 0x80, 0x80));
     colorList.add(new ColorName("LightCyan", LightBlue, "", 0xE0, 0xFF, 0xFF));
     colorList.add(new ColorName("LightGoldenRodYellow", Yellow, "", 0xFA, 0xFA, 0xD2));
     colorList.add(new ColorName("LightGray", LightGray, "", 0xD3, 0xD3, 0xD3));
     colorList.add(new ColorName("LightGreen", Lime, "", 0x90, 0xEE, 0x90));
     colorList.add(new ColorName("LightPink", Pink, "", 0xFF, 0xB6, 0xC1));
     colorList.add(new ColorName("LightSalmon", Magenta, "", 0xFF, 0xA0, 0x7A));
     colorList.add(new ColorName("LightSeaGreen", Lime, "", 0x20, 0xB2, 0xAA));
     colorList.add(new ColorName("LightSkyBlue", LightBlue, "", 0x87, 0xCE, 0xFA));
     colorList.add(new ColorName("LightSlateGray", LightGray, "", 0x77, 0x88, 0x99));
     colorList.add(new ColorName("LightSteelBlue", LightGray, "", 0xB0, 0xC4, 0xDE));
     colorList.add(new ColorName("LightYellow", Yellow, "", 0xFF, 0xFF, 0xE0));
     colorList.add(new ColorName("Lime", Lime, "", 0x00, 0xFF, 0x00));
     colorList.add(new ColorName("LimeGreen", Lime,"", 0x32, 0xCD, 0x32));
     colorList.add(new ColorName("Linen", White, "", 0xFA, 0xF0, 0xE6));
     colorList.add(new ColorName("Magenta", Magenta, "", 0xFF, 0x00, 0xFF));
     colorList.add(new ColorName("Maroon", Red, "", 0x80, 0x00, 0x00));
     colorList.add(new ColorName("MediumAquaMarine", Cyan, "", 0x66, 0xCD, 0xAA));
     colorList.add(new ColorName("MediumBlue", Blue, "", 0x00, 0x00, 0xCD));
     colorList.add(new ColorName("MediumOrchid", Magenta, "", 0xBA, 0x55, 0xD3));
     colorList.add(new ColorName("MediumPurple", Purple, "", 0x93, 0x70, 0xDB));
     colorList.add(new ColorName("MediumSeaGreen", Green, "prismarine 0", 0x3C, 0xB3, 0x71));
     colorList.add(new ColorName("MediumSlateBlue", Blue, "", 0x7B, 0x68, 0xEE));
     colorList.add(new ColorName("MediumSpringGreen", Lime, "", 0x00, 0xFA, 0x9A));
     colorList.add(new ColorName("MediumTurquoise", Cyan, "", 0x48, 0xD1, 0xCC));
     colorList.add(new ColorName("MediumVioletRed", Purple, "", 0xC7, 0x15, 0x85));
     colorList.add(new ColorName("MidnightBlue", Blue, "", 0x19, 0x19, 0x70));
     colorList.add(new ColorName("MintCream", Lime, "", 0xF5, 0xFF, 0xFA));
     colorList.add(new ColorName("MistyRose", Pink, "", 0xFF, 0xE4, 0xE1));
     colorList.add(new ColorName("Moccasin", Orange, "", 0xFF, 0xE4, 0xB5));
     colorList.add(new ColorName("NavajoWhite", White, "", 0xFF, 0xDE, 0xAD));
     colorList.add(new ColorName("Navy", Blue, "", 0x00, 0x00, 0x80));
     colorList.add(new ColorName("OldLace", White, "", 0xFD, 0xF5, 0xE6));
     colorList.add(new ColorName("Olive", Brown, "", 0x80, 0x80, 0x00));
     colorList.add(new ColorName("OliveDrab", Brown, "", 0x6B, 0x8E, 0x23));
     colorList.add(new ColorName("Orange", Orange, "", 0xFF, 0xA5, 0x00));
     colorList.add(new ColorName("OrangeRed", Red, "", 0xFF, 0x45, 0x00));
     colorList.add(new ColorName("Orchid", Pink, "", 0xDA, 0x70, 0xD6));
     colorList.add(new ColorName("PaleGoldenRod", Yellow, "", 0xEE, 0xE8, 0xAA));
     colorList.add(new ColorName("PaleGreen", Lime, "", 0x98, 0xFB, 0x98));
     colorList.add(new ColorName("PaleTurquoise", Cyan, "", 0xAF, 0xEE, 0xEE));
     colorList.add(new ColorName("PaleVioletRed", Magenta, "", 0xDB, 0x70, 0x93));
     colorList.add(new ColorName("PapayaWhip", White, "", 0xFF, 0xEF, 0xD5));
     colorList.add(new ColorName("PeachPuff", Pink, "", 0xFF, 0xDA, 0xB9));
     colorList.add(new ColorName("Peru", Red, "", 0xCD, 0x85, 0x3F));
     colorList.add(new ColorName("Pink", Pink, "", 0xFF, 0xC0, 0xCB));
     colorList.add(new ColorName("Plum", Purple, "",0xDD, 0xA0, 0xDD));
     colorList.add(new ColorName("PowderBlue", LightBlue, "", 0xB0, 0xE0, 0xE6));
     colorList.add(new ColorName("Purple", Purple, "", 0x80, 0x00, 0x80));
     colorList.add(new ColorName("Red", Red, "", 0xFF, 0x00, 0x00));
     colorList.add(new ColorName("RosyBrown", Brown, "", 0xBC, 0x8F, 0x8F));
     colorList.add(new ColorName("RoyalBlue", Blue, "", 0x41, 0x69, 0xE1));
     colorList.add(new ColorName("SaddleBrown", Brown, "", 0x8B, 0x45, 0x13));
     colorList.add(new ColorName("Salmon", Pink, "", 0xFA, 0x80, 0x72));
     colorList.add(new ColorName("SandyBrown", Orange, "", 0xF4, 0xA4, 0x60));
     colorList.add(new ColorName("SeaGreen", Green, "", 0x2E, 0x8B, 0x57));
     colorList.add(new ColorName("SeaShell", White, "", 0xFF, 0xF5, 0xEE));
     colorList.add(new ColorName("Sienna", Brown, "", 0xA0, 0x52, 0x2D));
     colorList.add(new ColorName("Silver", LightGray, "", 0xC0, 0xC0, 0xC0));
     colorList.add(new ColorName("SkyBlue", LightBlue, "", 0x87, 0xCE, 0xEB));
     colorList.add(new ColorName("SlateBlue", Blue, "", 0x6A, 0x5A, 0xCD));
     colorList.add(new ColorName("SlateGray", Gray, "", 0x70, 0x80, 0x90));
     colorList.add(new ColorName("Snow", White, "", 0xFF, 0xFA, 0xFA));
     colorList.add(new ColorName("SpringGreen", Lime, "", 0x00, 0xFF, 0x7F));
     colorList.add(new ColorName("SteelBlue", Blue, "",0x46, 0x82, 0xB4));
     colorList.add(new ColorName("Tan", Yellow, "", 0xD2, 0xB4, 0x8C));
     colorList.add(new ColorName("Teal", Cyan, "", 0x00, 0x80, 0x80));
     colorList.add(new ColorName("Thistle", Magenta, "", 0xD8, 0xBF, 0xD8));
     colorList.add(new ColorName("Tomato",Red,"redstone_block", 0xFF, 0x63, 0x47));
     colorList.add(new ColorName("Turquoise", LightBlue, "", 0x40, 0xE0, 0xD0));
     colorList.add(new ColorName("Violet", Purple, "", 0xEE, 0x82, 0xEE));
     colorList.add(new ColorName("Wheat", Yellow, "hay_block 0", 0xF5, 0xDE, 0xB3));
     colorList.add(new ColorName("White", White, "quartz_block 0", 0xFF, 0xFF, 0xFF));
     colorList.add(new ColorName("WhiteSmoke", White, "wool"+White, 0xF5, 0xF5, 0xF5));
     colorList.add(new ColorName("Yellow", Yellow, "gold_block", 0xFF, 0xFF, 0x00));
     colorList.add(new ColorName("YellowGreen", Lime, "wool"+Lime, 0x9A, 0xCD, 0x32));
     return colorList;
     }
    
     public ColorUtils() {
     
     // TODO Auto-generated constructor stub
     }
    
     /**
     * Get the closest color name from our list
     * 
     * @param r
     * @param g
     * @param b
     * @return
     */
     public String getColorNameFromRgb(int r, int g, int  B) {
     ArrayList<ColorName> colorList = initColorList();
     ColorName closestMatch = null;
     int minMSE = Integer.MAX_VALUE;
     int mse;
     for (ColorName c : colorList) {
     mse = c.computeMSE(r, g, b);
     if (mse < minMSE) {
     minMSE = mse;
     closestMatch = c;
     }
     }
    
     if (closestMatch != null) {
     return closestMatch.getMCName();
     } else {
     return "No matched color name.";
     }
     }
    
     public String getMCColorNameFromRgb(String staintype, int r, int g, int  B) {
     ArrayList<ColorName> colorList = initColorList();
     ColorName closestMatch = null;
     int minMSE = Integer.MAX_VALUE;
     int mse;
     for (ColorName c : colorList) {
     mse = c.computeMSE(r, g, b);
     if (mse < minMSE) {
     minMSE = mse;
     closestMatch = c;
     }
     }
    
     if (closestMatch != null) {
     return staintype + closestMatch.getMCName();
     } else {
     return "No matched color name.";
     }
     }
     
     /**
     * Convert hexColor to rgb, then call getColorNameFromRgb(r, g, B)
     * 
     * @param hexColor
     * @return
     */
     public String getColorNameFromHex(int hexColor) {
     int r = (hexColor & 0xFF0000) >> 16;
     int g = (hexColor & 0xFF00) >> 8;
     int b = (hexColor & 0xFF);
     return getColorNameFromRgb(r, g, b);
     }
    
     public int colorToHex(Color c) {
     return Integer.decode("0x"
     + Integer.toHexString(c.getRGB()).substring(2));
     }
    
     public String getColorNameFromColor(Color color) {
     return getColorNameFromRgb(color.getRed(), color.getGreen(),
     color.getBlue());
     }
    
     /**
     * SubClass of ColorUtils. In order to lookup color name
     * 
     * @author Xiaoxiao Li
     * 
     */
     public class ColorName {
     public int r, g, b;
     public String name;
     public String MCGlassName;
     public String MCBlockOpaqueName;
    
     public ColorName(String name, String MCGlassName, String MCBlockOpaqueName, int r, int g, int  B) {
     this.r = r;
     this.g = g;
     this.b = b;
     this.name = name;
     this.MCGlassName = MCGlassName;
     this.MCBlockOpaqueName=MCBlockOpaqueName;
     }
    
     public int computeMSE(int pixR, int pixG, int pixB) {
     return (int) (((pixR - r) * (pixR - r) + (pixG - g) * (pixG - g) + (pixB - B)
     * (pixB - b)) / 3);
     }
    
     public int getR() {
     return r;
     }
    
     public int getG() {
     return g;
     }
    
     public int getB() {
     return b;
     }
    
     /**
     * @return the name
     */
     public String getName() {
     return name;
     }
    
     /**
     * @param name the name to set
     */
     public void setName(String name) {
     this.name = name;
     }
    
     /**
     * @return the mCBlockOpaqueName
     */
     public String getMCBlockOpaqueName() {
     return MCBlockOpaqueName;
     }
    
     /**
     * @param mCBlockOpaqueName the mCBlockOpaqueName to set
     */
     public void setMCBlockOpaqueName(String mCBlockOpaqueName) {
     MCBlockOpaqueName = mCBlockOpaqueName;
     }
    
     public String getMCName() {
     return MCGlassName;
     }
     }
    }

    // OutputType.java
    
    
    public enum OutputType {
          stained_glass,stained_clay,opaquewiderange
    }


    // ProcessColorType.java
    public enum ProcessColorType {
     grayscale, color
    }

    // ProcessOrientationType.java
    public enum ProcessOrientationType {
        flat, vertical, depthvert, depthflat, wall 
    }
    Posted in: Mapping and Modding Tutorials
  • 0

    posted a message on [Request] Community Feedback Mod

    One of the features of Curse distributed mods is the ability to post issues and get feedback. FEEDBACK is essential to the modder, especially any issues. If you bother to download it, please post feedback problems and requests. Most modders love feedback and appreciate bug reports. We don't fix what we don't know. On github, here, or Curse... please post feedback.

    Posted in: Requests / Ideas For Mods
  • 0

    posted a message on Why Herobrine is always removed in every update.

    Some are classically eternal. Like this famous hoax. Thousands called the BBC looking for seeds.

    Posted in: Discussion
  • 0

    posted a message on For the Critics (FTC)

    Thanks. send me a 16 color map of your avatar logo BTW, and I'll use executefile mod to make a stained glass structure block you can place.

    Posted in: Suggestions
  • 1

    posted a message on For the Critics (FTC)
    Quote from yoshi9048»

    Will it fit? - Gameplay Mechanic Edition


    Sometimes you're not talking about a new item or a new weapon, but rather a new gameplay mechanic.


    Say sliding or stabbing while blocking, etc. The point is, someone at some point (because indignant pessimism is the only safe stance on these forums and because I believe in the power of the law of truly large numbers (see Murphy's Law)) will eventually say "doesn't fit". Full stop.


    So the question comes? Are they correct? Wall jumping certainly doesn't sound like it would fit, does it?... To answer that. They are dead wrong.


    How do I know? Because they set themselves up for failure. There is nothing backing up their statement. With enough time I can create a convincing statement that does prove it fits. I literally can take any angle I want to prove them wrong; anyone can.


    So step 1) QUALIFY YOUR STATEMENT. Use supporting details to determine why charging a bow without an arrow doesn't fit (within the game world); describe how there are better variants and options available to OP.


    Also 2) This is a suggestion forum (last I checked, and am constantly reminded of every time I see a poorly defended suggestion with "be nice, this is a suggestion") which means gameplay mechanics have not been explored in game. Of course it doesn't fit. If it did, it would be in the game. Or would it? Is that double jump really a no-sale?


    In a parallel universe where sliding was part and parcel to the game, someone(s) probably explain in exacerbated length how Minecraft would be less of an experience if sliding were taken away. It's a fallacy. It's bad because fear of the unknown. It's bad because of bandwagonning. It's bad because of... Fill in the blank.


    The point is that unless someone mods Minecraft with that functionality, it's impossible to say whether a mechanic would fit or not. Those who have worked with the mechanic have an obvious bias FOR the mechanic's vanilla inclusion (I mean, duh). Basically, unless you download and test a mod with the described mechanic; you absolutely cannot use this criticism as you do not have a frame of reference to work from and that means you cannot form supporting details to back it up.


    1) If you modded the mechanic - you have full rights to criticize a suggestion as you know the implementation; just be aware that you are naturally biased toward the inclusion of the suggestion.

    2) If you used a mod with the mechanic - you have full rights to criticize a suggestion as you have useful and real feedback; chances are since you tried it; you are also inclined toward it.

    3) if you have not modded or used a mod with the mechanic - do not use this criticism.


    Thank you.

    I would also say : If you modded the concept (mechanic), be as honest as possible. Good, bad, laguments, and the ugly. Your implementation may not be perfect, and you may not have thought through everything. If you used an implementation, be aware that it may not be perfect. Don't let a mod get in the way of what you think is a good idea.
    Posted in: Suggestions
  • 0

    posted a message on More Unred Blocks

    Support. Those doing pixel art or image mappers can't map decently without a reasonably good color range.


    With 5 blocks and data tags, Mojang could give a huge range improvement. 16 more stained_glass2 and 16 more stained_clay2 colors would help. A skin_tone_clay of 16 (human colors). Add 2 sets of colored_quartz to be cool also.


    The human eye is more sensitive to greens than other colors, so more greens and blue greens help, also skin tone ranges.


    >> Sorry, Sacherevell, there is not enough colors to map your logo colors to stained glass or clay. Your mom picked the wrong box of crayons. Sauron's lucky, his mom got him all the blacks, greys, and reds. He's got a good eye for coloring.

    See attached pics.


    ----------------------------------------------------------------------------------------------------------------


    BTW: To get an idea of the range of common English named colors see ... http://chir.ag/projects/name-that-color/#6195ED

    Posted in: Suggestions
  • 0

    posted a message on Feeling good - CommandRunnnerMod passed a throughput test 90,000 commands

    To anyone using CommandRunnerMod, I passed a test. Last fix Aug 7th. Rotation fixed.


    Just pushed 6 MB of commands through the executefile (CommandRunnerMod) to build an Parthenon floor and walls from a pixel map layout of 450x200x90, 90,000 lines of commands (about 6-7 times the size of the Parthenon assuming 1 meter per block). It's a 1/2 hour a day I get. Took a half hour to run on laptop. (15 minutes once output off, and render at 32 chunks). 2gb jvm.


    These buildings are a stress test.


    I'm developing a stitcher to my image blueprinter (not designed to release ) with a stitcher of that adds a cycle of tp, place, and wait) so I can push this to any size (past the chunk limit). If blockdump gets popular, I'll add 3d stitching to the blockdump mod also so the user can dump and place city size areas. My largest blockdump is 467 MB, so that's next.


    Now for the stained glass window generation. And a roof. And a computer that doesn't unload the other side of the building's chunks. This also uses commandrunnermod.


    Red is Diorite, Green is dirt, black is walls of quartz block.


    Ah, I made the stairs walls... Need to fix that.

    Posted in: Mods Discussion
  • 2

    posted a message on New Command Block GUI
    Quote from crome420»




    I do agree that we should have 'if true/if false' conditioning for our commands. Perhaps an easier implementation would be 'Conditional True -> Conditional False -> Unconditional'. And in addition, the output for each command line could display an icon to say if it 'succeeded' or 'did not succeed', i.e. the 'X' and 'O', but commands with bad syntaxes or 'did not succeed' for whatever others reasons can be highlighted for easy debugging.

    ----------
    But in the meantime, for testing for a 'fail / false / did not succeed', I do this:
    For example, I want to test if an entity has a tag of "Test". If it does, then remove the tag "Test", if not, add the tag "Test".
    If I run a normal chain:





    ...the result will always end with the tag "Test" being added, because the first line removes the tag if it exists, but the next line re-adds it because it now does not have the tag by the time the command runs.

    So I use the "Needs Redstone" option for the second command, and add a Conditional command to set Air over it, then a final command to reset the Redstone Block:





    If command #1 is true, then command #3 will not run, because the Redstone Block is replaced with Air. It will be skipped as if it were not even there.
    If command #1 if false, it then runs command #3 as normal.
    ----------




    False and fail are two different things in the application. False is an exception, where the command failed to execute. False is - did not meet a condition such as a test. Both are needed and need to handled differently for each. A command can return false or throw an error.

    And thanks for the info on the "commandrunnermod". It looks pretty neat,
    but I won't use it because I want my worlds to run in Vanilla only.
    EDIT: Unless I can use it to /setblock a bunch of command blocks with
    commands in them. I basically want to take hundreds of command lines
    from Notepad++ and paste them into Minecraft command blocks. This mod
    might actually work for that, with only small changes to my code for
    "/execute"ing and "/setblock"ing, which can easily be done in Excel.

    Yes, it can. You may also need to replace commands (e.g. playsound changed). I have a companion mod in curse called BlockDump which is also a suggestion (along with executefile) to dump blocks to a file for notepad ++. I think both of these along with others are too handy a concept to not have in vanilla. I write little script programs to do things like convert blueprint pics to maps or to color stained glass. POST ISSUES PLEASE.

    It's very beta, but using it may help you flesh out concepts.

    -------------------------------------------------------------------------------------

    Deeper in ...

    Implications of the multi-line design would affect how to ...
    1) implement a wait command/macro in command blocks. Halts execution until a timer or condition is met. This is a common request.
    2) implement to allow macros in command blocks. Include math and string functions. I hate not having math functions. Sine, cosine, arithmetic, and a string function set scoped to the command. Scoped variables would be handy as hell. Math is a missing feature in minecraft.
    3) implement either an executefile command or easy to use multiline command blocks that load from a file. Multi-line command blocks is a common want. JSON is insanely hard to parse mentally for those not thinking like a compiler/parser, especially when it's not formatted into a tree. Give us an external editor for text. If structure blocks can load, so should command blocks.
    4) implement some utility commands (e.g. blockdump) to assist in upgrading command blocks (e.g. Some mass edit would've been a huge plus when playsound was changed to add <source> for a person who used it in 100's of command blocks).
    5) implement how to do rotation of command blocks and the nbt strings in them. This is an area that deeply affects the utility of structure blocks also, as the command blocks inside an SB saved file don't rotate at all. If a command block is placed in a SB file, You'd want the commands inside the captured area to rotate also. (If my commandblock has a setblock, it should rotate the setblock coords in the commandblock.)

    I like the idea, though working out it in a design has implications.

    Posted in: Suggestions
  • 1

    posted a message on New Command Block GUI

    Partly support. Each command has a dependency. I'd want GUI to have a test for the success of a prior command and have an FAIL/NOT FAIL exception command on the results. (On Fail do xxxx.) Without exception processing in the suggested GUI, it's not useful enough to handling complexity.


    I've looked at this quite a bit. You can try out a similar concept with the mod commandrunnermod that run a file of commands from a directory with a /executefile command. It's a vanilla minecraft suggestion that was turned into a mod. You can place /executefile in a command block.

    Posted in: Suggestions
  • 0

    posted a message on BlockDump command
    Quote from jdc997»

    Can't you just use structure blocks for this? Sure, they can't be interpreted into a code to be put on the internet, but structure files can be easily downloaded.




    The combination of the two I find quite powerful, especially with simple programs to enhance the ability without deep modding skills. See attached picture.


    e.g. /executefile File outfile.caleb and an image mapper that took a coupla hours.

    Posted in: Suggestions
  • 0

    posted a message on Redstone Delayer: Pause that signal!

    Are you modding this to flesh out the idea? I'd love to see it work.

    Posted in: Suggestions
  • 0

    posted a message on Redstone Delayer: Pause that signal!
    Quote from jdc997»

    So, what about having a repeater/comparator connect to it on the side, and if the repeater/comparator receives power, it "inhibits" the delayer?

    Full support.
    Posted in: Suggestions
  • To post a comment, please .