diff --git a/assets/hbm/lang/de_DE.lang b/assets/hbm/lang/de_DE.lang index 506ed743a..416639412 100644 --- a/assets/hbm/lang/de_DE.lang +++ b/assets/hbm/lang/de_DE.lang @@ -70,8 +70,8 @@ potion.hbm_phosphorus=Phosphorverbrennung tool.ability.recursion=Erzadern-Miner tool.ability.hammer=AoE -tool.ability.silktouch=Präzisionswerkzeug -tool.ability.fortune=Erz-Extraktor +tool.ability.silktouch=Behutsamkeit +tool.ability.luck=Glück tool.ability.smelter=Auto-Ofen tool.ability.shredder=Auto-Brecher tool.ability.cnetrifuge=Auto-Zentrifuge diff --git a/assets/hbm/lang/en_US.lang b/assets/hbm/lang/en_US.lang index cc948c46d..6defd050f 100644 --- a/assets/hbm/lang/en_US.lang +++ b/assets/hbm/lang/en_US.lang @@ -70,8 +70,8 @@ potion.hbm_phosphorus=Phosphorus Burns tool.ability.recursion=Vein Miner tool.ability.hammer=AoE -tool.ability.silktouch=Precision Miner -tool.ability.fortune=Ore Extractor +tool.ability.silktouch=Silk Touch +tool.ability.luck=Fortune tool.ability.smelter=Auto-Smelter tool.ability.shredder=Auto-Shredder tool.ability.centrifuge=Auto-Centrifuge @@ -1808,7 +1808,7 @@ item.plate_desh.name=Desh Compound Plate item.euphemium_helmet.name=Euphemium Helmet item.euphemium_plate.name=Euphemium Chestplate item.euphemium_legs.name=Euphemium Leggings -item.euphemium_boots.name=Euphemiums Boots +item.euphemium_boots.name=Euphemium Boots item.schrabidium_helmet.name=Schrabidium Helmet item.schrabidium_plate.name=Schrabidium Chestplate diff --git a/assets/hbm/models/bombs/fstbmb.obj b/assets/hbm/models/bombs/fstbmb.obj new file mode 100644 index 000000000..6852230a2 --- /dev/null +++ b/assets/hbm/models/bombs/fstbmb.obj @@ -0,0 +1,1724 @@ +# Blender v2.76 (sub 0) OBJ File: 'faustibomb.blend' +# www.blender.org +o Balefire +v 0.215259 1.269682 2.000000 +v 0.397748 1.147748 2.000000 +v 0.519682 0.965260 2.000000 +v 0.562500 0.750000 2.000000 +v 0.519682 0.534741 2.000000 +v 0.215259 1.269682 1.000000 +v 0.397748 1.147748 1.000000 +v 0.519682 0.965260 1.000000 +v 0.562500 0.750000 1.000000 +v 0.519682 0.534741 1.000000 +vt 0.809917 0.680851 +vt 0.942149 0.680851 +vt 0.942149 0.723404 +vt 0.809917 0.723404 +vt 0.942149 0.765957 +vt 0.809917 0.808511 +vt 0.809917 0.765957 +vt 0.942149 0.808511 +vt 0.942149 0.851064 +vt 0.809917 0.851064 +vn 0.980800 -0.195100 0.000000 +vn 1.000000 0.000000 0.000000 +vn 0.923900 0.382700 0.000000 +vn 0.707100 0.707100 0.000000 +vn 0.555600 0.831400 0.000000 +s 1 +f 5/1/1 10/2/1 9/3/2 +f 4/4/2 9/3/2 8/5/3 +f 2/6/4 3/7/3 8/5/3 +f 2/6/4 7/8/4 6/9/5 +f 4/4/2 5/1/1 9/3/2 +f 3/7/3 4/4/2 8/5/3 +f 7/8/4 2/6/4 8/5/3 +f 1/10/5 2/6/4 6/9/5 +o Body +v 1.105000 0.750000 1.150000 +v 1.080000 0.793301 1.150000 +v 1.030000 0.793301 1.150000 +v 1.005000 0.750000 1.150000 +v 1.030000 0.706699 1.150000 +v 1.080000 0.706699 1.150000 +v 1.020596 0.750000 0.835000 +v 0.998945 0.793301 0.847500 +v 0.955644 0.793301 0.872500 +v 0.933993 0.750000 0.885000 +v 0.955644 0.706699 0.872500 +v 0.998945 0.706699 0.847500 +v 0.790000 0.750000 0.604404 +v 0.777500 0.793301 0.626055 +v 0.752500 0.793301 0.669356 +v 0.740000 0.750000 0.691006 +v 0.752500 0.706699 0.669356 +v 0.777500 0.706699 0.626055 +v 0.475000 0.750000 1.780000 +v 0.475000 0.793301 1.755000 +v 0.475000 0.793301 1.705000 +v 0.475000 0.750000 1.680000 +v 0.475000 0.706699 1.705000 +v 0.475000 0.706699 1.755000 +v 0.790000 0.750000 1.695596 +v 0.777500 0.793301 1.673945 +v 0.752500 0.793301 1.630644 +v 0.740000 0.750000 1.608993 +v 0.752500 0.706699 1.630644 +v 0.777500 0.706699 1.673945 +v 1.020596 0.750000 1.465000 +v 0.998945 0.793301 1.452500 +v 0.955644 0.793301 1.427500 +v 0.933993 0.750000 1.415000 +v 0.955644 0.706699 1.427500 +v 0.998945 0.706699 1.452500 +v 0.000000 1.500000 -2.000000 +v 0.000000 1.500000 2.250000 +v 0.287013 1.442909 -2.000000 +v 0.287013 1.442910 2.250000 +v 0.530330 1.280330 -2.000000 +v 0.530330 1.280330 2.250000 +v 0.692910 1.037012 -2.000000 +v 0.692910 1.037013 2.250000 +v 0.750000 0.750000 -2.000000 +v 0.750000 0.750000 2.250000 +v 0.692910 0.462987 -2.000000 +v 0.692910 0.462987 2.250000 +v 0.530330 0.219670 -2.000000 +v 0.530330 0.219670 2.250000 +v 0.287013 0.057090 -2.000000 +v 0.287013 0.057091 2.250000 +v 0.000000 -0.000000 -2.000000 +v 0.000000 0.000000 2.250000 +v -0.287012 0.057090 -2.000000 +v -0.287012 0.057090 2.250000 +v -0.530330 0.219670 -2.000000 +v -0.530330 0.219670 2.250000 +v -0.692910 0.462987 -2.000000 +v -0.692910 0.462987 2.250000 +v -0.750000 0.750000 -2.000000 +v -0.750000 0.750000 2.250000 +v -0.692910 1.037013 -2.000000 +v -0.692910 1.037013 2.250000 +v -0.530330 1.280330 -2.000000 +v -0.530330 1.280330 2.250000 +v -0.287012 1.442910 -2.000000 +v -0.287012 1.442910 2.250000 +v 0.231666 1.309292 2.750000 +v 0.000000 1.355373 2.750000 +v 0.428063 1.178063 2.750000 +v 0.559291 0.981666 2.750000 +v 0.605372 0.750000 2.750000 +v 0.559291 0.518334 2.750000 +v 0.428063 0.321937 2.750000 +v 0.231666 0.190709 2.750000 +v 0.000000 0.144628 2.750000 +v -0.231666 0.190709 2.750000 +v -0.428063 0.321937 2.750000 +v -0.559291 0.518334 2.750000 +v -0.605372 0.750000 2.750000 +v -0.559291 0.981666 2.750000 +v -0.428063 1.178063 2.750000 +v -0.231666 1.309292 2.750000 +v 0.125590 1.053201 3.000000 +v 0.000000 1.078183 3.000000 +v 0.232060 0.982060 3.000000 +v 0.303201 0.875590 3.000000 +v 0.328183 0.750000 3.000000 +v 0.303201 0.624410 3.000000 +v 0.232060 0.517940 3.000000 +v 0.125590 0.446799 3.000000 +v 0.000000 0.421818 3.000000 +v -0.125590 0.446799 3.000000 +v -0.232060 0.517940 3.000000 +v -0.303201 0.624410 3.000000 +v -0.328182 0.750000 3.000000 +v -0.303201 0.875590 3.000000 +v -0.232060 0.982060 3.000000 +v -0.125590 1.053201 3.000000 +v 0.000000 1.125000 -3.500000 +v 0.143506 1.096455 -3.500000 +v 0.265165 1.015165 -3.500000 +v 0.346455 0.893506 -3.500000 +v 0.375000 0.750000 -3.500000 +v 0.346455 0.606493 -3.500000 +v 0.265165 0.484835 -3.500000 +v 0.143506 0.403545 -3.500000 +v 0.000000 0.375000 -3.500000 +v -0.143506 0.403545 -3.500000 +v -0.265165 0.484835 -3.500000 +v -0.346455 0.606493 -3.500000 +v -0.375000 0.750000 -3.500000 +v -0.346455 0.893506 -3.500000 +v -0.265165 1.015165 -3.500000 +v -0.143506 1.096455 -3.500000 +v -0.143506 1.096454 -4.500000 +v 0.000000 1.125000 -4.500000 +v -0.265165 1.015165 -4.500000 +v -0.346455 0.893506 -4.500000 +v -0.375000 0.749999 -4.500000 +v -0.346455 0.606493 -4.500000 +v -0.265165 0.484834 -4.500000 +v -0.143506 0.403545 -4.500000 +v 0.000000 0.375000 -4.500000 +v 0.143506 0.403545 -4.500000 +v 0.265165 0.484834 -4.500000 +v 0.346455 0.606493 -4.500000 +v 0.375000 0.749999 -4.500000 +v 0.346455 0.893506 -4.500000 +v 0.265165 1.015165 -4.500000 +v 0.143506 1.096454 -4.500000 +v 0.662913 1.501301 -3.625000 +v 0.751301 1.412913 -3.625000 +v 0.928078 1.589689 -4.375000 +v 0.839689 1.678078 -4.375000 +v -0.751301 0.087087 -3.625000 +v -0.662913 -0.001301 -3.625000 +v -0.839689 -0.178078 -4.375000 +v -0.928078 -0.089689 -4.375000 +v -0.928078 -0.089689 -3.625000 +v -0.839689 -0.178078 -3.625000 +v -0.795495 0.042893 -3.500000 +v -0.707107 -0.045495 -3.500000 +v -0.883883 -0.045495 -3.500000 +v -0.795495 -0.133883 -3.500000 +v 0.839689 1.678078 -3.625000 +v 0.928078 1.589689 -3.625000 +v 0.795495 1.633883 -3.500000 +v 0.883883 1.545495 -3.500000 +v 0.707107 1.545495 -3.500000 +v 0.795495 1.457107 -3.500000 +v 0.750000 0.750000 2.000000 +v 0.692910 1.037013 2.000000 +v 0.530330 1.280330 2.000000 +v 0.692910 0.462987 2.000000 +v 0.287013 1.442910 2.000000 +v 0.287013 1.442910 1.000000 +v 0.530330 1.280330 1.000000 +v 0.692910 1.037013 1.000000 +v 0.750000 0.750000 1.000000 +v 0.692910 0.462987 1.000000 +v 0.500000 0.250000 0.750000 +v 0.500000 1.250000 0.750000 +v 0.500000 0.250000 -0.750000 +v 0.500000 1.250000 -0.750000 +v 0.875000 0.250000 0.750000 +v 0.875000 1.250000 0.750000 +v 0.875000 0.250000 -0.750000 +v 0.875000 1.250000 -0.750000 +v 0.875000 0.375000 0.624400 +v 0.875000 1.125000 0.624400 +v 0.875000 0.375000 -0.625000 +v 0.875000 1.125000 -0.625000 +v 0.812500 1.125000 -0.625000 +v 0.812500 1.125000 0.624400 +v 0.812500 0.375000 0.624400 +v 0.812500 0.375000 -0.625000 +v 0.750000 0.750000 2.000000 +v 0.692910 1.037013 2.000000 +v 0.530330 1.280330 2.000000 +v 0.692910 0.462987 2.000000 +v 0.287013 1.442910 2.000000 +v 0.287013 1.442910 1.000000 +v 0.530330 1.280330 1.000000 +v 0.692910 1.037013 1.000000 +v 0.750000 0.750000 1.000000 +v 0.692910 0.462987 1.000000 +v 0.215259 1.269682 2.000000 +v 0.397748 1.147748 2.000000 +v 0.519682 0.965260 2.000000 +v 0.562500 0.750000 2.000000 +v 0.519682 0.534741 2.000000 +v 0.215259 1.269682 1.000000 +v 0.397748 1.147748 1.000000 +v 0.519682 0.965260 1.000000 +v 0.562500 0.750000 1.000000 +v 0.519682 0.534741 1.000000 +v -0.143506 1.096454 -4.500000 +v 0.000000 1.125000 -4.500000 +v -0.265165 1.015165 -4.500000 +v -0.346455 0.893506 -4.500000 +v -0.375000 0.749999 -4.500000 +v -0.346455 0.606493 -4.500000 +v -0.265165 0.484834 -4.500000 +v -0.143506 0.403545 -4.500000 +v 0.000000 0.375000 -4.500000 +v 0.143506 0.403545 -4.500000 +v 0.265165 0.484834 -4.500000 +v 0.346455 0.606493 -4.500000 +v 0.375000 0.749999 -4.500000 +v 0.346455 0.893506 -4.500000 +v 0.265165 1.015165 -4.500000 +v 0.143506 1.096454 -4.500000 +v 0.000000 1.500000 -2.000000 +v 0.287013 1.442909 -2.000000 +v 0.530330 1.280330 -2.000000 +v 0.692910 1.037012 -2.000000 +v 0.750000 0.750000 -2.000000 +v 0.692910 0.462987 -2.000000 +v 0.530330 0.219670 -2.000000 +v 0.287013 0.057090 -2.000000 +v 0.000000 -0.000000 -2.000000 +v -0.287012 0.057090 -2.000000 +v -0.530330 0.219670 -2.000000 +v -0.692910 0.462987 -2.000000 +v -0.750000 0.750000 -2.000000 +v -0.692910 1.037013 -2.000000 +v -0.530330 1.280330 -2.000000 +v -0.287012 1.442910 -2.000000 +v 0.000000 1.125000 -3.500000 +v 0.143506 1.096455 -3.500000 +v 0.265165 1.015165 -3.500000 +v 0.346455 0.893506 -3.500000 +v 0.375000 0.750000 -3.500000 +v 0.346455 0.606493 -3.500000 +v 0.265165 0.484835 -3.500000 +v 0.143506 0.403545 -3.500000 +v 0.000000 0.375000 -3.500000 +v -0.143506 0.403545 -3.500000 +v -0.265165 0.484835 -3.500000 +v -0.346455 0.606493 -3.500000 +v -0.375000 0.750000 -3.500000 +v -0.346455 0.893506 -3.500000 +v -0.265165 1.015165 -3.500000 +v -0.143506 1.096455 -3.500000 +v 0.662913 1.501301 -3.625000 +v 0.751301 1.412913 -3.625000 +v -0.751301 0.087087 -3.625000 +v -0.662913 -0.001301 -3.625000 +v -0.928078 -0.089689 -3.625000 +v -0.839689 -0.178078 -3.625000 +v -0.795495 0.042893 -3.500000 +v -0.707107 -0.045495 -3.500000 +v -0.883883 -0.045495 -3.500000 +v -0.795495 -0.133883 -3.500000 +v 0.662913 -0.001301 -3.625000 +v 0.751301 0.087088 -3.625000 +v 0.795495 1.633883 -3.500000 +v 0.883883 1.545495 -3.500000 +v 0.707107 1.545495 -3.500000 +v 0.795495 1.457107 -3.500000 +v 0.928078 1.589689 -4.375000 +v 0.839689 1.678078 -4.375000 +v -0.839689 -0.178078 -4.375000 +v -0.928078 -0.089689 -4.375000 +v 0.839689 1.678078 -3.625000 +v 0.928078 1.589689 -3.625000 +v 0.839689 -0.178078 -4.375000 +v 0.928078 -0.089689 -4.375000 +v -0.662913 1.501301 -3.625000 +v -0.751301 1.412912 -3.625000 +v -0.928078 1.589689 -4.375000 +v -0.839689 1.678077 -4.375000 +v -0.839689 1.678077 -3.625000 +v -0.928078 1.589689 -3.625000 +v -0.707107 1.545495 -3.500000 +v -0.795495 1.457107 -3.500000 +v -0.795495 1.633883 -3.500000 +v -0.883883 1.545495 -3.500000 +v 0.928078 -0.089689 -3.625000 +v 0.839689 -0.178078 -3.625000 +v 0.883884 -0.045495 -3.500000 +v 0.795495 -0.133883 -3.500000 +v 0.795495 0.042893 -3.500000 +v 0.707107 -0.045495 -3.500000 +v 0.751301 0.087087 -3.625000 +v 0.662913 -0.001301 -3.625000 +v -0.662913 1.501301 -3.625000 +v -0.751301 1.412912 -3.625000 +v -0.839689 1.678077 -3.625000 +v -0.928078 1.589689 -3.625000 +v -0.707107 1.545495 -3.500000 +v -0.795495 1.457107 -3.500000 +v -0.795495 1.633883 -3.500000 +v -0.883883 1.545495 -3.500000 +v 0.883884 -0.045495 -3.500000 +v 0.795495 -0.133883 -3.500000 +v 0.795495 0.042893 -3.500000 +v 0.707107 -0.045495 -3.500000 +v 0.839689 -0.178078 -4.375000 +v 0.928078 -0.089689 -4.375000 +v -0.928078 1.589689 -4.375000 +v -0.839689 1.678077 -4.375000 +v 0.928078 -0.089689 -3.625000 +v 0.839689 -0.178078 -3.625000 +v -0.000000 1.575000 -0.312500 +v 0.315714 1.512200 -0.312500 +v 0.583363 1.333363 -0.312500 +v 0.762201 1.065714 -0.312500 +v 0.762201 1.065714 0.437500 +v 0.762201 0.434286 -0.312500 +v 0.583363 0.166637 -0.312500 +v 0.315714 -0.012201 -0.312500 +v 0.000000 -0.075000 -0.312500 +v -0.315714 -0.012201 -0.312500 +v -0.583363 0.166637 -0.312500 +v -0.762201 0.434286 -0.312500 +v -0.825000 0.750000 -0.312500 +v -0.762201 1.065714 -0.312500 +v -0.583363 1.333363 -0.312500 +v -0.315713 1.512201 -0.312500 +v -0.315713 1.512201 -0.437500 +v -0.583363 1.333363 -0.437500 +v -0.762201 1.065714 -0.437500 +v -0.825000 0.750000 -0.437500 +v -0.762201 0.434286 -0.437500 +v -0.583363 0.166637 -0.437500 +v -0.315714 -0.012201 -0.437500 +v 0.000000 -0.075000 -0.437500 +v 0.315714 -0.012201 -0.437500 +v 0.583363 0.166637 -0.437500 +v 0.762201 0.434286 -0.437500 +v 0.583363 1.333363 0.437500 +v 0.762201 1.065714 -0.437500 +v 0.583363 1.333363 -0.437500 +v 0.315714 1.512200 -0.437500 +v -0.000000 1.575000 -0.437500 +v 0.000000 1.500000 -0.437500 +v 0.287013 1.442909 -0.437500 +v 0.530330 1.280330 -0.437500 +v 0.692910 1.037012 -0.437500 +v 0.315714 1.512200 0.437500 +v 0.692910 0.462987 -0.437500 +v 0.530330 0.219670 -0.437500 +v 0.287013 0.057090 -0.437500 +v 0.000000 -0.000000 -0.437500 +v -0.287012 0.057090 -0.437500 +v -0.530330 0.219670 -0.437500 +v -0.692910 0.462987 -0.437500 +v -0.750000 0.750000 -0.437500 +v -0.692910 1.037013 -0.437500 +v -0.530330 1.280330 -0.437500 +v -0.287012 1.442910 -0.437500 +v -0.287012 1.442910 -0.312500 +v -0.530330 1.280330 -0.312500 +v -0.692910 1.037013 -0.312500 +v -0.750000 0.750000 -0.312500 +v -0.692910 0.462987 -0.312500 +v -0.530330 0.219670 -0.312500 +v -0.287012 0.057090 -0.312500 +v 0.000000 -0.000000 -0.312500 +v 0.287013 0.057090 -0.312500 +v 0.530330 0.219670 -0.312500 +v 0.692910 0.462987 -0.312500 +v -0.000000 1.575000 0.437500 +v 0.692910 1.037012 -0.312500 +v 0.530330 1.280330 -0.312500 +v 0.287013 1.442909 -0.312500 +v 0.000000 1.500000 -0.312500 +v 0.762201 0.434286 0.437500 +v 0.583363 0.166637 0.437500 +v 0.315714 -0.012201 0.437500 +v 0.000000 -0.075000 0.437500 +v -0.315714 -0.012201 0.437500 +v -0.583363 0.166637 0.437500 +v -0.762201 0.434286 0.437500 +v -0.825000 0.750000 0.437500 +v -0.762201 1.065714 0.437500 +v -0.583363 1.333363 0.437500 +v -0.315713 1.512201 0.437500 +v -0.315713 1.512201 0.312500 +v -0.583363 1.333363 0.312500 +v -0.762201 1.065714 0.312500 +v -0.825000 0.750000 0.312500 +v -0.762201 0.434286 0.312500 +v -0.583363 0.166637 0.312500 +v -0.315714 -0.012201 0.312500 +v 0.000000 -0.075000 0.312500 +v 0.315714 -0.012201 0.312500 +v 0.583363 0.166637 0.312500 +v 0.762201 0.434286 0.312500 +v 0.762201 1.065714 0.312500 +v 0.583363 1.333363 0.312500 +v 0.315714 1.512200 0.312500 +v -0.000000 1.575000 0.312500 +v 0.000000 1.500000 0.312500 +v 0.287013 1.442909 0.312500 +v 0.530330 1.280330 0.312500 +v 0.692910 1.037012 0.312500 +v 0.692910 0.462987 0.312500 +v 0.530330 0.219670 0.312500 +v 0.287013 0.057090 0.312500 +v 0.000000 -0.000000 0.312500 +v -0.287012 0.057090 0.312500 +v -0.530330 0.219670 0.312500 +v -0.692910 0.462987 0.312500 +v -0.750000 0.750000 0.312500 +v -0.692910 1.037013 0.312500 +v -0.530330 1.280330 0.312500 +v -0.287012 1.442910 0.312500 +v -0.287012 1.442910 0.437500 +v -0.530330 1.280330 0.437500 +v -0.692910 1.037013 0.437500 +v -0.750000 0.750000 0.437500 +v -0.692910 0.462987 0.437500 +v -0.530330 0.219670 0.437500 +v -0.287012 0.057090 0.437500 +v 0.000000 -0.000000 0.437500 +v 0.287013 0.057090 0.437500 +v 0.530330 0.219670 0.437500 +v 0.692910 0.462987 0.437500 +v 0.692910 1.037012 0.437500 +v 0.530330 1.280330 0.437500 +v 0.287013 1.442909 0.437500 +v 0.000000 1.500000 0.437500 +v 1.105000 0.550000 1.150000 +v 1.080000 0.593301 1.150000 +v 1.030000 0.593301 1.150000 +v 1.005000 0.550000 1.150000 +v 1.030000 0.506699 1.150000 +v 1.080000 0.506699 1.150000 +v 1.020596 0.550000 0.835000 +v 0.998945 0.593301 0.847500 +v 0.955644 0.593301 0.872500 +v 0.933993 0.550000 0.885000 +v 0.955644 0.506699 0.872500 +v 0.998945 0.506699 0.847500 +v 0.790000 0.550000 0.604404 +v 0.777500 0.593301 0.626055 +v 0.752500 0.593301 0.669356 +v 0.740000 0.550000 0.691006 +v 0.752500 0.506699 0.669356 +v 0.777500 0.506699 0.626055 +v 0.475000 0.550000 1.780000 +v 0.475000 0.593301 1.755000 +v 0.475000 0.593301 1.705000 +v 0.475000 0.550000 1.680000 +v 0.475000 0.506699 1.705000 +v 0.475000 0.506699 1.755000 +v 0.790000 0.550000 1.695596 +v 0.777500 0.593301 1.673945 +v 0.752500 0.593301 1.630644 +v 0.740000 0.550000 1.608993 +v 0.752500 0.506699 1.630644 +v 0.777500 0.506699 1.673945 +v 1.020596 0.550000 1.465000 +v 0.998945 0.593301 1.452500 +v 0.955644 0.593301 1.427500 +v 0.933993 0.550000 1.415000 +v 0.955644 0.506699 1.427500 +v 0.998945 0.506699 1.452500 +v 1.105000 0.950000 1.150000 +v 1.080000 0.993301 1.150000 +v 1.030000 0.993301 1.150000 +v 1.005000 0.950000 1.150000 +v 1.030000 0.906699 1.150000 +v 1.080000 0.906699 1.150000 +v 1.020596 0.950000 0.835000 +v 0.998945 0.993301 0.847500 +v 0.955644 0.993301 0.872500 +v 0.933993 0.950000 0.885000 +v 0.955644 0.906699 0.872500 +v 0.998945 0.906699 0.847500 +v 0.790000 0.950000 0.604404 +v 0.777500 0.993301 0.626055 +v 0.752500 0.993301 0.669356 +v 0.740000 0.950000 0.691006 +v 0.752500 0.906699 0.669356 +v 0.777500 0.906699 0.626055 +v 0.475000 0.950000 1.780000 +v 0.475000 0.993301 1.755000 +v 0.475000 0.993301 1.705000 +v 0.475000 0.950000 1.680000 +v 0.475000 0.906699 1.705000 +v 0.475000 0.906699 1.755000 +v 0.790000 0.950000 1.695596 +v 0.777500 0.993301 1.673945 +v 0.752500 0.993301 1.630644 +v 0.740000 0.950000 1.608993 +v 0.752500 0.906699 1.630644 +v 0.777500 0.906699 1.673945 +v 1.020596 0.950000 1.465000 +v 0.998945 0.993301 1.452500 +v 0.955644 0.993301 1.427500 +v 0.933993 0.950000 1.415000 +v 0.955644 0.906699 1.427500 +v 0.998945 0.906699 1.452500 +vt 0.140496 0.255319 +vt 0.140496 0.212766 +vt 0.165289 0.212766 +vt 0.140496 0.297872 +vt 0.165289 0.255319 +vt 0.214876 0.127660 +vt 0.247934 0.127660 +vt 0.247934 0.297872 +vt 0.165289 0.297872 +vt 0.165289 0.127660 +vt 0.198347 0.127660 +vt 0.181818 0.680851 +vt 0.512397 0.680851 +vt 0.512397 0.702128 +vt 0.504132 0.851064 +vt 0.479339 0.829787 +vt 0.512397 0.829787 +vt 0.214876 0.829787 +vt 0.206612 0.851064 +vt 0.181818 0.829787 +vt 0.190083 0.851064 +vt 0.487603 0.851064 +vt 0.181818 0.702128 +vt 0.752066 0.882979 +vt 0.752066 0.755319 +vt 0.768595 0.734043 +vt 0.768595 0.904255 +vt 0.809917 0.734043 +vt 0.586777 0.882979 +vt 0.528926 0.904255 +vt 0.528926 0.734043 +vt 0.570248 0.734043 +vt 0.768595 0.680851 +vt 0.768595 0.957447 +vt 0.570248 0.957447 +vt 0.586777 0.755319 +vt 0.181818 0.946809 +vt 0.173554 0.946809 +vt 0.173554 0.819149 +vt 0.008264 0.946809 +vt 0.008264 0.819149 +vt 0.008264 0.957447 +vt -0.000000 0.819149 +vt 0.173554 0.808511 +vt 0.140496 0.170213 +vt 0.165289 0.170213 +vt 0.247934 0.255319 +vt 0.272727 0.255319 +vt 0.272727 0.297872 +vt 0.272727 0.212766 +vt 0.272727 0.170213 +vt 0.247934 0.212766 +vt 0.272727 0.127660 +vt 0.113322 0.685916 +vt 0.177883 0.720340 +vt 0.086580 0.769022 +vt 0.165289 1.000000 +vt 0.165289 0.989362 +vt 0.206612 0.989362 +vt 0.578512 0.957447 +vt 0.578512 0.968085 +vt 0.537190 0.968085 +vt 0.123967 0.957447 +vt 0.123967 0.968085 +vt 0.082645 0.968085 +vt 0.082645 0.957447 +vt 0.041322 0.968085 +vt 0.041322 0.957447 +vt -0.000000 0.968085 +vt 0.206612 1.000000 +vt 0.247934 0.989362 +vt 0.289256 0.989362 +vt 0.289256 1.000000 +vt 0.330579 0.989362 +vt 0.330579 1.000000 +vt 0.371901 0.989362 +vt 0.371901 1.000000 +vt 0.413223 0.989362 +vt 0.454545 0.989362 +vt 0.454545 1.000000 +vt 0.495868 0.989362 +vt 0.537190 0.989362 +vt 0.537190 1.000000 +vt 0.578512 0.989362 +vt 0.578512 1.000000 +vt 0.165289 0.957447 +vt 0.165289 0.968085 +vt 0.123967 1.000000 +vt 0.123967 0.989362 +vt 0.082645 0.989362 +vt 0.041322 0.989362 +vt 0.082645 1.000000 +vt 0.000000 1.000000 +vt -0.000000 0.989362 +vt 0.495868 0.968085 +vt 0.495868 0.957447 +vt 0.454545 0.957447 +vt 0.413223 0.957447 +vt 0.454545 0.968085 +vt 0.371901 0.957447 +vt 0.413223 0.968085 +vt 0.330579 0.957447 +vt 0.371901 0.968085 +vt 0.289256 0.957447 +vt 0.330579 0.968085 +vt 0.247934 0.957447 +vt 0.289256 0.968085 +vt 0.206612 0.957447 +vt 0.247934 0.968085 +vt 0.206612 0.968085 +vt 0.214876 0.297872 +vt 0.198347 0.297872 +vt 0.809917 0.904255 +vt 0.570248 0.904255 +vt 0.570248 0.680851 +vt 0.181818 0.819149 +vt 0.173554 0.957447 +vt 0.000000 0.946809 +vt 0.008264 0.808511 +vt 0.140496 0.127660 +vt 0.247934 0.170213 +vt 0.151141 0.803445 +vt 0.132231 0.808287 +vt 0.113322 0.803445 +vt 0.097291 0.789657 +vt 0.082818 0.744681 +vt 0.086580 0.720340 +vt 0.097291 0.699705 +vt 0.132231 0.681075 +vt 0.151141 0.685917 +vt 0.167172 0.699705 +vt 0.181644 0.744681 +vt 0.177883 0.769022 +vt 0.167172 0.789657 +vt 0.537190 0.957447 +vt -0.000000 0.957447 +vt 0.247934 1.000000 +vt 0.413223 1.000000 +vt 0.495868 1.000000 +vt 0.041322 1.000000 +vt 0.347107 0.904255 +vt 0.347107 0.914894 +vt 0.305785 0.914894 +vt 0.347107 0.925532 +vt 0.305785 0.925532 +vt 0.347107 0.936170 +vt 0.305785 0.936170 +vt 0.305785 0.872340 +vt 0.347107 0.872340 +vt 0.347107 0.882979 +vt 0.347107 0.893617 +vt 0.305785 0.893617 +vt 0.388430 0.904255 +vt 0.388430 0.914894 +vt 0.388430 0.925532 +vt 0.388430 0.936170 +vt 0.388430 0.872340 +vt 0.388430 0.882979 +vt 0.388430 0.893617 +vt 0.223140 0.904255 +vt 0.223140 0.914894 +vt 0.181818 0.914894 +vt 0.223140 0.925532 +vt 0.181818 0.925532 +vt 0.223140 0.936170 +vt 0.181818 0.936170 +vt 0.223140 0.872340 +vt 0.223140 0.882979 +vt 0.181818 0.882979 +vt 0.223140 0.893617 +vt 0.181818 0.893617 +vt 0.264463 0.904255 +vt 0.264463 0.914894 +vt 0.264463 0.925532 +vt 0.264463 0.936170 +vt 0.264463 0.872340 +vt 0.264463 0.882979 +vt 0.264463 0.893617 +vt 0.305785 0.904255 +vt 0.305785 0.882979 +vt 0.107438 0.340426 +vt 0.041322 0.340426 +vt 0.041322 0.297872 +vt 0.041322 0.085106 +vt 0.041322 0.127660 +vt 0.000000 0.117021 +vt 0.107438 0.510638 +vt 0.041322 0.510638 +vt 0.041322 0.468085 +vt 0.107438 0.127660 +vt 0.107438 0.553191 +vt 0.107438 0.595745 +vt 0.041322 0.595745 +vt 0.107438 0.382979 +vt 0.041322 0.382979 +vt 0.107438 0.212766 +vt 0.041322 0.212766 +vt 0.041322 0.170213 +vt 0.107438 0.638298 +vt 0.107438 0.680851 +vt 0.041322 0.680851 +vt 0.107438 0.425532 +vt 0.107438 0.468085 +vt 0.107438 0.297872 +vt 0.041322 0.255319 +vt 0.107438 0.085106 +vt 0.041322 0.042553 +vt 0.041322 0.553191 +vt 0.107438 0.170213 +vt 0.041322 0.638298 +vt 0.041322 0.425532 +vt 0.107438 0.255319 +vt 0.107438 0.042553 +vt 0.041322 -0.000000 +vt -0.000000 0.457447 +vt 0.000000 0.074468 +vt 0.000000 0.053191 +vt -0.000000 0.414894 +vt -0.000000 0.393617 +vt 0.000000 0.031915 +vt 0.000000 0.010638 +vt 0.000000 0.329787 +vt 0.000000 0.308511 +vt 0.000000 0.372340 +vt -0.000000 0.670213 +vt 0.000000 0.287234 +vt 0.000000 0.265957 +vt -0.000000 0.627660 +vt -0.000000 0.606383 +vt -0.000000 0.244681 +vt 0.000000 0.585106 +vt 0.000000 0.563830 +vt 0.000000 0.202128 +vt 0.000000 0.180851 +vt -0.000000 0.542553 +vt -0.000000 0.159574 +vt -0.000000 0.500000 +vt -0.000000 0.478723 +vt 0.867769 0.351064 +vt 1.000000 0.351064 +vt 1.000000 0.372340 +vt 0.012236 0.696602 +vt 0.070408 0.696602 +vt 0.012236 0.771483 +vt 0.669421 0.085106 +vt 0.867769 0.095745 +vt 0.867769 0.117021 +vt 0.867769 0.308511 +vt 1.000000 0.308511 +vt 1.000000 0.329787 +vt 0.867769 0.010638 +vt 1.000000 0.010638 +vt 1.000000 0.031915 +vt 0.867769 0.414894 +vt 0.867769 0.393617 +vt 1.000000 0.393617 +vt 0.867769 0.053191 +vt 1.000000 0.053191 +vt 1.000000 0.074468 +vt 0.867769 0.457447 +vt 0.867769 0.436170 +vt 1.000000 0.436170 +vt 1.000000 0.095745 +vt 1.000000 0.117021 +vt 0.867769 0.500000 +vt 0.867769 0.478723 +vt 1.000000 0.478723 +vt 0.867769 0.138298 +vt 1.000000 0.138298 +vt 1.000000 0.159574 +vt 0.867769 0.542553 +vt 0.867769 0.521277 +vt 1.000000 0.521277 +vt 0.867769 0.180851 +vt 1.000000 0.180851 +vt 1.000000 0.202128 +vt 0.867769 0.585106 +vt 0.867769 0.563830 +vt 1.000000 0.563830 +vt 0.867769 0.223404 +vt 1.000000 0.223404 +vt 1.000000 0.244681 +vt 0.867769 0.627660 +vt 0.867769 0.606383 +vt 1.000000 0.606383 +vt 0.867769 0.265957 +vt 1.000000 0.265957 +vt 1.000000 0.287234 +vt 0.867769 0.648936 +vt 1.000000 0.648936 +vt 1.000000 0.670213 +vt 0.669421 0.297872 +vt 0.669421 0.212766 +vt 0.669421 0.170213 +vt 0.669421 0.042553 +vt 0.107438 0.000000 +vt 0.669421 0.638298 +vt 0.669421 0.595745 +vt 0.669421 0.510638 +vt 0.669421 0.468085 +vt 0.669421 0.425532 +vt 0.669421 0.382979 +vt 0.669421 0.340426 +vt 0.867769 0.244681 +vt 0.669421 0.000000 +vt 0.867769 0.031915 +vt 0.669421 0.127660 +vt 0.867769 0.159574 +vt 0.867769 0.329787 +vt 0.669421 0.255319 +vt 0.867769 0.287234 +vt 0.867769 0.670213 +vt 0.867769 0.202128 +vt 0.867769 0.372340 +vt 0.669421 0.553191 +vt 0.867769 0.074468 +vt 0.479339 0.872340 +vt 0.479339 0.851064 +vt 0.487603 0.872340 +vt 0.528926 0.702128 +vt 0.528926 0.829787 +vt 0.214876 0.872340 +vt 0.206612 0.872340 +vt 0.190083 0.872340 +vt 0.181818 0.851064 +vt 0.512397 0.851064 +vt 0.512397 0.872340 +vt 0.504132 0.872340 +vt 0.214876 0.851064 +vt 0.181818 0.904255 +vt 0.181818 0.872340 +vt 0.000000 0.095745 +vt -0.000000 0.436170 +vt 0.000000 0.351064 +vt -0.000000 0.648936 +vt -0.000000 0.223404 +vt -0.000000 0.521277 +vt -0.000000 0.138298 +vt 0.070408 0.771483 +vt 0.057064 0.782961 +vt 0.041322 0.786992 +vt 0.025581 0.782961 +vt 0.003320 0.754305 +vt 0.000188 0.734043 +vt 0.003320 0.713780 +vt 0.025581 0.685124 +vt 0.041322 0.681094 +vt 0.057064 0.685124 +vt 0.079325 0.713780 +vt 0.082456 0.734042 +vt 0.079325 0.754305 +vt 1.000000 0.414894 +vt 1.000000 0.457447 +vt 1.000000 0.500000 +vt 1.000000 0.542553 +vt 1.000000 0.585106 +vt 1.000000 0.627660 +vt 0.669421 0.680851 +vn 0.000000 -0.000000 -1.000000 +vn 0.382700 0.923900 0.000000 +vn 0.923900 -0.382700 0.000000 +vn -0.000000 0.000000 1.000000 +vn -0.707100 0.707100 -0.000000 +vn 0.707100 -0.707100 0.000000 +vn 1.000000 0.000000 0.000000 +vn 0.000000 -1.000000 0.000000 +vn 0.000000 1.000000 0.000000 +vn 0.707100 0.707100 0.000000 +vn -0.707100 -0.707100 0.000000 +vn 0.866000 0.000000 -0.500000 +vn 0.482700 0.830300 -0.278600 +vn 0.557300 0.830300 0.000000 +vn -0.374500 0.901600 0.216200 +vn -0.432400 0.901600 0.000000 +vn -0.866000 0.000000 0.500000 +vn -1.000000 0.000000 0.000000 +vn -0.374500 -0.901600 0.216200 +vn 0.482700 -0.830300 -0.278600 +vn 0.557300 -0.830300 0.000000 +vn 0.707100 0.000000 -0.707100 +vn 0.403500 0.821200 -0.403500 +vn -0.314500 0.895600 0.314500 +vn -0.707100 0.000000 0.707100 +vn -0.314500 -0.895600 0.314500 +vn 0.403500 -0.821200 -0.403500 +vn 0.500000 0.000000 0.866000 +vn 0.278600 0.830300 0.482700 +vn 0.147700 0.821200 0.551200 +vn -0.216200 0.901600 -0.374500 +vn -0.115100 0.895600 -0.429600 +vn -0.500000 0.000000 -0.866000 +vn -0.258800 0.000000 -0.965900 +vn -0.216200 -0.901600 -0.374500 +vn -0.115100 -0.895600 -0.429600 +vn 0.278600 -0.830300 0.482700 +vn 0.147700 -0.821200 0.551200 +vn 0.866000 0.000000 0.500000 +vn 0.482700 0.830300 0.278600 +vn -0.374500 0.901600 -0.216200 +vn -0.866000 0.000000 -0.500000 +vn -0.374500 -0.901600 -0.216200 +vn 0.482700 -0.830300 0.278600 +vn -0.432400 -0.901600 0.000000 +vn 0.000000 0.990400 0.137900 +vn 0.000000 0.856700 0.515700 +vn 0.327800 0.791500 0.515700 +vn 0.605800 -0.605800 0.515700 +vn 0.791500 -0.327800 0.515700 +vn 0.366300 -0.151700 0.918000 +vn -0.990400 0.000000 0.137900 +vn -0.856700 0.000000 0.515700 +vn -0.791500 0.327800 0.515700 +vn 0.915000 -0.379000 0.137900 +vn -0.915000 -0.379000 0.137900 +vn -0.700300 -0.700300 0.137900 +vn -0.605800 -0.605800 0.515700 +vn -0.379000 0.915000 0.137900 +vn -0.327800 0.791500 0.515700 +vn 0.915000 0.379000 0.137900 +vn 0.791500 0.327800 0.515700 +vn 0.856700 0.000000 0.515700 +vn -0.379000 -0.915000 0.137900 +vn 0.000000 -0.990400 0.137900 +vn 0.000000 -0.856700 0.515700 +vn -0.700300 0.700300 0.137900 +vn -0.915000 0.379000 0.137900 +vn 0.379000 0.915000 0.137900 +vn 0.605800 0.605800 0.515700 +vn 0.700300 -0.700300 0.137900 +vn 0.327800 -0.791500 0.515700 +vn -0.791500 -0.327800 0.515700 +vn 0.990400 0.000000 0.137900 +vn -0.327800 -0.791500 0.515700 +vn -0.605800 0.605800 0.515700 +vn 0.700300 0.700300 0.137900 +vn 0.379000 -0.915000 0.137900 +vn -0.366300 0.151700 0.918000 +vn 0.280400 -0.280400 0.918000 +vn 0.151700 -0.366300 0.918000 +vn -0.280400 0.280400 0.918000 +vn -0.151700 0.366300 0.918000 +vn 0.000000 -0.396500 0.918000 +vn 0.000000 0.396500 0.918000 +vn 0.151700 0.366300 0.918000 +vn 0.280400 0.280400 0.918000 +vn -0.151700 -0.366300 0.918000 +vn -0.280400 -0.280400 0.918000 +vn -0.366300 -0.151700 0.918000 +vn 0.366300 0.151700 0.918000 +vn 0.396500 0.000000 0.918000 +vn -0.396500 0.000000 0.918000 +vn -0.382700 0.923900 0.000000 +vn 0.686000 -0.686000 -0.242500 +vn 0.896300 -0.371200 -0.242500 +vn 0.382700 -0.923900 0.000000 +vn -0.923900 0.382700 0.000000 +vn -0.923900 -0.382700 0.000000 +vn 0.923900 0.382700 0.000000 +vn -0.382700 -0.923900 0.000000 +vn 0.320700 0.947200 0.000000 +vn 0.896500 -0.442900 0.000000 +vn 0.896300 0.371200 -0.242500 +vn 0.686000 0.686000 -0.242500 +vn 0.000000 -0.970100 -0.242500 +vn 0.371200 -0.896300 -0.242500 +vn -0.371200 0.896300 -0.242500 +vn -0.686000 0.686000 -0.242500 +vn -0.686000 -0.686000 -0.242500 +vn -0.371200 -0.896300 -0.242500 +vn 0.970100 0.000000 -0.242500 +vn -0.970100 0.000000 -0.242500 +vn -0.896300 -0.371200 -0.242500 +vn 0.371300 0.896300 -0.242500 +vn 0.371200 0.896300 -0.242500 +vn 0.000000 0.970100 -0.242500 +vn -0.896300 0.371300 -0.242500 +vn -0.896300 0.371200 -0.242500 +vn -0.632400 -0.632400 0.447200 +vn -0.371700 -0.371700 0.850600 +vn 0.371700 0.371700 0.850600 +vn -0.688200 -0.688200 0.229700 +vn 0.632400 0.632400 0.447200 +vn 0.688200 0.688200 0.229700 +vn -0.371700 0.371700 0.850600 +vn -0.632400 0.632400 0.447200 +vn 0.371700 -0.371700 0.850600 +vn -0.688200 0.688200 0.229700 +vn 0.632400 -0.632400 0.447200 +vn 0.688200 -0.688200 0.229700 +vn -0.285500 0.689400 -0.665700 +vn -0.285500 0.689400 0.665700 +vn 0.000000 0.746200 0.665700 +vn -0.527600 0.527600 -0.665700 +vn -0.527600 0.527600 0.665700 +vn -0.689400 0.285500 -0.665700 +vn -0.689400 0.285500 0.665700 +vn -0.746200 0.000000 -0.665700 +vn -0.746200 0.000000 0.665700 +vn -0.689400 -0.285500 -0.665700 +vn -0.689400 -0.285500 0.665700 +vn -0.527600 -0.527600 -0.665700 +vn -0.285500 -0.689400 -0.665700 +vn -0.285500 -0.689400 0.665700 +vn 0.000000 -0.746200 -0.665700 +vn 0.000000 -0.746200 0.665700 +vn 0.285500 -0.689400 -0.665700 +vn 0.527600 -0.527600 -0.665700 +vn 0.527600 -0.527600 0.665700 +vn 0.625700 -0.418100 -0.658500 +vn 0.625700 -0.418100 0.658500 +vn 0.625700 0.418100 -0.658500 +vn 0.527600 0.527600 -0.665700 +vn 0.527600 0.527600 0.665700 +vn 0.285500 0.689400 -0.665700 +vn 0.285500 0.689400 0.665700 +vn 0.258800 0.000000 0.965900 +vn 0.000000 0.746200 -0.665700 +vn -0.527600 -0.527600 0.665700 +vn 0.285500 -0.689400 0.665700 +vn 0.625700 0.418100 0.658500 +s off +f 191/11/6 190/12/6 201/13/6 +f 193/14/6 191/11/6 200/15/6 +f 203/16/7 192/17/7 198/18/7 +f 194/19/8 193/20/8 199/21/8 +f 145/22/6 149/23/6 150/24/6 +f 148/22/9 144/23/9 143/24/9 +f 155/25/10 147/26/10 151/27/10 +f 148/28/11 154/29/11 152/30/11 +f 143/28/10 159/31/10 157/30/10 +f 158/27/11 162/32/11 144/26/11 +f 147/26/10 143/28/10 146/33/10 +f 144/26/11 148/28/11 149/33/11 +f 184/34/12 183/35/12 179/36/12 +f 180/37/6 179/36/6 175/38/6 +f 182/39/12 184/34/12 180/37/12 +f 174/40/9 173/41/9 177/42/9 +f 175/43/13 179/36/13 177/42/13 +f 180/37/14 176/44/14 174/45/14 +f 179/36/12 183/35/12 181/46/12 +f 177/42/12 181/46/12 182/39/12 +f 184/47/9 185/48/9 188/49/9 +f 186/50/12 187/51/12 188/49/12 +f 182/52/13 186/50/13 185/48/13 +f 181/53/6 187/51/6 186/50/6 +f 183/54/14 188/49/14 187/51/14 +f 190/12/6 189/55/6 202/56/6 +f 203/20/6 202/56/6 189/55/6 +f 205/57/9 195/58/9 194/59/9 +f 196/60/9 195/58/9 205/57/9 +f 197/61/9 196/60/9 206/62/9 +f 208/17/9 198/63/9 197/61/9 +f 218/64/6 214/65/6 222/66/6 +f 279/22/6 283/23/6 284/24/6 +f 282/22/9 267/23/9 268/24/9 +f 289/25/15 281/26/15 285/27/15 +f 282/28/16 288/29/16 286/30/16 +f 295/29/15 293/31/15 291/30/15 +f 294/25/16 296/32/16 267/26/16 +f 281/26/15 268/28/15 280/33/15 +f 279/24/16 267/26/16 282/28/16 +f 422/67/9 391/68/9 390/69/9 +f 354/70/6 343/71/6 342/72/6 +f 407/73/6 406/74/6 405/75/6 +f 408/76/6 405/75/6 404/77/6 +f 351/78/6 346/77/6 345/79/6 +f 350/76/6 347/75/6 346/77/6 +f 349/73/6 348/74/6 347/75/6 +f 365/67/9 332/68/9 331/69/9 +f 366/80/9 331/69/9 330/81/9 +f 330/81/9 329/82/9 368/83/9 +f 329/82/9 328/84/9 369/85/9 +f 328/84/9 327/86/9 370/87/9 +f 370/87/9 327/86/9 326/88/9 +f 326/88/9 325/89/9 372/90/9 +f 372/90/9 325/89/9 324/91/9 +f 324/91/9 323/92/9 374/93/9 +f 323/92/9 322/94/9 375/95/9 +f 364/96/6 333/97/6 348/74/6 +f 380/98/9 317/99/9 332/68/9 +f 318/100/9 317/99/9 380/98/9 +f 319/101/9 318/100/9 379/102/9 +f 377/103/9 320/104/9 319/101/9 +f 409/78/6 404/77/6 403/79/6 +f 342/72/6 341/105/6 356/106/6 +f 357/107/6 356/106/6 341/105/6 +f 358/108/6 357/107/6 340/109/6 +f 359/110/6 358/108/6 339/111/6 +f 360/112/6 359/110/6 338/113/6 +f 361/114/6 360/112/6 337/115/6 +f 362/116/6 361/114/6 336/117/6 +f 363/118/6 362/116/6 335/119/6 +f 364/96/6 363/118/6 334/120/6 +f 411/70/6 402/71/6 401/72/6 +f 423/80/9 390/69/9 389/81/9 +f 389/81/9 388/82/9 425/83/9 +f 388/82/9 387/84/9 426/85/9 +f 387/84/9 386/86/9 427/87/9 +f 427/87/9 386/86/9 385/88/9 +f 385/88/9 384/89/9 429/90/9 +f 429/90/9 384/89/9 383/91/9 +f 383/91/9 382/92/9 431/93/9 +f 382/92/9 381/94/9 432/95/9 +f 421/96/6 392/97/6 406/74/6 +f 436/98/9 376/99/9 391/68/9 +f 353/100/9 376/99/9 436/98/9 +f 344/101/9 353/100/9 435/102/9 +f 433/103/9 321/104/9 344/101/9 +f 401/72/6 400/105/6 413/106/6 +f 414/107/6 413/106/6 400/105/6 +f 415/108/6 414/107/6 399/109/6 +f 416/110/6 415/108/6 398/111/6 +f 417/112/6 416/110/6 397/113/6 +f 418/114/6 417/112/6 396/115/6 +f 419/116/6 418/114/6 395/117/6 +f 420/118/6 419/116/6 394/119/6 +f 421/96/6 420/118/6 393/120/6 +f 200/15/6 191/11/6 201/13/6 +f 199/19/6 193/14/6 200/15/6 +f 208/121/7 203/16/7 198/18/7 +f 204/122/8 194/19/8 199/21/8 +f 146/33/6 145/22/6 150/24/6 +f 147/33/9 148/22/9 143/24/9 +f 150/24/10 151/27/10 147/26/10 +f 155/25/10 153/32/10 147/26/10 +f 156/31/11 152/30/11 154/29/11 +f 149/33/11 148/28/11 152/30/11 +f 157/30/10 146/33/10 143/28/10 +f 143/28/10 161/29/10 159/31/10 +f 144/26/11 145/24/11 158/27/11 +f 158/27/11 160/25/11 162/32/11 +f 150/24/10 147/26/10 146/33/10 +f 145/24/11 144/26/11 149/33/11 +f 180/37/12 184/34/12 179/36/12 +f 176/123/6 180/37/6 175/38/6 +f 178/124/12 182/39/12 180/37/12 +f 178/124/9 174/40/9 177/42/9 +f 173/125/13 175/43/13 177/42/13 +f 178/124/14 180/37/14 174/45/14 +f 177/42/12 179/36/12 181/46/12 +f 178/124/12 177/42/12 182/39/12 +f 183/126/9 184/47/9 188/49/9 +f 185/48/12 186/50/12 188/49/12 +f 184/127/13 182/52/13 185/48/13 +f 182/128/6 181/53/6 186/50/6 +f 181/129/14 183/54/14 187/51/14 +f 201/13/6 190/12/6 202/56/6 +f 192/130/6 203/20/6 189/55/6 +f 204/18/9 205/57/9 194/59/9 +f 206/62/9 196/60/9 205/57/9 +f 207/131/9 197/61/9 206/62/9 +f 207/131/9 208/17/9 197/61/9 +f 209/132/6 210/133/6 222/66/6 +f 224/134/6 223/135/6 222/66/6 +f 222/66/6 221/136/6 220/137/6 +f 220/137/6 219/138/6 218/64/6 +f 218/64/6 217/139/6 216/140/6 +f 216/140/6 215/141/6 218/64/6 +f 214/65/6 213/142/6 212/143/6 +f 212/143/6 211/144/6 214/65/6 +f 210/133/6 224/134/6 222/66/6 +f 222/66/6 220/137/6 218/64/6 +f 218/64/6 215/141/6 214/65/6 +f 214/65/6 211/144/6 209/132/6 +f 209/132/6 222/66/6 214/65/6 +f 280/33/6 279/22/6 284/24/6 +f 281/33/9 282/22/9 268/24/9 +f 284/24/15 285/27/15 281/26/15 +f 289/25/15 287/32/15 281/26/15 +f 290/31/16 286/30/16 288/29/16 +f 283/33/16 282/28/16 286/30/16 +f 291/30/15 280/33/15 268/28/15 +f 268/28/15 295/29/15 291/30/15 +f 267/26/16 279/24/16 292/27/16 +f 292/27/16 294/25/16 267/26/16 +f 284/24/15 281/26/15 280/33/15 +f 283/33/16 279/24/16 282/28/16 +f 423/80/9 422/67/9 390/69/9 +f 355/145/6 354/70/6 342/72/6 +f 408/76/6 407/73/6 405/75/6 +f 409/78/6 408/76/6 404/77/6 +f 352/146/6 351/78/6 345/79/6 +f 351/78/6 350/76/6 346/77/6 +f 350/76/6 349/73/6 347/75/6 +f 366/80/9 365/67/9 331/69/9 +f 367/147/9 366/80/9 330/81/9 +f 367/147/9 330/81/9 368/83/9 +f 368/83/9 329/82/9 369/85/9 +f 369/85/9 328/84/9 370/87/9 +f 371/148/9 370/87/9 326/88/9 +f 371/148/9 326/88/9 372/90/9 +f 373/149/9 372/90/9 324/91/9 +f 373/149/9 324/91/9 374/93/9 +f 374/93/9 323/92/9 375/95/9 +f 349/73/6 364/96/6 348/74/6 +f 365/67/9 380/98/9 332/68/9 +f 379/102/9 318/100/9 380/98/9 +f 378/150/9 319/101/9 379/102/9 +f 378/150/9 377/103/9 319/101/9 +f 410/146/6 409/78/6 403/79/6 +f 355/145/6 342/72/6 356/106/6 +f 340/109/6 357/107/6 341/105/6 +f 339/111/6 358/108/6 340/109/6 +f 338/113/6 359/110/6 339/111/6 +f 337/115/6 360/112/6 338/113/6 +f 336/117/6 361/114/6 337/115/6 +f 335/119/6 362/116/6 336/117/6 +f 334/120/6 363/118/6 335/119/6 +f 333/97/6 364/96/6 334/120/6 +f 412/145/6 411/70/6 401/72/6 +f 424/147/9 423/80/9 389/81/9 +f 424/147/9 389/81/9 425/83/9 +f 425/83/9 388/82/9 426/85/9 +f 426/85/9 387/84/9 427/87/9 +f 428/148/9 427/87/9 385/88/9 +f 428/148/9 385/88/9 429/90/9 +f 430/149/9 429/90/9 383/91/9 +f 430/149/9 383/91/9 431/93/9 +f 431/93/9 382/92/9 432/95/9 +f 407/73/6 421/96/6 406/74/6 +f 422/67/9 436/98/9 391/68/9 +f 435/102/9 353/100/9 436/98/9 +f 434/150/9 344/101/9 435/102/9 +f 434/150/9 433/103/9 344/101/9 +f 412/145/6 401/72/6 413/106/6 +f 399/109/6 414/107/6 400/105/6 +f 398/111/6 415/108/6 399/109/6 +f 397/113/6 416/110/6 398/111/6 +f 396/115/6 417/112/6 397/113/6 +f 395/117/6 418/114/6 396/115/6 +f 394/119/6 419/116/6 395/117/6 +f 393/120/6 420/118/6 394/119/6 +f 392/97/6 421/96/6 393/120/6 +s 1 +f 17/151/17 18/152/18 12/153/19 +f 18/152/18 19/154/20 13/155/21 +f 19/154/20 20/156/22 14/157/23 +f 14/158/23 20/159/22 21/160/24 +f 21/160/24 22/161/25 16/162/26 +f 16/162/26 22/161/25 17/151/17 +f 23/163/27 24/164/28 18/152/18 +f 18/152/18 24/164/28 25/165/29 +f 25/165/29 26/166/30 20/156/22 +f 20/159/22 26/167/30 27/168/31 +f 27/168/31 28/169/32 22/161/25 +f 22/161/25 28/169/32 23/163/27 +f 35/170/33 36/171/34 30/172/35 +f 36/171/34 37/173/36 31/174/37 +f 37/173/36 38/175/38 32/176/39 +f 38/177/38 39/178/40 33/179/41 +f 33/179/41 39/178/40 40/180/42 +f 34/181/43 40/180/42 35/170/33 +f 41/182/44 42/183/45 36/171/34 +f 36/171/34 42/183/45 43/184/46 +f 43/184/46 44/185/47 38/175/38 +f 38/177/38 44/186/47 45/187/48 +f 45/187/48 46/188/49 40/180/42 +f 40/180/42 46/188/49 41/182/44 +f 11/189/12 12/153/19 42/183/45 +f 42/183/45 12/153/19 13/155/21 +f 43/184/46 13/155/21 14/157/23 +f 44/186/47 14/158/23 15/190/50 +f 15/190/50 16/162/26 46/188/49 +f 16/162/26 11/189/12 41/182/44 +f 48/191/51 80/192/52 79/193/53 +f 85/194/54 84/195/55 100/196/56 +f 72/197/57 91/198/58 92/199/59 +f 58/200/60 84/195/55 85/194/54 +f 70/201/61 68/202/62 89/203/63 +f 48/191/51 78/204/64 94/205/65 +f 54/206/66 82/207/67 83/208/68 +f 66/209/69 64/210/70 87/211/71 +f 76/212/72 74/213/73 92/199/59 +f 50/214/74 79/193/53 81/215/75 +f 60/216/76 85/194/54 86/217/77 +f 70/201/61 90/218/78 91/198/58 +f 56/219/79 83/208/68 84/195/55 +f 66/209/69 88/220/80 89/203/63 +f 76/212/72 93/221/81 94/205/65 +f 54/206/66 52/222/82 81/215/75 +f 62/223/83 86/217/77 87/224/71 +f 93/221/81 92/199/59 108/225/84 +f 85/194/54 101/226/85 102/227/86 +f 93/221/81 109/228/87 110/229/88 +f 86/217/77 102/230/86 103/231/89 +f 80/192/52 96/232/90 95/233/91 +f 80/192/52 94/205/65 110/234/88 +f 88/220/80 87/211/71 103/235/89 +f 79/193/53 95/236/91 97/237/92 +f 88/220/80 104/238/93 105/239/94 +f 82/207/67 81/215/75 97/240/92 +f 89/203/63 105/241/94 106/242/95 +f 82/207/67 98/243/96 99/244/97 +f 91/198/58 90/218/78 106/245/95 +f 84/195/55 83/208/68 99/246/97 +f 91/198/58 107/247/98 108/248/84 +f 111/249/14 128/250/14 127/251/99 +f 105/252/94 101/253/85 109/254/87 +f 231/255/100 247/256/100 246/257/101 +f 112/258/7 142/259/7 128/260/14 +f 119/261/13 135/262/13 136/263/102 +f 125/264/10 126/265/99 127/266/99 +f 118/267/102 136/268/102 137/269/11 +f 124/270/103 125/271/10 129/272/10 +f 117/256/11 137/273/11 138/274/8 +f 123/275/23 124/276/103 130/277/103 +f 116/278/8 138/279/8 139/280/12 +f 122/281/104 123/282/23 131/283/23 +f 115/284/12 139/285/12 140/286/105 +f 121/287/16 122/288/104 132/289/104 +f 114/290/105 140/291/105 141/292/15 +f 120/293/106 121/294/16 133/295/16 +f 113/296/15 141/297/15 142/298/7 +f 120/299/106 134/300/106 135/301/13 +f 52/222/82 165/11/15 167/14/107 +f 52/222/82 54/206/66 164/12/105 +f 56/219/79 163/55/12 164/12/105 +f 166/130/108 163/55/12 56/219/79 +f 49/302/7 168/59/107 169/58/15 +f 169/58/15 170/60/105 53/303/105 +f 170/60/105 171/61/12 55/304/12 +f 55/304/12 171/61/12 172/63/108 +f 172/63/108 60/216/76 59/255/11 +f 60/216/76 62/223/83 61/305/102 +f 61/305/102 62/223/83 64/306/70 +f 64/210/70 66/209/69 65/307/106 +f 66/209/69 68/202/62 67/308/16 +f 67/308/16 68/202/62 70/201/61 +f 70/201/61 72/197/57 71/309/23 +f 72/197/57 74/213/73 73/310/103 +f 74/213/73 76/212/72 75/311/10 +f 76/212/72 78/204/64 77/312/99 +f 78/204/64 48/191/51 47/313/14 +f 48/191/51 167/14/107 168/59/107 +f 228/303/109 244/290/109 243/314/110 +f 233/315/111 249/261/111 248/316/112 +f 240/312/113 256/265/113 255/264/114 +f 235/308/115 251/294/115 250/293/116 +f 230/317/101 246/278/101 245/318/117 +f 237/309/118 253/282/118 252/281/119 +f 226/302/120 242/258/121 241/319/122 +f 227/320/110 243/296/110 242/321/121 +f 239/311/114 255/271/114 254/270/123 +f 234/307/116 250/299/116 249/322/111 +f 229/304/117 245/284/117 244/323/109 +f 225/313/122 241/249/122 256/324/113 +f 236/325/119 252/288/119 251/287/115 +f 232/305/112 248/267/112 247/326/100 +f 238/310/124 254/276/123 253/275/118 +f 257/327/125 258/328/125 272/32/126 +f 271/329/126 272/32/126 270/25/127 +f 276/24/16 275/330/16 262/331/128 +f 259/332/129 263/333/127 264/29/127 +f 263/333/127 265/334/126 266/31/126 +f 262/335/128 266/31/126 265/334/126 +f 278/336/130 277/337/130 269/338/127 +f 278/27/130 273/24/15 274/330/15 +f 309/329/131 297/327/132 298/328/132 +f 309/329/131 310/32/131 308/25/133 +f 314/24/10 313/330/10 302/331/134 +f 303/333/133 304/29/133 300/339/135 +f 303/333/133 305/334/131 306/31/131 +f 302/335/134 306/31/131 305/334/131 +f 316/336/136 315/337/136 307/338/133 +f 316/27/136 311/24/11 312/330/11 +f 333/97/137 332/68/138 317/99/139 +f 334/120/140 331/69/141 332/68/138 +f 334/120/140 335/119/142 330/81/143 +f 335/119/142 336/117/144 329/82/145 +f 336/117/144 337/115/146 328/84/147 +f 328/84/147 337/115/146 338/113/148 +f 338/113/148 339/111/149 326/88/150 +f 339/111/149 340/109/151 325/89/152 +f 325/89/152 340/109/151 341/105/153 +f 341/105/153 342/72/154 323/92/155 +f 342/72/154 343/71/156 322/94/157 +f 392/97/137 391/68/138 376/99/139 +f 345/79/158 346/77/159 319/101/160 +f 346/77/159 347/75/161 318/100/162 +f 317/99/139 318/100/162 347/75/161 +f 393/120/140 390/69/141 391/68/138 +f 393/120/140 394/119/142 389/81/143 +f 394/119/142 395/117/144 388/82/145 +f 395/117/144 396/115/146 387/84/147 +f 387/84/147 396/115/146 397/113/148 +f 397/113/148 398/111/149 385/88/150 +f 398/111/149 399/109/151 384/89/152 +f 384/89/152 399/109/151 400/105/153 +f 400/105/153 401/72/154 382/92/155 +f 401/72/154 402/71/156 381/94/157 +f 403/79/158 404/77/159 344/101/160 +f 404/77/159 405/75/161 353/100/162 +f 376/99/139 353/100/162 405/75/161 +f 443/151/17 444/152/18 438/153/19 +f 444/152/18 445/154/20 439/155/21 +f 439/155/21 445/154/20 446/156/22 +f 446/159/22 447/160/24 441/190/50 +f 447/160/24 448/161/25 442/162/26 +f 442/162/26 448/161/25 443/151/17 +f 449/163/27 450/164/28 444/152/18 +f 444/152/18 450/164/28 451/165/29 +f 451/165/29 452/166/30 446/156/22 +f 446/159/22 452/167/30 453/168/31 +f 453/168/31 454/169/32 448/161/25 +f 448/161/25 454/169/32 449/163/27 +f 455/340/163 461/170/33 462/171/34 +f 462/171/34 463/173/36 457/174/37 +f 463/173/36 464/175/38 458/176/39 +f 464/177/38 465/178/40 459/179/41 +f 459/179/41 465/178/40 466/180/42 +f 466/180/42 461/170/33 455/340/163 +f 467/182/44 468/183/45 462/171/34 +f 462/171/34 468/183/45 469/184/46 +f 469/184/46 470/185/47 464/175/38 +f 464/177/38 470/186/47 471/187/48 +f 471/187/48 472/188/49 466/180/42 +f 472/188/49 467/182/44 461/170/33 +f 437/189/12 438/153/19 468/183/45 +f 468/183/45 438/153/19 439/155/21 +f 439/155/21 440/157/23 470/185/47 +f 470/186/47 440/158/23 441/190/50 +f 441/190/50 442/162/26 472/188/49 +f 472/188/49 442/162/26 437/189/12 +f 473/189/12 479/151/17 480/152/18 +f 480/152/18 481/154/20 475/155/21 +f 475/155/21 481/154/20 482/156/22 +f 476/158/23 482/159/22 483/160/24 +f 483/160/24 484/161/25 478/162/26 +f 478/162/26 484/161/25 479/151/17 +f 485/163/27 486/164/28 480/152/18 +f 480/152/18 486/164/28 487/165/29 +f 487/165/29 488/166/30 482/156/22 +f 488/167/30 489/168/31 483/160/24 +f 489/168/31 490/169/32 484/161/25 +f 484/161/25 490/169/32 485/163/27 +f 491/340/163 497/170/33 498/171/34 +f 498/171/34 499/173/36 493/174/37 +f 499/173/36 500/175/38 494/176/39 +f 494/341/39 500/177/38 501/178/40 +f 495/179/41 501/178/40 502/180/42 +f 496/181/43 502/180/42 497/170/33 +f 503/182/44 504/183/45 498/171/34 +f 498/171/34 504/183/45 505/184/46 +f 505/184/46 506/185/47 500/175/38 +f 500/177/38 506/186/47 507/187/48 +f 507/187/48 508/188/49 502/180/42 +f 502/180/42 508/188/49 503/182/44 +f 473/189/12 474/153/19 504/183/45 +f 504/183/45 474/153/19 475/155/21 +f 475/155/21 476/157/23 506/185/47 +f 506/186/47 476/158/23 477/190/50 +f 477/190/50 478/162/26 508/188/49 +f 478/162/26 473/189/12 503/182/44 +f 11/189/12 17/151/17 12/153/19 +f 12/153/19 18/152/18 13/155/21 +f 13/155/21 19/154/20 14/157/23 +f 15/190/50 14/158/23 21/160/24 +f 15/190/50 21/160/24 16/162/26 +f 11/189/12 16/162/26 17/151/17 +f 17/151/17 23/163/27 18/152/18 +f 19/154/20 18/152/18 25/165/29 +f 19/154/20 25/165/29 20/156/22 +f 21/160/24 20/159/22 27/168/31 +f 21/160/24 27/168/31 22/161/25 +f 17/151/17 22/161/25 23/163/27 +f 29/340/163 35/170/33 30/172/35 +f 30/172/35 36/171/34 31/174/37 +f 31/174/37 37/173/36 32/176/39 +f 32/341/39 38/177/38 33/179/41 +f 34/181/43 33/179/41 40/180/42 +f 29/340/163 34/181/43 35/170/33 +f 35/170/33 41/182/44 36/171/34 +f 37/173/36 36/171/34 43/184/46 +f 37/173/36 43/184/46 38/175/38 +f 39/178/40 38/177/38 45/187/48 +f 39/178/40 45/187/48 40/180/42 +f 35/170/33 40/180/42 41/182/44 +f 41/182/44 11/189/12 42/183/45 +f 43/184/46 42/183/45 13/155/21 +f 44/185/47 43/184/46 14/157/23 +f 45/187/48 44/186/47 15/190/50 +f 45/187/48 15/190/50 46/188/49 +f 46/188/49 16/162/26 41/182/44 +f 50/214/74 48/191/51 79/193/53 +f 101/342/85 85/194/54 100/196/56 +f 74/213/73 72/197/57 92/199/59 +f 60/216/76 58/200/60 85/194/54 +f 90/218/78 70/201/61 89/203/63 +f 80/192/52 48/191/51 94/205/65 +f 56/219/79 54/206/66 83/208/68 +f 88/220/80 66/209/69 87/211/71 +f 93/221/81 76/212/72 92/199/59 +f 52/222/82 50/214/74 81/215/75 +f 62/223/83 60/216/76 86/217/77 +f 72/197/57 70/201/61 91/198/58 +f 58/200/60 56/219/79 84/195/55 +f 68/202/62 66/209/69 89/203/63 +f 78/204/64 76/212/72 94/205/65 +f 82/207/67 54/206/66 81/215/75 +f 64/306/70 62/223/83 87/224/71 +f 109/343/87 93/221/81 108/225/84 +f 86/217/77 85/194/54 102/227/86 +f 94/205/65 93/221/81 110/229/88 +f 87/224/71 86/217/77 103/231/89 +f 79/193/53 80/192/52 95/233/91 +f 96/344/90 80/192/52 110/234/88 +f 104/345/93 88/220/80 103/235/89 +f 81/215/75 79/193/53 97/237/92 +f 89/203/63 88/220/80 105/239/94 +f 98/346/96 82/207/67 97/240/92 +f 90/218/78 89/203/63 106/242/95 +f 83/208/68 82/207/67 99/244/97 +f 107/347/98 91/198/58 106/245/95 +f 100/348/56 84/195/55 99/246/97 +f 92/199/59 91/198/58 108/248/84 +f 126/324/99 111/249/14 127/251/99 +f 97/349/92 95/350/91 96/351/90 +f 96/351/90 110/352/88 97/349/92 +f 109/254/87 108/353/84 107/354/98 +f 107/354/98 106/355/95 105/252/94 +f 105/252/94 104/356/93 103/357/89 +f 103/357/89 102/358/86 105/252/94 +f 101/253/85 100/359/56 99/360/97 +f 99/360/97 98/361/96 101/253/85 +f 97/349/92 110/352/88 109/254/87 +f 109/254/87 107/354/98 105/252/94 +f 105/252/94 102/358/86 101/253/85 +f 101/253/85 98/361/96 97/349/92 +f 97/349/92 109/254/87 101/253/85 +f 230/317/101 231/255/100 246/257/101 +f 111/319/14 112/258/7 128/260/14 +f 118/316/102 119/261/13 136/263/102 +f 129/362/10 125/264/10 127/266/99 +f 117/326/11 118/267/102 137/269/11 +f 130/363/103 124/270/103 129/272/10 +f 116/257/8 117/256/11 138/274/8 +f 131/364/23 123/275/23 130/277/103 +f 115/318/12 116/278/8 139/280/12 +f 132/365/104 122/281/104 131/283/23 +f 114/323/105 115/284/12 140/286/105 +f 133/366/16 121/287/16 132/289/104 +f 113/314/15 114/290/105 141/292/15 +f 134/367/106 120/293/106 133/295/16 +f 112/321/7 113/296/15 142/298/7 +f 119/322/13 120/299/106 135/301/13 +f 50/214/74 52/222/82 167/14/107 +f 165/11/15 52/222/82 164/12/105 +f 54/206/66 56/219/79 164/12/105 +f 58/200/60 166/130/108 56/219/79 +f 51/320/15 49/302/7 169/58/15 +f 51/320/15 169/58/15 53/303/105 +f 53/303/105 170/60/105 55/304/12 +f 57/317/8 55/304/12 172/63/108 +f 59/255/11 57/317/8 172/63/108 +f 172/63/108 166/130/108 60/216/76 +f 58/200/60 60/216/76 166/130/108 +f 59/255/11 60/216/76 61/305/102 +f 63/315/13 61/305/102 64/306/70 +f 63/368/13 64/210/70 65/307/106 +f 65/307/106 66/209/69 67/308/16 +f 69/325/104 67/308/16 70/201/61 +f 69/325/104 70/201/61 71/309/23 +f 71/309/23 72/197/57 73/310/103 +f 73/310/103 74/213/73 75/311/10 +f 75/311/10 76/212/72 77/312/99 +f 77/312/99 78/204/64 47/313/14 +f 168/59/107 49/302/7 47/313/14 +f 47/313/14 48/191/51 168/59/107 +f 50/214/74 167/14/107 48/191/51 +f 227/320/110 228/303/109 243/314/110 +f 232/305/112 233/315/111 248/316/112 +f 239/311/114 240/312/113 255/264/114 +f 234/307/116 235/308/115 250/293/116 +f 229/304/117 230/317/101 245/318/117 +f 236/325/119 237/309/118 252/281/119 +f 225/313/122 226/302/120 241/319/122 +f 226/302/120 227/320/110 242/321/121 +f 238/310/124 239/311/114 254/270/123 +f 233/368/111 234/307/116 249/322/111 +f 228/303/109 229/304/117 244/323/109 +f 240/312/113 225/313/122 256/324/113 +f 235/308/115 236/325/119 251/287/115 +f 231/255/100 232/305/112 247/326/100 +f 237/309/118 238/310/124 253/275/118 +f 271/329/126 257/327/125 272/32/126 +f 269/338/127 271/329/126 270/25/127 +f 261/27/128 276/24/16 262/331/128 +f 260/339/129 259/332/129 264/29/127 +f 264/29/127 263/333/127 266/31/126 +f 261/341/128 262/335/128 265/334/126 +f 270/25/127 278/336/130 269/338/127 +f 277/331/130 278/27/130 274/330/15 +f 310/32/131 309/329/131 298/328/132 +f 307/338/133 309/329/131 308/25/133 +f 301/27/134 314/24/10 302/331/134 +f 299/332/135 303/333/133 300/339/135 +f 304/29/133 303/333/133 306/31/131 +f 301/341/134 302/335/134 305/334/131 +f 308/25/133 316/336/136 307/338/133 +f 315/331/136 316/27/136 312/330/11 +f 348/74/164 333/97/137 317/99/139 +f 333/97/137 334/120/140 332/68/138 +f 331/69/141 334/120/140 330/81/143 +f 330/81/143 335/119/142 329/82/145 +f 329/82/145 336/117/144 328/84/147 +f 327/86/165 328/84/147 338/113/148 +f 327/86/165 338/113/148 326/88/150 +f 326/88/150 339/111/149 325/89/152 +f 324/91/166 325/89/152 341/105/153 +f 324/91/166 341/105/153 323/92/155 +f 323/92/155 342/72/154 322/94/157 +f 406/74/164 392/97/137 376/99/139 +f 320/104/167 345/79/158 319/101/160 +f 319/101/160 346/77/159 318/100/162 +f 348/74/164 317/99/139 347/75/161 +f 392/97/137 393/120/140 391/68/138 +f 390/69/141 393/120/140 389/81/143 +f 389/81/143 394/119/142 388/82/145 +f 388/82/145 395/117/144 387/84/147 +f 386/86/165 387/84/147 397/113/148 +f 386/86/165 397/113/148 385/88/150 +f 385/88/150 398/111/149 384/89/152 +f 383/91/166 384/89/152 400/105/153 +f 383/91/166 400/105/153 382/92/155 +f 382/92/155 401/72/154 381/94/157 +f 321/104/167 403/79/158 344/101/160 +f 344/101/160 404/77/159 353/100/162 +f 406/74/164 376/99/139 405/75/161 +f 437/189/12 443/151/17 438/153/19 +f 438/153/19 444/152/18 439/155/21 +f 440/157/23 439/155/21 446/156/22 +f 440/158/23 446/159/22 441/190/50 +f 441/190/50 447/160/24 442/162/26 +f 437/189/12 442/162/26 443/151/17 +f 443/151/17 449/163/27 444/152/18 +f 445/154/20 444/152/18 451/165/29 +f 445/154/20 451/165/29 446/156/22 +f 447/160/24 446/159/22 453/168/31 +f 447/160/24 453/168/31 448/161/25 +f 443/151/17 448/161/25 449/163/27 +f 456/172/35 455/340/163 462/171/34 +f 456/172/35 462/171/34 457/174/37 +f 457/174/37 463/173/36 458/176/39 +f 458/341/39 464/177/38 459/179/41 +f 460/181/43 459/179/41 466/180/42 +f 460/181/43 466/180/42 455/340/163 +f 461/170/33 467/182/44 462/171/34 +f 463/173/36 462/171/34 469/184/46 +f 463/173/36 469/184/46 464/175/38 +f 465/178/40 464/177/38 471/187/48 +f 465/178/40 471/187/48 466/180/42 +f 466/180/42 472/188/49 461/170/33 +f 467/182/44 437/189/12 468/183/45 +f 469/184/46 468/183/45 439/155/21 +f 469/184/46 439/155/21 470/185/47 +f 471/187/48 470/186/47 441/190/50 +f 471/187/48 441/190/50 472/188/49 +f 467/182/44 472/188/49 437/189/12 +f 474/153/19 473/189/12 480/152/18 +f 474/153/19 480/152/18 475/155/21 +f 476/157/23 475/155/21 482/156/22 +f 477/190/50 476/158/23 483/160/24 +f 477/190/50 483/160/24 478/162/26 +f 473/189/12 478/162/26 479/151/17 +f 479/151/17 485/163/27 480/152/18 +f 481/154/20 480/152/18 487/165/29 +f 481/154/20 487/165/29 482/156/22 +f 482/159/22 488/167/30 483/160/24 +f 483/160/24 489/168/31 484/161/25 +f 479/151/17 484/161/25 485/163/27 +f 492/172/35 491/340/163 498/171/34 +f 492/172/35 498/171/34 493/174/37 +f 493/174/37 499/173/36 494/176/39 +f 495/179/41 494/341/39 501/178/40 +f 496/181/43 495/179/41 502/180/42 +f 491/340/163 496/181/43 497/170/33 +f 497/170/33 503/182/44 498/171/34 +f 499/173/36 498/171/34 505/184/46 +f 499/173/36 505/184/46 500/175/38 +f 501/178/40 500/177/38 507/187/48 +f 501/178/40 507/187/48 502/180/42 +f 497/170/33 502/180/42 503/182/44 +f 503/182/44 473/189/12 504/183/45 +f 505/184/46 504/183/45 475/155/21 +f 505/184/46 475/155/21 506/185/47 +f 507/187/48 506/186/47 477/190/50 +f 507/187/48 477/190/50 508/188/49 +f 508/188/49 478/162/26 503/182/44 diff --git a/assets/hbm/models/n2.obj b/assets/hbm/models/bombs/n2.obj similarity index 100% rename from assets/hbm/models/n2.obj rename to assets/hbm/models/bombs/n2.obj diff --git a/assets/hbm/models/n45_chain.obj b/assets/hbm/models/bombs/n45_chain.obj similarity index 100% rename from assets/hbm/models/n45_chain.obj rename to assets/hbm/models/bombs/n45_chain.obj diff --git a/assets/hbm/models/n45_globe.obj b/assets/hbm/models/bombs/n45_globe.obj similarity index 100% rename from assets/hbm/models/n45_globe.obj rename to assets/hbm/models/bombs/n45_globe.obj diff --git a/assets/hbm/models/n45_knob.obj b/assets/hbm/models/bombs/n45_knob.obj similarity index 100% rename from assets/hbm/models/n45_knob.obj rename to assets/hbm/models/bombs/n45_knob.obj diff --git a/assets/hbm/models/n45_rod.obj b/assets/hbm/models/bombs/n45_rod.obj similarity index 100% rename from assets/hbm/models/n45_rod.obj rename to assets/hbm/models/bombs/n45_rod.obj diff --git a/assets/hbm/models/n45_stand.obj b/assets/hbm/models/bombs/n45_stand.obj similarity index 100% rename from assets/hbm/models/n45_stand.obj rename to assets/hbm/models/bombs/n45_stand.obj diff --git a/assets/hbm/models/ufp.obj b/assets/hbm/models/bombs/ufp.obj similarity index 100% rename from assets/hbm/models/ufp.obj rename to assets/hbm/models/bombs/ufp.obj diff --git a/assets/hbm/models/nikonium.obj b/assets/hbm/models/nikonium.obj new file mode 100644 index 000000000..add31a0aa --- /dev/null +++ b/assets/hbm/models/nikonium.obj @@ -0,0 +1,31 @@ +# Blender v2.82 (sub 7) OBJ File: '' +# www.blender.org +mtllib nikonium.mtl +o Cube +v 0.000000 1.605417 0.000000 +v 1.000000 0.086045 -1.000000 +v 1.000000 0.086045 1.000000 +v -1.000000 0.086045 -1.000000 +v -1.000000 0.086045 1.000000 +vt 0.190840 0.994935 +vt 0.485265 0.860547 +vt 0.752129 0.994935 +vt 1.003561 0.169485 +vt 0.548559 0.825081 +vt 0.433782 0.978118 +vt 0.433782 0.825081 +vt -0.033031 0.169485 +vt 0.548559 0.978118 +vn 0.0000 0.5498 0.8353 +vn -0.8353 0.5498 0.0000 +vn 0.0000 -1.0000 0.0000 +vn 0.8353 0.5498 0.0000 +vn 0.0000 0.5498 -0.8353 +usemtl Material.001 +s off +f 3/1/1 1/2/1 5/3/1 +f 5/3/2 1/2/2 4/4/2 +f 2/5/3 5/6/3 4/7/3 +f 2/8/4 1/2/4 3/1/4 +f 4/4/5 1/2/5 2/8/5 +f 2/5/3 3/9/3 5/6/3 diff --git a/assets/hbm/sounds/weapon/countdown.ogg b/assets/hbm/sounds/weapon/countdown.ogg new file mode 100644 index 000000000..2f1e5f37e Binary files /dev/null and b/assets/hbm/sounds/weapon/countdown.ogg differ diff --git a/assets/hbm/textures/blocks/concrete_pillar_side.png b/assets/hbm/textures/blocks/concrete_pillar_side.png new file mode 100644 index 000000000..a1fbf5065 Binary files /dev/null and b/assets/hbm/textures/blocks/concrete_pillar_side.png differ diff --git a/assets/hbm/textures/blocks/concrete_pillar_top.png b/assets/hbm/textures/blocks/concrete_pillar_top.png new file mode 100644 index 000000000..2e8a1e2f2 Binary files /dev/null and b/assets/hbm/textures/blocks/concrete_pillar_top.png differ diff --git a/assets/hbm/textures/misc/glint.png b/assets/hbm/textures/misc/glint.png new file mode 100644 index 000000000..f9ca97c38 Binary files /dev/null and b/assets/hbm/textures/misc/glint.png differ diff --git a/assets/hbm/textures/misc/glintBF.png b/assets/hbm/textures/misc/glintBF.png new file mode 100644 index 000000000..2132d7530 Binary files /dev/null and b/assets/hbm/textures/misc/glintBF.png differ diff --git a/assets/hbm/textures/models/ModelRubbleGround.png b/assets/hbm/textures/models/ModelRubbleGround.png deleted file mode 100644 index 672898abe..000000000 Binary files a/assets/hbm/textures/models/ModelRubbleGround.png and /dev/null differ diff --git a/assets/hbm/textures/models/ModelRubbleMetal.png b/assets/hbm/textures/models/ModelRubbleMetal.png deleted file mode 100644 index 6453b8ebb..000000000 Binary files a/assets/hbm/textures/models/ModelRubbleMetal.png and /dev/null differ diff --git a/assets/hbm/textures/models/ModelRubblePlant.png b/assets/hbm/textures/models/ModelRubblePlant.png deleted file mode 100644 index e7d8aee17..000000000 Binary files a/assets/hbm/textures/models/ModelRubblePlant.png and /dev/null differ diff --git a/assets/hbm/textures/models/ModelRubbleRock.png b/assets/hbm/textures/models/ModelRubbleRock.png deleted file mode 100644 index 8c1c49325..000000000 Binary files a/assets/hbm/textures/models/ModelRubbleRock.png and /dev/null differ diff --git a/assets/hbm/textures/models/ModelRubbleSand.png b/assets/hbm/textures/models/ModelRubbleSand.png deleted file mode 100644 index fe4f436d3..000000000 Binary files a/assets/hbm/textures/models/ModelRubbleSand.png and /dev/null differ diff --git a/assets/hbm/textures/models/ModelRubbleScrap.png b/assets/hbm/textures/models/ModelRubbleScrap.png deleted file mode 100644 index e7689de4f..000000000 Binary files a/assets/hbm/textures/models/ModelRubbleScrap.png and /dev/null differ diff --git a/assets/hbm/textures/models/ModelRubbleWood.png b/assets/hbm/textures/models/ModelRubbleWood.png deleted file mode 100644 index 49a06f0f4..000000000 Binary files a/assets/hbm/textures/models/ModelRubbleWood.png and /dev/null differ diff --git a/assets/hbm/textures/models/NukeCloudFire.png b/assets/hbm/textures/models/NukeCloudFire.png deleted file mode 100644 index 141c0bd61..000000000 Binary files a/assets/hbm/textures/models/NukeCloudFire.png and /dev/null differ diff --git a/assets/hbm/textures/models/NukeCloudFire1.png b/assets/hbm/textures/models/NukeCloudFire1.png deleted file mode 100644 index 419ef0964..000000000 Binary files a/assets/hbm/textures/models/NukeCloudFire1.png and /dev/null differ diff --git a/assets/hbm/textures/models/bombs/fstbmb.png b/assets/hbm/textures/models/bombs/fstbmb.png new file mode 100644 index 000000000..f764879fb Binary files /dev/null and b/assets/hbm/textures/models/bombs/fstbmb.png differ diff --git a/assets/hbm/textures/models/n2.png b/assets/hbm/textures/models/bombs/n2.png similarity index 100% rename from assets/hbm/textures/models/n2.png rename to assets/hbm/textures/models/bombs/n2.png diff --git a/assets/hbm/textures/models/ufp.png b/assets/hbm/textures/models/bombs/ufp.png similarity index 100% rename from assets/hbm/textures/models/ufp.png rename to assets/hbm/textures/models/bombs/ufp.png diff --git a/assets/hbm/textures/models/Ring2.png b/assets/hbm/textures/models/explosion/Ring2.png similarity index 100% rename from assets/hbm/textures/models/Ring2.png rename to assets/hbm/textures/models/explosion/Ring2.png diff --git a/assets/hbm/textures/models/balefire.png b/assets/hbm/textures/models/explosion/balefire.png similarity index 100% rename from assets/hbm/textures/models/balefire.png rename to assets/hbm/textures/models/explosion/balefire.png diff --git a/assets/hbm/textures/models/fireball.png b/assets/hbm/textures/models/explosion/fireball.png similarity index 100% rename from assets/hbm/textures/models/fireball.png rename to assets/hbm/textures/models/explosion/fireball.png diff --git a/assets/hbm/textures/models/explosion/tomblast.png b/assets/hbm/textures/models/explosion/tomblast.png new file mode 100644 index 000000000..83fa0fc72 Binary files /dev/null and b/assets/hbm/textures/models/explosion/tomblast.png differ diff --git a/assets/hbm/textures/models/misc/nikonium.png b/assets/hbm/textures/models/misc/nikonium.png new file mode 100644 index 000000000..192bbbf2d Binary files /dev/null and b/assets/hbm/textures/models/misc/nikonium.png differ diff --git a/com/hbm/blocks/ModBlocks.java b/com/hbm/blocks/ModBlocks.java index fcbbf8743..51f3f3ca6 100644 --- a/com/hbm/blocks/ModBlocks.java +++ b/com/hbm/blocks/ModBlocks.java @@ -355,6 +355,9 @@ public class ModBlocks { public static Block nuke_n45; public static final int guiID_nuke_n45 = 77; + + public static Block nuke_balefire; + public static final int guiID_nuke_balefire = 0000; public static Block bomb_multi; public static final int guiID_bomb_multi = 10; @@ -1006,6 +1009,7 @@ public class ModBlocks { nuke_solinium = new NukeSolinium(Material.iron).setBlockName("nuke_solinium").setCreativeTab(MainRegistry.nukeTab).setHardness(5.0F).setResistance(6000.0F).setBlockTextureName(RefStrings.MODID + ":nuke_solinium"); nuke_n2 = new NukeN2(Material.iron).setBlockName("nuke_n2").setCreativeTab(MainRegistry.nukeTab).setHardness(5.0F).setResistance(6000.0F).setBlockTextureName(RefStrings.MODID + ":nuke_n2"); nuke_n45 = new NukeN45(Material.iron).setBlockName("nuke_n45").setCreativeTab(MainRegistry.nukeTab).setHardness(5.0F).setResistance(6000.0F).setBlockTextureName(RefStrings.MODID + ":code"); + //nuke_balefire = new NukeBalefire(Material.iron).setBlockName("nuke_balefire").setCreativeTab(MainRegistry.nukeTab).setHardness(5.0F).setResistance(6000.0F).setBlockTextureName(RefStrings.MODID + ":nuke_balefire"); cel_prime = new CelPrime(Material.iron).setBlockName("cel_prime").setCreativeTab(null).setHardness(5.0F).setResistance(6000.0F).setBlockTextureName(RefStrings.MODID + ":code"); cel_prime_terminal = new CelPrimePart(Material.iron).setBlockName("cel_prime_terminal").setCreativeTab(null).setHardness(5.0F).setResistance(6000.0F).setBlockTextureName(RefStrings.MODID + ":code"); diff --git a/com/hbm/blocks/bomb/NukeBalefire.java b/com/hbm/blocks/bomb/NukeBalefire.java new file mode 100644 index 000000000..0d810032a --- /dev/null +++ b/com/hbm/blocks/bomb/NukeBalefire.java @@ -0,0 +1,21 @@ +package com.hbm.blocks.bomb; + +import com.hbm.blocks.machine.BlockMachineBase; +import com.hbm.tileentity.bomb.TileEntityNukeBalefire; + +import net.minecraft.block.material.Material; +import net.minecraft.tileentity.TileEntity; +import net.minecraft.world.World; + +public class NukeBalefire extends BlockMachineBase { + + protected NukeBalefire(Material mat, int guiID) { + super(mat, guiID); + } + + @Override + public TileEntity createNewTileEntity(World world, int meta) { + return new TileEntityNukeBalefire(); + } + +} diff --git a/com/hbm/blocks/test/TestEventTester.java b/com/hbm/blocks/test/TestEventTester.java index cbbd0cb14..010d7e1c6 100644 --- a/com/hbm/blocks/test/TestEventTester.java +++ b/com/hbm/blocks/test/TestEventTester.java @@ -7,6 +7,7 @@ import java.util.Random; import java.util.Map.Entry; import com.hbm.blocks.ModBlocks; +import com.hbm.entity.effect.EntityCloudTom; import com.hbm.saveddata.RadiationSavedData; import net.minecraft.block.Block; @@ -374,6 +375,12 @@ public class TestEventTester extends Block { EntityFallingBlock entityfallingblock = new EntityFallingBlock(worldObj, (double)((float)par2 + 0.5F), (double)((float)par3 + 0.5F), (double)((float)par4 + 0.5F), this, worldObj.getBlockMetadata(par2, par3, par4)); worldObj.spawnEntityInWorld(entityfallingblock); }*/ + + if(!worldObj.isRemote) { + EntityCloudTom tom = new EntityCloudTom(worldObj, 100); + tom.setPosition(par2 + 0.5, par3 + 2, par4 + 0.5); + worldObj.spawnEntityInWorld(tom); + } return true; } diff --git a/com/hbm/entity/effect/EntityCloudTom.java b/com/hbm/entity/effect/EntityCloudTom.java new file mode 100644 index 000000000..1e73abea3 --- /dev/null +++ b/com/hbm/entity/effect/EntityCloudTom.java @@ -0,0 +1,79 @@ +package com.hbm.entity.effect; + +import cpw.mods.fml.relauncher.Side; +import cpw.mods.fml.relauncher.SideOnly; +import net.minecraft.entity.Entity; +import net.minecraft.nbt.NBTTagCompound; +import net.minecraft.world.World; + +public class EntityCloudTom extends Entity { + + public int maxAge = 100; + public int age; + + public EntityCloudTom(World p_i1582_1_) { + super(p_i1582_1_); + this.setSize(1, 4); + this.ignoreFrustumCheck = true; + this.isImmuneToFire = true; + this.age = 0; + } + + @Override + protected void entityInit() { + this.dataWatcher.addObject(16, Integer.valueOf(0)); + } + + @Override + @SideOnly(Side.CLIENT) + public int getBrightnessForRender(float p_70070_1_) { + return 15728880; + } + + @Override + public float getBrightness(float p_70013_1_) { + return 1.0F; + } + + public EntityCloudTom(World p_i1582_1_, int maxAge) { + super(p_i1582_1_); + this.setSize(20, 40); + this.isImmuneToFire = true; + this.setMaxAge(maxAge); + } + + @Override + public void onUpdate() { + + this.age++; + this.worldObj.lastLightningBolt = 2; + + if (this.age >= this.getMaxAge()) { + this.setDead(); + } + } + + @Override + protected void readEntityFromNBT(NBTTagCompound p_70037_1_) { + age = p_70037_1_.getShort("age"); + } + + @Override + protected void writeEntityToNBT(NBTTagCompound p_70014_1_) { + p_70014_1_.setShort("age", (short) age); + } + + public void setMaxAge(int i) { + this.dataWatcher.updateObject(16, Integer.valueOf(i)); + } + + public int getMaxAge() { + return this.dataWatcher.getWatchableObjectInt(16); + } + + @Override + @SideOnly(Side.CLIENT) + public boolean isInRangeToRenderDist(double distance) { + return true; + } +} diff --git a/com/hbm/entity/projectile/EntityTom.java b/com/hbm/entity/projectile/EntityTom.java index 89e6502fd..06161e9a1 100644 --- a/com/hbm/entity/projectile/EntityTom.java +++ b/com/hbm/entity/projectile/EntityTom.java @@ -1,5 +1,6 @@ package com.hbm.entity.projectile; +import com.hbm.entity.effect.EntityCloudTom; import com.hbm.entity.logic.EntityTomBlast; import cpw.mods.fml.relauncher.Side; import cpw.mods.fml.relauncher.SideOnly; @@ -39,6 +40,10 @@ public class EntityTom extends EntityThrowable { tom.posZ = posZ; tom.destructionRange = 500; worldObj.spawnEntityInWorld(tom); + + EntityCloudTom cloud = new EntityCloudTom(worldObj, 500); + cloud.setLocationAndAngles(posX, posY, posZ, 0, 0); + worldObj.spawnEntityInWorld(cloud); } this.setDead(); } diff --git a/com/hbm/handler/ToolAbility.java b/com/hbm/handler/ToolAbility.java index 749f602d4..15edc40dd 100644 --- a/com/hbm/handler/ToolAbility.java +++ b/com/hbm/handler/ToolAbility.java @@ -9,7 +9,7 @@ import java.util.Set; import com.hbm.inventory.CentrifugeRecipes; import com.hbm.inventory.ShredderRecipes; import com.hbm.items.ModItems; -import com.hbm.items.tool.ItemToolAbility; +import com.hbm.items.tool.IItemAbility; import com.hbm.main.MainRegistry; import com.hbm.util.EnchantmentUtil; @@ -27,7 +27,7 @@ import net.minecraft.world.World; public abstract class ToolAbility { - public abstract void onDig(World world, int x, int y, int z, EntityPlayer player, Block block, int meta, ItemToolAbility tool); + public abstract void onDig(World world, int x, int y, int z, EntityPlayer player, Block block, int meta, IItemAbility tool); public abstract String getName(); public abstract String getFullName(); @@ -42,7 +42,7 @@ public abstract class ToolAbility { private Set pos = new HashSet(); @Override - public void onDig(World world, int x, int y, int z, EntityPlayer player, Block block, int meta, ItemToolAbility tool) { + public void onDig(World world, int x, int y, int z, EntityPlayer player, Block block, int meta, IItemAbility tool) { Block b = world.getBlock(x, y, z); @@ -68,7 +68,7 @@ public abstract class ToolAbility { } } - private void breakExtra(World world, int x, int y, int z, int refX, int refY, int refZ, EntityPlayer player, ItemToolAbility tool, int depth) { + private void breakExtra(World world, int x, int y, int z, int refX, int refY, int refZ, EntityPlayer player, IItemAbility tool, int depth) { if(pos.contains(new ThreeInts(x, y, z))) return; @@ -139,7 +139,7 @@ public abstract class ToolAbility { } @Override - public void onDig(World world, int x, int y, int z, EntityPlayer player, Block block, int meta, ItemToolAbility tool) { + public void onDig(World world, int x, int y, int z, EntityPlayer player, Block block, int meta, IItemAbility tool) { for(int a = x - range; a <= x + range; a++) { for(int b = y - range; b <= y + range; b++) { @@ -168,7 +168,7 @@ public abstract class ToolAbility { public static class SilkAbility extends ToolAbility { @Override - public void onDig(World world, int x, int y, int z, EntityPlayer player, Block block, int meta, ItemToolAbility tool) { + public void onDig(World world, int x, int y, int z, EntityPlayer player, Block block, int meta, IItemAbility tool) { //if the tool is already enchanted, do nothing if(EnchantmentHelper.getSilkTouchModifier(player) || player.getHeldItem() == null) @@ -204,7 +204,7 @@ public abstract class ToolAbility { } @Override - public void onDig(World world, int x, int y, int z, EntityPlayer player, Block block, int meta, ItemToolAbility tool) { + public void onDig(World world, int x, int y, int z, EntityPlayer player, Block block, int meta, IItemAbility tool) { //if the tool is already enchanted, do nothing if(EnchantmentHelper.getFortuneModifier(player) > 0 || player.getHeldItem() == null) @@ -234,7 +234,7 @@ public abstract class ToolAbility { public static class SmelterAbility extends ToolAbility { @Override - public void onDig(World world, int x, int y, int z, EntityPlayer player, Block block, int meta, ItemToolAbility tool) { + public void onDig(World world, int x, int y, int z, EntityPlayer player, Block block, int meta, IItemAbility tool) { //a band-aid on a gaping wound if(block == Blocks.lit_redstone_ore) @@ -263,7 +263,7 @@ public abstract class ToolAbility { public static class ShredderAbility extends ToolAbility { @Override - public void onDig(World world, int x, int y, int z, EntityPlayer player, Block block, int meta, ItemToolAbility tool) { + public void onDig(World world, int x, int y, int z, EntityPlayer player, Block block, int meta, IItemAbility tool) { //a band-aid on a gaping wound if(block == Blocks.lit_redstone_ore) @@ -292,7 +292,7 @@ public abstract class ToolAbility { public static class CentrifugeAbility extends ToolAbility { @Override - public void onDig(World world, int x, int y, int z, EntityPlayer player, Block block, int meta, ItemToolAbility tool) { + public void onDig(World world, int x, int y, int z, EntityPlayer player, Block block, int meta, IItemAbility tool) { //a band-aid on a gaping wound if(block == Blocks.lit_redstone_ore) diff --git a/com/hbm/handler/WeaponAbility.java b/com/hbm/handler/WeaponAbility.java index 2965ba2cd..3c8373fc4 100644 --- a/com/hbm/handler/WeaponAbility.java +++ b/com/hbm/handler/WeaponAbility.java @@ -1,6 +1,6 @@ package com.hbm.handler; -import com.hbm.items.tool.ItemToolAbility; +import com.hbm.items.tool.IItemAbility; import com.hbm.lib.Library; import net.minecraft.client.resources.I18n; @@ -13,7 +13,7 @@ import net.minecraft.world.World; public abstract class WeaponAbility { - public abstract void onHit(World world, EntityPlayer player, Entity victim, ItemToolAbility tool); + public abstract void onHit(World world, EntityPlayer player, Entity victim, IItemAbility tool); public abstract String getName(); public abstract String getFullName(); @@ -26,7 +26,7 @@ public abstract class WeaponAbility { } @Override - public void onHit(World world, EntityPlayer player, Entity victim, ItemToolAbility tool) { + public void onHit(World world, EntityPlayer player, Entity victim, IItemAbility tool) { Library.applyRadData(victim, rad); } @@ -51,7 +51,7 @@ public abstract class WeaponAbility { } @Override - public void onHit(World world, EntityPlayer player, Entity victim, ItemToolAbility tool) { + public void onHit(World world, EntityPlayer player, Entity victim, IItemAbility tool) { if(victim instanceof EntityLivingBase) { @@ -82,7 +82,7 @@ public abstract class WeaponAbility { } @Override - public void onHit(World world, EntityPlayer player, Entity victim, ItemToolAbility tool) { + public void onHit(World world, EntityPlayer player, Entity victim, IItemAbility tool) { if(victim instanceof EntityLivingBase) { diff --git a/com/hbm/items/ModItems.java b/com/hbm/items/ModItems.java index 144d68334..1244b9ce0 100644 --- a/com/hbm/items/ModItems.java +++ b/com/hbm/items/ModItems.java @@ -3,6 +3,7 @@ package com.hbm.items; import com.hbm.blocks.ModBlocks; import com.hbm.handler.BucketHandler; import com.hbm.handler.ToolAbility; +import com.hbm.handler.ToolAbility.LuckAbility; import com.hbm.handler.WeaponAbility; import com.hbm.handler.guncfg.Gun12GaugeFactory; import com.hbm.handler.guncfg.Gun20GaugeFactory; @@ -1973,7 +1974,7 @@ public class ModItems { nugget_thorium_fuel = new ItemRadioactive(0.025F).setUnlocalizedName("nugget_thorium_fuel").setCreativeTab(MainRegistry.partsTab).setTextureName(RefStrings.MODID + ":nugget_thorium_fuel"); nugget_plutonium_fuel = new ItemRadioactive(1F).setUnlocalizedName("nugget_plutonium_fuel").setCreativeTab(MainRegistry.partsTab).setTextureName(RefStrings.MODID + ":nugget_plutonium_fuel"); nugget_mox_fuel = new ItemRadioactive(1F).setUnlocalizedName("nugget_mox_fuel").setCreativeTab(MainRegistry.partsTab).setTextureName(RefStrings.MODID + ":nugget_mox_fuel"); - nugget_schrabidium_fuel = new ItemRadioactive(7.5F).setUnlocalizedName("nugget_schrabidium_fuel").setCreativeTab(MainRegistry.partsTab).setTextureName(RefStrings.MODID + ":nugget_schrabidium_fuel"); + nugget_schrabidium_fuel = new ItemRadioactive(1.5F).setUnlocalizedName("nugget_schrabidium_fuel").setCreativeTab(MainRegistry.partsTab).setTextureName(RefStrings.MODID + ":nugget_schrabidium_fuel"); ingot_advanced_alloy = new Item().setUnlocalizedName("ingot_advanced_alloy").setCreativeTab(MainRegistry.partsTab).setTextureName(RefStrings.MODID + ":ingot_advanced_alloy"); niter = new Item().setUnlocalizedName("niter").setCreativeTab(MainRegistry.partsTab).setTextureName(RefStrings.MODID + ":salpeter"); @@ -3506,7 +3507,7 @@ public class ModItems { .addBreakAbility(new ToolAbility.SilkAbility()) .addBreakAbility(new ToolAbility.RecursionAbility(5)).setUnlocalizedName("chainsaw").setTextureName(RefStrings.MODID + ":chainsaw"); - schrabidium_sword = new ItemToolAbility(150, 0, MainRegistry.tMatSchrab, EnumToolType.SWORD) + schrabidium_sword = new ItemSwordAbility(150, 0, MainRegistry.tMatSchrab) .addHitAbility(new WeaponAbility.RadiationAbility(50F)) .addHitAbility(new WeaponAbility.VampireAbility(2F)) .setRarity(EnumRarity.rare).setUnlocalizedName("schrabidium_sword").setTextureName(RefStrings.MODID + ":schrabidium_sword"); @@ -3516,6 +3517,7 @@ public class ModItems { .addBreakAbility(new ToolAbility.HammerAbility(2)) .addBreakAbility(new ToolAbility.RecursionAbility(10)) .addBreakAbility(new ToolAbility.SilkAbility()) + .addBreakAbility(new LuckAbility(5)) .addBreakAbility(new ToolAbility.SmelterAbility()) .addBreakAbility(new ToolAbility.ShredderAbility()) .setRarity(EnumRarity.rare).setUnlocalizedName("schrabidium_pickaxe").setTextureName(RefStrings.MODID + ":schrabidium_pickaxe"); @@ -3525,6 +3527,7 @@ public class ModItems { .addBreakAbility(new ToolAbility.HammerAbility(2)) .addBreakAbility(new ToolAbility.RecursionAbility(10)) .addBreakAbility(new ToolAbility.SilkAbility()) + .addBreakAbility(new LuckAbility(5)) .addBreakAbility(new ToolAbility.SmelterAbility()) .addBreakAbility(new ToolAbility.ShredderAbility()) .setRarity(EnumRarity.rare).setUnlocalizedName("schrabidium_axe").setTextureName(RefStrings.MODID + ":schrabidium_axe"); @@ -3534,24 +3537,25 @@ public class ModItems { .addBreakAbility(new ToolAbility.HammerAbility(2)) .addBreakAbility(new ToolAbility.RecursionAbility(10)) .addBreakAbility(new ToolAbility.SilkAbility()) + .addBreakAbility(new LuckAbility(5)) .addBreakAbility(new ToolAbility.SmelterAbility()) .addBreakAbility(new ToolAbility.ShredderAbility()) .setRarity(EnumRarity.rare).setUnlocalizedName("schrabidium_shovel").setTextureName(RefStrings.MODID + ":schrabidium_shovel"); schrabidium_hoe = new HoeSchrabidium(MainRegistry.tMatSchrab).setUnlocalizedName("schrabidium_hoe").setTextureName(RefStrings.MODID + ":schrabidium_hoe"); - titanium_sword = new ItemToolAbility(6.5F, 0, MainRegistry.tMatTitan, EnumToolType.SWORD).setUnlocalizedName("titanium_sword").setTextureName(RefStrings.MODID + ":titanium_sword"); + titanium_sword = new ItemSwordAbility(6.5F, 0, MainRegistry.tMatTitan).setUnlocalizedName("titanium_sword").setTextureName(RefStrings.MODID + ":titanium_sword"); titanium_pickaxe = new ItemToolAbility(4.5F, 0, MainRegistry.tMatTitan, EnumToolType.PICKAXE).setUnlocalizedName("titanium_pickaxe").setTextureName(RefStrings.MODID + ":titanium_pickaxe"); titanium_axe = new ItemToolAbility(5.5F, 0, MainRegistry.tMatTitan, EnumToolType.AXE).setUnlocalizedName("titanium_axe").setTextureName(RefStrings.MODID + ":titanium_axe"); titanium_shovel = new ItemToolAbility(3.5F, 0, MainRegistry.tMatTitan, EnumToolType.SHOVEL).setUnlocalizedName("titanium_shovel").setTextureName(RefStrings.MODID + ":titanium_shovel"); titanium_hoe = new ModHoe(MainRegistry.tMatTitan).setUnlocalizedName("titanium_hoe").setTextureName(RefStrings.MODID + ":titanium_hoe"); - steel_sword = new ItemToolAbility(6F, 0, MainRegistry.tMatSteel, EnumToolType.SWORD).setUnlocalizedName("steel_sword").setTextureName(RefStrings.MODID + ":steel_sword"); + steel_sword = new ItemSwordAbility(6F, 0, MainRegistry.tMatSteel).setUnlocalizedName("steel_sword").setTextureName(RefStrings.MODID + ":steel_sword"); steel_pickaxe = new ItemToolAbility(4F, 0, MainRegistry.tMatSteel, EnumToolType.PICKAXE).setUnlocalizedName("steel_pickaxe").setTextureName(RefStrings.MODID + ":steel_pickaxe"); steel_axe = new ItemToolAbility(5F, 0, MainRegistry.tMatSteel, EnumToolType.AXE).setUnlocalizedName("steel_axe").setTextureName(RefStrings.MODID + ":steel_axe"); steel_shovel = new ItemToolAbility(3F, 0, MainRegistry.tMatSteel, EnumToolType.SHOVEL).setUnlocalizedName("steel_shovel").setTextureName(RefStrings.MODID + ":steel_shovel"); steel_hoe = new ModHoe(MainRegistry.tMatSteel).setUnlocalizedName("steel_hoe").setTextureName(RefStrings.MODID + ":steel_hoe"); - alloy_sword = new ItemToolAbility(9F, 0, MainRegistry.tMatAlloy, EnumToolType.SWORD) + alloy_sword = new ItemSwordAbility(9F, 0, MainRegistry.tMatAlloy) .addHitAbility(new WeaponAbility.StunAbility(2)).setUnlocalizedName("alloy_sword").setTextureName(RefStrings.MODID + ":alloy_sword"); alloy_pickaxe = new ItemToolAbility(6F, 0, MainRegistry.tMatAlloy, EnumToolType.PICKAXE) @@ -3565,78 +3569,90 @@ public class ModItems { alloy_hoe = new ModHoe(MainRegistry.tMatAlloy).setUnlocalizedName("alloy_hoe").setTextureName(RefStrings.MODID + ":alloy_hoe"); - cmb_sword = new ItemToolAbility(50F, 0, MainRegistry.tMatCMB, EnumToolType.SWORD) + cmb_sword = new ItemSwordAbility(50F, 0, MainRegistry.tMatCMB) .addHitAbility(new WeaponAbility.StunAbility(2)) .addHitAbility(new WeaponAbility.VampireAbility(2F)).setUnlocalizedName("cmb_sword").setTextureName(RefStrings.MODID + ":cmb_sword"); cmb_pickaxe = new ItemToolAbility(10F, 0, MainRegistry.tMatCMB, EnumToolType.PICKAXE) .addBreakAbility(new ToolAbility.RecursionAbility(5)) .addBreakAbility(new ToolAbility.SmelterAbility()) - .addBreakAbility(new ToolAbility.SilkAbility()).setUnlocalizedName("cmb_pickaxe").setTextureName(RefStrings.MODID + ":cmb_pickaxe"); + .addBreakAbility(new ToolAbility.SilkAbility()) + .addBreakAbility(new LuckAbility(3)).setUnlocalizedName("cmb_pickaxe").setTextureName(RefStrings.MODID + ":cmb_pickaxe"); cmb_axe = new ItemToolAbility(12.5F, 0, MainRegistry.tMatCMB, EnumToolType.AXE) .addBreakAbility(new ToolAbility.RecursionAbility(5)) .addBreakAbility(new ToolAbility.SmelterAbility()) - .addBreakAbility(new ToolAbility.SilkAbility()).setUnlocalizedName("cmb_axe").setTextureName(RefStrings.MODID + ":cmb_axe"); + .addBreakAbility(new ToolAbility.SilkAbility()) + .addBreakAbility(new LuckAbility(3)).setUnlocalizedName("cmb_axe").setTextureName(RefStrings.MODID + ":cmb_axe"); cmb_shovel = new ItemToolAbility(8F, 0, MainRegistry.tMatCMB, EnumToolType.SHOVEL) .addBreakAbility(new ToolAbility.RecursionAbility(5)) .addBreakAbility(new ToolAbility.SmelterAbility()) - .addBreakAbility(new ToolAbility.SilkAbility()).setUnlocalizedName("cmb_shovel").setTextureName(RefStrings.MODID + ":cmb_shovel"); + .addBreakAbility(new ToolAbility.SilkAbility()) + .addBreakAbility(new LuckAbility(3)).setUnlocalizedName("cmb_shovel").setTextureName(RefStrings.MODID + ":cmb_shovel"); cmb_hoe = new ModHoe(MainRegistry.tMatCMB).setUnlocalizedName("cmb_hoe").setTextureName(RefStrings.MODID + ":cmb_hoe"); - elec_sword = new ItemToolAbilityPower(15F, 0, MainRegistry.tMatElec, EnumToolType.SWORD, 500000, 1000, 100) + elec_sword = new ItemSwordAbilityPower(15F, 0, MainRegistry.tMatElec, 500000, 1000, 100) .addHitAbility(new WeaponAbility.StunAbility(5)).setUnlocalizedName("elec_sword").setTextureName(RefStrings.MODID + ":elec_sword_anim"); elec_pickaxe = new ItemToolAbilityPower(10F, 0, MainRegistry.tMatElec, EnumToolType.PICKAXE, 500000, 1000, 100) .addBreakAbility(new ToolAbility.HammerAbility(2)) .addBreakAbility(new ToolAbility.RecursionAbility(5)) - .addBreakAbility(new ToolAbility.SilkAbility()).setUnlocalizedName("elec_pickaxe").setTextureName(RefStrings.MODID + ":elec_drill_anim"); + .addBreakAbility(new ToolAbility.SilkAbility()) + .addBreakAbility(new LuckAbility(2)).setUnlocalizedName("elec_pickaxe").setTextureName(RefStrings.MODID + ":elec_drill_anim"); elec_axe = new ItemToolAbilityPower(12.5F, 0, MainRegistry.tMatElec, EnumToolType.AXE, 500000, 1000, 100) .addBreakAbility(new ToolAbility.HammerAbility(2)) .addBreakAbility(new ToolAbility.RecursionAbility(5)) - .addBreakAbility(new ToolAbility.SilkAbility()).setUnlocalizedName("elec_axe").setTextureName(RefStrings.MODID + ":elec_chainsaw_anim"); + .addBreakAbility(new ToolAbility.SilkAbility()) + .addBreakAbility(new LuckAbility(2)).setUnlocalizedName("elec_axe").setTextureName(RefStrings.MODID + ":elec_chainsaw_anim"); elec_shovel = new ItemToolAbilityPower(7.5F, 0, MainRegistry.tMatElec, EnumToolType.SHOVEL, 500000, 1000, 100) .addBreakAbility(new ToolAbility.HammerAbility(2)) .addBreakAbility(new ToolAbility.RecursionAbility(5)) - .addBreakAbility(new ToolAbility.SilkAbility()).setUnlocalizedName("elec_shovel").setTextureName(RefStrings.MODID + ":elec_shovel_anim"); + .addBreakAbility(new ToolAbility.SilkAbility()) + .addBreakAbility(new LuckAbility(2)).setUnlocalizedName("elec_shovel").setTextureName(RefStrings.MODID + ":elec_shovel_anim"); - desh_sword = new ItemToolAbility(15F, 0, MainRegistry.tMatDesh, EnumToolType.SWORD) + desh_sword = new ItemSwordAbility(15F, 0, MainRegistry.tMatDesh) .addHitAbility(new WeaponAbility.StunAbility(2)).setUnlocalizedName("desh_sword").setTextureName(RefStrings.MODID + ":desh_sword"); desh_pickaxe = new ItemToolAbility(5F, -0.05, MainRegistry.tMatDesh, EnumToolType.PICKAXE) .addBreakAbility(new ToolAbility.HammerAbility(1)) .addBreakAbility(new ToolAbility.RecursionAbility(3)) - .addBreakAbility(new ToolAbility.SilkAbility()).setUnlocalizedName("desh_pickaxe").setTextureName(RefStrings.MODID + ":desh_pickaxe"); + .addBreakAbility(new ToolAbility.SilkAbility()) + .addBreakAbility(new LuckAbility(2)).setUnlocalizedName("desh_pickaxe").setTextureName(RefStrings.MODID + ":desh_pickaxe"); desh_axe = new ItemToolAbility(6.5F, -0.05, MainRegistry.tMatDesh, EnumToolType.AXE) .addBreakAbility(new ToolAbility.HammerAbility(1)) .addBreakAbility(new ToolAbility.RecursionAbility(3)) - .addBreakAbility(new ToolAbility.SilkAbility()).setUnlocalizedName("desh_axe").setTextureName(RefStrings.MODID + ":desh_axe"); + .addBreakAbility(new ToolAbility.SilkAbility()) + .addBreakAbility(new LuckAbility(2)).setUnlocalizedName("desh_axe").setTextureName(RefStrings.MODID + ":desh_axe"); desh_shovel = new ItemToolAbility(4F, -0.05, MainRegistry.tMatDesh, EnumToolType.SHOVEL) .addBreakAbility(new ToolAbility.HammerAbility(1)) .addBreakAbility(new ToolAbility.RecursionAbility(3)) - .addBreakAbility(new ToolAbility.SilkAbility()).setUnlocalizedName("desh_shovel").setTextureName(RefStrings.MODID + ":desh_shovel"); + .addBreakAbility(new ToolAbility.SilkAbility()) + .addBreakAbility(new LuckAbility(2)).setUnlocalizedName("desh_shovel").setTextureName(RefStrings.MODID + ":desh_shovel"); desh_hoe = new ModHoe(MainRegistry.tMatDesh).setUnlocalizedName("desh_hoe").setTextureName(RefStrings.MODID + ":desh_hoe"); - cobalt_sword = new ItemToolAbility(12F, 0, MainRegistry.tMatCobalt, EnumToolType.SWORD).setUnlocalizedName("cobalt_sword").setTextureName(RefStrings.MODID + ":cobalt_sword"); + cobalt_sword = new ItemSwordAbility(12F, 0, MainRegistry.tMatCobalt).setUnlocalizedName("cobalt_sword").setTextureName(RefStrings.MODID + ":cobalt_sword"); cobalt_pickaxe = new ItemToolAbility(4F, 0, MainRegistry.tMatCobalt, EnumToolType.PICKAXE) .addBreakAbility(new ToolAbility.RecursionAbility(4)) - .addBreakAbility(new ToolAbility.SilkAbility()).setUnlocalizedName("cobalt_pickaxe").setTextureName(RefStrings.MODID + ":cobalt_pickaxe"); + .addBreakAbility(new ToolAbility.SilkAbility()) + .addBreakAbility(new LuckAbility(1)).setUnlocalizedName("cobalt_pickaxe").setTextureName(RefStrings.MODID + ":cobalt_pickaxe"); cobalt_axe = new ItemToolAbility(6F, 0, MainRegistry.tMatCobalt, EnumToolType.AXE) .addBreakAbility(new ToolAbility.RecursionAbility(4)) - .addBreakAbility(new ToolAbility.SilkAbility()).setUnlocalizedName("cobalt_axe").setTextureName(RefStrings.MODID + ":cobalt_axe"); + .addBreakAbility(new ToolAbility.SilkAbility()) + .addBreakAbility(new LuckAbility(1)).setUnlocalizedName("cobalt_axe").setTextureName(RefStrings.MODID + ":cobalt_axe"); cobalt_shovel = new ItemToolAbility(3.5F, 0, MainRegistry.tMatCobalt, EnumToolType.SHOVEL) .addBreakAbility(new ToolAbility.RecursionAbility(4)) - .addBreakAbility(new ToolAbility.SilkAbility()).setUnlocalizedName("cobalt_shovel").setTextureName(RefStrings.MODID + ":cobalt_shovel"); + .addBreakAbility(new ToolAbility.SilkAbility()) + .addBreakAbility(new LuckAbility(1)).setUnlocalizedName("cobalt_shovel").setTextureName(RefStrings.MODID + ":cobalt_shovel"); cobalt_hoe = new ModHoe(MainRegistry.tMatCobalt).setUnlocalizedName("cobalt_hoe").setTextureName(RefStrings.MODID + ":cobalt_hoe"); diff --git a/com/hbm/items/tool/IItemAbility.java b/com/hbm/items/tool/IItemAbility.java new file mode 100644 index 000000000..30600fae6 --- /dev/null +++ b/com/hbm/items/tool/IItemAbility.java @@ -0,0 +1,9 @@ +package com.hbm.items.tool; + +import net.minecraft.entity.player.EntityPlayer; +import net.minecraft.world.World; + +public interface IItemAbility { + + public void breakExtraBlock(World world, int x, int y, int z, EntityPlayer player, int refX, int refY, int refZ); +} diff --git a/com/hbm/items/tool/ItemSwordAbility.java b/com/hbm/items/tool/ItemSwordAbility.java new file mode 100644 index 000000000..9b7c5b9b3 --- /dev/null +++ b/com/hbm/items/tool/ItemSwordAbility.java @@ -0,0 +1,187 @@ +package com.hbm.items.tool; + +import java.util.ArrayList; +import java.util.List; + +import com.google.common.collect.HashMultimap; +import com.google.common.collect.Multimap; +import com.hbm.handler.WeaponAbility; + +import cpw.mods.fml.relauncher.Side; +import cpw.mods.fml.relauncher.SideOnly; +import net.minecraft.block.Block; +import net.minecraft.client.Minecraft; +import net.minecraft.entity.EntityLivingBase; +import net.minecraft.entity.SharedMonsterAttributes; +import net.minecraft.entity.ai.attributes.AttributeModifier; +import net.minecraft.entity.player.EntityPlayer; +import net.minecraft.entity.player.EntityPlayerMP; +import net.minecraft.item.EnumRarity; +import net.minecraft.item.ItemStack; +import net.minecraft.item.ItemSword; +import net.minecraft.nbt.NBTTagCompound; +import net.minecraft.network.play.client.C07PacketPlayerDigging; +import net.minecraft.network.play.server.S23PacketBlockChange; +import net.minecraft.util.EnumChatFormatting; +import net.minecraft.world.World; +import net.minecraftforge.common.ForgeHooks; +import net.minecraftforge.event.world.BlockEvent; + +public class ItemSwordAbility extends ItemSword implements IItemAbility { + + private EnumRarity rarity = EnumRarity.common; + //was there a reason for this to be private? + protected float damage; + protected double movement; + private List hitAbility = new ArrayList(); + + public ItemSwordAbility(float damage, double movement, ToolMaterial material) { + super(material); + this.damage = damage; + this.movement = movement; + } + + public ItemSwordAbility addHitAbility(WeaponAbility weaponAbility) { + this.hitAbility.add(weaponAbility); + return this; + } + + // + public ItemSwordAbility setRarity(EnumRarity rarity) { + this.rarity = rarity; + return this; + } + + public EnumRarity getRarity(ItemStack stack) { + return this.rarity != EnumRarity.common ? this.rarity : super.getRarity(stack); + } + + public boolean hitEntity(ItemStack stack, EntityLivingBase victim, EntityLivingBase attacker) { + + if(!attacker.worldObj.isRemote && !this.hitAbility.isEmpty() && attacker instanceof EntityPlayer && canOperate(stack)) { + + for(WeaponAbility ability : this.hitAbility) { + ability.onHit(attacker.worldObj, (EntityPlayer) attacker, victim, this); + } + } + + return true; + } + + @Override + public Multimap getItemAttributeModifiers() { + + Multimap multimap = HashMultimap.create(); + multimap.put(SharedMonsterAttributes.attackDamage.getAttributeUnlocalizedName(), new AttributeModifier(field_111210_e, "Tool modifier", (double)this.damage, 0)); + multimap.put(SharedMonsterAttributes.movementSpeed.getAttributeUnlocalizedName(), new AttributeModifier(field_111210_e, "Tool modifier", movement, 1)); + return multimap; + } + + public void breakExtraBlock(World world, int x, int y, int z, EntityPlayer playerEntity, int refX, int refY, int refZ) { + + if (world.isAirBlock(x, y, z)) + return; + + if(!(playerEntity instanceof EntityPlayerMP)) + return; + + EntityPlayerMP player = (EntityPlayerMP) playerEntity; + ItemStack stack = player.getHeldItem(); + + Block block = world.getBlock(x, y, z); + int meta = world.getBlockMetadata(x, y, z); + + if(!canHarvestBlock(block, stack)) + return; + + Block refBlock = world.getBlock(refX, refY, refZ); + float refStrength = ForgeHooks.blockStrength(refBlock, player, world, refX, refY, refZ); + float strength = ForgeHooks.blockStrength(block, player, world, x,y,z); + + if (!ForgeHooks.canHarvestBlock(block, player, meta) || refStrength/strength > 10f) + return; + + BlockEvent.BreakEvent event = ForgeHooks.onBlockBreakEvent(world, player.theItemInWorldManager.getGameType(), player, x,y,z); + if(event.isCanceled()) + return; + + if (player.capabilities.isCreativeMode) { + block.onBlockHarvested(world, x, y, z, meta, player); + if (block.removedByPlayer(world, player, x, y, z, false)) + block.onBlockDestroyedByPlayer(world, x, y, z, meta); + + if (!world.isRemote) { + player.playerNetServerHandler.sendPacket(new S23PacketBlockChange(x, y, z, world)); + } + return; + } + + player.getCurrentEquippedItem().func_150999_a(world, block, x, y, z, player); + + if (!world.isRemote) { + + block.onBlockHarvested(world, x,y,z, meta, player); + + if(block.removedByPlayer(world, player, x,y,z, true)) + { + block.onBlockDestroyedByPlayer( world, x,y,z, meta); + block.harvestBlock(world, player, x,y,z, meta); + block.dropXpOnBlockBreak(world, x,y,z, event.getExpToDrop()); + } + + player.playerNetServerHandler.sendPacket(new S23PacketBlockChange(x, y, z, world)); + + } else { + world.playAuxSFX(2001, x, y, z, Block.getIdFromBlock(block) + (meta << 12)); + if(block.removedByPlayer(world, player, x,y,z, true)) + { + block.onBlockDestroyedByPlayer(world, x,y,z, meta); + } + ItemStack itemstack = player.getCurrentEquippedItem(); + if (itemstack != null) + { + itemstack.func_150999_a(world, block, x, y, z, player); + + if (itemstack.stackSize == 0) + { + player.destroyCurrentEquippedItem(); + } + } + + Minecraft.getMinecraft().getNetHandler().addToSendQueue(new C07PacketPlayerDigging(2, x, y, z, Minecraft.getMinecraft().objectMouseOver.sideHit)); + } + } + + @SideOnly(Side.CLIENT) + public void addInformation(ItemStack stack, EntityPlayer player, List list, boolean ext) { + + if(!this.hitAbility.isEmpty()) { + + list.add("Weapon modifiers: "); + + for(WeaponAbility ability : this.hitAbility) { + list.add(" " + EnumChatFormatting.RED + ability.getFullName()); + } + } + } + + private int getAbility(ItemStack stack) { + + if(stack.hasTagCompound()) + return stack.stackTagCompound.getInteger("ability"); + + return 0; + } + + private void setAbility(ItemStack stack, int ability) { + + if(!stack.hasTagCompound()) + stack.stackTagCompound = new NBTTagCompound(); + + stack.stackTagCompound.setInteger("ability", ability); + } + + protected boolean canOperate(ItemStack stack) { + return true; + } +} diff --git a/com/hbm/items/tool/ItemSwordAbilityPower.java b/com/hbm/items/tool/ItemSwordAbilityPower.java new file mode 100644 index 000000000..b84439a52 --- /dev/null +++ b/com/hbm/items/tool/ItemSwordAbilityPower.java @@ -0,0 +1,120 @@ +package com.hbm.items.tool; + +import java.util.List; + +import com.hbm.lib.Library; + +import cpw.mods.fml.relauncher.Side; +import cpw.mods.fml.relauncher.SideOnly; +import net.minecraft.entity.player.EntityPlayer; +import net.minecraft.item.ItemStack; +import net.minecraft.nbt.NBTTagCompound; + +public class ItemSwordAbilityPower extends ItemSwordAbility { + + public long maxPower = 1; + public long chargeRate; + public long consumption; + + public ItemSwordAbilityPower(float damage, double movement, ToolMaterial material, long maxPower, long chargeRate, long consumption) { + super(damage, movement, material); + this.maxPower = maxPower; + this.chargeRate = chargeRate; + this.consumption = consumption; + this.setMaxDamage(1); + } + + public void chargeBattery(ItemStack stack, long i) { + if(stack.getItem() instanceof ItemSwordAbilityPower) { + if(stack.hasTagCompound()) { + stack.stackTagCompound.setLong("charge", stack.stackTagCompound.getLong("charge") + i); + } else { + stack.stackTagCompound = new NBTTagCompound(); + stack.stackTagCompound.setLong("charge", i); + } + } + } + + public void setCharge(ItemStack stack, long i) { + if(stack.getItem() instanceof ItemSwordAbilityPower) { + if(stack.hasTagCompound()) { + stack.stackTagCompound.setLong("charge", i); + } else { + stack.stackTagCompound = new NBTTagCompound(); + stack.stackTagCompound.setLong("charge", i); + } + } + } + + public void dischargeBattery(ItemStack stack, long i) { + if(stack.getItem() instanceof ItemSwordAbilityPower) { + if(stack.hasTagCompound()) { + stack.stackTagCompound.setLong("charge", stack.stackTagCompound.getLong("charge") - i); + } else { + stack.stackTagCompound = new NBTTagCompound(); + stack.stackTagCompound.setLong("charge", this.maxPower - i); + } + + if(stack.stackTagCompound.getLong("charge") < 0) + stack.stackTagCompound.setLong("charge", 0); + } + } + + public static long getCharge(ItemStack stack) { + if(stack.getItem() instanceof ItemSwordAbilityPower) { + if(stack.hasTagCompound()) { + return stack.stackTagCompound.getLong("charge"); + } else { + stack.stackTagCompound = new NBTTagCompound(); + stack.stackTagCompound.setLong("charge", ((ItemSwordAbilityPower)stack.getItem()).maxPower); + return stack.stackTagCompound.getLong("charge"); + } + } + + return 0; + } + + @SideOnly(Side.CLIENT) + public void addInformation(ItemStack stack, EntityPlayer player, List list, boolean ext) { + + list.add("Charge: " + Library.getShortNumber(getCharge(stack)) + " / " + Library.getShortNumber(maxPower)); + + super.addInformation(stack, player, list, ext); + } + + public boolean showDurabilityBar(ItemStack stack) { + + return getCharge(stack) < maxPower; + } + + public double getDurabilityForDisplay(ItemStack stack) { + + return 1 - (double)getCharge(stack) / (double)maxPower; + } + + protected boolean canOperate(ItemStack stack) { + + return getCharge(stack) >= this.consumption; + } + + public long getMaxCharge() { + return maxPower; + } + + public long getChargeRate() { + return chargeRate; + } + + public static long getMaxChargeStatic(ItemStack stack) { + return ((ItemSwordAbilityPower)stack.getItem()).maxPower; + } + + public void setDamage(ItemStack stack, int damage) + { + this.dischargeBattery(stack, damage * consumption); + } + + public boolean isDamageable() { + return true; + } +} diff --git a/com/hbm/items/tool/ItemToolAbility.java b/com/hbm/items/tool/ItemToolAbility.java index 9aa3b33a9..91dafee4b 100644 --- a/com/hbm/items/tool/ItemToolAbility.java +++ b/com/hbm/items/tool/ItemToolAbility.java @@ -23,7 +23,6 @@ import net.minecraft.entity.ai.attributes.AttributeModifier; import net.minecraft.entity.player.EntityPlayer; import net.minecraft.entity.player.EntityPlayerMP; import net.minecraft.init.Blocks; -import net.minecraft.item.EnumAction; import net.minecraft.item.EnumRarity; import net.minecraft.item.ItemStack; import net.minecraft.item.ItemTool; @@ -37,7 +36,7 @@ import net.minecraft.world.World; import net.minecraftforge.common.ForgeHooks; import net.minecraftforge.event.world.BlockEvent; -public class ItemToolAbility extends ItemTool { +public class ItemToolAbility extends ItemTool implements IItemAbility { private EnumToolType toolType; private EnumRarity rarity = EnumRarity.common; @@ -49,9 +48,6 @@ public class ItemToolAbility extends ItemTool { public static enum EnumToolType { - SWORD( - Sets.newHashSet(new Material[] { Material.plants, Material.vine, Material.coral, Material.leaves, Material.gourd , Material.web }) - ), PICKAXE( Sets.newHashSet(new Material[] { Material.iron, Material.anvil, Material.rock }), Sets.newHashSet(new Block[] { Blocks.cobblestone, Blocks.double_stone_slab, Blocks.stone_slab, Blocks.stone, Blocks.sandstone, Blocks.mossy_cobblestone, Blocks.iron_ore, Blocks.iron_block, Blocks.coal_ore, Blocks.gold_block, Blocks.gold_ore, Blocks.diamond_ore, Blocks.diamond_block, Blocks.ice, Blocks.netherrack, Blocks.lapis_ore, Blocks.lapis_block, Blocks.redstone_ore, Blocks.lit_redstone_ore, Blocks.rail, Blocks.detector_rail, Blocks.golden_rail, Blocks.activator_rail }) @@ -117,11 +113,6 @@ public class ItemToolAbility extends ItemTool { ability.onHit(attacker.worldObj, (EntityPlayer) attacker, victim, this); } } - - if(this.toolType == EnumToolType.SWORD) - stack.damageItem(1, attacker); - else - stack.damageItem(2, attacker); return true; } @@ -288,9 +279,6 @@ public class ItemToolAbility extends ItemTool { public ItemStack onItemRightClick(ItemStack stack, World world, EntityPlayer player) { - if(this.toolType == EnumToolType.SWORD) - player.setItemInUse(stack, this.getMaxItemUseDuration(stack)); - if(world.isRemote || this.breakAbility.size() < 2 || !canOperate(stack)) return super.onItemRightClick(stack, world, player); @@ -316,20 +304,6 @@ public class ItemToolAbility extends ItemTool { return stack; } - public int getMaxItemUseDuration(ItemStack stack) { - if(this.toolType == EnumToolType.SWORD) - return 72000; - else - return super.getMaxItemUseDuration(stack); - } - - public EnumAction getItemUseAction(ItemStack stack) { - if(this.toolType == EnumToolType.SWORD) - return EnumAction.block; - else - return super.getItemUseAction(stack); - } - private ToolAbility getCurrentAbility(ItemStack stack) { int ability = getAbility(stack) % this.breakAbility.size(); diff --git a/com/hbm/main/ClientProxy.java b/com/hbm/main/ClientProxy.java index b20554dd4..02beb9b68 100644 --- a/com/hbm/main/ClientProxy.java +++ b/com/hbm/main/ClientProxy.java @@ -223,6 +223,7 @@ public class ClientProxy extends ServerProxy RenderingRegistry.registerEntityRenderingHandler(EntityCloudFleija.class, new RenderCloudFleija()); RenderingRegistry.registerEntityRenderingHandler(EntityCloudFleijaRainbow.class, new RenderCloudRainbow()); RenderingRegistry.registerEntityRenderingHandler(EntityCloudSolinium.class, new RenderCloudSolinium()); + RenderingRegistry.registerEntityRenderingHandler(EntityCloudTom.class, new RenderCloudTom()); RenderingRegistry.registerEntityRenderingHandler(EntityNukeCloudNoShroom.class, new RenderNoCloud()); RenderingRegistry.registerEntityRenderingHandler(EntityFalloutRain.class, new RenderFallout()); RenderingRegistry.registerEntityRenderingHandler(EntityBlackHole.class, new RenderBlackHole()); diff --git a/com/hbm/main/MainRegistry.java b/com/hbm/main/MainRegistry.java index a53786105..db19c6b0e 100644 --- a/com/hbm/main/MainRegistry.java +++ b/com/hbm/main/MainRegistry.java @@ -715,6 +715,7 @@ public class MainRegistry EntityRegistry.registerModEntity(EntitySoyuz.class, "entity_soyuz", 144, this, 1000, 1, true); EntityRegistry.registerModEntity(EntitySoyuzCapsule.class, "entity_soyuz_capsule", 145, this, 1000, 1, true); EntityRegistry.registerModEntity(EntityMovingItem.class, "entity_c_item", 146, this, 1000, 1, true); + EntityRegistry.registerModEntity(EntityCloudTom.class, "entity_moonstone_blast", 147, this, 1000, 1, true); EntityRegistry.registerGlobalEntityID(EntityNuclearCreeper.class, "entity_mob_nuclear_creeper", EntityRegistry.findGlobalUniqueEntityId(), 0x204131, 0x75CE00); EntityRegistry.registerGlobalEntityID(EntityTaintedCreeper.class, "entity_mob_tainted_creeper", EntityRegistry.findGlobalUniqueEntityId(), 0x813b9b, 0xd71fdd); diff --git a/com/hbm/main/ResourceManager.java b/com/hbm/main/ResourceManager.java index 153253ddd..7df8db659 100644 --- a/com/hbm/main/ResourceManager.java +++ b/com/hbm/main/ResourceManager.java @@ -113,13 +113,14 @@ public class ResourceManager { public static final IModelCustom shredder_blade = AdvancedModelLoader.loadModel(new ResourceLocation(RefStrings.MODID, "models/shredder_blade.obj")); //Bombs - public static final IModelCustom bomb_solinium = AdvancedModelLoader.loadModel(new ResourceLocation(RefStrings.MODID, "models/ufp.obj")); - public static final IModelCustom n2 = AdvancedModelLoader.loadModel(new ResourceLocation(RefStrings.MODID, "models/n2.obj")); - public static final IModelCustom n45_globe = AdvancedModelLoader.loadModel(new ResourceLocation(RefStrings.MODID, "models/n45_globe.obj")); - public static final IModelCustom n45_knob = AdvancedModelLoader.loadModel(new ResourceLocation(RefStrings.MODID, "models/n45_knob.obj")); - public static final IModelCustom n45_rod = AdvancedModelLoader.loadModel(new ResourceLocation(RefStrings.MODID, "models/n45_rod.obj")); - public static final IModelCustom n45_stand = AdvancedModelLoader.loadModel(new ResourceLocation(RefStrings.MODID, "models/n45_stand.obj")); - public static final IModelCustom n45_chain = AdvancedModelLoader.loadModel(new ResourceLocation(RefStrings.MODID, "models/n45_chain.obj")); + public static final IModelCustom bomb_solinium = AdvancedModelLoader.loadModel(new ResourceLocation(RefStrings.MODID, "models/bombs/ufp.obj")); + public static final IModelCustom n2 = AdvancedModelLoader.loadModel(new ResourceLocation(RefStrings.MODID, "models/bombs/n2.obj")); + public static final IModelCustom n45_globe = AdvancedModelLoader.loadModel(new ResourceLocation(RefStrings.MODID, "models/bombs/n45_globe.obj")); + public static final IModelCustom n45_knob = AdvancedModelLoader.loadModel(new ResourceLocation(RefStrings.MODID, "models/bombs/n45_knob.obj")); + public static final IModelCustom n45_rod = AdvancedModelLoader.loadModel(new ResourceLocation(RefStrings.MODID, "models/bombs/n45_rod.obj")); + public static final IModelCustom n45_stand = AdvancedModelLoader.loadModel(new ResourceLocation(RefStrings.MODID, "models/bombs/n45_stand.obj")); + public static final IModelCustom n45_chain = AdvancedModelLoader.loadModel(new ResourceLocation(RefStrings.MODID, "models/bombs/n45_chain.obj")); + public static final IModelCustom fstbmb = new HFRWavefrontObject(new ResourceLocation(RefStrings.MODID, "models/bombs/fstbmb.obj")); //Cel-Prime public static final IModelCustom cp_tower = AdvancedModelLoader.loadModel(new ResourceLocation(RefStrings.MODID, "models/cel_prime_tower.obj")); @@ -263,13 +264,14 @@ public class ResourceManager { public static final ResourceLocation forcefield_top_tex = new ResourceLocation(RefStrings.MODID, "textures/models/forcefield_top.png"); //Bombs - public static final ResourceLocation bomb_solinium_tex = new ResourceLocation(RefStrings.MODID, "textures/models/ufp.png"); - public static final ResourceLocation n2_tex = new ResourceLocation(RefStrings.MODID, "textures/models/n2.png"); - public static final ResourceLocation n45_globe_tex = new ResourceLocation(RefStrings.MODID, "textures/models/n45_globe.png"); - public static final ResourceLocation n45_knob_tex = new ResourceLocation(RefStrings.MODID, "textures/models/n45_knob.png"); - public static final ResourceLocation n45_rod_tex = new ResourceLocation(RefStrings.MODID, "textures/models/n45_rod.png"); + public static final ResourceLocation bomb_solinium_tex = new ResourceLocation(RefStrings.MODID, "textures/models/bombs/ufp.png"); + public static final ResourceLocation n2_tex = new ResourceLocation(RefStrings.MODID, "textures/models/bombs/n2.png"); + public static final ResourceLocation n45_globe_tex = new ResourceLocation(RefStrings.MODID, "textures/models/bombs/n45_globe.png"); + public static final ResourceLocation n45_knob_tex = new ResourceLocation(RefStrings.MODID, "textures/models/bombs/n45_knob.png"); + public static final ResourceLocation n45_rod_tex = new ResourceLocation(RefStrings.MODID, "textures/models/bombs/n45_rod.png"); public static final ResourceLocation n45_stand_tex = new ResourceLocation(RefStrings.MODID, "textures/models/n45_stand.png"); - public static final ResourceLocation n45_chain_tex = new ResourceLocation(RefStrings.MODID, "textures/models/n45_chain.png"); + public static final ResourceLocation n45_chain_tex = new ResourceLocation(RefStrings.MODID, "textures/models/bombs/n45_chain.png"); + public static final ResourceLocation fstbmb_tex = new ResourceLocation(RefStrings.MODID, "textures/models/bombs/fstbmb.png"); //Satellites public static final ResourceLocation sat_base_tex = new ResourceLocation(RefStrings.MODID, "textures/models/sat_base.png"); @@ -367,6 +369,7 @@ public class ResourceManager { public static final IModelCustom rpc = AdvancedModelLoader.loadModel(new ResourceLocation(RefStrings.MODID, "models/rpc.obj")); public static final IModelCustom tom_main = AdvancedModelLoader.loadModel(new ResourceLocation(RefStrings.MODID, "models/weapons/tom_main.obj")); public static final IModelCustom tom_flame = AdvancedModelLoader.loadModel(new ResourceLocation(RefStrings.MODID, "models/weapons/tom_flame.hmf")); + public static final IModelCustom nikonium = AdvancedModelLoader.loadModel(new ResourceLocation(RefStrings.MODID, "models/nikonium.obj")); //Bomber public static final IModelCustom dornier = AdvancedModelLoader.loadModel(new ResourceLocation(RefStrings.MODID, "models/dornier.obj")); @@ -459,8 +462,9 @@ public class ResourceManager { ////Texture Entities //Blast - public static final ResourceLocation fireball = new ResourceLocation(RefStrings.MODID, "textures/models/fireball.png"); - public static final ResourceLocation balefire = new ResourceLocation(RefStrings.MODID, "textures/models/balefire.png"); + public static final ResourceLocation fireball = new ResourceLocation(RefStrings.MODID, "textures/models/explosion/fireball.png"); + public static final ResourceLocation balefire = new ResourceLocation(RefStrings.MODID, "textures/models/explosion/balefire.png"); + public static final ResourceLocation tomblast = new ResourceLocation(RefStrings.MODID, "textures/models/explosion/tomblast.png"); //Boxcar public static final ResourceLocation boxcar_tex = new ResourceLocation(RefStrings.MODID, "textures/models/boxcar.png"); @@ -469,6 +473,7 @@ public class ResourceManager { public static final ResourceLocation rpc_tex = new ResourceLocation(RefStrings.MODID, "textures/models/rpc.png"); public static final ResourceLocation tom_main_tex = new ResourceLocation(RefStrings.MODID, "textures/models/weapons/tom_main.png"); public static final ResourceLocation tom_flame_tex = new ResourceLocation(RefStrings.MODID, "textures/models/weapons/tom_flame.png"); + public static final ResourceLocation nikonium_tex = new ResourceLocation(RefStrings.MODID, "textures/models/misc/nikonium.png"); //Bomber public static final ResourceLocation dornier_0_tex = new ResourceLocation(RefStrings.MODID, "textures/models/dornier_0.png"); diff --git a/com/hbm/render/entity/effect/RenderCloudTom.java b/com/hbm/render/entity/effect/RenderCloudTom.java new file mode 100644 index 000000000..9f6df48f2 --- /dev/null +++ b/com/hbm/render/entity/effect/RenderCloudTom.java @@ -0,0 +1,103 @@ +package com.hbm.render.entity.effect; + +import org.lwjgl.opengl.GL11; + +import com.hbm.entity.effect.EntityCloudTom; +import com.hbm.main.ResourceManager; + +import net.minecraft.client.Minecraft; +import net.minecraft.client.renderer.OpenGlHelper; +import net.minecraft.client.renderer.Tessellator; +import net.minecraft.client.renderer.entity.Render; +import net.minecraft.entity.Entity; +import net.minecraft.util.ResourceLocation; +import net.minecraft.util.Vec3; + +public class RenderCloudTom extends Render { + + @Override + public void doRender(Entity entity, double x, double y, double z, float f0, float f1) { + + GL11.glPushMatrix(); + GL11.glTranslated(x, y, z); + GL11.glDisable(GL11.GL_LIGHTING); + GL11.glEnable(GL11.GL_BLEND); + GL11.glDisable(GL11.GL_ALPHA_TEST); + GL11.glDisable(GL11.GL_CULL_FACE); + GL11.glShadeModel(GL11.GL_SMOOTH); + GL11.glDepthMask(false); + OpenGlHelper.glBlendFunc(770, 771, 1, 0); + + EntityCloudTom blast = (EntityCloudTom)entity; + + double scale = blast.age + f0; + + int segments = 16; + float angle = (float) Math.toRadians(360D/segments); + int height = 20; + int depth = 20; + + Tessellator tess = Tessellator.instance; + tess.startDrawingQuads(); + + bindTexture(this.getEntityTexture(blast)); + + GL11.glMatrixMode(GL11.GL_TEXTURE); + GL11.glLoadIdentity(); + + float movement = -(Minecraft.getMinecraft().thePlayer.ticksExisted + f0) * 0.005F * 10; + GL11.glTranslatef(0, movement, 0); + + GL11.glMatrixMode(GL11.GL_MODELVIEW); + + for(int i = 0; i < segments; i++) { + + for(int j = 0; j < 5; j++) { + + double mod = 1 - j * 0.025; + double h = height + j * 10; + double off = 1D / j; + + Vec3 vec = Vec3.createVectorHelper(scale, 0, 0); + vec.rotateAroundY(angle * i); + double x0 = vec.xCoord * mod; + double z0 = vec.zCoord * mod; + + tess.setColorRGBA_F(1.0F, 1.0F, 1.0F, 0.0F); + tess.addVertexWithUV(x0, h, z0, 0, 1 + off); + tess.setColorRGBA_F(1.0F, 1.0F, 1.0F, 1.0F); + tess.addVertexWithUV(x0, -depth, z0, 0, 0 + off); + + vec.rotateAroundY(angle); + x0 = vec.xCoord * mod; + z0 = vec.zCoord * mod; + + tess.setColorRGBA_F(1.0F, 1.0F, 1.0F, 1.0F); + tess.addVertexWithUV(x0, -depth, z0, 1, 0 + off); + tess.setColorRGBA_F(1.0F, 1.0F, 1.0F, 0.0F); + tess.addVertexWithUV(x0, h, z0, 1, 1 + off); + } + } + + tess.draw(); + + GL11.glMatrixMode(GL11.GL_TEXTURE); + GL11.glDepthMask(true); + GL11.glLoadIdentity(); + GL11.glMatrixMode(GL11.GL_MODELVIEW); + + GL11.glDepthMask(true); + GL11.glShadeModel(GL11.GL_FLAT); + GL11.glEnable(GL11.GL_ALPHA_TEST); + GL11.glEnable(GL11.GL_CULL_FACE); + GL11.glDisable(GL11.GL_BLEND); + GL11.glEnable(GL11.GL_LIGHTING); + GL11.glPopMatrix(); + } + + @Override + protected ResourceLocation getEntityTexture(Entity entity) { + return ResourceManager.tomblast; + } + +} diff --git a/com/hbm/render/entity/effect/RenderSmallNukeMK3.java b/com/hbm/render/entity/effect/RenderSmallNukeMK3.java index 533e5c1c2..411b37589 100644 --- a/com/hbm/render/entity/effect/RenderSmallNukeMK3.java +++ b/com/hbm/render/entity/effect/RenderSmallNukeMK3.java @@ -31,9 +31,9 @@ public class RenderSmallNukeMK3 extends Render { public RenderSmallNukeMK3() { blastModel = AdvancedModelLoader.loadModel(objTesterModelRL); ringModel = AdvancedModelLoader.loadModel(ringModelRL); - ringTexture = new ResourceLocation(RefStrings.MODID, "textures/models/Ring2.png"); + ringTexture = new ResourceLocation(RefStrings.MODID, "textures/models/explosion/Ring2.png"); ringBigModel = AdvancedModelLoader.loadModel(ringBigModelRL); - ringBigTexture = new ResourceLocation(RefStrings.MODID, "textures/models/Ring2.png"); + ringBigTexture = new ResourceLocation(RefStrings.MODID, "textures/models/explosion/Ring2.png"); scale = 0; ring = 0; } diff --git a/com/hbm/render/tileentity/RendererObjTester.java b/com/hbm/render/tileentity/RendererObjTester.java index 609dcd76f..7ecaa900a 100644 --- a/com/hbm/render/tileentity/RendererObjTester.java +++ b/com/hbm/render/tileentity/RendererObjTester.java @@ -4,7 +4,10 @@ import org.lwjgl.opengl.GL11; import com.hbm.lib.RefStrings; import com.hbm.main.ResourceManager; +import com.hbm.render.util.RenderMiscEffects; +import net.minecraft.client.Minecraft; +import net.minecraft.client.gui.FontRenderer; import net.minecraft.client.renderer.tileentity.TileEntitySpecialRenderer; import net.minecraft.tileentity.TileEntity; import net.minecraft.util.ResourceLocation; @@ -116,7 +119,7 @@ public class RendererObjTester extends TileEntitySpecialRenderer { //GL11.glRotatef(-25, 0, 1, 0); //GL11.glRotatef(15, 0, 0, 1); - long time = tileEntity.getWorldObj().getTotalWorldTime(); + /*long time = tileEntity.getWorldObj().getTotalWorldTime(); double sine = Math.sin(time * 0.05) * 5; double sin3 = Math.sin(time * 0.05 + Math.PI * 0.5) * 5; double sin2 = Math.sin(time * 0.05 + Math.PI); @@ -132,6 +135,34 @@ public class RendererObjTester extends TileEntitySpecialRenderer { ResourceManager.soyuz_lander.renderPart("Capsule"); bindTexture(ResourceManager.soyuz_chute_tex); ResourceManager.soyuz_lander.renderPart("Chute"); + GL11.glShadeModel(GL11.GL_FLAT);*/ + + GL11.glRotatef(-90, 0, 1, 0); + GL11.glTranslated(0, 3, 0); + bindTexture(ResourceManager.nikonium_tex); + ResourceManager.nikonium.renderAll(); + GL11.glTranslated(0, -3, 0); + GL11.glRotatef(90, 0, 1, 0); + + GL11.glShadeModel(GL11.GL_SMOOTH); + bindTexture(ResourceManager.fstbmb_tex); + ResourceManager.fstbmb.renderPart("Body"); + ResourceManager.fstbmb.renderPart("Balefire"); + + bindTexture(new ResourceLocation(RefStrings.MODID + ":textures/misc/glintBF.png")); + RenderMiscEffects.renderClassicGlint(tileEntity.getWorldObj(), f, ResourceManager.fstbmb, "Balefire", 0.0F, 0.8F, 0.15F, 5, 2F); + + FontRenderer font = Minecraft.getMinecraft().fontRenderer; + float f3 = 0.04F; + GL11.glTranslatef(0.815F, 0.9275F, 0.5F); + GL11.glScalef(f3, -f3, f3); + GL11.glNormal3f(0.0F, 0.0F, -1.0F * f3); + GL11.glRotatef(90, 0, 1, 0); + GL11.glDepthMask(false); + GL11.glTranslatef(0, 1, 0); + font.drawString("00:15", 0, 0, 0xff0000); + GL11.glDepthMask(true); + GL11.glShadeModel(GL11.GL_FLAT); GL11.glPopMatrix(); diff --git a/com/hbm/render/util/RenderMiscEffects.java b/com/hbm/render/util/RenderMiscEffects.java new file mode 100644 index 000000000..037b7e45e --- /dev/null +++ b/com/hbm/render/util/RenderMiscEffects.java @@ -0,0 +1,69 @@ +package com.hbm.render.util; + +import org.lwjgl.opengl.GL11; + +import com.hbm.lib.RefStrings; + +import net.minecraft.client.Minecraft; +import net.minecraft.util.ResourceLocation; +import net.minecraft.world.World; +import net.minecraftforge.client.model.IModelCustom; + +public class RenderMiscEffects { + + public static ResourceLocation glint = new ResourceLocation(RefStrings.MODID + ":textures/misc/glint.png"); + + public static void renderClassicGlint(World world, float interpol, IModelCustom model, String part, float colorMod, float r, float g, float b, float speed, float scale) { + + GL11.glPushMatrix(); + float offset = Minecraft.getMinecraft().thePlayer.ticksExisted + interpol; + GL11.glEnable(GL11.GL_BLEND); + float color = colorMod; + GL11.glColor4f(color, color, color, 1.0F); + GL11.glDepthFunc(GL11.GL_EQUAL); + GL11.glDepthMask(false); + + for (int k = 0; k < 2; ++k) { + + GL11.glDisable(GL11.GL_LIGHTING); + + float glintColor = 0.76F; + + GL11.glColor4f(r * glintColor, g * glintColor, b * glintColor, 1.0F); + GL11.glBlendFunc(GL11.GL_SRC_COLOR, GL11.GL_ONE); + GL11.glMatrixMode(GL11.GL_TEXTURE); + GL11.glLoadIdentity(); + + float movement = offset * (0.001F + (float)k * 0.003F) * speed; + + GL11.glScalef(scale, scale, scale); + GL11.glRotatef(30.0F - (float)k * 60.0F, 0.0F, 0.0F, 1.0F); + GL11.glTranslatef(0.0F, movement, 0.0F); + + GL11.glMatrixMode(GL11.GL_MODELVIEW); + + if("all".equals(part)) + model.renderAll(); + else + model.renderPart(part); + } + + GL11.glColor4f(1.0F, 1.0F, 1.0F, 1.0F); + GL11.glMatrixMode(GL11.GL_TEXTURE); + GL11.glDepthMask(true); + GL11.glLoadIdentity(); + GL11.glMatrixMode(GL11.GL_MODELVIEW); + GL11.glEnable(GL11.GL_LIGHTING); + GL11.glDisable(GL11.GL_BLEND); + GL11.glDepthFunc(GL11.GL_LEQUAL); + GL11.glPopMatrix(); + } + + public static void renderClassicGlint(World world, float interpol, IModelCustom model, String part, float r, float g, float b, float speed, float scale) { + renderClassicGlint(world, interpol, model, part, 0.5F, r, g, b, speed, scale); + } + + public static void renderClassicGlint(World world, float interpol, IModelCustom model, String part) { + renderClassicGlint(world, interpol, model, part, 0.5F, 0.25F, 0.8F, 20.0F, 1F/3F); + } +} diff --git a/com/hbm/tileentity/bomb/TileEntityNukeBalefire.java b/com/hbm/tileentity/bomb/TileEntityNukeBalefire.java new file mode 100644 index 000000000..b7790ba3a --- /dev/null +++ b/com/hbm/tileentity/bomb/TileEntityNukeBalefire.java @@ -0,0 +1,21 @@ +package com.hbm.tileentity.bomb; + +import com.hbm.tileentity.TileEntityMachineBase; + +public class TileEntityNukeBalefire extends TileEntityMachineBase { + + public TileEntityNukeBalefire() { + super(1); + } + + @Override + public String getName() { + return null; + } + + @Override + public void updateEntity() { + + } + +}