1. JavaScript / Говнокод #25836

    +1

    1. 01
    2. 02
    3. 03
    4. 04
    5. 05
    6. 06
    7. 07
    8. 08
    9. 09
    10. 10
    11. 11
    12. 12
    13. 13
    14. 14
    15. 15
    16. 16
    17. 17
    18. 18
    19. 19
    20. 20
    21. 21
    22. 22
    23. 23
    24. 24
    25. 25
    26. 26
    27. 27
    28. 28
    29. 29
    30. 30
    31. 31
    32. 32
    33. 33
    34. 34
    35. 35
    36. 36
    37. 37
    38. 38
    39. 39
    40. 40
    41. 41
    42. 42
    43. 43
    44. 44
    45. 45
    46. 46
    47. 47
    48. 48
    49. 49
    50. 50
    51. 51
    52. 52
    53. 53
    54. 54
    55. 55
    56. 56
    57. 57
    58. 58
    59. 59
    60. 60
    61. 61
    62. 62
    63. 63
    64. 64
    65. 65
    66. 66
    67. 67
    68. 68
    69. 69
    70. 70
    71. 71
    72. 72
    73. 73
    74. 74
    75. 75
    76. 76
    77. 77
    78. 78
    79. 79
    80. 80
    81. 81
    82. 82
    83. 83
    84. 84
    85. 85
    86. 86
    87. 87
    88. 88
    89. 89
    90. 90
    91. 91
    92. 92
    93. 93
    94. 94
    95. 95
    96. 96
    importPackage(Packages.com.sk89q.worldedit);
    importPackage(Packages.com.sk89q.worldedit.blocks);
    importPackage(Packages.com.sk89q.worldedit.tools);
    importPackage(Packages.com.sk89q.worldedit.tools.brushes);
    importPackage(Packages.com.sk89q.worldedit.patterns);
    
    var bSize = argv.length > 1 ? parseInt(argv[1]) : 4;
    var maxFaces = argv.length > 2 ? (argv[2]) : 2;		
    var strength = argv.length > 3 ? (argv[3]) : 1;
    
    var xOff = ['1', '-1', '1', '1', '-1', '1', '-1', '-1'];
    var yOff = ['1', '1', '-1', '1', '-1', '-1', '1', '-1'];
    var zOff = ['1', '1', '1', '-1', '1', '-1', '-1', '-1'];
    
    if (bSize == 0)	{bSize = 4;}
    var blocks = new Array();
    
    var tool = context.getSession().getBrushTool(player.getItemInHand());
    var matPat = new SingleBlockPattern(new BaseBlock(maxFaces));
    
    tool.setSize(bSize);
    tool.setFill(matPat);
    
    var brush = new Brush({
        strength : strength,
        build : function(editSession,pos,mat,bSize) {
    		
    		var session = context.remember();
     
    		for (iteration = 1; iteration <= strength; iteration++)	{
    
    			var matID = mat.getBlock().getType();
    			maxFaces = ((matID >= 0) && (matID <= 6)) ? matID : 3;
    			
    			var blockTotal = 0;			
    			var blockCnt = 0;			
    			var blockFaces = new Array(6);
    
    			radius = bSize + 0.5;
    			var invRadius = 1 / radius;
    			var ceilRadius = Math.ceil(radius);
    
    			var nextXn = 0;
    			forX: for (var x = 0; x <= ceilRadius; ++x) {
    				var xn = nextXn;
    				nextXn = (x + 1) * invRadius;
    				var nextYn = 0;
    				forY: for (var y = 0; y <= ceilRadius; ++y) {
    					var yn = nextYn;
    					nextYn = (y + 1) * invRadius;
    					var nextZn = 0;
    					forZ: for (var z = 0; z <= ceilRadius; ++z) {
    						var zn = nextZn;
    						nextZn = (z + 1) * invRadius;
    
    						var distanceSq = lengthSq(xn, yn, zn);
    						if (distanceSq > 1) {
    							if (z == 0) {
    								if (y == 0) {
    									break forX;
    								}
    								break forY;
    							}
    							break forZ;
    						}
    										
    						for (var dirLoop = 0; dirLoop <= 7 ; dirLoop++)	{
    						
    							var pt = pos.add(x * xOff[dirLoop], y * yOff[dirLoop], z * zOff[dirLoop]);
    							var curBlock = editSession.getBlock(pt);
    							
    							blockCnt = 0;
    							blockFaces = [];
    							
    							blockFaces[1] = editSession.getBlockType(pt.add(1,0,0));
    							blockFaces[2] = editSession.getBlockType(pt.add(-1,0,0));
    							blockFaces[3] = editSession.getBlockType(pt.add(0,1,0));
    							blockFaces[4] = editSession.getBlockType(pt.add(0,-1,0));
    							blockFaces[5] = editSession.getBlockType(pt.add(0,0,1));
    							blockFaces[6] = editSession.getBlockType(pt.add(0,0,-1));	
    							
    							for (var lpC = 1; lpC <= 6; lpC++) {
    								if((blockFaces[lpC]) == 0) {blockCnt++;}												
    							}
    							
    							if (blockCnt >= maxFaces) {
    							
    								blocks[blockTotal] = BlockID.AIR;
    							}
    							else {
    								blocks[blockTotal] = curBlock.getType();
    							}
    							blockTotal++;
    						}
    					}
    				}

    Какой багор )))

    Запостил: CkpunmoBbIu_nemyx, 12 Сентября 2019

    Комментарии (1) RSS

    Добавить комментарий